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 | |
parent | 8798940cad00296d3a9e88988e6678eef670d21a (diff) |
Fix 'MANPATH used but not declared'
-rw-r--r-- | home/dev-utils/default.nix | 2 | ||||
-rw-r--r-- | pkgs/duksebot/default.nix | 44 | ||||
-rw-r--r-- | secrets/cloudflare-ddns-token.age | 19 | ||||
-rw-r--r-- | services/duksebot/default.nix | 71 |
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"; + }; + }; + }; +} |