117 lines
3.9 KiB
Markdown
117 lines
3.9 KiB
Markdown
# 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
|
|
|
|
```bash
|
|
# 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
|
|
|
|
```bash
|
|
# 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:
|
|
|
|
```bash
|
|
# 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:
|
|
- [Nippels Documentation](../docs/nipcells.md) - Security profiles and isolation
|
|
- [Build System Documentation](../docs/build-system.md) - Build profiles and compilation
|
|
- [Profile Specification](../../.kiro/nip/specs/nexuscells/requirements.md) - Technical specification
|
|
|
|
## 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
|