blob: 283e92cef6300e9e1a5f8c8f347ed233a2f27572 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
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;
};
}
)
)
)
|