Complete rewrite of the Wayland lockscreen from Python/PyGObject to Rust/gtk4-rs for memory safety in security-critical PAM code and consistency with the moonset/moongreet Rust ecosystem. Modules: main, lockscreen, auth (PAM FFI), fingerprint (fprintd D-Bus), config, i18n, users, power. 37 unit tests. Security: PAM conversation callback with Zeroizing password, panic hook that never unlocks, root check, ext-session-lock-v1 compositor policy, absolute loginctl path, avatar symlink rejection.
51 lines
1.1 KiB
Bash
51 lines
1.1 KiB
Bash
# ABOUTME: PKGBUILD for Moonlock — secure Wayland lockscreen.
|
|
# ABOUTME: Builds from git source with automatic version detection.
|
|
|
|
# Maintainer: Dominik Kressler
|
|
|
|
pkgname=moonlock-git
|
|
pkgver=0.4.0.r0.g0000000
|
|
pkgrel=1
|
|
pkgdesc="A secure Wayland lockscreen with GTK4, PAM and fingerprint support"
|
|
arch=('x86_64')
|
|
url="https://gitea.moonarch.de/nevaforget/moonlock"
|
|
license=('MIT')
|
|
depends=(
|
|
'gtk4'
|
|
'gtk4-layer-shell'
|
|
'gtk4-session-lock'
|
|
'pam'
|
|
)
|
|
makedepends=(
|
|
'git'
|
|
'cargo'
|
|
)
|
|
optdepends=(
|
|
'fprintd: fingerprint authentication support'
|
|
)
|
|
provides=('moonlock')
|
|
conflicts=('moonlock')
|
|
source=("git+${url}.git")
|
|
sha256sums=('SKIP')
|
|
|
|
pkgver() {
|
|
cd "$srcdir/moonlock"
|
|
git describe --long --tags | sed 's/^v//;s/-/.r/;s/-/./'
|
|
}
|
|
|
|
build() {
|
|
cd "$srcdir/moonlock"
|
|
cargo build --release --locked
|
|
}
|
|
|
|
package() {
|
|
cd "$srcdir/moonlock"
|
|
install -Dm755 target/release/moonlock "$pkgdir/usr/bin/moonlock"
|
|
|
|
# PAM configuration
|
|
install -Dm644 config/moonlock-pam "$pkgdir/etc/pam.d/moonlock"
|
|
|
|
# Example config
|
|
install -Dm644 config/moonlock.toml.example "$pkgdir/etc/moonlock/moonlock.toml.example"
|
|
}
|