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

使用flake.nix时出现“Dependency is not of a valid type”错误如何调试?

问题原因与调试修复方案

错误根源

你遇到的类型错误是因为pkgs.mkShell的packages列表要求每个元素都是Nix derivation(实际的包对象),但你现在传入的是整个属性集{ swag = ...; },而非属性集里的swag包本身。

调试步骤

  • 单独验证自定义包:在项目根目录执行nix repl,输入以下命令检查导入结果:
    pkgs = import nixpkgs { system = "x86_64-linux"; }; # 替换为你的系统架构
    import ./.deps/swag.nix { inherit pkgs; }
    
    会看到返回的是包含swag属性的集合,而非单个derivation,这就验证了类型不匹配的问题。
  • 添加追踪日志:在flake.nix里用builtins.trace打印导入内容,直观查看传入的类型:
    devShells.default = pkgs.mkShell {
      packages = [ 
        (builtins.trace "导入的内容:" (import ./.deps/swag.nix { inherit pkgs; }))
      ];
    };
    
    运行nix develop时会在终端输出导入的属性集,确认问题所在。
  • 核对参数要求:确认pkgs.mkShell的packages参数接受的是derivation列表,而非属性集或其他类型。

修复方案

有两种可选方式:

方式1:修改flake.nix,提取属性集里的swag包

调整packages列表的元素,明确取出属性集中的swag derivation:

{
  inputs = {
    flake-utils.url = "github:numtide/flake-utils";
    nixpkgs.url = "github:nixos/nixpkgs";
  };

  outputs = { self, nixpkgs, flake-utils }:
    flake-utils.lib.eachDefaultSystem (system:
      let pkgs = import nixpkgs { inherit system; };
          customSwag = import ./.deps/swag.nix { inherit pkgs; };
      in {
        devShells.default = pkgs.mkShell {
          packages = [ customSwag.swag ];
        };
      });
}

方式2:修改swag.nix,直接返回derivation

把swag.nix改成直接输出buildGoModule的结果,而非包裹在属性集里:

# .deps/swag.nix
{ pkgs }:
pkgs.buildGoModule rec {
  name = "go-swag-1.8.1";
  version = "1.8.1";

  src = pkgs.fetchFromGitHub {
    owner = "swaggo";
    repo = "swag";
    rev = "v${version}";
    sha256 = "sha256-r19SYRHewbPL6S7bZGGqJk9QX8V9IxmRx3zyDeKGdn0=";
  };

  vendorHash = "sha256-QphjiJSQRULphWjrJ8RzrUblTDYL/fYoSNT3+g0tP48=";
  subPackages = [ "cmd/swag" ];
}

此时flake.nix里的packages可以保持原来的写法:

packages = [ (import ./.deps/swag.nix { inherit pkgs; }) ];

内容的提问来源于stack exchange,提问作者MatrixManAtYrService

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 03:07:49