Open replicapra opened 3 months ago
I have a few struggles on my side too and I confirm the behavior: my homes/aarch64-darwin/luka
and homes/x86_64-linux/luka
targets are merged and prevent rebuilds.
$ nix repl
nix-repl> :lf .
nix-repl> homeConfigurations
{
luka = { ... };
root = { ... };
}
File tree:
homes/aarch64-darwin/luka/default.nix
homes/x86_64-linux/luka/default.nix
homes/x86_64-linux/root/default.nix
Moreover, if I try to rename to include the host (mv homes/aarch64-darwin/luka{,@foo}
), I get an error:
error: path 'fm7i5n6iwkxpsdj2cbzxxrnk25rykwr7-luka@foo' is not a valid store path: name 'luka@foo'
contains illegal character '@'
I believe it misses a call to lib.strings.sanitizeDerivationName
the v3 migration docs state that _For example, if you created a home homes/x86_64-linux/jake/default.nix, the home will be included for every x86_64-linux machine and will be exported on your Flake as homeConfigurations."jake@x8664-linux".
but the generated homeConfiguration will actually be named only "jake"
that becomes a problem as soon as you try to create a target wide home config for more than one target as only the first one ( or only one, can't really tell if it's the first one ) seems to be build
in my exact case I defined a target wide home config for both
x86_64-linux
andaarch64-linux
and while thex86_64-linux
config kept building just fine theaarch64-linux
one failed, not being able to find the defined home-manager user my homeConfigurations included only one config with the plain name, no@<target>