system-manager-wakasu
1# Makefile for home
2HOSTS = $(shell nix flake show --json --all-systems 2>/dev/null | yq '.nixosConfigurations.[] | key')
3HOSTS_BUILD = $(addprefix host/, $(addsuffix /build,$(HOSTS)))
4
5.PHONY: all
6all: dry-build
7
8# Host operations
9.PHONY: hosts
10hosts: ${HOSTS_BUILD}
11 echo ${HOSTS_BUILD} ${HOSTS}
12
13host/%/build: FORCE
14 nix build .#nixosConfigurations.$*.config.system.build.toplevel --no-link
15
16host/%/boot: FORCE
17 nixos-rebuild --target-host root@$*.sbr.pm --flake .#$* boot
18
19host/%/switch: FORCE
20 nixos-rebuild --target-host root@$*.sbr.pm --flake .#$* switch
21
22# Host-specific overrides (non-standard DNS/network)
23.PHONY: host/nagoya/boot
24host/nagoya/boot:
25 nixos-rebuild --target-host root@192.168.1.80 --flake .#nagoya boot
26
27.PHONY: host/kobe/boot
28host/kobe/boot:
29 nixos-rebuild --target-host root@192.168.1.77 --flake .#kobe boot
30
31.PHONY: host/aix/boot
32host/aix/boot:
33 nixos-rebuild --target-host root@10.100.0.89 --flake .#aix boot
34
35.PHONY: host/kerkouane/boot
36host/kerkouane/boot:
37 nixos-rebuild --target-host root@kerkouane.vpn --flake .#kerkouane boot
38
39.PHONY: host/kerkouane/switch
40host/kerkouane/switch:
41 nixos-rebuild --target-host root@kerkouane.vpn --flake .#kerkouane switch
42
43# Local system operations
44.PHONY: boot
45boot:
46 sudo nixos-rebuild --flake .# boot
47
48.PHONY: switch
49switch:
50 sudo nixos-rebuild --flake .# switch
51
52.PHONY: dry-build
53dry-build:
54 nixos-rebuild --flake .# dry-build
55
56.PHONY: build
57build:
58 nixos-rebuild --flake .# build
59
60# Development
61.PHONY: pre-commit
62pre-commit: fmt
63
64.PHONY: fmt
65fmt:
66 nixfmt-plus
67
68# Dotfiles
69.PHONY: dots
70dots:
71 @$(MAKE) -C dots
72
73# Keyboards
74.PHONY: keyboards keyboards/moonlander/build keyboards/moonlander/flash keyboards/moonlander/update keyboards/moonlander/clean
75.PHONY: keyboards/eyelash_corne/build keyboards/eyelash_corne/flash
76.PHONY: keyboards/draw keyboards/moonlander/draw keyboards/eyelash_corne/draw
77
78keyboards/moonlander/build:
79 @$(MAKE) -C keyboards moonlander/build
80
81keyboards/moonlander/flash:
82 @$(MAKE) -C keyboards moonlander/flash
83
84keyboards/moonlander/update:
85 @$(MAKE) -C keyboards moonlander/update
86
87keyboards/moonlander/clean:
88 @$(MAKE) -C keyboards moonlander/clean
89
90keyboards/eyelash_corne/build:
91 @$(MAKE) -C keyboards eyelash_corne/build
92
93keyboards/eyelash_corne/flash:
94 @$(MAKE) -C keyboards eyelash_corne/flash
95
96keyboards/draw:
97 @$(MAKE) -C keyboards draw
98
99keyboards/moonlander/draw:
100 @$(MAKE) -C keyboards moonlander/draw
101
102keyboards/eyelash_corne/draw:
103 @$(MAKE) -C keyboards eyelash_corne/draw
104
105keyboards:
106 @$(MAKE) -C keyboards help
107
108# DNS
109.PHONY: dns-show
110dns-show:
111 @bash tools/show-dns.sh
112
113.PHONY: dns-update-gandi
114dns-update-gandi:
115 @bash tools/update-gandi-dns.sh
116
117.PHONY: dns-update-gandi-dry-run
118dns-update-gandi-dry-run:
119 @bash tools/update-gandi-dns.sh --dry-run
120
121# Media Management (*arr Stack)
122# Default values (can be overridden via environment or make arguments)
123LIDARR_URL ?= https://lidarr.sbr.pm
124LIDARR_API_KEY ?= $(shell passage show home/services/lidarr)
125SONARR_URL ?= https://sonarr.sbr.pm
126SONARR_API_KEY ?= $(shell passage show home/services/sonarr)
127RADARR_URL ?= https://radarr.sbr.pm
128RADARR_API_KEY ?= $(shell passage show home/services/radarr)
129EXTRA_ARGS ?=
130
131.PHONY: lidarr-rename lidarr-retag lidarr-update-paths
132.PHONY: sonarr-rename
133.PHONY: radarr-rename
134
135# Lidarr
136lidarr-rename:
137 @tools/lidarr-rename-albums.py $(LIDARR_URL) $(LIDARR_API_KEY) $(EXTRA_ARGS)
138
139lidarr-retag:
140 @tools/lidarr-retag-albums.py $(LIDARR_URL) $(LIDARR_API_KEY) $(EXTRA_ARGS)
141
142lidarr-update-paths:
143 @tools/lidarr-update-paths.py $(LIDARR_URL) $(LIDARR_API_KEY) $(LIDARR_ROOT_PATH) $(EXTRA_ARGS)
144
145# Sonarr
146sonarr-rename:
147 @tools/sonarr-rename-series.py $(SONARR_URL) $(SONARR_API_KEY) $(EXTRA_ARGS)
148
149# Radarr
150radarr-rename:
151 @tools/radarr-rename-movies.py $(RADARR_URL) $(RADARR_API_KEY) $(EXTRA_ARGS)
152
153# Maintenance
154.PHONY: clean
155clean: clean-system clean-results
156
157.PHONY: clean-system
158clean-system:
159 sudo nix-env --profile /nix/var/nix/profiles/system --delete-generations 15d
160
161.PHONY: clean-results
162clean-results:
163 rm -f result result-*
164
165# Update flake inputs
166.PHONY: update
167update:
168 nix flake update
169
170FORCE: