summary refs log tree commit diff
diff options
context:
space:
mode:
authorJan Malakhovski <oxij@oxij.org>2015-08-17 16:04:16 +0000
committerJan Malakhovski <oxij@oxij.org>2015-08-18 18:42:57 +0000
commitc6256c0e3e4292080b8574a483bdfce4b7d81b5f (patch)
tree4053ba416f414cc10b0a48c71b25d6818581fc45
parentfea03379d635800ca9e96f36467f80d5d5189357 (diff)
downloadnixlib-c6256c0e3e4292080b8574a483bdfce4b7d81b5f.tar
nixlib-c6256c0e3e4292080b8574a483bdfce4b7d81b5f.tar.gz
nixlib-c6256c0e3e4292080b8574a483bdfce4b7d81b5f.tar.bz2
nixlib-c6256c0e3e4292080b8574a483bdfce4b7d81b5f.tar.lz
nixlib-c6256c0e3e4292080b8574a483bdfce4b7d81b5f.tar.xz
nixlib-c6256c0e3e4292080b8574a483bdfce4b7d81b5f.tar.zst
nixlib-c6256c0e3e4292080b8574a483bdfce4b7d81b5f.zip
nixos: generate infodirs directly in system-path
`man 1 info` says:

   The first non-option argument, if present, is the menu entry to
   start from; it is searched for in all `dir' files along INFOPATH.
   If it is not present, info merges all `dir' files and shows the
   result. Any remaining arguments are treated as the names of menu
   items relative to the initial node visited.

Which means that this does what previous programs/info did and #8519
(on-the-fly infodir generation for Emacs) wanted to do, but for both
programs.
-rw-r--r--nixos/modules/config/system-path.nix8
-rw-r--r--nixos/modules/module-list.nix1
-rw-r--r--nixos/modules/programs/info.nix38
3 files changed, 8 insertions, 39 deletions
diff --git a/nixos/modules/config/system-path.nix b/nixos/modules/config/system-path.nix
index ec112b63b2fc..3a9a09ee87c1 100644
--- a/nixos/modules/config/system-path.nix
+++ b/nixos/modules/config/system-path.nix
@@ -45,6 +45,7 @@ let
       pkgs.strace
       pkgs.su
       pkgs.time
+      pkgs.texinfoInteractive
       pkgs.utillinux
       extraManpages
     ];
@@ -138,6 +139,13 @@ in
           if [ -x $out/bin/update-desktop-database -a -w $out/share/applications ]; then
               $out/bin/update-desktop-database $out/share/applications
           fi
+
+          if [ -x $out/bin/install-info -a -w $out/share/info ]; then
+            shopt -s nullglob
+            for i in $out/share/info/*.info $out/share/info/*.info.gz; do
+                $out/bin/install-info $i $out/share/info/dir
+            done
+          fi
         '';
     };
 
diff --git a/nixos/modules/module-list.nix b/nixos/modules/module-list.nix
index 733f3c5d853d..6586b36968aa 100644
--- a/nixos/modules/module-list.nix
+++ b/nixos/modules/module-list.nix
@@ -61,7 +61,6 @@
   ./programs/command-not-found/command-not-found.nix
   ./programs/dconf.nix
   ./programs/environment.nix
-  ./programs/info.nix
   ./programs/ibus.nix
   ./programs/kbdlight.nix
   ./programs/light.nix
diff --git a/nixos/modules/programs/info.nix b/nixos/modules/programs/info.nix
deleted file mode 100644
index 253f9e877693..000000000000
--- a/nixos/modules/programs/info.nix
+++ /dev/null
@@ -1,38 +0,0 @@
-{config, pkgs, ...}:
-
-let
-
-  texinfo = pkgs.texinfoInteractive;
-
-  # Quick hack to make the `info' command work properly.  `info' needs
-  # a "dir" file containing all the installed Info files, which we
-  # don't have (it would be impure to have a package installation
-  # update some global "dir" file).  So this wrapper script around
-  # "info" builds a temporary "dir" file on the fly.  This is a bit
-  # slow (on a cold cache) but not unacceptably so.
-  infoWrapper = pkgs.writeScriptBin "info"
-    ''
-      #! ${pkgs.stdenv.shell}
-
-      dir=$(mktemp --tmpdir -d "info.dir.XXXXXX")
-
-      if test -z "$dir"; then exit 1; fi
-
-      trap 'rm -rf "$dir"' EXIT
-
-      shopt -s nullglob
-
-      for i in $(IFS=:; echo $INFOPATH); do
-          for j in $i/*.info; do
-              ${texinfo}/bin/install-info --quiet $j $dir/dir
-          done
-      done
-
-      INFOPATH=$dir:$INFOPATH ${texinfo}/bin/info "$@"
-    ''; # */
-
-in
-
-{
-  environment.systemPackages = [ infoWrapper texinfo ];
-}