{ pkgs , config , ... }: { #systemd.services.tts = { # after = [ "network.target" ]; # wantedBy = [ "multi-user.target" ]; # path = [ pkgs.espeak ]; # environment.HOME = "/var/lib/tts"; # serviceConfig = { # CapabilityBoundingSet = ""; # DeviceAllow = ""; # DevicePolicy = "closed"; # LockPersonality = true; # # jit via numba->llvmpipe # MemoryDenyWriteExecute = false; # PrivateDevices = true; # PrivateUsers = true; # ProtectHome = true; # ProtectHostname = true; # ProtectKernelLogs = true; # ProtectKernelModules = true; # ProtectKernelTunables = true; # ProtectControlGroups = true; # ProtectProc = "invisible"; # ProcSubset = "pid"; # RestrictAddressFamilies = [ # "AF_UNIX" # "AF_INET" # "AF_INET6" # ]; # RestrictRealtime = true; # RestrictNamespaces = true; # SystemCallArchitectures = "native"; # SystemCallFilter = [ # "@system-service" # "~@privileged" # ]; # UMask = "0077"; # StateDirectory = "tts"; # DynamicUser = true; # User = "tts"; # Group = "tts"; # ExecStart = '' # ${pkgs.tts}/bin/tts-server --model_name tts_models/en/ljspeech/vits --port 5004 # ''; # }; #}; # find models with ${pkgs.tts}/bin/tts --list_models services.tts = { servers = { english = { enable = true; port = 5300; #model = "tts_models/en/ljspeech/tacotron2-DDC"; model = "tts_models/en/ljspeech/vits"; }; german = { enable = true; port = 5301; #model = "tts_models/de/thorsten/tacotron2-DDC"; model = "tts_models/de/thorsten/vits"; }; }; }; # fixes some issues systemd.services.tts-german.serviceConfig.RestrictAddressFamilies = [ "AF_UNIX" ]; systemd.services.tts-english.serviceConfig.RestrictAddressFamilies = [ "AF_UNIX" ]; services.nginx = { recommendedProxySettings = true; enable = true; virtualHosts."tts.${config.networking.hostName}.private" = { locations."/".proxyPass = "http://localhost:${toString config.services.tts.servers.english.port}"; }; virtualHosts."en.tts.${config.networking.hostName}.private" = { locations."/".proxyPass = "http://localhost:${toString config.services.tts.servers.english.port}"; }; virtualHosts."de.tts.${config.networking.hostName}.private" = { locations."/".proxyPass = "http://localhost:${toString config.services.tts.servers.german.port}"; }; }; }