flake-update-20260201
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
56# Backward compatibility: symlink ~/.claude to ~/.config/claude
57~/.claude : force
58 @echo "🔗 Creating backward compatibility symlink: ~/.claude -> ~/.config/claude"
59 @mkdir -p ~/.config
60 @ln -snf ~/.config/claude ~/.claude
61
62# Generate ntfy client.yml from template with passage secrets injected
63~/.config/ntfy/client.yml : $(dotfiles)/.config/ntfy/client.yml.in $(dotfiles)/.config/ntfy/ntfy-update-config force
64 @echo "⚙️ Generating $$@ from template with passage secrets"
65 @$(dotfiles)/.config/ntfy/ntfy-update-config
66
67# Generate aichat config.yaml from template with dynamic model fetching
68~/.config/aichat/config.yaml : $(dotfiles)/.config/aichat/config.yaml.in $(dotfiles)/.config/aichat/genconf.py force
69 @echo "⚙️ Generating ~/.config/aichat/config.yaml with dynamic models and passage secrets"
70 @$(dotfiles)/.config/aichat/genconf.py > ~/.config/aichat/config.yaml 2>/dev/null
71
72all : $(all)
73 @echo "✅ All dotfiles installed!"
74
75.PHONY: all $(all)
76.DEFAULT_GOAL := all
77