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: The best editor. 🔑 YubiKey Login: Fast and secure authentication with YubiKeys. 📝 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 To get started with this setup, follow these steps:
...