46 lines
1.5 KiB
Nix
46 lines
1.5 KiB
Nix
{ lib, pkgs, ... }:
|
|
|
|
{
|
|
# based on https://github.com/j-brn/nixos-vfio/blob/master/lib/mkModuleDoc.nix
|
|
mkModuleDoc = { modules, urlPrefix }: let
|
|
inherit (lib.evalModules {
|
|
modules = lib.singleton {
|
|
config._module.check = false;
|
|
} ++ modules;
|
|
}) options;
|
|
filteredOptions = lib.filterAttrs (key: _: key != "_module") options;
|
|
docs = pkgs.nixosOptionsDoc {
|
|
options = filteredOptions;
|
|
warningsAreErrors = false;
|
|
};
|
|
url = lib.escape [ ":" "." "-" ] urlPrefix;
|
|
in pkgs.runCommand "options.md" { } /* bash */ ''
|
|
mkdir $out
|
|
cat ${docs.optionsCommonMark} \
|
|
| sed -r -e 's|\[/nix/store/.+\-source/(.+\.nix)\]|[\1]|g' \
|
|
-e 's|\[/nix/store/.+\-source/(.+)\]|[\1/default\.nix]|g' \
|
|
-e 's|\[flake\\.nix\\#nixosModules\\.(\w+)\/default\.nix\]|\[modules\/\1\/default\.nix\]|g' \
|
|
-e 's|file\:///nix/store/.+\-source/(.+\.nix)|${url}\1|g' \
|
|
-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
|
|
|
|
cp ${pkgs.substituteAll {
|
|
src = ./book.toml;
|
|
inherit projectName;
|
|
}} book.toml
|
|
echo -e "# Summary\n\n- [Options](options.md)" > src/SUMMARY.md
|
|
ln -s ${moduleDoc}/options.md ./src
|
|
|
|
mdbook build
|
|
mv book/html $out
|
|
'';
|
|
};
|
|
}
|