通过 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 部分似乎有效。