From 90b34a365a209ff7ef7175ebe6a962d0fd609b91 Mon Sep 17 00:00:00 2001 From: BlackScorp Date: Mon, 2 Nov 2026 07:12:23 +0100 Subject: [PATCH] New package: noctalia-greeter-1.7.0 Co-authored-by: joshuakraemer Co-authored-by: Anidetrix --- srcpkgs/noctalia-greeter/files/INSTALL.msg | 9 +++++ .../noctalia-greeter/patches/polkitd.patch | 38 +++++++++++++++++++ srcpkgs/noctalia-greeter/template | 30 +++++++++++++++ 3 files changed, 77 insertions(+) create mode 100644 srcpkgs/noctalia-greeter/files/INSTALL.msg create mode 100644 srcpkgs/noctalia-greeter/patches/polkitd.patch create mode 100644 srcpkgs/noctalia-greeter/template diff --git a/srcpkgs/noctalia-greeter/files/INSTALL.msg b/srcpkgs/noctalia-greeter/files/INSTALL.msg new file mode 100644 index 00000000000000..89670c5b914d9c --- /dev/null +++ b/srcpkgs/noctalia-greeter/files/INSTALL.msg @@ -0,0 +1,9 @@ +To use noctalia-greeter, set the greeter command in /etc/greetd/config.toml: + + [default_session] + command = "/usr/bin/noctalia-greeter-session" + user = "_greeter" + +Then initialize the greeter state as root: + + # GREETER_USER=_greeter noctalia-greeter-apply-appearance --setup-system diff --git a/srcpkgs/noctalia-greeter/patches/polkitd.patch b/srcpkgs/noctalia-greeter/patches/polkitd.patch new file mode 100644 index 00000000000000..89b319b5a99f68 --- /dev/null +++ b/srcpkgs/noctalia-greeter/patches/polkitd.patch @@ -0,0 +1,38 @@ +Source: polkit-org/polkit commit 0c7e27b6a806cae728ff05b10b70b5e7a1b4c6a3 +Upstream: no +Reason: Adapted from the upstream fix for polkit-org/polkit commit 0c7e27b6. + Void installs /etc/polkit-1/rules.d as 0700 polkitd:polkitd, so the root-only + directory chain check rejects the rules directory. + +--- a/src/tools/passwordless_sync_policy.cpp ++++ b/src/tools/passwordless_sync_policy.cpp +@@ -46,6 +46,10 @@ namespace greeter::passwordless_sync { + constexpr std::size_t kMaximumUsers = 256; + constexpr std::size_t kMaximumUserNameLength = 256; + constexpr std::size_t kMaximumPathLength = 4096; ++ const uid_t kPolkitdUid = [] { ++ if (const struct passwd* pw = ::getpwnam("polkitd")) return pw->pw_uid; ++ return static_cast(-1); ++ }(); + + class UniqueFd { + public: +@@ -420,7 +424,8 @@ namespace greeter::passwordless_sync { + + ec.message(); + return false; + } +- if (!validateTrustedDirectoryChain(canonical, "Polkit rules", errorOut)) { ++ const std::filesystem::path parent = canonical.parent_path(); ++ if (!validateTrustedDirectoryChain(parent, "Polkit rules parent", errorOut)) { + return false; + } + +@@ -432,7 +437,7 @@ namespace greeter::passwordless_sync { + if (::fstat(directory.get(), &state) != 0) { + return setErrnoError("failed to inspect the Polkit rules directory", errorOut); + } +- if (!S_ISDIR(state.st_mode) || state.st_uid != 0 || (state.st_mode & (S_IWGRP | S_IWOTH)) != 0) { ++ if (!S_ISDIR(state.st_mode) || state.st_uid != kPolkitdUid || (state.st_mode & (S_IWGRP | S_IWOTH)) != 0) { + errorOut = "the Polkit rules directory has unsafe ownership or permissions"; + return false; + } diff --git a/srcpkgs/noctalia-greeter/template b/srcpkgs/noctalia-greeter/template new file mode 100644 index 00000000000000..2d8bfb84b5c3ab --- /dev/null +++ b/srcpkgs/noctalia-greeter/template @@ -0,0 +1,30 @@ +# Template file for 'noctalia-greeter' +pkgname=noctalia-greeter +version=1.7.0 +revision=1 +build_style=meson +hostmakedepends="pkg-config wayland-devel" +makedepends="wayland-devel wayland-protocols wlroots0.20-devel + libinput-devel libglvnd-devel freetype-devel fontconfig-devel + cairo-devel pango-devel harfbuzz-devel librsvg-devel libxml2-devel + libxkbcommon-devel glib-devel tomlplusplus-devel json-c++ stb + libwebp-devel libjxl-devel" +depends="greetd dbus bash" +checkdepends="mesa-dri dejavu-fonts-ttf" +short_desc="Minimal login greeter for greetd matching Noctalia Shell" +maintainer="BlackScorp " +license="MIT" +homepage="https://github.com/noctalia-dev/noctalia-greeter" +distfiles="https://github.com/noctalia-dev/noctalia-greeter/archive/refs/tags/v${version}.tar.gz + https://raw.githubusercontent.com/google/wuffs/a14745aa458fd2b2785034efa04eab3c7b5b91e0/LICENSE-MIT>wuffs-LICENSE-MIT" +checksum="5b092784c0147bb6739efc2e8146d2d07e3572a59d7a370e93092f9f56d4fcc8 + bb811a4b485eac3caeb8bdc58bbafb355fbcb6116010a7ea9179e5c70b0bc878" +skip_extraction="wuffs-LICENSE-MIT" +make_dirs="/var/lib/noctalia-greeter 0750 _greeter _greeter" + +post_install() { + # The upstream tmpfiles entry hardcodes "greeter"; Void uses "_greeter". + rm -f "${DESTDIR}/usr/lib/tmpfiles.d/noctalia-greeter.conf" + vlicense LICENSE + vlicense "${XBPS_SRCDISTDIR}/${pkgname}-${version}/wuffs-LICENSE-MIT" +}