-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathdefault.nix
58 lines (49 loc) · 1.46 KB
/
default.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
{ system ? builtins.currentSystem
, pkgs ? import ./pins/nixpkgs { inherit system; }
}:
with pkgs.lib;
module:
let eval = x: pkgs.lib.evalModules {
modules = [
./modules
{
config.system = mkDefault system;
config.importing.nixpkgs = mkDefault pkgs;
}
({ config, ... }: {
_module.args.system = config.system;
_module.args.pkgs = config.importing.nixpkgs;
})
x
];
};
optionsDoc = pkgs.nixosOptionsDoc {
inherit (eval module) options;
warningsAreErrors = false;
};
optionsDocMD = pkgs.runCommand "options-doc.md" {} ''
cat ${optionsDoc.optionsCommonMark} >> $out
'';
optionsDocMan = pkgs.runCommand "options-doc.man" {} ''
${pkgs.pandoc}/bin/pandoc --standalone --to man ${optionsDocMD} -o $out
'';
manual = pkgs.writeShellScriptBin "manual" ''
${pkgs.man}/bin/man ${optionsDocMan}
'';
in rec {
nixpkgs = (eval module).config.importing.nixpkgs;
haskell-nix =
let project = x:
let config = (eval x).config;
proj = config.haskell-nix.haskell-nix.project config.haskell-nix.project;
projOrShell = if !pkgs.lib.inNixShell
then proj
else proj.shell;
in projOrShell // {
inherit config;
override = y: project (recursiveUpdate x y);
};
in project module;
inherit manual;
manualMarkdown = optionsDocMD;
}