summary refs log tree commit diff
path: root/nixos/doc/manual/default.nix
diff options
context:
space:
mode:
authorJan Malakhovski <oxij@oxij.org>2016-04-20 21:46:02 +0000
committerJan Malakhovski <oxij@oxij.org>2017-12-07 21:26:34 +0000
commit182463dc79bb8dd4ca09ae54e8fcc1637d501c6a (patch)
tree6419f89618db00b3d4873a930fab3b6c5134eb36 /nixos/doc/manual/default.nix
parentbccab965b9226e7d515e1ee1cdf47bb32d1df63d (diff)
downloadnixpkgs-182463dc79bb8dd4ca09ae54e8fcc1637d501c6a.tar
nixpkgs-182463dc79bb8dd4ca09ae54e8fcc1637d501c6a.tar.gz
nixpkgs-182463dc79bb8dd4ca09ae54e8fcc1637d501c6a.tar.bz2
nixpkgs-182463dc79bb8dd4ca09ae54e8fcc1637d501c6a.tar.lz
nixpkgs-182463dc79bb8dd4ca09ae54e8fcc1637d501c6a.tar.xz
nixpkgs-182463dc79bb8dd4ca09ae54e8fcc1637d501c6a.tar.zst
nixpkgs-182463dc79bb8dd4ca09ae54e8fcc1637d501c6a.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/manual/default.nix')
-rw-r--r--nixos/doc/manual/default.nix16
1 files changed, 15 insertions, 1 deletions
diff --git a/nixos/doc/manual/default.nix b/nixos/doc/manual/default.nix
index 9bc83be6610..9a96f201a39 100644
--- a/nixos/doc/manual/default.nix
+++ b/nixos/doc/manual/default.nix
@@ -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) optionsList';
+
   # 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}