{ pkgs, lib, rice, user, secrets, ... }:
let
  channels = [
    "agurin"
    "asmongold"
    "Caedrel"
    "EintrachtSpandau"
    "GamesDoneQuick"
    "gdolphn"
    "GRONKH"
    "handofblood"
    "HisWattson"
    "Jankos"
    "KuruHS"
    "kutcherlol"
    "LEC"
    "lol_nemesis"
    "NASA"
    "NNOPrime"
    "NoWay4u_Sir"
    "OfficialMikeShinoda"
    "Rekkles"
    "riotgames"
    "ThePrimeagen"
    "Tolkin"
    "TSM_ImperialHal"
    "Xisuma"
    "zackrawrr"
  ];
  tabber = channel-name: {
    highlightsEnabled = true;
    splits2 = {
      data = {
        name = channel-name;
        type = "twitch";
      };
      filters = [ ];
      flexh = 1;
      flexv = 1;
      moderationMode = false;
      type = "split";
    };
  };
in {
  home = {
    packages = with pkgs; [ chatterino2 ];
    file = {
      ".local/share/chatterino/Settings/settings.json".text = with secrets.chatterino; ''
        {
            "accounts": {
                "current": "${username}",
                "uid189594946": {
                    "clientID": "${clientID}",
                    "oauthToken": "${oauthToken}",
                    "userID": "${userID}",
                    "username": "${username}"
                }
            },
            "appearance": {
                "boldScale": 63.0,
                "currentFontFamily": "${rice.font.base.name}",
                "currentFontSize": 12,
                "messages": {
                    "alternateMessageBackground": true,
                    "lastMessageColor": "#ff7f0002",
                    "lastMessagePattern": 10,
                    "separateMessages": true,
                    "showTimestamps": false,
                    "timestampFormat": "h =mm",
                    "usernameDisplayMode": 1
                },
                "splitheader": {
                    "showGame": true,
                    "showTitle": true,
                    "showUptime": true,
                    "showViewerCount": true
                },
                "tabVisibility": 1,
                "theme": {
                    "name": "Black"
                }
            },
            "behaviour": {
                "pauseOnHoverDuration": 5.0,
                "showJoins": false,
                "usernameRightClickBehavior": 0,
                "usernameRightClickBehaviorWithModifier": 1
            },
            "emotes": {
                "removeSpacesBetweenEmotes": false,
                "showUnlistedSevenTVEmotes": true
            },
            "highlighting": {
                "badges": [
                    {
                        "alert": false,
                        "color": "#7f7f3f49",
                        "displayName": "Broadcaster",
                        "name": "broadcaster",
                        "showInMentions": false,
                        "sound": false,
                        "soundUrl": ""
                    },
                    {
                        "alert": false,
                        "color": "#7f7f3f49",
                        "displayName": "Admin",
                        "name": "admin",
                        "showInMentions": false,
                        "sound": false,
                        "soundUrl": ""
                    },
                    {
                        "alert": false,
                        "color": "#7f7f3f49",
                        "displayName": "Staff",
                        "name": "staff",
                        "showInMentions": false,
                        "sound": false,
                        "soundUrl": ""
                    },
                    {
                        "alert": false,
                        "displayName": "Moderator",
                        "name": "moderator",
                        "showInMentions": false,
                        "sound": false,
                        "soundUrl": ""
                    },
                    {
                        "alert": false,
                        "color": "#7f7f3578",
                        "displayName": "VIP",
                        "name": "vip",
                        "showInMentions": false,
                        "sound": false,
                        "soundUrl": ""
                    }
                ],
                "selfMessageHighlight": {
                    "color": "#73008cff",
                    "enabled": true
                }
            },
            "hotkeys": {
                "addedDefaults": [
                    "change channel",
                    "close popup window",
                    "create clip",
                    "delete",
                    "emote picker",
                    "focus down",
                    "focus left",
                    "focus right",
                    "focus up",
                    "go to end of input",
                    "go to end of input with selection",
                    "go to start of input",
                    "go to start of input with selection",
                    "new popup window",
                    "new popup window from tab",
                    "new split",
                    "new tab",
                    "next message",
                    "open debug popup",
                    "open quick switcher",
                    "open settings",
                    "popup accept",
                    "popup focus search box",
                    "popup reject",
                    "popup scroll down",
                    "popup scroll up",
                    "popup select last tab",
                    "popup select next tab",
                    "popup select previous tab",
                    "popup select tab #1",
                    "popup select tab #2",
                    "popup select tab #3",
                    "popup select tab #4",
                    "popup select tab #5",
                    "popup select tab #6",
                    "popup select tab #7",
                    "popup select tab #8",
                    "previous message",
                    "reconnect",
                    "reload emotes",
                    "remove tab",
                    "reopen split",
                    "scroll page down",
                    "scroll page up",
                    "scroll to bottom",
                    "scroll to top",
                    "select last tab",
                    "select next tab",
                    "select previous tab",
                    "select tab #1",
                    "select tab #2",
                    "select tab #3",
                    "select tab #4",
                    "select tab #5",
                    "select tab #6",
                    "select tab #7",
                    "select tab #8",
                    "send message",
                    "send message and keep text",
                    "show global search",
                    "show search",
                    "toggle live tabs only",
                    "toggle local r9k",
                    "toggle tab visibility",
                    "zoom in",
                    "zoom out",
                    "zoom reset"
                ],
                "change channel": {
                    "action": "changeChannel",
                    "arguments": [],
                    "category": "split",
                    "keySequence": "Ctrl+R"
                },
                "close popup window": {
                    "action": "delete",
                    "arguments": [],
                    "category": "popupWindow",
                    "keySequence": "Esc"
                },
                "create clip": {
                    "action": "createClip",
                    "arguments": [],
                    "category": "split",
                    "keySequence": "Alt+X"
                },
                "delete": {
                    "action": "delete",
                    "arguments": [],
                    "category": "split",
                    "keySequence": "Ctrl+W"
                },
                "emote picker": {
                    "action": "openEmotesPopup",
                    "arguments": [],
                    "category": "splitInput",
                    "keySequence": "Ctrl+E"
                },
                "focus down": {
                    "action": "focus",
                    "arguments": [
                        "down"
                    ],
                    "category": "split",
                    "keySequence": "Alt+Down"
                },
                "focus left": {
                    "action": "focus",
                    "arguments": [
                        "left"
                    ],
                    "category": "split",
                    "keySequence": "Alt+Left"
                },
                "focus right": {
                    "action": "focus",
                    "arguments": [
                        "right"
                    ],
                    "category": "split",
                    "keySequence": "Alt+Right"
                },
                "focus up": {
                    "action": "focus",
                    "arguments": [
                        "up"
                    ],
                    "category": "split",
                    "keySequence": "Alt+Up"
                },
                "go to end of input": {
                    "action": "cursorToEnd",
                    "arguments": [
                        "withoutSelection"
                    ],
                    "category": "splitInput",
                    "keySequence": "End"
                },
                "go to end of input with selection": {
                    "action": "cursorToEnd",
                    "arguments": [
                        "withSelection"
                    ],
                    "category": "splitInput",
                    "keySequence": "Shift+End"
                },
                "go to start of input": {
                    "action": "cursorToStart",
                    "arguments": [
                        "withoutSelection"
                    ],
                    "category": "splitInput",
                    "keySequence": "Home"
                },
                "go to start of input with selection": {
                    "action": "cursorToStart",
                    "arguments": [
                        "withSelection"
                    ],
                    "category": "splitInput",
                    "keySequence": "Shift+Home"
                },
                "new popup window": {
                    "action": "popup",
                    "arguments": [
                        "split"
                    ],
                    "category": "window",
                    "keySequence": "Ctrl+N"
                },
                "new popup window from tab": {
                    "action": "popup",
                    "arguments": [
                        "window"
                    ],
                    "category": "window",
                    "keySequence": "Ctrl+Shift+N"
                },
                "new split": {
                    "action": "newSplit",
                    "arguments": [],
                    "category": "window",
                    "keySequence": "Ctrl+T"
                },
                "new tab": {
                    "action": "newTab",
                    "arguments": [],
                    "category": "window",
                    "keySequence": "Ctrl+Shift+T"
                },
                "next message": {
                    "action": "nextMessage",
                    "arguments": [],
                    "category": "splitInput",
                    "keySequence": "Down"
                },
                "open debug popup": {
                    "action": "debug",
                    "arguments": [],
                    "category": "split",
                    "keySequence": "F10"
                },
                "open quick switcher": {
                    "action": "openQuickSwitcher",
                    "arguments": [],
                    "category": "window",
                    "keySequence": "Ctrl+K"
                },
                "open settings": {
                    "action": "openSettings",
                    "arguments": [],
                    "category": "window",
                    "keySequence": "Ctrl+P"
                },
                "popup accept": {
                    "action": "accept",
                    "arguments": [],
                    "category": "popupWindow",
                    "keySequence": "Return"
                },
                "popup focus search box": {
                    "action": "search",
                    "arguments": [],
                    "category": "popupWindow",
                    "keySequence": "Ctrl+F"
                },
                "popup reject": {
                    "action": "reject",
                    "arguments": [],
                    "category": "popupWindow",
                    "keySequence": "Esc"
                },
                "popup scroll down": {
                    "action": "scrollPage",
                    "arguments": [
                        "down"
                    ],
                    "category": "popupWindow",
                    "keySequence": "PgDown"
                },
                "popup scroll up": {
                    "action": "scrollPage",
                    "arguments": [
                        "up"
                    ],
                    "category": "popupWindow",
                    "keySequence": "PgUp"
                },
                "popup select last tab": {
                    "action": "openTab",
                    "arguments": [
                        "last"
                    ],
                    "category": "popupWindow",
                    "keySequence": "Ctrl+9"
                },
                "popup select next tab": {
                    "action": "openTab",
                    "arguments": [
                        "next"
                    ],
                    "category": "popupWindow",
                    "keySequence": "Ctrl+Tab"
                },
                "popup select previous tab": {
                    "action": "openTab",
                    "arguments": [
                        "previous"
                    ],
                    "category": "popupWindow",
                    "keySequence": "Ctrl+Shift+Tab"
                },
                "popup select tab #1": {
                    "action": "openTab",
                    "arguments": [
                        "0"
                    ],
                    "category": "popupWindow",
                    "keySequence": "Ctrl+1"
                },
                "popup select tab #2": {
                    "action": "openTab",
                    "arguments": [
                        "1"
                    ],
                    "category": "popupWindow",
                    "keySequence": "Ctrl+2"
                },
                "popup select tab #3": {
                    "action": "openTab",
                    "arguments": [
                        "2"
                    ],
                    "category": "popupWindow",
                    "keySequence": "Ctrl+3"
                },
                "popup select tab #4": {
                    "action": "openTab",
                    "arguments": [
                        "3"
                    ],
                    "category": "popupWindow",
                    "keySequence": "Ctrl+4"
                },
                "popup select tab #5": {
                    "action": "openTab",
                    "arguments": [
                        "4"
                    ],
                    "category": "popupWindow",
                    "keySequence": "Ctrl+5"
                },
                "popup select tab #6": {
                    "action": "openTab",
                    "arguments": [
                        "5"
                    ],
                    "category": "popupWindow",
                    "keySequence": "Ctrl+6"
                },
                "popup select tab #7": {
                    "action": "openTab",
                    "arguments": [
                        "6"
                    ],
                    "category": "popupWindow",
                    "keySequence": "Ctrl+7"
                },
                "popup select tab #8": {
                    "action": "openTab",
                    "arguments": [
                        "7"
                    ],
                    "category": "popupWindow",
                    "keySequence": "Ctrl+8"
                },
                "previous message": {
                    "action": "previousMessage",
                    "arguments": [],
                    "category": "splitInput",
                    "keySequence": "Up"
                },
                "reconnect": {
                    "action": "reconnect",
                    "arguments": [],
                    "category": "split",
                    "keySequence": "Ctrl+F5"
                },
                "reload emotes": {
                    "action": "reloadEmotes",
                    "arguments": [],
                    "category": "split",
                    "keySequence": "F5"
                },
                "remove tab": {
                    "action": "removeTab",
                    "arguments": [],
                    "category": "window",
                    "keySequence": "Ctrl+Shift+W"
                },
                "reopen split": {
                    "action": "reopenSplit",
                    "arguments": [],
                    "category": "window",
                    "keySequence": "Ctrl+G"
                },
                "scroll page down": {
                    "action": "scrollPage",
                    "arguments": [
                        "down"
                    ],
                    "category": "split",
                    "keySequence": "PgDown"
                },
                "scroll page up": {
                    "action": "scrollPage",
                    "arguments": [
                        "up"
                    ],
                    "category": "split",
                    "keySequence": "PgUp"
                },
                "scroll to bottom": {
                    "action": "scrollToBottom",
                    "arguments": [],
                    "category": "split",
                    "keySequence": "Ctrl+End"
                },
                "scroll to top": {
                    "action": "scrollToTop",
                    "arguments": [],
                    "category": "split",
                    "keySequence": "Ctrl+Home"
                },
                "select last tab": {
                    "action": "openTab",
                    "arguments": [
                        "last"
                    ],
                    "category": "window",
                    "keySequence": "Ctrl+9"
                },
                "select next tab": {
                    "action": "openTab",
                    "arguments": [
                        "next"
                    ],
                    "category": "window",
                    "keySequence": "Ctrl+Tab"
                },
                "select previous tab": {
                    "action": "openTab",
                    "arguments": [
                        "previous"
                    ],
                    "category": "window",
                    "keySequence": "Ctrl+Shift+Tab"
                },
                "select tab #1": {
                    "action": "openTab",
                    "arguments": [
                        "0"
                    ],
                    "category": "window",
                    "keySequence": "Ctrl+1"
                },
                "select tab #2": {
                    "action": "openTab",
                    "arguments": [
                        "1"
                    ],
                    "category": "window",
                    "keySequence": "Ctrl+2"
                },
                "select tab #3": {
                    "action": "openTab",
                    "arguments": [
                        "2"
                    ],
                    "category": "window",
                    "keySequence": "Ctrl+3"
                },
                "select tab #4": {
                    "action": "openTab",
                    "arguments": [
                        "3"
                    ],
                    "category": "window",
                    "keySequence": "Ctrl+4"
                },
                "select tab #5": {
                    "action": "openTab",
                    "arguments": [
                        "4"
                    ],
                    "category": "window",
                    "keySequence": "Ctrl+5"
                },
                "select tab #6": {
                    "action": "openTab",
                    "arguments": [
                        "5"
                    ],
                    "category": "window",
                    "keySequence": "Ctrl+6"
                },
                "select tab #7": {
                    "action": "openTab",
                    "arguments": [
                        "6"
                    ],
                    "category": "window",
                    "keySequence": "Ctrl+7"
                },
                "select tab #8": {
                    "action": "openTab",
                    "arguments": [
                        "7"
                    ],
                    "category": "window",
                    "keySequence": "Ctrl+8"
                },
                "send message": {
                    "action": "sendMessage",
                    "arguments": [],
                    "category": "splitInput",
                    "keySequence": "Return"
                },
                "send message and keep text": {
                    "action": "sendMessage",
                    "arguments": [
                        "keepInput"
                    ],
                    "category": "splitInput",
                    "keySequence": "Ctrl+Return"
                },
                "show global search": {
                    "action": "showGlobalSearch",
                    "arguments": [],
                    "category": "split",
                    "keySequence": "Ctrl+Shift+F"
                },
                "show search": {
                    "action": "showSearch",
                    "arguments": [],
                    "category": "split",
                    "keySequence": "Ctrl+F"
                },
                "toggle live tabs only": {
                    "action": "setTabVisibility",
                    "arguments": [
                        "toggleLiveOnly"
                    ],
                    "category": "window",
                    "keySequence": "Ctrl+Shift+L"
                },
                "toggle local r9k": {
                    "action": "toggleLocalR9K",
                    "arguments": [],
                    "category": "window",
                    "keySequence": "Ctrl+H"
                },
                "toggle tab visibility": {
                    "action": "setTabVisibility",
                    "arguments": [
                        "toggle"
                    ],
                    "category": "window",
                    "keySequence": "Ctrl+U"
                },
                "zoom in": {
                    "action": "zoom",
                    "arguments": [
                        "in"
                    ],
                    "category": "window",
                    "keySequence": "Ctrl++"
                },
                "zoom out": {
                    "action": "zoom",
                    "arguments": [
                        "out"
                    ],
                    "category": "window",
                    "keySequence": "Ctrl+-"
                },
                "zoom reset": {
                    "action": "zoom",
                    "arguments": [
                        "reset"
                    ],
                    "category": "window",
                    "keySequence": "Ctrl+0"
                }
            },
            "misc": {
                "currentVersion": "2.5.1",
                "lockNotebookLayout": false
            },
            "similarity": {
                "hideSimilar": false,
                "hideSimilarMaxDelay": 30,
                "hideSimilarMaxMessagesToCheck": 5,
                "similarityEnabled": false
            },
            "ui": {
                "lastSelectChannelTab": 0,
                "lastSelectIrcConn": -1
            }
          }
      '';
      ".local/share/chatterino/Settings/window-layout.json".text = builtins.toJSON {
        windows = [
          {
            emotePopup = {
              x = 0;
              y = 0;
            };
            height = 569;
            state = "maximized";
            tabs = map tabber channels;
            type = "main";
            width = 943;
            x = 0;
            y = 0;
          }
        ];
      };
    };
  };
}
