2020-04-22 16:52:48 -07:00
[![Made with Doom Emacs ](https://img.shields.io/badge/Made_with-Doom_Emacs-blueviolet.svg?style=flat-square&logo=GNU%20Emacs&logoColor=white )](https://github.com/hlissner/doom-emacs)
2021-02-22 19:44:52 -08:00
[![NixOS 21.05 ](https://img.shields.io/badge/NixOS-v21.05-blue.svg?style=flat-square&logo=NixOS&logoColor=white )](https://nixos.org)
2020-04-22 16:52:48 -07:00
2020-10-01 15:46:04 -07:00
**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.
2020-10-26 11:18:12 -07:00
< img src = "/../screenshots/alucard/fakebusy.png" width = "100%" / >
2020-02-11 15:40:54 -08:00
< p align = "center" >
2020-10-26 11:18:12 -07:00
< span > < img src = "/../screenshots/alucard/desktop.png" height = "178" / > < / span >
< span > < img src = "/../screenshots/alucard/rofi.png" height = "178" / > < / span >
< span > < img src = "/../screenshots/alucard/tiling.png" height = "178" / > < / span >
2020-02-11 15:40:54 -08:00
< / p >
2020-10-01 15:46:04 -07:00
------
2020-04-07 16:44:20 -07:00
2020-10-01 15:46:04 -07:00
| | |
|-|-|
| **Shell:** | zsh + zgen |
| **DM:** | lightdm + lightdm-mini-greeter |
| **WM:** | bspwm + polybar |
| **Editor:** | [Doom Emacs][doom-emacs] (and occasionally [vim]) |
| **Terminal:** | st |
| **Launcher:** | rofi |
| **Browser:** | firefox |
| **GTK Theme:** | [Ant Dracula ](https://github.com/EliverLara/Ant-Dracula ) |
2020-01-12 23:11:02 -08:00
2020-10-01 15:46:04 -07:00
-----
2020-04-07 16:44:20 -07:00
2017-12-05 22:39:10 -08:00
## Quick start
2016-10-19 07:56:37 -07:00
2021-02-22 19:44:52 -08:00
1. Yoink the latest build of [NixOS 21.05][nixos].
2020-10-01 15:46:04 -07:00
2. Boot into the installer.
2021-01-01 21:26:00 -08:00
3. Do your partitions and mount your root to `/mnt` ([for example](hosts/kuro/README.org))
4. Install these dotfiles:
5. `nix-shell -p git nixFlakes`
2021-01-29 11:06:56 -08:00
6. `git clone https://github.com/hlissner/dotfiles /mnt/etc/nixos`
2021-01-01 21:26:00 -08:00
7. Install NixOS: `nixos-install --root /mnt --flake /mnt/etc/nixos#XYZ` , where
`XYZ` is [the host you want to install ](hosts/ ). Use `#generic` for a
simple, universal config, or create a sub-directory in `hosts/` for your device. See [host/kuro] for an example.
8. Reboot!
9. Change your `root` and `$USER` passwords!
2020-10-01 15:46:04 -07:00
## Management
2020-10-11 18:28:38 -07:00
And I say, `bin/hey` . [What's going on? ](http://hemansings.com/ )
2020-10-10 23:05:22 -07:00
2021-02-28 21:36:31 -08:00
```
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
```
2020-01-12 23:11:02 -08:00
2020-10-01 15:46:04 -07:00
## Frequently asked questions
2020-01-13 16:56:39 -08:00
2020-10-11 20:49:54 -07:00
+ **Why NixOS?**
Because declarative, generational, and immutable configuration is a godsend
when you have a fleet of computers to manage.
2021-02-28 21:36:31 -08:00
+ **How do you manage secrets?**
With [agenix].
2020-10-01 15:46:04 -07:00
+ **How do I change the default username?**
2020-04-06 20:09:15 -07:00
2021-02-28 21:36:31 -08:00
1. Set the `USER` environment variable the first time you run `nixos-install` :
`USER=myusername nixos-install --root /mnt --flake /path/to/dotfiles#XYZ`
2020-10-01 15:46:04 -07:00
2. Or change `"hlissner"` in modules/options.nix.
2020-12-11 16:08:53 -08:00
+ **Why did you write bin/hey?**
2021-02-28 21:36:31 -08:00
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` .
2020-12-11 16:08:53 -08:00
2021-02-28 21:36:31 -08:00
I don't claim `hey` is the answer, but everybody likes their own brew.
2020-10-01 15:46:04 -07:00
+ **How 2 flakes?**
2020-01-13 16:56:39 -08:00
2020-12-11 16:08:53 -08:00
Would it be the NixOS experience if I gave you all the answers in one,
convenient place?
2021-02-28 21:36:31 -08:00
No. Suffer my pain:
2020-12-11 16:08:53 -08:00
+ [A three-part tweag article that everyone's read. ](https://www.tweag.io/blog/2020-05-25-flakes/ )
+ [An overengineered config to scare off beginners. ](https://github.com/nrdxp/nixflk )
+ [A minimalistic config for scared beginners. ](https://github.com/colemickens/nixos-flake-example )
+ [A nixos wiki page that spells out the format of flake.nix. ](https://nixos.wiki/wiki/Flakes )
+ [Official documentation that nobody reads. ](https://nixos.org/learn.html )
+ [Some great videos on general nixOS tooling and hackery. ](https://www.youtube.com/channel/UC-cY3DcYladGdFQWIKL90SQ )
+ A couple flake configs that I
[may ](https://github.com/LEXUGE/nixos )
[have ](https://github.com/bqv/nixrc )
[shamelessly ](https://git.sr.ht/~dunklecat/nixos-config/tree )
[rummaged ](https://github.com/utdemir/dotfiles )
[through ](https://github.com/purcell/dotfiles ).
2020-12-18 23:57:25 -08:00
+ [Some notes about using Nix ](https://github.com/justinwoo/nix-shorts )
+ [What helped me figure out generators (for npm, yarn, python and haskell) ](https://myme.no/posts/2020-01-26-nixos-for-development.html )
2020-12-11 16:08:53 -08:00
+ [What y'all will need when Nix drives you to drink. ](https://www.youtube.com/watch?v=Eni9PPPPBpg )
2020-01-13 16:56:39 -08:00
2020-01-12 23:11:02 -08:00
[doom-emacs]: https://github.com/hlissner/doom-emacs
2020-10-01 15:46:04 -07:00
[vim]: https://github.com/hlissner/.vim
2021-02-15 14:18:58 -08:00
[nixos]: https://releases.nixos.org/?prefix=nixos/unstable/
2020-10-01 15:46:04 -07:00
[host/kuro]: https://github.com/hlissner/dotfiles/tree/master/hosts/kuro
2021-02-28 21:36:31 -08:00
[agenix]: https://github.com/ryantm/agenix