Neat! Having to patch binaries to run them was always one of the most painful parts of NixOS and the major deal breaker every time I talked about it to friends and other people. Having some automated way to patch them would help a lot!
That lets me run using nmap in my terminal, and it will be installed and available as long as that terminal is open.
It’s not eagerly uninstalled, but I know that I can run nix garbage-collect if I ever want to cleanup tools that I’m not using regularly, and in the meantime using will pick it up automatically.
I find this super helpful for one-off utilities, it’s effectively npx for the shell in general.
It would be pretty trivial to extend this command to remove the package after zsh exits though!
Yes! nix-shell -p python3 python3Packages.requests python3Packages.pip python3Packages.readchar python3Packages.jinja2 will open up a shell that contains python3 and all those libraries, when you exit the shell everything is “uninstalled” from your system. This is exactly what I do to avoid cluttering my machine with binaries and libraries I only use once. It’s also very useful to workaround our universe of conflicting software packages, for example if you have to run some scripts in python2 and others in python3.
I say “uninstalled” because, in reality, there’s a big cache so data isn’t actually deleted for a while.
Neat! Having to patch binaries to run them was always one of the most painful parts of NixOS and the major deal breaker every time I talked about it to friends and other people. Having some automated way to patch them would help a lot!
Does nix have something similar to the python context managers, that deletes packages after the operation is done?
For example:
I have this function in my shell config:
That lets me run
using nmap
in my terminal, and it will be installed and available as long as that terminal is open.It’s not eagerly uninstalled, but I know that I can run
nix garbage-collect
if I ever want to cleanup tools that I’m not using regularly, and in the meantimeusing
will pick it up automatically.I find this super helpful for one-off utilities, it’s effectively
npx
for the shell in general.It would be pretty trivial to extend this command to remove the package after zsh exits though!
Yes!
nix-shell -p python3 python3Packages.requests python3Packages.pip python3Packages.readchar python3Packages.jinja2
will open up a shell that contains python3 and all those libraries, when you exit the shell everything is “uninstalled” from your system. This is exactly what I do to avoid cluttering my machine with binaries and libraries I only use once. It’s also very useful to workaround our universe of conflicting software packages, for example if you have to run some scripts in python2 and others in python3.I say “uninstalled” because, in reality, there’s a big cache so data isn’t actually deleted for a while.
It will not remove it from disk, but it will remove it from the environment (so you will now be able to call it) with
nix-shell
.