39 lines
1.4 KiB
Nix
39 lines
1.4 KiB
Nix
# with friendly help by stylix: https://github.com/danth/stylix/blob/master/docs/default.nix
|
|
{ pkgs, build_systems, lib, ... }:
|
|
let
|
|
makeOptionsDoc = configuration:
|
|
pkgs.nixosOptionsDoc { options = configuration; };
|
|
generateDocs = obj: ''
|
|
touch src/${obj.fst}.md
|
|
sed '/*Declared by:*/,/^$/d' <${obj.snd.optionsCommonMark} >> src/${obj.fst}.md
|
|
'';
|
|
summaryAppend = name: ''
|
|
echo "- [${name}](${name}.md)" >> src/SUMMARY.md
|
|
'';
|
|
system = (build_systems ../example/.)."example".options;
|
|
makeOptionsDocPrograms = name:
|
|
pkgs.nixosOptionsDoc { options = system.mods.${name}; };
|
|
conf = makeOptionsDoc system.conf;
|
|
paths = builtins.readDir ../modules/programs;
|
|
names = lib.lists.remove "default"
|
|
(map (name: lib.strings.removeSuffix ".nix" name)
|
|
(lib.attrsets.mapAttrsToList (name: _: name) paths));
|
|
mods = map makeOptionsDocPrograms names;
|
|
docs =
|
|
lib.strings.concatLines (map generateDocs (lib.lists.zipLists names mods));
|
|
summary = lib.strings.concatStringsSep " " (map summaryAppend names);
|
|
in pkgs.stdenvNoCC.mkDerivation {
|
|
name = "dashNix-book";
|
|
src = ./.;
|
|
|
|
patchPhase = ''
|
|
sed '/*Declared by:*/,/^$/d' <${conf.optionsCommonMark} >> src/conf.md
|
|
${docs}
|
|
echo "[README](README.md)\n # Options\n - [Base Config](conf.md)" >> src/SUMMARY.md
|
|
${summary}
|
|
'';
|
|
|
|
buildPhase = ''
|
|
${pkgs.mdbook}/bin/mdbook build --dest-dir $out
|
|
'';
|
|
}
|