!SgYlXivkogarTVcnZO:nixos.org

Nix Flakes

901 Members
184 Servers

Load older messages


SenderMessageTime
10 Dec 2023
@janik0:matrix.org@janik0:matrix.org
In reply to @janik0:matrix.org
of course, how else would I get people to do free qa :D
As promised, even so it took some time but here it is: https://discourse.nixos.org/t/announcing-nixos-dns/36702
21:47:19
11 Dec 2023
@ryoschin:matrix.org@ryoschin:matrix.org joined the room.12:49:14
@ryoschin:matrix.org@ryoschin:matrix.orgWhen using flakes to manage my system, and having `nixos-unstable` and `home-manager` as inputs, I have to call `sudo nixos-rebuild switch --flake some/path`. Now, that command sometimes downloads around 300 MB of data before actually doing the build (around 150 MB for unstable I suppose, and 148 MB for home-manager). Is it possible to avoid having to wait for that every time? I suppose it might do the downloading when I run `sudo nix-collect-garbage -d` and reboot. (Copied from NixOs, this room might be more suitable for this question)12:50:37
@janik0:matrix.org@janik0:matrix.org
In reply to @ryoschin:matrix.org
When using flakes to manage my system, and having `nixos-unstable` and `home-manager` as inputs, I have to call `sudo nixos-rebuild switch --flake some/path`. Now, that command sometimes downloads around 300 MB of data before actually doing the build (around 150 MB for unstable I suppose, and 148 MB for home-manager). Is it possible to avoid having to wait for that every time? I suppose it might do the downloading when I run `sudo nix-collect-garbage -d` and reboot. (Copied from NixOs, this room might be more suitable for this question)

you can try with --offline then it will try to run any nix * command with the local data from nix cache also stops nix shell and nix run from trying to refresh the remote nix version. Alternatively you can do:

  nix.registry = {
    nixpkgs.flake = inputs.nixpkgs;
  };

that pins any nix * command to the same flake.lock version (similar to what channels or npins or nivs would do for nix-* commands)

13:04:24
@ryoschin:matrix.org@ryoschin:matrix.org
In reply to @janik0:matrix.org

you can try with --offline then it will try to run any nix * command with the local data from nix cache also stops nix shell and nix run from trying to refresh the remote nix version. Alternatively you can do:

  nix.registry = {
    nixpkgs.flake = inputs.nixpkgs;
  };

that pins any nix * command to the same flake.lock version (similar to what channels or npins or nivs would do for nix-* commands)

But my problem is in that sudo nix-collect-garbage -d deletes the sources, and sudo nixos-rebuild switch --flake some/path has to download them again (I suppose that is because they count as cache, so it clears them). I need the gc to not clear them, and the rebuild command to download them only if there is an actual update
15:14:32
@ryoschin:matrix.org@ryoschin:matrix.org
In reply to @janik0:matrix.org

you can try with --offline then it will try to run any nix * command with the local data from nix cache also stops nix shell and nix run from trying to refresh the remote nix version. Alternatively you can do:

  nix.registry = {
    nixpkgs.flake = inputs.nixpkgs;
  };

that pins any nix * command to the same flake.lock version (similar to what channels or npins or nivs would do for nix-* commands)

