!ayCRiZriCVtuCUpeLp:nixos.org

Nix Cross Compiling

539 Members
111 Servers

Load older messages


SenderMessageTime
25 Nov 2025
@artturin:matrix.orgArtturinCould probably make something with those18:46:29
@artturin:matrix.orgArtturin The pkgs instance of a config can be accessed like this nixosConfigurations.ArtDesktop.pkgs.hello 18:48:06
@ebnull:matrix.orgeb

nix-forecast

Very nice, looks like something that will be very useful for a/b comparisons. Thanks for the pointer!

hydra-check

Good to know, but probably more useful for those actively hacking on nixpkgs

18:49:03
@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
@artturin:matrix.orgArtturin

Also got these to not compile gtk

  nixpkgs.overlays = [
    (final: prev: {
      stoken = prev.stoken.override { withGTK3 = false; };
      alsa-utils = prev.alsa-utils.override {
        withPipewireLib = false;
        fftw = null;
      };
      alsa-plugins = prev.alsa-plugins.override {
        libpulseaudio = null;
        speexdsp = null;
      };
      sdl2 = prev.sdl2.override {
        pipewireSupport = false;
        pulseaudioSupport = false;
        x11Support = false;
        jackSupport = false;
      };
      ffmpeg = prev.ffmpeg_7-headless.override {
        withSpeex = false;
        withOpenmpt = false;
      };
    })
  ];
19:01:04
@artturin:matrix.orgArtturin *

Also got these to not compile gtk and some other packages

  nixpkgs.overlays = [
    (final: prev: {
      stoken = prev.stoken.override { withGTK3 = false; };
      alsa-utils = prev.alsa-utils.override {
        withPipewireLib = false;
        fftw = null;
      };
      alsa-plugins = prev.alsa-plugins.override {
        libpulseaudio = null;
        speexdsp = null;
      };
      sdl2 = prev.sdl2.override {
        pipewireSupport = false;
        pulseaudioSupport = false;
        x11Support = false;
        jackSupport = false;
      };
      ffmpeg = prev.ffmpeg_7-headless.override {
        withSpeex = false;
        withOpenmpt = false;
      };
    })
  ];
19:01:10
@artturin:matrix.orgArtturin And I import (modulesPath + "/profiles/minimal.nix") 19:02:51
@artturin:matrix.orgArtturinJust updated my raspi and took me 1H to compile everything on r5 5900x19:03:35
@artturin:matrix.orgArtturin* Just updated my raspi and took me 1H to compile everything on r9 5900x19:03:42
@ebnull:matrix.orgebThanks for all the info!19:06:35
@artturin:matrix.orgArtturin

eb:

(
  { config, pkgs, ... }:
  {
    options.nixpkgsNative.pkgs = lib.mkOption {
      type = lib.types.pkgs;
      default = null;
      description = "Native nixpkgs for the system being cross-compiled to get native packages to reduce build amounts";
    };
                                                                                                                         
    config.nixpkgsNative.pkgs = import pkgs.path {
      localSystem = config.nixpkgs.crossSystem;
      inherit (config.nixpkgs) crossSystem config;
    };
                                                                                                                         
  }
)

config.nixpkgsNative.pkgs.mpv-unwrapped

20:51:23
@artturin:matrix.orgArtturinmade this thing so I can pass the native pkgs around without using specialArgs20:51:39
@ebnull:matrix.orgeb

Nice, ty.

I did a similar thing to avoid specialArgs, but with pkgs.unstable as an overlay for nixpkgs-unstable when I needed it downstream for other reasons.

21:51:05
26 Nov 2025
@rick:matrix.ciphernetics.nlMindavi joined the room.11:56:47
@artturin:matrix.orgArtturinhttps://github.com/NixOS/nixpkgs/pull/46509221:48:02
27 Nov 2025
@szlend:matrix.orgszlendHow come this is an issue with CGO disabled? It shouldn’t use CC at all07:55:18

There are no newer messages yet.


Back to Room ListRoom Version: 6