!SgYlXivkogarTVcnZO:nixos.org

Nix Flakes

861 Members
168 Servers

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


SenderMessageTime
25 Jul 2025
@s0ands0:matrix.orgS0AndS0 *

Howdy all! I've got a pending PR that I wanna reduce back-and-forth on, so have been trying to do some local testing to ensure my eyes are crossed.

My end-goal is to have locally cloned NixOS/nixpkgs under a name-space like git-nixpkgs so I can pick-and-choose bits I wanna test. But been hitting some skill issues I have x-)

Got me the source successfully;

mkdir -vp ~/git/hub/NixOS &&
  pushd "${_}" &&
  git clone --depth=1 git@github.com:NixOS/nixpkgs.git

Did edits and they work when doing import, but now I wanna use the local repo as an inputs to my system flake.nix file, ex;

/etc/nixos/flake.nix (snip)

{
  inputs = {
    # ...
    git-nixpkgs = {
      type = "path";
      path = "/home/s0ands0/git/hub/NixOS/nixpkgs";
    };
  };

  outputs = { self, nixpkgs, ... }@attrs: {
    nixosConfigurations.nixos = nixpkgs.lib.nixosSystem = {
      system = "x86_64-linux";
      specialArgs = attrs;
      modules = [
        ./configuration.nix
        # ...
      ];
    };
  };
}

... But this is where things fall apart;

/etc/nixos/configuration.nix

{ git-nixpkgs, ... }:
{
  # ...
  services.dictd = {
    enable = true;
    DBs = with git-nixpkgs.pkgs.dictdDBs; [
      gcide
    ];
  };
}

I'm popping errors of pkgs attribute doesn't exist on git-nixpkgs :-(

This be less than fantastic as REPL shows the attribute available if I start it with something like, nix repl --expr 'import /home/s0ands0/git/hub/NixOS/nixpkgs {}', so I feel like I'm missing some key differences between classy flavored Nix imports vs the new fancy flakes?


Edit: here's what I found works, if willing to rebuild with --impure flag;

/etc/nixos/configuration.nix

{ ... }:
let
  git-nixpkgs = import /home/s0ands0/git/hub/NixOS/nixpkgs;
in
{
  # ...
  services.dictd = {
    enable = true;
    DBs = with git-nixpkgs.pkgs.dictdDBs; [
      gcide
    ];
  };
}

... feels like I really am missing something fundamental about Flakes 🤷

00:01:17
@s0ands0:matrix.orgS0AndS0 *

Howdy all! I've got a pending PR that I wanna reduce back-and-forth on, so have been trying to do some local testing to ensure my eyes are crossed.

My end-goal is to have locally cloned NixOS/nixpkgs under a name-space like git-nixpkgs so I can pick-and-choose bits I wanna test. But been hitting some skill issues I have x-)

Got me the source successfully;

mkdir -vp ~/git/hub/NixOS &&
  pushd "${_}" &&
  git clone --depth=1 git@github.com:NixOS/nixpkgs.git

Did edits and they work when doing import, but now I wanna use the local repo as an inputs to my system flake.nix file, ex;

/etc/nixos/flake.nix (snip)

{
  inputs = {
    # ...
    git-nixpkgs = {
      type = "path";
      path = "/home/s0ands0/git/hub/NixOS/nixpkgs";
    };
  };

  outputs = { self, nixpkgs, ... }@attrs: {
    nixosConfigurations.nixos = nixpkgs.lib.nixosSystem = {
      system = "x86_64-linux";
      specialArgs = attrs;
      modules = [
        ./configuration.nix
        # ...
      ];
    };
  };
}

... But this is where things fall apart;

/etc/nixos/configuration.nix

{ git-nixpkgs, ... }:
{
  # ...
  services.dictd = {
    enable = true;
    DBs = with git-nixpkgs.pkgs.dictdDBs; [
      gcide
    ];
  };
}