* But my problem is in that sudo nix-collect-garbage -d deletes the sources, and sudo nixos-rebuild switch --flake some/path has to download them again (I suppose that is because they count as cache, so it clears them). I need the gc to not clear them, and the rebuild command to re-download them only if there is an actual update
15:14:57
@2xsaiko:tchncs.de@2xsaiko:tchncs.de
In reply to @ryoschin:matrix.org
But my problem is in that sudo nix-collect-garbage -d deletes the sources, and sudo nixos-rebuild switch --flake some/path has to download them again (I suppose that is because they count as cache, so it clears them). I need the gc to not clear them, and the rebuild command to re-download them only if there is an actual update
if you add those flakes to the local registry then they will not be collected
alternatively I guess you can add them to system.extraDependencies
15:17:08
@janik0:matrix.org@janik0:matrix.org
In reply to @ryoschin:matrix.org
But my problem is in that sudo nix-collect-garbage -d deletes the sources, and sudo nixos-rebuild switch --flake some/path has to download them again (I suppose that is because they count as cache, so it clears them). I need the gc to not clear them, and the rebuild command to re-download them only if there is an actual update
There was some setting like keepDerivations or something to prevent that but I'm not at my laptop currently.
15:17:28
@ryoschin:matrix.org@ryoschin:matrix.org
In reply to @2xsaiko:tchncs.de
if you add those flakes to the local registry then they will not be collected
alternatively I guess you can add them to system.extraDependencies
I see. Mind sharing the process?
15:55:51
@ryoschin:matrix.org@ryoschin:matrix.org
In reply to @janik0:matrix.org
There was some setting like keepDerivations or something to prevent that but I'm not at my laptop currently.
Yup, there is such an option, but I did not fully understand what it does. Does it keep all the packages I install even if they are not needed anymore, or just keep the two things I needed not to be garbage collected?
15:57:03
@ryoschin:matrix.org@ryoschin:matrix.orgSo, as far as I can tell now, all I need to do is make the flake a GC root, right? So, how do I do that...16:07:28
@mr-qubo:matrix.orgmr-qubo
In reply to @ryoschin:matrix.org
So, as far as I can tell now, all I need to do is make the flake a GC root, right? So, how do I do that...
I don't know but direnv does this, so you can check how they do it.
17:00:32
@ryoschin:matrix.org@ryoschin:matrix.orgAlright, I think I managed to apply direnv to this17:20:26
@2xsaiko:tchncs.de@2xsaiko:tchncs.de
In reply to @ryoschin:matrix.org
I see. Mind sharing the process?
nix.registry.nixpkgs.flake = inputs.nixpkgs (like Janik said) or system.extraDependencies = [inputs.nixpkgs]
18:04:20
12 Dec 2023
@peacememories:matrix.orgpeacememories (Old)i've been looking into this again after some time away, and still can't really find anything: is there a way to exclude one directory from my flake? specifically we have a giant folder of reference PDFs checked into our source tree, and copying them every time a flake is built makes our development shell unusable. this is why we're currently running non-flake nix, but I would love to be able to switch08:48:26
@peacememories:matrix.orgpeacememories (Old)side note: these files are not needed from our nix build, they are just for test runs08:49:27
@janik0:matrix.org@janik0:matrix.org
In reply to @peacememories:matrix.org
i've been looking into this again after some time away, and still can't really find anything:
is there a way to exclude one directory from my flake? specifically we have a giant folder of reference PDFs checked into our source tree, and copying them every time a flake is built makes our development shell unusable.
this is why we're currently running non-flake nix, but I would love to be able to switch
maybe this helps? https://github.com/hercules-ci/gitignore.nix
09:08:56
@peacememories:matrix.orgpeacememories (Old) i don't believe so. for one, the files are not gitignored because they are meant to be versioned. also, I think this would only work when including a separate directory from my flake? right now the flake is at the root of the repository, so the whole repo is copied into the store before I can do anything with it.
I think some people are putting their flake into a subdirectory to work around this? Maybe that's workable for me as well. Still hoping the lazy trees MR gets merged at some point^^
09:25:35
@peacememories:matrix.orgpeacememories (Old)okay, a subfolder alone does not do anything since nix still recognizes the repository root as "the flake" and copies the entire tree. at least that's what it looks like09:52:53
@wucke13:matrix.orgwucke13What is a nice way to fill hydraJobs with the packages and checks of a flake?12:41:59
@tim:stratum0.orgdadada (they/them)

Everyone seems to do this differently. I have this for building NixOS configs.

{ self, nixpkgs, ... }:
(nixpkgs.lib.mapAttrs'
  (name: config: nixpkgs.lib.nameValuePair name config.config.system.build.toplevel)
  self.nixosConfigurations
)

But not sure if this actually works, or if I configured the jobs manually in hydra...

13:36:15
@antifuchs:asf.computer@antifuchs:asf.computer You may have a .jobsets job that generates a json config listing all the hydra jobs exposed in your flake?  13:49:00
@peacememories:matrix.orgpeacememories (Old)

hmm, is there a more elegant solution for adding overlays in a flake than

pkgs = import nixpkgs {
        inherit system;
        overlays = [
          poetry2nix.overlay
        ];
      };

or is this just how it's done?

14:33:42
@peacememories:matrix.orgpeacememories (Old)(sorry, I feel like I'm asking stupid questions, but it feels like flakes+nix together have so many ways of overriding and referencing packages that it's hard to find the "right" way to do something)14:35:55
@antifuchs:asf.computer@antifuchs:asf.computerthere are many ways to do overlays - it really depends on what you need to do with them tbh15:10:06
@antifuchs:asf.computer@antifuchs:asf.computer if you "just" want to use them in nixos (or nix-darwin), then a module that does {nixpkgs.overlays = [self.inputs.emacs-overlay.overlay];} (where self is the flake, as referenced in the flake's output closure) does the trick; if you need overlays in the pkgs refs that are used inside the flakes, then your thing seems right 15:11:44
@antifuchs:asf.computer@antifuchs:asf.computer(and if you use e.g. flake-parts, it's a different thing altogether)15:11:54
@2xsaiko:tchncs.de@2xsaiko:tchncs.de
In reply to @wucke13:matrix.org
What is a nice way to fill hydraJobs with the packages and checks of a flake?
    hydraJobs = {
      inherit (self) checks packages;
    };
15:18:13
@2xsaiko:tchncs.de@2xsaiko:tchncs.de (as in https://git.sr.ht/~dblsaiko/nix-extras/tree/master/item/flake.nix#L80) 15:18:36
@wucke13:matrix.orgwucke13 but formally packages are system.attr, while hydraJobs is attr.system 17:25:01

Show newer messages


Back to Room ListRoom Version: 6