From f733f1059d1c6c2319ff66ad4f77211d2e7999d3 Mon Sep 17 00:00:00 2001 From: Geir Okkenhaug Jerstad Date: Thu, 5 Jun 2025 09:02:55 +0200 Subject: [PATCH] update instruction and plan added notes.md --- Notes.md | 0 instruction.md | 66 ++++++++++++++++++++++++++++++++++++++------------ plan.md | 36 +++++++++++++++++++-------- 3 files changed, 77 insertions(+), 25 deletions(-) create mode 100644 Notes.md diff --git a/Notes.md b/Notes.md new file mode 100644 index 0000000..e69de29 diff --git a/instruction.md b/instruction.md index f642a9a..e71bcba 100644 --- a/instruction.md +++ b/instruction.md @@ -3,14 +3,38 @@ ## Overview This document provides step-by-step instructions for AI agents to help migrate the CongenitalOptimist machine from traditional NixOS configuration to flakes-based configuration and upgrade to NixOS 25.05. The system already has excellent modular structure that we'll preserve and enhance. +## General instructions +This document is to be treated as an iterative work and a collaberation. + +## Goal for this file +Top part reusable instructions that can be transferred to other project and as away to iterativey make ai agent behave more like I prefer. +Bottom part should have information specific to the project. +The Plan.md file should have the project information and steps. + + +## Programming Languages and styles +- Prefer functional style +- Guille scheme for +- Python for ai and when guile +- Bash only for short scripts +- Typescript and javascript for web +- Rust for binary tools etc + +## Written language and style +use Notes.md to take notes . +Use a casual but knowledgeable tone. This is not a corporate project there are no audits or compliance to adhere to. +More like an open source project, more like a hobby/passion project + +# Bottom part +itreative about the project update often ## Current System Information -- **Hostname**: work (consider renaming to congenital-optimist) -- **Current Version**: NixOS 23.11 -- **Target Version**: NixOS 25.05 +- **Hostname**: work → congenital-optimist (migration in progress) +- **Current Version**: NixOS 25.05 (migrated from 23.11) +- **Target Version**: NixOS 25.05 ✅ - **Architecture**: x86_64-linux - **Storage**: ZFS (zpool for system, stuffpool for data) - **Hardware**: AMD CPU/GPU -- **User**: geir +- **Users**: geir (primary), sma (admin) - **Dotfiles Approach**: Literate programming with Emacs org-mode (no Home Manager) ## Current Module Structure @@ -21,17 +45,29 @@ Home-lab/ │ │ ├── configuration.nix (main system config) │ │ ├── hardware-configuration.nix │ │ └── About.org -│ └── modules/ -│ ├── common/ -│ │ ├── base.nix (modern CLI tools & aliases) -│ │ └── tty.nix (console styling with Joker theme) -│ └── virtualization/ -│ ├── podman.nix -│ ├── libvirt.nix -│ └── incus.nix -└── Users/ +│ ├── sleeper-service/ +│ ├── reverse-proxy/ +│ └── grey-area/ +├── modules/ +│ ├── common/ +│ │ ├── base.nix (modern CLI tools & aliases) +│ │ ├── tty.nix (console styling with Joker theme) +│ │ └── nix.nix (flakes configuration) +│ ├── desktop/ +│ │ ├── common.nix, gnome.nix, cosmic.nix, sway.nix +│ ├── development/ +│ │ └── tools.nix (editors, LSPs, languages) +│ ├── hardware/ +│ │ └── amd-workstation.nix +│ ├── system/ +│ │ ├── applications.nix, fonts.nix, network.nix +│ ├── users/ +│ │ ├── common.nix, geir.nix, sma.nix +│ └── virtualization/ +│ ├── podman.nix, libvirt.nix, incus.nix +└── users/ └── geir/ - └── user.nix (has typo: progtams → programs) + └── dotfiles/ (literate org-mode configs) ``` ## Prerequisites Check @@ -40,7 +76,7 @@ Before starting, verify: 2. ZFS pools are healthy (`zpool status`) 3. All referenced modules exist and are working 4. User has sudo/root access -5. Fix typo in `Users/geir/user.nix` first +5. Git repository is initialized and up to date ## Step 1: Fix Existing Configuration Issues diff --git a/plan.md b/plan.md index 7b542dd..52caed0 100644 --- a/plan.md +++ b/plan.md @@ -1,6 +1,7 @@ # Home Lab Migration Plan -## Current ├── machines/ +## Current +├── machines/ │ ├── congenital-optimist/ (AMD workstation) │ │ ├── default.nix │ │ ├── hardware-configuration.nix @@ -184,12 +185,20 @@ Home-lab/ ├── flake.nix ├── flake.lock ├── machines/ -│ ├── CongenitalOptimist/ (AMD workstation) +│ ├── congenital-optimist/ (AMD workstation) │ │ ├── default.nix (main machine config) │ │ ├── hardware-configuration.nix │ │ └── About.org -│ └── SleeperService/ (Intel Xeon file server) -│ ├── default.nix (file server config) +│ ├── sleeper-service/ (Intel Xeon file server) +│ │ ├── default.nix (file server config) +│ │ ├── hardware-configuration.nix +│ │ └── About.org +│ ├── reverse-proxy/ (edge/gateway server) +│ │ ├── default.nix +│ │ ├── hardware-configuration.nix +│ │ └── About.org +│ └── grey-area/ (application server) +│ ├── default.nix │ ├── hardware-configuration.nix │ └── About.org ├── modules/ @@ -288,27 +297,27 @@ Home-lab/ ### 5.1 Infrastructure Additions #### Naming Convention -- **Machine Names**: UpperCase (e.g., `CongenitalOptimist`, `SleeperService`) -- **Folder Names**: UpperCase matching machine names (e.g., `CongenitalOptimist/`, `SleeperService/`) +- **Machine Names**: Culture ship names in PascalCase (e.g., `CongenitalOptimist`, `SleeperService`) +- **Folder Names**: lowercase-with-hyphens (e.g., `congenital-optimist/`, `sleeper-service/`) - **Flake Outputs**: lowercase-with-hyphens (e.g., `nixosConfigurations.congenital-optimist`) - **Hostnames**: lowercase-with-hyphens (e.g., `congenital-optimist`, `sleeper-service`) +- **User Names**: Culture character names in lowercase (e.g., `sma`, `geir`) - [ ] **SleeperService** file server (Intel Xeon E3-1230 V2, 16GB RAM): - NFS server for network storage - - Samba server for Windows compatibility - Automated backup services - System monitoring and alerting - ZFS or software RAID for data redundancy - [ ] **reverse-proxy** edge server: - - Nginx/Traefik reverse proxy + - Nginx/Traefik/caddy reverse proxy - SSL/TLS termination with Let's Encrypt - External access gateway and load balancing - Security protection (Fail2ban, rate limiting) - Minimal attack surface, headless operation - [ ] **grey-area** application server (Culture GCU - versatile, multi-purpose): - **Primary**: Forgejo Git hosting (repositories, CI/CD, project management) - - **Secondary**: Jellyfin media server, Nextcloud file sync - - **Monitoring**: Grafana visualization, Prometheus metrics + - **Secondary**: Jellyfin media server + - **Monitoring**: TBD - **Infrastructure**: Container-focused (Podman), PostgreSQL database - **Integration**: Central Git hosting for all home lab projects - [ ] Plan for additional users across machines: @@ -343,10 +352,17 @@ Home-lab/ - [ ] Literate dotfiles with org-mode tangling automation ### 6.2 Automation & Maintenance +- [ ] AI integration - development of a mcp server for the cluster - [ ] Automated system updates - [ ] Configuration validation tests - [ ] Deployment automation - [ ] Monitoring and alerting +### 6.3 Writeup +- [ ] Take all the knowledge we have amassed and make a blog post or a series of blog posts + +### Phase 7: goin pro +- [ ] A plan to generalise this project so it is usable for other people +- [ ] A plan to make dashboard and web interface for the project ## Timeline Estimates