one flake containing all of my nixos configs
{
  pkgs,
  lib,
  config,
  ...
}: {
  config = lib.mkIf config.dotfiles.gui.sway.enable {
    programs.waybar = {
      systemd = {
        enable = lib.mkDefault true;
        target = "sway-session.target";
      };
      style = builtins.readFile ./waybar_style.css;
      settings = [
        {
          layer = "top";
          position = "top";
          height = 24;
          modules-left = ["clock" "custom/media"];
          modules-center = ["sway/mode" "sway/workspaces"];
          modules-right = ["idle_inhibitor" "pulseaudio" "network" "bluetooth" "battery" "tray"];
          "sway/workspaces" = {
            disable-scroll = true;
            all-outputs = false;
            format = "{icon}";
            format-icons = {
              urgent = "🔥";
              focused = "";
              default = "";
            };

            # "sway/mode".format = "<span style=\"italic\">{}</span>";

            clock = {
              format = "{:%I:%M %p}";
              format-alt = "{:%Y-%m-%d}";
            };
            battery = {
              bat = "BAT0";
              states = {
                good = 95;
                warning = 25;
                critical = 10;
              };
              format = "{icon}";
              format-icons = ["" "" "" "" ""];
              tooltip-format = ''
                {capacity}%
                {timeTo}
              '';
            };
            network = {
              # interface = "wlp2s0";  # (Optional) To force the use of this interface
              format-wifi = "";
              format-ethernet = "";
              format-disconnected = "⚠";
              tooltip-format-wifi = "{essid} ({signalStrength}%) ";
              tooltip-format-ethernet = "ethernet: {ifname}: {ipaddr}/{cidr}";
              tooltip-format-disconnected = "Disconnected";
            };
            pulseaudio = {
              format = "{volume}% {icon}";
              format-bluetooth = "{volume}% {icon}";
              format-muted = "";
              format-icons = {
                headphones = "";
                handsfree = "";
                headset = "";
                phone = "";
                portable = "";
                car = "";
                default = ["" ""];
              };
              on-click = "${pkgs.pavucontrol}/bin/pavucontrol";
            };
            idle_inhibitor = {
              format = "{icon}";
              format-icons = {
                activated = "";
                deactivated = "";
              };
            };
            "custom/media" = {
              on-click = "${pkgs.playerctl}/bin/playerctl play-pause";
              format = "🎵 {}";
              max-length = 40;
              interval = 30; # Remove this if your script is endless and write in loop
              exec = with pkgs; let
                name = "waybar_media_play_pause_toggler";
              in "${writeShellApplication {
                inherit name;
                runtimeInputs = [playerctl];
                text = ''
                  player_status=$(playerctl status 2>/dev/null)

                  if [ "$player_status" = "Playing" ]; then
                    echo "$(playerctl metadata artist) - $(playerctl metadata title)"

                  elif [ "$player_status" = "Paused" ]; then
                    echo " $(playerctl metadata artist) - $(playerctl metadata title)"

                  else
                    echo "$(playerctl status): $(playerctl metadata title)"

                  fi
                '';
              }}/bin/${name}";
            };

            tray = {
              icon-size = 21;
              spacing = 10;
            };
          };
        }
      ];
    };
  };
}