nip/examples/nip-use-flags.kdl

512 lines
14 KiB
Plaintext

// NIP Configuration with USE Flags and Build Settings
// This is an example configuration showing the USE flag system
nip {
// Basic Directory Configuration
programs-dir "/Programs"
links-dir "/System/Links"
cache-dir "/var/nip/cache"
db-file "/var/nip/db/packages.json"
// Global Options
auto-symlink true
check-conflicts true
verbose false
// ============================================
// Global USE Flags
// ============================================
// These apply to all packages unless overridden
use-flags {
// Init System (mutually exclusive)
// Choose ONE: systemd, dinit, openrc, runit
init {
-systemd // Disable systemd support
+dinit // Enable dinit support
-openrc // Disable OpenRC support
-runit // Disable runit support
}
// GUI Toolkit Preferences
gui {
-X // Disable X11 support
+wayland // Enable Wayland support
+gtk // Enable GTK support
-qt // Disable Qt support
}
// Audio System
audio {
-pulseaudio // Disable PulseAudio
+pipewire // Enable PipeWire
+alsa // Enable ALSA
}
// Optimization Flags
optimization {
+lto // Enable Link-Time Optimization
+pgo // Enable Profile-Guided Optimization
-debug // Disable debug symbols
+strip // Strip binaries
}
// Security Hardening
security {
+hardened // Enable hardening
+pie // Position Independent Executables
+relro // RELRO (Relocation Read-Only)
+stack-protector // Stack protection
}
// Common Features
features {
+ipv6 // Enable IPv6 support
+ssl // Enable SSL/TLS
+zstd // Enable Zstandard compression
+lz4 // Enable LZ4 compression
-doc // Disable documentation
-examples // Disable examples
+dbus // Enable D-Bus support
}
// Language Bindings
bindings {
+python // Enable Python bindings
-ruby // Disable Ruby bindings
-perl // Disable Perl bindings
+lua // Enable Lua bindings
}
// ============================================
// Nexus-Specific Categories
// ============================================
// Nexus Fleet Command
nexus-fleet {
+fleet-agent // Enable fleet agent
+fleet-discovery // Enable service discovery
+fleet-mesh // Enable mesh networking
-fleet-controller // Disable controller (not needed on nodes)
}
// System Bootstrapping
nexus-bootstrap {
-bootstrap // Not building from scratch
+cross-compile // Enable cross-compilation support
-stage1 // Not stage1 bootstrap
}
// Container Technologies
container {
+nipcells // Enable NipCells (Nexus containers)
-docker // Disable Docker
+containerd // Enable containerd
+crun // Enable crun runtime
}
// Virtualization
virtualization {
+kvm // Enable KVM support
+qemu // Enable QEMU
+libvirt // Enable libvirt
-xen // Disable Xen
}
// Mesh Networking
mesh {
+mesh-network // Enable mesh networking
+wireguard // Enable WireGuard
+libp2p // Enable libp2p
-ipfs // Disable IPFS
}
// Gaming
gaming {
+vulkan // Enable Vulkan
+mesa // Enable Mesa
+amd // AMD GPU support
-nvidia // No NVIDIA
-steam // No Steam
}
// AI/ML and NPU
ai-ml {
+rocm // Enable ROCm (AMD)
+opencl // Enable OpenCL
-cuda // No CUDA (NVIDIA)
+onnx // Enable ONNX runtime
}
// Developer Tools
developer {
+debugger // Enable debugging support
+lsp // Enable LSP support
+profiler // Enable profiling
-sanitizer // Disable sanitizers (performance)
}
// Nexus Integration
nexus-integration {
+nexus-api // Enable Nexus API
+nexus-sync // Enable sync service
+nexus-monitor // Enable monitoring
+nexus-security // Enable security features
}
}
// ============================================
// Compiler and Linker Flags
// ============================================
compiler {
// C Compiler Flags
CFLAGS "-O3 -march=native -pipe -fomit-frame-pointer"
// C++ Compiler Flags
CXXFLAGS "-O3 -march=native -pipe -fomit-frame-pointer"
// Linker Flags
LDFLAGS "-Wl,-O1 -Wl,--as-needed -Wl,--hash-style=gnu"
// Make Flags (parallel jobs)
MAKEFLAGS "-j8"
// Additional flags
RUSTFLAGS "-C opt-level=3 -C target-cpu=native"
GOFLAGS "-buildmode=pie"
}
// ============================================
// Build Profiles
// ============================================
// Named collections of USE flags and compiler settings
profiles {
// Currently active profile
active "performance"
// Minimal Profile - Small footprint
profile "minimal" {
description "Minimal features for embedded or containers"
base "default"
use-flags {
// Disable almost everything
-systemd -dinit -openrc
-X -wayland -gtk -qt
-pulseaudio -pipewire
-doc -examples -dbus
// Keep essentials
+ssl +ipv6
}
compiler {
CFLAGS "-Os -pipe"
CXXFLAGS "-Os -pipe"
LDFLAGS "-Wl,-O1 -Wl,--as-needed -Wl,--strip-all"
MAKEFLAGS "-j4"
}
}
// Desktop Profile - Full GUI support
profile "desktop" {
description "Full desktop environment with GUI"
base "default"
use-flags {
+dinit
+wayland +gtk +qt
+pipewire +alsa
+dbus +ipv6 +ssl
+python +lua
}
compiler {
CFLAGS "-O2 -pipe"
CXXFLAGS "-O2 -pipe"
LDFLAGS "-Wl,-O1"
MAKEFLAGS "-j8"
}
}
// Performance Profile - Maximum optimization
profile "performance" {
description "Maximum performance with aggressive optimizations"
base "default"
use-flags {
+lto +pgo
-debug +strip
+hardened +pie
}
compiler {
CFLAGS "-O3 -march=native -flto -fomit-frame-pointer -pipe"
CXXFLAGS "-O3 -march=native -flto -fomit-frame-pointer -pipe"
LDFLAGS "-Wl,-O1 -Wl,--as-needed -flto"
MAKEFLAGS "-j16"
RUSTFLAGS "-C opt-level=3 -C target-cpu=native -C lto=fat"
}
}
// Server Profile - Headless server
profile "server" {
description "Server configuration without GUI"
base "default"
use-flags {
+systemd
-X -wayland -gtk -qt
-pulseaudio -pipewire
+ssl +ipv6 +zstd
+hardened +pie +relro
}
compiler {
CFLAGS "-O2 -pipe -fstack-protector-strong"
CXXFLAGS "-O2 -pipe -fstack-protector-strong"
LDFLAGS "-Wl,-O1 -Wl,-z,relro -Wl,-z,now"
MAKEFLAGS "-j8"
}
}
// Development Profile - Debug symbols
profile "development" {
description "Development with debug symbols"
base "default"
use-flags {
+debug
-strip -lto
+doc +examples
}
compiler {
CFLAGS "-O0 -g -pipe"
CXXFLAGS "-O0 -g -pipe"
LDFLAGS "-Wl,-O1"
MAKEFLAGS "-j8"
}
}
}
// ============================================
// Per-Package Configuration
// ============================================
// Override USE flags and compiler settings for specific packages
package "firefox" {
description "Firefox web browser"
use-flags {
+wayland -X // Wayland-only build
+alsa -pulseaudio // ALSA instead of PulseAudio
+lto // Enable LTO for Firefox
-debug +strip // Release build
}
compiler {
CFLAGS "-O3 -march=native -flto"
CXXFLAGS "-O3 -march=native -flto"
LDFLAGS "-Wl,-O1 -flto"
MAKEFLAGS "-j8"
}
}
package "vim" {
description "Vim text editor"
use-flags {
+python +lua // Enable scripting
-ruby -perl // Disable other languages
+gtk // GUI support
-X // No X11
}
}
package "nginx" {
description "Nginx web server"
use-flags {
+ssl +http2 +http3 // Modern protocols
+zstd +lz4 // Compression
-debug // Production build
+hardened // Security hardening
}
compiler {
CFLAGS "-O3 -flto -fstack-protector-strong"
LDFLAGS "-Wl,-O1 -Wl,-z,relro -Wl,-z,now -flto"
}
}
package "ffmpeg" {
description "FFmpeg multimedia framework"
use-flags {
+lto +pgo // Maximum performance
+vaapi +vdpau // Hardware acceleration
+x264 +x265 +av1 // Video codecs
+opus +aac // Audio codecs
}
compiler {
CFLAGS "-O3 -march=native -flto -fomit-frame-pointer"
MAKEFLAGS "-j16"
}
}
package "python" {
description "Python interpreter"
use-flags {
+lto +pgo // Optimize Python itself
+ssl +ipv6 // Network support
-debug // Release build
}
compiler {
CFLAGS "-O3 -march=native -flto"
LDFLAGS "-Wl,-O1 -flto"
}
}
// ============================================
// Nexus-Specific Packages
// ============================================
package "nexus-fleet" {
description "Nexus fleet orchestration system"
use-flags {
+fleet-agent +fleet-controller +fleet-mesh
+wireguard +libp2p
+nexus-api +nexus-sync
+lto -debug
}
compiler {
CFLAGS "-O3 -march=native -flto"
LDFLAGS "-Wl,-O1 -flto"
}
}
package "nipcells" {
description "NipCells container runtime"
use-flags {
+nipcells +crun +containerd
+nexus-security +nexus-monitor
+lto +hardened
}
compiler {
CFLAGS "-O3 -flto -fstack-protector-strong"
LDFLAGS "-Wl,-O1 -Wl,-z,relro -Wl,-z,now -flto"
}
}
package "nexus-compiler" {
description "Nexus system compiler with bootstrap support"
use-flags {
+bootstrap +cross-compile
+stage1 +stage2 +stage3
+lto +pgo
+developer +debugger
}
compiler {
CFLAGS "-O3 -march=native"
LDFLAGS "-Wl,-O1"
}
}
package "blender" {
description "3D creation suite with GPU acceleration"
use-flags {
+vulkan +opencl +rocm
+python +lua
+wayland -X
}
compiler {
CFLAGS "-O3 -march=native"
MAKEFLAGS "-j16"
}
}
package "pytorch" {
description "Machine learning framework with NPU support"
use-flags {
+rocm +opencl +onnx
+python
+lto
}
compiler {
CFLAGS "-O3 -march=native"
MAKEFLAGS "-j16"
}
}
package "qemu" {
description "Virtualization with KVM support"
use-flags {
+kvm +libvirt
+virgl +vulkan
+gtk +wayland
}
compiler {
CFLAGS "-O3 -march=native"
}
}
// ============================================
// Adapter Configuration
// ============================================
adapters {
nix {
enabled true
priority 10
}
pkgsrc {
enabled true
priority 20
// PKGSRC-specific: enable source building
build-from-source true
}
pacman {
enabled true
priority 30
}
}
}
// ============================================
// Common USE Flag Combinations
// ============================================
// Wayland Desktop:
// +wayland -X +gtk +pipewire +dinit
// X11 Desktop:
// +X -wayland +gtk +pulseaudio +systemd
// Minimal Server:
// -X -wayland -gtk -qt -pulseaudio +ssl +ipv6
// Performance Workstation:
// +lto +pgo +march-native +wayland +pipewire
// Development Machine:
// +debug -strip +doc +examples +python +lua