You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何nix-shell环境可用Ollama,flake环境却报$HOME未定义错误?

Nix Flake环境下Ollama启动报错$HOME is not defined的解决方法

问题情况

  • 使用nix-shell -p ollama创建的虚拟环境可正常运行以下命令,成功使用Mistral模型聊天:
    ollama start &
    ollama run mistral
    
  • 但使用如下Flake配置通过nix develop创建环境后,执行ollama.start或ollama.serve时出现错误:

    Error: $HOME is not defined

  • 若不先启动Ollama,运行ollama.run会提示Ollama未启动。

解决方法

方法1:手动设置HOME后启动

在nix develop进入的环境中,先执行命令设置HOME变量,再启动Ollama:

export HOME="$HOME"
ollama start &

之后即可正常运行ollama run mistral。也可以直接指定你的用户目录,比如export HOME=/home/你的用户名。

方法2:修改Flake配置自动注入HOME

修改Flake的devShell配置,添加shellHook自动传递HOME环境变量:

{
  inputs.nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
  inputs.flake-utils.url = "github:numtide/flake-utils";
  outputs = { self, nixpkgs, flake-utils }:
    flake-utils.lib.eachDefaultSystem (system:
      let
        pkgs = nixpkgs.legacyPackages.${system};
        ollama = pkgs.ollama;
      in {
        devShells.default = pkgs.mkShell {
          buildInputs = [
            pkgs.curl
            ollama
          ];
          shellHook = ''
            export HOME="${builtins.getEnv "HOME"}"
          '';
        };
      });
}

重新执行nix develop进入环境后,直接启动Ollama即可正常运行。

方法3:指定Ollama数据目录绕过HOME

通过设置OLLAMA_DATA_DIR环境变量指定模型存储路径,无需依赖HOME:

export OLLAMA_DATA_DIR="$HOME/.ollama"
ollama serve &

也可以自定义路径,比如export OLLAMA_DATA_DIR=/tmp/ollama-data,只要目录有读写权限即可。

内容的提问来源于stack exchange,提问作者Pierre-olivier Gendraud

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.27 18:26:01