nip/profiles/README.md

3.9 KiB

NIP Profiles

NIP supports two types of profiles for different purposes:

1. Security Profiles (Nippels)

Security profiles define isolation levels and security settings for Nippels (user-level application environments). These profiles determine how applications are isolated and what system resources they can access.

Available Security Profiles

Profile Isolation Desktop Network Use Case
Workstation Standard Yes Full Work computers with desktop integration
Homestation Standard Yes Relaxed Home use (default profile)
Satellite Strict Yes Limited Laptops and mobile devices
Network/IOT Strict No Minimal Embedded devices and IoT
Server Strict No Controlled Server deployments

Security Profile Files

  • security/workstation.kdl - Workstation security profile
  • security/homestation.kdl - Homestation security profile (default)
  • security/satellite.kdl - Satellite/mobile security profile
  • security/network-iot.kdl - Network/IOT security profile
  • security/server.kdl - Server security profile

Usage

# Create Nippel with specific security profile
nip cell create dev-env --profile Workstation

# Create with custom isolation
nip cell create secure-env --profile Satellite --isolation Strict

2. Build Profiles

Build profiles define compiler flags, optimization levels, and domain-specific features for building packages from source. These profiles determine how packages are compiled and what features are enabled.

Available Build Profiles

  • build/desktop.kdl - Desktop workstation build configuration
  • build/server.kdl - Production server build configuration
  • build/minimal.kdl - Minimal/embedded build configuration
  • build/developer.kdl - Development build configuration
  • build/gaming-rig.kdl - Gaming-optimized build configuration
  • build/ml-workstation.kdl - Machine learning workstation configuration
  • build/fleet-node.kdl - Fleet management node configuration

Build Profile Structure

Build profiles define:

  • Domain flags: Feature domains (init, runtime, graphics, audio, security, etc.)
  • Compiler settings: CFLAGS, CXXFLAGS, LDFLAGS, MAKEFLAGS
  • Optimization levels: -O2, -O3, -Os, LTO, etc.
  • Security hardening: PIE, RELRO, stack protector, fortify

Usage

# Build package with specific profile
nip build vim --profile desktop

# Build with custom flags
nip build nginx --profile server +ssl+http2

3. Custom Profiles

You can create custom profiles by copying and modifying existing profiles:

# Copy existing profile
cp nip/profiles/security/homestation.kdl ~/.config/nip/profiles/security/my-profile.kdl

# Edit to customize
vim ~/.config/nip/profiles/security/my-profile.kdl

# Use custom profile
nip cell create my-env --profile my-profile

Profile Search Order

NIP searches for profiles in this order:

  1. ~/.config/nip/profiles/ (user profiles)
  2. /etc/nip/profiles/ (system profiles)
  3. <nip-install>/profiles/ (default profiles)

Examples

See the examples/ directory for additional profile examples:

  • examples/gaming-rig.kdl - Gaming-optimized configuration
  • examples/ml-workstation.kdl - Machine learning workstation
  • examples/developer.kdl - Developer workstation

Documentation

For more information:

Contributing

When creating new profiles:

  1. Follow the KDL format used in existing profiles
  2. Document the profile's purpose and use case
  3. Test the profile with common packages
  4. Submit a pull request with your profile

Profile System Version: 1.0 Last Updated: November 18, 2025