Cross-platform dotfiles with shared config, OS-specific bootstrap, and Nix host definitions.
Clone this repository into ~/.local/share/dotfiles:
git clone [repo-url] ~/.local/share/dotfiles
cd ~/.local/share/dotfileshome/.config/: user config (nvim,hypr,quickshell,zed,fcitx5, etc.)home/.local/share/: user local data (wallpapers, etc.)platforms/archlinux/: Arch Linux bootstrap (setup.sh, package lists, configure scripts)platforms/macos/: macOS bootstrap (setup.sh)platforms/nixos/: NixOS bootstrap (setup.sh)nix/hosts/: per-machine NixOS configurationsnix/modules/: shared NixOS and Home Manager modules
Run the NixOS setup script with a host name. It will build and switch to the NixOS configuration, then symlink all user configs into place (with .backup suffixes on any existing files):
bash platforms/nixos/setup.sh <host>Available hosts are listed in nix/hosts/. To list them:
bash platforms/nixos/setup.shTo rebuild manually without symlinking configs:
sudo nixos-rebuild switch --flake .#<host>Installs packages (pacman + AUR via yay + Flatpak), enables system services, configures user groups, locales, GTK/Qt theming, Rust toolchain, and symlinks all user configs:
bash platforms/archlinux/setup.shInstalls Homebrew if needed, then symlinks nvim and zed configs into ~/.config. Existing directories are backed up to ~/.config/dotfiles-backups/<timestamp>/:
zsh platforms/macos/setup.sh- Each host in
nix/hosts/requires ahardware-configuration.nix. Generate one for your machine with:
sudo nixos-generate-config --show-hardware-config > \
nix/hosts/<host>/hardware-configuration.nix- The Arch Linux bootstrap is idempotent: already-installed packages and already-linked configs are skipped.