nip/docs/NIPPELS_EXAMPLES.md

16 KiB

Nippels Usage Examples

Practical examples for common Nippel use cases


Table of Contents

  1. Basic Examples
  2. Profile-Specific Examples
  3. Advanced Use Cases
  4. Integration Examples
  5. Workflow Examples

Basic Examples

Example 1: Simple Browser Isolation

Goal: Isolate Firefox for general browsing

# Create Nippel
nip cell create firefox-general --profile=workstation

# Install Firefox
nip install --cell=firefox-general firefox

# Activate and use
nip cell activate firefox-general
firefox

# When done
nip cell deactivate

Result:

  • Firefox runs in isolated environment
  • Separate cookies, cache, history
  • System themes and fonts work
  • < 50ms activation overhead

Example 2: Work vs Personal Browsers

Goal: Completely separate work and personal browsing

# Create work browser
nip cell create work-browser --profile=workstation
nip install --cell=work-browser firefox

# Create personal browser
nip cell create personal-browser --profile=workstation
nip install --cell=personal-browser firefox

# Use work browser
nip cell activate work-browser
firefox &  # Opens with work profile

# Switch to personal browser
nip cell deactivate
nip cell activate personal-browser
firefox &  # Opens with personal profile

Result:

  • Complete separation of browsing data
  • Different bookmarks, extensions, settings
  • Easy to backup each separately
  • No data leakage between profiles

Example 3: Quick Nippel Creation

Goal: Create and use a Nippel in one command

# Create, install, and activate in one go
nip cell create-and-use my-app --profile=workstation --install=firefox

# Equivalent to:
# nip cell create my-app --profile=workstation
# nip install --cell=my-app firefox
# nip cell activate my-app

Example 4: Listing and Managing Nippels

Goal: View and manage existing Nippels

# List all Nippels
nip cell list

# List with details
nip cell list --verbose

# List only active Nippels
nip cell list --active

# Show specific Nippel
nip cell show firefox-general

# Remove Nippel (keep data)
nip cell remove old-app

# Remove with data
nip cell remove old-app --purge

Profile-Specific Examples

Workstation Profile Examples

Profile: Balanced security and usability

Example 1: Development Environment

# Create development Nippel
nip cell create dev-env --profile=workstation

# Install development tools
nip install --cell=dev-env \
  gcc gdb valgrind \
  python poetry pytest \
  nodejs npm yarn

# Activate for development
nip cell activate dev-env

# Now all dev tools are available
gcc --version
python --version
node --version

# Deactivate when done
nip cell deactivate

Example 2: Media Editing

# Create media editing environment
nip cell create media-edit --profile=workstation

# Install media tools
nip install --cell=media-edit \
  gimp inkscape blender \
  audacity kdenlive

# Activate and edit
nip cell activate media-edit
gimp &
blender &

Homestation Profile Examples

Profile: Maximum convenience for home use

Example 1: Gaming Setup

# Create gaming environment
nip cell create gaming --profile=homestation

# Install gaming tools
nip install --cell=gaming \
  steam lutris wine \
  discord obs-studio

# Activate for gaming
nip cell activate gaming
steam &
discord &

# Backup gaming environment
nip cell export gaming --output=gaming-backup.tar.zst

Example 2: Home Media Center

# Create media center
nip cell create media-center --profile=homestation

# Install media apps
nip install --cell=media-center \
  vlc mpv kodi \
  spotify-client

# Activate and enjoy
nip cell activate media-center
kodi

Satellite Profile Examples

Profile: Maximum portability and isolation

Example 1: Banking and Finance

# Create strict banking environment
nip cell create banking --profile=satellite --isolation=strict

# Install browser
nip install --cell=banking firefox

# Activate for banking (strict isolation)
nip cell activate banking
firefox https://mybank.com

# Deactivate immediately after
nip cell deactivate

# Verify integrity
nip cell verify banking

Example 2: Portable Work Environment

# Create portable work environment
nip cell create portable-work --profile=satellite

# Install work tools
nip install --cell=portable-work \
  libreoffice thunderbird \
  firefox vscode

# Export for use on other machines
nip cell export portable-work --output=work-env.nippel.tar.zst

# On another machine:
nip cell import work-env.nippel.tar.zst
nip cell activate portable-work

NetworkIOT Profile Examples

Profile: Network-focused, minimal resources

Example 1: Network Monitoring

# Create network monitoring Nippel
nip cell create netmon --profile=networkiot

# Install monitoring tools
nip install --cell=netmon \
  wireshark tcpdump nmap \
  iperf3 mtr

# Activate and monitor
nip cell activate netmon
wireshark &

Example 2: IoT Gateway

# Create IoT gateway
nip cell create iot-gateway --profile=networkiot

# Install IoT tools
nip install --cell=iot-gateway \
  mosquitto node-red \
  influxdb grafana

# Activate gateway
nip cell activate iot-gateway
# Services start automatically

Server Profile Examples

