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. 🌱🔥