From 74a79cd369ae6e9c4e3ccd74d8c82f670bdae70c Mon Sep 17 00:00:00 2001 From: Kyle Isom Date: Fri, 27 Mar 2026 01:49:58 -0700 Subject: [PATCH] Rework Makefile with install/link/update targets and auto-generation Add gen-update-targets.sh to parse flake.nix and generate grouped update targets (update-kyle, update-mc). Makefile now has install (copy) and link (symlink) targets for rebuild-nixos. Also fix mc flake input URLs to use /mc/ org path. Co-Authored-By: Claude Opus 4.6 (1M context) --- .gitignore | 1 + Makefile | 18 +++++++++----- flake.lock | 46 ++++++++++++++++++------------------ flake.nix | 8 +++---- script/gen-update-targets.sh | 35 +++++++++++++++++++++++++++ 5 files changed, 75 insertions(+), 33 deletions(-) create mode 100755 script/gen-update-targets.sh diff --git a/.gitignore b/.gitignore index e96579f..8f26200 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,3 @@ /result /*-linux.tar.gz +/update-targets.mk diff --git a/Makefile b/Makefile index abb1407..22ed670 100644 --- a/Makefile +++ b/Makefile @@ -1,12 +1,18 @@ BIN_DIR := ${HOME}/.local/bin -SCRIPTS := $(BIN_DIR)/rebuild-nixos -.PHONY: all -all: $(SCRIPTS) +.PHONY: install link update-targets + +install: $(BIN_DIR) + cp script/rebuild-nixos $(BIN_DIR)/ + chmod +x $(BIN_DIR)/rebuild-nixos + +link: $(BIN_DIR) + ln -sf $(CURDIR)/script/rebuild-nixos $(BIN_DIR)/ $(BIN_DIR): mkdir -p $(BIN_DIR) -$(BIN_DIR)/rebuild-nixos: script/rebuild-nixos - cp script/rebuild-nixos $(BIN_DIR)/ - chmod +x $(BIN_DIR)/rebuild-nixos +update-targets.mk: flake.nix script/gen-update-targets.sh + script/gen-update-targets.sh > $@ + +-include update-targets.mk diff --git a/flake.lock b/flake.lock index e4a9840..6974524 100644 --- a/flake.lock +++ b/flake.lock @@ -164,17 +164,17 @@ ] }, "locked": { - "lastModified": 1774588158, - "narHash": "sha256-CM0CyFJ/XtxZWDKtBSgf6thY4/NZR72y8Muy4SD9oAk=", + "lastModified": 1774593162, + "narHash": "sha256-jYcIAwdULM2O06rNerW3PGp+cOQKlvk2DjmgnmDxzP8=", "ref": "refs/heads/master", - "rev": "dc1816b159cc5095b8ddd7c3f942626243c0878b", - "revCount": 27, + "rev": "a45ed03432096f04b0fb6fd410e76a61223f4228", + "revCount": 28, "type": "git", - "url": "https://git@git.wntrmute.dev/kyle/mc-proxy" + "url": "https://git@git.wntrmute.dev/mc/mc-proxy" }, "original": { "type": "git", - "url": "https://git@git.wntrmute.dev/kyle/mc-proxy" + "url": "https://git@git.wntrmute.dev/mc/mc-proxy" } }, "mcdeploy": { @@ -190,11 +190,11 @@ "rev": "9c016e54ecbc3546b189af935f27ca0ad461c14f", "revCount": 4, "type": "git", - "url": "https://git@git.wntrmute.dev/kyle/mcdeploy" + "url": "https://git@git.wntrmute.dev/mc/mcdeploy" }, "original": { "type": "git", - "url": "https://git@git.wntrmute.dev/kyle/mcdeploy" + "url": "https://git@git.wntrmute.dev/mc/mcdeploy" } }, "mcias": { @@ -208,11 +208,11 @@ "rev": "9b521f3d999e8950c2268c2240c490f8509db60f", "revCount": 95, "type": "git", - "url": "https://git@git.wntrmute.dev/kyle/mcias.git" + "url": "https://git@git.wntrmute.dev/mc/mcias.git" }, "original": { "type": "git", - "url": "https://git@git.wntrmute.dev/kyle/mcias.git" + "url": "https://git@git.wntrmute.dev/mc/mcias.git" } }, "mcp": { @@ -222,11 +222,11 @@ ] }, "locked": { - "lastModified": 1774590396, - "narHash": "sha256-FyQNU//OHqjsU7wqJt5iosxwjbQafpmTORNyq7k+t+I=", + "lastModified": 1774595952, + "narHash": "sha256-AlivqmqpRuCav0Eu7sEpGDg0pxMeC7rNVewxelHSKZI=", "ref": "refs/heads/master", - "rev": "e18a3647bfbc1a8a452133f8617bec6105776485", - "revCount": 22, + "rev": "503c52dc269ca834b8b38d1a242ed48971ee17cb", + "revCount": 24, "type": "git", "url": "https://git@git.wntrmute.dev/mc/mcp" }, @@ -242,17 +242,17 @@ ] }, "locked": { - "lastModified": 1774588281, - "narHash": "sha256-OAncdSzGgH7zcRaBwBSQMc8ofVMNrNlsnMwMounARa4=", + "lastModified": 1774593062, + "narHash": "sha256-Mwt4+JkGUyFiwjnLMJGrAA/n9950c3X/waV3DiUB3d4=", "ref": "refs/heads/master", - "rev": "3d36c58d0d672745f34301515ca568466bfb37a6", - "revCount": 24, + "rev": "acc4851549a01642952314e03e4d8d91002f8824", + "revCount": 26, "type": "git", - "url": "https://git@git.wntrmute.dev/kyle/mcr" + "url": "https://git@git.wntrmute.dev/mc/mcr" }, "original": { "type": "git", - "url": "https://git@git.wntrmute.dev/kyle/mcr" + "url": "https://git@git.wntrmute.dev/mc/mcr" } }, "nix-index-database": { @@ -365,11 +365,11 @@ ] }, "locked": { - "lastModified": 1774551446, - "narHash": "sha256-dnX6zMTp4jqbcjlD5qenBYftE/OvHpqKugGLLKj1/bg=", + "lastModified": 1774596342, + "narHash": "sha256-FlUcJydnZmj0l7a08z+viSQEwtvnNFggJqlECMHfUBY=", "owner": "kisom", "repo": "sgard", - "rev": "b9b9082008424b7610ef6d7cf2bbcb47d1ea697d", + "rev": "de5759ac77a2aadc43d48e52e3f53551b3353659", "type": "github" }, "original": { diff --git a/flake.nix b/flake.nix index 1487de6..492580d 100644 --- a/flake.nix +++ b/flake.nix @@ -32,15 +32,15 @@ cert.url = "github:kisom/cert"; cert.inputs.nixpkgs.follows = "nixpkgs"; - mcias.url = "git+https://git@git.wntrmute.dev/kyle/mcias.git"; + mcias.url = "git+https://git@git.wntrmute.dev/mc/mcias.git"; - mcr.url = "git+https://git@git.wntrmute.dev/kyle/mcr"; + mcr.url = "git+https://git@git.wntrmute.dev/mc/mcr"; mcr.inputs.nixpkgs.follows = "nixpkgs"; - mc-proxy.url = "git+https://git@git.wntrmute.dev/kyle/mc-proxy"; + mc-proxy.url = "git+https://git@git.wntrmute.dev/mc/mc-proxy"; mc-proxy.inputs.nixpkgs.follows = "nixpkgs"; - mcdeploy.url = "git+https://git@git.wntrmute.dev/kyle/mcdeploy"; + mcdeploy.url = "git+https://git@git.wntrmute.dev/mc/mcdeploy"; mcdeploy.inputs.nixpkgs.follows = "nixpkgs"; mcp.url = "git+https://git@git.wntrmute.dev/mc/mcp"; diff --git a/script/gen-update-targets.sh b/script/gen-update-targets.sh new file mode 100755 index 0000000..1eda799 --- /dev/null +++ b/script/gen-update-targets.sh @@ -0,0 +1,35 @@ +#!/usr/bin/env bash +set -euo pipefail + +cd "$(dirname "$0")/.." + +declare -A groups + +while IFS= read -r line; do + # skip comments + [[ $line =~ ^[[:space:]]*# ]] && continue + + if [[ $line =~ ^[[:space:]]*([a-zA-Z0-9_-]+)\.url[[:space:]]*=[[:space:]]*\"(.+)\"\; ]]; then + name="${BASH_REMATCH[1]}" + url="${BASH_REMATCH[2]}" + + if [[ $url =~ wntrmute\.dev/kyle/ ]] || [[ $url =~ github:kisom/ ]]; then + groups[kyle]+="${groups[kyle]:+ }$name" + elif [[ $url =~ wntrmute\.dev/mc/ ]]; then + groups[mc]+="${groups[mc]:+ }$name" + fi + fi +done < flake.nix + +phony="" +targets="" + +for group in $(printf '%s\n' "${!groups[@]}" | sort); do + inputs="${groups[$group]}" + if [[ -n "$inputs" ]]; then + phony+=" update-$group" + targets+="update-${group}:"$'\n\t'"nix flake update ${inputs}"$'\n\n' + fi +done + +printf '.PHONY:%s\n\n%s' "$phony" "$targets"