Closed stackshadow closed 2 years ago
The full error for me:
scott@Scotts-MacBook-Air ~ % nix-env --install wget
installing 'wget-1.21.2'
error: file 'REPEAT' was not found in the Nix search path (add it using $NIX_PATH or -I)
at /nix/store/b8d7603nslma9qfn00qh8gmjhgjpyxd7-env-manifest.nix:1:1936:
and that file says:
scott@Scotts-MacBook-Air ~ % cat /nix/store/b8d7603nslma9qfn00qh8gmjhgjpyxd7-env-manifest.nix
[ { meta = { available = true; broken = false; description = "The Glasgow Haskell Compiler"; homepage = "http://haskell.org/ghc"; insecure = false; license = { deprecated = false; free = true; fullName = "BSD 3-clause \"New\" or \"Revised\" License"; redistributable = true; shortName = "bsd3"; spdxId = "BSD-3-Clause"; url = "https://spdx.org/licenses/BSD-3-Clause.html"; }; maintainers = [ { email = "guillaum.bouchard@gmail.com"; github = "guibou"; githubId = 9705357; name = "Guillaume Bouchard"; } { email = "cdep.illabout@gmail.com"; github = "cdepillabout"; githubId = 64804; matrix = "@cdepillabout:matrix.org"; name = "Dennis Gosnell"; } { email = "nix@monoid.al"; github = "expipiplus1"; githubId = 857308; keys = [ { fingerprint = "FC1D 3E4F CBCA 80DF E870 6397 C811 6E3A 0C1C A76A"; longkeyid = "rsa4096/0xC8116E3A0C1CA76A"; } ]; matrix = "@ellie:monoid.al"; name = "Ellie Hermaszewska"; } { email = "malte.brandy@maralorn.de"; github = "maralorn"; githubId = 1651325; matrix = "@maralorn:maralorn.de"; name = "Malte Brandy"; } { email = "sternenseemann@systemli.org"; github = "sternenseemann"; githubId = 3154475; name = "Lukas Epple"; } ]; name = "ghc-8.10.7"; outputsToInstall = [ "out" ]; platforms = [ "aarch64-darwin" "aarch64-linux" "armv7l-linux" "i686-linux" "x86_64-darwin" "x86_64-linux" ]; position = "/nix/store/ccg2bflff3j9kcghnbfw168r4v6h5ci1-nixpkgs/nixpkgs/pkgs/development/compilers/ghc/8.10.7.nix:375"; timeout = 86400; unfree = false; unsupported = false; }; name = "ghc-8.10.7"; out = { outPath = "/nix/store/crfkr9bbd4qa79r40nph08ligdyl33ns-ghc-8.10.7"; }; outPath = "/nix/store/crfkr9bbd4qa79r40nph08ligdyl33ns-ghc-8.10.7"; outputs = [ "out" ]; system = "aarch64-darwin"; type = "derivation"; } { meta = { available = true; broken = false; description = "The command-line interface for Cabal and Hackage"; homepage = "https://hackage.haskell.org/package/cabal-install"; insecure = false; license = <REPEAT>; maintainers = [ { email = "simons@cryp.to"; github = "peti"; githubId = 28323; name = "Peter Simons"; } ]; name = "cabal-install-3.6.2.0"; outputsToInstall = [ "out" ]; platforms = [ "i686-cygwin" "x86_64-cygwin" "x86_64-darwin" "i686-darwin" "aarch64-darwin" "armv7a-darwin" "i686-freebsd" "x86_64-freebsd" "aarch64-genode" "i686-genode" "x86_64-genode" "x86_64-solaris" "js-ghcjs" "aarch64-linux" "armv5tel-linux" "armv6l-linux" "armv7a-linux" "armv7l-linux" "i686-linux" "m68k-linux" "mipsel-linux" "powerpc64-linux" "powerpc64le-linux" "riscv32-linux" "riscv64-linux" "s390-linux" "s390x-linux" "x86_64-linux" "mmix-mmixware" "aarch64-netbsd" "armv6l-netbsd" "armv7a-netbsd" "armv7l-netbsd" "i686-netbsd" "m68k-netbsd" "mipsel-netbsd" "powerpc-netbsd" "riscv32-netbsd" "riscv64-netbsd" "x86_64-netbsd" "aarch64_be-none" "aarch64-none" "arm-none" "armv6l-none" "avr-none" "i686-none" "msp430-none" "or1k-none" "m68k-none" "powerpc-none" "powerpcle-none" "riscv32-none" "riscv64-none" "s390-none" "s390x-none" "vc4-none" "x86_64-none" "i686-openbsd" "x86_64-openbsd" "x86_64-redox" "wasm64-wasi" "wasm32-wasi" "x86_64-windows" "i686-windows" ]; position = "/nix/store/ccg2bflff3j9kcghnbfw168r4v6h5ci1-nixpkgs/nixpkgs/pkgs/development/haskell-modules/hackage-packages.nix:50293"; unfree = false; unsupported = false; }; name = "cabal-install-3.6.2.0"; out = { outPath = "/nix/store/69vidhq89j1vz0l08v4x3zaqsdrqiq5k-cabal-install-3.6.2.0"; }; outPath = "/nix/store/69vidhq89j1vz0l08v4x3zaqsdrqiq5k-cabal-install-3.6.2.0"; outputs = [ "out" ]; system = "aarch64-darwin"; type = "derivation"; } { meta = { available = true; broken = false; description = "A network diagnostics tool"; homepage = "https://www.bitwizard.nl/mtr/"; insecure = false; license = { deprecated = true; free = true; fullName = "GNU General Public License v2.0"; redistributable = true; shortName = "gpl2"; spdxId = "GPL-2.0"; url = "https://spdx.org/licenses/GPL-2.0.html"; }; maintainers = [ { email = "koral@mailoo.org"; github = "k0ral"; githubId = 524268; name = "Koral"; } { email = "orivej@gmx.fr"; github = "orivej"; githubId = 101514; name = "Orivej Desh"; } { email = "7c6f434c@mail.ru"; github = "7c6f434c"; githubId = 1891350; name = "Michael Raskin"; } { email = "mail@glob.in"; github = "globin"; githubId = 1447245; name = "Robin Gloster"; } ]; name = "mtr-0.95"; outputsToInstall = [ "out" ]; platforms = [ "i686-cygwin" "x86_64-cygwin" "x86_64-darwin" "i686-darwin" "aarch64-darwin" "armv7a-darwin" "i686-freebsd" "x86_64-freebsd" "x86_64-solaris" "aarch64-linux" "armv5tel-linux" "armv6l-linux" "armv7a-linux" "armv7l-linux" "i686-linux" "m68k-linux" "mipsel-linux" "powerpc64-linux" "powerpc64le-linux" "riscv32-linux" "riscv64-linux" "s390-linux" "s390x-linux" "x86_64-linux" "aarch64-netbsd" "armv6l-netbsd" "armv7a-netbsd" "armv7l-netbsd" "i686-netbsd" "m68k-netbsd" "mipsel-netbsd" "powerpc-netbsd" "riscv32-netbsd" "riscv64-netbsd" "x86_64-netbsd" "i686-openbsd" "x86_64-openbsd" "x86_64-redox" ]; position = "/nix/store/ccg2bflff3j9kcghnbfw168r4v6h5ci1-nixpkgs/nixpkgs/pkgs/tools/networking/mtr/default.nix:47"; unfree = false; unsupported = false; }; name = "mtr-0.95"; out = { outPath = "/nix/store/f9iya5c9i8fdljsxjnxp2907f89fvxsp-mtr-0.95"; }; outPath = "/nix/store/f9iya5c9i8fdljsxjnxp2907f89fvxsp-mtr-0.95"; outputs = [ "out" ]; system = "aarch64-darwin"; type = "derivation"; } { meta = { available = true; broken = false; changelog = "https://github.com/htop-dev/htop/blob/3.1.2/ChangeLog"; description = "An interactive process viewer for Linux"; homepage = "https://htop.dev"; insecure = false; license = { deprecated = false; free = true; fullName = "GNU General Public License v2.0 only"; redistributable = true; shortName = "gpl2Only"; spdxId = "GPL-2.0-only"; url = "https://spdx.org/licenses/GPL-2.0-only.html"; }; maintainers = [ { email = "rob.vermaas@gmail.com"; github = "rbvermaa"; githubId = 353885; name = "Rob Vermaas"; } { email = "ricky@elrod.me"; github = "relrod"; githubId = 43930; name = "Ricky Elrod"; } ]; name = "htop-3.1.2"; outputsToInstall = [ "out" ]; platforms = [ "i686-cygwin" "x86_64-cygwin" "x86_64-darwin" "i686-darwin" "aarch64-darwin" "armv7a-darwin" "i686-freebsd" "x86_64-freebsd" "aarch64-genode" "i686-genode" "x86_64-genode" "x86_64-solaris" "js-ghcjs" "aarch64-linux" "armv5tel-linux" "armv6l-linux" "armv7a-linux" "armv7l-linux" "i686-linux" "m68k-linux" "mipsel-linux" "powerpc64-linux" "powerpc64le-linux" "riscv32-linux" "riscv64-linux" "s390-linux" "s390x-linux" "x86_64-linux" "mmix-mmixware" "aarch64-netbsd" "armv6l-netbsd" "armv7a-netbsd" "armv7l-netbsd" "i686-netbsd" "m68k-netbsd" "mipsel-netbsd" "powerpc-netbsd" "riscv32-netbsd" "riscv64-netbsd" "x86_64-netbsd" "aarch64_be-none" "aarch64-none" "arm-none" "armv6l-none" "avr-none" "i686-none" "msp430-none" "or1k-none" "m68k-none" "powerpc-none" "powerpcle-none" "riscv32-none" "riscv64-none" "s390-none" "s390x-none" "vc4-none" "x86_64-none" "i686-openbsd" "x86_64-openbsd" "x86_64-redox" "wasm64-wasi" "wasm32-wasi" "x86_64-windows" "i686-windows" ]; position = "/nix/store/ccg2bflff3j9kcghnbfw168r4v6h5ci1-nixpkgs/nixpkgs/pkgs/tools/system/htop/default.nix:45"; unfree = false; unsupported = false; }; name = "htop-3.1.2"; out = { outPath = "/nix/store/pyrk5rkdx5aqf06ghv5bz2mp66q1ja8x-htop-3.1.2"; }; outPath = "/nix/store/pyrk5rkdx5aqf06ghv5bz2mp66q1ja8x-htop-3.1.2"; outputs = [ "out" ]; system = "aarch64-darwin"; type = "derivation"; } ]%
I note that REPEAT shows up only once:
license = <REPEAT>
And if I replace <REPEAT>
with "REPEAT"
in that file it fixes the problem and nix-env --install works again.
Got similar problem after executing nix upgrade-nix
.
The quick hack proposed by @bonds above worked for me too.
Might be related to this piece of code https://github.com/NixOS/nix/commit/e9c04c3351b4b3acae2d154b9aba808c3600054f
That is the only thing I found with "
@edolstra
@bonds on nixos
obviously all files under nix/...
are read-only, so how to change the offending <REPEAT>
?
(mind you, this occurred after trying to install from a local clone of nixpkgs
, and nowhere in the source tree does this word occur).
Don't use nix-env
@ppenguin I was able to get around this by adding ~/empty.nix with just ""
in it and doing:
nix-env -I REPEAT=$HOME/empty.nix
or
NIX_PATH=$NIX_PATH:REPEAT=$HOME/empty.nix ...
Also worth noting that after I did this and upgraded my user profile and system, I no longer have <REPEAT>
in my manifest, and nix-env is back to working like normal. I'm not 100% sure what fixed it.
@bonds on nixos obviously all files under nix/... are read-only, so how to change the offending
?
Dunno...I just used vi
and ignored the warning that the file was read-only. root can do what he wants. ;)
@bonds on nixos obviously all files under nix/... are read-only, so how to change the offending ?
Dunno...I just used
vi
and ignored the warning that the file was read-only. root can do what he wants. ;)
@bonds I take it you're not on nixos
, there the nix-store itself is read-only (also for root), but the solution of @corngood works like a charm and is probably a more "idiomatic" workaround.
That’s right, I’m on MacOS.
On Mar 17, 2022, at 1:02 AM, ppenguin @.***> wrote:
@bonds on nixos obviously all files under nix/... are read-only, so how to change the offending ?
Dunno...I just used vi and ignored the warning that the file was read-only. root can do what he wants. ;)
@bonds I take it you're not on nixos, there the nix-store itself is read-only (also for root), but the solution of @corngood works like a charm and is probably a more "idiomatic" workaround.
— Reply to this email directly, view it on GitHub, or unsubscribe. Triage notifications on the go with GitHub Mobile for iOS or Android. You are receiving this because you were mentioned.
As a minimal fix for this, I ran the following and after that nix-env
was operational:
env NIX_PATH="REPEAT=/dev/null" nix-env --upgrade
Let's reopen this until the fix hits nixpkgs master at least.
Wow, many thanks for your help 💯 really great community help here ❤️ 💟 😍 totally awesome 😄 I will add this to my docker-build-stuff and will test it.
As a minimal fix for this, I ran the following and after that
nix-env
was operational:env NIX_PATH="REPEAT=/dev/null" nix-env --upgrade
Don't use nix-env
@Artturin what should I use instead?
@edolstra Correct me if I'm wrong, but my understanding of https://github.com/NixOS/nix/pull/6296 is that it fixes generating the env-manifest.nix
, but if I already have an env-manifest.nix
(linked from ~/.nix-profile/manifest.nix
) with <REPEAT>
s in it, there's no way to recover the data that got hidden with <REPEAT>
s?
So anyone who used nix-env
in the few weeks in which it was broken, now has to use NIX_PATH="REPEAT=/dev/null" nix-env --upgrade
, with no other workaround?
EDIT: also, the workaround worked for me, and I updated over a week ago (22.05pre362644.1ec61dd4167
to be exact) - I believe this means that I already have a fixed Nix, which is why the workaround worked, but there's no reason to keep this issue open unless some <REPEAT>
special-casing when reading the manifest is added.
EDIT2: disregard above, that was quite far off from the right understanding, see https://github.com/NixOS/nixpkgs/issues/163374#issuecomment-1086903595.
The fix is neither released nor in nixpkgs AFAICT.
The fix is neither released nor in nixpkgs AFAICT.
The "fix" doesn't unbreak <REPEAT>
, it just avoids generating it (and you need the workaround mentioned above, or to roll back your user profile to a version without <REPEAT>
, to get rid of <REPEAT>
in the first place).
But AFAICT it did get into nixpkgs:
$ cat /run/current-system/nixos-version
22.05pre362644.1ec61dd4167
$ nix repl
Welcome to Nix 2.7.0. Type :? for help.
nix-repl> let x = ["foo"]; in [ x x ]
[ [ ... ] «repeated» ]
nix-repl> :q
The «repeated»
comes from https://github.com/NixOS/nix/pull/6296 - it would've been <REPEAT>
before.
EDIT: comment hidden because it was very confused, see https://github.com/NixOS/nixpkgs/issues/163374#issuecomment-1086903595.
The repl has used this notation already prior to this patch which is not part of any Nix release nor applied as a patch in nixpkgs.
Alright, I was quite wrong, but also after spending a few hours being confused it makes sense now.
In short, I didn't notice the original repro had two installed packages and apparently the only multi-package operation I ever did was the bulk upgrade (after the system-level nixos-rebuild switch --upgrade
).
After the move to home-manager
it's a bit annoying to mess with nix-env
but I was able to use NIX_PROFILE
to demonstrate the problem still being in my nix-env
:
$ cd $(mktemp -d)
$ ln -s . profile
$ NIX_PROFILE=$PWD/profile nix-env -iA nixos.gnumake nixos.gnupg
installing 'gnumake-4.3'
installing 'gnupg-2.3.4'
$ grep '<REPEAT>' ./profile/manifest.nix # most of the output replaced with "..." for brevity
... license = <REPEAT>; ...
... maintainers = [ ... <REPEAT> ]; ...
... platforms = <REPEAT>; ...
$ NIX_PROFILE=$PWD/profile nix-env -iA nixos.hello
installing 'hello-2.12'
error: file 'REPEAT' was not found in the Nix search path (add it using $NIX_PATH or -I)
at /nix/store/a8fqrf8j3sv7fngmx0zzix22508fggrd-env-manifest.nix:1:2758:
I use nix on macOS. I have https://github.com/nixos/nixpkgs/archive/master.tar.gz nixpkgs
in ~/.nix-channels
.
For a month or so now, I get this error whenever running nix-env -u
after nix-channel --update
:
error: file 'REPEAT' was not found in the Nix search path (add it using $NIX_PATH or -I)
I know from the above that I can work around it with NIX_PATH="REPEAT=/dev/null"
, which does work, but it's not clear from the above comments what I'm supposed to do to fix it permanently?
I use nix on macOS. I have
https://github.com/nixos/nixpkgs/archive/master.tar.gz nixpkgs
in~/.nix-channels
.For a month or so now, I get this error whenever running
nix-env -u
afternix-channel --update
:error: file 'REPEAT' was not found in the Nix search path (add it using $NIX_PATH or -I)
I know from the above that I can work around it with
NIX_PATH="REPEAT=/dev/null"
, which does work, but it's not clear from the above comments what I'm supposed to do to fix it permanently?
Upgrading in a root shell fixed it for me. I also use the unstable channel and am on Fedora 35 however.
I reinstalled Nix and rebooted twice just to fix this issue. I was pretty sure I had messed up something, and obviously I had the freshest packages on my user profile, so I don't understand what I did right to fix it.
@jbg what version of nix are you running? I had the same issue and was able to fix it by running a stable version of nix-env once:
$ nix-env -iA nixpkgs.nixpkgs-fmt
replacing old 'nixpkgs-fmt-1.2.0'
installing 'nixpkgs-fmt-1.2.0'
error: file 'REPEAT' was not found in the Nix search path (add it using $NIX_PATH or -I)
at /nix/store/7sh64rs37jggd00zlxxx1afav1yn6f60-env-manifest.nix:1:4991:
Install stable version of nix:
$ nix-channel --add https://nixos.org/channels/nixpkgs-21.11-darwin stable
$ nix-channel --update
unpacking channels...
$ nix-channel --list
nixpkgs https://nixos.org/channels/nixpkgs-unstable
stable https://nixos.org/channels/nixpkgs-21.11-darwin
$ env NIX_PATH="REPEAT=/dev/null" nix-env -iA stable.nix
installing 'nix-2.3.16'
# output omitted ...
building '/nix/store/75vfjxsy1clpm53y7v68pgf0b81lsypv-user-environment.drv'...
$ nix-env --version
nix-env (Nix) 2.7.0
$ ~/.nix-profile/bin/nix-env --version
nix-env (Nix) 2.3.16
Install a single derivation with the stable version of nixpkgs. After that, the old version works as well.
$ ~/.nix-profile/bin/nix-env -iA nixpkgs.nixpkgs-fmt
replacing old 'nixpkgs-fmt-1.2.0'
installing 'nixpkgs-fmt-1.2.0'
$ nix-env -iA nixpkgs.nixpkgs-fmt
replacing old 'nixpkgs-fmt-1.2.0'
installing 'nixpkgs-fmt-1.2.0'
Afterwards, you can even nix-env -e nix
to remove the stable version and it still works. I'm not sure why.
Afterwards, you can even
nix-env -e nix
to remove the stable version and it still works. I'm not sure why.
The bug is only triggered when installing/upgrading multiple packages, which share some attributes (the sharing comes from evaluating <nixpkgs>
once in the same nix-env
execution, there's no deduplication with what's already in the profile manifest).
(that was the source of my confusion in https://github.com/NixOS/nixpkgs/issues/163374#issuecomment-1086903595 as well)
So you only need the workaround once (to "repair" the profile manifest), then either:
Describe the bug
Can not install an simple expression with
nix-env
. I always get the errorerror: file 'REPEAT' was not found in the Nix search path (add it using $NIX_PATH or -I)
Steps To Reproduce
Steps to reproduce the behavior:
Create two files:
Dockerfile
expression.nix
And run
docker build .
Expected behavior
The simple script is installed in the env :)
Metadata