The previous version pointed at /home/sam/.secrets, which exists on .13 but NOT on .27 — so the subagent would work on one machine and fail on another. It had the same bug before in reverse (pointed at environment.d/10-secrets.conf, which was missing the key on .13). Now: require the OPENROUTER_API_KEY environment variable, document ~/.config/environment.d/10-secrets.conf as the canonical source (the only one systemd user services read, which is what Paperclip workers get), and fall back to ~/.secrets only if it exists.
❄️ 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.
- The Source of Truth: Everything is defined in your
.nixfiles. - The Nix Store: When you "switch," Nix builds your files and stores them in
/nix/store/. These are immutable (read-only). - 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:
- Edit your source code: Open
home.nixinnvim. - Modify the Nix block: Locate the
home.filesection for your agents. - Apply changes:
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:
{
"packages": [
{
"source": "/home/sam/.agents",
"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.
Description
Languages
HTML
45.8%
TypeScript
43%
JavaScript
10.7%
Python
0.4%