28 lines
813 B
Nix
28 lines
813 B
Nix
{ inputs, pkgs, ... }:
|
|
let
|
|
fn = root: map (p: "${root}/" + p) (builtins.attrNames (builtins.readDir root));
|
|
gn = root:
|
|
let items = builtins.readDir root;
|
|
fn = file: type:
|
|
if type == "regular"
|
|
then
|
|
(let m = (builtins.match "(.*)\\.cabal" file);
|
|
in if !(isNull m)
|
|
then { "${builtins.elemAt m 0}" = root; }
|
|
else {})
|
|
else {};
|
|
in builtins.foldl' (x: y: x // y) {} (builtins.attrValues (builtins.mapAttrs fn items));
|
|
hn = s:
|
|
builtins.filter
|
|
(x: (builtins.hasAttr "flake" x) && !x.flake)
|
|
s;
|
|
packagePaths = builtins.foldl'
|
|
(x: y: x // y)
|
|
{}
|
|
(map gn ((import ./packages.nix) inputs));
|
|
in
|
|
builtins.mapAttrs
|
|
(name: path: pkgs.haskellPackages.callCabal2nix name path {})
|
|
packagePaths
|
|
|