Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

quadlet-nix

NixOS module for Quadlet / podman-systemd. Inspired by the excellent work of SEIAROTg, but rewritten from scratch. You can get started with the following minimal configuration:

{
  inputs = {
    nixpkgs.url = "github:nixos/nixpkgs/nixpkgs-unstable";
    quadlet-nix = {
      url = "github:mirkolenz/quadlet-nix/v1";
      inputs.nixpkgs.follows = "nixpkgs";
    };
  };
  outputs = { nixpkgs, quadlet-nix, ... }: {
    nixosConfigurations.default = nixpkgs.lib.nixosSystem {
      system = "x86_64-linux";
      modules = [
        quadlet-nix.nixosModules.default
        ({ pkgs, ... }: {
          virtualisation.quadlet.enable = true;
          virtualisation.quadlet.containers = {
            hello-world = {
              containerConfig.Image = "docker.io/library/hello-world:latest";
            };
            nginx = {
              imageStream = pkgs.dockerTools.examples.nginxStream;
            };
          };
        })
      ];
    };
  };
}

All available options are described in the documentation. You may also want to take a look at the tests for more examples.

Quoting values

For keys that hold KEY=VALUE assignments (e.g., Environment, Label, Annotation), use the attrset form so the entries are quoted automatically:

containerConfig.Environment = { TZ = "Europe/Berlin"; };
containerConfig.Label = { description = "My web server"; };

The same result can be expressed via the list form with lib.strings.toJSON, which is useful when an attrset cannot represent the value (e.g., duplicate keys):

containerConfig.Label = [ (lib.strings.toJSON "description=My web server") ];

All other values are written into the unit file verbatim. Whitespace and other special characters are handled by Quadlet itself when it builds the resulting ExecStart= line, so no additional quoting is required.

Restart and rate-limit defaults

For long-running units (.container, .kube, .pod) the module sets a few [Service] / [Unit] keys as lib.mkDefault to replace systemd defaults that are unsafe for containers.

KeyDefaultReason
Restarton-failureSystemd’s no means containers don’t auto-restart at all.
RestartSec5sSystemd’s 100ms paired with Restart= produces millisecond-scale restart loops.
TimeoutStartSec900sSystemd’s 90s is often too short for image pulls or cold-start workloads.
StartLimitBurst / StartLimitIntervalSec3 / 600sHard-fail after 3 restarts in 10 minutes so a broken unit doesn’t loop forever.

The burst limit only fires when (TimeoutStartSec + RestartSec) × StartLimitBurst ≤ StartLimitIntervalSec, which holds for typical fast-starting services. A unit that consistently hangs all the way to TimeoutStartSec will retry indefinitely because each attempt falls outside the rate-limit window. Tighten TimeoutStartSec (or widen StartLimitIntervalSec) downstream when you want hung-start loops to hard-fail.

Overriding the generated unit

Each *Config section passes its keys through verbatim, so any Quadlet key can be set directly under its section using the upstream PascalCase name. For the rare cases this does not cover, two escape hatches are available.

extraConfig is a freeform set of [Section] keys merged over the generated unit and takes precedence, so it can override a value the module sets itself:

# Any [Section], any value, written through with the last word:
extraConfig.Service.TimeoutStartSec = "300";

rawConfig replaces the entire unit file with the given text, bypassing generation completely:

rawConfig = ''
  [Container]
  Image=docker.io/library/hello-world:latest
'';

Comparison to SEIAROTg/quadlet-nix

The two implementations solve the same problem but make different trade-offs. The clearest difference is where unit correctness is checked: this version validates at build time, the original at evaluation time.

Where this version differs

  • Unit files are produced inside a Nix derivation by invoking podman-system-generator / podman-user-generator at build time, rather than relying on the systemd generator at boot. The resulting package is added to systemd.packages. The generator is built from the podman sources with its flag ordering made deterministic, so a regenerated unit only changes when its configuration does and nothing else is restarted on activation.
  • Quadlet keys are passed through verbatim using their original PascalCase names (e.g., containerConfig.Image, containerConfig.PublishPort). The upstream Podman documentation applies directly and new Quadlet keys work without changes to this module.
  • Because the generator runs at build time, podman itself validates the units and the build aborts unless every expected unit is emitted. Errors the generator would otherwise log and skip at boot become hard build failures, checked by the same tool that consumes the units instead of by option types that have to be kept in sync with upstream.
  • Rootless containers are supported directly from the NixOS module by setting a uid per object, Home Manager is not required.
  • Container images can be supplied as Nix packages via imageFile (e.g., pkgs.dockerTools.buildImage) or imageStream (e.g., pkgs.dockerTools.streamLayeredImage).
  • Releases follow semantic versioning with version tags (e.g., v1) for stable pinning and the flake is structured with flake-parts.
  • Long-running units (.container, .kube, .pod) ship with overridable restart and rate-limit settings.

Where the original may suit you better

  • Each Quadlet key is exposed as a dedicated, individually typed and documented option (e.g., containerConfig.publishPorts : listOf str), giving you per-field type checking and inline help.
  • That typing catches structural mistakes earlier, during evaluation rather than at build time, e.g., rejecting Exec = [ "a" "b" ] since Quadlet only honors a single value.
  • Longer track record and a more elaborate README with recipes and comparisons to other tools.

Core

virtualisation.quadlet.enable

Whether to enable quadlet.

Type: boolean

Default:

false

Example:

true

virtualisation.quadlet.package

The package providing the quadlet generator executable

Type: package

Default:

pkgs.callPackage ./pkgs/quadlet.nix { }

virtualisation.quadlet.autoUpdate.enable

Whether to enable quadlet auto update.

Type: boolean

Default:

false

Example:

true

virtualisation.quadlet.autoUpdate.startAt

The time to start the auto update

Type: string

Default:

"*-*-* 00:00:00"

Containers

virtualisation.quadlet.containers

The containers to manage

Type: attribute set of (submodule)

Default:

{ }

virtualisation.quadlet.containers.<name>.enable

Whether to enable the service.

Type: boolean

Default:

true

Example:

