summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLinnnus <[email protected]>2023-09-30 12:32:39 +0200
committerLinnnus <[email protected]>2023-09-30 12:32:39 +0200
commit1bdd5a39084a9e1f2765d14cef07957bfd9ef076 (patch)
tree07a0c12991fd0d2acabae7b64395615ac99bfe98
parent8798940cad00296d3a9e88988e6678eef670d21a (diff)
Fix 'MANPATH used but not declared'
-rw-r--r--home/dev-utils/default.nix2
-rw-r--r--pkgs/duksebot/default.nix44
-rw-r--r--secrets/cloudflare-ddns-token.age19
-rw-r--r--services/duksebot/default.nix71
4 files changed, 116 insertions, 20 deletions
diff --git a/home/dev-utils/default.nix b/home/dev-utils/default.nix
index d4a8fad..77d8085 100644
--- a/home/dev-utils/default.nix
+++ b/home/dev-utils/default.nix
@@ -15,5 +15,5 @@
tcl-8_6
] ++ lib.optional pkgs.stdenv.isDarwin trash;
- home.sessionVariables.MANPATH = lib.mkIf pkgs.stdenv.isDarwin "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/share/man:/Applications/Xcode.app/Contents/Developer/usr/share/man:/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/share/man:$MANPATH";
+ home.sessionVariables.MANPATH = lib.optionalString pkgs.stdenv.isDarwin "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/share/man:/Applications/Xcode.app/Contents/Developer/usr/share/man:/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/share/man:$MANPATH";
}
diff --git a/pkgs/duksebot/default.nix b/pkgs/duksebot/default.nix
new file mode 100644
index 0000000..894158a
--- /dev/null
+++ b/pkgs/duksebot/default.nix
@@ -0,0 +1,44 @@
+{ lib
+, python3
+, fetchFromGitHub
+, fetchPypi
+, writeShellScriptBin
+}:
+
+let
+ icalevents = ps: ps.buildPythonPackage rec {
+ pname = "icalevents";
+ version = "0.1.27";
+
+ src = fetchFromGitHub {
+ owner = "jazzband";
+ repo = pname;
+ rev = "v${version}";
+ hash = "sha256-vSYQEJFBjXUF4WwEAtkLtcO3y/am00jGS+8Vj+JMMqQ=";
+ };
+
+ doCheck = false;
+
+ propagatedBuildInputs = with ps; [
+ httplib2
+ datetime
+ icalendar
+ ];
+ };
+ python3' = python3.withPackages (ps: with ps; [
+ pytz
+ requests
+ python-dotenv
+ (icalevents ps)
+ ]);
+ src = fetchFromGitHub {
+ owner = "linnnus";
+ repo = "duksebot";
+ rev = "0092e752610ec00b5080269721666d1b4c258119";
+ hash = "";
+ };
+in
+writeShellScriptBin "duksebot"
+ ''
+ exec ${python3'}/bin/python3 ${src}/script.py
+ ''
diff --git a/secrets/cloudflare-ddns-token.age b/secrets/cloudflare-ddns-token.age
deleted file mode 100644
index 280ae85..0000000
--- a/secrets/cloudflare-ddns-token.age
+++ /dev/null
@@ -1,19 +0,0 @@
-age-encryption.org/v1
--> ssh-ed25519 mPg9Wg gHYl+dLO8N5gCWv2x5qtuEvTrrL4XlLcT2Q6Zngb5WM
-BBoS++7s6L4JCZWDkIyyNdf5QDMB1zGUghOOFWo2EC4
--> ssh-rsa 5MROTA
-QxtsUXR+3Flq0iZFtLsJTGM3nq5770pzOFUpLxVjhxg1gzEhRclgjYpn7m3TSAjp
-J+AUwRN8KlrFecggllmpoY9wyKYUjgvu6a8hh9TCFOytRDoIKtBQasSRH2eM6VrF
-wTlJ3MPoP8GJ6iNyHE5hlFHHc3P9HxqNK+qZfRB9zCN4zY8NQi+QmAexE9gPuVRL
-c7sOxAH/Ov4zQ9WMnGdAW7wPHyET5b3woW3ju9fJr08UtuavMyEMgHk6gKtsBkM6
-bK5fraFrbkWv3lW3SS6GRqT0sN14/zIP9CfaHu8GWG4TOdDV/d6HlJ5U+BvGQp3z
-lU54v2JfmPDtbPefzmG3+8GXb9ITCMUrGIfnHXaw4hoe8/WzSz46ZWufnPnzlWvn
-p7WDouB9lRH7/aMyIdPbKAfPIzeg1yKs3n6BXA/4ENa/msQ7MqKZpHJGinx6Yfde
-EErwThHTJXo/F8wCQRIHpAMOcHnpZHPV8rGR411A9wlZrWp00otkukSBAw4/teX6
-MfmXM14kFlYlg3uW4NO0TpelNFrBHHBFNzmIjadResQe1TW4rJ/X2aznw3jXbzii
-/rWGQIiSc4xpZbao9ZQktPtErCtU1vjJmc41qmSJgwUb81XSA8tLK5+T54KEOxM4
-eycpp8TiNE2vUnP4bVu+o8svwYDAzsxoD07RCTYFoSM
--> dw-grease
-NVGg1adhRcMDrvPKNfly
---- KcSrc4BXUEzO72Kl/qCJ+Ild9FjCMDyTwZl1Lpjj8LQ
-9N�?��!}l�r�/�_�-�T�� �dTy�J��_I� ��ED@Z�nI����9��Hf�ěr�n�a�O���᮷���c�O���'�LxՎN���3 \ No newline at end of file
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";
+ };
+ };
+ };
+}