NixOS Configuration
Personal NixOS configuration for my machines, using Nix Flakes for reproducible and shareable setups.
Repository Structure
- flake.nix: Main entry point for the Nix Flake, defining NixOS and home-manager configurations
 - hosts/: Host-specific NixOS configurations
 - modules/: Custom NixOS modules reusable across different hosts
 - programs/: System-level programs shared across hosts
 - secrets/: Encrypted secrets managed with sops-nix
 - system/: Common system-level configurations shared across hosts
 - users/phundrak/: Home-manager configuration for my user
 - users/modules/: Custom user modules reusable across configurations
 
Usage
System Management
Update flake dependencies:
nix flake update
Build and switch to a new system configuration:
sudo nixos-rebuild switch --flake .#<hostname>
Using the Nix Helper (nh) tool:
# Build and activate a new configuration, making it the boot default
nh os switch
# Build a new configuration and make it the boot default
nh os boot
# Build and activate a new configuration (without making it the boot default)
nh os test
# Just build a new configuration
nh os build
Home Configuration
Update and switch to a new home configuration:
nh home switch
Format Nix files (using Alejandra):
nix fmt
Development
For development, a devShell is provided with linting tools and git hooks:
nix develop
This will set up an environment with:
- alejandra (formatting)
 - commitizen (commit messages)
 - deadnix (dead code detection)
 - statix (linting)
 - Other useful git hooks
 
Contributing
Feel free to fork this repository and make your own changes. If you have any improvements or suggestions, please open an issue or submit a pull request.
Description
				
					Languages
				
				
								
								
									Nix
								
								96.4%
							
						
							
								
								
									CSS
								
								3.6%