From 00cfdf243cfff3e5e485b5e6dd3c460fdfe481b7 Mon Sep 17 00:00:00 2001 From: ibizaman Date: Sat, 12 Jul 2025 21:18:15 +0200 Subject: [PATCH] use variables to define what module to generate documentation for --- docs/default.nix | 100 ++++++++--------------------------------------- flake.nix | 24 ++++++++++++ 2 files changed, 41 insertions(+), 83 deletions(-) diff --git a/docs/default.nix b/docs/default.nix index 5703a9b..2603276 100644 --- a/docs/default.nix +++ b/docs/default.nix @@ -10,6 +10,11 @@ , release , allModules + +, version ? builtins.readFile ../VERSION +, substituteVersionIn + +, modules }: let @@ -121,96 +126,25 @@ in stdenv.mkDerivation { ${nmdsrc}/static/highlightjs/highlight.min.js \ ${nmdsrc}/static/highlightjs/highlight.load.js - substituteInPlace ./manual.md \ - --replace \ - '@VERSION@' \ - ${builtins.readFile ../VERSION} - - substituteInPlace ./usage.md \ - --replace \ - '@VERSION@' \ - ${builtins.readFile ../VERSION} - + '' + + lib.concatStringsSep "\n" (map (m: '' + substituteInPlace ${m} --replace '@VERSION@' ${version} + '') substituteVersionIn) + + '' substituteInPlace ./options.md \ --replace \ '@OPTIONS_JSON@' \ ${allOptionsDocs [ (pkgs.path + "/nixos/modules/services/misc/forgejo.nix") ]}/share/doc/nixos/options.json - - substituteInPlace ./modules/blocks/ssl/docs/default.md \ - --replace \ + '' + + lib.concatStringsSep "\n" (lib.mapAttrsToList (name: path: '' + substituteInPlace ./modules/${name}/docs/default.md \ + --replace-fail \ '@OPTIONS_JSON@' \ - ${individualModuleOptionsDocs [ ../modules/blocks/ssl.nix ]}/share/doc/nixos/options.json - - substituteInPlace ./modules/blocks/monitoring/docs/default.md \ - --replace \ - '@OPTIONS_JSON@' \ - ${individualModuleOptionsDocs [ ../modules/blocks/monitoring.nix ]}/share/doc/nixos/options.json - - substituteInPlace ./modules/blocks/postgresql/docs/default.md \ - --replace \ - '@OPTIONS_JSON@' \ - ${individualModuleOptionsDocs [ ../modules/blocks/postgresql.nix ]}/share/doc/nixos/options.json - - substituteInPlace ./modules/blocks/restic/docs/default.md \ - --replace \ - '@OPTIONS_JSON@' \ - ${individualModuleOptionsDocs [ ../modules/blocks/restic.nix ]}/share/doc/nixos/options.json - - substituteInPlace ./modules/blocks/sops/docs/default.md \ - --replace \ - '@OPTIONS_JSON@' \ - ${individualModuleOptionsDocs [ ../modules/blocks/sops.nix ]}/share/doc/nixos/options.json - - substituteInPlace ./modules/services/arr/docs/default.md \ - --replace \ - '@OPTIONS_JSON@' \ - ${individualModuleOptionsDocs [ ../modules/services/arr.nix ]}/share/doc/nixos/options.json - - substituteInPlace ./modules/services/home-assistant/docs/default.md \ - --replace \ - '@OPTIONS_JSON@' \ - ${individualModuleOptionsDocs [ ../modules/services/home-assistant.nix ]}/share/doc/nixos/options.json - - substituteInPlace ./modules/services/nextcloud-server/docs/default.md \ - --replace \ - '@OPTIONS_JSON@' \ - ${individualModuleOptionsDocs [ ../modules/services/nextcloud-server.nix ]}/share/doc/nixos/options.json - - substituteInPlace ./modules/services/vaultwarden/docs/default.md \ - --replace \ - '@OPTIONS_JSON@' \ - ${individualModuleOptionsDocs [ ../modules/services/vaultwarden.nix ]}/share/doc/nixos/options.json - - substituteInPlace ./modules/services/forgejo/docs/default.md \ - --replace \ - '@OPTIONS_JSON@' \ - ${individualModuleOptionsDocs [ - ../modules/services/forgejo.nix - (pkgs.path + "/nixos/modules/services/misc/forgejo.nix") - ]}/share/doc/nixos/options.json - - substituteInPlace ./modules/contracts/backup/docs/default.md \ - --replace \ - '@OPTIONS_JSON@' \ - ${individualModuleOptionsDocs [ ../modules/contracts/backup/dummyModule.nix ]}/share/doc/nixos/options.json - - substituteInPlace ./modules/contracts/databasebackup/docs/default.md \ - --replace \ - '@OPTIONS_JSON@' \ - ${individualModuleOptionsDocs [ ../modules/contracts/databasebackup/dummyModule.nix ]}/share/doc/nixos/options.json - - substituteInPlace ./modules/contracts/secret/docs/default.md \ - --replace \ - '@OPTIONS_JSON@' \ - ${individualModuleOptionsDocs [ ../modules/contracts/secret/dummyModule.nix ]}/share/doc/nixos/options.json - - substituteInPlace ./modules/contracts/ssl/docs/default.md \ - --replace \ - '@OPTIONS_JSON@' \ - ${individualModuleOptionsDocs [ ../modules/contracts/ssl/dummyModule.nix ]}/share/doc/nixos/options.json - + ${individualModuleOptionsDocs (if builtins.isList path then path else [ path ])}/share/doc/nixos/options.json + '') modules) + + '' find . -name "*.md" -print0 | \ while IFS= read -r -d ''' f; do substituteInPlace "''${f}" \ diff --git a/flake.nix b/flake.nix index 90ebe77..e259058 100644 --- a/flake.nix +++ b/flake.nix @@ -145,6 +145,30 @@ inherit nmdsrc; allModules = allModules ++ contractDummyModules; release = builtins.readFile ./VERSION; + + substituteVersionIn = [ + "./manual.md" + "./usage.md" + ]; + modules = { + "blocks/ssl" = ./modules/blocks/ssl.nix; + "blocks/monitoring" = ./modules/blocks/monitoring.nix; + "blocks/postgresql" = ./modules/blocks/postgresql.nix; + "blocks/restic" = ./modules/blocks/restic.nix; + "blocks/sops" = ./modules/blocks/sops.nix; + "services/arr" = ./modules/services/arr.nix; + "services/forgejo" = [ + ./modules/services/forgejo.nix + (pkgs.path + "/nixos/modules/services/misc/forgejo.nix") + ]; + "services/home-assistant" = ./modules/services/home-assistant.nix; + "services/nextcloud-server" = ./modules/services/nextcloud-server.nix; + "services/vaultwarden" = ./modules/services/vaultwarden.nix; + "contracts/backup" = ./modules/contracts/backup/dummyModule.nix; + "contracts/databasebackup" = ./modules/contracts/databasebackup/dummyModule.nix; + "contracts/secret" = ./modules/contracts/secret/dummyModule.nix; + "contracts/ssl" = ./modules/contracts/ssl/dummyModule.nix; + }; }; # Documentation redirect generation tool - scans HTML files for anchor mappings