summary refs log tree commit diff
diff options
context:
space:
mode:
authorSimon Žlender <pub.git@zlender.si>2021-01-28 21:28:01 +0100
committerSimon Žlender <pub.git@zlender.si>2021-01-29 18:29:07 +0100
commitede24160fc86c4e73b7439db6e539f4a1e5a4890 (patch)
tree2f71d4ccef27fa2c71398f981965672c1c614d3f
parent683f0b8938fde2da7ad9567d9df622fe5c48491a (diff)
downloadnixpkgs-ede24160fc86c4e73b7439db6e539f4a1e5a4890.tar
nixpkgs-ede24160fc86c4e73b7439db6e539f4a1e5a4890.tar.gz
nixpkgs-ede24160fc86c4e73b7439db6e539f4a1e5a4890.tar.bz2
nixpkgs-ede24160fc86c4e73b7439db6e539f4a1e5a4890.tar.lz
nixpkgs-ede24160fc86c4e73b7439db6e539f4a1e5a4890.tar.xz
nixpkgs-ede24160fc86c4e73b7439db6e539f4a1e5a4890.tar.zst
nixpkgs-ede24160fc86c4e73b7439db6e539f4a1e5a4890.zip
nixos/oci-containers: Remove dep on system.path
-rw-r--r--nixos/modules/virtualisation/oci-containers.nix37
1 files changed, 19 insertions, 18 deletions
diff --git a/nixos/modules/virtualisation/oci-containers.nix b/nixos/modules/virtualisation/oci-containers.nix
index 52c727f3683..2dd15e3aba4 100644
--- a/nixos/modules/virtualisation/oci-containers.nix
+++ b/nixos/modules/virtualisation/oci-containers.nix
@@ -227,29 +227,30 @@ let
         ${cfg.backend} load -i ${container.imageFile}
         ''}
       '';
+
+    script = concatStringsSep " \\\n  " ([
+      "exec ${cfg.backend} run"
+      "--rm"
+      "--name=${escapeShellArg name}"
+      "--log-driver=${container.log-driver}"
+    ] ++ optional (container.entrypoint != null)
+      "--entrypoint=${escapeShellArg container.entrypoint}"
+      ++ (mapAttrsToList (k: v: "-e ${escapeShellArg k}=${escapeShellArg v}") container.environment)
+      ++ map (p: "-p ${escapeShellArg p}") container.ports
+      ++ optional (container.user != null) "-u ${escapeShellArg container.user}"
+      ++ map (v: "-v ${escapeShellArg v}") container.volumes
+      ++ optional (container.workdir != null) "-w ${escapeShellArg container.workdir}"
+      ++ map escapeShellArg container.extraOptions
+      ++ [container.image]
+      ++ map escapeShellArg container.cmd
+    );
+
+    preStop = "[ $SERVICE_RESULT = success ] || ${cfg.backend} stop ${name}";
     postStop = "${cfg.backend} rm -f ${name} || true";
 
     serviceConfig = {
       StandardOutput = "null";
       StandardError = "null";
-      ExecStart = concatStringsSep " \\\n  " ([
-        "${config.system.path}/bin/${cfg.backend} run"
-        "--rm"
-        "--name=${name}"
-        "--log-driver=${container.log-driver}"
-      ] ++ optional (container.entrypoint != null)
-        "--entrypoint=${escapeShellArg container.entrypoint}"
-        ++ (mapAttrsToList (k: v: "-e ${escapeShellArg k}=${escapeShellArg v}") container.environment)
-        ++ map (p: "-p ${escapeShellArg p}") container.ports
-        ++ optional (container.user != null) "-u ${escapeShellArg container.user}"
-        ++ map (v: "-v ${escapeShellArg v}") container.volumes
-        ++ optional (container.workdir != null) "-w ${escapeShellArg container.workdir}"
-        ++ map escapeShellArg container.extraOptions
-        ++ [container.image]
-        ++ map escapeShellArg container.cmd
-      );
-
-      ExecStop = ''${pkgs.bash}/bin/sh -c "[ $SERVICE_RESULT = success ] || ${cfg.backend} stop ${name}"'';
 
       ### There is no generalized way of supporting `reload` for docker
       ### containers. Some containers may respond well to SIGHUP sent to their