通过configuration.nix覆盖构建

时间:2018-06-09 01:59:58

标签: nix nixos

是否可以覆盖现有包的构建脚本,或者在这种情况下vscode-with-extensions。我知道如何覆盖一个选项,在这个包中是vscodeExtensions

This似乎显示了一种方法,但我似乎没有看到在文件中覆盖runCommand的位置。

1 个答案:

答案 0 :(得分:2)

覆盖功能只能更改功能的输入。无法修改任意子表达式。

假设您只想在配置中添加扩展,我觉得您不需要实际修改调用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的模块。

免责声明:这不是我的设置,我只是检查出来。至少尼克斯部分似乎有效。