This repository contains my personal NixOS configuration, managed with Nix Flakes. It features a modular structure for easy maintenance and scalability.
- Flake-based: Reproducible and consistent system builds.
- Modular Design: Configuration is split into logical modules (e.g.,
hyprland,gaming,dev). - Desktop Environment: Hyprland window manager.
- Gaming Ready: Steam, Gamemode.
- CI/CD: GitHub Actions workflow to verify builds on push.
├── configuration.nix
├── flake.nix
├── hardware-configuration.nix
├── modules/
│ ├── boot.nix # Bootloader settings
│ ├── default.nix # Imports all modules
│ ├── dev.nix # Development tools
│ ├── gaming.nix # Steam & gaming optimizations
│ ├── hardware.nix # Hardware specifics
│ ├── hyprland.nix # WM configuration
│ ├── network.nix # Networking setup
│ ├── packages.nix # General system packages
│ ├── services.nix # System services
│ ├── theme.nix # Theming and appearance
│ ├── time.nix # Timezone and locale
│ └── users.nix # User management
└── .github/ # CI/CD workflows
-
Clone the repository:
git clone https://github.com/diazdesandi/nixos.git ~/nixos cd ~/nixos
-
Update Hardware Config: overwrite
hardware-configuration.nixwith the one generated during installation (usually found at/etc/nixos/hardware-configuration.nix) if installing on new hardware. -
Apply Configuration: Run the following command to rebuild and switch to the new configuration:
sudo nixos-rebuild switch --flake .#nixos-laptop
To update system packages and flake inputs:
nix flake update
sudo nixos-rebuild switch --flake .#nixos-laptop