You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
I'm not familiar with Nix nor nixery so I'm likely doing something wrong. That said, I noticed an inconsistent behaviour while trying nixery out:
I tried to run the nixery.dev/shell/go image and I noticed that the go and gofmt binaries were not in the path (although they were in the /nix/store/...)
I noticed that other packages get installed and symlinked from /bin (I tried with a few packages like findutils and kubeseal and they indeed become accessible via a symlink from /bin).
Here is how to reproduce with a small/minimal example:
has symlink:
$ docker run -ti nixery.dev/kubeseal/bash/coreutils sh
sh-4.4# ls -l /bin/kubeseal
lrwxrwxrwx 1 0 0 71 Jan 1 1970 /bin/kubeseal -> /nix/store/dz3cf474s8pxw530n322r5hxmlpg41a2-kubeseal-0.9.6/bin/kubeseal
sh-4.4# exit
doesn't have the symlink:
$ docker run -ti nixery.dev/go/bash/coreutils sh
sh-4.4# ls -l /bin/go
ls: cannot access '/bin/go': No such file or directory
sh-4.4# ls -l /nix/store/*-go*/bin/go
-r-xr-xr-x 1 0 0 15112249 Jan 1 1970 /nix/store/s84r3m5162gy1glc6kb0sfsadw8792lq-go-1.13.5/bin/go
I'd expect the go package to be accessible from /bin/go.
Interestingly, when using the go package alone, it seems in the PATH (at least docker can run it as a command):
$ docker run -ti nixery.dev/go go
Go is a tool for managing Go source code.
...
while when I add any other package to it, it cannot be run:
docker run -ti nixery.dev/go/coreutils go
docker: Error response from daemon: OCI runtime create failed: container_linux.go:346: starting container process caused "exec: \"go\": executable file not found in $PATH": unknown
The text was updated successfully, but these errors were encountered:
Hey! Thanks for flagging this. I think I see what's going on:
tazjin@vauxhall ~> nix-build -E '(import <nixpkgs> {}).go'; and ls -lh result/
/nix/store/h0wih1nab037j9biy39laagl5dwlgp29-go-1.13.6
total 8.0K
lrwxrwxrwx 1 tazjin primarygroup 12 Jan 1 1970 bin -> share/go/bin/
dr-xr-xr-x 2 tazjin primarygroup 4.0K Jan 1 1970 nix-support/
dr-xr-xr-x 3 tazjin primarygroup 4.0K Jan 1 1970 share/
The Nix derivation for Go places the actual binaries in share/go/bin for some reason and symlinks them from the package's root, this symlink will be dropped by the mechanism that Nixery uses to construct the file-system root (nixpkgs.symlinkJoin).
To solve this generically (which we'll need to, as having package-specific overrides isn't really sustainable) we either need a symlinkJoin that "merges" symlinks or defer to #58. I'll have a think about it!
I'm not familiar with Nix nor nixery so I'm likely doing something wrong. That said, I noticed an inconsistent behaviour while trying nixery out:
I tried to run the
nixery.dev/shell/go
image and I noticed that thego
andgofmt
binaries were not in the path (although they were in the/nix/store/...
)I noticed that other packages get installed and symlinked from
/bin
(I tried with a few packages likefindutils
andkubeseal
and they indeed become accessible via a symlink from/bin
).Here is how to reproduce with a small/minimal example:
has symlink:
doesn't have the symlink:
I'd expect the
go
package to be accessible from/bin/go
.Interestingly, when using the
go
package alone, it seems in the PATH (at least docker can run it as a command):while when I add any other package to it, it cannot be run:
The text was updated successfully, but these errors were encountered: