51 lines
1.8 KiB
Markdown
51 lines
1.8 KiB
Markdown
# ❄️ My NixOS Configuration
|
|
|
|
This directory contains the declarative configuration for my user environment, managed by **Home Manager**.
|
|
|
|
## 🛠️ How it Works (The Nix Way)
|
|
|
|
In NixOS, configuration files are managed "declaratively" rather than manually.
|
|
|
|
1. **The Source of Truth**: Everything is defined in your `.nix` files.
|
|
2. **The Nix Store**: When you "switch," Nix builds your files and stores them in `/nix/store/`. These are **immutable** (read-only).
|
|
3. **Symlinking**: Home Manager creates symbolic links in your home directory (like `~/.pi/agents/settings.json`) that point back to that read-only store.
|
|
|
|
## ✍️ How to Make Changes
|
|
|
|
**Do not edit the files in your home directory.** They are read-only symlinks. To change settings:
|
|
|
|
1. **Edit your source code**: Open `home.nix` in `nvim`.
|
|
2. **Modify the Nix block**: Locate the `home.file` section for your agents.
|
|
3. **Apply changes**:
|
|
```bash
|
|
home-manager switch
|
|
```
|
|
|
|
## ❓ Why "sudo" doesn't work
|
|
The `/nix/store` is mounted as read-only at the system level. This ensures your system always matches your config and allows for instant **rollbacks** if something breaks.
|
|
|
|
### Example: Adding a local file and remote extensions
|
|
|
|
## Pi Agent Configuration
|
|
|
|
To use the **System Architect** skills and **Steel Browser** extension with this project, ensure your `.pi/settings.json` is configured as follows:
|
|
|
|
```json
|
|
{
|
|
"packages": [
|
|
{
|
|
"source": "git:https://audasmedia.com.au",
|
|
"extensions": [
|
|
"extensions/steel-browser/index.ts"
|
|
],
|
|
"skills": [
|
|
"skills/system-architect"
|
|
]
|
|
}
|
|
]
|
|
}
|
|
```
|
|
|
|
### Usage
|
|
When you launch `pi` in this directory, it will automatically pull these assets from the **Audas Media** Gitea instance and activate the specialized toolset.
|