My NixOS configuration for personal machines. This flake manages system configurations and home environments using Home Manager.
- maple - Laptop
- tumble - Desktop workstation
All Linux hosts share common configuration and can opt into additional features like DisplayLink support.
.
├── flake.nix # Main flake configuration
├── home/ # Home Manager configs
│ ├── common.nix # Shared across all platforms
│ ├── linux.nix # Linux-specific config
│ └── programs/ # Individual program configs
└── hosts/
└── linux/
├── maple/ # Maple-specific config
├── tumble/ # Tumble-specific config
└── programs/
└── displaylink/ # DisplayLink dock support
-
Clone this repo:
git clone <your-repo-url> ~/Code/nix-config
-
Symlink to
/etc/nixos:# Backup existing config sudo mv /etc/nixos /etc/nixos.backup # Create symlink sudo ln -s ~/Code/nix-config /etc/nixos
-
Apply the configuration:
sudo nixos-rebuild switch --flake /etc/nixos#<hostname>
After the initial setup, just use the rebuild alias:
rebuildIt automatically detects your hostname and rebuilds the system.
- Latest Linux kernel
- KDE Plasma 6 with Wayland
- Docker
- VM management with libvirtd/KVM
- DisplayLink dock support (opt-in)
- Automatic flakes support
- Consistent shell environment (bash with custom aliases)
- Git configuration
- Vim setup
- Development tools (kubectl, helm, talosctl, etc.)
- Plasma desktop customization
-
Generate hardware config:
nixos-generate-config --show-hardware-config > hosts/linux/<hostname>/hardware-configuration.nix
-
Create
hosts/linux/<hostname>/configuration.nix(copy from an existing host) -
Add to
flake.nix:<hostname> = nixpkgs.lib.nixosSystem { system = "x86_64-linux"; specialArgs = { inherit inputs; }; modules = [ ./hosts/linux/<hostname>/configuration.nix # ... (copy module config from existing host) ]; };
-
Rebuild!
- The configuration uses NixOS 25.11 stable
- Home Manager state version: 25.11
- Git tree must be clean or committed for rebuilds to work properly
- DisplayLink prefetch script handles EULA acceptance for CI builds