DevEx is a powerful, enterprise-grade CLI tool designed to streamline the setup and management of development environments across Linux, macOS, and Windows. With support for 36+ package managers and desktop environments, DevEx automates application installation, system configuration, and development workflow setup.
This is a modern monorepo containing:
- π§ CLI Tool (
apps/cli/) - Enterprise Go CLI with Cobra + Viper architecture - π Website (
apps/web/) - Marketing site at devex.sh - π Documentation (
apps/docs/) - Technical documentation with MDX - π Plugin System (
packages/plugins/) - 36 modular plugins for package managers and desktop environments - π¦ Shared SDK (
packages/shared/) - Common plugin development framework
- π Plugin Architecture: 36 specialized plugins for package managers (apt, dnf, pacman, brew, etc.) and desktop environments
- π’ Enterprise-Ready: Built with Cobra CLI framework, Viper configuration, and 12-Factor App methodology
- β‘ Cross-Platform: Native support for Linux distributions, macOS, and Windows
- π― Smart Detection: Automatic platform, distribution, and desktop environment detection
- π Configuration Management: YAML-based configuration with hierarchical overrides
- π Rapid Development: 6-day sprint methodology with automated testing and deployment
# Install DevEx CLI
curl -fsSL https://devex.sh/install | bash# Install development environment
devex install
# Install specific categories
devex install --categories development,databases
# Configure desktop environment
devex system apply
# List available applications
devex list appsDevEx features a comprehensive plugin architecture with 36 specialized plugins:
- Linux: apt, dnf, pacman, yay, zypper, emerge, eopkg, xbps, apk, rpm, deb
- Universal: flatpak, snap, appimage, mise, docker, pip, curlpipe
- Cross-platform: brew (macOS/Linux)
- Nix: nixpkgs, nixflake
- GNOME, KDE Plasma, XFCE, MATE, Cinnamon
- LXQt, Budgie, Pantheon, COSMIC
- Themes & Fonts: Centralized theming and font management
- Git Configuration: Automated Git setup and credential management
- Shell Setup: Bash, Zsh, Fish configuration
- System Setup: Core system configuration and optimization
- Stack Detection: Automatic project stack detection and setup
DevEx follows enterprise patterns and best practices:
- Cobra: Command structure and flag management
- Viper: Hierarchical configuration (flags > env > config > defaults)
- 12-Factor App: Configuration, logging, and process management
- Context Propagation: Proper cancellation and timeout handling
- Ginkgo BDD: Behavior-driven development testing
- golangci-lint: Comprehensive Go linting
- lefthook: Git hooks for quality gates
- govulncheck: Security vulnerability scanning
- 6-Day Sprints: Rapid iteration and delivery cycles
- Automated Testing: Comprehensive test coverage with CI/CD
- Semantic Versioning: Automated releases with semantic-release
- Plugin Versioning: Independent plugin release management
- Go: Version 1.24+ (CLI development)
- Node.js: Version 18+ (website and docs)
- pnpm: Version 9+ (workspace management)
- Task: Task runner for CLI development
- lefthook: Git hooks (installed via pnpm)
# Clone repository
git clone https://github.com/jameswlane/devex.git
cd devex
# Install workspace dependencies
pnpm install
# Install CLI locally for testing
cd apps/cli
task installcd apps/cli
# Default workflow (lint + test)
task
# Development commands
task build:local # Build for local testing
task test # Run all tests
task test:ginkgo # Run Ginkgo BDD tests
task lint # Run golangci-lint
task lint:fix # Auto-fix linting issues
task vulncheck # Security vulnerability check
# Plugin development
lefthook run plugin-check # Check plugin changes
lefthook run plugin-build # Build all changed plugins
lefthook run plugin-test # Test specific pluginCustom configurations are stored under ~/.devex/:
~/.devex/
βββ apps.yaml
βββ gnome_extensions.yaml
βββ programming_languages.yaml
βββ config/
β βββ additional_configs.yaml
βββ themes.yaml
DevEx prioritizes custom configurations in ~/.devex/. If not found, it falls back to defaults in the assets/ directory.
apps:
- name: "Visual Studio Code"
description: "Code editor from Microsoft"
category: "Editors"
install_method: "apt"
install_command: "code"
dependencies:
- "gnome-shell"
- "git"To format configuration files, run:
prettier --write "**/*.{yaml,md}"devex/
βββ apps/
β βββ cli/ # DevEx CLI tool (Go)
β β βββ cmd/ # Cobra command definitions
β β βββ pkg/ # Public packages
β β βββ internal/ # Private application code
β β βββ config/ # Default YAML configurations
β β βββ Taskfile.yml # CLI-specific tasks
β βββ web/ # Marketing website (Next.js)
β βββ docs/ # Documentation site (MDX)
βββ packages/
β βββ plugins/ # Plugin system (36 plugins)
β β βββ package-manager-*/ # Package manager plugins
β β βββ desktop-*/ # Desktop environment plugins
β β βββ tool-*/ # Development tool plugins
β β βββ system-setup/ # System configuration plugin
β βββ shared/
β βββ plugin-sdk/ # Common plugin development framework
βββ scripts/ # Build and release automation
βββ .github/ # GitHub Actions workflows
βββ lefthook.yml # Git hooks configuration
βββ pnpm-workspace.yaml # Workspace configuration
βββ package.json # Root dependencies and scripts
The CLI uses Task for automation:
cd apps/cli
# Default development workflow (lint + test)
task
# Build and install locally
task install
# Run tests
task test # Standard Go tests
task test:ginkgo # Ginkgo BDD tests
task test:testify # Testify tests
# Code quality
task lint # Run golangci-lint
task lint:fix # Auto-fix linting issues
task vulncheck # Check for vulnerabilitiescd apps/web
# Install dependencies
pnpm install
# Start development server
pnpm dev
# Build for production
pnpm buildcd apps/docs
# Install dependencies
pnpm install
# Start development server
pnpm start
# Build static site
pnpm build# Install all dependencies
pnpm install
# Format all code
pnpm biome:format
# Lint all code
pnpm biome:lint
# Check formatting and linting
pnpm biome:checkRun CLI tests:
cd apps/cli
task testRun linting across the monorepo:
# Root level (Biome for JS/TS)
pnpm biome:lint
# CLI specific (Go)
cd apps/cli
task lintBuild individual applications:
# CLI tool
cd apps/cli
task build
# Website
cd apps/web
pnpm build
# Documentation
cd apps/docs
pnpm buildDevEx uses comprehensive automated release management:
- GoReleaser: Automated binary builds for multiple platforms
- GitHub Releases: Automatic changelog generation and asset publishing
- Semantic Versioning: Conventional commit-based version bumping
- Individual Versioning: Each of the 36 plugins versions independently
- Parallel Builds: Multi-threaded plugin compilation
- Automated Registry: Plugin registry updates with version tracking
feat:- New features (minor version bump)fix:- Bug fixes (patch version bump)feat!:orBREAKING CHANGE:- Breaking changes (major version bump)docs:,style:,refactor:,test:,chore:- No version bump
# Feature release (minor version)
git commit -m "feat: add new plugin system"
# Bug fix release (patch version)
git commit -m "fix: resolve installation issue"
# Breaking change release (major version)
git commit -m "feat!: redesign configuration system"- Linux: Ubuntu, Debian, Fedora, CentOS, Arch, openSUSE, Gentoo, Void, Alpine
- macOS: Intel and Apple Silicon support
- Windows: Native Windows support (planned)
- Linux: apt, dnf, pacman, yay, zypper, emerge, eopkg, xbps, apk
- Universal: flatpak, snap, appimage, docker, pip, mise
- Cross-platform: brew (macOS/Linux)
- Nix: nixpkgs, nixflake
- Binary: curlpipe, rpm, deb
- GNOME, KDE Plasma, XFCE, MATE, Cinnamon
- LXQt, Budgie, Pantheon, COSMIC
- Issues: Bug reports and feature requests
- Discussions: Community Q&A and ideas
- Documentation: Comprehensive guides and API docs
- Website: Official website with tutorials and updates
- Projects: Roadmap and progress tracking
- Wiki: In-depth technical documentation
- Security: Vulnerability reporting
- Pulse: Project activity and metrics
We welcome contributions! DevEx follows enterprise development practices:
- Fork the repository
- Clone your fork:
git clone https://github.com/yourusername/devex.git - Install dependencies:
pnpm install - Create a feature branch:
git checkout -b feat/your-feature - Develop using our CLI workflow:
cd apps/cli && task - Test thoroughly:
task test && task lint - Commit with conventional commits:
git commit -m "feat: add new feature" - Push and create a Pull Request
- Quality Gates: All commits must pass linting, testing, and security checks
- Conventional Commits: Required for automated versioning
- Test Coverage: Maintain comprehensive test coverage with Ginkgo BDD
- Documentation: Update docs for user-facing changes
# Check plugin changes
lefthook run plugin-check
# Build and test plugins
lefthook run plugin-build
lefthook run plugin-test [plugin-name]
# Plugin versioning
node scripts/determine-plugin-version.js update [plugin-name]Refer to the Contributing Guide for detailed guidelines.
DevEx is licensed under the Apache-2.0 License, ensuring it remains free and open source.
For security vulnerabilities, please refer to our Security Policy and report issues privately.
We maintain a welcoming community following our Code of Conduct.
This project leverages AI-assisted development tools to enhance productivity and code quality while maintaining human oversight and decision-making. Learn more about our AI usage.
Install DevEx β’ Browse Docs β’ Join Discussions