diff options
Diffstat (limited to 'flake.nix')
-rw-r--r-- | flake.nix | 133 |
1 files changed, 133 insertions, 0 deletions
diff --git a/flake.nix b/flake.nix new file mode 100644 index 0000000..4e03cbf --- /dev/null +++ b/flake.nix | |||
@@ -0,0 +1,133 @@ | |||
1 | { | ||
2 | description = "Generate documentation for your own projects using the NixOS module system"; | ||
3 | |||
4 | inputs.nixpkgs.url = "github:NixOS/nixpkgs/nixos-22.11"; | ||
5 | |||
6 | outputs = { | ||
7 | self, | ||
8 | nixpkgs, | ||
9 | }: let | ||
10 | pkgs = nixpkgs.legacyPackages.x86_64-linux; | ||
11 | in { | ||
12 | lib.modules = { | ||
13 | doc-options-md = import ./doc-options-md.nix; | ||
14 | mdbook = import ./mdbook.nix; | ||
15 | manpage = import ./manpage.nix; | ||
16 | }; | ||
17 | |||
18 | checks.x86_64-linux = let | ||
19 | evalModules = modules: | ||
20 | pkgs.lib.evalModules { | ||
21 | modules = | ||
22 | [ | ||
23 | {config._module.args = {pkgs = pkgs.__splicedPackages;};} | ||
24 | ] | ||
25 | ++ modules; | ||
26 | }; | ||
27 | simpleModule = with pkgs.lib; { | ||
28 | options.my.simple.module.outputs = mkOption { | ||
29 | type = with types; attrsOf package; | ||
30 | default = {}; | ||
31 | description = '' | ||
32 | Output products of my simple module system. | ||
33 | ''; | ||
34 | }; | ||
35 | }; | ||
36 | params = { | ||
37 | outputAttrPath = ["my" "simple" "module" "outputs"]; | ||
38 | optionsAttrPath = ["my" "simple" "module" "doc"]; | ||
39 | optionsInternal = false; | ||
40 | }; | ||
41 | |||
42 | simple-manpage = { | ||
43 | name = "my simple module system"; | ||
44 | shortDescription = "A sample module system"; | ||
45 | }; | ||
46 | |||
47 | advanced-manpage = { | ||
48 | name = "my simple module system"; | ||
49 | section = 5; | ||
50 | shortDescription = "A sample module system"; | ||
51 | description = '' | ||
52 | This is a very advanced module system, for advanced people. | ||
53 | ''; | ||
54 | |||
55 | textBefore = '' | ||
56 | # A SECTION BEFORE | ||
57 | |||
58 | This is a section before the options. | ||
59 | ''; | ||
60 | |||
61 | textAfter = '' | ||
62 | # A SECTION AFTER | ||
63 | |||
64 | This is a section after the options. | ||
65 | ''; | ||
66 | }; | ||
67 | in { | ||
68 | simple-doc-options-md = | ||
69 | (evalModules [ | ||
70 | simpleModule | ||
71 | (self.lib.modules.doc-options-md params) | ||
72 | ]) | ||
73 | .config | ||
74 | .my | ||
75 | .simple | ||
76 | .module | ||
77 | .outputs | ||
78 | .doc-options-md; | ||
79 | |||
80 | simple-manpage = | ||
81 | (evalModules [ | ||
82 | simpleModule | ||
83 | (self.lib.modules.doc-options-md params) | ||
84 | (self.lib.modules.manpage params) | ||
85 | { | ||
86 | my.simple.module.doc.manpage = simple-manpage; | ||
87 | } | ||
88 | ]) | ||
89 | .config | ||
90 | .my | ||
91 | .simple | ||
92 | .module | ||
93 | .outputs | ||
94 | .manpage; | ||
95 | |||
96 | advanced-manpage = | ||
97 | (evalModules [ | ||
98 | simpleModule | ||
99 | (self.lib.modules.doc-options-md params) | ||
100 | (self.lib.modules.manpage params) | ||
101 | { | ||
102 | my.simple.module.doc.manpage = advanced-manpage; | ||
103 | } | ||
104 | ]) | ||
105 | .config | ||
106 | .my | ||
107 | .simple | ||
108 | .module | ||
109 | .outputs | ||
110 | .manpage; | ||
111 | |||
112 | simple-mdbook = | ||
113 | (evalModules [ | ||
114 | simpleModule | ||
115 | (self.lib.modules.doc-options-md params) | ||
116 | (self.lib.modules.mdbook params) | ||
117 | { | ||
118 | my.simple.module.doc.mdbook.src = ./checks/simple-mdbook; | ||
119 | } | ||
120 | ]) | ||
121 | .config | ||
122 | .my | ||
123 | .simple | ||
124 | .module | ||
125 | .outputs | ||
126 | .mdbook; | ||
127 | }; | ||
128 | |||
129 | devShell.x86_64-linux = pkgs.mkShell { | ||
130 | nativeBuildInputs = with pkgs; [mdbook pandoc]; | ||
131 | }; | ||
132 | }; | ||
133 | } | ||