Automated set up of Fedora Workstation and Fedora Server using Ansible
The goal of this repository is to:
- keep all dotfiles and configurations in version control
- ensure system settings are reproducible across machines
- automate setup to the highest reasonable extent with minimal manual intervention
The most frequently used dotfiles are located here.
The automation is done using multiple Ansible playbooks, which are named according to the tasks they perform.
| Playbook | Description | Command |
|---|---|---|
| cleanup | Removes unused packages and fonts | make cleanup |
| customization | Customizes GNOME Shell, installs dotfiles, and some other settings | make customization |
| tools | Installs essential utilities | make tools |
| container | Installs Podman or Docker | make container |
| dev | Installs JDK, Node.js, Postman, and few IDEs and their settings | make dev |
| media | Installs media-related applications | make media |
| alternate | Installs Google Chrome, and optionally some other applications | make alternate |
| all | Runs all above playbooks | make all |
| server | Some setup required only for servers | make server |
Note
Check all available targets using make help.
-
Run the
inittarget. This installs a pre-commit hook and creates a python virtual environment with the required dependencies.make init
-
To setup, lets say, dev tools, run below. This would install JDK, Maven, Node.js, Postman, and IDEs - VS Code, IntelliJ IDEA, and WebStorm - with their extensions/plugins installed and settings configured.
make dev
To setup everything what this repository offers, run:
make all
-
The programmatic way to check changes being done to your system is to run the playbooks with
--checkflag. Example:uv run ansible-playbook playbooks/cleanup.yaml --check
-
Another way is to check the playbooks, roles, and group vars manually, which I find more reliable 😄
-
Run the
synctarget.make sync
-
And then commit the changes, eg:
git add . git commit -m "Sync" git push