| 13 Oct 2025 |
matthewcroughan @ 39c3 (DECT 94667 or 97340 or 67192) | Ihar Hrachyshka: Do you know why musl static might fail with llvm now? | 13:55:24 |
matthewcroughan @ 39c3 (DECT 94667 or 97340 or 67192) | Like this https://hercules-ci.com/accounts/github/MatthewCroughan/derivations/%2Fnix%2Fstore%2Fqk942ikx3lr5wvkwycizc4xvhj8pykwf-musl-static-aarch64-unknown-linux-musl-1.2.5.drv/log?via-job=bfdba484-5299-4137-89f5-0a94331faf96 | 13:55:53 |
matthewcroughan @ 39c3 (DECT 94667 or 97340 or 67192) | collect2: fatal error: cannot find 'ld' | 13:56:00 |
Ihar Hrachyshka | no idea. I'm not really a cross expert... :) | 13:56:35 |
matthewcroughan @ 39c3 (DECT 94667 or 97340 or 67192) | this isn't cross | 13:56:41 |
matthewcroughan @ 39c3 (DECT 94667 or 97340 or 67192) | this is native | 13:56:42 |
matthewcroughan @ 39c3 (DECT 94667 or 97340 or 67192) | cross works fine | 13:56:56 |
matthewcroughan @ 39c3 (DECT 94667 or 97340 or 67192) | I have a full pkgs.nixos {} building with cross, both llvm/musl, but now I'm tackling the native case | 13:57:18 |
Ihar Hrachyshka | I think musl is cross in a way - you cross build musl binaries with glibc build packages. It's just not arch cross.
(maybe I'm using terms incorrectly though)
| 13:57:30 |
matthewcroughan @ 39c3 (DECT 94667 or 97340 or 67192) | Untrue in this case | 13:57:40 |
matthewcroughan @ 39c3 (DECT 94667 or 97340 or 67192) | I've already done the cross case | 13:57:44 |
matthewcroughan @ 39c3 (DECT 94667 or 97340 or 67192) | pkgsMusl is musl -> musl | 13:57:51 |
matthewcroughan @ 39c3 (DECT 94667 or 97340 or 67192) | nixosConfigurations.gnu-musl = nixosConfigurations.base.extendModules {
modules = [
./musl.nix
{
nixpkgs.buildPlatform = (inputs.nixpkgs.lib.systems.elaborate "aarch64-unknown-linux-gnu");
nixpkgs.hostPlatform = inputs.nixpkgs.lib.recursiveUpdate (inputs.nixpkgs.lib.systems.elaborate "aarch64-unknown-linux-musl") {};
}
];
};
nixosConfigurations.gnu-musl-llvm = nixosConfigurations.base.extendModules {
modules = [
./musl-llvm.nix
{
nixpkgs.buildPlatform = (inputs.nixpkgs.lib.systems.elaborate "aarch64-unknown-linux-gnu");
nixpkgs.hostPlatform = inputs.nixpkgs.lib.recursiveUpdate (inputs.nixpkgs.lib.systems.elaborate "aarch64-unknown-linux-musl") {
useLLVM = true;
linker = "lld";
config = "aarch64-unknown-linux-musl";
};
}
];
};
nixosConfigurations.musl = nixosConfigurations.base.extendModules {
modules = [
./musl.nix
{
nixpkgs.buildPlatform = (inputs.nixpkgs.lib.systems.elaborate "aarch64-unknown-linux-musl");
nixpkgs.hostPlatform = inputs.nixpkgs.lib.recursiveUpdate (inputs.nixpkgs.lib.systems.elaborate "aarch64-unknown-linux-musl") {};
}
];
};
nixosConfigurations.musl-llvm = nixosConfigurations.base.extendModules {
modules = [
./musl-llvm.nix
{
nixpkgs.buildPlatform = (inputs.nixpkgs.lib.systems.elaborate "aarch64-unknown-linux-musl");
nixpkgs.hostPlatform = inputs.nixpkgs.lib.recursiveUpdate (inputs.nixpkgs.lib.systems.elaborate "aarch64-unknown-linux-musl") {
useLLVM = true;
linker = "lld";
config = "aarch64-unknown-linux-musl";
};
}
];
};
| 13:58:08 |
matthewcroughan @ 39c3 (DECT 94667 or 97340 or 67192) | * nixosConfigurations.gnu-musl = nixosConfigurations.base.extendModules {
modules = [
./musl.nix
{
nixpkgs.buildPlatform = (inputs.nixpkgs.lib.systems.elaborate "aarch64-unknown-linux-gnu");
nixpkgs.hostPlatform = inputs.nixpkgs.lib.recursiveUpdate (inputs.nixpkgs.lib.systems.elaborate "aarch64-unknown-linux-musl") {};
}
];
};
nixosConfigurations.gnu-musl-llvm = nixosConfigurations.base.extendModules {
modules = [
./musl-llvm.nix
{
nixpkgs.buildPlatform = (inputs.nixpkgs.lib.systems.elaborate "aarch64-unknown-linux-gnu");
nixpkgs.hostPlatform = inputs.nixpkgs.lib.recursiveUpdate (inputs.nixpkgs.lib.systems.elaborate "aarch64-unknown-linux-musl") {
useLLVM = true;
linker = "lld";
config = "aarch64-unknown-linux-musl";
};
}
];
};
nixosConfigurations.musl = nixosConfigurations.base.extendModules {
modules = [
./musl.nix
{
nixpkgs.buildPlatform = (inputs.nixpkgs.lib.systems.elaborate "aarch64-unknown-linux-musl");
nixpkgs.hostPlatform = inputs.nixpkgs.lib.recursiveUpdate (inputs.nixpkgs.lib.systems.elaborate "aarch64-unknown-linux-musl") {};
}
];
};
nixosConfigurations.musl-llvm = nixosConfigurations.base.extendModules {
modules = [
./musl-llvm.nix
{
nixpkgs.buildPlatform = (inputs.nixpkgs.lib.systems.elaborate "aarch64-unknown-linux-musl");
nixpkgs.hostPlatform = inputs.nixpkgs.lib.recursiveUpdate (inputs.nixpkgs.lib.systems.elaborate "aarch64-unknown-linux-musl") {
useLLVM = true;
linker = "lld";
config = "aarch64-unknown-linux-musl";
};
}
];
};
| 13:58:14 |
Ihar Hrachyshka | ah I see. I haven't looked at non-static musl, only pkgsStatic (which I believe is glibc->musl cross). anyway, I'm not of help. | 13:58:34 |
matthewcroughan @ 39c3 (DECT 94667 or 97340 or 67192) | well musl-static is the thing that's failing | 13:59:13 |
matthewcroughan @ 39c3 (DECT 94667 or 97340 or 67192) | so is that not related to pkgsStatic? | 13:59:19 |
Ihar Hrachyshka | pkgsStatic is musl static. (I'm confused.) | 13:59:36 |
matthewcroughan @ 39c3 (DECT 94667 or 97340 or 67192) | The name of the derivation that is failing is musl-static-aarch64-unknown-linux-musl | 14:00:01 |
matthewcroughan @ 39c3 (DECT 94667 or 97340 or 67192) | musl-static | 14:00:05 |
matthewcroughan @ 39c3 (DECT 94667 or 97340 or 67192) | pkgsMusl.pkgsStatic.musl is the reproducer | 14:00:54 |
matthewcroughan @ 39c3 (DECT 94667 or 97340 or 67192) | IDK why this ends up in the dependency graph | 14:01:33 |
matthewcroughan @ 39c3 (DECT 94667 or 97340 or 67192) |  Download image.png | 14:02:48 |
matthewcroughan @ 39c3 (DECT 94667 or 97340 or 67192) | looks like somehow the gcc-wrapper needs it | 14:03:02 |
matthewcroughan @ 39c3 (DECT 94667 or 97340 or 67192) | pkgsStatic.pkgsLLVM.musl builds just fine | 14:06:19 |
rosssmyth | While the APIs that are being used for ${program}.withPackages pattern is very nice and egronomic, it does have a downside of not using a spliced package. So for example recently I needed Python with a package in nativeBuildInputs, but then when cross-compiled it only has Python from pkgsHostTarget, leading to an invalid executable being used at build time and then either manually using pkgsBuildBuild.python or using the spliced Python and package separately.
I wonder if there is a good way to solve this? Meaning a way to use the spliced package, as for folks not in the know of splicing it is probably confusing to see a package operate differently based upon whether you use the helpers or not. But many of these helpers are implemented with finalAttrs.finalPackage, which isn't spliced.
| 18:00:49 |
Sandro 🐧 | Can someone look at https://github.com/NixOS/nixpkgs/pull/447492 for the correct splice setup? | 22:31:54 |
hexa | also #windows:nixos.org maybe | 23:11:28 |
| 14 Oct 2025 |
Sandro 🐧 | I did not know we had a room for that | 13:36:20 |
| UlyssesZhan joined the room. | 23:34:39 |