Hey, you. You're finally awake. You were trying to configure your OS declaratively, right? Walked right into that NixOS ambush, same as us, and those dotfiles over there.
Shell: | zsh + zgen |
DM: | lightdm + lightdm-mini-greeter |
WM: | bspwm + polybar |
Editor: | Doom Emacs (and occasionally vim) |
Terminal: | st |
Launcher: | rofi |
Browser: | firefox |
GTK Theme: | Ant Dracula |
- Yoink the latest build of NixOS 21.03.
- Boot into the installer.
- Do your partitions and mount your root to
/mnt
(for example) - Install these dotfiles:
nix-shell -p git nixFlakes
git clone https://github.com/hlissner/dotfiles /mnt/etc/nixos
- Install NixOS:
nixos-install --root /mnt --flake /mnt/etc/nixos#XYZ
, whereXYZ
is the host you want to install. Use#generic
for a simple, universal config, or create a sub-directory inhosts/
for your device. See host/kuro for an example. - Reboot!
- Change your
root
and$USER
passwords!
And I say, bin/hey
. What's going on?
Command | Description |
---|---|
hey check |
Run tests and checks for this flake |
hey gc |
Runs nix-collect-garbage -d . Use --all to clean up system profile too. |
hey rebuild |
Rebuild this flake (shortcut: hey re ) |
hey rollback |
Roll back to previous system generation |
hey show |
Show flake outputs of this repo |
hey ssh REMOTE [COMMAND] |
Run a bin/hey command on REMOTE over ssh |
hey upgrade |
Update flake lockfile and switch to it (shortcut: hey up ) |
-
Why NixOS?
Because declarative, generational, and immutable configuration is a godsend when you have a fleet of computers to manage.
-
How do I change the default username?
- Set
USER
the first time you runnixos-install
:USER=myusername nixos-install --root /mnt --flake /path/to/dotfiles#XYZ
- Or change
"hlissner"
in modules/options.nix.
- Set
-
Why did you write bin/hey?
I'm nonplussed by the user story for nix's CLI tools and thought fixing it would be more productive than complaining about it on the internet. Then I thought, why not do both?
-
How 2 flakes?
Would it be the NixOS experience if I gave you all the answers in one, convenient place?
No, but here are some resources that helped me:
- A three-part tweag article that everyone's read.
- An overengineered config to scare off beginners.
- A minimalistic config for scared beginners.
- A nixos wiki page that spells out the format of flake.nix.
- Official documentation that nobody reads.
- Some great videos on general nixOS tooling and hackery.
- A couple flake configs that I may have shamelessly rummaged through.
- Some notes about using Nix
- What helped me figure out generators (for npm, yarn, python and haskell)
- What y'all will need when Nix drives you to drink.