Show HN: Home Maker: Declare Your Dev Tools in a Makefile

https://news.ycombinator.com/rss Hits: 5
Summary

Your laptop has ripgrep, installed via cargo install. ruff is there too, via uv tool install. golangci-lint came from go install. bash-language-server was npm i -g. Neovim was a tarball download. Kitty was a curl script.Six months later you get a new machine, or you just want to upgrade or reinstall. What do you even have installed? How did you install each one? Which version? Good luck.This is a small system that answers those questions — a single Makefile that declares every tool you care about, grouped by purpose, with one command to install anything.Note: If you just want to use this, head straight to github.com/santhoshtr/hm and start adding your packages. The rest of this post explains how it works.The Problem#A developer’s machine accumulates tools from five or more package managers. Each has its own syntax:sudo apt-get install -y ripgrep cargo install eza uv tool install ruff go install golang.org/x/tools/gopls@latest sudo npm i -g prettier curl -L https://example.com/tool | sh You remember these the day you install them. Three months later, you remember nothing. When the next laptop arrives, or you want to upgrade or reinstall some packages, you spend a day re-discovering what you had and how to get it.The fix is not another tool. It is a text file you already understand. Instead of running the installation commands and scripts in your terminal, you record it for the future.One Makefile#Create a directory. Inside it, a single Makefile and a few .mk files under dev/:hm/ ├── Makefile ├── dev/ │ ├── cli.mk │ ├── python.mk │ ├── node.mk │ ├── go.mk │ ├── rust.mk │ └── lsp.mk └── desktop/ └── apps.mk Each .mk file declares packages for one manager using simple += appends:# dev/cli.mk APT += ripgrep jq bat fzf htop tmux CARGO += eza zoxide fd PKG_fd := fd-find # dev/python.mk UV += ruff black isort pyright # dev/go.mk GO += gopls golangci-lint PKG_gopls := golang.org/x/tools/gopls PKG_golangci-lint := github.com/golangci/golangci-lint/cmd/golangci-lint That is th...

First seen: 2026-04-03 05:07

Last seen: 2026-04-03 09:10