Skip to content

Commit 10e5a86

Browse files
dataO1claude
andcommitted
fix: bundle theme.yaml with embedded releases via activation script
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
1 parent 4bda5a0 commit 10e5a86

3 files changed

Lines changed: 79 additions & 8 deletions

File tree

CHANGELOG.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -91,6 +91,9 @@ All notable changes to Mesh are documented in this file.
9191
mingw GCC headers. Fixed by defining `__GCC_MAX_ALIGN_T` to suppress the
9292
duplicate typedef.
9393

94+
- **Embedded theme not updating on OTA** — Theme file now force-deployed on every
95+
activation via NixOS activation script instead of tmpfiles copy-if-not-exists.
96+
9497
- **History DB schema on older USB databases** — Schema init now unconditionally
9598
creates all relations, treating "already exists" as success instead of pre-checking.
9699

config/theme.yaml

Lines changed: 69 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,70 @@
1-
# Mesh Player Theme Configuration
2-
# Stem colors for waveform display (legacy format — runtime themes in ~/Music/mesh-collection/theme.yaml)
1+
# Mesh Theme Configuration
2+
# Each theme has UI colors (buttons, backgrounds, text) and stem waveform colors.
3+
# Add your own themes or modify existing ones.
34

4-
stems:
5-
vocals: "#B8BB26" # Gruvbox green
6-
drums: "#504090" # Deep purple
7-
bass: "#D06040" # Warm orange
8-
other: "#6070A0" # Steel blue
5+
themes:
6+
- name: Mesh
7+
ui:
8+
background: '#29262a'
9+
text: '#EBDBB2'
10+
accent: '#504090'
11+
success: '#205030'
12+
warning: '#D06040'
13+
danger: '#602010'
14+
stems:
15+
vocals: '#B8BB26'
16+
drums: '#504090'
17+
bass: '#D06040'
18+
other: '#6070a0'
19+
- name: Catppuccin
20+
ui:
21+
background: '#1E1E2E'
22+
text: '#CDD6F4'
23+
accent: '#CBA6F7'
24+
success: '#A6E3A1'
25+
warning: '#F9E2AF'
26+
danger: '#F38BA8'
27+
stems:
28+
vocals: '#A6E3A1'
29+
drums: '#89B4FA'
30+
bass: '#FAB387'
31+
other: '#CBA6F7'
32+
- name: Rosé Pine
33+
ui:
34+
background: '#232136'
35+
text: '#E0DEF4'
36+
accent: '#C4A7E7'
37+
success: '#9CCFD8'
38+
warning: '#F6C177'
39+
danger: '#EB6F92'
40+
stems:
41+
vocals: '#9CCFD8'
42+
drums: '#EA9A97'
43+
bass: '#F6C177'
44+
other: '#C4A7E7'
45+
- name: Synthwave
46+
ui:
47+
background: '#1A1025'
48+
text: '#EBDBB2'
49+
accent: '#4DB3F2'
50+
success: '#66F299'
51+
warning: '#F2D94D'
52+
danger: '#F266B3'
53+
stems:
54+
vocals: '#66F299'
55+
drums: '#4DB3F2'
56+
bass: '#F266B3'
57+
other: '#F2D94D'
58+
- name: Gruvbox
59+
ui:
60+
background: '#282828'
61+
text: '#EBDBB2'
62+
accent: '#D79921'
63+
success: '#B8BB26'
64+
warning: '#FE8019'
65+
danger: '#CC241D'
66+
stems:
67+
vocals: '#B8BB26'
68+
drums: '#83A598'
69+
bass: '#FE8019'
70+
other: '#D3869B'

nix/embedded/kiosk.nix

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -137,9 +137,15 @@ in
137137
"d /home/mesh/Music/mesh-collection 0755 mesh mesh -"
138138
"C /home/mesh/Music/mesh-collection/midi.yaml 0644 mesh mesh - ${../../config/midi.yaml}"
139139
"C /home/mesh/Music/mesh-collection/slicer-presets.yaml 0644 mesh mesh - ${../../config/slicer-presets.yaml}"
140-
"C /home/mesh/Music/mesh-collection/theme.yaml 0644 mesh mesh - ${../../config/theme.yaml}"
141140
];
142141

142+
# Theme file is force-updated on every activation (OTA update) so new
143+
# default themes reach the device. Unlike midi/slicer configs, theme
144+
# definitions are managed upstream and should track the release.
145+
system.activationScripts.meshTheme.text = ''
146+
install -D -m 0644 -o mesh -g mesh ${../../config/theme.yaml} /home/mesh/Music/mesh-collection/theme.yaml
147+
'';
148+
143149
# TTY2 login shell for local debugging (Ctrl+Alt+F2 when cage has -s flag)
144150
systemd.services."getty@tty2".enable = true;
145151
systemd.services."getty@tty2".wantedBy = [ "multi-user.target" ];

0 commit comments

Comments
 (0)