brpaz/my-linux-setup
brpaz/my-linux-setup has 84 GitHub stars and 12 forks. GitHot measured 0 stars in 24 hours, 0 in 7 days, and 0 in 15 days. Last checked 2026-11-15 04:32 UTC. Last push 2026-11-02.
Measured star growth
- in 24h
- 0
- in 7 days
- 0
- in 15 days
- 0
- in 1 month
- Collecting history
Net star changes over overlapping periods, not daily totals. Missing measurements are left blank. Stars measure attention, not software quality.
About
My Fedora Linux list of installed applications and Ansible provision scripts
LearningREADME.md
OriginalMy Laptop Provision scripts
Set of Ansible playbooks to provision my Linux machines with all my applications and settings.
Motivation
Setup a new machine from scratch is always a very time consuming task. Last time I did it, it took an entire weekend to install everything.
And there is a high chance I forgot someting, that I not use everyday. Also as the Developer I install many tools directly from GitHub and so checking if for new versions is a very manual process, like going to GitHub, check latest release, download the binary and move it to the correct place.
What if most of this setup, can be automated? That´s where Ansible and this reposiory comes in.
Pre-requisites
- The
inventories/personal/hosts.iniinventory. - Fedora for
tuxedo-laptopor Arch Linux forzenbook-laptop. - GitHub personal access token. You can get one here.
What is included
- Initial system update.
- Install Dotfiles from my private dotfiles repository, using Yet Another Dotfiles Manager - yadm
- Install all my applications. Check APPLICATIONS.md for a detailed list.
Inventories
The repo now uses a single inventory for personal machines:
inventories/personal/hosts.ini
The inventory defines shared variables plus a laptops group and separate host vars for each machine:
group_vars/all.ymlfor shared variables used by all personal machinesgroup_vars/laptops.ymlfor shared laptop variableshost_vars/tuxedo-laptop.ymlhost_vars/zenbook-laptop.yml
This keeps shared variables in inventory group vars, machine-specific values in host vars, and makes it easier to add more personal machines later.
Provision a new machine
On a brand new Fedora or Arch machine, bootstrap everything with a single command:
export GITHUB_TOKEN=<my_github_token>
bash -c "$(curl -fsSL https://raw.githubusercontent.com/brpaz/my-linux-setup/master/install.sh)"
This detects the distro, installs base packages, clones this repo to ~/my-linux-setup (override with INSTALL_DIR), sets up a Python venv with Ansible, and runs the playbooks for the detected machine (tuxedo-laptop on Fedora, zenbook-laptop on Arch).
Re-running ./install.sh later from inside the clone skips the clone step and just re-provisions.
You can also run playbooks directly with an explicit inventory:
ansible-playbook -i inventories/personal/hosts.ini --limit tuxedo-laptop playbooks/tuxedo.yml --ask-become-pass
ansible-playbook -i inventories/personal/hosts.ini --limit tuxedo-laptop playbooks/dotfiles.yml --ask-become-pass
ansible-playbook -i inventories/personal/hosts.ini --limit tuxedo-laptop playbooks/setup.yml --ask-become-pass
ansible-playbook -i inventories/personal/hosts.ini --limit zenbook-laptop playbooks/zenbook.yml --ask-become-pass
To add a remote machine later, add it to inventories/personal/hosts.ini, place common variables in the right group vars file, and put machine-specific values in host_vars/<host>.yml.
Note When installing dotfiles you will be prompted for the "pgp" key to decrypt the secure files. Make sure to have it at hand.
Post install steps
Unfortunately not everything can be automated and some manual steps will be required after running this scripts.
Restoring $HOME directory from backup
The Ansible playbook syncs mostly of the dotfiles. Still, user data like Pictures, Music etc, must be restored manually from backup.
To do so, you can run the [scripts/restore_home.sh] script.
sudo chmod +x scripts/restore_home.sh
BACKUP_PATH=/path/to/home/backup scripts/restore_home.sh
This will rsync the most important folders like Documents, Video, Music, Code etc from the specified backup location.
Manual Apps install
AppImages (with GearLever)
- WebCatalog Desktop for Mac, Windows, Linux - WebCatalog
- script-kit/app
- Proxyman Proxyman - macOS, iOS, Windows and Linux
- heyman/heynote: A dedicated scratchpad for developers
WebCatalog
- Immich
- ChatGPT
- Excalidraw | Hand-drawn look & feel • Collaborative • Secure
- Online FlowChart & Diagrams Editor - Mermaid Live Editor
Others
Other tasks
- [] Execute Jetbrains toolbox and install the IDEs. (DataGrip, Goland, IDEA, PHPStorm, WebStorm, CLion, Android Studio).
- [] Open Chrome and Firefox browsers and login to start syncing all the extensions, bookmarks etc.
- [] Login into applications (Gnome Accounts, Spotify, etc).
- [] Configure Pika Backup
Keep the system updated
Most of the tasks are idenpotent and you can use this playbook to keep your system updated. This is useful, for example, to automatically update all the programs installed from GitHub, as the playbooks will try to fetch and install always the latest release.
You can execute a specific tag, by running:
TAG=node task run-tag
Keep GitHub installed software updated
TAG=github task run-tag
Reference
- http://radeksprta.eu/automatically-setup-computer-ansible-playbook/
- http://blog.josephkahn.io/articles/ansible/
- https://github.com/Benoth/ansible-ubuntu
Author
👤 Bruno Paz
- Website: brunopaz.dev
- Github: @brpaz
📝 License
Copyright © 2019 Bruno Paz.
This project is MIT licensed.