{ 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 ]; }; }; }