oxidized: switch to tmpfiles

Changed files
+50 -8
nixos
modules
services
admin
+50 -8
nixos/modules/services/admin/oxidized.nix
···
options.services.oxidized = {
enable = lib.mkEnableOption "the oxidized configuration backup service";
+
package = lib.mkPackageOption pkgs "oxidized" { };
+
user = lib.mkOption {
type = lib.types.str;
default = "oxidized";
···
};
routerDB = lib.mkOption {
-
type = lib.types.path;
+
type = lib.types.nullOr lib.types.path;
+
default = null;
example = lib.literalExpression ''
pkgs.writeText "oxidized-router.db" '''
hostname-sw1:powerconnect:username1:password2
···
isSystemUser = true;
};
+
systemd.tmpfiles.settings."10-oxidized" =
+
{
+
"${cfg.dataDir}" = {
+
d = {
+
mode = "0750";
+
user = cfg.user;
+
group = cfg.group;
+
};
+
};
+
+
"${cfg.dataDir}/.config" = {
+
d = {
+
mode = "0750";
+
user = cfg.user;
+
group = cfg.group;
+
};
+
};
+
+
"${cfg.dataDir}/.config/oxidized" = {
+
d = {
+
mode = "0750";
+
user = cfg.user;
+
group = cfg.group;
+
};
+
};
+
+
"${cfg.dataDir}/.config/oxidized/config" = {
+
L = {
+
argument = "${cfg.configFile}";
+
user = cfg.user;
+
group = cfg.group;
+
};
+
};
+
+
}
+
// lib.optionalAttrs (cfg.routerDB != null) {
+
"${cfg.dataDir}/.config/oxidized/router.db" = {
+
L = {
+
argument = "${cfg.routerDB}";
+
user = cfg.user;
+
group = cfg.group;
+
};
+
};
+
};
+
systemd.services.oxidized = {
wantedBy = [ "multi-user.target" ];
after = [ "network.target" ];
-
preStart = ''
-
mkdir -p ${cfg.dataDir}/.config/oxidized
-
ln -f -s ${cfg.routerDB} ${cfg.dataDir}/.config/oxidized/router.db
-
ln -f -s ${cfg.configFile} ${cfg.dataDir}/.config/oxidized/config
-
'';
-
serviceConfig = {
-
ExecStart = "${pkgs.oxidized}/bin/oxidized";
+
ExecStart = lib.getExe cfg.package;
User = cfg.user;
Group = cfg.group;
UMask = "0077";