nixdots/home/programs/graphical/bars/eww/default.nix

90 lines
2.4 KiB
Nix
Raw Permalink Normal View History

2024-07-26 23:07:07 +00:00
{
lib,
pkgs,
osConfig,
...
}: let
inherit (lib) mkIf;
2024-07-26 23:07:07 +00:00
scriptPkgs = import ../../../../packages/cli/scripts/packages {inherit pkgs;};
2024-06-21 12:58:31 +00:00
cfg = osConfig.myOptions.home-manager.programs.bars.eww;
in {
config = mkIf cfg.enable {
programs.eww = {
enable = true;
configDir = ./config;
};
systemd.user.services = {
2024-07-26 23:07:07 +00:00
"eww" = let
# All dependencies required for eww and for the scripts/widgets it uses
dependencies = with pkgs; [
python3
bash
coreutils
findutils
gnugrep
gawk
netcat-openbsd
jq
bc
util-linux
systemd
bluez
upower
wl-gammarelay-rs
gammastep
networkmanager
wireplumber
pulseaudio
hyprland
2024-06-21 12:58:31 +00:00
scriptPkgs.bitcoin
];
in {
Unit = {
Description = "ElKowar's Wacky Widgets (eww) daemon";
2024-07-26 23:07:07 +00:00
After = ["graphical-session-pre.target"];
PartOf = ["graphical-session.target"];
};
Service = {
Type = "simple";
Restart = "alwayss";
Environment = "PATH=/run/wrappers/bin:${lib.makeBinPath dependencies}";
ExecStart = pkgs.writeShellScript "eww-daemon" ''
${pkgs.eww}/bin/eww daemon --no-daemonize
'';
# Takes a value between -20 and 19. Higher values (e.g. 19) mean lower priority.
# Lower priority means the process will get less CPU time and therefore will be slower.
# Fortunately, I do not need my status bar to be fast. Also, te difference is almost
# unnoticeable and definitely negligible.
Nice = 19;
};
2024-07-26 23:07:07 +00:00
Install.WantedBy = ["graphical-session.target"];
};
"eww-window-bar0" = {
Unit = {
Description = "Open bar0 eww (ElKowar's Wacky Widgets) window";
2024-07-26 23:07:07 +00:00
After = ["eww.service"];
PartOf = ["graphical-session.target" "eww.service"];
};
Service = {
Type = "oneshot";
RemainAfterExit = true;
ExecStartPre = "${pkgs.eww}/bin/eww ping";
ExecStart = "${pkgs.eww}/bin/eww open bar0";
ExecStop = "${pkgs.eww}/bin/eww close bar0";
Restart = "on-failure";
};
2024-07-26 23:07:07 +00:00
Install.WantedBy = ["graphical-session.target"];
};
};
};
}