-
-
Notifications
You must be signed in to change notification settings - Fork 8
/
Copy pathshell.nix
128 lines (118 loc) · 2.62 KB
/
shell.nix
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
{
inputs,
lib,
mkShellNoCC,
writeShellApplication,
writeTextFile,
catppuccin-catwalk,
catppuccin-whiskers,
fd,
libwebp,
...
}:
let
inherit (lib) mapAttrsToList;
whiskers-palette = writeTextFile {
name = "evergarden-whiskers";
text = builtins.toJSON {
all = inputs.self.toCatppuccinPalette inputs.self.palette;
};
};
generate = writeShellApplication {
name = "generate";
runtimeInputs = [
catppuccin-whiskers
];
text = builtins.concatStringsSep "\n" (
mapAttrsToList
(n: v: ''
whiskers --flavor mocha --color-overrides ${whiskers-palette} --overrides '{ "accent": { "hex": "${v}", "name": "${n}" } }' "$@"
'')
{
inherit (inputs.self.palette)
red
orange
yellow
green
aqua
skye
blue
purple
pink
;
}
);
};
generate-all = writeShellApplication {
name = "generate-all";
runtimeInputs = [
generate
];
text = ''
for item in templates/*.tera; do
>&2 echo "generating $item"
generate "$item"
done
'';
};
generate-new = writeShellApplication {
name = "generate-new";
runtimeInputs = [
generate
];
text = ''
for item in templates/*.tera; do
filename="''${item##*/}"
name="''${filename%.tera}"
if [[ ! -d "extras/''${name}" ]]; then
>&2 echo "generating $item"
generate "$item"
else
>&2 echo "skipping $item"
fi
done
'';
};
convert-screenshots = writeShellApplication {
name = "convert-screenshots";
runtimeInputs = [
fd
libwebp
];
text = ''
for item in $(fd --exact-depth 2 -t file ".png" images/); do
filename="''${item%.png}.webp"
cwebp -q 100 "$item" -o "$filename"
done
'';
};
generate-screenshots = writeShellApplication {
name = "generate-screenshots";
runtimeInputs = [
catppuccin-catwalk
fd
];
text = ''
for item in $(fd --exact-depth 1 -t directory '''''' images/); do
name="''${item##*/}"
out="''${item}preview.webp"
if [[ ! -f "$out" ]]; then
>&2 echo "creating preview for $name -> $out"
catwalk -C "$item" hard.webp medium.webp medium.webp soft.webp --output preview.webp
fi
done
'';
};
in
mkShellNoCC {
packages = [
catppuccin-catwalk
catppuccin-whiskers
generate
generate-new
generate-all
generate-screenshots
convert-screenshots
libwebp
];
}