nixos/services.flexget: remove with lib;

This commit is contained in:
Felix Buehler 2024-12-29 21:50:40 +01:00
parent 16c697e1e3
commit 2718eb3e96

View file

@ -4,63 +4,60 @@
pkgs, pkgs,
... ...
}: }:
with lib;
let let
cfg = config.services.flexget; cfg = config.services.flexget;
pkg = cfg.package; pkg = cfg.package;
ymlFile = pkgs.writeText "flexget.yml" '' ymlFile = pkgs.writeText "flexget.yml" ''
${cfg.config} ${cfg.config}
${optionalString cfg.systemScheduler "schedules: no"} ${lib.optionalString cfg.systemScheduler "schedules: no"}
''; '';
configFile = "${toString cfg.homeDir}/flexget.yml"; configFile = "${toString cfg.homeDir}/flexget.yml";
in in
{ {
options = { options = {
services.flexget = { services.flexget = {
enable = mkEnableOption "FlexGet daemon"; enable = lib.mkEnableOption "FlexGet daemon";
package = mkPackageOption pkgs "flexget" { }; package = lib.mkPackageOption pkgs "flexget" { };
user = mkOption { user = lib.mkOption {
default = "deluge"; default = "deluge";
example = "some_user"; example = "some_user";
type = types.str; type = lib.types.str;
description = "The user under which to run flexget."; description = "The user under which to run flexget.";
}; };
homeDir = mkOption { homeDir = lib.mkOption {
default = "/var/lib/deluge"; default = "/var/lib/deluge";
example = "/home/flexget"; example = "/home/flexget";
type = types.path; type = lib.types.path;
description = "Where files live."; description = "Where files live.";
}; };
interval = mkOption { interval = lib.mkOption {
default = "10m"; default = "10m";
example = "1h"; example = "1h";
type = types.str; type = lib.types.str;
description = "When to perform a {command}`flexget` run. See {command}`man 7 systemd.time` for the format."; description = "When to perform a {command}`flexget` run. See {command}`man 7 systemd.time` for the format.";
}; };
systemScheduler = mkOption { systemScheduler = lib.mkOption {
default = true; default = true;
example = false; example = false;
type = types.bool; type = lib.types.bool;
description = "When true, execute the runs via the flexget-runner.timer. If false, you have to specify the settings yourself in the YML file."; description = "When true, execute the runs via the flexget-runner.timer. If false, you have to specify the settings yourself in the YML file.";
}; };
config = mkOption { config = lib.mkOption {
default = ""; default = "";
type = types.lines; type = lib.types.lines;
description = "The YAML configuration for FlexGet."; description = "The YAML configuration for FlexGet.";
}; };
}; };
}; };
config = mkIf cfg.enable { config = lib.mkIf cfg.enable {
environment.systemPackages = [ pkg ]; environment.systemPackages = [ pkg ];
@ -81,7 +78,7 @@ in
wantedBy = [ "multi-user.target" ]; wantedBy = [ "multi-user.target" ];
}; };
flexget-runner = mkIf cfg.systemScheduler { flexget-runner = lib.mkIf cfg.systemScheduler {
description = "FlexGet Runner"; description = "FlexGet Runner";
after = [ "flexget.service" ]; after = [ "flexget.service" ];
wants = [ "flexget.service" ]; wants = [ "flexget.service" ];
@ -94,7 +91,7 @@ in
}; };
}; };
systemd.timers.flexget-runner = mkIf cfg.systemScheduler { systemd.timers.flexget-runner = lib.mkIf cfg.systemScheduler {
description = "Run FlexGet every ${cfg.interval}"; description = "Run FlexGet every ${cfg.interval}";
wantedBy = [ "timers.target" ]; wantedBy = [ "timers.target" ];
timerConfig = { timerConfig = {