This is a NixOS flake configuration for managing your system setup, ricing, and applications across multiple devices.
.
├── flake.nix # Main flake configuration
├── flake.lock # Locked dependency versions
├── system/
│ └── common.nix # Shared system configuration
├── hosts/
│ └── my-machine/ # Per-machine configurations
│ ├── configuration.nix # Machine-specific settings
│ └── hardware-configuration.nix # Hardware-specific settings
└── home/
└── home.nix # User-level configuration (dotfiles, packages)
-
Generate hardware configuration on your NixOS machine:
nixos-generate-config --show-hardware-config > hardware-configuration.nixCopy the output to
hosts/my-machine/hardware-configuration.nix -
Update configuration files:
- Change
my-machineto your actual hostname throughout the files - Update
yourusernameto your actual username - Adjust timezone, locale, and other personal settings
- Choose your desktop environment / window manager
- Change
-
Update flake inputs:
nix flake update
-
Build and switch to the new configuration:
sudo nixos-rebuild switch --flake .#my-machine
- Create a new directory under
hosts/with your machine's hostname - Generate and add the hardware configuration
- Create a
configuration.nixfor machine-specific settings - Add the new machine to
flake.nixundernixosConfigurations - Build with:
sudo nixos-rebuild switch --flake .#new-machine
# Update flake inputs
nix flake update
# Rebuild system
sudo nixos-rebuild switch --flake .#my-machine- Add window manager configurations (i3, bspwm, Hyprland, etc.)
- Configure terminal emulators (Alacritty, Kitty, WezTerm)
- Set up status bars (Polybar, Waybar)
- Add custom themes and color schemes
- Configure rofi, dunst for notifications
- Set up wallpaper management with nitrogen or variety