at master 1.6 kB view raw
1{ lib, config, ... }: 2 3{ 4 name = "prowlarr"; 5 meta.maintainers = with lib.maintainers; [ ]; 6 7 nodes.machine = 8 { pkgs, ... }: 9 { 10 services.prowlarr.enable = true; 11 specialisation.customDataDir = { 12 inheritParentConfig = true; 13 configuration.services.prowlarr.dataDir = "/srv/prowlarr"; 14 }; 15 }; 16 17 testScript = '' 18 def verify_prowlarr_works(): 19 machine.wait_for_unit("prowlarr.service") 20 machine.wait_for_open_port(9696) 21 response = machine.succeed("curl --fail http://localhost:9696/") 22 assert '<title>Prowlarr</title>' in response, "Login page didn't load successfully" 23 machine.succeed("[ -d /var/lib/prowlarr ]") 24 25 with subtest("Prowlarr starts and responds to requests"): 26 verify_prowlarr_works() 27 28 with subtest("Prowlarr data directory migration works"): 29 machine.systemctl("stop prowlarr.service") 30 machine.succeed("mkdir -p /tmp/prowlarr-migration") 31 machine.succeed("rsync -a -delete /var/lib/prowlarr/ /tmp/prowlarr-migration") 32 machine.succeed("${config.nodes.machine.system.build.toplevel}/specialisation/customDataDir/bin/switch-to-configuration test") 33 machine.wait_for_unit("var-lib-private-prowlarr.mount") 34 machine.succeed("rsync -a -delete /tmp/prowlarr-migration/ /var/lib/prowlarr") 35 machine.systemctl("restart prowlarr.service") 36 # Check that we're using a bind mount when using a non-default dataDir 37 machine.succeed("findmnt /var/lib/private/prowlarr | grep /srv/prowlarr") 38 verify_prowlarr_works() 39 ''; 40}