locate: fix update-locatedb
service for mlocate
This fixes the `update-locatedb` service when using the `mlocate` package. The service as-is does not properly handle flags during update of the relevant database when configured to use the `mlocate` package. The man entry for `updatedb` associated with `mlocate` does not say that it supports environment variables in place of command line flags, whereas the `findutils` package's updatedb does so. To support this distinction, we pass the relevant settings as flags to the `updatedb` program when using the `mlocate` package. Fixes #29279
This commit is contained in:
parent
56fb68dcef
commit
1f8382547f
@ -133,13 +133,26 @@ in {
|
|||||||
systemd.services.update-locatedb =
|
systemd.services.update-locatedb =
|
||||||
{ description = "Update Locate Database";
|
{ description = "Update Locate Database";
|
||||||
path = mkIf (!isMLocate) [ pkgs.su ];
|
path = mkIf (!isMLocate) [ pkgs.su ];
|
||||||
|
|
||||||
|
# mlocate's updatedb takes flags via a configuration file or
|
||||||
|
# on the command line, but not by environment variable.
|
||||||
script =
|
script =
|
||||||
|
if isMLocate
|
||||||
|
then let toFlags = x: optional (cfg.${x} != [])
|
||||||
|
"--${lib.toLower x} '${concatStringsSep " " cfg.${x}}'";
|
||||||
|
args = concatLists (map toFlags ["pruneFS" "pruneNames" "prunePaths"]);
|
||||||
|
in ''
|
||||||
|
exec ${cfg.locate}/bin/updatedb \
|
||||||
|
--output ${toString cfg.output} ${concatStringsSep " " args} \
|
||||||
|
--prune-bind-mounts ${if cfg.pruneBindMounts then "yes" else "no"} \
|
||||||
|
${concatStringsSep " " cfg.extraFlags}
|
||||||
''
|
''
|
||||||
|
else ''
|
||||||
exec ${cfg.locate}/bin/updatedb \
|
exec ${cfg.locate}/bin/updatedb \
|
||||||
${optionalString (cfg.localuser != null && ! isMLocate) ''--localuser=${cfg.localuser}''} \
|
${optionalString (cfg.localuser != null && ! isMLocate) ''--localuser=${cfg.localuser}''} \
|
||||||
--output=${toString cfg.output} ${concatStringsSep " " cfg.extraFlags}
|
--output=${toString cfg.output} ${concatStringsSep " " cfg.extraFlags}
|
||||||
'';
|
'';
|
||||||
environment = {
|
environment = optionalAttrs (!isMLocate) {
|
||||||
PRUNEFS = concatStringsSep " " cfg.pruneFS;
|
PRUNEFS = concatStringsSep " " cfg.pruneFS;
|
||||||
PRUNEPATHS = concatStringsSep " " cfg.prunePaths;
|
PRUNEPATHS = concatStringsSep " " cfg.prunePaths;
|
||||||
PRUNENAMES = concatStringsSep " " cfg.pruneNames;
|
PRUNENAMES = concatStringsSep " " cfg.pruneNames;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user