通过 configuration.nix 覆盖构建
Override build through configuration.nix
是否可以覆盖现有包的构建脚本,或者在本例中 vscode-with-extensions。我知道如何覆盖一个选项,在这个包中是 vscodeExtensions
.
似乎显示了一种方法,但我似乎没有看到在文件中覆盖 runCommand
的位置。
覆盖函数只能更改函数的输入。无法修改任意子表达式。
假设您只想为您的配置添加一个扩展,在我看来您不需要实际修改调用 runCommand
.
的整个表达式
以下是覆盖 vscodeExtensions
参数的方法:
let
overlay = self: super: {
vscode-with-extensions = super.vscode-with-extensions.override {
vscodeExtensions =
super.vscode-utils.extensionsFromVscodeMarketplace [
{
name = "vscode-hie-server";
publisher = "alanz";
version = "0.0.19";
sha256 = "0x0cs7c5q90p1ffig2wb5v21z3yj3p2chgpvbnlm4gfsnw7qpfzr";
}
] ++ with super.vscode-extensions; [
bbenoist.Nix
];
};
};
in
# NixOS:
# { nixpkgs.overlays = [ overlay ]; }
#
# or nix-build:
(import <nixpkgs> {
overlays = [ overlay ];
}).vscode-with-extensions
如果你想把这个片段作为 NixOS 配置,注释 nix-build 部分,取消注释 NixOS 部分,你就有了一个可以添加到你的 NixOS 的模块 imports
。
免责声明:这不是我的设置,我只是在检查一下。至少 Nix 部分似乎有效。
是否可以覆盖现有包的构建脚本,或者在本例中 vscode-with-extensions。我知道如何覆盖一个选项,在这个包中是 vscodeExtensions
.
runCommand
的位置。
覆盖函数只能更改函数的输入。无法修改任意子表达式。
假设您只想为您的配置添加一个扩展,在我看来您不需要实际修改调用 runCommand
.
以下是覆盖 vscodeExtensions
参数的方法:
let
overlay = self: super: {
vscode-with-extensions = super.vscode-with-extensions.override {
vscodeExtensions =
super.vscode-utils.extensionsFromVscodeMarketplace [
{
name = "vscode-hie-server";
publisher = "alanz";
version = "0.0.19";
sha256 = "0x0cs7c5q90p1ffig2wb5v21z3yj3p2chgpvbnlm4gfsnw7qpfzr";
}
] ++ with super.vscode-extensions; [
bbenoist.Nix
];
};
};
in
# NixOS:
# { nixpkgs.overlays = [ overlay ]; }
#
# or nix-build:
(import <nixpkgs> {
overlays = [ overlay ];
}).vscode-with-extensions
如果你想把这个片段作为 NixOS 配置,注释 nix-build 部分,取消注释 NixOS 部分,你就有了一个可以添加到你的 NixOS 的模块 imports
。
免责声明:这不是我的设置,我只是在检查一下。至少 Nix 部分似乎有效。