summaryrefslogtreecommitdiff
path: root/pkgs/fetchFirefoxAddon/package.nix
diff options
context:
space:
mode:
authorSeth Flynn <[email protected]>2025-01-29 13:52:32 -0500
committerSeth Flynn <[email protected]>2025-01-29 13:52:32 -0500
commit8126a8ab097699269a558d5972a0e0dd6f2c98d2 (patch)
tree2eff0c4d1c75abdc5f1dd067b7510986d357f4d1 /pkgs/fetchFirefoxAddon/package.nix
parent46f1cf5b41e06a833c2521a3eb2b71c6fcbc2f46 (diff)
firefox-addons: initfirefox-addons
Diffstat (limited to 'pkgs/fetchFirefoxAddon/package.nix')
-rw-r--r--pkgs/fetchFirefoxAddon/package.nix85
1 files changed, 85 insertions, 0 deletions
diff --git a/pkgs/fetchFirefoxAddon/package.nix b/pkgs/fetchFirefoxAddon/package.nix
new file mode 100644
index 0000000..283e92c
--- /dev/null
+++ b/pkgs/fetchFirefoxAddon/package.nix
@@ -0,0 +1,85 @@
+{
+ lib,
+ stdenvNoCC,
+ fetchurl,
+}:
+
+lib.makeOverridable (
+ lib.fetchers.withNormalizedHash { } (
+ {
+ url,
+ addonId ? null,
+ addonSlug ? args.pname or null,
+ firefoxVendor ? "mozilla",
+ # Keep in sync with https://github.com/nix-community/home-manager/blob/e1ae908bcc30af792b0bb0a52e53b03d2577255e/modules/programs/firefox/mkFirefoxModule.nix#L52-L54
+ extensionPath ? "extensions/{ec8030f7-c20a-464f-9b0e-13a3a9e97384}",
+ outputHash,
+ outputHashAlgo,
+ ...
+ }@args:
+
+ assert lib.assertMsg (
+ addonId != null || addonSlug != null
+ ) "One of `addonId` or `addonSlug` must be passed";
+
+ let
+ addonRef = if addonId != null then addonId else addonSlug;
+
+ knownArgs = [
+ "url"
+ "addonId"
+ "firefoxVendor"
+ "extensionPath"
+ "outputHash"
+ "outputHashAlgo"
+ ];
+ in
+
+ stdenvNoCC.mkDerivation (
+ finalAttrs:
+ lib.removeAttrs args knownArgs
+ // {
+ name =
+ "firefox-addons"
+ + lib.optionalString (
+ finalAttrs ? "pname" && finalAttrs ? "version"
+ ) "-${finalAttrs.pname}-${finalAttrs.version}";
+
+ src = fetchurl {
+ inherit url outputHash outputHashAlgo;
+ };
+
+ dontConfigure = args.dontConfigure or true;
+ dontBuild = args.dontBuild or true;
+
+ installPhase =
+ args.installPhase or ''
+ runHook preInstall
+
+ extensionDir=$out/share/${firefoxVendor}/${extensionPath}
+ install -d $extensionDir
+ install -Dm644 $src $extensionDir
+
+ runHook postInstall
+ '';
+
+ preferLocalBuild = args.preferLocalBuild or true;
+ impureEnvVars = lib.fetchers.proxyImpureEnvVars;
+
+ passthru = args.passthru or { } // {
+ inherit
+ addonId
+ addonRef
+ addonSlug
+ extensionPath
+ firefoxVendor
+ ;
+ };
+
+ meta = args.meta or { } // {
+ position = builtins.unsafeGetAttrPos "url" args;
+ };
+ }
+ )
+ )
+)