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