# Nippels Troubleshooting Guide **Comprehensive troubleshooting guide for Nippels (NimPak Cells)** --- ## Table of Contents 1. [Quick Diagnostics](#quick-diagnostics) 2. [Common Issues](#common-issues) 3. [Performance Issues](#performance-issues) 4. [Security and Permissions](#security-and-permissions) 5. [Integration Issues](#integration-issues) 6. [Advanced Troubleshooting](#advanced-troubleshooting) 7. [Error Messages](#error-messages) 8. [Getting Help](#getting-help) --- ## Quick Diagnostics ### Run System Health Check ```bash # Check overall system health nip doctor # Check specific Nippel nip cell doctor my-app # Verify CAS integrity nip cas verify # Check for common issues nip cell check my-app ``` ### Check Nippel Status ```bash # Show Nippel details nip cell show my-app # Check if active nip cell status # List all Nippels nip cell list # Show with verbose output nip cell show my-app --verbose ``` ### Enable Debug Logging ```bash # Enable debug logging for all commands export NIP_LOG_LEVEL=debug # Or per-command nip --log-level=debug cell activate my-app # Save logs to file nip --log-file=/tmp/nip-debug.log cell activate my-app ``` --- ## Common Issues ### Issue 1: Permission Denied **Symptoms:** ``` Error: Permission denied when creating Nippel Error: Cannot create namespace: Operation not permitted ``` **Causes:** - Insufficient permissions for namespace creation - User namespaces disabled in kernel - SELinux/AppArmor blocking operations **Solutions:** **Solution 1: Run with appropriate permissions** ```bash # For system-wide Nippels (requires root) sudo nip cell create my-app # For user-level Nippels (no root needed) nip cell create my-app --user ``` **Solution 2: Enable user namespaces** ```bash # Check if user namespaces are enabled cat /proc/sys/kernel/unprivileged_userns_clone # Should output: 1 # If disabled, enable them (requires root) sudo sysctl -w kernel.unprivileged_userns_clone=1 # Make permanent echo "kernel.unprivileged_userns_clone=1" | sudo tee -a /etc/sysctl.conf ``` **Solution 3: Check SELinux/AppArmor** ```bash # Check SELinux status sestatus # If enforcing, temporarily set to permissive sudo setenforce 0 # Check AppArmor sudo aa-status # If blocking, disable profile temporarily sudo aa-complain /usr/bin/nip ``` --- ### Issue 2: Application Doesn't Start **Symptoms:** ``` Error: Application failed to start in Nippel Error: Command not found ``` **Causes:** - Application not installed in Nippel - PATH not set correctly - Missing dependencies - Namespace issues **Solutions:** **Solution 1: Verify installation** ```bash # Check if package is installed nip list --cell=my-app # Install if missing nip install --cell=my-app firefox # Verify installation nip cell show my-app --packages ``` **Solution 2: Check PATH** ```bash # Activate Nippel and check PATH nip cell activate my-app echo $PATH # Should include Nippel bin directories # If not, check profile settings nip cell profile show my-app ``` **Solution 3: Check dependencies** ```bash # List dependencies nip deps --cell=my-app firefox # Install missing dependencies nip install --cell=my-app ``` **Solution 4: Check namespace status** ```bash # Verify namespaces are created nip cell show my-app --namespaces # Try recreating namespaces nip cell recreate-namespaces my-app ``` --- ### Issue 3: Desktop Integration Not Working **Symptoms:** - Application doesn't use system theme - Fonts look different - Clipboard doesn't work - File picker shows wrong directories **Causes:** - Desktop integration disabled in profile - Wrong XDG directories - Missing theme/font packages - Isolation level too strict **Solutions:** **Solution 1: Check profile settings** ```bash # Show current profile nip cell profile show my-app # Change to profile with desktop integration nip cell profile set my-app workstation # Or enable desktop integration nip cell customize my-app --desktop-integration=true ``` **Solution 2: Verify XDG directories** ```bash # Check XDG environment nip cell activate my-app env | grep XDG # Should show: # XDG_DATA_HOME=~/.nip/cells/my-app/Data # XDG_CONFIG_HOME=~/.nip/cells/my-app/Config # XDG_CACHE_HOME=~/.nip/cells/my-app/Cache # XDG_STATE_HOME=~/.nip/cells/my-app/State ``` **Solution 3: Install theme/font packages** ```bash # Install system themes in Nippel nip install --cell=my-app gtk3 qt5ct # Install fonts nip install --cell=my-app ttf-dejavu ttf-liberation # Verify installation nip list --cell=my-app | grep -E 'gtk|qt|ttf' ``` **Solution 4: Adjust isolation level** ```bash # Check current isolation nip cell show my-app --isolation # Change to standard (allows desktop integration) nip cell profile set my-app workstation --isolation=standard ``` --- ### Issue 4: Network Access Not Working **Symptoms:** ``` Error: Cannot connect to network Error: Name resolution failed ``` **Causes:** - Network isolation enabled - DNS not configured - Firewall blocking - Network namespace issues **Solutions:** **Solution 1: Check network settings** ```bash # Show network configuration nip cell show my-app --network # Enable network access nip cell customize my-app --network=full # Or change profile nip cell profile set my-app workstation ``` **Solution 2: Check DNS configuration** ```bash # Verify DNS in Nippel nip cell activate my-app cat /etc/resolv.conf # If empty, configure DNS nip cell configure-dns my-app --dns=8.8.8.8,8.8.4.4 ``` **Solution 3: Check firewall** ```bash # Check firewall rules sudo iptables -L -n # Allow Nippel traffic (if needed) sudo iptables -A OUTPUT -m owner --uid-owner $(id -u) -j ACCEPT ``` **Solution 4: Recreate network namespace** ```bash # Recreate network namespace nip cell recreate-namespaces my-app --network-only # Verify network works nip cell activate my-app ping -c 3 8.8.8.8 ``` --- ### Issue 5: Slow Performance **Symptoms:** - Slow Nippel activation (> 100ms) - Slow application startup - High CPU/memory usage - Slow file operations **Causes:** - Large number of files - CAS cache issues - Merkle tree overhead - Resource limits too strict **Solutions:** **Solution 1: Enable lazy namespace creation** ```bash # Enable lazy namespaces nip config set lazy-namespaces true # Verify setting nip config show | grep lazy-namespaces ``` **Solution 2: Optimize CAS** ```bash # Increase CAS cache size nip config set cas-cache-size 2GB # Run CAS optimization nip cas optimize # Clean up unused entries nip cas gc ``` **Solution 3: Optimize merkle tree** ```bash # Increase merkle cache nip config set merkle-cache-size 200MB # Rebuild merkle tree nip cell rebuild-merkle my-app ``` **Solution 4: Adjust resource limits** ```bash # Show current limits nip cell show my-app --limits # Increase limits nip cell customize my-app --max-memory=4GB --max-cpu=100% ``` --- ### Issue 6: Verification Failures **Symptoms:** ``` Error: Merkle tree verification failed Error: File integrity check failed Error: Hash mismatch detected ``` **Causes:** - File corruption - Tampering - Incomplete installation - CAS corruption **Solutions:** **Solution 1: Verify with details** ```bash # Run detailed verification nip cell verify my-app --verbose # Check which files failed nip cell verify my-app --show-failures ``` **Solution 2: Attempt automatic fix** ```bash # Try to fix issues nip cell verify my-app --fix # Reinstall corrupted packages nip reinstall --cell=my-app ``` **Solution 3: Restore from backup** ```bash # List available backups nip cell list-backups my-app # Restore from backup nip cell restore my-app --from-backup= # Or import from export nip cell import my-app-backup.nippel.tar.zst --name=my-app-restored ``` **Solution 4: Rebuild from scratch** ```bash # Export package list nip list --cell=my-app > packages.txt # Remove corrupted Nippel nip cell remove my-app --purge # Recreate nip cell create my-app --profile=workstation # Reinstall packages cat packages.txt | xargs nip install --cell=my-app ``` --- ## Performance Issues ### Slow Nippel Creation **Target:** < 100ms **Diagnostics:** ```bash # Measure creation time time nip cell create test-app # Check what's slow nip --log-level=debug cell create test-app 2>&1 | grep -E 'took|duration' ``` **Solutions:** ```bash # Enable lazy namespace creation nip config set lazy-namespaces true # Reduce initial merkle tree build nip config set merkle-lazy-build true # Use faster hash algorithm (xxh3) nip config set hash-algorithm xxh3 ``` ### Slow Nippel Activation **Target:** < 50ms **Diagnostics:** ```bash # Measure activation time time nip cell activate my-app # Profile activation nip --profile cell activate my-app ``` **Solutions:** ```bash # Enable namespace caching nip config set namespace-cache true # Reduce XDG setup time nip config set xdg-lazy-setup true # Preload frequently used Nippels nip cell preload my-app ``` ### High Memory Usage **Diagnostics:** ```bash # Check memory usage nip cell stats my-app --memory # Show top memory consumers nip cell top --sort=memory ``` **Solutions:** ```bash # Set memory limits nip cell customize my-app --max-memory=1GB # Enable memory compression nip config set memory-compression true # Clean up caches nip cell clean my-app --cache ``` ### High Disk Usage **Diagnostics:** ```bash # Check disk usage nip cell stats my-app --disk # Show CAS usage nip cas stats # Find large files nip cell find-large my-app --size=100M ``` **Solutions:** ```bash # Run garbage collection nip cas gc # Clean up old versions nip cell clean my-app --old-versions # Compress Nippel nip cell compress my-app ``` --- ## Security and Permissions ### SELinux Issues **Symptoms:** ``` Error: SELinux is preventing nip from ... ``` **Solutions:** ```bash # Check SELinux denials sudo ausearch -m avc -ts recent # Create custom policy sudo audit2allow -a -M nip-custom sudo semodule -i nip-custom.pp # Or set to permissive (temporary) sudo setenforce 0 ``` ### AppArmor Issues **Symptoms:** ``` Error: AppArmor denied operation ``` **Solutions:** ```bash # Check AppArmor logs sudo journalctl -xe | grep apparmor # Set profile to complain mode sudo aa-complain /usr/bin/nip # Or disable profile sudo aa-disable /usr/bin/nip ``` ### Capability Issues **Symptoms:** ``` Error: Required capability not available ``` **Solutions:** ```bash # Check required capabilities nip cell check-caps my-app # Grant capabilities (requires root) sudo setcap cap_sys_admin,cap_net_admin+ep /usr/bin/nip # Or run with sudo sudo nip cell activate my-app ``` --- ## Integration Issues ### Systemd Integration **Symptoms:** - Services don't start - Systemd units not found **Solutions:** ```bash # Check systemd integration nip cell show my-app --systemd # Enable systemd support nip cell customize my-app --systemd=true # Reload systemd sudo systemctl daemon-reload ``` ### D-Bus Integration **Symptoms:** - D-Bus services not accessible - Desktop notifications don't work **Solutions:** ```bash # Check D-Bus socket nip cell activate my-app echo $DBUS_SESSION_BUS_ADDRESS # Enable D-Bus access nip cell customize my-app --dbus=true # Verify D-Bus works dbus-send --session --print-reply --dest=org.freedesktop.DBus /org/freedesktop/DBus org.freedesktop.DBus.ListNames ``` ### Wayland Integration **Symptoms:** - Wayland apps don't start - XDG_RUNTIME_DIR not set **Solutions:** ```bash # Check Wayland socket nip cell activate my-app echo $WAYLAND_DISPLAY # Enable Wayland support nip cell customize my-app --wayland=true # Verify Wayland works wayland-info ``` --- ## Advanced Troubleshooting ### Namespace Debugging ```bash # List active namespaces sudo lsns # Check Nippel namespaces sudo lsns | grep nip # Enter namespace manually sudo nsenter --target= --all # Debug namespace creation strace -e clone,unshare nip cell activate my-app ``` ### CAS Debugging ```bash # Verify CAS integrity nip cas verify --verbose # Show CAS statistics nip cas stats --detailed # Rebuild CAS index nip cas rebuild-index # Check for corruption nip cas fsck ``` ### Merkle Tree Debugging ```bash # Show merkle tree structure nip cell merkle my-app --tree --depth=3 # Verify specific file nip cell merkle verify my-app /path/to/file # Rebuild merkle tree nip cell rebuild-merkle my-app --force # Compare trees nip cell merkle diff my-app other-app ``` ### UTCP Debugging ```bash # Test UTCP connectivity nip cell query utcp://localhost/nippel/my-app ping # Show UTCP routes nip utcp routes # Debug UTCP requests nip --log-level=debug cell query utcp://localhost/nippel/my-app state # Test remote UTCP nip cell query utcp://remote-host/nippel/my-app state --timeout=5s ``` --- ## Error Messages ### Error: "Nippel not found" **Meaning:** The specified Nippel doesn't exist **Solution:** ```bash # List available Nippels nip cell list # Create if missing nip cell create my-app ``` ### Error: "Nippel already active" **Meaning:** Trying to activate an already active Nippel **Solution:** ```bash # Deactivate first nip cell deactivate # Then activate nip cell activate my-app ``` ### Error: "Namespace creation failed" **Meaning:** Cannot create required namespaces **Solution:** ```bash # Check kernel support cat /proc/sys/kernel/unprivileged_userns_clone # Enable if needed sudo sysctl -w kernel.unprivileged_userns_clone=1 # Or run with sudo sudo nip cell activate my-app ``` ### Error: "CAS entry not found" **Meaning:** Referenced file not in CAS **Solution:** ```bash # Verify CAS integrity nip cas verify # Rebuild CAS nip cas rebuild # Reinstall package nip reinstall --cell=my-app ``` ### Error: "Merkle verification failed" **Meaning:** File integrity check failed **Solution:** ```bash # Show details nip cell verify my-app --verbose # Attempt fix nip cell verify my-app --fix # Restore from backup nip cell restore my-app --from-backup= ``` --- ## Getting Help ### Collect Diagnostic Information ```bash # Generate diagnostic report nip bug-report --output=nip-diagnostics.txt # Include: # - System information # - Nippel configuration # - Recent logs # - Error messages ``` ### Enable Verbose Logging ```bash # Enable maximum verbosity export NIP_LOG_LEVEL=trace export NIP_LOG_FILE=/tmp/nip-debug.log # Run problematic command nip cell activate my-app # Check logs cat /tmp/nip-debug.log ``` ### Community Support - **Documentation:** https://docs.nexusos.org/nippels - **Forum:** https://forum.nexusos.org - **Matrix:** #nippels:nexusos.org - **Issue Tracker:** https://github.com/nexusos/nip/issues ### Reporting Bugs When reporting bugs, include: 1. **System Information:** ```bash nip --version uname -a cat /etc/os-release ``` 2. **Nippel Configuration:** ```bash nip cell show my-app --verbose ``` 3. **Error Messages:** ```bash # Full error output nip --log-level=debug cell activate my-app 2>&1 ``` 4. **Steps to Reproduce:** - Exact commands run - Expected behavior - Actual behavior 5. **Diagnostic Report:** ```bash nip bug-report --output=diagnostics.txt ``` --- ## See Also - [Nippels User Guide](./NIPPELS_USER_GUIDE.md) - Complete user guide - [Nippels vs Flatpak](./NIPPELS_VS_FLATPAK.md) - Comparison with Flatpak - [Nippels vs Packages](./NIPPELS_VS_PACKAGES.md) - When to use Nippels - [Security Profiles](./SECURITY_PROFILES.md) - Profile documentation --- **Version:** 1.0 **Last Updated:** November 19, 2025 **Status:** User Documentation **Target Audience:** Users experiencing issues with Nippels