So I have decided to start my personal Nix FAQ, with questions I ask to myself, and to which I often don't have the answer. Please do not hesitate to provide them 🙂
@otini "How to find the Nix store path associated to an installed package?"
I use nix-build for this (though it has the side-effect of downloading/building the package if you *didn't* have it already, it won't add it to your current environment, so no practical difference except disk space)
$ nix-build '<nixpkgs>' -A hello
@telent Ah, thank you very much! 😄 Shall I credit you on the page?
- How can I build a package locally instead of downloading the binary?
Add `--option substitute false`, or set it globally. (search `man nix.conf` for "substitute")
- Is there a command to delete a specific derivation from the Nix store?
$ nix-store --delete …
You have to be root for that.
Derivations are just one-file store entries, containing low-level building commands, and having .drv extension. Don't take much space.
@amiloradovsky Ok so I guessed my question was, how to uninstall a package and delete the “cached” files, without garbage-collecting entire generations? In order to rebuild a package, for example.
@otini I don't know. But you can garbage-collect only a specified amount of space: e.g.
# nix-store --gc --max-freed 1G
- How can I get the Nix directory (containing the code and Nix files) of a package?
It's all in `~/.nix-defexpr/channels_root/nixos/`, or in the user's own channel(s).
See there `pkgs/top-level/all-packages.nix`, where all the "packages" have to be registered: some are path to an actual file with a Nix-expression, some are functions, generating the "packages" for each combination of inputs.
But you can't/shouldn't edit those. Clone the #Nixpkgs repository instead and edit it in there.
The social network of the future: No ads, no corporate surveillance, ethical design, and decentralization! Own your data with Mastodon!