2023-06-30 11:00:03 +02:00
|
|
|
|
# Flake 的 inputs {#flake-inputs}
|
2023-06-23 16:22:13 +02:00
|
|
|
|
|
|
|
|
|
`flake.nix` 中的 `inputs` 是一个 attribute set,用来指定当前 Flake 的依赖,inputs 有很多种类型,举例如下:
|
|
|
|
|
|
|
|
|
|
```nix
|
|
|
|
|
{
|
|
|
|
|
inputs = {
|
|
|
|
|
# 以 GitHub 仓库为数据源,指定使用 master 分支,这是最常见的 input 格式
|
|
|
|
|
nixpkgs.url = "github:Mic92/nixpkgs/master";
|
|
|
|
|
# Git URL,可用于任何基于 https/ssh 协议的 Git 仓库
|
2023-07-16 07:00:39 +02:00
|
|
|
|
git-example.url = "git+https://git.somehost.tld/user/path?ref=branch";
|
|
|
|
|
# 同样是拉取 Git 仓库,但使用 ssh 协议 + 密钥认证,同时使用了 shallow=1 参数避免复制 .git
|
|
|
|
|
ssh-git-example.url = "git+ssh://git@github.com/ryan4yin/nix-secrets.git?shallow=1";
|
2024-02-15 14:16:55 +01:00
|
|
|
|
# Archive File URL, needed in case your input use LFS.
|
|
|
|
|
# Regular git input doesn't support LFS yet.
|
|
|
|
|
git-example-lfs.url = "https://codeberg.org/solver-orgz/treedome/archive/master.tar.gz";
|
2023-07-16 07:00:39 +02:00
|
|
|
|
# 当然也可以直接依赖本地的 git 仓库
|
2023-06-23 16:22:13 +02:00
|
|
|
|
git-directory-example.url = "git+file:/path/to/repo?shallow=1";
|
2023-07-16 07:00:39 +02:00
|
|
|
|
# 使用 `dir` 参数指定某个子目录
|
|
|
|
|
nixpkgs.url = "github:foo/bar?dir=shu";
|
2023-06-23 16:22:13 +02:00
|
|
|
|
# 本地文件夹 (如果使用绝对路径,可省略掉前缀 'path:')
|
|
|
|
|
directory-example.url = "path:/path/to/repo";
|
2023-07-16 07:00:39 +02:00
|
|
|
|
|
2023-06-23 16:22:13 +02:00
|
|
|
|
# 如果数据源不是一个 flake,则需要设置 flake=false
|
2023-07-16 07:00:39 +02:00
|
|
|
|
# `flake=false` 通常被用于引入一些额外的源代码、配置文件等
|
|
|
|
|
# 在 nix 代码中可以直接通过 "${inputs.bar}/xxx/xxx" 的方式来引用其中的文件
|
|
|
|
|
# 比如说通过 `import "${inputs.bar}/xxx/xxx.nix"` 来导入其中的 nix 文件
|
|
|
|
|
# 或者直接将 "${inputs.bar}/xx/xx" 当作某些 option 的路径参数使用
|
2023-06-23 16:22:13 +02:00
|
|
|
|
bar = {
|
|
|
|
|
url = "github:foo/bar/branch";
|
|
|
|
|
flake = false;
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
sops-nix = {
|
|
|
|
|
url = "github:Mic92/sops-nix";
|
|
|
|
|
# `follows` 是 inputs 中的继承语法
|
|
|
|
|
# 这里使 sops-nix 的 `inputs.nixpkgs` 与当前 flake 的 inputs.nixpkgs 保持一致,
|
|
|
|
|
# 避免依赖的 nixpkgs 版本不一致导致问题
|
|
|
|
|
inputs.nixpkgs.follows = "nixpkgs";
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
# 将 flake 锁定在某个 commit 上
|
|
|
|
|
nix-doom-emacs = {
|
|
|
|
|
url = "github:vlaci/nix-doom-emacs?rev=238b18d7b2c8239f676358634bfb32693d3706f3";
|
|
|
|
|
flake = false;
|
|
|
|
|
};
|
2023-07-07 08:25:37 +02:00
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
outputs = { self, ... }@inputs: { ... };
|
2023-06-23 16:22:13 +02:00
|
|
|
|
}
|
2023-06-30 11:00:03 +02:00
|
|
|
|
```
|