Dotfiles - Declarative System Configuration Framework
Repository: github.com/funkybooboo/dotfiles
A declarative configuration-management framework I built to provision and
converge every Arch Linux machine I own from a single Git repository. Rather
than a pile of dotfiles, it is a versioned migration system that brings any
new or existing machine to a known state with one command (./migrate.sh),
and re-runs safely and idempotently.
Key Features
- Migration engine: 124 ordered, idempotent, non-fatal migrations that install packages, link config, deploy system files, and enable services. A single failure records a warning and continues — one broken step never aborts a whole-machine convergence.
- Layered 7-tier install policy: pacman -> upstream release assets -> nix -> from source -> flatpak -> appimage -> snap. Each tier is preferred over the next for provenance and reproducibility, with the AUR removed entirely.
- Nix flake integration: a local flake wraps nixpkgs with
allowUnfree = trueand pins the nixpkgs revision viaflake.lock, sonix profile add .#<pkg>works for free and unfree packages without--impureor env vars. - Hardened supply chain: upstream release assets are SHA-256 verified against upstream checksum files and GPG signature-verified where a release key exists — binaries are fetched directly from signed upstream releases rather than repackaged third-party builds.
- Dual-architecture: the same migrations converge both the x86_64 workstation and an aarch64 Raspberry Pi node.
Technology Stack
- Core: Bash migrations, Nix flakes, pacman
- Linking: symlink trees for tracked config (
link_tree/link_file/link_dir), deployed/etcfiles (deploy_etc_file) - Services: systemd user/system service enablement helpers
- Verification: SHA-256, GPG,
vercmpversion checks