From c7026a993c4b837dcee39f669e1cc4123f4eb53d Mon Sep 17 00:00:00 2001 From: Minijackson Date: Mon, 8 Nov 2021 16:26:42 +0100 Subject: initial commit --- flake.nix | 104 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 104 insertions(+) create mode 100644 flake.nix (limited to 'flake.nix') diff --git a/flake.nix b/flake.nix new file mode 100644 index 0000000..2826989 --- /dev/null +++ b/flake.nix @@ -0,0 +1,104 @@ +{ + description = "Generate documentation for your own projects using the NixOS module system"; + + inputs.nixpkgs.url = "github:NixOS/nixpkgs/nixos-21.05"; + + outputs = { self, nixpkgs }: + let pkgs = nixpkgs.legacyPackages.x86_64-linux; + in + { + + lib.modules = { + doc-options-md = import ./doc-options-md.nix; + mdbook = import ./mdbook.nix; + manpage = import ./manpage.nix; + }; + + checks.x86_64-linux = + let + evalModules = modules: pkgs.lib.evalModules { + modules = [ + ({ config._module.args = { inherit pkgs; }; }) + ] ++ modules; + }; + simpleModule = with pkgs.lib; { + options.my.simple.module.outputs = mkOption { + type = with types; attrsOf package; + default = { }; + description = '' + Output products of my simple module system. + ''; + }; + }; + params = { + outputAttrPath = [ "my" "simple" "module" "outputs" ]; + optionsAttrPath = [ "my" "simple" "module" "doc" ]; + optionsInternal = false; + }; + + simple-manpage = { + name = "my simple module system"; + shortDescription = "A sample module system"; + }; + + advanced-manpage = { + name = "my simple module system"; + section = 5; + shortDescription = "A sample module system"; + description = '' + This is a very advanced module system, for advanced people. + ''; + + textBefore = '' + # A SECTION BEFORE + + This is a section before the options. + ''; + + textAfter = '' + # A SECTION AFTER + + This is a section after the options. + ''; + }; + in + { + simple-doc-options-md = (evalModules [ + simpleModule + (self.lib.modules.doc-options-md params) + ]).config.my.simple.module.outputs.doc-options-md; + + simple-manpage = (evalModules [ + simpleModule + (self.lib.modules.doc-options-md params) + (self.lib.modules.manpage params) + { + my.simple.module.doc.manpage = simple-manpage; + } + ]).config.my.simple.module.outputs.manpage; + + advanced-manpage = (evalModules [ + simpleModule + (self.lib.modules.doc-options-md params) + (self.lib.modules.manpage params) + { + my.simple.module.doc.manpage = advanced-manpage; + } + ]).config.my.simple.module.outputs.manpage; + + simple-mdbook = (evalModules [ + simpleModule + (self.lib.modules.doc-options-md params) + (self.lib.modules.mdbook params) + { + my.simple.module.doc.mdbook.src = ./checks/simple-mdbook; + } + ]).config.my.simple.module.outputs.mdbook; + + }; + + devShell.x86_64-linux = pkgs.mkShell { + nativeBuildInputs = with pkgs; [ mdbook pandoc ]; + }; + }; +} -- cgit v1.2.3