{ lib, pkgs, config, ... }: { options.zpha.programs.vibepanel.enable = lib.mkEnableOption "vibepanel"; config = lib.mkIf config.zpha.programs.vibepanel.enable { users.users.zaphyra.maid = { packages = [ pkgs.zpha.vibepanel ]; file.xdg_config = { "vibepanel/config.toml".source = pkgs.writers.writeTOML "vibepanel.toml" { advanced = { compositor = "niri"; }; bar = { position = "top"; size = 32; border_radius = 0; background_color = "rgb(30, 40, 30)"; background_opacity = 0.9; }; osd = { enabled = true; position = "top"; }; theme = { mode = "dark"; accent = "#4aa96c"; ripple = false; blur = true; icons = { theme = "gtk"; weight = 400; }; }; widgets = { background_opacity = 1; border_radius = 40; left = [ { group = [ "workspaces" "taskbar" ]; } ]; center = [ "clock" "notifications" ]; right = [ "media" "tray" { group = [ "quick_settings" "battery" ]; } ]; quick_settings.updates = false; taskbar.show_workspace_separator = false; clock = { format = "%d. %b %H:%M"; on_click_right = (lib.mkIf config.zpha.programs.gnome-calendar.enable (lib.getExe pkgs.gnome-calendar)).content; }; }; }; "vibepanel/style.css".text = '' :root { } .bar { border-bottom: 2px solid rgba(59, 135, 86, 0.5); } .widget, .widget-item { background-color: unset; } .clock { margin-right: -22px; } ''; }; systemd.services.vibepanel = { wantedBy = [ "niri-session.target" ]; partOf = [ "niri-session.target" ]; after = [ "niri-session.target" ]; environment = lib.mkForce { }; serviceConfig = { ExecStart = lib.getExe pkgs.zpha.vibepanel; Restart = "on-failure"; }; }; }; zpha.programs.niri.settings.binds = { "XF86AudioMute".spawn = [ "vibepanel" "volume" "toggle-mute" ]; "XF86AudioLowerVolume".spawn = [ "vibepanel" "volume" "dec" "2" ]; "XF86AudioRaiseVolume".spawn = [ "vibepanel" "volume" "inc" "2" ]; "XF86MonBrightnessDown".spawn = [ "vibepanel" "brightness" "dec" "2" ]; "XF86MonBrightnessUp".spawn = [ "vibepanel" "brightness" "inc" "2" ]; }; }; }