kitowall 7.7.0 → 8.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cli.js +13 -1
- package/dist/core/config.js +6 -0
- package/dist/core/configValidator.js +6 -0
- package/dist/core/controller.js +2 -2
- package/dist/core/doctor.js +22 -15
- package/dist/core/init.js +31 -25
- package/dist/core/outputs.js +38 -0
- package/dist/core/setup.js +102 -11
- package/dist/core/wallpaperBackend.js +58 -0
- package/dist/core/workshop.js +1 -1
- package/dist/managers/awww.js +55 -0
- package/dist/managers/types.js +2 -0
- package/package.json +4 -2
- package/scripts/bootstrap-host.sh +552 -0
- package/scripts/bootstrap-system.sh +187 -0
|
@@ -0,0 +1,187 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
set -euo pipefail
|
|
3
|
+
|
|
4
|
+
# Root-only helper for installing host system packages.
|
|
5
|
+
# Intended to be invoked via pkexec from Kitowall.
|
|
6
|
+
|
|
7
|
+
need_cmd() {
|
|
8
|
+
command -v "$1" >/dev/null 2>&1
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
require_root() {
|
|
12
|
+
if [[ "${EUID:-$(id -u)}" -ne 0 ]]; then
|
|
13
|
+
echo "[bootstrap-system] this helper must run as root" >&2
|
|
14
|
+
exit 1
|
|
15
|
+
fi
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
wait_pacman_lock() {
|
|
19
|
+
local lock_file="/var/lib/pacman/db.lck"
|
|
20
|
+
local tries=0
|
|
21
|
+
local max_tries=40
|
|
22
|
+
|
|
23
|
+
while [[ -e "$lock_file" ]]; do
|
|
24
|
+
if pgrep -x pacman >/dev/null 2>&1 || \
|
|
25
|
+
pgrep -x yay >/dev/null 2>&1 || \
|
|
26
|
+
pgrep -x paru >/dev/null 2>&1 || \
|
|
27
|
+
pgrep -x makepkg >/dev/null 2>&1; then
|
|
28
|
+
tries=$((tries + 1))
|
|
29
|
+
if ((tries > max_tries)); then
|
|
30
|
+
echo "[bootstrap-system] pacman lock busy for too long: $lock_file" >&2
|
|
31
|
+
return 1
|
|
32
|
+
fi
|
|
33
|
+
echo "[bootstrap-system] waiting for pacman lock (${tries}/${max_tries})..."
|
|
34
|
+
sleep 3
|
|
35
|
+
continue
|
|
36
|
+
fi
|
|
37
|
+
|
|
38
|
+
echo "[bootstrap-system] removing stale pacman lock: $lock_file"
|
|
39
|
+
rm -f "$lock_file"
|
|
40
|
+
break
|
|
41
|
+
done
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
install_arch_deps() {
|
|
45
|
+
local repo_pkgs=(
|
|
46
|
+
nodejs npm
|
|
47
|
+
hyprland
|
|
48
|
+
awww
|
|
49
|
+
cava
|
|
50
|
+
pkgconf
|
|
51
|
+
gtk4
|
|
52
|
+
gtk4-layer-shell
|
|
53
|
+
jq
|
|
54
|
+
git
|
|
55
|
+
base-devel
|
|
56
|
+
)
|
|
57
|
+
|
|
58
|
+
if need_cmd rustup; then
|
|
59
|
+
repo_pkgs+=(rustup)
|
|
60
|
+
elif need_cmd rustc && need_cmd cargo; then
|
|
61
|
+
:
|
|
62
|
+
else
|
|
63
|
+
repo_pkgs+=(rustup)
|
|
64
|
+
fi
|
|
65
|
+
|
|
66
|
+
echo "[bootstrap-system] installing Arch packages: ${repo_pkgs[*]}"
|
|
67
|
+
wait_pacman_lock
|
|
68
|
+
pacman -S --needed --noconfirm "${repo_pkgs[@]}"
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
arch_packages_for_ids() {
|
|
72
|
+
local id
|
|
73
|
+
local pkgs=()
|
|
74
|
+
for id in "$@"; do
|
|
75
|
+
case "$id" in
|
|
76
|
+
nodejs) pkgs+=(nodejs) ;;
|
|
77
|
+
npm) pkgs+=(npm) ;;
|
|
78
|
+
hyprctl) pkgs+=(hyprland) ;;
|
|
79
|
+
awww|awww-daemon|swww|swww-daemon) pkgs+=(awww) ;;
|
|
80
|
+
cava) pkgs+=(cava) ;;
|
|
81
|
+
pkgconf) pkgs+=(pkgconf) ;;
|
|
82
|
+
gtk4) pkgs+=(gtk4) ;;
|
|
83
|
+
gtk4-layer-shell) pkgs+=(gtk4-layer-shell) ;;
|
|
84
|
+
jq) pkgs+=(jq) ;;
|
|
85
|
+
git) pkgs+=(git) ;;
|
|
86
|
+
base-devel) pkgs+=(base-devel) ;;
|
|
87
|
+
rustup|cargo|rustc) pkgs+=(rustup) ;;
|
|
88
|
+
esac
|
|
89
|
+
done
|
|
90
|
+
printf '%s\n' "${pkgs[@]}" | awk 'NF && !seen[$0]++'
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
install_arch_selected() {
|
|
94
|
+
local requested=("$@")
|
|
95
|
+
local repo_pkgs=()
|
|
96
|
+
mapfile -t repo_pkgs < <(arch_packages_for_ids "${requested[@]}")
|
|
97
|
+
if ((${#repo_pkgs[@]} == 0)); then
|
|
98
|
+
echo "[bootstrap-system] no supported Arch packages mapped from: ${requested[*]}" >&2
|
|
99
|
+
return 1
|
|
100
|
+
fi
|
|
101
|
+
echo "[bootstrap-system] installing selected Arch packages: ${repo_pkgs[*]}"
|
|
102
|
+
wait_pacman_lock
|
|
103
|
+
pacman -S --needed --noconfirm "${repo_pkgs[@]}"
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
install_ubuntu_deps() {
|
|
107
|
+
local pkgs=(
|
|
108
|
+
nodejs npm
|
|
109
|
+
rustc cargo
|
|
110
|
+
pkg-config
|
|
111
|
+
libgtk-4-dev
|
|
112
|
+
jq curl git
|
|
113
|
+
cava
|
|
114
|
+
)
|
|
115
|
+
echo "[bootstrap-system] installing Debian/Ubuntu packages: ${pkgs[*]}"
|
|
116
|
+
apt-get update
|
|
117
|
+
apt-get install -y "${pkgs[@]}"
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
ubuntu_packages_for_ids() {
|
|
121
|
+
local id
|
|
122
|
+
local pkgs=()
|
|
123
|
+
for id in "$@"; do
|
|
124
|
+
case "$id" in
|
|
125
|
+
nodejs) pkgs+=(nodejs) ;;
|
|
126
|
+
npm) pkgs+=(npm) ;;
|
|
127
|
+
cava) pkgs+=(cava) ;;
|
|
128
|
+
jq) pkgs+=(jq) ;;
|
|
129
|
+
git) pkgs+=(git) ;;
|
|
130
|
+
rustup|cargo|rustc) pkgs+=(rustc cargo) ;;
|
|
131
|
+
pkgconf) pkgs+=(pkg-config) ;;
|
|
132
|
+
gtk4) pkgs+=(libgtk-4-dev) ;;
|
|
133
|
+
esac
|
|
134
|
+
done
|
|
135
|
+
printf '%s\n' "${pkgs[@]}" | awk 'NF && !seen[$0]++'
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
install_ubuntu_selected() {
|
|
139
|
+
local requested=("$@")
|
|
140
|
+
local pkgs=()
|
|
141
|
+
mapfile -t pkgs < <(ubuntu_packages_for_ids "${requested[@]}")
|
|
142
|
+
if ((${#pkgs[@]} == 0)); then
|
|
143
|
+
echo "[bootstrap-system] no supported Debian/Ubuntu packages mapped from: ${requested[*]}" >&2
|
|
144
|
+
return 1
|
|
145
|
+
fi
|
|
146
|
+
echo "[bootstrap-system] installing selected Debian/Ubuntu packages: ${pkgs[*]}"
|
|
147
|
+
apt-get update
|
|
148
|
+
apt-get install -y "${pkgs[@]}"
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
main() {
|
|
152
|
+
require_root
|
|
153
|
+
|
|
154
|
+
if (($# > 0)); then
|
|
155
|
+
if need_cmd pacman; then
|
|
156
|
+
install_arch_selected "$@"
|
|
157
|
+
echo "[ok] selected system dependencies installed"
|
|
158
|
+
exit 0
|
|
159
|
+
fi
|
|
160
|
+
|
|
161
|
+
if need_cmd apt-get; then
|
|
162
|
+
install_ubuntu_selected "$@"
|
|
163
|
+
echo "[ok] selected system dependencies installed"
|
|
164
|
+
exit 0
|
|
165
|
+
fi
|
|
166
|
+
|
|
167
|
+
echo "[bootstrap-system] unsupported distro package manager for selected install: $*" >&2
|
|
168
|
+
exit 1
|
|
169
|
+
fi
|
|
170
|
+
|
|
171
|
+
if need_cmd pacman; then
|
|
172
|
+
install_arch_deps
|
|
173
|
+
echo "[ok] system dependencies installed"
|
|
174
|
+
exit 0
|
|
175
|
+
fi
|
|
176
|
+
|
|
177
|
+
if need_cmd apt-get; then
|
|
178
|
+
install_ubuntu_deps
|
|
179
|
+
echo "[ok] system dependencies installed"
|
|
180
|
+
exit 0
|
|
181
|
+
fi
|
|
182
|
+
|
|
183
|
+
echo "[bootstrap-system] unsupported distro package manager. Install manually: nodejs npm rust cargo pkg-config gtk4 gtk4-layer-shell awww hyprland cava" >&2
|
|
184
|
+
exit 1
|
|
185
|
+
}
|
|
186
|
+
|
|
187
|
+
main "$@"
|