nip/docs/NexusOS_Package_Management.md

157 lines
5.1 KiB
Markdown

# Project Document: NexusOS Package Management mit `nip`
**Datum**: 15. Juli 2025
## Überblick
`nip` ist ein fortschrittlicher Paketmanager, der für eine modulare, reproduzierbare und leistungsstarke Linux-Distribution entwickelt wurde, inspiriert von den Prinzipien von NexusOS. Er nutzt bestehende Paket-Ökosysteme wie Pacman (Arch Linux) und Nix, um das System schnell zu bootstrapen, während er Pakete in ein natives `.npk`-Format konvertiert, um langfristige Reproduzierbarkeit und Konformität mit der ACUL-Lizenz zu gewährleisten.
## Ziele
- **Schnelles Bootstrapping**: Verwende Pacman und Nix, um Software in eine GoboLinux-ähnliche Dateistruktur (`/Programs/<App>/<Version>/`) zu installieren.
- **Natives Paketformat**: Konvertiere installierte Pakete in `.npk` mit KDL-Metadaten, BLAKE3-Hashes und ACUL-konformen Logs.
- **Modular und reproduzierbar**: Stelle sicher, dass jedes Paket verifiziert, neu erstellt und über ein lokales Repository oder externe Plattformen wie GitHub geteilt werden kann.
- **Zukunftssicher**: Entwickle das System so, dass es erweiterbar ist, mit Plänen für Reverse-Konvertierung und volle Unterstützung nativer Pakete.
---
## CLI-Syntax
### Fremde Pakete graften
```bash
nip graft pacman htop
nip graft nix hello
```
- Installiert Pakete aus Pacman oder Nix in `/Programs/<App>/<Version>/`.
- Erstellt Symlinks in `/System/Index/` für einfachen Zugriff.
### Deklarative Installation
```bash
nip manifest foreign-packages.yaml
```
- Installiert mehrere Pakete deklarativ aus einer YAML-Datei:
```yaml
graft:
- source: pacman
package: neofetch
- source: nix
package: htop
version: unstable
```
### In `.npk` konvertieren
```bash
nip convert htop
```
- Konvertiert ein installiertes Paket (z. B. `htop`) in das `.npk`-Format.
- Generiert:
- `htop.npk` (Archiv)
- `htop.npk.kdl` (Metadaten)
- `build.log`, `manifest.yaml`, `license.yaml`
- Speichert in `~/.nip/repo/htop/3.2.1/`.
### Konformität verifizieren
```bash
nip verify htop.npk
```
- Überprüft Lizenz, Hashes und Metadaten auf ACUL-Konformität.
### Paketursprung tracken
```bash
nip track htop
```
- Protokolliert die Quelle (Pacman, Nix usw.) des installierten Pakets.
### Systemzustand sperren
```bash
nip lock
```
- Erstellt eine Lockfile (`nip.lock`), die die exakten Versionen und Quellen aller installierten Pakete festhält, um volle Reproduzierbarkeit zu gewährleisten.
---
## Dateistruktur
### Lokale Repository-Struktur
```
~/.nip/repo/
└── htop/
└── 3.2.1/
├── htop.npk # Tarball der GoboLinux-strukturierten Dateien
├── htop.npk.kdl # KDL-Metadaten
├── build.log # Build-Details
├── manifest.yaml # Dateiliste + Checksums
├── license.yaml # ACUL-Lizenzinformationen
└── LICENSE-ACUL.txt # Lizenztext
```
### Beispiel `.npk.kdl`
```
package "htop" {
version "3.2.1"
source "pacman"
checksum "blake3-abc123def4567890"
license "GPL-2.0"
description "Interactive process viewer"
files {
binary "/Programs/Htop/3.2.1/bin/htop"
manpage "/Programs/Htop/3.2.1/share/man/man1/htop.1"
}
}
```
### Beispiel `nip.lock`
```
lockfile {
package "htop" {
version "3.2.1"
source "pacman"
checksum "blake3-abc123def4567890"
}
package "neofetch" {
version "7.1.0"
source "nix"
checksum "blake3-xyz987654321"
}
}
```
---
## Implementierung
### Phase 0: MVP Wrapper
- **Graft aus Pacman**: Lade mit `pacman -Sw`, extrahiere und platziere in `/Programs/`. *Status: Prototyp in Arbeit, erste Tests mit `neofetch` erfolgreich.*
- **Graft aus Nix**: Baue mit `nix build`, verschiebe aus `/nix/store/` und platziere in `/Programs/`. *Status: Geplant für Woche 2.*
### Phase 1: `.npk`-Erstellung
- Generiere KDL-Metadaten, BLAKE3-Hash und ACUL-erforderliche Dateien.
- Verpacke in `.npk` (Tarball). *Status: Grundgerüst für `nip convert` wird entwickelt.*
### Phase 2: Verifizierung & Repository
- Implementiere `nip verify` für Integrität und Konformität.
- Verwalte das lokale Repository in `~/.nip/repo/`. *Status: Geplant nach Stabilisierung von Phase 1.*
### Phase 3: Lockfile-Unterstützung
- Implementiere `nip lock`, um eine Lockfile zu erstellen, die den Systemzustand festhält. *Status: Geplant nach Phase 2.*
---
## ACUL-Lizenzintegration
Jedes `.npk` muss enthalten:
- `LICENSE-ACUL.txt`
- `license.yaml` (z. B. `expression: ACUL-1.0`)
- `build.log` (Quell-URIs, Hashes, Zeitstempel)
- `manifest.yaml` (Dateiliste, Checksums)
---
## Nächste Schritte
1. **Teste den MVP**: Führe `nip graft pacman htop` aus und überprüfe die Installation in `/Programs/`.
2. **Erweitere Metadaten**: Erweitere `.npk.kdl` um Abhängigkeiten.
3. **Füge `nip verify` hinzu**: Implementiere die Verifizierungslogik.
4. **Implementiere `nip lock`**: Teste die Lockfile-Generierung für Reproduzierbarkeit.
5. **Erweitere Quellen**: Füge bei Bedarf weitere Ökosysteme hinzu (z. B. Nix in Woche 2).
Dieses Dokument beschreibt den aktuellen Stand des `nip`-Paketmanagers und bietet eine Roadmap für seine Entwicklung im NexusOS-ähnlichen System. Lass uns den Schwung beibehalten! 🚀