summary refs log tree commit diff
diff options
context:
space:
mode:
authormisuzu <bakalolka@gmail.com>2021-06-10 23:19:08 +0300
committertomberek <tomberek@users.noreply.github.com>2021-06-11 11:48:49 -0400
commitad502ab5c59a49eaf0c92f90201dffd4255a005a (patch)
treebd2cf2d32240d0841538b2b55f1f3f1604669eff
parent5707a8efadbd9a2bfe5aa663555c62ba2933cc81 (diff)
downloadnixpkgs-ad502ab5c59a49eaf0c92f90201dffd4255a005a.tar
nixpkgs-ad502ab5c59a49eaf0c92f90201dffd4255a005a.tar.gz
nixpkgs-ad502ab5c59a49eaf0c92f90201dffd4255a005a.tar.bz2
nixpkgs-ad502ab5c59a49eaf0c92f90201dffd4255a005a.tar.lz
nixpkgs-ad502ab5c59a49eaf0c92f90201dffd4255a005a.tar.xz
nixpkgs-ad502ab5c59a49eaf0c92f90201dffd4255a005a.tar.zst
nixpkgs-ad502ab5c59a49eaf0c92f90201dffd4255a005a.zip
nixos/sourcehut: automatically build and import qemu image for docker
-rw-r--r--nixos/modules/services/misc/sourcehut/builds.nix16
1 files changed, 15 insertions, 1 deletions
diff --git a/nixos/modules/services/misc/sourcehut/builds.nix b/nixos/modules/services/misc/sourcehut/builds.nix
index e228665784e..a17a1010dbf 100644
--- a/nixos/modules/services/misc/sourcehut/builds.nix
+++ b/nixos/modules/services/misc/sourcehut/builds.nix
@@ -48,7 +48,6 @@ in
       default = false;
       description = ''
         Run workers for builds.sr.ht.
-        Perform manually on machine: `cd ${scfg.statePath}/images; docker build -t qemu -f qemu/Dockerfile .`
       '';
     };
 
@@ -161,6 +160,21 @@ in
           partOf = [ "buildsrht.service" ];
           description = "builds.sr.ht worker service";
           path = [ pkgs.openssh pkgs.docker ];
+          preStart = let qemuPackage = pkgs.qemu_kvm;
+          in ''
+            if [[ "$(docker images -q qemu:latest 2> /dev/null)" == "" || "$(cat ${statePath}/docker-image-qemu 2> /dev/null || true)" != "${qemuPackage.version}" ]]; then
+              # Create and import qemu:latest image for docker
+              ${
+                pkgs.dockerTools.streamLayeredImage {
+                  name = "qemu";
+                  tag = "latest";
+                  contents = [ qemuPackage ];
+                }
+              } | docker load
+              # Mark down current package version
+              printf "%s" "${qemuPackage.version}" > ${statePath}/docker-image-qemu
+            fi
+          '';
           serviceConfig = {
             Type = "simple";
             User = user;