Pude reproducir esto en NixOS.
Su NIX_PATH
establece nixpkgs
en /nix/var/nix/profiles/per-user/root/channels/nixos/nixpkgs
, que si busca es solo un enlace simbólico a /nix/var/nix/profiles/per-user/root/channels/nixos/
. Probablemente sea un pequeño truco hacer que funcionen todas las expresiones que están en la naturaleza que esperan que
apunte a una ruta de canal válida (aunque no creo que sea un requisito para un sistema nix y parece originarse de nix -demonio).
Para solucionarlo, debe redefinir NIX_PATH
para que apunte a un canal nixpkgs real o debe indicar explícitamente la ruta al canal en lugar de usar
en su expresión.
Puedes encontrar tus canales disponibles en~/.nix-defexpr
:
$tree -l -L 2 ~/.nix-defexpr/
/home/user1/.nix-defexpr/
├── channels -> /nix/var/nix/profiles/per-user/user1/channels
│ ├──...
│ └── nixpkgs -> /nix/store/qz1.../nixpkgs
└── channels_root -> /nix/var/nix/profiles/per-user/root/channels
├──...
└── nixos -> /nix/store/53b.../nixos
(channels
contiene los canales específicos del usuario -mientras que channels_root
contiene los canales a los que se suscribió la raíz y están disponibles para todos los usuarios)
Entonces, si decidiera usar la suscripción del usuario1 a nixpkgs
, ejecutaría:
NIX_PATH="nixpkgs=/home/user1/.nix-defexpr/channels/nixpkgs" nix-env -f default.nix -i