diff --git a/common/common.nix b/common/common.nix index 30ca8d2..5ff9d77 100644 --- a/common/common.nix +++ b/common/common.nix @@ -18,6 +18,7 @@ ./server/zerobin.nix ./server/gitea.nix ./server/privatebin/privatebin.nix + ./server/drastikbot.nix ./pc/de.nix ]; diff --git a/common/server/drasktikbot.nix b/common/server/drasktikbot.nix new file mode 100644 index 0000000..f8190c6 --- /dev/null +++ b/common/server/drasktikbot.nix @@ -0,0 +1,90 @@ +{ config, pkgs, lib, ... }: + +let + cfg = config.services.drastikbot; + drastikbot = python3Packages.buildPythonApplication rec { + pname = "drastikbot"; + version = "v2.1"; + + format = "other"; + + srcs = [ + (fetchFromGitHub { + name = pname; + owner = "olagood"; + repo = pname; + rev = version; + sha256 = "1L8vTE1YEhFWzY5RYb+s5Hb4LrVJNN2leKlZEugEyRU="; + }) + (fetchFromGitHub { + name = "drastikbot_modules"; + owner = "olagood"; + repo = "drastikbot_modules"; + rev = version; + sha256 = "w1164FkRkeyWnx6a95WDbwEUvNkNwFWa/6mhKtgVw0c="; + }) + ]; + + sourceRoot = pname; + + nativeBuildInputs = [ makeWrapper ]; + + installPhase = '' + cp -r src $out/ + + arr=($srcs) + echo ''${arr[1]} + cp -r ''${arr[1]}/* $out/irc/modules + + makeWrapper ${python3}/bin/python3 $out/drastikbot \ + --prefix PYTHONPATH : ${with python3Packages; makePythonPath [requests beautifulsoup4]} \ + --add-flags "$out/drastikbot.py" + ''; + }; +in { + options.services.drastikbot = { + enable = lib.mkEnableOption "enable drastikbot"; + user = mkOption { + type = types.str; + default = "drastikbot"; + description = '' + The user drastikbot should run as + ''; + }; + group = mkOption { + type = types.str; + default = "drastikbot"; + description = '' + The group drastikbot should run as + ''; + }; + dataDir = mkOption { + type = types.str; + default = "/var/lib/drastikbot"; + description = '' + Path to the drastikbot data directory + ''; + }; + }; + + config = lib.mkIf cfg.enable { + users.users.${cfg.user} = { + isSystemUser = true; + group = cfg.group; + home = cfg.dataDir; + createHome = true; + }; + systemd.services.drastikbot = { + enable = true; + after = ["network.target"]; + wantedBy = ["multi-user.target"]; + serviceConfig.ExecStart = "${drastikbot}/drastikbot -c ${cfg.dataDir}"; + serviceConfig.User = cfg.user; + serviceConfig.Group = cfg.group; + preStart = '' + mkdir -p ${cfg.dataDir} + chown ${cfg.user} ${cfg.dataDir} + ''; + }; + }; +} \ No newline at end of file diff --git a/machines/liza/configuration.nix b/machines/liza/configuration.nix index 0320aba..040f793 100644 --- a/machines/liza/configuration.nix +++ b/machines/liza/configuration.nix @@ -65,6 +65,8 @@ age.secrets.peertube-smtp.file = ../../secrets/peertube-smtp.age; networking.firewall.allowedTCPPorts = [ 1935 ]; + services.drastikbot.enable = true; + services.searx = { enable = true; environmentFile = "/run/secrets/searx";