Skip to content

feat: clean up dotfiles, replace tmux with zellij, add bob-nvim/kitty, and enable rootless dry-runs - #7

Merged
favilo merged 7 commits into
mainfrom
favilo/ansible-cleanup
Jun 30, 2026
Merged

favilo merged 7 commits into
mainfrom
favilo/ansible-cleanup

Conversation

@favilo

@favilo favilo commented Jun 18, 2026

Copy link
Copy Markdown
Owner

Summary

This PR cleans up the Ansible dotfiles repository, removing legacy desktop environment/WM configurations, modernizing key CLI tools/terminal emulators, introducing the bob Neovim version manager, and restructuring all tasks to support fully rootless dry-runs (just dry-run).

Key Enhancements

  1. Role & Package Cleanup:

    • Removed obsolete xmonad and sway roles.
    • Replaced tmux with zellij (including user's custom KDL configuration).
    • Removed gnome-screensaver and silversearcher-ag.
    • Replaced nemo with pcmanfm.
    • Replaced multimc with Flatpak-based prism-launcher (resolved release mismatch issues).
    • Replaced Alacritty with kitty (added Kitty config under programming and stopped managing Alacritty).
    • Added official repository support for 1password and the 1password-cli (op).
  2. Neovim & XDG Upgrades:

    • Integrated bob-nvim version manager to install Neovim v0.12.2 (removing empty-task warnings).
    • Defined xdg_config_home globally (~/.config) and migrated all configuration paths across roles to respect XDG guidelines.
  3. Multi-OS Bootstrapping & Justfile:

    • Modernized bin/dot-bootstrap and justfile to support both Ubuntu/Debian and Arch Linux prerequisite checks natively.
  4. Rootless Check-Mode (just dry-run):

    • Restructured all apt and snap installation tasks to query package state unconditionally using unprivileged dpkg-query and snap list.
    • Gated the actual apt and snap install/remove tasks (which require root and become: true) to run only in apply mode and only on packages that are actually missing.
    • This enables just dry-run to execute completely rootless with zero sudo password prompts or privilege escalation errors when all dependencies are satisfied.
    • Skipped network and GPG-key repository updates during dry-runs.
  5. Linting & Code Quality:

    • Resolved all ShellCheck, formatting, and ansible-lint syntax errors Repository-wide.

Base Branch

Base automatically changed from favilo/lint-cleanups to main June 18, 2026 22:45
@favilo
favilo force-pushed the favilo/ansible-cleanup branch from 11b6c0b to e16c4a5 Compare June 18, 2026 22:47
@favilo
favilo requested a review from Copilot June 18, 2026 22:47

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR modernizes the Ansible-managed dotfiles setup by removing legacy WM/terminal tooling (xmonad/sway/tmux/alacritty), introducing zellij + kitty + bob-nvim, and restructuring package installation tasks to better support rootless dry-runs (just dry-run).

Changes:

  • Replace tmux → zellij (role + config) and alacritty → kitty (role config).
  • Add bob-nvim + Neovim version management, and diagram rendering support (mermaid-cli/ImageMagick + nvim plugins).
  • Refactor multiple Debian package installation tasks to pre-check package state unprivileged and only become in apply mode; add bootstrap + justfile targets.

Reviewed changes

Copilot reviewed 55 out of 58 changed files in this pull request and generated 6 comments.

Show a summary per file
File Description
roles/zsh/tasks/main.yml Switch zsh config paths to respect xdg_config_home.
roles/zsh/tasks/debian.yml Add dpkg-query pre-check and gate apt install in apply mode.
roles/zellij/tasks/main.yml Add zellij installation + XDG config linking.
roles/zellij/files/config.kdl Add user zellij configuration (KDL).
roles/xmonad/tasks/main.yml Remove xmonad role tasks.
roles/xmonad/tasks/debian.yml Remove Debian-specific xmonad deps/tasks.
roles/xmonad/files/xmonad/xmonad.hs Remove xmonad configuration source.
roles/xmonad/files/xmonad/stack.yaml Remove xmonad stack build config.
roles/xmonad/files/xmonad/my-xmonad.cabal Remove xmonad cabal config.
roles/xmonad/files/xmonad/lib/empty Remove xmonad lib placeholder.
roles/xmonad/files/xmonad/lib/.gitignore Remove xmonad lib placeholder ignore.
roles/xmonad/files/xmonad/build Remove xmonad custom build script.
roles/xmonad/files/Xmonad.desktop Remove xmonad XSession entry.
roles/xinput/tasks/main.yml Switch touchpad helper deployment from copy → symlink.
roles/tmux/tasks/main.yml Remove tmux role tasks.
roles/tmux/tasks/debian.yml Remove tmux apt install task.
roles/tmux/files/tmux/keybindings/f-keys.conf.disable Remove tmux keybinding config.
roles/tmux/files/tmux/keybindings/f-keys.conf Remove tmux keybinding config.
roles/tmux/files/tmux.conf Remove tmux config.
roles/sway/tasks/main.yml Remove sway role tasks.
roles/sway/tasks/arch.yml Remove Arch sway package tasks.
roles/sway/files/waybar/style.css Remove waybar CSS config.
roles/sway/files/waybar/config Remove waybar config.
roles/sway/files/sway/config Remove sway config.
roles/programming/tasks/main.yml Install cargo-binstall + CLI tools via cargo-binstall; switch terminal config to kitty.
roles/programming/tasks/debian.yml Add unprivileged dpkg/snap checks and gate installs in apply mode.
roles/programming/tasks/arch.yml Add placeholder arch task file.
roles/programming/files/kitty.conf Add kitty configuration.
roles/programming/files/alacritty.yml Remove alacritty YAML config.
roles/programming/files/alacritty.toml Remove alacritty TOML config.
roles/penrose/templates/penrose.desktop.j2 Remove penrose desktop template.
roles/penrose/tasks/main.yml Rework penrose setup to build/install favilrose and link polybar config under XDG.
roles/penrose/tasks/debian.yml Gate Debian penrose deps install via dpkg-query pre-checks; update webkit dep version.
roles/penrose/files/config/sxhkd/sxhkdrc Remove bspwm/sxhkd hotkeys config.
roles/penrose/files/config/polybar/launch.sh Add/update polybar launch script.
roles/penrose/files/config/polybar/config Remove xmonad-log module from polybar config.
roles/penrose/files/config/bspwm/bspwmrc Remove bspwm config.
roles/penrose/files/bspwm.desktop Remove bspwm XSession entry.
roles/packages/tasks/main.yml Adjust global npm installs; add mermaid-cli install.
roles/packages/tasks/debian.yml Add 1Password repo, refactor apt/snap install to be apply-only, add Prism Launcher flatpak install.
roles/packages/tasks/arch.yml Replace nemo → pcmanfm; add 1Password install via yay.
roles/packages/defaults/main.yml Introduce Debian/snap package lists for easier auditing and dpkg/snap checking.
roles/nvim/tasks/main.yml Add bob-nvim + pinned Neovim version; migrate config link to xdg_config_home.
roles/nvim/tasks/debian.yml Add placeholder debian task file.
roles/nvim/files/puppeteer-config.json Add Puppeteer config to run Chromium with --no-sandbox.
roles/nvim/files/lua/plugins/spec/diagram.lua Add diagram.nvim + image.nvim config to render mermaid inline via kitty protocol.
roles/nvim/files/lazy-lock.json Update plugin lockfile to include diagram/image and bump commits.
roles/jj/tasks/main.yml Install jj via cargo-binstall; move config to XDG path.
roles/haskell/tasks/debian.yml Gate stack install behind dpkg-query pre-check in apply mode.
roles/git/tasks/debian.yml Gate git install behind dpkg-query pre-check in apply mode.
roles/fzf/tasks/debian.yml Gate fzf install behind dpkg-query pre-check in apply mode.
mermaid-sample.md Add sample markdown to validate diagram rendering.
justfile Add dry-run and apply targets for check/apply workflows.
group_vars/local Define global xdg_config_home defaulting to ~/.config.
dotfiles.yml Update role set/order (add zellij/jj/penrose; remove tmux; move programming earlier).
bin/dot-bootstrap Modernize bootstrap: OS detection, prereqs, galaxy collection install, and use just targets.
.pre-commit-config.yaml Update shellcheck/shfmt excludes now that sway is removed.
.ansible-lint Add flatpak module to mocked modules list.
Comments suppressed due to low confidence (1)

roles/packages/tasks/debian.yml:88

  • The Flatpak install runs unconditionally and without become. If the module defaults to system installs (common), this will fail in rootless dry-runs and potentially in apply mode too. Gate it behind not ansible_check_mode and run it with sudo (or explicitly set method: user if you intend a per-user install).
- name: Install Prism Launcher via Flatpak
  community.general.flatpak:
    name: org.prismlauncher.PrismLauncher
    state: present


💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment on lines 24 to 28
- name: Install fun crates
command: "{{ dotfiles_user_home }}/.cargo/bin/cargo binstall {{ item.name }}"
command: "{{ dotfiles_user_home }}/.cargo/bin/cargo binstall -y {{ '--dry-run' if ansible_check_mode else '' }} {{ item.name }}"
args:
creates: "{{ dotfiles_user_home }}/.cargo/bin/{{ item.exe }}"
with_items:
Comment thread roles/zellij/tasks/main.yml Outdated
Comment on lines +1 to +6
- name: Install zellij with cargo binstall
command: "{{ dotfiles_user_home }}/.cargo/bin/cargo binstall -y {{ '--dry-run' if ansible_check_mode else '' }} zellij"
args:
creates: "{{ dotfiles_user_home }}/.cargo/bin/zellij"
check_mode: no

Comment thread roles/jj/tasks/main.yml Outdated
Comment on lines 1 to 6
- name: Install jj with cargo binstall
command: cargo binstall -y --strategies crate-meta-data jj-cli
command: "{{ dotfiles_user_home }}/.cargo/bin/cargo binstall -y {{ '--dry-run' if ansible_check_mode else '' }} --strategies crate-meta-data jj-cli"
args:
creates: "{{ ansible_env.HOME }}/.cargo/bin/jj"
creates: "{{ dotfiles_user_home }}/.cargo/bin/jj"
check_mode: no

Comment thread roles/nvim/tasks/main.yml Outdated
Comment thread roles/packages/tasks/main.yml Outdated
Comment on lines +6 to +10
@@ -7,13 +7,20 @@
community.general.npm:
name: "bash-language-server"
global: true
become: true
become: "{{ not ansible_check_mode }}"
Comment thread roles/nvim/files/lua/plugins/spec/diagram.lua Outdated
favilo and others added 5 commits June 22, 2026 15:36
…do not install alacritty

Signed-off-by: Kevin Oberlies <favilo@gmail.com>
… dry-run respect check mode without root

Signed-off-by: Kevin Oberlies <favilo@gmail.com>
…chpad fix script

Signed-off-by: Kevin Oberlies <favilo@gmail.com>
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
Signed-off-by: Kevin Oberlies <favilo@gmail.com>
@favilo
favilo force-pushed the favilo/ansible-cleanup branch from 5ac01e9 to bbad29b Compare June 22, 2026 22:37
@favilo
favilo merged commit 8794cb2 into main Jun 30, 2026
2 checks passed
@favilo
favilo deleted the favilo/ansible-cleanup branch June 30, 2026 17:48
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants