1
0
Fork 0
nixos-config/packages/flake-module.nix

107 lines
3.2 KiB
Nix
Raw Normal View History

2023-02-03 05:37:18 +00:00
{
lib,
inputs,
...
}: let
2023-03-03 11:48:27 +00:00
stable-pkgs = inputs.nixos-stable.legacyPackages.x86_64-linux;
unstable-pkgs = inputs.nixos-unstable.legacyPackages.x86_64-linux;
inherit (unstable-pkgs.haskell.lib.compose) appendPatch overrideCabal;
2023-01-19 03:13:41 +00:00
includePatterns = [
".hs"
".cabal"
"LICENSE"
2023-02-23 14:46:36 +00:00
"default.nix"
2023-01-19 03:13:41 +00:00
"CHANGELOG.md"
];
cleanCabalPackage = {
name,
source,
extraPatterns ? [],
2023-03-03 11:48:27 +00:00
overrides ? _: {},
2023-02-23 14:46:36 +00:00
}: hpkgs: let
cleanSource = lib.sourceFilesBySuffices source (includePatterns ++ extraPatterns);
in
lib.pipe {}
2023-01-19 03:13:41 +00:00
[
2023-02-23 14:46:36 +00:00
(hpkgs.callPackage source)
(overrideCabal (
2023-03-03 11:48:27 +00:00
old:
{
src = cleanSource;
preConfigure = ''
echo "Checking that default.nix is up-to-date "
${lib.getExe hpkgs.cabal2nix} . > fresh-default.nix
cp ${cleanSource}/default.nix .
chmod u+w default.nix
${lib.getExe stable-pkgs.alejandra} -q fresh-default.nix default.nix
${stable-pkgs.diffutils}/bin/diff -w default.nix fresh-default.nix
echo "default.nix confirmed to be up-to-date."
'';
}
// overrides old
2023-02-23 14:46:36 +00:00
))
2023-01-19 03:13:41 +00:00
hpkgs.buildFromCabalSdist
];
haskellPackagesOverlay = final: prev:
lib.mapAttrs (_: package: package final) myHaskellPackages
// {
2023-02-13 12:23:27 +00:00
# For nixpkgs-bot, this patch is already merged upstream and can be removed on the next release
2023-01-19 03:13:41 +00:00
matrix-client =
2023-03-03 11:48:27 +00:00
appendPatch (stable-pkgs.fetchpatch {
2023-01-19 03:13:41 +00:00
url = "https://github.com/softwarefactory-project/matrix-client-haskell/commit/97cb1918fcdf9b0249c6c8e70c7bfc664d718022.patch";
sha256 = "sha256-YyxgfNO5RtqpKJ9UOYPlRple0FuNmjAB1iy9vYy0HOE=";
relative = "matrix-client";
})
prev.matrix-client;
};
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-03-03 11:48:27 +00:00
status-script = cleanCabalPackage {
name = "status-script";
source = ./status-script;
overrides = old: {
buildDepends = builtins.attrValues {
2023-03-07 11:20:49 +00:00
inherit (stable-pkgs) git khal playerctl notmuch jq tailscale;
2023-03-06 23:42:44 +00:00
inherit (unstable-pkgs) nix nix-diff;
2023-03-03 11:48:27 +00:00
};
};
};
2023-01-19 03:13:41 +00:00
};
2023-03-03 11:48:27 +00:00
hpkgs = unstable-pkgs.haskellPackages.override {
2023-02-03 05:37:18 +00:00
overrides = haskellPackagesOverlay;
};
packages = selectHaskellPackages hpkgs;
2023-01-19 03:13:41 +00:00
in {
2023-03-02 23:06:45 +00:00
flake = {
lib = {inherit selectHaskellPackages;};
overlays = {inherit haskellPackagesOverlay;};
2023-02-03 05:37:18 +00:00
};
perSystem = {config, ...}: {
inherit packages;
};
2023-01-19 03:13:41 +00:00
}