2023-02-03 05:37:18 +00:00
|
|
|
{
|
|
|
|
lib,
|
|
|
|
inputs,
|
|
|
|
...
|
|
|
|
}: let
|
|
|
|
pkgs = inputs.nixos-unstable.legacyPackages.x86_64-linux;
|
2023-01-19 03:13:41 +00:00
|
|
|
inherit (pkgs.haskell.lib.compose) unmarkBroken doJailbreak dontCheck appendPatch;
|
|
|
|
includePatterns = [
|
|
|
|
".hs"
|
|
|
|
".cabal"
|
|
|
|
"LICENSE"
|
|
|
|
"CHANGELOG.md"
|
|
|
|
];
|
|
|
|
cleanCabalPackage = {
|
|
|
|
name,
|
|
|
|
source,
|
|
|
|
extraPatterns ? [],
|
|
|
|
}: hpkgs:
|
|
|
|
lib.pipe source
|
|
|
|
[
|
|
|
|
(src: lib.sourceFilesBySuffices src (includePatterns ++ extraPatterns))
|
|
|
|
(src: hpkgs.callCabal2nix name src {})
|
|
|
|
hpkgs.buildFromCabalSdist
|
|
|
|
];
|
|
|
|
haskellPackagesOverlay = final: prev:
|
|
|
|
lib.mapAttrs (_: package: package final) myHaskellPackages
|
|
|
|
// {
|
|
|
|
# For kassandra
|
|
|
|
clay = unmarkBroken (doJailbreak prev.clay);
|
|
|
|
streamly-bytestring =
|
|
|
|
unmarkBroken (dontCheck prev.streamly-bytestring);
|
|
|
|
# For nixpkgs-bot
|
|
|
|
matrix-client =
|
|
|
|
appendPatch (pkgs.fetchpatch {
|
|
|
|
url = "https://github.com/softwarefactory-project/matrix-client-haskell/commit/97cb1918fcdf9b0249c6c8e70c7bfc664d718022.patch";
|
|
|
|
sha256 = "sha256-YyxgfNO5RtqpKJ9UOYPlRple0FuNmjAB1iy9vYy0HOE=";
|
|
|
|
relative = "matrix-client";
|
|
|
|
})
|
|
|
|
prev.matrix-client;
|
|
|
|
aeson-schemas = unmarkBroken (dontCheck prev.aeson-schemas);
|
|
|
|
};
|
|
|
|
selectHaskellPackages = attrs: lib.mapAttrs (name: _: attrs.${name}) myHaskellPackages;
|
|
|
|
myHaskellPackages = {
|
|
|
|
wizards-dialog = cleanCabalPackage {
|
|
|
|
name = "wizards-dialog";
|
|
|
|
source = ./wizards-dialog;
|
|
|
|
};
|
|
|
|
logfeed = cleanCabalPackage {
|
2023-01-31 01:15:51 +00:00
|
|
|
name = "rssfeeds";
|
|
|
|
source = ./rssfeeds;
|
2023-01-19 03:13:41 +00:00
|
|
|
};
|
|
|
|
kassandra = cleanCabalPackage {
|
|
|
|
name = "kassandra";
|
|
|
|
source = ./kassandra/kassandra;
|
|
|
|
};
|
|
|
|
kassandra-standalone = cleanCabalPackage {
|
|
|
|
name = "standalone";
|
|
|
|
source = ./kassandra/standalone;
|
|
|
|
};
|
|
|
|
nixpkgs-bot = cleanCabalPackage {
|
|
|
|
name = "nixpkgs-bot";
|
|
|
|
source = ./nixpkgs-bot;
|
|
|
|
};
|
2023-02-07 00:48:03 +00:00
|
|
|
builders-configurator = cleanCabalPackage {
|
|
|
|
name = "builders-configurator";
|
|
|
|
source = ./builders-configurator;
|
|
|
|
};
|
2023-01-19 03:13:41 +00:00
|
|
|
};
|
2023-02-03 05:37:18 +00:00
|
|
|
hpkgs = pkgs.haskellPackages.override {
|
|
|
|
overrides = haskellPackagesOverlay;
|
|
|
|
};
|
|
|
|
packages = selectHaskellPackages hpkgs;
|
2023-01-19 03:13:41 +00:00
|
|
|
in {
|
2023-02-03 05:37:18 +00:00
|
|
|
flake.overlays = {
|
|
|
|
inherit haskellPackagesOverlay;
|
|
|
|
addMyHaskellPackages = _: _: packages;
|
|
|
|
};
|
|
|
|
perSystem = {config, ...}: {
|
|
|
|
inherit packages;
|
|
|
|
devShells.haskell = hpkgs.shellFor {
|
|
|
|
packages = hpkgs: (builtins.attrValues (selectHaskellPackages hpkgs));
|
|
|
|
shellHook = config.pre-commit.installationScript;
|
|
|
|
buildInputs = [
|
|
|
|
hpkgs.haskell-language-server
|
|
|
|
hpkgs.cabal-install
|
|
|
|
];
|
|
|
|
};
|
|
|
|
};
|
2023-01-19 03:13:41 +00:00
|
|
|
}
|