[NixOS] [taffybar] Hack around the patching of gi-gtk-hs cabal file

This commit is contained in:
2025-11-28 00:59:56 -08:00
parent 8799310710
commit c3f4f92a09
4 changed files with 77 additions and 72 deletions

View File

@@ -1,15 +1,41 @@
{
inputs = {
flake-utils.url = "github:numtide/flake-utils";
nixpkgs.url = "github:colonelpanic8/nixpkgs/remove-gi-gtk-hs-patch";
xmonad.url = "github:xmonad/xmonad/master";
taffybar.url = "github:taffybar/taffybar";
taffybar = {
url = "git+file:./taffybar";
inputs.nixpkgs.follows = "nixpkgs";
inputs.xmonad.follows = "xmonad";
};
};
outputs = { self, flake-utils, taffybar, nixpkgs, xmonad }:
let
hoverlay = final: prev: hself: hsuper: {
taffybar = hsuper.taffybar.overrideAttrs (old: {
hoverlay = final: prev: hself: hsuper:
let
fixGiVersionPackage = drv:
let
overridden = drv.override {
gi-gtk = hself.gi-gtk3;
gi-gdk = hself.gi-gdk3;
};
in prev.haskell.lib.overrideCabal overridden (oa: {
postPatch = (oa.postPatch or "") + ''
substituteInPlace ${oa.pname}.cabal \
--replace-fail "gi-gtk " "gi-gtk3 " \
--replace-fail "gi-gdk " "gi-gdk3 "
'';
});
in {
taffybar = hsuper.taffybar.overrideAttrs (_: {
doHaddock = false;
doCheck = false;
});
gi-gtk-hs =
let drv = hsuper.gi-gtk-hs;
in if final.lib.versionOlder drv.version "0.3.18"
then fixGiVersionPackage drv
else drv;
imalison-taffybar = prev.haskell.lib.addPkgconfigDepends (
hself.callCabal2nix "imalison-taffybar"
(
@@ -34,9 +60,9 @@
};
defComp = { compiler = "ghc94"; };
overlay = xmonad.lib.fromHOL hoverlay defComp;
overlays = [ taffybar.overlay overlay ];
overlayList = [ taffybar.overlays.default overlay ];
in flake-utils.lib.eachDefaultSystem (system:
let pkgs = import nixpkgs { inherit system overlays; config.allowBroken = true; };
let pkgs = import nixpkgs { inherit system; overlays = overlayList; config.allowBroken = true; };
hpkgs = pkgs.lib.attrsets.getAttrFromPath (xmonad.lib.hpath defComp) pkgs;
in
{
@@ -48,5 +74,11 @@
];
};
defaultPackage = hpkgs.imalison-taffybar;
}) // { inherit overlay overlays; } ;
}) // {
inherit overlay;
overlays = {
default = overlay;
taffybar = taffybar.overlays.default;
};
} ;
}