From 843cfda2ad9d146c9b96636958eae6fca5400448 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jalil=20David=20Salam=C3=A9=20Messina?= Date: Sat, 22 Mar 2025 01:28:33 +0100 Subject: [PATCH] docs: add nuschtosSearch to book This provides a nice option search. --- docs/book.toml | 2 +- docs/src/SUMMARY.md | 11 +++++--- flake-modules/docs.nix | 58 +++++++++++++++++++++++------------------- flake.lock | 52 +++++++++++++++++++++++++++++++++++++ flake.nix | 9 +++++++ 5 files changed, 101 insertions(+), 31 deletions(-) diff --git a/docs/book.toml b/docs/book.toml index d31b799..77ec9d4 100644 --- a/docs/book.toml +++ b/docs/book.toml @@ -3,7 +3,7 @@ authors = ["Jalil David Salamé Messina"] language = "en" multilingual = false src = "src" -title = "Jalil's NixOS configuration module" +title = "Jalil's NixOS configuration modules" [preprocessor.toc] command = "mdbook-toc" diff --git a/docs/src/SUMMARY.md b/docs/src/SUMMARY.md index 16ff37a..48707f4 100644 --- a/docs/src/SUMMARY.md +++ b/docs/src/SUMMARY.md @@ -1,6 +1,9 @@ # Summary -- [Nix Based Configuration](./configuration-overview.md) - - [NixOS Module Options](./nixos-options.md) - - [Neovim Module Options](./nvim-options.md) - - [Home Manager Module Options](./home-options.md) +[Nix Based Configuration](./configuration-overview.md) + +- [NixOS Module Options](./nixos-options.md) +- [Neovim Module Options](./nvim-options.md) +- [Home Manager Module Options](./home-options.md) + +[Search](./search/index.html) diff --git a/flake-modules/docs.nix b/flake-modules/docs.nix index 8e6402a..8f45d14 100644 --- a/flake-modules/docs.nix +++ b/flake-modules/docs.nix @@ -1,46 +1,50 @@ -{ lib, inputs, ... }: +{ lib, ... }: { perSystem = - { pkgs, ... }: + { inputs', pkgs, ... }: { packages = let - modules = ../modules; filterVisible = toplevelOption: option: option // { visible = option.visible && builtins.elemAt option.loc 0 == toplevelOption; }; - home-eval = lib.evalModules { - modules = [ "${modules}/hm/options.nix" ]; - specialArgs = { - inherit pkgs; + 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/"; }; - nvim-eval = lib.evalModules { modules = [ "${modules}/nixvim/options.nix" ]; }; - nixos-eval = lib.evalModules { modules = [ "${modules}/nixos/options.nix" ]; }; - home-markdown = - (pkgs.nixosOptionsDoc { - inherit (home-eval) options; - transformOptions = filterVisible "jhome"; - }).optionsCommonMark; - nvim-markdown = - (pkgs.nixosOptionsDoc { - inherit (nvim-eval) options; - transformOptions = filterVisible "jhome"; - }).optionsCommonMark; - nixos-markdown = - (pkgs.nixosOptionsDoc { - inherit (nixos-eval) options; - transformOptions = filterVisible "jconfig"; - }).optionsCommonMark; + 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 = inputs.self + "/docs"; + src = ../docs; patchPhase = '' cleanup_md() { @@ -53,7 +57,9 @@ 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\""; diff --git a/flake.lock b/flake.lock index a6c9d81..4724875 100644 --- a/flake.lock +++ b/flake.lock @@ -240,6 +240,32 @@ "type": "github" } }, + "ixx": { + "inputs": { + "flake-utils": [ + "nuschtosSearch", + "flake-utils" + ], + "nixpkgs": [ + "nuschtosSearch", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1729958008, + "narHash": "sha256-EiOq8jF4Z/zQe0QYVc3+qSKxRK//CFHMB84aYrYGwEs=", + "owner": "NuschtOS", + "repo": "ixx", + "rev": "9fd01aad037f345350eab2cd45e1946cc66da4eb", + "type": "github" + }, + "original": { + "owner": "NuschtOS", + "ref": "v0.0.6", + "repo": "ixx", + "type": "github" + } + }, "lix": { "flake": false, "locked": { @@ -329,6 +355,31 @@ "type": "github" } }, + "nuschtosSearch": { + "inputs": { + "flake-utils": [ + "lix-module", + "flake-utils" + ], + "ixx": "ixx", + "nixpkgs": [ + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1741886583, + "narHash": "sha256-sScfYKtxp3CYv5fJcHQDvQjqBL+tPNQqS9yf9Putd+s=", + "owner": "NuschtOS", + "repo": "search", + "rev": "2974bc5fa3441a319fba943f3ca41f7dcd1a1467", + "type": "github" + }, + "original": { + "owner": "NuschtOS", + "repo": "search", + "type": "github" + } + }, "root": { "inputs": { "flake-parts": "flake-parts", @@ -336,6 +387,7 @@ "lix-module": "lix-module", "nixpkgs": "nixpkgs", "nixvim": "nixvim", + "nuschtosSearch": "nuschtosSearch", "stylix": "stylix", "systems": "systems", "treefmt-nix": "treefmt-nix", diff --git a/flake.nix b/flake.nix index 8c9a20b..70fa1ee 100644 --- a/flake.nix +++ b/flake.nix @@ -47,10 +47,19 @@ url = "github:hercules-ci/flake-parts"; inputs.nixpkgs-lib.follows = "nixpkgs"; }; + # For the formatter (can be set to null) treefmt-nix = { url = "github:numtide/treefmt-nix"; inputs.nixpkgs.follows = "nixpkgs"; }; + # For generating the docs (can be set to null) + nuschtosSearch = { + url = "github:NuschtOS/search"; + inputs = { + nixpkgs.follows = "nixpkgs"; + flake-utils.follows = "lix-module/flake-utils"; + }; + }; # For deduplication systems.url = "github:nix-systems/default"; };