| 30 Apr 2025 |
sheeldotme | nix develop --build is what you want, nix develop --command bash -c buildPhase launches a dev shell and tries to run the bash command buildPhase, it won't find it, since its an environment variable. What are the errors you get when you run --build? | 14:36:16 |
sheeldotme | and you're just doing use flake in your .envrc?
what does your flake look like? | 14:38:09 |
sheeldotme | * and you're just doing use flake in your .envrc?
what does your flake look like?
| 14:38:21 |
Šimon Brandner | Yes
Right now like so
{
inputs = {
nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable";
};
outputs = {nixpkgs, ...}: let
system = "x86_64-linux";
pkgs = import nixpkgs {
inherit system;
crossSystem = {
config = "armv7l-linux-gnueabihf";
};
};
in {
devShells.${system}.default = import ./nix/shell.nix {inherit pkgs;};
};
nixConfig = {
extraOptions = ''
keep-outputs = true
keep-derivations = true
'';
};
}
| 14:38:57 |
sheeldotme | right so that nixConfig can be configured like this https://nix.dev/manual/nix/2.28/command-ref/conf-file.html
or it can go in whatever flake is producing your configuration files.
have you looked at caching? that might save some time. | 14:42:11 |
sheeldotme | What are you currently doing that seems to trigger the build? I'm wondering if its in your devshell, or if something else is triggering the rebuild, without seeing the dependencies its hard to say what the issue may be. | 14:44:31 |
Šimon Brandner | The shell.nix looks like so
{pkgs, ...}:
pkgs.mkShell {
buildInputs = [
pkgs.glibc
pkgs.glibc.static
];
makeFlags = [
"CC=${pkgs.stdenv.cc.targetPrefix}cc"
"CXX=${pkgs.stdenv.cc.targetPrefix}g++"
];
}
| 14:47:49 |
sheeldotme | Hmm, nothing jumping out to me
What platform are you on?
When exactly does the devshell rebuild? (On every activation, after specific commands, how frequently?)
Are you updating flake inputs or the dependencies of your shell frequently? Is the flake lock stable? | 15:01:17 |
sheeldotme | * Hmm, nothing jumping out to me.
When exactly does the devshell rebuild? (On every activation, after specific commands, how frequently?)
Are you updating flake inputs or the dependencies of your shell frequently? Is the flake lock stable?
If you're using nixos or nix-darwin, it could help to check if you're space constrained or if you have the garbage collector running frequently. | 15:03:35 |
Šimon Brandner | To be clear I only added the nixConfig bit today.
The rebuild happens once in a while I guess. E.g. yesterday evening I was using the dev shell (nix develop) but today in the morning gcc had to be rebuilt.
I haven't done any changes to my system or the flake in between those times
GC has this setup
gc = {
automatic = true;
dates = "daily";
options = "--delete-older-than 7d";
};
Does this answer your questions?
| 15:06:24 |
sheeldotme | It does seem strange that it triggered a rebuild if you didnt modify the flake or its dependencies.
https://github.com/nix-community/nix-direnv?tab=readme-ov-file#manual-reload-of-the-nix-environment
may be helpful, at least it wont rebuild when you don't want to, it'll give you that option. | 15:25:01 |
sheeldotme | Maybe du -hsc /nix/store and see if that is taking up a lot of your system storage, if so that may be our answer. | 15:26:05 |
Šimon Brandner | I am not sure I follow a 100%? | 15:41:52 |
Šimon Brandner | (it indeed is taking up a lot of space) | 15:45:53 |
Šimon Brandner | (not sure what to make of it in the context of this issue) | 15:46:05 |
sheeldotme | Sorry, I wasn't being very clear.
I guess I meant: could the issue be that its being garbage collected prematurely because there isn't much room in the store leading to the rebuilds? | 16:48:28 |
Šimon Brandner | No worries, but no, that is not the case | 17:24:48 |
| @skyesoss:matrix.org joined the room. | 19:53:43 |
| 1 May 2025 |
| Leon joined the room. | 00:03:29 |
Leon | Hey guys I have a question. I was used to instantiate nixpkgs like this
pkgs = import inputs.nixpkgs {
overlays = [
inputs.nur.overlays.default
];
system = "x86_64-linux"; # system arch (checkout hardware-configuration.nix -> nixpkgs.hostPlatform);
config.allowUnfree = true;
};
And then pass this configured instance as specialArgs to nixpkgs.lib.nixosSystem like this:
nixosConfigurations.${systemSettings.hostname} = inputs.nixpkgs.lib.nixosSystem {
modules = [ ./configuration.nix ];
specialArgs = {
inherit pkgs;
inherit inputs;
inherit systemSettings;
};
};
I thought that this ensures that the correctly defined nixpkgs is used throughout my configuration.nix. But now I'm getting this warning:
evaluation warning: You have set specialArgs.pkgs, which means that options like nixpkgs.config
and nixpkgs.overlays will be ignored. If you wish to reuse an already created
pkgs, which you know is configured correctly for this NixOS configuration,
please import the `nixosModules.readOnlyPkgs` module from the nixpkgs flake or
`(modulesPath + "/misc/nixpkgs/read-only.nix"), and set `{ nixpkgs.pkgs = <your pkgs>; }`.
This properly disables the ignored options to prevent future surprises.
Removing the inherit pkgs; line gets rid of the warning and everything stills works but now I don't understand how my modules know about the nixpkgs instance that they should be using.
I tried googling but found it really difficult to find information regarding this. Any help would be highly appreciated! In general help for understanding how this nixpkgs.lib.nixosSystem actually works would be nice :slight_smile:
| 00:09:22 |
dramforever | In reply to @leons_pferd:matrix.org
Hey guys I have a question. I was used to instantiate nixpkgs like this
pkgs = import inputs.nixpkgs {
overlays = [
inputs.nur.overlays.default
];
system = "x86_64-linux"; # system arch (checkout hardware-configuration.nix -> nixpkgs.hostPlatform);
config.allowUnfree = true;
};
And then pass this configured instance as specialArgs to nixpkgs.lib.nixosSystem like this:
nixosConfigurations.${systemSettings.hostname} = inputs.nixpkgs.lib.nixosSystem {
modules = [ ./configuration.nix ];
specialArgs = {
inherit pkgs;
inherit inputs;
inherit systemSettings;
};
};
I thought that this ensures that the correctly defined nixpkgs is used throughout my configuration.nix. But now I'm getting this warning:
evaluation warning: You have set specialArgs.pkgs, which means that options like nixpkgs.config
and nixpkgs.overlays will be ignored. If you wish to reuse an already created
pkgs, which you know is configured correctly for this NixOS configuration,
please import the `nixosModules.readOnlyPkgs` module from the nixpkgs flake or
`(modulesPath + "/misc/nixpkgs/read-only.nix"), and set `{ nixpkgs.pkgs = <your pkgs>; }`.
This properly disables the ignored options to prevent future surprises.
Removing the inherit pkgs; line gets rid of the warning and everything stills works but now I don't understand how my modules know about the nixpkgs instance that they should be using.
I tried googling but found it really difficult to find information regarding this. Any help would be highly appreciated! In general help for understanding how this nixpkgs.lib.nixosSystem actually works would be nice :slight_smile:
don't use specialArgs to pass pkgs, use { nixpkgs.pkgs = pkgs; } to pass it the non-special way | 00:20:09 |
dramforever | that's what the message is trying to tell you | 00:20:35 |
dramforever | if you don't pass it anything, then, well, nixpkgs.lib.nixosSystem is from nixpkgs so it knows to use the thing from nixpkgs | 00:21:08 |
Leon | Do you know what the nixosModules.readOnlyPkgs is that the warning is talking about? | 09:08:06 |
| Rosuavio changed their display name from Rosario Pulella to Rosuavio. | 20:08:43 |
| 2 May 2025 |
dramforever | https://github.com/NixOS/nixpkgs/blob/master/nixos/modules/misc/nixpkgs/read-only.nix | 02:36:01 |
Leon | Thank you for the help!! :) | 11:46:04 |
| 3 May 2025 |
| SeerLite joined the room. | 14:28:33 |
@er10:matrix.org | Hello everyone : I receive the following notification, since today :
doas (omakuva@3nnoia) password:
omakuva@3nnoia:/etc/nixos$ doas nixos-rebuild switch --flake /etc/nixos#my-upgrade --verbose
$ nix --extra-experimental-features nix-command flakes build --out-link /tmp/nixos-rebuild.8Li1il/nixos-rebuild /etc/nixos#nixosConfigurations."my-upgrade".config.system.build.nixos-rebuild --verbose
error: flake 'path:/etc/nixos' does not provide attribute 'packages.x86_64-linux.nixosConfigurations."my-upgrade".config.system.build.nixos-rebuild', 'legacyPackages.x86_64-linux.nixosConfigurations."my-upgrade".config.system.build.nixos-rebuild' or 'nixosConfigurations."my-upgrade".config.system.build.nixos-rebuild'``
Could you please help ? -- It never happened before... Thanks in advance.
| 16:06:48 |
| bastidest joined the room. | 18:43:52 |