【问题标题】:Using an external flake in home-manager/darwin nix config在 home-manager/darwin nix 配置中使用外部 flake
【发布时间】: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},但在我看到代码之前不能说更多(事实上,我到目前为止,从问题文本中可以看出,您可能已经知道以上内容)。
  • ...省略得太多了——在理想的世界中,这将是最短的事情无需更改即可运行查看相同的问题或测试建议的修复程序,并且代码被削减到足以使其不再有效的语法。也就是说,dotenv flake 本身并不是您在包裹列表中需要的;相反,你需要像dotenv.packages.${builtins.currentSystem}.default这样的东西。就个人而言,我在输入部分将我的薄片命名为 dotenvFlake 以区分 dotenv薄片来自 dotenv包裹,但是 YMMV。
  • packages.${system}.default 位置假设 nix flake check 为您的薄片传递,因此它通常格式正确......是的,对吧?)
  • 为了对此进行测试,我已更改为 dotenv.packages.aarch64-darwin.default 包含在 home.packages 下的行并且它起作用了。这是有道理的。

标签: nix nix-flake


【解决方案1】:

home.packages 需要包含薄片中的包,而不是薄片本身。

改变:

home.packages = [ # ...
  dotenv
];

到:

home.packages = [ # ...
  dotenv.packages.${pkgs.system}.default
];

如果您不在薄片(或其他强制纯度)上下文中,则可以使用 builtins.currentSystem 而不是 pkgs.system

【讨论】:

猜你喜欢
  • 2019-11-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-01-06
  • 2021-10-17
  • 2014-10-30
  • 1970-01-01
  • 2018-01-07
相关资源
最近更新 更多