A modular, flake-based NixOS configuration featuring Hyprland, Home Manager, and a curated set of development and desktop tools.
- Flake-based configuration for reproducible system builds
- Hyprland window manager with custom keybinds and workspaces
- Home Manager for declarative user environment management
- Modular structure for easy customization and maintenance
- Multi-host support for desktop and laptop configurations
.
├── flake.nix # Main flake configuration
├── home.nix # Home Manager entry point
├── hosts/
│ ├── amanita/ # Desktop configuration
│ └── cordyceps/ # Laptop configuration
└── modules/
├── core/ # System-level modules
│ ├── bootloader.nix
│ ├── hardware.nix
│ ├── network.nix
│ ├── pipewire.nix
│ ├── security.nix
│ ├── services.nix
│ ├── steam.nix
│ ├── system.nix
│ ├── user.nix
│ ├── virtualization.nix
│ ├── wayland.nix
│ └── xserver.nix
└── home/ # User-level modules
├── hyprland/ # Hyprland WM configuration
├── ags/ # Widget bar system
├── bat.nix # Better cat
├── browser.nix # Zen Browser
├── btop/ # Resource monitor
├── cava/ # Audio visualizer
├── claude.nix # AI coding assistant
├── discord/ # Discord with theming
├── fish.nix # Shell
├── fzf.nix # Fuzzy finder
├── git.nix # Version control
├── gtk.nix # GTK theming
├── lazygit.nix # Git TUI
├── mpv.nix # Media player
├── packages.nix # Additional packages
├── spicetify.nix # Spotify theming
├── swaync/ # Notification daemon
├── wezterm.nix # Terminal emulator
├── xdg-mimes.nix # File associations
└── yazi.nix # Terminal file manager
- AMD GPU (RX 9070 XT) with Vulkan/RADV
- Multiple filesystem mounts for storage and backups
- Full Wayland setup with Hyprland
- Currently in development (configuration exists but commented out)
- Will include laptop-specific modules (battery management, brightness controls)
- Hyprland - Tiling Wayland compositor
- AGS - Widget system for bars and overlays
- swaync - Notification daemon
- Waypaper - Wallpaper management
- WezTerm - Terminal emulator
- Fish - Shell
- Yazi - File manager
- btop - System monitor
- Cava - Audio visualizer
- bat - Syntax-highlighted cat
- fzf - Fuzzy finder
- Claude Code - AI coding assistant
- Git with custom configuration
- Lazygit - Git TUI
- Neovim (using Lazyvim)
- Zen Browser - Privacy-focused browser
- Discord - Communication (themed)
- Spotify - Music (via Spicetify)
- MPV - Media player
- Steam - Gaming platform
- PipeWire - Audio server
- Virtualization - KVM/QEMU support
- Steam - Gaming with Proton
- Home Manager - Declarative user environment
nixpkgs- NixOS unstablehome-manager- User environment managementhyprland- Wayland compositorhyprland-plugins- Additional Hyprland functionalitywezterm- Terminal emulatorzen-browser- Privacy-focused browser (auto-updates daily)yazi-plugins- Yazi file manager pluginsspicetify-nix- Spotify themingnix-flatpak- Flatpak integrationclaude-code- AI coding assistant
- Clone this repository:
git clone https://github.com/yourusername/nixos-config.git /etc/nixos
cd /etc/nixos- Update hardware configuration:
nixos-generate-config --show-hardware-config > hosts/amanita/hardware-configuration.nix- Build and switch:
sudo nixos-rebuild switch --flake .#amanita# Update flake inputs
nix flake update
# Rebuild with new configuration
sudo nixos-rebuild switch --flake .#amanitaThis configuration includes nh for easier system management:
# Update and rebuild
nh os switch
# Clean old generations
nh clean all- Create a new directory under
hosts/:
mkdir -p hosts/newhostname- Create
hosts/newhostname/default.nix:
{ pkgs, ... }:
{
imports = [
./hardware-configuration.nix
./../../modules/core
];
networking.hostName = "newhostname";
}- Add the host to
flake.nix:
nixosConfigurations.newhostname = nixpkgs.lib.nixosSystem {
system = "x86_64-linux";
specialArgs = {
inherit inputs self;
username = "yourusername";
host = "newhostname";
};
modules = [
./hosts/newhostname
];
};- Create a new
.nixfile inmodules/core/(system) ormodules/home/(user) - Import it in the respective
default.nix - Configure the module with your settings
- AMD GPU users: The configuration includes specific environment variables for Vulkan and Wayland
- Multiple storage devices are automatically mounted on boot
- Laptop configuration (cordyceps) is currently commented out in the flake
This project is licensed under the MIT License - see the LICENSE file for details.
Built with the NixOS community's incredible tools and flakes.