Quadlet-nix units won't start

I migrated from a Raspberry Pi with Ubuntu and Docker containers to a x64 server with NixOS (24.11) and rootless Podman implemented through quadlet-nix earlier this year. I primarily use my server for media consumption through Jellyfin, Audiobookshelf, and some Servarr apps for content management.

The migrations to 25.05 and 25.11 went without issues.

A couple of days ago I updated my system, and after the switch, the services managed with Podman started failing. They all show the following message in the logs:

jellyfin.service: Service has no ExecStart=, ExecStop=, or SuccessAction=. Refusing

Some were still working, so I reverted to the previous commit, but that didn’t solve the problem. Finally, I tried doing a complete server reboot, but that resulted in all the containers stopping working.

This is an example of my container.nix file:

{ config, pkgs, inputs, ... }:

{ 
  # Enable podman qualet containers
  virtualisation.quadlet.enable = true;

  # Podman user for rootless containers
  users.users.poppy = {
        ...
        linger = true;
        ...
        extraGroups = [ "video" "render" "podman" ];
        autoSubUidGidRange = true;
        
  };

  # Rootless podman containers
  home-manager.users.poppy = { pkgs, config, ... }: {
        imports = [ 
          inputs.quadlet-nix.homeManagerModules.quadlet
          inputs.sops-nix.homeManagerModules.sops 
        ];
        
        home ={
          stateVersion = "24.11";
          homeDirectory = "/home/poppy";
        };

        systemd.user.startServices = "sd-switch";

        virtualisation.quadlet = {
      # Enable podman auto-update
          autoUpdate = {
                enable = true;
                # Run auto-update every monday at 02:15
                calendar = "Mon *-*-* 02:15:00";
          };
          autoEscape = true;

      # Define containers
          containers = {
            # Jellyfin media server
            jellyfin = {
                  autoStart = true;                  
                  serviceConfig = {
                    Restart = "unless-stopped";
                    RestartSec = "10";
                  };
                  
                  containerConfig = {
                    image = "ghcr.io/jellyfin/jellyfin:latest";
                    userns ="keep-id";
                    publishPorts = [
                      "8096:8096"       # Web UI HTTP
                      "8920:8920"       # Web UI HTTPS
                      "1900:1900/udp"   # DLNA discovery
                    ];
                    volumes = [
                      "/home/poppy/container/jellyfin/config:/config"
                      "/home/poppy/container/jellyfin/cache:/cache"
                      "/data/media:/media"
                    ];
                    devices = [
                        "/dev/dri/renderD128:/dev/dri/renderD128:rwm" # Add access to the graphics card
                    ];
                    addCapabilities = [ "CAP_SYS_RAWIO" ];
                    autoUpdate = "registry";
                  };
            };

            # Audiobookshelf container
            audiobookshelf = {
              autoStart = true;
              serviceConfig = {
                Restart = "unless-stopped";
                RestartSec = "10";
              };
              containerConfig = {
                image = "ghcr.io/advplyr/audiobookshelf:latest";
                publishPorts = [ "9090:80" ];
                volumes = [
              "/data/media/audiobooks:/audiobooks"
              "/data/media/podcasts:/podcasts"
              "/home/poppy/container/audiobookshelf/config:/config"
              "/home/poppy/container/audiobookshelf/metadata:/metadata"
                ];
                autoUpdate = "registry";
              };
            };

I can’t find what I’m doing wrong

So, for anyone out there having similar troubles, there were some leftover files referenced under /home/poppy/.config/systemd that I was no longer using (and that should not have existed anymore), but the system still had entries for them. This caused the quadlet generator to fail when trying to convert the rest of the quadlet units, and as a result nothing was working. After deleting those files and reloading the systemd daemon, all the containers started working again.

1 Like