From aa1a1e82efa8921fa120662da960cdaf381c4680 Mon Sep 17 00:00:00 2001 From: Ryan Schanzenbacher Date: Mon, 3 Mar 2025 13:15:12 -0500 Subject: updates to channels, new cursor, probably other fixes idk --- .../nix-home-manager/firefox-nightly/default.nix | 201 ++++++++++++++++++++ .../firefox-nightly/default.nixold | 206 +++++++++++++++++++++ .../nix-home-manager/firefox-nightly/policies.nix | 130 +++++++++++++ 3 files changed, 537 insertions(+) create mode 100644 home-config/nix-home-manager/firefox-nightly/default.nix create mode 100644 home-config/nix-home-manager/firefox-nightly/default.nixold create mode 100644 home-config/nix-home-manager/firefox-nightly/policies.nix (limited to 'home-config/nix-home-manager/firefox-nightly') diff --git a/home-config/nix-home-manager/firefox-nightly/default.nix b/home-config/nix-home-manager/firefox-nightly/default.nix new file mode 100644 index 0000000..d341348 --- /dev/null +++ b/home-config/nix-home-manager/firefox-nightly/default.nix @@ -0,0 +1,201 @@ +{ config, pkgs, mozff, ...}: + +let + +wrapped-ff-nightly = pkgs.wrapFirefox mozff.packages.${pkgs.system}.firefox-nightly-bin { + extraPolicies = import ./policies.nix; +}; + +in + +{ + programs.firefox = { + enable = true; + package = mozff.packages.${pkgs.system}.firefox-nightly-bin; + policies = import ./policies.nix; + + profiles.${config.home.username} = { + name = "${config.home.username}"; + isDefault = true; + containersForce = true; + containers = { + rit = { + name = "RIT"; + color = "orange"; + icon = "dollar"; + id = 1; + }; + ritwork = { + name = "RIT Work"; + color = "green"; + icon = "briefcase"; + id = 2; + }; + other = { + name = "Other"; + color = "blue"; + icon = "fingerprint"; + id = 3; + }; + }; + search = { + force = true; + default = "DuckDuckGo"; + order = ["DuckDuckGo" "Google"]; + engines = { + "Nix Packages" = { + urls = [ + { + template = "https://search.nixos.org/packages"; + params = [ + { + name = "type"; + value = "packages"; + } + { + name = "channel"; + value = "unstable"; + } + { + name = "query"; + value = "{searchTerms}"; + } + ]; + } + ]; + icon = "${pkgs.nixos-icons}/share/icons/hicolor/scalable/apps/nix-snowflake.svg"; + definedAliases = ["@np"]; + }; + }; + }; + userChrome = " +#main-window .toolbar-items { +overflow: hidden; +transition: height 0.3s 0.3s !important; +} +/* Default state: Set initial height to enable animation */ +#main-window .toolbar-items { height: 3em !important; } +#main-window .titlebar-button { height: 3em !important; } +#main-window[uidensity=\"touch\"] .toolbar-items { height: 3.35em !important; } +#main-window[uidensity=\"compact\"] .toolbar-items { height: 2.7em !important; } +/* Hidden state: Hide native tabs strip */ +#main-window[titlepreface*=\"\"] .toolbar-items { height: 0 !important; } +#main-window[titlepreface*=\"\"] .titlebar-button { height: 0 !important; } +/* Hidden state: Fix z-index of active pinned tabs */ +#main-window[titlepreface*=\"\"] #tabbrowser-tabs { z-index: 0 !important; } + +/* Sidebery expand on mouse-over and hide otherwise */ + +/* Source file https://github.com/MrOtherGuy/firefox-csshacks/tree/master/chrome/autohide_sidebar.css made available under Mozilla Public License v. 2.0 +See the above repository for updates as well as full license text. */ + +/* Show sidebar only when the cursor is over it */ +/* The border controlling sidebar width will be removed so you'll need to modify these values to change width */ + +#sidebar-box{ +--uc-sidebar-width: 60px; +--uc-sidebar-hover-width: 230px; +--uc-autohide-sidebar-delay: 200ms; /* Wait 0.2s before hiding sidebar */ +--uc-autohide-transition-duration: 115ms; +--uc-autohide-transition-type: linear; +--browser-area-z-index-sidebar: 3; +position: relative; + min-width: var(--uc-sidebar-width) !important; +width: var(--uc-sidebar-width) !important; + max-width: var(--uc-sidebar-width) !important; + z-index: var(--browser-area-z-index-sidebar,3); +} +#sidebar-box[positionend]{ direction: rtl } +#sidebar-box[positionend] > *{ direction: ltr } + +#sidebar-box[positionend]:-moz-locale-dir(rtl){ direction: ltr } +#sidebar-box[positionend]:-moz-locale-dir(rtl) > *{ direction: rtl } + +#main-window[sizemode=\"fullscreen\"] #sidebar-box{ --uc-sidebar-width: 1px; } + +#sidebar-splitter{ display: none } + +#sidebar-header{ +overflow: hidden; +color: var(--chrome-color, inherit) !important; + padding-inline: 0 !important; +} + +#sidebar-header::before, +#sidebar-header::after{ +content: \"\"; +display: flex; + padding-left: 8px; +} + +#sidebar-header, +#sidebar{ +transition: min-width var(--uc-autohide-transition-duration) var(--uc-autohide-transition-type) var(--uc-autohide-sidebar-delay) !important; + min-width: var(--uc-sidebar-width) !important; + will-change: min-width; +} +#sidebar-box:hover > #sidebar-header, +#sidebar-box:hover > #sidebar{ +min-width: var(--uc-sidebar-hover-width) !important; +transition-delay: 0ms !important; +} + +.sidebar-panel{ +background-color: transparent !important; +color: var(--newtab-text-primary-color) !important; +} + +.sidebar-panel #search-box{ +-moz-appearance: none !important; +background-color: rgba(249,249,250,0.1) !important; +color: inherit !important; +} + +/* Add sidebar divider and give it background */ + +#sidebar, +#sidebar-header{ +background-color: inherit !important; +border-inline: 1px solid rgb(80,80,80); +border-inline-width: 0px 1px; +} + +#sidebar-box:not([positionend]) > :-moz-locale-dir(rtl), +#sidebar-box[positionend] > *{ +border-inline-width: 1px 0px; +} + +/* Move statuspanel to the other side when sidebar is hovered so it doesn't get covered by sidebar */ + +#sidebar-box:not([positionend]):hover ~ #appcontent #statuspanel{ +inset-inline: auto 0px !important; +} +#sidebar-box:not([positionend]):hover ~ #appcontent #statuspanel-label{ +margin-inline: 0px !important; +border-left-style: solid !important; +} + +/* Remove the tabs label and move the Sidebary icon to the center of the box */ +#sidebar-box:hover [id=\"sidebar-icon\"] { +transform: translateX(0px) !important; + transition-delay: 0ms !important; +} + +#sidebar-box [id=\"sidebar-icon\"] { +transform: translateX(9px); +transition: transform var(--uc-autohide-transition-duration) var(--uc-autohide-transition-type) var(--uc-autohide-sidebar-delay) !important; +} + +#sidebar-box [id=\"sidebar-title\"] { +visibility: hidden !important; +transition: visibility var(--uc-autohide-transition-duration) var(--uc-autohide-transition-type) var(--uc-autohide-sidebar-delay) !important; +} + +#sidebar-box:hover [id=\"sidebar-title\"] { +visibility: visible !important; + transition-delay: 0ms !important; +} +"; +}; +}; +} diff --git a/home-config/nix-home-manager/firefox-nightly/default.nixold b/home-config/nix-home-manager/firefox-nightly/default.nixold new file mode 100644 index 0000000..543d57c --- /dev/null +++ b/home-config/nix-home-manager/firefox-nightly/default.nixold @@ -0,0 +1,206 @@ +{ config, pkgs, ...}: + +let + +wrapped-ff-nightly = pkgs.latest.firefox-nightly-bin.firefox-bin-unwrapped.overrideAttrs (oldAttrs: rec { + policies = import ./policies.nix; + policiesJson = pkgs.writeText "firefox-policies.json" (builtins.toJSON { inherit policies; }); + postFixup = '' + # See: https://github.com/mozilla/policy-templates/blob/master/README.md + mkdir -p "$out/lib/firefox/distribution" + ln -s ${policiesJson} "$out/lib/firefox-nightly-bin-${oldAttrs.version}/distribution/policies.json" + ''; +}); + +in + +{ + programs.firefox = { + enable = true; + package = wrapped-ff-nightly; + + profiles.${config.home.username} = { + name = "${config.home.username}"; + isDefault = true; + containersForce = true; + containers = { + rit = { + name = "RIT"; + color = "orange"; + icon = "dollar"; + id = 1; + }; + ritwork = { + name = "RIT Work"; + color = "green"; + icon = "briefcase"; + id = 2; + }; + other = { + name = "Other"; + color = "blue"; + icon = "fingerprint"; + id = 3; + }; + }; + search = { + force = true; + default = "DuckDuckGo"; + order = ["DuckDuckGo" "Google"]; + engines = { + "Nix Packages" = { + urls = [ + { + template = "https://search.nixos.org/packages"; + params = [ + { + name = "type"; + value = "packages"; + } + { + name = "channel"; + value = "unstable"; + } + { + name = "query"; + value = "{searchTerms}"; + } + ]; + } + ]; + icon = "${pkgs.nixos-icons}/share/icons/hicolor/scalable/apps/nix-snowflake.svg"; + definedAliases = ["@np"]; + }; + }; + }; + userChrome = " +#main-window .toolbar-items { +overflow: hidden; +transition: height 0.3s 0.3s !important; +} +/* Default state: Set initial height to enable animation */ +#main-window .toolbar-items { height: 3em !important; } +#main-window .titlebar-button { height: 3em !important; } +#main-window[uidensity=\"touch\"] .toolbar-items { height: 3.35em !important; } +#main-window[uidensity=\"compact\"] .toolbar-items { height: 2.7em !important; } +/* Hidden state: Hide native tabs strip */ +#main-window[titlepreface*=\"\"] .toolbar-items { height: 0 !important; } +#main-window[titlepreface*=\"\"] .titlebar-button { height: 0 !important; } +/* Hidden state: Fix z-index of active pinned tabs */ +#main-window[titlepreface*=\"\"] #tabbrowser-tabs { z-index: 0 !important; } + +/* Sidebery expand on mouse-over and hide otherwise */ + +/* Source file https://github.com/MrOtherGuy/firefox-csshacks/tree/master/chrome/autohide_sidebar.css made available under Mozilla Public License v. 2.0 +See the above repository for updates as well as full license text. */ + +/* Show sidebar only when the cursor is over it */ +/* The border controlling sidebar width will be removed so you'll need to modify these values to change width */ + +#sidebar-box{ +--uc-sidebar-width: 60px; +--uc-sidebar-hover-width: 230px; +--uc-autohide-sidebar-delay: 200ms; /* Wait 0.2s before hiding sidebar */ +--uc-autohide-transition-duration: 115ms; +--uc-autohide-transition-type: linear; +--browser-area-z-index-sidebar: 3; +position: relative; + min-width: var(--uc-sidebar-width) !important; +width: var(--uc-sidebar-width) !important; + max-width: var(--uc-sidebar-width) !important; + z-index: var(--browser-area-z-index-sidebar,3); +} +#sidebar-box[positionend]{ direction: rtl } +#sidebar-box[positionend] > *{ direction: ltr } + +#sidebar-box[positionend]:-moz-locale-dir(rtl){ direction: ltr } +#sidebar-box[positionend]:-moz-locale-dir(rtl) > *{ direction: rtl } + +#main-window[sizemode=\"fullscreen\"] #sidebar-box{ --uc-sidebar-width: 1px; } + +#sidebar-splitter{ display: none } + +#sidebar-header{ +overflow: hidden; +color: var(--chrome-color, inherit) !important; + padding-inline: 0 !important; +} + +#sidebar-header::before, +#sidebar-header::after{ +content: \"\"; +display: flex; + padding-left: 8px; +} + +#sidebar-header, +#sidebar{ +transition: min-width var(--uc-autohide-transition-duration) var(--uc-autohide-transition-type) var(--uc-autohide-sidebar-delay) !important; + min-width: var(--uc-sidebar-width) !important; + will-change: min-width; +} +#sidebar-box:hover > #sidebar-header, +#sidebar-box:hover > #sidebar{ +min-width: var(--uc-sidebar-hover-width) !important; +transition-delay: 0ms !important; +} + +.sidebar-panel{ +background-color: transparent !important; +color: var(--newtab-text-primary-color) !important; +} + +.sidebar-panel #search-box{ +-moz-appearance: none !important; +background-color: rgba(249,249,250,0.1) !important; +color: inherit !important; +} + +/* Add sidebar divider and give it background */ + +#sidebar, +#sidebar-header{ +background-color: inherit !important; +border-inline: 1px solid rgb(80,80,80); +border-inline-width: 0px 1px; +} + +#sidebar-box:not([positionend]) > :-moz-locale-dir(rtl), +#sidebar-box[positionend] > *{ +border-inline-width: 1px 0px; +} + +/* Move statuspanel to the other side when sidebar is hovered so it doesn't get covered by sidebar */ + +#sidebar-box:not([positionend]):hover ~ #appcontent #statuspanel{ +inset-inline: auto 0px !important; +} +#sidebar-box:not([positionend]):hover ~ #appcontent #statuspanel-label{ +margin-inline: 0px !important; +border-left-style: solid !important; +} + +/* Remove the tabs label and move the Sidebary icon to the center of the box */ +#sidebar-box:hover [id=\"sidebar-icon\"] { +transform: translateX(0px) !important; + transition-delay: 0ms !important; +} + +#sidebar-box [id=\"sidebar-icon\"] { +transform: translateX(9px); +transition: transform var(--uc-autohide-transition-duration) var(--uc-autohide-transition-type) var(--uc-autohide-sidebar-delay) !important; +} + +#sidebar-box [id=\"sidebar-title\"] { +visibility: hidden !important; +transition: visibility var(--uc-autohide-transition-duration) var(--uc-autohide-transition-type) var(--uc-autohide-sidebar-delay) !important; +} + +#sidebar-box:hover [id=\"sidebar-title\"] { +visibility: visible !important; + transition-delay: 0ms !important; +} +"; +}; +}; +} diff --git a/home-config/nix-home-manager/firefox-nightly/policies.nix b/home-config/nix-home-manager/firefox-nightly/policies.nix new file mode 100644 index 0000000..136b8b9 --- /dev/null +++ b/home-config/nix-home-manager/firefox-nightly/policies.nix @@ -0,0 +1,130 @@ +let + lock-false = { + Value = false; + Status = "locked"; + }; + lock-true = { + Value = true; + Status = "locked"; + }; +in +{ + +EnableTrackingProtection = { + Value = true; + Locked = true; + Cryptomining = true; + Fingerprinting = true; + EmailTracking = true; +}; +UserMessaging = { + WhatsNew = false; + ExtensionRecommendations = false; + FeatureRecommendations = false; + UrlbarInterventions = false; + SkipOnboarding = true; + MoreFromMozilla = false; + Labs = false; + Locked = true; +}; +DisableAppUpdate = true; +DisableAccounts = true; +DisableFirefoxAccounts = true; +DisableFirefoxStudies = true; +DisablePocket = true; +DisableTelemetry = true; +AutofillAddressEnabled = false; +AutofillCreditCardEnabled = false; +DisableMasterPasswordCreation = true; +PasswordManagerEnabled = false; +PrimaryPassword = false; +OfferToSaveLogins = false; +NoDefaultBookmarks = true; +OverrideFirstRunPage = ""; +OverridePostUpdatePage = ""; +FirefoxHome = { + Search = true; + TopSites = true; + SponsoredTopSites = false; + Highlights = false; + Pocket = false; + SponsoredPocket = false; + Snippets = false; + Locked = true; +}; +SearchSuggestEnabled = true; +FirefoxSuggest = { + WebSuggestions = true; + SponsoredSuggestions = false; + ImproveSuggest = false; + Locked = true; +}; +PictureInPicture = lock-true; +HardwareAcceleration = true; +Certificates = { + ImportEnterpriseRoots = true; +}; +ExtensionSettings = { +#"*".installation_mode = "blocked"; +# uBlock Origin + "uBlock0@raymondhill.net" = { + install_url = "https://addons.mozilla.org/firefox/downloads/latest/ublock-origin/latest.xpi"; + installation_mode = "force_installed"; + }; +# Bitwarden + "{446900e4-71c2-419f-a6a7-df9c091e268b}" = { + install_url = "https://addons.mozilla.org/firefox/downloads/latest/bitwarden-password-manager/latest.xpi"; + installation_mode = "normal_installed"; + }; +# SponsorBlock + "sponsorBlocker@ajay.app" = { + install_url = "https://addons.mozilla.org/firefox/downloads/latest/sponsorblock/latest.xpi"; + installation_mode = "force_installed"; + }; +# DeArrow + "deArrow@ajay.app" = { + install_url = "https://addons.mozilla.org/firefox/downloads/latest/dearrow/latest.xpi"; + installation_mode = "force_installed"; + }; +# Return Youtube Dislike + "{762f9885-5a13-4abd-9c77-433dcd38b8fd}" = { + install_url = "https://addons.mozilla.org/firefox/downloads/latest/return-youtube-dislikes/latest.xpi"; + installation_mode = "force_installed"; + }; +# Youtube Nonstop + "{0d7cafdd-501c-49ca-8ebb-e3341caaa55e}" = { + install_url = "https://addons.mozilla.org/firefox/downloads/latest/youtube-nonstop/latest.xpi"; + installation_mode = "force_installed"; + }; +# Sidebery + "{3c078156-979c-498b-8990-85f7987dd929}" = { + install_url = "https://addons.mozilla.org/firefox/downloads/latest/sidebery/latest.xpi"; + installation_mode = "normal_installed"; + }; +# TamperMonkey + "firefox@tampermonkey.net" = { + install_url = "https://addons.mozilla.org/firefox/downloads/latest/tampermonkey/latest.xpi"; + installation_mode = "force_installed"; + }; +# Floccus + "floccus@handmadeideas.org" = { + install_url = "https://addons.mozilla.org/firefox/downloads/latest/floccus/latest.xpi"; + installation_mode = "force_installed"; + }; +}; +Preferences = { + "browser.startup.homepage" = "https://d.in.rschanz.org"; + "extensions.activeThemeID" = { + Value = "firefox-compact-dark@mozilla.org"; + Status = "locked"; + }; + "toolkit.legacyUserProfileCustomizations.stylesheets" = lock-true; + "xpinstall.whitelist.required" = lock-true; + "dom.webgpu.enabled" = lock-true; + "media.eme.enabled" = lock-true; + "general.autoScroll" = lock-true; + "general.smoothScroll" = lock-true; + "browser.crashReports.unsubmittedCheck.autoSubmit2" = lock-false; + "browser.aboutConfig.showWarning" = lock-false; +}; +} -- cgit v1.2.3