diff --git a/modules/home/default.nix b/modules/home/default.nix index 4e8065d..d260a69 100644 --- a/modules/home/default.nix +++ b/modules/home/default.nix @@ -11,6 +11,7 @@ ++ [(import ./cava)] ++ [(import ./kitty)] ++ [(import ./aseprite)] + ++ [(import ./discord)] ++ [(import ./swaylock)] ++ [(import ./wofi)] ++ [(import ./zsh)] diff --git a/modules/home/discord/default.nix b/modules/home/discord/default.nix new file mode 100644 index 0000000..161daa6 --- /dev/null +++ b/modules/home/discord/default.nix @@ -0,0 +1,42 @@ +{ pkgs, lib, ... }: let +{ + programs.discord = { + enable = true; + }; + + home.packages = with pkgs; [ + webcord + ]; + + os.nixpkgs.overlays = [ + (_final: prev: { + webcord-vencord = prev.webcord-vencord.override { + # Patch webcord + webcord = prev.webcord.overrideAttrs (old: { + patches = (old.patches or []) ++ [./webcord/unwritable-config.patch]; + }); + + # Patch vencord + vencord-web-extension = prev.vencord-web-extension.overrideAttrs (old: { + patches = + (old.patches or []) + ++ [ + (prev.runCommand "vencord-settings-patch" { + nativeBuildInputs = with prev; [jq]; + } '' + export settings=$(jq -c '.settings' < ${./vencord/exported-settings.json}) + substituteAll ${./vencord/declarative-settings.patch} $out + '') + ]; + }); + }; + }) + ]; + + environment.systemPackages = with pkgs; [webcord-vencord]; + + xdg.configFile."WebCord/Themes/amoled-cord".source = pkgs.substituteAll { + src = ./themes/amoled-cord.css; + }; + xdg.configFile."WebCord/config.json".source = ./webcord/config.json; +} \ No newline at end of file diff --git a/modules/home/discord/themes/theme.css b/modules/home/discord/themes/theme.css new file mode 100644 index 0000000..7eb1ce2 --- /dev/null +++ b/modules/home/discord/themes/theme.css @@ -0,0 +1,2 @@ +/* mocha */ +@import url("https://catppuccin.github.io/discord/dist/catppuccin-mocha.theme.css"); \ No newline at end of file diff --git a/modules/home/discord/vencord/declarative-settings.patch b/modules/home/discord/vencord/declarative-settings.patch new file mode 100644 index 0000000..492e46f --- /dev/null +++ b/modules/home/discord/vencord/declarative-settings.patch @@ -0,0 +1,13 @@ +diff --git a/src/api/Settings.ts b/src/api/Settings.ts +index 709050f..ced740f 100644 +--- a/src/api/Settings.ts ++++ b/src/api/Settings.ts +@@ -93,7 +93,7 @@ const DefaultSettings: Settings = { + }; + + try { +- var settings = JSON.parse(VencordNative.settings.get()) as Settings; ++ var settings = @settings@ as Settings; + mergeDefaults(settings, DefaultSettings); + } catch (err) { + var settings = mergeDefaults({} as Settings, DefaultSettings); \ No newline at end of file diff --git a/modules/home/discord/vencord/exported-settings.json b/modules/home/discord/vencord/exported-settings.json new file mode 100644 index 0000000..8fb9082 --- /dev/null +++ b/modules/home/discord/vencord/exported-settings.json @@ -0,0 +1,452 @@ +{ + "settings": { + "notifyAboutUpdates": true, + "autoUpdate": false, + "autoUpdateNotification": true, + "useQuickCss": true, + "themeLinks": [], + "enableReactDevtools": false, + "frameless": false, + "transparent": false, + "winCtrlQ": false, + "macosTranslucency": false, + "disableMinSize": false, + "winNativeTitleBar": false, + "plugins": { + "BadgeAPI": { + "enabled": true + }, + "CommandsAPI": { + "enabled": true + }, + "ContextMenuAPI": { + "enabled": true + }, + "MemberListDecoratorsAPI": { + "enabled": true + }, + "MessageAccessoriesAPI": { + "enabled": true + }, + "MessageDecorationsAPI": { + "enabled": true + }, + "MessageEventsAPI": { + "enabled": true + }, + "MessagePopoverAPI": { + "enabled": true + }, + "NoticesAPI": { + "enabled": true + }, + "ServerListAPI": { + "enabled": false + }, + "SettingsStoreAPI": { + "enabled": false + }, + "NoTrack": { + "enabled": true + }, + "Settings": { + "enabled": true, + "settingsLocation": "aboveActivity" + }, + "AlwaysAnimate": { + "enabled": false + }, + "AlwaysTrust": { + "enabled": true + }, + "AnonymiseFileNames": { + "enabled": false + }, + "WebRichPresence (arRPC)": { + "enabled": false + }, + "BANger": { + "enabled": false + }, + "BetterFolders": { + "enabled": false, + "sidebar": true, + "closeAllHomeButton": false, + "sidebarAnim": true, + "closeOthers": false + }, + "BetterGifAltText": { + "enabled": false + }, + "BetterNotesBox": { + "enabled": false + }, + "BetterRoleDot": { + "enabled": false + }, + "BetterUploadButton": { + "enabled": false + }, + "BiggerStreamPreview": { + "enabled": true + }, + "BlurNSFW": { + "enabled": false + }, + "CallTimer": { + "enabled": false + }, + "ClearURLs": { + "enabled": false + }, + "ColorSighted": { + "enabled": false + }, + "ConsoleShortcuts": { + "enabled": false + }, + "CrashHandler": { + "enabled": true, + "attemptToPreventCrashes": true, + "attemptToNavigateToHome": false + }, + "CustomRPC": { + "enabled": false + }, + "DisableDMCallIdle": { + "enabled": false + }, + "EmoteCloner": { + "enabled": false + }, + "Experiments": { + "enabled": false + }, + "F8Break": { + "enabled": false + }, + "FakeNitro": { + "enabled": false, + "enableEmojiBypass": true, + "enableStickerBypass": true, + "enableStreamQualityBypass": true, + "transformStickers": true, + "transformEmojis": true, + "transformCompoundSentence": false + }, + "FakeProfileThemes": { + "enabled": false + }, + "FavoriteEmojiFirst": { + "enabled": false + }, + "FixInbox": { + "enabled": false + }, + "ForceOwnerCrown": { + "enabled": true + }, + "FriendInvites": { + "enabled": false + }, + "GameActivityToggle": { + "enabled": false + }, + "GifPaste": { + "enabled": false + }, + "HideAttachments": { + "enabled": false + }, + "iLoveSpam": { + "enabled": false + }, + "IgnoreActivities": { + "enabled": false + }, + "ImageZoom": { + "enabled": true, + "saveZoomValues": true, + "preventCarouselFromClosingOnClick": true, + "invertScroll": true, + "zoom": 2, + "size": 100, + "zoomSpeed": 0.5 + }, + "InvisibleChat": { + "enabled": false + }, + "KeepCurrentChannel": { + "enabled": true + }, + "LastFMRichPresence": { + "enabled": false + }, + "LoadingQuotes": { + "enabled": false + }, + "MemberCount": { + "enabled": true + }, + "MessageClickActions": { + "enabled": false + }, + "MessageLinkEmbeds": { + "enabled": false + }, + "MessageLogger": { + "enabled": true, + "deleteStyle": "text" + }, + "MessageTags": { + "enabled": false, + "clyde": true + }, + "MoreCommands": { + "enabled": false + }, + "MoreKaomoji": { + "enabled": false + }, + "MoreUserTags": { + "enabled": false + }, + "Moyai": { + "enabled": false, + "volume": 0.5, + "triggerWhenUnfocused": true, + "ignoreBots": true + }, + "MuteNewGuild": { + "enabled": false + }, + "MutualGroupDMs": { + "enabled": false + }, + "NoBlockedMessages": { + "enabled": false + }, + "NoDevtoolsWarning": { + "enabled": false + }, + "NoF1": { + "enabled": true + }, + "NoPendingCount": { + "enabled": false + }, + "NoProfileThemes": { + "enabled": false + }, + "NoReplyMention": { + "enabled": true, + "userList": "419880181101232129,372809091208445953", + "shouldPingListed": false, + "inverseShiftReply": false + }, + "NoScreensharePreview": { + "enabled": false + }, + "NoUnblockToJump": { + "enabled": false + }, + "NSFWGateBypass": { + "enabled": true + }, + "oneko": { + "enabled": false + }, + "Party mode 🎉": { + "enabled": false + }, + "PermissionsViewer": { + "enabled": false + }, + "petpet": { + "enabled": false + }, + "PinDMs": { + "enabled": false, + "pinOrder": 0 + }, + "PlainFolderIcon": { + "enabled": false + }, + "PlatformIndicators": { + "enabled": true, + "colorMobileIndicator": true, + "list": true, + "badges": true, + "messages": true + }, + "PronounDB": { + "enabled": true, + "showInMessages": true, + "showSelf": true, + "showInProfile": true + }, + "QuickMention": { + "enabled": false + }, + "QuickReply": { + "enabled": false + }, + "ReactErrorDecoder": { + "enabled": false + }, + "ReadAllNotificationsButton": { + "enabled": false + }, + "RelationshipNotifier": { + "enabled": false + }, + "RevealAllSpoilers": { + "enabled": false + }, + "ReverseImageSearch": { + "enabled": true + }, + "ReviewDB": { + "enabled": true, + "notifyReviews": true + }, + "RoleColorEverywhere": { + "enabled": false + }, + "SearchReply": { + "enabled": false + }, + "SendTimestamps": { + "enabled": false + }, + "ServerListIndicators": { + "enabled": false + }, + "ShikiCodeblocks": { + "enabled": false + }, + "ShowAllMessageButtons": { + "enabled": false + }, + "ShowConnections": { + "enabled": false + }, + "ShowHiddenChannels": { + "enabled": false + }, + "ShowMeYourName": { + "enabled": true, + "mode": "nick-user", + "inReplies": false + }, + "SilentMessageToggle": { + "enabled": false + }, + "SilentTyping": { + "enabled": true, + "showIcon": false, + "isEnabled": true + }, + "SortFriendRequests": { + "enabled": false + }, + "SpotifyControls": { + "enabled": false + }, + "SpotifyCrack": { + "enabled": false + }, + "SpotifyShareCommands": { + "enabled": false + }, + "StartupTimings": { + "enabled": false + }, + "SupportHelper": { + "enabled": true + }, + "TextReplace": { + "enabled": false + }, + "TimeBarAllActivities": { + "enabled": false + }, + "Translate": { + "enabled": true, + "autoTranslate": false, + "receivedInput": "auto", + "receivedOutput": "en" + }, + "TypingIndicator": { + "enabled": true, + "includeMutedChannels": false + }, + "TypingTweaks": { + "enabled": false + }, + "Unindent": { + "enabled": true + }, + "UnsuppressEmbeds": { + "enabled": false + }, + "UrbanDictionary": { + "enabled": true + }, + "UserVoiceShow": { + "enabled": false + }, + "USRBG": { + "enabled": false + }, + "UwUifier": { + "enabled": false + }, + "ValidUser": { + "enabled": false + }, + "VoiceChatDoubleClick": { + "enabled": false + }, + "VcNarrator": { + "enabled": false + }, + "VencordToolbox": { + "enabled": false + }, + "ViewIcons": { + "enabled": false + }, + "ViewRaw": { + "enabled": true, + "clickMethod": "Left" + }, + "WebContextMenus": { + "enabled": true, + "addBack": false + }, + "GreetStickerPicker": { + "enabled": false + }, + "WhoReacted": { + "enabled": true + }, + "Wikisearch": { + "enabled": false + } + }, + "notifications": { + "timeout": 5000, + "position": "bottom-right", + "useNative": "not-focused", + "logLimit": 50 + }, + "cloud": { + "authenticated": false, + "url": "https://api.vencord.dev/", + "settingsSync": false, + "settingsSyncVersion": 1688256776571 + } + }, + "quickCss": "" +} \ No newline at end of file diff --git a/modules/home/discord/webcord/config.json b/modules/home/discord/webcord/config.json new file mode 100644 index 0000000..f0e72e2 --- /dev/null +++ b/modules/home/discord/webcord/config.json @@ -0,0 +1,63 @@ +{ + "settings": { + "general": { + "menuBar": { + "hide": true + }, + "tray": { + "disable": true + }, + "taskbar": { + "flash": true + }, + "window": { + "transparent": true, + "hideOnClose": false + } + }, + "privacy": { + "blockApi": { + "science": true, + "typingIndicator": true, + "fingerprinting": true + }, + "permissions": { + "video": false, + "audio": false, + "fullscreen": true, + "notifications": true, + "display-capture": true, + "background-sync": true + } + }, + "advanced": { + "currentInstance": { + "radio": 0 + }, + "devel": { + "enabled": true + }, + "redirection": { + "warn": true + }, + "optimize": { + "gpu": true + }, + "webApi": { + "webGl": true + }, + "unix": { + "autoscroll": false + } + } + }, + "update": { + "notification": { + "version": "", + "till": "" + } + }, + "screenShareStore": { + "audio": false + } +} \ No newline at end of file diff --git a/modules/home/discord/webcord/unwritable-config.patch b/modules/home/discord/webcord/unwritable-config.patch new file mode 100644 index 0000000..02b992a --- /dev/null +++ b/modules/home/discord/webcord/unwritable-config.patch @@ -0,0 +1,39 @@ +diff --git a/sources/code/main/modules/config.ts b/sources/code/main/modules/config.ts +index 4390832..31fe819 100644 +--- a/sources/code/main/modules/config.ts ++++ b/sources/code/main/modules/config.ts +@@ -2,7 +2,7 @@ + * configManager + */ + +-import { readFileSync, existsSync, rmSync, writeFileSync } from "fs"; ++import { readFileSync, existsSync, rmSync } from "fs"; + import { + app, + BrowserWindow, +@@ -146,12 +146,12 @@ class Config { + /** Default configuration values. */ + private readonly defaultConfig; + protected spaces = 4; +- #write(object: unknown) { +- const decodedData = JSON.stringify(object, null, this.spaces); +- let encodedData:string|Buffer = decodedData; +- if(this.#pathExtension === FileExt.Encrypted) +- encodedData = safeStorage.encryptString(decodedData); +- writeFileSync(this.#path+this.#pathExtension,encodedData); ++ #write(_object: unknown) { ++ // const decodedData = JSON.stringify(object, null, this.spaces); ++ // let encodedData:string|Buffer = decodedData; ++ // if(this.#pathExtension === FileExt.Encrypted) ++ // encodedData = safeStorage.encryptString(decodedData); ++ // writeFileSync(this.#path+this.#pathExtension,encodedData); + } + #read(): unknown { + const encodedData = readFileSync(this.#path+this.#pathExtension); +@@ -317,4 +317,4 @@ void import("electron/main") + if(new URL(event.senderFrame.url).protocol === "file:") + appConfig.value = config; + }) +- ); +\ No newline at end of file ++ ); \ No newline at end of file diff --git a/modules/home/package/default.nix b/modules/home/package/default.nix index 3e6bc01..ba4cfe2 100755 --- a/modules/home/package/default.nix +++ b/modules/home/package/default.nix @@ -1,7 +1,6 @@ { inputs, pkgs, ... }: { home.packages = (with pkgs; [ - discord eza fzf lazygit