My dotfiles: forked from https://github.com/hlissner/dotfiles
- Operating System: NixOS
- Shell: zsh + antigen
- DM: sddm + clairvoyance.nix
- WM: bspwm + polybar
- Editor: [Doom Emacs][doom-emacs] (and occasionally [vim][vimrc])
- Terminal: alacritty
- Launcher: rofi
- Browser: firefox
- GTK Theme: flat-remix-gtk
- Icon Theme: flat-remix-icon
Works on my machine ¯\_(ツ)_/¯
Note: if you're in China, use the mirror instead https://mirrors.tuna.tsinghua.edu.cn/help/nix/
- Yoink [NixOS 20.09][nixos] (must be newer than Sept 12, 2020 for
nixos-install --flake
). - Boot into the installer.
- Do your partitions and mount your root to
/mnt
git clone --recurse-submodules -j8 https://github.com/ztlevi/nix-dotfiles /mnt/etc/nixos
- OPTIONAL: Clone my private assets repo,
cd /mnt/etc/nixos && git clone https://github.com/ztlevi/dotty-assets.git assets
- Install NixOS:
nixos-install --root /mnt --flake /mnt/etc/nixos#XYZ
, whereXYZ
is your hostname. Use#generic
for a simple, universal config. - OPTIONAL: Create a sub-directory in
hosts/
for your device. See [host/kuro] as an example. - Reboot!
Note: hey re
equals sudo nixos-rebuild --flake .#kuro switch
. You can also add
-p <profile-name>
to assign a profile name.
- for fcitx, run the following script to install config and dict.
${DOTTY_CONFIG_HOME}/misc/chinese/install_fcitx5_config.sh
rm -rf $HOME/{.nix-channels,.nix-defexpr,.nix-profile,.config/nixpkgs}
sudo rm -rf /nix
if [[ $(_os) == "macos" ]]; then
# Delete Users in macos
for num in {1..32}; do sudo dscl . -delete /Users/nixbld$num; done
sudo dscl . -delete /Groups/nixbld
fi
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 |
-
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 #XYZ
- Or change
"ztlevi"
in modules/options.nix.
- Set
-
How do I "set up my partitions"?
My main host has a README you can use as a reference. I set up an EFI+GPT system and partitions with
parted
andzfs
. -
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?
-
Where is
$out
? See/etc/profiles/per-user/$USER/
. -
No space left on device. Build failed.
Increase
/tmp
folder size withsudo mount -o remount,size=30G /tmp
-
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.