# Simple CLI - Particle-OS Development System

Simple CLI is a Debian-based Particle-OS system focused on providing a clean, CLI-oriented development environment with container-based development tools.

## Features

- **Base System**: Debian Trixie with OSTree
- **Container Runtime**: Podman with full container support
- **Development Tools**: Both Toolbox and Distrobox for development environments
- **Build System**: Just-based automation with comprehensive recipes
- **Immutable Design**: Atomic updates with rollback capability

## Development Environments

Simple CLI provides two powerful development environment tools:

### 1. Toolbox (Official Debian Package)

Toolbox is the official container-based development environment tool, tightly integrated with the system.

#### Quick Start
```bash
# Create a development environment
toolbox create dev

# Enter the development environment
toolbox enter dev

# Install development tools
apt update
apt install gcc make git python3-pip

# Work on projects without affecting the immutable host
```

#### Features
- **Native Debian integration** - Uses Debian Trixie containers
- **Host filesystem access** - Full access to your home directory
- **Package management** - Use APT to install any tools
- **System integration** - Access to host network, USB devices, display

### 2. Distrobox (Community Alternative)

Distrobox provides additional flexibility and cross-distribution support.

#### Quick Start
```bash
# Create a development environment
distrobox create dev --image debian:trixie

# Enter the development environment
distrobox enter dev

# Install development tools
apt update
apt install build-essential git python3-pip

# Work on projects with full flexibility
```

#### Features
- **Cross-distribution support** - Can use Ubuntu, Fedora, or other images
- **Advanced container management** - More flexible than Toolbox
- **Multiple backends** - Supports both Docker and Podman
- **Custom configurations** - Highly configurable for specific needs

## Using Just Commands

Simple CLI includes comprehensive Just-based automation:

```bash
# Setup development environment
just setup-dev

# Create development environments
just create-dev-toolbox      # Create Toolbox environment
just create-dev-distrobox    # Create Distrobox environment

# Enter environments
just dev-toolbox             # Enter Toolbox environment
just dev-distrobox           # Enter Distrobox environment

# Test functionality
just test-toolbox            # Test Toolbox
just test-distrobox          # Test Distrobox

# List all environments
just list-envs               # Show all development environments

# Clean up
just cleanup-envs            # Remove all development environments
```

## When to Use Which Tool?

### Use Toolbox When:
- **Native Debian development** - Working with Debian-specific tools
- **System integration** - Need tight integration with host system
- **Official support** - Prefer officially supported tools
- **Simple workflows** - Basic development environment needs

### Use Distrobox When:
- **Cross-distribution** - Need tools from other distributions
- **Custom configurations** - Require specific container setups
- **Advanced workflows** - Complex development environment needs
- **Flexibility** - Want more control over container configuration

## Configuration Files

### Toolbox Configuration
- **`/etc/containers/toolbox.conf`** - Main Toolbox configuration
- **`/etc/profile.d/toolbox.sh`** - Shell integration and welcome messages
- **`/usr/lib/tmpfiles.d/toolbox.conf`** - Systemd integration

### Distrobox Configuration
- **`/etc/distrobox/docker.ini`** - Docker backend configuration
- **`/etc/distrobox/podman.ini`** - Podman backend configuration

## Building and Testing

```bash
# Build the container image
just build

# Test the image
just test

# Generate bootable image
just generate-bootable

# Full pipeline
just pipeline
```

## System Requirements

- **Container Runtime**: Podman or Docker
- **Storage**: 10GB+ for development environments
- **Memory**: 4GB+ RAM recommended
- **Architecture**: x86_64 (amd64)

## Troubleshooting

### Common Issues

1. **Permission Denied**: Ensure your user is in the appropriate groups
   ```bash
   sudo usermod -a -G podman $USER
   newgrp podman
   ```

2. **Container Creation Fails**: Check container runtime status
   ```bash
   podman system info
   systemctl status podman.socket
   ```

3. **Network Issues**: Verify host networking
   ```bash
   ip addr show
   toolbox enter dev -- ip addr show
   ```

### Getting Help

- **Toolbox**: [containertoolbx.org](https://containertoolbox.org/)
- **Distrobox**: [github.com/89luca89/distrobox](https://github.com/89luca89/distrobox)
- **Particle-OS**: Project documentation and community

## Contributing

Simple CLI is part of the Particle-OS project. Contributions are welcome!

1. Fork the repository
2. Create a feature branch
3. Make your changes
4. Test with `just test`
5. Submit a pull request

## License

This project is part of Particle-OS and follows the same licensing terms.
