Add pkgs.haskell.lib.readDirectory
utility
This adds a `readDirectory` utility that can be used to "slurp" a directory full of `cabal2nix`-generated files and transform them into a Haskell package override set. The main use of this is so that users don't have to write: ``` { overrides = self: super: { foo = self.callPackage ./path/to/foo.nix { }; bar = self.callPackage ./path/to/bar.nix { }; ... }; } ``` Instead, they can write: ``` { overrides = pkgs.haskell.lib.readDirectory ./path/to; } ``` This is a an alternative to `packageSourceOverrides` which primarily addresses the following use cases: * The desired package is not yet available in `all-cabal-hashes` (perhaps the user is pinned to an older revision of `nixpkgs`) * The default `cabal2nix` invocation used by `packageSourceOverrides` does not use the desired `cabal2nix` flags * The user wants to avoid the use of import-from-derivation
This commit is contained in:
parent
208091b31b
commit
e57fd11bb4
@ -382,4 +382,23 @@ rec {
|
|||||||
allPkgconfigDepends;
|
allPkgconfigDepends;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
# Utility to convert a directory full of `cabal2nix`-generated files into a
|
||||||
|
# package override set
|
||||||
|
#
|
||||||
|
# readDirectory : Directory -> HaskellPackageOverrideSet
|
||||||
|
readDirectory =
|
||||||
|
directory:
|
||||||
|
|
||||||
|
self: super:
|
||||||
|
let
|
||||||
|
haskellPaths = builtins.attrNames (builtins.readDir directory);
|
||||||
|
|
||||||
|
toKeyVal = file: {
|
||||||
|
name = builtins.replaceStrings [ ".nix" ] [ "" ] file;
|
||||||
|
|
||||||
|
value = self.callPackage (directory + "/${file}") { };
|
||||||
|
};
|
||||||
|
|
||||||
|
in
|
||||||
|
builtins.listToAttrs (map toKeyVal haskellPaths);
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user