From 26d812779f7a2738fba86e8fd18e1648900d7ccf Mon Sep 17 00:00:00 2001 From: Antoine Viallon Date: Tue, 25 Jan 2022 12:13:07 +0100 Subject: [PATCH] [HomeManager] Add global home-manager configuration, mainly used to configure firefox --- default.nix | 2 +- desktop.nix | 2 +- home-manager.nix | 205 +++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 207 insertions(+), 2 deletions(-) create mode 100644 home-manager.nix diff --git a/default.nix b/default.nix index 226f367..dc4138b 100644 --- a/default.nix +++ b/default.nix @@ -4,7 +4,7 @@ ./general.nix ./boot.nix ./desktop.nix - # ./home-manager.nix + ./home-manager.nix ./network.nix ./packages.nix ./services.nix diff --git a/desktop.nix b/desktop.nix index 5a1f311..1786bbc 100644 --- a/desktop.nix +++ b/desktop.nix @@ -160,7 +160,7 @@ in { programs.gnupg.agent.pinentryFlavor = "qt"; environment.systemPackages = with pkgs; with libsForQt5; [ - firefox +# firefox konsole kate yakuake diff --git a/home-manager.nix b/home-manager.nix new file mode 100644 index 0000000..231f399 --- /dev/null +++ b/home-manager.nix @@ -0,0 +1,205 @@ +{config, pkgs, lib, ...}: +with lib; +let + cfg = config.aviallon.home-manager; +in +{ + imports = [ + + ]; + + options.aviallon.home-manager = { + enable = mkOption { + default = true; + example = false; + description = "Global switch for home-manager config"; + type = types.bool; + }; + users = mkOption { + default = [ "aviallon" ]; + example = [ ]; + description = "Users to add the default home-manager config to."; + type = types.listOf types.str; + }; + }; + + + config = mkIf cfg.enable { + home-manager.useUserPackages = true; + home-manager.useGlobalPkgs = true; + home-manager.backupFileExtension = "hmbackup"; + + home-manager.users = genAttrs cfg.users (u: { + + home.packages = [ pkgs.home-manager ]; + home.stateVersion = config.system.stateVersion; + + #xdg.desktopEntries.firefox = { + # name = "Firefox"; + # genericName = "Web Browser"; + # exec = "firefox %u"; + # terminal = false; + # categories = [ "Application" ]; + #}; + + programs.firefox.enable = true; + programs.firefox.package = pkgs.firefox.override { + cfg = { + enablePlasmaBrowserIntegration = true; + }; + }; + programs.firefox.extensions = with pkgs.nur.repos.rycee.firefox-addons; [ + bypass-paywalls-clean + clearurls + darkreader + decentraleyes + facebook-container + french-language-pack + i-dont-care-about-cookies + https-everywhere + plasma-integration + return-youtube-dislikes + terms-of-service-didnt-read + ublock-origin + ]; + + + programs.firefox.profiles = { + default = { + isDefault = true; + settings = { + # Do not save passwords to Firefox... + #"security.ask_for_password" = 0; + + # i18n + "intl.accept_languages" = ""; + + # Don't disable silently installed extensions + "extensions.autoDisableScopes" = 0; + + # We handle this elsewhere + "browser.shell.checkDefaultBrowser" = false; + + # Don't allow websites to prevent use of right-click, or otherwise + # messing with the context menu. + "dom.event.contextmenu.enabled" = true; + + # Don't allow websites to prevent copy and paste. Disable + # notifications of copy, paste, or cut functions. Stop webpage + # knowing which part of the page had been selected. + "dom.event.clipboardevents.enabled" = true; + + # Do not track from battery status. + "dom.battery.enabled" = false; + + # Show punycode. Help protect from character 'spoofing'. + "network.IDN_show_punycode" = true; + + # Disable site reading installed plugins. + "plugins.enumerable_names" = ""; + + # Use Mozilla instead of Google here. + "geo.provider.network.url" = + "https://location.services.mozilla.com/v1/geolocate?key=%MOZILLA_API_KEY%"; + + # No speculative content when searching. + "browser.urlbar.speculativeConnect.enabled" = false; + + # Sends data to servers when leaving pages. + "beacon.enabled" = false; + + # Informs servers about links that get clicked on by the user. + "browser.send_pings" = false; + + "browser.tabs.closeWindowWithLastTab" = false; + + # DuckDuckGo please + "browser.urlbar.placeholderName" = "duckduckgo"; + "browser.search.defaultenginename" = "duckduckgo"; + "browser.newtabpage.activity-stream.improvesearch.topSiteSearchShortcuts.havePinned" = "duckduckgo"; + "browser.newtabpage.activity-stream.improvesearch.topSiteSearchShortcuts.searchEngines" = "duckduckgo"; + + # Safe browsing + "browser.safebrowsing.enabled" = false; + "browser.safebrowsing.phishing.enabled" = false; + "browser.safebrowsing.malware.enabled" = false; + "browser.safebrowsing.downloads.enabled" = false; + "browser.safebrowsing.provider.google4.updateURL" = ""; + "browser.safebrowsing.provider.google4.reportURL" = ""; + "browser.safebrowsing.provider.google4.reportPhishMistakeURL" = ""; + "browser.safebrowsing.provider.google4.reportMalwareMistakeURL" = + ""; + "browser.safebrowsing.provider.google4.lists" = ""; + "browser.safebrowsing.provider.google4.gethashURL" = ""; + "browser.safebrowsing.provider.google4.dataSharingURL" = ""; + "browser.safebrowsing.provider.google4.dataSharing.enabled" = false; + "browser.safebrowsing.provider.google4.advisoryURL" = ""; + "browser.safebrowsing.provider.google4.advisoryName" = ""; + "browser.safebrowsing.provider.google.updateURL" = ""; + "browser.safebrowsing.provider.google.reportURL" = ""; + "browser.safebrowsing.provider.google.reportPhishMistakeURL" = ""; + "browser.safebrowsing.provider.google.reportMalwareMistakeURL" = ""; + "browser.safebrowsing.provider.google.pver" = ""; + "browser.safebrowsing.provider.google.lists" = ""; + "browser.safebrowsing.provider.google.gethashURL" = ""; + "browser.safebrowsing.provider.google.advisoryURL" = ""; + "browser.safebrowsing.downloads.remote.url" = ""; + + # Don't call home on new tabs + "browser.selfsupport.url" = ""; + "browser.aboutHomeSnippets.updateUrL" = ""; + "browser.startup.homepage_override.mstone" = "ignore"; + "browser.startup.homepage_override.buildID" = ""; + "startup.homepage_welcome_url" = ""; + "startup.homepage_welcome_url.additional" = ""; + "startup.homepage_override_url" = ""; + + # Firefox experiments... + "experiments.activeExperiment" = false; + "experiments.enabled" = false; + "experiments.supported" = false; + "extensions.pocket.enabled" = false; + + # Firefox Sync + "identity.fxaccounts.enabled" = true; + + # Privacy + "privacy.donottrackheader.enabled" = true; + "privacy.donottrackheader.value" = 1; + "privacy.trackingprotection.enabled" = true; + "privacy.trackingprotection.socialtracking.enabled" = true; + "privacy.firstparty.isolate" = true; + "toolkit.legacyUserProfileCustomizations.stylesheets" = true; + "toolkit.telemetry.enabled" = false; + "toolkit.telemetry.unified" = false; + "toolkit.telemetry.archive.enabled" = false; + "browser.toolbars.bookmarks.visibility" = "never"; + + # Cookies + "network.cookie.cookieBehavior" = 1; + + # Perf + "gfx.webrender.all" = true; + "media.ffmpeg.vaapi.enabled" = true; + "media.ffvpx.enabled" = false; + "media.rdd-vpx.enabled" = false; + "gfx.webrender.compositor.force-enabled" = true; + "media.navigator.mediadatadecoder_vpx_enabled" = true; + "webgl.force-enabled" = true; + "layers.acceleration.force-enabled" = true; + "layers.offmainthreadcomposition.enabled" = true; + "layers.offmainthreadcomposition.async-animations" = true; + "layers.async-video.enabled" = true; + "html5.offmainthread" = true; + + # Remove those extra empty spaces in both sides + "browser.uiCustomization.state" = '' + {"placements":{"widget-overflow-fixed-list":[],"nav-bar":["back-button","forward-button","stop-reload-button","urlbar-container","downloads-button","fxa-toolbar-menu-button"],"toolbar-menubar":["menubar-items"],"TabsToolbar":["tabbrowser-tabs","new-tab-button","alltabs-button"],"PersonalToolbar":["import-button","personal-bookmarks"]},"seen":["developer-button"],"dirtyAreaCache":["nav-bar","PersonalToolbar"],"currentVersion":17,"newElementCount":4} + ''; + }; + }; + }; + + }); + }; +}