true

virtualisation.quadlet.containers.<name>.aliases

The list of aliases for the systemd unit

Type: list of string

Default:

[ ]

virtualisation.quadlet.containers.<name>.autoStart

Whether to enable service auto-start.

Type: boolean

Default:

true

Example:

true

virtualisation.quadlet.containers.<name>.containerConfig

The systemd container configuration (the [Container] section)

See the upstream documentation for all available keys.

Type: attribute set of (systemd option)

Default:

{ }

virtualisation.quadlet.containers.<name>.extraConfig

Additional systemd unit configuration

Type: attribute set of attribute set of (systemd option)

Default:

{ }

virtualisation.quadlet.containers.<name>.imageFile

The image file to load before starting the service

Type: null or package

Default:

null

virtualisation.quadlet.containers.<name>.imageStream

The image stream to load before starting the service

Type: null or package

Default:

null

virtualisation.quadlet.containers.<name>.name

The attribute name used to derive the other names

Type: string

Default:

"‹name›"

virtualisation.quadlet.containers.<name>.podmanName

The name of the podman object

Type: string (read only)

virtualisation.quadlet.containers.<name>.quadletConfig

The systemd quadlet configuration (the [Quadlet] section)

See the upstream documentation for all available keys.

Type: attribute set of (systemd option)

Default:

{ }

virtualisation.quadlet.containers.<name>.rawConfig

Raw systemd unit configuration text

Type: null or strings concatenated with “\n”

Default:

null

virtualisation.quadlet.containers.<name>.ref

The reference of the podman object (i.e., the filename)

Type: string (read only)

virtualisation.quadlet.containers.<name>.requiredBy

The list of systemd targets that require the unit

Type: list of string

Default:

[ ]

virtualisation.quadlet.containers.<name>.serviceConfig

The systemd service configuration

Type: attribute set of (systemd option)

Default:

{ }

virtualisation.quadlet.containers.<name>.serviceName

The name of the systemd service (without the .service suffix)

Type: string (read only)

virtualisation.quadlet.containers.<name>.text

The generated systemd unit file text

Type: string (read only)

virtualisation.quadlet.containers.<name>.uid

The user ID to run the service as.

Type: null or signed integer

Default:

null

Example:

1000

virtualisation.quadlet.containers.<name>.unitConfig

The systemd unit configuration

Type: attribute set of (systemd option)

Default:

{ }

virtualisation.quadlet.containers.<name>.upheldBy

The list of systemd targets that uphold the unit

Type: list of string

Default:

[ ]

virtualisation.quadlet.containers.<name>.wantedBy

The list of systemd targets to install the unit into

Type: list of string

Default:

[ ]

Networks

virtualisation.quadlet.networks

The networks to manage

Type: attribute set of (submodule)

Default:

{ }

virtualisation.quadlet.networks.<name>.enable

Whether to enable the service.

Type: boolean

Default:

true

Example:

true

virtualisation.quadlet.networks.<name>.aliases

The list of aliases for the systemd unit

Type: list of string

Default:

[ ]

virtualisation.quadlet.networks.<name>.autoStart

Whether to enable service auto-start.

Type: boolean

Default:

true

Example:

true

virtualisation.quadlet.networks.<name>.extraConfig

Additional systemd unit configuration

Type: attribute set of attribute set of (systemd option)

Default:

{ }

virtualisation.quadlet.networks.<name>.name

The attribute name used to derive the other names

Type: string

Default:

"‹name›"

virtualisation.quadlet.networks.<name>.networkConfig

The systemd network configuration (the [Network] section)

See the upstream documentation for all available keys.

Type: attribute set of (systemd option)

Default:

{ }

virtualisation.quadlet.networks.<name>.podmanName

The name of the podman object

Type: string (read only)

virtualisation.quadlet.networks.<name>.quadletConfig

The systemd quadlet configuration (the [Quadlet] section)

See the upstream documentation for all available keys.

Type: attribute set of (systemd option)

Default:

{ }

virtualisation.quadlet.networks.<name>.rawConfig

Raw systemd unit configuration text

Type: null or strings concatenated with “\n”

Default:

null

virtualisation.quadlet.networks.<name>.ref

The reference of the podman object (i.e., the filename)

Type: string (read only)

virtualisation.quadlet.networks.<name>.requiredBy

The list of systemd targets that require the unit

Type: list of string

Default:

[ ]

virtualisation.quadlet.networks.<name>.serviceConfig

The systemd service configuration

Type: attribute set of (systemd option)

Default:

{ }

virtualisation.quadlet.networks.<name>.serviceName

The name of the systemd service (without the .service suffix)

Type: string (read only)

virtualisation.quadlet.networks.<name>.text

The generated systemd unit file text

Type: string (read only)

virtualisation.quadlet.networks.<name>.uid

The user ID to run the service as.

Type: null or signed integer

Default:

null

Example:

1000

virtualisation.quadlet.networks.<name>.unitConfig

The systemd unit configuration

Type: attribute set of (systemd option)

Default:

{ }

virtualisation.quadlet.networks.<name>.upheldBy

The list of systemd targets that uphold the unit

Type: list of string

Default:

[ ]

virtualisation.quadlet.networks.<name>.wantedBy

The list of systemd targets to install the unit into

Type: list of string

Default:

[ ]

Pods

virtualisation.quadlet.pods

The pods to manage

Type: attribute set of (submodule)

Default:

{ }

virtualisation.quadlet.pods.<name>.enable

Whether to enable the service.

Type: boolean

Default:

true

Example:

true

virtualisation.quadlet.pods.<name>.aliases

The list of aliases for the systemd unit

Type: list of string

Default:

[ ]

virtualisation.quadlet.pods.<name>.autoStart

Whether to enable service auto-start.

Type: boolean

Default:

true

Example:

true

virtualisation.quadlet.pods.<name>.extraConfig

Additional systemd unit configuration

Type: attribute set of attribute set of (systemd option)

Default:

{ }

virtualisation.quadlet.pods.<name>.name

The attribute name used to derive the other names

Type: string

Default:

"‹name›"

