ansible-desktop
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
- AppImageLauncher, see the Integrate any AppImage into the Ubuntu Desktop article.
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
Timeshift
https://github.com/teejee2008/timeshift,
Chat Clients
Signal Desktop
,Slack
,Telegram
,
Development Tooling
ansible
,docker
,docker-compose
,gh
GitHub CLInodejs
,python3.8
,yarn
Dotfiles
- yadm dotfile manager
- HEY Mail, by Basecamp, hey-main snap
File Storage
Tresorit
,
Games
Steam
,
GNOME Configuration
The GNOME Ansible roles configure my GNOME personal preferences.
- Extensions: gnome-extensions
- Keybindings: gnome-keybindings
- Preferences: gnome-preferences
Integrated Development Environments (IDE)
If you prefer a fully open source option, checkout VSCodium!
-
Postman for API testing,
-
kite AI Autocompletion and Docs for Python, runs locally
Music
Spotify
,
Notes
cherrytree
,Standard Notes
,
System Info
Tasks
TickTick
using nativefier,
Terminal
- antibody shell plugin manager (concurrent and compiled)
- Hyper Terminal, with "pane:splitHorizontal": "ctrl+shift+f", // changed from "ctrl+shift+e" because vercel/hyper #3660
zsh
andoh-my-zsh
- powerlevel10k theme with needed fonts
Screenshots and GIFs
- carbon-cli for beautiful images of my code - right inside my terminal,
- Flameshot,
Flameshot keybinding to the Print Screen key using
gsettings
- Peek animated GIF screen recorder,
Text Editors
Sublime Text
,
Utilities
- Caffeine,
- Breaktimer,
Nordvpn
,- PDFSlicer
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:
- YAML files with yamllint
- Bash files with shellcheck
- Markdown files with markdownlint-cli
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.