DevEx LogoMy App
CLI Reference

devex install

Install your complete development environment automatically

devex install

The install command automates the installation of your complete development environment based on your configuration files. Unlike the interactive setup command, install runs non-interactively using your pre-configured settings.

Usage

devex install [flags]

Description

The install command handles:

  • Development tools (Git, Docker, VS Code, Neovim, etc.)
  • Programming languages (Node.js, Python, Go, Ruby, etc.)
  • Databases (PostgreSQL, MySQL, Redis, SQLite)
  • Optional applications (browsers, communication tools, etc.)
  • Package repository configuration and GPG keys
  • Dependency resolution and conflict handling
  • Post-installation configuration and shell setup
  • Theme application and desktop environment setup

Installation Categories

Development Tools

Essential coding and debugging tools like Git, Docker, VS Code, and terminal utilities

Programming Languages

Language runtimes and package managers via mise (Node.js, Python, Go, etc.)

Databases

Local development databases like PostgreSQL, MySQL, Redis, and SQLite

Optional Applications

Productivity apps, browsers, and communication tools

Options

FlagShortTypeDefaultDescription
--category-cstringallInstall specific category (development, databases, optional)
--app-astring[]Install specific applications only
--skip-sstring[]Skip specific applications
--force-fboolfalseForce reinstall even if already installed
--verbose-vboolfalseEnable verbose output
--dry-run-nboolfalseShow what would be installed without executing

Examples

Basic Installation

# Install everything with default configuration
devex install

# Install with verbose output
devex install --verbose

# Preview what would be installed
devex install --dry-run

Category-Specific Installation

# Install only development tools
devex install --category development

# Includes: git, docker, vscode, curl, etc.

Selective Installation

# Install specific applications
devex install --app docker --app postgresql

# Install everything except certain apps
devex install --skip slack --skip chrome

# Force reinstall of specific tools
devex install --app docker --force

Installation Process

Platform Detection

DevEx detects your operating system and selects appropriate package managers:

Platform: Ubuntu 22.04 LTS (x86_64)
Package managers: apt, flatpak, snap
Desktop environment: GNOME 42

Configuration Loading

Loads configuration from:

  1. User overrides: ~/.devex/
  2. Default configs: ~/.local/share/devex/config/
Loading configurations:
✓ applications.yaml (247 applications)
✓ environment.yaml (15 languages, 8 fonts)
✓ desktop.yaml (3 themes, 12 extensions)
✓ system.yaml (git, ssh, terminal)

Dependency Resolution

Analyzes dependencies and determines optimal installation order:

Dependency analysis:
┌─────────────────┬─────────────────────────┐
│ Application     │ Dependencies            │
├─────────────────┼─────────────────────────┤
│ docker-compose  │ docker                  │
│ kubectl         │ curl                    │
│ node (via mise) │ mise, curl, git         │
└─────────────────┴─────────────────────────┘

Installation order: curl → git → mise → docker → node → docker-compose

Package Repository Setup

Configures third-party repositories and GPG keys:

Setting up repositories:
✓ Docker official repository
✓ Google Chrome repository  
✓ VS Code repository
✓ Node.js via mise

Application Installation

Installs applications using platform-appropriate methods:

Installing applications:
[1/24] git (apt) ✓
[2/24] curl (apt) ✓  
[3/24] docker (apt) ✓
[4/24] vscode (apt) ✓
[5/24] node@lts (mise) ✓
...

Post-Installation Configuration

Applies configuration files and runs setup scripts:

Post-installation:
✓ Git configured with user.name and user.email
✓ Docker service started and enabled
✓ VS Code extensions installed
✓ Shell configured with aliases and paths

Platform-Specific Behavior

Package Managers:

  • Primary: Distribution package manager (apt, dnf, pacman)
  • Universal: Flatpak, Snap
  • Languages: mise for programming languages
  • Containers: Docker official repositories

