82 lines
1.7 KiB
Nix
82 lines
1.7 KiB
Nix
{
|
|
config,
|
|
pkgs,
|
|
lib,
|
|
...
|
|
}: let
|
|
inherit (lib) concatStringsSep getName mkIf;
|
|
|
|
baseCfg = config.roles.base;
|
|
cfg = config.services.locate;
|
|
|
|
locateGroup = getName cfg.package.name;
|
|
|
|
locate = "${cfg.package}/bin/locate";
|
|
updatedb = "${cfg.package}/bin/updatedb";
|
|
|
|
database = "/var/lib/locate/locatedb";
|
|
pruneFS = concatStringsSep " " cfg.pruneFS;
|
|
pruneNames = concatStringsSep " " cfg.pruneNames;
|
|
prunePaths = concatStringsSep " " cfg.prunePaths;
|
|
|
|
updatedbBin = ''
|
|
${updatedb} -o ${database} --prunefs "${pruneFS}" \
|
|
--prunepaths "${prunePaths}" --prunenames "${pruneNames}"
|
|
'';
|
|
in
|
|
mkIf (baseCfg.enable) {
|
|
users.users.${baseCfg.user}.extraGroups = [
|
|
locateGroup
|
|
];
|
|
|
|
# TODO: add timer
|
|
systemd.services.locate = {
|
|
wantedBy = ["default.target"];
|
|
serviceConfig = {
|
|
User = baseCfg.user;
|
|
Group = locateGroup;
|
|
StateDirectory = "locate";
|
|
StateDirectoryMode = "0770";
|
|
ExecStart = updatedbBin;
|
|
};
|
|
};
|
|
|
|
home-manager.users.${baseCfg.user}.programs.bash.shellAliases = {
|
|
locate = "${pkgs.writeShellScriptBin "lct" ''
|
|
exec ${locate} -d ${database} "$@" 2> >(grep -v "/var/cache/locatedb")
|
|
''}/bin/lct";
|
|
|
|
updatedb = updatedbBin;
|
|
};
|
|
|
|
services.locate = {
|
|
enable = true;
|
|
package = pkgs.mlocate;
|
|
localuser = null;
|
|
interval = "never";
|
|
|
|
prunePaths = [
|
|
"/var/lib/flatpak"
|
|
|
|
# Defaults
|
|
"/tmp"
|
|
"/var/tmp"
|
|
"/var/cache"
|
|
"/var/lock"
|
|
"/var/run"
|
|
"/var/spool"
|
|
"/nix/var/log/nix"
|
|
];
|
|
|
|
pruneNames = [
|
|
"node_modules"
|
|
|
|
# Defaults
|
|
".bzr"
|
|
".cache"
|
|
".git"
|
|
".hg"
|
|
".svn"
|
|
];
|
|
};
|
|
}
|