I'm popping errors of pkgs attribute doesn't exist on git-nixpkgs :-(

This be less than fantastic as REPL shows the attribute available if I start it with something like, nix repl --expr 'import /home/s0ands0/git/hub/NixOS/nixpkgs {}', so I feel like I'm missing some key differences between classy flavored Nix imports vs the new fancy flakes?


Edit: here's what I found works, if willing to rebuild with --impure flag;

/etc/nixos/configuration.nix

{ ... }:
let
  git-nixpkgs = import /home/s0ands0/git/hub/NixOS/nixpkgs { };
in
{
  # ...
  services.dictd = {
    enable = true;
    DBs = with git-nixpkgs.pkgs.dictdDBs; [
      gcide
    ];
  };
}

... feels like I really am missing something fundamental about Flakes 🤷

00:01:57
@dramforever:matrix.orgdramforever git-nixpkgs.legacyPackages.${pkgs.system} 00:08:30
@dramforever:matrix.orgdramforever pkgs comes from the top: { git-nixpkgs, pkgs, ... }: 00:08:48
@s0ands0:matrix.orgS0AndS0

Tragically the same story, but with error: attribute 'legacyPackages' missing now

... I added a lib.warn (builtins.toString (builtins.attrNames git-nixpkgs)) between function args and body, and noticed nothing's printed when building with Flake inputs but a whole lotta stuff gets dumped if I go the import route

00:24:26
@dramforever:matrix.orgdramforever like, nothing's printed, not even []? 00:38:14
@dramforever:matrix.orgdramforever can you put out the what you have written again? you originally had nixosConfigurations.nixos = nixpkgs.lib.nixosSystem = {, which is a syntax error so i doubt that's what you actually had 01:00:06
@dramforever:matrix.orgdramforever * can you put out the what you have written again? you originally posted nixosConfigurations.nixos = nixpkgs.lib.nixosSystem = {, which is a syntax error so i doubt that's what you actually had 01:00:19
@s0ands0:matrix.orgS0AndS0

like, nothing's printed, not even []?

Nope, nothing :-\

can you put out what you have written again?

Yeah it wouldn't surprise me if it were something like me being no smort with the syntax! And ya be correct in that my transcription had one too many =, though be assured that wasn't/ain't the reality.

Here be the current state of things;

/etc/nixos/flake.nix (snip)

{
  inputs = {
    nixpkgs.url = "github:nixos/nixpkgs?ref=nixos-unstable";
    # ...
    git-nixpkgs = {
      type = "path";
      path = "/home/s0ands0/git/hub/NixOS/nixpkgs";
    };
  };

  outputs = { self, nixpkgs, ... }@attrs: {
    nixosConfigurations.nixos = nixpkgs.lib.nixosSystem {
      system = "x86_64-linux";
      specialArgs = attrs;
      modules = [
        ./configuration.nix
        # ...
      ];
    };
  };
}

/etc/nixos/configuration.nix (snip)

{
  pkgs,
  git-nixpkgs,
  ...
}:

let
  # git-nixpkgs = import /home/s0ands0/git/hub/NixOS/nixpkgs { };
in
lib.warn (builtins.toString (builtins.attrNames git-nixpkgs))
{
  # ...
  services.dictd = {
    enable = true;

    # DBs = with git-nixpkgs.pkgs.dictDBs; [
    DBs = with git-nixpkgs.legacyPackages.${pkgs.system}.dictDBs; [
      gcide
    ];
  };
}

Now at the rebuild phase, which uh takes a few minutes;

nixos-rebuild test --impure --flake .
#> warning: Git tree '/etc/nixos' is dirty
#> copying "/home/s0ands0/git/hub/NixOS/nixpkgs" to the store
#> ...
#> copying "/nix/store/<HASH>-source/" to the store
#> ...
01:51:09

Show newer messages


Back to Room ListRoom Version: 6