virtualisation.quadlet.pods.<name>.podConfig

The systemd pod configuration (the [Pod] section)

See the upstream documentation for all available keys.

Type: attribute set of (systemd option)

Default:

{ }

virtualisation.quadlet.pods.<name>.podmanName

The name of the podman object

Type: string (read only)

virtualisation.quadlet.pods.<name>.quadletConfig

The systemd quadlet configuration (the [Quadlet] section)

See the upstream documentation for all available keys.

Type: attribute set of (systemd option)

Default:

{ }

virtualisation.quadlet.pods.<name>.rawConfig

Raw systemd unit configuration text

Type: null or strings concatenated with “\n”

Default:

null

virtualisation.quadlet.pods.<name>.ref

The reference of the podman object (i.e., the filename)

Type: string (read only)

virtualisation.quadlet.pods.<name>.requiredBy

The list of systemd targets that require the unit

Type: list of string

Default:

[ ]

virtualisation.quadlet.pods.<name>.serviceConfig

The systemd service configuration

Type: attribute set of (systemd option)

Default:

{ }

virtualisation.quadlet.pods.<name>.serviceName

The name of the systemd service (without the .service suffix)

Type: string (read only)

virtualisation.quadlet.pods.<name>.text

The generated systemd unit file text

Type: string (read only)

virtualisation.quadlet.pods.<name>.uid

The user ID to run the service as.

Type: null or signed integer

Default:

null

Example:

1000

virtualisation.quadlet.pods.<name>.unitConfig

The systemd unit configuration

Type: attribute set of (systemd option)

Default:

{ }

virtualisation.quadlet.pods.<name>.upheldBy

The list of systemd targets that uphold the unit

Type: list of string

Default:

[ ]

virtualisation.quadlet.pods.<name>.wantedBy

The list of systemd targets to install the unit into

Type: list of string

Default:

[ ]

Kubes

virtualisation.quadlet.kubes

The kubes to manage

Type: attribute set of (submodule)

Default:

{ }

virtualisation.quadlet.kubes.<name>.enable

Whether to enable the service.

Type: boolean

Default:

true

Example:

true

virtualisation.quadlet.kubes.<name>.aliases

The list of aliases for the systemd unit

Type: list of string

Default:

[ ]

virtualisation.quadlet.kubes.<name>.autoStart

Whether to enable service auto-start.

Type: boolean

Default:

true

Example:

true

virtualisation.quadlet.kubes.<name>.extraConfig

Additional systemd unit configuration

Type: attribute set of attribute set of (systemd option)

Default:

{ }

virtualisation.quadlet.kubes.<name>.kubeConfig

The systemd kube configuration (the [Kube] section)

See the upstream documentation for all available keys.

Type: attribute set of (systemd option)

Default:

{ }

virtualisation.quadlet.kubes.<name>.name

The attribute name used to derive the other names

Type: string

Default:

"‹name›"

virtualisation.quadlet.kubes.<name>.podmanName

The name of the podman object

Type: string (read only)

virtualisation.quadlet.kubes.<name>.quadletConfig

The systemd quadlet configuration (the [Quadlet] section)

See the upstream documentation for all available keys.

Type: attribute set of (systemd option)

Default:

{ }

virtualisation.quadlet.kubes.<name>.rawConfig

Raw systemd unit configuration text

Type: null or strings concatenated with “\n”

Default:

null

virtualisation.quadlet.kubes.<name>.ref

The reference of the podman object (i.e., the filename)

Type: string (read only)

virtualisation.quadlet.kubes.<name>.requiredBy

The list of systemd targets that require the unit

Type: list of string

Default:

[ ]

virtualisation.quadlet.kubes.<name>.serviceConfig

The systemd service configuration

Type: attribute set of (systemd option)

Default:

{ }

virtualisation.quadlet.kubes.<name>.serviceName

The name of the systemd service (without the .service suffix)

Type: string (read only)

virtualisation.quadlet.kubes.<name>.text

The generated systemd unit file text

Type: string (read only)

virtualisation.quadlet.kubes.<name>.uid

The user ID to run the service as.

Type: null or signed integer

Default:

null

Example:

1000

virtualisation.quadlet.kubes.<name>.unitConfig

The systemd unit configuration

Type: attribute set of (systemd option)

Default:

{ }

virtualisation.quadlet.kubes.<name>.upheldBy

The list of systemd targets that uphold the unit

Type: list of string

Default:

[ ]

virtualisation.quadlet.kubes.<name>.wantedBy

The list of systemd targets to install the unit into

Type: list of string

Default:

[ ]

Volumes

virtualisation.quadlet.volumes

The volumes to manage

Type: attribute set of (submodule)

Default:

{ }

virtualisation.quadlet.volumes.<name>.enable

Whether to enable the service.

Type: boolean

Default:

true

Example:

true

virtualisation.quadlet.volumes.<name>.aliases

The list of aliases for the systemd unit

Type: list of string

Default:

[ ]

virtualisation.quadlet.volumes.<name>.autoStart

Whether to enable service auto-start.

Type: boolean

Default:

true

Example:

true

virtualisation.quadlet.volumes.<name>.extraConfig

Additional systemd unit configuration

Type: attribute set of attribute set of (systemd option)

Default:

{ }

virtualisation.quadlet.volumes.<name>.name

The attribute name used to derive the other names

Type: string

Default:

"‹name›"

virtualisation.quadlet.volumes.<name>.podmanName

The name of the podman object

Type: string (read only)

virtualisation.quadlet.volumes.<name>.quadletConfig

The systemd quadlet configuration (the [Quadlet] section)

See the upstream documentation for all available keys.

Type: attribute set of (systemd option)

Default:

{ }

virtualisation.quadlet.volumes.<name>.rawConfig

Raw systemd unit configuration text

Type: null or strings concatenated with “\n”

Default:

null

virtualisation.quadlet.volumes.<name>.ref

The reference of the podman object (i.e., the filename)

Type: string (read only)

virtualisation.quadlet.volumes.<name>.requiredBy

The list of systemd targets that require the unit

Type: list of string

