Initial version of a declarative fcron
This commit is contained in:
parent
820dc58edf
commit
72a510c26b
|
@ -123,7 +123,13 @@ rec {
|
|||
};
|
||||
|
||||
fcron = {
|
||||
pkg = constructors.fcron {};
|
||||
pkg = constructors.declarativeFcron {
|
||||
fcrontabPerUser = {
|
||||
systab = ''
|
||||
@ 1 echo hello >> /tmp/hello
|
||||
'';
|
||||
};
|
||||
};
|
||||
|
||||
requiresUniqueIdsFor = [ "uids" "gids" ];
|
||||
};
|
||||
|
|
|
@ -63,7 +63,12 @@ in
|
|||
|
||||
fcron = import ./fcron {
|
||||
inherit createManagedProcess stateDir spoolDir runtimeDir tmpDir forceDisableUserChange;
|
||||
inherit (pkgs) writeTextFile fcron;
|
||||
inherit (pkgs) lib writeTextFile fcron;
|
||||
};
|
||||
|
||||
declarativeFcron = import ./fcron/declarative.nix {
|
||||
inherit createManagedProcess stateDir spoolDir runtimeDir tmpDir forceDisableUserChange;
|
||||
inherit (pkgs) lib writeTextFile fcron;
|
||||
};
|
||||
|
||||
hydra-evaluator = import ./hydra/hydra-evaluator.nix {
|
||||
|
|
|
@ -0,0 +1,32 @@
|
|||
{createManagedProcess, writeTextFile, lib, fcron, stateDir, runtimeDir, tmpDir, spoolDir, forceDisableUserChange}:
|
||||
|
||||
{ instanceSuffix ? ""
|
||||
, instanceName ? "fcron${instanceSuffix}"
|
||||
, initialize ? ""
|
||||
, fcrontabPerUser
|
||||
}:
|
||||
|
||||
let
|
||||
fcronSpoolDir = "${spoolDir}/${instanceName}";
|
||||
in
|
||||
import ./default.nix {
|
||||
inherit createManagedProcess writeTextFile lib fcron stateDir runtimeDir tmpDir spoolDir forceDisableUserChange;
|
||||
} {
|
||||
inherit instanceSuffix instanceName;
|
||||
|
||||
initialize = ''
|
||||
${lib.concatMapStrings (user:
|
||||
let
|
||||
fcrontab = builtins.getAttr user fcrontabPerUser;
|
||||
fcrontabFile = writeTextFile {
|
||||
name = "fcrontab-${user}";
|
||||
text = fcrontab;
|
||||
};
|
||||
in
|
||||
''
|
||||
cp ${fcrontabFile} ${fcronSpoolDir}/${user}.orig
|
||||
''
|
||||
) (builtins.attrNames fcrontabPerUser)}
|
||||
${initialize}
|
||||
'';
|
||||
}
|
|
@ -1,5 +1,5 @@
|
|||
{createManagedProcess, writeTextFile, fcron, stateDir, runtimeDir, tmpDir, spoolDir, forceDisableUserChange}:
|
||||
{instanceSuffix ? "", instanceName ? "fcron${instanceSuffix}"}:
|
||||
{createManagedProcess, writeTextFile, lib, fcron, stateDir, runtimeDir, tmpDir, spoolDir, forceDisableUserChange}:
|
||||
{instanceSuffix ? "", instanceName ? "fcron${instanceSuffix}", initialize ? ""}:
|
||||
|
||||
let
|
||||
fcronSpoolDir = "${spoolDir}/${instanceName}";
|
||||
|
@ -24,11 +24,19 @@ in
|
|||
createManagedProcess {
|
||||
name = instanceName;
|
||||
inherit instanceName;
|
||||
|
||||
initialize = ''
|
||||
mkdir -p ${fcronSpoolDir}
|
||||
mkdir -p ${fcronEtcDir}
|
||||
cp ${configFile} ${fcronEtcDir}/fcron.conf
|
||||
chmod 644 ${fcronEtcDir}/fcron.conf
|
||||
${lib.optionalString (!forceDisableUserChange) ''
|
||||
chown root:${group} ${fcronEtcDir}/fcron.conf
|
||||
''}
|
||||
${initialize}
|
||||
'';
|
||||
|
||||
process = "${fcron}/bin/fcron";
|
||||
args = [ "--configfile" configFile ];
|
||||
args = [ "--configfile" "${fcronEtcDir}/fcron.conf" ];
|
||||
foregroundProcessExtraArgs = [ "--foreground" "--nosyslog" ];
|
||||
daemonExtraArgs = [ "--background" ];
|
||||
|
||||
|
@ -39,6 +47,8 @@ createManagedProcess {
|
|||
users = {
|
||||
"${user}" = {
|
||||
inherit group;
|
||||
homeDir = fcronSpoolDir;
|
||||
createHomeDir = true;
|
||||
description = "Fcron user";
|
||||
};
|
||||
};
|
||||
|
|
Loading…
Reference in New Issue