diff --git a/modules/nixos/secrets/default.nix b/modules/nixos/secrets/default.nix index 7d5bfa6..a222b4f 100644 --- a/modules/nixos/secrets/default.nix +++ b/modules/nixos/secrets/default.nix @@ -1,108 +1,111 @@ -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 diff --git a/modules/nixos/services/ollama/default.nix b/modules/nixos/services/ollama/default.nix new file mode 100644 index 0000000..0c8f444 --- /dev/null +++ b/modules/nixos/services/ollama/default.nix @@ -0,0 +1,93 @@ +{ + pkgs, + config, + lib, + namespace, + ... +}: +let + cfg = config.${namespace}.services.ollama; + + api.port = 11434; + webui.port = 8130; +in +{ + options = { + ${namespace}.services.ollama = { + enable = lib.mkEnableOption "Enables Ollama."; + auth = { + password = lib.mkOption { + default = ""; + type = lib.types.str; + description = "The password to use for authentication."; + example = "MySuperSecurePassword123"; + }; + user = lib.mkOption { + default = "ltuser"; + type = lib.types.str; + description = "The username to use for authentication."; + }; + }; + home = lib.mkOption { + default = ""; + type = lib.types.str; + description = "Where to store Ollama's files"; + example = "/var/lib/ollama"; + }; + url = lib.mkOption { + default = ""; + type = lib.types.str; + description = "The complete URL where Ollama is hosted."; + example = "https://ollama.example.com"; + }; + }; + }; + + config = lib.mkIf cfg.enable { + services = { + ollama = { + enable = true; + acceleration = + with config.${namespace}.gpu; + if amd.enable then + "rocm" + else if nvidia.enable then + "cuda" + else + false; + home = cfg.home; + }; + + open-webui = { + enable = true; + port = webui.port; + environment = { + ANONYMIZED_TELEMETRY = "False"; + DO_NOT_TRACK = "True"; + SCARF_NO_ANALYTICS = "True"; + OLLAMA_API_BASE_URL = "http://127.0.0.1:${ + builtins.toString config.${namespace}.services.ollama.port + }"; + }; + stateDir = "${cfg.home}/open-webui"; + }; + + nginx.virtualHosts."${cfg.url}" = { + useACMEHost = lib.${namespace}.getDomainFromURI cfg.url; + forceSSL = true; + basicAuth = { + "${cfg.auth.user}" = cfg.auth.password; + }; + locations."/" = { + proxyPass = "http://127.0.0.1:${builtins.toString api.port}"; + extraConfig = "proxy_ssl_server_name on;"; + }; + }; + }; + + systemd.services = { + ollama.unitConfig.RequiresMountsFor = cfg.home; + nginx.wants = [ config.systemd.services.ollama.name ]; + }; + }; +}