Default:

[ ]

virtualisation.quadlet.volumes.<name>.serviceConfig

The systemd service configuration

Type: attribute set of (systemd option)

Default:

{ }

virtualisation.quadlet.volumes.<name>.serviceName

The name of the systemd service (without the .service suffix)

Type: string (read only)

virtualisation.quadlet.volumes.<name>.text

The generated systemd unit file text

Type: string (read only)

virtualisation.quadlet.volumes.<name>.uid

The user ID to run the service as.

Type: null or signed integer

Default:

null

Example:

1000

virtualisation.quadlet.volumes.<name>.unitConfig

The systemd unit configuration

Type: attribute set of (systemd option)

Default:

{ }

virtualisation.quadlet.volumes.<name>.upheldBy

The list of systemd targets that uphold the unit

Type: list of string

Default:

[ ]

virtualisation.quadlet.volumes.<name>.volumeConfig

The systemd volume configuration (the [Volume] section)

See the upstream documentation for all available keys.

Type: attribute set of (systemd option)

Default:

{ }

virtualisation.quadlet.volumes.<name>.wantedBy

The list of systemd targets to install the unit into

Type: list of string

Default:

[ ]

Builds

virtualisation.quadlet.builds

The builds to manage

Type: attribute set of (submodule)

Default:

{ }

virtualisation.quadlet.builds.<name>.enable

Whether to enable the service.

Type: boolean

Default:

true

Example:

true

virtualisation.quadlet.builds.<name>.aliases

The list of aliases for the systemd unit

Type: list of string

Default:

[ ]

virtualisation.quadlet.builds.<name>.autoStart

Whether to enable service auto-start.

Type: boolean

Default:

true

Example:

true

virtualisation.quadlet.builds.<name>.buildConfig

The systemd build configuration (the [Build] section)

See the upstream documentation for all available keys.

Type: attribute set of (systemd option)

Default:

{ }

virtualisation.quadlet.builds.<name>.extraConfig

Additional systemd unit configuration

Type: attribute set of attribute set of (systemd option)

Default:

{ }

virtualisation.quadlet.builds.<name>.name

The attribute name used to derive the other names

Type: string

Default:

"‹name›"

virtualisation.quadlet.builds.<name>.podmanName

The name of the podman object

Type: string (read only)

virtualisation.quadlet.builds.<name>.quadletConfig

The systemd quadlet configuration (the [Quadlet] section)

See the upstream documentation for all available keys.

Type: attribute set of (systemd option)

Default:

{ }

virtualisation.quadlet.builds.<name>.rawConfig

Raw systemd unit configuration text

Type: null or strings concatenated with “\n”

Default:

null

virtualisation.quadlet.builds.<name>.ref

The reference of the podman object (i.e., the filename)

Type: string (read only)

virtualisation.quadlet.builds.<name>.requiredBy

The list of systemd targets that require the unit

Type: list of string

Default:

[ ]

virtualisation.quadlet.builds.<name>.serviceConfig

The systemd service configuration

Type: attribute set of (systemd option)

Default:

{ }

virtualisation.quadlet.builds.<name>.serviceName

The name of the systemd service (without the .service suffix)

Type: string (read only)

virtualisation.quadlet.builds.<name>.text

The generated systemd unit file text

Type: string (read only)

virtualisation.quadlet.builds.<name>.uid

The user ID to run the service as.

Type: null or signed integer

Default:

null

Example:

1000

virtualisation.quadlet.builds.<name>.unitConfig

The systemd unit configuration

Type: attribute set of (systemd option)

Default:

{ }

virtualisation.quadlet.builds.<name>.upheldBy

The list of systemd targets that uphold the unit

Type: list of string

Default:

[ ]

virtualisation.quadlet.builds.<name>.wantedBy

The list of systemd targets to install the unit into

Type: list of string

Default:

[ ]

Images

virtualisation.quadlet.images

The images to manage

Type: attribute set of (submodule)

Default:

{ }

virtualisation.quadlet.images.<name>.enable

Whether to enable the service.

Type: boolean

Default:

true

Example:

true

virtualisation.quadlet.images.<name>.aliases

The list of aliases for the systemd unit

Type: list of string

Default:

[ ]

virtualisation.quadlet.images.<name>.autoStart

Whether to enable service auto-start.

Type: boolean

Default:

true

Example:

true

virtualisation.quadlet.images.<name>.extraConfig

Additional systemd unit configuration

Type: attribute set of attribute set of (systemd option)

Default:

{ }

virtualisation.quadlet.images.<name>.imageConfig

The systemd image configuration (the [Image] section)

See the upstream documentation for all available keys.

Type: attribute set of (systemd option)

Default:

{ }

virtualisation.quadlet.images.<name>.name

The attribute name used to derive the other names

Type: string

Default:

"‹name›"

virtualisation.quadlet.images.<name>.podmanName

The name of the podman object

Type: string (read only)

virtualisation.quadlet.images.<name>.quadletConfig

The systemd quadlet configuration (the [Quadlet] section)

See the upstream documentation for all available keys.

Type: attribute set of (systemd option)

Default:

{ }

virtualisation.quadlet.images.<name>.rawConfig

Raw systemd unit configuration text

Type: null or strings concatenated with “\n”

Default:

null

virtualisation.quadlet.images.<name>.ref

The reference of the podman object (i.e., the filename)

Type: string (read only)

virtualisation.quadlet.images.<name>.requiredBy

The list of systemd targets that require the unit

Type: list of string

Default:

[ ]

virtualisation.quadlet.images.<name>.serviceConfig

The systemd service configuration

Type: attribute set of (systemd option)

Default:

{ }

virtualisation.quadlet.images.<name>.serviceName

The name of the systemd service (without the .service suffix)

Type: string (read only)

virtualisation.quadlet.images.<name>.text

The generated systemd unit file text

Type: string (read only)

virtualisation.quadlet.images.<name>.uid

The user ID to run the service as.

Type: null or signed integer

Default:

null

Example:

1000

virtualisation.quadlet.images.<name>.unitConfig

The systemd unit configuration

