Reproducible set of dotfiles and packages for Linux and macOS
This is the setup I use on all my machines. The installation process is very
simple and allows me to get up and running on any new machine in a matter of
seconds. The following is run on a pristine Ubuntu machine with curl
available:
$ # install Nix
$ curl https://nixos.org/nix/install | sh
$ echo ". $HOME/.nix-profile/etc/profile.d/nix.sh" >> .bashrc # optional
$ . $HOME/.nix-profile/etc/profile.d/nix.sh
$ # pull the homies
$ nix-shell -p git --run 'git clone http://github.com/nmattia/homies'
$ # applying the config
$ cd homies; nix-env -f default.nix -i --remove-all
$ echo 'if [ -x "$(command -v bashrc)" ]; then $(bashrc); fi' >> .bashrc
The homies will be available in all subsequent shells, including the customizations (vim with my favorite plugins, tmux with my customized configuration, etc).
Trying out the package set:
$ nix-shell --pure
Installing the package set:
$ nix-env -f default.nix -i --remove-all
Listing the currently installed packages:
$ nix-env -q
Listing the previous and current configurations:
$ nix-env --list-generations
Rolling back to the previous configuration:
$ nix-env --rollback
Deleting old configurations:
$ nix-env --delete-generations [3 4 9 | old | 30d]