Welcome to my NixOS configuration, you can find the repo here.
✨ Features 🖥️ Multiple Hosts Support: Easy to configure for different hosts. 🪟 Hyprland + Waybar: Highly configurable window compositor on Wayland. 🏠 Home Manager Integration: Manage user-specific configurations with ease. 🐚 Zsh + Starship: Efficient shell setup with lots of aliases. 👻 Ghostty: Fast and feature-rich terminal emulator. ✍️ Neovim: With simple configuration through nvf. 🔑 YubiKey Login: Fast and secure authentication with YubiKeys. 💾 Full Disk Encryption: YubiKey-based FDE for secure and convenient unlock. ✨ Stylix: Unified system theming. 📝 Notes I’ve chosen to tightly integrate Home Manager and NixOS within the same file and directory structure, rather than separating them into different files and folders. This keeps the configuration more cohesive but comes with some important caveats: Home Manager options must always be written inside a: home-manager.users.${user} = { ... }; block within your configuration files. Home Manager attributes cannot be imported at the top level (outside of the home-manager.users.<user> block). For example: { pkgs, user, ... }: { home-manager.users.${user} = { config, ... }: { programs.rofi = { ... theme = let inherit (config.lib.formats.rasi) mkLiteral; in { ... }; }; }; } Here, note that config is only available within the home-manager.users.<user> block—trying to import Home Manager attributes directly at the top level will fail. This design choice reduces duplication and keeps related configurations together, but it requires extra attention to module scoping and to distinguishing between NixOS and Home Manager settings. If you prefer a more typical separated configuration structure (e.g. fully declarative Home Manager setup using home.nix per host), check out Andrey0189’s NixOS Config Reborn, which this repository was briefly based on before the latest refactor. 🚀 Installation As of march 2026 I have migrated both my hosts to using full disk encryption, which requires this more advanced setup process. The below steps should still work, but the disk encryption module (fde.nix) must be removed from the host’s imports.
...