diff options
author | Jan Malakhovski <oxij@oxij.org> | 2016-04-20 21:46:02 +0000 |
---|---|---|
committer | Jan Malakhovski <oxij@oxij.org> | 2018-02-09 19:51:05 +0000 |
commit | a7d75ab6489dc5834e8402db374b4d0f1e774d53 (patch) | |
tree | de9ebcf6ee6a521c2de5488b80b387820fedb9c4 /nixos/doc | |
parent | ee3220440da59e39154b520353a3d03a1abf3405 (diff) | |
download | nixlib-a7d75ab6489dc5834e8402db374b4d0f1e774d53.tar nixlib-a7d75ab6489dc5834e8402db374b4d0f1e774d53.tar.gz nixlib-a7d75ab6489dc5834e8402db374b4d0f1e774d53.tar.bz2 nixlib-a7d75ab6489dc5834e8402db374b4d0f1e774d53.tar.lz nixlib-a7d75ab6489dc5834e8402db374b4d0f1e774d53.tar.xz nixlib-a7d75ab6489dc5834e8402db374b4d0f1e774d53.tar.zst nixlib-a7d75ab6489dc5834e8402db374b4d0f1e774d53.zip |
nixos/doc: push all the `enable*' and `package*` options to the top of their option group
Why? Because this way configuration.nix(5) can be read linearly. Before: > virtualisation.xen.bootParams > ... > virtualisation.xen.enable > ... > virtualisation.xen.package > ... After: > virtualisation.xen.enable > virtualisation.xen.package > virtualisation.xen.bootParams > ...
Diffstat (limited to 'nixos/doc')
-rw-r--r-- | nixos/doc/manual/default.nix | 22 |
1 files changed, 18 insertions, 4 deletions
diff --git a/nixos/doc/manual/default.nix b/nixos/doc/manual/default.nix index 8079a2feb29f..9ee70ba59b79 100644 --- a/nixos/doc/manual/default.nix +++ b/nixos/doc/manual/default.nix @@ -6,7 +6,7 @@ let lib = pkgs.lib; # Remove invisible and internal options. - optionsList = lib.filter (opt: opt.visible && !opt.internal) (lib.optionAttrSetToDocList options); + optionsListVisible = lib.filter (opt: opt.visible && !opt.internal) (lib.optionAttrSetToDocList options); # Replace functions by the string <function> substFunction = x: @@ -16,7 +16,7 @@ let else x; # Clean up declaration sites to not refer to the NixOS source tree. - optionsList' = lib.flip map optionsList (opt: opt // { + optionsListDesc = lib.flip map optionsListVisible (opt: opt // { declarations = map stripAnyPrefixes opt.declarations; } // lib.optionalAttrs (opt ? example) { example = substFunction opt.example; } @@ -32,8 +32,22 @@ let prefixesToStrip = map (p: "${toString p}/") ([ ../../.. ] ++ extraSources); stripAnyPrefixes = lib.flip (lib.fold lib.removePrefix) prefixesToStrip; + # Custom "less" that pushes up all the things ending in ".enable*" + # and ".package" + optionListLess = a: b: + let + splt = lib.splitString "."; + ise = lib.hasPrefix "enable"; + isp = lib.hasPrefix "package"; + cmp = lib.splitByAndCompare ise lib.compare + (lib.splitByAndCompare isp lib.compare lib.compare); + in lib.compareLists cmp (splt a) (splt b) < 0; + + # Customly sort option list for the man page. + optionsList = lib.sort (a: b: optionListLess a.name b.name) optionsListDesc; + # Convert the list of options into an XML file. - optionsXML = builtins.toFile "options.xml" (builtins.toXML optionsList'); + optionsXML = builtins.toFile "options.xml" (builtins.toXML optionsList); optionsDocBook = runCommand "options-db.xml" {} '' optionsXML=${optionsXML} @@ -191,7 +205,7 @@ in rec { mkdir -p $dst cp ${builtins.toFile "options.json" (builtins.unsafeDiscardStringContext (builtins.toJSON - (builtins.listToAttrs (map (o: { name = o.name; value = removeAttrs o ["name" "visible" "internal"]; }) optionsList')))) + (builtins.listToAttrs (map (o: { name = o.name; value = removeAttrs o ["name" "visible" "internal"]; }) optionsList)))) } $dst/options.json mkdir -p $out/nix-support |