summary refs log tree commit diff
diff options
context:
space:
mode:
authorVladimír Čunát <vcunat@gmail.com>2018-02-12 08:31:43 +0100
committerVladimír Čunát <vcunat@gmail.com>2018-02-12 08:31:43 +0100
commit040bde90521c9956e8970b35305a337732cf0ade (patch)
tree6f4935a97c2d02c748f7bca9e76bfd752755d21a
parent53e790e7a861e498b3136fc9da7f53ec1642443a (diff)
parentb468f98b02275a2ef37422576cbfcc896097980c (diff)
downloadnixpkgs-040bde90521c9956e8970b35305a337732cf0ade.tar
nixpkgs-040bde90521c9956e8970b35305a337732cf0ade.tar.gz
nixpkgs-040bde90521c9956e8970b35305a337732cf0ade.tar.bz2
nixpkgs-040bde90521c9956e8970b35305a337732cf0ade.tar.lz
nixpkgs-040bde90521c9956e8970b35305a337732cf0ade.tar.xz
nixpkgs-040bde90521c9956e8970b35305a337732cf0ade.tar.zst
nixpkgs-040bde90521c9956e8970b35305a337732cf0ade.zip
Merge #34866: nixos doc: efficient comparisons
This solves most of the performance regression from a7d75ab (#33898).
-rw-r--r--lib/options.nix1
-rw-r--r--nixos/doc/manual/default.nix9
2 files changed, 5 insertions, 5 deletions
diff --git a/lib/options.nix b/lib/options.nix
index e10c86dd506..9446eca3677 100644
--- a/lib/options.nix
+++ b/lib/options.nix
@@ -85,6 +85,7 @@ rec {
     concatMap (opt:
       let
         docOption = rec {
+          loc = opt.loc;
           name = showOption opt.loc;
           description = opt.description or (throw "Option `${name}' has no description.");
           declarations = filter (x: x != unknownModule) opt.declarations;
diff --git a/nixos/doc/manual/default.nix b/nixos/doc/manual/default.nix
index 66fa4f0ba43..bbe82066aa0 100644
--- a/nixos/doc/manual/default.nix
+++ b/nixos/doc/manual/default.nix
@@ -63,18 +63,17 @@ let
   stripAnyPrefixes = lib.flip (lib.fold lib.removePrefix) prefixesToStrip;
 
   # Custom "less" that pushes up all the things ending in ".enable*"
-  # and ".package"
-  optionListLess = a: b:
+  # and ".package*"
+  optionLess = 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;
+    in lib.compareLists cmp a.loc b.loc < 0;
 
   # Customly sort option list for the man page.
-  optionsList = lib.sort (a: b: optionListLess a.name b.name) optionsListDesc;
+  optionsList = lib.sort optionLess optionsListDesc;
 
   # Convert the list of options into an XML file.
   optionsXML = builtins.toFile "options.xml" (builtins.toXML optionsList);