4.8 KiB
4.8 KiB
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 |
Quick start
- Yoink the latest stable build of NixOS 20.09.
- 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/dotfiles
- 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!
Management
And I say, bin/hey
. What's going on?
Command | Description |
---|---|
hey rebuild |
Rebuild this flake (shortcut: hey re ) |
hey upgrade |
Update flake lockfile and switch to it (shortcut: hey up ) |
hey rollback |
Roll back to previous system generation |
hey gc |
Runs nix-collect-garbage -d . Use sudo to clean system profile |
hey push REMOTE |
Deploy these dotfiles to REMOTE (over ssh) |
hey check |
Run tests and checks for this flake |
hey show |
Show flake outputs of this repo |
Frequently asked questions
-
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.