51d63a1829
* Updated agenix: github:ryantm/agenix/ed7e69bff3c17671349839f696e88e345eb9eb24 -> github:ryantm/agenix/9eb981eeb552e0856cb562b7643b311933a0e992 * Updated emacs-overlay: github:nix-community/emacs-overlay/063ee066b5095dd2f21f47c582b04024674974a8 -> github:nix-community/emacs-overlay/daa4b15755f6cccb462efed696abceee0994bb96 * Updated home-manager: github:rycee/home-manager/f45c7000d544f17e5499e2ae6b505b5f705c5d61 -> github:rycee/home-manager/040ea28e448a93d24540b7cf2eda4b25300c5ab1 * Updated nixos-hardware: github:nixos/nixos-hardware/c9b965a43e582765f797f8b75d50cb2874b30f30 -> github:nixos/nixos-hardware/831de9cac9ff2ea8cf4c3742020ea92e82ac8ac3 * Updated nixpkgs: github:NixOS/nixpkgs/ff96a0fa5635770390b184ae74debea75c3fd534 -> github:NixOS/nixpkgs/29b0d4d0b600f8f5dd0b86e3362a33d4181938f9 * Updated nixpkgs-unstable: github:NixOS/nixpkgs/07b0c7bc4104b87cb5223ec10e32b863d10768ad -> github:NixOS/nixpkgs/d02b1cc8ed29b6967119fd95267ee1a955015d59 Also, removed noexec from /tmp because it screws with build processes that deploy/execute scripts to/out of /tmp, causing permission errors while building. |
||
---|---|---|
bin | ||
config | ||
hosts | ||
lib | ||
modules | ||
overlays | ||
packages | ||
templates/minimal | ||
.gitignore | ||
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 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!
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
USER
environment 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
hey
is 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.