Type: attribute set of (systemd option)

Default:

{ }

virtualisation.quadlet.images.<name>.upheldBy

The list of systemd targets that uphold the unit

Type: list of string

Default:

[ ]

virtualisation.quadlet.images.<name>.wantedBy

The list of systemd targets to install the unit into

Type: list of string

Default:

[ ]

Artifacts

virtualisation.quadlet.artifacts

The artifacts to manage

Type: attribute set of (submodule)

Default:

{ }

virtualisation.quadlet.artifacts.<name>.enable

Whether to enable the service.

Type: boolean

Default:

true

Example:

true

virtualisation.quadlet.artifacts.<name>.aliases

The list of aliases for the systemd unit

Type: list of string

Default:

[ ]

virtualisation.quadlet.artifacts.<name>.artifactConfig

The systemd artifact configuration (the [Artifact] section)

WARNING: Experimental Unit. This unit is considered experimental and still in development. Inputs, options, and outputs are all subject to change.

See the upstream documentation for all available keys.

Type: attribute set of (systemd option)

Default:

{ }

virtualisation.quadlet.artifacts.<name>.autoStart

Whether to enable service auto-start.

Type: boolean

Default:

true

Example:

true

virtualisation.quadlet.artifacts.<name>.extraConfig

Additional systemd unit configuration

Type: attribute set of attribute set of (systemd option)

Default:

{ }

virtualisation.quadlet.artifacts.<name>.name

The attribute name used to derive the other names

Type: string

Default:

"‹name›"

virtualisation.quadlet.artifacts.<name>.podmanName

The name of the podman object

Type: string (read only)

virtualisation.quadlet.artifacts.<name>.quadletConfig

The systemd quadlet configuration (the [Quadlet] section)

See the upstream documentation for all available keys.

Type: attribute set of (systemd option)

Default:

{ }

virtualisation.quadlet.artifacts.<name>.rawConfig

Raw systemd unit configuration text

Type: null or strings concatenated with “\n”

Default:

null

virtualisation.quadlet.artifacts.<name>.ref

The reference of the podman object (i.e., the filename)

Type: string (read only)

virtualisation.quadlet.artifacts.<name>.requiredBy

The list of systemd targets that require the unit

Type: list of string

Default:

[ ]

virtualisation.quadlet.artifacts.<name>.serviceConfig

The systemd service configuration

Type: attribute set of (systemd option)

Default:

{ }

virtualisation.quadlet.artifacts.<name>.serviceName

The name of the systemd service (without the .service suffix)

Type: string (read only)

virtualisation.quadlet.artifacts.<name>.text

The generated systemd unit file text

Type: string (read only)

virtualisation.quadlet.artifacts.<name>.uid

The user ID to run the service as.

Type: null or signed integer

Default:

null

Example:

1000

virtualisation.quadlet.artifacts.<name>.unitConfig

The systemd unit configuration

Type: attribute set of (systemd option)

Default:

{ }

virtualisation.quadlet.artifacts.<name>.upheldBy

The list of systemd targets that uphold the unit

Type: list of string

Default:

[ ]

virtualisation.quadlet.artifacts.<name>.wantedBy

The list of systemd targets to install the unit into

Type: list of string

Default:

[ ]

Core

virtualisation.quadlet.enable

Whether to enable quadlet.

Type: boolean

Default:

false

Example:

true

virtualisation.quadlet.package

The package providing the quadlet generator executable

Type: package

Default:

pkgs.callPackage ./pkgs/quadlet.nix { }

virtualisation.quadlet.autoUpdate.enable

Whether to enable quadlet auto update.

Type: boolean

Default:

false

Example:

true

virtualisation.quadlet.autoUpdate.startAt

The time to start the auto update

Type: string

Default:

"*-*-* 00:00:00"

Containers

virtualisation.quadlet.containers

The containers to manage

Type: attribute set of (submodule)

Default:

{ }

virtualisation.quadlet.containers.<name>.enable

Whether to enable the service.

Type: boolean

Default:

true

Example:

true

virtualisation.quadlet.containers.<name>.aliases

The list of aliases for the systemd unit

Type: list of string

Default:

[ ]

virtualisation.quadlet.containers.<name>.autoStart

Whether to enable service auto-start.

Type: boolean

Default:

true

Example:

true

virtualisation.quadlet.containers.<name>.containerConfig

The systemd container configuration (the [Container] section)

See the upstream documentation for all available keys.

Type: attribute set of (systemd option)

Default:

{ }

virtualisation.quadlet.containers.<name>.extraConfig

Additional systemd unit configuration

Type: attribute set of attribute set of (systemd option)

Default:

{ }

virtualisation.quadlet.containers.<name>.imageFile

The image file to load before starting the service

Type: null or package

Default:

null

virtualisation.quadlet.containers.<name>.imageStream

The image stream to load before starting the service

Type: null or package

Default:

null

virtualisation.quadlet.containers.<name>.name

The attribute name used to derive the other names

Type: string

Default:

"‹name›"

virtualisation.quadlet.containers.<name>.podmanName

The name of the podman object

Type: string (read only)

virtualisation.quadlet.containers.<name>.quadletConfig

The systemd quadlet configuration (the [Quadlet] section)

See the upstream documentation for all available keys.

Type: attribute set of (systemd option)

Default:

{ }

virtualisation.quadlet.containers.<name>.rawConfig

Raw systemd unit configuration text

Type: null or strings concatenated with “\n”

Default:

null

virtualisation.quadlet.containers.<name>.ref

The reference of the podman object (i.e., the filename)

Type: string (read only)

virtualisation.quadlet.containers.<name>.requiredBy

The list of systemd targets that require the unit

Type: list of string

Default:

[ ]

virtualisation.quadlet.containers.<name>.serviceConfig

The systemd service configuration

Type: attribute set of (systemd option)

Default:

{ }

virtualisation.quadlet.containers.<name>.serviceName

The name of the systemd service (without the .service suffix)

Type: string (read only)

virtualisation.quadlet.containers.<name>.text

The generated systemd unit file text

Type: string (read only)

