aboutsummaryrefslogtreecommitdiff
path: root/nixpkgs/nixos/modules/misc/documentation.nix
diff options
context:
space:
mode:
Diffstat (limited to 'nixpkgs/nixos/modules/misc/documentation.nix')
-rw-r--r--nixpkgs/nixos/modules/misc/documentation.nix38
1 files changed, 37 insertions, 1 deletions
diff --git a/nixpkgs/nixos/modules/misc/documentation.nix b/nixpkgs/nixos/modules/misc/documentation.nix
index 7ad4be9a02e..71a40b4f4d6 100644
--- a/nixpkgs/nixos/modules/misc/documentation.nix
+++ b/nixpkgs/nixos/modules/misc/documentation.nix
@@ -102,6 +102,16 @@ in
'';
};
+ man.generateCaches = mkOption {
+ type = types.bool;
+ default = false;
+ description = ''
+ Whether to generate the manual page index caches using
+ <literal>mandb(8)</literal>. This allows searching for a page or
+ keyword using utilities like <literal>apropos(1)</literal>.
+ '';
+ };
+
info.enable = mkOption {
type = types.bool;
default = true;
@@ -187,7 +197,33 @@ in
environment.systemPackages = [ pkgs.man-db ];
environment.pathsToLink = [ "/share/man" ];
environment.extraOutputsToInstall = [ "man" ] ++ optional cfg.dev.enable "devman";
- environment.etc."man.conf".source = "${pkgs.man-db}/etc/man_db.conf";
+ environment.etc."man_db.conf".text =
+ let
+ manualPages = pkgs.buildEnv {
+ name = "man-paths";
+ paths = config.environment.systemPackages;
+ pathsToLink = [ "/share/man" ];
+ extraOutputsToInstall = ["man"];
+ ignoreCollisions = true;
+ };
+ manualCache = pkgs.runCommandLocal "man-cache" { }
+ ''
+ echo "MANDB_MAP ${manualPages}/share/man $out" > man.conf
+ ${pkgs.man-db}/bin/mandb -C man.conf -psc
+ '';
+ in
+ ''
+ # Manual pages paths for NixOS
+ MANPATH_MAP /run/current-system/sw/bin /run/current-system/sw/share/man
+ MANPATH_MAP /run/wrappers/bin /run/current-system/sw/share/man
+
+ ${optionalString cfg.man.generateCaches ''
+ # Generated manual pages cache for NixOS (immutable)
+ MANDB_MAP /run/current-system/sw/share/man ${manualCache}
+ ''}
+ # Manual pages caches for NixOS
+ MANDB_MAP /run/current-system/sw/share/man /var/cache/man/nixos
+ '';
})
(mkIf cfg.info.enable {