Hi,
in nix 2.26 relative flake inputs got fixed so they work better than before.
I just switched from version 2.25 to 2.28 and because of this change my config doesn’t work anymore.
Before I manually updated the relative inputs and trough this process it worked.
But since the update my config is broken and I can’t get it running again.
Here is a minimal example of my issue:
structure of my monorepo config:
.
├── flake.lock
├── flake.nix
└── packages
├── my-package
│ └── flake.nix
└── packages-overlay
└── flake.nix
my-package is just a derivation inside a flake.
In packages-overlay I import all package flakes and accumulate them in an overlay:
{
inputs = {
nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
home-manager-switch = {
url = "path:../my-package";
inputs.nixpkgs.follows = "nixpkgs";
};
};
outputs = { my-package, ... }:
{
overlays.packages = final: prev: {
my-package = my-package.packages.${final.system}.default;
};
};
}
Then I use this overlay in my final flake, in this example I just create a devShell from it:
{
inputs = {
nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable";
packages-overlay = {
url = "path:packages/packages-overlay";
inputs.nixpkgs.follows = "nixpkgs";
};
};
outputs = { nixpkgs, packages-overlay, ... }:
let
pkgs = import nixpkgs {
system = "x86_64-linux";
overlays = [ packages-overlay.overlays.packages ];
};
in
{
devShells."x86_64-linux".default = pkgs.home-manager-switch;
};
}
I then start the devShell by executing:
$ nix flake update && nix develop
error:
… while evaluating the attribute 'my-package'
at /nix/store/6k0ca7dm8kqjdgn6892pm3s0hl6rmvw5-source/packages/packages-overlay/flake.nix:13:7:
12| overlays.packages = final: prev: {
13| my-package = my-package.packages.${final.system}.default;
| ^
14| };
… while evaluating the attribute 'my-package.result'
at «flakes-internal»/call-flake.nix:98:7:
97| {
98| result =
| ^
99| if node.flake or true then
(stack trace truncated; use '--show-trace' to show the full, detailed trace)
error: path '/nix/store/6k0ca7dm8kqjdgn6892pm3s0hl6rmvw5-source/packages/packages-overlay/packages/my-package/flake.nix' does not exist
Before the version change I used this before running it:
$ nix flake update my-package --flake ./packages/packages-overlay
To pin the realtive path afterwards executed the devShell and everything worked.
I guess I have to change something about the configuration, but I don’t know what could be the issue.
I already know the section about path in the manual.
Could somebody please point me in the right direction?