configuration.nix/flake-modules/docs.nix
Jalil David Salamé Messina 843cfda2ad
All checks were successful
/ check (push) Successful in 9s
/ check-renovaterc (push) Successful in 3s
/ build-packages (push) Successful in 13s
/ build-vm (push) Successful in 2s
/ report-size (push) Successful in 4s
docs: add nuschtosSearch to book
This provides a nice option search.
2025-03-22 02:52:08 +01:00

69 lines
2.7 KiB
Nix

{ lib, ... }:
{
perSystem =
{ inputs', pkgs, ... }:
{
packages =
let
filterVisible =
toplevelOption: option:
option // { visible = option.visible && builtins.elemAt option.loc 0 == toplevelOption; };
genOptionsDoc =
toplevelOption: module:
pkgs.nixosOptionsDoc {
inherit (lib.evalModules { modules = [ module ]; }) options;
transformOptions = filterVisible toplevelOption;
};
mkScope = name: options: {
inherit name;
optionsJSON = "${options.optionsJSON}/share/doc/nixos/options.json";
urlPrefix = "https://github.com/jalil-salame/configuration.nix/blob/main/";
};
search = inputs'.nuschtosSearch.packages.mkMultiSearch {
title = "Search Jalil'\"'\"'s configuration.nix";
baseHref = "/";
scopes = [
(mkScope "NixOS" nixos)
(mkScope "Home-Manager" home)
(mkScope "NixVIM" nvim)
];
};
home = genOptionsDoc "jhome" ../modules/hm/options.nix;
nvim = genOptionsDoc "jhome" ../modules/nixvim/options.nix;
nixos = genOptionsDoc "jconfig" ../modules/nixos/options.nix;
nixos-markdown = nixos.optionsCommonMark;
home-markdown = home.optionsCommonMark;
nvim-markdown = nvim.optionsCommonMark;
in
{
inherit search;
docs-home-markdown = home-markdown;
docs-nixos-markdown = nixos-markdown;
docs-nvim-markdown = nvim-markdown;
# Documentation
docs = pkgs.stdenvNoCC.mkDerivation {
name = "nixos-configuration-book";
src = ../docs;
patchPhase = ''
cleanup_md() {
sed \
-e 's@\[/nix/store/[^\\]*-source/\(.*\)\\.nix\](.*)@[\1\\.nix](https://github.com/jalil-salame/configuration.nix/blob/main/\1.nix)@' \
-e 's/^## /### /' \
"$@"
}
# copy generated options removing the declared by statement
cleanup_md ${home-markdown} >> ./src/home-options.md
cleanup_md ${nvim-markdown} >> ./src/nvim-options.md
cleanup_md ${nixos-markdown} >> ./src/nixos-options.md
# link search site
ln -s "${search.override { baseHref = "/configuration.nix/search/"; }}" ./src/search
''; # FIXME: only add the `/configuration.nix/` part for GH CI
nativeBuildInputs = [ pkgs.mdbook-toc ];
buildPhase = "${pkgs.mdbook}/bin/mdbook build --dest-dir \"$out\"";
};
};
};
}