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.
64 lines
2.3 KiB
Nix
64 lines
2.3 KiB
Nix
{ 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
|
|
'';
|
|
};
|
|
}
|