# NIP - Universal Package Manager **Version:** 1.0.0-mvp **Status:** MVP Achieved βœ… **Repository:** https://git.maiwald.work/Nexus/NexusToolKit NIP is a universal package manager that grafts packages from Nix, PKGSRC, and Pacman into a unified GoboLinux-style structure with content-addressable storage. Build from source with custom optimizations using Gentoo, Nix, or PKGSRC. **NIP's core value:** Bringing together the best of multiple package ecosystems in a clean, unified way. We do things the right wayβ€”correctness over speed. ## Features - 🌱 **Multi-Source Grafting** - Install packages from Nix, PKGSRC, or Pacman - πŸ”¨ **Source Builds** - Build from Gentoo/Nix/PKGSRC with custom USE flags - 🐳 **Container Builds** - Secure, isolated builds with Podman/Docker - πŸš€ **Auto-Bootstrap** - Automatically installs build tools when needed - πŸ“¦ **GoboLinux Structure** - Clean `/Programs///` organization - πŸ”— **Unified Symlinks** - All packages accessible via `/System/Links/` - πŸ” **Content-Addressable Storage** - Blake2b/Blake3 hashing for integrity - 🎯 **Variant System** - Fine-grained feature control with domain flags - 🐧 **Linux & BSD** - Works on Arch, Debian, FreeBSD, NetBSD, and more - ⚑ **Simple & Fast** - Efficient database, smart caching ## Quick Start **New to NIP?** Start with the [Getting Started Guide](docs/getting-started.md) for a complete walkthrough. ### Installation ```bash # Build from source ./build.sh # Install (requires root) sudo ./install.sh # Verify installation nip --version ``` ### Basic Usage ```bash # Install a package (grafts from available sources) nip install firefox # Build from source with custom features nip build vim +python+ruby --source=gentoo # Build with optimizations nip build ffmpeg +vaapi+lto+cpu-native --source=gentoo # Auto-detect and bootstrap if needed nip build firefox +wayland --source=gentoo # β†’ NIP will automatically offer to install Gentoo tools or use containers # List installed packages nip list # Show package info nip info firefox # Remove a package sudo nip remove hello # Check system status nip status # Check system health nip doctor ``` ## Commands ### Package Management | Command | Description | |---------|-------------| | `nip install ` | Install a package (auto-detect source) | | `nip build +flags` | Build from source with custom features | | `nip remove ` | Remove an installed package | | `nip list` | List all installed packages | | `nip info ` | Show detailed package information | | `nip search ` | Search for packages | ### Source Building | Command | Description | |---------|-------------| | `nip build --source=gentoo` | Build from Gentoo with USE flags | | `nip build --source=nix` | Build from Nix | | `nip build --source=pkgsrc` | Build from PKGSRC | | `nip build +wayland+lto` | Build with variant flags | | `nip sources` | List available build sources | ### Bootstrap Management | Command | Description | |---------|-------------| | `nip bootstrap list` | List installed build tools | | `nip bootstrap install ` | Install build tools (nix/pkgsrc/gentoo) | | `nip bootstrap remove ` | Remove build tools | | `nip bootstrap info ` | Show tool information | | `nip bootstrap recipes` | List available recipes | | `nip bootstrap update-recipes` | Update recipes from repository | ### System | Command | Description | |---------|-------------| | `nip status` | Show system status | | `nip doctor` | Check system health | | `nip config [show\|init]` | Show or initialize configuration | | `nip logs [lines]` | Show recent log entries | ## Automatic Bootstrap **NIP automatically detects and installs build tools when needed!** When you try to build from source, NIP will: 1. **Check** if build tools are installed 2. **Detect** available container runtimes (Podman/Docker) 3. **Offer** installation options: - Install minimal tools via NIP - Use containerized builds (Podman/Docker) - Manual installation instructions - Try different source ### Example: First Build ```bash $ nip build vim +python --source=gentoo ⚠️ Gentoo not found NIP can help you set up Gentoo builds: 1. πŸš€ Install minimal tools via NIP (recommended) β€’ Lightweight standalone emerge binary β€’ Minimal portage snapshot β€’ ~50MB download, ~100MB installed 2. πŸ“¦ Use containerized environment β€’ Requires Docker/Podman β€’ Isolated builds β€’ ~200MB download 3. πŸ”§ Install full Gentoo manually β€’ Follow: https://wiki.gentoo.org/wiki/Portage 4. πŸ”„ Try a different source β€’ nip build vim --source=nix Choose option (1-4) or 'q' to quit: 1 πŸ“¦ Installing minimal Gentoo tools... βœ… Gentoo tools installed successfully πŸ”¨ Building vim with Gentoo... βœ… Build successful! ``` ### Container Builds (Recommended for Arch Linux) If you have Podman or Docker installed, NIP can build in containers: ```bash # Install Podman (Arch Linux) sudo pacman -S podman # NIP automatically uses containers if tools aren't installed nip build firefox +wayland --source=gentoo # Or explicitly use containers nip build firefox --container ``` **Benefits:** - βœ… No need to install build tools - βœ… Secure, isolated builds - βœ… Rootless with Podman - βœ… Clean system ## Configuration NIP uses a simple key-value configuration format: **Global:** `/etc/nip/nip.conf` **User:** `~/.nip/config` ```bash # Initialize user config nip config init # View current config nip config show ``` Example configuration: ``` # Directory Configuration programs-dir = "/Programs" links-dir = "/System/Links" # Adapter Priorities (lower = tried first) nix-priority = 10 pkgsrc-priority = 20 pacman-priority = 30 ``` ## Directory Structure ``` /Programs/ # Package installation β”œβ”€β”€ Firefox/120.0/ └── Vim/9.0/ /System/Links/ # Unified symlink tree β”œβ”€β”€ Executables/ # Binaries (in PATH) β”œβ”€β”€ Libraries/ # Shared libraries β”œβ”€β”€ Headers/ # Include files └── Shared/ # Share data /var/nip/ # NIP data β”œβ”€β”€ cas/ # Content-addressable storage β”œβ”€β”€ cache/ # Download cache └── db/packages.json # Package database ``` ## Requirements - **Nim compiler** (for building from source) - **One or more package sources:** - Nix (recommended for all platforms) - PKGSRC (native on BSD) - Pacman (Arch Linux) ## Platform Support - βœ… Linux (Arch, Debian, Ubuntu, etc.) - βœ… FreeBSD - βœ… NetBSD - βœ… DragonflyBSD - βœ… OpenBSD ## Use Cases ### Arch Linux: Hybrid Package Management **Perfect for Arch users who want customization!** ```bash # Fast: Install standard packages from Arch repos nip install firefox chromium vscode # Custom: Build from Gentoo with optimizations nip build vim +python+ruby+lto --source=gentoo nip build ffmpeg +vaapi+cpu-native --source=gentoo # Secure: Use Podman containers (no Gentoo installation needed) sudo pacman -S podman nip build obs-studio +pipewire --source=gentoo # β†’ Automatically builds in container ``` **See [Arch Linux Guide](docs/arch-linux-guide.md) for complete workflow** ### Gentoo: Access to Nix Packages **Perfect for Gentoo users who want quick binary installations!** ```bash # System packages from Portage (source, customizable) emerge --ask firefox # Quick binary installs from Nix (fast, no compilation) nip install vscode chromium --source=nix # Custom optimized builds from Gentoo nip build ffmpeg +vaapi+lto+cpu-native --source=gentoo # Best of both worlds! ``` **See [Gentoo + Nix Guide](docs/gentoo-nix-guide.md) for complete workflow** ### Debian/Ubuntu: Access to Latest Packages ```bash # Get latest packages from Nix nip install firefox # Latest version, not Debian's old version # Build with custom features nip build vim +python --source=gentoo ``` ### BSD: Unified Package Management ```bash # Use native PKGSRC nip install vim # Or use Nix for more packages nip install firefox --source=nix ``` ## Troubleshooting ### Permission Denied Most NIP operations require root: ```bash sudo nip graft nix:hello ``` ### Check System Health ```bash nip doctor ``` ### View Logs ```bash nip logs 50 ``` ## Development ```bash # Build for development nim c nip_mvp.nim # Build for release ./build.sh # Run tests nim c -r tests/test_all.nim ``` ## License See LICENSE file in the repository. ## Contributing See CONTRIBUTING.md for guidelines. ## Documentation πŸ“š **[Complete Documentation Index](docs/README.md)** - Browse all documentation ### Getting Started - **[Getting Started Guide](docs/getting-started.md)** - Start here! Complete introduction to NIP - **[Quick Reference](docs/quick-reference.md)** - Command cheat sheet ### User Guides - [Dependency Resolution](docs/DEPENDENCY_RESOLUTION.md) - How NIP resolves package dependencies - [Bootstrap Overview](docs/bootstrap-overview.md) - Understanding the bootstrap system - [Bootstrap Guide](docs/bootstrap-guide.md) - Installing build tools - [Bootstrap Detection Flow](docs/bootstrap-detection-flow.md) - How automatic detection works - [Source Build Guide](docs/source-build-guide.md) - Building from source - [Arch Linux Guide](docs/arch-linux-guide.md) - Using NIP on Arch Linux - [Gentoo + Nix Guide](docs/gentoo-nix-guide.md) - Using Nix packages on Gentoo ### Developer Guides - [Bootstrap API](docs/bootstrap-api.md) - Bootstrap system API - [Recipe Authoring](recipes/AUTHORING-GUIDE.md) - Creating recipes - [Build Binaries](recipes/BUILD-BINARIES.md) - Building standalone binaries ## More Information - Repository: https://git.maiwald.work/Nexus/NexusToolKit - Issues: https://git.maiwald.work/Nexus/NexusToolKit/issues - Wiki: https://git.maiwald.work/Nexus/NexusToolKit/wiki