Adding programs to PATH: Difference between revisions
Explain PATH Tags: Mobile edit Mobile web edit Visual edit |
Distinguish between *imperative* nix-env (bad) and *declarative* nix-env (good) |
||
| Line 29: | Line 29: | ||
|name=~/.config/home-manager/home.nix|lang=nix}} | |name=~/.config/home-manager/home.nix|lang=nix}} | ||
=== <code>nix-env</code> === | === Imperative <code>nix-env</code> === | ||
{{Main|Nix profiles}} | {{Main|Nix profiles}} | ||
<code>nix-env -iA hello</code> | <code>nix-env -iA hello</code> | ||
{{Warning|<code>nix-env</code> has some pitfalls and is considered deprecated by some: https://stop-using-nix-env.privatevoid.net/}} | {{Warning|Imperative <code>nix-env</code> has some pitfalls and is considered deprecated by some: https://stop-using-nix-env.privatevoid.net/}} | ||
=== Declarative <code>nix-env</code> === | |||
In an [[overlay]], create a new package that is the list of packages you'd like installed. Example:{{file|||3= | |||
final: prev: { | |||
userPackages = final.buildEnv { | |||
name = "userPackages"; | |||
paths = with final; [ | |||
hello | |||
]; | |||
}; | |||
} | |||
|name=~/.config/nixpkgs/overlays/userPackages.nix|lang=nix}} | |||
Then run <code>nix-env -riA nixpkgs.userPackages</code> to make this the only installed package. Use the same command after a channel update to get package updates (don't use <code>nix-env --upgrade</code>—it's very slow and will run out of RAM on smaller machines). | |||
=== <code>nix profile</code> (Flakes) === | === <code>nix profile</code> (Flakes) === | ||