at 23.05-pre 2.6 kB view raw
1{ config, pkgs, lib, ... }: 2 3let 4 cfg = config.documentation.man.man-db; 5in 6 7{ 8 options = { 9 documentation.man.man-db = { 10 enable = lib.mkEnableOption (lib.mdDoc "man-db as the default man page viewer") // { 11 default = config.documentation.man.enable; 12 defaultText = lib.literalExpression "config.documentation.man.enable"; 13 example = false; 14 }; 15 16 manualPages = lib.mkOption { 17 type = lib.types.path; 18 default = pkgs.buildEnv { 19 name = "man-paths"; 20 paths = config.environment.systemPackages; 21 pathsToLink = [ "/share/man" ]; 22 extraOutputsToInstall = [ "man" ] 23 ++ lib.optionals config.documentation.dev.enable [ "devman" ]; 24 ignoreCollisions = true; 25 }; 26 defaultText = lib.literalMD "all man pages in {option}`config.environment.systemPackages`"; 27 description = lib.mdDoc '' 28 The manual pages to generate caches for if {option}`documentation.man.generateCaches` 29 is enabled. Must be a path to a directory with man pages under 30 `/share/man`; see the source for an example. 31 Advanced users can make this a content-addressed derivation to save a few rebuilds. 32 ''; 33 }; 34 35 package = lib.mkOption { 36 type = lib.types.package; 37 default = pkgs.man-db; 38 defaultText = lib.literalExpression "pkgs.man-db"; 39 description = lib.mdDoc '' 40 The `man-db` derivation to use. Useful to override 41 configuration options used for the package. 42 ''; 43 }; 44 }; 45 }; 46 47 imports = [ 48 (lib.mkRenamedOptionModule [ "documentation" "man" "manualPages" ] [ "documentation" "man" "man-db" "manualPages" ]) 49 ]; 50 51 config = lib.mkIf cfg.enable { 52 environment.systemPackages = [ cfg.package ]; 53 environment.etc."man_db.conf".text = 54 let 55 manualCache = pkgs.runCommand "man-cache" { } '' 56 echo "MANDB_MAP ${cfg.manualPages}/share/man $out" > man.conf 57 ${cfg.package}/bin/mandb -C man.conf -psc >/dev/null 2>&1 58 ''; 59 in 60 '' 61 # Manual pages paths for NixOS 62 MANPATH_MAP /run/current-system/sw/bin /run/current-system/sw/share/man 63 MANPATH_MAP /run/wrappers/bin /run/current-system/sw/share/man 64 65 ${lib.optionalString config.documentation.man.generateCaches '' 66 # Generated manual pages cache for NixOS (immutable) 67 MANDB_MAP /run/current-system/sw/share/man ${manualCache} 68 ''} 69 # Manual pages caches for NixOS 70 MANDB_MAP /run/current-system/sw/share/man /var/cache/man/nixos 71 ''; 72 }; 73}