diff --git a/flake.lock b/flake.lock index 623a0ff6..eb48605b 100644 --- a/flake.lock +++ b/flake.lock @@ -106,6 +106,21 @@ "type": "github" } }, + "nur": { + "locked": { + "lastModified": 1642744051, + "narHash": "sha256-9NPqm2Cya//c67FLvgb0pPNQJ/sswO2uZmkcUAEY1mg=", + "owner": "nix-community", + "repo": "NUR", + "rev": "ec7f740c3e7446a42d9e152bda60c4fe056cc4e2", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "NUR", + "type": "github" + } + }, "root": { "inputs": { "accentor": "accentor", @@ -113,6 +128,7 @@ "emacs-overlay": "emacs-overlay", "home-manager": "home-manager", "nixpkgs": "nixpkgs", + "nur": "nur", "tetris": "tetris", "utils": "utils" } diff --git a/flake.nix b/flake.nix index 95904d5e..463ff173 100644 --- a/flake.nix +++ b/flake.nix @@ -16,6 +16,7 @@ inputs.nixpkgs.follows = "nixpkgs"; }; nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable"; + nur.url = "github:nix-community/NUR"; tetris = { url = "github:chvp/tetris"; inputs.nixpkgs.follows = "nixpkgs"; @@ -23,7 +24,7 @@ utils.url = "github:gytis-ivaskevicius/flake-utils-plus"; }; - outputs = inputs@{ self, nixpkgs, accentor, agenix, emacs-overlay, home-manager, tetris, utils }: + outputs = inputs@{ self, nixpkgs, accentor, agenix, emacs-overlay, home-manager, nur, tetris, utils }: let customPackages = callPackage: { jdtls = callPackage ./packages/jdtls { }; @@ -38,6 +39,7 @@ emacs-overlay.overlay (self: super: customPackages self.callPackage) (self: super: { tetris = tetris.packages.x86_64-linux.tetris; }) + nur.overlay ]; }; hostDefaults = { diff --git a/modules/graphical/default.nix b/modules/graphical/default.nix index f161137c..874117d4 100644 --- a/modules/graphical/default.nix +++ b/modules/graphical/default.nix @@ -2,10 +2,10 @@ { imports = [ + ./firefox ./gnupg ./mail ./pass - ./qutebrowser ./sound ./sway ./syncthing @@ -34,13 +34,13 @@ nix.unfreePackages = [ "google-chrome" ]; }; graphical = { + firefox.enable = lib.mkDefault true; gnupg = { enable = lib.mkDefault true; pinentryFlavor = "qt"; }; mail.enable = lib.mkDefault true; pass.enable = lib.mkDefault true; - qutebrowser.enable = lib.mkDefault true; sound.enable = lib.mkDefault true; sway.enable = lib.mkDefault true; syncthing.enable = lib.mkDefault true; diff --git a/modules/graphical/firefox/default.nix b/modules/graphical/firefox/default.nix new file mode 100644 index 00000000..29da180a --- /dev/null +++ b/modules/graphical/firefox/default.nix @@ -0,0 +1,129 @@ +{ config, lib, pkgs, ... }: + +let + ff2mpv = pkgs.stdenv.mkDerivation rec { + pname = "ff2mpv"; + version = "3.9.1"; + src = pkgs.fetchFromGitHub { + owner = "woodruffw"; + repo = "ff2mpv"; + rev = "v${version}"; + sha256 = "j2VjHRhadLaftWRv0zrzOyg/pizD/kvr9RBb2ozjKDw="; + }; + buildInputs = [ pkgs.python3 ]; + buildPhase = '' + sed -i "s#/home/william/scripts/ff2mpv#$out/bin/ff2mpv.py#" ff2mpv.json + ''; + installPhase = '' + mkdir -p $out/bin + cp ff2mpv.py $out/bin + mkdir -p $out/lib/mozilla/native-messaging-hosts + cp ff2mpv.json $out/lib/mozilla/native-messaging-hosts + ''; + }; +in +{ + options.chvp.graphical.firefox.enable = lib.mkEnableOption "firefox"; + + config = lib.mkIf config.chvp.graphical.firefox.enable { + chvp.base.zfs.homeLinks = [ + { path = ".mozilla"; type = "data"; } + { path = ".cache/mozilla"; type = "cache"; } + ]; + home-manager.users.charlotte = { ... }: { + programs = { + browserpass = { + enable = true; + browsers = [ "firefox" ]; + }; + firefox = { + enable = true; + package = pkgs.firefox.override { + extraNativeMessagingHosts = [ ff2mpv ]; + pkcs11Modules = [ pkgs.eid-mw ]; + forceWayland = true; + extraPolicies = { + DisableFirefoxStudies = true; + DisablePocket = true; + DisableTelemetry = true; + DisableFirefoxAccounts = true; + FirefoxHome = { Pocket = false; Snippets = false; }; + OfferToSaveLogins = false; + UserMessaging = { SkipOnboarding = true; ExtensionRecommendations = false; }; + SearchEngines = { + Default = "DuckDuckGo"; + Add = [ + { + Name = "DuckDuckGo"; + Description = "DuckDuckGo"; + Alias = "ddg"; + URLTemplate = "https://html.duckduckgo.com/html?q={searchTerms}"; + SuggestURLTemplate = "https://duckduckgo.com/ac/?q={searchTerms}&type=list"; + Method = "GET"; + IconURL = "https://duckduckgo.com/favicon.ico"; + } + ]; + Remove = [ "Google" "Amazon.nl" "Bing" "eBay" "Wikipedia (en)" ]; + }; + }; + }; + extensions = with pkgs.nur.repos.rycee.firefox-addons; [ + (buildFirefoxXpiAddon rec { + pname = "belgium-eid"; + version = "1.0.32"; + addonId = "belgiumeid@eid.belgium.be"; + url = "https://addons.mozilla.org/firefox/downloads/file/3736679/eid_belgie-${version}-fx.xpi"; + sha256 = "t2zbE58IuHeAlM91lNX4rbiWLzt5sQq350b1PRdSY7w="; + meta = with lib; { + homepage = "https://eid.belgium.be/"; + description = "Use the Belgian electronic identity card (eID) in Firefox"; + license = licenses.lgpl3; + platforms = platforms.all; + }; + }) + (buildFirefoxXpiAddon rec { + pname = "better-tweetdeck"; + version = "4.7.2"; + addonId = "BetterTweetDeck@erambert.me"; + url = "https://addons.mozilla.org/firefox/downloads/file/3897452/better_tweetdeck-${version}-fx.xpi"; + sha256 = "zme93hAAaxIkKg7dO+SVhv1XU7dTzMWZlrd237uZ1zg="; + meta = with lib; { + license = licenses.mit; + platforms = platforms.all; + }; + }) + browserpass + decentraleyes + (buildFirefoxXpiAddon rec { + pname = "ff2mpv"; + version = "3.9.1"; + addonId = "ff2mpv@yossarian.net"; + url = "https://addons.mozilla.org/firefox/downloads/file/3874208/ff2mpv-${version}-fx.xpi"; + sha256 = "AJO9h2jv/VmqlfShu8q7VqJ7N+bGBtippaODZeCCM6I="; + meta = with lib; { + license = licenses.mit; + platforms = platforms.all; + }; + }) + https-everywhere + ublock-origin + umatrix + (buildFirefoxXpiAddon rec { + pname = "zotero-connector"; + version = "5.0.92"; + addonId = "zotero@chnm.gmu.edu"; + url = "https://download.zotero.org/connector/firefox/release/Zotero_Connector-${version}.xpi"; + sha256 = "DfaDjjgJiSGJ0q9ScStAVRN3IcH8HY30K7IssuHZi2A="; + meta = with lib; { + homepage = "https://www.zotero.org"; + description = "Save references to Zotero from your web browser"; + license = licenses.agpl3; + platforms = platforms.all; + }; + }) + ]; + }; + }; + }; + }; +} diff --git a/modules/graphical/qutebrowser/default.nix b/modules/graphical/qutebrowser/default.nix deleted file mode 100644 index 52abc12b..00000000 --- a/modules/graphical/qutebrowser/default.nix +++ /dev/null @@ -1,81 +0,0 @@ -{ config, lib, pkgs, ... }: - -{ - options.chvp.graphical.qutebrowser.enable = lib.mkOption { - default = false; - example = true; - }; - - config = lib.mkIf config.chvp.graphical.qutebrowser.enable { - nixpkgs.overlays = [ - (self: super: { - qutebrowser = super.qutebrowser.overrideAttrs (old: { - patches = (old.patches or [ ]) ++ [ - (self.fetchpatch { - url = "https://github.com/qutebrowser/qutebrowser/pull/6626.patch"; - sha256 = "NuKHpjEILEfabLKXVatuNBX1a+6TelIBAauYQKW1zGI="; - }) - ]; - }); - }) - ]; - chvp.base.zfs.homeLinks = [ - { path = ".config/qutebrowser"; type = "data"; } - { path = ".local/share/qutebrowser"; type = "cache"; } - ]; - home-manager.users.charlotte = { ... }: { - programs.qutebrowser = { - enable = true; - loadAutoconfig = true; - aliases = { - save-to-zotero = "jseval --quiet var d=document,s=d.createElement('script');s.src='https://www.zotero.org/bookmarklet/loader.js';(d.body?d.body:d.documentElement).appendChild(s);void(0);"; - open-in-temp = "spawn qutebrowser --temp-basedir -s downloads.location.directory /home/charlotte/downloads {url}"; - hint-open-in-temp = "hint links spawn qutebrowser --temp-basedir -s downloads.location.directory /home/charlotte/downloads {hint-url}"; - }; - keyBindings = { - normal = { - ",m" = "hint links spawn umpv {hint-url}"; - ",M" = "hint --rapid links spawn umpv {hint-url}"; - ",p" = "spawn --userscript qute-pass"; - - # Toggle all by opening in temporary browser - "tt" = "open-in-temp"; - "tT" = "hint-open-in-temp"; - - # Cookie toggle (all removed from defaults) - "tCH" = "config-cycle -p -u *://*.{url:host}/* content.cookies.accept no-3rdparty never ;; reload"; - "tCh" = "config-cycle -p -u *://{url:host}/* content.cookies.accept no-3rdparty never ;; reload"; - "tCu" = "config-cycle -p -u {url} content.cookies.accept no-3rdparty never ;; reload"; - "tcH" = "config-cycle -p -t -u *://*.{url:host}/* content.cookies.accept no-3rdparty never ;; reload"; - "tch" = "config-cycle -p -t -u *://{url:host}/* content.cookies.accept no-3rdparty never ;; reload"; - "tcu" = "config-cycle -p -t -u {url} content.cookies.accept no-3rdparty never ;; reload"; - }; - }; - searchEngines = { - DEFAULT = "https://html.duckduckgo.com/html?q={}"; - }; - settings = { - auto_save.session = true; - confirm_quit = [ "downloads" ]; - content = { - autoplay = false; - cookies.accept = "never"; - default_encoding = "utf-8"; - dns_prefetch = false; - fullscreen.window = true; - javascript.enabled = false; - geolocation = false; - pdfjs = true; - }; - editor.command = [ "${config.chvp.base.emacs.package}/bin/emacsclient" "-c" "+{line}:{column}" "{file}" ]; - fonts = { - default_family = "Fira Code"; - default_size = "9pt"; - }; - url.default_page = "about:blank"; - window.hide_decoration = true; - }; - }; - }; - }; -} diff --git a/modules/graphical/xdg/default.nix b/modules/graphical/xdg/default.nix index 27bd6654..15f5474a 100644 --- a/modules/graphical/xdg/default.nix +++ b/modules/graphical/xdg/default.nix @@ -32,11 +32,11 @@ "image/jpeg" = [ "org.kde.okular.desktop" ]; "application/pdf" = [ "org.kde.okular.desktop" ]; - "text/html" = [ "org.qutebrowser.qutebrowser.desktop" ]; - "x-scheme-handler/about" = [ "org.qutebrowser.qutebrowser.desktop" ]; - "x-scheme-handler/http" = [ "org.qutebrowser.qutebrowser.desktop" ]; - "x-scheme-handler/https" = [ "org.qutebrowser.qutebrowser.desktop" ]; - "x-scheme-handler/unknown" = [ "org.qutebrowser.qutebrowser.desktop" ]; + "text/html" = [ "firefox.desktop" ]; + "x-scheme-handler/about" = [ "firefox.desktop" ]; + "x-scheme-handler/http" = [ "firefox.desktop" ]; + "x-scheme-handler/https" = [ "firefox.desktop" ]; + "x-scheme-handler/unknown" = [ "firefox.desktop" ]; "x-scheme-handler/msteams" = [ "teams.desktop" ]; };