aboutsummaryrefslogtreecommitdiffstats
path: root/home-manager/soispha/config/firefox/functions
diff options
context:
space:
mode:
Diffstat (limited to 'home-manager/soispha/config/firefox/functions')
-rw-r--r--home-manager/soispha/config/firefox/functions/bookmarks/default.nix49
-rw-r--r--home-manager/soispha/config/firefox/functions/extensions/default.nix25
-rw-r--r--home-manager/soispha/config/firefox/functions/extensions/video-pauser.nix30
3 files changed, 104 insertions, 0 deletions
diff --git a/home-manager/soispha/config/firefox/functions/bookmarks/default.nix b/home-manager/soispha/config/firefox/functions/bookmarks/default.nix
new file mode 100644
index 00000000..d1d89dd2
--- /dev/null
+++ b/home-manager/soispha/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}<DT><A HREF="${
+ lib.escapeXML bookmark.url
+ }" ADD_DATE="0" LAST_MODIFIED="0">${lib.escapeXML bookmark.name}</A>'';
+
+ directoryToHTML = indentLevel: directory: ''
+ ${indent indentLevel}<DT>${
+ if directory.toolbar
+ then ''<H3 PERSONAL_TOOLBAR_FOLDER="true">Bookmarks Toolbar''
+ else "<H3>${lib.escapeXML directory.name}"
+ }</H3>
+ ${indent indentLevel}<DL><p>
+ ${allItemsToHTML (indentLevel + 1) directory.bookmarks}
+ ${indent indentLevel}</p></DL>'';
+
+ 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" ''
+ <!DOCTYPE NETSCAPE-Bookmark-file-1>
+ <!-- This is an automatically generated file.
+ It will be read and overwritten.
+ DO NOT EDIT! -->
+ <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=UTF-8">
+ <TITLE>Bookmarks</TITLE>
+ <H1>Bookmarks Menu</H1>
+
+ <DL><p>
+ <DT><H3 ADD_DATE="0" LAST_MODIFIED="0" PERSONAL_TOOLBAR_FOLDER="true">Bookmarks Toolbar</H3>
+ <DL><p>
+ ${bookmarkEntries}
+ </DL><p>
+ </p></DL>
+ ''
diff --git a/home-manager/soispha/config/firefox/functions/extensions/default.nix b/home-manager/soispha/config/firefox/functions/extensions/default.nix
new file mode 100644
index 00000000..b84461c7
--- /dev/null
+++ b/home-manager/soispha/config/firefox/functions/extensions/default.nix
@@ -0,0 +1,25 @@
+{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/soispha/config/firefox/functions/extensions/video-pauser.nix b/home-manager/soispha/config/firefox/functions/extensions/video-pauser.nix
new file mode 100644
index 00000000..c4c5238f
--- /dev/null
+++ b/home-manager/soispha/config/firefox/functions/extensions/video-pauser.nix
@@ -0,0 +1,30 @@
+{
+ 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
+''