forked from jan-leila/nix-config
		
	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