aboutsummaryrefslogtreecommitdiffstats
path: root/pkgs/by-name/sy/systemd-toggle
diff options
context:
space:
mode:
Diffstat (limited to 'pkgs/by-name/sy/systemd-toggle')
-rw-r--r--pkgs/by-name/sy/systemd-toggle/package.nix23
-rwxr-xr-xpkgs/by-name/sy/systemd-toggle/systemd-toggle.sh46
2 files changed, 69 insertions, 0 deletions
diff --git a/pkgs/by-name/sy/systemd-toggle/package.nix b/pkgs/by-name/sy/systemd-toggle/package.nix
new file mode 100644
index 00000000..04ed576f
--- /dev/null
+++ b/pkgs/by-name/sy/systemd-toggle/package.nix
@@ -0,0 +1,23 @@
+# nixos-config - My current NixOS configuration
+#
+# Copyright (C) 2025 Benedikt Peetz <benedikt.peetz@b-peetz.de>
+# SPDX-License-Identifier: GPL-3.0-or-later
+#
+# This file is part of my nixos-config.
+#
+# You should have received a copy of the License along with this program.
+# If not, see <https://www.gnu.org/licenses/gpl-3.0.txt>.
+{
+ writeShellApplication,
+ systemd,
+}:
+writeShellApplication {
+ name = "systemd-toggle";
+ text = builtins.readFile ./systemd-toggle.sh;
+ runtimeInputs = [
+ systemd
+ ];
+ meta = {
+ mainProgram = "systemd-toggle";
+ };
+}
diff --git a/pkgs/by-name/sy/systemd-toggle/systemd-toggle.sh b/pkgs/by-name/sy/systemd-toggle/systemd-toggle.sh
new file mode 100755
index 00000000..a8290238
--- /dev/null
+++ b/pkgs/by-name/sy/systemd-toggle/systemd-toggle.sh
@@ -0,0 +1,46 @@
+#!/usr/bin/env sh
+
+# nixos-config - My current NixOS configuration
+#
+# Copyright (C) 2025 Benedikt Peetz <benedikt.peetz@b-peetz.de>
+# SPDX-License-Identifier: GPL-3.0-or-later
+#
+# This file is part of my nixos-config.
+#
+# You should have received a copy of the License along with this program.
+# If not, see <https://www.gnu.org/licenses/gpl-3.0.txt>.
+
+use_user=false
+service=""
+while [ "$#" -ne 0 ]; do
+ case "$1" in
+ "--user")
+ use_user=true
+ ;;
+ *)
+ if [ -n "$service" ]; then
+ echo "Service was already specified as: '$service'"
+ exit 2
+ else
+ service="$1"
+ fi
+ ;;
+ esac
+
+ shift 1
+done
+
+user_str=""
+if [ "$use_user" = "true" ]; then
+ user_str="--user"
+fi
+
+service_status="$(systemctl $user_str show "$service" | grep ActiveState | sed 's/ActiveState=//')"
+
+if [ "$service_status" = "inactive" ]; then
+ systemctl $user_str start "$service"
+else
+ systemctl $user_str stop "$service"
+fi
+
+# vim: ft=sh