diff options
author | Franz Pletz <fpletz@fnordicwalking.de> | 2023-10-31 15:53:35 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-10-31 15:53:35 +0100 |
commit | 265ca81834df6adfafa72c63829770aef2833521 (patch) | |
tree | a372eee57ed3dfb8781214267c050063000870b1 /nixos | |
parent | aebf2ca941118c06648f4b9c72c6d939282b1d23 (diff) | |
parent | b7fd022677881ef364859c1c1a54552a470c1f0a (diff) | |
download | nixlib-265ca81834df6adfafa72c63829770aef2833521.tar nixlib-265ca81834df6adfafa72c63829770aef2833521.tar.gz nixlib-265ca81834df6adfafa72c63829770aef2833521.tar.bz2 nixlib-265ca81834df6adfafa72c63829770aef2833521.tar.lz nixlib-265ca81834df6adfafa72c63829770aef2833521.tar.xz nixlib-265ca81834df6adfafa72c63829770aef2833521.tar.zst nixlib-265ca81834df6adfafa72c63829770aef2833521.zip |
Merge pull request #241908 from picnoir/nin/oci-container-pre-start-list
Diffstat (limited to 'nixos')
-rw-r--r-- | nixos/modules/virtualisation/oci-containers.nix | 39 |
1 files changed, 21 insertions, 18 deletions
diff --git a/nixos/modules/virtualisation/oci-containers.nix b/nixos/modules/virtualisation/oci-containers.nix index 71f5d7a752c8..65e97d53724f 100644 --- a/nixos/modules/virtualisation/oci-containers.nix +++ b/nixos/modules/virtualisation/oci-containers.nix @@ -239,6 +239,26 @@ let mkService = name: container: let dependsOn = map (x: "${cfg.backend}-${x}.service") container.dependsOn; escapedName = escapeShellArg name; + preStartScript = pkgs.writeShellApplication { + name = "pre-start"; + runtimeInputs = [ ]; + text = '' + ${cfg.backend} rm -f ${name} || true + ${optionalString (isValidLogin container.login) '' + cat ${container.login.passwordFile} | \ + ${cfg.backend} login \ + ${container.login.registry} \ + --username ${container.login.username} \ + --password-stdin + ''} + ${optionalString (container.imageFile != null) '' + ${cfg.backend} load -i ${container.imageFile} + ''} + ${optionalString (cfg.backend == "podman") '' + rm -f /run/podman-${escapedName}.ctr-id + ''} + ''; + }; in { wantedBy = [] ++ optional (container.autoStart) "multi-user.target"; after = lib.optionals (cfg.backend == "docker") [ "docker.service" "docker.socket" ] @@ -253,23 +273,6 @@ let else if cfg.backend == "podman" then [ config.virtualisation.podman.package ] else throw "Unhandled backend: ${cfg.backend}"; - preStart = '' - ${cfg.backend} rm -f ${name} || true - ${optionalString (isValidLogin container.login) '' - cat ${container.login.passwordFile} | \ - ${cfg.backend} login \ - ${container.login.registry} \ - --username ${container.login.username} \ - --password-stdin - ''} - ${optionalString (container.imageFile != null) '' - ${cfg.backend} load -i ${container.imageFile} - ''} - ${optionalString (cfg.backend == "podman") '' - rm -f /run/podman-${escapedName}.ctr-id - ''} - ''; - script = concatStringsSep " \\\n " ([ "exec ${cfg.backend} run" "--rm" @@ -318,7 +321,7 @@ let ### # ExecReload = ...; ### - + ExecStartPre = [ "${preStartScript}/bin/pre-start" ]; TimeoutStartSec = 0; TimeoutStopSec = 120; Restart = "always"; |