aboutsummaryrefslogtreecommitdiff
path: root/src/property/systemd.lisp
diff options
context:
space:
mode:
Diffstat (limited to 'src/property/systemd.lisp')
-rw-r--r--src/property/systemd.lisp44
1 files changed, 25 insertions, 19 deletions
diff --git a/src/property/systemd.lisp b/src/property/systemd.lisp
index a83f206..408be53 100644
--- a/src/property/systemd.lisp
+++ b/src/property/systemd.lisp
@@ -18,38 +18,44 @@
(in-package :consfigurator.property.systemd)
(named-readtables:in-readtable :consfigurator)
-(defprop started :posix (service)
+(defun systemctl (fn user &rest args &aux (args (cons "systemctl" args)))
+ (apply fn (if user (apply #'systemd--user args) args)))
+
+(defprop started :posix (service &optional user)
(:desc #?"systemd service ${service} started")
- (:check (zerop (mrun :for-exit "systemctl" "is-active" service)))
- (:apply (mrun "systemctl" "start" service)))
+ (:check (zerop (systemctl #'mrun user :for-exit "is-active" service)))
+ (:apply (systemctl #'mrun user "start" service)))
-(defprop stopped :posix (service)
+(defprop stopped :posix (service &optional user)
(:desc #?"systemd service ${service} stopped")
- (:check (plusp (mrun :for-exit "systemctl" "is-active" service)))
- (:apply (mrun "systemctl" "stop" service)))
+ (:check (plusp (systemctl #'mrun user :for-exit "is-active" service)))
+ (:apply (systemctl #'mrun user "stop" service)))
-(defprop enabled :posix (service)
+(defprop enabled :posix (service &optional user)
(:desc #?"systemd service ${service} enabled")
- (:check (zerop (mrun :for-exit "systemctl" "is-enabled" service)))
- (:apply (mrun "systemctl" "enable" service)))
+ (:check (zerop (systemctl #'mrun user :for-exit "is-enabled" service)))
+ (:apply (systemctl #'mrun user "enable" service)))
-(defprop disabled :posix (service)
+(defprop disabled :posix (service &optional user)
(:desc #?"systemd service ${service} disabled")
(:check
- (let ((status (stripln (run :may-fail "systemctl" "is-enabled" service))))
+ (let ((status
+ (stripln
+ (systemctl #'run user :may-fail "is-enabled" service))))
(or (string-prefix-p "linked" status)
(string-prefix-p "masked" status)
(memstring=
- status
- '("static" "disabled" "generated" "transient" "indirect")))))
- (:apply (mrun "systemctl" "disable" service)))
+ status '("static" "disabled" "generated" "transient" "indirect")))))
+ (:apply (systemctl #'mrun user "disable" service)))
-(defprop masked :posix (service)
+(defprop masked :posix (service &optional user)
(:desc #?"systemd service ${service} masked")
- (:check (string-prefix-p "masked"
- (run :may-fail "systemctl" "is-enabled" service)))
- (:apply (mrun "systemctl" "mask" service))
- (:unapply (mrun "systemctl" "unmask" service)))
+ (:check
+ (string-prefix-p
+ "masked"
+ (systemctl #'run user :may-fail "is-enabled" service)))
+ (:apply (systemctl #'mrun user "mask" service))
+ (:unapply (systemctl #'mrun user "unmask" service)))
(defprop lingering-enabled :posix (user)
(:desc #?"User lingering enable for ${user}")