69 lines
2.7 KiB
Nix
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\"";
|
|
};
|
|
};
|
|
};
|
|
}
|