feat(taffybar): build against local vendored packages

This commit is contained in:
2026-03-10 14:12:36 -07:00
committed by Kat Huang
parent 0ce93be240
commit df2f78d374
8 changed files with 234 additions and 149 deletions

View File

@@ -1,3 +1,9 @@
packages:
.
taffybar/
taffybar/packages/gtk-scaling-image
taffybar/packages/gtk-sni-tray
taffybar/packages/gtk-strut
taffybar/packages/status-notifier-item
taffybar/packages/dbus-menu
taffybar/packages/dbus-hslogger

View File

@@ -288,8 +288,8 @@
"xmonad-contrib": "xmonad-contrib"
},
"locked": {
"lastModified": 1772654806,
"narHash": "sha256-Z0ULX5RfYRSiebBEUJ9o9m6FKtx2bLYgO47L5zCUDM8=",
"lastModified": 1773126540,
"narHash": "sha256-EgqWupeQv8j5Rt+Kl7D/X+8LkI6i2qygpafMDFXpOY4=",
"path": "/home/imalison/dotfiles/dotfiles/config/taffybar/taffybar",
"type": "path"
},

View File

@@ -82,11 +82,15 @@
# Exclude local worktree/build artifacts from the source we feed to
# callCabal2nix. cleanSource alone still includes .worktrees/.
# Use the live local checkout directly so Nix picks up dirty nested-repo
# changes while iterating on the vendored taffybar stack.
localTaffybarCheckout = /home/imalison/dotfiles/dotfiles/config/taffybar/taffybar;
cleanedTaffybarSource = pkgs.lib.cleanSourceWith {
src = taffybar.outPath;
src = localTaffybarCheckout;
filter = path: type:
let
relPath = pkgs.lib.removePrefix "${toString taffybar.outPath}/" (toString path);
relPath = pkgs.lib.removePrefix "${toString localTaffybarCheckout}/" (toString path);
excludedTopLevel = [ ".worktrees" ".direnv" "dist" "dist-newstyle" "result" ];
isExcluded = pkgs.lib.lists.any
(prefix: relPath == prefix || pkgs.lib.hasPrefix "${prefix}/" relPath)
@@ -95,11 +99,13 @@
pkgs.lib.cleanSourceFilter path type && !isExcluded;
};
localTaffybarSubdir = subdir: cleanedTaffybarSource + "/${subdir}";
hOverrides = hself: hsuper: {
dbus-menu =
pkgs.haskell.lib.overrideCabal
(hself.callCabal2nix "dbus-menu"
(pkgs.lib.cleanSource (dbus-menu.outPath or dbus-menu))
(localTaffybarSubdir "packages/dbus-menu")
{ inherit (pkgs) gtk3; })
(_: {
doCheck = false;
@@ -111,27 +117,34 @@
status-notifier-item =
pkgs.haskell.lib.overrideCabal
(hself.callCabal2nix "status-notifier-item"
(pkgs.lib.cleanSource status-notifier-item.outPath)
(localTaffybarSubdir "packages/status-notifier-item")
{ })
(_: { doCheck = false; doHaddock = false; });
gtk-scaling-image =
pkgs.haskell.lib.overrideCabal
(hself.callCabal2nix "gtk-scaling-image"
(localTaffybarSubdir "packages/gtk-scaling-image")
{ })
(_: { doCheck = false; doHaddock = false; });
gtk-strut =
pkgs.haskell.lib.overrideCabal
(hself.callCabal2nix "gtk-strut"
(pkgs.lib.cleanSource gtk-strut.outPath)
(localTaffybarSubdir "packages/gtk-strut")
{ })
(_: { doCheck = false; doHaddock = false; });
gtk-sni-tray =
pkgs.haskell.lib.overrideCabal
(hself.callCabal2nix "gtk-sni-tray"
(pkgs.lib.cleanSource gtk-sni-tray.outPath)
(localTaffybarSubdir "packages/gtk-sni-tray")
{ })
(_: { doCheck = false; doHaddock = false; });
dbus-hslogger =
hself.callCabal2nix "dbus-hslogger"
(pkgs.lib.cleanSource (dbus-hslogger.outPath or dbus-hslogger))
(localTaffybarSubdir "packages/dbus-hslogger")
{ };
# Build taffybar from our local flake input so it includes our extra

View File

@@ -24,6 +24,7 @@ executable taffybar
, gi-gdk3
, gi-gtk3
, gi-gdkpixbuf
, gi-pango
, gtk-sni-tray
, gtk-strut
, haskell-gi-base

View File

@@ -506,16 +506,15 @@ sunLockWidget =
cpuWidget :: TaffyIO Gtk.Widget
cpuWidget =
decorateWithClassAndBoxM "cpu" $
liftIO $
cpuMonitorNew
defaultGraphConfig
{ graphDataColors = [(0, 1, 0.5, 0.8), (1, 0, 0, 0.5)],
graphLabel = Just "CPU",
graphWidth = 50,
graphDirection = LEFT_TO_RIGHT
}
1.0
"cpu"
cpuMonitorNew
defaultGraphConfig
{ graphDataColors = [(0, 1, 0.5, 0.8), (1, 0, 0, 0.5)],
graphLabel = Just "CPU",
graphWidth = 50,
graphDirection = LEFT_TO_RIGHT
}
1.0
"cpu"
wakeupDebugWidget :: TaffyIO Gtk.Widget
wakeupDebugWidget =

322
nixos/flake.lock generated
View File

@@ -71,11 +71,11 @@
]
},
"locked": {
"lastModified": 1771987897,
"narHash": "sha256-5pNQFGxG3fxS9pGnNBJjT76veotKIKq2XpAVFGAhCdI=",
"lastModified": 1772764582,
"narHash": "sha256-hSwjmpXHFqzSXrndVekA0IheKrbC7wi0IbfZTYwlmXw=",
"owner": "caelestia-dots",
"repo": "cli",
"rev": "b0d68f0a1c48fa138d6fde94dcbecea801a86a01",
"rev": "4bcd42f482d038b98145b0b03388244b68b7d35d",
"type": "github"
},
"original": {
@@ -93,11 +93,11 @@
"quickshell": "quickshell"
},
"locked": {
"lastModified": 1772330657,
"narHash": "sha256-cWblprYsDUeAWA57xAqxIjNxXvDI/rqYn6TFp2OPi/k=",
"lastModified": 1773152543,
"narHash": "sha256-ggQuN+6m2fripGF9dI33HKrbZTPhIts+IJjvRqX9ODE=",
"owner": "caelestia-dots",
"repo": "shell",
"rev": "278fd4a4ed1bfb42c3fe197ff38b587539c012aa",
"rev": "3e0360401bbbb0f640958998f6625495e5b3fdff",
"type": "github"
},
"original": {
@@ -116,11 +116,11 @@
]
},
"locked": {
"lastModified": 1772674260,
"narHash": "sha256-6Ks0v3VtZ6KKzZiCJXFTjH2oTXPaVFBpijji3xCSN/E=",
"lastModified": 1773106230,
"narHash": "sha256-ob/uMOU6CyRES+/SIxnMDhDAZUQr228JdBPKkGu8m/c=",
"owner": "sadjow",
"repo": "claude-code-nix",
"rev": "4f5e65a89966a7de18b8449e60895209310f075f",
"rev": "5cbf0a4eba950cdc7d7982774a9bc189ab21cb99",
"type": "github"
},
"original": {
@@ -139,11 +139,11 @@
]
},
"locked": {
"lastModified": 1772739126,
"narHash": "sha256-oHo/EImJ//ZjxV6BmR2RZgo4Jxyubh5mFnFoRYeLzmY=",
"lastModified": 1773123705,
"narHash": "sha256-DMPua84KZeJqOVIVX0f6ptZubNUylRx5bCNak2+DYlY=",
"owner": "sadjow",
"repo": "codex-cli-nix",
"rev": "e63f18dfbd22bd0a7c5504be9b7f6a8d3c01488a",
"rev": "e64cdc2717566a86aad7b67db4039349d76cf1ea",
"type": "github"
},
"original": {
@@ -191,22 +191,6 @@
"type": "github"
}
},
"dbus-hslogger_2": {
"flake": false,
"locked": {
"lastModified": 1770613712,
"narHash": "sha256-Az7USYfzylaIduPoOzxaz+6Evpn+TvVcThbPpWORt8k=",
"owner": "taffybar",
"repo": "dbus-hslogger",
"rev": "56195c6e46e04e2454fa0fa643e06eb7ef2a0952",
"type": "github"
},
"original": {
"owner": "taffybar",
"repo": "dbus-hslogger",
"type": "github"
}
},
"dbus-menu": {
"inputs": {
"flake-utils": [
@@ -236,22 +220,6 @@
"type": "github"
}
},
"dbus-menu_2": {
"flake": false,
"locked": {
"lastModified": 1770957161,
"narHash": "sha256-jXLEo7toB/1Vm5VUPYLsdforwT23Cn3KAajhZhDbqG8=",
"owner": "taffybar",
"repo": "dbus-menu",
"rev": "c18b84f7f251e520d6f6fcef290cfdd0b45ba057",
"type": "github"
},
"original": {
"owner": "taffybar",
"repo": "dbus-menu",
"type": "github"
}
},
"emacs-overlay": {
"inputs": {
"nixpkgs": [
@@ -312,6 +280,22 @@
}
},
"flake-compat_2": {
"flake": false,
"locked": {
"lastModified": 1696426674,
"narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=",
"owner": "edolstra",
"repo": "flake-compat",
"rev": "0f9255e01c2351cc7d116c072cb317785dd33b33",
"type": "github"
},
"original": {
"owner": "edolstra",
"repo": "flake-compat",
"type": "github"
}
},
"flake-compat_3": {
"flake": false,
"locked": {
"lastModified": 1767039857,
@@ -327,7 +311,7 @@
"type": "github"
}
},
"flake-compat_3": {
"flake-compat_4": {
"flake": false,
"locked": {
"lastModified": 1767039857,
@@ -343,7 +327,7 @@
"type": "github"
}
},
"flake-compat_4": {
"flake-compat_5": {
"flake": false,
"locked": {
"lastModified": 1696426674,
@@ -619,6 +603,30 @@
}
},
"gitignore_2": {
"inputs": {
"nixpkgs": [
"imalison-taffybar",
"taffybar",
"weeder-nix",
"pre-commit-hooks",
"nixpkgs"
]
},
"locked": {
"lastModified": 1709087332,
"narHash": "sha256-HG2cCnktfHsKV0s4XW83gU3F57gaTljL9KNSuG6bnQs=",
"owner": "hercules-ci",
"repo": "gitignore.nix",
"rev": "637db329424fd7e46cf4185293b9cc8c88c95394",
"type": "github"
},
"original": {
"owner": "hercules-ci",
"repo": "gitignore.nix",
"type": "github"
}
},
"gitignore_3": {
"inputs": {
"nixpkgs": [
"taffybar",
@@ -682,23 +690,6 @@
"type": "github"
}
},
"gtk-sni-tray_2": {
"flake": false,
"locked": {
"lastModified": 1771570735,
"narHash": "sha256-WrqV4JYtqF0fn2n8uVnxv08d2+IG+R3LHOJz4M1AE58=",
"owner": "taffybar",
"repo": "gtk-sni-tray",
"rev": "61e075f9521f89e04fadf27c094ef9480fda8164",
"type": "github"
},
"original": {
"owner": "taffybar",
"ref": "master",
"repo": "gtk-sni-tray",
"type": "github"
}
},
"gtk-strut": {
"inputs": {
"flake-utils": [
@@ -728,23 +719,6 @@
"type": "github"
}
},
"gtk-strut_2": {
"flake": false,
"locked": {
"lastModified": 1760550944,
"narHash": "sha256-S0saDsCA3aosU23jO5+jSXkbyrv7/C48o8GjsZrqF0I=",
"owner": "taffybar",
"repo": "gtk-strut",
"rev": "5e0bf7f4b93b931a9c4b4a48b5d39de3ca8f02ae",
"type": "github"
},
"original": {
"owner": "taffybar",
"ref": "master",
"repo": "gtk-strut",
"type": "github"
}
},
"hercules-ci-effects": {
"inputs": {
"flake-parts": "flake-parts_3",
@@ -793,11 +767,11 @@
]
},
"locked": {
"lastModified": 1772633327,
"narHash": "sha256-jl+DJB2DUx7EbWLRng+6HNWW/1/VQOnf0NsQB4PlA7I=",
"lastModified": 1773093840,
"narHash": "sha256-u/96NoAyN8BSRuM3ZimGf7vyYgXa3pLx4MYWjokuoH4=",
"owner": "nix-community",
"repo": "home-manager",
"rev": "5a75730e6f21ee624cbf86f4915c6e7489c74acc",
"rev": "bb014746edb2a98d975abde4dd40fa240de4cf86",
"type": "github"
},
"original": {
@@ -1215,13 +1189,8 @@
"nixpkgs": [
"nixpkgs"
],
"status-notifier-item": [
"taffybar",
"status-notifier-item"
],
"taffybar": [
"taffybar"
],
"status-notifier-item": "status-notifier-item",
"taffybar": "taffybar",
"xmonad": [
"xmonad"
]
@@ -1271,11 +1240,11 @@
]
},
"locked": {
"lastModified": 1772049209,
"narHash": "sha256-2kXRjvjpCT6nu8fAYipxaembVQBuLADp14qS3qZ2kmc=",
"lastModified": 1772827465,
"narHash": "sha256-uV6byD6QFr7NCvWKxdw7WQXs4PJ9cCsq3W/xoyBQLYs=",
"owner": "colonelpanic8",
"repo": "keepbook",
"rev": "e5db370ca6afda4ddc75b095fde1738297b59e22",
"rev": "5c72e8a12189cf0abb6850597ce9649ded4f9203",
"type": "github"
},
"original": {
@@ -1302,7 +1271,7 @@
},
"nix": {
"inputs": {
"flake-compat": "flake-compat_2",
"flake-compat": "flake-compat_3",
"flake-parts": "flake-parts",
"git-hooks-nix": "git-hooks-nix",
"nixpkgs": "nixpkgs_3",
@@ -1310,11 +1279,11 @@
"nixpkgs-regression": "nixpkgs-regression"
},
"locked": {
"lastModified": 1772697681,
"narHash": "sha256-qTdRLFF1TgUj+EM34XO4nLyunSxKzbaSvKeuLdOmv2w=",
"lastModified": 1773099017,
"narHash": "sha256-jzIb3IqLeg+hHrNL0zcOhO3/7itFMhmp3F1udOEB+rA=",
"owner": "NixOS",
"repo": "nix",
"rev": "124b277764bba830a35fea1dff7ced6db4b3f290",
"rev": "04e261a2aa83e75f08e3f20c6bbb849123e322e2",
"type": "github"
},
"original": {
@@ -1331,11 +1300,11 @@
]
},
"locked": {
"lastModified": 1772646415,
"narHash": "sha256-2WS56K14LCx/SGuTgN6Fnh8ZFqJ6ZBoiPLBVT6IYdjA=",
"lastModified": 1773077229,
"narHash": "sha256-4TksyzBnzr4Z2uuWyAAlJdZqr9ipZYteRyfHuHf5rnA=",
"owner": "nixified-ai",
"repo": "flake",
"rev": "4470be42194763ebd99748d2006d6c373c79ec49",
"rev": "433e9e8d8413342c576e69cc04dc86aa6bdbc02f",
"type": "github"
},
"original": {
@@ -1362,7 +1331,7 @@
},
"nixos-wsl": {
"inputs": {
"flake-compat": "flake-compat_3",
"flake-compat": "flake-compat_4",
"nixpkgs": [
"nixpkgs"
]
@@ -1494,11 +1463,11 @@
},
"nixpkgs_4": {
"locked": {
"lastModified": 1772624091,
"narHash": "sha256-QKyJ0QGWBn6r0invrMAK8dmJoBYWoOWy7lN+UHzW1jc=",
"lastModified": 1772963539,
"narHash": "sha256-9jVDGZnvCckTGdYT53d/EfznygLskyLQXYwJLKMPsZs=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "80bdc1e5ce51f56b19791b52b2901187931f5353",
"rev": "9dcb002ca1690658be4a04645215baea8b95f31d",
"type": "github"
},
"original": {
@@ -1605,11 +1574,11 @@
"org-window-habit": "org-window-habit"
},
"locked": {
"lastModified": 1771400406,
"narHash": "sha256-a5Wnznd8zrlPUS6POHgBFcL2Vk03gQKTE6bKreZkgQQ=",
"lastModified": 1772767081,
"narHash": "sha256-f8VALvsrY6befSdcbp+oU9ttFx1pXWxY1c9U6Rrodss=",
"owner": "colonelpanic8",
"repo": "org-agenda-api",
"rev": "489bae63b8700a6ba2de329aba927e620dc99d95",
"rev": "b9d6bac0b4257a654f747542f67c3000c1aefab8",
"type": "github"
},
"original": {
@@ -1707,8 +1676,31 @@
},
"pre-commit-hooks_2": {
"inputs": {
"flake-compat": "flake-compat_4",
"flake-compat": "flake-compat_2",
"gitignore": "gitignore_2",
"nixpkgs": [
"imalison-taffybar",
"nixpkgs"
]
},
"locked": {
"lastModified": 1747372754,
"narHash": "sha256-2Y53NGIX2vxfie1rOW0Qb86vjRZ7ngizoo+bnXU9D9k=",
"owner": "cachix",
"repo": "pre-commit-hooks.nix",
"rev": "80479b6ec16fefd9c1db3ea13aeb038c60530f46",
"type": "github"
},
"original": {
"owner": "cachix",
"repo": "pre-commit-hooks.nix",
"type": "github"
}
},
"pre-commit-hooks_3": {
"inputs": {
"flake-compat": "flake-compat_5",
"gitignore": "gitignore_3",
"nixpkgs": [
"nixpkgs"
]
@@ -1735,11 +1727,11 @@
]
},
"locked": {
"lastModified": 1771926182,
"narHash": "sha256-QbXuSLhiSxOq6ydBL3+KGe1aiYWBW+e3J6qjJZaRMq0=",
"lastModified": 1772925576,
"narHash": "sha256-mMoiXABDtkSJxCYDrkhJ/TrrJf5M46oUfIlJvv2gkZ0=",
"ref": "refs/heads/master",
"rev": "cddb4f061bab495f4473ca5f2c571b6c710efef7",
"revCount": 744,
"rev": "15a84097653593dd15fad59a56befc2b7bdc270d",
"revCount": 750,
"type": "git",
"url": "https://git.outfoxxed.me/outfoxxed/quickshell"
},
@@ -1801,10 +1793,10 @@
"org-agenda-api": "org-agenda-api",
"railbird-secrets": "railbird-secrets",
"systems": "systems_2",
"taffybar": "taffybar",
"taffybar": "taffybar_2",
"vscode-server": "vscode-server",
"xmonad": "xmonad",
"xmonad-contrib": "xmonad-contrib"
"xmonad-contrib": "xmonad-contrib_2"
}
},
"rust-analyzer-src": {
@@ -1845,7 +1837,20 @@
}
},
"status-notifier-item": {
"flake": false,
"inputs": {
"flake-utils": [
"imalison-taffybar",
"flake-utils"
],
"git-ignore-nix": [
"imalison-taffybar",
"git-ignore-nix"
],
"nixpkgs": [
"imalison-taffybar",
"nixpkgs"
]
},
"locked": {
"lastModified": 1772010208,
"narHash": "sha256-pTYdXOt9lJotRj4batisePaVIrKcc+6fvrouYkMaI1k=",
@@ -1892,18 +1897,41 @@
},
"taffybar": {
"inputs": {
"dbus-hslogger": "dbus-hslogger_2",
"dbus-menu": "dbus-menu_2",
"flake-utils": [
"imalison-taffybar",
"flake-utils"
],
"nixpkgs": [
"imalison-taffybar",
"nixpkgs"
],
"weeder-nix": "weeder-nix",
"xmonad": [
"imalison-taffybar",
"xmonad"
],
"xmonad-contrib": "xmonad-contrib"
},
"locked": {
"lastModified": 1773126540,
"narHash": "sha256-EgqWupeQv8j5Rt+Kl7D/X+8LkI6i2qygpafMDFXpOY4=",
"path": "/home/imalison/dotfiles/dotfiles/config/taffybar/taffybar",
"type": "path"
},
"original": {
"path": "/home/imalison/dotfiles/dotfiles/config/taffybar/taffybar",
"type": "path"
}
},
"taffybar_2": {
"inputs": {
"flake-utils": [
"flake-utils"
],
"gtk-sni-tray": "gtk-sni-tray_2",
"gtk-strut": "gtk-strut_2",
"nixpkgs": [
"nixpkgs"
],
"status-notifier-item": "status-notifier-item",
"weeder-nix": "weeder-nix",
"weeder-nix": "weeder-nix_2",
"xmonad": [
"xmonad"
],
@@ -1912,11 +1940,11 @@
]
},
"locked": {
"lastModified": 1772145099,
"narHash": "sha256-jaDZmrD1dtZE9kOs1qDVvYjB9UwdBteFpEaB0VNjvxE=",
"lastModified": 1773167560,
"narHash": "sha256-6rNJSSw01QNFcnoUzV4fCV73AYVDpcIhjmECNrdrFgs=",
"owner": "taffybar",
"repo": "taffybar",
"rev": "534987ef269a0220aae2da3b4a56d76a587f98b3",
"rev": "8032cc39d36e898739419daddf530195df66ee9a",
"type": "github"
},
"original": {
@@ -1951,6 +1979,7 @@
"weeder-nix": {
"inputs": {
"nixpkgs": [
"imalison-taffybar",
"taffybar",
"nixpkgs"
],
@@ -1970,6 +1999,28 @@
"type": "github"
}
},
"weeder-nix_2": {
"inputs": {
"nixpkgs": [
"taffybar",
"nixpkgs"
],
"pre-commit-hooks": "pre-commit-hooks_3"
},
"locked": {
"lastModified": 1764753633,
"narHash": "sha256-6552zbHzdNnkREnOluE6xePIib5cc/8Nc5OnPyHORUo=",
"owner": "NorfairKing",
"repo": "weeder-nix",
"rev": "2203c43ab9f1c4e52c2cff8e3d01bbb53159b922",
"type": "github"
},
"original": {
"owner": "NorfairKing",
"repo": "weeder-nix",
"type": "github"
}
},
"xdph": {
"inputs": {
"hyprland-protocols": [
@@ -2027,11 +2078,11 @@
]
},
"locked": {
"lastModified": 1772493632,
"narHash": "sha256-tpYnT7nVrpAg9bbI9nSBKe9h8eJfWS/kyEzCLJPZijw=",
"lastModified": 1772910999,
"narHash": "sha256-8q5sXnyqx9Dz3NTt9rDjZUEHJUJgCcX7EzBN8GaIcs8=",
"owner": "xmonad",
"repo": "xmonad",
"rev": "0898137a0e0abd12f5e002186ab2e57e57fad4df",
"rev": "15a6978f5a325409dbdca25421d9e72adadf4e98",
"type": "github"
},
"original": {
@@ -2041,6 +2092,23 @@
}
},
"xmonad-contrib": {
"flake": false,
"locked": {
"lastModified": 1769258911,
"narHash": "sha256-YGEKXs4UmS5QOIELJTdCiMzTktuue+Bd3yFoIKSHuBU=",
"owner": "xmonad",
"repo": "xmonad-contrib",
"rev": "803bc3d12bdcc512ec06856c4f119d37de1ba338",
"type": "github"
},
"original": {
"owner": "xmonad",
"ref": "master",
"repo": "xmonad-contrib",
"type": "github"
}
},
"xmonad-contrib_2": {
"inputs": {
"flake-utils": [
"flake-utils"

View File

@@ -144,8 +144,6 @@
nixpkgs.follows = "nixpkgs";
flake-utils.follows = "flake-utils";
xmonad.follows = "xmonad";
taffybar.follows = "taffybar";
status-notifier-item.follows = "taffybar/status-notifier-item";
};
};