virtualisation.quadlet.containers.<name>.unitConfig

The systemd unit configuration

Type: attribute set of (systemd option)

Default:

{ }

virtualisation.quadlet.containers.<name>.upheldBy

The list of systemd targets that uphold the unit

Type: list of string

Default:

[ ]

virtualisation.quadlet.containers.<name>.wantedBy

The list of systemd targets to install the unit into

Type: list of string

Default:

[ ]

Networks

virtualisation.quadlet.networks

The networks to manage

Type: attribute set of (submodule)

Default:

{ }

virtualisation.quadlet.networks.<name>.enable

Whether to enable the service.

Type: boolean

Default:

true

Example:

true

virtualisation.quadlet.networks.<name>.aliases

The list of aliases for the systemd unit

Type: list of string

Default:

[ ]

virtualisation.quadlet.networks.<name>.autoStart

Whether to enable service auto-start.

Type: boolean

Default:

true

Example:

true

virtualisation.quadlet.networks.<name>.extraConfig

Additional systemd unit configuration

Type: attribute set of attribute set of (systemd option)

Default:

{ }

virtualisation.quadlet.networks.<name>.name

The attribute name used to derive the other names

Type: string

Default:

"‹name›"

virtualisation.quadlet.networks.<name>.networkConfig

The systemd network configuration (the [Network] section)

See the upstream documentation for all available keys.

Type: attribute set of (systemd option)

Default:

{ }

virtualisation.quadlet.networks.<name>.podmanName

The name of the podman object

Type: string (read only)

virtualisation.quadlet.networks.<name>.quadletConfig

The systemd quadlet configuration (the [Quadlet] section)

See the upstream documentation for all available keys.

Type: attribute set of (systemd option)

Default:

{ }

virtualisation.quadlet.networks.<name>.rawConfig

Raw systemd unit configuration text

Type: null or strings concatenated with “\n”

Default:

null

virtualisation.quadlet.networks.<name>.ref

The reference of the podman object (i.e., the filename)

Type: string (read only)

virtualisation.quadlet.networks.<name>.requiredBy

The list of systemd targets that require the unit

Type: list of string

Default:

[ ]

virtualisation.quadlet.networks.<name>.serviceConfig

The systemd service configuration

Type: attribute set of (systemd option)

Default:

{ }

virtualisation.quadlet.networks.<name>.serviceName

The name of the systemd service (without the .service suffix)

Type: string (read only)

virtualisation.quadlet.networks.<name>.text

The generated systemd unit file text

Type: string (read only)

virtualisation.quadlet.networks.<name>.unitConfig

The systemd unit configuration

Type: attribute set of (systemd option)

Default:

{ }

virtualisation.quadlet.networks.<name>.upheldBy

The list of systemd targets that uphold the unit

Type: list of string

Default:

[ ]

virtualisation.quadlet.networks.<name>.wantedBy

The list of systemd targets to install the unit into

Type: list of string

Default:

[ ]

Pods

virtualisation.quadlet.pods

The pods to manage

Type: attribute set of (submodule)

Default:

{ }

virtualisation.quadlet.pods.<name>.enable

Whether to enable the service.

Type: boolean

Default:

true

Example:

true

virtualisation.quadlet.pods.<name>.aliases

The list of aliases for the systemd unit

Type: list of string

Default:

[ ]

virtualisation.quadlet.pods.<name>.autoStart

Whether to enable service auto-start.

Type: boolean

Default:

true

Example:

true

virtualisation.quadlet.pods.<name>.extraConfig

Additional systemd unit configuration

Type: attribute set of attribute set of (systemd option)

Default:

{ }

virtualisation.quadlet.pods.<name>.name

The attribute name used to derive the other names

Type: string

Default:

"‹name›"

virtualisation.quadlet.pods.<name>.podConfig

The systemd pod configuration (the [Pod] section)

See the upstream documentation for all available keys.

Type: attribute set of (systemd option)

Default:

{ }

virtualisation.quadlet.pods.<name>.podmanName

The name of the podman object

Type: string (read only)

virtualisation.quadlet.pods.<name>.quadletConfig

The systemd quadlet configuration (the [Quadlet] section)

See the upstream documentation for all available keys.

Type: attribute set of (systemd option)

Default:

{ }

virtualisation.quadlet.pods.<name>.rawConfig

Raw systemd unit configuration text

Type: null or strings concatenated with “\n”

Default:

null

virtualisation.quadlet.pods.<name>.ref

The reference of the podman object (i.e., the filename)

Type: string (read only)

virtualisation.quadlet.pods.<name>.requiredBy

The list of systemd targets that require the unit

Type: list of string

Default:

[ ]

virtualisation.quadlet.pods.<name>.serviceConfig

The systemd service configuration

Type: attribute set of (systemd option)

Default:

{ }

virtualisation.quadlet.pods.<name>.serviceName

The name of the systemd service (without the .service suffix)

Type: string (read only)

virtualisation.quadlet.pods.<name>.text

The generated systemd unit file text

Type: string (read only)

virtualisation.quadlet.pods.<name>.unitConfig

The systemd unit configuration

Type: attribute set of (systemd option)

Default:

{ }

virtualisation.quadlet.pods.<name>.upheldBy

The list of systemd targets that uphold the unit

Type: list of string

Default:

[ ]

virtualisation.quadlet.pods.<name>.wantedBy

The list of systemd targets to install the unit into

Type: list of string

Default:

[ ]

Kubes

virtualisation.quadlet.kubes

The kubes to manage

Type: attribute set of (submodule)

Default:

{ }

virtualisation.quadlet.kubes.<name>.enable

Whether to enable the service.

Type: boolean

Default:

true

Example:

true

virtualisation.quadlet.kubes.<name>.aliases

The list of aliases for the systemd unit

Type: list of string

Default:

[ ]

virtualisation.quadlet.kubes.<name>.autoStart

Whether to enable service auto-start.

Type: boolean

Default:

true

Example:

true

virtualisation.quadlet.kubes.<name>.extraConfig

Additional systemd unit configuration

Type: attribute set of attribute set of (systemd option)

