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;
|
||||
webuiPort = 8084;
|
||||
};
|
||||
|
||||
filebot-cleanup = {
|
||||
enable = true;
|
||||
licenseFile = "/srv/jellyfin/filebot_license.psm";
|
||||
};
|
||||
};
|
||||
|
||||
# disable computer sleeping
|
||||
|
|
|
@ -4,5 +4,6 @@
|
|||
./hardware-configuration.nix
|
||||
./configuration.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,
|
||||
lib,
|
||||
...
|
||||
}: {
|
||||
nixpkgs.config.allowUnfreePredicate = pkg:
|
||||
builtins.elem (lib.getName pkg) [
|
||||
"filebot"
|
||||
];
|
||||
|
||||
{pkgs, ...}: {
|
||||
environment.systemPackages = with pkgs; [
|
||||
ffsubsync
|
||||
sox
|
||||
yt-dlp
|
||||
ffmpeg
|
||||
imagemagick
|
||||
filebot
|
||||
];
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue