_: {
  flake.homeModules.waybar = _: {
    # replaced by caelestia
    programs.waybar = {
      enable = true;
      settings = [
        {
          layer = "top";
          position = "left";
          margin = "5 2 5 0";
          reload_style_on_change = true;
          modules-left = [
            "hyprland/workspaces"
            "group/info"
            "group/power"
          ];
          modules-center = [
          ];
          modules-right = [
            "hyprland/window"
            "group/brightness"
            "group/sound"
            "group/connection"
            "group/together"
            "tray"
            "battery"
          ];
          # groups settings are organized by alphabetical order
          "group/audio" = {
            orientation = "inherit";
            drawer = {
              transition-duration = 500;
              transition-left-to-right = false;
            };
            modules = [
              "pulseaudio"
              "pulseaudio#mic"
              "pulseaudio/slider"
            ];
          };
          "group/bluetooth" = {
            orientation = "inherit";
            drawer = {
              transition-duration = 500;
              transition-left-to-right = true;
            };
            modules = [
              "bluetooth"
              "bluetooth#status"
            ];
          };
          "group/brightness" = {
            orientation = "inherit";
            drawer = {
              transition-duration = 500;
              transition-left-to-right = false;
            };
            modules = [
              "backlight"
              "backlight/slider"
            ];
          };
          "group/connection" = {
            orientation = "inherit";
            modules = ["group/network"];
          };
          "group/gcpu" = {
            orientation = "inherit";
            modules = [
              "custom/cpu-icon"
              "temperature"
              "cpu"
            ];
          };
          "group/info" = {
            orientation = "inherit";
            modules = [
              "group/gcpu"
              "memory"
              "disk"
            ];
          };
          "group/network" = {
            orientation = "inherit";
            drawer = {
              transition-duration = 500;
              transition-left-to-right = true;
            };
            modules = [
              "network"
              "network#speed"
            ];
          };
          "group/power" = {
            orientation = "inherit";
            modules = [
              "battery#w"
              "battery#powerdraw"
            ];
          };
          "group/sound" = {
            orientation = "inherit";
            modules = [
              "group/audio"
              "custom/notification"
            ];
          };
          "group/together" = {
            orientation = "inherit";
            modules = [
              "group/utils"
              "clock"
            ];
          };
          "group/utils" = {
            orientation = "inherit";
            drawer = {
              transition-duration = 500;
              transition-left-to-right = true;
            };
            modules = [
              "custom/weather"
              "custom/colorpicker"
            ];
          };
          # modules settings are organized by alphabetical order
          backlight = {
            device = "intel_backlight"; # my laptop is amd and it works
            format = "{icon}";
            format-icons = [
              ""
              ""
              ""
              ""
              ""
              ""
              ""
              ""
              ""
              ""
              ""
              ""
              ""
              ""
              ""
            ];
            on-scroll-down = "brightnessctl s 5%-";
            on-scroll-up = "brightness s +5%";
            tooltip = true;
            tooltip-format = "Brightness: {percent}%";
            smooth-scrolling-threshold = 1;
          };
          "backlight/slider" = {
            min = 5;
            max = 100;
            orientation = "vertical";
            device = "intel_backlight";
          };
          battery = {
            #rotate = 90;
            interval = 30;
            states = {
              good = 95;
              warning = 20;
              critical = 15;
            };
            format = "{icon} {capacity}";
            format-charging = "<b>{icon} {capacity}% </b>";
            format-full = "<span color='#82A55F'><b>{icon}</b></span>";
            format-icons = [
              "󰁻"
              "󰁼"
              "󰁾"
              "󰂀"
              "󰂂"
              "󰁹"
            ];
            tooltip-format = "{timeTo} {capacity} %";
          };
          "battery#powerdraw" = {
            rotate = 90;
            interval = 10;
            format = "{power:.0001f}";
          };
          "battery#w" = {
            rotate = 90;
            interval = 100000;
            format = "W";
          };
          bluetooth = {
            format-on = "";
            format-off = "󰂲";
            format-disabled = "";
            format-connected = "<b></b>";
            tooltip-format = "{controller_alias}\t{controller_address}\n\n{num_connections} connected";
            tooltip-format-connected = "{controller_alias}\t{controller_address}\n\n{num_connections} connected\n\n{device_enumerate}";
            tooltip-format-enumerate-connected = "{device_alias}\t{device_address}";
            tooltip-format-enumerate-connected-battery = "{device_alias}\t{device_address}\t{device_battery_percentage}%";
          };
          "bluetooth#status" = {
            format-on = "";
            format-off = "";
            format-disabled = "";
            format-connected = "<b>{num_connections}</b>";
            format-connected-battery = "<small><b>{device_battery_percentage}%</b></small>";
            tooltip-format = "{controller_alias}\t{controller_address}\n\n{num_connections} connected";
            tooltip-format-connected = "{controller_alias}\t{controller_address}\n\n{num_connections} connected\n\n{device_enumerate}";
            tooltip-format-enumerate-connected = "{device_alias}\t{device_address}";
            tooltip-format-enumerate-connected-battery = "{device_alias}\t{device_address}\t{device_battery_percentage}%";
          };
          clock = {
            format = "{:%H\n%M}";
            tooltip-format = "<tt><small>{calendar}</small></tt>";
            calendar = {
              mode = "month";
              mode-mon-col = 3;
              weeks-pos = "right";
              on-scroll = 1;
              on-click-right = "mode";
              format = {
                today = "<span color='#d65d0e'><b><u>{}</u></b></span>";
              };
            };
          };
          cpu = {
            format = "<b>{usage}%</b>";
          };
          "custom/colorpicker" = {
            format = "";
            on-click = "hyprpicker | tee >(wl-copy) | cliphist store";
          };
          "custom/cpu-icon" = {
            format = "󰻠";
            tooltip = false;
          };
          "custom/mark" = {
            format = "";
            tooltip = false;
          };
          "custom/weather" = {
            format = "{}";
            interval = 3600;
            exec = "custom-weatherwaybar";
            return-type = "json";
          };
          disk = {
            interval = 600;
            format = "<b> 󰋊 \n{percentage_used}󱉸</b>";
            path = "/"; #maybe we should subtract ~/kdrive if it is counted
          };
          "hyprland/window" = {
            format = "{class}";
            rotate = 90;
          };
          "hyprland/workspaces" = {
            format = "{icon}";
            format-icons = {
              "1" = "";
              "2" = "";
              "3" = "";
              "4" = "";
              "5" = "";
              "6" = "";
              "7" = "";
              "8" = "";
              "9" = "";
              "10" = "";
              "active" = "";
              "default" = "";
            };
            persistent-workspaces = {
              "*" = [1 2 3 4 5 6 7 8 9 10];
            };
          };
          idle_inhibitor = {
            format = "{icon}";
            tooltip-format-activated = "Idle Inhibitor is active";
            tooltip-format-deactivated = "Idle Inhibitor is not active";
            format-icons = {
              activated = "󰔡";
              deactivated = "󰔢";
            };
          };
          memory = {
            format = "<b>  \n{:2}󱉸</b>";
          };
          network = {
            format = "{icon}";
            format-icons = {
              wifi = ["󰤨"];
              ethernet = ["󰈀"];
              disconnected = ["󰖪"];
            };
            format-wifi = "󰤨";
            format-ethernet = "󰈀";
            format-disconnected = "󰖪";
            format-linked = "󰈁";
            tooltip = false;
          };
          "network#speed" = {
            format = " {bandwidthDownBits} ";
            rotate = 90;
            interval = 5;
            tooltip-format = "{ipaddr}";
            tooltip-format-wifi = "{essid} ({signalStrength}%)   \n{ipaddr} | {frequency} MHz{icon} ";
            tooltip-format-ethernet = "{ifname} 󰈀 \n{ipaddr} | {frequency} MHz{icon} ";
            tooltip-format-disconnected = "Not Connected to any type of Network";
            tooltip = true;
          };
          power-profiles-daemon = {
            format = "{icon}";
            tooltip-format = "Power profile: {profile}\nDriver: {driver}";
            tooltip = true;
            format-icons = {
              default = "";
              performance = "<span color='#B37F34'><small></small></span>";
              balanced = "<span><small> </small></span>";
              power-saver = "<span color='#a6e3a1'><small></small></span>";
            };
          };
          pulseaudio = {
            format = "{icon}";
            format-bluetooth = "{icon}";
            tooltip-format = "{volume}% {icon} | {desc}";
            format-muted = "󰖁";
            format-icons = {
              headphones = "󰋌";
              handsfree = "󰋌";
              headset = "󰋌";
              phone = "";
              portable = "";
              car = " ";
              default = [
                "󰕿"
                "󰖀"
                "󰕾"
              ];
            };
            on-click = "volume mute";
            on-click-middle = "pavucontrol";
            on-scroll-up = "pactl set-sink-volume @DEFAULT_SINK@ +5%";
            on-scroll-down = "pactl set-sink-volume @DEFAULT_SINK@ -5%";
            smooth-scrolling-threshold = 1;
          };
          "pulseaudio#mic" = {
            format = "{format_source}";
            format-source = "";
            format-source-muted = "";
            tooltip-format = "{volume}% {format_source}";
            on-click = "pactl set-source-mute 0 toggle";
            on-scroll-down = "pactl set-source-volume 0 -1%";
            on-scroll-up = "pactl set-source-volume 0 +1%";
          };
          "pulseaudio/slider" = {
            min = 0;
            max = 140;
            orientation = "vertical";
          };
          temperature = {
            format = "{temperatureC}°C";
            format-critical = "{temperatureC}°C";
            interval = 10;
          };
          tray = {
            icon-size = 18;
            spacing = 10;
          };
        }
      ]; # home-manager wants the whole config as a list of bars
      style = ''
        @define-color foreground #c5c5c5;
        @define-color background #191919;
        @define-color cursor #c5c5c5;

        @define-color color0 #191919;
        @define-color color1 #3a3632;
        @define-color color2 #582c1e;
        @define-color color3 #423f39;
        @define-color color4 #50473c;
        @define-color color5 #634723;
        @define-color color6 #BAA470;
        @define-color color7 #8c8c8c;
        @define-color color8 #525252;
        @define-color color9 #4e4843;
        @define-color color10 #763b28;
        @define-color color11 #59554c;
        @define-color color12 #6b5f51;
        @define-color color13 #855f2f;
        @define-color color14 #796d62;
        @define-color color15 #c5c5c5;

        @define-color active @color6;

        * {
          font-size: 23px;
          font-family: "0xProto Nerd Font";
          min-width: 8px;
          min-height: 0px;
          border: none;
          border-radius: 0;
          box-shadow: none;
          text-shadow: none;
          padding: 0px;
          margin: 0px;

        }

        window#waybar {
          transition-property: background-color;
          transition-duration: 0.5s;
          border-radius: 8px;
          border: 2px solid @active;
          background: @background;
          background: alpha(@background, 0.7);
          color: lighter(@active);
        }

        menu,
        tooltip {
          border-radius: 8px;
          padding: 2px;
          border: 1px solid lighter(@active);
          background: alpha(@background, 0.6);

          color: lighter(@active);
        }

        menu label,
        tooltip label {
          font-size: 20px;
          color: lighter(@active);
        }

        #submap,
        #tray>.needs-attention {
          animation-name: blink-active;
          animation-duration: 1s;
          animation-timing-function: linear;
          animation-iteration-count: infinite;
          animation-direction: alternate;
        }

        .modules-right {
          margin: 0px 6px 6px 6px;
          border-radius: 4px;
          background: alpha(@background, 0.4);
          color: lighter(@active);
        }

        .modules-left {
          transition-property: background-color;
          transition-duration: 0.5s;
          margin: 6px 6px 6px 6px;
          border-radius: 4px;
          background: alpha(@background, 0.4);
          color: lighter(@active);
        }

        #gcpu,
        #custom-github,
        #memory,
        #disk,
        #together,
        #submap,
        #custom-weather {
        	font-size: 17px;
        }

        #custom-recorder,
        #connection,
        #cnoti,
        #brightness,
        #power,
        #custom-updates,
        #tray,
        #audio,
        #privacy,
        #sound {
          border-radius: 4px;
          margin: 2px 2px 4px 2px;
          background: alpha(darker(@active), 0.3);
        }

        #custom-notifications {
          padding-left: 4px;
        }

        #custom-hotspot,
        #custom-github,
        #custom-notifications {
          font-size: 20px;
        }

        #custom-hotspot {
          padding-right: 2px;
        }

        #custom-vpn,
        #custom-hotspot {
          background: alpha(darker(@active), 0.3);
        }

        #privacy-item {
          padding: 6px 0px 6px 6px;
        }

        #gcpu {
          padding: 8px 0px 8px 0px;
        }

        #custom-cpu-icon {
          font-size: 36px;
        }

        #custom-cputemp,
        #temperature {
        	font-size: 17px;
        }
        #disk,
        #memory,
        #cpu {
          font-size: 20px;
          font-weight: bold;
        }

        #custom-github {
          padding-top: 2px;
          padding-right: 4px;
        }

        #custom-dmark {
          color: alpha(@foreground, 0.3);
        }

        #submap {
          margin-bottom: 0px;
        }

        #hyprland.window {
        	margin-left: 20px;
        }

        #workspaces {
          margin: 0px 2px;
          padding: 4px 0px 0px 0px;
          border-radius: 8px;
        }

        #workspaces button {
          transition-property: background-color;
          transition-duration: 0.5s;
          color: @foreground;
          background: transparent;
          border-radius: 4px;
          color: alpha(@foreground, 0.3);
        }

        #workspaces button.urgent {
          font-weight: bold;
          color: @foreground;
        }

        #workspaces button.active {
          padding: 4px 2px;
          background: alpha(@active, 0.4);
          color: lighter(@active);
          border-radius: 4px;
        }

        #network.wifi {
          padding-right: 4px;
        }

        #submap {
          min-width: 0px;
          margin: 4px 6px 4px 6px;
        }

        #tray {
          padding: 0px 0px 0px 0px;
        }

        #bluetooth {
          padding-top: 2px;
        }

        #window {
            border-radius: 8px;
            padding: 4px 14px;
            margin: 4px 2px 4px 2px;
        }

        #battery {
          font-size: 17px;
          border-radius: 8px;
          padding: 4px 0px;
          margin: 4px 2px 4px 2px;
        }

        #battery.discharging.warning {
          animation-name: blink-yellow;
          animation-duration: 1s;
          animation-timing-function: linear;
          animation-iteration-count: infinite;
          animation-direction: alternate;
        }

        #battery.discharging.critical {
          animation-name: blink-red;
          animation-duration: 1s;
          animation-timing-function: linear;
          animation-iteration-count: infinite;
          animation-direction: alternate;
        }

        #battery.powerdraw {
        	font-size: 17px;
        	padding: 0;
        	margin-right: -20px;
        	margin-left: -20px;
        }
        #battery.w {
        	font-size: 17px;
        	padding: 0;
        	margin-left: -20px;
        	margin-right: -20px;
        }

        #clock {
          font-weight: bold;
          padding: 4px 2px 2px 2px;
        }

        #pulseaudio.mic {
          border-radius: 4px;
          color: @background;
          background: alpha(darker(@foreground), 0.6);
          padding-left: 4px;
        }

        #backlight-slider slider,
        #pulseaudio-slider slider {
          background-color: transparent;
          box-shadow: none;
        }

        #backlight-slider trough,
        #pulseaudio-slider trough {
          margin-top: 4px;
          min-width: 6px;
          min-height: 60px;
          border-radius: 8px;
          background-color: alpha(@background, 0.6);
        }

        #backlight-slider highlight,
        #pulseaudio-slider highlight {
          border-radius: 8px;
          background-color: lighter(@active);
        }

        #bluetooth.discoverable,
        #bluetooth.discovering,
        #bluetooth.pairable {
          border-radius: 8px;
          animation-name: blink-active;
          animation-duration: 1s;
          animation-timing-function: linear;
          animation-iteration-count: infinite;
          animation-direction: alternate;
        }

        @keyframes blink-active {
          to {
            background-color: @active;
            color: @foreground;
          }
        }

        @keyframes blink-red {
          to {
            background-color: #c64d4f;
            color: @foreground;
          }
        }

        @keyframes blink-yellow {
          to {
            background-color: #cf9022;
            color: @foreground;
          }
        }
      '';
    };
  };
  perSystem = {pkgs, ...}: {
    packages.custom-weatherwaybar = pkgs.writeShellApplication {
      name = "custom-weatherwaybar";
      runtimeInputs = with pkgs; [
        curl
      ];
      text = ''
        PATTERN="C"
        PATTERN2=" "
        TEXT1="''$(curl -s "https://wttr.in/?format=%c")"
        TEXT1=''${TEXT1/$PATTERN2/}
        TEXT2="''$(curl -s "https://wttr.in/?format=%t")"
        TEXT2=''${TEXT2/$PATTERN/}
        TEXT3="''$(curl -s "https://wttr.in/?format=%f")"
        TEXT3=''${TEXT3/$PATTERN/}
        printf '{"text":" %s\\n %s\\n %s", "tooltip": false, "class": "weather"}\\n' \
          "$TEXT1" "$TEXT2" "$TEXT3"
      '';
    };
  };
}
