Skip to content

Reorganize installed tools using home-maker pattern (Arch + Fedora)#4

Draft
Copilot wants to merge 1 commit intomasterfrom
copilot/organize-installed-tools
Draft

Reorganize installed tools using home-maker pattern (Arch + Fedora)#4
Copilot wants to merge 1 commit intomasterfrom
copilot/organize-installed-tools

Conversation

Copy link
Copy Markdown
Contributor

Copilot AI commented Apr 3, 2026

Replaces the monolithic Makefile with a modular home-maker pattern that supports both Arch Linux and Fedora.

What changed

File Purpose
Makefile Rewritten — OS detection, per-manager target generators, group & meta targets
hm.sh New — interactive fzf frontend to install/upgrade any package or group
dev/cli.mk Core CLI tools: fzf, git, cmake, zsh, neovim, eza, zoxide, …
dev/langs.mk Language toolchains: nodejs, npm, go, dotnet-sdk, rustup, dart
dev/rust.mk Cargo tools: sccache, configman, gprofile, cargo-cache, cargo-edit
dev/fonts.mk Noto fonts + ttf-ms-fonts (distro-specific package name overrides)
desktop/apps.mk Firefox, tilix, libreoffice, gnome-browser-connector, VSCode, pycharm, zoom, snapd
desktop/gnome.mk All gsettings GNOME preferences from the original Makefile

How it works

OS is detected at parse time via /etc/os-release. Every .mk file appends to PKG, AUR, CARGO, GO, or NPM lists. The Makefile generates individual .PHONY targets for each entry using the right install command for the active distro. PKG_<name> variables handle packages with different names between distros (e.g. libreoffice-fresh on Arch vs libreoffice on Fedora).

make fzf          # install a single package
make cli          # install a group
make dev          # all dev tools
make all          # everything
./hm.sh           # interactive fuzzy picker
make aur-helper   # bootstrap paru (Arch only)
make link-dots    # link dotfiles via configman

Distro differences handled

  • Arch: pacman for official packages, paru for AUR (zoom, dart, ttf-ms-fonts, gnome-browser-connector, snapd)
  • Fedora: dnf for everything; AUR targets are skipped gracefully; zoom downloads directly from zoom.us; dart installed via snap; dotnet-sdk uses versioned package name

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