如何修改Nix包管理器特定derivation选项并解决home-manager调用报错
报错原因
你编写的表达式最终返回的是函数而非合法的Nix包类型,不符合home-manager home.packages 选项要求的「列表内每一项均为可直接安装的包」的类型约束。同时你直接全量覆盖configureFlags的写法也不推荐,会遗漏上游默认的配置项,后续上游更新配置时容易出现兼容问题。
正确写法
更推荐使用overrideAttrs在原有配置基础上追加参数,无需手动抄录全量默认配置项:
# 直接放在 home.packages 列表中即可,注意外层括号不要省略 (pkgs.emacsMacport.overrideAttrs (old: { configureFlags = old.configureFlags ++ [ "--with-mac-metal" ]; }))
如果你需要坚持使用overrideDerivation,正确写法如下:
(pkgs.lib.overrideDerivation pkgs.emacsMacport (old: { configureFlags = old.configureFlags ++ [ "--with-mac-metal" ]; }))
内容的提问来源于stack exchange,提问作者Ashkan
相关产品推荐
相关产品推荐

