Update the locate database using a systemd service
This makes it easier to update the database manually ("systemctl start update-locatedb"). Also, use modern module syntax.
This commit is contained in:
parent
fc2fc63f4c
commit
ce866184c6
@ -1,60 +1,62 @@
|
|||||||
{pkgs, config, ...}:
|
{ config, pkgs, ... }:
|
||||||
|
|
||||||
|
with pkgs.lib;
|
||||||
|
|
||||||
###### interface
|
|
||||||
let
|
let
|
||||||
inherit (pkgs.lib) mkOption;
|
|
||||||
|
|
||||||
options = {
|
|
||||||
services = {
|
|
||||||
locate = {
|
|
||||||
|
|
||||||
enable = mkOption {
|
|
||||||
default = false;
|
|
||||||
example = true;
|
|
||||||
description = ''
|
|
||||||
If enabled, NixOS will periodically update the database of
|
|
||||||
files used by the <command>locate</command> command.
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
|
|
||||||
period = mkOption {
|
|
||||||
default = "15 02 * * *";
|
|
||||||
description = ''
|
|
||||||
This option defines (in the format used by cron) when the
|
|
||||||
locate database is updated.
|
|
||||||
The default is to update at 02:15 (at night) every day.
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
|
|
||||||
};
|
|
||||||
|
|
||||||
};
|
|
||||||
};
|
|
||||||
in
|
|
||||||
|
|
||||||
###### implementation
|
|
||||||
let
|
|
||||||
locatedb = "/var/cache/locatedb";
|
locatedb = "/var/cache/locatedb";
|
||||||
|
|
||||||
updatedbCmd =
|
|
||||||
"${config.services.locate.period} root " +
|
|
||||||
"mkdir -m 0755 -p $(dirname ${locatedb}) && " +
|
|
||||||
"nice -n 19 ${pkgs.utillinux}/bin/ionice -c 3 " +
|
|
||||||
"updatedb --localuser=nobody --output=${locatedb} > /var/log/updatedb 2>&1";
|
|
||||||
in
|
in
|
||||||
|
|
||||||
{
|
{
|
||||||
require = [
|
|
||||||
# ../../upstart-jobs/cron.nix # config.services.cron
|
|
||||||
options
|
|
||||||
];
|
|
||||||
|
|
||||||
services = {
|
###### interface
|
||||||
cron = {
|
|
||||||
systemCronJobs =
|
options = {
|
||||||
pkgs.lib.optional
|
|
||||||
config.services.locate.enable
|
services.locate = {
|
||||||
updatedbCmd;
|
|
||||||
|
enable = mkOption {
|
||||||
|
default = false;
|
||||||
|
example = true;
|
||||||
|
description = ''
|
||||||
|
If enabled, NixOS will periodically update the database of
|
||||||
|
files used by the <command>locate</command> command.
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
|
period = mkOption {
|
||||||
|
default = "15 02 * * *";
|
||||||
|
description = ''
|
||||||
|
This option defines (in the format used by cron) when the
|
||||||
|
locate database is updated.
|
||||||
|
The default is to update at 02:15 (at night) every day.
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
###### implementation
|
||||||
|
|
||||||
|
config = {
|
||||||
|
|
||||||
|
systemd.services.update-locatedb =
|
||||||
|
{ description = "Update Locate Database";
|
||||||
|
path = [ pkgs.su ];
|
||||||
|
script =
|
||||||
|
''
|
||||||
|
mkdir -m 0755 -p $(dirname ${locatedb})
|
||||||
|
exec updatedb --localuser=nobody --output=${locatedb}
|
||||||
|
'';
|
||||||
|
serviceConfig.Nice = 19;
|
||||||
|
serviceConfig.IOSchedulingClass = "idle";
|
||||||
|
};
|
||||||
|
|
||||||
|
services.cron.systemCronJobs = optional config.services.locate.enable
|
||||||
|
"${config.services.locate.period} root ${config.systemd.package}/bin/systemctl start update-locatedb.service";
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user