diff --git a/modules/system/default.nix b/modules/system/default.nix index 258010d..f91db50 100644 --- a/modules/system/default.nix +++ b/modules/system/default.nix @@ -12,6 +12,7 @@ ./openssh.nix ./podman.nix ./seafile.nix + ./sillytavern.nix ./sudo.nix ./synapse.nix ./timecardbot.nix diff --git a/modules/system/sillytavern.nix b/modules/system/sillytavern.nix new file mode 100644 index 0000000..2b77aec --- /dev/null +++ b/modules/system/sillytavern.nix @@ -0,0 +1,44 @@ +{ pkgs, lib, config, ... }: +with lib; +{ + options.myModules.sillytavern.enable = mkEnableOption "custom sillytavern configuration"; + + config = mkIf config.myModules.sillytavern.enable { + services.caddy.virtualHosts."ai.gleipnir.technology".extraConfig = '' + reverse_proxy http://127.0.0.1:10050 + ''; + sops.secrets.sillytavern-env = with config.virtualisation.oci-containers; { + format = "dotenv"; + group = "sillytavern"; + mode = "0440"; + owner = "sillytavern"; + restartUnits = ["${backend}-sillytavern"]; + sopsFile = ../../secrets/sillytavern.env; + }; + systemd.tmpfiles.rules = [ + "d /opt/sillytavern/config 0755 sillytavern sillytavern" + "d /opt/sillytavern/data 0755 sillytavern sillytavern" + "d /opt/sillytavern/extensions 0755 sillytavern sillytavern" + "d /opt/sillytavern/plugins 0755 sillytavern sillytavern" + ]; + virtualisation.oci-containers.containers.sillytavern = { + environmentFiles = [ + "/var/run/secrets/sillytavern-env" + ]; + image = "ghcr.io/sillytavern/sillytavern:1.13.1"; + ports = [ "127.0.0.1:10050:8000" ]; + volumes = [ + "/opt/sillytavern/config:/home/node/app/config" + "/opt/sillytavern/data:/home/node/app/data" + "/opt/sillytavern/extensions:/home/node/app/public/scripts/extensions/third-party" + "/opt/sillytavern/plugins:/home/node/app/plugins" + ]; + }; + users.groups.sillytavern = {}; + users.users.sillytavern = { + group = "sillytavern"; + isNormalUser = false; + isSystemUser = true; + }; + }; +}