Skip to content

ansible-desktop

Test Netlify Status

Ansible Playbook to configure my laptops and desktops

I care about not having to think too much about my setup between machines. Especially when I want to get right to work.

For that reason, it is very comfortable for me to have the same base configuration on each machine (look, feel, keyboard shortcuts, core software, etc.).

My journey to the current state of this repo

  • I found a cool bash script on the internet (I didn't understand most of it) 🤷
  • I modified cool bash script for my needs and it worked! 🚀
  • I learned about Makefiles. 😄
  • I proceeded to do everything with Makefiles. 🤩🤩🤩
  • I got tired of running successive Make targets over and again 😐.
  • I used Ansible at work and decided to take a course to learn more about it. 🤓
  • I put off actually taking the plunge to use Ansible. 🕒🕕🕘🕛
  • I finally took the plunge and decided to use Ansible for my configuration. ✔️

Calendar Versioning

This project adheres to Calendar Versioning, YYYY.MINOR.MICRO.

Supported Ubuntu LTS Versions

I will support the LTS versions I use. There are no plans to support non-LTS versions.

LTS Last Supported Branch/Tag
Ubuntu 20.04 main
Ubuntu 18.04 2020.1.0

Ansible Galaxy Roles

There is broader LTS and Distribution support in the following roles:

Role Description
iancleary.jetbrains_mono installs Jetbrains-Mono font
iancleary.zsh_antibody Installs Zsh, oh-my-zsh, and the antibody plugin manager

Core Software

This isn't exactly the list of Ansible roles, but below is a list of what the software installs.

Application Base

  • Flatpak,
  • Snap,

AppImageLauncher

Application Launcher

  • ULauncher, A ctrl + spacebar productivity bar, Ulauncher is inspired by Alfred for macOS and similar semantic search tools that followed in its wake.

Backups

Chat Clients

  • Signal Desktop,
  • Slack,
  • Telegram,

Development Tooling

  • ansible,
  • docker,
  • docker-compose,
  • gh GitHub CLI
  • nodejs,
  • python3.8,
  • yarn

Dotfiles

  • yadm dotfile manager

Email

File Storage

  • Tresorit,

Games

  • Steam,

GNOME Configuration

The GNOME Ansible roles configure my GNOME personal preferences.

Integrated Development Environments (IDE)

If you prefer a fully open source option, checkout VSCodium!

Music

  • Spotify,

Notes

  • cherrytree,
  • Standard Notes,

System Info

Tasks

Terminal

Screenshots and GIFs

Flameshot keybinding to the Print Screen key using gsettings

  • Peek animated GIF screen recorder,

Text Editors

  • Sublime Text,

Utilities

Web Browsers

  • Chromium,
  • Firefox,

Getting Started with this repo

Makefile

The Makefile is the entry point.

Common Utility Scripts

The scripts folder contains common setup between local scripts and Travis-CI.

Testing

Continuous Integration Testing is done with the .github/workflows/test.yml file.

Multiple jobs test independent portions of the installation.

While testing the playbook in order would be ideal, the preference here is to have the Continuous Integration finish faster.

Linting

Linting is performed on common file types:


New Machine Setup

For a new machine, I run the following command to set up my computer:

Please make sure you adjust your hostname as Ansible keys off this variable. I like to do this during the initial configuration of the machine.

wget -qO- \
https://github.com/iancleary/ansible-desktop/raw/main/run.sh | \
bash

This will prompt you for your sudo password for the bash script and then once later for ansible's "BECOME PASSWORD" prompt.

Voila! 🎉🎉🎉


Requirements_ansible.txt

Notable Ansible Modules Used with regards to dependencies

  • dconf
  • This is drives the psutil Python3 requirement
  • snap
  • This drives the ansible >=2.8.0 requirement

Changes

See CHANGELOG for history.


Authors

I benefited from the source work of others, see AUTHORS.md.

My choice to open source my work here is to share back with you.