| bin | ||
| config | ||
| hosts | ||
| lib | ||
| modules | ||
| overlays | ||
| packages | ||
| templates/minimal | ||
| default.nix | ||
| flake.lock | ||
| flake.nix | ||
| LICENSE | ||
| README.md | ||
| shell.nix | ||
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 build of NixOS 21.05.
- Boot into the installer.
- Do your partitions and mount your root to
/mnt(for example) - Install these dotfiles:
nix-shell -p git nixFlakesgit clone https://github.com/hlissner/dotfiles /mnt/etc/nixos- Install NixOS:
nixos-install --root /mnt --flake /mnt/etc/nixos#XYZ, whereXYZis the host you want to install. Use#genericfor a simple, universal config, or create a sub-directory inhosts/for your device. See host/kuro for an example. - Reboot!
- Change your
rootand$USERpasswords!
Management
And I say, bin/hey. What's going on?
Usage: hey [global-options] [command] [sub-options]
Available Commands:
check Run 'nix flake check' on your dotfiles
gc Garbage collect & optimize nix store
generations Explore, manage, diff across generations
help [SUBCOMMAND] Show usage information for this script or a subcommand
rebuild Rebuild the current system's flake
repl Open a nix-repl with nixpkgs and dotfiles preloaded
rollback Roll back to last generation
search Search nixpkgs for a package
show [ARGS...]
ssh HOST [COMMAND] Run a bin/hey command on a remote NixOS system
swap PATH [PATH...] Recursively swap nix-store symlinks with copies (or back).
test Quickly rebuild, for quick iteration
theme THEME_NAME Quickly swap to another theme module
update [INPUT...] Update specific flakes or all of them
upgrade Update all flakes and rebuild system
Options:
-d, --dryrun Don't change anything; preform dry run
-D, --debug Show trace on nix errors
-f, --flake URI Change target flake to URI
-h, --help Display this help, or help for a specific command
-i, -A, -q, -e, -p Forward to nix-env
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 you manage secrets?
With agenix.
-
How do I change the default username?
- Set the
USERenvironment variable 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 the
-
Why did you write bin/hey?
I envy Guix's CLI and want similar for NixOS, but its toolchain is spread across many commands, none of which are as intuitive:
nix,nix-collect-garbage,nixos-rebuild,nix-env,nix-shell.I don't claim
heyis the answer, but everybody likes their own brew. -
How 2 flakes?
Would it be the NixOS experience if I gave you all the answers in one, convenient place?
No. Suffer my pain:
- 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.