Nix & Flakes βοΈβοΈβ¨
My entire system and user environment are declaratively managed with Nix β the ultimate package manager and build system that brings reproducibility, reliability, and insane flexibility. π₯π οΈπ»
π₯ Why Nix? π
-
Declarative Configuration πβοΈ Everything is described in code β from system services π₯οΈ to user apps π¦ β so I can rebuild my entire setup effortlessly or roll back changes βͺ in seconds.
-
Reproducibility & Portability πβοΈ The exact same environment can be replicated on any Nix-enabled machine, making setups consistent and hassle-free. ππ‘
-
Powerful Package Management π¦π₯ Nix isolates dependencies, allowing multiple versions of the same app or library π without conflicts β goodbye βdependency hellβ π₯π΅βπ«.
π οΈ Flake-Based Setup βοΈπ
I use Nix flakes, the modern way to manage Nix projects, bringing:
- Immutable, version-controlled configurations ππ
- Easy integration with GitHub and other sources ππ
- Simplified sharing and updating of modules βοΈπ
My flake.nix
ties everything together: system config, home-manager modules π‘, dotfiles syncing π, and even custom scripts π€.
βοΈ Home Manager Integration π‘β¨
Managing user-specific config (shell π, editor βοΈ, terminal π₯οΈ, etc.) declaratively with Home Manager lets me keep:
- Shell configs like Fish π and Zsh π¦¦
- Neovim setup and plugins π¨π―
- Terminal and prompt settings π₯οΈβ‘
- Handy scripts and aliases π§°π
π What I Love About Nix π
- πͺ Atomic upgrades & rollbacks β no more βit broke after update.β π§π‘οΈ
- π Effortless multi-machine syncing with git + flakes π₯οΈπ»π±
- π― Precise control over software versions and dependencies ππ¦
- π Seamless integration with systemd, Wayland, and Wayland-native tools ππΌοΈ
TL;DR β‘
Nix is the backbone 𦴠of my environment β powering a reproducible, flexible, and fully declarative setup that evolves with me. π±π₯