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.
| Key | Default | Reason |
|---|---|---|
Restart | on-failure | Systemd’s no means containers don’t auto-restart at all. |
RestartSec | 5s | Systemd’s 100ms paired with Restart= produces millisecond-scale restart loops. |
TimeoutStartSec | 900s | Systemd’s 90s is often too short for image pulls or cold-start workloads. |
StartLimitBurst / StartLimitIntervalSec | 3 / 600s | Hard-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-generatorat build time, rather than relying on the systemd generator at boot. The resulting package is added tosystemd.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
PascalCasenames (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
uidper object, Home Manager is not required. - Container images can be supplied as Nix packages via
imageFile(e.g.,pkgs.dockerTools.buildImage) orimageStream(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:
[ ]