fix(son-doc): file miss in documentation

This commit is contained in:
catvayor 2024-12-12 14:11:49 +01:00
parent a4a9ae9e12
commit 02c565bb9d
Signed by: lbailly
GPG key ID: CE3E645251AC63F3
2 changed files with 83 additions and 29 deletions

View file

@ -1,7 +1,6 @@
{ {
lib, lib,
pkgs, pkgs,
modulesPath,
... ...
}: }:
{ {
@ -94,8 +93,12 @@
"${netconf.outPath}/junos" "${netconf.outPath}/junos"
"${netconf.outPath}/dgn-module.nix" "${netconf.outPath}/dgn-module.nix"
]; ];
path-translations = [
{
base = netconf.outPath; base = netconf.outPath;
url = "https://git.dgnum.eu/DGNum/Netconf-Module/src/branch/master/"; url = "https://git.dgnum.eu/DGNum/Netconf-Module/src/branch/master/";
}
];
}; };
"infra DGNum" = "infra DGNum" =
let let
@ -105,18 +108,27 @@
outputHash = "sha256-LhjQoVZqYARpUxuuWhcNY7HLE64H8PIIBZ0QwlmGD2I="; outputHash = "sha256-LhjQoVZqYARpUxuuWhcNY7HLE64H8PIIBZ0QwlmGD2I=";
name = "DGN-infra"; name = "DGN-infra";
}; };
infra-hive = import "${infra}/hive.nix";
infra-source = infra-hive.meta.specialArgs.sources;
infra-nixpkgs = infra-hive.meta.nixpkgs { };
infra-modulesPath = "${infra-nixpkgs.path}/nixos/modules/";
in in
{ {
paths = [ paths = [
"${infra}/modules/generic" "${infra}/modules/generic"
"${infra}/modules/nixos" "${infra}/modules/nixos"
]; ];
ignored-modules = import "${modulesPath}/module-list.nix"; ignored-modules = import "${infra-modulesPath}/module-list.nix" ++ [
"${infra-source.agenix}/modules/age.nix"
"${infra-source.arkheon}/module.nix"
"${infra-source."microvm.nix"}/nixos-modules/host"
];
specialArgs = { specialArgs = {
lib = lib // { lib = infra-nixpkgs.lib // {
extra = import "${infra}/lib/nix-lib"; extra = import "${infra}/lib/nix-lib";
}; };
inherit pkgs modulesPath; modulesPath = infra-modulesPath;
pkgs = infra-nixpkgs;
name = "<nodeName>"; name = "<nodeName>";
nodeMeta = { nodeMeta = {
nix-modules = [ ]; nix-modules = [ ];
@ -126,10 +138,26 @@
meta = { meta = {
organization.groups.root = [ ]; organization.groups.root = [ ];
}; };
sources = (import "${infra}/hive.nix").meta.specialArgs.sources; sources = infra-source;
}; };
path-translations = [
{
base = infra.outPath; base = infra.outPath;
url = "https://git.dgnum.eu/DGNum/infrastructure/src/branch/main/"; url = "https://git.dgnum.eu/DGNum/infrastructure/src/branch/main/";
}
{
base = infra-source.nix-modules;
url = "https://git.hubrecht.ovh/hubrecht/nix-modules/src/branch/main/";
}
{
base = infra-modulesPath;
url = "https://github.com/NixOS/nixpkgs/tree/master/nixos/modules";
}
{
base = infra-source.cgroup-exporter;
url = "https://github.com/arianvp/cgroup-exporter/blob/main/";
}
];
}; };
}; };
static-data = ./static-data; static-data = ./static-data;

View file

@ -16,7 +16,10 @@ let
removePrefix removePrefix
pathIsDirectory pathIsDirectory
hasSuffix hasSuffix
hasPrefix
attrNames attrNames
filter
head
; ;
inherit (lib.strings) inherit (lib.strings)
sanitizeDerivationName sanitizeDerivationName
@ -26,7 +29,7 @@ let
cfg = config.services.extranix; cfg = config.services.extranix;
module-eval = module-eval =
module: module-name: module:
let let
ignored-eval = lib.evalModules { ignored-eval = lib.evalModules {
modules = module.ignored-modules; modules = module.ignored-modules;
@ -41,6 +44,33 @@ let
opts-doc = pkgs.nixosOptionsDoc { inherit (eval) options; }; opts-doc = pkgs.nixosOptionsDoc { inherit (eval) options; };
opts = importJSON "${opts-doc.optionsJSON}/share/doc/nixos/options.json"; opts = importJSON "${opts-doc.optionsJSON}/share/doc/nixos/options.json";
filtered-opts = removeAttrs opts (attrNames ignored-opts); filtered-opts = removeAttrs opts (attrNames ignored-opts);
path-translation =
let
translations = map (
{ base, url }:
{
url = "${url}${if hasSuffix "/" url then "" else "/"}";
base =
let
base1 = toString base;
in
base1 + (if hasSuffix "/" base1 then "" else "/");
}
) module.path-translations;
in
path:
let
fullPath = path + (if pathIsDirectory path then "/default.nix" else "");
fitting = filter ({ base, ... }: hasPrefix base fullPath) translations;
translate-info = head (
fitting ++ [ (throw "${fullPath} is not in any base path of ${module-name}") ]
);
innerPath = removePrefix translate-info.base fullPath;
in
{
name = "<${innerPath}>";
url = "${translate-info.url}${innerPath}";
};
result = json.generate "options-extranix.json" { result = json.generate "options-extranix.json" {
last_update = "-/-"; last_update = "-/-";
options = mapAttrsToList (title: val: { options = mapAttrsToList (title: val: {
@ -53,19 +83,7 @@ let
; ;
example = val.example.text or ""; example = val.example.text or "";
default = val.default.text or ""; default = val.default.text or "";
declarations = map ( declarations = map path-translation val.declarations;
decl:
let
baseString1 = toString module.base;
baseString = baseString1 + (if hasSuffix "/" baseString1 then "" else "/");
innerPath1 = if pathIsDirectory decl then decl + "/default.nix" else decl;
innerPath = removePrefix baseString innerPath1;
in
{
name = "<${innerPath}>";
url = "${module.url}${if hasSuffix "/" module.url then "" else "/"}${innerPath}";
}
) val.declarations;
}) filtered-opts; }) filtered-opts;
}; };
in in
@ -73,7 +91,7 @@ let
options-files = mapAttrs' (name: value: { options-files = mapAttrs' (name: value: {
name = sanitizeDerivationName name; name = sanitizeDerivationName name;
value = module-eval value; value = module-eval name value;
}) cfg.modules; }) cfg.modules;
webroot = pkgs.callPackage ./webroot.nix { webroot = pkgs.callPackage ./webroot.nix {
@ -101,6 +119,10 @@ in
type = types.listOf types.deferredModule; type = types.listOf types.deferredModule;
default = [ ]; default = [ ];
}; };
path-translations = mkOption {
type =
let
path-mod.options = {
base = mkOption { base = mkOption {
type = types.path; type = types.path;
}; };
@ -109,6 +131,10 @@ in
}; };
}; };
in in
types.listOf (types.submodule path-mod);
};
};
in
types.attrsOf (types.submodule module-mod); types.attrsOf (types.submodule module-mod);
}; };
settings = mkOption { settings = mkOption {