我无法理解Nix Pill 14。作者提供了makeOverridable,然后挑战用户将其集成callPackage。makeOverridable和default.nix提供如下,其中makeOverridable位于 文件 中lib.nix,callPackage位于 文件 中default.nix:
# file: lib.nix
rec {
makeOverridable = f: origArgs:
let
origRes = f origArgs;
in
origRes // { override = newArgs: makeOverridable f (origArgs // newArgs); };
}
Run Code Online (Sandbox Code Playgroud)
# file: default.nix
let
nixpkgs = import <nixpkgs> {};
allPkgs = nixpkgs // pkgs;
callPackage = path: overrides:
let f = import path;
in f ((builtins.intersectAttrs (builtins.functionArgs …Run Code Online (Sandbox Code Playgroud)