Ansible playbook to quickly bootstrap Debian workstations with my custom desktop environment and commonly used apps
Find a file
2025-10-06 23:48:24 +02:00
host_vars Add workspace mapping for helios 2025-10-06 23:48:24 +02:00
inventory Add role to use Sway instead of Hyprland 2025-10-04 01:45:42 +02:00
roles Add network manager UI tools 2025-10-06 23:46:09 +02:00
main.yml Add role to use Sway instead of Hyprland 2025-10-04 01:45:42 +02:00
README.md Add role to use Sway instead of Hyprland 2025-10-04 01:45:42 +02: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 or Sway (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. - see utils task)

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 provides the option to install a desktop environment based on either Hyprland or Sway. The look & feel as well as the key bindings will be mostly the same, but the variant using Hyprland is more mature as Sway lacks some features.

Using Hyperland also requires Debian unstable, as Hyprland requires recent versions of its dependencies to build.

The base system is intended to be installed only with the standard system utilities option selected in tasksel during installation.

Steps to set up a new system

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

Prerequisites for Debian unstable

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

Prerequisites for Debian stable

# Install git and ansible
sudo apt update && sudo apt install -y git pipx
pipx install --include-deps ansible
pipx ensurepath

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