This is my collection of configuration files.
It uses home-manager—a Nix-based tool—to install
programs and create their configuration files based off the
home.nix file in this repository. I wrote more about it in a
blog post.
(I used to use GNU Stow. The last Stow-based commit was
4f1feee1e.)
Install Nix with Nix Flake support enabled, for example by using the Determinate Systems installer.
You should be able to run the nix flake command in a shell.
Next, clone this repository. We'll use ~/Code/dotfiles.
$ git clone [email protected]:alexpearce/dotfiles.git ~/Code/dotfilesThe home-manager profile can then be built and activated:
$ nix run home-manager/master -- switch --flake ~/Code/dotfiles#apearwinTo update dependencies:
$ nix flake update ~/Code/dotfilesI like to set fish as my default shell. On macOS this means:
- Editing
/etc/shellsto include an entry for the home-manager-managedfishbinary at~/.nix-profile/bin/fish. - Setting the default shell with
chsh -s ~/.nix-profile/bin/fish.
As an alternative to using home-manager alone, the configuration supports using it with nix-darwin.
The initial setup requires moving the Nix configuration file created by the Determinate Systems installer out of the way, so that nix-darwin can manage it for us.
sudo mv /etc/nix/nix.conf{,.before-nix-darwin}
nix --extra-experimental-features 'nix-command flakes' run nix-darwin -- switch --flake (pwd)
Subsequent rebuilds, after configuration changes, are simpler.
darwin-rebuild switch --flake (pwd)
MIT.