Ansible playbook to quickly bootstrap Debian workstations with my custom desktop environment and commonly used apps
Find a file
2025-12-14 14:35:50 +01:00
.vscode Make ansible-lint happy 2025-11-26 20:10:20 +01:00
host_vars Fix easyeffects autostart on kronos 2025-11-26 21:14:16 +01:00
inventory Move to Hyprland only setup on Fedora 43 with DankMaterialShell 2025-11-22 01:05:41 +01:00
roles Configure Hyprland update and donation notifications 2025-12-14 14:35:50 +01:00
.gitignore Make ansible-lint happy 2025-11-26 20:10:20 +01:00
ansible.cfg Move to Hyprland only setup on Fedora 43 with DankMaterialShell 2025-11-22 01:05:41 +01:00
main.yml Configure Hyprland update and donation notifications 2025-12-14 14:35:50 +01:00
README.md Adapt README.md to new Fedora base 2025-11-24 23:32:04 +01:00

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