diff --git a/packages/checks/default.nix b/packages/checks/default.nix
index 02b9853..9d29bf2 100644
--- a/packages/checks/default.nix
+++ b/packages/checks/default.nix
@@ -1,8 +1,19 @@
-{ self, ... }:
+{ lib, self, ... }:
{
- perSystem = { filters, pkgs, self', ... }: {
+ perSystem = { filters, pkgs, self', ... }: let
+ fakeCluster = import ../../cluster {
+ inherit lib;
+ hostName = throw "not available in test environment";
+ depot = throw "not available in test environment";
+ };
+ in {
checks = filters.doFilter filters.checks {
+ jellyfin-stateless = pkgs.callPackage ./jellyfin-stateless.nix {
+ inherit (self'.packages) jellyfin;
+ inherit fakeCluster;
+ };
+
keycloak = pkgs.callPackage ./keycloak-custom-jre.nix {
jre = self'.packages.jre17_standard;
};
diff --git a/packages/checks/jellyfin-stateless.nix b/packages/checks/jellyfin-stateless.nix
new file mode 100644
index 0000000..c22e66e
--- /dev/null
+++ b/packages/checks/jellyfin-stateless.nix
@@ -0,0 +1,34 @@
+{ nixosTest, fakeCluster, jellyfin }:
+
+nixosTest {
+ name = "jellyfin-stateless";
+ nodes = {
+ machine = {
+ imports = fakeCluster.config.services.warehouse.nixos.host;
+
+ _module.args.depot.packages.jellyfin = jellyfin;
+ };
+ };
+ testScript = /*python*/ ''
+ def start_jf():
+ machine.succeed("systemctl start jellyfin.service")
+ machine.wait_for_unit("jellyfin.service")
+ machine.wait_for_open_port(8096)
+ machine.wait_until_succeeds("curl --fail http://127.0.0.1:8096")
+
+ def stop_jf():
+ machine.succeed("systemctl stop jellyfin.service")
+
+ machine.wait_for_unit("jellyfin.service")
+
+ start_jf()
+ machine.succeed("sed -i 's,EncoderAppPathDisplay,EncoderAppPath,g' /var/lib/jellyfin/config/encoding.xml")
+ machine.succeed("sed -i 's,.*,/FAKE/bin/ffmpeg,g' /var/lib/jellyfin/config/encoding.xml")
+ stop_jf()
+ start_jf()
+
+ with subtest("should reset to real ffmpeg"):
+ machine.fail("grep -q '/FAKE/bin/ffmpeg' /var/lib/jellyfin/config/encoding.xml")
+ machine.succeed("grep -q '/nix/store/.*/bin/ffmpeg' /var/lib/jellyfin/config/encoding.xml")
+ '';
+}
diff --git a/packages/system-filter.nix b/packages/system-filter.nix
index cd519c6..f2f0f82 100644
--- a/packages/system-filter.nix
+++ b/packages/system-filter.nix
@@ -12,6 +12,7 @@
tempo = [ "x86_64-linux" ];
};
checks = {
+ jellyfin-stateless = [ "x86_64-linux" ];
keycloak = [ "x86_64-linux" ];
patroni = [ "x86_64-linux" ];
searxng = [ "x86_64-linux" ];