This project provides a script to set up a development environment on Ubuntu. It supports multiple versions of Ubuntu and allows you to install a variety of tools interactively or in ci mode.
Whether you're setting up a new machine or just want to add some tools to your existing setup, this script makes the process easy and straightforward. Just run the script, select the tools you want to install, and let the installer handle the rest.
Ubuntu Version | Status |
---|---|
Ubuntu 24.04 | |
Ubuntu 22.04 | |
Ubuntu 20.04 |
Run the setup script with a single command:
curl -fsSL https://raw.githubusercontent.com/LilianDCode/ubuntu-dev-setup/main/setup.sh | sudo bash
Follow the instructions in the script to select the tools you want to install. Use tab to select/unselect a tool. If you choose to install Warp, you will be asked if you want to set it as the default terminal.
Run the setup script with options for non-interactive mode:
Option | Command |
---|---|
Install all tools | sudo bash -s -- --all |
Install Git only | sudo bash -s -- --git |
Install Docker only | sudo bash -s -- --docker |
Install Visual Studio Code only | sudo bash -s -- --vscode |
Install Visual Studio Code Extensions only | sudo bash -s -- --vscode-extensions |
Install Warp Terminal only | sudo bash -s -- --warp |
Install Warp Terminal and set it as the default terminal | sudo bash -s -- --warp --set-warp-default-terminal |
Install Postman only | sudo bash -s -- --postman |
For help:
curl -fsSL https://raw.githubusercontent.com/LilianDCode/ubuntu-dev-setup/main/setup.sh | sudo bash -s -- --help
Image | Tool | Description |
---|---|---|
Docker | Docker is an open platform for developing, shipping, and running applications. Docker enables you to separate your applications from your infrastructure so you can deliver software quickly. | |
Visual Studio Code | Visual Studio Code is a lightweight but powerful source code editor which runs on your desktop and is available for Windows, macOS, and Linux. | |
Warp Terminal | Warp is a blazingly fast, Rust-based terminal reimagined from the ground up to work like a modern app. | |
Postman | Postman is a popular API client that makes it easy for developers to create, share, test and document APIs. | |
Git | Git is a free and open source distributed version control system designed to handle everything from small to very large projects with speed and efficiency. |
In addition to the tools mentioned above, there are several Visual Studio Code extensions that can enhance your development experience. Here are some of the most useful ones that can be installed with the --vscode-extensions flag:
Image | Extension | Description |
---|---|---|
Markdownlint | Lints Markdown files to enforce standards and catch errors. | |
Markdown All in One | All you need for Markdown (keyboard shortcuts, table of contents, auto preview and more). | |
GitHub Copilot | GitHub Copilot is an AI-powered code assistant. | |
GitHub Copilot Chat | Allows you to chat with GitHub Copilot. | |
Remote - Containers | Allows you to use a Docker container as a full-featured development environment. | |
Remote - SSH | Allows you to use any remote machine with a SSH server as a development environment. | |
Shell Format | A formatter for shell scripts, Dockerfile, gitignore, dotenv, /etc/hosts, jvmoptions, and other file types. | |
Remote Explorer | An explorer for VS Code Remote Development. | |
Live Share | Real-time collaborative development from the comfort of your favorite tools. | |
Conventional Branch | Helps create branch names based on the Conventional Commits standard. | |
Conventional Commits | Helps write commit messages following the Conventional Commits specification. | |
Code Spell Checker | A basic spell checker that works well with camelCase code. |
This project relies on several key tools to ensure smooth setup and operation. These tools are automatically checked for and installed if not already present on your system. They include ansible
for IT automation, curl
for data transfer, fzf
for creating user-friendly dialogs in interactive mode, and now pipx
for managing Python CLI tools. Here's a brief overview of these tools:
Image | Tool | Description |
---|---|---|
ansible | An open-source software provisioning, configuration management, and application-deployment tool | |
curl | A command-line tool for transferring data with URL syntax | |
pipx | A tool to help you install and run end-user applications written in Python | |
fzf (interactive mode only) | A general-purpose command-line fuzzy finder |
You can switch between production and development modes using the DEV_MODE
environment variable.
In development mode, the code is used directly from the source. In production mode, the script is fetched from GitHub and executed.
To switch modes, you need to rebuild the container with the new DEV_MODE
environment variable. Here's how you can do it:
To switch to development mode:
DEV_MODE=dev docker compose up --build --watch
To switch to production mode:
DEV_MODE=prod docker compose up --build
This project uses semantic-release to manage versioning. The current version of the project can be found in the VERSION
file.
This project is licensed under the MIT License - see the LICENSE file for details.