{ lib, config, pkgs, flakeRoot, ... }: let # Path to the config file (relative to your flake or Home Manager root) ollamaConfPath = flakeRoot + "/assets/conf/apps/ai/ollama/ollama.conf"; # Read and parse the config file (assuming it's in shell variable format) ollamaConf = builtins.readFile ollamaConfPath; # Extract values using regex (adjust if your format differs) extractValue = key: let match = builtins.match ("(?m)^${key}=\"([^\"]+)\"$") ollamaConf; in if match != null && match != [] then # Return the first capture group of the first match builtins.elemAt (builtins.elemAt match 0) 1 else null; ollamaHost = extractValue "OLLAMA_HOST"; ollamaDefaultModel = extractValue "OLLAMA_DEFAULT_MODEL"; in { # Install Ollama home.packages = with pkgs; [ ollama ]; # Configure Ollama environment variables home.sessionVariables = { OLLAMA_HOST = if ollamaHost != null then ollamaHost else "http://127.0.0.1:11434"; OLAMA_DEFAULT_MODEL = if ollamaDefaultModel != null then ollamaDefaultModel else "codellama:70b"; }; # Optional: Start Ollama service (if using NixOS) systemd.user.services.ollama = { description = "Ollama service"; wantedBy = [ "multi-user.target" ]; serviceConfig = { ExecStart = "${pkgs.ollama}/bin/ollama serve"; Restart = "on-failure"; Environment = [ "OLLAMA_HOST=${if ollamaHost != null then ollamaHost else "http://127.0.0.1:11434"}" ]; }; }; }