!ayCRiZriCVtuCUpeLp:nixos.org

Nix Cross Compiling

563 Members
118 Servers

You have reached the beginning of time (for this room).


SenderMessageTime
25 Nov 2025
@artturin:matrix.orgArtturinaarch64-linux is pretty well supported so I guess so18:51:17
@artturin:matrix.orgArtturinhttps://hydra.nixos.org/job/nixos/trunk-combined/tested#tabs-constituents18:51:24
@artturin:matrix.orgArtturinx86_64-linux and aarch64-linux stuff tested there18:51:36
@artturin:matrix.orgArtturinI cross compile to my raspis but when I've done a nix shell on them I haven't needed to compile packages18:52:15
@artturin:matrix.orgArtturinIf you do hack something up then let us know, I'm interested18:53:04
@ebnull:matrix.orgeb per nix-forcast, if I do emulation I get a 99.64% cache hit, but with cross I get a 63.74% hit rate. Interesting, and probably supports that setting up binfmt on this ubuntu machine is worth it 18:53:25
@ebnull:matrix.orgebInteresting, I suppose it makes sense that a nix shell wouldn't need to compile - but I guess you still need to download to the store (since locally you have the crosscompiled version)18:54:47
@artturin:matrix.orgArtturin 69.87% of paths available (1746 out of 2499) 18:54:52
@artturin:matrix.orgArtturinHadn't used that before18:55:13
@artturin:matrix.orgArtturincool18:55:16
@ebnull:matrix.orgeb

I cross compile to my raspis

What configuration settings do you use here? I'm new to this one too, and I see I can choose (mainline | proprietary) kernel, (nixpkgs stable | nix-hardware | raspberry-pi-nix) for hardware support.

18:58:52
@ebnull:matrix.orgebThis particular pi is a 4b and will be headless, so I don't need to have much desktopy stuff on it18:59:20
@artturin:matrix.orgArtturinThe biggest obstacle to making it all automatic with nix-forecast and a script is nested attrs but just changing the top-level attrs will increase the cache hits by a lot18:59:45
@artturin:matrix.orgArtturin
  boot = {
    supportedFilesystems = {
      btrfs = lib.mkForce false;
      cifs = lib.mkForce false;
      f2fs = lib.mkForce false;
      ntfs = lib.mkForce false;
      xfs = lib.mkForce false;
      zfs = lib.mkForce false;
    };
    # Make the kernel much lighter to build, otherwise needs 30G+ ram
    kernelPatches = [
      {
        name = "disable-bpf";
        patch = null;
        extraConfig = ''
          DEBUG_INFO_BTF n
          CONFIG_DEBUG_INFO_BTF n
        '';
      }
    ];
    initrd.allowMissingModules = true;

    tmp.useTmpfs = true;
  };

Didn't change the kernel

19:00:42
@ebnull:matrix.orgeb

obstacle to making it all automatic with nix-forecast

I figured the biggest issue would be that it's not easy to map cached store paths back to attr / package names

19:01:01

Show newer messages


Back to Room ListRoom Version: 6