diff --git a/.github/workflows/gh-pages.yaml b/.github/workflows/gh-pages.yaml index 178fec9..3871be7 100644 --- a/.github/workflows/gh-pages.yaml +++ b/.github/workflows/gh-pages.yaml @@ -27,7 +27,7 @@ jobs: uses: cachix/install-nix-action@v24 - name: Build docs - run: nix build .#options-doc + run: nix build .#options-html - name: Prepare assets for upload run: cp -r --dereference --no-preserve=mode,ownership result/ public/ diff --git a/flake.nix b/flake.nix index 8017a2b..b07e6d8 100644 --- a/flake.nix +++ b/flake.nix @@ -32,7 +32,7 @@ in lib' // { # some functions get promoted to be directly under libS - inherit (lib'.doc) mkModuleDoc; + inherit (lib'.doc) mkModuleDoc mkMdBook; inherit (lib'.modules) mkOpinionatedOption mkRecursiveDefault; inherit (lib'.ssh) mkPubKey; }; @@ -57,9 +57,15 @@ } // flake-utils.lib.eachDefaultSystem (system: let libS = self.lib { config = { }; inherit lib; pkgs = nixpkgs.legacyPackages.${system}; }; in { - packages.options-doc = libS.mkModuleDoc { - module = self.nixosModule; - urlPrefix = "https://github.com/SuperSandro2000/nixos-modules/tree/master/"; - }; + packages = rec { + options-doc = libS.mkModuleDoc { + module = self.nixosModule; + urlPrefix = "https://github.com/SuperSandro2000/nixos-modules/tree/master/"; + }; + options-html = libS.mkMdBook { + projectName = "nixos-modules"; + moduleDoc = options-doc; + }; + }; }); } diff --git a/lib/doc.nix b/lib/doc.nix index 597073a..4563ade 100644 --- a/lib/doc.nix +++ b/lib/doc.nix @@ -24,4 +24,19 @@ -e 's|file\:///nix/store/.+\-source/(.+)\)|${url}/\1/default\.nix\)|g' \ > $out/options.md ''; + + mkMdBook = { projectName, moduleDoc }: with pkgs; stdenv.mkDerivation { + name = "${projectName}-docs"; + nativeBuildInputs = [ mdbook ]; + buildCommand = '' + mkdir src + + echo -e "[book]\ntitle=\"${projectName}\"" > src/book.toml + echo -e "# Summary\n\n- [Options](options.md)" > src/SUMMARY.md + ln -s ${moduleDoc}/options.md ./src + + mdbook build + mv book $out + ''; + }; }