From cf558aa5e1917d58e49cc850540dcfa0bd52ce5f Mon Sep 17 00:00:00 2001 From: ChUrl Date: Wed, 26 Apr 2023 13:09:57 +0200 Subject: [PATCH] Generate documentation for my modules --- derivations/default.nix | 5 +- derivations/modules-options-doc/default.nix | 63 +++++++++++++++++++++ home/christoph/default.nix | 5 ++ 3 files changed, 71 insertions(+), 2 deletions(-) create mode 100644 derivations/modules-options-doc/default.nix diff --git a/derivations/default.nix b/derivations/default.nix index 97146ef7..71198e84 100644 --- a/derivations/default.nix +++ b/derivations/default.nix @@ -3,10 +3,11 @@ pkgs, }: { # vital-synth = pkgs.callPackage ./vital-synth {}; # Kept as an example, don't know if I will fix this or keep using distrho - firefox-gnome-theme = pkgs.callPackage ./firefox-gnome-theme {src = inputs.firefox-gnome-theme;}; adwaita-for-steam = pkgs.callPackage ./adwaita-for-steam {src = inputs.adwaita-for-steam;}; dconf-editor-wrapped = pkgs.callPackage ./dconf-editor-wrapped {}; dell-b1160w = pkgs.callPackage ./dell-b1160w {}; - xdg-desktop-portal-termfilechooser = pkgs.callPackage ./xdg-desktop-portal-termfilechooser {}; + firefox-gnome-theme = pkgs.callPackage ./firefox-gnome-theme {src = inputs.firefox-gnome-theme;}; + modules-options-doc = pkgs.callPackage ./modules-options-doc {}; spotdl-4_1_6 = pkgs.callPackage ./spotdl-4_1_6 {}; + xdg-desktop-portal-termfilechooser = pkgs.callPackage ./xdg-desktop-portal-termfilechooser {}; } diff --git a/derivations/modules-options-doc/default.nix b/derivations/modules-options-doc/default.nix new file mode 100644 index 00000000..f508d5e9 --- /dev/null +++ b/derivations/modules-options-doc/default.nix @@ -0,0 +1,63 @@ +{ + stdenv, + lib, + pkgs, + ... +}: let + # evaluate our options + eval = lib.evalModules { + modules = [ + ../../home/modules/audio/options.nix + ../../home/modules/emacs/options.nix + ../../home/modules/email/options.nix + ../../home/modules/firefox/options.nix + ../../home/modules/fish/options.nix + ../../home/modules/flatpak/options.nix + ../../home/modules/gaming/options.nix + ../../home/modules/gnome/options.nix + ../../home/modules/hyprland/options.nix + ../../home/modules/kitty/options.nix + ../../home/modules/misc/options.nix + ../../home/modules/neovim/options.nix + ../../home/modules/nextcloud/options.nix + ../../home/modules/plasma/options.nix + ../../home/modules/ranger/options.nix + ]; + }; + + # generate our docs + optionsDoc = pkgs.nixosOptionsDoc { + inherit (eval) options; + }; + + # create a derivation for capturing the markdown output + optionsDocMD = pkgs.runCommand "options-doc.md" {} '' + cat ${optionsDoc.optionsCommonMark} >> $out + ''; +in + stdenv.mkDerivation { + src = ./.; + name = "modules-options-doc"; + + # depend on our options doc derivation + buildInput = [optionsDocMD]; + + # mkdocs dependencies + nativeBuildInputs = with pkgs; [ + mkdocs + python310Packages.mkdocs-material + python310Packages.pygments + ]; + + # symlink our generated docs into the correct folder before generating + buildPhase = '' + ln -s ${optionsDocMD} "./docs/nixos-options.md" + # generate the site + mkdocs build + ''; + + # copy the resulting output to the derivation's $out directory + installPhase = '' + mv site $out + ''; + } diff --git a/home/christoph/default.nix b/home/christoph/default.nix index 492389f1..a4ef0860 100644 --- a/home/christoph/default.nix +++ b/home/christoph/default.nix @@ -413,8 +413,13 @@ rec { # Use NixCommunity binary cache cachix + + # Generate documentation + modules-options-doc ]; + home.file.".options-doc".source = "${pkgs.modules-options-doc}"; + # Packages with extra options managed by HomeManager natively programs = { home-manager.enable = true;