!VRULIdgoKmKPzJZzjj:nixos.org

Nix Package Manager development

867 Members
For people hacking on Nix: https://github.com/NixOS/nix Nix maintainers can be reached here.183 Servers

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


SenderMessageTime
8 Sep 2025
@xokdvium:matrix.orgSergei Zimmerman (xokdvium)

Some insights into 128 bit atomics in gcc:

https://gcc.gnu.org/legacy-ml/gcc/2018-02/msg00224.html

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=84563

00:11:35
@inayet:matrix.orgInayet set a profile picture.02:15:58
@oddlama:matrix.orgoddlama joined the room.13:36:49
@oddlama:matrix.orgoddlama

I'm having trouble overriding stdenv for the nix package:

{
  inputs.nixpkgs.url = "github:NixOS/nixpkgs/nixos-25.05";

  outputs =
    inputs:
    let
      pkgs = import inputs.nixpkgs {
        system = "x86_64-linux";
      };
    in
    {
      packages.x86_64-linux = {
        nix_2_30_clang = pkgs.nixVersions.nix_2_30.override {
          stdenv = pkgs.clangStdenv;
        };
      };
    };
}

Building this package does not actually trigger a build but reuses the gcc artifacts while rebuilding some kind of wrapper (?)

$ nix build .#packages.x86_64-linux.nix_2_30_clang
$ readelf -p .comment ./result/bin/nix
String dump of section '.comment':
  [     1]  GCC: (GNU) 14.3.0

This should probably say something like:

  [     0]  GCC: (GNU) 14.3.0
  [    12]  clang version 18.1.8

Overriding still works for the autoconf based build (nix_2_24) but not for any of the newer package builds. It seems like the override is silently ignored and not passed down to the sub-derivations anymore.

13:50:11
@sandro:supersandro.deSandro 🐧

Did you try?

nixVersions = prev.nixVersions.extend (final: prev: 
  nixComponents_2_31 = prev.nixComponents_2_31.overrideScope (finalScope: prevScope: { stdenv = pkgs_25_05.clangStdenv; };
};
14:37:21
@oddlama:matrix.orgoddlamaYes that is looking good, thanks. Is this the preferred way to do overrides for those types of packages now?15:35:33
@xokdvium:matrix.orgSergei Zimmerman (xokdvium)
In reply to @oddlama:matrix.org
Yes that is looking good, thanks. Is this the preferred way to do overrides for those types of packages now?
For the modular packaging - yes. Since now this is not a monolithic package that you can override
16:04:22
@sandro:supersandro.deSandro 🐧

Also an example on how to add patches

    nixComponents_2_31 = (prev.nixComponents_2_31.overrideScope (finalScope: prevScope: {
      aws-sdk-cpp = null;
      boost = boost231;
      withAWS = false;
    })).appendPatches (commonPatches ++ [
      ./nix-derivation-better-copy-2.30.diff
    ]);
16:05:49
9 Sep 2025
@winter:catgirl.cloudWinter this is seemingly missing where commonPatches comes from fyi 02:21:31
@sandro:supersandro.deSandro 🐧 *

Also an example on how to add patches

    nixComponents_2_31 = (prev.nixComponents_2_31.overrideScope (finalScope: prevScope: {
      aws-sdk-cpp = null;
      boost = boost231;
      withAWS = false;
    })).appendPatches [
      ./nix-derivation-better-copy-2.30.diff
    ];
08:50:38
@sandro:supersandro.deSandro 🐧That's just a list I have somewhere above in a let in08:50:56
@aciceri:nixos.devaciceri changed their display name from zrsk to aciceri.15:02:57
@xokdvium:matrix.orgSergei Zimmerman (xokdvium)Curiously, Boehm granule size on 64 bit systems is 16 bytes. That means that 16 byte atomics for Value are very workable, since x86_64 needs stuff to be 16 bytes aligned (otherwise memory might straddle the cache line and that won’t be atomic ever)17:31:17
10 Sep 2025
@ss:someonex.netSomeoneSerge (back on matrix) changed their display name from SomeoneSerge (@nixcon & back on matrix) to SomeoneSerge (back on matrix).00:34:03

Show newer messages


Back to Room ListRoom Version: 6