Skip to content

Instantly share code, notes, and snippets.

@benkolera
Created November 22, 2018 10:27
Show Gist options
  • Save benkolera/849329d40d1511372a3661a96277c4c8 to your computer and use it in GitHub Desktop.
Save benkolera/849329d40d1511372a3661a96277c4c8 to your computer and use it in GitHub Desktop.
pkgs: self: super:
let
foo = ../../consumer-data-au-api-client;
upstreamOverrides = {
consumer-data-au-api-types = import ../../consumer-data-au-api-types/nix/consumer-data-au-api-types-overrides.nix;
consumer-data-au-api-client = import "${foo}/nix/consumer-data-au-api-client-overrides.nix";
};
bankOverrides = pkgs: self: super: {
consumer-data-au-api-types = self.callPackage (import ../../consumer-data-au-api-types/consumer-data-au-api-types.nix) {};
consumer-data-au-api-client = self.callPackage (import ../../consumer-data-au-api-client/consumer-data-au-api-client.nix) {};
};
composedOverrides =
pkgs.lib.foldr
(x: acc: pkgs.lib.composeExtensions acc (x pkgs))
(_: _: {})
(builtins.attrValues upstreamOverrides ++ [bankOverrides]);
in
composedOverrides self super
pkgs: self: super:
let
upstreamOverrides = {
consumer-data-au-api-types = import ../../consumer-data-au-api-types/nix/consumer-data-au-api-types-overrides.nix;
consumer-data-au-api-client = import ../../consumer-data-au-api-client/nix/consumer-data-au-api-client-overrides.nix;
};
bankOverrides = pkgs: self: super: {
consumer-data-au-api-types = self.callPackage (import ../../consumer-data-au-api-types/consumer-data-au-api-types.nix) {};
consumer-data-au-api-client = self.callPackage (import ../../consumer-data-au-api-client/consumer-data-au-api-client.nix) {};
};
composedOverrides =
pkgs.lib.foldr
(x: acc: pkgs.lib.composeExtensions acc (x pkgs))
(_: _: {})
(builtins.attrValues upstreamOverrides ++ [bankOverrides]);
in
composedOverrides self super
bkolera at bkolera in ~/src/github/ConsumerDataStandardsAustralia/conformance/consumer-data-au-lambdabank (feature/client●) 
$ nix-shell                                        
error: getting status of '/nix/store/consumer-data-au-api-types/nix/consumer-data-au-api-types-overrides.nix': No such file or directory

This happens because for some reason the non string path is interpreted locally for some reason the string interpolated one gets done in terms of the nix store? Weird.

The override that it is loading looks like the following file. It has a relative path in it.

It's note worthy that if I try to make a string called "../../consumer-data-au-api-client/..." nix yells at me for having a string path that isn't absolute. So there is some magic at play.

pkgs: self: super:
let
srcs = {
};
upstreamOverrides = {
consumer-data-au-api-types = import ../../consumer-data-au-api-types/nix/consumer-data-au-api-types-overrides.nix;
};
clientOverrides = pkgs: (self: super: {
consumer-data-au-api-types = self.callPackage (import ../../consumer-data-au-api-types/consumer-data-au-api-types.nix) {};
});
composedOverrides =
pkgs.lib.foldr
(x: acc: pkgs.lib.composeExtensions acc (x pkgs))
(_: _: {})
(builtins.attrValues upstreamOverrides ++ [clientOverrides]);
in
composedOverrides self super
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment