Ansible playbook to quickly bootstrap Debian workstations with my custom desktop environment and commonly used apps
Find a file
2025-08-06 15:47:40 +02:00
host_vars Add EasyEffects autostart for kronos 2025-05-21 12:59:25 +02:00
inventory Add dummy inventory 2024-05-27 22:45:19 +02:00
roles Target Debian unstable 2025-08-06 15:47:40 +02:00
main.yml Use Discord canary deb instead of Flatpak 2025-02-02 01:22:31 +01:00
prerequisites.sh Refactor for use with Hyprland 2024-02-25 22:41:20 +01:00
README.md Target Debian unstable 2025-08-06 15:47:40 +02:00

Personal Linux Desktop Setup

This repository contains an Ansible playbook to bootstrap workstations with my custom Hyprland-based 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)
  • Waybar (status bar)
  • swaybg, swaylock, swayidle (background, session lock, idle management)
  • wofi (application menus)
  • xfce4-appfinder (application launcher)
  • Dunst (notifications)
  • slurp, grim, swappy (screenshot tools)
  • Thunar (file manager)
  • WezTerm (terminal emulator)
  • Emote (emoji picker)
  • Hyprhelpr (custom bash script for common tasks)
  • Additional background tools (PipeWire, polkit-kde-agent, gnome-keyring etc.)

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 intended to be run on Debian unstable, with only the standard system utilities option selected in tasksel during installation. Usage on other versions of Debian likely won't work, as Hyprland requires relatively recent versions of its dependencies to build.

Steps to Set Up a New System

Run the following commands to set up a fully configured system:

# Install git and ansible
sudo apt update && sudo apt install -y git ansible

# 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