Profile: Server applications, no desktop

Example 1: Web Server

# Create web server Nippel
nip cell create web-server --profile=server

# Install web stack
nip install --cell=web-server \
  nginx postgresql redis

# Activate and start services
nip cell activate web-server
nip svc enable --cell=web-server nginx
nip svc enable --cell=web-server postgresql

Example 2: Database Server

# Create database server
nip cell create db-server --profile=server

# Install database
nip install --cell=db-server postgresql

# Activate and configure
nip cell activate db-server
nip svc enable --cell=db-server postgresql

Advanced Use Cases

Example 1: Multiple Python Versions

Goal: Run different Python versions in isolation

# Python 3.9 environment
nip cell create python39 --profile=workstation
nip install --cell=python39 python@3.9 poetry pytest

# Python 3.11 environment
nip cell create python311 --profile=workstation
nip install --cell=python311 python@3.11 poetry pytest

# Python 3.12 environment
nip cell create python312 --profile=workstation
nip install --cell=python312 python@3.12 poetry pytest

# Use Python 3.9
nip cell activate python39
python --version  # 3.9.x

# Switch to Python 3.11
nip cell deactivate
nip cell activate python311
python --version  # 3.11.x

Example 2: Testing Untrusted Software

Goal: Safely test suspicious software

# Create quantum-isolated environment
nip cell create untrusted \
  --profile=satellite \
  --isolation=quantum \
  --network=none \
  --filesystem=none

# Activate (complete isolation)
nip cell activate untrusted

# Run untrusted binary
./suspicious-binary
# Cannot access network
# Cannot access filesystem
# Cannot escape isolation

# Deactivate and verify
nip cell deactivate
nip cell verify untrusted

# If compromised, just remove
nip cell remove untrusted --purge

Example 3: Reproducible Development Environment

Goal: Create reproducible dev environment

# Create development environment
nip cell create project-dev --profile=workstation

# Install specific versions
nip install --cell=project-dev \
  nodejs@18.17.0 \
  python@3.11.4 \
  gcc@13.2.0

# Lock the environment
nip cell lock project-dev --output=project-dev.lock

# Share lockfile with team
# Team members can reproduce:
nip cell create project-dev --from-lock=project-dev.lock

# Verify reproducibility
nip cell verify project-dev

Example 4: Multi-Browser Testing

Goal: Test web app in multiple browsers

# Create Firefox testing environment
nip cell create test-firefox --profile=workstation
nip install --cell=test-firefox firefox

# Create Chrome testing environment
nip cell create test-chrome --profile=workstation
nip install --cell=test-chrome chromium

# Create Safari (via Wine) testing environment
nip cell create test-safari --profile=workstation
nip install --cell=test-safari wine safari

# Test in Firefox
nip cell activate test-firefox
firefox http://localhost:3000 &

# Test in Chrome
nip cell activate test-chrome
chromium http://localhost:3000 &

# Test in Safari
nip cell activate test-safari
wine safari http://localhost:3000 &

Integration Examples

Example 1: Systemd Integration

Goal: Run services in Nippels with systemd

# Create service Nippel
nip cell create my-service --profile=server

# Install service
nip install --cell=my-service nginx

# Enable systemd integration
nip cell customize my-service --systemd=true

# Start service
nip svc enable --cell=my-service nginx
nip svc start --cell=my-service nginx

# Check status
nip svc status --cell=my-service nginx

# View logs
journalctl -u nippel-my-service-nginx

Example 2: Docker Integration

Goal: Run Docker containers in Nippels

# Create Docker environment
nip cell create docker-env --profile=workstation

# Install Docker
nip install --cell=docker-env docker docker-compose

# Activate and use Docker
nip cell activate docker-env
docker run hello-world
docker-compose up -d

Example 3: CI/CD Integration

Goal: Use Nippels in CI/CD pipelines

# .gitlab-ci.yml
test:
  script:
    - nip cell create ci-test --profile=workstation
    - nip install --cell=ci-test nodejs npm
    - nip cell activate ci-test
    - npm install
    - npm test
    - nip cell deactivate
    - nip cell remove ci-test --purge

Example 4: Backup Integration

Goal: Automated Nippel backups

# Create backup script
cat > backup-nippels.sh <<'EOF'
#!/bin/bash
BACKUP_DIR="/backups/nippels"
DATE=$(date +%Y%m%d)

# Backup all Nippels
for cell in $(nip cell list --format=names); do
  echo "Backing up $cell..."
  nip cell export "$cell" \
    --output="$BACKUP_DIR/${cell}-${DATE}.nippel.tar.zst"
done

# Clean old backups (keep 7 days)
find "$BACKUP_DIR" -name "*.nippel.tar.zst" -mtime +7 -delete
EOF

chmod +x backup-nippels.sh

# Add to cron
crontab -e
# Add: 0 2 * * * /path/to/backup-nippels.sh

Workflow Examples

Workflow 1: Daily Development

