This is the place for my shell (zsh), terminal emulator (urxvt), window manager (xmonad), editor (emacs) configuration and many more workflow improvements & shortcuts (git aliases, fzf, z).
I used to symlink configurations from the home directory into this repository to keep them maintainable, but have now migrated to home-manager on NixOS for (eventually) a full declarative experience. This allows me to easily update and rollback between generations of my whole user environment, as well as modularizing host-specific configs.
- Follow installation
instructions
until
nixos-install
- Make sure you have mounted
/
,/boot
,/nix
and/home
into/mnt
. - Do a
nixos-install --flake github:ch1bo/dotfiles?submodules=1#<host>
, set passwords usingnixos-enter
and reboot. - Rebuild system via
nixos-rebuild --flake ".?submodules=1" switch
Using home-manager
and the user profile to install things from nixpkgs
usually works quite well, but applications with strong ties into the system are
not as straight-forward to set up. The following list contains programs I
usually require to be on the "system-level":
slock
- requires root via setuid, maybe a wrapper similar to NixOS helps?nautilus
- uses gvfs for mounting file systems, which seems not to work (out of the box) when using fromnixpkgs
dconf
- to configure GTK etc.pcscd
/opensc
- for smartcard support.
NOTE: For NixOS this are essentially the required parts of a host's
configuration.nix
.
After installing these dependencies, it's just:
- Install nix
nix-shell --run home-manager switch -f hosts/<host>/home.nix
- Setup syncthing / nextcloud and sync
keepass
andorg
into~/sync
. - Fetch yubikey and
gpg --receive-key 0x59FAA903C906659A && gpg --card-status
(andchmod 700 ~/.gnupg
). - Prepare doom emacs using
doom sync
andall-the-icons-install-fonts
(inemacs
). - Add mail credentials to secrets service, initialize and receive mails:
secret-tool store --label='Mail ncoding.at' \ port 465 \ host mail.ncoding.at \ user [email protected] mu init -m ~/mail [email protected] mu index offlineimap -o
- Sign in to Firefox sync.
- Generate
nix-index
. - Setup auto-type and minimization in
keepassxc
.
- Flake-based nixos configurations (no symlinking)
- Make independent of "" (using nix flakes)
- Do auto-upgrades from CI builds (with ways to go back)
- Modularize into proper topics
- Re-integrate home config with system configuration.nix
- DRY and modularize system configuration properly between systems
- Declarative syncthing setup
- Drop dual use support (only nixos)
- Get rid of the dependencies (above)
- Add tooling to "swap" dotfiles like https://github.com/hlissner/dotfiles/blob/master/bin/hey
- Theme rofi
- New terminal emulator
- Clean up with XDG and have proper mime associations
- Reduce "first steps at home" (above)
- Set firefox settings / search engines declaratively