Open Et7f3 opened 2 months ago
Shells created by nix shell
are, confusingly, entirely different from those created by nix-shell
and nix develop
. The latter two create development shells, aka "the shell for building X package", the former creates "the shell for using X package"
Try using nix develop
See also: #4715
Thanks I forgot to mention this thread (I have read before opening this issue). IIRC it also mentioned shellHooks that was not called so I opened this issue to track it. I understand the difference between the three:
with nix-shell we could do nix-shell -p 'python3.withPackages(p:[p.diagrams])'
and it create a python with a usable library. It is not a syntax usable with flake (that expect only attribute and not a function with args: we can't use --args/--argstr)
Here is the issue: The documentation explain "the shell for using X package" but should be "the shell for using X binary package" or allow to also use library.
Try using
nix develop
nix shell nixpkgs#python3Packages.diagrams
only a non-existent path:
$ nix shell nixpkgs#python3Packages.diagrams --command sh -c 'env | grep diagrams'
PATH=/nix/store/ilnk4wsnfppadn74apcfbbcpj4a1f3zi-python3.11-diagrams-0.23.4/bin:...
$ ls /nix/store/ilnk4wsnfppadn74apcfbbcpj4a1f3zi-python3.11-diagrams-0.23.4/bin
ls: cannot access '/nix/store/ilnk4wsnfppadn74apcfbbcpj4a1f3zi-python3.11-diagrams-0.23.4/bin': No such file or directory
only python3: I get callable python and both:
$ nix shell nixpkgs#python3 nixpkgs#python3Packages.diagrams --command sh -c 'env | grep diagrams; python3 -c "import diagrams"'
PATH=/nix/store/ilnk4wsnfppadn74apcfbbcpj4a1f3zi-python3.11-diagrams-0.23.4/bin:/nix/store/7wz6hm9i8wljz0hgwz1wqmn2zlbgavrq-python3-3.11.8/bin:...
Traceback (most recent call last):
File "<string>", line 1, in <module>
ModuleNotFoundError: No module named 'diagrams'
I have tried hard before opening issue (but since I did many test I didn't put them all because I forgot)
Problem
I can't find this behavior in v2 cli. In
nix develop
the hooks are called. I tried the mkShell technique (used by nix-shell):nix-shell -p abcd
<=>{...}@args: with import <nixpkgs> args; (pkgs.runCommandCC or pkgs.runCommand) "shell" { buildInputs = [ (abcd) ]; } ""
So I triednix shell nixpkgs#runCommand --argstr name shell
to set the first parameter but I got:Should I use -E ? then it would become relly fat expression and then writing a proper flake.nix is more concise.
Proposal
None I need help
Checklist
Priorities
Add :+1: to issues you find important.