82 lines
2.3 KiB
Nix
82 lines
2.3 KiB
Nix
{
|
|
config,
|
|
lib,
|
|
pkgs,
|
|
...
|
|
}:
|
|
with lib; let
|
|
cfg = config.services.filebot-cleanup;
|
|
in {
|
|
options.services.filebot-cleanup = {
|
|
enable = mkEnableOption "Filebot cleanup service";
|
|
|
|
licenseFile = mkOption {
|
|
type = types.nullOr types.path;
|
|
default = null;
|
|
description = "Path to the Filebot license file";
|
|
};
|
|
|
|
cleanupDirectory = mkOption {
|
|
type = types.str;
|
|
default = "/srv/jellyfin/filebot_cleanup";
|
|
description = "Directory where cleaned up media files are stored";
|
|
};
|
|
};
|
|
|
|
config = mkIf cfg.enable {
|
|
users.groups.filebot_cleanup = {};
|
|
users.users.filebot_cleanup = {
|
|
isSystemUser = true;
|
|
group = "filebot_cleanup";
|
|
extraGroups = ["jellyfin_media"];
|
|
home = cfg.cleanupDirectory;
|
|
createHome = true;
|
|
};
|
|
|
|
nixpkgs.config.allowUnfreePredicate = pkg:
|
|
builtins.elem (lib.getName pkg) [
|
|
"filebot"
|
|
];
|
|
|
|
environment.systemPackages = with pkgs; [
|
|
filebot
|
|
];
|
|
|
|
systemd.services.filebot-cleanup = {
|
|
description = "Filebot media cleanup service";
|
|
serviceConfig = {
|
|
Type = "simple";
|
|
User = "filebot_cleanup";
|
|
Group = "filebot_cleanup";
|
|
ExecStart = pkgs.writeShellScript "filebot-cleanup" ''
|
|
${optionalString (cfg.licenseFile != null) ''
|
|
${pkgs.filebot}/bin/filebot --license "${cfg.licenseFile}"
|
|
''}
|
|
${pkgs.filebot}/bin/filebot -rename -r "/srv/jellyfin/media/Movies/" --output "${cfg.cleanupDirectory}/" --format "{jellyfin}" -non-strict --action move
|
|
${pkgs.filebot}/bin/filebot -rename -r "/srv/jellyfin/media/Shows/" --output "${cfg.cleanupDirectory}/" --format "{jellyfin}" -non-strict --action move
|
|
'';
|
|
StandardOutput = "journal";
|
|
StandardError = "journal";
|
|
};
|
|
wantedBy = ["multi-user.target"];
|
|
};
|
|
|
|
environment.persistence = lib.mkIf config.host.impermanence.enable {
|
|
"/persist/system/filebot_cleanup" = {
|
|
enable = true;
|
|
hideMounts = true;
|
|
files = [
|
|
cfg.licenseFile
|
|
];
|
|
directories = [
|
|
{
|
|
directory = cfg.cleanupDirectory;
|
|
user = "filebot_cleanup";
|
|
group = "filebot_cleanup";
|
|
mode = "1770";
|
|
}
|
|
];
|
|
};
|
|
};
|
|
};
|
|
}
|