注:如果允许在nix中添加实验功能,请添加--extra-experimental-features nix-command --extra-experimental-features flakes
这个存储库建议这样加载shell:
nix develop github:informalsystems/cosmos.nix#cosmos-shell
似乎可行。
为了看看我是否真的理解了nix flake是如何工作的(我还没有),我正试图写一个flake。所以我只需要写
nix develop
在flake的输出中有一个字段devShell(不是devShell)。没有在这个回购。这是在configuration.nix
中定义的shell的集合。
Myflake.nix
:
{
inputs = {
nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable"; #not useful for this question
cosmos_inform_system.url = github:informalsystems/cosmos.nix;
flake-utils.url = github:numtide/flake-utils;
};
outputs = { self, nixpkgs, cosmos_inform_system, flake-utils, ... }:
flake-utils.lib.eachDefaultSystem (system:
let
shells = cosmos_inform_system.devShells;
in {
devShell.default = shells.cosmos-shell;
});
}
warning: flake output attribute 'devShell' is deprecated; use 'devShells.<system>.default' instead
error: attribute 'cosmos-shell' missing
configuration.nix
中存在宇宙壳,这是devShells
域。因此我不理解错误
为了删除警告,我替换了这一行
devShell = shells.cosmos-shell;
devShells.${system}.default = shells.cosmos-shell;
错误:flake属性'devShell。Aarch64-linux '不是一个派生
我仍然有警告。
看一下flake.nix
文件的示例。
nix flake check
与
配合使用{
inputs = {
nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable";
cosmos_inform_system.url = github:informalsystems/cosmos.nix;
flake-utils.url = github:numtide/flake-utils;
};
outputs = { self, nixpkgs, cosmos_inform_system, flake-utils, ... }:
flake-utils.lib.eachDefaultSystem (system:
let
shells = cosmos_inform_system.devShells;
in {
devShells.default = shells.${system}.cosmos-shell;
}
);
}
但拒绝开发
错误:固定输出派生'/nix/store/yz9kjwjhszzpp7g4wnbxj43zwga1zzsy-ica-go-modules.drv'中的散列不匹配:指定:sha256-ykGo5TQ + MiFoeQoglflQL3x3VN2CQuyZCIiweP/c9lM =有:sha256-D31e + G/7 kamf3gkk4iomu2g/eLlqkrkpwJa7CEjdaAk =
[1/158 built (1 failed)] building ica-go-modules (installPhase): installing
然而,我有完全相同的问题与nix develop github:informalsystems/cosmos.nix#cosmos-shell
我仍然认为我的flake文件是相同的nix develop github:informalsystems/cosmos.nix#cosmos-shell