packaging/iso: uninstall safety, fail-closed AUR updates, no sshd on live ISO
- tanin-greet.install: post_remove restores the previous greetd config — removing the package no longer leaves greetd pointing at a dead binary - aur-autoupdate: skip packages when the AUR RPC is unreachable instead of building blind (fail closed) - build-tanin-repo: per-package makepkg logs instead of >/dev/null - live ISO: drop sshd.service enablement (root has an empty password on the live medium); encoded in bootstrap-profile.sh so it survives re-bootstrap - gtklock config: de-personalize hardcoded /home/karim path, mark as not-yet-packaged reference - tanin-desktop PKGBUILD: correct stale AUR-vs-extra comments (gtklock, awww, cliphist are in extra), document the eww-git provides=eww contract - docs/distribution.md: mark SigLevel TrustAll as temporary/insecure, add repo-signing TODO (repo-add -s, SigLevel Required), tick done roadmap items - tanin-calendar + niri-config.kdl: pending session work Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
@@ -67,7 +67,10 @@ should_build() {
|
||||
local p="$1"
|
||||
[[ "$p" == *-git ]] && return 0
|
||||
local rpc; rpc="$(aur_version "$p")"
|
||||
[ -z "$rpc" ] && return 0 # RPC down → build to be safe
|
||||
if [ -z "$rpc" ]; then # RPC unreachable → fail closed
|
||||
log "WARNING: AUR RPC unreachable for $p — skipping (won't build blind)"
|
||||
return 1
|
||||
fi
|
||||
local last; last="$(cat "$CACHE/$p.ver" 2>/dev/null || echo)"
|
||||
[ "$rpc" != "$last" ]
|
||||
}
|
||||
|
||||
@@ -13,7 +13,8 @@ set -uo pipefail
|
||||
HERE="$(cd "$(dirname "$0")" && pwd)"
|
||||
OUT="${TANIN_REPO_DIR:-$HOME/projects/tanin-repo}"
|
||||
DB="$OUT/tanin.db.tar.zst"
|
||||
mkdir -p "$OUT"
|
||||
LOGDIR="$OUT/logs"
|
||||
mkdir -p "$OUT" "$LOGDIR"
|
||||
|
||||
# tanin-icons builds from the installed Adwaita theme -> needs librsvg + python.
|
||||
OWN_SIMPLE=(tanin-greet tanin-libadwaita tanin-setup tanin-eww tanin-icons tanin-desktop)
|
||||
@@ -21,12 +22,14 @@ OWN_BUILD=(taninux)
|
||||
AUR_REBUILD=(eww-git tiramisu-git waypaper calamares librewolf-bin
|
||||
arch-update timeshift-autosnap xdg-terminal-exec paru)
|
||||
|
||||
# makepkg output goes to a per-package log (console stays quiet); inspect the log
|
||||
# for warnings even on success. Log path is echoed so it's easy to find.
|
||||
build() {
|
||||
local p="$1"
|
||||
echo "==> building $p"
|
||||
( cd "$HERE/$p" && makepkg -d -f --noconfirm >/dev/null 2>&1 ) \
|
||||
local p="$1" log="$LOGDIR/$p.log"
|
||||
echo "==> building $p (log: $log)"
|
||||
( cd "$HERE/$p" && makepkg -d -f --noconfirm ) >"$log" 2>&1 \
|
||||
&& cp "$HERE/$p/"*.pkg.tar.zst "$OUT/" 2>/dev/null \
|
||||
&& echo " ok" || { echo " FAILED ($p)"; return 1; }
|
||||
&& echo " ok" || { echo " FAILED ($p) — see $log"; return 1; }
|
||||
}
|
||||
|
||||
for p in "${OWN_SIMPLE[@]}"; do build "$p"; done
|
||||
@@ -39,6 +42,7 @@ for p in "${OWN_BUILD[@]}"; do
|
||||
fi
|
||||
done
|
||||
|
||||
echo "** build logs (incl. makepkg warnings) in: $LOGDIR"
|
||||
echo "** AUR rebuilds TODO (not in official repos): ${AUR_REBUILD[*]}"
|
||||
echo " build each with paru/makepkg and copy the .pkg.tar.zst into $OUT, then re-run."
|
||||
|
||||
|
||||
@@ -1,8 +1,16 @@
|
||||
# gtklock — TANINUX lockscreen config (Fuji greeter look).
|
||||
# glib keyfile format. gtklock is launched as: gtklock -d -c <this file>
|
||||
#
|
||||
# NOTE: this file is NOT yet wired into any package — it is a reference/template.
|
||||
# Nothing installs or reads it at the moment (see the tanin-desktop deps: gtklock
|
||||
# is pulled from extra, but no TANINUX package ships this config).
|
||||
[main]
|
||||
# stylesheet + wallpaper-as-css-background live next to this file
|
||||
style=/home/karim/.config/gtklock/gtklock.css
|
||||
# stylesheet + wallpaper-as-css-background live next to this file.
|
||||
# gtklock's keyfile does NOT expand ~ or $HOME reliably, so `style=` needs an
|
||||
# absolute path. Point it at the actual user's gtklock.css, e.g.
|
||||
# style=/home/<user>/.config/gtklock/gtklock.css
|
||||
# (left commented on purpose — a hardcoded /home/<name> would only work for one user).
|
||||
#style=/home/<user>/.config/gtklock/gtklock.css
|
||||
# modules (system .so, suffix optional): user avatar+name, and power buttons
|
||||
modules=userinfo;powerbar
|
||||
# built-in clock — time over date, like the greeter's centre clock
|
||||
|
||||
@@ -1,20 +1,22 @@
|
||||
# Maintainer: Karim <karim@gabrielevarano.ch>
|
||||
#
|
||||
# tanin-calendar — TANINUX calendar app (GTK4 / libadwaita). A detailed agenda
|
||||
# over your calendars, read straight from Evolution Data Server (the same
|
||||
# backend GNOME Online Accounts feeds). Inherits the Fuji monochrome look from
|
||||
# tanin-libadwaita. German UI.
|
||||
# tanin-calendar — TANINUX calendar app (native GTK4, libadwaita-free). A
|
||||
# sidebar + month/week/day calendar over your calendars, read straight from
|
||||
# Evolution Data Server (the same backend GNOME Online Accounts feeds). Uses
|
||||
# the TANINUX design language (Iosevka chrome, Fuji accent) and tracks the live
|
||||
# accent via the global named colours. English UI, translatable via gettext.
|
||||
pkgname=tanin-calendar
|
||||
pkgver=0.1.0
|
||||
pkgrel=1
|
||||
pkgdesc="TANINUX calendar — GTK4/libadwaita agenda over Evolution Data Server (GNOME Online Accounts)"
|
||||
pkgdesc="TANINUX calendar — native GTK4 agenda over Evolution Data Server (GNOME Online Accounts)"
|
||||
arch=('any')
|
||||
url="https://taninux.kgva.ch"
|
||||
license=('GPL-3.0-or-later')
|
||||
depends=('python' 'python-gobject' 'gtk4' 'libadwaita'
|
||||
'evolution-data-server' 'adwaita-icon-theme')
|
||||
depends=('python' 'python-gobject' 'gtk4'
|
||||
'evolution-data-server' 'adwaita-icon-theme'
|
||||
'ttc-iosevka-aile')
|
||||
optdepends=('gnome-online-accounts: add Google/Nextcloud/CalDAV calendars'
|
||||
'tanin-libadwaita: Fuji monochrome theming for the app')
|
||||
'taninux: live Fuji accent + light/dark theming for the app')
|
||||
|
||||
package() {
|
||||
install -Dm755 "$startdir/tanin-calendar" \
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
Type=Application
|
||||
Name=Calendar
|
||||
Name[de]=Kalender
|
||||
Comment=Termine aus deinen Kalendern (Evolution Data Server)
|
||||
Comment=Events from your calendars (Evolution Data Server)
|
||||
Comment[de]=Termine aus deinen Kalendern (Evolution Data Server)
|
||||
Exec=tanin-calendar
|
||||
Icon=x-office-calendar
|
||||
|
||||
Regular → Executable
+824
-704
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -3,8 +3,9 @@
|
||||
# Metapackage: pulls the complete TANINUX (camel) desktop — niri + eww, managed
|
||||
# by the TANINUX apps. Own packages come from the [tanin] repo, everything else
|
||||
# from the official Arch repos. AUR-only runtime deps (eww, tiramisu, waypaper,
|
||||
# cliphist, librewolf-bin, arch-update, timeshift-autosnap, xdg-terminal-exec,
|
||||
# paru) are rebuilt into [tanin] so this never hard-depends on the AUR.
|
||||
# librewolf-bin, arch-update, timeshift-autosnap, xdg-terminal-exec, paru) are
|
||||
# rebuilt into [tanin] so this never hard-depends on the AUR. (cliphist, awww,
|
||||
# gtklock + its modules are in official extra -> pulled straight from Arch.)
|
||||
# Calamares just installs this package at the end.
|
||||
pkgname=tanin-desktop
|
||||
pkgver=0.2.0
|
||||
@@ -40,8 +41,9 @@ depends=(
|
||||
'xdg-desktop-portal-gtk' # Settings/Appearance portal (dark mode!)
|
||||
'xdg-desktop-portal-gnome' # screencast backend recommended for niri
|
||||
|
||||
# --- shell / eww stack (eww, tiramisu, waypaper, cliphist via [tanin]) ---
|
||||
'eww' # bar/dock/panels/spotlight
|
||||
# --- shell / eww stack (eww/tiramisu/waypaper via [tanin]; cliphist from extra) ---
|
||||
'eww' # bar/dock/panels/spotlight — [tanin] ships eww-git,
|
||||
# which must `provides=(eww)` to satisfy this dep
|
||||
'tiramisu-git' # headless notification daemon -> eww UI
|
||||
'waypaper' # wallpaper (niri autostart: waypaper --restore)
|
||||
'awww' # 2nd wallpaper surface -> blurred niri Overview backdrop (place-within-backdrop)
|
||||
|
||||
@@ -14,11 +14,13 @@ input {
|
||||
mouse {}
|
||||
}
|
||||
|
||||
// Outputs — scale 1.25 like the Hyprland setup. Mode omitted on purpose so niri
|
||||
// picks the highest refresh rate automatically (144 Hz on DP-3). Positions are
|
||||
// left to niri's auto-placement.
|
||||
// Outputs — scale 1.25 like the Hyprland setup. Mode is pinned explicitly:
|
||||
// niri's "preferred" mode on DP-3 is only 60 Hz, so omitting it left the
|
||||
// monitor at 59.951 Hz. We force the full 143.973 Hz panel rate (gaming).
|
||||
// Positions are left to niri's auto-placement.
|
||||
output "DP-3" {
|
||||
scale 1.25
|
||||
mode "2560x1440@143.973"
|
||||
}
|
||||
output "HDMI-A-1" {
|
||||
scale 1.25
|
||||
@@ -92,6 +94,18 @@ window-rule {
|
||||
clip-to-geometry true
|
||||
}
|
||||
|
||||
// ---- Gaming: Spiele direkt im echten Vollbild öffnen ----------------------
|
||||
// Steam/Proton-Titel (app-id "steam_app_<id>") und gamescope gehen sofort
|
||||
// fullscreen auf — ohne Gaps, Rundungen oder geometry-clip (würde sonst die
|
||||
// Render-Surface beschneiden). Manuell jederzeit mit Mod+Shift+F umschaltbar.
|
||||
window-rule {
|
||||
match app-id="^steam_app_"
|
||||
match app-id="^gamescope$"
|
||||
open-fullscreen true
|
||||
geometry-corner-radius 0
|
||||
clip-to-geometry false
|
||||
}
|
||||
|
||||
// ---- geblurrtes Wallpaper im Overview-Backdrop ----------------------------
|
||||
// Zwei Wallpaper-Surfaces:
|
||||
// * swaybg (namespace "wallpaper") -> scharf auf dem Desktop (waypaper)
|
||||
|
||||
@@ -22,3 +22,21 @@ EOF
|
||||
post_upgrade() {
|
||||
_activate
|
||||
}
|
||||
|
||||
# Package files (incl. the greeter binary greetd is pointed at) are gone by the
|
||||
# time post_remove runs, so restore the pre-tanin greetd config we backed up in
|
||||
# _activate — otherwise greetd keeps launching a deleted greeter and login breaks.
|
||||
post_remove() {
|
||||
local dst=/etc/greetd/config.toml
|
||||
if [ -e "$dst.tanin-bak" ]; then
|
||||
mv -f "$dst.tanin-bak" "$dst"
|
||||
echo ">> tanin-greet: restored the previous greetd config from $dst.tanin-bak" >&2
|
||||
else
|
||||
cat >&2 <<'EOF'
|
||||
!! tanin-greet: WARNING — /etc/greetd/config.toml still points at the TANINUX
|
||||
!! greeter, which was just REMOVED, and no backup (.tanin-bak) exists to restore.
|
||||
!! greetd will fail to start (no login) until you edit /etc/greetd/config.toml
|
||||
!! to reference an installed greeter (e.g. agreety) or disable greetd.
|
||||
EOF
|
||||
fi
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user