# Nippels Usage Examples **Practical examples for common Nippel use cases** --- ## Table of Contents 1. [Basic Examples](#basic-examples) 2. [Profile-Specific Examples](#profile-specific-examples) 3. [Advanced Use Cases](#advanced-use-cases) 4. [Integration Examples](#integration-examples) 5. [Workflow Examples](#workflow-examples) --- ## Basic Examples ### Example 1: Simple Browser Isolation **Goal:** Isolate Firefox for general browsing ```bash # 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 ```bash # 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 ```bash # 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 ```bash # 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 ```bash # 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 ```bash # 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 ```bash # 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 ```bash # 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 ```bash # 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 ```bash # 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 ```bash # 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 ```bash # 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 ```bash # 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 ```bash # 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 ```bash # 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 ```bash # 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 ```bash # 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 ```bash # 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 ```bash # 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 ```bash # 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 ```yaml # .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 ```bash # 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:** ```bash # Start work nip cell activate work-dev code ~/projects/my-app # Check emails nip cell activate work-browser firefox & ``` **Afternoon:** ```bash # Switch to different project nip cell deactivate nip cell activate other-project-dev code ~/projects/other-app ``` **Evening:** ```bash # Personal time nip cell deactivate nip cell activate personal-browser firefox & # Gaming nip cell activate gaming steam & ``` ### Workflow 2: Security-Conscious User **Banking:** ```bash # 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:** ```bash # Standard isolation for browsing nip cell activate personal-browser firefox ``` **Work:** ```bash # Work browser with company policies nip cell activate work-browser firefox ``` ### Workflow 3: Software Testing **Setup:** ```bash # 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:** ```bash # 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:** ```bash # 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:** ```bash # 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 ```bash # 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:** ```bash # 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:** ```bash # 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:** ```bash # 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 - [Nippels User Guide](./NIPPELS_USER_GUIDE.md) - Complete user guide - [Nippels Developer Guide](./NIPPELS_DEVELOPER_GUIDE.md) - Developer documentation - [Nippels Troubleshooting](./NIPPELS_TROUBLESHOOTING.md) - Troubleshooting guide - [Nippels vs Flatpak](./NIPPELS_VS_FLATPAK.md) - Comparison with Flatpak - [Nippels vs Packages](./NIPPELS_VS_PACKAGES.md) - When to use Nippels --- **Version:** 1.0 **Last Updated:** November 19, 2025 **Status:** Usage Examples **Target Audience:** Users learning Nippels through examples