Morning:

# Start work
nip cell activate work-dev
code ~/projects/my-app

# Check emails
nip cell activate work-browser
firefox &

Afternoon:

# Switch to different project
nip cell deactivate
nip cell activate other-project-dev
code ~/projects/other-app

Evening:

# Personal time
nip cell deactivate
nip cell activate personal-browser
firefox &

# Gaming
nip cell activate gaming
steam &

Workflow 2: Security-Conscious User

Banking:

# Strict isolation for banking
nip cell activate banking
firefox https://mybank.com
# Do banking
nip cell deactivate

# Verify integrity after
nip cell verify banking

General Browsing:

# Standard isolation for browsing
nip cell activate personal-browser
firefox

Work:

# Work browser with company policies
nip cell activate work-browser
firefox

Workflow 3: Software Testing

Setup:

# Create test environments
nip cell create test-stable --profile=workstation
nip cell create test-beta --profile=workstation
nip cell create test-dev --profile=workstation

# Install different versions
nip install --cell=test-stable myapp@1.0.0
nip install --cell=test-beta myapp@1.1.0-beta
nip install --cell=test-dev myapp@main

Testing:

# Test stable version
nip cell activate test-stable
myapp --run-tests

# Test beta version
nip cell activate test-beta
myapp --run-tests

# Test dev version
nip cell activate test-dev
myapp --run-tests

Workflow 4: Team Collaboration

Team Lead:

# Create team development environment
nip cell create team-dev --profile=workstation

# Install team tools
nip install --cell=team-dev \
  nodejs@18.17.0 \
  python@3.11.4 \
  docker docker-compose

# Lock environment
nip cell lock team-dev --output=team-dev.lock

# Share lockfile with team
git add team-dev.lock
git commit -m "Add team development environment"
git push

Team Members:

# Clone repository
git clone https://github.com/team/project.git
cd project

# Create environment from lockfile
nip cell create team-dev --from-lock=team-dev.lock

# Activate and develop
nip cell activate team-dev
npm install
npm run dev

Workflow 5: Multi-Environment Development

Goal: Develop for multiple platforms

# Linux development
nip cell create dev-linux --profile=workstation
nip install --cell=dev-linux gcc make cmake

# Windows development (via Wine)
nip cell create dev-windows --profile=workstation
nip install --cell=dev-windows wine mingw-w64

# macOS development (via cross-compiler)
nip cell create dev-macos --profile=workstation
nip install --cell=dev-macos osxcross

# Build for all platforms
nip cell activate dev-linux
make linux

nip cell activate dev-windows
make windows

nip cell activate dev-macos
make macos

Real-World Scenarios

Scenario 1: Freelance Developer

Requirements:

  • Multiple client projects
  • Different tech stacks
  • Strict client data separation

Solution:

# Client A (Python/Django)
nip cell create client-a --profile=workstation
nip install --cell=client-a python poetry postgresql

# Client B (Node.js/React)
nip cell create client-b --profile=workstation
nip install --cell=client-b nodejs npm mongodb

# Client C (Ruby/Rails)
nip cell create client-c --profile=workstation
nip install --cell=client-c ruby bundler postgresql

# Work on Client A
nip cell activate client-a
cd ~/projects/client-a
code .

# Switch to Client B
nip cell deactivate
nip cell activate client-b
cd ~/projects/client-b
code .

Scenario 2: Security Researcher

Requirements:

  • Analyze malware safely
  • Test exploits in isolation
  • No risk to host system

Solution:

# Create analysis environment
nip cell create malware-analysis \
  --profile=satellite \
  --isolation=quantum \
  --network=none \
  --filesystem=none

# Activate (complete isolation)
nip cell activate malware-analysis

# Analyze malware
./suspicious-malware
# Cannot escape, cannot access network, cannot access files

# Deactivate and verify
nip cell deactivate
nip cell verify malware-analysis

# If compromised, just remove
nip cell remove malware-analysis --purge

Scenario 3: System Administrator

Requirements:

  • Test system changes safely
  • Multiple server configurations
  • Easy rollback

Solution:

# Production-like environment
nip cell create prod-test --profile=server
nip install --cell=prod-test nginx postgresql redis

# Staging environment
nip cell create staging --profile=server
nip install --cell=staging nginx postgresql redis

# Development environment
nip cell create dev-server --profile=server
nip install --cell=dev-server nginx postgresql redis

# Test changes in dev
nip cell activate dev-server
# Make changes
nip svc restart --cell=dev-server nginx

# If good, promote to staging
nip cell export dev-server --output=dev-config.nippel.tar.zst
nip cell import dev-config.nippel.tar.zst --name=staging

# If good, promote to prod-test
nip cell export staging --output=staging-config.nippel.tar.zst
nip cell import staging-config.nippel.tar.zst --name=prod-test

See Also


Version: 1.0 Last Updated: November 19, 2025 Status: Usage Examples Target Audience: Users learning Nippels through examples