mirror of
https://github.com/NixOS/nixpkgs.git
synced 2025-06-19 16:09:19 +03:00

After final improvements to the official formatter implementation, this commit now performs the first treewide reformat of Nix files using it. This is part of the implementation of RFC 166. Only "inactive" files are reformatted, meaning only files that aren't being touched by any PR with activity in the past 2 months. This is to avoid conflicts for PRs that might soon be merged. Later we can do a full treewide reformat to get the rest, which should not cause as many conflicts. A CI check has already been running for some time to ensure that new and already-formatted files are formatted, so the files being reformatted here should also stay formatted. This commit was automatically created and can be verified using nix-builda08b3a4d19
.tar.gz \ --argstr baseRevb32a094368
result/bin/apply-formatting $NIXPKGS_PATH
119 lines
2.6 KiB
Nix
119 lines
2.6 KiB
Nix
{
|
|
config,
|
|
lib,
|
|
pkgs,
|
|
...
|
|
}:
|
|
|
|
with lib;
|
|
|
|
let
|
|
|
|
cfg = config.services.atd;
|
|
|
|
inherit (pkgs) at;
|
|
|
|
in
|
|
|
|
{
|
|
|
|
###### interface
|
|
|
|
options = {
|
|
|
|
services.atd.enable = mkOption {
|
|
type = types.bool;
|
|
default = false;
|
|
description = ''
|
|
Whether to enable the {command}`at` daemon, a command scheduler.
|
|
'';
|
|
};
|
|
|
|
services.atd.allowEveryone = mkOption {
|
|
type = types.bool;
|
|
default = false;
|
|
description = ''
|
|
Whether to make {file}`/var/spool/at{jobs,spool}`
|
|
writeable by everyone (and sticky). This is normally not
|
|
needed since the {command}`at` commands are
|
|
setuid/setgid `atd`.
|
|
'';
|
|
};
|
|
|
|
};
|
|
|
|
###### implementation
|
|
|
|
config = mkIf cfg.enable {
|
|
|
|
# Not wrapping "batch" because it's a shell script (kernel drops perms
|
|
# anyway) and it's patched to invoke the "at" setuid wrapper.
|
|
security.wrappers = builtins.listToAttrs (
|
|
map
|
|
(program: {
|
|
name = "${program}";
|
|
value = {
|
|
source = "${at}/bin/${program}";
|
|
owner = "atd";
|
|
group = "atd";
|
|
setuid = true;
|
|
setgid = true;
|
|
};
|
|
})
|
|
[
|
|
"at"
|
|
"atq"
|
|
"atrm"
|
|
]
|
|
);
|
|
|
|
environment.systemPackages = [ at ];
|
|
|
|
security.pam.services.atd = { };
|
|
|
|
users.users.atd = {
|
|
uid = config.ids.uids.atd;
|
|
group = "atd";
|
|
description = "atd user";
|
|
home = "/var/empty";
|
|
};
|
|
|
|
users.groups.atd.gid = config.ids.gids.atd;
|
|
|
|
systemd.services.atd = {
|
|
description = "Job Execution Daemon (atd)";
|
|
wantedBy = [ "multi-user.target" ];
|
|
|
|
path = [ at ];
|
|
|
|
preStart = ''
|
|
# Snippets taken and adapted from the original `install' rule of
|
|
# the makefile.
|
|
|
|
# We assume these values are those actually used in Nixpkgs for
|
|
# `at'.
|
|
spooldir=/var/spool/atspool
|
|
jobdir=/var/spool/atjobs
|
|
etcdir=/etc/at
|
|
|
|
install -dm755 -o atd -g atd "$etcdir"
|
|
spool_and_job_dir_perms=${if cfg.allowEveryone then "1777" else "1770"}
|
|
install -dm"$spool_and_job_dir_perms" -o atd -g atd "$spooldir" "$jobdir"
|
|
if [ ! -f "$etcdir"/at.deny ]; then
|
|
touch "$etcdir"/at.deny
|
|
chown root:atd "$etcdir"/at.deny
|
|
chmod 640 "$etcdir"/at.deny
|
|
fi
|
|
if [ ! -f "$jobdir"/.SEQ ]; then
|
|
touch "$jobdir"/.SEQ
|
|
chown atd:atd "$jobdir"/.SEQ
|
|
chmod 600 "$jobdir"/.SEQ
|
|
fi
|
|
'';
|
|
|
|
script = "atd";
|
|
|
|
serviceConfig.Type = "forking";
|
|
};
|
|
};
|
|
}
|