nix-config/README.md

1.8 KiB

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.