Skip to main content

Quick developer machine setup from YAML

Project description

Quick Setup

Quick Setup is a Python-based tool that automates the setup of a developer environment on Windows, macOS, or Linux. It reads a YAML configuration file describing software to install, commands to run before and after installation, and files to create.

The tool supports multiple package managers and can iterate over lists of parameters for repeated tasks.

Usage

$ uvx dev-quick-init --help
Usage: dev-quick-init [OPTIONS] [YAML_FILE]

 Quick developer machine setup based on YAML.

Options:
 -v, --verbose  Show detailed command output
 -d, --dry-run  Show commands without executing
 -l, --list     Show available installer drivers
 --help         Show this message and exit.

🚀 Features

  • Install software with winget, scoop, chocolatey, brew, apt, pacman, or dnf.
  • Run pre-install (before) and post-install (after) commands.
  • Automatically handle list parameters for iteration (e.g., multiple repos or SDK versions).
  • Create configuration files with template substitution.
  • Optionally run in verbose mode to see all output.
  • Prints total setup time at the end.
  • Dry run will only print the commands without running it.

🎯 Intention

The goal of Quick Setup is to simplify the process of setting up a new development machine, ensuring that all tools, programming languages, cloud CLIs, IDEs, and Kubernetes tooling are installed correctly and consistently, with minimal manual steps.

It is especially useful for:

  • Developers provisioning new machines.
  • Teams wanting a reproducible environment.
  • Multi-platform setups (Windows, macOS, Linux).

Automating repetitive setup tasks across multiple machines.

📄 YAML Configuration

The YAML file defines:

  • Driver
  • before commands
  • install software usign the driver
  • after commands
  • file creation

Driver – Which package manager to use:

driver: winget # options: winget, scoop, chocolatey, brew, apt, pacman, dnf

Params – Variables for templates:

params:
  name: Joe Doe
  email: joe@email.com
  ssh_key_path: ~/.ssh/id_rsa
  python_default: 3.12
  repos:
    - git@github.com:user/repo1.git
    - git@github.com:user/repo2.git
  repos_dir: ~/Projects
  dotnet_sdk:
    - 8
    - 10

Before commands – Commands to run before installation:

before:
  - sudo apt update
  - sudo apt upgrade -y
  - mkdir -p "{{repos_dir}}"

Install – List of software packages (supports template iteration):

install:
  - git
  - git-lfs
  - kubectl
  - helm
  - dotnet-sdk-{{dotnet_sdk}}

After commands – Commands to run after installation:

after:
  <whatever-label-you-whant>:
    - git config --global user.name "{{name}}"
    - git config --global user.email "{{email}}"
    - git lfs install
  python:
    - uv python install 3.10
    - uv python install {{python_default}}
    - uv python list
  clone-repos:
    - cmd: git clone {{repos}}
      dir: {{repos_dir}}

Files – Create configuration files with templated content:

files:
  "~/.config/my_app_config.ini": |
    [settings]
    enabled=true
    name={{name}}
    email={{email}}

💻 Usage

Install Quick Setup

pip install dev-quick-init

Run with a YAML file

dev-quick-init path/to/setup.yml

Run in verbose mode

dev-quick-init path/to/setup.yml -v

Run in dry run mode

dev-quick-init path/to/setup.yml -d

🛠 Use Cases

  • New Developer Machine

    • Automatically install Git, Docker, NodeJS, Python, .NET SDKs, Kubernetes tools, and IDEs.
  • Team Reproducibility

    • Share a single YAML config for all team members to ensure consistent environments.
  • Multi-platform Setup

    • Supports Windows, macOS, and Linux via the appropriate package manager.
  • Automated Repo Cloning

    • Clones multiple repositories and sets up SSH keys automatically.
  • Custom Config Files

    • Create .ini, .yaml, or any config files with templated content.

⚡ Example: Minimal macOS YAML

Please check the examples folder.

🔧 Supported Package Managers

Platform Manager Windows winget, scoop, chocolatey macOS brew Linux apt, pacman, dnf

📌 Notes

  • List Parameters: Any params that are lists will be automatically iterated in install and after commands.
  • Template Syntax: Use {{param_name}} to substitute a variable.
  • Verbose Flag: -v shows all command outputs; without it, output is suppressed.
  • Files: Paths support ~ and environment variables like %USERPROFILE% or $HOME.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

dev_quick_init-0.1.5.tar.gz (5.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

dev_quick_init-0.1.5-py3-none-any.whl (5.4 kB view details)

Uploaded Python 3

File details

Details for the file dev_quick_init-0.1.5.tar.gz.

File metadata

  • Download URL: dev_quick_init-0.1.5.tar.gz
  • Upload date:
  • Size: 5.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.8.14

File hashes

Hashes for dev_quick_init-0.1.5.tar.gz
Algorithm Hash digest
SHA256 0168531e2406cc9e5803fcad78e67ca113c9ba6ffa8debcf0694237f533c5643
MD5 62fd2f8c8cfc135beb736f901c92b697
BLAKE2b-256 7ff7cde93fc67c2691e9807f204e174fddade4f1f66dd166c9a528ff10bd9975

See more details on using hashes here.

File details

Details for the file dev_quick_init-0.1.5-py3-none-any.whl.

File metadata

File hashes

Hashes for dev_quick_init-0.1.5-py3-none-any.whl
Algorithm Hash digest
SHA256 ee56c63db16685caecdaf393bfebb8b64664324818beefd0af1e62097d3a94a1
MD5 b99220b07932c47604cddc5e11493100
BLAKE2b-256 5640f7e7608b7095de32f21f7cec921d413c3c76850c4994b579f77136bae8fa

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page