From 558cde37c66b29807c8cb536f0a2236a8acad49e Mon Sep 17 00:00:00 2001 From: Soispha Date: Fri, 28 Apr 2023 16:12:08 +0200 Subject: Refactor(hm/conf/firefox): For a cleaner default.nix --- .../config/firefox/functions/bookmarks/default.nix | 49 ++++++++++++++++++++++ .../firefox/functions/extensions/default.nix | 26 ++++++++++++ .../firefox/functions/extensions/video-pauser.nix | 31 ++++++++++++++ 3 files changed, 106 insertions(+) create mode 100644 home-manager/config/firefox/functions/bookmarks/default.nix create mode 100644 home-manager/config/firefox/functions/extensions/default.nix create mode 100644 home-manager/config/firefox/functions/extensions/video-pauser.nix (limited to 'home-manager/config/firefox/functions') diff --git a/home-manager/config/firefox/functions/bookmarks/default.nix b/home-manager/config/firefox/functions/bookmarks/default.nix new file mode 100644 index 00000000..d1d89dd2 --- /dev/null +++ b/home-manager/config/firefox/functions/bookmarks/default.nix @@ -0,0 +1,49 @@ +{ + lib, + pkgs, +}: bookmarks: let + indent = level: + lib.concatStringsSep "" (map (lib.const " ") (lib.range 1 level)); + + bookmarkToHTML = indentLevel: bookmark: '' + ${indent indentLevel}
${lib.escapeXML bookmark.name}''; + + directoryToHTML = indentLevel: directory: '' + ${indent indentLevel}
${ + if directory.toolbar + then ''

Bookmarks Toolbar'' + else "

${lib.escapeXML directory.name}" + }

+ ${indent indentLevel}

+ ${allItemsToHTML (indentLevel + 1) directory.bookmarks} + ${indent indentLevel}

''; + + itemToHTMLOrRecurse = indentLevel: item: + if item ? "url" + then bookmarkToHTML indentLevel item + else directoryToHTML indentLevel item; + + allItemsToHTML = indentLevel: bookmarks: + lib.concatStringsSep "\n" + (map (itemToHTMLOrRecurse indentLevel) bookmarks); + + bookmarkEntries = allItemsToHTML 1 bookmarks; +in + pkgs.writeText "firefox-bookmarks.html" '' + + + + Bookmarks +

Bookmarks Menu

+ +

+

Bookmarks Toolbar

+

+ ${bookmarkEntries} +

+

+ '' diff --git a/home-manager/config/firefox/functions/extensions/default.nix b/home-manager/config/firefox/functions/extensions/default.nix new file mode 100644 index 00000000..e3373d86 --- /dev/null +++ b/home-manager/config/firefox/functions/extensions/default.nix @@ -0,0 +1,26 @@ +# vim: ts=2 +{pkgs, ...}: { + pname, + version, + addonId, + url, + sha256, + #meta, + ... +}: +pkgs.stdenv.mkDerivation { + name = "${pname}-${version}"; + + #inherit meta; + + src = builtins.fetchurl {inherit url sha256;}; + + 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" + ''; +} diff --git a/home-manager/config/firefox/functions/extensions/video-pauser.nix b/home-manager/config/firefox/functions/extensions/video-pauser.nix new file mode 100644 index 00000000..a6b0e838 --- /dev/null +++ b/home-manager/config/firefox/functions/extensions/video-pauser.nix @@ -0,0 +1,31 @@ +# vim: ts=2 +{ + pkgs, + video_pause, + ... +}: +pkgs.runCommand "video_pause_native_messaging" {} '' + install -d $out/share/ + cat << EOF > $out/share/video_pauser.json + { + "name": "video_pauser", + "description": "Pause your Videos with a single key stroke!", + "path": "${video_pause}/bin/video_pause", + "type": "stdio", + "allowed_extensions": ["video-pauser@addons.vhack.eu"] + } + EOF + + nativeMessagingPaths=( + /lib/mozilla/native-messaging-hosts + /etc/opt/chrome/native-messaging-hosts + /etc/chromium/native-messaging-hosts + /etc/vivaldi/native-messaging-hosts + /lib/librewolf/native-messaging-hosts + ) + + for manifestDir in "''${nativeMessagingPaths[@]}"; do + install -d $out$manifestDir + ln -s $out/share/video_pauser.json $out$manifestDir/ + done +'' -- cgit 1.4.1