···120 '';
121 };
122123+ man.manualPages = mkOption {
124+ type = types.path;
125+ default = pkgs.buildEnv {
126+ name = "man-paths";
127+ paths = config.environment.systemPackages;
128+ pathsToLink = [ "/share/man" ];
129+ extraOutputsToInstall = ["man"];
130+ ignoreCollisions = true;
131+ };
132+ defaultText = "all man pages in config.environment.systemPackages";
133+ description = ''
134+ The manual pages to generate caches for if <option>generateCaches</option>
135+ is enabled. Must be a path to a directory with man pages under
136+ <literal>/share/man</literal>; see the source for an example.
137+ Advanced users can make this a content-addressed derivation to save a few rebuilds.
138+ '';
139+ };
140+141 info.enable = mkOption {
142 type = types.bool;
143 default = true;
···225 environment.extraOutputsToInstall = [ "man" ] ++ optional cfg.dev.enable "devman";
226 environment.etc."man_db.conf".text =
227 let
228+ manualCache = pkgs.runCommandLocal "man-cache" { } ''
229+ echo "MANDB_MAP ${cfg.man.manualPages}/share/man $out" > man.conf
00000000230 ${pkgs.man-db}/bin/mandb -C man.conf -psc >/dev/null 2>&1
231 '';
232 in