mirror of
https://github.com/Death916/nixconfig.git
synced 2026-04-11 04:48:25 -07:00
101 lines
4.1 KiB
Markdown
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.
|