/
flake.nix
114 lines (92 loc) · 3.4 KB
/
flake.nix
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
{
edition = 201909;
description = "The nixos.org homepage";
inputs.nixpkgs.url = "nixpkgs/nixos-20.03";
inputs.nix-pills = { url = "github:NixOS/nix-pills"; flake = false; };
outputs = { self, nixpkgs, nix-pills }:
with import nixpkgs { system = "x86_64-linux"; };
rec {
checks.x86_64-linux.build = defaultPackage.x86_64-linux;
packages.x86_64-linux = {
packagesExplorer = import ./packages-explorer nixpkgs;
nixosAmis = writeText "ec2-amis.json"
(builtins.toJSON (
import (nixpkgs + "/nixos/modules/virtualisation/ec2-amis.nix")));
nixosGCE = writeText "gce-images.json"
(builtins.toJSON (
import (nixpkgs + "/nixos/modules/virtualisation/gce-images.nix")));
nixPills = import nix-pills {
inherit pkgs;
revCount = nix-pills.lastModifiedDate; # FIXME
shortRev = nix-pills.shortRev;
};
homepage = stdenv.mkDerivation {
name = "nixos-homepage-${self.lastModifiedDate}";
src = self;
enableParallelBuilding = true;
buildInputs =
[ libxslt
libxml2
perl
perlPackages.JSON
perlPackages.XMLSimple
perlPackages.TemplateToolkit
perlPackages.TemplatePluginJSONEscape
perlPackages.TemplatePluginIOAll
perlPackages.AppConfig
pkgs.nix
imagemagick
xhtml1
jq
python3
entr
];
preBuild = ''
export NIX_DB_DIR=$TMPDIR
export NIX_STATE_DIR=$TMPDIR
'';
makeFlags =
[ "NIX_MANUAL_IN=${nix.doc}/share/doc/nix/manual"
"NIXOS_MANUAL_IN=${nixpkgs.htmlDocs.nixosManual}"
"NIXPKGS_MANUAL_IN=${nixpkgs.htmlDocs.nixpkgsManual}"
"NIXOS_AMIS=${packages.x86_64-linux.nixosAmis}"
"NIXOS_GCE=${packages.x86_64-linux.nixosGCE}"
"PACKAGES_EXPLORER=${packages.x86_64-linux.packagesExplorer}/bundle.js"
"NIX_PILLS_MANUAL_IN=${packages.x86_64-linux.nixPills}/share/doc/nix-pills"
];
installPhase = ''
mkdir $out
cp -prd . $out/
'';
shellHook = ''
export NIX_MANUAL_IN="${nix.doc}/share/doc/nix/manual"
export NIXOS_MANUAL_IN="${nixpkgs.htmlDocs.nixosManual}"
export NIXPKGS_MANUAL_IN="${nixpkgs.htmlDocs.nixpkgsManual}"
export NIXOS_AMIS="${packages.x86_64-linux.nixosAmis}"
export NIXOS_GCE="${packages.x86_64-linux.nixosGCE}"
export PACKAGES_EXPLORER="${packages.x86_64-linux.packagesExplorer}/bundle.js"
export NIX_PILLS_MANUAL_IN="${packages.x86_64-linux.nixPills}/share/doc/nix-pills"
'';
};
};
defaultPackage.x86_64-linux = packages.x86_64-linux.homepage;
nixosConfigurations.container = nixpkgs.lib.nixosSystem {
system = "x86_64-linux";
modules =
[ ({ lib, ... }:
{ system.configurationRevision = lib.mkIf (self ? rev) self.rev;
boot.isContainer = true;
networking.useDHCP = false;
networking.firewall.allowedTCPPorts = [ 80 ];
services.httpd = {
enable = true;
adminAddr = "admin@example.org";
virtualHosts.default = {
documentRoot = self.packages.x86_64-linux.homepage;
};
};
})
];
};
};
}