diff options
author | Linnnus <[email protected]> | 2023-09-30 12:32:39 +0200 |
---|---|---|
committer | Linnnus <[email protected]> | 2023-09-30 12:32:39 +0200 |
commit | 1bdd5a39084a9e1f2765d14cef07957bfd9ef076 (patch) | |
tree | 07a0c12991fd0d2acabae7b64395615ac99bfe98 /services/duksebot | |
parent | 8798940cad00296d3a9e88988e6678eef670d21a (diff) |
Fix 'MANPATH used but not declared'
Diffstat (limited to 'services/duksebot')
-rw-r--r-- | services/duksebot/default.nix | 71 |
1 files changed, 71 insertions, 0 deletions
diff --git a/services/duksebot/default.nix b/services/duksebot/default.nix new file mode 100644 index 0000000..f05202c --- /dev/null +++ b/services/duksebot/default.nix @@ -0,0 +1,71 @@ +# This module defines an on-demand minecraft server service which turns off the +# server when it's not being used. + +{ config, lib, pkgs, modulesPath, ... }: + +let + inherit (lib) mkIf mkOption mkEnableOption types; + + cfg = config.my.services.duksebot; +in +{ + options.my.services.duksebot = { + enable = mkEnableOption "duksebot daily reminder"; + + package = mkOption { + description = "What package to use"; + default = pkgs.duksebot; + type = types.package; + }; + }; + + config = mkIf cfg.enable { + # Create a user to run the server under. + users.users.duksebot = { + description = "Runs daily dukse reminder"; + group = "duksebot"; + isSystemUser = true; + }; + users.groups.duksebot = { }; + + my.secrets.duksebot = { + source = ./secrets.env; + dest = "/run/keys/duksebot.env"; + owner = "duksebot"; + group = "duksebot"; + }; + + # 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 '^#' /run/keys/duksebot.env | xargs) + # Kick off. + exec "${cfg.package}"/bin/duksebot + ''; + }; + + # Create a timer to activate our oneshot service. + systemd.timers.duksebot = { + wantedBy = [ "timers.target" ]; + partOf = [ "duksebot.service" ]; + # Here's where we depend on the deployment secret which + # we registered under my.secrets.duksebot! + after = [ "duksebot-key.service" "network-online.target" ]; + wants = [ "duksebot-key.service" "network-online.target" ]; + timerConfig = { + # OnCalendar = "*-*-* 7:00:00"; + OnCalendar = "*:0/1"; + Unit = "duksebot.service"; + }; + }; + }; +} |