diff --git a/modules/user/modules/firefox/default.nix b/modules/user/modules/firefox/default.nix index 561c28e..c9386c2 100755 --- a/modules/user/modules/firefox/default.nix +++ b/modules/user/modules/firefox/default.nix @@ -3,50 +3,166 @@ let inherit (import ./prefgroups.nix inputs) modules prefgroups; extra-addons = let - buildFirefoxXpiAddon = lib.makeOverridable ({ - stdenv ? pkgs.stdenv, - fetchurl ? pkgs.fetchurl, - pname, - version, - addonId, - url, - sha256, - ... - }: stdenv.mkDerivation { - name = "${pname}-${version}"; + buildFirefoxXpiAddon = { + src, + pname, + version, + addonId + }: pkgs.stdenv.mkDerivation { + name = "${pname}-${version}"; - src = fetchurl { inherit url sha256; }; + inherit src; - preferLocalBuild = true; - allowSubstitutes = true; + preferLocalBuild = true; + allowSubstitutes = true; - buildCommand = '' - dst="$out/share/mozilla/extensions/{ec8030f7-c20a-464f-9b0e-13a3a9e97384}" - mkdir -p "$dst" - install -v -m644 "$src" "$dst/${addonId}.xpi" - ''; - }); + buildCommand = '' + dst="$out/share/mozilla/extensions/{ec8030f7-c20a-464f-9b0e-13a3a9e97384}" + mkdir -p "$dst" + install -v -m644 "$src" "$dst/${addonId}.xpi" + ''; + }; + + remoteXpiAddon = { pname, version, addonId, url, sha256 }: buildFirefoxXpiAddon { + inherit pname version addonId; + src = pkgs.fetchurl { inherit url sha256; }; + }; + + theme = { name, theme }: buildFirefoxXpiAddon { + pname = "firefox-theme-xpi-${name}"; + version = "1.0"; + addonId = "theme-${name}@outfoxxed.me"; + src = import ./theme.nix { inherit pkgs name theme; }; + }; in { - github-reposize = buildFirefoxXpiAddon { + github-reposize = remoteXpiAddon { pname = "github-reposize"; version = "1.7.0"; addonId = "github-repo-size@mattelrah.com"; url = "https://addons.mozilla.org/firefox/downloads/file/3854469/github_repo_size-1.7.0.xpi"; sha256 = "2zGY12esYusaw2IzXM+1kP0B/0Urxu0yj7xXlDlutto="; }; - vencord = buildFirefoxXpiAddon { + vencord = remoteXpiAddon { pname = "vencord"; version = "1.2.7"; addonId = "vencord-firefox@vendicated.dev"; url = "https://addons.mozilla.org/firefox/downloads/file/4123132/vencord_web-1.2.7.xpi"; sha256 = "A/XKdT0EuDHsQ7mcK9hsXAoAJYUt4Uvp/rtCf/9dAS0="; }; + + theme-gray = theme { + name = "theme-gray"; + theme.colors = { + toolbar = "rgb(42, 46, 50)"; + toolbar_text = "rgb(255, 255, 255)"; + frame = "rgb(27, 30, 32)"; + tab_background_text = "rgb(215, 226, 239)"; + toolbar_field = "rgb(27, 30, 32)"; + toolbar_field_text = "rgb(255, 255, 255)"; + tab_line = "rgb(0, 0, 0)"; + popup = "rgb(42, 46, 50)"; + popup_text = "rgb(252, 252, 252)"; + tab_loading = "rgb(0, 0, 0)"; + }; + }; + + theme-green = theme { + name = "theme-green"; + theme.colors = { + toolbar = "rgb(26, 53, 40)"; + toolbar_text = "rgb(255, 255, 255)"; + frame = "rgb(26, 43, 35)"; + tab_background_text = "rgb(215, 226, 239)"; + toolbar_field = "rgb(26, 43, 35)"; + toolbar_field_text = "rgb(255, 255, 255)"; + tab_line = "rgb(0, 0, 0)"; + popup = "rgb(42, 46, 50)"; + popup_text = "rgb(252, 252, 252)"; + tab_loading = "rgb(0, 0, 0)"; + }; + }; + + theme-orange = theme { + name = "theme-orange"; + theme.colors = { + toolbar = "rgb(66, 44, 28)"; + toolbar_text = "rgb(255, 255, 255)"; + frame = "rgb(43, 34, 26)"; + tab_background_text = "rgb(215, 226, 239)"; + toolbar_field = "rgb(43, 34, 26)"; + toolbar_field_text = "rgb(255, 255, 255)"; + tab_line = "rgb(0, 0, 0)"; + popup = "rgb(42, 46, 50)"; + popup_text = "rgb(252, 252, 252)"; + tab_loading = "rgb(0, 0, 0)"; + }; + }; + + theme-purple = theme { + name = "theme-purple"; + theme.colors = { + toolbar = "rgb(42, 28, 66)"; + toolbar_text = "rgb(255, 255, 255)"; + frame = "rgb(34, 26, 43)"; + tab_background_text = "rgb(215, 226, 239)"; + toolbar_field = "rgb(34, 26, 43)"; + toolbar_field_text = "rgb(255, 255, 255)"; + tab_line = "rgb(0, 0, 0)"; + popup = "rgb(42, 46, 50)"; + popup_text = "rgb(252, 252, 252)"; + tab_loading = "rgb(0, 0, 0)"; + }; + }; }; in { programs.firefox = { enable = true; package = pkgs.firefox-devedition.overrideAttrs (pkg: let + entries = { + im-firefox = { + name = "IMs (Firefox)"; + profile = "im"; + nomime = true; + noremote = true; + }; + + trusted = { + name = "Trusted Firefox"; + profile = "trusted"; + nomime = true; + }; + + work = { + name = "Work Firefox"; + profile = "work"; + nomime = true; + }; + + general = { + name = "Firefox"; + profile = "general"; + }; + + schizo = { + name = "Schizo Firefox"; + profile = "schizo"; + nomime = true; + }; + }; + + items = builtins.attrValues + (builtins.mapAttrs (name: entry: pkg.desktopItem.override (item: { + inherit name; + desktopName = entry.name; + + mimeTypes = if entry ? nomime && entry.nomime + then [] + else item.mimeTypes; + + exec = "${item.exec} ${if entry ? noremote && entry.noremote then "-no-remote" else ""} -P ${entry.profile}"; + })) entries); + imEntry = pkg.desktopItem.override (entry: { name = "discord-firefox"; desktopName = "IMs (Firefox)"; @@ -56,28 +172,44 @@ in { in { buildCommand = '' ${pkg.buildCommand} - cp ${imEntry}/share/applications/* $out/share/applications - ''; + rm $out/share/applications/* + '' + lib.strings.concatMapStrings (item: "\ncp ${item}/share/applications/* $out/share/applications") items; }); - profiles = { - base = { - id = 1; - name = "BaseFF"; - userChrome = builtins.readFile ./sideberry_chrome.css; - }; - dev-edition-default = { - id = 0; - name = "dev-edition-default"; - path = "default"; + profiles = let + mkProfile = { name, id, settings, extensions ? [] }: { + inherit id settings name extensions; + path = name; userChrome = '' ${builtins.readFile ./sideberry_chrome.css} ${builtins.readFile ./sideberry_hide_ext_button.css} ''; - settings = with modules; {} - // base - // minor-1 - // annoying; + }; + in { + base = { + id = 10; + name = "base"; + }; + + schizo = mkProfile { + id = 0; + name = "schizo"; + settings = modules.schizo; + + extensions = with pkgs.nur.repos.rycee.firefox-addons; with extra-addons; [ + darkreader + sidebery + sponsorblock + ublock-origin + umatrix + theme-purple + ]; + }; + + general = mkProfile { + id = 1; + name = "general"; + settings = modules.general; extensions = with pkgs.nur.repos.rycee.firefox-addons; with extra-addons; [ bitwarden @@ -88,11 +220,13 @@ in { sponsorblock ublock-origin umatrix + theme-gray ]; }; + im = { id = 2; - name = "Im"; + name = "im"; userChrome = builtins.readFile ./inline_tabs_chrome.css; settings = modules.base // prefgroups.misc.restore-pages; @@ -102,6 +236,40 @@ in { vencord ]; }; + + trusted = mkProfile { + id = 3; + name = "trusted"; + settings = modules.trusted; + + extensions = with pkgs.nur.repos.rycee.firefox-addons; with extra-addons; [ + bitwarden + darkreader + github-reposize + sidebery + simplelogin + ublock-origin + umatrix + theme-green + ]; + }; + + work = mkProfile { + id = 4; + name = "work"; + settings = modules.trusted; + + extensions = with pkgs.nur.repos.rycee.firefox-addons; with extra-addons; [ + bitwarden + darkreader + github-reposize + sidebery + simplelogin + ublock-origin + umatrix + theme-orange + ]; + }; }; }; } diff --git a/modules/user/modules/firefox/prefgroups.nix b/modules/user/modules/firefox/prefgroups.nix index a42a528..cf707de 100644 --- a/modules/user/modules/firefox/prefgroups.nix +++ b/modules/user/modules/firefox/prefgroups.nix @@ -378,6 +378,7 @@ rec { "privacy.sanitize.timeSpan" = 0; }; + # Note: breaks dark mode resist-fingerprinting = { "privacy.resistFingerprinting" = true; }; @@ -543,30 +544,47 @@ rec { // misc.default-dark-theme ; - # Minor breakage / inconvenience minor-1 = {} // misc.disable-prefetching // privacy.disable-captive-portals // privacy.disable-search-suggestions // security.disable-http-resources - // security.cross-origin.trimming - // security.cross-origin.same-host // security.remove-webchannel-whitelist // security.etp-strict - // privacy.sanitize-on-shutdown - // privacy.resist-fingerprinting - // security.disable-system-ui + ; + + minor-2 = {} // security.disable-webgl + // privacy.sanitize-on-shutdown // security.disable-sessionrestore - // security.disable-js-jit ; annoying = {} + // privacy.resist-fingerprinting + // security.disable-js-jit // privacy.webrtc.hide-ip-trusted // privacy.ephemeral-cookies // privacy.webrtc.disable - # // privacy.disable-referrer-headers + // security.cross-origin.trimming + // security.cross-origin.same-host + // privacy.disable-referrer-headers ; + + trusted = {} + // modules.base + // modules.minor-1 + ; + + general = {} + // modules.base + // modules.minor-1 + // modules.minor-2 + // privacy.ephemeral-cookies + // privacy.disable-referrer-headers + // privacy.webrtc.disable + ; + + schizo = modules.general // modules.annoying; }; mkUserJs = prefs: lib.concatStrings (lib.mapAttrsToList (name: value: '' diff --git a/modules/user/modules/firefox/sideberry_settings.json b/modules/user/modules/firefox/sideberry_settings.json index 115bec3..c0e9112 100644 --- a/modules/user/modules/firefox/sideberry_settings.json +++ b/modules/user/modules/firefox/sideberry_settings.json @@ -1 +1 @@ -{"settings":{"nativeScrollbars":true,"nativeScrollbarsThin":true,"nativeScrollbarsLeft":false,"selWinScreenshots":false,"updateSidebarTitle":true,"markWindow":true,"markWindowPreface":"​​​​​","ctxMenuNative":false,"ctxMenuRenderInact":true,"ctxMenuRenderIcons":true,"ctxMenuIgnoreContainers":"","navBarLayout":"hidden","navBarInline":true,"navBarSide":"left","hideAddBtn":false,"hideSettingsBtn":false,"navBtnCount":true,"hideEmptyPanels":true,"hideDiscardedTabPanels":false,"navActTabsPanelLeftClickAction":"none","navActBookmarksPanelLeftClickAction":"none","navTabsPanelMidClickAction":"discard","navBookmarksPanelMidClickAction":"none","navSwitchPanelsWheel":true,"subPanelRecentlyClosedBar":true,"subPanelBookmarks":true,"subPanelHistory":true,"groupLayout":"grid","containersSortByName":false,"skipEmptyPanels":false,"dndTabAct":true,"dndTabActDelay":750,"dndTabActMod":"none","dndExp":"pointer","dndExpDelay":750,"dndExpMod":"none","dndOutside":"win","dndActTabFromLink":true,"dndActSearchTab":true,"dndMoveTabs":false,"dndMoveBookmarks":false,"searchBarMode":"none","searchPanelSwitch":"same_type","searchBookmarksShortcut":"","searchHistoryShortcut":"","warnOnMultiTabClose":"any","activateLastTabOnPanelSwitching":true,"activateLastTabOnPanelSwitchingLoadedOnly":true,"switchPanelAfterSwitchingTab":"always","tabRmBtn":"hover","activateAfterClosing":"prev_act","activateAfterClosingStayInPanel":false,"activateAfterClosingGlobal":false,"activateAfterClosingNoFolded":true,"activateAfterClosingNoDiscarded":true,"askNewBookmarkPlace":true,"tabsRmUndoNote":true,"tabsUnreadMark":true,"tabsUpdateMark":"none","tabsUpdateMarkFirst":true,"tabsReloadLimit":5,"tabsReloadLimitNotif":true,"showNewTabBtns":true,"newTabBarPosition":"after_tabs","tabsPanelSwitchActMove":true,"tabsPanelSwitchActMoveAuto":true,"tabsUrlInTooltip":"full","newTabCtxReopen":false,"tabWarmupOnHover":true,"tabSwitchDelay":0,"moveNewTabPin":"start","moveNewTabParent":"last_child","moveNewTabParentActPanel":false,"moveNewTab":"end","moveNewTabActivePin":"start","pinnedTabsPosition":"panel","pinnedTabsList":true,"pinnedAutoGroup":true,"pinnedNoUnload":false,"tabsTree":true,"groupOnOpen":true,"tabsTreeLimit":"none","autoFoldTabs":false,"autoFoldTabsExcept":"none","autoExpandTabs":false,"autoExpandTabsOnNew":false,"rmChildTabs":"folded","tabsLvlDots":false,"discardFolded":false,"discardFoldedDelay":0,"discardFoldedDelayUnit":"sec","tabsTreeBookmarks":true,"treeRmOutdent":"branch","ignoreFoldedParent":false,"colorizeTabs":false,"colorizeTabsSrc":"container","colorizeTabsBranches":false,"colorizeTabsBranchesSrc":"url","inheritCustomColor":true,"hideInact":false,"hideFoldedTabs":false,"hideFoldedParent":"none","nativeHighlight":false,"warnOnMultiBookmarkDelete":"any","autoCloseBookmarks":false,"autoRemoveOther":false,"highlightOpenBookmarks":false,"activateOpenBookmarkTab":false,"showBookmarkLen":true,"bookmarksRmUndoNote":true,"loadBookmarksOnDemand":true,"pinOpenedBookmarksFolder":true,"oldBookmarksAfterSave":"ask","loadHistoryOnDemand":true,"fontSize":"m","animations":true,"animationSpeed":"norm","theme":"proton","density":"loose","colorScheme":"ff","sidebarCSS":true,"groupCSS":false,"snapNotify":true,"snapExcludePrivate":false,"snapInterval":0,"snapIntervalUnit":"min","snapLimit":0,"snapLimitUnit":"snap","snapAutoExport":false,"snapAutoExportType":"json","snapAutoExportPath":"Sidebery/snapshot-%Y.%M.%D-%h.%m.%s","snapMdFullTree":false,"hScrollAction":"none","navSwitchPanelsDelay":128,"scrollThroughTabs":"none","scrollThroughVisibleTabs":true,"scrollThroughTabsSkipDiscarded":true,"scrollThroughTabsExceptOverflow":true,"scrollThroughTabsCyclic":false,"scrollThroughTabsScrollArea":0,"autoMenuMultiSel":true,"multipleMiddleClose":false,"longClickDelay":500,"wheelThreshold":false,"wheelThresholdX":10,"wheelThresholdY":60,"tabDoubleClick":"new_child","tabsSecondClickActPrev":false,"tabsSecondClickActPrevPanelOnly":false,"shiftSelAct":true,"activateOnMouseUp":false,"tabLongLeftClick":"none","tabLongRightClick":"none","tabMiddleClick":"close","tabMiddleClickCtrl":"discard","tabMiddleClickShift":"duplicate","tabCloseMiddleClick":"close","tabsPanelLeftClickAction":"none","tabsPanelDoubleClickAction":"tab","tabsPanelRightClickAction":"menu","tabsPanelMiddleClickAction":"tab","newTabMiddleClickAction":"new_child","bookmarksLeftClickAction":"open_in_act","bookmarksLeftClickActivate":false,"bookmarksLeftClickPos":"default","bookmarksMidClickAction":"open_in_new","bookmarksMidClickActivate":false,"bookmarksMidClickRemove":false,"bookmarksMidClickPos":"default","historyLeftClickAction":"open_in_act","historyLeftClickActivate":false,"historyLeftClickPos":"default","historyMidClickAction":"open_in_new","historyMidClickActivate":false,"historyMidClickPos":"default","syncName":"","syncSaveSettings":false,"syncSaveCtxMenu":false,"syncSaveStyles":false,"syncSaveKeybindings":false,"selectActiveTabFirst":true},"sidebar":{"panels":{"wrfiBYh9di54":{"type":2,"id":"wrfiBYh9di54","name":"Tabs","color":"toolbar","iconSVG":"icon_tabs","iconIMGSrc":"","iconIMG":"","lockedPanel":false,"skipOnSwitching":false,"noEmpty":false,"newTabCtx":"none","dropTabCtx":"none","moveRules":[],"moveExcludedTo":-1,"bookmarksFolderId":-1,"newTabBtns":[],"srcPanelConfig":null}},"nav":["wrfiBYh9di54","add_tp","sp-0","settings"]},"contextMenu":{"tabs":[{"opts":["undoRmTab","mute","reload","bookmark"]},"separator-1",{"name":"%menu.tab.move_to_sub_menu_name","opts":["moveToNewWin","moveToWin","separator-5","moveToPanel","moveToNewPanel"]},{"name":"%menu.tab.reopen_in_sub_menu_name","opts":["reopenInNewWin","reopenInWin","reopenInCtr","reopenInNewCtr"]},{"name":"%menu.tab.colorize_","opts":["colorizeTab"]},"separator-2","pin","duplicate","discard","copyTabsUrls","copyTabsTitles","editTabTitle","separator-3","group","flatten","separator-4","urlConf","clearCookies","close"],"tabsPanel":[{"opts":["undoRmTab","muteAllAudibleTabs","reloadTabs","discardTabs"]},"separator-7","selectAllTabs","collapseInactiveBranches","closeTabsDuplicates","closeTabs","separator-8","bookmarkTabsPanel","restoreFromBookmarks","convertToBookmarksPanel","separator-9","openPanelConfig","hidePanel","removePanel"],"bookmarks":[{"name":"%menu.bookmark.open_in_sub_menu_name","opts":["openInNewWin","openInNewPrivWin","separator-9","openInPanel","openInNewPanel","separator-10","openInCtr"]},{"name":"%menu.bookmark.sort_sub_menu_name","opts":["sortByNameAscending","sortByNameDescending","sortByLinkAscending","sortByLinkDescending","sortByTimeAscending","sortByTimeDescending"]},"separator-5","createBookmark","createFolder","createSeparator","separator-8","openAsBookmarksPanel","openAsTabsPanel","separator-7","copyBookmarksUrls","copyBookmarksTitles","moveBookmarksTo","edit","delete"],"bookmarksPanel":["collapseAllFolders","switchViewMode","convertToTabsPanel","separator-9","unloadPanelType","openPanelConfig","hidePanel","removePanel"]},"sidebarCSS":"#root.root {--tabs-inner-gap: 6px;}\n\n@media screen and (max-width: 125px) {\n\t#root.root {\n --tabs-indent: 0;\n }\n\n .Tab[data-audible=\"true\"] .audio, .Tab[data-muted=\"true\"] .audio, .Tab[data-paused=\"true\"] .audio {\n top: 6px;\n left: calc(6px + var(--tabs-inner-gap));\n }\n}\n\n.Tab[data-audible=\"true\"] .audio, .Tab[data-muted=\"true\"] .audio, .Tab[data-paused=\"true\"] .audio {\n transition: transform var(--d-fast),top var(--d-fast),left var(--d-fast);\n}","ver":"5.0.0"} \ No newline at end of file +{"settings":{"nativeScrollbars":false,"nativeScrollbarsThin":true,"nativeScrollbarsLeft":false,"selWinScreenshots":false,"updateSidebarTitle":true,"markWindow":true,"markWindowPreface":"​​​​​","ctxMenuNative":false,"ctxMenuRenderInact":true,"ctxMenuRenderIcons":true,"ctxMenuIgnoreContainers":"","navBarLayout":"hidden","navBarInline":true,"navBarSide":"left","hideAddBtn":false,"hideSettingsBtn":false,"navBtnCount":true,"hideEmptyPanels":true,"hideDiscardedTabPanels":false,"navActTabsPanelLeftClickAction":"none","navActBookmarksPanelLeftClickAction":"none","navTabsPanelMidClickAction":"discard","navBookmarksPanelMidClickAction":"none","navSwitchPanelsWheel":true,"subPanelRecentlyClosedBar":true,"subPanelBookmarks":true,"subPanelHistory":true,"groupLayout":"grid","containersSortByName":false,"skipEmptyPanels":false,"dndTabAct":true,"dndTabActDelay":750,"dndTabActMod":"none","dndExp":"pointer","dndExpDelay":750,"dndExpMod":"none","dndOutside":"win","dndActTabFromLink":true,"dndActSearchTab":true,"dndMoveTabs":false,"dndMoveBookmarks":false,"searchBarMode":"none","searchPanelSwitch":"same_type","searchBookmarksShortcut":"","searchHistoryShortcut":"","warnOnMultiTabClose":"any","activateLastTabOnPanelSwitching":true,"activateLastTabOnPanelSwitchingLoadedOnly":true,"switchPanelAfterSwitchingTab":"always","tabRmBtn":"hover","activateAfterClosing":"prev_act","activateAfterClosingStayInPanel":false,"activateAfterClosingGlobal":false,"activateAfterClosingNoFolded":true,"activateAfterClosingNoDiscarded":true,"askNewBookmarkPlace":true,"tabsRmUndoNote":true,"tabsUnreadMark":true,"tabsUpdateMark":"none","tabsUpdateMarkFirst":true,"tabsReloadLimit":5,"tabsReloadLimitNotif":true,"showNewTabBtns":false,"newTabBarPosition":"after_tabs","tabsPanelSwitchActMove":true,"tabsPanelSwitchActMoveAuto":true,"tabsUrlInTooltip":"full","newTabCtxReopen":false,"tabWarmupOnHover":true,"tabSwitchDelay":0,"moveNewTabPin":"start","moveNewTabParent":"last_child","moveNewTabParentActPanel":false,"moveNewTab":"end","moveNewTabActivePin":"start","pinnedTabsPosition":"panel","pinnedTabsList":true,"pinnedAutoGroup":true,"pinnedNoUnload":false,"pinnedForcedDiscard":false,"tabsTree":true,"groupOnOpen":true,"tabsTreeLimit":"none","autoFoldTabs":false,"autoFoldTabsExcept":"none","autoExpandTabs":false,"autoExpandTabsOnNew":false,"rmChildTabs":"folded","tabsLvlDots":false,"discardFolded":false,"discardFoldedDelay":0,"discardFoldedDelayUnit":"sec","tabsTreeBookmarks":true,"treeRmOutdent":"branch","ignoreFoldedParent":false,"colorizeTabs":false,"colorizeTabsSrc":"container","colorizeTabsBranches":false,"colorizeTabsBranchesSrc":"url","inheritCustomColor":true,"hideInact":false,"hideFoldedTabs":false,"hideFoldedParent":"none","nativeHighlight":false,"warnOnMultiBookmarkDelete":"any","autoCloseBookmarks":false,"autoRemoveOther":false,"highlightOpenBookmarks":false,"activateOpenBookmarkTab":false,"showBookmarkLen":true,"bookmarksRmUndoNote":true,"loadBookmarksOnDemand":true,"pinOpenedBookmarksFolder":true,"oldBookmarksAfterSave":"ask","loadHistoryOnDemand":true,"fontSize":"m","animations":true,"animationSpeed":"norm","theme":"proton","density":"loose","colorScheme":"ff","sidebarCSS":true,"groupCSS":false,"snapNotify":true,"snapExcludePrivate":false,"snapInterval":0,"snapIntervalUnit":"min","snapLimit":0,"snapLimitUnit":"snap","snapAutoExport":false,"snapAutoExportType":"json","snapAutoExportPath":"Sidebery/snapshot-%Y.%M.%D-%h.%m.%s","snapMdFullTree":false,"hScrollAction":"none","onePanelSwitchPerScroll":false,"navSwitchPanelsDelay":128,"scrollThroughTabs":"none","scrollThroughVisibleTabs":true,"scrollThroughTabsSkipDiscarded":true,"scrollThroughTabsExceptOverflow":true,"scrollThroughTabsCyclic":false,"scrollThroughTabsScrollArea":0,"autoMenuMultiSel":true,"multipleMiddleClose":false,"longClickDelay":500,"wheelThreshold":false,"wheelThresholdX":10,"wheelThresholdY":60,"tabDoubleClick":"new_child","tabsSecondClickActPrev":false,"tabsSecondClickActPrevPanelOnly":false,"shiftSelAct":true,"activateOnMouseUp":false,"tabLongLeftClick":"none","tabLongRightClick":"none","tabMiddleClick":"close","tabMiddleClickCtrl":"discard","tabMiddleClickShift":"duplicate","tabCloseMiddleClick":"close","tabsPanelLeftClickAction":"none","tabsPanelDoubleClickAction":"tab","tabsPanelRightClickAction":"menu","tabsPanelMiddleClickAction":"tab","newTabMiddleClickAction":"new_child","bookmarksLeftClickAction":"open_in_act","bookmarksLeftClickActivate":false,"bookmarksLeftClickPos":"default","bookmarksMidClickAction":"open_in_new","bookmarksMidClickActivate":false,"bookmarksMidClickRemove":false,"bookmarksMidClickPos":"default","historyLeftClickAction":"open_in_act","historyLeftClickActivate":false,"historyLeftClickPos":"default","historyMidClickAction":"open_in_new","historyMidClickActivate":false,"historyMidClickPos":"default","syncName":"","syncSaveSettings":false,"syncSaveCtxMenu":false,"syncSaveStyles":false,"syncSaveKeybindings":false,"selectActiveTabFirst":true},"sidebar":{"panels":{"wrfiBYh9di54":{"type":2,"id":"wrfiBYh9di54","name":"Tabs","color":"toolbar","iconSVG":"icon_tabs","iconIMGSrc":"","iconIMG":"","lockedPanel":false,"skipOnSwitching":false,"noEmpty":false,"newTabCtx":"none","dropTabCtx":"none","moveRules":[],"moveExcludedTo":-1,"bookmarksFolderId":-1,"newTabBtns":[],"srcPanelConfig":null}},"nav":["wrfiBYh9di54","add_tp","sp-0","settings"]},"contextMenu":{"tabs":[{"opts":["undoRmTab","mute","reload","bookmark"]},"separator-1",{"name":"%menu.tab.move_to_sub_menu_name","opts":["moveToNewWin","moveToWin","separator-5","moveToPanel","moveToNewPanel"]},{"name":"%menu.tab.reopen_in_sub_menu_name","opts":["reopenInNewWin","reopenInWin","reopenInCtr","reopenInNewCtr"]},{"name":"%menu.tab.colorize_","opts":["colorizeTab"]},"separator-2","pin","duplicate","discard","copyTabsUrls","copyTabsTitles","editTabTitle","separator-3","group","flatten","separator-4","urlConf","clearCookies","close"],"tabsPanel":[{"opts":["undoRmTab","muteAllAudibleTabs","reloadTabs","discardTabs"]},"separator-7","selectAllTabs","collapseInactiveBranches","closeTabsDuplicates","closeTabs","separator-8","bookmarkTabsPanel","restoreFromBookmarks","convertToBookmarksPanel","separator-9","openPanelConfig","hidePanel","removePanel"],"bookmarks":[{"name":"%menu.bookmark.open_in_sub_menu_name","opts":["openInNewWin","openInNewPrivWin","separator-9","openInPanel","openInNewPanel","separator-10","openInCtr"]},{"name":"%menu.bookmark.sort_sub_menu_name","opts":["sortByNameAscending","sortByNameDescending","sortByLinkAscending","sortByLinkDescending","sortByTimeAscending","sortByTimeDescending"]},"separator-5","createBookmark","createFolder","createSeparator","separator-8","openAsBookmarksPanel","openAsTabsPanel","separator-7","copyBookmarksUrls","copyBookmarksTitles","moveBookmarksTo","edit","delete"],"bookmarksPanel":["collapseAllFolders","switchViewMode","convertToTabsPanel","separator-9","unloadPanelType","openPanelConfig","hidePanel","removePanel"]},"sidebarCSS":"#root.root {--tabs-inner-gap: 6px;}\n\n@media screen and (max-width: 125px) {\n\t#root.root {\n --tabs-indent: 0;\n }\n\n .Tab[data-audible=\"true\"] .audio, .Tab[data-muted=\"true\"] .audio, .Tab[data-paused=\"true\"] .audio {\n top: 6px;\n left: calc(6px + var(--tabs-inner-gap));\n }\n}\n\n.Tab[data-audible=\"true\"] .audio, .Tab[data-muted=\"true\"] .audio, .Tab[data-paused=\"true\"] .audio {\n transition: transform var(--d-fast),top var(--d-fast),left var(--d-fast);\n}","ver":"5.1.1"} \ No newline at end of file diff --git a/modules/user/modules/firefox/theme.nix b/modules/user/modules/firefox/theme.nix new file mode 100644 index 0000000..62a17ea --- /dev/null +++ b/modules/user/modules/firefox/theme.nix @@ -0,0 +1,30 @@ +{ pkgs, name, theme }: let + json = builtins.toJSON { + manifest_version = 2; + version = "1.0"; + browser_specific_settings.gecko = { + id = "theme-${name}@outfoxxed.me"; + }; + + inherit name theme; + }; + + jsonFile = pkgs.writeTextFile { + name = "manifest.json"; + text = json; + }; +in pkgs.stdenvNoCC.mkDerivation { + pname = "firefox-theme-${name}.xpi"; + version = "1.0"; + preferLocalBuild = true; + unpackPhase = "true"; + + buildPhase = '' + cp ${jsonFile} manifest.json + ${pkgs.zip}/bin/zip out.xpi manifest.json + ''; + + installPhase = '' + mv out.xpi $out + ''; +}