The Nix Way
This is a guide to my personal dotfiles repo (opens in a new tab) (mainly for macOS systems), use it as a reference to create your own.
What's Nix? It's a "functional" package manager.
With Nix Flakes, you provide a
flake.nix file that describes your system, with input, couple "functions" that define your system, then it outputs a "derivation" that describes your system.
Like a function, if you give it the same input, you get the same output.
I suggest anyone that wants to try out Nix not to use the official installer, but to use the Nix Installer (opens in a new tab) by Determinate Systems. It installs Nix, but also gives you an easy way to fully remove it.
curl --proto '=https' --tlsv1.2 -sSf -L https://install.determinate.systems/nix | sh -s -- install
After this, if you are following online guides, they'll probably tell you to run some commands start with
nix-channel, don't use it!
As mentioned above, Nix Flakes is the new way to use Nix, it's more deterministic and reproducible,
nix- commands are considered legacy and will be deprecated in the future.
Since we'll be using Nix Flakes, to prevent typing a lot of
--experimental-features flags, we can set it in our
echo "experimental-features = nix-command flakes" > ~/.config/nix/nix.conf
To build the system configuration, we'll use the
nix build command.
nix build github:stepbrobd/dotfiles#darwinConfigurations.$(nix --extra-experimental-features nix-command eval --impure --raw --expr "builtins.currentSystem") --show-trace