terra: cosmic portals, jupiter smb mount, tea CLI, launcher/theme polish

- swap gtk portal/apps for cosmic (xdg-desktop-portal-cosmic, cosmic-files,
  cosmic-settings) and drop dolphin/protonplus/bambu-studio (bambu-studio
  moved to flatpak alongside the other comms/gaming flatpaks)
- mount jupiter's samba share at /mnt/jupiter (automount, credentials from
  the same samba_password secret jupiter itself uses)
- add tea (gitea's remote API CLI) for talking to git.mgaction.town from
  terra without SSHing into jupiter
- new dark icon themes (Amy, Azure Glassy, Slot Beauty) vendored from
  gnome-look.org tarballs, packaged since pling download links expire
- rishot: fix Qt5Compat.GraphicalEffects QML import (was missing qt6.qt5compat
  on QML_IMPORT_PATH, so quickshell failed at config-load)
- launcher widgets: stop LauncherConsole/LauncherDock from reserving
  compositor space (ExclusionMode.Ignore, they're overlays not real docks);
  bump LauncherCorner app icon size 28->34
- comms script: launch telegram/discord via flatpak, not native binaries
- nix-ld + boot.binfmt aarch64 emulation (for building/flashing mercury
  from terra)
This commit is contained in:
2026-07-29 21:43:43 +02:00
parent 585aff3652
commit faaf24ddc0
19 changed files with 375 additions and 109 deletions
+43
View File
@@ -0,0 +1,43 @@
{ lib, stdenvNoCC, gtk3 }:
# Amy-Dark-Icons (gnome-look.org/p/2011598), not packaged in nixpkgs.
# gnome-look/pling download links are signed JWTs that expire in ~2 days, so
# fetchurl against one would work today and fail on the next rebuild after
# that window — the tarball is vendored into the repo instead, as verified
# (md5 51bae6972100a36151edd660ba7bf3fa against the gnome-look API's
# reported checksum) at dotfiles/icons/Amy-Dark-Icons.tar.xz.
stdenvNoCC.mkDerivation {
pname = "amy-dark-icons";
version = "unstable-2026-07-12";
src = ../dotfiles/icons/Amy-Dark-Icons.tar.xz;
nativeBuildInputs = [ gtk3 ];
dontBuild = true;
# Upstream ships dozens of dangling symlinks (icons aliased across sizes
# that don't all exist) — same class of minor packaging bug as
# azure-glassy-dark-icons. Harmless: GTK/Qt icon lookup falls through to
# the theme's own Inherits= chain (breeze, hicolor, Adwaita) for those.
dontCheckForBrokenSymlinks = true;
# gtk3's setup hook strips icon-theme.cache from $out by default
# (postFixup); opt back out, matching nixpkgs' papirus-icon-theme.
dontDropIconThemeCache = true;
installPhase = ''
runHook preInstall
mkdir -p "$out/share/icons"
cp -r . "$out/share/icons/Amy-Dark-Icons"
gtk-update-icon-cache --force "$out/share/icons/Amy-Dark-Icons"
runHook postInstall
'';
meta = {
description = "Amy dark icon theme, vendored from gnome-look.org (not packaged in nixpkgs)";
homepage = "https://www.gnome-look.org/p/2011598";
license = lib.licenses.gpl3Only;
platforms = lib.platforms.all;
};
}
+48
View File
@@ -0,0 +1,48 @@
{ lib, stdenvNoCC, gtk3 }:
# Azure-Glassy-Dark-Icons (gnome-look.org/p/2154036), not packaged in
# nixpkgs. gnome-look/pling download links are signed JWTs that expire in
# ~2 days (`exp` claim on the URL was ~48h out from issuance) — fetchurl
# against one would work today and fail on the next rebuild after that
# window with no warning. The tarball is vendored into the repo instead, as
# verified (md5 d218b358086ee7f68cb5e98c53e9efaf against the gnome-look API's
# reported checksum) at dotfiles/icons/Azure-Glassy-Dark-Icons.tar.xz.
stdenvNoCC.mkDerivation {
pname = "azure-glassy-dark-icons";
version = "unstable-2026-07-12";
src = ../dotfiles/icons/Azure-Glassy-Dark-Icons.tar.xz;
nativeBuildInputs = [ gtk3 ];
dontBuild = true;
# Upstream ships a handful of dangling symlinks under mimetypes/16 (e.g.
# libreoffice-spreadsheet.svg -> libreoffice-oasis-spreadsheet.svg, which
# doesn't exist in that size dir) — a minor packaging bug in the theme
# itself. Harmless: GTK's icon lookup just falls through to the theme's
# own Inherits= chain (breeze-dark, breeze, Adwaita, hicolor) for those few
# mimetypes. Nixpkgs' default noBrokenSymlinks fixup check would otherwise
# fail the whole build over it.
dontCheckForBrokenSymlinks = true;
# gtk3's setup hook strips icon-theme.cache from $out by default
# (postFixup); papirus-icon-theme opts back out the same way rather than
# let the freshly regenerated cache get thrown away.
dontDropIconThemeCache = true;
installPhase = ''
runHook preInstall
mkdir -p "$out/share/icons"
cp -r . "$out/share/icons/Azure-Glassy-Dark-Icons"
gtk-update-icon-cache --force "$out/share/icons/Azure-Glassy-Dark-Icons"
runHook postInstall
'';
meta = {
description = "Azure-Glassy dark icon theme, vendored from gnome-look.org (not packaged in nixpkgs)";
homepage = "https://www.gnome-look.org/p/2154036";
license = lib.licenses.gpl3Only;
platforms = lib.platforms.all;
};
}
+9 -1
View File
@@ -9,6 +9,7 @@
, curl
, kdePackages
, libnotify
, qt6
}:
# Wayland screenshot + annotation overlay, driven entirely by quickshell (qs -p
@@ -16,6 +17,11 @@
# plus src/*.qml, no nixpkgs package exists. bin/rishot resolves its QML dir at
# $self/../src by default, which breaks once wrapProgram rewrites argv0; setting
# RISHOT_CONFIG_DIR sidesteps that self-lookup entirely (see bin/rishot upstream).
#
# Overlay.qml imports Qt5Compat.GraphicalEffects, which quickshell's own Qt
# runtime doesn't ship — without qt5compat on the QML import path, `qs`
# fails at config-load with "module Qt5Compat.GraphicalEffects is not
# installed" and rishot exits 255 before ever drawing anything.
stdenvNoCC.mkDerivation (finalAttrs: {
pname = "rishot";
version = "0-unstable-2026-07-10";
@@ -52,7 +58,9 @@ stdenvNoCC.mkDerivation (finalAttrs: {
curl
kdePackages.kdialog
libnotify
]}
]} \
--prefix QML_IMPORT_PATH : "${qt6.qt5compat}/lib/qt-6/qml" \
--prefix QML2_IMPORT_PATH : "${qt6.qt5compat}/lib/qt-6/qml"
runHook postInstall
'';
+46
View File
@@ -0,0 +1,46 @@
{ lib, stdenvNoCC }:
# Slot Beauty Dark Icons (gnome-look.org/p/2346341), not packaged in
# nixpkgs. gnome-look/pling download links are signed JWTs that expire in
# ~2 days, so fetchurl against one would work today and fail on the next
# rebuild after that window — the tarball is vendored into the repo instead,
# as verified (md5 8b3e3e1e03c667b7f988b78ad2bc18a6 against the gnome-look
# API's reported checksum) at
# dotfiles/icons/Slot-Beauty-Dark-Icons-V-2.tar.xz.
stdenvNoCC.mkDerivation {
pname = "slot-beauty-dark-icons";
version = "unstable-2026-07-24";
src = ../dotfiles/icons/Slot-Beauty-Dark-Icons-V-2.tar.xz;
dontBuild = true;
# Upstream ships dozens of dangling symlinks (icons aliased across sizes
# that don't all exist) — same class of minor packaging bug as
# azure-glassy-dark-icons. Harmless: GTK/Qt icon lookup falls through to
# the theme's own Inherits= chain (breeze-dark, Adwaita, hicolor) for those.
dontCheckForBrokenSymlinks = true;
# index.theme's Directories= lists panel/16@2, panel/22@2, panel/24@2 (with
# Scale=2), but the actual on-disk dirs are named 16@2x/22@2x/24@2x (the
# correct freedesktop-spec suffix) — an upstream index.theme typo. That
# mismatch makes `gtk-update-icon-cache` refuse to emit ANY cache at all
# (exits 1, "The generated cache was invalid"), so unlike the other vendored
# themes here, this one ships with no icon-theme.cache and relies on GTK's
# live directory-scan lookup instead — functionally fine, just not
# cache-accelerated. gtk3's default postFixup hook (dropIconThemeCache)
# would strip a cache anyway, so there's nothing to opt out of.
installPhase = ''
runHook preInstall
mkdir -p "$out/share/icons"
cp -r . "$out/share/icons/Slot-Beauty-Dark-Icons-V-2"
runHook postInstall
'';
meta = {
description = "Slot Beauty dark icon theme, vendored from gnome-look.org (not packaged in nixpkgs)";
homepage = "https://www.gnome-look.org/p/2346341";
license = lib.licenses.gpl3Only;
platforms = lib.platforms.all;
};
}