summaryrefslogtreecommitdiff
path: root/hosts/ahmed/duksebot
diff options
context:
space:
mode:
authorLinnnus <[email protected]>2024-02-20 19:00:53 +0100
committerLinnnus <[email protected]>2024-02-20 19:01:44 +0100
commit274e08f50faffe1b8e4a760811b0a12450eae719 (patch)
tree393449e81f21b6f6b1ea7a701cef0f740cc3b757 /hosts/ahmed/duksebot
parent1bbdd3f63a9d8c46b1772cbf2ad9fd83d7ef213b (diff)
Merge 'reorg' into 'main'
This patch moves in the reorganizational work done on the reorg branch, mainly: * Move host-specific modules into hosts/<host>/<module> * Break up HM config See the reorg branch for the individual commits.
Diffstat (limited to 'hosts/ahmed/duksebot')
-rw-r--r--hosts/ahmed/duksebot/default.nix61
1 files changed, 61 insertions, 0 deletions
diff --git a/hosts/ahmed/duksebot/default.nix b/hosts/ahmed/duksebot/default.nix
new file mode 100644
index 0000000..f15b0ff
--- /dev/null
+++ b/hosts/ahmed/duksebot/default.nix
@@ -0,0 +1,61 @@
+# This module defines systemd unit which runs a script that sends Discrord
+# messages. I use it to notify my classmates about who's on cleaning duty. You
+# are probably not interested in this.
+
+{
+ config,
+ pkgs,
+ ...
+}: let
+ # What script to run.
+ package = pkgs.duksebot;
+in {
+ config = {
+ # Create a user to run the server under.
+ users.users.duksebot = {
+ description = "Runs daily dukse reminder";
+ group = "duksebot";
+ isSystemUser = true;
+ home = "/srv/duksebot";
+ createHome = true;
+ };
+ users.groups.duksebot = {};
+
+ age.secrets.duksebot-env = {
+ file = ../../../secrets/duksebot.env.age;
+ owner = config.users.users.duksebot.name;
+ group = config.users.users.duksebot.group;
+ mode = "0440";
+ };
+
+ # Create a service which simply runs script. This will be invoked by our timer.
+ systemd.services.duksebot = {
+ serviceConfig = {
+ # We only want to run this once every time the timer triggers it.
+ Type = "oneshot";
+ # Run as the user we created above.
+ User = "duksebot";
+ Group = "duksebot";
+ WorkingDirectory = config.users.users.duksebot.home;
+ };
+ script = ''
+ # Load the secret environment variables.
+ export $(grep -v '^#' ${config.age.secrets.duksebot-env.path} | xargs)
+ # Kick off.
+ exec "${package}"/bin/duksebot
+ '';
+ };
+
+ # Create a timer to activate our oneshot service.
+ systemd.timers.duksebot = {
+ wantedBy = ["timers.target"];
+ partOf = ["duksebot.service"];
+ after = ["network-online.target"];
+ wants = ["network-online.target"];
+ timerConfig = {
+ OnCalendar = "*-*-* 7:00:00";
+ Unit = "duksebot.service";
+ };
+ };
+ };
+}