Repository navigation
feat: clean up dotfiles, replace tmux with zellij, add bob-nvim/kitty, and enable rootless dry-runs - #7
Merged
Conversation
favilo
force-pushed
the
favilo/ansible-cleanup
branch
from
June 18, 2026 22:47
11b6c0b to
e16c4a5
Compare
Contributor
There was a problem hiding this comment.
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
becomein 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 behindnot ansible_check_modeand run it with sudo (or explicitly setmethod: userif 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 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 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 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 }}" | |||
…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
force-pushed
the
favilo/ansible-cleanup
branch
from
June 22, 2026 22:37
5ac01e9 to
bbad29b
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
This PR cleans up the Ansible dotfiles repository, removing legacy desktop environment/WM configurations, modernizing key CLI tools/terminal emulators, introducing the
bobNeovim version manager, and restructuring all tasks to support fully rootless dry-runs (just dry-run).Key Enhancements
Role & Package Cleanup:
xmonadandswayroles.tmuxwithzellij(including user's custom KDL configuration).gnome-screensaverandsilversearcher-ag.nemowithpcmanfm.multimcwith Flatpak-basedprism-launcher(resolved release mismatch issues).kitty(added Kitty config underprogrammingand stopped managing Alacritty).1passwordand the1password-cli(op).Neovim & XDG Upgrades:
bob-nvimversion manager to install Neovimv0.12.2(removing empty-task warnings).xdg_config_homeglobally (~/.config) and migrated all configuration paths across roles to respect XDG guidelines.Multi-OS Bootstrapping & Justfile:
bin/dot-bootstrapandjustfileto support both Ubuntu/Debian and Arch Linux prerequisite checks natively.Rootless Check-Mode (
just dry-run):aptandsnapinstallation tasks to query package state unconditionally using unprivilegeddpkg-queryandsnap list.aptandsnapinstall/remove tasks (which require root andbecome: true) to run only in apply mode and only on packages that are actually missing.just dry-runto execute completely rootless with zero sudo password prompts or privilege escalation errors when all dependencies are satisfied.Linting & Code Quality:
ansible-lintsyntax errors Repository-wide.Base Branch
favilo/lint-cleanups(PR Add lint tooling (Lua/YAML/Ansible) + CI, fix nvim lua_ls types #6) as this stack of commits builds directly on top of those lint enhancements.