feat: add ollama ✨ 💩
This commit is contained in:
parent
af95fafecc
commit
029cd3f268
2 changed files with 98 additions and 0 deletions
|
|
@ -17,6 +17,12 @@
|
|||
programs.direnv.enable = true;
|
||||
programs.direnv.nix-direnv.enable = true;
|
||||
|
||||
# ollama
|
||||
imports = [../ollama.nix];
|
||||
services.ollama = {
|
||||
enable = true;
|
||||
};
|
||||
|
||||
# Networking (macOS-safe)
|
||||
networking = {
|
||||
# Set if you want a specific hostname in macOS UI as well:
|
||||
|
|
|
|||
92
nixos/ollama.nix
Normal file
92
nixos/ollama.nix
Normal file
|
|
@ -0,0 +1,92 @@
|
|||
# src: https://github.com/nix-darwin/nix-darwin/pull/972
|
||||
{ config, lib, pkgs, ... }:
|
||||
|
||||
with lib;
|
||||
|
||||
let
|
||||
|
||||
cfg = config.services.ollama;
|
||||
|
||||
in {
|
||||
meta.maintainers = [ "velnbur" ];
|
||||
|
||||
options = {
|
||||
services.ollama = {
|
||||
enable = mkOption {
|
||||
type = types.bool;
|
||||
default = false;
|
||||
description = "Whether to enable the Ollama Daemon.";
|
||||
};
|
||||
|
||||
package = mkOption {
|
||||
type = types.path;
|
||||
default = pkgs.ollama;
|
||||
description = "This option specifies the ollama package to use.";
|
||||
};
|
||||
|
||||
host = mkOption {
|
||||
type = types.str;
|
||||
default = "127.0.0.1";
|
||||
example = "0.0.0.0";
|
||||
description = ''
|
||||
The host address which the ollama server HTTP interface listens to.
|
||||
'';
|
||||
};
|
||||
|
||||
port = mkOption {
|
||||
type = types.port;
|
||||
default = 11434;
|
||||
example = 11111;
|
||||
description = ''
|
||||
Which port the ollama server listens to.
|
||||
'';
|
||||
};
|
||||
|
||||
models = mkOption {
|
||||
type = types.nullOr types.str;
|
||||
default = null;
|
||||
example = "/path/to/ollama/models";
|
||||
description = ''
|
||||
The directory that the ollama service will read models from and download new models to.
|
||||
'';
|
||||
};
|
||||
|
||||
environmentVariables = mkOption {
|
||||
type = types.attrsOf types.str;
|
||||
default = { };
|
||||
example = {
|
||||
OLLAMA_LLM_LIBRARY = "cpu";
|
||||
HIP_VISIBLE_DEVICES = "0,1";
|
||||
};
|
||||
description = ''
|
||||
Set arbitrary environment variables for the ollama service.
|
||||
|
||||
Be aware that these are only seen by the ollama server (launchd daemon),
|
||||
not normal invocations like `ollama run`.
|
||||
Since `ollama run` is mostly a shell around the ollama server, this is usually sufficient.
|
||||
'';
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
config = mkIf cfg.enable {
|
||||
|
||||
environment.systemPackages = [ cfg.package ];
|
||||
|
||||
launchd.user.agents.ollama = {
|
||||
path = [ config.environment.systemPath ];
|
||||
|
||||
serviceConfig = {
|
||||
KeepAlive = true;
|
||||
RunAtLoad = true;
|
||||
ProgramArguments = [ "${cfg.package}/bin/ollama" "serve" ];
|
||||
|
||||
EnvironmentVariables = cfg.environmentVariables // {
|
||||
OLLAMA_HOST = "${cfg.host}:${toString cfg.port}";
|
||||
} // (optionalAttrs (cfg.models != null) {
|
||||
OLLAMA_MODELS = cfg.models;
|
||||
});
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue