Nixos: Move deprecated modules/derivation to separate folder
This commit is contained in:
118
derivations/1_deprecated/modules-options-doc/default.nix
Normal file
118
derivations/1_deprecated/modules-options-doc/default.nix
Normal file
@ -0,0 +1,118 @@
|
||||
# TODO: Can I replicate something similar for the mylib?
|
||||
{
|
||||
stdenv,
|
||||
lib,
|
||||
pkgs,
|
||||
mylib,
|
||||
...
|
||||
}: let
|
||||
# create a module that only contains the options, type can be home or system
|
||||
toModule = type: name: {options.modules.${name} = import ../../${type}/modules/${name}/options.nix {inherit lib mylib;};};
|
||||
|
||||
# evaluate a single module
|
||||
evalModule = type: name: (lib.evalModules {modules = [(toModule type name)];});
|
||||
|
||||
# generate a single module doc
|
||||
optionsDoc = type: name: pkgs.nixosOptionsDoc {options = (evalModule type name).options;};
|
||||
|
||||
# copy the markdown for a single generated optionsDoc
|
||||
optionsMD = type: name:
|
||||
stdenv.mkDerivation {
|
||||
src = ./.;
|
||||
name = "options-doc-${name}";
|
||||
buildPhase = ''
|
||||
mkdir $out
|
||||
cat ${(optionsDoc type name).optionsCommonMark} >> $out/${name}.md
|
||||
'';
|
||||
};
|
||||
|
||||
# copy the markdown for all generated optionsDocs
|
||||
allOptionsMDs = let
|
||||
index = stdenv.mkDerivation {
|
||||
src = ./.;
|
||||
name = "modules-options-index-md";
|
||||
buildPhase = ''
|
||||
mkdir $out
|
||||
echo "# Chriphost NixOS Modules Options" >> $out/index.md
|
||||
'';
|
||||
};
|
||||
in
|
||||
home-modules: system-modules:
|
||||
pkgs.symlinkJoin {
|
||||
name = "modules-options-doc-md";
|
||||
paths = (map (optionsMD "home") home-modules) ++ (map (optionsMD "system") system-modules) ++ [index];
|
||||
};
|
||||
|
||||
# generate the actual package (calls all of the above)
|
||||
home-modules = [
|
||||
"audio"
|
||||
"chromium"
|
||||
"emacs"
|
||||
"email"
|
||||
"firefox"
|
||||
"fish"
|
||||
"flatpak"
|
||||
"gaming"
|
||||
"helix"
|
||||
"hyprland"
|
||||
"kitty"
|
||||
"misc"
|
||||
"neovim"
|
||||
"nextcloud"
|
||||
"nnn"
|
||||
"ranger"
|
||||
"rofi"
|
||||
"vscode"
|
||||
"waybar"
|
||||
];
|
||||
system-modules = [
|
||||
"containers"
|
||||
"systemd-networkd"
|
||||
];
|
||||
docs = allOptionsMDs home-modules system-modules;
|
||||
in
|
||||
stdenv.mkDerivation {
|
||||
src = ./.;
|
||||
name = "modules-options-doc";
|
||||
|
||||
# depend on our options doc derivation
|
||||
buildInput = [docs];
|
||||
|
||||
# mkdocs dependencies
|
||||
nativeBuildInputs = with pkgs; [
|
||||
mkdocs
|
||||
python310Packages.mkdocs-material
|
||||
python310Packages.pygments
|
||||
];
|
||||
|
||||
# TODO: Use a file, this is stupid
|
||||
# TODO: Fix the navigation sections
|
||||
# TODO: Customize features
|
||||
# TODO: Remove or fix ToC
|
||||
# symlink our generated docs into the correct folder before generating
|
||||
buildPhase = ''
|
||||
# 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 " features:" >> ./mkdocs.yml
|
||||
echo " - navigation.sections" >> ./mkdocs.yml
|
||||
echo "nav:" >> ./mkdocs.yml
|
||||
echo " - System:"
|
||||
echo -e " - ${builtins.concatStringsSep ".md\n - " system-modules}.md" >> ./mkdocs.yml
|
||||
echo " - Home:"
|
||||
echo -e " - ${builtins.concatStringsSep ".md\n - " home-modules}.md" >> ./mkdocs.yml
|
||||
|
||||
# mkdir ./docs
|
||||
ln -s ${docs} "./docs"
|
||||
|
||||
# generate the site
|
||||
mkdocs build
|
||||
'';
|
||||
|
||||
# copy the resulting output to the derivation's $out directory
|
||||
installPhase = ''
|
||||
mv site $out
|
||||
'';
|
||||
}
|
Reference in New Issue
Block a user