nixos/sourcehut: automatically build and import qemu image for docker

authored by misuzu.tngl.sh and committed by tomberek ad502ab5 5707a8ef

+15 -1
+15 -1
nixos/modules/services/misc/sourcehut/builds.nix
··· 48 default = false; 49 description = '' 50 Run workers for builds.sr.ht. 51 - Perform manually on machine: `cd ${scfg.statePath}/images; docker build -t qemu -f qemu/Dockerfile .` 52 ''; 53 }; 54 ··· 161 partOf = [ "buildsrht.service" ]; 162 description = "builds.sr.ht worker service"; 163 path = [ pkgs.openssh pkgs.docker ]; 164 serviceConfig = { 165 Type = "simple"; 166 User = user;
··· 48 default = false; 49 description = '' 50 Run workers for builds.sr.ht. 51 ''; 52 }; 53 ··· 160 partOf = [ "buildsrht.service" ]; 161 description = "builds.sr.ht worker service"; 162 path = [ pkgs.openssh pkgs.docker ]; 163 + preStart = let qemuPackage = pkgs.qemu_kvm; 164 + in '' 165 + if [[ "$(docker images -q qemu:latest 2> /dev/null)" == "" || "$(cat ${statePath}/docker-image-qemu 2> /dev/null || true)" != "${qemuPackage.version}" ]]; then 166 + # Create and import qemu:latest image for docker 167 + ${ 168 + pkgs.dockerTools.streamLayeredImage { 169 + name = "qemu"; 170 + tag = "latest"; 171 + contents = [ qemuPackage ]; 172 + } 173 + } | docker load 174 + # Mark down current package version 175 + printf "%s" "${qemuPackage.version}" > ${statePath}/docker-image-qemu 176 + fi 177 + ''; 178 serviceConfig = { 179 Type = "simple"; 180 User = user;