# Software Audit - mw-pfeddersheim-workstation (2026-02-27) ## 1. Core Development Tools | Package | Version | Verified | Notes | |---------|---------|----------|-------| | **Node.js** | v25.6.1 | Yes | Matches `software-stack.md` | | **Python** | 3.14.3 | Yes | Matches `software-stack.md` | | **Ansible** | 2.20.2 (core) | Yes | Matches `software-stack.md` | | **Docker** | 29.2.1 | Yes | Matches `software-stack.md` | | **PHP** | 8.5.3 | (pacman) | CLI extensions installed (gd, pgsql, sqlite, etc.) | | **Rust** | 1.93.1 | (pacman) | | ## 2. Categorized Main Packages ### Development & DevOps - `act-git`: Local GitHub Actions runner - `ansible`: Infrastructure automation - `composer`: PHP dependency manager - `docker-compose`: Multi-container orchestration - `git-filter-repo`, `git-lfs`: Git extensions - `github-cli (gh)`: GitHub integration - `mmctl`: Mattermost CLI - `yarn`: Node.js package manager ### System Utilities & Monitoring - `btop`, `htop`: Performance monitors - `eza`, `fd`, `jq`: Modern CLI tools - `inxi`, `neofetch`: System information - `nvtop`: GPU monitoring - `powertop`: Power management - `sysstat`: System performance tools - `tailscale`: VPN/Mesh networking - `ufw`: Firewall ### GUI Applications - `firefox-developer-edition`: Primary dev browser - `google-chrome`: Testing browser - `gimp`: Image editing - `kdenlive`, `obs-studio`, `shotcut`: Media production - `mattermost-desktop`: Team communication - `nextcloud-client`: File sync - `onlyoffice-desktopeditors`: Office suite - `qgis`: Geospatial analysis - `vlc`: Media player ### Virtualization & Remote Access - `virt-manager`: VM management - `remmina`: Remote desktop client - `rustdesk`: Remote support ## 3. Findings & Discrepancies - **CachyOS/Manjaro Hybrid**: The system shows Manjaro release branding and specific Manjaro configs (`manjaro-system`, `manjaro-release`), whereas `software-stack.md` mentions CachyOS. - **VS Code Remnants**: `vscode` package is NOT in the `pacman -Qet` list, indicating the package removal was successful. Primary manual remnant paths (configs/data) were verified as deleted. - **Modern Tooling**: Good adoption of modern CLI tools (`eza`, `fd`, `oha`, `aichat`). - **Ansible Compliance**: All core tools defined in `ansible/roles/dev-tools/tasks/main.yml` (git, base-devel, ripgrep, fd, jq, bat, eza, ansible) are present. - **Missing Documentation in Stack**: `bat` and `ripgrep` are installed and managed via Ansible but were not explicitly listed in the `software-stack.md` core table. ## 4. Redundant Software Audit & Final Decisions Following user feedback, the software list has been finalized. Packages identified as "keep" are retained for specialized inspections despite not being part of the primary development workflow. ### 4.1. Packages to Remove The following packages will be set to `state: absent` in Ansible and removed via `pacman`. | Category | Package | Reason for Removal | |----------|---------|--------------------| | **Browsers** | `firefox-developer-edition` | Redundant (User prefers Chrome) | | **Media Production** | `audacity`, `kdenlive`, `obs-studio`, `shotcut` | Specialized production tools (Non-core) | | **Graphics & GIS** | `qgis` | Specialized GIS tools (Non-core) | | **Education/Utility**| `tipp10`, `xjournalpp` | Typing tutor and notetaking app (Non-core) | | **Maintenance** | `bleachbit` | Redundant (Functionality covered by `scripts/maintenance.sh`) | | **Legacy Storage** | `reiserfsprogs`, `dmraid` | Legacy filesystem and hardware RAID tools | ### 4.2. Packages to Keep (Inspections & Utilities) These packages were originally identified as removal candidates but will be kept per user request: - `vlc`: Retained for media inspections. - `gimp`: Retained for image inspections. - `nano`: Retained as a fallback terminal editor. - `rustdesk`: Retained for remote management of systems via the Tailscale network. ## 5. Implementation Status - [x] **Ansible Integration**: Update `ansible/roles/dev-tools/tasks/main.yml` with `state: absent` for the removal list. - [x] **OS Context Sync**: Update `software-stack.md` and related documentation to reflect the Manjaro/Arch environment. - [x] **Execution**: Run removal via CLI or Ansible playbook. ## 6. Software Usage Analysis (Idle Applications) An analysis was performed to identify applications that have not been utilized for more than 3 months. Since the system root is mounted with `noatime`, usage was inferred from the absence of user-specific configuration and cache updates in `~/.config` and `~/.cache`. ### 6.1. Stale Application Candidates The following applications show no evidence of recent activity and are recommended for future review or removal to minimize the workstation's footprint. | Application | Last Used (Est.) | Description | |:---|:---|:---| | `onlyoffice-desktopeditors` | > 3 Months | Office suite (Text, Spreadsheets, Presentations) | | `virt-manager` | > 3 Months | Desktop UI for managing virtual machines | | `rustdesk` | > 3 Months | Remote desktop software | | `guvcview` | > 3 Months | Video capture interface for webcams | | `helvum` | > 3 Months | GTK patchbay for PipeWire | | `qpwgraph` | > 3 Months | Qt-based PipeWire graph interface | | `glmark2` | > 3 Months | OpenGL benchmark tool | | `act-git` | > 3 Months | Local GitHub Actions runner | | `oha` | > 3 Months | HTTP load generator/tester | | `unetbootin` | > 3 Months | Live USB creation utility | | `ventoy` | > 3 Months | Multi-ISO bootable USB creator | ### 6.2. Removal Decisions Following the usage analysis, the user has decided to remove the following idle applications via Ansible: - **Office**: `onlyoffice-desktopeditors` - **Virtualization**: `virt-manager` - **Capture**: `guvcview` - **PipeWire Tools**: `helvum`, `qpwgraph` - **Benchmarking**: `glmark2`, `oha`, `act-git` - **USB Utilities**: `unetbootin`, `ventoy` The application **`rustdesk`** will be **retained** as it is actively used for remote system management over Tailscale. ### 6.3. Strategy Note Usage detection on this workstation is constrained by the `noatime` mount option. Future audits should rely on systemd journal analysis or application-specific logging where available to increase accuracy.