My NixOS configuration for multiple hosts, built using the dendritic pattern with flake-parts and import-tree.
- 🖥️ Multiple Hosts Support: Easy to configure for different hosts.
- 🪟 Hyprland + Waybar: Highly configurable window compositor on Wayland.
- ⚙️ Rofi + jwmenu: Applications launcher and custom system menus.
- 🏠 Home Manager Integration: Manage user-specific configurations with ease.
- 🐚 Zsh + Starship: Efficient shell setup with useful aliases.
- 👻 Ghostty: Fast and feature-rich terminal emulator.
- ✍️ Neovim: Configured through nvf, see jonwin1/nvf-config.
- 🔑 YubiKey Login: Fast and secure authentication with YubiKeys.
- 💾 Full Disk Encryption: YubiKey-based FDE for secure and convenient unlock.
- ✨ Stylix: Unified system theming.
TODO
Every module exports a NixOS module and may optionally contain a Home Manager module which is imported by the NixOS module, this avoids having to differentiate between NixOS and Home Manager modules when importing.
{ self, imports, ... }: {
flake.nixosModules.MODULE = { pkgs, lib, config, ... }: {
home-manager.users.${config.my.username}.imports = [
self.homeModules.MODULE
];
# NixOS options
};
flake.homeModules.MODULE = { pkgs, lib, my, ... }: {
# my on the line above is equivalent to config.my in nixosModules
# Home Manager options
};
}https://jonwin.se/posts/yubikey-fde/
TODO
📂 .
├ 📂 modules Imported by import-tree
│ ├ 📂 apps GUI applications
│ ├ 📂 collections of core modules and programs
│ ├ 📂 drivers E.g. Nvidia GPU
│ ├ 📂 hosts
│ │ └ 📂 hostname
│ │ ├ ❄️ configuration.nix Host-specific nixos and home-manager options
│ │ ├ ❄️ default.nix Module imports
│ │ ├ ❄️ hardware.nix Hardware configuration (Generated)
│ │ └ ... Host-specific modules
│ ├ 📂 scripts Custom scripts installed as packages
│ ├ 📂 shell Shell and terminal applications
│ ├ 📂 system System services and programs (network, audio, wm, ...)
│ ├ ❄️ parts.nix flake-parts config
│ └ ❄️ template.nix Module template (as explained previously)
└ ❄️ flake.nix Main entry pointContributions and suggestions are welcome, and feel free to use anything you find here in your own configuration.
This project is licensed under the GPL-3.0 License. See the LICENSE file for details.
