File ly.spec of Package ly
%define zig_exe /usr/bin/zig
%define ly_version 1.3.0
Name: ly
Version: %{ly_version}
Release: 1
Summary: TUI display manager
License: WTFPL
Group: System/DisplayManagers
Url: https://github.com/fairyglade/ly
Source0: %{name}-%{version}-vendored.tar.gz
BuildRequires: zig >= 0.15.0
BuildRequires: pam-devel
BuildRequires: libxcb-devel
BuildRequires: git
%description
Ly is a lightweight TUI (ncurses-like) display manager for Linux and BSD,
designed with portability in mind (e.g. it does not require systemd to run).
%prep
%setup -q -n %{name}-%{version}
%build
# Build using vendored dependencies (no network required)
%{zig_exe} build -Dprefix_directory=%{_prefix} -Dconfig_directory=%{_sysconfdir} -Dinit_system=systemd -Ddefault_tty=2 -Dfallback_tty=2 -Doptimize=ReleaseFast
%install
rm -rf %{buildroot}
# Build with install to buildroot
%{zig_exe} build installnoconf -Ddest_directory=%{buildroot} -Dprefix_directory=%{_prefix} -Dconfig_directory=%{_sysconfdir} -Dinit_system=systemd -Ddefault_tty=2 -Dfallback_tty=2
# Verify the binary exists and install it if needed
if [ ! -f %{buildroot}%{_bindir}/ly ]; then
if [ -f zig-out/bin/ly ]; then
mkdir -p %{buildroot}%{_bindir}
install -m 755 zig-out/bin/ly %{buildroot}%{_bindir}/ly
fi
fi
# Install service file
mkdir -p %{buildroot}%{_unitdir}
install -m 644 res/ly.service %{buildroot}%{_unitdir}/ly.service
sed -i "s,\$PREFIX_DIRECTORY,%{_prefix},g" %{buildroot}%{_unitdir}/ly.service
sed -i "s,\$EXECUTABLE_NAME,ly,g" %{buildroot}%{_unitdir}/ly.service
sed -i "s,\$DEFAULT_TTY,2,g" %{buildroot}%{_unitdir}/ly.service
# Install PAM configuration files
mkdir -p %{buildroot}%{_sysconfdir}/pam.d
install -m 644 res/pam.d/ly-linux %{buildroot}%{_sysconfdir}/pam.d/ly
install -m 644 res/pam.d/ly-linux-autologin %{buildroot}%{_sysconfdir}/pam.d/ly-autologin
%files
%defattr(-,root,root)
%{_bindir}/ly
%{_unitdir}/ly.service
%config(noreplace) %{_sysconfdir}/ly/config.ini
%{_sysconfdir}/ly/config.ini.example
%{_sysconfdir}/ly/setup.sh
%dir %{_sysconfdir}/ly/lang
%{_sysconfdir}/ly/lang/*.ini
%dir %{_sysconfdir}/ly/custom-sessions
%{_sysconfdir}/ly/custom-sessions/README
%{_sysconfdir}/pam.d/ly
%{_sysconfdir}/pam.d/ly-autologin
%dir %{_sysconfdir}/ly
%changelog
* Tue Oct 28 2025 - marc_smith <marc_smith@opensuse.org> - 1.3.0-1
- Initial package for openSUSE Tumbleweed