File nemo-mobile-session.spec of Package nemo-mobile-session

Name:       nemo-mobile-session
Summary:    Target for nemo systemd user session
Version:    2026.01
Release:    0
Group:      System/Libraries
License:    BSD
URL:        https://github.com/nemomobile-ux/nemo-mobile-session
Source0:    https://github.com/nemomobile-ux/nemo-mobile-session/archive/refs/tags/%{version}.tar.gz
BuildArch:  noarch
Requires:   systemd >= 187
Requires:   qt6-wayland
Requires:   systemd-user-session-targets
Requires(post): coreutils
Requires(post): shadow

%description
Target for nemo systemd user session

%prep
%setup -q -n %{name}-%{version}

%install
mkdir -p %{buildroot}%{_sysconfdir}/dbus-1/system.d
mkdir -p %{buildroot}%{_unitdir}/graphical.target.wants/
mkdir -p %{buildroot}%{_sysconfdir}/sysconfig/
mkdir -p %{buildroot}/var/lib/environment/nemo
mkdir -p %{buildroot}%{_sysconfdir}/systemd/system/
mkdir -p %{buildroot}%{_userunitdir}/pre-user-session.target.wants/
mkdir -p %{buildroot}/lib/udev/rules.d/
mkdir -p %{buildroot}/etc/profile.d/
mkdir -p %{buildroot}%{_bindir}

# Root services
install -D -m 0644 services/user@.service.d/nemo.conf \
           %{buildroot}%{_unitdir}/user@.service.d/nemo.conf
install -m 0644 services/set-boot-state@.service %{buildroot}%{_unitdir}/
install -m 0644 services/start-user-session.service %{buildroot}%{_unitdir}/
install -m 0644 services/init-done.service %{buildroot}%{_unitdir}/

# conf
install -m 0644 conf/50-nemo-mobile-ui.conf %{buildroot}/var/lib/environment/nemo/
install -D -m 0644 conf/nemo-session-tmp.conf %{buildroot}%{_libdir}/tmpfiles.d/nemo-session-tmp.conf
install -m 0644 conf/50-nemo-mobile-wayland.conf %{buildroot}/var/lib/environment/nemo/

#udev rules
install -m 0644 conf/01-input.rules %{buildroot}/lib/udev/rules.d/
install -m 0644 conf/01-fbdev.rules %{buildroot}/lib/udev/rules.d/

#dbus rules
install -m 0644 conf/glacier-user.conf %{buildroot}/etc/dbus-1/system.d/

# shell environment
install -m 0644 conf/load-nemo.sh %{buildroot}/etc/profile.d/

# bin
install -D -m 0744 bin/set-boot-state %{buildroot}%{_bindir}/set-boot-state
install -D -m 0744 bin/init-done %{buildroot}/%{_bindir}/init-done

ln -sf ../set-boot-state@.service %{buildroot}%{_unitdir}/graphical.target.wants/set-boot-state@USER.service
ln -sf ../start-user-session.service %{buildroot}%{_unitdir}/graphical.target.wants/start-user-session.service
ln -sf ../init-done.service %{buildroot}%{_unitdir}/graphical.target.wants/
# In nemo actdead is not (yet) supported. We define actdead (runlevel4) to poweroff
# ln -sf %{_unitdir}/poweroff.target %{buildroot}%{_sysconfdir}/systemd/system/runlevel4.target

# nemo-mobile-session dependencies

# systemd --user is called with '--unit=%I.target' in nemo.conf,
# so default.target is never used. User target is setup at runtime
# by set-boot-state according to the current boot state
#ln -sf post-user-session.target %{buildroot}%{_userunitdir}/default.target

%post
if [ $1 -gt 1 ] ; then
  # known changes
  if [ ! "$(grep audio %{_sysconfdir}/group | cut -d: -f3)" -eq 1005 ]; then
    groupmod -g 1005 audio
  fi
  if [ ! "$(grep nobody %{_sysconfdir}/group | cut -d: -f3)" -eq 9999 ]; then
    groupmod -g 9999 nobody
  fi

  [ -f /usr/bin/ssh-agent ] && chgrp nobody %{_bindir}/ssh-agent

  # Add these users for dbus like droid-hal-device does
  /usr/sbin/useradd -r -d / -s /sbin/nologin nfc
  /usr/sbin/useradd -r -d / -s /sbin/nologin radio

  # backup group and passwd
  mkdir -p %{_sharedstatedir}/misc
  [ ! -f %{_sharedstatedir}/misc/passwd.old ] && cp %{_sysconfdir}/passwd %{_sharedstatedir}/misc/passwd.old
  [ ! -f %{_sharedstatedir}/misc/group.old ] && cp %{_sysconfdir}/group %{_sharedstatedir}/misc/group.old

fi

%files
%defattr(-,root,root,-)
%config /var/lib/environment/nemo/50-nemo-mobile-ui.conf
%config /var/lib/environment/nemo/50-nemo-mobile-wayland.conf

%dir %{_sysconfdir}/dbus-1
%dir %{_sysconfdir}/dbus-1/system.d
%dir %{_unitdir}/graphical.target.wants
%dir %{_unitdir}/user@.service.d
%dir /var/lib/environment
%dir /var/lib/environment/nemo

%{_libdir}/tmpfiles.d/nemo-session-tmp.conf
%{_unitdir}/graphical.target.wants/set-boot-state@USER.service
%{_unitdir}/graphical.target.wants/start-user-session.service
%{_unitdir}/graphical.target.wants/init-done.service
%{_unitdir}/user@.service.d/*
%{_unitdir}/set-boot-state@.service
%{_unitdir}/start-user-session.service
%{_unitdir}/init-done.service
/lib/udev/rules.d/01-input.rules
/lib/udev/rules.d/01-fbdev.rules
%{_bindir}/set-boot-state
%{_bindir}/init-done
%{_sysconfdir}/dbus-1/system.d/glacier-user.conf
%{_sysconfdir}/profile.d/load-nemo.sh



openSUSE Build Service is sponsored by