Default:

{ }

virtualisation.quadlet.kubes.<name>.kubeConfig

The systemd kube configuration (the [Kube] section)

See the upstream documentation for all available keys.

Type: attribute set of (systemd option)

Default:

{ }

virtualisation.quadlet.kubes.<name>.name

The attribute name used to derive the other names

Type: string

Default:

"‹name›"

virtualisation.quadlet.kubes.<name>.podmanName

The name of the podman object

Type: string (read only)

virtualisation.quadlet.kubes.<name>.quadletConfig

The systemd quadlet configuration (the [Quadlet] section)

See the upstream documentation for all available keys.

Type: attribute set of (systemd option)

Default:

{ }

virtualisation.quadlet.kubes.<name>.rawConfig

Raw systemd unit configuration text

Type: null or strings concatenated with “\n”

Default:

null

virtualisation.quadlet.kubes.<name>.ref

The reference of the podman object (i.e., the filename)

Type: string (read only)

virtualisation.quadlet.kubes.<name>.requiredBy

The list of systemd targets that require the unit

Type: list of string

Default:

[ ]

virtualisation.quadlet.kubes.<name>.serviceConfig

The systemd service configuration

Type: attribute set of (systemd option)

Default:

{ }

virtualisation.quadlet.kubes.<name>.serviceName

The name of the systemd service (without the .service suffix)

Type: string (read only)

virtualisation.quadlet.kubes.<name>.text

The generated systemd unit file text

Type: string (read only)

virtualisation.quadlet.kubes.<name>.unitConfig

The systemd unit configuration

Type: attribute set of (systemd option)

Default:

{ }

virtualisation.quadlet.kubes.<name>.upheldBy

The list of systemd targets that uphold the unit

Type: list of string

Default:

[ ]

virtualisation.quadlet.kubes.<name>.wantedBy

The list of systemd targets to install the unit into

Type: list of string

Default:

[ ]

Volumes

virtualisation.quadlet.volumes

The volumes to manage

Type: attribute set of (submodule)

Default:

{ }

virtualisation.quadlet.volumes.<name>.enable

Whether to enable the service.

Type: boolean

Default:

true

Example:

true

virtualisation.quadlet.volumes.<name>.aliases

The list of aliases for the systemd unit

Type: list of string

Default:

[ ]

virtualisation.quadlet.volumes.<name>.autoStart

Whether to enable service auto-start.

Type: boolean

Default:

true

Example:

true

virtualisation.quadlet.volumes.<name>.extraConfig

Additional systemd unit configuration

Type: attribute set of attribute set of (systemd option)

Default:

{ }

virtualisation.quadlet.volumes.<name>.name

The attribute name used to derive the other names

Type: string

Default:

"‹name›"

virtualisation.quadlet.volumes.<name>.podmanName

The name of the podman object

Type: string (read only)

virtualisation.quadlet.volumes.<name>.quadletConfig

The systemd quadlet configuration (the [Quadlet] section)

See the upstream documentation for all available keys.

Type: attribute set of (systemd option)

Default:

{ }

virtualisation.quadlet.volumes.<name>.rawConfig

Raw systemd unit configuration text

Type: null or strings concatenated with “\n”

Default:

null

virtualisation.quadlet.volumes.<name>.ref

The reference of the podman object (i.e., the filename)

Type: string (read only)

virtualisation.quadlet.volumes.<name>.requiredBy

The list of systemd targets that require the unit

Type: list of string

Default:

[ ]

virtualisation.quadlet.volumes.<name>.serviceConfig

The systemd service configuration

Type: attribute set of (systemd option)

Default:

{ }

virtualisation.quadlet.volumes.<name>.serviceName

The name of the systemd service (without the .service suffix)

Type: string (read only)

virtualisation.quadlet.volumes.<name>.text

The generated systemd unit file text

Type: string (read only)

virtualisation.quadlet.volumes.<name>.unitConfig

The systemd unit configuration

Type: attribute set of (systemd option)

Default:

{ }

virtualisation.quadlet.volumes.<name>.upheldBy

The list of systemd targets that uphold the unit

Type: list of string

Default:

[ ]

virtualisation.quadlet.volumes.<name>.volumeConfig

The systemd volume configuration (the [Volume] section)

See the upstream documentation for all available keys.

Type: attribute set of (systemd option)

Default:

{ }

virtualisation.quadlet.volumes.<name>.wantedBy

The list of systemd targets to install the unit into

Type: list of string

Default:

[ ]

Builds

virtualisation.quadlet.builds

The builds to manage

Type: attribute set of (submodule)

Default:

{ }

virtualisation.quadlet.builds.<name>.enable

Whether to enable the service.

Type: boolean

Default:

true

Example:

true

virtualisation.quadlet.builds.<name>.aliases

The list of aliases for the systemd unit

Type: list of string

Default:

[ ]

virtualisation.quadlet.builds.<name>.autoStart

Whether to enable service auto-start.

Type: boolean

Default:

true

Example:

true

virtualisation.quadlet.builds.<name>.buildConfig

The systemd build configuration (the [Build] section)

See the upstream documentation for all available keys.

Type: attribute set of (systemd option)

Default:

{ }

virtualisation.quadlet.builds.<name>.extraConfig

Additional systemd unit configuration

Type: attribute set of attribute set of (systemd option)

Default:

{ }

virtualisation.quadlet.builds.<name>.name

The attribute name used to derive the other names

Type: string

Default:

"‹name›"

virtualisation.quadlet.builds.<name>.podmanName

The name of the podman object

Type: string (read only)

virtualisation.quadlet.builds.<name>.quadletConfig

The systemd quadlet configuration (the [Quadlet] section)

See the upstream documentation for all available keys.

Type: attribute set of (systemd option)

Default:

{ }

virtualisation.quadlet.builds.<name>.rawConfig

Raw systemd unit configuration text

Type: null or strings concatenated with “\n”

Default:

null

virtualisation.quadlet.builds.<name>.ref

The reference of the podman object (i.e., the filename)

Type: string (read only)

