Apply configuration
Use this page after completing Install OS, both for initial configuration and for subsequent reconfiguration. Ansible makes the setup repeatable, reviewable, and easier to share across the team.
This workflow is tested/supported on Fedora Workstation 44 x86_64. The playbook gathers platform facts first and stops with the detected platform if the distribution, major version, or architecture is unsupported.
make configuremake configure is the canonical command. It reruns the prerequisite setup from Install OS, then runs the main workstation playbook through the lab-stack target. This workflow relies on Ansible and documented package policy rather than manual, undocumented changes. For a workstation with user- or machine-specific automation, apply this shared baseline first and then apply a separate personal overlay.
Ansible playbooks are designed to be idempotent: they describe the desired final state of the workstation. When you rerun the command, Ansible checks what is already installed or configured and only applies missing or changed steps. Ansible converges the machine toward that declared state, so a repeated run should leave already-correct state unchanged. This makes the same command useful after an interrupted run or after changing documented configuration.
Use Update configuration when repository and installed software versions should also be refreshed before reconfiguration.
🔧 Manual setup and configuration
After Ansible applies the shared configuration, complete only the manual steps for software you use:
- Set up GitHub SSH/GPG identity and workstation basics in Baseline.
- Log out and back in before testing Docker group access; see Docker.
- Configure browsers and extensions in Chrome if needed.
- Create or open a database and pair KeePassXC-Browser in KeePassXC.
- Configure Thunderbird accounts and extensions in Thunderbird if needed.
- Sign in to editors, extensions, and settings sync in VS Code if needed.
- Start or verify local research services in GROBID and LanguageTool if you use them.
- Configure OCR workflows in OCR and Quarto publishing in Quarto if relevant.
- Choose between the default TinyTeX installation and the full Fedora TeX Live installation in LaTeX if needed.
Run only one playbook tag when you need to test or reapply a specific area:
ansible-playbook -i inventory -K playbooks/lab-stack.yml --tags baseline
ansible-playbook -i inventory -K playbooks/lab-stack.yml --tags desktop_apps
ansible-playbook -i inventory -K playbooks/lab-stack.yml --tags git
ansible-playbook -i inventory -K playbooks/lab-stack.yml --tags borg_vorta
ansible-playbook -i inventory -K playbooks/lab-stack.yml --tags dropbox
ansible-playbook -i inventory -K playbooks/lab-stack.yml --tags nemo
ansible-playbook -i inventory -K playbooks/lab-stack.yml --tags veracrypt
ansible-playbook -i inventory -K playbooks/lab-stack.yml --tags ocr
ansible-playbook -i inventory -K playbooks/lab-stack.yml --tags virtualbox
ansible-playbook -i inventory -K playbooks/lab-stack.yml --tags docker
ansible-playbook -i inventory -K playbooks/lab-stack.yml --tags ocr_containers
ansible-playbook -i inventory -K playbooks/lab-stack.yml --tags development_containers
ansible-playbook -i inventory -K playbooks/lab-stack.yml --tags grobid
ansible-playbook -i inventory -K playbooks/lab-stack.yml --tags languagetool
ansible-playbook -i inventory -K playbooks/lab-stack.yml --tags latex
ansible-playbook -i inventory -K playbooks/lab-stack.yml --tags quarto
ansible-playbook -i inventory -K playbooks/lab-stack.yml --tags rstudio
ansible-playbook -i inventory -K playbooks/lab-stack.yml --tags keepassxc
ansible-playbook -i inventory -K playbooks/lab-stack.yml --tags okular
ansible-playbook -i inventory -K playbooks/lab-stack.yml --tags chrome
ansible-playbook -i inventory -K playbooks/lab-stack.yml --tags vscode
ansible-playbook -i inventory -K playbooks/lab-stack.yml --tags teams
ansible-playbook -i inventory -K playbooks/lab-stack.yml --tags thunderbird
ansible-playbook -i inventory -K playbooks/lab-stack.yml --tags thunderbird_mcp
ansible-playbook -i inventory -K playbooks/lab-stack.yml --tags desktopYou can also combine tags, for example:
ansible-playbook -i inventory -K playbooks/lab-stack.yml --tags keepassxc,chrome