标签: nix-flake

Nix flakes 中 `(import nixpkgs) { ... }` 背后的机制是什么?

我正在努力尽可能多地了解尼克斯薄片。nixpkgs我对通常导入输入并且导入的值作为函数调用这一事实感到困惑。结果如何import nixpkgs映射到薄片中的代码nixpkgs

看起来这种用法nixpkgs在薄片中是常见的做法:

# flake.nix
{
  inputs = {
    flake-utils.url = "github:numtide/flake-utils";
    nixpkgs.url = "github:NixOS/nixpkgs/nixpkgs-unstable";
    /* ... */
  };

  outputs = { self, flake-utils, nixpkgs /*, ... */ }:
    flake-utils.lib.eachDefaultSystem (system:
      let
        pkgs = (import nixpkgs) {
          inherit system;
        };
      in
      {
        /* ... */
      }
    );
}
Run Code Online (Sandbox Code Playgroud)

我的理解是,nixpkgs这个flakeoutputs函数中的值是由flake产生的属性集nixpkgs。据我了解,薄片输出是一个推导,并且可以导入推导。但是导入的值如何变成函数呢?我希望它是一个属性集。

我看到nixpkgs flake包含一个lib输出。是否有某种机制可以lib调用具有属性路径的属性?我一直在寻找这方面的信息,但没有找到任何信息。

如果(import nixpkgs) {}有效地调用该lib属性,那么导入与直接调用有何不同nixpkgs.lib?根据我所读到的内容,导入派生对强制评估或不强制评估某些内容有一定的影响。我还不明白细节。

nix nix-flake

5
推荐指数
1
解决办法
2518
查看次数

Nix Flake:如何接受 Android SDK 许可证

我正在尝试使用 nix flakes 进行 android 开发。

这是我的 flake.nix:

{
  description = "test";
  outputs = { self, nixpkgs }: {
    packages.x86_64-linux.hello = nixpkgs.legacyPackages.x86_64-linux.hello;
    devShell.x86_64-linux = nixpkgs.legacyPackages.x86_64-linux.mkShell {
      buildInputs = [
        nixpkgs.legacyPackages.x86_64-linux.androidenv.androidPkgs_9_0.androidsdk
      ];
    };
  };
}
Run Code Online (Sandbox Code Playgroud)

跑步nix develop给了我这样的信息:

       You must accept the following licenses:
         - android-sdk-license

       by setting nixpkgs config option 'android_sdk.accept_license = true;'.
Run Code Online (Sandbox Code Playgroud)

使用薄片时如何传递此选项nixpkgs

nix nix-flake

4
推荐指数
1
解决办法
846
查看次数

为什么 `nix flake show` 构建 ghc?

如果我查看M1 计算机的haskell.nix flake 提供的输出,它会开始构建 ghc-8.8.4 等。

\n
\xe2\x9d\xaf nix flake show github:input-output-hk/haskell.nix\ngithub:input-output-hk/haskell.nix/1b54ea01568299a0eda578ae9395e20d5c699ee1\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80checks\n\xe2\x94\x82   \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80aarch64-darwin\ntrace: haskell-nix.haskellLib.cleanGit: /nix/store/jmx2m0ldgrjq7p3gb4yyca47nvbvspfl-source does not seem to be a git repository,\nassuming it is a clean checkout.\ntrace: No index state specified for haskell-project, using the latest index state that we know about (2022-02-07T00:00:00Z)!\ntrace: No index state specified for haskell-project, using the latest index state that we know about (2022-02-07T00:00:00Z)!\ntrace: No index state specified for haskell-project, using the latest index state that we know about (2022-02-07T00:00:00Z)!\ntrace: WARNING: No materialized …
Run Code Online (Sandbox Code Playgroud)

haskell nix nix-flake

4
推荐指数
1
解决办法
430
查看次数

标签 统计

nix ×3

nix-flake ×3

haskell ×1