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
$ quick-setup --help
Usage: quick-setup [OPTIONS] YAML_FILE
Quick developer machine setup based on YAML.
Options:
-v, --verbose Show detailed command output
-d, --dry-run Show commands without executing
--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 quick-setup
Run with a YAML file
quick-setup path/to/setup.yml
Run in verbose mode
quick-setup path/to/setup.yml -v
Run in dry run mode
quick-setup 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
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file dev_quick_init-0.1.1.tar.gz.
File metadata
- Download URL: dev_quick_init-0.1.1.tar.gz
- Upload date:
- Size: 4.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.8.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
930e91427483479d6499d8ff0395e9690c316ab5bc14a3f2bac46b0852818005
|
|
| MD5 |
75d590138c5d6027a9e09a68e38e2657
|
|
| BLAKE2b-256 |
b7c6d0741f4a22d52d1af952903cdbee1f16db7a5848ce44ce8b9507ba4be2d5
|
File details
Details for the file dev_quick_init-0.1.1-py3-none-any.whl.
File metadata
- Download URL: dev_quick_init-0.1.1-py3-none-any.whl
- Upload date:
- Size: 5.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.8.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
8d3bfbc38f75ca201c956103633acde8045ba004163e490a1955b0b0f5a6e1f3
|
|
| MD5 |
d1c366c4ef9d8c63892edc7bb77404ae
|
|
| BLAKE2b-256 |
a95e2cf532d63afdf8d31da92cf1e47155834404063071466a4f4179dee53b49
|