--- /dev/null
+[Unit]
+Description=Headless Display Manager Ready Service
+After=tmp.mount display-manager.service
+
+[Service]
+Type=oneshot
+EnvironmentFile=/etc/sysconfig/display-manager.env
+SmackProcessLabel=System
+ExecStart=/usr/bin/sh -c "while [ ! -e /run/wayland-0 ] ; do /usr/bin/sleep .1 ; done ;/bin/chown -f root:display /run/wayland-0;/bin/chmod 775 /run/wayland-0"
+ExecStartPost=/usr/bin/sh -c "/usr/bin/touch /run/.wm_ready"
+
+[Install]
+WantedBy=graphical.target
%install
%make_install
+%define display_user display
+%define display_group display
+
+# install system session services
+%__mkdir_p %{buildroot}%{_unitdir}
+install -m 644 data/doctor/units/display-manager.service %{buildroot}%{_unitdir}
+install -m 644 data/doctor/units/display-manager-ready.path %{buildroot}%{_unitdir}
+install -m 644 data/doctor/units/display-manager-ready.service %{buildroot}%{_unitdir}
+
+# install user session service
+%__mkdir_p %{buildroot}%{_unitdir_user}
+install -m 644 data/doctor/units/display-user.service %{buildroot}%{_unitdir_user}
+
+# install env file and scripts for service
+%__mkdir_p %{buildroot}%{_sysconfdir}/sysconfig
+install -m 0644 data/doctor/units/display-manager.env %{buildroot}%{_sysconfdir}/sysconfig
+%__mkdir_p %{buildroot}%{_sysconfdir}/profile.d
+install -m 0644 data/doctor/units/display_env.sh %{buildroot}%{_sysconfdir}/profile.d
+
%post -n %{name} -p /sbin/ldconfig
%postun -n %{name} -p /sbin/ldconfig
%post wayland -p /sbin/ldconfig
%postun wayland -p /sbin/ldconfig
+%pre doctor
+# create groups 'display'
+getent group %{display_group} >/dev/null || %{_sbindir}/groupadd -r -o %{display_group}
+# create user 'display'
+getent passwd %{display_user} >/dev/null || %{_sbindir}/useradd -r -g %{display_group} -d /run/display -s /bin/false -c "Display" %{display_user}
+
+# create links within systemd's target(s)
+%__mkdir_p %{_unitdir}/graphical.target.wants/
+%__mkdir_p %{_unitdir_user}/basic.target.wants/
+ln -sf ../display-manager.service %{_unitdir}/graphical.target.wants/
+ln -sf ../display-manager-ready.service %{_unitdir}/graphical.target.wants/
+ln -sf ../display-user.service %{_unitdir_user}/basic.target.wants/
+
+%postun doctor
+rm -f %{_unitdir}/graphical.target.wants/display-manager.service
+rm -f %{_unitdir}/graphical.target.wants/display-manager-ready.service
+rm -f %{_unitdir_user}/basic.target.wants/display-user.service
+
%files -n %{name}
%manifest %{name}.manifest
%defattr(-,root,root,-)
%defattr(-,root,root,-)
%license COPYING
%{_bindir}/doctor*
+%{_unitdir}/display-manager-ready.path
+%{_unitdir}/display-manager-ready.service
+%{_unitdir}//display-manager.service
+%{_unitdir_user}/display-user.service
+%config %{_sysconfdir}/sysconfig/display-manager.env
+%config %{_sysconfdir}/profile.d/display_env.sh
%files samples
%manifest %{name}.manifest