| .vscode | ||
| host_vars | ||
| inventory | ||
| roles | ||
| .gitignore | ||
| ansible.cfg | ||
| main.yml | ||
| README.md | ||
Personal Linux Desktop Setup
This repository contains an Ansible playbook to bootstrap workstations with my custom desktop environment and commonly used applications. It's basically a dotfiles repository on steroids.
Desktop Environment Components
The desktop environment is primarily composed of the following components:
- Hyprland (Wayland compositor)
- DankMaterialShell (shell, session lock, greeter, notifications etc.)
- swayidle (idle management)
- slurp, grim, swappy (screenshot tools)
- Dolphin (file manager)
- WezTerm (terminal emulator)
- Additional background tools (PipeWire, gnome-keyring etc. - see the install tasks for a full list)
The packages used to install Hyprland and DankMaterialShell are built from source and published to the package registry of this Forgejo instance. For more details, check out the corresponding repository.
Customization
The playbook generates configuration files based on the host-specific variables for the machine it's running on.
To add a new host, include its hostname in the inventory and create a corresponding host_vars file. Refer to the existing configurations for examples.
Even if the host-specific configuration is missing, the playbook will bring up a functional system using sensible defaults. This makes it possible to provision new systems without needing to know details like monitor descriptions for Hyprland in advance.
Usage
This playbook is supposed to be run on Fedora 43. All other operating systems and versions are unsupported.
The base system is intended to be a Fedora Everything installation with the following options selected in the software selection dialog:
- Base Environment:
Fedora Custom Operating System - Additional software for Selected Environment:
Standard
Steps to set up a new system
Run the following commands to set up a fully configured system:
Install prerequisites
# Install git and ansible
sudo dnf install git-core ansible
Cloning and executing the playbook
# Clone and prepare the repository
git clone https://git.bluemedia.dev/Bluemedia/desktop-config.git
cd desktop-config
# Customize the applications you want to install
nano main.yml
# Run the playbook
ansible-playbook -i inventory/ --ask-become-pass main.yml
# Reboot after the playbook completes
sudo reboot
Updating an existing system
To update an already installed system, use the following commands:
cd desktop-config
git pull
ansible-playbook -i inventory/ --ask-become-pass main.yml
# Reboot after the playbook completes
sudo reboot