feat: created filebot cleanup service to run in background
This commit is contained in:
parent
d2be5c7e24
commit
a8dfcb02c8
4 changed files with 89 additions and 11 deletions
|
@ -332,6 +332,11 @@
|
||||||
openFirewall = true;
|
openFirewall = true;
|
||||||
webuiPort = 8084;
|
webuiPort = 8084;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
filebot-cleanup = {
|
||||||
|
enable = true;
|
||||||
|
licenseFile = "/srv/jellyfin/filebot_license.psm";
|
||||||
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
# disable computer sleeping
|
# disable computer sleeping
|
||||||
|
|
|
@ -4,5 +4,6 @@
|
||||||
./hardware-configuration.nix
|
./hardware-configuration.nix
|
||||||
./configuration.nix
|
./configuration.nix
|
||||||
./packages.nix
|
./packages.nix
|
||||||
|
./filebot.nix
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
82
configurations/nixos/defiant/filebot.nix
Normal file
82
configurations/nixos/defiant/filebot.nix
Normal file
|
@ -0,0 +1,82 @@
|
||||||
|
{
|
||||||
|
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";
|
||||||
|
}
|
||||||
|
];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
|
@ -1,19 +1,9 @@
|
||||||
{
|
{pkgs, ...}: {
|
||||||
pkgs,
|
|
||||||
lib,
|
|
||||||
...
|
|
||||||
}: {
|
|
||||||
nixpkgs.config.allowUnfreePredicate = pkg:
|
|
||||||
builtins.elem (lib.getName pkg) [
|
|
||||||
"filebot"
|
|
||||||
];
|
|
||||||
|
|
||||||
environment.systemPackages = with pkgs; [
|
environment.systemPackages = with pkgs; [
|
||||||
ffsubsync
|
ffsubsync
|
||||||
sox
|
sox
|
||||||
yt-dlp
|
yt-dlp
|
||||||
ffmpeg
|
ffmpeg
|
||||||
imagemagick
|
imagemagick
|
||||||
filebot
|
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue