2026-02-05 12:00:46 -08:00
|
|
|
{ config, inputs, pkgs, makeEnable, ... }:
|
2026-02-20 06:07:00 -08:00
|
|
|
let
|
|
|
|
|
skipTaffybarInKde = pkgs.writeShellScript "skip-taffybar-in-kde" ''
|
|
|
|
|
current_desktop="''${XDG_CURRENT_DESKTOP:-}"
|
|
|
|
|
desktop_session="''${DESKTOP_SESSION:-}"
|
|
|
|
|
|
|
|
|
|
case "''${current_desktop}:''${desktop_session}" in
|
|
|
|
|
*KDE*|*kde*|*Plasma*|*plasma*) exit 1 ;;
|
|
|
|
|
*) exit 0 ;;
|
|
|
|
|
esac
|
|
|
|
|
'';
|
|
|
|
|
in
|
2026-02-05 12:00:46 -08:00
|
|
|
makeEnable config "myModules.taffybar" false {
|
2026-02-10 20:17:46 -08:00
|
|
|
myModules.sni.enable = true;
|
|
|
|
|
|
2026-02-05 12:00:46 -08:00
|
|
|
nixpkgs.overlays = with inputs; (
|
|
|
|
|
if builtins.isList taffybar.overlays
|
|
|
|
|
then taffybar.overlays
|
|
|
|
|
else builtins.attrValues taffybar.overlays
|
2026-02-12 16:42:38 -08:00
|
|
|
) ++ [
|
|
|
|
|
# status-notifier-item's test suite spawns `dbus-daemon`; ensure it's on PATH.
|
|
|
|
|
(final: prev: {
|
|
|
|
|
haskellPackages = prev.haskellPackages.override (old: {
|
|
|
|
|
overrides =
|
|
|
|
|
final.lib.composeExtensions (old.overrides or (_: _: {}))
|
|
|
|
|
(hself: hsuper: {
|
|
|
|
|
status-notifier-item = hsuper.status-notifier-item.overrideAttrs (oldAttrs: {
|
|
|
|
|
checkInputs = (oldAttrs.checkInputs or []) ++ [ prev.dbus ];
|
|
|
|
|
# The test suite assumes a system-wide /etc/dbus-1/session.conf,
|
|
|
|
|
# which isn't present in Nix sandboxes.
|
|
|
|
|
doCheck = false;
|
|
|
|
|
});
|
|
|
|
|
});
|
|
|
|
|
});
|
|
|
|
|
})
|
|
|
|
|
];
|
2026-02-05 12:00:46 -08:00
|
|
|
|
|
|
|
|
environment.systemPackages = [
|
|
|
|
|
inputs.imalison-taffybar.defaultPackage.${pkgs.stdenv.hostPlatform.system}
|
|
|
|
|
];
|
|
|
|
|
|
|
|
|
|
home-manager.sharedModules = [
|
|
|
|
|
{
|
2026-02-18 12:49:25 -08:00
|
|
|
services."status-notifier-watcher".enable = true;
|
|
|
|
|
# home-manager's module defaults to nixpkgs' status-notifier-item, which can lag.
|
|
|
|
|
# Point it at the pinned flake version instead.
|
|
|
|
|
services."status-notifier-watcher".package = pkgs.lib.mkForce
|
|
|
|
|
inputs.imalison-taffybar.packages.${pkgs.stdenv.hostPlatform.system}.status-notifier-item;
|
2026-02-05 12:00:46 -08:00
|
|
|
|
|
|
|
|
# Disable kded6's statusnotifierwatcher module so it doesn't race with
|
|
|
|
|
# the Haskell status-notifier-watcher for the org.kde.StatusNotifierWatcher bus name.
|
|
|
|
|
xdg.configFile."kded6rc".text = ''
|
|
|
|
|
[Module-statusnotifierwatcher]
|
|
|
|
|
autoload=false
|
|
|
|
|
'';
|
|
|
|
|
|
|
|
|
|
services.taffybar = {
|
|
|
|
|
enable = true;
|
|
|
|
|
package = inputs.imalison-taffybar.defaultPackage.${pkgs.stdenv.hostPlatform.system};
|
|
|
|
|
};
|
2026-04-10 13:40:30 -07:00
|
|
|
xdg.configFile."systemd/user/taffybar.service".force = true;
|
2026-03-22 07:27:12 -07:00
|
|
|
systemd.user.services.taffybar.Service = {
|
|
|
|
|
ExecCondition = "${skipTaffybarInKde}";
|
|
|
|
|
# Temporary startup debugging: keep a plain-text log outside journald so
|
|
|
|
|
# the next login/startup leaves easy-to-inspect tray traces behind.
|
|
|
|
|
StandardOutput = "append:/tmp/taffybar-service.log";
|
|
|
|
|
StandardError = "append:/tmp/taffybar-service.log";
|
|
|
|
|
};
|
2026-02-05 12:00:46 -08:00
|
|
|
}
|
|
|
|
|
];
|
|
|
|
|
}
|