about summary refs log tree commit diff
path: root/nixos/modules/services/misc/ollama.nix
diff options
context:
space:
mode:
authorJonas Heinrich <onny@project-insanity.org>2023-12-29 01:46:01 +0100
committerJonas Heinrich <onny@project-insanity.org>2023-12-29 15:19:55 +0100
commit67a799c40f1e177950d70bb0ea1073c4b6273b0f (patch)
tree247eea3dea5d8d0702554cf7e33f4c6187b02db2 /nixos/modules/services/misc/ollama.nix
parent017bc47e74fa7de896236c466bd3c367a7fa63b0 (diff)
nixos/ollama: init
Diffstat (limited to 'nixos/modules/services/misc/ollama.nix')
-rw-r--r--nixos/modules/services/misc/ollama.nix42
1 files changed, 42 insertions, 0 deletions
diff --git a/nixos/modules/services/misc/ollama.nix b/nixos/modules/services/misc/ollama.nix
new file mode 100644
index 0000000000000..9794bbbec464c
--- /dev/null
+++ b/nixos/modules/services/misc/ollama.nix
@@ -0,0 +1,42 @@
+{ config, lib, pkgs, ... }: let
+
+  cfg = config.services.ollama;
+
+in {
+
+  options = {
+    services.ollama = {
+      enable = lib.mkEnableOption (
+        lib.mdDoc "Server for local large language models"
+      );
+      package = lib.mkPackageOption pkgs "ollama" { };
+    };
+  };
+
+  config = lib.mkIf cfg.enable {
+
+    systemd = {
+      services.ollama = {
+        wantedBy = [ "multi-user.target" ];
+        description = "Server for local large language models";
+        after = [ "network.target" ];
+        environment = {
+          HOME = "%S/ollama";
+          OLLAMA_MODELS = "%S/ollama/models";
+        };
+        serviceConfig = {
+          ExecStart = "${lib.getExe cfg.package} serve";
+          WorkingDirectory = "/var/lib/ollama";
+          StateDirectory = [ "ollama" ];
+          DynamicUser = true;
+        };
+      };
+    };
+
+    environment.systemPackages = [ cfg.package ];
+
+  };
+
+  meta.maintainers = with lib.maintainers; [ onny ];
+
+}