2025-03-10 21:11:26 +04:00
wip
2025-03-10 21:11:26 +04:00
wip
2025-03-10 21:11:14 +04:00
wip
2025-03-10 21:11:26 +04:00
wip
2025-03-10 21:11:14 +04:00
wip
2025-03-10 21:11:14 +04:00
wip
2025-03-10 21:11:14 +04:00
wip
2025-03-10 21:11:26 +04:00

NixOS Configuration

This repository contains my personal NixOS configuration, structured in a pyramidal way for easy management and reuse.

Structure

System Configuration

The system configuration is organized in layers:

  1. Base (system/base/default.nix): Common configuration for all machines
  2. Desktop (system/desktop/default.nix): Configuration specific to desktop environments
  3. Server (system/server/default.nix): Configuration specific to server environments
  4. Machine-specific (machines/<machine>/default.nix): Configuration specific to individual machines

Home Configuration

The home configuration follows a similar structure:

  1. Base (home/base/default.nix): Common home configuration for all environments
  2. Desktop (home/desktop/default.nix): Home configuration specific to desktop environments
  3. Server (home/server/default.nix): Home configuration specific to server environments

Available Configurations

This repository includes configurations for the following machines:

  1. nixos (VM): A virtual machine configuration for testing
  2. desktop-pc: A physical desktop PC with NVIDIA GPU
  3. home-server: A home server with Samba and Jellyfin services

Usage

To build and switch to a specific configuration:

# For the VM
sudo nixos-rebuild switch --flake .#nixos

# For the desktop PC
sudo nixos-rebuild switch --flake .#desktop-pc

# For the home server
sudo nixos-rebuild switch --flake .#home-server

Helper Script

A helper script is provided to make switching between configurations easier:

# Switch to the VM configuration (default)
./switch.sh

# Switch to the desktop PC configuration
./switch.sh desktop-pc

# Switch to the home server configuration
./switch.sh home-server

Adding a New Machine

To add a new machine:

  1. Create a new directory in machines/ with the machine name
  2. Create a default.nix file with machine-specific configuration
  3. Copy the hardware configuration to machines/<machine>/hardware-configuration.nix
  4. Update flake.nix to include the new machine

Example:

# In flake.nix
new-machine = nixpkgs.lib.nixosSystem {
  system = "x86_64-linux";
  specialArgs = inputs;
  modules = [
    # Base system configuration
    ./system/base
    
    # Desktop or server configuration
    ./system/desktop  # or ./system/server
    
    # Machine-specific configuration
    ./machines/new-machine
    
    # Home-manager configuration
    home-manager.nixosModules.home-manager {
      # ... home-manager configuration
    }
  ];
};

Customization

  • For desktop environments, enable the desktop configurations
  • For server environments, enable the server configurations and disable desktop configurations

License

This configuration is personal and provided as-is without any warranty.

Description
No description provided
Readme 58 KiB
Languages
Nix 94.2%
Shell 5.8%