From 25ef9fe1ac02d84baf7b10a1cc478808dea2ae8c Mon Sep 17 00:00:00 2001 From: Don Harper Date: Tue, 2 Sep 2025 21:01:49 -0500 Subject: [PATCH] hosts | added systemd service for primary workstation --- hosts/workstation/default.nix | 1 + hosts/workstation/systemd-primary.nix | 70 +++++++++++++++++++++++++++ 2 files changed, 71 insertions(+) create mode 100644 hosts/workstation/systemd-primary.nix diff --git a/hosts/workstation/default.nix b/hosts/workstation/default.nix index d78da15..ef32ef5 100644 --- a/hosts/workstation/default.nix +++ b/hosts/workstation/default.nix @@ -48,6 +48,7 @@ in { ./detect-reboot-needed.nix ./kmscon.nix ./systemd.nix + ./systemd-primary.nix ./auto-cpufreq.nix ./tlp.nix ./upgrade-diff.nix diff --git a/hosts/workstation/systemd-primary.nix b/hosts/workstation/systemd-primary.nix new file mode 100644 index 0000000..afa1354 --- /dev/null +++ b/hosts/workstation/systemd-primary.nix @@ -0,0 +1,70 @@ +{ + pkgs, + lib, + config, + ... +}: let + cfg = config.primary; +in { + options.primary = mkIf cfg.enable { + systemd = { + user = { + services = { + do_agenda = { + description = "Send today's agenda"; + unitConfig = {Type = "simple";}; + serviceConfig = { + Type = "oneshot"; + Environment = "PATH=/run/current-system/sw/bin:/etc/profiles/per-user/don/bin:/home/don/bin"; + ExecStart = "/home/don/bin/do_agenda"; + }; + }; + do_agenda_tomorrow = { + description = "Send tomorrow's agenda"; + unitConfig = {Type = "simple";}; + serviceConfig = { + Type = "oneshot"; + Environment = "PATH=/run/current-system/sw/bin:/etc/profiles/per-user/don/bin:/home/don/bin"; + ExecStart = "/home/don/bin/do_agenda_tomorrow"; + }; + }; + gosleep = { + description = "Adjust tailscale MTU based on location"; + unitConfig = {Type = "simple";}; + serviceConfig = { + Type = "oneshot"; + Environment = "PATH=/run/current-system/sw/bin:/etc/profiles/per-user/don/bin:/home/don/bin"; + ExecStart = "/home/don/bin/gosleep"; + }; + }; + }; + timers = { + do_agenda = { + wantedBy = ["timers.target"]; + partOf = ["do_agenda.service"]; + timerConfig = { + OnCalendar = "05:00"; + Unit = "do_agenda.service"; + }; + }; + do_agenda_tomorrow = { + wantedBy = ["timers.target"]; + partOf = ["do_agenda_tomorrow.service"]; + timerConfig = { + OnCalendar = "20:00"; + Unit = "do_agenda_tomorrow.service"; + }; + }; + gosleep = { + wantedBy = ["timers.target"]; + partOf = ["gosleep.service"]; + timerConfig = { + OnCalendar = "1m"; + Unit = "gosleep.service"; + }; + }; + }; + }; + }; + }; +}