about summary refs log tree commit diff
diff options
context:
space:
mode:
authorRobert Hensing <roberth@users.noreply.github.com>2023-10-24 14:34:29 +0200
committerGitHub <noreply@github.com>2023-10-24 14:34:29 +0200
commit5dfc78a8ad75612c6cf6e3d3d5dd4c814956c289 (patch)
tree5ad196eacb07ab2fe481ef66fbc4455278d66e7c
parenteb4559b1d650029e2afb7679c4a3e26aac0ff490 (diff)
parentab1f45f3d3b12a2e2809bea0a18e2b4b873e1810 (diff)
Merge pull request #262021 from Enzime/linux-builder-cross
linux-builder: support `x86_64-linux` on `aarch64`
-rw-r--r--nixos/lib/qemu-common.nix1
-rw-r--r--nixos/modules/virtualisation/qemu-vm.nix4
-rw-r--r--pkgs/top-level/darwin-packages.nix12
3 files changed, 14 insertions, 3 deletions
diff --git a/nixos/lib/qemu-common.nix b/nixos/lib/qemu-common.nix
index 4fff2e0a6f15e..b946f62d93dc3 100644
--- a/nixos/lib/qemu-common.nix
+++ b/nixos/lib/qemu-common.nix
@@ -40,6 +40,7 @@ rec {
       otherHostGuestMatrix = {
         aarch64-darwin = {
           aarch64-linux = "${qemuPkg}/bin/qemu-system-aarch64 -machine virt,gic-version=2,accel=hvf:tcg -cpu max";
+          inherit (otherHostGuestMatrix.x86_64-darwin) x86_64-linux;
         };
         x86_64-darwin = {
           x86_64-linux = "${qemuPkg}/bin/qemu-system-x86_64 -machine type=q35,accel=hvf:tcg -cpu max";
diff --git a/nixos/modules/virtualisation/qemu-vm.nix b/nixos/modules/virtualisation/qemu-vm.nix
index 55d23b6fb8b5d..e625c6322d9c6 100644
--- a/nixos/modules/virtualisation/qemu-vm.nix
+++ b/nixos/modules/virtualisation/qemu-vm.nix
@@ -690,8 +690,8 @@ in
       package =
         mkOption {
           type = types.package;
-          default = hostPkgs.qemu_kvm;
-          defaultText = literalExpression "config.virtualisation.host.pkgs.qemu_kvm";
+          default = if hostPkgs.stdenv.hostPlatform.qemuArch == pkgs.stdenv.hostPlatform.qemuArch then hostPkgs.qemu_kvm else hostPkgs.qemu;
+          defaultText = literalExpression "if hostPkgs.stdenv.hostPlatform.qemuArch == pkgs.stdenv.hostPlatform.qemuArch then config.virtualisation.host.pkgs.qemu_kvm else config.virtualisation.host.pkgs.qemu";
           example = literalExpression "pkgs.qemu_test";
           description = lib.mdDoc "QEMU package to use.";
         };
diff --git a/pkgs/top-level/darwin-packages.nix b/pkgs/top-level/darwin-packages.nix
index ed049340332c6..bc35b20656976 100644
--- a/pkgs/top-level/darwin-packages.nix
+++ b/pkgs/top-level/darwin-packages.nix
@@ -233,15 +233,25 @@ impure-cmds // appleSourcePackages // chooseLibs // {
             ../../nixos/modules/profiles/macos-builder.nix
           ] ++ modules;
 
+          # If you need to override this, consider starting with the right Nixpkgs
+          # in the first place, ie change `pkgs` in `pkgs.darwin.linux-builder`.
+          # or if you're creating new wiring that's not `pkgs`-centric, perhaps use the
+          # macos-builder profile directly.
           virtualisation.host = { inherit pkgs; };
+
+          nixpkgs.hostPlatform = lib.mkDefault (toGuest stdenv.hostPlatform.system);
         };
 
-        system = toGuest stdenv.hostPlatform.system;
+        system = null;
       };
 
     in
       nixos.config.system.build.macos-builder-installer) { modules = [ ]; };
 
+  linux-builder-x86_64 = self.linux-builder.override {
+    modules = [ { nixpkgs.hostPlatform = "x86_64-linux"; } ];
+  };
+
 } // lib.optionalAttrs config.allowAliases {
   builder = throw "'darwin.builder' has been changed and renamed to 'darwin.linux-builder'. The default ssh port is now 31022. Please update your configuration or override the port back to 22. See https://nixos.org/manual/nixpkgs/unstable/#sec-darwin-builder"; # added 2023-07-06
 });