Automatically generate static docs page
This commit is contained in:
@ -1,13 +1,15 @@
|
|||||||
{
|
{
|
||||||
inputs,
|
inputs,
|
||||||
pkgs,
|
pkgs,
|
||||||
|
mylib,
|
||||||
|
...
|
||||||
}: {
|
}: {
|
||||||
# vital-synth = pkgs.callPackage ./vital-synth {}; # Kept as an example, don't know if I will fix this or keep using distrho
|
# vital-synth = pkgs.callPackage ./vital-synth {}; # Kept as an example, don't know if I will fix this or keep using distrho
|
||||||
adwaita-for-steam = pkgs.callPackage ./adwaita-for-steam {src = inputs.adwaita-for-steam;};
|
adwaita-for-steam = pkgs.callPackage ./adwaita-for-steam {src = inputs.adwaita-for-steam;};
|
||||||
dconf-editor-wrapped = pkgs.callPackage ./dconf-editor-wrapped {};
|
dconf-editor-wrapped = pkgs.callPackage ./dconf-editor-wrapped {};
|
||||||
dell-b1160w = pkgs.callPackage ./dell-b1160w {};
|
dell-b1160w = pkgs.callPackage ./dell-b1160w {};
|
||||||
firefox-gnome-theme = pkgs.callPackage ./firefox-gnome-theme {src = inputs.firefox-gnome-theme;};
|
firefox-gnome-theme = pkgs.callPackage ./firefox-gnome-theme {src = inputs.firefox-gnome-theme;};
|
||||||
modules-options-doc = pkgs.callPackage ./modules-options-doc {};
|
modules-options-doc = pkgs.callPackage ./modules-options-doc {mylib = mylib;};
|
||||||
spotdl-4_1_6 = pkgs.callPackage ./spotdl-4_1_6 {};
|
spotdl-4_1_6 = pkgs.callPackage ./spotdl-4_1_6 {};
|
||||||
xdg-desktop-portal-termfilechooser = pkgs.callPackage ./xdg-desktop-portal-termfilechooser {};
|
xdg-desktop-portal-termfilechooser = pkgs.callPackage ./xdg-desktop-portal-termfilechooser {};
|
||||||
}
|
}
|
||||||
|
@ -2,45 +2,70 @@
|
|||||||
stdenv,
|
stdenv,
|
||||||
lib,
|
lib,
|
||||||
pkgs,
|
pkgs,
|
||||||
|
mylib,
|
||||||
...
|
...
|
||||||
}: let
|
}: let
|
||||||
# evaluate our options
|
# create a module that only contains the options
|
||||||
eval = lib.evalModules {
|
toModule = name: {options.modules.${name} = (import ../../home/modules/${name}/options.nix {inherit lib mylib;});};
|
||||||
modules = [
|
|
||||||
../../home/modules/audio/options.nix
|
# evaluate a single module
|
||||||
../../home/modules/emacs/options.nix
|
evalModule = name: (lib.evalModules {modules = [(toModule name)];});
|
||||||
../../home/modules/email/options.nix
|
|
||||||
../../home/modules/firefox/options.nix
|
# generate a single module doc
|
||||||
../../home/modules/fish/options.nix
|
optionsDoc = name: pkgs.nixosOptionsDoc {options = (evalModule name).options;};
|
||||||
../../home/modules/flatpak/options.nix
|
|
||||||
../../home/modules/gaming/options.nix
|
# copy the markdown for a single generated optionsDoc
|
||||||
../../home/modules/gnome/options.nix
|
optionsMD = name: stdenv.mkDerivation {
|
||||||
../../home/modules/hyprland/options.nix
|
src = ./.;
|
||||||
../../home/modules/kitty/options.nix
|
name = "options-doc-${name}";
|
||||||
../../home/modules/misc/options.nix
|
buildPhase = ''
|
||||||
../../home/modules/neovim/options.nix
|
mkdir $out
|
||||||
../../home/modules/nextcloud/options.nix
|
cat ${(optionsDoc name).optionsCommonMark} >> $out/${name}.md
|
||||||
../../home/modules/plasma/options.nix
|
'';
|
||||||
../../home/modules/ranger/options.nix
|
|
||||||
];
|
|
||||||
};
|
};
|
||||||
|
|
||||||
# generate our docs
|
# copy the markdown for all generated optionsDocs
|
||||||
optionsDoc = pkgs.nixosOptionsDoc {
|
allOptionsMDs = let
|
||||||
inherit (eval) options;
|
index = stdenv.mkDerivation {
|
||||||
|
src = ./.;
|
||||||
|
name = "modules-options-index-md";
|
||||||
|
buildPhase = ''
|
||||||
|
mkdir $out
|
||||||
|
echo "# Chriphost NixOS Modules Options" >> $out/index.md
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
in
|
||||||
|
names: pkgs.symlinkJoin {
|
||||||
|
name = "modules-options-doc-md";
|
||||||
|
paths = (map optionsMD names) ++ [index];
|
||||||
};
|
};
|
||||||
|
|
||||||
# create a derivation for capturing the markdown output
|
# generate the actual package (calls all of the above)
|
||||||
optionsDocMD = pkgs.runCommand "options-doc.md" {} ''
|
modules = [
|
||||||
cat ${optionsDoc.optionsCommonMark} >> $out
|
"audio"
|
||||||
'';
|
"emacs"
|
||||||
|
"email"
|
||||||
|
"firefox"
|
||||||
|
"fish"
|
||||||
|
"flatpak"
|
||||||
|
"gaming"
|
||||||
|
"gnome"
|
||||||
|
"hyprland"
|
||||||
|
"kitty"
|
||||||
|
"misc"
|
||||||
|
"neovim"
|
||||||
|
"nextcloud"
|
||||||
|
"plasma"
|
||||||
|
"ranger"
|
||||||
|
];
|
||||||
|
docs = allOptionsMDs modules;
|
||||||
in
|
in
|
||||||
stdenv.mkDerivation {
|
stdenv.mkDerivation {
|
||||||
src = ./.;
|
src = ./.;
|
||||||
name = "modules-options-doc";
|
name = "modules-options-doc";
|
||||||
|
|
||||||
# depend on our options doc derivation
|
# depend on our options doc derivation
|
||||||
buildInput = [optionsDocMD];
|
buildInput = [docs];
|
||||||
|
|
||||||
# mkdocs dependencies
|
# mkdocs dependencies
|
||||||
nativeBuildInputs = with pkgs; [
|
nativeBuildInputs = with pkgs; [
|
||||||
@ -51,7 +76,17 @@ in
|
|||||||
|
|
||||||
# symlink our generated docs into the correct folder before generating
|
# symlink our generated docs into the correct folder before generating
|
||||||
buildPhase = ''
|
buildPhase = ''
|
||||||
ln -s ${optionsDocMD} "./docs/nixos-options.md"
|
# configure mkdocs
|
||||||
|
echo "site_name: Chriphost NixOS Options" >> ./mkdocs.yml
|
||||||
|
echo "use_directory_urls: false" >> ./mkdocs.yml
|
||||||
|
echo "theme:" >> ./mkdocs.yml
|
||||||
|
echo " name: material" >> ./mkdocs.yml
|
||||||
|
echo "nav:" >> ./mkdocs.yml
|
||||||
|
echo -e " - ${builtins.concatStringsSep ".md\n - " modules}.md" >> ./mkdocs.yml
|
||||||
|
|
||||||
|
# mkdir ./docs
|
||||||
|
ln -s ${docs} "./docs"
|
||||||
|
|
||||||
# generate the site
|
# generate the site
|
||||||
mkdocs build
|
mkdocs build
|
||||||
'';
|
'';
|
||||||
|
Reference in New Issue
Block a user