| roles/kde_desktop | ||
| .gitignore | ||
| playbook.yml | ||
| README.md | ||
| Vagrantfile | ||
Kali Linux (Vagrant)
Vagrant project that provisions a Kali Linux rolling VM with a KDE Plasma desktop. The base box is customized via Ansible after the VM is created.
The Vagrantfile is tailored for libvirt and VirtualBox. The upstream kalilinux/rolling box also supports other providers (e.g. VMware Desktop, Hyper-V); those are not configured here but could be added in the same way.
Requirements
- Vagrant
- Vagrant Ansible provisioner (usually bundled with Vagrant)
libvirt (Linux):
- vagrant-libvirt plugin
- libvirt (QEMU/KVM) on the host
On Arch Linux, typical packages: vagrant, vagrant-libvirt, libvirt, qemu-full, and membership in the libvirt group.
VirtualBox:
- VirtualBox on the host (built-in Vagrant provider)
Usage
Pick the provider that matches your host. Each provider needs its own box download (same box name and version).
vagrant up --provider=libvirt
# or
vagrant up --provider=virtualbox
Other common commands:
vagrant ssh
vagrant halt
vagrant destroy
vagrant provision # re-run Ansible without recreating the VM
Display settings differ by provider: libvirt uses SPICE/QXL (remote viewer or local GUI when supported); VirtualBox opens a GUI window (vb.gui = true).
What gets provisioned
playbook.yml applies the kde_desktop Ansible role, which:
- Installs
kali-desktop-kdeand removes the default XFCE metapackage - Sets KDE Plasma on Wayland as the default session (
startplasma-wayland) - Uses SDDM as the display manager (disables LightDM if present)
- Enables graphical boot and autologin for user
vagrantinto Plasma - Sets timezone to Europe/Berlin and German keyboard layout (system and KDE)
Box pin in the Vagrantfile: kalilinux/rolling version 2026.1.0.
Project layout
| Path | Purpose |
|---|---|
Vagrantfile |
VM providers (libvirt, VirtualBox), resources, Ansible provisioner |
playbook.yml |
Main Ansible playbook |
roles/kde_desktop/ |
Desktop, locale, and display-manager configuration |
Notes
- First
vagrant updownloads the box and runs provisioning; this can take a while. .vagrant/and*.logare gitignored.- If libvirt networking or permissions fail, check that the libvirt daemon is running and your user can access it (e.g.
libvirtgroup,virsh list).