| 25 Nov 2025 |
Artturin | Hadn't used that before | 18:55:13 |
Artturin | cool | 18:55:16 |
eb |
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 |
eb | This particular pi is a 4b and will be headless, so I don't need to have much desktopy stuff on it | 18:59:20 |
Artturin | The 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 lot | 18:59:45 |
Artturin | 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 |
eb |
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 | 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 | * 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 | And I import (modulesPath + "/profiles/minimal.nix") | 19:02:51 |
Artturin | Just updated my raspi and took me 1H to compile everything on r5 5900x | 19:03:35 |
Artturin | * Just updated my raspi and took me 1H to compile everything on r9 5900x | 19:03:42 |
eb | Thanks for all the info! | 19:06:35 |
Artturin | 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 | made this thing so I can pass the native pkgs around without using specialArgs | 20:51:39 |
eb | 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 |
| Mindavi joined the room. | 11:56:47 |
Artturin | https://github.com/NixOS/nixpkgs/pull/465092 | 21:48:02 |
| 27 Nov 2025 |
szlend | How come this is an issue with CGO disabled? It shouldn’t use CC at all | 07:55:18 |
Artturin | Yesterday I found an issue somewhere which IIRC mentioned something about something trying to use CGO/compiler even when it's off | 17:32:21 |
Artturin | I'm trying to find it again | 17:32:28 |
Artturin | That likely is the root cause of the issue as before just disabling CGO and unsetting GOARCH was enough https://github.com/nixos/nixpkgs/commit/78b312a895f8368746318bacb2634a151e8ea6ae | 17:38:09 |