virtualisation.quadlet.builds.<name>.requiredBy

The list of systemd targets that require the unit

Type: list of string

Default:

[ ]

virtualisation.quadlet.builds.<name>.serviceConfig

The systemd service configuration

Type: attribute set of (systemd option)

Default:

{ }

virtualisation.quadlet.builds.<name>.serviceName

The name of the systemd service (without the .service suffix)

Type: string (read only)

virtualisation.quadlet.builds.<name>.text

The generated systemd unit file text

Type: string (read only)

virtualisation.quadlet.builds.<name>.unitConfig

The systemd unit configuration

Type: attribute set of (systemd option)

Default:

{ }

virtualisation.quadlet.builds.<name>.upheldBy

The list of systemd targets that uphold the unit

Type: list of string

Default:

[ ]

virtualisation.quadlet.builds.<name>.wantedBy

The list of systemd targets to install the unit into

Type: list of string

Default:

[ ]

Images

virtualisation.quadlet.images

The images to manage

Type: attribute set of (submodule)

Default:

{ }

virtualisation.quadlet.images.<name>.enable

Whether to enable the service.

Type: boolean

Default:

true

Example:

true

virtualisation.quadlet.images.<name>.aliases

The list of aliases for the systemd unit

Type: list of string

Default:

[ ]

virtualisation.quadlet.images.<name>.autoStart

Whether to enable service auto-start.

Type: boolean

Default:

true

Example:

true

virtualisation.quadlet.images.<name>.extraConfig

Additional systemd unit configuration

Type: attribute set of attribute set of (systemd option)

Default:

{ }

virtualisation.quadlet.images.<name>.imageConfig

The systemd image configuration (the [Image] section)

See the upstream documentation for all available keys.

Type: attribute set of (systemd option)

Default:

{ }

virtualisation.quadlet.images.<name>.name

The attribute name used to derive the other names

Type: string

Default:

"‹name›"

virtualisation.quadlet.images.<name>.podmanName

The name of the podman object

Type: string (read only)

virtualisation.quadlet.images.<name>.quadletConfig

The systemd quadlet configuration (the [Quadlet] section)

See the upstream documentation for all available keys.

Type: attribute set of (systemd option)

Default:

{ }

virtualisation.quadlet.images.<name>.rawConfig

Raw systemd unit configuration text

Type: null or strings concatenated with “\n”

Default:

null

virtualisation.quadlet.images.<name>.ref

The reference of the podman object (i.e., the filename)

Type: string (read only)

virtualisation.quadlet.images.<name>.requiredBy

The list of systemd targets that require the unit

Type: list of string

Default:

[ ]

virtualisation.quadlet.images.<name>.serviceConfig

The systemd service configuration

Type: attribute set of (systemd option)

Default:

{ }

virtualisation.quadlet.images.<name>.serviceName

The name of the systemd service (without the .service suffix)

Type: string (read only)

virtualisation.quadlet.images.<name>.text

The generated systemd unit file text

Type: string (read only)

virtualisation.quadlet.images.<name>.unitConfig

The systemd unit configuration

Type: attribute set of (systemd option)

Default:

{ }

virtualisation.quadlet.images.<name>.upheldBy

The list of systemd targets that uphold the unit

Type: list of string

Default:

[ ]

virtualisation.quadlet.images.<name>.wantedBy

The list of systemd targets to install the unit into

Type: list of string

Default:

[ ]

Artifacts

virtualisation.quadlet.artifacts

The artifacts to manage

Type: attribute set of (submodule)

Default:

{ }

virtualisation.quadlet.artifacts.<name>.enable

Whether to enable the service.

Type: boolean

Default:

true

Example:

true

virtualisation.quadlet.artifacts.<name>.aliases

The list of aliases for the systemd unit

Type: list of string

Default:

[ ]

virtualisation.quadlet.artifacts.<name>.artifactConfig

The systemd artifact configuration (the [Artifact] section)

WARNING: Experimental Unit. This unit is considered experimental and still in development. Inputs, options, and outputs are all subject to change.

See the upstream documentation for all available keys.

Type: attribute set of (systemd option)

Default:

{ }

virtualisation.quadlet.artifacts.<name>.autoStart

Whether to enable service auto-start.

Type: boolean

Default:

true

Example:

true

virtualisation.quadlet.artifacts.<name>.extraConfig

Additional systemd unit configuration

Type: attribute set of attribute set of (systemd option)

Default:

{ }

virtualisation.quadlet.artifacts.<name>.name

The attribute name used to derive the other names

Type: string

Default:

"‹name›"

virtualisation.quadlet.artifacts.<name>.podmanName

The name of the podman object

Type: string (read only)

virtualisation.quadlet.artifacts.<name>.quadletConfig

The systemd quadlet configuration (the [Quadlet] section)

See the upstream documentation for all available keys.

Type: attribute set of (systemd option)

Default:

{ }

virtualisation.quadlet.artifacts.<name>.rawConfig

Raw systemd unit configuration text

Type: null or strings concatenated with “\n”

Default:

null

virtualisation.quadlet.artifacts.<name>.ref

The reference of the podman object (i.e., the filename)

Type: string (read only)

virtualisation.quadlet.artifacts.<name>.requiredBy

The list of systemd targets that require the unit

Type: list of string

Default:

[ ]

virtualisation.quadlet.artifacts.<name>.serviceConfig

The systemd service configuration

Type: attribute set of (systemd option)

Default:

{ }

virtualisation.quadlet.artifacts.<name>.serviceName

The name of the systemd service (without the .service suffix)

Type: string (read only)

virtualisation.quadlet.artifacts.<name>.text

The generated systemd unit file text

Type: string (read only)

virtualisation.quadlet.artifacts.<name>.unitConfig

The systemd unit configuration

Type: attribute set of (systemd option)

Default:

{ }

virtualisation.quadlet.artifacts.<name>.upheldBy

The list of systemd targets that uphold the unit

Type: list of string

Default:

[ ]

virtualisation.quadlet.artifacts.<name>.wantedBy

The list of systemd targets to install the unit into

Type: list of string

Default:

[ ]