nixconfig/README.md
2025-06-30 15:03:49 -07:00

101 lines
4.1 KiB
Markdown

# NixOS Configuration Refactor
This document outlines the new, modular structure of the NixOS configuration and explains how to revert to the previous setup if necessary.
## New Directory Structure
The configuration has been reorganized to be more modular and easier to manage. Here is an overview of the new structure:
```
.
├── flake.nix
├── home-manager/
│ ├── death916-homelab.nix
│ └── home.nix
├── modules/
│ ├── home-manager/
│ │ └── common.nix
│ └── nixos/
│ ├── common/
│ │ ├── base.nix
│ │ └── tailscale.nix
│ ├── homelab/
│ │ ├── networking.nix
│ │ ├── services.nix
│ │ └── user.nix
│ └── laptop/
│ ├── desktop.nix
│ └── user.nix
├── nixos/
│ ├── configuration.nix
│ └── homelab.nix
├── old_config/ # <-- Your previous configuration is backed up here
└── scripts/
└── nh-push # <-- New helper script
```
### Key Changes
- **Modularization**: The main `configuration.nix` and `homelab.nix` files have been split into smaller, more focused modules located in the `modules/` directory. This makes the code cleaner and easier to navigate.
- **Shared vs. Specific Config**: Common settings shared between both the laptop and homelab are now in `modules/nixos/common/` and `modules/home-manager/common.nix`. Machine-specific configurations are in their respective `laptop/` and `homelab/` subdirectories.
- **`flake.nix`**: The flake now uses `specialArgs` to pass overlays and other shared values to the modules, reducing redundancy.
- **`nh-push` script**: A new script has been added at `scripts/nh-push`. This script wraps the `nh os switch` command and automatically runs `git push` after a successful build, streamlining the update process.
## How to Revert the Changes
If you encounter any issues with the new configuration, you can easily revert to your previous setup. Your old files are safely archived in the `old_config/` directory.
To revert, follow these steps:
1. **Delete the new configuration files**:
```bash
rm -rf flake.nix nixos/ modules/ home-manager/ scripts/
```
2. **Restore the old configuration from the backup**:
```bash
mv old_config/* .
rmdir old_config
```
3. **Rebuild your system**:
After restoring the files, run your usual NixOS rebuild command, for example:
```bash
sudo nixos-rebuild switch --flake .#homelab
```
This will restore your system to the exact state it was in before these changes were made.
## Quick Reference: Where to Find Common Settings
Here is a quick guide to help you locate the most common configuration settings in the new modular structure.
### System-Wide Settings
* **Settings for BOTH Laptop & Homelab:**
* `modules/nixos/common/base.nix`: Base system settings like the bootloader, timezone, and `allowUnfree`.
* `modules/nixos/common/tailscale.nix`: Tailscale configuration.
* **Laptop-Specific System Settings:**
* `modules/nixos/laptop/desktop.nix`: Desktop environment, system packages, and other laptop-specific services.
* `nixos/hardware-configuration.nix`: Filesystems and hardware settings for the laptop.
* **Homelab-Specific System Settings:**
* `modules/nixos/homelab/services.nix`: All homelab services (Docker, Jellyfin, etc.) and system packages.
* `modules/nixos/homelab/networking.nix`: Static IP, firewall, and network settings for the homelab.
* `nixos/hardware-homelab.nix`: Filesystems and hardware settings for the homelab.
### User & Home-Manager Settings
* **Settings for YOUR USER on BOTH Systems:**
* `modules/home-manager/common.nix`: Shared user settings like your shell (Bash), Git config, Helix, and default editor.
* **Laptop-Specific User Settings:**
* `home-manager/home.nix`: User-specific packages, shell prompt (`starship`), and aliases for the laptop.
* **Homelab-Specific User Settings:**
* `home-manager/death916-homelab.nix`: User-specific packages and aliases for the homelab.