summaryrefslogtreecommitdiffstats
path: root/flake.nix
diff options
context:
space:
mode:
Diffstat (limited to 'flake.nix')
-rw-r--r--flake.nix133
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}