auto-update-daily-20260202
  1makefile := $(abspath $(lastword $(MAKEFILE_LIST)))
  2dotfiles := $(abspath $(dir $(makefile)))
  3
  4~ := $(abspath $(dotfiles))
  5
  6force:
  7
  8define rule.template
  9$(1)/% : $(2)/% force
 10	@echo "📋 Linking $$< → $$@"
 11	@mkdir -p $$(@D)
 12	@ln -snf $$< $$@
 13endef
 14
 15rule.define = $(eval $(call rule.template,$(1),$(2)))
 16
 17$(call rule.define,~,$(~))
 18
 19all += niri
 20niri : ~/.config/niri/config.kdl
 21
 22all += emacs
 23emacs : ~/.config/emacs
 24
 25all += nvim
 26nvim : ~/.config/nvim
 27
 28all += claude-skills
 29claude-skills : ~/.config/claude/skills
 30
 31all += claude-agents claude-settings claude-plugins claude-statusline claude-compat
 32claude-agents : ~/.config/claude/agents
 33claude-settings : ~/.config/claude/settings.json
 34claude-plugins : ~/.config/claude/plugins/session-manager
 35claude-statusline : ~/.config/claude/statusline.sh
 36claude-compat : ~/.claude
 37
 38all += ntfy-config ntfy-scripts
 39ntfy-config : ~/.config/ntfy/client.yml
 40ntfy-scripts : ~/.config/ntfy/handle-notification.sh ~/.config/ntfy/acknowledge-notification.sh ~/.config/ntfy/ntfy-update-config
 41
 42all += xmpp-research-bot
 43xmpp-research-bot : ~/.config/xmpp-research-bot/commands.yaml
 44
 45all += aichat-config aichat-genconf aichat-roles
 46aichat-config : ~/.config/aichat/config.yaml
 47aichat-genconf : ~/.config/aichat/genconf.py
 48aichat-roles : ~/.config/aichat/roles
 49
 50all += lazypr
 51lazypr : ~/.config/lazypr/config.toml
 52
 53all += gh-news
 54gh-news : ~/.config/gh-news/config.toml
 55
 56all += git-template copilot-hooks opencode-plugin pi-agent agent-skills agent-skill-manager-bin
 57git-template : ~/.config/git/template
 58copilot-hooks : ~/.config/copilot-hooks
 59opencode-plugin : ~/.config/opencode/plugin
 60pi-agent : ~/.pi/agent/extensions ~/.pi/agent/AGENTS.md ~/.pi/agent/README.md
 61agent-skills : ~/.config/agent-skills
 62agent-skill-manager-bin : ~/bin/agent-skill-manager
 63
 64# Agent skill manager tool
 65~/bin/agent-skill-manager : $(dotfiles)/.config/agent-skills/agent-skill-manager force
 66	@echo "📋 Linking $(dotfiles)/.config/agent-skills/agent-skill-manager → ~/bin/agent-skill-manager"
 67	@mkdir -p ~/bin
 68	@ln -snf $(dotfiles)/.config/agent-skills/agent-skill-manager ~/bin/agent-skill-manager
 69
 70# Backward compatibility: symlink ~/.claude to ~/.config/claude
 71~/.claude : force
 72	@echo "🔗 Creating backward compatibility symlink: ~/.claude -> ~/.config/claude"
 73	@mkdir -p ~/.config
 74	@ln -snf ~/.config/claude ~/.claude
 75
 76# Pi agent configuration - symlink individual files into pi's runtime directory
 77# Pi manages: ~/.pi/agent/{auth.json,settings.json,sessions/}
 78# We provide: extensions/, AGENTS.md, README.md
 79~/.pi/agent/extensions : force
 80	@echo "📋 Linking $(dotfiles)/pi/agent/extensions -> ~/.pi/agent/extensions"
 81	@mkdir -p ~/.pi/agent
 82	@ln -snf $(dotfiles)/pi/agent/extensions ~/.pi/agent/extensions
 83
 84~/.pi/agent/AGENTS.md : force
 85	@echo "📋 Linking $(dotfiles)/pi/agent/AGENTS.md -> ~/.pi/agent/AGENTS.md"
 86	@mkdir -p ~/.pi/agent
 87	@ln -snf $(dotfiles)/pi/agent/AGENTS.md ~/.pi/agent/AGENTS.md
 88
 89~/.pi/agent/README.md : force
 90	@echo "📋 Linking $(dotfiles)/pi/agent/README.md -> ~/.pi/agent/README.md"
 91	@mkdir -p ~/.pi/agent
 92	@ln -snf $(dotfiles)/pi/agent/README.md ~/.pi/agent/README.md
 93
 94# Generate ntfy client.yml from template with passage secrets injected
 95~/.config/ntfy/client.yml : $(dotfiles)/.config/ntfy/client.yml.in $(dotfiles)/.config/ntfy/ntfy-update-config force
 96	@echo "⚙️  Generating $$@ from template with passage secrets"
 97	@$(dotfiles)/.config/ntfy/ntfy-update-config
 98
 99# Generate aichat config.yaml from template with dynamic model fetching
100~/.config/aichat/config.yaml : $(dotfiles)/.config/aichat/config.yaml.in $(dotfiles)/.config/aichat/genconf.py force
101	@echo "⚙️  Generating ~/.config/aichat/config.yaml with dynamic models and passage secrets"
102	@$(dotfiles)/.config/aichat/genconf.py > ~/.config/aichat/config.yaml 2>/dev/null
103
104all : $(all)
105	@echo "✅ All dotfiles installed!"
106
107.PHONY: all $(all)
108.DEFAULT_GOAL := all
109