System Integration:

  • Systemd service management
  • Desktop environment configuration
  • Font installation and cache refresh
  • Shell configuration and defaults
# Linux-specific features
sudo systemctl enable docker    # Service management
fc-cache -fv                   # Font cache refresh
gsettings set ...              # GNOME settings

Error Handling and Recovery

DevEx includes robust error handling to ensure partial failures don't break your entire setup.

Installation Resilience

Installation Results:
✓ 18 applications installed successfully
⚠ 2 applications had warnings
✗ 1 application failed to install

Failed:
- slack: Repository key verification failed

Warnings:  
- docker: Service not started (run 'sudo systemctl start docker')
- vscode: Some extensions failed to install

Recovery suggestions:
→ Run 'devex recovery check' to diagnose issues
→ Use 'devex install --app slack --force' to retry failed installs

Common Recovery Commands

# Check for and fix common issues
devex recovery check

# Retry failed installations
devex install --app slack --force

# Repair broken dependencies
devex recovery repair

# View detailed error logs
devex logs --verbose

Configuration File Integration

The install command reads from these configuration files:

Applications Configuration

# ~/.local/share/devex/config/applications.yaml
applications:
  development:
    - name: docker
      description: 'Container platform'
      category: 'Development Tools'
      default: true
      linux:
        install_method: 'apt'
        install_command: 'docker-ce'
        apt_sources:
          - key_source: "https://download.docker.com/linux/ubuntu/gpg"
            source_repo: "deb [arch=amd64] https://download.docker.com/linux/ubuntu jammy stable"
        post_install:
          - shell: "sudo systemctl enable docker"
          - shell: "sudo usermod -aG docker $USER"

Environment Configuration

# ~/.local/share/devex/config/environment.yaml
programming_languages:
  - name: "Node.js LTS"
    install_method: "mise"
    install_command: "node@lts"
    default: true
    post_install:
      - shell: "npm install -g yarn pnpm"

Performance and Optimization

Parallel Installation

DevEx optimizes installation performance:

Parallel installation groups:
Group 1: git, curl, wget (no dependencies)
Group 2: docker, mise (depends on Group 1)  
Group 3: node, python (depends on mise)
Group 4: docker-compose (depends on docker)

Estimated time: 8-12 minutes

Caching

# DevEx caches downloaded packages and metadata
ls ~/.cache/devex/
# downloads/    - Downloaded packages
# metadata/     - Package metadata cache
# repositories/ - Repository configurations

Bandwidth Optimization

# Use local package mirrors when available
devex install --use-mirrors

# Skip large optional downloads
devex install --skip-fonts --skip-themes

Advanced Usage

Custom Installation Scripts

You can add custom pre/post-installation scripts:

applications:
  development:
    - name: custom-tool
      pre_install:
        - shell: "echo 'Preparing custom tool installation'"
        - shell: "mkdir -p /opt/custom-tool"
      post_install:
        - shell: "custom-tool --setup"
        - file: 
            source: "configs/custom-tool.conf"
            destination: "~/.config/custom-tool/config"

Environment-Specific Installation

# Production server setup (minimal)
devex install --category development --skip slack --skip chrome

# Development workstation (full setup)
devex install --category all

# CI/CD environment (tools only)
devex install --app git --app docker --app kubectl

Integration with Other Commands

The install command works seamlessly with other DevEx commands:

# Install, then check status
devex install && devex status

# Install specific template, then add extras
devex template apply backend && devex install --app postman

# Install with custom config
devex config edit applications && devex install

Troubleshooting

Common Issues

# DevEx will prompt for sudo when needed
# If you get permission errors:

# Check sudo access
sudo -v

# Fix common permission issues
sudo chown -R $USER:$USER ~/.local/share/devex
sudo chmod 755 /usr/local/bin

Pro Tip: Use devex install --dry-run --verbose to see exactly what will be installed and in what order before committing to the installation.

On this page