diff --git a/debian/phosh.service b/debian/phosh.service
new file mode 100644
index 0000000000000000000000000000000000000000..2f5ed2cc262eb17a36477a0f66f0d283462edc16
--- /dev/null
+++ b/debian/phosh.service
@@ -0,0 +1,50 @@
+[Unit]
+Description=Phosh, a shell for mobile phones
+Documentation=https://source.puri.sm/Librem5/phosh
+
+# Make sure we are started after logins are permitted.
+After=systemd-user-sessions.service
+# If Plymouth is used, we want to start when it is on its way out.
+After=plymouth-quit-wait.service
+
+# D-Bus is necessary for contacting logind. Logind is required.
+Wants=dbus.socket
+After=dbus.socket
+
+# This scope is created by pam_systemd when logging in as the user.
+# This directive is a workaround to a systemd bug, where the setup of the
+# user session by PAM has some race condition, possibly leading to a failure.
+# See README for more details.
+After=session-c1.scope
+
+# Since we are part of the graphical session, make sure we are started before
+# it is complete.
+Before=graphical.target
+
+# Prevent starting on systems without virtual consoles
+ConditionPathExists=/dev/tty0
+
+[Service]
+ExecStart=/usr/lib/wlroots/rootston -E /usr/lib/phosh/phosh -C /usr/share/phosh/rootston.ini
+TimeoutStartSec=60
+User=purism
+PAMName=login
+WorkingDirectory=/home/purism
+
+# A virtual terminal is needed.
+TTYPath=/dev/tty7
+TTYReset=yes
+TTYVHangup=yes
+TTYVTDisallocate=yes
+
+# Fail to start if not controlling the tty.
+StandardInput=tty-fail
+StandardOutput=journal
+StandardError=journal
+
+# Log this user with utmp, letting it show up with commands 'w' and 'who'.
+UtmpIdentifier=tty7
+UtmpMode=user
+
+[Install]
+WantedBy=graphical.target
diff --git a/debian/rules b/debian/rules
index cf867ddc4e12e94bff72f9a90539cce5d91c8488..8ef3d2e4664e2135268bd4ffd8f29cdb78733aa9 100755
--- a/debian/rules
+++ b/debian/rules
@@ -11,6 +11,9 @@ override_dh_auto_install:
 	mkdir -p debian/phosh/usr/lib/phosh
 	mv debian/phosh/usr/lib/*/phosh debian/phosh/usr/lib/phosh/phosh
 
+override_dh_installsystemd:
+	dh_installsystemd --no-start --no-enable
+
 override_dh_auto_test:
 ifeq ($(filter nocheck,$(DEB_BUILD_OPTIONS)),)
 	xvfb-run ninja -C _build test