It may be possible to revert the move of `documentation.man.manualPages` later. The problem is that other man implementations (mandoc) want to generate their index databases in place, so the approach taken here doesn't translate super well.main
parent
c3f8722baa
commit
6a3d020b90
@ -0,0 +1,63 @@ |
||||
{ config, pkgs, lib, ... }: |
||||
|
||||
let |
||||
cfg = config.documentation.man.man-db; |
||||
in |
||||
|
||||
{ |
||||
options = { |
||||
documentation.man.man-db = { |
||||
enable = lib.mkEnableOption "man-db as the default man page viewer" // { |
||||
default = config.documentation.man.enable; |
||||
defaultText = lib.literalExpression "config.documentation.man.enable"; |
||||
example = false; |
||||
}; |
||||
|
||||
manualPages = lib.mkOption { |
||||
type = lib.types.path; |
||||
default = pkgs.buildEnv { |
||||
name = "man-paths"; |
||||
paths = config.environment.systemPackages; |
||||
pathsToLink = [ "/share/man" ]; |
||||
extraOutputsToInstall = [ "man" ] |
||||
++ lib.optionals config.documentation.dev.enable [ "devman" ]; |
||||
ignoreCollisions = true; |
||||
}; |
||||
defaultText = lib.literalDocBook "all man pages in <option>config.environment.systemPackages</option>"; |
||||
description = '' |
||||
The manual pages to generate caches for if <option>documentation.man.generateCaches</option> |
||||
is enabled. Must be a path to a directory with man pages under |
||||
<literal>/share/man</literal>; see the source for an example. |
||||
Advanced users can make this a content-addressed derivation to save a few rebuilds. |
||||
''; |
||||
}; |
||||
}; |
||||
}; |
||||
|
||||
imports = [ |
||||
(lib.mkRenamedOptionModule [ "documentation" "man" "manualPages" ] [ "documentation" "man" "man-db" "manualPages" ]) |
||||
]; |
||||
|
||||
config = lib.mkIf cfg.enable { |
||||
environment.systemPackages = [ pkgs.man-db ]; |
||||
environment.etc."man_db.conf".text = |
||||
let |
||||
manualCache = pkgs.runCommandLocal "man-cache" { } '' |
||||
echo "MANDB_MAP ${cfg.manualPages}/share/man $out" > man.conf |
||||
${pkgs.man-db}/bin/mandb -C man.conf -psc >/dev/null 2>&1 |
||||
''; |
||||
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 |
||||
|
||||
${lib.optionalString config.documentation.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 |
||||
''; |
||||
}; |
||||
} |
Loading…
Reference in new issue