ubuntu-post-install
ubuntu-post-install copied to clipboard
Effortless, Flexible and Simple Post Install Script for Ubuntu, Linux Mint, Debian & their derivatives
Ubuntu / Debian Post Installation Script
Effortless way to setup your fresh Ubuntu, Linux Mint and Debian installation.

How to use this
1. Get the script
Using latest stable version (Recommended)
wget https://github.com/tprasadtp/ubuntu-post-install/releases/latest/download/after-effects -O after-effects
wget https://github.com/tprasadtp/ubuntu-post-install/releases/latest/download/sha256sums.txt -O sha256sums.txt
sha256sum -c sha256sums.txt
Using latest master branch
wget https://raw.githubusercontent.com/tprasadtp/ubuntu-post-install/master/after-effects -O after-effects
2. Setup your YAML configuration file
Setup YAML file to suit your needs. Change PPAs, add or delete packages to list etc. Please see Configuration & Tasks.
3. Run the script
Run the script as root.
Sample configuration can be found in config directory.
chmod +x after-effects
sudo ./after-effects <path-to-your-config or url to config file>
See in Action

FAQ & Documentation
See /docs or visit docs
Supported Distributions
I have not tested the script on the distros listed below. Because they use Ubuntu as their base, It should work fine. But no promises.
For a complete list of supported distributions click here.
Features
- Install packages
- Add repositories
- Remove pre installed
- Add PPAs
- Install deb packages
- Install static binaries
- Install snap packages
Also handles adding several tweaks and fixes necessary to add repositories and PPAs, supports completely non-interactive mode, so that you can let it run while you have moaar ☕
Supported External repositories
| Name | Key | Packages |
|---|---|---|
| Brave Browser* | brave_browser | brave-browser |
| Docker | docker | docker-ce, docker-ce-rootless-extras, docker-ce-cli |
| Element.io* | element_io | element-desktop |
| GitHub - CLI | github | gh |
| Google - Bazel* | bazel | bazel |
| Google - Chrome* | chrome | google-chrome-stable, google-chrome-beta |
| Google - Cloud SDK* | googlecloud | google-cloud-sdk, kubectl, google-cloud-sdk-minikube |
| Google - gVisor | gvisor | runsc |
| Hashicorp* | hashicorp | terraform, consul, nomad, vault, boundary, waypoint |
| Mendeley desktop* | mendeley | mendeleydesktop |
| Microsoft - Azure CLI* | azurecli | azure-cli |
| Microsoft - Edge* | edge | microsoft-edge-dev |
| Microsoft - Skype* | skype | skypeforlinux |
| Microsoft - Teams* | teams | teams, teams-insiders |
| Microsoft - VSCode | vscode | code, code-insiders, code-exploration |
| Miniconda* | miniconda | conda |
| NeuroDebian* | neurodebian | https://neuro.debian.net/ |
| Podman (via OBS)* | podman | podman, podman-plugins, cri-o-runc, cri-tools, buildah, crun |
| ProtonVPN Client* | protonvpn | protonvpn |
| ROS | ros | |
| ROS2 | ros2 | |
| Signal* | signal | signal-desktop |
| Slack Desktop* | slack | slack-desktop |
| Spotify Client* | spotify | spotify-client |
| Sublime Text Editor* | sublimetext | sublime-text |
| Vivaldi* | vivaldi | vivaldi-stable |
| Wine HQ* | winehq | winehq-stable, winehq-staging |
| Ubuntu - Universe | ubuntu_universe | |
| Ubuntu - Multiverse | ubuntu_multiverse | |
| Ubuntu - Restricted | ubuntu_restricted | |
| Debian - contrib | debian_contrib | |
| Debian - non-free | debian_nonfree |
azurecliis not supported on Ubuntu 18.04, Debian 9, 10 and their derivatives.winehqis not supported on Ubuntu 18.04, Debian 9, 10 and their derivatives.*Only amd64/x86_64 is supported. ARM CPUs like Raspberry Pi/Nvidia Tegra are not supported.
Issues & Help
- Please check FAQ & known issues.
- Please include the log file and terminal output while opening an issue.
Contributing & Forks
See Contributing and forks
Alternatives
- snwh/ubuntu-post-install: Has few features like setting up dotfiles, but has limited config options and requires shell to be interactive. Only few external repositories are supported.
- Ansible : Requires python on your system. Much more deteministic and better idempotency. There are plenty of roles and collections available on ansible-galaxy. But it adds more complexity and you have to write your own playbooks.













