【发布时间】:2022-12-31 00:32:45
【问题描述】:
我正在尝试在我的家庭管理器(使用 nix-darwin)配置中使用外部(因为在 nixpkgs 中不存在)薄片。
flake 有一个默认输出,它是由 buildGoModule 生成的二进制文件:
https://github.com/pcasaretto/dotenv/blob/f41d74aa56c2528c46f58977010c6ce99619921a/flake.nix
default = buildGoModule {
pname = "dotenv";
inherit version;
# In 'nix develop', we don't need a copy of the source tree
# in the Nix store.
src = ./.;
vendorSha256 = "sha256-pQpattmS9VmO3ZIQUFn66az8GSmB4IvYhTTCFn6SUmo=";
};
我已经设法将薄片添加到我的配置中,它可以构建,但二进制文件没有出现在我的路径中
https://github.com/pcasaretto/nix-home/commit/18e82337efdb0579588e6633c0ae8006788ae402
# flake.nix
dotenv.url = "github:pcasaretto/dotenv";
dotenv.inputs.nixpkgs.follows = "nixpkgs-unstable";
# ...
home-manager.extraSpecialArgs = { dotenv = dotenv; };
# home.nix
{ config, pkgs, lib, dotenv, ... }:
# ...
home.packages = [
# ...
dotenv
【问题讨论】:
-
请edit包含足够的信息以允许回答在问题本身,根据minimal reproducible example指南。目标是即使链接断开(您的 github 存储库被删除或重命名,f/e),答案仍然对其他人有用;并帮助搜索引擎正确索引。将链接视为纯粹的补充信息不是允许在确定答案是否正确时参考有助于确保我们实现该目标。
-
我会在高级别上指出
builtins.getFlake是你的朋友,一旦你打电话给你就可以参考packages.${builtins.currentSystem},但在我看到代码之前不能说更多(事实上,我到目前为止,从问题文本中可以看出,您可能已经知道以上内容)。 -
...省略得太多了——在理想的世界中,这将是最短的事情无需更改即可运行查看相同的问题或测试建议的修复程序,并且代码被削减到足以使其不再有效的语法。也就是说,
dotenvflake 本身并不是您在包裹列表中需要的;相反,你需要像dotenv.packages.${builtins.currentSystem}.default这样的东西。就个人而言,我在输入部分将我的薄片命名为dotenvFlake以区分 dotenv薄片来自 dotenv包裹,但是 YMMV。 -
(
packages.${system}.default位置假设nix flake check为您的薄片传递,因此它通常格式正确......是的,对吧?) -
为了对此进行测试,我已更改为
dotenv.packages.aarch64-darwin.default包含在home.packages下的行并且它起作用了。这是有道理的。