diff options
Diffstat (limited to 'flakes/mypackages')
262 files changed, 14930 insertions, 0 deletions
diff --git a/flakes/mypackages/flake.lock b/flakes/mypackages/flake.lock new file mode 100644 index 0000000..f11f6c5 --- /dev/null +++ b/flakes/mypackages/flake.lock | |||
@@ -0,0 +1,83 @@ | |||
1 | { | ||
2 | "nodes": { | ||
3 | "flake-parts": { | ||
4 | "inputs": { | ||
5 | "nixpkgs-lib": "nixpkgs-lib" | ||
6 | }, | ||
7 | "locked": { | ||
8 | "lastModified": 1675295133, | ||
9 | "narHash": "sha256-dU8fuLL98WFXG0VnRgM00bqKX6CEPBLybhiIDIgO45o=", | ||
10 | "owner": "hercules-ci", | ||
11 | "repo": "flake-parts", | ||
12 | "rev": "bf53492df08f3178ce85e0c9df8ed8d03c030c9f", | ||
13 | "type": "github" | ||
14 | }, | ||
15 | "original": { | ||
16 | "owner": "hercules-ci", | ||
17 | "repo": "flake-parts", | ||
18 | "type": "github" | ||
19 | } | ||
20 | }, | ||
21 | "nixpkgs": { | ||
22 | "locked": { | ||
23 | "lastModified": 1646497237, | ||
24 | "narHash": "sha256-Ccpot1h/rV8MgcngDp5OrdmLTMaUTbStZTR5/sI7zW0=", | ||
25 | "owner": "nixos", | ||
26 | "repo": "nixpkgs", | ||
27 | "rev": "062a0c5437b68f950b081bbfc8a699d57a4ee026", | ||
28 | "type": "github" | ||
29 | }, | ||
30 | "original": { | ||
31 | "owner": "nixos", | ||
32 | "repo": "nixpkgs", | ||
33 | "rev": "062a0c5437b68f950b081bbfc8a699d57a4ee026", | ||
34 | "type": "github" | ||
35 | } | ||
36 | }, | ||
37 | "nixpkgs-lib": { | ||
38 | "locked": { | ||
39 | "dir": "lib", | ||
40 | "lastModified": 1675183161, | ||
41 | "narHash": "sha256-Zq8sNgAxDckpn7tJo7V1afRSk2eoVbu3OjI1QklGLNg=", | ||
42 | "owner": "NixOS", | ||
43 | "repo": "nixpkgs", | ||
44 | "rev": "e1e1b192c1a5aab2960bf0a0bd53a2e8124fa18e", | ||
45 | "type": "github" | ||
46 | }, | ||
47 | "original": { | ||
48 | "dir": "lib", | ||
49 | "owner": "NixOS", | ||
50 | "ref": "nixos-unstable", | ||
51 | "repo": "nixpkgs", | ||
52 | "type": "github" | ||
53 | } | ||
54 | }, | ||
55 | "root": { | ||
56 | "inputs": { | ||
57 | "flake-parts": "flake-parts", | ||
58 | "nixpkgs": "nixpkgs", | ||
59 | "webapps-ttrss": "webapps-ttrss" | ||
60 | } | ||
61 | }, | ||
62 | "webapps-ttrss": { | ||
63 | "flake": false, | ||
64 | "locked": { | ||
65 | "lastModified": 1546759381, | ||
66 | "narHash": "sha256-urjf4EoLWS7G0s0hRtaErrs2B8DUatNK/eoneuB0anY=", | ||
67 | "ref": "master", | ||
68 | "rev": "986ca251f995f7754a0470d3e0c44538a545081f", | ||
69 | "revCount": 9256, | ||
70 | "type": "git", | ||
71 | "url": "https://git.tt-rss.org/fox/tt-rss.git" | ||
72 | }, | ||
73 | "original": { | ||
74 | "ref": "master", | ||
75 | "rev": "986ca251f995f7754a0470d3e0c44538a545081f", | ||
76 | "type": "git", | ||
77 | "url": "https://git.tt-rss.org/fox/tt-rss.git" | ||
78 | } | ||
79 | } | ||
80 | }, | ||
81 | "root": "root", | ||
82 | "version": 7 | ||
83 | } | ||
diff --git a/flakes/mypackages/flake.nix b/flakes/mypackages/flake.nix new file mode 100644 index 0000000..adad96f --- /dev/null +++ b/flakes/mypackages/flake.nix | |||
@@ -0,0 +1,43 @@ | |||
1 | { | ||
2 | description = "immae-eu infrastructure"; | ||
3 | inputs = { | ||
4 | flake-parts.url = "github:hercules-ci/flake-parts"; | ||
5 | # TODO: use nixos-unstable branch at some point and use the lock to keep the actual commit | ||
6 | nixpkgs.url = "github:nixos/nixpkgs/062a0c5437b68f950b081bbfc8a699d57a4ee026"; | ||
7 | webapps-ttrss = { | ||
8 | url = "https://git.tt-rss.org/fox/tt-rss.git"; | ||
9 | ref = "master"; | ||
10 | rev = "986ca251f995f7754a0470d3e0c44538a545081f"; | ||
11 | type = "git"; | ||
12 | flake = false; | ||
13 | }; | ||
14 | }; | ||
15 | outputs = inputs@{ self, flake-parts, ... }: | ||
16 | flake-parts.lib.mkFlake { inherit inputs; } { | ||
17 | imports = [ | ||
18 | (import ./lib/flake-parts-lib.nix { name = "lib"; type = "unspecified"; }) | ||
19 | ]; | ||
20 | systems = [ "x86_64-linux" ]; | ||
21 | perSystem = { config, inputs', pkgs, ... }: | ||
22 | let | ||
23 | mypkgs = import ./pkgs/default.nix { inherit pkgs; inherit (self) mylibs sources; }; | ||
24 | in { | ||
25 | packages = builtins.removeAttrs mypkgs [ "composerEnv" "webapps-apache-theme" ]; | ||
26 | lib = { | ||
27 | inherit (self) sources; | ||
28 | inherit (mypkgs) composerEnv; | ||
29 | inherit (self.mylibs) postfixScript; | ||
30 | apache-theme = mypkgs.webapps-apache-theme; | ||
31 | }; | ||
32 | }; | ||
33 | flake = { | ||
34 | mylibs = import ./lib/default.nix; | ||
35 | sources.tools.ttrss = inputs.webapps-ttrss; | ||
36 | # We want overlays to be infected (in contrary to "packages" | ||
37 | # above): if someone imports an overlay here, we want his own | ||
38 | # overlays to be taken into account in every package, even new | ||
39 | # ones. | ||
40 | overlays = import ./overlays/default.nix { inherit (self) sources mylibs; }; | ||
41 | }; | ||
42 | }; | ||
43 | } | ||
diff --git a/flakes/mypackages/lib/default.nix b/flakes/mypackages/lib/default.nix new file mode 100644 index 0000000..972ace0 --- /dev/null +++ b/flakes/mypackages/lib/default.nix | |||
@@ -0,0 +1,37 @@ | |||
1 | { | ||
2 | flakePartsAddPerSystem = import ./flake-parts-lib.nix; | ||
3 | nodeEnv = import ./node-env.nix; | ||
4 | postfixScript = pkgs: name: script: pkgs.writeScript name '' | ||
5 | #! ${pkgs.stdenv.shell} | ||
6 | mail=$(${pkgs.coreutils}/bin/cat -) | ||
7 | output=$(echo "$mail" | ${script} 2>&1) | ||
8 | ret=$? | ||
9 | |||
10 | if [ "$ret" != "0" ]; then | ||
11 | echo "$mail" \ | ||
12 | | ${pkgs.procmail}/bin/formail -i "X-Return-Code: $ret" \ | ||
13 | | /run/wrappers/bin/sendmail -i scripts_error+${name}@mail.immae.eu | ||
14 | |||
15 | messageId=$(echo "$mail" | ${pkgs.procmail}/bin/formail -x "Message-Id:") | ||
16 | repeat=$(echo "$mail" | ${pkgs.procmail}/bin/formail -X "From:" -X "Received:") | ||
17 | |||
18 | ${pkgs.coreutils}/bin/cat <<EOF | /run/wrappers/bin/sendmail -i scripts_error+${name}@mail.immae.eu | ||
19 | $repeat | ||
20 | To: scripts_error+${name}@mail.immae.eu | ||
21 | Subject: Log from script error | ||
22 | Content-Type: text/plain; charset="UTF-8" | ||
23 | Content-Transfer-Encoding: 8bit | ||
24 | References:$messageId | ||
25 | MIME-Version: 1.0 | ||
26 | X-Return-Code: $ret | ||
27 | |||
28 | Error code: $ret | ||
29 | Output of message: | ||
30 | -------------- | ||
31 | $output | ||
32 | -------------- | ||
33 | EOF | ||
34 | fi | ||
35 | ''; | ||
36 | |||
37 | } | ||
diff --git a/flakes/mypackages/lib/flake-parts-lib.nix b/flakes/mypackages/lib/flake-parts-lib.nix new file mode 100644 index 0000000..271a4cf --- /dev/null +++ b/flakes/mypackages/lib/flake-parts-lib.nix | |||
@@ -0,0 +1,10 @@ | |||
1 | i@{ name, type }: | ||
2 | { lib, flake-parts-lib, ... }: | ||
3 | flake-parts-lib.mkTransposedPerSystemModule { | ||
4 | inherit name; | ||
5 | option = lib.mkOption { | ||
6 | type = lib.types.lazyAttrsOf lib.types."${type}"; | ||
7 | default = { }; | ||
8 | }; | ||
9 | file = import ./flake-parts-lib.nix i; | ||
10 | } | ||
diff --git a/flakes/mypackages/lib/node-env.nix b/flakes/mypackages/lib/node-env.nix new file mode 100644 index 0000000..842caa1 --- /dev/null +++ b/flakes/mypackages/lib/node-env.nix | |||
@@ -0,0 +1,542 @@ | |||
1 | # This file originates from node2nix | ||
2 | |||
3 | {lib, stdenv, nodejs, python2, utillinux, libtool, runCommand, writeTextFile}: | ||
4 | |||
5 | let | ||
6 | python = if nodejs ? python then nodejs.python else python2; | ||
7 | |||
8 | # Create a tar wrapper that filters all the 'Ignoring unknown extended header keyword' noise | ||
9 | tarWrapper = runCommand "tarWrapper" {} '' | ||
10 | mkdir -p $out/bin | ||
11 | |||
12 | cat > $out/bin/tar <<EOF | ||
13 | #! ${stdenv.shell} -e | ||
14 | $(type -p tar) "\$@" --warning=no-unknown-keyword | ||
15 | EOF | ||
16 | |||
17 | chmod +x $out/bin/tar | ||
18 | ''; | ||
19 | |||
20 | # Function that generates a TGZ file from a NPM project | ||
21 | buildNodeSourceDist = | ||
22 | { name, version, src, ... }: | ||
23 | |||
24 | stdenv.mkDerivation { | ||
25 | name = "node-tarball-${name}-${version}"; | ||
26 | inherit src; | ||
27 | buildInputs = [ nodejs ]; | ||
28 | buildPhase = '' | ||
29 | export HOME=$TMPDIR | ||
30 | tgzFile=$(npm pack | tail -n 1) # Hooks to the pack command will add output (https://docs.npmjs.com/misc/scripts) | ||
31 | ''; | ||
32 | installPhase = '' | ||
33 | mkdir -p $out/tarballs | ||
34 | mv $tgzFile $out/tarballs | ||
35 | mkdir -p $out/nix-support | ||
36 | echo "file source-dist $out/tarballs/$tgzFile" >> $out/nix-support/hydra-build-products | ||
37 | ''; | ||
38 | }; | ||
39 | |||
40 | includeDependencies = {dependencies}: | ||
41 | lib.optionalString (dependencies != []) | ||
42 | (lib.concatMapStrings (dependency: | ||
43 | '' | ||
44 | # Bundle the dependencies of the package | ||
45 | mkdir -p node_modules | ||
46 | cd node_modules | ||
47 | |||
48 | # Only include dependencies if they don't exist. They may also be bundled in the package. | ||
49 | if [ ! -e "${dependency.name}" ] | ||
50 | then | ||
51 | ${composePackage dependency} | ||
52 | fi | ||
53 | |||
54 | cd .. | ||
55 | '' | ||
56 | ) dependencies); | ||
57 | |||
58 | # Recursively composes the dependencies of a package | ||
59 | composePackage = { name, packageName, src, dependencies ? [], ... }@args: | ||
60 | '' | ||
61 | DIR=$(pwd) | ||
62 | cd $TMPDIR | ||
63 | |||
64 | unpackFile ${src} | ||
65 | |||
66 | # Make the base dir in which the target dependency resides first | ||
67 | mkdir -p "$(dirname "$DIR/${packageName}")" | ||
68 | |||
69 | if [ -f "${src}" ] | ||
70 | then | ||
71 | # Figure out what directory has been unpacked | ||
72 | packageDir="$(find . -maxdepth 1 -type d | tail -1)" | ||
73 | |||
74 | # Restore write permissions to make building work | ||
75 | find "$packageDir" -type d -print0 | xargs -0 chmod u+x | ||
76 | chmod -R u+w "$packageDir" | ||
77 | |||
78 | # Move the extracted tarball into the output folder | ||
79 | mv "$packageDir" "$DIR/${packageName}" | ||
80 | elif [ -d "${src}" ] | ||
81 | then | ||
82 | # Get a stripped name (without hash) of the source directory. | ||
83 | # On old nixpkgs it's already set internally. | ||
84 | if [ -z "$strippedName" ] | ||
85 | then | ||
86 | strippedName="$(stripHash ${src})" | ||
87 | fi | ||
88 | |||
89 | # Restore write permissions to make building work | ||
90 | chmod -R u+w "$strippedName" | ||
91 | |||
92 | # Move the extracted directory into the output folder | ||
93 | mv "$strippedName" "$DIR/${packageName}" | ||
94 | fi | ||
95 | |||
96 | # Unset the stripped name to not confuse the next unpack step | ||
97 | unset strippedName | ||
98 | |||
99 | # Include the dependencies of the package | ||
100 | cd "$DIR/${packageName}" | ||
101 | ${includeDependencies { inherit dependencies; }} | ||
102 | cd .. | ||
103 | ${lib.optionalString (builtins.substring 0 1 packageName == "@") "cd .."} | ||
104 | ''; | ||
105 | |||
106 | pinpointDependencies = {dependencies, production}: | ||
107 | let | ||
108 | pinpointDependenciesFromPackageJSON = writeTextFile { | ||
109 | name = "pinpointDependencies.js"; | ||
110 | text = '' | ||
111 | var fs = require('fs'); | ||
112 | var path = require('path'); | ||
113 | |||
114 | function resolveDependencyVersion(location, name) { | ||
115 | if(location == process.env['NIX_STORE']) { | ||
116 | return null; | ||
117 | } else { | ||
118 | var dependencyPackageJSON = path.join(location, "node_modules", name, "package.json"); | ||
119 | |||
120 | if(fs.existsSync(dependencyPackageJSON)) { | ||
121 | var dependencyPackageObj = JSON.parse(fs.readFileSync(dependencyPackageJSON)); | ||
122 | |||
123 | if(dependencyPackageObj.name == name) { | ||
124 | return dependencyPackageObj.version; | ||
125 | } | ||
126 | } else { | ||
127 | return resolveDependencyVersion(path.resolve(location, ".."), name); | ||
128 | } | ||
129 | } | ||
130 | } | ||
131 | |||
132 | function replaceDependencies(dependencies) { | ||
133 | if(typeof dependencies == "object" && dependencies !== null) { | ||
134 | for(var dependency in dependencies) { | ||
135 | var resolvedVersion = resolveDependencyVersion(process.cwd(), dependency); | ||
136 | |||
137 | if(resolvedVersion === null) { | ||
138 | process.stderr.write("WARNING: cannot pinpoint dependency: "+dependency+", context: "+process.cwd()+"\n"); | ||
139 | } else { | ||
140 | dependencies[dependency] = resolvedVersion; | ||
141 | } | ||
142 | } | ||
143 | } | ||
144 | } | ||
145 | |||
146 | /* Read the package.json configuration */ | ||
147 | var packageObj = JSON.parse(fs.readFileSync('./package.json')); | ||
148 | |||
149 | /* Pinpoint all dependencies */ | ||
150 | replaceDependencies(packageObj.dependencies); | ||
151 | if(process.argv[2] == "development") { | ||
152 | replaceDependencies(packageObj.devDependencies); | ||
153 | } | ||
154 | replaceDependencies(packageObj.optionalDependencies); | ||
155 | |||
156 | /* Write the fixed package.json file */ | ||
157 | fs.writeFileSync("package.json", JSON.stringify(packageObj, null, 2)); | ||
158 | ''; | ||
159 | }; | ||
160 | in | ||
161 | '' | ||
162 | node ${pinpointDependenciesFromPackageJSON} ${if production then "production" else "development"} | ||
163 | |||
164 | ${lib.optionalString (dependencies != []) | ||
165 | '' | ||
166 | if [ -d node_modules ] | ||
167 | then | ||
168 | cd node_modules | ||
169 | ${lib.concatMapStrings (dependency: pinpointDependenciesOfPackage dependency) dependencies} | ||
170 | cd .. | ||
171 | fi | ||
172 | ''} | ||
173 | ''; | ||
174 | |||
175 | # Recursively traverses all dependencies of a package and pinpoints all | ||
176 | # dependencies in the package.json file to the versions that are actually | ||
177 | # being used. | ||
178 | |||
179 | pinpointDependenciesOfPackage = { packageName, dependencies ? [], production ? true, ... }@args: | ||
180 | '' | ||
181 | if [ -d "${packageName}" ] | ||
182 | then | ||
183 | cd "${packageName}" | ||
184 | ${pinpointDependencies { inherit dependencies production; }} | ||
185 | cd .. | ||
186 | ${lib.optionalString (builtins.substring 0 1 packageName == "@") "cd .."} | ||
187 | fi | ||
188 | ''; | ||
189 | |||
190 | # Extract the Node.js source code which is used to compile packages with | ||
191 | # native bindings | ||
192 | nodeSources = runCommand "node-sources" {} '' | ||
193 | tar --no-same-owner --no-same-permissions -xf ${nodejs.src} | ||
194 | mv node-* $out | ||
195 | ''; | ||
196 | |||
197 | # Script that adds _integrity fields to all package.json files to prevent NPM from consulting the cache (that is empty) | ||
198 | addIntegrityFieldsScript = writeTextFile { | ||
199 | name = "addintegrityfields.js"; | ||
200 | text = '' | ||
201 | var fs = require('fs'); | ||
202 | var path = require('path'); | ||
203 | |||
204 | function augmentDependencies(baseDir, dependencies) { | ||
205 | for(var dependencyName in dependencies) { | ||
206 | var dependency = dependencies[dependencyName]; | ||
207 | |||
208 | // Open package.json and augment metadata fields | ||
209 | var packageJSONDir = path.join(baseDir, "node_modules", dependencyName); | ||
210 | var packageJSONPath = path.join(packageJSONDir, "package.json"); | ||
211 | |||
212 | if(fs.existsSync(packageJSONPath)) { // Only augment packages that exist. Sometimes we may have production installs in which development dependencies can be ignored | ||
213 | console.log("Adding metadata fields to: "+packageJSONPath); | ||
214 | var packageObj = JSON.parse(fs.readFileSync(packageJSONPath)); | ||
215 | |||
216 | if(dependency.integrity) { | ||
217 | packageObj["_integrity"] = dependency.integrity; | ||
218 | } else { | ||
219 | packageObj["_integrity"] = "sha1-000000000000000000000000000="; // When no _integrity string has been provided (e.g. by Git dependencies), add a dummy one. It does not seem to harm and it bypasses downloads. | ||
220 | } | ||
221 | |||
222 | packageObj["_resolved"] = dependency.version; // Set the resolved version to the version identifier. This prevents NPM from cloning Git repositories. | ||
223 | fs.writeFileSync(packageJSONPath, JSON.stringify(packageObj, null, 2)); | ||
224 | } | ||
225 | |||
226 | // Augment transitive dependencies | ||
227 | if(dependency.dependencies !== undefined) { | ||
228 | augmentDependencies(packageJSONDir, dependency.dependencies); | ||
229 | } | ||
230 | } | ||
231 | } | ||
232 | |||
233 | if(fs.existsSync("./package-lock.json")) { | ||
234 | var packageLock = JSON.parse(fs.readFileSync("./package-lock.json")); | ||
235 | |||
236 | if(packageLock.lockfileVersion !== 1) { | ||
237 | process.stderr.write("Sorry, I only understand lock file version 1!\n"); | ||
238 | process.exit(1); | ||
239 | } | ||
240 | |||
241 | if(packageLock.dependencies !== undefined) { | ||
242 | augmentDependencies(".", packageLock.dependencies); | ||
243 | } | ||
244 | } | ||
245 | ''; | ||
246 | }; | ||
247 | |||
248 | # Reconstructs a package-lock file from the node_modules/ folder structure and package.json files with dummy sha1 hashes | ||
249 | reconstructPackageLock = writeTextFile { | ||
250 | name = "addintegrityfields.js"; | ||
251 | text = '' | ||
252 | var fs = require('fs'); | ||
253 | var path = require('path'); | ||
254 | |||
255 | var packageObj = JSON.parse(fs.readFileSync("package.json")); | ||
256 | |||
257 | var lockObj = { | ||
258 | name: packageObj.name, | ||
259 | version: packageObj.version, | ||
260 | lockfileVersion: 1, | ||
261 | requires: true, | ||
262 | dependencies: {} | ||
263 | }; | ||
264 | |||
265 | function augmentPackageJSON(filePath, dependencies) { | ||
266 | var packageJSON = path.join(filePath, "package.json"); | ||
267 | if(fs.existsSync(packageJSON)) { | ||
268 | var packageObj = JSON.parse(fs.readFileSync(packageJSON)); | ||
269 | dependencies[packageObj.name] = { | ||
270 | version: packageObj.version, | ||
271 | integrity: "sha1-000000000000000000000000000=", | ||
272 | dependencies: {} | ||
273 | }; | ||
274 | processDependencies(path.join(filePath, "node_modules"), dependencies[packageObj.name].dependencies); | ||
275 | } | ||
276 | } | ||
277 | |||
278 | function processDependencies(dir, dependencies) { | ||
279 | if(fs.existsSync(dir)) { | ||
280 | var files = fs.readdirSync(dir); | ||
281 | |||
282 | files.forEach(function(entry) { | ||
283 | var filePath = path.join(dir, entry); | ||
284 | var stats = fs.statSync(filePath); | ||
285 | |||
286 | if(stats.isDirectory()) { | ||
287 | if(entry.substr(0, 1) == "@") { | ||
288 | // When we encounter a namespace folder, augment all packages belonging to the scope | ||
289 | var pkgFiles = fs.readdirSync(filePath); | ||
290 | |||
291 | pkgFiles.forEach(function(entry) { | ||
292 | if(stats.isDirectory()) { | ||
293 | var pkgFilePath = path.join(filePath, entry); | ||
294 | augmentPackageJSON(pkgFilePath, dependencies); | ||
295 | } | ||
296 | }); | ||
297 | } else { | ||
298 | augmentPackageJSON(filePath, dependencies); | ||
299 | } | ||
300 | } | ||
301 | }); | ||
302 | } | ||
303 | } | ||
304 | |||
305 | processDependencies("node_modules", lockObj.dependencies); | ||
306 | |||
307 | fs.writeFileSync("package-lock.json", JSON.stringify(lockObj, null, 2)); | ||
308 | ''; | ||
309 | }; | ||
310 | |||
311 | # Builds and composes an NPM package including all its dependencies | ||
312 | buildNodePackage = | ||
313 | { name | ||
314 | , packageName | ||
315 | , version | ||
316 | , dependencies ? [] | ||
317 | , buildInputs ? [] | ||
318 | , production ? true | ||
319 | , npmFlags ? "" | ||
320 | , dontNpmInstall ? false | ||
321 | , bypassCache ? false | ||
322 | , preRebuild ? "" | ||
323 | , dontStrip ? true | ||
324 | , unpackPhase ? "true" | ||
325 | , buildPhase ? "true" | ||
326 | , ... }@args: | ||
327 | |||
328 | let | ||
329 | forceOfflineFlag = if bypassCache then "--offline" else "--registry http://www.example.com"; | ||
330 | extraArgs = removeAttrs args [ "name" "dependencies" "buildInputs" "dontStrip" "dontNpmInstall" "preRebuild" "unpackPhase" "buildPhase" ]; | ||
331 | in | ||
332 | stdenv.mkDerivation ({ | ||
333 | name = "node-${name}-${version}"; | ||
334 | buildInputs = [ tarWrapper python nodejs ] | ||
335 | ++ lib.optional (stdenv.isLinux) utillinux | ||
336 | ++ lib.optional (stdenv.isDarwin) libtool | ||
337 | ++ buildInputs; | ||
338 | |||
339 | inherit dontStrip; # Stripping may fail a build for some package deployments | ||
340 | inherit dontNpmInstall preRebuild unpackPhase buildPhase; | ||
341 | |||
342 | compositionScript = composePackage args; | ||
343 | pinpointDependenciesScript = pinpointDependenciesOfPackage args; | ||
344 | |||
345 | passAsFile = [ "compositionScript" "pinpointDependenciesScript" ]; | ||
346 | |||
347 | installPhase = '' | ||
348 | # Create and enter a root node_modules/ folder | ||
349 | mkdir -p $out/lib/node_modules | ||
350 | cd $out/lib/node_modules | ||
351 | |||
352 | # Compose the package and all its dependencies | ||
353 | source $compositionScriptPath | ||
354 | |||
355 | # Pinpoint the versions of all dependencies to the ones that are actually being used | ||
356 | echo "pinpointing versions of dependencies..." | ||
357 | source $pinpointDependenciesScriptPath | ||
358 | |||
359 | # Patch the shebangs of the bundled modules to prevent them from | ||
360 | # calling executables outside the Nix store as much as possible | ||
361 | patchShebangs . | ||
362 | |||
363 | # Deploy the Node.js package by running npm install. Since the | ||
364 | # dependencies have been provided already by ourselves, it should not | ||
365 | # attempt to install them again, which is good, because we want to make | ||
366 | # it Nix's responsibility. If it needs to install any dependencies | ||
367 | # anyway (e.g. because the dependency parameters are | ||
368 | # incomplete/incorrect), it fails. | ||
369 | # | ||
370 | # The other responsibilities of NPM are kept -- version checks, build | ||
371 | # steps, postprocessing etc. | ||
372 | |||
373 | export HOME=$TMPDIR | ||
374 | cd "${packageName}" | ||
375 | runHook preRebuild | ||
376 | |||
377 | ${lib.optionalString bypassCache '' | ||
378 | if [ ! -f package-lock.json ] | ||
379 | then | ||
380 | echo "No package-lock.json file found, reconstructing..." | ||
381 | node ${reconstructPackageLock} | ||
382 | fi | ||
383 | |||
384 | node ${addIntegrityFieldsScript} | ||
385 | ''} | ||
386 | |||
387 | npm ${forceOfflineFlag} --nodedir=${nodeSources} ${npmFlags} ${lib.optionalString production "--production"} rebuild | ||
388 | |||
389 | if [ "$dontNpmInstall" != "1" ] | ||
390 | then | ||
391 | # NPM tries to download packages even when they already exist if npm-shrinkwrap is used. | ||
392 | rm -f npm-shrinkwrap.json | ||
393 | |||
394 | npm ${forceOfflineFlag} --nodedir=${nodeSources} ${npmFlags} ${lib.optionalString production "--production"} install | ||
395 | fi | ||
396 | |||
397 | # Create symlink to the deployed executable folder, if applicable | ||
398 | if [ -d "$out/lib/node_modules/.bin" ] | ||
399 | then | ||
400 | ln -s $out/lib/node_modules/.bin $out/bin | ||
401 | fi | ||
402 | |||
403 | # Create symlinks to the deployed manual page folders, if applicable | ||
404 | if [ -d "$out/lib/node_modules/${packageName}/man" ] | ||
405 | then | ||
406 | mkdir -p $out/share | ||
407 | for dir in "$out/lib/node_modules/${packageName}/man/"* | ||
408 | do | ||
409 | mkdir -p $out/share/man/$(basename "$dir") | ||
410 | for page in "$dir"/* | ||
411 | do | ||
412 | ln -s $page $out/share/man/$(basename "$dir") | ||
413 | done | ||
414 | done | ||
415 | fi | ||
416 | |||
417 | # Run post install hook, if provided | ||
418 | runHook postInstall | ||
419 | ''; | ||
420 | } // extraArgs); | ||
421 | |||
422 | # Builds a development shell | ||
423 | buildNodeShell = | ||
424 | { name | ||
425 | , packageName | ||
426 | , version | ||
427 | , src | ||
428 | , dependencies ? [] | ||
429 | , buildInputs ? [] | ||
430 | , production ? true | ||
431 | , npmFlags ? "" | ||
432 | , dontNpmInstall ? false | ||
433 | , bypassCache ? false | ||
434 | , dontStrip ? true | ||
435 | , unpackPhase ? "true" | ||
436 | , buildPhase ? "true" | ||
437 | , ... }@args: | ||
438 | |||
439 | let | ||
440 | forceOfflineFlag = if bypassCache then "--offline" else "--registry http://www.example.com"; | ||
441 | |||
442 | extraArgs = removeAttrs args [ "name" "dependencies" "buildInputs" ]; | ||
443 | |||
444 | nodeDependencies = stdenv.mkDerivation ({ | ||
445 | name = "node-dependencies-${name}-${version}"; | ||
446 | |||
447 | buildInputs = [ tarWrapper python nodejs ] | ||
448 | ++ lib.optional (stdenv.isLinux) utillinux | ||
449 | ++ lib.optional (stdenv.isDarwin) libtool | ||
450 | ++ buildInputs; | ||
451 | |||
452 | inherit dontStrip; # Stripping may fail a build for some package deployments | ||
453 | inherit dontNpmInstall unpackPhase buildPhase; | ||
454 | |||
455 | includeScript = includeDependencies { inherit dependencies; }; | ||
456 | pinpointDependenciesScript = pinpointDependenciesOfPackage args; | ||
457 | |||
458 | passAsFile = [ "includeScript" "pinpointDependenciesScript" ]; | ||
459 | |||
460 | installPhase = '' | ||
461 | mkdir -p $out/${packageName} | ||
462 | cd $out/${packageName} | ||
463 | |||
464 | source $includeScriptPath | ||
465 | |||
466 | # Create fake package.json to make the npm commands work properly | ||
467 | cp ${src}/package.json . | ||
468 | chmod 644 package.json | ||
469 | ${lib.optionalString bypassCache '' | ||
470 | if [ -f ${src}/package-lock.json ] | ||
471 | then | ||
472 | cp ${src}/package-lock.json . | ||
473 | fi | ||
474 | ''} | ||
475 | |||
476 | # Pinpoint the versions of all dependencies to the ones that are actually being used | ||
477 | echo "pinpointing versions of dependencies..." | ||
478 | cd .. | ||
479 | ${lib.optionalString (builtins.substring 0 1 packageName == "@") "cd .."} | ||
480 | |||
481 | source $pinpointDependenciesScriptPath | ||
482 | cd ${packageName} | ||
483 | |||
484 | # Patch the shebangs of the bundled modules to prevent them from | ||
485 | # calling executables outside the Nix store as much as possible | ||
486 | patchShebangs . | ||
487 | |||
488 | export HOME=$PWD | ||
489 | |||
490 | ${lib.optionalString bypassCache '' | ||
491 | if [ ! -f package-lock.json ] | ||
492 | then | ||
493 | echo "No package-lock.json file found, reconstructing..." | ||
494 | node ${reconstructPackageLock} | ||
495 | fi | ||
496 | |||
497 | node ${addIntegrityFieldsScript} | ||
498 | ''} | ||
499 | |||
500 | npm ${forceOfflineFlag} --nodedir=${nodeSources} ${npmFlags} ${lib.optionalString production "--production"} rebuild | ||
501 | |||
502 | ${lib.optionalString (!dontNpmInstall) '' | ||
503 | # NPM tries to download packages even when they already exist if npm-shrinkwrap is used. | ||
504 | rm -f npm-shrinkwrap.json | ||
505 | |||
506 | npm ${forceOfflineFlag} --nodedir=${nodeSources} ${npmFlags} ${lib.optionalString production "--production"} install | ||
507 | ''} | ||
508 | |||
509 | cd .. | ||
510 | ${lib.optionalString (builtins.substring 0 1 packageName == "@") "cd .."} | ||
511 | |||
512 | mv ${packageName} lib | ||
513 | ln -s $out/lib/node_modules/.bin $out/bin | ||
514 | ''; | ||
515 | } // extraArgs); | ||
516 | in | ||
517 | stdenv.mkDerivation { | ||
518 | name = "node-shell-${name}-${version}"; | ||
519 | |||
520 | buildInputs = [ python nodejs ] ++ lib.optional (stdenv.isLinux) utillinux ++ buildInputs; | ||
521 | buildCommand = '' | ||
522 | mkdir -p $out/bin | ||
523 | cat > $out/bin/shell <<EOF | ||
524 | #! ${stdenv.shell} -e | ||
525 | $shellHook | ||
526 | exec ${stdenv.shell} | ||
527 | EOF | ||
528 | chmod +x $out/bin/shell | ||
529 | ''; | ||
530 | |||
531 | # Provide the dependencies in a development shell through the NODE_PATH environment variable | ||
532 | inherit nodeDependencies; | ||
533 | shellHook = lib.optionalString (dependencies != []) '' | ||
534 | export NODE_PATH=$nodeDependencies/lib/node_modules | ||
535 | ''; | ||
536 | }; | ||
537 | in | ||
538 | { | ||
539 | buildNodeSourceDist = lib.makeOverridable buildNodeSourceDist; | ||
540 | buildNodePackage = lib.makeOverridable buildNodePackage; | ||
541 | buildNodeShell = lib.makeOverridable buildNodeShell; | ||
542 | } | ||
diff --git a/flakes/mypackages/lib/private/default.nix b/flakes/mypackages/lib/private/default.nix new file mode 100644 index 0000000..86dd840 --- /dev/null +++ b/flakes/mypackages/lib/private/default.nix | |||
@@ -0,0 +1,20 @@ | |||
1 | { pkgs }: | ||
2 | { | ||
3 | # This adds header colors to the builds, but it rebuilds the whole | ||
4 | # world from scratch, so only use it to debug! | ||
5 | # add it as postHook in derivations | ||
6 | immaePostHook = '' | ||
7 | header() { | ||
8 | echo -ne "\033[1;36m" | ||
9 | echo -n "$1" | ||
10 | echo -e "\033[0m" | ||
11 | } | ||
12 | |||
13 | echoCmd() { | ||
14 | printf "\033[1;34m%s:\033[0m" "$1" | ||
15 | shift | ||
16 | printf ' %q' "$@" | ||
17 | echo | ||
18 | } | ||
19 | ''; | ||
20 | } | ||
diff --git a/flakes/mypackages/overlays/bitlbee-discord/default.nix b/flakes/mypackages/overlays/bitlbee-discord/default.nix new file mode 100644 index 0000000..4227677 --- /dev/null +++ b/flakes/mypackages/overlays/bitlbee-discord/default.nix | |||
@@ -0,0 +1,12 @@ | |||
1 | self: super: { | ||
2 | bitlbee-discord = super.bitlbee-discord.overrideAttrs(old: rec { | ||
3 | version = "master"; | ||
4 | name = "bitlbee-discord-${version}"; | ||
5 | src = self.fetchFromGitHub { | ||
6 | rev = "607f9887ca85f246e970778e3d40aa5c346365a7"; | ||
7 | owner = "sm00th"; | ||
8 | repo = "bitlbee-discord"; | ||
9 | sha256 = "0jkwhx2walx2ay0vc9x13q0j1qq4r5x30ss03a3j7ks28xvsnxc7"; | ||
10 | }; | ||
11 | }); | ||
12 | } | ||
diff --git a/flakes/mypackages/overlays/bitlbee/bitlbee_long_nicks.patch b/flakes/mypackages/overlays/bitlbee/bitlbee_long_nicks.patch new file mode 100644 index 0000000..70be092 --- /dev/null +++ b/flakes/mypackages/overlays/bitlbee/bitlbee_long_nicks.patch | |||
@@ -0,0 +1,56 @@ | |||
1 | diff --git a/bitlbee.h b/bitlbee.h | ||
2 | index 17ab2979..5858277e 100644 | ||
3 | --- a/bitlbee.h | ||
4 | +++ b/bitlbee.h | ||
5 | @@ -121,7 +121,7 @@ extern "C" { | ||
6 | #define CONTROL_TOPIC "Welcome to the control channel. Type \2help\2 for help information." | ||
7 | #define IRCD_INFO PACKAGE " <http://www.bitlbee.org/>" | ||
8 | |||
9 | -#define MAX_NICK_LENGTH 24 | ||
10 | +#define MAX_NICK_LENGTH 99 | ||
11 | |||
12 | #define HELP_FILE VARDIR "help.txt" | ||
13 | #define CONF_FILE_DEF ETCDIR "bitlbee.conf" | ||
14 | diff --git a/tests/check_nick.c b/tests/check_nick.c | ||
15 | index ca5e5111..909fdcc9 100644 | ||
16 | --- a/tests/check_nick.c | ||
17 | +++ b/tests/check_nick.c | ||
18 | @@ -11,16 +11,16 @@ | ||
19 | START_TEST(test_nick_strip){ | ||
20 | int i; | ||
21 | const char *get[] = { "test:", "test", "test\n", | ||
22 | - "thisisaveryveryveryverylongnick", | ||
23 | - "thisisave:ryveryveryverylongnick", | ||
24 | + "thisisaveryveryveryveryveryveryverylongnickthisisaveryveryveryveryveryveryverylongnickthisisaveryveryveryveryveryveryverylongnick", | ||
25 | + "thisis:averyveryveryveryveryveryverylongnickthisisaveryveryveryveryveryveryverylongnickthisisaveryveryveryveryveryveryverylongnick", | ||
26 | "t::::est", | ||
27 | "test123", | ||
28 | "123test", | ||
29 | "123", | ||
30 | NULL }; | ||
31 | const char *expected[] = { "test", "test", "test", | ||
32 | - "thisisaveryveryveryveryl", | ||
33 | - "thisisaveryveryveryveryl", | ||
34 | + "thisisaveryveryveryveryveryveryverylongnickthisisaveryveryveryveryveryveryverylongnickthisisaveryve", | ||
35 | + "thisisaveryveryveryveryveryveryverylongnickthisisaveryveryveryveryveryveryverylongnickthisisaveryve", | ||
36 | "test", | ||
37 | "test123", | ||
38 | "_123test", | ||
39 | @@ -28,7 +28,7 @@ START_TEST(test_nick_strip){ | ||
40 | NULL }; | ||
41 | |||
42 | for (i = 0; get[i]; i++) { | ||
43 | - char copy[60]; | ||
44 | + char copy[260]; | ||
45 | strcpy(copy, get[i]); | ||
46 | nick_strip(NULL, copy); | ||
47 | fail_unless(strcmp(copy, expected[i]) == 0, | ||
48 | @@ -53,7 +53,7 @@ END_TEST | ||
49 | |||
50 | START_TEST(test_nick_ok_notok) | ||
51 | { | ||
52 | - const char *nicks[] = { "thisisaveryveryveryveryveryveryverylongnick", | ||
53 | + const char *nicks[] = { "thisisaveryveryveryveryveryveryverylongnickthisisaveryveryveryveryveryveryverylongnickthisisaveryveryveryveryveryveryverylongnick", | ||
54 | "\nillegalchar", "", "nick%", "123test", NULL }; | ||
55 | int i; | ||
56 | |||
diff --git a/flakes/mypackages/overlays/bitlbee/default.nix b/flakes/mypackages/overlays/bitlbee/default.nix new file mode 100644 index 0000000..5183d01 --- /dev/null +++ b/flakes/mypackages/overlays/bitlbee/default.nix | |||
@@ -0,0 +1,5 @@ | |||
1 | self: super: { | ||
2 | bitlbee = super.bitlbee.overrideAttrs(old: { | ||
3 | patches = (old.patches or []) ++ [ ./bitlbee_long_nicks.patch ]; | ||
4 | }); | ||
5 | } | ||
diff --git a/flakes/mypackages/overlays/databases/mysql/default.nix b/flakes/mypackages/overlays/databases/mysql/default.nix new file mode 100644 index 0000000..45dc468 --- /dev/null +++ b/flakes/mypackages/overlays/databases/mysql/default.nix | |||
@@ -0,0 +1,28 @@ | |||
1 | self: super: rec { | ||
2 | #mariadb = super.mariadb_106.overrideAttrs(old: { | ||
3 | # passthru = old.passthru // { mysqlVersion = "5.7"; }; | ||
4 | #}); | ||
5 | #mariadb_pam = super.mariadb_106.overrideAttrs(old: { | ||
6 | # cmakeFlags = old.cmakeFlags ++ [ "-DWITH_AUTHENTICATION_PAM=ON" ]; | ||
7 | # buildInputs = old.buildInputs ++ [ self.pam ]; | ||
8 | # outputs = old.outputs ++ [ "dev" ]; | ||
9 | # passthru = old.passthru // { mysqlVersion = "5.7"; }; | ||
10 | # postInstall = '' | ||
11 | # mkdir -p $dev $dev/lib $dev/share | ||
12 | # cp -a $out/include $dev | ||
13 | # cp -a $out/lib/{libmariadbclient.a,libmysqlclient.a,libmysqlclient_r.a,libmysqlservices.a} $dev/lib | ||
14 | # cp -a $out/lib/pkgconfig $dev/lib | ||
15 | # cp -a $out/share/aclocal $dev/share | ||
16 | # '' + old.postInstall; | ||
17 | #}); | ||
18 | ## This patched version includes C headers from the server part (see | ||
19 | ## above). It seems to be required to build pam support in clients. | ||
20 | #libmysqlclient_pam = super.libmysqlclient.overrideAttrs(old: { | ||
21 | # prePatch = old.prePatch or "" + '' | ||
22 | # sed -i -e '/define INCLUDE/s|"$| -I@CMAKE_SYSROOT@@CMAKE_INSTALL_PREFIX@/@INSTALL_INCLUDEDIR@/mysql/server -I@CMAKE_SYSROOT@@CMAKE_INSTALL_PREFIX@/@INSTALL_INCLUDEDIR@/mysql/server/private"|' mariadb_config/mariadb_config.c.in | ||
23 | # ''; | ||
24 | # postInstall = old.postInstall or "" + '' | ||
25 | # cp -a ${mariadb_pam.dev}/include/* $out/include/mariadb | ||
26 | # ''; | ||
27 | #}); | ||
28 | } | ||
diff --git a/flakes/mypackages/overlays/databases/postgresql/default.nix b/flakes/mypackages/overlays/databases/postgresql/default.nix new file mode 100644 index 0000000..9ada29c --- /dev/null +++ b/flakes/mypackages/overlays/databases/postgresql/default.nix | |||
@@ -0,0 +1,8 @@ | |||
1 | self: super: rec { | ||
2 | postgresql_pam = super.postgresql_11.overrideAttrs(old: { | ||
3 | # datadir in /var/lib/postgresql is named after psqlSchema | ||
4 | passthru = old.passthru // { psqlSchema = "11.0"; }; | ||
5 | configureFlags = old.configureFlags ++ [ "--with-pam" ]; | ||
6 | buildInputs = (old.buildInputs or []) ++ [ self.pam ]; | ||
7 | }); | ||
8 | } | ||
diff --git a/flakes/mypackages/overlays/default.nix b/flakes/mypackages/overlays/default.nix new file mode 100644 index 0000000..e91d6a1 --- /dev/null +++ b/flakes/mypackages/overlays/default.nix | |||
@@ -0,0 +1,25 @@ | |||
1 | { sources, mylibs }: | ||
2 | { | ||
3 | mylibs = self: super: { inherit mylibs; }; | ||
4 | mypkgs = final: prev: import ../pkgs/default.nix { pkgs = final; inherit mylibs sources; }; | ||
5 | |||
6 | bitlbee = import ./bitlbee; | ||
7 | bitlbee-discord = import ./bitlbee-discord; | ||
8 | gitweb = import ./gitweb; | ||
9 | gitolite = import ./gitolite; | ||
10 | goaccess = import ./goaccess; | ||
11 | kanboard = import ./kanboard; | ||
12 | mysql = import ./databases/mysql; | ||
13 | postfix = import ./postfix; | ||
14 | postgresql = import ./databases/postgresql; | ||
15 | ympd = import ./ympd; | ||
16 | morph = import ./morph; | ||
17 | cron = self: super: { | ||
18 | cron = super.cron.overrideAttrs(old: { | ||
19 | # Allow "+" char in MAILTO | ||
20 | patchPhase = '' | ||
21 | sed -i -e "/static const char safe_delim/s/@/@+/" do_command.c | ||
22 | ''; | ||
23 | }); | ||
24 | }; | ||
25 | } | ||
diff --git a/flakes/mypackages/overlays/gitolite/default.nix b/flakes/mypackages/overlays/gitolite/default.nix new file mode 100644 index 0000000..7f8f007 --- /dev/null +++ b/flakes/mypackages/overlays/gitolite/default.nix | |||
@@ -0,0 +1,8 @@ | |||
1 | self: super: { | ||
2 | gitolite = super.gitolite.overrideAttrs(old: { | ||
3 | postPatch = old.postPatch + '' | ||
4 | sed -i -e "s@/bin/rm@rm@" src/commands/sskm | ||
5 | cp ${./invite} src/commands/invite | ||
6 | ''; | ||
7 | }); | ||
8 | } | ||
diff --git a/flakes/mypackages/overlays/gitolite/invite b/flakes/mypackages/overlays/gitolite/invite new file mode 100755 index 0000000..3cc2dbd --- /dev/null +++ b/flakes/mypackages/overlays/gitolite/invite | |||
@@ -0,0 +1,172 @@ | |||
1 | #!/usr/bin/perl | ||
2 | use strict; | ||
3 | use warnings; | ||
4 | |||
5 | use lib $ENV{GL_LIBDIR}; | ||
6 | use Gitolite::Rc; | ||
7 | use Gitolite::Common; | ||
8 | |||
9 | =for usage | ||
10 | Please see usage at https://www.immae.eu/docs/forge-logicielle/gitolite.html#inviter-des-collaborateurs | ||
11 | =cut | ||
12 | |||
13 | usage() if @ARGV and ($ARGV[0] eq '-h' or $ARGV[0] eq '--help'); | ||
14 | |||
15 | my $rb = $rc{GL_REPO_BASE}; | ||
16 | my $ab = $rc{GL_ADMIN_BASE}; | ||
17 | # get to the keydir | ||
18 | _chdir("$ab/keydir"); | ||
19 | |||
20 | # save arguments for later | ||
21 | my $operation = shift || 'list'; | ||
22 | my $invitekeyid = shift || ''; | ||
23 | $invitekeyid and $invitekeyid !~ /^[-0-9a-z_]+@[-0-9a-z_]+$/i and die "invalid keyid $invitekeyid\n"; | ||
24 | my ($invited, $keyid) = split /@/, $invitekeyid; | ||
25 | |||
26 | # get the actual userid and keytype | ||
27 | my $gl_user = $ENV{GL_USER}; | ||
28 | die "This function is reserved for actual users" if $gl_user =~ s/-invite-(.*)$//; | ||
29 | |||
30 | # ---- | ||
31 | # first collect the keys | ||
32 | |||
33 | my ( @invited_keys ); | ||
34 | |||
35 | for my $pubkey (`find . -type f -name "*.pub" | sort`) { | ||
36 | chomp($pubkey); | ||
37 | $pubkey =~ s(^./)(); # artifact of the find command | ||
38 | |||
39 | my $user = $pubkey; | ||
40 | $user =~ s(.*/)(); # foo/bar/baz.pub -> baz.pub | ||
41 | $user =~ s/(\@[^.]+)?\.pub$//; # baz.pub, baz@home.pub -> baz | ||
42 | |||
43 | if ( $user =~ m(^(zzz-marked-for-...-)?$gl_user-invite-) ) { | ||
44 | push @invited_keys, $pubkey; | ||
45 | } | ||
46 | } | ||
47 | |||
48 | # ---- | ||
49 | # list mode; just do it and exit | ||
50 | sub print_keylist { | ||
51 | my ( $message, @list ) = @_; | ||
52 | return unless @list; | ||
53 | print "== $message ==\n"; | ||
54 | my $count = 1; | ||
55 | for (@list) { | ||
56 | my $fp = fingerprint($_); | ||
57 | s/(zzz-marked-for-...-)?$gl_user-invite-//g; | ||
58 | s/\.pub$//; | ||
59 | s(.*/)(); | ||
60 | print $count++ . ": $fp : $_\n"; | ||
61 | } | ||
62 | } | ||
63 | if ( $operation eq 'list' ) { | ||
64 | print "you have the following invited keys:\n"; | ||
65 | print_keylist( "keys for invited persons", @invited_keys ); | ||
66 | print "\n\n"; | ||
67 | exit; | ||
68 | } | ||
69 | |||
70 | # ---- | ||
71 | # please see docs for details on how a user interacts with this | ||
72 | |||
73 | die "valid operations: add, del\n" unless $operation =~ /^(add|del)$/; | ||
74 | |||
75 | if ( $operation eq 'add' ) { | ||
76 | print STDERR "please supply the new key on STDIN. (I recommend you | ||
77 | don't try to do this interactively, but use a pipe)\n"; | ||
78 | kf_add( $gl_user, $invited, $keyid, safe_stdin() ); | ||
79 | } elsif ( $operation eq 'del' ) { | ||
80 | kf_del( $gl_user, $invited, $keyid ); | ||
81 | } | ||
82 | |||
83 | exit; | ||
84 | |||
85 | # ---- | ||
86 | |||
87 | # make a temp clone and switch to it | ||
88 | our $TEMPDIR; | ||
89 | BEGIN { $TEMPDIR = `mktemp -d -t tmp.XXXXXXXXXX`; } | ||
90 | END { `rm -rf $TEMPDIR`; } | ||
91 | |||
92 | sub cd_temp_clone { | ||
93 | chomp($TEMPDIR); | ||
94 | hushed_git( "clone", "$rb/gitolite-admin.git", "$TEMPDIR" ); | ||
95 | chdir($TEMPDIR); | ||
96 | my $hostname = `hostname`; chomp($hostname); | ||
97 | hushed_git( "config", "--get", "user.email" ) and hushed_git( "config", "user.email", $ENV{USER} . "@" . $hostname ); | ||
98 | hushed_git( "config", "--get", "user.name" ) and hushed_git( "config", "user.name", "$ENV{USER} on $hostname" ); | ||
99 | } | ||
100 | |||
101 | sub fingerprint { | ||
102 | my ($fp, $output) = ssh_fingerprint_file(shift); | ||
103 | # Do not print the output of $output to an untrusted destination. | ||
104 | die "does not seem to be a valid pubkey\n" unless $fp; | ||
105 | return $fp; | ||
106 | } | ||
107 | |||
108 | sub safe_stdin { | ||
109 | # read one line from STDIN | ||
110 | my $data; | ||
111 | my $ret = read STDIN, $data, 4096; | ||
112 | # current pubkeys are approx 400 bytes so we go a little overboard | ||
113 | die "could not read pubkey data" . ( defined($ret) ? "" : ": $!" ) . "\n" unless $ret; | ||
114 | die "pubkey data seems to have more than one line\n" if $data =~ /\n./; | ||
115 | return $data; | ||
116 | } | ||
117 | |||
118 | sub hushed_git { | ||
119 | local (*STDOUT) = \*STDOUT; | ||
120 | local (*STDERR) = \*STDERR; | ||
121 | open( STDOUT, ">", "/dev/null" ); | ||
122 | open( STDERR, ">", "/dev/null" ); | ||
123 | system( "git", @_ ); | ||
124 | } | ||
125 | |||
126 | sub highlander { | ||
127 | # there can be only one | ||
128 | my ( $keyid, $die_if_empty, @a ) = @_; | ||
129 | # too many? | ||
130 | if ( @a > 1 ) { | ||
131 | print STDERR " | ||
132 | more than one key satisfies this condition, and I can't deal with that! | ||
133 | The keys are: | ||
134 | |||
135 | "; | ||
136 | print STDERR "\t" . join( "\n\t", @a ), "\n\n"; | ||
137 | exit 1; | ||
138 | } | ||
139 | # too few? | ||
140 | die "no keys with " . ( $keyid || "empty" ) . " keyid found\n" if $die_if_empty and not @a; | ||
141 | |||
142 | return @a; | ||
143 | } | ||
144 | |||
145 | sub kf_add { | ||
146 | my ( $gl_user, $invited, $keyid, $keymaterial ) = @_; | ||
147 | |||
148 | # add a new "invited" key for $gl_user. | ||
149 | cd_temp_clone(); | ||
150 | chdir("keydir"); | ||
151 | |||
152 | mkdir("invited"); | ||
153 | _print( "invited/$gl_user-invite-$invited\@$keyid.pub", $keymaterial ); | ||
154 | hushed_git( "add", "." ) and die "git add failed\n"; | ||
155 | my $fp = fingerprint("invited/$gl_user-invite-$invited\@$keyid.pub"); | ||
156 | hushed_git( "commit", "-m", "invite add $gl_user-invite-$invited\@$keyid ($fp)" ) and die "git commit failed\n"; | ||
157 | system("gitolite push >/dev/null 2>/dev/null") and die "git push failed\n"; | ||
158 | } | ||
159 | |||
160 | sub kf_del { | ||
161 | my ( $gl_user, $invited, $keyid ) = @_; | ||
162 | |||
163 | cd_temp_clone(); | ||
164 | chdir("keydir"); | ||
165 | |||
166 | my @pk = highlander( $keyid, 1, grep { m(^(.*/)?(zzz-marked-for-...-)?$gl_user-invite-$invited\@$keyid.pub$) } @invited_keys ); | ||
167 | |||
168 | my $fp = fingerprint( $pk[0] ); | ||
169 | hushed_git( "rm", $pk[0]) and die "git mv failed\n"; | ||
170 | hushed_git( "commit", "-m", "invite del $pk[0] ($fp)" ) and die "git commit failed\n"; | ||
171 | system("gitolite push >/dev/null 2>/dev/null") and die "git push failed\n"; | ||
172 | } | ||
diff --git a/flakes/mypackages/overlays/gitweb/default.nix b/flakes/mypackages/overlays/gitweb/default.nix new file mode 100644 index 0000000..27a1152 --- /dev/null +++ b/flakes/mypackages/overlays/gitweb/default.nix | |||
@@ -0,0 +1,7 @@ | |||
1 | self: super: { | ||
2 | gitweb = super.gitweb.overrideAttrs(old: { | ||
3 | postBuild = old.postBuild or "" + '' | ||
4 | cp -r ${./theme} $out/gitweb-theme; | ||
5 | ''; | ||
6 | }); | ||
7 | } | ||
diff --git a/flakes/mypackages/overlays/gitweb/theme/git-favicon.png b/flakes/mypackages/overlays/gitweb/theme/git-favicon.png new file mode 100644 index 0000000..4fa44bb --- /dev/null +++ b/flakes/mypackages/overlays/gitweb/theme/git-favicon.png | |||
Binary files differ | |||
diff --git a/flakes/mypackages/overlays/gitweb/theme/git-logo.png b/flakes/mypackages/overlays/gitweb/theme/git-logo.png new file mode 100644 index 0000000..fdaf7b7 --- /dev/null +++ b/flakes/mypackages/overlays/gitweb/theme/git-logo.png | |||
Binary files differ | |||
diff --git a/flakes/mypackages/overlays/gitweb/theme/gitweb.css b/flakes/mypackages/overlays/gitweb/theme/gitweb.css new file mode 100644 index 0000000..83e0742 --- /dev/null +++ b/flakes/mypackages/overlays/gitweb/theme/gitweb.css | |||
@@ -0,0 +1,783 @@ | |||
1 | /* Reset | ||
2 | ------------------------------------------------------------------------- */ | ||
3 | |||
4 | /* Based on http://meyerweb.com/eric/tools/css/reset/ */ | ||
5 | /* v1.0 | 20080212 */ | ||
6 | |||
7 | html, body, div, span, applet, object, iframe, h1, h2, h3, h4, h5, h6, p, | ||
8 | blockquote, pre, a, abbr, acronym, address, big, cite, code, del, dfn, em, | ||
9 | font, img, ins, kbd, q, s, samp, small, strike, strong, sub, sup, tt, var, b, | ||
10 | u, i, center, dl, dt, dd, ol, ul, li, fieldset, form, label, legend, table, | ||
11 | caption, tbody, tfoot, thead, tr, th, td { | ||
12 | margin: 0; | ||
13 | padding: 0; | ||
14 | border: 0; | ||
15 | outline: 0; | ||
16 | font-size: 100%; | ||
17 | vertical-align: baseline; | ||
18 | background: transparent; | ||
19 | } | ||
20 | |||
21 | ol, ul { list-style: none; } | ||
22 | |||
23 | blockquote, q { quotes: none; } | ||
24 | |||
25 | blockquote:before, blockquote:after, | ||
26 | q:before, q:after { | ||
27 | content: ''; | ||
28 | content: none; | ||
29 | } | ||
30 | |||
31 | :focus { outline: 0; } | ||
32 | |||
33 | ins { text-decoration: none; } | ||
34 | |||
35 | del { text-decoration: line-through; } | ||
36 | |||
37 | table { | ||
38 | border-collapse: collapse; | ||
39 | border-spacing: 0; | ||
40 | } | ||
41 | |||
42 | a { outline: none; } | ||
43 | |||
44 | /* General | ||
45 | ---------------------------------------------------------------------------- */ | ||
46 | |||
47 | html { | ||
48 | position: relative; | ||
49 | min-height: 100%; | ||
50 | } | ||
51 | |||
52 | body { | ||
53 | font: 13px Helvetica,arial,freesans,clean,sans-serif; | ||
54 | line-height: 1.4; | ||
55 | margin: 0 0 105px; | ||
56 | background-color: #fff; | ||
57 | color: #000000; | ||
58 | } | ||
59 | |||
60 | /* Monospaced Fonts */ | ||
61 | .sha1, .mode, .diff_tree .list, .pre, .diff, .patchset { | ||
62 | font-family: 'Consolas','Bitstream Vera Sans Mono',monospace; | ||
63 | } | ||
64 | |||
65 | a:link, a:visited { | ||
66 | color: #4183C4; | ||
67 | text-decoration: none; | ||
68 | } | ||
69 | |||
70 | a:hover { | ||
71 | text-decoration: underline; | ||
72 | } | ||
73 | |||
74 | td.list a[href*='tree'], td.list a[href*='blob'] { | ||
75 | padding-left: 20px; | ||
76 | display: block; | ||
77 | float: left; | ||
78 | height: 16px; | ||
79 | line-height: 16px; | ||
80 | } | ||
81 | |||
82 | td.list a[href*='tree'] { | ||
83 | background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAABq0lEQVQ4y8WTu4oUQRSGv+rtGVuxhwVFdFEEE2c3d0HYTEMTn8DEVxADQTDUF9DMwMxQMBMx8AEWzRQ3cBHd9TI91+2urjq/QbczY2IygSep4nD+79yqnCRWsYQVbWVACvDh5ZXdrLe15dwyT1TjT/sxFFeB6i+VA2B6+cb7kAI4Jf0LO087zjlQI8Y5Qvnj0sHug321XoC1bk+K9eHk6+s7wPMUgKAS88eqb4+Jfg2SHs7lZBvX2Nh+2EUCDGSAcMnJsx9f7NxfAGqXyDzRd5EJO/pMPT1gcviGTnYOVIN5pAAE8v7dLrKL8xnglFk4ws9Afko9HpH3b5Gd2mwb/lOBmgrSdYhJugDUCenxM6xv3p4HCsP8F0LxCsUhCkMURihOyM7fg0osASTFEpu9a4LjGIUCqwcoDiEUrX+E4hRUQb20RiokC1j9vckUhygU7X3QZh7NAVKYL7YBeMkRUfjVCotF2XGIwnghtrJpMywB5G0QZj9P1JNujuWJ1AHLQadRrACPkuZ0SSSWpeStWgDK6tHek5vbiOs48n++XQHurcf0rFng//6NvwG+iB9/4duaTgAAAABJRU5ErkJgggo=) center left no-repeat; | ||
84 | } | ||
85 | |||
86 | td.list a[href*='blob'] { | ||
87 | background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAQAAAC1+jfqAAAA6ElEQVQoFQXBMW5TQRgGwNnHnoE0QbiCjoIooUmTU3AuS1BwIoTSUdJBigg3GCWOg9/++zHTop078wIAsPMrE4SL5/1aIyMjIyMjz/m0tbFECFdrPeaQQw75mz/5nZH7fN7aWILmauSYfznmmIfss8vIUx7zZWsTTXM5vpWvTk5Wq9VHQP/gtgOLa0Qpw940vAQdaG6thpOhlOkG0AEuAVGmEkAH+G4YSikxXQM6wDsAMRFAB/ihDNNUmN4DOsAbBAEAdICfpmmaAt4COoj2GgCASbIkZh1NAACznhQt2itnFgAAlF3u/gMDtJXPzQxoswAAAABJRU5ErkJgggo=) center left no-repeat; | ||
88 | } | ||
89 | |||
90 | i { | ||
91 | font-style: normal; | ||
92 | } | ||
93 | |||
94 | td, th { | ||
95 | padding: 5px; | ||
96 | } | ||
97 | |||
98 | .page_nav br { | ||
99 | display: none; | ||
100 | } | ||
101 | |||
102 | /* Page Header | ||
103 | ---------------------------------------------------------------------------- */ | ||
104 | |||
105 | .page_header { | ||
106 | height: 50px; | ||
107 | line-height: 50px; | ||
108 | position: relative; | ||
109 | padding: 0 27px; | ||
110 | margin-bottom: 20px; | ||
111 | font-size: 20px; | ||
112 | font-family: Helvetica, Arial, Freesans, Clean, sans-serif; | ||
113 | background: #FFFFFF; /* old browsers */ | ||
114 | background: -moz-linear-gradient(top, #FFFFFF 0%, #F5F5F5 100%); /* firefox */ | ||
115 | background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#FFFFFF), color-stop(100%,#F5F5F5)); /* webkit */ | ||
116 | filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#FFFFFF', endColorstr='#F5F5F5',GradientType=0 ); /* ie */ | ||
117 | background: -o-linear-gradient(top, #FFFFFF 0%, #F5F5F5 100%); | ||
118 | border-bottom: 1px solid #dfdfdf; | ||
119 | } | ||
120 | |||
121 | .page_header a:link, .page_header a:visited { | ||
122 | color: #4183C4; | ||
123 | text-decoration: none; | ||
124 | padding: 3px; | ||
125 | font-weight: bold; | ||
126 | } | ||
127 | |||
128 | .page_header a:hover { | ||
129 | font-weight: bold; | ||
130 | padding: 3px; | ||
131 | text-decoration: underline; | ||
132 | } | ||
133 | |||
134 | .page_header a:first-child { | ||
135 | background: transparent; | ||
136 | } | ||
137 | |||
138 | .page_header img.logo { | ||
139 | position: relative; | ||
140 | top: 7px; | ||
141 | margin-right: 5px; | ||
142 | } | ||
143 | |||
144 | /* Page Footer | ||
145 | ---------------------------------------------------------------------------- */ | ||
146 | |||
147 | .page_footer { | ||
148 | position: absolute; | ||
149 | left: 0; | ||
150 | bottom: 0; | ||
151 | width: 100%; | ||
152 | height: 80px; | ||
153 | line-height: 80px; | ||
154 | margin-top: 15px; | ||
155 | background: #f1f1f1; | ||
156 | border-top: 2px solid #ddd; | ||
157 | border-bottom: 1px solid #ddd; | ||
158 | } | ||
159 | |||
160 | .page_footer_text { | ||
161 | color: #666; | ||
162 | display: inline; | ||
163 | float: left; | ||
164 | margin-left: 25px; | ||
165 | width: 80%; | ||
166 | overflow: hidden; | ||
167 | white-space: nowrap; | ||
168 | text-overflow: ellipsis; | ||
169 | } | ||
170 | |||
171 | a.rss_logo { | ||
172 | float: right; | ||
173 | padding: 3px 1px; | ||
174 | width: 35px; | ||
175 | line-height: 10px; | ||
176 | border: 1px solid; | ||
177 | border-color: #fcc7a5 #7d3302 #3e1a01 #ff954e; | ||
178 | color: #ffffff; | ||
179 | background-color: #ff6600; | ||
180 | font-weight: bold; | ||
181 | font-family: sans-serif; | ||
182 | font-size: 80%; | ||
183 | text-align: center; | ||
184 | text-decoration: none; | ||
185 | margin-top: 30px; | ||
186 | margin-left: 5px; | ||
187 | } | ||
188 | |||
189 | a.rss_logo:hover { | ||
190 | background-color: #ee5500; | ||
191 | } | ||
192 | |||
193 | .rss_logo { | ||
194 | margin-right: 25px; | ||
195 | background: yellow; | ||
196 | } | ||
197 | |||
198 | .rss_logo:last-child { | ||
199 | margin-right: 5px; | ||
200 | } | ||
201 | |||
202 | /* Index include | ||
203 | ---------------------------------------------------------------------------- */ | ||
204 | |||
205 | .index_include { | ||
206 | width: 95%; | ||
207 | margin: 0 auto 15px; | ||
208 | background: -moz-linear-gradient(center top , #FFFFFF 0%, #F5F5F5 100%) repeat scroll 0 0 transparent; | ||
209 | border: 1px solid #DFDFDF; | ||
210 | padding: 8px; | ||
211 | -webkit-box-sizing: border-box; | ||
212 | -moz-box-sizing: border-box; | ||
213 | box-sizing: border-box; | ||
214 | } | ||
215 | |||
216 | /* Elements | ||
217 | ---------------------------------------------------------------------------- */ | ||
218 | |||
219 | .project_list, | ||
220 | .shortlog, | ||
221 | .tree, | ||
222 | .commit_search, | ||
223 | .history { | ||
224 | width: 95%; | ||
225 | margin: 0 auto 15px auto; | ||
226 | border: 1px solid #d8d8d8; | ||
227 | -moz-box-shadow: 0 0 3px rgba(0,0,0,0.2); | ||
228 | -webkit-box-shadow: 0 0 3px rgba(0,0,0,0.2); | ||
229 | box-shadow: 0 0 3px rgba(0,0,0,0.2); | ||
230 | } | ||
231 | |||
232 | .project_list th, | ||
233 | .shortlog th, | ||
234 | .tree th, | ||
235 | .commit_search th { | ||
236 | color: #afafaf; | ||
237 | font-weight: normal; | ||
238 | } | ||
239 | |||
240 | .project_list th { | ||
241 | font-weight: bold; | ||
242 | } | ||
243 | |||
244 | .project_list tr, | ||
245 | .shortlog tr, | ||
246 | .tree tr, | ||
247 | .commit_search tr { | ||
248 | background: #eaeaea; | ||
249 | height: 2.5em; | ||
250 | text-align: left; | ||
251 | color: #545454; | ||
252 | } | ||
253 | |||
254 | .project_list tr.dark, .project_list tr.light, | ||
255 | .shortlog tr.dark, .shortlog tr.light, | ||
256 | .tree tr.dark, .tree tr.light, | ||
257 | .commit_search tr.dark, .commit_search tr.light, | ||
258 | .history tr.dark, .history tr.light, | ||
259 | .heads tr.dark, .heads tr.light { | ||
260 | background: #F9F9F9; /* old browsers */ | ||
261 | background: -moz-linear-gradient(top, #F9F9F9 0%, #EFEFEF 100%); /* firefox */ | ||
262 | background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#F9F9F9), color-stop(100%,#EFEFEF)); /* webkit */ | ||
263 | filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#F9F9F9', endColorstr='#EFEFEF',GradientType=0 ); /* ie */ | ||
264 | background: -o-linear-gradient(top, #F9F9F9 0%, #EFEFEF 100%); | ||
265 | height: 2.5em; | ||
266 | border-bottom: 1px solid #e1e1e1; | ||
267 | } | ||
268 | |||
269 | th .header { | ||
270 | background: transparent; | ||
271 | border: 0; | ||
272 | padding: 0; | ||
273 | font-weight: bold; | ||
274 | } | ||
275 | |||
276 | .tree { | ||
277 | width: 100%; | ||
278 | margin: 0; | ||
279 | } | ||
280 | |||
281 | .projsearch { | ||
282 | position: absolute; | ||
283 | right: 4%; | ||
284 | top: 15px; | ||
285 | } | ||
286 | |||
287 | .projsearch a { | ||
288 | display: none; | ||
289 | } | ||
290 | |||
291 | .commit_search { | ||
292 | background: #eaeaea; | ||
293 | } | ||
294 | |||
295 | .page_nav, | ||
296 | .list_head, | ||
297 | .page_path, | ||
298 | .search { | ||
299 | width: 94%; | ||
300 | background: #eaeaea; | ||
301 | color: #545454; | ||
302 | border: 1px solid #d8d8d8; | ||
303 | padding: 5px; | ||
304 | margin: 0 auto 15px auto; | ||
305 | } | ||
306 | |||
307 | .history { | ||
308 | background: #eaeaea; | ||
309 | } | ||
310 | |||
311 | .title { | ||
312 | margin: 0 auto 15px auto; | ||
313 | padding: 5px; | ||
314 | width: 95%; | ||
315 | } | ||
316 | |||
317 | .readme { | ||
318 | background: #eaf2f5; | ||
319 | border: 1px solid #bedce7; | ||
320 | -moz-box-sizing: border-box; | ||
321 | -webkit-box-sizing: border-box; | ||
322 | box-sizing: border-box; | ||
323 | margin: 0 auto 15px auto; | ||
324 | padding: 15px; | ||
325 | width: 95%; | ||
326 | } | ||
327 | |||
328 | .readme h1 { | ||
329 | display: block; | ||
330 | font-size: 2em; | ||
331 | font-weight: bold; | ||
332 | margin-bottom: 0.67em; | ||
333 | margin-top: 0; | ||
334 | } | ||
335 | |||
336 | .readme h2 { | ||
337 | font-size: 1.5em; | ||
338 | font-weight: bold; | ||
339 | margin-bottom: 0.83em; | ||
340 | } | ||
341 | |||
342 | |||
343 | .readme h3 { | ||
344 | font-size: 1.17em; | ||
345 | font-weight: bold; | ||
346 | margin-bottom: 1em; | ||
347 | } | ||
348 | |||
349 | .readme p { | ||
350 | margin-bottom: 1em; | ||
351 | } | ||
352 | |||
353 | .readme ul { | ||
354 | list-style: disc; | ||
355 | margin-bottom: 1em; | ||
356 | margin-left: 1.5em; | ||
357 | } | ||
358 | |||
359 | .readme ul ul { | ||
360 | margin-bottom: 0; | ||
361 | } | ||
362 | |||
363 | .readme ol { | ||
364 | list-style: decimal; | ||
365 | margin-bottom: 1em; | ||
366 | margin-left: 1.5em; | ||
367 | } | ||
368 | |||
369 | .readme ol ol { | ||
370 | margin-bottom: 0; | ||
371 | } | ||
372 | |||
373 | .readme pre { | ||
374 | font-family: monospace; | ||
375 | margin: 1em 0; | ||
376 | white-space: pre; | ||
377 | } | ||
378 | |||
379 | .readme tt, .readme code, .readme kbd, .readme samp { | ||
380 | font-family: monospace; | ||
381 | } | ||
382 | |||
383 | .readme blockquote { | ||
384 | margin: 1em; | ||
385 | } | ||
386 | |||
387 | .projects_list, | ||
388 | .tags { | ||
389 | width: 95%; | ||
390 | background: #f0f0f0; | ||
391 | color: #545454; | ||
392 | border: 1px solid #d8d8d8; | ||
393 | padding: 5px; | ||
394 | margin: 0 auto 15px auto; | ||
395 | } | ||
396 | |||
397 | .heads { | ||
398 | width: 95%; | ||
399 | color: #545454; | ||
400 | border: 1px solid #d8d8d8; | ||
401 | padding: 5px; | ||
402 | margin: 0 auto 15px auto; | ||
403 | } | ||
404 | |||
405 | .header { | ||
406 | width: 94%; | ||
407 | margin: 0 auto 15px auto; | ||
408 | background: #eaf2f5; | ||
409 | border: 1px solid #bedce7; | ||
410 | padding: 5px; | ||
411 | } | ||
412 | |||
413 | .header .age { | ||
414 | float: left; | ||
415 | color: #000; | ||
416 | font-weight: bold; | ||
417 | width: 10em; | ||
418 | } | ||
419 | |||
420 | .title_text { | ||
421 | width: 94%; | ||
422 | background: #eaf2f5; | ||
423 | border: 1px solid #bedce7; | ||
424 | padding: 5px; | ||
425 | margin: 0 auto 0 auto; | ||
426 | } | ||
427 | |||
428 | .log_body { | ||
429 | width: 94%; | ||
430 | background: #eaf2f5; | ||
431 | border: 1px solid #bedce7; | ||
432 | border-top: 0; | ||
433 | padding: 5px; | ||
434 | margin: 0 auto 15px auto; | ||
435 | } | ||
436 | |||
437 | .page_body { | ||
438 | line-height: 1.4em; | ||
439 | width: 94%; | ||
440 | background: #f8f8f8; | ||
441 | border: 1px solid #d8d8d8; | ||
442 | padding: 5px; | ||
443 | margin: 15px auto 15px auto; | ||
444 | } | ||
445 | |||
446 | .diff_tree { | ||
447 | width: 95%; | ||
448 | background: #f0f0f0; | ||
449 | border: 1px solid #d8d8d8; | ||
450 | padding: 5px; | ||
451 | margin: 0 auto 15px auto; | ||
452 | } | ||
453 | |||
454 | .page_body > .list_head { | ||
455 | width: 98.5%; | ||
456 | } | ||
457 | |||
458 | .page_body > .diff_tree { | ||
459 | width: 99.5%; | ||
460 | } | ||
461 | |||
462 | .patch > .header { | ||
463 | width: 99%; | ||
464 | } | ||
465 | |||
466 | .author .avatar, | ||
467 | .author_date .avatar { | ||
468 | position: relative; | ||
469 | top: 3px; | ||
470 | } | ||
471 | |||
472 | .object_header .avatar { | ||
473 | border: 1px solid #D8D8D8; | ||
474 | float: right; | ||
475 | } | ||
476 | |||
477 | .object_header td, | ||
478 | .object_header th { | ||
479 | vertical-align: top; | ||
480 | } | ||
481 | |||
482 | /* Refs | ||
483 | ---------------------------------------------------------------------------- */ | ||
484 | |||
485 | span.refs span { | ||
486 | color: #707070; | ||
487 | display: inline-block; | ||
488 | margin: 0; | ||
489 | background-color: #eee; | ||
490 | border: 1px solid #ccc; | ||
491 | border-radius: 3px; | ||
492 | height: 18px; | ||
493 | padding: 0 6px; | ||
494 | text-overflow: ellipsis; | ||
495 | } | ||
496 | |||
497 | span.refs span.ref { | ||
498 | color: #707070; | ||
499 | display: inline-block; | ||
500 | margin: 0; | ||
501 | background-color: #c4c4ff; | ||
502 | border: 1px solid #7878ff; | ||
503 | border-radius: 3px; | ||
504 | height: 18px; | ||
505 | padding: 0 6px; | ||
506 | text-overflow: ellipsis; | ||
507 | background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAASCAMAAABhEH5lAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH3gIKFSUnpolg7AAAAHJQTFRFAAAAVVWqZmbMVVXVYGDgbW3td3fuc3PzdHT0cHD1d3f6dHT6dnb7dHT7dnb8dnb8dnb9d3f9dnb+eHj+d3f+eHj+d3f+d3f+d3f+eHj+d3f+eHj+d3f+eHj+d3f+d3f+eHj+d3f+d3f+d3f+eHj/////V9oQhQAAACR0Uk5TAAIEBQcNDhMVGCotNTZAT217i5CgobvExtjZ4eLr7vP09ff7uqQ6cgAAAAFiS0dEJcMByQ8AAABUSURBVBjTpc43AoAwDENRh95bgNBM1f3PyOpslD++RSJ61YgH5M2IbIkn4GocSR1MZVBL4t2n4FgkbaxI8Sqph041WknZCWAIrcmEUbpf3lNe0N9u59YFYHnZ78gAAAAASUVORK5CYII=); | ||
508 | background-repeat: no-repeat; | ||
509 | padding-left: 18px; | ||
510 | } | ||
511 | |||
512 | span.refs span.tag { | ||
513 | color: #707070; | ||
514 | display: inline-block; | ||
515 | margin: 0; | ||
516 | background-color: #ffffab; | ||
517 | border: 1px solid #d9d93b; | ||
518 | border-radius: 3px; | ||
519 | height: 18px; | ||
520 | padding: 0 6px; | ||
521 | text-overflow: ellipsis; | ||
522 | background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAASCAMAAABhEH5lAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH3gIKFSUZZ+h9RwAAAGZQTFRFAAAAtrYkwMBAwMBAx8c4yso11NQ71NQ51dU52Ng71tY519c719c719c62Ng719c719c62Ng72dk62Ng62Ng72Ng72dk62Ng72Ng62dk62dk72dk62Ng62dk72Ng72Ng72dk7////ou/AnQAAACB0Uk5TAAYHCxESLjRCWWlqa4uNkpissbrO19jc3ufs8vf6/f7atAU2AAAAAWJLR0QhxGwNFgAAAF1JREFUGFeNy0cOgCAABVGw94rY5d//lC7omhhn+ZIh5Gf1xPk0Zi5dAABROIQjSU/fsAXhDkCUljAv8jW2wlQpaixpo4Nj+dtatVpjkSJjLNaizRVpvhBCu/4h391jzw1lU12Z7wAAAABJRU5ErkJggg==); | ||
523 | background-repeat: no-repeat; | ||
524 | padding-left: 18px; | ||
525 | } | ||
526 | |||
527 | span.refs span.head { | ||
528 | color: #707070; | ||
529 | display: inline-block; | ||
530 | margin: 0; | ||
531 | background-color: #c4ffc4; | ||
532 | border: 1px solid #78ff78; | ||
533 | border-radius: 3px; | ||
534 | height: 18px; | ||
535 | padding: 0 6px; | ||
536 | text-overflow: ellipsis; | ||
537 | background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAASCAYAAABWzo5XAAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH3gIKFSYDsafX/gAAAUpJREFUOMvVkjFLA0EQhd/s7l06MSCihbV/wC5/QBDEIFYWprRIIQQJFqKFQi4kUbBQsFSwtrUQLQULUTBFLCzVIgimCXe7z0q5yIWcqfRVwzDzMTNvgL8mSUqWw3JOtFQJdsIwLDYyjdYgkEmkazl2oVtQWk36nn8AYBYASmFpxmizGtnoqO7Vb+M9KglEkASdpWU872nvVCiPRpuTnz2JIHGyqX3d0kZfR1G0Ht+g/do+FIhOBbLW3n/FNb/28D0puZ+dyL44ur1UoH5yzt2JyIj6UGdDgwrPhYzSagNEszJaeU/lWlylbmnaeGZZICsAppxzi6nt73HK85oQCMknOuarpno+FIjglVjZDXaCS2yDv3rIHlCb88FY0BlUl3hs7ektkhckb5DFWhoz+n12zr7ZPLpYUqLm0oBMn8NUzLhpAgjpWMS/1CcSJ3ykD7Rk1QAAAABJRU5ErkJggg==); | ||
538 | background-repeat: no-repeat; | ||
539 | padding-left: 18px; | ||
540 | } | ||
541 | |||
542 | span.refs a { | ||
543 | color: #4e4e4e; | ||
544 | font: 11px "Bitstream Vera Sans Mono", "DejaVu Sans Mono", Monaco, monospace; | ||
545 | line-height: 18px; | ||
546 | } | ||
547 | |||
548 | /* Diffs | ||
549 | ---------------------------------------------------------------------------- */ | ||
550 | |||
551 | div.diff.to_file a.path, | ||
552 | div.diff.to_file { | ||
553 | color: #007000; | ||
554 | } | ||
555 | |||
556 | div.diff.from_file a.path, | ||
557 | div.diff.from_file { | ||
558 | color: #aa0000; | ||
559 | } | ||
560 | |||
561 | .patch .header { | ||
562 | margin: 0; | ||
563 | } | ||
564 | |||
565 | .patchset { | ||
566 | overflow-x: auto; | ||
567 | overflow-y: hidden; | ||
568 | } | ||
569 | |||
570 | .chunk_header { | ||
571 | background: #eaf2f5; | ||
572 | color: #999; | ||
573 | } | ||
574 | |||
575 | .rem { | ||
576 | background: #ffdddd; | ||
577 | } | ||
578 | .rem .marked { | ||
579 | background: #ffaaaa; | ||
580 | } | ||
581 | .add { | ||
582 | background: #ddffdd; | ||
583 | } | ||
584 | .add .marked { | ||
585 | background: #7dff7d; | ||
586 | } | ||
587 | |||
588 | .extended_header { | ||
589 | width: 99.5%; | ||
590 | } | ||
591 | |||
592 | div.chunk_block { | ||
593 | overflow: hidden; | ||
594 | } | ||
595 | |||
596 | div.chunk_block div.old { | ||
597 | float: left; | ||
598 | width: 50%; | ||
599 | overflow: hidden; | ||
600 | border-right: 5px solid #EAF2F5; | ||
601 | } | ||
602 | |||
603 | div.chunk_block.rem, | ||
604 | div.chunk_block.add { | ||
605 | background: transparent; | ||
606 | } | ||
607 | |||
608 | div.chunk_block div.old .add, | ||
609 | div.chunk_block div.old .rem { | ||
610 | padding-right: 3px; | ||
611 | } | ||
612 | |||
613 | div.chunk_block div.new .add, | ||
614 | div.chunk_block div.new .rem { | ||
615 | padding-left: 3px; | ||
616 | } | ||
617 | |||
618 | div.chunk_block div.new { | ||
619 | margin-left: 50%; | ||
620 | width: 50%; | ||
621 | border-left: 5px solid #EAF2F5; | ||
622 | } | ||
623 | |||
624 | /* Category | ||
625 | ---------------------------------------------------------------------------- */ | ||
626 | |||
627 | td.category { | ||
628 | background: #E6F1F6; /* old browsers */ | ||
629 | background: -moz-linear-gradient(top, #C8D8E7 0%, #E6F1F3 100%); /* firefox */ | ||
630 | background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#C8D8E7), color-stop(100%,#E6F1F3)); /* webkit */ | ||
631 | filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#C8D8E7', endColorstr='#E6F1F3',GradientType=0 ); /* ie */ | ||
632 | background: -o-linear-gradient(top, #C8D8E7 0%, #E6F1F3 100%); | ||
633 | font-weight: bold; | ||
634 | border-bottom: 1px solid #D1D1D1; | ||
635 | border-top: 1px solid #D1D1D1; | ||
636 | } | ||
637 | |||
638 | /* Age | ||
639 | ---------------------------------------------------------------------------- */ | ||
640 | |||
641 | /* noage: "No commits" */ | ||
642 | .project_list td.noage { | ||
643 | color: #cdcdcd; | ||
644 | } | ||
645 | |||
646 | /* age2: 60*60*24*2 <= age */ | ||
647 | .project_list td.age2, .blame td.age2 { | ||
648 | color: #545454; | ||
649 | } | ||
650 | |||
651 | /* age1: 60*60*2 <= age < 60*60*24*2 */ | ||
652 | .project_list td.age1 { | ||
653 | color: #009900; | ||
654 | } | ||
655 | |||
656 | /* age0: age < 60*60*2 */ | ||
657 | .project_list td.age0 { | ||
658 | color: #009900; | ||
659 | font-weight: bold; | ||
660 | } | ||
661 | |||
662 | /* File status | ||
663 | ---------------------------------------------------------------------------- */ | ||
664 | |||
665 | .diff_tree span.file_status.new { | ||
666 | color: #008000; | ||
667 | } | ||
668 | |||
669 | table.diff_tree span.file_status.deleted { | ||
670 | color: #c00000; | ||
671 | } | ||
672 | |||
673 | table.diff_tree span.file_status.moved, | ||
674 | table.diff_tree span.file_status.mode_chnge { | ||
675 | color: #545454; | ||
676 | } | ||
677 | |||
678 | table.diff_tree span.file_status.copied { | ||
679 | color: #70a070; | ||
680 | } | ||
681 | |||
682 | span.cntrl { | ||
683 | border: dashed #aaaaaa; | ||
684 | border-width: 1px; | ||
685 | padding: 0px 2px 0px 2px; | ||
686 | margin: 0px 2px 0px 2px; | ||
687 | } | ||
688 | |||
689 | span.match { | ||
690 | background: #aaffaa; | ||
691 | color: #000; | ||
692 | } | ||
693 | |||
694 | td.error { | ||
695 | color: red; | ||
696 | background: yellow; | ||
697 | } | ||
698 | |||
699 | /* blob view */ | ||
700 | |||
701 | td.pre, div.pre, div.diff { | ||
702 | white-space: pre-wrap; | ||
703 | } | ||
704 | |||
705 | /* JavaScript-based timezone manipulation */ | ||
706 | |||
707 | .popup { /* timezone selection UI */ | ||
708 | position: absolute; | ||
709 | /* "top: 0; right: 0;" would be better, if not for bugs in browsers */ | ||
710 | top: 0; left: 0; | ||
711 | border: 1px solid #d8d8d8; | ||
712 | padding: 2px; | ||
713 | background-color: #f0f0f0; | ||
714 | font-style: normal; | ||
715 | color: #545454; | ||
716 | cursor: auto; | ||
717 | } | ||
718 | |||
719 | .close-button { /* close timezone selection UI without selecting */ | ||
720 | /* float doesn't work within absolutely positioned container, | ||
721 | * if width of container is not set explicitly */ | ||
722 | /* float: right; */ | ||
723 | position: absolute; | ||
724 | top: 0px; right: 0px; | ||
725 | border: 1px solid #ffaaaa; | ||
726 | margin: 1px 1px 1px 1px; | ||
727 | padding-bottom: 2px; | ||
728 | width: 12px; | ||
729 | height: 10px; | ||
730 | font-size: 9px; | ||
731 | font-weight: bold; | ||
732 | text-align: center; | ||
733 | background-color: #ffdddd; | ||
734 | cursor: pointer; | ||
735 | } | ||
736 | |||
737 | /* Style definition generated by highlight 2.4.5, http://www.andre-simon.de/ */ | ||
738 | |||
739 | /* Highlighting theme definition: */ | ||
740 | |||
741 | .num { color:#6ecf36; } | ||
742 | .esc { color:#ff00ff; } | ||
743 | .str { color:#ff00d3; background-color: #edc9ec } | ||
744 | .dstr { color:#818100; } | ||
745 | .slc { color:#838183; font-style:italic; } | ||
746 | .com { color:#838183; font-style:italic; } | ||
747 | .dir { color:#008200; } | ||
748 | .sym { color:#000000; } | ||
749 | .line { color:#555555; } | ||
750 | .kwa { color:#666666; font-weight:bold; } | ||
751 | .kwb { color:#6b3099; } | ||
752 | .kwc { color:#d4663d; } | ||
753 | .kwd { color:#2928ff; } | ||
754 | |||
755 | /**** Styles supplémentaires *****/ | ||
756 | |||
757 | .readme div.toc { | ||
758 | float: right; | ||
759 | border: 1px solid black; | ||
760 | background-color: white; | ||
761 | } | ||
762 | .readme div.toc span.toctitle { | ||
763 | display: inline-block; | ||
764 | width: 100%; | ||
765 | text-align: center; | ||
766 | font-weight: bold; | ||
767 | } | ||
768 | |||
769 | .readme table { | ||
770 | background-color: white; | ||
771 | } | ||
772 | |||
773 | .readme table thead tr { | ||
774 | background-color: #ccc; | ||
775 | } | ||
776 | |||
777 | .readme table tbody tr:nth-child(2n) { | ||
778 | background-color: #f8f8f8; | ||
779 | } | ||
780 | |||
781 | .readme table td, .readme table th { | ||
782 | border: 1px solid black; | ||
783 | } | ||
diff --git a/flakes/mypackages/overlays/gitweb/theme/gitweb.js b/flakes/mypackages/overlays/gitweb/theme/gitweb.js new file mode 100644 index 0000000..72f3cfa --- /dev/null +++ b/flakes/mypackages/overlays/gitweb/theme/gitweb.js | |||
@@ -0,0 +1,27 @@ | |||
1 | function include(filename, onload) { | ||
2 | var head = document.getElementsByTagName('head')[0]; | ||
3 | var script = document.createElement('script'); | ||
4 | script.src = filename; | ||
5 | script.type = 'text/javascript'; | ||
6 | script.onload = script.onreadystatechange = function() { | ||
7 | if (script.readyState) { | ||
8 | if (script.readyState === 'complete' || script.readyState === 'loaded') { | ||
9 | script.onreadystatechange = null; | ||
10 | onload(); | ||
11 | } | ||
12 | } | ||
13 | else { | ||
14 | onload(); | ||
15 | } | ||
16 | } | ||
17 | head.appendChild(script); | ||
18 | } | ||
19 | |||
20 | include('static/gitweb.js', function() {}); | ||
21 | include('//code.jquery.com/jquery-3.1.0.min.js', function() { | ||
22 | $("div.title").each(function(index, element) { | ||
23 | if ($(element).text() === "readme" || $(element).text() === " ") { | ||
24 | $(element).hide(); | ||
25 | } | ||
26 | }); | ||
27 | }); | ||
diff --git a/flakes/mypackages/overlays/goaccess/default.nix b/flakes/mypackages/overlays/goaccess/default.nix new file mode 100644 index 0000000..6b9758b --- /dev/null +++ b/flakes/mypackages/overlays/goaccess/default.nix | |||
@@ -0,0 +1,13 @@ | |||
1 | self: super: { | ||
2 | goaccess = super.goaccess.overrideAttrs(old: rec { | ||
3 | name = "goaccess-${version}"; | ||
4 | version = "1.4"; | ||
5 | src = self.fetchurl { | ||
6 | url = "https://tar.goaccess.io/${name}.tar.gz"; | ||
7 | sha256 = "1gkpjg39f3afdwm9128jqjsfap07p8s027czzlnxfmi5hpzvkyz8"; | ||
8 | }; | ||
9 | configureFlags = old.configureFlags ++ [ "--enable-tcb=btree" ]; | ||
10 | buildInputs = old.buildInputs ++ [ self.tokyocabinet self.bzip2 ]; | ||
11 | }); | ||
12 | |||
13 | } | ||
diff --git a/flakes/mypackages/overlays/kanboard/default.nix b/flakes/mypackages/overlays/kanboard/default.nix new file mode 100644 index 0000000..2a0d41b --- /dev/null +++ b/flakes/mypackages/overlays/kanboard/default.nix | |||
@@ -0,0 +1,19 @@ | |||
1 | self: super: { | ||
2 | kanboard = self.stdenv.mkDerivation rec { | ||
3 | name = "kanboard-${version}"; | ||
4 | version = "1.2.21"; | ||
5 | src = self.fetchFromGitHub { | ||
6 | owner = "kanboard"; | ||
7 | repo = "kanboard"; | ||
8 | rev = "ee18479b7e019e6415d7b095da629932ee1b3fd5"; | ||
9 | sha256 = "00pnpq5qgxpb2f9la58ycvx5kx3pmcvpssh6lwgpcdk04yciw8nh"; | ||
10 | }; | ||
11 | |||
12 | dontBuild = true; | ||
13 | |||
14 | installPhase = '' | ||
15 | cp -a . $out | ||
16 | mv $out/data $out/dataold | ||
17 | ''; | ||
18 | }; | ||
19 | } | ||
diff --git a/flakes/mypackages/overlays/morph/default.nix b/flakes/mypackages/overlays/morph/default.nix new file mode 100644 index 0000000..b316d70 --- /dev/null +++ b/flakes/mypackages/overlays/morph/default.nix | |||
@@ -0,0 +1,27 @@ | |||
1 | self: super: { | ||
2 | morph = super.morph.overrideAttrs(old: rec { | ||
3 | version = "1.6.0-30-g5b85237"; | ||
4 | src = self.fetchFromGitHub { | ||
5 | owner = "dbcdk"; | ||
6 | repo = "morph"; | ||
7 | rev = "5b852370d8054a895b5ba79b5ef017c3afbb3a3c"; | ||
8 | sha256 = "166dwibbpb90bdy8dvhlinh6gc509f8pq8wn345h01pilf7fc8fh"; | ||
9 | }; | ||
10 | |||
11 | ldflags = [ | ||
12 | "-X main.version=${version}" | ||
13 | ]; | ||
14 | preBuild = '' | ||
15 | ldflags+=" -X main.assetRoot=$lib" | ||
16 | ''; | ||
17 | postInstall = '' | ||
18 | mkdir -p $lib | ||
19 | cp -v ./data/*.nix $lib | ||
20 | ''; | ||
21 | |||
22 | outputs = [ "out" "lib" ]; | ||
23 | vendorSha256 = "08zzp0h4c4i5hk4whz06a3da7qjms6lr36596vxz0d8q0n7rspr9"; | ||
24 | |||
25 | patches = (old.patches or []) ++ [ ./dry-run.patch ]; | ||
26 | }); | ||
27 | } | ||
diff --git a/flakes/mypackages/overlays/morph/dry-run.patch b/flakes/mypackages/overlays/morph/dry-run.patch new file mode 100644 index 0000000..2ff099e --- /dev/null +++ b/flakes/mypackages/overlays/morph/dry-run.patch | |||
@@ -0,0 +1,59 @@ | |||
1 | diff --git a/morph.go b/morph.go | ||
2 | index a88414b..e5894df 100644 | ||
3 | --- a/morph.go | ||
4 | +++ b/morph.go | ||
5 | @@ -542,6 +542,7 @@ func getNixContext() *nix.NixContext { | ||
6 | return &nix.NixContext{ | ||
7 | EvalMachines: filepath.Join(assetRoot, assets.Friendly, "eval-machines.nix"), | ||
8 | ShowTrace: showTrace, | ||
9 | + DryRun: *dryRun, | ||
10 | KeepGCRoot: *keepGCRoot, | ||
11 | AllowBuildShell: *allowBuildShell, | ||
12 | } | ||
13 | @@ -574,8 +575,10 @@ func buildHosts(hosts []nix.Host) (resultPath string, err error) { | ||
14 | return | ||
15 | } | ||
16 | |||
17 | - fmt.Fprintln(os.Stderr, "nix result path: ") | ||
18 | - fmt.Println(resultPath) | ||
19 | + if resultPath != "" { | ||
20 | + fmt.Fprintln(os.Stderr, "nix result path: ") | ||
21 | + fmt.Println(resultPath) | ||
22 | + } | ||
23 | return | ||
24 | } | ||
25 | |||
26 | diff --git a/nix/nix.go b/nix/nix.go | ||
27 | index 6a9cfd5..0f7884b 100644 | ||
28 | --- a/nix/nix.go | ||
29 | +++ b/nix/nix.go | ||
30 | @@ -49,6 +49,7 @@ type Deployment struct { | ||
31 | type NixContext struct { | ||
32 | EvalMachines string | ||
33 | ShowTrace bool | ||
34 | + DryRun bool | ||
35 | KeepGCRoot bool | ||
36 | AllowBuildShell bool | ||
37 | } | ||
38 | @@ -269,6 +270,10 @@ func (ctx *NixContext) BuildMachines(deploymentPath string, hosts []Host, nixArg | ||
39 | args = append(args, "--show-trace") | ||
40 | } | ||
41 | |||
42 | + if ctx.DryRun { | ||
43 | + args = append(args, "--dry-run") | ||
44 | + } | ||
45 | + | ||
46 | if nixBuildTargets != "" { | ||
47 | args = append(args, | ||
48 | "--arg", "buildTargets", nixBuildTargets) | ||
49 | @@ -308,6 +313,10 @@ func (ctx *NixContext) BuildMachines(deploymentPath string, hosts []Host, nixArg | ||
50 | return resultPath, errors.New(errorMessage) | ||
51 | } | ||
52 | |||
53 | + if ctx.DryRun { | ||
54 | + return "", err | ||
55 | + } | ||
56 | + | ||
57 | resultPath, err = os.Readlink(resultLinkPath) | ||
58 | if err != nil { | ||
59 | return "", err | ||
diff --git a/flakes/mypackages/overlays/morph/verbose_nix.patch b/flakes/mypackages/overlays/morph/verbose_nix.patch new file mode 100644 index 0000000..389a79c --- /dev/null +++ b/flakes/mypackages/overlays/morph/verbose_nix.patch | |||
@@ -0,0 +1,12 @@ | |||
1 | diff --git a/nix/nix.go b/nix/nix.go | ||
2 | index bb63870..7fe04aa 100644 | ||
3 | --- a/nix/nix.go | ||
4 | +++ b/nix/nix.go | ||
5 | @@ -347,6 +347,7 @@ func Push(ctx *ssh.SSHContext, host Host, paths ...string) (err error) { | ||
6 | options := mkOptions(host) | ||
7 | for _, path := range paths { | ||
8 | args := []string{ | ||
9 | + "-v", | ||
10 | "copy", | ||
11 | path, | ||
12 | "--to", "ssh://" + userArg + host.TargetHost + keyArg, | ||
diff --git a/flakes/mypackages/overlays/php-packages/mysqli_patch.patch b/flakes/mypackages/overlays/php-packages/mysqli_patch.patch new file mode 100644 index 0000000..a8f03e3 --- /dev/null +++ b/flakes/mypackages/overlays/php-packages/mysqli_patch.patch | |||
@@ -0,0 +1,11 @@ | |||
1 | --- a/ext/mysqli/mysqli_nonapi.c | ||
2 | +++ b/ext/mysqli/mysqli_nonapi.c | ||
3 | @@ -263,7 +263,7 @@ void mysqli_common_connect(INTERNAL_FUNC | ||
4 | php_mysqli_set_error(mysql_errno(mysql->mysql), (char *) mysql_error(mysql->mysql)); | ||
5 | |||
6 | #if !defined(MYSQLI_USE_MYSQLND) | ||
7 | - mysql->mysql->reconnect = MyG(reconnect); | ||
8 | + mysql_options(mysql->mysql, MYSQL_OPT_RECONNECT, (my_bool *)&MyG(reconnect)); | ||
9 | #endif | ||
10 | |||
11 | mysql_options(mysql->mysql, MYSQL_OPT_LOCAL_INFILE, (char *)&MyG(allow_local_infile)); | ||
diff --git a/flakes/mypackages/overlays/postfix/default.nix b/flakes/mypackages/overlays/postfix/default.nix new file mode 100644 index 0000000..c77e4cf --- /dev/null +++ b/flakes/mypackages/overlays/postfix/default.nix | |||
@@ -0,0 +1,3 @@ | |||
1 | self: super: { | ||
2 | postfix = super.postfix.override { withMySQL = true; withPgSQL = true; }; | ||
3 | } | ||
diff --git a/flakes/mypackages/overlays/taskwarrior/TW-1778_patch.diff b/flakes/mypackages/overlays/taskwarrior/TW-1778_patch.diff new file mode 100644 index 0000000..6d7e376 --- /dev/null +++ b/flakes/mypackages/overlays/taskwarrior/TW-1778_patch.diff | |||
@@ -0,0 +1,12 @@ | |||
1 | --- a/src/text.cpp 2016-02-24 23:18:11.000000000 +0100 | ||
2 | +++ b/src/text.cpp 2020-02-26 18:53:15.869331031 +0100 | ||
3 | @@ -248,7 +248,7 @@ | ||
4 | // Premature EOL. | ||
5 | if (character == '\n') | ||
6 | { | ||
7 | - line = text.substr (offset, line_length); | ||
8 | + line = text.substr (offset, prior_cursor-offset); | ||
9 | offset = cursor; | ||
10 | return true; | ||
11 | } | ||
12 | |||
diff --git a/flakes/mypackages/overlays/taskwarrior/default.nix b/flakes/mypackages/overlays/taskwarrior/default.nix new file mode 100644 index 0000000..9ca52b8 --- /dev/null +++ b/flakes/mypackages/overlays/taskwarrior/default.nix | |||
@@ -0,0 +1,16 @@ | |||
1 | self: super: | ||
2 | { | ||
3 | taskwarrior = super.taskwarrior.overrideAttrs (old: { | ||
4 | patches = old.patches or [] ++ [ | ||
5 | ./TW-1778_patch.diff | ||
6 | ]; | ||
7 | postInstall = ''${old.postInstall} | ||
8 | mkdir -p "$out/share/vim/vimfiles/ftdetect" | ||
9 | mkdir -p "$out/share/vim/vimfiles/syntax" | ||
10 | ln -s "../../../../share/doc/task/scripts/vim/ftdetect/task.vim" "$out/share/vim/vimfiles/ftdetect/" | ||
11 | ln -s "../../../../share/doc/task/scripts/vim/syntax/taskrc.vim" "$out/share/vim/vimfiles/syntax/" | ||
12 | ln -s "../../../../share/doc/task/scripts/vim/syntax/taskdata.vim" "$out/share/vim/vimfiles/syntax/" | ||
13 | ln -s "../../../../share/doc/task/scripts/vim/syntax/taskedit.vim" "$out/share/vim/vimfiles/syntax/" | ||
14 | ''; | ||
15 | }); | ||
16 | } | ||
diff --git a/flakes/mypackages/overlays/ympd/default.nix b/flakes/mypackages/overlays/ympd/default.nix new file mode 100644 index 0000000..648403f --- /dev/null +++ b/flakes/mypackages/overlays/ympd/default.nix | |||
@@ -0,0 +1,14 @@ | |||
1 | self: super: { | ||
2 | ympd = super.ympd.overrideAttrs(old: { | ||
3 | pname = "ympd"; | ||
4 | version = "612f8fc-master"; | ||
5 | src = self.fetchFromGitHub { | ||
6 | owner = "notandy"; | ||
7 | repo = "ympd"; | ||
8 | rev = "612f8fc0b2c47fc89d403e4a044541c6b2b238c8"; | ||
9 | sha256 = "01hnj10zl103mrn82vyd42fvq7w5az3jf1qz18889zv67kn73ll9"; | ||
10 | fetchSubmodules = true; | ||
11 | }; | ||
12 | patches = (old.patches or []) ++ [ ./ympd-password-env.patch ]; | ||
13 | }); | ||
14 | } | ||
diff --git a/flakes/mypackages/overlays/ympd/ympd-password-env.patch b/flakes/mypackages/overlays/ympd/ympd-password-env.patch new file mode 100644 index 0000000..2bbe188 --- /dev/null +++ b/flakes/mypackages/overlays/ympd/ympd-password-env.patch | |||
@@ -0,0 +1,23 @@ | |||
1 | diff --git a/src/ympd.c b/src/ympd.c | ||
2 | index 3aed7e6..b3b6fda 100644 | ||
3 | --- a/src/ympd.c | ||
4 | +++ b/src/ympd.c | ||
5 | @@ -71,6 +71,7 @@ int main(int argc, char **argv) | ||
6 | char *run_as_user = NULL; | ||
7 | char const *error_msg = NULL; | ||
8 | char *webport = "8080"; | ||
9 | + const char *s; | ||
10 | |||
11 | atexit(bye); | ||
12 | #ifdef WITH_DYNAMIC_ASSETS | ||
13 | @@ -92,6 +93,10 @@ int main(int argc, char **argv) | ||
14 | {0, 0, 0, 0 } | ||
15 | }; | ||
16 | |||
17 | + if ((s = getenv("MPD_PASSWORD")) != NULL) { | ||
18 | + mpd.password = strdup(s); | ||
19 | + } | ||
20 | + | ||
21 | while((n = getopt_long(argc, argv, "h:p:w:u:vm:", | ||
22 | long_options, &option_index)) != -1) { | ||
23 | switch (n) { | ||
diff --git a/flakes/mypackages/pkgs/bash-libs/default.nix b/flakes/mypackages/pkgs/bash-libs/default.nix new file mode 100644 index 0000000..991c9d2 --- /dev/null +++ b/flakes/mypackages/pkgs/bash-libs/default.nix | |||
@@ -0,0 +1,33 @@ | |||
1 | { lib, stdenv, fetchFromGitHub, makeWrapper, shellcheck, bashInteractive, coreutils, gnugrep, gawk, file, aspell, util-linux, gnused }: | ||
2 | stdenv.mkDerivation { | ||
3 | pname = "bash-libs"; | ||
4 | version = "master"; | ||
5 | src = fetchFromGitHub { | ||
6 | owner = "foopgp"; | ||
7 | repo = "bash-libs"; | ||
8 | rev = "4bf7fe3a488f55beecc74b76e0daf24244bd824f"; | ||
9 | sha256 = "sha256-8AHUXPd1dQpo1Ce9MT4++eFhJT3X8SYtgaIKbPFUYjM="; | ||
10 | }; | ||
11 | |||
12 | buildInputs = [ shellcheck makeWrapper bashInteractive ]; | ||
13 | phases = [ "checkPhase" "installPhase" ]; | ||
14 | checkPhase = '' | ||
15 | shellcheck bin/* | ||
16 | ''; | ||
17 | installPhase = | ||
18 | let binPath = lib.makeBinPath [ | ||
19 | coreutils file aspell util-linux gnused gnugrep gawk | ||
20 | ]; | ||
21 | in '' | ||
22 | mkdir -p $out/bin $out/nix-support $out/share/doc/bash-libs $out/share/bash-libs/include | ||
23 | |||
24 | for i in $src/bin/*; do | ||
25 | name=$(basename $i) | ||
26 | cp "$i" $out/share/bash-libs/include | ||
27 | patchShebangs $out/share/bash-libs/include/$name | ||
28 | makeWrapper $out/share/bash-libs/include/$name $out/bin/$name --set PATH ${binPath} | ||
29 | done | ||
30 | echo "${binPath}" > $out/nix-support/propagated-build-inputs | ||
31 | cp $src/man/* $out/share/doc/bash-libs | ||
32 | ''; | ||
33 | } | ||
diff --git a/flakes/mypackages/pkgs/boinctui/default.nix b/flakes/mypackages/pkgs/boinctui/default.nix new file mode 100644 index 0000000..565840c --- /dev/null +++ b/flakes/mypackages/pkgs/boinctui/default.nix | |||
@@ -0,0 +1,21 @@ | |||
1 | { stdenv, fetchurl, expat, openssl, autoconf269, ncurses }: | ||
2 | stdenv.mkDerivation rec { | ||
3 | name = "boinctui-${version}"; | ||
4 | version = "2.6.0"; | ||
5 | src = fetchurl { | ||
6 | url = "http://sourceforge.net/projects/boinctui/files/boinctui_${version}.tar.gz"; | ||
7 | sha256 = "1c6hc4x28z8hjncxcwxhb0r3980f72i6480569a0hd9y7vcgf3d0"; | ||
8 | }; | ||
9 | |||
10 | configureFlags = [ "--without-gnutls" ]; | ||
11 | preConfigure = '' | ||
12 | autoconf | ||
13 | ''; | ||
14 | |||
15 | makeFlags = [ "DESTDIR=$(out)" ]; | ||
16 | preBuild = '' | ||
17 | sed -i -e 's/"HOME"/"XDG_CONFIG_HOME"/' src/cfg.cpp | ||
18 | sed -i -e 's@\.boinctui\.cfg@boinctui/boinctui.cfg@' src/mainprog.cpp | ||
19 | ''; | ||
20 | buildInputs = [ expat openssl autoconf269 ncurses ]; | ||
21 | } | ||
diff --git a/flakes/mypackages/pkgs/cnagios/default.nix b/flakes/mypackages/pkgs/cnagios/default.nix new file mode 100644 index 0000000..2b8b0da --- /dev/null +++ b/flakes/mypackages/pkgs/cnagios/default.nix | |||
@@ -0,0 +1,32 @@ | |||
1 | { stdenv, fetchFromGitHub, perl, ncurses }: | ||
2 | stdenv.mkDerivation (rec { | ||
3 | version = "3bd27fb-master"; | ||
4 | pname = "cnagios"; | ||
5 | name = "${pname}-${version}"; | ||
6 | src = fetchFromGitHub { | ||
7 | owner = "dannywarren"; | ||
8 | repo = "cnagios"; | ||
9 | rev = "3bd27fb40e68f61ffd01bea6234b919a667b6fe4"; | ||
10 | sha256 = "0iy5pmlcz6y3if72nav22xqxniiv1v8ywi0927m6s459hkw5n2rb"; | ||
11 | fetchSubmodules = true; | ||
12 | }; | ||
13 | configureFlags = [ | ||
14 | "--with-etc-dir=/etc/cnagios" | ||
15 | "--with-var-dir=/var/lib/naemon" | ||
16 | "--with-status-file=/var/lib/naemon/status.dat" | ||
17 | "--with-nagios-data=4" | ||
18 | ]; | ||
19 | |||
20 | prePatch = '' | ||
21 | sed -i -e "s/-lcurses/-lncurses/" Makefile.in | ||
22 | ''; | ||
23 | installPhase = '' | ||
24 | install -dm755 $out/share/doc/cnagios | ||
25 | install -Dm644 cnagiosrc $out/share/doc/cnagios/ | ||
26 | install -Dm644 cnagios.help $out/share/doc/cnagios/ | ||
27 | install -Dm644 cnagios.pl $out/share/doc/cnagios/ | ||
28 | install -dm755 $out/bin | ||
29 | install -Dm755 cnagios $out/bin/ | ||
30 | ''; | ||
31 | buildInputs = [ perl ncurses ]; | ||
32 | }) | ||
diff --git a/flakes/mypackages/pkgs/commento/default.nix b/flakes/mypackages/pkgs/commento/default.nix new file mode 100644 index 0000000..6361583 --- /dev/null +++ b/flakes/mypackages/pkgs/commento/default.nix | |||
@@ -0,0 +1,20 @@ | |||
1 | { stdenv, fetchurl, patchelfUnstable, autoPatchelfHook }: | ||
2 | stdenv.mkDerivation rec { | ||
3 | pname = "commento"; | ||
4 | version = "v1.8.0"; | ||
5 | name = "${pname}-${version}"; | ||
6 | src = fetchurl { | ||
7 | url = "https://dl.commento.io/release/${name}-linux-glibc-amd64.tar.gz"; | ||
8 | sha256 = "1j88b16hdx3i8nsq56581cscij65slgbsa6yfj73ybbg1585axxs"; | ||
9 | }; | ||
10 | phases = [ "unpackPhase" "installPhase" "fixupPhase" ]; | ||
11 | unpackPhase = '' | ||
12 | tar --one-top-level=${name} -xf "$src" | ||
13 | ''; | ||
14 | installPhase = '' | ||
15 | cp -a ${name} $out | ||
16 | ''; | ||
17 | postFixup = '' | ||
18 | ${patchelfUnstable}/bin/patchelf --set-interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" $out/commento | ||
19 | ''; | ||
20 | } | ||
diff --git a/flakes/mypackages/pkgs/composer-env/default.nix b/flakes/mypackages/pkgs/composer-env/default.nix new file mode 100644 index 0000000..772ed73 --- /dev/null +++ b/flakes/mypackages/pkgs/composer-env/default.nix | |||
@@ -0,0 +1,243 @@ | |||
1 | # This file originates from composer2nix | ||
2 | |||
3 | { stdenv, lib, writeTextFile, fetchurl, php, unzip, composer ? php.packages.composer }: | ||
4 | |||
5 | let | ||
6 | buildZipPackage = { name, src }: | ||
7 | stdenv.mkDerivation { | ||
8 | inherit name src; | ||
9 | buildInputs = [ unzip ]; | ||
10 | buildCommand = '' | ||
11 | unzip $src | ||
12 | baseDir=$(find . -type d -mindepth 1 -maxdepth 1) | ||
13 | cd $baseDir | ||
14 | mkdir -p $out | ||
15 | mv * $out | ||
16 | ''; | ||
17 | }; | ||
18 | |||
19 | buildPackage = | ||
20 | { name | ||
21 | , src | ||
22 | , packages ? {} | ||
23 | , devPackages ? {} | ||
24 | , buildInputs ? [] | ||
25 | , symlinkDependencies ? false | ||
26 | , executable ? false | ||
27 | , removeComposerArtifacts ? false | ||
28 | , postInstall ? "" | ||
29 | , preInstall ? "" | ||
30 | , noDev ? false | ||
31 | , unpackPhase ? "true" | ||
32 | , buildPhase ? "true" | ||
33 | , doRemoveVendor ? true | ||
34 | , ...}@args: | ||
35 | |||
36 | let | ||
37 | reconstructInstalled = writeTextFile { | ||
38 | name = "reconstructinstalled.php"; | ||
39 | executable = true; | ||
40 | text = '' | ||
41 | #! ${php}/bin/php | ||
42 | <?php | ||
43 | if(file_exists($argv[1])) | ||
44 | { | ||
45 | $composerLockStr = file_get_contents($argv[1]); | ||
46 | |||
47 | if($composerLockStr === false) | ||
48 | { | ||
49 | fwrite(STDERR, "Cannot open composer.lock contents\n"); | ||
50 | exit(1); | ||
51 | } | ||
52 | else | ||
53 | { | ||
54 | $config = json_decode($composerLockStr, true); | ||
55 | |||
56 | if(array_key_exists("packages", $config)) | ||
57 | $allPackages = $config["packages"]; | ||
58 | else | ||
59 | $allPackages = array(); | ||
60 | |||
61 | ${lib.optionalString (!noDev) '' | ||
62 | if(array_key_exists("packages-dev", $config)) | ||
63 | $allPackages = array_merge($allPackages, $config["packages-dev"]); | ||
64 | ''} | ||
65 | |||
66 | $packagesStr = json_encode($allPackages, JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES); | ||
67 | print($packagesStr); | ||
68 | } | ||
69 | } | ||
70 | else | ||
71 | print("[]"); | ||
72 | ?> | ||
73 | ''; | ||
74 | }; | ||
75 | |||
76 | constructBin = writeTextFile { | ||
77 | name = "constructbin.php"; | ||
78 | executable = true; | ||
79 | text = '' | ||
80 | #! ${php}/bin/php | ||
81 | <?php | ||
82 | $composerJSONStr = file_get_contents($argv[1]); | ||
83 | |||
84 | if($composerJSONStr === false) | ||
85 | { | ||
86 | fwrite(STDERR, "Cannot open composer.json contents\n"); | ||
87 | exit(1); | ||
88 | } | ||
89 | else | ||
90 | { | ||
91 | $config = json_decode($composerJSONStr, true); | ||
92 | |||
93 | if(array_key_exists("bin-dir", $config)) | ||
94 | $binDir = $config["bin-dir"]; | ||
95 | else | ||
96 | $binDir = "bin"; | ||
97 | |||
98 | if(array_key_exists("bin", $config)) | ||
99 | { | ||
100 | if(!file_exists("vendor/".$binDir)) | ||
101 | mkdir("vendor/".$binDir); | ||
102 | |||
103 | foreach($config["bin"] as $bin) | ||
104 | symlink("../../".$bin, "vendor/".$binDir."/".basename($bin)); | ||
105 | } | ||
106 | } | ||
107 | ?> | ||
108 | ''; | ||
109 | }; | ||
110 | |||
111 | bundleDependencies = dependencies: | ||
112 | lib.concatMapStrings (dependencyName: | ||
113 | let | ||
114 | dependency = dependencies.${dependencyName}; | ||
115 | in | ||
116 | '' | ||
117 | ${if dependency.targetDir == "" then '' | ||
118 | vendorDir="$(dirname ${dependencyName})" | ||
119 | mkdir -p "$vendorDir" | ||
120 | ${if symlinkDependencies then | ||
121 | ''ln -s "${dependency.src}" "$vendorDir/$(basename "${dependencyName}")"'' | ||
122 | else | ||
123 | ''cp -a "${dependency.src}" "$vendorDir/$(basename "${dependencyName}")"'' | ||
124 | }${if dependency.needsModifyRights or false then "\n" + '' | ||
125 | chmod -R u+rwx "$vendorDir/$(basename "${dependencyName}")" | ||
126 | '' else ""} | ||
127 | '' else '' | ||
128 | namespaceDir="${dependencyName}/$(dirname "${dependency.targetDir}")" | ||
129 | mkdir -p "$namespaceDir" | ||
130 | ${if symlinkDependencies then | ||
131 | ''ln -s "${dependency.src}" "$namespaceDir/$(basename "${dependency.targetDir}")"'' | ||
132 | else | ||
133 | ''cp -a "${dependency.src}" "$namespaceDir/$(basename "${dependency.targetDir}")"'' | ||
134 | }${if dependency.needsModifyRights or false then "\n" + '' | ||
135 | chmod -R u+rwx "$namespaceDir/$(basename "${dependency.targetDir}")" | ||
136 | '' else ""} | ||
137 | ''} | ||
138 | '') (builtins.attrNames dependencies); | ||
139 | |||
140 | extraArgs = removeAttrs args [ "name" "packages" "devPackages" "buildInputs" ]; | ||
141 | in | ||
142 | stdenv.mkDerivation ({ | ||
143 | name = "composer-${name}"; | ||
144 | buildInputs = [ php composer ] ++ buildInputs; | ||
145 | |||
146 | inherit unpackPhase buildPhase; | ||
147 | |||
148 | installPhase = '' | ||
149 | ${if executable then '' | ||
150 | mkdir -p $out/share/php | ||
151 | cp -a $src $out/share/php/$name | ||
152 | chmod -R u+w $out/share/php/$name | ||
153 | cd $out/share/php/$name | ||
154 | '' else '' | ||
155 | cp -a $src $out | ||
156 | chmod -R u+w $out | ||
157 | cd $out | ||
158 | ''} | ||
159 | |||
160 | # Execute pre install hook | ||
161 | runHook preInstall | ||
162 | |||
163 | # Remove unwanted files | ||
164 | rm -f *.nix | ||
165 | |||
166 | export HOME=$TMPDIR | ||
167 | |||
168 | ${if doRemoveVendor then '' | ||
169 | # Remove the provided vendor folder if it exists | ||
170 | rm -Rf vendor | ||
171 | '' else ""} | ||
172 | # If there is no composer.lock file, compose a dummy file. | ||
173 | # Otherwise, composer attempts to download the package.json file from | ||
174 | # the registry which we do not want. | ||
175 | if [ ! -f composer.lock ] | ||
176 | then | ||
177 | cat > composer.lock <<EOF | ||
178 | { | ||
179 | "packages": [] | ||
180 | } | ||
181 | EOF | ||
182 | fi | ||
183 | |||
184 | # Reconstruct the installed.json file from the lock file | ||
185 | mkdir -p vendor/composer | ||
186 | ${reconstructInstalled} composer.lock > vendor/composer/installed.json | ||
187 | |||
188 | # Copy or symlink the provided dependencies | ||
189 | cd vendor | ||
190 | ${bundleDependencies packages} | ||
191 | ${lib.optionalString (!noDev) (bundleDependencies devPackages)} | ||
192 | cd .. | ||
193 | |||
194 | # Reconstruct autoload scripts | ||
195 | # We use the optimize feature because Nix packages cannot change after they have been built | ||
196 | # Using the dynamic loader for a Nix package is useless since there is nothing to dynamically reload. | ||
197 | composer dump-autoload --optimize ${lib.optionalString noDev "--no-dev"} | ||
198 | |||
199 | # Run the install step as a validation to confirm that everything works out as expected | ||
200 | composer install --optimize-autoloader ${lib.optionalString noDev "--no-dev"} | ||
201 | |||
202 | ${lib.optionalString executable '' | ||
203 | # Reconstruct the bin/ folder if we deploy an executable project | ||
204 | ${constructBin} composer.json | ||
205 | ln -s $(pwd)/vendor/bin $out/bin | ||
206 | ''} | ||
207 | |||
208 | ${lib.optionalString (!symlinkDependencies) '' | ||
209 | # Patch the shebangs if possible | ||
210 | if [ -d $(pwd)/vendor/bin ] | ||
211 | then | ||
212 | # Look for all executables in bin/ | ||
213 | for i in $(pwd)/vendor/bin/* | ||
214 | do | ||
215 | # Look for their location | ||
216 | realFile=$(readlink -f "$i") | ||
217 | |||
218 | # Restore write permissions | ||
219 | chmod u+wx "$(dirname "$realFile")" | ||
220 | chmod u+w "$realFile" | ||
221 | |||
222 | # Patch shebang | ||
223 | sed -e "s|#!/usr/bin/php|#!${php}/bin/php|" \ | ||
224 | -e "s|#!/usr/bin/env php|#!${php}/bin/php|" \ | ||
225 | "$realFile" > tmp | ||
226 | mv tmp "$realFile" | ||
227 | chmod u+x "$realFile" | ||
228 | done | ||
229 | fi | ||
230 | ''} | ||
231 | |||
232 | if [ "$removeComposerArtifacts" = "1" ] | ||
233 | then | ||
234 | # Remove composer stuff | ||
235 | rm -f composer.json composer.lock | ||
236 | fi | ||
237 | |||
238 | # Execute post install hook | ||
239 | runHook postInstall | ||
240 | ''; | ||
241 | } // extraArgs); | ||
242 | in | ||
243 | { inherit composer buildZipPackage buildPackage; } | ||
diff --git a/flakes/mypackages/pkgs/crypto/cardano-cli/default.nix b/flakes/mypackages/pkgs/crypto/cardano-cli/default.nix new file mode 100644 index 0000000..3cd5a4c --- /dev/null +++ b/flakes/mypackages/pkgs/crypto/cardano-cli/default.nix | |||
@@ -0,0 +1,16 @@ | |||
1 | { rustPlatform, fetchFromGitHub }: | ||
2 | rustPlatform.buildRustPackage rec { | ||
3 | name = "cardano-cli-${version}"; | ||
4 | version = "master"; | ||
5 | |||
6 | src = fetchFromGitHub { | ||
7 | owner = "input-output-hk"; | ||
8 | repo = "cardano-cli"; | ||
9 | rev = "ed064d5a3b96c23b52bb20ca49da9cb8764a2e0f"; | ||
10 | sha256 = "07y5ssar6aq93snrvmapk05zmym4w23ydvjn2njp8saxk23ivqsg"; | ||
11 | fetchSubmodules = true; | ||
12 | }; | ||
13 | |||
14 | cargoSha256 = "0j68dsqahvgpa9ms62149530lbfa55lmpd56rgdxkrh2z32lshs8"; | ||
15 | verifyCargoDeps = true; | ||
16 | } | ||
diff --git a/flakes/mypackages/pkgs/crypto/cardano/default.nix b/flakes/mypackages/pkgs/crypto/cardano/default.nix new file mode 100644 index 0000000..8e3c83f --- /dev/null +++ b/flakes/mypackages/pkgs/crypto/cardano/default.nix | |||
@@ -0,0 +1,35 @@ | |||
1 | { stdenv, fetchFromGitHub }: | ||
2 | let | ||
3 | src = fetchFromGitHub { | ||
4 | owner = "input-output-hk"; | ||
5 | repo = "daedalus"; | ||
6 | rev = "998fd3189c9a54fac496dfef7a6224714c67bc80"; | ||
7 | sha256 = "1r3gwfv6hn7lzp4h2s6849m7x12nxadsql358ss615krvdlnb6rr"; | ||
8 | fetchSubmodules = true; | ||
9 | }; | ||
10 | daedalusOrig = (import src {}).daedalus; | ||
11 | cfg = stdenv.mkDerivation rec { | ||
12 | name = "launcher-config-custom"; | ||
13 | buildInputs = [ src daedalusOrig.cfg ]; | ||
14 | src = daedalusOrig.cfg; | ||
15 | installPhase = '' | ||
16 | cp -a $src $out | ||
17 | chmod -R u+w $out | ||
18 | cd $out/etc | ||
19 | sed -e "/^walletPath/d" -e "/^walletArgs/d" launcher-config.yaml > launcher-config-server-only.yaml | ||
20 | ''; | ||
21 | }; | ||
22 | in | ||
23 | stdenv.mkDerivation rec { | ||
24 | name = "daedalus-custom"; | ||
25 | src = daedalusOrig; | ||
26 | buildInputs = [ cfg daedalusOrig ]; | ||
27 | installPhase = '' | ||
28 | cp -a $src $out | ||
29 | chmod -R u+w $out | ||
30 | cd $out/bin | ||
31 | sed -i -e "s@${builtins.storeDir}/[0-9a-z]*-daedalus-config@${cfg}/etc@" daedalus | ||
32 | sed -e "s@${cfg}/etc/launcher-config.yaml@${cfg}/etc/launcher-config-server-only.yaml@" daedalus > daedalus-server-only | ||
33 | chmod a+x daedalus-server-only | ||
34 | ''; | ||
35 | } | ||
diff --git a/flakes/mypackages/pkgs/crypto/iota-cli-app/default.nix b/flakes/mypackages/pkgs/crypto/iota-cli-app/default.nix new file mode 100644 index 0000000..e386489 --- /dev/null +++ b/flakes/mypackages/pkgs/crypto/iota-cli-app/default.nix | |||
@@ -0,0 +1,29 @@ | |||
1 | { stdenv, mylibs, fetchFromGitHub, fetchurl, fetchgit, callPackage, nodePackages, nodejs-10_x }: | ||
2 | let | ||
3 | nodeEnv = callPackage mylibs.nodeEnv { nodejs = nodejs-10_x; }; | ||
4 | # built using node2nix -8 -l package-lock.json | ||
5 | # and changing "./." to "src" | ||
6 | packageEnv = import ./node-packages.nix { | ||
7 | src = stdenv.mkDerivation ({ | ||
8 | pname = "iota-cli-app"; | ||
9 | version = "d7e2e08-master"; | ||
10 | src = fetchFromGitHub { | ||
11 | owner = "iotaledger"; | ||
12 | repo = "cli-app"; | ||
13 | rev = "d7e2e0856ae6bd34890fefb4245c07cd467a5032"; | ||
14 | sha256 = "1n9kczsxdgjv8282nj2grlijvxipiskx0ndn169vz6v1l1hrwc8b"; | ||
15 | fetchSubmodules = true; | ||
16 | }; | ||
17 | phases = "installPhase"; | ||
18 | installPhase = '' | ||
19 | cp -a $src $out | ||
20 | chmod u+w -R $out | ||
21 | cd $out | ||
22 | sed -i -e "s@host: 'http://localhost',@host: 'https://nodes.thetangle.org',@" index.js | ||
23 | sed -i -e "s@port: 14265@port: 443@" index.js | ||
24 | ''; | ||
25 | }); | ||
26 | inherit fetchurl fetchgit nodeEnv; | ||
27 | }; | ||
28 | in | ||
29 | packageEnv.package | ||
diff --git a/flakes/mypackages/pkgs/crypto/iota-cli-app/node-packages.nix b/flakes/mypackages/pkgs/crypto/iota-cli-app/node-packages.nix new file mode 100644 index 0000000..d5c61d6 --- /dev/null +++ b/flakes/mypackages/pkgs/crypto/iota-cli-app/node-packages.nix | |||
@@ -0,0 +1,1814 @@ | |||
1 | # This file has been generated by node2nix 1.6.0. Do not edit! | ||
2 | |||
3 | {src, nodeEnv, fetchurl, fetchgit, globalBuildInputs ? []}: | ||
4 | |||
5 | let | ||
6 | sources = { | ||
7 | "acorn-3.3.0" = { | ||
8 | name = "acorn"; | ||
9 | packageName = "acorn"; | ||
10 | version = "3.3.0"; | ||
11 | src = fetchurl { | ||
12 | url = "https://registry.npmjs.org/acorn/-/acorn-3.3.0.tgz"; | ||
13 | sha1 = "45e37fb39e8da3f25baee3ff5369e2bb5f22017a"; | ||
14 | }; | ||
15 | }; | ||
16 | "acorn-5.2.1" = { | ||
17 | name = "acorn"; | ||
18 | packageName = "acorn"; | ||
19 | version = "5.2.1"; | ||
20 | src = fetchurl { | ||
21 | url = "https://registry.npmjs.org/acorn/-/acorn-5.2.1.tgz"; | ||
22 | sha512 = "jG0u7c4Ly+3QkkW18V+NRDN+4bWHdln30NL1ZL2AvFZZmQe/BfopYCtghCKKVBUSetZ4QKcyA0pY6/4Gw8Pv8w=="; | ||
23 | }; | ||
24 | }; | ||
25 | "acorn-jsx-3.0.1" = { | ||
26 | name = "acorn-jsx"; | ||
27 | packageName = "acorn-jsx"; | ||
28 | version = "3.0.1"; | ||
29 | src = fetchurl { | ||
30 | url = "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-3.0.1.tgz"; | ||
31 | sha1 = "afdf9488fb1ecefc8348f6fb22f464e32a58b36b"; | ||
32 | }; | ||
33 | }; | ||
34 | "ajv-4.11.8" = { | ||
35 | name = "ajv"; | ||
36 | packageName = "ajv"; | ||
37 | version = "4.11.8"; | ||
38 | src = fetchurl { | ||
39 | url = "https://registry.npmjs.org/ajv/-/ajv-4.11.8.tgz"; | ||
40 | sha1 = "82ffb02b29e662ae53bdc20af15947706739c536"; | ||
41 | }; | ||
42 | }; | ||
43 | "ajv-keywords-1.5.1" = { | ||
44 | name = "ajv-keywords"; | ||
45 | packageName = "ajv-keywords"; | ||
46 | version = "1.5.1"; | ||
47 | src = fetchurl { | ||
48 | url = "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-1.5.1.tgz"; | ||
49 | sha1 = "314dd0a4b3368fad3dfcdc54ede6171b886daf3c"; | ||
50 | }; | ||
51 | }; | ||
52 | "ansi-escapes-1.4.0" = { | ||
53 | name = "ansi-escapes"; | ||
54 | packageName = "ansi-escapes"; | ||
55 | version = "1.4.0"; | ||
56 | src = fetchurl { | ||
57 | url = "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-1.4.0.tgz"; | ||
58 | sha1 = "d3a8a83b319aa67793662b13e761c7911422306e"; | ||
59 | }; | ||
60 | }; | ||
61 | "ansi-regex-2.1.1" = { | ||
62 | name = "ansi-regex"; | ||
63 | packageName = "ansi-regex"; | ||
64 | version = "2.1.1"; | ||
65 | src = fetchurl { | ||
66 | url = "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz"; | ||
67 | sha1 = "c3b33ab5ee360d86e0e628f0468ae7ef27d654df"; | ||
68 | }; | ||
69 | }; | ||
70 | "ansi-regex-3.0.0" = { | ||
71 | name = "ansi-regex"; | ||
72 | packageName = "ansi-regex"; | ||
73 | version = "3.0.0"; | ||
74 | src = fetchurl { | ||
75 | url = "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz"; | ||
76 | sha1 = "ed0317c322064f79466c02966bddb605ab37d998"; | ||
77 | }; | ||
78 | }; | ||
79 | "ansi-styles-2.2.1" = { | ||
80 | name = "ansi-styles"; | ||
81 | packageName = "ansi-styles"; | ||
82 | version = "2.2.1"; | ||
83 | src = fetchurl { | ||
84 | url = "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz"; | ||
85 | sha1 = "b432dd3358b634cf75e1e4664368240533c1ddbe"; | ||
86 | }; | ||
87 | }; | ||
88 | "ansi-styles-3.2.0" = { | ||
89 | name = "ansi-styles"; | ||
90 | packageName = "ansi-styles"; | ||
91 | version = "3.2.0"; | ||
92 | src = fetchurl { | ||
93 | url = "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz"; | ||
94 | sha512 = "NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug=="; | ||
95 | }; | ||
96 | }; | ||
97 | "argparse-1.0.9" = { | ||
98 | name = "argparse"; | ||
99 | packageName = "argparse"; | ||
100 | version = "1.0.9"; | ||
101 | src = fetchurl { | ||
102 | url = "https://registry.npmjs.org/argparse/-/argparse-1.0.9.tgz"; | ||
103 | sha1 = "73d83bc263f86e97f8cc4f6bae1b0e90a7d22c86"; | ||
104 | }; | ||
105 | }; | ||
106 | "array-union-1.0.2" = { | ||
107 | name = "array-union"; | ||
108 | packageName = "array-union"; | ||
109 | version = "1.0.2"; | ||
110 | src = fetchurl { | ||
111 | url = "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz"; | ||
112 | sha1 = "9a34410e4f4e3da23dea375be5be70f24778ec39"; | ||
113 | }; | ||
114 | }; | ||
115 | "array-uniq-1.0.3" = { | ||
116 | name = "array-uniq"; | ||
117 | packageName = "array-uniq"; | ||
118 | version = "1.0.3"; | ||
119 | src = fetchurl { | ||
120 | url = "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz"; | ||
121 | sha1 = "af6ac877a25cc7f74e058894753858dfdb24fdb6"; | ||
122 | }; | ||
123 | }; | ||
124 | "arrify-1.0.1" = { | ||
125 | name = "arrify"; | ||
126 | packageName = "arrify"; | ||
127 | version = "1.0.1"; | ||
128 | src = fetchurl { | ||
129 | url = "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz"; | ||
130 | sha1 = "898508da2226f380df904728456849c1501a4b0d"; | ||
131 | }; | ||
132 | }; | ||
133 | "async-2.6.0" = { | ||
134 | name = "async"; | ||
135 | packageName = "async"; | ||
136 | version = "2.6.0"; | ||
137 | src = fetchurl { | ||
138 | url = "https://registry.npmjs.org/async/-/async-2.6.0.tgz"; | ||
139 | sha512 = "xAfGg1/NTLBBKlHFmnd7PlmUW9KhVQIUuSrYem9xzFUZy13ScvtyGGejaae9iAVRiRq9+Cx7DPFaAAhCpyxyPw=="; | ||
140 | }; | ||
141 | }; | ||
142 | "babel-code-frame-6.26.0" = { | ||
143 | name = "babel-code-frame"; | ||
144 | packageName = "babel-code-frame"; | ||
145 | version = "6.26.0"; | ||
146 | src = fetchurl { | ||
147 | url = "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz"; | ||
148 | sha1 = "63fd43f7dc1e3bb7ce35947db8fe369a3f58c74b"; | ||
149 | }; | ||
150 | }; | ||
151 | "babel-polyfill-6.26.0" = { | ||
152 | name = "babel-polyfill"; | ||
153 | packageName = "babel-polyfill"; | ||
154 | version = "6.26.0"; | ||
155 | src = fetchurl { | ||
156 | url = "https://registry.npmjs.org/babel-polyfill/-/babel-polyfill-6.26.0.tgz"; | ||
157 | sha1 = "379937abc67d7895970adc621f284cd966cf2153"; | ||
158 | }; | ||
159 | }; | ||
160 | "babel-runtime-6.26.0" = { | ||
161 | name = "babel-runtime"; | ||
162 | packageName = "babel-runtime"; | ||
163 | version = "6.26.0"; | ||
164 | src = fetchurl { | ||
165 | url = "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz"; | ||
166 | sha1 = "965c7058668e82b55d7bfe04ff2337bc8b5647fe"; | ||
167 | }; | ||
168 | }; | ||
169 | "balanced-match-1.0.0" = { | ||
170 | name = "balanced-match"; | ||
171 | packageName = "balanced-match"; | ||
172 | version = "1.0.0"; | ||
173 | src = fetchurl { | ||
174 | url = "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz"; | ||
175 | sha1 = "89b4d199ab2bee49de164ea02b89ce462d71b767"; | ||
176 | }; | ||
177 | }; | ||
178 | "bignumber.js-4.1.0" = { | ||
179 | name = "bignumber.js"; | ||
180 | packageName = "bignumber.js"; | ||
181 | version = "4.1.0"; | ||
182 | src = fetchurl { | ||
183 | url = "https://registry.npmjs.org/bignumber.js/-/bignumber.js-4.1.0.tgz"; | ||
184 | sha512 = "eJzYkFYy9L4JzXsbymsFn3p54D+llV27oTQ+ziJG7WFRheJcNZilgVXMG0LoZtlQSKBsJdWtLFqOD0u+U0jZKA=="; | ||
185 | }; | ||
186 | }; | ||
187 | "bluebird-3.5.1" = { | ||
188 | name = "bluebird"; | ||
189 | packageName = "bluebird"; | ||
190 | version = "3.5.1"; | ||
191 | src = fetchurl { | ||
192 | url = "https://registry.npmjs.org/bluebird/-/bluebird-3.5.1.tgz"; | ||
193 | sha512 = "MKiLiV+I1AA596t9w1sQJ8jkiSr5+ZKi0WKrYGUn6d1Fx+Ij4tIj+m2WMQSGczs5jZVxV339chE8iwk6F64wjA=="; | ||
194 | }; | ||
195 | }; | ||
196 | "brace-expansion-1.1.8" = { | ||
197 | name = "brace-expansion"; | ||
198 | packageName = "brace-expansion"; | ||
199 | version = "1.1.8"; | ||
200 | src = fetchurl { | ||
201 | url = "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.8.tgz"; | ||
202 | sha1 = "c07b211c7c952ec1f8efd51a77ef0d1d3990a292"; | ||
203 | }; | ||
204 | }; | ||
205 | "caller-path-0.1.0" = { | ||
206 | name = "caller-path"; | ||
207 | packageName = "caller-path"; | ||
208 | version = "0.1.0"; | ||
209 | src = fetchurl { | ||
210 | url = "https://registry.npmjs.org/caller-path/-/caller-path-0.1.0.tgz"; | ||
211 | sha1 = "94085ef63581ecd3daa92444a8fe94e82577751f"; | ||
212 | }; | ||
213 | }; | ||
214 | "callsites-0.2.0" = { | ||
215 | name = "callsites"; | ||
216 | packageName = "callsites"; | ||
217 | version = "0.2.0"; | ||
218 | src = fetchurl { | ||
219 | url = "https://registry.npmjs.org/callsites/-/callsites-0.2.0.tgz"; | ||
220 | sha1 = "afab96262910a7f33c19a5775825c69f34e350ca"; | ||
221 | }; | ||
222 | }; | ||
223 | "chalk-1.1.3" = { | ||
224 | name = "chalk"; | ||
225 | packageName = "chalk"; | ||
226 | version = "1.1.3"; | ||
227 | src = fetchurl { | ||
228 | url = "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz"; | ||
229 | sha1 = "a8115c55e4a702fe4d150abd3872822a7e09fc98"; | ||
230 | }; | ||
231 | }; | ||
232 | "chalk-2.3.0" = { | ||
233 | name = "chalk"; | ||
234 | packageName = "chalk"; | ||
235 | version = "2.3.0"; | ||
236 | src = fetchurl { | ||
237 | url = "https://registry.npmjs.org/chalk/-/chalk-2.3.0.tgz"; | ||
238 | sha512 = "Az5zJR2CBujap2rqXGaJKaPHyJ0IrUimvYNX+ncCy8PJP4ltOGTrHUIo097ZaL2zMeKYpiCdqDvS6zdrTFok3Q=="; | ||
239 | }; | ||
240 | }; | ||
241 | "circular-json-0.3.3" = { | ||
242 | name = "circular-json"; | ||
243 | packageName = "circular-json"; | ||
244 | version = "0.3.3"; | ||
245 | src = fetchurl { | ||
246 | url = "https://registry.npmjs.org/circular-json/-/circular-json-0.3.3.tgz"; | ||
247 | sha512 = "UZK3NBx2Mca+b5LsG7bY183pHWt5Y1xts4P3Pz7ENTwGVnJOUWbRb3ocjvX7hx9tq/yTAdclXm9sZ38gNuem4A=="; | ||
248 | }; | ||
249 | }; | ||
250 | "cli-cursor-1.0.2" = { | ||
251 | name = "cli-cursor"; | ||
252 | packageName = "cli-cursor"; | ||
253 | version = "1.0.2"; | ||
254 | src = fetchurl { | ||
255 | url = "https://registry.npmjs.org/cli-cursor/-/cli-cursor-1.0.2.tgz"; | ||
256 | sha1 = "64da3f7d56a54412e59794bd62dc35295e8f2987"; | ||
257 | }; | ||
258 | }; | ||
259 | "cli-width-1.1.1" = { | ||
260 | name = "cli-width"; | ||
261 | packageName = "cli-width"; | ||
262 | version = "1.1.1"; | ||
263 | src = fetchurl { | ||
264 | url = "https://registry.npmjs.org/cli-width/-/cli-width-1.1.1.tgz"; | ||
265 | sha1 = "a4d293ef67ebb7b88d4a4d42c0ccf00c4d1e366d"; | ||
266 | }; | ||
267 | }; | ||
268 | "cli-width-2.2.0" = { | ||
269 | name = "cli-width"; | ||
270 | packageName = "cli-width"; | ||
271 | version = "2.2.0"; | ||
272 | src = fetchurl { | ||
273 | url = "https://registry.npmjs.org/cli-width/-/cli-width-2.2.0.tgz"; | ||
274 | sha1 = "ff19ede8a9a5e579324147b0c11f0fbcbabed639"; | ||
275 | }; | ||
276 | }; | ||
277 | "co-4.6.0" = { | ||
278 | name = "co"; | ||
279 | packageName = "co"; | ||
280 | version = "4.6.0"; | ||
281 | src = fetchurl { | ||
282 | url = "https://registry.npmjs.org/co/-/co-4.6.0.tgz"; | ||
283 | sha1 = "6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184"; | ||
284 | }; | ||
285 | }; | ||
286 | "code-point-at-1.1.0" = { | ||
287 | name = "code-point-at"; | ||
288 | packageName = "code-point-at"; | ||
289 | version = "1.1.0"; | ||
290 | src = fetchurl { | ||
291 | url = "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz"; | ||
292 | sha1 = "0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77"; | ||
293 | }; | ||
294 | }; | ||
295 | "color-convert-1.9.1" = { | ||
296 | name = "color-convert"; | ||
297 | packageName = "color-convert"; | ||
298 | version = "1.9.1"; | ||
299 | src = fetchurl { | ||
300 | url = "https://registry.npmjs.org/color-convert/-/color-convert-1.9.1.tgz"; | ||
301 | sha512 = "mjGanIiwQJskCC18rPR6OmrZ6fm2Lc7PeGFYwCmy5J34wC6F1PzdGL6xeMfmgicfYcNLGuVFA3WzXtIDCQSZxQ=="; | ||
302 | }; | ||
303 | }; | ||
304 | "color-name-1.1.3" = { | ||
305 | name = "color-name"; | ||
306 | packageName = "color-name"; | ||
307 | version = "1.1.3"; | ||
308 | src = fetchurl { | ||
309 | url = "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz"; | ||
310 | sha1 = "a7d0558bd89c42f795dd42328f740831ca53bc25"; | ||
311 | }; | ||
312 | }; | ||
313 | "colors-1.1.2" = { | ||
314 | name = "colors"; | ||
315 | packageName = "colors"; | ||
316 | version = "1.1.2"; | ||
317 | src = fetchurl { | ||
318 | url = "https://registry.npmjs.org/colors/-/colors-1.1.2.tgz"; | ||
319 | sha1 = "168a4701756b6a7f51a12ce0c97bfa28c084ed63"; | ||
320 | }; | ||
321 | }; | ||
322 | "concat-map-0.0.1" = { | ||
323 | name = "concat-map"; | ||
324 | packageName = "concat-map"; | ||
325 | version = "0.0.1"; | ||
326 | src = fetchurl { | ||
327 | url = "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz"; | ||
328 | sha1 = "d8a96bd77fd68df7793a73036a3ba0d5405d477b"; | ||
329 | }; | ||
330 | }; | ||
331 | "concat-stream-1.6.0" = { | ||
332 | name = "concat-stream"; | ||
333 | packageName = "concat-stream"; | ||
334 | version = "1.6.0"; | ||
335 | src = fetchurl { | ||
336 | url = "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.0.tgz"; | ||
337 | sha1 = "0aac662fd52be78964d5532f694784e70110acf7"; | ||
338 | }; | ||
339 | }; | ||
340 | "core-js-2.5.3" = { | ||
341 | name = "core-js"; | ||
342 | packageName = "core-js"; | ||
343 | version = "2.5.3"; | ||
344 | src = fetchurl { | ||
345 | url = "https://registry.npmjs.org/core-js/-/core-js-2.5.3.tgz"; | ||
346 | sha1 = "8acc38345824f16d8365b7c9b4259168e8ed603e"; | ||
347 | }; | ||
348 | }; | ||
349 | "core-util-is-1.0.2" = { | ||
350 | name = "core-util-is"; | ||
351 | packageName = "core-util-is"; | ||
352 | version = "1.0.2"; | ||
353 | src = fetchurl { | ||
354 | url = "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz"; | ||
355 | sha1 = "b5fd54220aa2bc5ab57aab7140c940754503c1a7"; | ||
356 | }; | ||
357 | }; | ||
358 | "crypto-js-3.1.9-1" = { | ||
359 | name = "crypto-js"; | ||
360 | packageName = "crypto-js"; | ||
361 | version = "3.1.9-1"; | ||
362 | src = fetchurl { | ||
363 | url = "https://registry.npmjs.org/crypto-js/-/crypto-js-3.1.9-1.tgz"; | ||
364 | sha1 = "fda19e761fc077e01ffbfdc6e9fdfc59e8806cd8"; | ||
365 | }; | ||
366 | }; | ||
367 | "d-1.0.0" = { | ||
368 | name = "d"; | ||
369 | packageName = "d"; | ||
370 | version = "1.0.0"; | ||
371 | src = fetchurl { | ||
372 | url = "https://registry.npmjs.org/d/-/d-1.0.0.tgz"; | ||
373 | sha1 = "754bb5bfe55451da69a58b94d45f4c5b0462d58f"; | ||
374 | }; | ||
375 | }; | ||
376 | "debug-2.6.9" = { | ||
377 | name = "debug"; | ||
378 | packageName = "debug"; | ||
379 | version = "2.6.9"; | ||
380 | src = fetchurl { | ||
381 | url = "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz"; | ||
382 | sha512 = "bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA=="; | ||
383 | }; | ||
384 | }; | ||
385 | "deep-is-0.1.3" = { | ||
386 | name = "deep-is"; | ||
387 | packageName = "deep-is"; | ||
388 | version = "0.1.3"; | ||
389 | src = fetchurl { | ||
390 | url = "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz"; | ||
391 | sha1 = "b369d6fb5dbc13eecf524f91b070feedc357cf34"; | ||
392 | }; | ||
393 | }; | ||
394 | "del-2.2.2" = { | ||
395 | name = "del"; | ||
396 | packageName = "del"; | ||
397 | version = "2.2.2"; | ||
398 | src = fetchurl { | ||
399 | url = "https://registry.npmjs.org/del/-/del-2.2.2.tgz"; | ||
400 | sha1 = "c12c981d067846c84bcaf862cff930d907ffd1a8"; | ||
401 | }; | ||
402 | }; | ||
403 | "doctrine-2.0.2" = { | ||
404 | name = "doctrine"; | ||
405 | packageName = "doctrine"; | ||
406 | version = "2.0.2"; | ||
407 | src = fetchurl { | ||
408 | url = "https://registry.npmjs.org/doctrine/-/doctrine-2.0.2.tgz"; | ||
409 | sha512 = "y0tm5Pq6ywp3qSTZ1vPgVdAnbDEoeoc5wlOHXoY1c4Wug/a7JvqHIl7BTvwodaHmejWkK/9dSb3sCYfyo/om8A=="; | ||
410 | }; | ||
411 | }; | ||
412 | "encoding-0.1.12" = { | ||
413 | name = "encoding"; | ||
414 | packageName = "encoding"; | ||
415 | version = "0.1.12"; | ||
416 | src = fetchurl { | ||
417 | url = "https://registry.npmjs.org/encoding/-/encoding-0.1.12.tgz"; | ||
418 | sha1 = "538b66f3ee62cd1ab51ec323829d1f9480c74beb"; | ||
419 | }; | ||
420 | }; | ||
421 | "es5-ext-0.10.37" = { | ||
422 | name = "es5-ext"; | ||
423 | packageName = "es5-ext"; | ||
424 | version = "0.10.37"; | ||
425 | src = fetchurl { | ||
426 | url = "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.37.tgz"; | ||
427 | sha1 = "0ee741d148b80069ba27d020393756af257defc3"; | ||
428 | }; | ||
429 | }; | ||
430 | "es6-iterator-2.0.3" = { | ||
431 | name = "es6-iterator"; | ||
432 | packageName = "es6-iterator"; | ||
433 | version = "2.0.3"; | ||
434 | src = fetchurl { | ||
435 | url = "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz"; | ||
436 | sha1 = "a7de889141a05a94b0854403b2d0a0fbfa98f3b7"; | ||
437 | }; | ||
438 | }; | ||
439 | "es6-map-0.1.5" = { | ||
440 | name = "es6-map"; | ||
441 | packageName = "es6-map"; | ||
442 | version = "0.1.5"; | ||
443 | src = fetchurl { | ||
444 | url = "https://registry.npmjs.org/es6-map/-/es6-map-0.1.5.tgz"; | ||
445 | sha1 = "9136e0503dcc06a301690f0bb14ff4e364e949f0"; | ||
446 | }; | ||
447 | }; | ||
448 | "es6-set-0.1.5" = { | ||
449 | name = "es6-set"; | ||
450 | packageName = "es6-set"; | ||
451 | version = "0.1.5"; | ||
452 | src = fetchurl { | ||
453 | url = "https://registry.npmjs.org/es6-set/-/es6-set-0.1.5.tgz"; | ||
454 | sha1 = "d2b3ec5d4d800ced818db538d28974db0a73ccb1"; | ||
455 | }; | ||
456 | }; | ||
457 | "es6-symbol-3.1.1" = { | ||
458 | name = "es6-symbol"; | ||
459 | packageName = "es6-symbol"; | ||
460 | version = "3.1.1"; | ||
461 | src = fetchurl { | ||
462 | url = "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.1.tgz"; | ||
463 | sha1 = "bf00ef4fdab6ba1b46ecb7b629b4c7ed5715cc77"; | ||
464 | }; | ||
465 | }; | ||
466 | "es6-weak-map-2.0.2" = { | ||
467 | name = "es6-weak-map"; | ||
468 | packageName = "es6-weak-map"; | ||
469 | version = "2.0.2"; | ||
470 | src = fetchurl { | ||
471 | url = "https://registry.npmjs.org/es6-weak-map/-/es6-weak-map-2.0.2.tgz"; | ||
472 | sha1 = "5e3ab32251ffd1538a1f8e5ffa1357772f92d96f"; | ||
473 | }; | ||
474 | }; | ||
475 | "escape-string-regexp-1.0.5" = { | ||
476 | name = "escape-string-regexp"; | ||
477 | packageName = "escape-string-regexp"; | ||
478 | version = "1.0.5"; | ||
479 | src = fetchurl { | ||
480 | url = "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz"; | ||
481 | sha1 = "1b61c0562190a8dff6ae3bb2cf0200ca130b86d4"; | ||
482 | }; | ||
483 | }; | ||
484 | "escope-3.6.0" = { | ||
485 | name = "escope"; | ||
486 | packageName = "escope"; | ||
487 | version = "3.6.0"; | ||
488 | src = fetchurl { | ||
489 | url = "https://registry.npmjs.org/escope/-/escope-3.6.0.tgz"; | ||
490 | sha1 = "e01975e812781a163a6dadfdd80398dc64c889c3"; | ||
491 | }; | ||
492 | }; | ||
493 | "eslint-3.19.0" = { | ||
494 | name = "eslint"; | ||
495 | packageName = "eslint"; | ||
496 | version = "3.19.0"; | ||
497 | src = fetchurl { | ||
498 | url = "https://registry.npmjs.org/eslint/-/eslint-3.19.0.tgz"; | ||
499 | sha1 = "c8fc6201c7f40dd08941b87c085767386a679acc"; | ||
500 | }; | ||
501 | }; | ||
502 | "espree-3.5.2" = { | ||
503 | name = "espree"; | ||
504 | packageName = "espree"; | ||
505 | version = "3.5.2"; | ||
506 | src = fetchurl { | ||
507 | url = "https://registry.npmjs.org/espree/-/espree-3.5.2.tgz"; | ||
508 | sha512 = "sadKeYwaR/aJ3stC2CdvgXu1T16TdYN+qwCpcWbMnGJ8s0zNWemzrvb2GbD4OhmJ/fwpJjudThAlLobGbWZbCQ=="; | ||
509 | }; | ||
510 | }; | ||
511 | "esprima-4.0.0" = { | ||
512 | name = "esprima"; | ||
513 | packageName = "esprima"; | ||
514 | version = "4.0.0"; | ||
515 | src = fetchurl { | ||
516 | url = "https://registry.npmjs.org/esprima/-/esprima-4.0.0.tgz"; | ||
517 | sha512 = "oftTcaMu/EGrEIu904mWteKIv8vMuOgGYo7EhVJJN00R/EED9DCua/xxHRdYnKtcECzVg7xOWhflvJMnqcFZjw=="; | ||
518 | }; | ||
519 | }; | ||
520 | "esquery-1.0.0" = { | ||
521 | name = "esquery"; | ||
522 | packageName = "esquery"; | ||
523 | version = "1.0.0"; | ||
524 | src = fetchurl { | ||
525 | url = "https://registry.npmjs.org/esquery/-/esquery-1.0.0.tgz"; | ||
526 | sha1 = "cfba8b57d7fba93f17298a8a006a04cda13d80fa"; | ||
527 | }; | ||
528 | }; | ||
529 | "esrecurse-4.2.0" = { | ||
530 | name = "esrecurse"; | ||
531 | packageName = "esrecurse"; | ||
532 | version = "4.2.0"; | ||
533 | src = fetchurl { | ||
534 | url = "https://registry.npmjs.org/esrecurse/-/esrecurse-4.2.0.tgz"; | ||
535 | sha1 = "fa9568d98d3823f9a41d91e902dcab9ea6e5b163"; | ||
536 | }; | ||
537 | }; | ||
538 | "estraverse-4.2.0" = { | ||
539 | name = "estraverse"; | ||
540 | packageName = "estraverse"; | ||
541 | version = "4.2.0"; | ||
542 | src = fetchurl { | ||
543 | url = "https://registry.npmjs.org/estraverse/-/estraverse-4.2.0.tgz"; | ||
544 | sha1 = "0dee3fed31fcd469618ce7342099fc1afa0bdb13"; | ||
545 | }; | ||
546 | }; | ||
547 | "esutils-2.0.2" = { | ||
548 | name = "esutils"; | ||
549 | packageName = "esutils"; | ||
550 | version = "2.0.2"; | ||
551 | src = fetchurl { | ||
552 | url = "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz"; | ||
553 | sha1 = "0abf4f1caa5bcb1f7a9d8acc6dea4faaa04bac9b"; | ||
554 | }; | ||
555 | }; | ||
556 | "event-emitter-0.3.5" = { | ||
557 | name = "event-emitter"; | ||
558 | packageName = "event-emitter"; | ||
559 | version = "0.3.5"; | ||
560 | src = fetchurl { | ||
561 | url = "https://registry.npmjs.org/event-emitter/-/event-emitter-0.3.5.tgz"; | ||
562 | sha1 = "df8c69eef1647923c7157b9ce83840610b02cc39"; | ||
563 | }; | ||
564 | }; | ||
565 | "exit-hook-1.1.1" = { | ||
566 | name = "exit-hook"; | ||
567 | packageName = "exit-hook"; | ||
568 | version = "1.1.1"; | ||
569 | src = fetchurl { | ||
570 | url = "https://registry.npmjs.org/exit-hook/-/exit-hook-1.1.1.tgz"; | ||
571 | sha1 = "f05ca233b48c05d54fff07765df8507e95c02ff8"; | ||
572 | }; | ||
573 | }; | ||
574 | "fast-levenshtein-2.0.6" = { | ||
575 | name = "fast-levenshtein"; | ||
576 | packageName = "fast-levenshtein"; | ||
577 | version = "2.0.6"; | ||
578 | src = fetchurl { | ||
579 | url = "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz"; | ||
580 | sha1 = "3d8a5c66883a16a30ca8643e851f19baa7797917"; | ||
581 | }; | ||
582 | }; | ||
583 | "figures-1.7.0" = { | ||
584 | name = "figures"; | ||
585 | packageName = "figures"; | ||
586 | version = "1.7.0"; | ||
587 | src = fetchurl { | ||
588 | url = "https://registry.npmjs.org/figures/-/figures-1.7.0.tgz"; | ||
589 | sha1 = "cbe1e3affcf1cd44b80cadfed28dc793a9701d2e"; | ||
590 | }; | ||
591 | }; | ||
592 | "file-entry-cache-2.0.0" = { | ||
593 | name = "file-entry-cache"; | ||
594 | packageName = "file-entry-cache"; | ||
595 | version = "2.0.0"; | ||
596 | src = fetchurl { | ||
597 | url = "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-2.0.0.tgz"; | ||
598 | sha1 = "c392990c3e684783d838b8c84a45d8a048458361"; | ||
599 | }; | ||
600 | }; | ||
601 | "flat-cache-1.3.0" = { | ||
602 | name = "flat-cache"; | ||
603 | packageName = "flat-cache"; | ||
604 | version = "1.3.0"; | ||
605 | src = fetchurl { | ||
606 | url = "https://registry.npmjs.org/flat-cache/-/flat-cache-1.3.0.tgz"; | ||
607 | sha1 = "d3030b32b38154f4e3b7e9c709f490f7ef97c481"; | ||
608 | }; | ||
609 | }; | ||
610 | "fs.realpath-1.0.0" = { | ||
611 | name = "fs.realpath"; | ||
612 | packageName = "fs.realpath"; | ||
613 | version = "1.0.0"; | ||
614 | src = fetchurl { | ||
615 | url = "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz"; | ||
616 | sha1 = "1504ad2523158caa40db4a2787cb01411994ea4f"; | ||
617 | }; | ||
618 | }; | ||
619 | "generate-function-2.0.0" = { | ||
620 | name = "generate-function"; | ||
621 | packageName = "generate-function"; | ||
622 | version = "2.0.0"; | ||
623 | src = fetchurl { | ||
624 | url = "https://registry.npmjs.org/generate-function/-/generate-function-2.0.0.tgz"; | ||
625 | sha1 = "6858fe7c0969b7d4e9093337647ac79f60dfbe74"; | ||
626 | }; | ||
627 | }; | ||
628 | "generate-object-property-1.2.0" = { | ||
629 | name = "generate-object-property"; | ||
630 | packageName = "generate-object-property"; | ||
631 | version = "1.2.0"; | ||
632 | src = fetchurl { | ||
633 | url = "https://registry.npmjs.org/generate-object-property/-/generate-object-property-1.2.0.tgz"; | ||
634 | sha1 = "9c0e1c40308ce804f4783618b937fa88f99d50d0"; | ||
635 | }; | ||
636 | }; | ||
637 | "glob-7.1.2" = { | ||
638 | name = "glob"; | ||
639 | packageName = "glob"; | ||
640 | version = "7.1.2"; | ||
641 | src = fetchurl { | ||
642 | url = "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz"; | ||
643 | sha512 = "MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ=="; | ||
644 | }; | ||
645 | }; | ||
646 | "globals-9.18.0" = { | ||
647 | name = "globals"; | ||
648 | packageName = "globals"; | ||
649 | version = "9.18.0"; | ||
650 | src = fetchurl { | ||
651 | url = "https://registry.npmjs.org/globals/-/globals-9.18.0.tgz"; | ||
652 | sha512 = "S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ=="; | ||
653 | }; | ||
654 | }; | ||
655 | "globby-5.0.0" = { | ||
656 | name = "globby"; | ||
657 | packageName = "globby"; | ||
658 | version = "5.0.0"; | ||
659 | src = fetchurl { | ||
660 | url = "https://registry.npmjs.org/globby/-/globby-5.0.0.tgz"; | ||
661 | sha1 = "ebd84667ca0dbb330b99bcfc68eac2bc54370e0d"; | ||
662 | }; | ||
663 | }; | ||
664 | "graceful-fs-4.1.11" = { | ||
665 | name = "graceful-fs"; | ||
666 | packageName = "graceful-fs"; | ||
667 | version = "4.1.11"; | ||
668 | src = fetchurl { | ||
669 | url = "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz"; | ||
670 | sha1 = "0e8bdfe4d1ddb8854d64e04ea7c00e2a026e5658"; | ||
671 | }; | ||
672 | }; | ||
673 | "has-ansi-2.0.0" = { | ||
674 | name = "has-ansi"; | ||
675 | packageName = "has-ansi"; | ||
676 | version = "2.0.0"; | ||
677 | src = fetchurl { | ||
678 | url = "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz"; | ||
679 | sha1 = "34f5049ce1ecdf2b0649af3ef24e45ed35416d91"; | ||
680 | }; | ||
681 | }; | ||
682 | "has-flag-2.0.0" = { | ||
683 | name = "has-flag"; | ||
684 | packageName = "has-flag"; | ||
685 | version = "2.0.0"; | ||
686 | src = fetchurl { | ||
687 | url = "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz"; | ||
688 | sha1 = "e8207af1cc7b30d446cc70b734b5e8be18f88d51"; | ||
689 | }; | ||
690 | }; | ||
691 | "iconv-lite-0.4.19" = { | ||
692 | name = "iconv-lite"; | ||
693 | packageName = "iconv-lite"; | ||
694 | version = "0.4.19"; | ||
695 | src = fetchurl { | ||
696 | url = "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.19.tgz"; | ||
697 | sha512 = "oTZqweIP51xaGPI4uPa56/Pri/480R+mo7SeU+YETByQNhDG55ycFyNLIgta9vXhILrxXDmF7ZGhqZIcuN0gJQ=="; | ||
698 | }; | ||
699 | }; | ||
700 | "ignore-3.3.7" = { | ||
701 | name = "ignore"; | ||
702 | packageName = "ignore"; | ||
703 | version = "3.3.7"; | ||
704 | src = fetchurl { | ||
705 | url = "https://registry.npmjs.org/ignore/-/ignore-3.3.7.tgz"; | ||
706 | sha512 = "YGG3ejvBNHRqu0559EOxxNFihD0AjpvHlC/pdGKd3X3ofe+CoJkYazwNJYTNebqpPKN+VVQbh4ZFn1DivMNuHA=="; | ||
707 | }; | ||
708 | }; | ||
709 | "imurmurhash-0.1.4" = { | ||
710 | name = "imurmurhash"; | ||
711 | packageName = "imurmurhash"; | ||
712 | version = "0.1.4"; | ||
713 | src = fetchurl { | ||
714 | url = "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz"; | ||
715 | sha1 = "9218b9b2b928a238b13dc4fb6b6d576f231453ea"; | ||
716 | }; | ||
717 | }; | ||
718 | "in-publish-2.0.0" = { | ||
719 | name = "in-publish"; | ||
720 | packageName = "in-publish"; | ||
721 | version = "2.0.0"; | ||
722 | src = fetchurl { | ||
723 | url = "https://registry.npmjs.org/in-publish/-/in-publish-2.0.0.tgz"; | ||
724 | sha1 = "e20ff5e3a2afc2690320b6dc552682a9c7fadf51"; | ||
725 | }; | ||
726 | }; | ||
727 | "inflight-1.0.6" = { | ||
728 | name = "inflight"; | ||
729 | packageName = "inflight"; | ||
730 | version = "1.0.6"; | ||
731 | src = fetchurl { | ||
732 | url = "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz"; | ||
733 | sha1 = "49bd6331d7d02d0c09bc910a1075ba8165b56df9"; | ||
734 | }; | ||
735 | }; | ||
736 | "inherits-2.0.3" = { | ||
737 | name = "inherits"; | ||
738 | packageName = "inherits"; | ||
739 | version = "2.0.3"; | ||
740 | src = fetchurl { | ||
741 | url = "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz"; | ||
742 | sha1 = "633c2c83e3da42a502f52466022480f4208261de"; | ||
743 | }; | ||
744 | }; | ||
745 | "inquirer-0.11.0" = { | ||
746 | name = "inquirer"; | ||
747 | packageName = "inquirer"; | ||
748 | version = "0.11.0"; | ||
749 | src = fetchurl { | ||
750 | url = "https://registry.npmjs.org/inquirer/-/inquirer-0.11.0.tgz"; | ||
751 | sha1 = "7448bfa924092af311d47173bbab990cae2bb027"; | ||
752 | }; | ||
753 | }; | ||
754 | "inquirer-0.12.0" = { | ||
755 | name = "inquirer"; | ||
756 | packageName = "inquirer"; | ||
757 | version = "0.12.0"; | ||
758 | src = fetchurl { | ||
759 | url = "https://registry.npmjs.org/inquirer/-/inquirer-0.12.0.tgz"; | ||
760 | sha1 = "1ef2bfd63504df0bc75785fff8c2c41df12f077e"; | ||
761 | }; | ||
762 | }; | ||
763 | "install-0.10.4" = { | ||
764 | name = "install"; | ||
765 | packageName = "install"; | ||
766 | version = "0.10.4"; | ||
767 | src = fetchurl { | ||
768 | url = "https://registry.npmjs.org/install/-/install-0.10.4.tgz"; | ||
769 | sha512 = "+IRyOastuPmLVx9zlVXJoKErSqz1Ma5at9A7S8yfsj3W+Kg95faPoh3bPDtMrZ/grz4PRmXzrswmlzfLlYyLOw=="; | ||
770 | }; | ||
771 | }; | ||
772 | "interpret-1.1.0" = { | ||
773 | name = "interpret"; | ||
774 | packageName = "interpret"; | ||
775 | version = "1.1.0"; | ||
776 | src = fetchurl { | ||
777 | url = "https://registry.npmjs.org/interpret/-/interpret-1.1.0.tgz"; | ||
778 | sha1 = "7ed1b1410c6a0e0f78cf95d3b8440c63f78b8614"; | ||
779 | }; | ||
780 | }; | ||
781 | "iota.lib.js-0.4.6" = { | ||
782 | name = "iota.lib.js"; | ||
783 | packageName = "iota.lib.js"; | ||
784 | version = "0.4.6"; | ||
785 | src = fetchurl { | ||
786 | url = "https://registry.npmjs.org/iota.lib.js/-/iota.lib.js-0.4.6.tgz"; | ||
787 | sha1 = "47afdc03d57c7f55d2f58f068db492df6bc6e9bb"; | ||
788 | }; | ||
789 | }; | ||
790 | "is-fullwidth-code-point-1.0.0" = { | ||
791 | name = "is-fullwidth-code-point"; | ||
792 | packageName = "is-fullwidth-code-point"; | ||
793 | version = "1.0.0"; | ||
794 | src = fetchurl { | ||
795 | url = "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz"; | ||
796 | sha1 = "ef9e31386f031a7f0d643af82fde50c457ef00cb"; | ||
797 | }; | ||
798 | }; | ||
799 | "is-fullwidth-code-point-2.0.0" = { | ||
800 | name = "is-fullwidth-code-point"; | ||
801 | packageName = "is-fullwidth-code-point"; | ||
802 | version = "2.0.0"; | ||
803 | src = fetchurl { | ||
804 | url = "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz"; | ||
805 | sha1 = "a3b30a5c4f199183167aaab93beefae3ddfb654f"; | ||
806 | }; | ||
807 | }; | ||
808 | "is-my-json-valid-2.16.1" = { | ||
809 | name = "is-my-json-valid"; | ||
810 | packageName = "is-my-json-valid"; | ||
811 | version = "2.16.1"; | ||
812 | src = fetchurl { | ||
813 | url = "https://registry.npmjs.org/is-my-json-valid/-/is-my-json-valid-2.16.1.tgz"; | ||
814 | sha512 = "ochPsqWS1WXj8ZnMIV0vnNXooaMhp7cyL4FMSIPKTtnV0Ha/T19G2b9kkhcNsabV9bxYkze7/aLZJb/bYuFduQ=="; | ||
815 | }; | ||
816 | }; | ||
817 | "is-path-cwd-1.0.0" = { | ||
818 | name = "is-path-cwd"; | ||
819 | packageName = "is-path-cwd"; | ||
820 | version = "1.0.0"; | ||
821 | src = fetchurl { | ||
822 | url = "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-1.0.0.tgz"; | ||
823 | sha1 = "d225ec23132e89edd38fda767472e62e65f1106d"; | ||
824 | }; | ||
825 | }; | ||
826 | "is-path-in-cwd-1.0.0" = { | ||
827 | name = "is-path-in-cwd"; | ||
828 | packageName = "is-path-in-cwd"; | ||
829 | version = "1.0.0"; | ||
830 | src = fetchurl { | ||
831 | url = "https://registry.npmjs.org/is-path-in-cwd/-/is-path-in-cwd-1.0.0.tgz"; | ||
832 | sha1 = "6477582b8214d602346094567003be8a9eac04dc"; | ||
833 | }; | ||
834 | }; | ||
835 | "is-path-inside-1.0.1" = { | ||
836 | name = "is-path-inside"; | ||
837 | packageName = "is-path-inside"; | ||
838 | version = "1.0.1"; | ||
839 | src = fetchurl { | ||
840 | url = "https://registry.npmjs.org/is-path-inside/-/is-path-inside-1.0.1.tgz"; | ||
841 | sha1 = "8ef5b7de50437a3fdca6b4e865ef7aa55cb48036"; | ||
842 | }; | ||
843 | }; | ||
844 | "is-property-1.0.2" = { | ||
845 | name = "is-property"; | ||
846 | packageName = "is-property"; | ||
847 | version = "1.0.2"; | ||
848 | src = fetchurl { | ||
849 | url = "https://registry.npmjs.org/is-property/-/is-property-1.0.2.tgz"; | ||
850 | sha1 = "57fe1c4e48474edd65b09911f26b1cd4095dda84"; | ||
851 | }; | ||
852 | }; | ||
853 | "is-resolvable-1.0.1" = { | ||
854 | name = "is-resolvable"; | ||
855 | packageName = "is-resolvable"; | ||
856 | version = "1.0.1"; | ||
857 | src = fetchurl { | ||
858 | url = "https://registry.npmjs.org/is-resolvable/-/is-resolvable-1.0.1.tgz"; | ||
859 | sha512 = "y5CXYbzvB3jTnWAZH1Nl7ykUWb6T3BcTs56HUruwBf8MhF56n1HWqhDWnVFo8GHrUPDgvUUNVhrc2U8W7iqz5g=="; | ||
860 | }; | ||
861 | }; | ||
862 | "is-stream-1.1.0" = { | ||
863 | name = "is-stream"; | ||
864 | packageName = "is-stream"; | ||
865 | version = "1.1.0"; | ||
866 | src = fetchurl { | ||
867 | url = "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz"; | ||
868 | sha1 = "12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44"; | ||
869 | }; | ||
870 | }; | ||
871 | "isarray-1.0.0" = { | ||
872 | name = "isarray"; | ||
873 | packageName = "isarray"; | ||
874 | version = "1.0.0"; | ||
875 | src = fetchurl { | ||
876 | url = "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz"; | ||
877 | sha1 = "bb935d48582cba168c06834957a54a3e07124f11"; | ||
878 | }; | ||
879 | }; | ||
880 | "js-tokens-3.0.2" = { | ||
881 | name = "js-tokens"; | ||
882 | packageName = "js-tokens"; | ||
883 | version = "3.0.2"; | ||
884 | src = fetchurl { | ||
885 | url = "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz"; | ||
886 | sha1 = "9866df395102130e38f7f996bceb65443209c25b"; | ||
887 | }; | ||
888 | }; | ||
889 | "js-yaml-3.10.0" = { | ||
890 | name = "js-yaml"; | ||
891 | packageName = "js-yaml"; | ||
892 | version = "3.10.0"; | ||
893 | src = fetchurl { | ||
894 | url = "https://registry.npmjs.org/js-yaml/-/js-yaml-3.10.0.tgz"; | ||
895 | sha512 = "O2v52ffjLa9VeM43J4XocZE//WT9N0IiwDa3KSHH7Tu8CtH+1qM8SIZvnsTh6v+4yFy5KUY3BHUVwjpfAWsjIA=="; | ||
896 | }; | ||
897 | }; | ||
898 | "json-stable-stringify-1.0.1" = { | ||
899 | name = "json-stable-stringify"; | ||
900 | packageName = "json-stable-stringify"; | ||
901 | version = "1.0.1"; | ||
902 | src = fetchurl { | ||
903 | url = "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz"; | ||
904 | sha1 = "9a759d39c5f2ff503fd5300646ed445f88c4f9af"; | ||
905 | }; | ||
906 | }; | ||
907 | "json5-0.5.1" = { | ||
908 | name = "json5"; | ||
909 | packageName = "json5"; | ||
910 | version = "0.5.1"; | ||
911 | src = fetchurl { | ||
912 | url = "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz"; | ||
913 | sha1 = "1eade7acc012034ad84e2396767ead9fa5495821"; | ||
914 | }; | ||
915 | }; | ||
916 | "jsonify-0.0.0" = { | ||
917 | name = "jsonify"; | ||
918 | packageName = "jsonify"; | ||
919 | version = "0.0.0"; | ||
920 | src = fetchurl { | ||
921 | url = "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz"; | ||
922 | sha1 = "2c74b6ee41d93ca51b7b5aaee8f503631d252a73"; | ||
923 | }; | ||
924 | }; | ||
925 | "jsonpointer-4.0.1" = { | ||
926 | name = "jsonpointer"; | ||
927 | packageName = "jsonpointer"; | ||
928 | version = "4.0.1"; | ||
929 | src = fetchurl { | ||
930 | url = "https://registry.npmjs.org/jsonpointer/-/jsonpointer-4.0.1.tgz"; | ||
931 | sha1 = "4fd92cb34e0e9db3c89c8622ecf51f9b978c6cb9"; | ||
932 | }; | ||
933 | }; | ||
934 | "left-pad-1.2.0" = { | ||
935 | name = "left-pad"; | ||
936 | packageName = "left-pad"; | ||
937 | version = "1.2.0"; | ||
938 | src = fetchurl { | ||
939 | url = "https://registry.npmjs.org/left-pad/-/left-pad-1.2.0.tgz"; | ||
940 | sha1 = "d30a73c6b8201d8f7d8e7956ba9616087a68e0ee"; | ||
941 | }; | ||
942 | }; | ||
943 | "levn-0.3.0" = { | ||
944 | name = "levn"; | ||
945 | packageName = "levn"; | ||
946 | version = "0.3.0"; | ||
947 | src = fetchurl { | ||
948 | url = "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz"; | ||
949 | sha1 = "3b09924edf9f083c0490fdd4c0bc4421e04764ee"; | ||
950 | }; | ||
951 | }; | ||
952 | "lodash-3.10.1" = { | ||
953 | name = "lodash"; | ||
954 | packageName = "lodash"; | ||
955 | version = "3.10.1"; | ||
956 | src = fetchurl { | ||
957 | url = "https://registry.npmjs.org/lodash/-/lodash-3.10.1.tgz"; | ||
958 | sha1 = "5bf45e8e49ba4189e17d482789dfd15bd140b7b6"; | ||
959 | }; | ||
960 | }; | ||
961 | "lodash-4.17.4" = { | ||
962 | name = "lodash"; | ||
963 | packageName = "lodash"; | ||
964 | version = "4.17.4"; | ||
965 | src = fetchurl { | ||
966 | url = "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz"; | ||
967 | sha1 = "78203a4d1c328ae1d86dca6460e369b57f4055ae"; | ||
968 | }; | ||
969 | }; | ||
970 | "log-update-1.0.2" = { | ||
971 | name = "log-update"; | ||
972 | packageName = "log-update"; | ||
973 | version = "1.0.2"; | ||
974 | src = fetchurl { | ||
975 | url = "https://registry.npmjs.org/log-update/-/log-update-1.0.2.tgz"; | ||
976 | sha1 = "19929f64c4093d2d2e7075a1dad8af59c296b8d1"; | ||
977 | }; | ||
978 | }; | ||
979 | "minimatch-3.0.4" = { | ||
980 | name = "minimatch"; | ||
981 | packageName = "minimatch"; | ||
982 | version = "3.0.4"; | ||
983 | src = fetchurl { | ||
984 | url = "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz"; | ||
985 | sha512 = "yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA=="; | ||
986 | }; | ||
987 | }; | ||
988 | "minimist-0.0.8" = { | ||
989 | name = "minimist"; | ||
990 | packageName = "minimist"; | ||
991 | version = "0.0.8"; | ||
992 | src = fetchurl { | ||
993 | url = "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz"; | ||
994 | sha1 = "857fcabfc3397d2625b8228262e86aa7a011b05d"; | ||
995 | }; | ||
996 | }; | ||
997 | "minimist-1.2.0" = { | ||
998 | name = "minimist"; | ||
999 | packageName = "minimist"; | ||
1000 | version = "1.2.0"; | ||
1001 | src = fetchurl { | ||
1002 | url = "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz"; | ||
1003 | sha1 = "a35008b20f41383eec1fb914f4cd5df79a264284"; | ||
1004 | }; | ||
1005 | }; | ||
1006 | "mkdirp-0.5.1" = { | ||
1007 | name = "mkdirp"; | ||
1008 | packageName = "mkdirp"; | ||
1009 | version = "0.5.1"; | ||
1010 | src = fetchurl { | ||
1011 | url = "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz"; | ||
1012 | sha1 = "30057438eac6cf7f8c4767f38648d6697d75c903"; | ||
1013 | }; | ||
1014 | }; | ||
1015 | "moment-2.20.1" = { | ||
1016 | name = "moment"; | ||
1017 | packageName = "moment"; | ||
1018 | version = "2.20.1"; | ||
1019 | src = fetchurl { | ||
1020 | url = "https://registry.npmjs.org/moment/-/moment-2.20.1.tgz"; | ||
1021 | sha512 = "Yh9y73JRljxW5QxN08Fner68eFLxM5ynNOAw2LbIB1YAGeQzZT8QFSUvkAz609Zf+IHhhaUxqZK8dG3W/+HEvg=="; | ||
1022 | }; | ||
1023 | }; | ||
1024 | "ms-2.0.0" = { | ||
1025 | name = "ms"; | ||
1026 | packageName = "ms"; | ||
1027 | version = "2.0.0"; | ||
1028 | src = fetchurl { | ||
1029 | url = "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz"; | ||
1030 | sha1 = "5608aeadfc00be6c2901df5f9861788de0d597c8"; | ||
1031 | }; | ||
1032 | }; | ||
1033 | "mute-stream-0.0.5" = { | ||
1034 | name = "mute-stream"; | ||
1035 | packageName = "mute-stream"; | ||
1036 | version = "0.0.5"; | ||
1037 | src = fetchurl { | ||
1038 | url = "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.5.tgz"; | ||
1039 | sha1 = "8fbfabb0a98a253d3184331f9e8deb7372fac6c0"; | ||
1040 | }; | ||
1041 | }; | ||
1042 | "natural-compare-1.4.0" = { | ||
1043 | name = "natural-compare"; | ||
1044 | packageName = "natural-compare"; | ||
1045 | version = "1.4.0"; | ||
1046 | src = fetchurl { | ||
1047 | url = "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz"; | ||
1048 | sha1 = "4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7"; | ||
1049 | }; | ||
1050 | }; | ||
1051 | "node-fetch-1.7.3" = { | ||
1052 | name = "node-fetch"; | ||
1053 | packageName = "node-fetch"; | ||
1054 | version = "1.7.3"; | ||
1055 | src = fetchurl { | ||
1056 | url = "https://registry.npmjs.org/node-fetch/-/node-fetch-1.7.3.tgz"; | ||
1057 | sha512 = "NhZ4CsKx7cYm2vSrBAr2PvFOe6sWDf0UYLRqA6svUYg7+/TSfVAu49jYC4BvQ4Sms9SZgdqGBgroqfDhJdTyKQ=="; | ||
1058 | }; | ||
1059 | }; | ||
1060 | "node-localstorage-0.6.0" = { | ||
1061 | name = "node-localstorage"; | ||
1062 | packageName = "node-localstorage"; | ||
1063 | version = "0.6.0"; | ||
1064 | src = fetchurl { | ||
1065 | url = "https://registry.npmjs.org/node-localstorage/-/node-localstorage-0.6.0.tgz"; | ||
1066 | sha1 = "45a0601c6932dfde6644a23361f1be173c75d3af"; | ||
1067 | }; | ||
1068 | }; | ||
1069 | "number-is-nan-1.0.1" = { | ||
1070 | name = "number-is-nan"; | ||
1071 | packageName = "number-is-nan"; | ||
1072 | version = "1.0.1"; | ||
1073 | src = fetchurl { | ||
1074 | url = "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz"; | ||
1075 | sha1 = "097b602b53422a522c1afb8790318336941a011d"; | ||
1076 | }; | ||
1077 | }; | ||
1078 | "object-assign-4.1.1" = { | ||
1079 | name = "object-assign"; | ||
1080 | packageName = "object-assign"; | ||
1081 | version = "4.1.1"; | ||
1082 | src = fetchurl { | ||
1083 | url = "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz"; | ||
1084 | sha1 = "2109adc7965887cfc05cbbd442cac8bfbb360863"; | ||
1085 | }; | ||
1086 | }; | ||
1087 | "once-1.4.0" = { | ||
1088 | name = "once"; | ||
1089 | packageName = "once"; | ||
1090 | version = "1.4.0"; | ||
1091 | src = fetchurl { | ||
1092 | url = "https://registry.npmjs.org/once/-/once-1.4.0.tgz"; | ||
1093 | sha1 = "583b1aa775961d4b113ac17d9c50baef9dd76bd1"; | ||
1094 | }; | ||
1095 | }; | ||
1096 | "onetime-1.1.0" = { | ||
1097 | name = "onetime"; | ||
1098 | packageName = "onetime"; | ||
1099 | version = "1.1.0"; | ||
1100 | src = fetchurl { | ||
1101 | url = "https://registry.npmjs.org/onetime/-/onetime-1.1.0.tgz"; | ||
1102 | sha1 = "a1f7838f8314c516f05ecefcbc4ccfe04b4ed789"; | ||
1103 | }; | ||
1104 | }; | ||
1105 | "optionator-0.8.2" = { | ||
1106 | name = "optionator"; | ||
1107 | packageName = "optionator"; | ||
1108 | version = "0.8.2"; | ||
1109 | src = fetchurl { | ||
1110 | url = "https://registry.npmjs.org/optionator/-/optionator-0.8.2.tgz"; | ||
1111 | sha1 = "364c5e409d3f4d6301d6c0b4c05bba50180aeb64"; | ||
1112 | }; | ||
1113 | }; | ||
1114 | "os-homedir-1.0.2" = { | ||
1115 | name = "os-homedir"; | ||
1116 | packageName = "os-homedir"; | ||
1117 | version = "1.0.2"; | ||
1118 | src = fetchurl { | ||
1119 | url = "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz"; | ||
1120 | sha1 = "ffbc4988336e0e833de0c168c7ef152121aa7fb3"; | ||
1121 | }; | ||
1122 | }; | ||
1123 | "path-is-absolute-1.0.1" = { | ||
1124 | name = "path-is-absolute"; | ||
1125 | packageName = "path-is-absolute"; | ||
1126 | version = "1.0.1"; | ||
1127 | src = fetchurl { | ||
1128 | url = "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz"; | ||
1129 | sha1 = "174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f"; | ||
1130 | }; | ||
1131 | }; | ||
1132 | "path-is-inside-1.0.2" = { | ||
1133 | name = "path-is-inside"; | ||
1134 | packageName = "path-is-inside"; | ||
1135 | version = "1.0.2"; | ||
1136 | src = fetchurl { | ||
1137 | url = "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz"; | ||
1138 | sha1 = "365417dede44430d1c11af61027facf074bdfc53"; | ||
1139 | }; | ||
1140 | }; | ||
1141 | "path-parse-1.0.5" = { | ||
1142 | name = "path-parse"; | ||
1143 | packageName = "path-parse"; | ||
1144 | version = "1.0.5"; | ||
1145 | src = fetchurl { | ||
1146 | url = "https://registry.npmjs.org/path-parse/-/path-parse-1.0.5.tgz"; | ||
1147 | sha1 = "3c1adf871ea9cd6c9431b6ea2bd74a0ff055c4c1"; | ||
1148 | }; | ||
1149 | }; | ||
1150 | "pify-2.3.0" = { | ||
1151 | name = "pify"; | ||
1152 | packageName = "pify"; | ||
1153 | version = "2.3.0"; | ||
1154 | src = fetchurl { | ||
1155 | url = "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz"; | ||
1156 | sha1 = "ed141a6ac043a849ea588498e7dca8b15330e90c"; | ||
1157 | }; | ||
1158 | }; | ||
1159 | "pinkie-2.0.4" = { | ||
1160 | name = "pinkie"; | ||
1161 | packageName = "pinkie"; | ||
1162 | version = "2.0.4"; | ||
1163 | src = fetchurl { | ||
1164 | url = "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz"; | ||
1165 | sha1 = "72556b80cfa0d48a974e80e77248e80ed4f7f870"; | ||
1166 | }; | ||
1167 | }; | ||
1168 | "pinkie-promise-2.0.1" = { | ||
1169 | name = "pinkie-promise"; | ||
1170 | packageName = "pinkie-promise"; | ||
1171 | version = "2.0.1"; | ||
1172 | src = fetchurl { | ||
1173 | url = "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz"; | ||
1174 | sha1 = "2135d6dfa7a358c069ac9b178776288228450ffa"; | ||
1175 | }; | ||
1176 | }; | ||
1177 | "pluralize-1.2.1" = { | ||
1178 | name = "pluralize"; | ||
1179 | packageName = "pluralize"; | ||
1180 | version = "1.2.1"; | ||
1181 | src = fetchurl { | ||
1182 | url = "https://registry.npmjs.org/pluralize/-/pluralize-1.2.1.tgz"; | ||
1183 | sha1 = "d1a21483fd22bb41e58a12fa3421823140897c45"; | ||
1184 | }; | ||
1185 | }; | ||
1186 | "prelude-ls-1.1.2" = { | ||
1187 | name = "prelude-ls"; | ||
1188 | packageName = "prelude-ls"; | ||
1189 | version = "1.1.2"; | ||
1190 | src = fetchurl { | ||
1191 | url = "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz"; | ||
1192 | sha1 = "21932a549f5e52ffd9a827f570e04be62a97da54"; | ||
1193 | }; | ||
1194 | }; | ||
1195 | "prettyjson-1.2.1" = { | ||
1196 | name = "prettyjson"; | ||
1197 | packageName = "prettyjson"; | ||
1198 | version = "1.2.1"; | ||
1199 | src = fetchurl { | ||
1200 | url = "https://registry.npmjs.org/prettyjson/-/prettyjson-1.2.1.tgz"; | ||
1201 | sha1 = "fcffab41d19cab4dfae5e575e64246619b12d289"; | ||
1202 | }; | ||
1203 | }; | ||
1204 | "process-nextick-args-1.0.7" = { | ||
1205 | name = "process-nextick-args"; | ||
1206 | packageName = "process-nextick-args"; | ||
1207 | version = "1.0.7"; | ||
1208 | src = fetchurl { | ||
1209 | url = "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz"; | ||
1210 | sha1 = "150e20b756590ad3f91093f25a4f2ad8bff30ba3"; | ||
1211 | }; | ||
1212 | }; | ||
1213 | "progress-1.1.8" = { | ||
1214 | name = "progress"; | ||
1215 | packageName = "progress"; | ||
1216 | version = "1.1.8"; | ||
1217 | src = fetchurl { | ||
1218 | url = "https://registry.npmjs.org/progress/-/progress-1.1.8.tgz"; | ||
1219 | sha1 = "e260c78f6161cdd9b0e56cc3e0a85de17c7a57be"; | ||
1220 | }; | ||
1221 | }; | ||
1222 | "readable-stream-2.3.3" = { | ||
1223 | name = "readable-stream"; | ||
1224 | packageName = "readable-stream"; | ||
1225 | version = "2.3.3"; | ||
1226 | src = fetchurl { | ||
1227 | url = "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz"; | ||
1228 | sha512 = "m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ=="; | ||
1229 | }; | ||
1230 | }; | ||
1231 | "readline2-1.0.1" = { | ||
1232 | name = "readline2"; | ||
1233 | packageName = "readline2"; | ||
1234 | version = "1.0.1"; | ||
1235 | src = fetchurl { | ||
1236 | url = "https://registry.npmjs.org/readline2/-/readline2-1.0.1.tgz"; | ||
1237 | sha1 = "41059608ffc154757b715d9989d199ffbf372e35"; | ||
1238 | }; | ||
1239 | }; | ||
1240 | "rechoir-0.6.2" = { | ||
1241 | name = "rechoir"; | ||
1242 | packageName = "rechoir"; | ||
1243 | version = "0.6.2"; | ||
1244 | src = fetchurl { | ||
1245 | url = "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz"; | ||
1246 | sha1 = "85204b54dba82d5742e28c96756ef43af50e3384"; | ||
1247 | }; | ||
1248 | }; | ||
1249 | "regenerator-runtime-0.10.5" = { | ||
1250 | name = "regenerator-runtime"; | ||
1251 | packageName = "regenerator-runtime"; | ||
1252 | version = "0.10.5"; | ||
1253 | src = fetchurl { | ||
1254 | url = "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.10.5.tgz"; | ||
1255 | sha1 = "336c3efc1220adcedda2c9fab67b5a7955a33658"; | ||
1256 | }; | ||
1257 | }; | ||
1258 | "regenerator-runtime-0.11.1" = { | ||
1259 | name = "regenerator-runtime"; | ||
1260 | packageName = "regenerator-runtime"; | ||
1261 | version = "0.11.1"; | ||
1262 | src = fetchurl { | ||
1263 | url = "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz"; | ||
1264 | sha512 = "MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg=="; | ||
1265 | }; | ||
1266 | }; | ||
1267 | "require-uncached-1.0.3" = { | ||
1268 | name = "require-uncached"; | ||
1269 | packageName = "require-uncached"; | ||
1270 | version = "1.0.3"; | ||
1271 | src = fetchurl { | ||
1272 | url = "https://registry.npmjs.org/require-uncached/-/require-uncached-1.0.3.tgz"; | ||
1273 | sha1 = "4e0d56d6c9662fd31e43011c4b95aa49955421d3"; | ||
1274 | }; | ||
1275 | }; | ||
1276 | "resolve-1.5.0" = { | ||
1277 | name = "resolve"; | ||
1278 | packageName = "resolve"; | ||
1279 | version = "1.5.0"; | ||
1280 | src = fetchurl { | ||
1281 | url = "https://registry.npmjs.org/resolve/-/resolve-1.5.0.tgz"; | ||
1282 | sha512 = "hgoSGrc3pjzAPHNBg+KnFcK2HwlHTs/YrAGUr6qgTVUZmXv1UEXXl0bZNBKMA9fud6lRYFdPGz0xXxycPzmmiw=="; | ||
1283 | }; | ||
1284 | }; | ||
1285 | "resolve-from-1.0.1" = { | ||
1286 | name = "resolve-from"; | ||
1287 | packageName = "resolve-from"; | ||
1288 | version = "1.0.1"; | ||
1289 | src = fetchurl { | ||
1290 | url = "https://registry.npmjs.org/resolve-from/-/resolve-from-1.0.1.tgz"; | ||
1291 | sha1 = "26cbfe935d1aeeeabb29bc3fe5aeb01e93d44226"; | ||
1292 | }; | ||
1293 | }; | ||
1294 | "restore-cursor-1.0.1" = { | ||
1295 | name = "restore-cursor"; | ||
1296 | packageName = "restore-cursor"; | ||
1297 | version = "1.0.1"; | ||
1298 | src = fetchurl { | ||
1299 | url = "https://registry.npmjs.org/restore-cursor/-/restore-cursor-1.0.1.tgz"; | ||
1300 | sha1 = "34661f46886327fed2991479152252df92daa541"; | ||
1301 | }; | ||
1302 | }; | ||
1303 | "rimraf-2.6.2" = { | ||
1304 | name = "rimraf"; | ||
1305 | packageName = "rimraf"; | ||
1306 | version = "2.6.2"; | ||
1307 | src = fetchurl { | ||
1308 | url = "https://registry.npmjs.org/rimraf/-/rimraf-2.6.2.tgz"; | ||
1309 | sha512 = "lreewLK/BlghmxtfH36YYVg1i8IAce4TI7oao75I1g245+6BctqTVQiBP3YUJ9C6DQOXJmkYR9X9fCLtCOJc5w=="; | ||
1310 | }; | ||
1311 | }; | ||
1312 | "run-async-0.1.0" = { | ||
1313 | name = "run-async"; | ||
1314 | packageName = "run-async"; | ||
1315 | version = "0.1.0"; | ||
1316 | src = fetchurl { | ||
1317 | url = "https://registry.npmjs.org/run-async/-/run-async-0.1.0.tgz"; | ||
1318 | sha1 = "c8ad4a5e110661e402a7d21b530e009f25f8e389"; | ||
1319 | }; | ||
1320 | }; | ||
1321 | "rx-lite-3.1.2" = { | ||
1322 | name = "rx-lite"; | ||
1323 | packageName = "rx-lite"; | ||
1324 | version = "3.1.2"; | ||
1325 | src = fetchurl { | ||
1326 | url = "https://registry.npmjs.org/rx-lite/-/rx-lite-3.1.2.tgz"; | ||
1327 | sha1 = "19ce502ca572665f3b647b10939f97fd1615f102"; | ||
1328 | }; | ||
1329 | }; | ||
1330 | "safe-buffer-5.1.1" = { | ||
1331 | name = "safe-buffer"; | ||
1332 | packageName = "safe-buffer"; | ||
1333 | version = "5.1.1"; | ||
1334 | src = fetchurl { | ||
1335 | url = "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz"; | ||
1336 | sha512 = "kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg=="; | ||
1337 | }; | ||
1338 | }; | ||
1339 | "shelljs-0.7.8" = { | ||
1340 | name = "shelljs"; | ||
1341 | packageName = "shelljs"; | ||
1342 | version = "0.7.8"; | ||
1343 | src = fetchurl { | ||
1344 | url = "https://registry.npmjs.org/shelljs/-/shelljs-0.7.8.tgz"; | ||
1345 | sha1 = "decbcf874b0d1e5fb72e14b164a9683048e9acb3"; | ||
1346 | }; | ||
1347 | }; | ||
1348 | "slice-ansi-0.0.4" = { | ||
1349 | name = "slice-ansi"; | ||
1350 | packageName = "slice-ansi"; | ||
1351 | version = "0.0.4"; | ||
1352 | src = fetchurl { | ||
1353 | url = "https://registry.npmjs.org/slice-ansi/-/slice-ansi-0.0.4.tgz"; | ||
1354 | sha1 = "edbf8903f66f7ce2f8eafd6ceed65e264c831b35"; | ||
1355 | }; | ||
1356 | }; | ||
1357 | "sprintf-js-1.0.3" = { | ||
1358 | name = "sprintf-js"; | ||
1359 | packageName = "sprintf-js"; | ||
1360 | version = "1.0.3"; | ||
1361 | src = fetchurl { | ||
1362 | url = "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz"; | ||
1363 | sha1 = "04e6926f662895354f3dd015203633b857297e2c"; | ||
1364 | }; | ||
1365 | }; | ||
1366 | "string-width-1.0.2" = { | ||
1367 | name = "string-width"; | ||
1368 | packageName = "string-width"; | ||
1369 | version = "1.0.2"; | ||
1370 | src = fetchurl { | ||
1371 | url = "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz"; | ||
1372 | sha1 = "118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3"; | ||
1373 | }; | ||
1374 | }; | ||
1375 | "string-width-2.1.1" = { | ||
1376 | name = "string-width"; | ||
1377 | packageName = "string-width"; | ||
1378 | version = "2.1.1"; | ||
1379 | src = fetchurl { | ||
1380 | url = "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz"; | ||
1381 | sha512 = "nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw=="; | ||
1382 | }; | ||
1383 | }; | ||
1384 | "string_decoder-1.0.3" = { | ||
1385 | name = "string_decoder"; | ||
1386 | packageName = "string_decoder"; | ||
1387 | version = "1.0.3"; | ||
1388 | src = fetchurl { | ||
1389 | url = "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz"; | ||
1390 | sha512 = "4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ=="; | ||
1391 | }; | ||
1392 | }; | ||
1393 | "strip-ansi-3.0.1" = { | ||
1394 | name = "strip-ansi"; | ||
1395 | packageName = "strip-ansi"; | ||
1396 | version = "3.0.1"; | ||
1397 | src = fetchurl { | ||
1398 | url = "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz"; | ||
1399 | sha1 = "6a385fb8853d952d5ff05d0e8aaf94278dc63dcf"; | ||
1400 | }; | ||
1401 | }; | ||
1402 | "strip-ansi-4.0.0" = { | ||
1403 | name = "strip-ansi"; | ||
1404 | packageName = "strip-ansi"; | ||
1405 | version = "4.0.0"; | ||
1406 | src = fetchurl { | ||
1407 | url = "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz"; | ||
1408 | sha1 = "a8479022eb1ac368a871389b635262c505ee368f"; | ||
1409 | }; | ||
1410 | }; | ||
1411 | "strip-bom-3.0.0" = { | ||
1412 | name = "strip-bom"; | ||
1413 | packageName = "strip-bom"; | ||
1414 | version = "3.0.0"; | ||
1415 | src = fetchurl { | ||
1416 | url = "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz"; | ||
1417 | sha1 = "2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3"; | ||
1418 | }; | ||
1419 | }; | ||
1420 | "strip-json-comments-2.0.1" = { | ||
1421 | name = "strip-json-comments"; | ||
1422 | packageName = "strip-json-comments"; | ||
1423 | version = "2.0.1"; | ||
1424 | src = fetchurl { | ||
1425 | url = "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz"; | ||
1426 | sha1 = "3c531942e908c2697c0ec344858c286c7ca0a60a"; | ||
1427 | }; | ||
1428 | }; | ||
1429 | "supports-color-2.0.0" = { | ||
1430 | name = "supports-color"; | ||
1431 | packageName = "supports-color"; | ||
1432 | version = "2.0.0"; | ||
1433 | src = fetchurl { | ||
1434 | url = "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz"; | ||
1435 | sha1 = "535d045ce6b6363fa40117084629995e9df324c7"; | ||
1436 | }; | ||
1437 | }; | ||
1438 | "supports-color-4.5.0" = { | ||
1439 | name = "supports-color"; | ||
1440 | packageName = "supports-color"; | ||
1441 | version = "4.5.0"; | ||
1442 | src = fetchurl { | ||
1443 | url = "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz"; | ||
1444 | sha1 = "be7a0de484dec5c5cddf8b3d59125044912f635b"; | ||
1445 | }; | ||
1446 | }; | ||
1447 | "table-3.8.3" = { | ||
1448 | name = "table"; | ||
1449 | packageName = "table"; | ||
1450 | version = "3.8.3"; | ||
1451 | src = fetchurl { | ||
1452 | url = "https://registry.npmjs.org/table/-/table-3.8.3.tgz"; | ||
1453 | sha1 = "2bbc542f0fda9861a755d3947fefd8b3f513855f"; | ||
1454 | }; | ||
1455 | }; | ||
1456 | "text-table-0.2.0" = { | ||
1457 | name = "text-table"; | ||
1458 | packageName = "text-table"; | ||
1459 | version = "0.2.0"; | ||
1460 | src = fetchurl { | ||
1461 | url = "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz"; | ||
1462 | sha1 = "7f5ee823ae805207c00af2df4a84ec3fcfa570b4"; | ||
1463 | }; | ||
1464 | }; | ||
1465 | "through-2.3.8" = { | ||
1466 | name = "through"; | ||
1467 | packageName = "through"; | ||
1468 | version = "2.3.8"; | ||
1469 | src = fetchurl { | ||
1470 | url = "https://registry.npmjs.org/through/-/through-2.3.8.tgz"; | ||
1471 | sha1 = "0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5"; | ||
1472 | }; | ||
1473 | }; | ||
1474 | "type-check-0.3.2" = { | ||
1475 | name = "type-check"; | ||
1476 | packageName = "type-check"; | ||
1477 | version = "0.3.2"; | ||
1478 | src = fetchurl { | ||
1479 | url = "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz"; | ||
1480 | sha1 = "5884cab512cf1d355e3fb784f30804b2b520db72"; | ||
1481 | }; | ||
1482 | }; | ||
1483 | "typedarray-0.0.6" = { | ||
1484 | name = "typedarray"; | ||
1485 | packageName = "typedarray"; | ||
1486 | version = "0.0.6"; | ||
1487 | src = fetchurl { | ||
1488 | url = "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz"; | ||
1489 | sha1 = "867ac74e3864187b1d3d47d996a78ec5c8830777"; | ||
1490 | }; | ||
1491 | }; | ||
1492 | "user-home-2.0.0" = { | ||
1493 | name = "user-home"; | ||
1494 | packageName = "user-home"; | ||
1495 | version = "2.0.0"; | ||
1496 | src = fetchurl { | ||
1497 | url = "https://registry.npmjs.org/user-home/-/user-home-2.0.0.tgz"; | ||
1498 | sha1 = "9c70bfd8169bc1dcbf48604e0f04b8b49cde9e9f"; | ||
1499 | }; | ||
1500 | }; | ||
1501 | "util-deprecate-1.0.2" = { | ||
1502 | name = "util-deprecate"; | ||
1503 | packageName = "util-deprecate"; | ||
1504 | version = "1.0.2"; | ||
1505 | src = fetchurl { | ||
1506 | url = "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz"; | ||
1507 | sha1 = "450d4dc9fa70de732762fbd2d4a28981419a0ccf"; | ||
1508 | }; | ||
1509 | }; | ||
1510 | "vorpal-1.12.0" = { | ||
1511 | name = "vorpal"; | ||
1512 | packageName = "vorpal"; | ||
1513 | version = "1.12.0"; | ||
1514 | src = fetchurl { | ||
1515 | url = "https://registry.npmjs.org/vorpal/-/vorpal-1.12.0.tgz"; | ||
1516 | sha1 = "4be7b2a4e48f8fcfc9cf3648c419d311c522159d"; | ||
1517 | }; | ||
1518 | }; | ||
1519 | "wordwrap-1.0.0" = { | ||
1520 | name = "wordwrap"; | ||
1521 | packageName = "wordwrap"; | ||
1522 | version = "1.0.0"; | ||
1523 | src = fetchurl { | ||
1524 | url = "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz"; | ||
1525 | sha1 = "27584810891456a4171c8d0226441ade90cbcaeb"; | ||
1526 | }; | ||
1527 | }; | ||
1528 | "wrap-ansi-2.1.0" = { | ||
1529 | name = "wrap-ansi"; | ||
1530 | packageName = "wrap-ansi"; | ||
1531 | version = "2.1.0"; | ||
1532 | src = fetchurl { | ||
1533 | url = "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz"; | ||
1534 | sha1 = "d8fc3d284dd05794fe84973caecdd1cf824fdd85"; | ||
1535 | }; | ||
1536 | }; | ||
1537 | "wrappy-1.0.2" = { | ||
1538 | name = "wrappy"; | ||
1539 | packageName = "wrappy"; | ||
1540 | version = "1.0.2"; | ||
1541 | src = fetchurl { | ||
1542 | url = "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz"; | ||
1543 | sha1 = "b5243d8f3ec1aa35f1364605bc0d1036e30ab69f"; | ||
1544 | }; | ||
1545 | }; | ||
1546 | "write-0.2.1" = { | ||
1547 | name = "write"; | ||
1548 | packageName = "write"; | ||
1549 | version = "0.2.1"; | ||
1550 | src = fetchurl { | ||
1551 | url = "https://registry.npmjs.org/write/-/write-0.2.1.tgz"; | ||
1552 | sha1 = "5fc03828e264cea3fe91455476f7a3c566cb0757"; | ||
1553 | }; | ||
1554 | }; | ||
1555 | "xmlhttprequest-1.8.0" = { | ||
1556 | name = "xmlhttprequest"; | ||
1557 | packageName = "xmlhttprequest"; | ||
1558 | version = "1.8.0"; | ||
1559 | src = fetchurl { | ||
1560 | url = "https://registry.npmjs.org/xmlhttprequest/-/xmlhttprequest-1.8.0.tgz"; | ||
1561 | sha1 = "67fe075c5c24fef39f9d65f5f7b7fe75171968fc"; | ||
1562 | }; | ||
1563 | }; | ||
1564 | "xtend-4.0.1" = { | ||
1565 | name = "xtend"; | ||
1566 | packageName = "xtend"; | ||
1567 | version = "4.0.1"; | ||
1568 | src = fetchurl { | ||
1569 | url = "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz"; | ||
1570 | sha1 = "a5c6d532be656e23db820efb943a1f04998d63af"; | ||
1571 | }; | ||
1572 | }; | ||
1573 | }; | ||
1574 | args = { | ||
1575 | name = "iota-cli-app"; | ||
1576 | packageName = "iota-cli-app"; | ||
1577 | version = "1.0.8"; | ||
1578 | inherit src; | ||
1579 | dependencies = [ | ||
1580 | sources."acorn-5.2.1" | ||
1581 | (sources."acorn-jsx-3.0.1" // { | ||
1582 | dependencies = [ | ||
1583 | sources."acorn-3.3.0" | ||
1584 | ]; | ||
1585 | }) | ||
1586 | sources."ajv-4.11.8" | ||
1587 | sources."ajv-keywords-1.5.1" | ||
1588 | sources."ansi-escapes-1.4.0" | ||
1589 | sources."ansi-regex-2.1.1" | ||
1590 | sources."ansi-styles-3.2.0" | ||
1591 | sources."argparse-1.0.9" | ||
1592 | sources."array-union-1.0.2" | ||
1593 | sources."array-uniq-1.0.3" | ||
1594 | sources."arrify-1.0.1" | ||
1595 | sources."async-2.6.0" | ||
1596 | (sources."babel-code-frame-6.26.0" // { | ||
1597 | dependencies = [ | ||
1598 | sources."ansi-styles-2.2.1" | ||
1599 | sources."chalk-1.1.3" | ||
1600 | sources."supports-color-2.0.0" | ||
1601 | ]; | ||
1602 | }) | ||
1603 | sources."babel-polyfill-6.26.0" | ||
1604 | (sources."babel-runtime-6.26.0" // { | ||
1605 | dependencies = [ | ||
1606 | sources."regenerator-runtime-0.11.1" | ||
1607 | ]; | ||
1608 | }) | ||
1609 | sources."balanced-match-1.0.0" | ||
1610 | sources."bignumber.js-4.1.0" | ||
1611 | sources."bluebird-3.5.1" | ||
1612 | sources."brace-expansion-1.1.8" | ||
1613 | sources."caller-path-0.1.0" | ||
1614 | sources."callsites-0.2.0" | ||
1615 | sources."chalk-2.3.0" | ||
1616 | sources."circular-json-0.3.3" | ||
1617 | sources."cli-cursor-1.0.2" | ||
1618 | sources."cli-width-2.2.0" | ||
1619 | sources."co-4.6.0" | ||
1620 | sources."code-point-at-1.1.0" | ||
1621 | sources."color-convert-1.9.1" | ||
1622 | sources."color-name-1.1.3" | ||
1623 | sources."colors-1.1.2" | ||
1624 | sources."concat-map-0.0.1" | ||
1625 | sources."concat-stream-1.6.0" | ||
1626 | sources."core-js-2.5.3" | ||
1627 | sources."core-util-is-1.0.2" | ||
1628 | sources."crypto-js-3.1.9-1" | ||
1629 | sources."d-1.0.0" | ||
1630 | sources."debug-2.6.9" | ||
1631 | sources."deep-is-0.1.3" | ||
1632 | sources."del-2.2.2" | ||
1633 | sources."doctrine-2.0.2" | ||
1634 | sources."encoding-0.1.12" | ||
1635 | sources."es5-ext-0.10.37" | ||
1636 | sources."es6-iterator-2.0.3" | ||
1637 | sources."es6-map-0.1.5" | ||
1638 | sources."es6-set-0.1.5" | ||
1639 | sources."es6-symbol-3.1.1" | ||
1640 | sources."es6-weak-map-2.0.2" | ||
1641 | sources."escape-string-regexp-1.0.5" | ||
1642 | sources."escope-3.6.0" | ||
1643 | (sources."eslint-3.19.0" // { | ||
1644 | dependencies = [ | ||
1645 | sources."ansi-styles-2.2.1" | ||
1646 | sources."chalk-1.1.3" | ||
1647 | sources."supports-color-2.0.0" | ||
1648 | ]; | ||
1649 | }) | ||
1650 | sources."espree-3.5.2" | ||
1651 | sources."esprima-4.0.0" | ||
1652 | sources."esquery-1.0.0" | ||
1653 | sources."esrecurse-4.2.0" | ||
1654 | sources."estraverse-4.2.0" | ||
1655 | sources."esutils-2.0.2" | ||
1656 | sources."event-emitter-0.3.5" | ||
1657 | sources."exit-hook-1.1.1" | ||
1658 | sources."fast-levenshtein-2.0.6" | ||
1659 | sources."figures-1.7.0" | ||
1660 | sources."file-entry-cache-2.0.0" | ||
1661 | sources."flat-cache-1.3.0" | ||
1662 | sources."fs.realpath-1.0.0" | ||
1663 | sources."generate-function-2.0.0" | ||
1664 | sources."generate-object-property-1.2.0" | ||
1665 | sources."glob-7.1.2" | ||
1666 | sources."globals-9.18.0" | ||
1667 | sources."globby-5.0.0" | ||
1668 | sources."graceful-fs-4.1.11" | ||
1669 | sources."has-ansi-2.0.0" | ||
1670 | sources."has-flag-2.0.0" | ||
1671 | sources."iconv-lite-0.4.19" | ||
1672 | sources."ignore-3.3.7" | ||
1673 | sources."imurmurhash-0.1.4" | ||
1674 | sources."in-publish-2.0.0" | ||
1675 | sources."inflight-1.0.6" | ||
1676 | sources."inherits-2.0.3" | ||
1677 | (sources."inquirer-0.12.0" // { | ||
1678 | dependencies = [ | ||
1679 | sources."ansi-styles-2.2.1" | ||
1680 | sources."chalk-1.1.3" | ||
1681 | sources."supports-color-2.0.0" | ||
1682 | ]; | ||
1683 | }) | ||
1684 | sources."install-0.10.4" | ||
1685 | sources."interpret-1.1.0" | ||
1686 | sources."iota.lib.js-0.4.6" | ||
1687 | sources."is-fullwidth-code-point-1.0.0" | ||
1688 | sources."is-my-json-valid-2.16.1" | ||
1689 | sources."is-path-cwd-1.0.0" | ||
1690 | sources."is-path-in-cwd-1.0.0" | ||
1691 | sources."is-path-inside-1.0.1" | ||
1692 | sources."is-property-1.0.2" | ||
1693 | sources."is-resolvable-1.0.1" | ||
1694 | sources."is-stream-1.1.0" | ||
1695 | sources."isarray-1.0.0" | ||
1696 | sources."js-tokens-3.0.2" | ||
1697 | sources."js-yaml-3.10.0" | ||
1698 | sources."json-stable-stringify-1.0.1" | ||
1699 | sources."json5-0.5.1" | ||
1700 | sources."jsonify-0.0.0" | ||
1701 | sources."jsonpointer-4.0.1" | ||
1702 | sources."left-pad-1.2.0" | ||
1703 | sources."levn-0.3.0" | ||
1704 | sources."lodash-4.17.4" | ||
1705 | sources."log-update-1.0.2" | ||
1706 | sources."minimatch-3.0.4" | ||
1707 | sources."minimist-0.0.8" | ||
1708 | sources."mkdirp-0.5.1" | ||
1709 | sources."moment-2.20.1" | ||
1710 | sources."ms-2.0.0" | ||
1711 | sources."mute-stream-0.0.5" | ||
1712 | sources."natural-compare-1.4.0" | ||
1713 | sources."node-fetch-1.7.3" | ||
1714 | sources."node-localstorage-0.6.0" | ||
1715 | sources."number-is-nan-1.0.1" | ||
1716 | sources."object-assign-4.1.1" | ||
1717 | sources."once-1.4.0" | ||
1718 | sources."onetime-1.1.0" | ||
1719 | sources."optionator-0.8.2" | ||
1720 | sources."os-homedir-1.0.2" | ||
1721 | sources."path-is-absolute-1.0.1" | ||
1722 | sources."path-is-inside-1.0.2" | ||
1723 | sources."path-parse-1.0.5" | ||
1724 | sources."pify-2.3.0" | ||
1725 | sources."pinkie-2.0.4" | ||
1726 | sources."pinkie-promise-2.0.1" | ||
1727 | sources."pluralize-1.2.1" | ||
1728 | sources."prelude-ls-1.1.2" | ||
1729 | (sources."prettyjson-1.2.1" // { | ||
1730 | dependencies = [ | ||
1731 | sources."minimist-1.2.0" | ||
1732 | ]; | ||
1733 | }) | ||
1734 | sources."process-nextick-args-1.0.7" | ||
1735 | sources."progress-1.1.8" | ||
1736 | sources."readable-stream-2.3.3" | ||
1737 | sources."readline2-1.0.1" | ||
1738 | sources."rechoir-0.6.2" | ||
1739 | sources."regenerator-runtime-0.10.5" | ||
1740 | sources."require-uncached-1.0.3" | ||
1741 | sources."resolve-1.5.0" | ||
1742 | sources."resolve-from-1.0.1" | ||
1743 | sources."restore-cursor-1.0.1" | ||
1744 | sources."rimraf-2.6.2" | ||
1745 | sources."run-async-0.1.0" | ||
1746 | sources."rx-lite-3.1.2" | ||
1747 | sources."safe-buffer-5.1.1" | ||
1748 | sources."shelljs-0.7.8" | ||
1749 | sources."slice-ansi-0.0.4" | ||
1750 | sources."sprintf-js-1.0.3" | ||
1751 | sources."string-width-1.0.2" | ||
1752 | sources."string_decoder-1.0.3" | ||
1753 | sources."strip-ansi-3.0.1" | ||
1754 | sources."strip-bom-3.0.0" | ||
1755 | sources."strip-json-comments-2.0.1" | ||
1756 | sources."supports-color-4.5.0" | ||
1757 | (sources."table-3.8.3" // { | ||
1758 | dependencies = [ | ||
1759 | sources."ansi-regex-3.0.0" | ||
1760 | sources."ansi-styles-2.2.1" | ||
1761 | (sources."chalk-1.1.3" // { | ||
1762 | dependencies = [ | ||
1763 | sources."ansi-regex-2.1.1" | ||
1764 | sources."strip-ansi-3.0.1" | ||
1765 | ]; | ||
1766 | }) | ||
1767 | sources."is-fullwidth-code-point-2.0.0" | ||
1768 | sources."string-width-2.1.1" | ||
1769 | sources."strip-ansi-4.0.0" | ||
1770 | sources."supports-color-2.0.0" | ||
1771 | ]; | ||
1772 | }) | ||
1773 | sources."text-table-0.2.0" | ||
1774 | sources."through-2.3.8" | ||
1775 | sources."type-check-0.3.2" | ||
1776 | sources."typedarray-0.0.6" | ||
1777 | sources."user-home-2.0.0" | ||
1778 | sources."util-deprecate-1.0.2" | ||
1779 | (sources."vorpal-1.12.0" // { | ||
1780 | dependencies = [ | ||
1781 | sources."ansi-styles-2.2.1" | ||
1782 | sources."chalk-1.1.3" | ||
1783 | sources."cli-width-1.1.1" | ||
1784 | (sources."inquirer-0.11.0" // { | ||
1785 | dependencies = [ | ||
1786 | sources."lodash-3.10.1" | ||
1787 | ]; | ||
1788 | }) | ||
1789 | sources."minimist-1.2.0" | ||
1790 | sources."supports-color-2.0.0" | ||
1791 | ]; | ||
1792 | }) | ||
1793 | sources."wordwrap-1.0.0" | ||
1794 | sources."wrap-ansi-2.1.0" | ||
1795 | sources."wrappy-1.0.2" | ||
1796 | sources."write-0.2.1" | ||
1797 | sources."xmlhttprequest-1.8.0" | ||
1798 | sources."xtend-4.0.1" | ||
1799 | ]; | ||
1800 | buildInputs = globalBuildInputs; | ||
1801 | meta = { | ||
1802 | description = "IOTA CLI"; | ||
1803 | homepage = "https://github.com/iotaledger/cli-app#readme"; | ||
1804 | license = "MIT"; | ||
1805 | }; | ||
1806 | production = true; | ||
1807 | bypassCache = true; | ||
1808 | }; | ||
1809 | in | ||
1810 | { | ||
1811 | tarball = nodeEnv.buildNodeSourceDist args; | ||
1812 | package = nodeEnv.buildNodePackage args; | ||
1813 | shell = nodeEnv.buildNodeShell args; | ||
1814 | } | ||
diff --git a/flakes/mypackages/pkgs/crypto/sia/default.nix b/flakes/mypackages/pkgs/crypto/sia/default.nix new file mode 100644 index 0000000..27e4014 --- /dev/null +++ b/flakes/mypackages/pkgs/crypto/sia/default.nix | |||
@@ -0,0 +1,21 @@ | |||
1 | { stdenv, fetchzip, autoPatchelfHook }: | ||
2 | stdenv.mkDerivation rec { | ||
3 | version = "v1.4.3"; | ||
4 | name = "Sia-${version}"; | ||
5 | src = fetchzip { | ||
6 | url = "https://sia.tech/static/releases/${name}-linux-amd64.zip"; | ||
7 | sha256 = "1i67zjzk4cwfzb1dxaxc1m41fa44sz1d0mf6dmlyg6pm4cyqizki"; | ||
8 | }; | ||
9 | phases = "installPhase fixupPhase"; | ||
10 | nativeBuildInputs = [ | ||
11 | autoPatchelfHook | ||
12 | ]; | ||
13 | installPhase = '' | ||
14 | mkdir -p $out/share/doc | ||
15 | mkdir -p $out/bin | ||
16 | mkdir -p $out/share/sia | ||
17 | cp -a $src/doc $out/share/doc/sia | ||
18 | cp -a $src/LICENSE $src/README.md $out/share/sia | ||
19 | cp -a $src/{siac,siad} $out/bin | ||
20 | ''; | ||
21 | } | ||
diff --git a/flakes/mypackages/pkgs/default.nix b/flakes/mypackages/pkgs/default.nix new file mode 100644 index 0000000..cd6b1a1 --- /dev/null +++ b/flakes/mypackages/pkgs/default.nix | |||
@@ -0,0 +1,64 @@ | |||
1 | { pkgs, mylibs, sources }: | ||
2 | let | ||
3 | inherit (pkgs) callPackage python2Packages python38Packages python38; | ||
4 | composerEnv = callPackage ./composer-env {}; | ||
5 | webapps = import ./webapps { inherit callPackage mylibs composerEnv sources; }; | ||
6 | in | ||
7 | rec { | ||
8 | bash-libs = callPackage ./bash-libs {}; | ||
9 | boinctui = callPackage ./boinctui {}; | ||
10 | cnagios = callPackage ./cnagios {}; | ||
11 | commento = callPackage ./commento {}; | ||
12 | flrn = callPackage ./flrn { slang = callPackage ./slang_1 {}; }; | ||
13 | fluentd = callPackage ./fluentd {}; | ||
14 | fluent-bit = callPackage ./fluent-bit {}; | ||
15 | genius = callPackage ./genius {}; | ||
16 | ical2html = callPackage ./ical2html {}; | ||
17 | mtop = callPackage ./mtop {}; | ||
18 | muttprint = callPackage ./muttprint {}; | ||
19 | mutt-ics = callPackage ./mutt-ics {}; | ||
20 | nagios-cli = callPackage ./nagios-cli {}; | ||
21 | nagnu = callPackage ./nagnu {}; | ||
22 | nb = callPackage ./nb {}; | ||
23 | note = callPackage ./note {}; | ||
24 | notmuch-python2 = callPackage ./notmuch/notmuch-python { pythonPackages = python2Packages; }; | ||
25 | notmuch-python3 = callPackage ./notmuch/notmuch-python { pythonPackages = python38Packages; }; | ||
26 | notmuch-vim = callPackage ./notmuch/notmuch-vim {}; | ||
27 | perl-ical-parser-html = callPackage ./perl-ical-parser-html {}; | ||
28 | pgpid = callPackage ./pgpid { inherit bash-libs; }; | ||
29 | predixy = callPackage ./predixy {}; | ||
30 | riotkit-do = callPackage ./riotkit-do {}; | ||
31 | rrsync_sudo = callPackage ./rrsync_sudo {}; | ||
32 | signaldctl = callPackage ./signaldctl {}; | ||
33 | telegram-history-dump = callPackage ./telegram-history-dump {}; | ||
34 | telegramircd = callPackage ./telegramircd { telethon = callPackage ./telethon_sync {}; }; | ||
35 | terminal-velocity = callPackage ./terminal-velocity {}; | ||
36 | tiv = callPackage ./tiv {}; | ||
37 | twins = callPackage ./twins {}; | ||
38 | upcmd = callPackage ./upcmd {}; | ||
39 | umami = callPackage ./umami {}; | ||
40 | unicodeDoc = callPackage ./unicode {}; | ||
41 | shaarli = callPackage ./shaarli {}; | ||
42 | |||
43 | cardano = callPackage ./crypto/cardano {}; | ||
44 | cardano-cli = callPackage ./crypto/cardano-cli {}; | ||
45 | iota-cli-app = callPackage ./crypto/iota-cli-app { inherit mylibs; }; | ||
46 | sia = callPackage ./crypto/sia {}; | ||
47 | |||
48 | proftpd = callPackage ./proftpd {}; | ||
49 | pure-ftpd = callPackage ./pure-ftpd {}; | ||
50 | |||
51 | inherit composerEnv; | ||
52 | |||
53 | monitoring-plugins = callPackage ./monitoring-plugins {}; | ||
54 | naemon = callPackage ./naemon { inherit monitoring-plugins; }; | ||
55 | naemon-livestatus = callPackage ./naemon-livestatus { inherit naemon; }; | ||
56 | gearmand = callPackage ./gearmand {}; | ||
57 | status-engine-module = callPackage ./status_engine/module.nix { inherit gearmand; }; | ||
58 | status-engine-worker = callPackage ./status_engine/worker.nix { inherit composerEnv gearmand; }; | ||
59 | status-engine-interface = callPackage ./status_engine/interface.nix { inherit composerEnv; }; | ||
60 | |||
61 | dovecot_deleted-to-trash = callPackage ./dovecot/plugins/deleted_to_trash {}; | ||
62 | } | ||
63 | # lib.mapAttrs' produces infinite recursion | ||
64 | // (builtins.listToAttrs (builtins.map (n: { name = "webapps-${n}"; value = webapps."${n}"; }) (builtins.attrNames webapps))) | ||
diff --git a/flakes/mypackages/pkgs/dovecot/plugins/deleted_to_trash/default.nix b/flakes/mypackages/pkgs/dovecot/plugins/deleted_to_trash/default.nix new file mode 100644 index 0000000..f270032 --- /dev/null +++ b/flakes/mypackages/pkgs/dovecot/plugins/deleted_to_trash/default.nix | |||
@@ -0,0 +1,30 @@ | |||
1 | { stdenv, fetchurl, dovecot, fetchFromGitHub, fetchpatch }: | ||
2 | |||
3 | stdenv.mkDerivation ({ | ||
4 | pname = "dovecot-deleted_to_trash"; | ||
5 | version = "81b0754-master"; | ||
6 | src = fetchFromGitHub { | ||
7 | owner = "lexbrugman"; | ||
8 | repo = "dovecot_deleted_to_trash"; | ||
9 | rev = "81b07549accfc36467bf8527a53c295c7a02dbb9"; | ||
10 | sha256 = "1b3k31g898s4fa0a9l4kvjsdyds772waaay84sjdxv09jw6mqs0f"; | ||
11 | fetchSubmodules = true; | ||
12 | }; | ||
13 | buildInputs = [ dovecot ]; | ||
14 | patches = [ | ||
15 | (fetchpatch { | ||
16 | name = "fix-dovecot-2.3.diff"; | ||
17 | url = "https://github.com/lexbrugman/dovecot_deleted_to_trash/commit/c52a3799a96104a603ade33404ef6aa1db647b2f.diff"; | ||
18 | sha256 = "0pld3rdcjp9df2qxbp807k6v4f48lyk0xy5q508ypa57d559y6dq"; | ||
19 | }) | ||
20 | ./fix_mbox.patch | ||
21 | ]; | ||
22 | preConfigure = '' | ||
23 | substituteInPlace Makefile --replace \ | ||
24 | "/usr/include/dovecot" \ | ||
25 | "${dovecot}/include/dovecot" | ||
26 | substituteInPlace Makefile --replace \ | ||
27 | "/usr/lib/dovecot/modules" \ | ||
28 | "$out/lib/dovecot" | ||
29 | ''; | ||
30 | }) | ||
diff --git a/flakes/mypackages/pkgs/dovecot/plugins/deleted_to_trash/fix_mbox.patch b/flakes/mypackages/pkgs/dovecot/plugins/deleted_to_trash/fix_mbox.patch new file mode 100644 index 0000000..0060fb4 --- /dev/null +++ b/flakes/mypackages/pkgs/dovecot/plugins/deleted_to_trash/fix_mbox.patch | |||
@@ -0,0 +1,12 @@ | |||
1 | diff --git a/src/deleted-to-trash-plugin.c b/src/deleted-to-trash-plugin.c | ||
2 | index bb4cc78..66bad53 100644 | ||
3 | --- a/src/deleted-to-trash-plugin.c | ||
4 | +++ b/src/deleted-to-trash-plugin.c | ||
5 | @@ -82,6 +82,7 @@ static struct mailbox *mailbox_open_or_create(struct mailbox_list *list, const c | ||
6 | *error_r = mail_storage_get_last_error(mailbox_get_storage(box), &error); | ||
7 | if (error != MAIL_ERROR_NOTFOUND) | ||
8 | { | ||
9 | + i_error("%s", *error_r); | ||
10 | mailbox_free(&box); | ||
11 | return NULL; | ||
12 | } | ||
diff --git a/flakes/mypackages/pkgs/flrn/default.nix b/flakes/mypackages/pkgs/flrn/default.nix new file mode 100644 index 0000000..088654c --- /dev/null +++ b/flakes/mypackages/pkgs/flrn/default.nix | |||
@@ -0,0 +1,22 @@ | |||
1 | { stdenv, fetchFromGitHub, libetpan, openssl, autoconf, groff, slang, yacc }: | ||
2 | stdenv.mkDerivation (rec { | ||
3 | version = "860d642-master"; | ||
4 | pname = "flrn"; | ||
5 | src = fetchFromGitHub { | ||
6 | owner = "Cigaes"; | ||
7 | repo = "flrn"; | ||
8 | rev = "860d642bd6389a209c8b697bd044f78d23406509"; | ||
9 | sha256 = "0sqlxxpy1xg7cb2hbxcr0al46nyr6jjnns4b5i8w04z5sypa9r5c"; | ||
10 | fetchSubmodules = true; | ||
11 | }; | ||
12 | buildInputs = [ libetpan openssl autoconf groff slang yacc ]; | ||
13 | preConfigure = '' | ||
14 | sed -i -e "s/test -e configure/false/" configure.in | ||
15 | autoconf | ||
16 | sed -i -e '/define CHECK_MAIL/d' src/flrn_config.h | ||
17 | sed -i -e '/DEFAULT_DIR_FILE/s@".flrn"@".config/flrn"@' src/flrn_config.h | ||
18 | sed -i -e '/DEFAULT_CONFIG_FILE/s@".flrnrc"@"flrnrc"@' src/flrn_config.h | ||
19 | sed -i -e '/DEFAULT_FLNEWS_FILE/s@".flnewsrc"@"flnewsrc"@' src/flrn_config.h | ||
20 | sed -i -e '/flrn_char chaine/s@18@20@' src/flrn_command.c | ||
21 | ''; | ||
22 | }) | ||
diff --git a/flakes/mypackages/pkgs/fluent-bit/default.nix b/flakes/mypackages/pkgs/fluent-bit/default.nix new file mode 100644 index 0000000..390223e --- /dev/null +++ b/flakes/mypackages/pkgs/fluent-bit/default.nix | |||
@@ -0,0 +1,47 @@ | |||
1 | { lib, stdenv, fetchFromGitHub, cmake, flex, bison, pkg-config | ||
2 | , systemd, openssl, postgresql }: | ||
3 | |||
4 | stdenv.mkDerivation rec { | ||
5 | pname = "fluent-bit"; | ||
6 | version = "1.8.3"; | ||
7 | |||
8 | src = fetchFromGitHub { | ||
9 | owner = "fluent"; | ||
10 | repo = "fluent-bit"; | ||
11 | rev = "v${version}"; | ||
12 | sha256 = "004x135imja67babmmpkk1jpp5xwhfa8cwg1svaas2asq6cnv77d"; | ||
13 | }; | ||
14 | |||
15 | nativeBuildInputs = [ cmake flex bison pkg-config postgresql ]; | ||
16 | |||
17 | buildInputs = [ openssl ] | ||
18 | ++ lib.optionals stdenv.isLinux [ systemd ]; | ||
19 | |||
20 | cmakeFlags = [ "-DFLB_METRICS=ON" "-DFLB_HTTP_SERVER=ON" "-DFLB_SQLDB=ON" "-DFLB_OUT_PGSQL=ON" "-DFLB_IN_SYSTEMD=ON" ]; | ||
21 | |||
22 | patches = lib.optionals stdenv.isDarwin [ ./fix-luajit-darwin.patch ]; | ||
23 | |||
24 | NIX_CFLAGS_COMPILE = lib.optionals stdenv.cc.isGNU [ | ||
25 | # _FORTIFY_SOURCE requires compiling with optimization (-O) | ||
26 | "-O" | ||
27 | # Needed due to bundled mbedtls | ||
28 | "-Wno-error=format" | ||
29 | "-Wno-error=format-truncation" | ||
30 | ]; | ||
31 | |||
32 | |||
33 | outputs = [ "out" "dev" ]; | ||
34 | |||
35 | postPatch = '' | ||
36 | substituteInPlace src/CMakeLists.txt \ | ||
37 | --replace /lib/systemd $out/lib/systemd | ||
38 | ''; | ||
39 | |||
40 | meta = with lib; { | ||
41 | description = "Log forwarder and processor, part of Fluentd ecosystem"; | ||
42 | homepage = "https://fluentbit.io"; | ||
43 | maintainers = with maintainers; [ samrose fpletz ]; | ||
44 | license = licenses.asl20; | ||
45 | platforms = platforms.unix; | ||
46 | }; | ||
47 | } | ||
diff --git a/flakes/mypackages/pkgs/fluentd/Gemfile b/flakes/mypackages/pkgs/fluentd/Gemfile new file mode 100644 index 0000000..71486df --- /dev/null +++ b/flakes/mypackages/pkgs/fluentd/Gemfile | |||
@@ -0,0 +1,3 @@ | |||
1 | source "https://rubygems.org" | ||
2 | |||
3 | gem 'fluentd' | ||
diff --git a/flakes/mypackages/pkgs/fluentd/Gemfile.lock b/flakes/mypackages/pkgs/fluentd/Gemfile.lock new file mode 100644 index 0000000..3f022cf --- /dev/null +++ b/flakes/mypackages/pkgs/fluentd/Gemfile.lock | |||
@@ -0,0 +1,38 @@ | |||
1 | GEM | ||
2 | remote: https://rubygems.org/ | ||
3 | specs: | ||
4 | concurrent-ruby (1.1.9) | ||
5 | cool.io (1.7.1) | ||
6 | fluentd (1.13.3) | ||
7 | bundler | ||
8 | cool.io (>= 1.4.5, < 2.0.0) | ||
9 | http_parser.rb (>= 0.5.1, < 0.8.0) | ||
10 | msgpack (>= 1.3.1, < 2.0.0) | ||
11 | serverengine (>= 2.2.2, < 3.0.0) | ||
12 | sigdump (~> 0.2.2) | ||
13 | strptime (>= 0.2.2, < 1.0.0) | ||
14 | tzinfo (>= 1.0, < 3.0) | ||
15 | tzinfo-data (~> 1.0) | ||
16 | webrick (>= 1.4.2, < 1.8.0) | ||
17 | yajl-ruby (~> 1.0) | ||
18 | http_parser.rb (0.7.0) | ||
19 | msgpack (1.4.2) | ||
20 | serverengine (2.2.4) | ||
21 | sigdump (~> 0.2.2) | ||
22 | sigdump (0.2.4) | ||
23 | strptime (0.2.5) | ||
24 | tzinfo (2.0.4) | ||
25 | concurrent-ruby (~> 1.0) | ||
26 | tzinfo-data (1.2021.1) | ||
27 | tzinfo (>= 1.0.0) | ||
28 | webrick (1.7.0) | ||
29 | yajl-ruby (1.4.1) | ||
30 | |||
31 | PLATFORMS | ||
32 | x86_64-linux | ||
33 | |||
34 | DEPENDENCIES | ||
35 | fluentd | ||
36 | |||
37 | BUNDLED WITH | ||
38 | 2.2.20 | ||
diff --git a/flakes/mypackages/pkgs/fluentd/default.nix b/flakes/mypackages/pkgs/fluentd/default.nix new file mode 100644 index 0000000..f6a22f0 --- /dev/null +++ b/flakes/mypackages/pkgs/fluentd/default.nix | |||
@@ -0,0 +1,20 @@ | |||
1 | { ruby, bundlerEnv, bundlerUpdateScript, lib }: | ||
2 | |||
3 | bundlerEnv { | ||
4 | inherit ruby; | ||
5 | |||
6 | pname = "fluentd"; | ||
7 | gemdir = ./.; | ||
8 | |||
9 | passthru.updateScript = bundlerUpdateScript "fluentd"; | ||
10 | |||
11 | copyGemFiles = true; | ||
12 | |||
13 | meta = with lib; { | ||
14 | description = "A data collector"; | ||
15 | homepage = "https://www.fluentd.org/"; | ||
16 | license = licenses.asl20; | ||
17 | maintainers = with maintainers; [ offline nicknovitski ]; | ||
18 | platforms = platforms.unix; | ||
19 | }; | ||
20 | } | ||
diff --git a/flakes/mypackages/pkgs/fluentd/gemset.nix b/flakes/mypackages/pkgs/fluentd/gemset.nix new file mode 100644 index 0000000..8ee42b6 --- /dev/null +++ b/flakes/mypackages/pkgs/fluentd/gemset.nix | |||
@@ -0,0 +1,126 @@ | |||
1 | { | ||
2 | concurrent-ruby = { | ||
3 | groups = ["default"]; | ||
4 | platforms = []; | ||
5 | source = { | ||
6 | remotes = ["https://rubygems.org"]; | ||
7 | sha256 = "0nwad3211p7yv9sda31jmbyw6sdafzmdi2i2niaz6f0wk5nq9h0f"; | ||
8 | type = "gem"; | ||
9 | }; | ||
10 | version = "1.1.9"; | ||
11 | }; | ||
12 | "cool.io" = { | ||
13 | groups = ["default"]; | ||
14 | platforms = []; | ||
15 | source = { | ||
16 | remotes = ["https://rubygems.org"]; | ||
17 | sha256 = "0dfq4h168wzvs9cvn2mm8648ynkl936pgjva2p8ik34p6d620537"; | ||
18 | type = "gem"; | ||
19 | }; | ||
20 | version = "1.7.1"; | ||
21 | }; | ||
22 | fluentd = { | ||
23 | dependencies = ["cool.io" "http_parser.rb" "msgpack" "serverengine" "sigdump" "strptime" "tzinfo" "tzinfo-data" "webrick" "yajl-ruby"]; | ||
24 | groups = ["default"]; | ||
25 | platforms = []; | ||
26 | source = { | ||
27 | remotes = ["https://rubygems.org"]; | ||
28 | sha256 = "12k9b9903x5fi3lqb41h20qx8s0fwx7chjldbxmyi7j1x6xdm7cv"; | ||
29 | type = "gem"; | ||
30 | }; | ||
31 | version = "1.13.3"; | ||
32 | }; | ||
33 | "http_parser.rb" = { | ||
34 | groups = ["default"]; | ||
35 | platforms = []; | ||
36 | source = { | ||
37 | remotes = ["https://rubygems.org"]; | ||
38 | sha256 = "1xha614fi6l04wryqjj1xmpalzlmhb6lb9qmlh8mmliycdhvcshp"; | ||
39 | type = "gem"; | ||
40 | }; | ||
41 | version = "0.7.0"; | ||
42 | }; | ||
43 | msgpack = { | ||
44 | groups = ["default"]; | ||
45 | platforms = []; | ||
46 | source = { | ||
47 | remotes = ["https://rubygems.org"]; | ||
48 | sha256 = "06iajjyhx0rvpn4yr3h1hc4w4w3k59bdmfhxnjzzh76wsrdxxrc6"; | ||
49 | type = "gem"; | ||
50 | }; | ||
51 | version = "1.4.2"; | ||
52 | }; | ||
53 | serverengine = { | ||
54 | dependencies = ["sigdump"]; | ||
55 | groups = ["default"]; | ||
56 | platforms = []; | ||
57 | source = { | ||
58 | remotes = ["https://rubygems.org"]; | ||
59 | sha256 = "1gzhggx40a53mnv4f32xag4h6ai0s5m3w06s59b0h6ih7rqvwns9"; | ||
60 | type = "gem"; | ||
61 | }; | ||
62 | version = "2.2.4"; | ||
63 | }; | ||
64 | sigdump = { | ||
65 | groups = ["default"]; | ||
66 | platforms = []; | ||
67 | source = { | ||
68 | remotes = ["https://rubygems.org"]; | ||
69 | sha256 = "1mqf06iw7rymv54y7rgbmfi6ppddgjjmxzi3hrw658n1amp1gwhb"; | ||
70 | type = "gem"; | ||
71 | }; | ||
72 | version = "0.2.4"; | ||
73 | }; | ||
74 | strptime = { | ||
75 | groups = ["default"]; | ||
76 | platforms = []; | ||
77 | source = { | ||
78 | remotes = ["https://rubygems.org"]; | ||
79 | sha256 = "1ycs0xz58kymf7yp4h56f0nid2z7g3s18dj7pa3p790pfzzpgvcq"; | ||
80 | type = "gem"; | ||
81 | }; | ||
82 | version = "0.2.5"; | ||
83 | }; | ||
84 | tzinfo = { | ||
85 | dependencies = ["concurrent-ruby"]; | ||
86 | groups = ["default"]; | ||
87 | platforms = []; | ||
88 | source = { | ||
89 | remotes = ["https://rubygems.org"]; | ||
90 | sha256 = "10qp5x7f9hvlc0psv9gsfbxg4a7s0485wsbq1kljkxq94in91l4z"; | ||
91 | type = "gem"; | ||
92 | }; | ||
93 | version = "2.0.4"; | ||
94 | }; | ||
95 | tzinfo-data = { | ||
96 | dependencies = ["tzinfo"]; | ||
97 | groups = ["default"]; | ||
98 | platforms = []; | ||
99 | source = { | ||
100 | remotes = ["https://rubygems.org"]; | ||
101 | sha256 = "0ik16lnsyr2739jzwl4r5sz8q639lqw8f9s68iszwhm2pcq8p4w2"; | ||
102 | type = "gem"; | ||
103 | }; | ||
104 | version = "1.2021.1"; | ||
105 | }; | ||
106 | webrick = { | ||
107 | groups = ["default"]; | ||
108 | platforms = []; | ||
109 | source = { | ||
110 | remotes = ["https://rubygems.org"]; | ||
111 | sha256 = "1d4cvgmxhfczxiq5fr534lmizkhigd15bsx5719r5ds7k7ivisc7"; | ||
112 | type = "gem"; | ||
113 | }; | ||
114 | version = "1.7.0"; | ||
115 | }; | ||
116 | yajl-ruby = { | ||
117 | groups = ["default"]; | ||
118 | platforms = []; | ||
119 | source = { | ||
120 | remotes = ["https://rubygems.org"]; | ||
121 | sha256 = "16v0w5749qjp13xhjgr2gcsvjv6mf35br7iqwycix1n2h7kfcckf"; | ||
122 | type = "gem"; | ||
123 | }; | ||
124 | version = "1.4.1"; | ||
125 | }; | ||
126 | } \ No newline at end of file | ||
diff --git a/flakes/mypackages/pkgs/gearmand/default.nix b/flakes/mypackages/pkgs/gearmand/default.nix new file mode 100644 index 0000000..14ef8c2 --- /dev/null +++ b/flakes/mypackages/pkgs/gearmand/default.nix | |||
@@ -0,0 +1,16 @@ | |||
1 | { stdenv, fetchurl, boost, gperf, libevent, libmysqlclient, libuuid, sqlite, hiredis, postgresql, openssl }: | ||
2 | stdenv.mkDerivation rec { | ||
3 | pname = "gearmand"; | ||
4 | version = "1.1.20"; | ||
5 | src = fetchurl { | ||
6 | url = "https://github.com/gearman/${pname}/releases/download/${version}/${pname}-${version}.tar.gz"; | ||
7 | sha256 = "sha256-L2D6IH3NcwWV75ap3DyomVZnB8gXYQazxj7PR+3BR6Y="; | ||
8 | }; | ||
9 | buildInputs = [ boost gperf libevent openssl libmysqlclient libuuid sqlite hiredis postgresql ]; | ||
10 | configureFlags = [ | ||
11 | "--with-boost=${boost.dev}" | ||
12 | "--with-boost-libdir=${boost}/lib" | ||
13 | "--with-openssl=${openssl.dev}" | ||
14 | "--enable-ssl" | ||
15 | ]; | ||
16 | } | ||
diff --git a/flakes/mypackages/pkgs/genius/default.nix b/flakes/mypackages/pkgs/genius/default.nix new file mode 100644 index 0000000..54a7957 --- /dev/null +++ b/flakes/mypackages/pkgs/genius/default.nix | |||
@@ -0,0 +1,19 @@ | |||
1 | { stdenv, fetchurl, mpfr, glib, hicolor-icon-theme, gtk2, intltool, gnome-doc-utils, python38, gnome2, autoconf, automake, libtool, ncurses, readline, pkg-config, }: | ||
2 | stdenv.mkDerivation rec { | ||
3 | name = "genius-${version}"; | ||
4 | version = "1.0.24"; | ||
5 | src = fetchurl { | ||
6 | url = "https://download.gnome.org/sources/genius/1.0/${name}.tar.xz"; | ||
7 | sha256 = "772f95f6ae4716d39bb180cd50e8b6b9b074107bee0cd083b825e1e6e55916b6"; | ||
8 | }; | ||
9 | buildInputs = [ | ||
10 | mpfr glib hicolor-icon-theme gtk2 intltool gnome-doc-utils python38 gnome2.gtksourceview | ||
11 | autoconf automake libtool ncurses readline pkg-config | ||
12 | ]; | ||
13 | preConfigure = '' | ||
14 | autoreconf -fi | ||
15 | ''; | ||
16 | preBuild = '' | ||
17 | sed -i -e 's/ -shared / -Wl,-O1,--as-needed\0/g' libtool | ||
18 | ''; | ||
19 | } | ||
diff --git a/flakes/mypackages/pkgs/ical2html/default.nix b/flakes/mypackages/pkgs/ical2html/default.nix new file mode 100644 index 0000000..62e0b95 --- /dev/null +++ b/flakes/mypackages/pkgs/ical2html/default.nix | |||
@@ -0,0 +1,11 @@ | |||
1 | { stdenv, fetchurl, libical }: | ||
2 | stdenv.mkDerivation rec { | ||
3 | pname = "ical2html"; | ||
4 | version = "3.0"; | ||
5 | src= fetchurl { | ||
6 | url = "https://www.w3.org/Tools/Ical2html/${pname}-${version}.tar.gz"; | ||
7 | sha256 = "sha256-1QhE04cmohhPgZ3I8jz28Z7ZnSJkH2aPnRse5/pReEA="; | ||
8 | }; | ||
9 | buildInputs = [ libical ]; | ||
10 | |||
11 | } | ||
diff --git a/flakes/mypackages/pkgs/monitoring-plugins/default.nix b/flakes/mypackages/pkgs/monitoring-plugins/default.nix new file mode 100644 index 0000000..b09d7a4 --- /dev/null +++ b/flakes/mypackages/pkgs/monitoring-plugins/default.nix | |||
@@ -0,0 +1,33 @@ | |||
1 | { stdenv, iputils, fetchpatch, fetchurl, file, hostname, perl, openssl, | ||
2 | bind, openldap, procps, postfix, | ||
3 | wrapperDir ? "/run/wrappers/bin" | ||
4 | }: | ||
5 | stdenv.mkDerivation rec { | ||
6 | pname = "monitoring-plugins"; | ||
7 | version = "2.2"; | ||
8 | name = "${pname}-${version}"; | ||
9 | |||
10 | src = fetchurl { | ||
11 | url = "https://www.monitoring-plugins.org/download/${name}.tar.gz"; | ||
12 | sha256 = "0r9nvnk64nv7k8w352n99lw4p92pycxd9wlga9zyzjx9027m6si9"; | ||
13 | }; | ||
14 | |||
15 | patches = [ | ||
16 | (fetchpatch { | ||
17 | name = "mariadb.patch"; | ||
18 | url = "https://git.archlinux.org/svntogit/community.git/plain/trunk/0001-mariadb.patch?h=packages/monitoring-plugins"; | ||
19 | sha256 = "0jf6fqkyzag66rid92m7asnr2dp8rr8kn4zjvhqg0mqvf8imppky"; | ||
20 | }) | ||
21 | ]; | ||
22 | |||
23 | # ping needs CAP_NET_RAW capability which is set only in the wrappers namespace | ||
24 | configurePhase = '' | ||
25 | ./configure --disable-static --disable-dependency-tracking \ | ||
26 | --prefix=$out \ | ||
27 | --with-ping-command="${wrapperDir}/ping -4 -n -U -w %d -c %d %s" \ | ||
28 | --with-ping6-command="${wrapperDir}/ping -6 -n -U -w %d -c %d %s" \ | ||
29 | --with-sudo-command="${wrapperDir}/sudo" | ||
30 | ''; | ||
31 | |||
32 | buildInputs = [ perl file hostname iputils openssl openldap procps bind.dnsutils postfix ]; | ||
33 | } | ||
diff --git a/flakes/mypackages/pkgs/mtop/default.nix b/flakes/mypackages/pkgs/mtop/default.nix new file mode 100644 index 0000000..ca9be2c --- /dev/null +++ b/flakes/mypackages/pkgs/mtop/default.nix | |||
@@ -0,0 +1,24 @@ | |||
1 | { fetchurl, perlPackages, lib }: | ||
2 | perlPackages.buildPerlPackage rec { | ||
3 | pname = "mtop"; | ||
4 | version = "0.6.6"; | ||
5 | src = fetchurl { | ||
6 | url = "http://downloads.sourceforge.net/project/mtop/mtop/v${version}/mtop-${version}.tar.gz"; | ||
7 | sha256 = "0x0x5300b1j9i0xxk8rsrki0pspyzj2vylhzv8qg3l6j26aw0zrf"; | ||
8 | }; | ||
9 | outputs = ["out"]; | ||
10 | buildInputs = with perlPackages; [ DBI DBDmysql Curses ]; | ||
11 | |||
12 | postInstall = '' | ||
13 | cd "$out" | ||
14 | preConfigure || true | ||
15 | ''; | ||
16 | |||
17 | meta = with lib; { | ||
18 | description = "MySQL top (monitor and examine slow queries)"; | ||
19 | homepage = http://mtop.sourceforge.net/; | ||
20 | license = licenses.gpl3; | ||
21 | maintainers = with maintainers; [ { name = "Marc Prewitt"; email = "mprewitt@chelsea.net"; } ]; | ||
22 | platforms = platforms.unix; | ||
23 | }; | ||
24 | } | ||
diff --git a/flakes/mypackages/pkgs/mutt-ics/default.nix b/flakes/mypackages/pkgs/mutt-ics/default.nix new file mode 100644 index 0000000..2d50475 --- /dev/null +++ b/flakes/mypackages/pkgs/mutt-ics/default.nix | |||
@@ -0,0 +1,15 @@ | |||
1 | { python3Packages, fetchFromGitHub }: | ||
2 | with python3Packages; | ||
3 | buildPythonApplication (rec { | ||
4 | version = "d291187-master"; | ||
5 | pname = "mutt-ics"; | ||
6 | name = "${pname}-${version}"; | ||
7 | src = fetchFromGitHub { | ||
8 | owner = "dmedvinsky"; | ||
9 | repo = "mutt-ics"; | ||
10 | rev = "d29118788f291f67d34fefa6eda9f95846a2fe34"; | ||
11 | sha256 = "0kqzngsvzjq5gpf60jhfmb2xzjznvk172khf4dlcb72n3ak4rb92"; | ||
12 | fetchSubmodules = true; | ||
13 | }; | ||
14 | propagatedBuildInputs = [ icalendar ]; | ||
15 | }) | ||
diff --git a/flakes/mypackages/pkgs/muttprint/0.73-4.diff.gz b/flakes/mypackages/pkgs/muttprint/0.73-4.diff.gz new file mode 100644 index 0000000..c4f3cef --- /dev/null +++ b/flakes/mypackages/pkgs/muttprint/0.73-4.diff.gz | |||
Binary files differ | |||
diff --git a/flakes/mypackages/pkgs/muttprint/default.nix b/flakes/mypackages/pkgs/muttprint/default.nix new file mode 100644 index 0000000..0863a7b --- /dev/null +++ b/flakes/mypackages/pkgs/muttprint/default.nix | |||
@@ -0,0 +1,44 @@ | |||
1 | { stdenv, fetchurl, lib, psutils, dialog, texlive, makeWrapper, automake, autoconf, imagemagick, ghostscript, perl, perlPackages }: | ||
2 | stdenv.mkDerivation rec { | ||
3 | name = "muttprint-${version}"; | ||
4 | version = "0.73"; | ||
5 | src = fetchurl { | ||
6 | url = "http://downloads.sf.net/muttprint/${name}.tar.gz"; | ||
7 | sha256 = "1dny4niyibfgazwlzfcnb37jy6k140rs6baaj629z12rmahfdavw"; | ||
8 | }; | ||
9 | patches = [ | ||
10 | ./0.73-4.diff.gz | ||
11 | ./regex.patch | ||
12 | ./two_edge.patch | ||
13 | ]; | ||
14 | preConfigure = '' | ||
15 | aclocal | ||
16 | automake --add-missing --copy | ||
17 | autoconf | ||
18 | ''; | ||
19 | preBuild = '' | ||
20 | cd pics | ||
21 | convert -flop BabyTuX.eps BabyTuX.eps | ||
22 | for i in BabyTuX_color.eps BabyTuX.eps Debian_color.eps \ | ||
23 | Debian.eps Gentoo.eps Gentoo_color.eps ; do | ||
24 | convert $i $(basename $i .eps).png | ||
25 | done | ||
26 | convert penguin.eps penguin.jpg | ||
27 | cd .. | ||
28 | ''; | ||
29 | postInstall = '' | ||
30 | perlFlags= | ||
31 | for i in $(IFS=:; echo $PERL5LIB); do | ||
32 | perlFlags="$perlFlags -I$i" | ||
33 | done | ||
34 | |||
35 | sed -i "$out/bin/muttprint" -e "s|^#\!\(.*[ /]perl.*\)$|#\!\1$perlFlags|" | ||
36 | sed -i "$out/bin/muttprint" -e "s|ENV{HOME}/.muttprintrc|ENV{XDG_CONFIG_HOME}/muttprint/muttprintrc|" | ||
37 | |||
38 | wrapProgram $out/bin/muttprint \ | ||
39 | --prefix PATH : ${lib.makeBinPath [ psutils dialog | ||
40 | (texlive.combine { inherit (texlive) scheme-basic utopia fancyvrb lastpage marvosym ucs cm-super; }) ]} | ||
41 | ''; | ||
42 | buildInputs = [ makeWrapper automake autoconf imagemagick ghostscript perl ] ++ | ||
43 | (with perlPackages; [ TimeDate FileWhich TextIconv ]); | ||
44 | } | ||
diff --git a/flakes/mypackages/pkgs/muttprint/regex.patch b/flakes/mypackages/pkgs/muttprint/regex.patch new file mode 100644 index 0000000..e99c4a2 --- /dev/null +++ b/flakes/mypackages/pkgs/muttprint/regex.patch | |||
@@ -0,0 +1,11 @@ | |||
1 | --- a/muttprint 2015-07-21 11:18:04.219578426 +1200 | ||
2 | +++ b/muttprint 2015-07-21 11:18:53.906243779 +1200 | ||
3 | @@ -1635,7 +1635,7 @@ | ||
4 | open (AUX, "$auxfile") or fatalError "Could not open $auxfile:\n$!"; | ||
5 | |||
6 | while (<AUX>) { | ||
7 | - ($numberOfPages) = /\\newlabel{LastPage}{{}{(\d+)}}/; | ||
8 | + ($numberOfPages) = /\\newlabel\{LastPage}\{\{}\{(\d+)}}/; | ||
9 | } | ||
10 | |||
11 | close AUX or fatalError "Could not close $auxfile:\n$!"; | ||
diff --git a/flakes/mypackages/pkgs/muttprint/two_edge.patch b/flakes/mypackages/pkgs/muttprint/two_edge.patch new file mode 100644 index 0000000..4a7290d --- /dev/null +++ b/flakes/mypackages/pkgs/muttprint/two_edge.patch | |||
@@ -0,0 +1,19 @@ | |||
1 | --- a/muttprint 2016-05-05 13:48:50.515950744 +1200 | ||
2 | +++ b/muttprint 2016-05-05 13:52:10.722623902 +1200 | ||
3 | @@ -643,14 +643,14 @@ | ||
4 | if ($Config{PAPERSAVE} eq "on") { | ||
5 | if ($useCups) { | ||
6 | $Config{PRINT_COMMAND} =~ | ||
7 | - s/\$CUPS_OPTIONS/ -o sides=two-sided-long-edge \$CUPS_OPTIONS/; | ||
8 | + s/\$CUPS_OPTIONS/ -o sides=two-sided-short-edge \$CUPS_OPTIONS/; | ||
9 | } else { # no cups | ||
10 | modifyPS("landscape"); | ||
11 | } | ||
12 | } else { # no papersave | ||
13 | if ($useCups) { | ||
14 | $Config{PRINT_COMMAND} =~ | ||
15 | - s/\$CUPS_OPTIONS/ -o sides=two-sided-short-edge \$CUPS_OPTIONS/; | ||
16 | + s/\$CUPS_OPTIONS/ -o sides=two-sided-long-edge \$CUPS_OPTIONS/; | ||
17 | } else { # no cups | ||
18 | modifyPS("portrait"); | ||
19 | } | ||
diff --git a/flakes/mypackages/pkgs/naemon-livestatus/default.nix b/flakes/mypackages/pkgs/naemon-livestatus/default.nix new file mode 100644 index 0000000..623230a --- /dev/null +++ b/flakes/mypackages/pkgs/naemon-livestatus/default.nix | |||
@@ -0,0 +1,32 @@ | |||
1 | { stdenv, fetchFromGitHub, autoconf, automake, | ||
2 | libtool, pkg-config, naemon, | ||
3 | varDir ? "/var/lib/naemon", | ||
4 | etcDir ? "/etc/naemon" | ||
5 | }: | ||
6 | stdenv.mkDerivation ({ | ||
7 | pname = "naemon-livestatus"; | ||
8 | version = "33dbcfe-master"; | ||
9 | src = fetchFromGitHub { | ||
10 | owner = "naemon"; | ||
11 | repo = "naemon-livestatus"; | ||
12 | rev = "33dbcfe18e42158f25c27cff95a1e07b73be53b0"; | ||
13 | sha256 = "16jk0c6pwr7ck0g6s12hj6czbhgdr7c7f74zzsp5279af86y8fd6"; | ||
14 | fetchSubmodules = true; | ||
15 | }; | ||
16 | preConfigure = '' | ||
17 | ./autogen.sh || true | ||
18 | ''; | ||
19 | |||
20 | configureFlags = [ | ||
21 | "--localstatedir=${varDir}" | ||
22 | "--sysconfdir=${etcDir}" | ||
23 | ]; | ||
24 | |||
25 | preInstall = '' | ||
26 | substituteInPlace Makefile --replace \ | ||
27 | '@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am' \ | ||
28 | '@$(MAKE) $(AM_MAKEFLAGS) install-exec-am' | ||
29 | ''; | ||
30 | |||
31 | buildInputs = [ autoconf automake libtool pkg-config naemon ]; | ||
32 | }) | ||
diff --git a/flakes/mypackages/pkgs/naemon/default.nix b/flakes/mypackages/pkgs/naemon/default.nix new file mode 100644 index 0000000..2a29bdc --- /dev/null +++ b/flakes/mypackages/pkgs/naemon/default.nix | |||
@@ -0,0 +1,44 @@ | |||
1 | { stdenv, fetchFromGitHub, help2man, monitoring-plugins, autoconf, automake, | ||
2 | libtool, glib, pkg-config, gperf, | ||
3 | varDir ? "/var/lib/naemon", | ||
4 | etcDir ? "/etc/naemon", | ||
5 | cacheDir ? "/var/cache/naemon", | ||
6 | logDir ? "/var/log/naemon", | ||
7 | runDir ? "/run/naemon", | ||
8 | user ? "naemon", | ||
9 | group ? "naemon" | ||
10 | }: | ||
11 | stdenv.mkDerivation ({ | ||
12 | pname = "naemon"; | ||
13 | version = "d7ac1c8-master"; | ||
14 | src = fetchFromGitHub { | ||
15 | owner = "naemon"; | ||
16 | repo = "naemon-core"; | ||
17 | rev = "d7ac1c824e01dbb1c4a6bd0550b324e7cf165d54"; | ||
18 | sha256 = "003grwciplnqfn9jh2km2pm6xxp8fxvmwihg3vmch8f0vfwcmv1m"; | ||
19 | fetchSubmodules = true; | ||
20 | }; | ||
21 | passthru.status_engine_version = "1-1-0"; | ||
22 | preConfigure = '' | ||
23 | ./autogen.sh || true | ||
24 | ''; | ||
25 | |||
26 | configureFlags = [ | ||
27 | "--localstatedir=${varDir}" | ||
28 | "--sysconfdir=${etcDir}" | ||
29 | "--with-pkgconfdir=${etcDir}" | ||
30 | "--with-pluginsdir=${monitoring-plugins}/libexec" | ||
31 | "--with-tempdir=${cacheDir}" | ||
32 | "--with-checkresultdir=${cacheDir}/checkresults" | ||
33 | "--with-logdir=${logDir}" | ||
34 | "--with-naemon-user=${user}" | ||
35 | "--with-naemon-group=${group}" | ||
36 | "--with-lockfile=${runDir}/naemon.pid" | ||
37 | ]; | ||
38 | |||
39 | preInstall = '' | ||
40 | substituteInPlace Makefile --replace '$(MAKE) $(AM_MAKEFLAGS) install-exec-hook' "" | ||
41 | ''; | ||
42 | |||
43 | buildInputs = [ autoconf automake help2man libtool glib pkg-config gperf ]; | ||
44 | }) | ||
diff --git a/flakes/mypackages/pkgs/nagios-cli/default.nix b/flakes/mypackages/pkgs/nagios-cli/default.nix new file mode 100644 index 0000000..99ae843 --- /dev/null +++ b/flakes/mypackages/pkgs/nagios-cli/default.nix | |||
@@ -0,0 +1,12 @@ | |||
1 | { python2Packages, fetchFromGitHub }: | ||
2 | python2Packages.buildPythonApplication rec { | ||
3 | version = "edc51ea-master"; | ||
4 | pname = "nagios-cli"; | ||
5 | src = fetchFromGitHub { | ||
6 | owner = "tehmaze"; | ||
7 | repo = "nagios-cli"; | ||
8 | rev = "edc51eaccf1086bb4469ce45c5e5155f2d71a2f9"; | ||
9 | sha256 = "1qw5fv4niz079zqwmfr3kzjv8cc31rbhi9whdbv9c32qdi3h7vsp"; | ||
10 | fetchSubmodules = true; | ||
11 | }; | ||
12 | } | ||
diff --git a/flakes/mypackages/pkgs/nagnu/default.nix b/flakes/mypackages/pkgs/nagnu/default.nix new file mode 100644 index 0000000..c7a1162 --- /dev/null +++ b/flakes/mypackages/pkgs/nagnu/default.nix | |||
@@ -0,0 +1,21 @@ | |||
1 | { stdenv, fetchFromGitHub, ncurses, curl }: | ||
2 | stdenv.mkDerivation (rec { | ||
3 | pname = "nagnu"; | ||
4 | version = "c7e65fc-master"; | ||
5 | src = fetchFromGitHub { | ||
6 | owner = "frlen"; | ||
7 | repo = "nagnu"; | ||
8 | rev = "c7e65fc02f46a3756a4cc47953ea2f3e57a84728"; | ||
9 | sha256 = "1i2jm8ibvqcc734daamnzc3hx8q0nsry1x12q0kr5yvcsdjjgyy3"; | ||
10 | fetchSubmodules = true; | ||
11 | }; | ||
12 | buildInputs = [ ncurses curl ]; | ||
13 | installPhase = '' | ||
14 | mkdir -p $out/bin | ||
15 | cp nagnu $out/bin | ||
16 | mkdir -p $out/share/doc/nagnu | ||
17 | cp nagnu.conf.sample $out/share/doc/nagnu | ||
18 | mkdir -p $out/share/man/man8 | ||
19 | cp docs/nagnu.8 $out/share/man/man8 | ||
20 | ''; | ||
21 | }) | ||
diff --git a/flakes/mypackages/pkgs/nb/default.nix b/flakes/mypackages/pkgs/nb/default.nix new file mode 100644 index 0000000..337c286 --- /dev/null +++ b/flakes/mypackages/pkgs/nb/default.nix | |||
@@ -0,0 +1,22 @@ | |||
1 | { fetchFromGitHub, stdenv, makeWrapper, lib, file }: | ||
2 | stdenv.mkDerivation { | ||
3 | pname = "nb"; | ||
4 | version = "e0d4e24-master"; | ||
5 | src = fetchFromGitHub { | ||
6 | owner = "xwmx"; | ||
7 | repo = "nb"; | ||
8 | rev = "e0d4e24201299916d736be6a9800793cec32927e"; | ||
9 | sha256 = "0gpnlzxjlfn3bagw74lsrmfhxj2xzvk6sjj24wp9rjpk42d9mfml"; | ||
10 | }; | ||
11 | phases = "installPhase"; | ||
12 | buildInputs = [ makeWrapper ]; | ||
13 | installPhase = '' | ||
14 | mkdir -p $out/bin $out/share/zsh/vendor-completions $out/share/bash-completion/completions | ||
15 | cp $src/nb $out/bin/nb | ||
16 | chmod +x $out/bin/nb | ||
17 | patchShebangs $out/bin/nb | ||
18 | wrapProgram $out/bin/nb --prefix PATH : ${lib.makeBinPath [ file ]} | ||
19 | cp $src/etc/nb-completion.zsh $out/share/zsh/vendor-completions/_nb | ||
20 | cp $src/etc/nb-completion.bash $out/share/bash-completion/completions/nb | ||
21 | ''; | ||
22 | } | ||
diff --git a/flakes/mypackages/pkgs/note/default.nix b/flakes/mypackages/pkgs/note/default.nix new file mode 100644 index 0000000..b3b03ef --- /dev/null +++ b/flakes/mypackages/pkgs/note/default.nix | |||
@@ -0,0 +1,19 @@ | |||
1 | { lib, fetchurl, perlPackages }: | ||
2 | perlPackages.buildPerlPackage rec { | ||
3 | pname = "note"; | ||
4 | version = "1.3.26"; | ||
5 | src = fetchurl { | ||
6 | url = "mirror://cpan/authors/id/T/TL/TLINDEN/${pname}-${version}.tar.gz"; | ||
7 | sha256 = "1h645rnb5vpms48fcyzvp7cwwcbf9k5xq49w2bpniyzzgk2brjrq"; | ||
8 | }; | ||
9 | outputs = ["out" "man"]; | ||
10 | propagatedBuildInputs = with perlPackages; [ YAML ]; | ||
11 | |||
12 | meta = with lib; { | ||
13 | description = "A perl script for maintaining notes"; | ||
14 | homepage = http://www.daemon.de/NOTE; | ||
15 | license = licenses.gpl3; | ||
16 | maintainers = with maintainers; [ { name = "T.v.Dein"; email = "tlinden@cpan.org"; } ]; | ||
17 | platforms = platforms.unix; | ||
18 | }; | ||
19 | } | ||
diff --git a/flakes/mypackages/pkgs/notmuch/notmuch-python/default.nix b/flakes/mypackages/pkgs/notmuch/notmuch-python/default.nix new file mode 100644 index 0000000..d639d9a --- /dev/null +++ b/flakes/mypackages/pkgs/notmuch/notmuch-python/default.nix | |||
@@ -0,0 +1,16 @@ | |||
1 | { stdenv, notmuch, pythonPackages }: | ||
2 | stdenv.mkDerivation rec { | ||
3 | name = "notmuch-${pythonPackages.python.name}-${version}"; | ||
4 | version = notmuch.version; | ||
5 | outputs = [ "out" ]; | ||
6 | buildInputs = with pythonPackages; [ sphinx python ]; | ||
7 | src = notmuch.src; | ||
8 | phases = [ "unpackPhase" "buildPhase" "installPhase" "fixupPhase" ]; | ||
9 | buildPhase = '' | ||
10 | cd bindings/python | ||
11 | python setup.py build | ||
12 | ''; | ||
13 | installPhase = '' | ||
14 | python setup.py install --prefix=$out --optimize=1 | ||
15 | ''; | ||
16 | } | ||
diff --git a/flakes/mypackages/pkgs/notmuch/notmuch-vim/default.nix b/flakes/mypackages/pkgs/notmuch/notmuch-vim/default.nix new file mode 100644 index 0000000..e79a253 --- /dev/null +++ b/flakes/mypackages/pkgs/notmuch/notmuch-vim/default.nix | |||
@@ -0,0 +1,11 @@ | |||
1 | { stdenv, notmuch }: | ||
2 | stdenv.mkDerivation rec { | ||
3 | name = "notmuch-vim-${version}"; | ||
4 | version = notmuch.version; | ||
5 | outputs = [ "out" ]; | ||
6 | src = notmuch.src; | ||
7 | phases = [ "unpackPhase" "installPhase" ]; | ||
8 | installPhase = '' | ||
9 | make -C vim DESTDIR=$out prefix="/share/vim/vimfiles" install | ||
10 | ''; | ||
11 | } | ||
diff --git a/flakes/mypackages/pkgs/perl-ical-parser-html/default.nix b/flakes/mypackages/pkgs/perl-ical-parser-html/default.nix new file mode 100644 index 0000000..96e9abc --- /dev/null +++ b/flakes/mypackages/pkgs/perl-ical-parser-html/default.nix | |||
@@ -0,0 +1,48 @@ | |||
1 | { perlPackages, fetchurl }: | ||
2 | let | ||
3 | TestXML = perlPackages.buildPerlPackage rec { | ||
4 | pname = "Test-XML"; | ||
5 | version = "0.08"; | ||
6 | src = fetchurl { | ||
7 | url = "mirror://cpan/authors/id/S/SE/SEMANTICO/Test-XML-0.08.tar.gz"; | ||
8 | sha256 = "sha256-61TMI83shg062KyKaXy/A40N7JUimRLZdcMBiQyoPuI="; | ||
9 | }; | ||
10 | propagatedBuildInputs = with perlPackages; [ | ||
11 | ModuleBuild XMLSemanticDiff XMLParser | ||
12 | ]; | ||
13 | }; | ||
14 | iCalParserSAX = perlPackages.buildPerlPackage rec { | ||
15 | pname = "iCal-Parser-SAX"; | ||
16 | version = "1.09"; | ||
17 | src = fetchurl { | ||
18 | url = "mirror://cpan/authors/id/R/RF/RFRANKEL/iCal-Parser-SAX-1.09.tar.gz"; | ||
19 | sha256 = "sha256-fouAjQ+MTUgwZ/j3dIarOK0rVBZcZy6aOJFor4pLql0="; | ||
20 | }; | ||
21 | propagatedBuildInputs = with perlPackages; [ | ||
22 | ModuleBuild DateTime IOString XMLSAXBase XMLSAXWriter iCalParser | ||
23 | LWPUserAgent | ||
24 | ]; | ||
25 | buildInputs = [ TestXML ]; | ||
26 | doCheck = false; | ||
27 | }; | ||
28 | in | ||
29 | perlPackages.buildPerlPackage rec { | ||
30 | pname = "iCal-Parser-HTML"; | ||
31 | version = "1.07"; | ||
32 | src = fetchurl { | ||
33 | url = "mirror://cpan/authors/id/R/RF/RFRANKEL/${pname}-${version}.tar.gz"; | ||
34 | sha256 = "sha256-cxRS2M6aVrCtAXHQae0Y6EtEfGnGx41UuB7z442NSrU="; | ||
35 | }; | ||
36 | patchPhase = '' | ||
37 | sed -i -e "s/qw(week month year)/(qw(week month year))/" lib/iCal/Parser/HTML.pm | ||
38 | ''; | ||
39 | doCheck = false; | ||
40 | postInstall = '' | ||
41 | mkdir -p $out/bin | ||
42 | cp scripts/ical2html $out/bin | ||
43 | chmod +x $out/bin/ical2html | ||
44 | ''; | ||
45 | propagatedBuildInputs = with perlPackages; [ | ||
46 | ModuleBuild XMLLibXML XMLLibXSLT iCalParser iCalParserSAX | ||
47 | ]; | ||
48 | } | ||
diff --git a/flakes/mypackages/pkgs/pgpid/default.nix b/flakes/mypackages/pkgs/pgpid/default.nix new file mode 100644 index 0000000..a1fb9c2 --- /dev/null +++ b/flakes/mypackages/pkgs/pgpid/default.nix | |||
@@ -0,0 +1,33 @@ | |||
1 | { lib, stdenv, fetchFromGitHub, makeWrapper, bashInteractive, bash-libs, coreutils, file, gnugrep, texlive, pandoc, aspell, util-linux, findutils, gnused, gnupg, gawk, facedetect, graphicsmagick, qrencode, tesseract4, zbar, cups, vim }: | ||
2 | stdenv.mkDerivation { | ||
3 | pname = "pgpid"; | ||
4 | version = "master"; | ||
5 | src = fetchFromGitHub { | ||
6 | owner = "foopgp"; | ||
7 | repo = "pgpid"; | ||
8 | rev = "26c2137951775652e9e774977639ecaea5845cf7"; | ||
9 | sha256 = "sha256-noXDYWWxUryFnV99pyl0eV7hJLUkSy97Vqylx5dKN9g="; | ||
10 | }; | ||
11 | |||
12 | buildInputs = [ makeWrapper ]; | ||
13 | phases = [ "installPhase" ]; | ||
14 | installPhase = '' | ||
15 | mkdir -p $out/bin $out/share/pgpid $out/share/doc/pgpid | ||
16 | |||
17 | cp $src/pgpid-gen $src/pgpid-qrscan $out/bin | ||
18 | cp -r $src/doc $out/share/doc/pgpid | ||
19 | cp -r $src/data $out/share/pgpid | ||
20 | cp -r $src/imgsamples $out/share/pgpid | ||
21 | for i in $out/bin/*; do | ||
22 | patchShebangs $i | ||
23 | sed -i -e "/^TESSDATADIR/d" -e "/^GEOLIST_CENTROID/d" $i | ||
24 | sed -i -e 's@"$(dirname "$BASH_SOURCE")"@${bash-libs}/share/bash-libs/include@' $i | ||
25 | wrapProgram $i --set PATH ${lib.makeBinPath [ | ||
26 | facedetect graphicsmagick qrencode tesseract4 zbar cups gnugrep vim gnupg findutils | ||
27 | pandoc (texlive.combine { scheme-small = texlive.scheme-small; pdfcrop = texlive.pdfcrop; }) | ||
28 | ]}:$(cat ${bash-libs}/nix-support/propagated-build-inputs) \ | ||
29 | --set TESSDATADIR $out/share/pgpid/data \ | ||
30 | --set GEOLIST_CENTROID $out/share/pgpid/data/geolist_centroid.txt | ||
31 | done | ||
32 | ''; | ||
33 | } | ||
diff --git a/flakes/mypackages/pkgs/predixy/default.nix b/flakes/mypackages/pkgs/predixy/default.nix new file mode 100644 index 0000000..259d7fd --- /dev/null +++ b/flakes/mypackages/pkgs/predixy/default.nix | |||
@@ -0,0 +1,19 @@ | |||
1 | { stdenv, fetchFromGitHub }: | ||
2 | stdenv.mkDerivation ({ | ||
3 | pname = "predixy"; | ||
4 | version = "dacf3fb-master"; | ||
5 | src = fetchFromGitHub { | ||
6 | owner = "joyieldInc"; | ||
7 | repo = "predixy"; | ||
8 | rev = "dacf3fb30c2602dc044040df04e194d44b49c1be"; | ||
9 | sha256 = "0sbvy0jg551lwkfq8qh0a49cl9mhfnkhi3cnk25l8pz4jcdrr9k9"; | ||
10 | fetchSubmodules = true; | ||
11 | }; | ||
12 | installPhase = '' | ||
13 | mkdir -p $out/bin | ||
14 | cp src/predixy $out/bin | ||
15 | mkdir -p $out/share | ||
16 | cp -r doc $out/share | ||
17 | cp -r conf $out/share/doc | ||
18 | ''; | ||
19 | }) | ||
diff --git a/flakes/mypackages/pkgs/proftpd/default.nix b/flakes/mypackages/pkgs/proftpd/default.nix new file mode 100644 index 0000000..8bdf531 --- /dev/null +++ b/flakes/mypackages/pkgs/proftpd/default.nix | |||
@@ -0,0 +1,22 @@ | |||
1 | { stdenv, fetchurl, file, openssl, libsodium, ncurses, cyrus_sasl, openldap, pkg-config, libxcrypt }: | ||
2 | |||
3 | stdenv.mkDerivation rec { | ||
4 | pname = "proftpd"; | ||
5 | version = "1.3.8"; | ||
6 | src = fetchurl { | ||
7 | url = "https://github.com/proftpd/proftpd/archive/refs/tags/v${version}.tar.gz"; | ||
8 | sha256 = "sha256-9xOec3eiywWbi5sU12pt9fRA4xgcsVrokNQ7vK5XR0g="; | ||
9 | }; | ||
10 | postPatch = '' | ||
11 | sed -i -e "s@/usr/bin/file@${file}/bin/file@" configure | ||
12 | ''; | ||
13 | dontDisableStatic = 1; | ||
14 | configureFlags = [ "--enable-openssl" "--with-modules=mod_ldap:mod_sftp:mod_tls:mod_site_misc" "--with-includes=${libsodium.dev}/include" "--with-libraries=${libsodium}/lib" ]; | ||
15 | preInstall = '' | ||
16 | installFlagsArray=(INSTALL_USER=$(id -u) INSTALL_GROUP=$(id -g)) | ||
17 | ''; | ||
18 | buildInputs = [ openssl libsodium ncurses cyrus_sasl openldap pkg-config libxcrypt ]; | ||
19 | postInstall = '' | ||
20 | rmdir $out/var $out/libexec $out/lib/proftpd $out/share/locale | ||
21 | ''; | ||
22 | } | ||
diff --git a/flakes/mypackages/pkgs/pure-ftpd/default.nix b/flakes/mypackages/pkgs/pure-ftpd/default.nix new file mode 100644 index 0000000..55c698f --- /dev/null +++ b/flakes/mypackages/pkgs/pure-ftpd/default.nix | |||
@@ -0,0 +1,30 @@ | |||
1 | { ldapFtpId ? null | ||
2 | , stdenv, lib, fetchurl, openssl, postgresql, openldap }: | ||
3 | |||
4 | stdenv.mkDerivation rec { | ||
5 | name = "pure-ftpd-1.0.47"; | ||
6 | |||
7 | src = fetchurl { | ||
8 | url = "https://download.pureftpd.org/pub/pure-ftpd/releases/${name}.tar.gz"; | ||
9 | sha256 = "1b97ixva8m10vln8xrfwwwzi344bkgxqji26d0nrm1yzylbc6h27"; | ||
10 | }; | ||
11 | |||
12 | preConfigure = stdenv.lib.optionalString (!isNull ldapFtpId) '' | ||
13 | sed -i -e "s#FTPuid#${ldapFtpId}Uid#" src/log_ldap.h | ||
14 | sed -i -e "s#FTPgid#${ldapFtpId}Gid#" src/log_ldap.h | ||
15 | ''; | ||
16 | postConfigure = '' | ||
17 | sed -i 's/define MAX_DATA_SIZE (40/define MAX_DATA_SIZE (70/' src/ftpd.h | ||
18 | ''; | ||
19 | buildInputs = [ openssl postgresql openldap ]; | ||
20 | |||
21 | configureFlags = [ "--with-everything" "--with-tls" "--with-pgsql" "--with-ldap" ]; | ||
22 | |||
23 | meta = with lib; { | ||
24 | description = "A free, secure, production-quality and standard-conformant FTP server"; | ||
25 | homepage = https://www.pureftpd.org; | ||
26 | license = licenses.isc; # with some parts covered by BSD3(?) | ||
27 | maintainers = [ maintainers.lethalman ]; | ||
28 | platforms = platforms.linux; | ||
29 | }; | ||
30 | } | ||
diff --git a/flakes/mypackages/pkgs/riotkit-do/default.nix b/flakes/mypackages/pkgs/riotkit-do/default.nix new file mode 100644 index 0000000..3ddb1ab --- /dev/null +++ b/flakes/mypackages/pkgs/riotkit-do/default.nix | |||
@@ -0,0 +1,60 @@ | |||
1 | { python3Packages }: | ||
2 | let | ||
3 | tabulate = python3Packages.buildPythonPackage rec { | ||
4 | version = "0.8.7"; | ||
5 | pname = "tabulate"; | ||
6 | |||
7 | src = python3Packages.fetchPypi { | ||
8 | inherit pname version; | ||
9 | sha256 = "sha256-2ycjog0EvNqFIhZcc+6nwwDtp04M6FLZAi4BWdeJUAc="; | ||
10 | }; | ||
11 | |||
12 | checkInputs = with python3Packages; [ nose ]; | ||
13 | |||
14 | doCheck = false; | ||
15 | }; | ||
16 | |||
17 | python-dotenv = python3Packages.buildPythonPackage rec { | ||
18 | pname = "python-dotenv"; | ||
19 | version = "0.13.0"; | ||
20 | |||
21 | src = python3Packages.fetchPypi { | ||
22 | inherit pname version; | ||
23 | sha256 = "sha256-O5kJvJaw7cawFYbh7tBecRdO9OBMcdpXhjcM6+pTrXQ="; | ||
24 | }; | ||
25 | |||
26 | propagatedBuildInputs = with python3Packages; [ click ]; | ||
27 | |||
28 | checkInputs = with python3Packages; [ | ||
29 | ipython | ||
30 | mock | ||
31 | pytestCheckHook | ||
32 | sh | ||
33 | ]; | ||
34 | |||
35 | disabledTests = [ | ||
36 | "cli" | ||
37 | ]; | ||
38 | |||
39 | pythonImportsCheck = [ "dotenv" ]; | ||
40 | }; | ||
41 | in | ||
42 | python3Packages.buildPythonApplication rec { | ||
43 | pname = "rkd"; | ||
44 | version = "2.4.0"; | ||
45 | src = python3Packages.fetchPypi { | ||
46 | inherit pname version; | ||
47 | sha256 = "sha256-WC0FmUYGkV9PFvRtiFW6w6RtP+9Zf6kizl8jGiRb4HQ="; | ||
48 | }; | ||
49 | |||
50 | propagatedBuildInputs = with python3Packages; [ | ||
51 | pbr | ||
52 | jinja2 | ||
53 | pyyaml | ||
54 | tabulate | ||
55 | psutil | ||
56 | pytest | ||
57 | python-dotenv | ||
58 | jsonschema | ||
59 | ]; | ||
60 | } | ||
diff --git a/flakes/mypackages/pkgs/rrsync_sudo/default.nix b/flakes/mypackages/pkgs/rrsync_sudo/default.nix new file mode 100644 index 0000000..7a47320 --- /dev/null +++ b/flakes/mypackages/pkgs/rrsync_sudo/default.nix | |||
@@ -0,0 +1,8 @@ | |||
1 | { rrsync }: | ||
2 | |||
3 | rrsync.overrideAttrs(old: { | ||
4 | patches = old.patches or [] ++ [ ./sudo.patch ]; | ||
5 | postPatch = old.postPatch + '' | ||
6 | substituteInPlace support/rrsync --replace /usr/bin/sudo /run/wrappers/bin/sudo | ||
7 | ''; | ||
8 | }) | ||
diff --git a/flakes/mypackages/pkgs/rrsync_sudo/sudo.patch b/flakes/mypackages/pkgs/rrsync_sudo/sudo.patch new file mode 100644 index 0000000..6de9cc9 --- /dev/null +++ b/flakes/mypackages/pkgs/rrsync_sudo/sudo.patch | |||
@@ -0,0 +1,20 @@ | |||
1 | --- a/support/rrsync 2015-09-14 01:23:54.000000000 +0200 | ||
2 | +++ b/support/rrsync 2020-02-08 13:55:14.302163313 +0100 | ||
3 | @@ -48,7 +48,7 @@ | ||
4 | |||
5 | my $command = $ENV{SSH_ORIGINAL_COMMAND}; | ||
6 | die "$0: Not invoked via sshd\n$Usage" unless defined $command; | ||
7 | -die "$0: SSH_ORIGINAL_COMMAND='$command' is not rsync\n" unless $command =~ s/^rsync\s+//; | ||
8 | +die "$0: SSH_ORIGINAL_COMMAND='$command' is not rsync\n" unless $command =~ s/^sudo rsync\s+//; | ||
9 | die "$0: --server option is not first\n" unless $command =~ /^--server\s/; | ||
10 | our $am_sender = $command =~ /^--server\s+--sender\s/; # Restrictive on purpose! | ||
11 | die "$0 sending to read-only server not allowed\n" if $only eq 'r' && !$am_sender; | ||
12 | @@ -227,7 +227,7 @@ | ||
13 | } | ||
14 | |||
15 | # Note: This assumes that the rsync protocol will not be maliciously hijacked. | ||
16 | -exec(RSYNC, @opts, @args) or die "exec(rsync @opts @args) failed: $? $!"; | ||
17 | +exec("/usr/bin/sudo", RSYNC, @opts, @args) or die "exec(sudo rsync @opts @args) failed: $? $!"; | ||
18 | |||
19 | sub check_arg | ||
20 | { | ||
diff --git a/flakes/mypackages/pkgs/shaarli/default.nix b/flakes/mypackages/pkgs/shaarli/default.nix new file mode 100644 index 0000000..23f9937 --- /dev/null +++ b/flakes/mypackages/pkgs/shaarli/default.nix | |||
@@ -0,0 +1,24 @@ | |||
1 | { varDir ? "/var/lib/shaarli", stdenv, fetchurl }: | ||
2 | |||
3 | stdenv.mkDerivation rec { | ||
4 | pname = "shaarli"; | ||
5 | version = "0.10.2"; | ||
6 | src = fetchurl { | ||
7 | url = "https://github.com/shaarli/Shaarli/releases/download/v${version}/shaarli-v${version}-full.tar.gz"; | ||
8 | sha256 = "0h8sspj7siy3vgpi2i3gdrjcr5935fr4dfwq2zwd70sjx2sh9s78"; | ||
9 | }; | ||
10 | patchPhase = ""; | ||
11 | |||
12 | outputs = [ "out" "doc" ]; | ||
13 | |||
14 | patches = [ ./shaarli_ldap.patch ]; | ||
15 | installPhase = '' | ||
16 | rm -r {cache,pagecache,tmp,data}/ | ||
17 | mkdir -p $doc/share/doc | ||
18 | mv doc/ $doc/share/doc/shaarli | ||
19 | mkdir $out/ | ||
20 | cp -R ./* $out | ||
21 | cp .htaccess $out/ | ||
22 | ln -sf ${varDir}/{cache,pagecache,tmp,data} $out/ | ||
23 | ''; | ||
24 | } | ||
diff --git a/flakes/mypackages/pkgs/shaarli/shaarli_ldap.patch b/flakes/mypackages/pkgs/shaarli/shaarli_ldap.patch new file mode 100644 index 0000000..e66a54f --- /dev/null +++ b/flakes/mypackages/pkgs/shaarli/shaarli_ldap.patch | |||
@@ -0,0 +1,425 @@ | |||
1 | commit a19c24edc1057bd411821f9e3e7d1d309d38b1bb | ||
2 | Author: Ismaël Bouya <ismael.bouya@normalesup.org> | ||
3 | Date: Sun Feb 3 20:58:18 2019 +0100 | ||
4 | |||
5 | Add ldap connection | ||
6 | |||
7 | diff --git a/.htaccess b/.htaccess | ||
8 | index 4c00427..5acd708 100644 | ||
9 | --- a/.htaccess | ||
10 | +++ b/.htaccess | ||
11 | @@ -6,10 +6,23 @@ RewriteEngine On | ||
12 | # Prevent accessing subdirectories not managed by SCM | ||
13 | RewriteRule ^(.git|doxygen|vendor) - [F] | ||
14 | |||
15 | +RewriteCond %{REQUEST_URI}::$1 ^(/.+)/(.*)::\2$ | ||
16 | +RewriteRule ^(.*) - [E=BASE:%1] | ||
17 | + | ||
18 | +RewriteCond %{ENV:REDIRECT_BASE} (.+) | ||
19 | +RewriteRule .* - [E=BASE:%1] | ||
20 | + | ||
21 | # Forward the "Authorization" HTTP header | ||
22 | RewriteCond %{HTTP:Authorization} ^(.*) | ||
23 | RewriteRule .* - [e=HTTP_AUTHORIZATION:%1] | ||
24 | |||
25 | +RewriteCond %{REQUEST_FILENAME} !-f | ||
26 | +RewriteCond %{REQUEST_FILENAME} !-d | ||
27 | +RewriteRule ^((?!api/)[^/]*)/?(.*)$ $2?%{QUERY_STRING} [E=USERSPACE:$1] | ||
28 | + | ||
29 | +RewriteCond %{ENV:REDIRECT_USERSPACE} (.+) | ||
30 | +RewriteRule .* - [E=USERSPACE:%1] | ||
31 | + | ||
32 | # REST API | ||
33 | RewriteCond %{REQUEST_FILENAME} !-f | ||
34 | RewriteCond %{REQUEST_FILENAME} !-d | ||
35 | diff --git a/application/ApplicationUtils.php b/application/ApplicationUtils.php | ||
36 | index 911873a..f21a1ef 100644 | ||
37 | --- a/application/ApplicationUtils.php | ||
38 | +++ b/application/ApplicationUtils.php | ||
39 | @@ -191,6 +191,9 @@ public static function checkResourcePermissions($conf) | ||
40 | $conf->get('resource.page_cache'), | ||
41 | $conf->get('resource.raintpl_tmp'), | ||
42 | ) as $path) { | ||
43 | + if (! is_dir($path)) { | ||
44 | + mkdir($path, 0755, true); | ||
45 | + } | ||
46 | if (! is_readable(realpath($path))) { | ||
47 | $errors[] = '"'.$path.'" '. t('directory is not readable'); | ||
48 | } | ||
49 | diff --git a/application/config/ConfigManager.php b/application/config/ConfigManager.php | ||
50 | index 32aaea4..99efc15 100644 | ||
51 | --- a/application/config/ConfigManager.php | ||
52 | +++ b/application/config/ConfigManager.php | ||
53 | @@ -21,6 +21,11 @@ class ConfigManager | ||
54 | |||
55 | public static $DEFAULT_PLUGINS = array('qrcode'); | ||
56 | |||
57 | + /** | ||
58 | + * @var string User space. | ||
59 | + */ | ||
60 | + protected $userSpace; | ||
61 | + | ||
62 | /** | ||
63 | * @var string Config folder. | ||
64 | */ | ||
65 | @@ -41,12 +46,36 @@ class ConfigManager | ||
66 | * | ||
67 | * @param string $configFile Configuration file path without extension. | ||
68 | */ | ||
69 | - public function __construct($configFile = 'data/config') | ||
70 | + public function __construct($configFile = null, $userSpace = null) | ||
71 | { | ||
72 | - $this->configFile = $configFile; | ||
73 | + $this->userSpace = $this->findLDAPUser($userSpace); | ||
74 | + if ($configFile !== null) { | ||
75 | + $this->configFile = $configFile; | ||
76 | + } else { | ||
77 | + $this->configFile = ($this->userSpace === null) ? 'data/config' : 'data/' . $this->userSpace . '/config'; | ||
78 | + } | ||
79 | $this->initialize(); | ||
80 | } | ||
81 | |||
82 | + public function findLDAPUser($login, $password = null) { | ||
83 | + $connect = ldap_connect(getenv('SHAARLI_LDAP_HOST')); | ||
84 | + ldap_set_option($connect, LDAP_OPT_PROTOCOL_VERSION, 3); | ||
85 | + if (!$connect || !ldap_bind($connect, getenv('SHAARLI_LDAP_DN'), getenv('SHAARLI_LDAP_PASSWORD'))) { | ||
86 | + return false; | ||
87 | + } | ||
88 | + | ||
89 | + $search_query = str_replace('%login%', ldap_escape($login), getenv('SHAARLI_LDAP_FILTER')); | ||
90 | + | ||
91 | + $search = ldap_search($connect, getenv('SHAARLI_LDAP_BASE'), $search_query); | ||
92 | + $info = ldap_get_entries($connect, $search); | ||
93 | + | ||
94 | + if (ldap_count_entries($connect, $search) == 1 && (is_null($password) || ldap_bind($connect, $info[0]["dn"], $password))) { | ||
95 | + return $login; | ||
96 | + } else { | ||
97 | + return null; | ||
98 | + } | ||
99 | + } | ||
100 | + | ||
101 | /** | ||
102 | * Reset the ConfigManager instance. | ||
103 | */ | ||
104 | @@ -269,6 +298,16 @@ public function getConfigFileExt() | ||
105 | return $this->configFile . $this->configIO->getExtension(); | ||
106 | } | ||
107 | |||
108 | + /** | ||
109 | + * Get the current userspace. | ||
110 | + * | ||
111 | + * @return mixed User space. | ||
112 | + */ | ||
113 | + public function getUserSpace() | ||
114 | + { | ||
115 | + return $this->userSpace; | ||
116 | + } | ||
117 | + | ||
118 | /** | ||
119 | * Recursive function which find asked setting in the loaded config. | ||
120 | * | ||
121 | @@ -342,19 +381,31 @@ protected static function removeConfig($settings, &$conf) | ||
122 | */ | ||
123 | protected function setDefaultValues() | ||
124 | { | ||
125 | - $this->setEmpty('resource.data_dir', 'data'); | ||
126 | - $this->setEmpty('resource.config', 'data/config.php'); | ||
127 | - $this->setEmpty('resource.datastore', 'data/datastore.php'); | ||
128 | - $this->setEmpty('resource.ban_file', 'data/ipbans.php'); | ||
129 | - $this->setEmpty('resource.updates', 'data/updates.txt'); | ||
130 | - $this->setEmpty('resource.log', 'data/log.txt'); | ||
131 | - $this->setEmpty('resource.update_check', 'data/lastupdatecheck.txt'); | ||
132 | - $this->setEmpty('resource.history', 'data/history.php'); | ||
133 | + if ($this->userSpace === null) { | ||
134 | + $data = 'data'; | ||
135 | + $tmp = 'tmp'; | ||
136 | + $cache = 'cache'; | ||
137 | + $pagecache = 'pagecache'; | ||
138 | + } else { | ||
139 | + $data = 'data/' . ($this->userSpace); | ||
140 | + $tmp = 'tmp/' . ($this->userSpace); | ||
141 | + $cache = 'cache/' . ($this->userSpace); | ||
142 | + $pagecache = 'pagecache/' . ($this->userSpace); | ||
143 | + } | ||
144 | + | ||
145 | + $this->setEmpty('resource.data_dir', $data); | ||
146 | + $this->setEmpty('resource.config', $data . '/config.php'); | ||
147 | + $this->setEmpty('resource.datastore', $data . '/datastore.php'); | ||
148 | + $this->setEmpty('resource.ban_file', $data . '/ipbans.php'); | ||
149 | + $this->setEmpty('resource.updates', $data . '/updates.txt'); | ||
150 | + $this->setEmpty('resource.log', $data . '/log.txt'); | ||
151 | + $this->setEmpty('resource.update_check', $data . '/lastupdatecheck.txt'); | ||
152 | + $this->setEmpty('resource.history', $data . '/history.php'); | ||
153 | $this->setEmpty('resource.raintpl_tpl', 'tpl/'); | ||
154 | $this->setEmpty('resource.theme', 'default'); | ||
155 | - $this->setEmpty('resource.raintpl_tmp', 'tmp/'); | ||
156 | - $this->setEmpty('resource.thumbnails_cache', 'cache'); | ||
157 | - $this->setEmpty('resource.page_cache', 'pagecache'); | ||
158 | + $this->setEmpty('resource.raintpl_tmp', $tmp); | ||
159 | + $this->setEmpty('resource.thumbnails_cache', $cache); | ||
160 | + $this->setEmpty('resource.page_cache', $pagecache); | ||
161 | |||
162 | $this->setEmpty('security.ban_after', 4); | ||
163 | $this->setEmpty('security.ban_duration', 1800); | ||
164 | diff --git a/application/security/LoginManager.php b/application/security/LoginManager.php | ||
165 | index d6784d6..bdfaca7 100644 | ||
166 | --- a/application/security/LoginManager.php | ||
167 | +++ b/application/security/LoginManager.php | ||
168 | @@ -32,6 +32,9 @@ class LoginManager | ||
169 | /** @var string User sign-in token depending on remote IP and credentials */ | ||
170 | protected $staySignedInToken = ''; | ||
171 | |||
172 | + protected $lastErrorReason = ''; | ||
173 | + protected $lastErrorIsBanishable = false; | ||
174 | + | ||
175 | /** | ||
176 | * Constructor | ||
177 | * | ||
178 | @@ -83,7 +86,7 @@ public function getStaySignedInToken() | ||
179 | */ | ||
180 | public function checkLoginState($cookie, $clientIpId) | ||
181 | { | ||
182 | - if (! $this->configManager->exists('credentials.login')) { | ||
183 | + if (! $this->configManager->exists('credentials.login') || (isset($_SESSION['username']) && $_SESSION['username'] && $this->configManager->get('credentials.login') !== $_SESSION['username'])) { | ||
184 | // Shaarli is not configured yet | ||
185 | $this->isLoggedIn = false; | ||
186 | return; | ||
187 | @@ -133,20 +136,40 @@ public function isLoggedIn() | ||
188 | */ | ||
189 | public function checkCredentials($remoteIp, $clientIpId, $login, $password) | ||
190 | { | ||
191 | - $hash = sha1($password . $login . $this->configManager->get('credentials.salt')); | ||
192 | + $this->lastErrorIsBanishable = false; | ||
193 | + | ||
194 | + if ($this->configManager->getUserSpace() !== null && $this->configManager->getUserSpace() !== $login) { | ||
195 | + logm($this->configManager->get('resource.log'), | ||
196 | + $remoteIp, | ||
197 | + 'Trying to login to wrong user space'); | ||
198 | + $this->lastErrorReason = 'You’re trying to access the wrong account.'; | ||
199 | + return false; | ||
200 | + } | ||
201 | |||
202 | - if ($login != $this->configManager->get('credentials.login') | ||
203 | - || $hash != $this->configManager->get('credentials.hash') | ||
204 | - ) { | ||
205 | + logm($this->configManager->get('resource.log'), | ||
206 | + $remoteIp, | ||
207 | + 'Trying LDAP connection'); | ||
208 | + $result = $this->configManager->findLDAPUser($login, $password); | ||
209 | + if ($result === false) { | ||
210 | logm( | ||
211 | $this->configManager->get('resource.log'), | ||
212 | $remoteIp, | ||
213 | - 'Login failed for user ' . $login | ||
214 | + 'Impossible to connect to LDAP' | ||
215 | ); | ||
216 | + $this->lastErrorReason = 'Server error.'; | ||
217 | + return false; | ||
218 | + } else if (is_null($result)) { | ||
219 | + logm( | ||
220 | + $this->configManager->get('resource.log'), | ||
221 | + $remoteIp, | ||
222 | + 'Login failed for user ' . $login | ||
223 | + ); | ||
224 | + $this->lastErrorIsBanishable = true; | ||
225 | + $this->lastErrorReason = 'Wrong login/password.'; | ||
226 | return false; | ||
227 | } | ||
228 | |||
229 | - $this->sessionManager->storeLoginInfo($clientIpId); | ||
230 | + $this->sessionManager->storeLoginInfo($clientIpId, $login); | ||
231 | logm( | ||
232 | $this->configManager->get('resource.log'), | ||
233 | $remoteIp, | ||
234 | @@ -187,6 +210,10 @@ protected function writeBanFile() | ||
235 | */ | ||
236 | public function handleFailedLogin($server) | ||
237 | { | ||
238 | + if (!$this->lastErrorIsBanishable) { | ||
239 | + return $this->lastErrorReason ?: 'Error during login.'; | ||
240 | + }; | ||
241 | + | ||
242 | $ip = $server['REMOTE_ADDR']; | ||
243 | $trusted = $this->configManager->get('security.trusted_proxies', []); | ||
244 | |||
245 | @@ -215,6 +242,7 @@ public function handleFailedLogin($server) | ||
246 | ); | ||
247 | } | ||
248 | $this->writeBanFile(); | ||
249 | + return $this->lastErrorReason ?: 'Error during login.'; | ||
250 | } | ||
251 | |||
252 | /** | ||
253 | diff --git a/application/security/SessionManager.php b/application/security/SessionManager.php | ||
254 | index b8b8ab8..5eb4aac 100644 | ||
255 | --- a/application/security/SessionManager.php | ||
256 | +++ b/application/security/SessionManager.php | ||
257 | @@ -111,10 +111,10 @@ public static function checkId($sessionId) | ||
258 | * | ||
259 | * @param string $clientIpId Client IP address identifier | ||
260 | */ | ||
261 | - public function storeLoginInfo($clientIpId) | ||
262 | + public function storeLoginInfo($clientIpId, $login = null) | ||
263 | { | ||
264 | $this->session['ip'] = $clientIpId; | ||
265 | - $this->session['username'] = $this->conf->get('credentials.login'); | ||
266 | + $this->session['username'] = $login ?: $this->conf->get('credentials.login'); | ||
267 | $this->extendTimeValidityBy(self::$SHORT_TIMEOUT); | ||
268 | } | ||
269 | |||
270 | diff --git a/index.php b/index.php | ||
271 | index 4b86a3e..58ae2dd 100644 | ||
272 | --- a/index.php | ||
273 | +++ b/index.php | ||
274 | @@ -121,7 +121,32 @@ | ||
275 | $_COOKIE['shaarli'] = session_id(); | ||
276 | } | ||
277 | |||
278 | -$conf = new ConfigManager(); | ||
279 | +$folderBase = getenv("BASE"); | ||
280 | + | ||
281 | +if (getenv("USERSPACE")) { | ||
282 | + if (isset($_GET["do"]) && $_GET["do"] == "login") { | ||
283 | + header("Location: $folderBase/?do=login"); | ||
284 | + exit; | ||
285 | + } | ||
286 | + $userspace = preg_replace("/[^-_A-Za-z0-9]/", '', getenv("USERSPACE")); | ||
287 | +} else if (isset($_SESSION["username"]) && $_SESSION["username"]) { | ||
288 | + header("Location: " . $folderBase . "/" . $_SESSION["username"] . "?"); | ||
289 | + exit; | ||
290 | +} else if (!isset($_GET["do"]) || $_GET["do"] != "login") { | ||
291 | + header("Location: $folderBase/?do=login"); | ||
292 | + exit; | ||
293 | +} | ||
294 | + | ||
295 | +if (!isset($userspace) && isset($_POST["login"])) { | ||
296 | + $userspace = preg_replace("/[^-_A-Za-z0-9]/", '', $_POST["login"]); | ||
297 | + error_log("debugImmae: setting userspace from POST: " . $userspace); | ||
298 | +} | ||
299 | + | ||
300 | +if (isset($userspace)) { | ||
301 | + $conf = new ConfigManager(null, $userspace); | ||
302 | +} else { | ||
303 | + $conf = new ConfigManager(); | ||
304 | +} | ||
305 | $sessionManager = new SessionManager($_SESSION, $conf); | ||
306 | $loginManager = new LoginManager($GLOBALS, $conf, $sessionManager); | ||
307 | $loginManager->generateStaySignedInToken($_SERVER['REMOTE_ADDR']); | ||
308 | @@ -175,7 +200,7 @@ | ||
309 | } | ||
310 | |||
311 | // Display the installation form if no existing config is found | ||
312 | - install($conf, $sessionManager, $loginManager); | ||
313 | + install($conf, $sessionManager, $loginManager, $userspace); | ||
314 | } | ||
315 | |||
316 | $loginManager->checkLoginState($_COOKIE, $clientIpId); | ||
317 | @@ -205,6 +230,7 @@ function isLoggedIn() | ||
318 | && $loginManager->checkCredentials($_SERVER['REMOTE_ADDR'], $clientIpId, $_POST['login'], $_POST['password']) | ||
319 | ) { | ||
320 | $loginManager->handleSuccessfulLogin($_SERVER); | ||
321 | + $userspace = $_POST['login']; | ||
322 | |||
323 | $cookiedir = ''; | ||
324 | if (dirname($_SERVER['SCRIPT_NAME']) != '/') { | ||
325 | @@ -241,25 +267,25 @@ function isLoggedIn() | ||
326 | $uri .= '&'.$param.'='.urlencode($_GET[$param]); | ||
327 | } | ||
328 | } | ||
329 | - header('Location: '. $uri); | ||
330 | + header('Location: '. $userspace . $uri); | ||
331 | exit; | ||
332 | } | ||
333 | |||
334 | if (isset($_GET['edit_link'])) { | ||
335 | - header('Location: ?edit_link='. escape($_GET['edit_link'])); | ||
336 | + header('Location: ' . $userspace . '?edit_link='. escape($_GET['edit_link'])); | ||
337 | exit; | ||
338 | } | ||
339 | |||
340 | if (isset($_POST['returnurl'])) { | ||
341 | // Prevent loops over login screen. | ||
342 | if (strpos($_POST['returnurl'], 'do=login') === false) { | ||
343 | - header('Location: '. generateLocation($_POST['returnurl'], $_SERVER['HTTP_HOST'])); | ||
344 | + header('Location: ' . generateLocation($_POST['returnurl'], $_SERVER['HTTP_HOST'])); | ||
345 | exit; | ||
346 | } | ||
347 | } | ||
348 | - header('Location: ?'); exit; | ||
349 | + header('Location: '. $userspace . '?'); exit; | ||
350 | } else { | ||
351 | - $loginManager->handleFailedLogin($_SERVER); | ||
352 | + $errorReason = $loginManager->handleFailedLogin($_SERVER); | ||
353 | $redir = '&username='. urlencode($_POST['login']); | ||
354 | if (isset($_GET['post'])) { | ||
355 | $redir .= '&post=' . urlencode($_GET['post']); | ||
356 | @@ -270,7 +296,7 @@ function isLoggedIn() | ||
357 | } | ||
358 | } | ||
359 | // Redirect to login screen. | ||
360 | - echo '<script>alert("'. t("Wrong login/password.") .'");document.location=\'?do=login'.$redir.'\';</script>'; | ||
361 | + echo '<script>alert("'. t($errorReason) .'");document.location=\'?do=login'.$redir.'\';</script>'; | ||
362 | exit; | ||
363 | } | ||
364 | } | ||
365 | @@ -1719,7 +1745,7 @@ function buildLinkList($PAGE, $LINKSDB, $conf, $pluginManager, $loginManager) | ||
366 | * @param SessionManager $sessionManager SessionManager instance | ||
367 | * @param LoginManager $loginManager LoginManager instance | ||
368 | */ | ||
369 | -function install($conf, $sessionManager, $loginManager) { | ||
370 | +function install($conf, $sessionManager, $loginManager, $userspace) { | ||
371 | // On free.fr host, make sure the /sessions directory exists, otherwise login will not work. | ||
372 | if (endsWith($_SERVER['HTTP_HOST'],'.free.fr') && !is_dir($_SERVER['DOCUMENT_ROOT'].'/sessions')) mkdir($_SERVER['DOCUMENT_ROOT'].'/sessions',0705); | ||
373 | |||
374 | @@ -1755,7 +1781,7 @@ function install($conf, $sessionManager, $loginManager) { | ||
375 | } | ||
376 | |||
377 | |||
378 | - if (!empty($_POST['setlogin']) && !empty($_POST['setpassword'])) | ||
379 | + if (true) | ||
380 | { | ||
381 | $tz = 'UTC'; | ||
382 | if (!empty($_POST['continent']) && !empty($_POST['city']) | ||
383 | @@ -1764,15 +1790,15 @@ function install($conf, $sessionManager, $loginManager) { | ||
384 | $tz = $_POST['continent'].'/'.$_POST['city']; | ||
385 | } | ||
386 | $conf->set('general.timezone', $tz); | ||
387 | - $login = $_POST['setlogin']; | ||
388 | - $conf->set('credentials.login', $login); | ||
389 | + $conf->set('credentials.login', $userspace); | ||
390 | $salt = sha1(uniqid('', true) .'_'. mt_rand()); | ||
391 | $conf->set('credentials.salt', $salt); | ||
392 | - $conf->set('credentials.hash', sha1($_POST['setpassword'] . $login . $salt)); | ||
393 | + $hash = sha1(uniqid('', true) .'_'. mt_rand()); | ||
394 | + $conf->set('credentials.hash', $hash); | ||
395 | if (!empty($_POST['title'])) { | ||
396 | $conf->set('general.title', escape($_POST['title'])); | ||
397 | } else { | ||
398 | - $conf->set('general.title', 'Shared links on '.escape(index_url($_SERVER))); | ||
399 | + $conf->set('general.title', ucwords(str_replace("_", " ", $userspace))); | ||
400 | } | ||
401 | $conf->set('translation.language', escape($_POST['language'])); | ||
402 | $conf->set('updates.check_updates', !empty($_POST['updateCheck'])); | ||
403 | @@ -1841,7 +1867,12 @@ function install($conf, $sessionManager, $loginManager) { | ||
404 | $app = new \Slim\App($container); | ||
405 | |||
406 | // REST API routes | ||
407 | -$app->group('/api/v1', function() { | ||
408 | +if (isset($userspace)) { | ||
409 | + $mountpoint = '/' . $userspace . '/api/v1'; | ||
410 | +} else { | ||
411 | + $mountpoint = '/api/v1'; | ||
412 | +} | ||
413 | +$app->group($mountpoint, function() { | ||
414 | $this->get('/info', '\Shaarli\Api\Controllers\Info:getInfo')->setName('getInfo'); | ||
415 | $this->get('/links', '\Shaarli\Api\Controllers\Links:getLinks')->setName('getLinks'); | ||
416 | $this->get('/links/{id:[\d]+}', '\Shaarli\Api\Controllers\Links:getLink')->setName('getLink'); | ||
417 | @@ -1860,7 +1891,7 @@ function install($conf, $sessionManager, $loginManager) { | ||
418 | $response = $app->run(true); | ||
419 | // Hack to make Slim and Shaarli router work together: | ||
420 | // If a Slim route isn't found and NOT API call, we call renderPage(). | ||
421 | -if ($response->getStatusCode() == 404 && strpos($_SERVER['REQUEST_URI'], '/api/v1') === false) { | ||
422 | +if ($response->getStatusCode() == 404 && strpos($_SERVER['REQUEST_URI'], $mountpoint) === false) { | ||
423 | // We use UTF-8 for proper international characters handling. | ||
424 | header('Content-Type: text/html; charset=utf-8'); | ||
425 | renderPage($conf, $pluginManager, $linkDb, $history, $sessionManager, $loginManager); | ||
diff --git a/flakes/mypackages/pkgs/signaldctl/default.nix b/flakes/mypackages/pkgs/signaldctl/default.nix new file mode 100644 index 0000000..3ae85d8 --- /dev/null +++ b/flakes/mypackages/pkgs/signaldctl/default.nix | |||
@@ -0,0 +1,13 @@ | |||
1 | { buildGoModule, fetchgit, lib }: | ||
2 | |||
3 | buildGoModule { | ||
4 | pname = "signaldctl"; | ||
5 | version = "main-3ca2d6f6"; | ||
6 | src = fetchgit { | ||
7 | url = "https://gitlab.com/signald/signald-go.git"; | ||
8 | branchName = "main"; | ||
9 | rev = "3ca2d6f6c91d44f34fca3221c430d1c47fa31a5a"; | ||
10 | sha256 = "0hh2jqfdsvclilqllyfxswpw6fk0ncyhbiy08mwfp3dnk8nlz5vk"; | ||
11 | }; | ||
12 | vendorSha256 = "0m3spzv79fgnrg0sxhi3nrpdrvmrznwdca6rrz8qxgqb7a58qcxv"; | ||
13 | } | ||
diff --git a/flakes/mypackages/pkgs/slang_1/default.nix b/flakes/mypackages/pkgs/slang_1/default.nix new file mode 100644 index 0000000..cd626e0 --- /dev/null +++ b/flakes/mypackages/pkgs/slang_1/default.nix | |||
@@ -0,0 +1,25 @@ | |||
1 | { stdenv, fetchpatch, fetchurl }: | ||
2 | stdenv.mkDerivation rec { | ||
3 | name = "slang-debian-patched-${version}"; | ||
4 | version = "1.4.9"; | ||
5 | src = fetchurl { | ||
6 | url = "ftp://space.mit.edu/pub/davis/slang/v1.4/slang-1.4.9.tar.gz"; | ||
7 | sha256 = "1y2mg0whqh4b3acd0k17i4biz55bimxg8aaxhmwd165cvspxns9r"; | ||
8 | }; | ||
9 | debian_patches = fetchurl { | ||
10 | url = "http://archive.debian.org/debian-archive/debian-amd64/pool/main/s/slang/slang_1.4.9dbs-8.diff.gz"; | ||
11 | sha256 = "0xdq14k5ynqfwpmis1rcggs7m4n921i3bs27icbmbhfg5gb2hap2"; | ||
12 | }; | ||
13 | patchPhase = '' | ||
14 | gunzip -c ${debian_patches} | patch -p1 | ||
15 | for i in debian/patches/*; do | ||
16 | patch -p1 < $i | ||
17 | done | ||
18 | ''; | ||
19 | preConfigure = '' | ||
20 | makeFlagsArray=(CFLAGS=" -g -O2 -fno-strength-reduce -DUTF8 -D_REENTRANT -D_XOPEN_SOURCE=500") | ||
21 | ''; | ||
22 | postBuild = '' | ||
23 | sed -i "1i#ifndef UTF8\n#define UTF8\n#endif" src/slang.h | ||
24 | ''; | ||
25 | } | ||
diff --git a/flakes/mypackages/pkgs/status_engine/host_perfdata.patch b/flakes/mypackages/pkgs/status_engine/host_perfdata.patch new file mode 100644 index 0000000..0c8a20b --- /dev/null +++ b/flakes/mypackages/pkgs/status_engine/host_perfdata.patch | |||
@@ -0,0 +1,47 @@ | |||
1 | diff --git a/src/statusengine.c b/src/statusengine.c | ||
2 | index cc0b06e..2a18dec 100644 | ||
3 | --- a/src/statusengine.c | ||
4 | +++ b/src/statusengine.c | ||
5 | @@ -304,6 +304,7 @@ int enable_ocsp = 0; | ||
6 | |||
7 | int use_restart_data=1; | ||
8 | int use_service_perfdata=0; | ||
9 | +int use_host_perfdata=0; | ||
10 | |||
11 | int statusengine_process_config_var(char *arg); | ||
12 | int statusengine_process_module_args(char *args); | ||
13 | @@ -612,6 +613,9 @@ int statusengine_process_config_var(char *arg) { | ||
14 | } else if (!strcmp(var, "use_service_perfdata")) { | ||
15 | use_service_perfdata = atoi(val); | ||
16 | logswitch(NSLOG_INFO_MESSAGE, "start with enabled use_service_perfdata"); | ||
17 | + } else if (!strcmp(var, "use_host_perfdata")) { | ||
18 | + use_host_perfdata = atoi(val); | ||
19 | + logswitch(NSLOG_INFO_MESSAGE, "start with enabled use_host_perfdata"); | ||
20 | } else { | ||
21 | return ERROR; | ||
22 | } | ||
23 | @@ -1067,6 +1071,24 @@ int statusengine_handle_data(int event_type, void *data){ | ||
24 | json_object_put(my_object); | ||
25 | free(raw_command); | ||
26 | |||
27 | + if(use_host_perfdata){ | ||
28 | + my_object = json_object_new_object(); | ||
29 | + json_object_object_add(my_object, "type", json_object_new_int(hostcheck->type)); | ||
30 | + json_object_object_add(my_object, "flags", json_object_new_int(hostcheck->flags)); | ||
31 | + json_object_object_add(my_object, "attr", json_object_new_int(hostcheck->attr)); | ||
32 | + json_object_object_add(my_object, "timestamp", json_object_new_int(hostcheck->timestamp.tv_sec)); | ||
33 | + | ||
34 | + json_object *hostcheck_object = json_object_new_object(); | ||
35 | + HOSTCHECKFIELD_STRING(host_name); | ||
36 | + HOSTCHECKFIELD_STRING(perf_data); | ||
37 | + json_object_object_add(hostcheck_object, "start_time", json_object_new_int64(nag_hostcheck->start_time.tv_sec)); | ||
38 | + | ||
39 | + json_object_object_add(my_object, "hostcheck", hostcheck_object); | ||
40 | + const char* json_string = json_object_to_json_string(my_object); | ||
41 | + statusengine_send_job("statusngin_host_perfdata", (void *)json_string); | ||
42 | + | ||
43 | + json_object_put(my_object); | ||
44 | + } | ||
45 | } | ||
46 | break; | ||
47 | |||
diff --git a/flakes/mypackages/pkgs/status_engine/interface.nix b/flakes/mypackages/pkgs/status_engine/interface.nix new file mode 100644 index 0000000..9c8ff5e --- /dev/null +++ b/flakes/mypackages/pkgs/status_engine/interface.nix | |||
@@ -0,0 +1,24 @@ | |||
1 | { stdenv, composerEnv, php73, fetchurl, callPackage, config_file ? "/var/lib/status_engine/interface.yml" }: | ||
2 | let | ||
3 | composerEnv' = composerEnv.override { php = php73; }; | ||
4 | in | ||
5 | composerEnv'.buildPackage ( | ||
6 | import ./interface_php_packages.nix { composerEnv = composerEnv'; inherit fetchurl; } // rec { | ||
7 | pname = "interface"; | ||
8 | version = "3.4.0"; | ||
9 | name = "${pname}-${version}"; | ||
10 | src = fetchurl { | ||
11 | url = "https://github.com/statusengine/${pname}/archive/${version}.tar.gz"; | ||
12 | sha256 = "1l11cskv740xvqs9a2yj9zkvgvxvymaq5qap36g2r4hkqbfbbjj2"; | ||
13 | }; | ||
14 | unpackPhase = null; | ||
15 | postUnpack = '' | ||
16 | src=$(pwd)/$sourceRoot | ||
17 | ''; | ||
18 | postInstall = '' | ||
19 | ln -s ${config_file} $out/etc/config.yml | ||
20 | ''; | ||
21 | preInstall = '' | ||
22 | cp ${./interface_composer.lock} $out/composer.lock | ||
23 | ''; | ||
24 | }) | ||
diff --git a/flakes/mypackages/pkgs/status_engine/interface_composer.lock b/flakes/mypackages/pkgs/status_engine/interface_composer.lock new file mode 100644 index 0000000..8911d9f --- /dev/null +++ b/flakes/mypackages/pkgs/status_engine/interface_composer.lock | |||
@@ -0,0 +1,1323 @@ | |||
1 | { | ||
2 | "_readme": [ | ||
3 | "This file locks the dependencies of your project to a known state", | ||
4 | "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", | ||
5 | "This file is @generated automatically" | ||
6 | ], | ||
7 | "content-hash": "668fd19407022566bb6a70398e2f954e", | ||
8 | "packages": [ | ||
9 | { | ||
10 | "name": "crate/crate-dbal", | ||
11 | "version": "2.2.0", | ||
12 | "source": { | ||
13 | "type": "git", | ||
14 | "url": "https://github.com/crate/crate-dbal.git", | ||
15 | "reference": "f5e3f5cb4f2d32f00d2dde2b91beae17f38ff417" | ||
16 | }, | ||
17 | "dist": { | ||
18 | "type": "zip", | ||
19 | "url": "https://api.github.com/repos/crate/crate-dbal/zipball/f5e3f5cb4f2d32f00d2dde2b91beae17f38ff417", | ||
20 | "reference": "f5e3f5cb4f2d32f00d2dde2b91beae17f38ff417", | ||
21 | "shasum": "" | ||
22 | }, | ||
23 | "require": { | ||
24 | "crate/crate-pdo": "^1.0.0", | ||
25 | "doctrine/dbal": "^2.10.1", | ||
26 | "php": "^7.2" | ||
27 | }, | ||
28 | "require-dev": { | ||
29 | "phpunit/phpunit": "^8.0", | ||
30 | "squizlabs/php_codesniffer": "~1.5.2" | ||
31 | }, | ||
32 | "type": "library", | ||
33 | "autoload": { | ||
34 | "psr-0": { | ||
35 | "Crate\\DBAL": "src" | ||
36 | } | ||
37 | }, | ||
38 | "notification-url": "https://packagist.org/downloads/", | ||
39 | "license": [ | ||
40 | "Apache-2.0" | ||
41 | ], | ||
42 | "authors": [ | ||
43 | { | ||
44 | "name": "Crate.io", | ||
45 | "email": "office@crate.io", | ||
46 | "homepage": "https://crate.io", | ||
47 | "role": "maintainer" | ||
48 | } | ||
49 | ], | ||
50 | "description": "Doctrine Database Abstraction Layer (DBAL) adapter for CrateDB", | ||
51 | "homepage": "https://github.com/crate/crate-dbal", | ||
52 | "keywords": [ | ||
53 | "crate", | ||
54 | "database", | ||
55 | "dbal", | ||
56 | "doctrine" | ||
57 | ], | ||
58 | "time": "2020-01-08T08:31:16+00:00" | ||
59 | }, | ||
60 | { | ||
61 | "name": "crate/crate-pdo", | ||
62 | "version": "1.0.1", | ||
63 | "source": { | ||
64 | "type": "git", | ||
65 | "url": "https://github.com/crate/crate-pdo.git", | ||
66 | "reference": "33332cef1a27844e473265e584223f142c37317f" | ||
67 | }, | ||
68 | "dist": { | ||
69 | "type": "zip", | ||
70 | "url": "https://api.github.com/repos/crate/crate-pdo/zipball/33332cef1a27844e473265e584223f142c37317f", | ||
71 | "reference": "33332cef1a27844e473265e584223f142c37317f", | ||
72 | "shasum": "" | ||
73 | }, | ||
74 | "require": { | ||
75 | "ext-pdo": "*", | ||
76 | "guzzlehttp/guzzle": "~6.0", | ||
77 | "php": "^7.2" | ||
78 | }, | ||
79 | "require-dev": { | ||
80 | "phpstan/phpstan": "^0.9.2", | ||
81 | "phpunit/phpunit": "~7.0", | ||
82 | "squizlabs/php_codesniffer": "^2.8.1" | ||
83 | }, | ||
84 | "type": "library", | ||
85 | "autoload": { | ||
86 | "psr-0": { | ||
87 | "Crate\\": "src" | ||
88 | } | ||
89 | }, | ||
90 | "notification-url": "https://packagist.org/downloads/", | ||
91 | "license": [ | ||
92 | "Apache-2.0" | ||
93 | ], | ||
94 | "authors": [ | ||
95 | { | ||
96 | "name": "Crate.io", | ||
97 | "email": "office@crate.io", | ||
98 | "homepage": "https://crate.io", | ||
99 | "role": "maintainer" | ||
100 | } | ||
101 | ], | ||
102 | "description": "PDO adapter for CrateDB", | ||
103 | "homepage": "https://github.com/crate/crate-pdo", | ||
104 | "keywords": [ | ||
105 | "crate", | ||
106 | "database", | ||
107 | "pdo" | ||
108 | ], | ||
109 | "time": "2019-04-09T07:48:20+00:00" | ||
110 | }, | ||
111 | { | ||
112 | "name": "doctrine/cache", | ||
113 | "version": "1.10.1", | ||
114 | "source": { | ||
115 | "type": "git", | ||
116 | "url": "https://github.com/doctrine/cache.git", | ||
117 | "reference": "35a4a70cd94e09e2259dfae7488afc6b474ecbd3" | ||
118 | }, | ||
119 | "dist": { | ||
120 | "type": "zip", | ||
121 | "url": "https://api.github.com/repos/doctrine/cache/zipball/35a4a70cd94e09e2259dfae7488afc6b474ecbd3", | ||
122 | "reference": "35a4a70cd94e09e2259dfae7488afc6b474ecbd3", | ||
123 | "shasum": "" | ||
124 | }, | ||
125 | "require": { | ||
126 | "php": "~7.1 || ^8.0" | ||
127 | }, | ||
128 | "conflict": { | ||
129 | "doctrine/common": ">2.2,<2.4" | ||
130 | }, | ||
131 | "require-dev": { | ||
132 | "alcaeus/mongo-php-adapter": "^1.1", | ||
133 | "doctrine/coding-standard": "^6.0", | ||
134 | "mongodb/mongodb": "^1.1", | ||
135 | "phpunit/phpunit": "^7.0", | ||
136 | "predis/predis": "~1.0" | ||
137 | }, | ||
138 | "suggest": { | ||
139 | "alcaeus/mongo-php-adapter": "Required to use legacy MongoDB driver" | ||
140 | }, | ||
141 | "type": "library", | ||
142 | "extra": { | ||
143 | "branch-alias": { | ||
144 | "dev-master": "1.9.x-dev" | ||
145 | } | ||
146 | }, | ||
147 | "autoload": { | ||
148 | "psr-4": { | ||
149 | "Doctrine\\Common\\Cache\\": "lib/Doctrine/Common/Cache" | ||
150 | } | ||
151 | }, | ||
152 | "notification-url": "https://packagist.org/downloads/", | ||
153 | "license": [ | ||
154 | "MIT" | ||
155 | ], | ||
156 | "authors": [ | ||
157 | { | ||
158 | "name": "Guilherme Blanco", | ||
159 | "email": "guilhermeblanco@gmail.com" | ||
160 | }, | ||
161 | { | ||
162 | "name": "Roman Borschel", | ||
163 | "email": "roman@code-factory.org" | ||
164 | }, | ||
165 | { | ||
166 | "name": "Benjamin Eberlei", | ||
167 | "email": "kontakt@beberlei.de" | ||
168 | }, | ||
169 | { | ||
170 | "name": "Jonathan Wage", | ||
171 | "email": "jonwage@gmail.com" | ||
172 | }, | ||
173 | { | ||
174 | "name": "Johannes Schmitt", | ||
175 | "email": "schmittjoh@gmail.com" | ||
176 | } | ||
177 | ], | ||
178 | "description": "PHP Doctrine Cache library is a popular cache implementation that supports many different drivers such as redis, memcache, apc, mongodb and others.", | ||
179 | "homepage": "https://www.doctrine-project.org/projects/cache.html", | ||
180 | "keywords": [ | ||
181 | "abstraction", | ||
182 | "apcu", | ||
183 | "cache", | ||
184 | "caching", | ||
185 | "couchdb", | ||
186 | "memcached", | ||
187 | "php", | ||
188 | "redis", | ||
189 | "xcache" | ||
190 | ], | ||
191 | "funding": [ | ||
192 | { | ||
193 | "url": "https://www.doctrine-project.org/sponsorship.html", | ||
194 | "type": "custom" | ||
195 | }, | ||
196 | { | ||
197 | "url": "https://www.patreon.com/phpdoctrine", | ||
198 | "type": "patreon" | ||
199 | }, | ||
200 | { | ||
201 | "url": "https://tidelift.com/funding/github/packagist/doctrine%2Fcache", | ||
202 | "type": "tidelift" | ||
203 | } | ||
204 | ], | ||
205 | "time": "2020-05-27T16:24:54+00:00" | ||
206 | }, | ||
207 | { | ||
208 | "name": "doctrine/dbal", | ||
209 | "version": "2.10.2", | ||
210 | "source": { | ||
211 | "type": "git", | ||
212 | "url": "https://github.com/doctrine/dbal.git", | ||
213 | "reference": "aab745e7b6b2de3b47019da81e7225e14dcfdac8" | ||
214 | }, | ||
215 | "dist": { | ||
216 | "type": "zip", | ||
217 | "url": "https://api.github.com/repos/doctrine/dbal/zipball/aab745e7b6b2de3b47019da81e7225e14dcfdac8", | ||
218 | "reference": "aab745e7b6b2de3b47019da81e7225e14dcfdac8", | ||
219 | "shasum": "" | ||
220 | }, | ||
221 | "require": { | ||
222 | "doctrine/cache": "^1.0", | ||
223 | "doctrine/event-manager": "^1.0", | ||
224 | "ext-pdo": "*", | ||
225 | "php": "^7.2" | ||
226 | }, | ||
227 | "require-dev": { | ||
228 | "doctrine/coding-standard": "^6.0", | ||
229 | "jetbrains/phpstorm-stubs": "^2019.1", | ||
230 | "nikic/php-parser": "^4.4", | ||
231 | "phpstan/phpstan": "^0.12", | ||
232 | "phpunit/phpunit": "^8.4.1", | ||
233 | "symfony/console": "^2.0.5|^3.0|^4.0|^5.0", | ||
234 | "vimeo/psalm": "^3.11" | ||
235 | }, | ||
236 | "suggest": { | ||
237 | "symfony/console": "For helpful console commands such as SQL execution and import of files." | ||
238 | }, | ||
239 | "bin": [ | ||
240 | "bin/doctrine-dbal" | ||
241 | ], | ||
242 | "type": "library", | ||
243 | "extra": { | ||
244 | "branch-alias": { | ||
245 | "dev-master": "2.10.x-dev", | ||
246 | "dev-develop": "3.0.x-dev" | ||
247 | } | ||
248 | }, | ||
249 | "autoload": { | ||
250 | "psr-4": { | ||
251 | "Doctrine\\DBAL\\": "lib/Doctrine/DBAL" | ||
252 | } | ||
253 | }, | ||
254 | "notification-url": "https://packagist.org/downloads/", | ||
255 | "license": [ | ||
256 | "MIT" | ||
257 | ], | ||
258 | "authors": [ | ||
259 | { | ||
260 | "name": "Guilherme Blanco", | ||
261 | "email": "guilhermeblanco@gmail.com" | ||
262 | }, | ||
263 | { | ||
264 | "name": "Roman Borschel", | ||
265 | "email": "roman@code-factory.org" | ||
266 | }, | ||
267 | { | ||
268 | "name": "Benjamin Eberlei", | ||
269 | "email": "kontakt@beberlei.de" | ||
270 | }, | ||
271 | { | ||
272 | "name": "Jonathan Wage", | ||
273 | "email": "jonwage@gmail.com" | ||
274 | } | ||
275 | ], | ||
276 | "description": "Powerful PHP database abstraction layer (DBAL) with many features for database schema introspection and management.", | ||
277 | "homepage": "https://www.doctrine-project.org/projects/dbal.html", | ||
278 | "keywords": [ | ||
279 | "abstraction", | ||
280 | "database", | ||
281 | "db2", | ||
282 | "dbal", | ||
283 | "mariadb", | ||
284 | "mssql", | ||
285 | "mysql", | ||
286 | "oci8", | ||
287 | "oracle", | ||
288 | "pdo", | ||
289 | "pgsql", | ||
290 | "postgresql", | ||
291 | "queryobject", | ||
292 | "sasql", | ||
293 | "sql", | ||
294 | "sqlanywhere", | ||
295 | "sqlite", | ||
296 | "sqlserver", | ||
297 | "sqlsrv" | ||
298 | ], | ||
299 | "funding": [ | ||
300 | { | ||
301 | "url": "https://www.doctrine-project.org/sponsorship.html", | ||
302 | "type": "custom" | ||
303 | }, | ||
304 | { | ||
305 | "url": "https://www.patreon.com/phpdoctrine", | ||
306 | "type": "patreon" | ||
307 | }, | ||
308 | { | ||
309 | "url": "https://tidelift.com/funding/github/packagist/doctrine%2Fdbal", | ||
310 | "type": "tidelift" | ||
311 | } | ||
312 | ], | ||
313 | "time": "2020-04-20T17:19:26+00:00" | ||
314 | }, | ||
315 | { | ||
316 | "name": "doctrine/event-manager", | ||
317 | "version": "1.1.0", | ||
318 | "source": { | ||
319 | "type": "git", | ||
320 | "url": "https://github.com/doctrine/event-manager.git", | ||
321 | "reference": "629572819973f13486371cb611386eb17851e85c" | ||
322 | }, | ||
323 | "dist": { | ||
324 | "type": "zip", | ||
325 | "url": "https://api.github.com/repos/doctrine/event-manager/zipball/629572819973f13486371cb611386eb17851e85c", | ||
326 | "reference": "629572819973f13486371cb611386eb17851e85c", | ||
327 | "shasum": "" | ||
328 | }, | ||
329 | "require": { | ||
330 | "php": "^7.1" | ||
331 | }, | ||
332 | "conflict": { | ||
333 | "doctrine/common": "<2.9@dev" | ||
334 | }, | ||
335 | "require-dev": { | ||
336 | "doctrine/coding-standard": "^6.0", | ||
337 | "phpunit/phpunit": "^7.0" | ||
338 | }, | ||
339 | "type": "library", | ||
340 | "extra": { | ||
341 | "branch-alias": { | ||
342 | "dev-master": "1.0.x-dev" | ||
343 | } | ||
344 | }, | ||
345 | "autoload": { | ||
346 | "psr-4": { | ||
347 | "Doctrine\\Common\\": "lib/Doctrine/Common" | ||
348 | } | ||
349 | }, | ||
350 | "notification-url": "https://packagist.org/downloads/", | ||
351 | "license": [ | ||
352 | "MIT" | ||
353 | ], | ||
354 | "authors": [ | ||
355 | { | ||
356 | "name": "Guilherme Blanco", | ||
357 | "email": "guilhermeblanco@gmail.com" | ||
358 | }, | ||
359 | { | ||
360 | "name": "Roman Borschel", | ||
361 | "email": "roman@code-factory.org" | ||
362 | }, | ||
363 | { | ||
364 | "name": "Benjamin Eberlei", | ||
365 | "email": "kontakt@beberlei.de" | ||
366 | }, | ||
367 | { | ||
368 | "name": "Jonathan Wage", | ||
369 | "email": "jonwage@gmail.com" | ||
370 | }, | ||
371 | { | ||
372 | "name": "Johannes Schmitt", | ||
373 | "email": "schmittjoh@gmail.com" | ||
374 | }, | ||
375 | { | ||
376 | "name": "Marco Pivetta", | ||
377 | "email": "ocramius@gmail.com" | ||
378 | } | ||
379 | ], | ||
380 | "description": "The Doctrine Event Manager is a simple PHP event system that was built to be used with the various Doctrine projects.", | ||
381 | "homepage": "https://www.doctrine-project.org/projects/event-manager.html", | ||
382 | "keywords": [ | ||
383 | "event", | ||
384 | "event dispatcher", | ||
385 | "event manager", | ||
386 | "event system", | ||
387 | "events" | ||
388 | ], | ||
389 | "time": "2019-11-10T09:48:07+00:00" | ||
390 | }, | ||
391 | { | ||
392 | "name": "guzzlehttp/guzzle", | ||
393 | "version": "6.5.4", | ||
394 | "source": { | ||
395 | "type": "git", | ||
396 | "url": "https://github.com/guzzle/guzzle.git", | ||
397 | "reference": "a4a1b6930528a8f7ee03518e6442ec7a44155d9d" | ||
398 | }, | ||
399 | "dist": { | ||
400 | "type": "zip", | ||
401 | "url": "https://api.github.com/repos/guzzle/guzzle/zipball/a4a1b6930528a8f7ee03518e6442ec7a44155d9d", | ||
402 | "reference": "a4a1b6930528a8f7ee03518e6442ec7a44155d9d", | ||
403 | "shasum": "" | ||
404 | }, | ||
405 | "require": { | ||
406 | "ext-json": "*", | ||
407 | "guzzlehttp/promises": "^1.0", | ||
408 | "guzzlehttp/psr7": "^1.6.1", | ||
409 | "php": ">=5.5", | ||
410 | "symfony/polyfill-intl-idn": "1.17.0" | ||
411 | }, | ||
412 | "require-dev": { | ||
413 | "ext-curl": "*", | ||
414 | "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.4 || ^7.0", | ||
415 | "psr/log": "^1.1" | ||
416 | }, | ||
417 | "suggest": { | ||
418 | "psr/log": "Required for using the Log middleware" | ||
419 | }, | ||
420 | "type": "library", | ||
421 | "extra": { | ||
422 | "branch-alias": { | ||
423 | "dev-master": "6.5-dev" | ||
424 | } | ||
425 | }, | ||
426 | "autoload": { | ||
427 | "psr-4": { | ||
428 | "GuzzleHttp\\": "src/" | ||
429 | }, | ||
430 | "files": [ | ||
431 | "src/functions_include.php" | ||
432 | ] | ||
433 | }, | ||
434 | "notification-url": "https://packagist.org/downloads/", | ||
435 | "license": [ | ||
436 | "MIT" | ||
437 | ], | ||
438 | "authors": [ | ||
439 | { | ||
440 | "name": "Michael Dowling", | ||
441 | "email": "mtdowling@gmail.com", | ||
442 | "homepage": "https://github.com/mtdowling" | ||
443 | } | ||
444 | ], | ||
445 | "description": "Guzzle is a PHP HTTP client library", | ||
446 | "homepage": "http://guzzlephp.org/", | ||
447 | "keywords": [ | ||
448 | "client", | ||
449 | "curl", | ||
450 | "framework", | ||
451 | "http", | ||
452 | "http client", | ||
453 | "rest", | ||
454 | "web service" | ||
455 | ], | ||
456 | "time": "2020-05-25T19:35:05+00:00" | ||
457 | }, | ||
458 | { | ||
459 | "name": "guzzlehttp/promises", | ||
460 | "version": "v1.3.1", | ||
461 | "source": { | ||
462 | "type": "git", | ||
463 | "url": "https://github.com/guzzle/promises.git", | ||
464 | "reference": "a59da6cf61d80060647ff4d3eb2c03a2bc694646" | ||
465 | }, | ||
466 | "dist": { | ||
467 | "type": "zip", | ||
468 | "url": "https://api.github.com/repos/guzzle/promises/zipball/a59da6cf61d80060647ff4d3eb2c03a2bc694646", | ||
469 | "reference": "a59da6cf61d80060647ff4d3eb2c03a2bc694646", | ||
470 | "shasum": "" | ||
471 | }, | ||
472 | "require": { | ||
473 | "php": ">=5.5.0" | ||
474 | }, | ||
475 | "require-dev": { | ||
476 | "phpunit/phpunit": "^4.0" | ||
477 | }, | ||
478 | "type": "library", | ||
479 | "extra": { | ||
480 | "branch-alias": { | ||
481 | "dev-master": "1.4-dev" | ||
482 | } | ||
483 | }, | ||
484 | "autoload": { | ||
485 | "psr-4": { | ||
486 | "GuzzleHttp\\Promise\\": "src/" | ||
487 | }, | ||
488 | "files": [ | ||
489 | "src/functions_include.php" | ||
490 | ] | ||
491 | }, | ||
492 | "notification-url": "https://packagist.org/downloads/", | ||
493 | "license": [ | ||
494 | "MIT" | ||
495 | ], | ||
496 | "authors": [ | ||
497 | { | ||
498 | "name": "Michael Dowling", | ||
499 | "email": "mtdowling@gmail.com", | ||
500 | "homepage": "https://github.com/mtdowling" | ||
501 | } | ||
502 | ], | ||
503 | "description": "Guzzle promises library", | ||
504 | "keywords": [ | ||
505 | "promise" | ||
506 | ], | ||
507 | "time": "2016-12-20T10:07:11+00:00" | ||
508 | }, | ||
509 | { | ||
510 | "name": "guzzlehttp/psr7", | ||
511 | "version": "1.6.1", | ||
512 | "source": { | ||
513 | "type": "git", | ||
514 | "url": "https://github.com/guzzle/psr7.git", | ||
515 | "reference": "239400de7a173fe9901b9ac7c06497751f00727a" | ||
516 | }, | ||
517 | "dist": { | ||
518 | "type": "zip", | ||
519 | "url": "https://api.github.com/repos/guzzle/psr7/zipball/239400de7a173fe9901b9ac7c06497751f00727a", | ||
520 | "reference": "239400de7a173fe9901b9ac7c06497751f00727a", | ||
521 | "shasum": "" | ||
522 | }, | ||
523 | "require": { | ||
524 | "php": ">=5.4.0", | ||
525 | "psr/http-message": "~1.0", | ||
526 | "ralouphie/getallheaders": "^2.0.5 || ^3.0.0" | ||
527 | }, | ||
528 | "provide": { | ||
529 | "psr/http-message-implementation": "1.0" | ||
530 | }, | ||
531 | "require-dev": { | ||
532 | "ext-zlib": "*", | ||
533 | "phpunit/phpunit": "~4.8.36 || ^5.7.27 || ^6.5.8" | ||
534 | }, | ||
535 | "suggest": { | ||
536 | "zendframework/zend-httphandlerrunner": "Emit PSR-7 responses" | ||
537 | }, | ||
538 | "type": "library", | ||
539 | "extra": { | ||
540 | "branch-alias": { | ||
541 | "dev-master": "1.6-dev" | ||
542 | } | ||
543 | }, | ||
544 | "autoload": { | ||
545 | "psr-4": { | ||
546 | "GuzzleHttp\\Psr7\\": "src/" | ||
547 | }, | ||
548 | "files": [ | ||
549 | "src/functions_include.php" | ||
550 | ] | ||
551 | }, | ||
552 | "notification-url": "https://packagist.org/downloads/", | ||
553 | "license": [ | ||
554 | "MIT" | ||
555 | ], | ||
556 | "authors": [ | ||
557 | { | ||
558 | "name": "Michael Dowling", | ||
559 | "email": "mtdowling@gmail.com", | ||
560 | "homepage": "https://github.com/mtdowling" | ||
561 | }, | ||
562 | { | ||
563 | "name": "Tobias Schultze", | ||
564 | "homepage": "https://github.com/Tobion" | ||
565 | } | ||
566 | ], | ||
567 | "description": "PSR-7 message implementation that also provides common utility methods", | ||
568 | "keywords": [ | ||
569 | "http", | ||
570 | "message", | ||
571 | "psr-7", | ||
572 | "request", | ||
573 | "response", | ||
574 | "stream", | ||
575 | "uri", | ||
576 | "url" | ||
577 | ], | ||
578 | "time": "2019-07-01T23:21:34+00:00" | ||
579 | }, | ||
580 | { | ||
581 | "name": "nikic/fast-route", | ||
582 | "version": "v1.3.0", | ||
583 | "source": { | ||
584 | "type": "git", | ||
585 | "url": "https://github.com/nikic/FastRoute.git", | ||
586 | "reference": "181d480e08d9476e61381e04a71b34dc0432e812" | ||
587 | }, | ||
588 | "dist": { | ||
589 | "type": "zip", | ||
590 | "url": "https://api.github.com/repos/nikic/FastRoute/zipball/181d480e08d9476e61381e04a71b34dc0432e812", | ||
591 | "reference": "181d480e08d9476e61381e04a71b34dc0432e812", | ||
592 | "shasum": "" | ||
593 | }, | ||
594 | "require": { | ||
595 | "php": ">=5.4.0" | ||
596 | }, | ||
597 | "require-dev": { | ||
598 | "phpunit/phpunit": "^4.8.35|~5.7" | ||
599 | }, | ||
600 | "type": "library", | ||
601 | "autoload": { | ||
602 | "psr-4": { | ||
603 | "FastRoute\\": "src/" | ||
604 | }, | ||
605 | "files": [ | ||
606 | "src/functions.php" | ||
607 | ] | ||
608 | }, | ||
609 | "notification-url": "https://packagist.org/downloads/", | ||
610 | "license": [ | ||
611 | "BSD-3-Clause" | ||
612 | ], | ||
613 | "authors": [ | ||
614 | { | ||
615 | "name": "Nikita Popov", | ||
616 | "email": "nikic@php.net" | ||
617 | } | ||
618 | ], | ||
619 | "description": "Fast request router for PHP", | ||
620 | "keywords": [ | ||
621 | "router", | ||
622 | "routing" | ||
623 | ], | ||
624 | "time": "2018-02-13T20:26:39+00:00" | ||
625 | }, | ||
626 | { | ||
627 | "name": "paragonie/random_compat", | ||
628 | "version": "v9.99.99", | ||
629 | "source": { | ||
630 | "type": "git", | ||
631 | "url": "https://github.com/paragonie/random_compat.git", | ||
632 | "reference": "84b4dfb120c6f9b4ff7b3685f9b8f1aa365a0c95" | ||
633 | }, | ||
634 | "dist": { | ||
635 | "type": "zip", | ||
636 | "url": "https://api.github.com/repos/paragonie/random_compat/zipball/84b4dfb120c6f9b4ff7b3685f9b8f1aa365a0c95", | ||
637 | "reference": "84b4dfb120c6f9b4ff7b3685f9b8f1aa365a0c95", | ||
638 | "shasum": "" | ||
639 | }, | ||
640 | "require": { | ||
641 | "php": "^7" | ||
642 | }, | ||
643 | "require-dev": { | ||
644 | "phpunit/phpunit": "4.*|5.*", | ||
645 | "vimeo/psalm": "^1" | ||
646 | }, | ||
647 | "suggest": { | ||
648 | "ext-libsodium": "Provides a modern crypto API that can be used to generate random bytes." | ||
649 | }, | ||
650 | "type": "library", | ||
651 | "notification-url": "https://packagist.org/downloads/", | ||
652 | "license": [ | ||
653 | "MIT" | ||
654 | ], | ||
655 | "authors": [ | ||
656 | { | ||
657 | "name": "Paragon Initiative Enterprises", | ||
658 | "email": "security@paragonie.com", | ||
659 | "homepage": "https://paragonie.com" | ||
660 | } | ||
661 | ], | ||
662 | "description": "PHP 5.x polyfill for random_bytes() and random_int() from PHP 7", | ||
663 | "keywords": [ | ||
664 | "csprng", | ||
665 | "polyfill", | ||
666 | "pseudorandom", | ||
667 | "random" | ||
668 | ], | ||
669 | "time": "2018-07-02T15:55:56+00:00" | ||
670 | }, | ||
671 | { | ||
672 | "name": "pimple/pimple", | ||
673 | "version": "v3.3.0", | ||
674 | "source": { | ||
675 | "type": "git", | ||
676 | "url": "https://github.com/silexphp/Pimple.git", | ||
677 | "reference": "e55d12f9d6a0e7f9c85992b73df1267f46279930" | ||
678 | }, | ||
679 | "dist": { | ||
680 | "type": "zip", | ||
681 | "url": "https://api.github.com/repos/silexphp/Pimple/zipball/e55d12f9d6a0e7f9c85992b73df1267f46279930", | ||
682 | "reference": "e55d12f9d6a0e7f9c85992b73df1267f46279930", | ||
683 | "shasum": "" | ||
684 | }, | ||
685 | "require": { | ||
686 | "php": "^7.2.5", | ||
687 | "psr/container": "^1.0" | ||
688 | }, | ||
689 | "require-dev": { | ||
690 | "symfony/phpunit-bridge": "^3.4|^4.4|^5.0" | ||
691 | }, | ||
692 | "type": "library", | ||
693 | "extra": { | ||
694 | "branch-alias": { | ||
695 | "dev-master": "3.3.x-dev" | ||
696 | } | ||
697 | }, | ||
698 | "autoload": { | ||
699 | "psr-0": { | ||
700 | "Pimple": "src/" | ||
701 | } | ||
702 | }, | ||
703 | "notification-url": "https://packagist.org/downloads/", | ||
704 | "license": [ | ||
705 | "MIT" | ||
706 | ], | ||
707 | "authors": [ | ||
708 | { | ||
709 | "name": "Fabien Potencier", | ||
710 | "email": "fabien@symfony.com" | ||
711 | } | ||
712 | ], | ||
713 | "description": "Pimple, a simple Dependency Injection Container", | ||
714 | "homepage": "https://pimple.symfony.com", | ||
715 | "keywords": [ | ||
716 | "container", | ||
717 | "dependency injection" | ||
718 | ], | ||
719 | "time": "2020-03-03T09:12:48+00:00" | ||
720 | }, | ||
721 | { | ||
722 | "name": "psr/container", | ||
723 | "version": "1.0.0", | ||
724 | "source": { | ||
725 | "type": "git", | ||
726 | "url": "https://github.com/php-fig/container.git", | ||
727 | "reference": "b7ce3b176482dbbc1245ebf52b181af44c2cf55f" | ||
728 | }, | ||
729 | "dist": { | ||
730 | "type": "zip", | ||
731 | "url": "https://api.github.com/repos/php-fig/container/zipball/b7ce3b176482dbbc1245ebf52b181af44c2cf55f", | ||
732 | "reference": "b7ce3b176482dbbc1245ebf52b181af44c2cf55f", | ||
733 | "shasum": "" | ||
734 | }, | ||
735 | "require": { | ||
736 | "php": ">=5.3.0" | ||
737 | }, | ||
738 | "type": "library", | ||
739 | "extra": { | ||
740 | "branch-alias": { | ||
741 | "dev-master": "1.0.x-dev" | ||
742 | } | ||
743 | }, | ||
744 | "autoload": { | ||
745 | "psr-4": { | ||
746 | "Psr\\Container\\": "src/" | ||
747 | } | ||
748 | }, | ||
749 | "notification-url": "https://packagist.org/downloads/", | ||
750 | "license": [ | ||
751 | "MIT" | ||
752 | ], | ||
753 | "authors": [ | ||
754 | { | ||
755 | "name": "PHP-FIG", | ||
756 | "homepage": "http://www.php-fig.org/" | ||
757 | } | ||
758 | ], | ||
759 | "description": "Common Container Interface (PHP FIG PSR-11)", | ||
760 | "homepage": "https://github.com/php-fig/container", | ||
761 | "keywords": [ | ||
762 | "PSR-11", | ||
763 | "container", | ||
764 | "container-interface", | ||
765 | "container-interop", | ||
766 | "psr" | ||
767 | ], | ||
768 | "time": "2017-02-14T16:28:37+00:00" | ||
769 | }, | ||
770 | { | ||
771 | "name": "psr/http-message", | ||
772 | "version": "1.0.1", | ||
773 | "source": { | ||
774 | "type": "git", | ||
775 | "url": "https://github.com/php-fig/http-message.git", | ||
776 | "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363" | ||
777 | }, | ||
778 | "dist": { | ||
779 | "type": "zip", | ||
780 | "url": "https://api.github.com/repos/php-fig/http-message/zipball/f6561bf28d520154e4b0ec72be95418abe6d9363", | ||
781 | "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363", | ||
782 | "shasum": "" | ||
783 | }, | ||
784 | "require": { | ||
785 | "php": ">=5.3.0" | ||
786 | }, | ||
787 | "type": "library", | ||
788 | "extra": { | ||
789 | "branch-alias": { | ||
790 | "dev-master": "1.0.x-dev" | ||
791 | } | ||
792 | }, | ||
793 | "autoload": { | ||
794 | "psr-4": { | ||
795 | "Psr\\Http\\Message\\": "src/" | ||
796 | } | ||
797 | }, | ||
798 | "notification-url": "https://packagist.org/downloads/", | ||
799 | "license": [ | ||
800 | "MIT" | ||
801 | ], | ||
802 | "authors": [ | ||
803 | { | ||
804 | "name": "PHP-FIG", | ||
805 | "homepage": "http://www.php-fig.org/" | ||
806 | } | ||
807 | ], | ||
808 | "description": "Common interface for HTTP messages", | ||
809 | "homepage": "https://github.com/php-fig/http-message", | ||
810 | "keywords": [ | ||
811 | "http", | ||
812 | "http-message", | ||
813 | "psr", | ||
814 | "psr-7", | ||
815 | "request", | ||
816 | "response" | ||
817 | ], | ||
818 | "time": "2016-08-06T14:39:51+00:00" | ||
819 | }, | ||
820 | { | ||
821 | "name": "ralouphie/getallheaders", | ||
822 | "version": "3.0.3", | ||
823 | "source": { | ||
824 | "type": "git", | ||
825 | "url": "https://github.com/ralouphie/getallheaders.git", | ||
826 | "reference": "120b605dfeb996808c31b6477290a714d356e822" | ||
827 | }, | ||
828 | "dist": { | ||
829 | "type": "zip", | ||
830 | "url": "https://api.github.com/repos/ralouphie/getallheaders/zipball/120b605dfeb996808c31b6477290a714d356e822", | ||
831 | "reference": "120b605dfeb996808c31b6477290a714d356e822", | ||
832 | "shasum": "" | ||
833 | }, | ||
834 | "require": { | ||
835 | "php": ">=5.6" | ||
836 | }, | ||
837 | "require-dev": { | ||
838 | "php-coveralls/php-coveralls": "^2.1", | ||
839 | "phpunit/phpunit": "^5 || ^6.5" | ||
840 | }, | ||
841 | "type": "library", | ||
842 | "autoload": { | ||
843 | "files": [ | ||
844 | "src/getallheaders.php" | ||
845 | ] | ||
846 | }, | ||
847 | "notification-url": "https://packagist.org/downloads/", | ||
848 | "license": [ | ||
849 | "MIT" | ||
850 | ], | ||
851 | "authors": [ | ||
852 | { | ||
853 | "name": "Ralph Khattar", | ||
854 | "email": "ralph.khattar@gmail.com" | ||
855 | } | ||
856 | ], | ||
857 | "description": "A polyfill for getallheaders.", | ||
858 | "time": "2019-03-08T08:55:37+00:00" | ||
859 | }, | ||
860 | { | ||
861 | "name": "slim/csrf", | ||
862 | "version": "0.8.3", | ||
863 | "source": { | ||
864 | "type": "git", | ||
865 | "url": "https://github.com/slimphp/Slim-Csrf.git", | ||
866 | "reference": "5f2bcf5d89adf86dc0455a32bea84d912ab466a7" | ||
867 | }, | ||
868 | "dist": { | ||
869 | "type": "zip", | ||
870 | "url": "https://api.github.com/repos/slimphp/Slim-Csrf/zipball/5f2bcf5d89adf86dc0455a32bea84d912ab466a7", | ||
871 | "reference": "5f2bcf5d89adf86dc0455a32bea84d912ab466a7", | ||
872 | "shasum": "" | ||
873 | }, | ||
874 | "require": { | ||
875 | "paragonie/random_compat": "^1.1|^2.0|^9.99", | ||
876 | "php": ">=5.5.0", | ||
877 | "psr/http-message": "^1.0" | ||
878 | }, | ||
879 | "require-dev": { | ||
880 | "phpunit/phpunit": "^4.0", | ||
881 | "slim/slim": "~3.0" | ||
882 | }, | ||
883 | "type": "library", | ||
884 | "autoload": { | ||
885 | "psr-4": { | ||
886 | "Slim\\Csrf\\": "src" | ||
887 | } | ||
888 | }, | ||
889 | "notification-url": "https://packagist.org/downloads/", | ||
890 | "license": [ | ||
891 | "MIT" | ||
892 | ], | ||
893 | "authors": [ | ||
894 | { | ||
895 | "name": "Josh Lockhart", | ||
896 | "email": "hello@joshlockhart.com", | ||
897 | "homepage": "http://joshlockhart.com" | ||
898 | } | ||
899 | ], | ||
900 | "description": "Slim Framework 3 CSRF protection middleware", | ||
901 | "homepage": "http://slimframework.com", | ||
902 | "keywords": [ | ||
903 | "csrf", | ||
904 | "framework", | ||
905 | "middleware", | ||
906 | "slim" | ||
907 | ], | ||
908 | "time": "2018-08-22T16:12:18+00:00" | ||
909 | }, | ||
910 | { | ||
911 | "name": "slim/slim", | ||
912 | "version": "3.12.3", | ||
913 | "source": { | ||
914 | "type": "git", | ||
915 | "url": "https://github.com/slimphp/Slim.git", | ||
916 | "reference": "1c9318a84ffb890900901136d620b4f03a59da38" | ||
917 | }, | ||
918 | "dist": { | ||
919 | "type": "zip", | ||
920 | "url": "https://api.github.com/repos/slimphp/Slim/zipball/1c9318a84ffb890900901136d620b4f03a59da38", | ||
921 | "reference": "1c9318a84ffb890900901136d620b4f03a59da38", | ||
922 | "shasum": "" | ||
923 | }, | ||
924 | "require": { | ||
925 | "ext-json": "*", | ||
926 | "ext-libxml": "*", | ||
927 | "ext-simplexml": "*", | ||
928 | "nikic/fast-route": "^1.0", | ||
929 | "php": ">=5.5.0", | ||
930 | "pimple/pimple": "^3.0", | ||
931 | "psr/container": "^1.0", | ||
932 | "psr/http-message": "^1.0" | ||
933 | }, | ||
934 | "provide": { | ||
935 | "psr/http-message-implementation": "1.0" | ||
936 | }, | ||
937 | "require-dev": { | ||
938 | "phpunit/phpunit": "^4.0", | ||
939 | "squizlabs/php_codesniffer": "^2.5" | ||
940 | }, | ||
941 | "type": "library", | ||
942 | "autoload": { | ||
943 | "psr-4": { | ||
944 | "Slim\\": "Slim" | ||
945 | } | ||
946 | }, | ||
947 | "notification-url": "https://packagist.org/downloads/", | ||
948 | "license": [ | ||
949 | "MIT" | ||
950 | ], | ||
951 | "authors": [ | ||
952 | { | ||
953 | "name": "Josh Lockhart", | ||
954 | "email": "hello@joshlockhart.com", | ||
955 | "homepage": "https://joshlockhart.com" | ||
956 | }, | ||
957 | { | ||
958 | "name": "Andrew Smith", | ||
959 | "email": "a.smith@silentworks.co.uk", | ||
960 | "homepage": "http://silentworks.co.uk" | ||
961 | }, | ||
962 | { | ||
963 | "name": "Rob Allen", | ||
964 | "email": "rob@akrabat.com", | ||
965 | "homepage": "http://akrabat.com" | ||
966 | }, | ||
967 | { | ||
968 | "name": "Gabriel Manricks", | ||
969 | "email": "gmanricks@me.com", | ||
970 | "homepage": "http://gabrielmanricks.com" | ||
971 | } | ||
972 | ], | ||
973 | "description": "Slim is a PHP micro framework that helps you quickly write simple yet powerful web applications and APIs", | ||
974 | "homepage": "https://slimframework.com", | ||
975 | "keywords": [ | ||
976 | "api", | ||
977 | "framework", | ||
978 | "micro", | ||
979 | "router" | ||
980 | ], | ||
981 | "time": "2019-11-28T17:40:33+00:00" | ||
982 | }, | ||
983 | { | ||
984 | "name": "symfony/console", | ||
985 | "version": "v2.8.0", | ||
986 | "source": { | ||
987 | "type": "git", | ||
988 | "url": "https://github.com/symfony/console.git", | ||
989 | "reference": "d232bfc100dfd32b18ccbcab4bcc8f28697b7e41" | ||
990 | }, | ||
991 | "dist": { | ||
992 | "type": "zip", | ||
993 | "url": "https://api.github.com/repos/symfony/console/zipball/d232bfc100dfd32b18ccbcab4bcc8f28697b7e41", | ||
994 | "reference": "d232bfc100dfd32b18ccbcab4bcc8f28697b7e41", | ||
995 | "shasum": "" | ||
996 | }, | ||
997 | "require": { | ||
998 | "php": ">=5.3.9", | ||
999 | "symfony/polyfill-mbstring": "~1.0" | ||
1000 | }, | ||
1001 | "require-dev": { | ||
1002 | "psr/log": "~1.0", | ||
1003 | "symfony/event-dispatcher": "~2.1|~3.0.0", | ||
1004 | "symfony/process": "~2.1|~3.0.0" | ||
1005 | }, | ||
1006 | "suggest": { | ||
1007 | "psr/log": "For using the console logger", | ||
1008 | "symfony/event-dispatcher": "", | ||
1009 | "symfony/process": "" | ||
1010 | }, | ||
1011 | "type": "library", | ||
1012 | "extra": { | ||
1013 | "branch-alias": { | ||
1014 | "dev-master": "2.8-dev" | ||
1015 | } | ||
1016 | }, | ||
1017 | "autoload": { | ||
1018 | "psr-4": { | ||
1019 | "Symfony\\Component\\Console\\": "" | ||
1020 | }, | ||
1021 | "exclude-from-classmap": [ | ||
1022 | "/Tests/" | ||
1023 | ] | ||
1024 | }, | ||
1025 | "notification-url": "https://packagist.org/downloads/", | ||
1026 | "license": [ | ||
1027 | "MIT" | ||
1028 | ], | ||
1029 | "authors": [ | ||
1030 | { | ||
1031 | "name": "Fabien Potencier", | ||
1032 | "email": "fabien@symfony.com" | ||
1033 | }, | ||
1034 | { | ||
1035 | "name": "Symfony Community", | ||
1036 | "homepage": "https://symfony.com/contributors" | ||
1037 | } | ||
1038 | ], | ||
1039 | "description": "Symfony Console Component", | ||
1040 | "homepage": "https://symfony.com", | ||
1041 | "time": "2015-11-30T12:35:10+00:00" | ||
1042 | }, | ||
1043 | { | ||
1044 | "name": "symfony/polyfill-intl-idn", | ||
1045 | "version": "v1.17.0", | ||
1046 | "source": { | ||
1047 | "type": "git", | ||
1048 | "url": "https://github.com/symfony/polyfill-intl-idn.git", | ||
1049 | "reference": "3bff59ea7047e925be6b7f2059d60af31bb46d6a" | ||
1050 | }, | ||
1051 | "dist": { | ||
1052 | "type": "zip", | ||
1053 | "url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/3bff59ea7047e925be6b7f2059d60af31bb46d6a", | ||
1054 | "reference": "3bff59ea7047e925be6b7f2059d60af31bb46d6a", | ||
1055 | "shasum": "" | ||
1056 | }, | ||
1057 | "require": { | ||
1058 | "php": ">=5.3.3", | ||
1059 | "symfony/polyfill-mbstring": "^1.3", | ||
1060 | "symfony/polyfill-php72": "^1.10" | ||
1061 | }, | ||
1062 | "suggest": { | ||
1063 | "ext-intl": "For best performance" | ||
1064 | }, | ||
1065 | "type": "library", | ||
1066 | "extra": { | ||
1067 | "branch-alias": { | ||
1068 | "dev-master": "1.17-dev" | ||
1069 | } | ||
1070 | }, | ||
1071 | "autoload": { | ||
1072 | "psr-4": { | ||
1073 | "Symfony\\Polyfill\\Intl\\Idn\\": "" | ||
1074 | }, | ||
1075 | "files": [ | ||
1076 | "bootstrap.php" | ||
1077 | ] | ||
1078 | }, | ||
1079 | "notification-url": "https://packagist.org/downloads/", | ||
1080 | "license": [ | ||
1081 | "MIT" | ||
1082 | ], | ||
1083 | "authors": [ | ||
1084 | { | ||
1085 | "name": "Laurent Bassin", | ||
1086 | "email": "laurent@bassin.info" | ||
1087 | }, | ||
1088 | { | ||
1089 | "name": "Symfony Community", | ||
1090 | "homepage": "https://symfony.com/contributors" | ||
1091 | } | ||
1092 | ], | ||
1093 | "description": "Symfony polyfill for intl's idn_to_ascii and idn_to_utf8 functions", | ||
1094 | "homepage": "https://symfony.com", | ||
1095 | "keywords": [ | ||
1096 | "compatibility", | ||
1097 | "idn", | ||
1098 | "intl", | ||
1099 | "polyfill", | ||
1100 | "portable", | ||
1101 | "shim" | ||
1102 | ], | ||
1103 | "funding": [ | ||
1104 | { | ||
1105 | "url": "https://symfony.com/sponsor", | ||
1106 | "type": "custom" | ||
1107 | }, | ||
1108 | { | ||
1109 | "url": "https://github.com/fabpot", | ||
1110 | "type": "github" | ||
1111 | }, | ||
1112 | { | ||
1113 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", | ||
1114 | "type": "tidelift" | ||
1115 | } | ||
1116 | ], | ||
1117 | "time": "2020-05-12T16:47:27+00:00" | ||
1118 | }, | ||
1119 | { | ||
1120 | "name": "symfony/polyfill-mbstring", | ||
1121 | "version": "v1.17.0", | ||
1122 | "source": { | ||
1123 | "type": "git", | ||
1124 | "url": "https://github.com/symfony/polyfill-mbstring.git", | ||
1125 | "reference": "fa79b11539418b02fc5e1897267673ba2c19419c" | ||
1126 | }, | ||
1127 | "dist": { | ||
1128 | "type": "zip", | ||
1129 | "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/fa79b11539418b02fc5e1897267673ba2c19419c", | ||
1130 | "reference": "fa79b11539418b02fc5e1897267673ba2c19419c", | ||
1131 | "shasum": "" | ||
1132 | }, | ||
1133 | "require": { | ||
1134 | "php": ">=5.3.3" | ||
1135 | }, | ||
1136 | "suggest": { | ||
1137 | "ext-mbstring": "For best performance" | ||
1138 | }, | ||
1139 | "type": "library", | ||
1140 | "extra": { | ||
1141 | "branch-alias": { | ||
1142 | "dev-master": "1.17-dev" | ||
1143 | } | ||
1144 | }, | ||
1145 | "autoload": { | ||
1146 | "psr-4": { | ||
1147 | "Symfony\\Polyfill\\Mbstring\\": "" | ||
1148 | }, | ||
1149 | "files": [ | ||
1150 | "bootstrap.php" | ||
1151 | ] | ||
1152 | }, | ||
1153 | "notification-url": "https://packagist.org/downloads/", | ||
1154 | "license": [ | ||
1155 | "MIT" | ||
1156 | ], | ||
1157 | "authors": [ | ||
1158 | { | ||
1159 | "name": "Nicolas Grekas", | ||
1160 | "email": "p@tchwork.com" | ||
1161 | }, | ||
1162 | { | ||
1163 | "name": "Symfony Community", | ||
1164 | "homepage": "https://symfony.com/contributors" | ||
1165 | } | ||
1166 | ], | ||
1167 | "description": "Symfony polyfill for the Mbstring extension", | ||
1168 | "homepage": "https://symfony.com", | ||
1169 | "keywords": [ | ||
1170 | "compatibility", | ||
1171 | "mbstring", | ||
1172 | "polyfill", | ||
1173 | "portable", | ||
1174 | "shim" | ||
1175 | ], | ||
1176 | "funding": [ | ||
1177 | { | ||
1178 | "url": "https://symfony.com/sponsor", | ||
1179 | "type": "custom" | ||
1180 | }, | ||
1181 | { | ||
1182 | "url": "https://github.com/fabpot", | ||
1183 | "type": "github" | ||
1184 | }, | ||
1185 | { | ||
1186 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", | ||
1187 | "type": "tidelift" | ||
1188 | } | ||
1189 | ], | ||
1190 | "time": "2020-05-12T16:47:27+00:00" | ||
1191 | }, | ||
1192 | { | ||
1193 | "name": "symfony/polyfill-php72", | ||
1194 | "version": "v1.17.0", | ||
1195 | "source": { | ||
1196 | "type": "git", | ||
1197 | "url": "https://github.com/symfony/polyfill-php72.git", | ||
1198 | "reference": "f048e612a3905f34931127360bdd2def19a5e582" | ||
1199 | }, | ||
1200 | "dist": { | ||
1201 | "type": "zip", | ||
1202 | "url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/f048e612a3905f34931127360bdd2def19a5e582", | ||
1203 | "reference": "f048e612a3905f34931127360bdd2def19a5e582", | ||
1204 | "shasum": "" | ||
1205 | }, | ||
1206 | "require": { | ||
1207 | "php": ">=5.3.3" | ||
1208 | }, | ||
1209 | "type": "library", | ||
1210 | "extra": { | ||
1211 | "branch-alias": { | ||
1212 | "dev-master": "1.17-dev" | ||
1213 | } | ||
1214 | }, | ||
1215 | "autoload": { | ||
1216 | "psr-4": { | ||
1217 | "Symfony\\Polyfill\\Php72\\": "" | ||
1218 | }, | ||
1219 | "files": [ | ||
1220 | "bootstrap.php" | ||
1221 | ] | ||
1222 | }, | ||
1223 | "notification-url": "https://packagist.org/downloads/", | ||
1224 | "license": [ | ||
1225 | "MIT" | ||
1226 | ], | ||
1227 | "authors": [ | ||
1228 | { | ||
1229 | "name": "Nicolas Grekas", | ||
1230 | "email": "p@tchwork.com" | ||
1231 | }, | ||
1232 | { | ||
1233 | "name": "Symfony Community", | ||
1234 | "homepage": "https://symfony.com/contributors" | ||
1235 | } | ||
1236 | ], | ||
1237 | "description": "Symfony polyfill backporting some PHP 7.2+ features to lower PHP versions", | ||
1238 | "homepage": "https://symfony.com", | ||
1239 | "keywords": [ | ||
1240 | "compatibility", | ||
1241 | "polyfill", | ||
1242 | "portable", | ||
1243 | "shim" | ||
1244 | ], | ||
1245 | "funding": [ | ||
1246 | { | ||
1247 | "url": "https://symfony.com/sponsor", | ||
1248 | "type": "custom" | ||
1249 | }, | ||
1250 | { | ||
1251 | "url": "https://github.com/fabpot", | ||
1252 | "type": "github" | ||
1253 | }, | ||
1254 | { | ||
1255 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", | ||
1256 | "type": "tidelift" | ||
1257 | } | ||
1258 | ], | ||
1259 | "time": "2020-05-12T16:47:27+00:00" | ||
1260 | }, | ||
1261 | { | ||
1262 | "name": "symfony/yaml", | ||
1263 | "version": "v2.8.0", | ||
1264 | "source": { | ||
1265 | "type": "git", | ||
1266 | "url": "https://github.com/symfony/yaml.git", | ||
1267 | "reference": "f79824187de95064a2f5038904c4d7f0227fedb5" | ||
1268 | }, | ||
1269 | "dist": { | ||
1270 | "type": "zip", | ||
1271 | "url": "https://api.github.com/repos/symfony/yaml/zipball/f79824187de95064a2f5038904c4d7f0227fedb5", | ||
1272 | "reference": "f79824187de95064a2f5038904c4d7f0227fedb5", | ||
1273 | "shasum": "" | ||
1274 | }, | ||
1275 | "require": { | ||
1276 | "php": ">=5.3.9" | ||
1277 | }, | ||
1278 | "type": "library", | ||
1279 | "extra": { | ||
1280 | "branch-alias": { | ||
1281 | "dev-master": "2.8-dev" | ||
1282 | } | ||
1283 | }, | ||
1284 | "autoload": { | ||
1285 | "psr-4": { | ||
1286 | "Symfony\\Component\\Yaml\\": "" | ||
1287 | }, | ||
1288 | "exclude-from-classmap": [ | ||
1289 | "/Tests/" | ||
1290 | ] | ||
1291 | }, | ||
1292 | "notification-url": "https://packagist.org/downloads/", | ||
1293 | "license": [ | ||
1294 | "MIT" | ||
1295 | ], | ||
1296 | "authors": [ | ||
1297 | { | ||
1298 | "name": "Fabien Potencier", | ||
1299 | "email": "fabien@symfony.com" | ||
1300 | }, | ||
1301 | { | ||
1302 | "name": "Symfony Community", | ||
1303 | "homepage": "https://symfony.com/contributors" | ||
1304 | } | ||
1305 | ], | ||
1306 | "description": "Symfony Yaml Component", | ||
1307 | "homepage": "https://symfony.com", | ||
1308 | "time": "2015-11-30T12:35:10+00:00" | ||
1309 | } | ||
1310 | ], | ||
1311 | "packages-dev": [], | ||
1312 | "aliases": [], | ||
1313 | "minimum-stability": "stable", | ||
1314 | "stability-flags": [], | ||
1315 | "prefer-stable": false, | ||
1316 | "prefer-lowest": false, | ||
1317 | "platform": { | ||
1318 | "php": ">=5.5.9", | ||
1319 | "ext-ldap": "*" | ||
1320 | }, | ||
1321 | "platform-dev": [], | ||
1322 | "plugin-api-version": "1.1.0" | ||
1323 | } | ||
diff --git a/flakes/mypackages/pkgs/status_engine/interface_php_packages.nix b/flakes/mypackages/pkgs/status_engine/interface_php_packages.nix new file mode 100644 index 0000000..d81e83c --- /dev/null +++ b/flakes/mypackages/pkgs/status_engine/interface_php_packages.nix | |||
@@ -0,0 +1,217 @@ | |||
1 | # Generated with composer2nix and adapted to return only the list of | ||
2 | # packages | ||
3 | { composerEnv, fetchurl }: | ||
4 | { | ||
5 | packages = { | ||
6 | "crate/crate-dbal" = { | ||
7 | targetDir = ""; | ||
8 | src = composerEnv.buildZipPackage { | ||
9 | name = "crate-crate-dbal-f5e3f5cb4f2d32f00d2dde2b91beae17f38ff417"; | ||
10 | src = fetchurl { | ||
11 | url = https://api.github.com/repos/crate/crate-dbal/zipball/f5e3f5cb4f2d32f00d2dde2b91beae17f38ff417; | ||
12 | sha256 = "0778m29av1nj6596b7x6xz6frd41nrswn20r327lpdfw7y6b19ni"; | ||
13 | }; | ||
14 | }; | ||
15 | }; | ||
16 | "crate/crate-pdo" = { | ||
17 | targetDir = ""; | ||
18 | src = composerEnv.buildZipPackage { | ||
19 | name = "crate-crate-pdo-33332cef1a27844e473265e584223f142c37317f"; | ||
20 | src = fetchurl { | ||
21 | url = https://api.github.com/repos/crate/crate-pdo/zipball/33332cef1a27844e473265e584223f142c37317f; | ||
22 | sha256 = "11w30hyr0lfw800aakl0ii8pwdv7vzpbjklw0z96hzsky788hfa7"; | ||
23 | }; | ||
24 | }; | ||
25 | }; | ||
26 | "doctrine/cache" = { | ||
27 | targetDir = ""; | ||
28 | src = composerEnv.buildZipPackage { | ||
29 | name = "doctrine-cache-35a4a70cd94e09e2259dfae7488afc6b474ecbd3"; | ||
30 | src = fetchurl { | ||
31 | url = https://api.github.com/repos/doctrine/cache/zipball/35a4a70cd94e09e2259dfae7488afc6b474ecbd3; | ||
32 | sha256 = "1fk0c8vhjgl7j4b2vd4k7sshdrqysqwcp9mlxbapf8x7nmpa6i9b"; | ||
33 | }; | ||
34 | }; | ||
35 | }; | ||
36 | "doctrine/dbal" = { | ||
37 | targetDir = ""; | ||
38 | src = composerEnv.buildZipPackage { | ||
39 | name = "doctrine-dbal-aab745e7b6b2de3b47019da81e7225e14dcfdac8"; | ||
40 | src = fetchurl { | ||
41 | url = https://api.github.com/repos/doctrine/dbal/zipball/aab745e7b6b2de3b47019da81e7225e14dcfdac8; | ||
42 | sha256 = "04c6r4p1b0iknjk95hpc4fsyxg8s2x1skfmnx2g11z64jvldzs62"; | ||
43 | }; | ||
44 | }; | ||
45 | }; | ||
46 | "doctrine/event-manager" = { | ||
47 | targetDir = ""; | ||
48 | src = composerEnv.buildZipPackage { | ||
49 | name = "doctrine-event-manager-629572819973f13486371cb611386eb17851e85c"; | ||
50 | src = fetchurl { | ||
51 | url = https://api.github.com/repos/doctrine/event-manager/zipball/629572819973f13486371cb611386eb17851e85c; | ||
52 | sha256 = "02zglsk2zfnpabs83an7zg18h2k31h00vzk6qpawvmy35r1vmrfn"; | ||
53 | }; | ||
54 | }; | ||
55 | }; | ||
56 | "guzzlehttp/guzzle" = { | ||
57 | targetDir = ""; | ||
58 | src = composerEnv.buildZipPackage { | ||
59 | name = "guzzlehttp-guzzle-a4a1b6930528a8f7ee03518e6442ec7a44155d9d"; | ||
60 | src = fetchurl { | ||
61 | url = https://api.github.com/repos/guzzle/guzzle/zipball/a4a1b6930528a8f7ee03518e6442ec7a44155d9d; | ||
62 | sha256 = "0midln6ji6b990vkc0syn631nf6r94lv5600dcc26lcivz8c4gk3"; | ||
63 | }; | ||
64 | }; | ||
65 | }; | ||
66 | "guzzlehttp/promises" = { | ||
67 | targetDir = ""; | ||
68 | src = composerEnv.buildZipPackage { | ||
69 | name = "guzzlehttp-promises-a59da6cf61d80060647ff4d3eb2c03a2bc694646"; | ||
70 | src = fetchurl { | ||
71 | url = https://api.github.com/repos/guzzle/promises/zipball/a59da6cf61d80060647ff4d3eb2c03a2bc694646; | ||
72 | sha256 = "1kpl91fzalcgkcs16lpakvzcnbkry3id4ynx6xhq477p4fipdciz"; | ||
73 | }; | ||
74 | }; | ||
75 | }; | ||
76 | "guzzlehttp/psr7" = { | ||
77 | targetDir = ""; | ||
78 | src = composerEnv.buildZipPackage { | ||
79 | name = "guzzlehttp-psr7-239400de7a173fe9901b9ac7c06497751f00727a"; | ||
80 | src = fetchurl { | ||
81 | url = https://api.github.com/repos/guzzle/psr7/zipball/239400de7a173fe9901b9ac7c06497751f00727a; | ||
82 | sha256 = "0mfq93x7ayix6l3v5jkk40a9hnmrxaqr9vk1r26q39d1s6292ma7"; | ||
83 | }; | ||
84 | }; | ||
85 | }; | ||
86 | "nikic/fast-route" = { | ||
87 | targetDir = ""; | ||
88 | src = composerEnv.buildZipPackage { | ||
89 | name = "nikic-fast-route-181d480e08d9476e61381e04a71b34dc0432e812"; | ||
90 | src = fetchurl { | ||
91 | url = https://api.github.com/repos/nikic/FastRoute/zipball/181d480e08d9476e61381e04a71b34dc0432e812; | ||
92 | sha256 = "0sjqivm0gp6d6nal58n4r5wzyi21r4hdzn4v31ydgjgni7877p4i"; | ||
93 | }; | ||
94 | }; | ||
95 | }; | ||
96 | "paragonie/random_compat" = { | ||
97 | targetDir = ""; | ||
98 | src = composerEnv.buildZipPackage { | ||
99 | name = "paragonie-random_compat-84b4dfb120c6f9b4ff7b3685f9b8f1aa365a0c95"; | ||
100 | src = fetchurl { | ||
101 | url = https://api.github.com/repos/paragonie/random_compat/zipball/84b4dfb120c6f9b4ff7b3685f9b8f1aa365a0c95; | ||
102 | sha256 = "03nsccdvcb79l64b7lsmx0n8ldf5z3v8niqr7bpp6wg401qp9p09"; | ||
103 | }; | ||
104 | }; | ||
105 | }; | ||
106 | "pimple/pimple" = { | ||
107 | targetDir = ""; | ||
108 | src = composerEnv.buildZipPackage { | ||
109 | name = "pimple-pimple-e55d12f9d6a0e7f9c85992b73df1267f46279930"; | ||
110 | src = fetchurl { | ||
111 | url = https://api.github.com/repos/silexphp/Pimple/zipball/e55d12f9d6a0e7f9c85992b73df1267f46279930; | ||
112 | sha256 = "0xmx8jc9shh2a63wg6574g6qc63w3nvr7w4062d97sbgnn62r6hw"; | ||
113 | }; | ||
114 | }; | ||
115 | }; | ||
116 | "psr/container" = { | ||
117 | targetDir = ""; | ||
118 | src = composerEnv.buildZipPackage { | ||
119 | name = "psr-container-b7ce3b176482dbbc1245ebf52b181af44c2cf55f"; | ||
120 | src = fetchurl { | ||
121 | url = https://api.github.com/repos/php-fig/container/zipball/b7ce3b176482dbbc1245ebf52b181af44c2cf55f; | ||
122 | sha256 = "0rkz64vgwb0gfi09klvgay4qnw993l1dc03vyip7d7m2zxi6cy4j"; | ||
123 | }; | ||
124 | }; | ||
125 | }; | ||
126 | "psr/http-message" = { | ||
127 | targetDir = ""; | ||
128 | src = composerEnv.buildZipPackage { | ||
129 | name = "psr-http-message-f6561bf28d520154e4b0ec72be95418abe6d9363"; | ||
130 | src = fetchurl { | ||
131 | url = https://api.github.com/repos/php-fig/http-message/zipball/f6561bf28d520154e4b0ec72be95418abe6d9363; | ||
132 | sha256 = "195dd67hva9bmr52iadr4kyp2gw2f5l51lplfiay2pv6l9y4cf45"; | ||
133 | }; | ||
134 | }; | ||
135 | }; | ||
136 | "ralouphie/getallheaders" = { | ||
137 | targetDir = ""; | ||
138 | src = composerEnv.buildZipPackage { | ||
139 | name = "ralouphie-getallheaders-120b605dfeb996808c31b6477290a714d356e822"; | ||
140 | src = fetchurl { | ||
141 | url = https://api.github.com/repos/ralouphie/getallheaders/zipball/120b605dfeb996808c31b6477290a714d356e822; | ||
142 | sha256 = "1bv7ndkkankrqlr2b4kw7qp3fl0dxi6bp26bnim6dnlhavd6a0gg"; | ||
143 | }; | ||
144 | }; | ||
145 | }; | ||
146 | "slim/csrf" = { | ||
147 | targetDir = ""; | ||
148 | src = composerEnv.buildZipPackage { | ||
149 | name = "slim-csrf-5f2bcf5d89adf86dc0455a32bea84d912ab466a7"; | ||
150 | src = fetchurl { | ||
151 | url = https://api.github.com/repos/slimphp/Slim-Csrf/zipball/5f2bcf5d89adf86dc0455a32bea84d912ab466a7; | ||
152 | sha256 = "1n8q8cgc2y60z7waqw9xyq9pl9dvww85rbdcnap55d5a55api8j5"; | ||
153 | }; | ||
154 | }; | ||
155 | }; | ||
156 | "slim/slim" = { | ||
157 | targetDir = ""; | ||
158 | src = composerEnv.buildZipPackage { | ||
159 | name = "slim-slim-1c9318a84ffb890900901136d620b4f03a59da38"; | ||
160 | src = fetchurl { | ||
161 | url = https://api.github.com/repos/slimphp/Slim/zipball/1c9318a84ffb890900901136d620b4f03a59da38; | ||
162 | sha256 = "08s7y7apz609vg745wr61nn0ji029zvnd0435fn3kmn57f8lgq7x"; | ||
163 | }; | ||
164 | }; | ||
165 | }; | ||
166 | "symfony/console" = { | ||
167 | targetDir = ""; | ||
168 | src = composerEnv.buildZipPackage { | ||
169 | name = "symfony-console-d232bfc100dfd32b18ccbcab4bcc8f28697b7e41"; | ||
170 | src = fetchurl { | ||
171 | url = https://api.github.com/repos/symfony/console/zipball/d232bfc100dfd32b18ccbcab4bcc8f28697b7e41; | ||
172 | sha256 = "16kgs7x60y3vj0bbmljj80hq1x8fb6w1g0fd1j2hc1cbphgj8x67"; | ||
173 | }; | ||
174 | }; | ||
175 | }; | ||
176 | "symfony/polyfill-intl-idn" = { | ||
177 | targetDir = ""; | ||
178 | src = composerEnv.buildZipPackage { | ||
179 | name = "symfony-polyfill-intl-idn-3bff59ea7047e925be6b7f2059d60af31bb46d6a"; | ||
180 | src = fetchurl { | ||
181 | url = https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/3bff59ea7047e925be6b7f2059d60af31bb46d6a; | ||
182 | sha256 = "0c26v3xpchyiqckp663n7i3hgswbzy56r0jdwjizrsgqq731h6fp"; | ||
183 | }; | ||
184 | }; | ||
185 | }; | ||
186 | "symfony/polyfill-mbstring" = { | ||
187 | targetDir = ""; | ||
188 | src = composerEnv.buildZipPackage { | ||
189 | name = "symfony-polyfill-mbstring-fa79b11539418b02fc5e1897267673ba2c19419c"; | ||
190 | src = fetchurl { | ||
191 | url = https://api.github.com/repos/symfony/polyfill-mbstring/zipball/fa79b11539418b02fc5e1897267673ba2c19419c; | ||
192 | sha256 = "17m46mkkcv7fsxf71si0cq8xdf6b1k272mc5bfwgl00h8s9bk0rs"; | ||
193 | }; | ||
194 | }; | ||
195 | }; | ||
196 | "symfony/polyfill-php72" = { | ||
197 | targetDir = ""; | ||
198 | src = composerEnv.buildZipPackage { | ||
199 | name = "symfony-polyfill-php72-f048e612a3905f34931127360bdd2def19a5e582"; | ||
200 | src = fetchurl { | ||
201 | url = https://api.github.com/repos/symfony/polyfill-php72/zipball/f048e612a3905f34931127360bdd2def19a5e582; | ||
202 | sha256 = "1lkjxh17nfaglh7v2m3zw2fy6b2w8nmxr7jb1gqqpvg74yqqz83f"; | ||
203 | }; | ||
204 | }; | ||
205 | }; | ||
206 | "symfony/yaml" = { | ||
207 | targetDir = ""; | ||
208 | src = composerEnv.buildZipPackage { | ||
209 | name = "symfony-yaml-f79824187de95064a2f5038904c4d7f0227fedb5"; | ||
210 | src = fetchurl { | ||
211 | url = https://api.github.com/repos/symfony/yaml/zipball/f79824187de95064a2f5038904c4d7f0227fedb5; | ||
212 | sha256 = "1pwx4bckfjz0afz62q02vl0i4wmg3c6f963jrhlx247b1z6isram"; | ||
213 | }; | ||
214 | }; | ||
215 | }; | ||
216 | }; | ||
217 | } | ||
diff --git a/flakes/mypackages/pkgs/status_engine/module.nix b/flakes/mypackages/pkgs/status_engine/module.nix new file mode 100644 index 0000000..d3ac03e --- /dev/null +++ b/flakes/mypackages/pkgs/status_engine/module.nix | |||
@@ -0,0 +1,19 @@ | |||
1 | { stdenv, fetchFromGitHub, gearmand, json_c, libuuid, libevent, pkgconfig, glib }: | ||
2 | stdenv.mkDerivation ({ | ||
3 | pname = "statusengine-module"; | ||
4 | version = "d461e95-master"; | ||
5 | src = fetchFromGitHub { | ||
6 | owner = "statusengine"; | ||
7 | repo = "module"; | ||
8 | rev = "d461e95a11fffaac604d11ac42d237b5e13071bc"; | ||
9 | sha256 = "1awmq9rck9xy82pambnd2wh66ndif8x8jpk4qbbghs9f2sd48x1n"; | ||
10 | fetchSubmodules = true; | ||
11 | }; | ||
12 | patches = [ ./host_perfdata.patch ]; | ||
13 | buildInputs = [ gearmand json_c libuuid libevent pkgconfig glib ]; | ||
14 | makeFlags = "all"; | ||
15 | installPhase = '' | ||
16 | mkdir -p $out/lib/status-engine | ||
17 | cp -a src/bin/* $out/lib/status-engine | ||
18 | ''; | ||
19 | }) | ||
diff --git a/flakes/mypackages/pkgs/status_engine/worker.nix b/flakes/mypackages/pkgs/status_engine/worker.nix new file mode 100644 index 0000000..d8425e1 --- /dev/null +++ b/flakes/mypackages/pkgs/status_engine/worker.nix | |||
@@ -0,0 +1,37 @@ | |||
1 | { stdenv, fetchFromGitHub, composerEnv, fetchurl, gearmand, callPackage, php81, config_file ? "/var/lib/status_engine/ui.yml" }: | ||
2 | let | ||
3 | gearman = php81.buildPecl rec { | ||
4 | # git describe | ||
5 | version = "2.1.0-12-g8fb88d5"; | ||
6 | pname = "gearman"; | ||
7 | src = fetchFromGitHub { | ||
8 | owner = "php"; | ||
9 | repo = "pecl-networking-gearman"; | ||
10 | rev = "8fb88d5a97111a7e8f0dc67553c387b49f047e53"; | ||
11 | sha256 = "sha256-VPJX29JfNjh0mHlYY+iYKBHSJGUINbWHvojyYBSkSho="; | ||
12 | }; | ||
13 | configureFlags = [ "--with-gearman=${gearmand}" ]; | ||
14 | nativeBuildInputs = [ gearmand ]; | ||
15 | }; | ||
16 | php = php81.withExtensions({ enabled, all }: enabled ++ (with all; [gearman redis mbstring bcmath iconv])); | ||
17 | in | ||
18 | (composerEnv.override { inherit php; }).buildPackage ( | ||
19 | import ./worker_php_packages.nix { inherit composerEnv fetchurl; } // rec { | ||
20 | name = "${pname}-${version}"; | ||
21 | pname = "worker"; | ||
22 | version = "master"; | ||
23 | src = fetchFromGitHub { | ||
24 | owner = "statusengine"; | ||
25 | repo = "worker"; | ||
26 | rev = "e20d6b5c83c6b3c6a2030c9506542fa59dcbb551"; | ||
27 | sha256 = "sha256-dcC+SLEqMUubp4JQFSuKNpd6U4VYvGR38Vn1jf6ZvTU="; | ||
28 | fetchSubmodules = true; | ||
29 | }; | ||
30 | passthru.php = php; | ||
31 | postInstall = '' | ||
32 | ln -s ${config_file} $out/etc/config.yml | ||
33 | ''; | ||
34 | preInstall = '' | ||
35 | cp ${./worker_composer.lock} $out/composer.lock | ||
36 | ''; | ||
37 | }) | ||
diff --git a/flakes/mypackages/pkgs/status_engine/worker_composer.lock b/flakes/mypackages/pkgs/status_engine/worker_composer.lock new file mode 100644 index 0000000..bba0d2d --- /dev/null +++ b/flakes/mypackages/pkgs/status_engine/worker_composer.lock | |||
@@ -0,0 +1,2072 @@ | |||
1 | { | ||
2 | "_readme": [ | ||
3 | "This file locks the dependencies of your project to a known state", | ||
4 | "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", | ||
5 | "This file is @generated automatically" | ||
6 | ], | ||
7 | "content-hash": "f61ef94b19969eb2446f52577078d701", | ||
8 | "packages": [ | ||
9 | { | ||
10 | "name": "composer/package-versions-deprecated", | ||
11 | "version": "1.11.99.5", | ||
12 | "source": { | ||
13 | "type": "git", | ||
14 | "url": "https://github.com/composer/package-versions-deprecated.git", | ||
15 | "reference": "b4f54f74ef3453349c24a845d22392cd31e65f1d" | ||
16 | }, | ||
17 | "dist": { | ||
18 | "type": "zip", | ||
19 | "url": "https://api.github.com/repos/composer/package-versions-deprecated/zipball/b4f54f74ef3453349c24a845d22392cd31e65f1d", | ||
20 | "reference": "b4f54f74ef3453349c24a845d22392cd31e65f1d", | ||
21 | "shasum": "" | ||
22 | }, | ||
23 | "require": { | ||
24 | "composer-plugin-api": "^1.1.0 || ^2.0", | ||
25 | "php": "^7 || ^8" | ||
26 | }, | ||
27 | "replace": { | ||
28 | "ocramius/package-versions": "1.11.99" | ||
29 | }, | ||
30 | "require-dev": { | ||
31 | "composer/composer": "^1.9.3 || ^2.0@dev", | ||
32 | "ext-zip": "^1.13", | ||
33 | "phpunit/phpunit": "^6.5 || ^7" | ||
34 | }, | ||
35 | "type": "composer-plugin", | ||
36 | "extra": { | ||
37 | "class": "PackageVersions\\Installer", | ||
38 | "branch-alias": { | ||
39 | "dev-master": "1.x-dev" | ||
40 | } | ||
41 | }, | ||
42 | "autoload": { | ||
43 | "psr-4": { | ||
44 | "PackageVersions\\": "src/PackageVersions" | ||
45 | } | ||
46 | }, | ||
47 | "notification-url": "https://packagist.org/downloads/", | ||
48 | "license": [ | ||
49 | "MIT" | ||
50 | ], | ||
51 | "authors": [ | ||
52 | { | ||
53 | "name": "Marco Pivetta", | ||
54 | "email": "ocramius@gmail.com" | ||
55 | }, | ||
56 | { | ||
57 | "name": "Jordi Boggiano", | ||
58 | "email": "j.boggiano@seld.be" | ||
59 | } | ||
60 | ], | ||
61 | "description": "Composer plugin that provides efficient querying for installed package versions (no runtime IO)", | ||
62 | "support": { | ||
63 | "issues": "https://github.com/composer/package-versions-deprecated/issues", | ||
64 | "source": "https://github.com/composer/package-versions-deprecated/tree/1.11.99.5" | ||
65 | }, | ||
66 | "funding": [ | ||
67 | { | ||
68 | "url": "https://packagist.com", | ||
69 | "type": "custom" | ||
70 | }, | ||
71 | { | ||
72 | "url": "https://github.com/composer", | ||
73 | "type": "github" | ||
74 | }, | ||
75 | { | ||
76 | "url": "https://tidelift.com/funding/github/packagist/composer/composer", | ||
77 | "type": "tidelift" | ||
78 | } | ||
79 | ], | ||
80 | "time": "2022-01-17T14:14:24+00:00" | ||
81 | }, | ||
82 | { | ||
83 | "name": "doctrine/cache", | ||
84 | "version": "2.2.0", | ||
85 | "source": { | ||
86 | "type": "git", | ||
87 | "url": "https://github.com/doctrine/cache.git", | ||
88 | "reference": "1ca8f21980e770095a31456042471a57bc4c68fb" | ||
89 | }, | ||
90 | "dist": { | ||
91 | "type": "zip", | ||
92 | "url": "https://api.github.com/repos/doctrine/cache/zipball/1ca8f21980e770095a31456042471a57bc4c68fb", | ||
93 | "reference": "1ca8f21980e770095a31456042471a57bc4c68fb", | ||
94 | "shasum": "" | ||
95 | }, | ||
96 | "require": { | ||
97 | "php": "~7.1 || ^8.0" | ||
98 | }, | ||
99 | "conflict": { | ||
100 | "doctrine/common": ">2.2,<2.4" | ||
101 | }, | ||
102 | "require-dev": { | ||
103 | "cache/integration-tests": "dev-master", | ||
104 | "doctrine/coding-standard": "^9", | ||
105 | "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5", | ||
106 | "psr/cache": "^1.0 || ^2.0 || ^3.0", | ||
107 | "symfony/cache": "^4.4 || ^5.4 || ^6", | ||
108 | "symfony/var-exporter": "^4.4 || ^5.4 || ^6" | ||
109 | }, | ||
110 | "type": "library", | ||
111 | "autoload": { | ||
112 | "psr-4": { | ||
113 | "Doctrine\\Common\\Cache\\": "lib/Doctrine/Common/Cache" | ||
114 | } | ||
115 | }, | ||
116 | "notification-url": "https://packagist.org/downloads/", | ||
117 | "license": [ | ||
118 | "MIT" | ||
119 | ], | ||
120 | "authors": [ | ||
121 | { | ||
122 | "name": "Guilherme Blanco", | ||
123 | "email": "guilhermeblanco@gmail.com" | ||
124 | }, | ||
125 | { | ||
126 | "name": "Roman Borschel", | ||
127 | "email": "roman@code-factory.org" | ||
128 | }, | ||
129 | { | ||
130 | "name": "Benjamin Eberlei", | ||
131 | "email": "kontakt@beberlei.de" | ||
132 | }, | ||
133 | { | ||
134 | "name": "Jonathan Wage", | ||
135 | "email": "jonwage@gmail.com" | ||
136 | }, | ||
137 | { | ||
138 | "name": "Johannes Schmitt", | ||
139 | "email": "schmittjoh@gmail.com" | ||
140 | } | ||
141 | ], | ||
142 | "description": "PHP Doctrine Cache library is a popular cache implementation that supports many different drivers such as redis, memcache, apc, mongodb and others.", | ||
143 | "homepage": "https://www.doctrine-project.org/projects/cache.html", | ||
144 | "keywords": [ | ||
145 | "abstraction", | ||
146 | "apcu", | ||
147 | "cache", | ||
148 | "caching", | ||
149 | "couchdb", | ||
150 | "memcached", | ||
151 | "php", | ||
152 | "redis", | ||
153 | "xcache" | ||
154 | ], | ||
155 | "support": { | ||
156 | "issues": "https://github.com/doctrine/cache/issues", | ||
157 | "source": "https://github.com/doctrine/cache/tree/2.2.0" | ||
158 | }, | ||
159 | "funding": [ | ||
160 | { | ||
161 | "url": "https://www.doctrine-project.org/sponsorship.html", | ||
162 | "type": "custom" | ||
163 | }, | ||
164 | { | ||
165 | "url": "https://www.patreon.com/phpdoctrine", | ||
166 | "type": "patreon" | ||
167 | }, | ||
168 | { | ||
169 | "url": "https://tidelift.com/funding/github/packagist/doctrine%2Fcache", | ||
170 | "type": "tidelift" | ||
171 | } | ||
172 | ], | ||
173 | "time": "2022-05-20T20:07:39+00:00" | ||
174 | }, | ||
175 | { | ||
176 | "name": "doctrine/dbal", | ||
177 | "version": "2.13.9", | ||
178 | "source": { | ||
179 | "type": "git", | ||
180 | "url": "https://github.com/doctrine/dbal.git", | ||
181 | "reference": "c480849ca3ad6706a39c970cdfe6888fa8a058b8" | ||
182 | }, | ||
183 | "dist": { | ||
184 | "type": "zip", | ||
185 | "url": "https://api.github.com/repos/doctrine/dbal/zipball/c480849ca3ad6706a39c970cdfe6888fa8a058b8", | ||
186 | "reference": "c480849ca3ad6706a39c970cdfe6888fa8a058b8", | ||
187 | "shasum": "" | ||
188 | }, | ||
189 | "require": { | ||
190 | "doctrine/cache": "^1.0|^2.0", | ||
191 | "doctrine/deprecations": "^0.5.3|^1", | ||
192 | "doctrine/event-manager": "^1.0", | ||
193 | "ext-pdo": "*", | ||
194 | "php": "^7.1 || ^8" | ||
195 | }, | ||
196 | "require-dev": { | ||
197 | "doctrine/coding-standard": "9.0.0", | ||
198 | "jetbrains/phpstorm-stubs": "2021.1", | ||
199 | "phpstan/phpstan": "1.4.6", | ||
200 | "phpunit/phpunit": "^7.5.20|^8.5|9.5.16", | ||
201 | "psalm/plugin-phpunit": "0.16.1", | ||
202 | "squizlabs/php_codesniffer": "3.6.2", | ||
203 | "symfony/cache": "^4.4", | ||
204 | "symfony/console": "^2.0.5|^3.0|^4.0|^5.0", | ||
205 | "vimeo/psalm": "4.22.0" | ||
206 | }, | ||
207 | "suggest": { | ||
208 | "symfony/console": "For helpful console commands such as SQL execution and import of files." | ||
209 | }, | ||
210 | "bin": [ | ||
211 | "bin/doctrine-dbal" | ||
212 | ], | ||
213 | "type": "library", | ||
214 | "autoload": { | ||
215 | "psr-4": { | ||
216 | "Doctrine\\DBAL\\": "lib/Doctrine/DBAL" | ||
217 | } | ||
218 | }, | ||
219 | "notification-url": "https://packagist.org/downloads/", | ||
220 | "license": [ | ||
221 | "MIT" | ||
222 | ], | ||
223 | "authors": [ | ||
224 | { | ||
225 | "name": "Guilherme Blanco", | ||
226 | "email": "guilhermeblanco@gmail.com" | ||
227 | }, | ||
228 | { | ||
229 | "name": "Roman Borschel", | ||
230 | "email": "roman@code-factory.org" | ||
231 | }, | ||
232 | { | ||
233 | "name": "Benjamin Eberlei", | ||
234 | "email": "kontakt@beberlei.de" | ||
235 | }, | ||
236 | { | ||
237 | "name": "Jonathan Wage", | ||
238 | "email": "jonwage@gmail.com" | ||
239 | } | ||
240 | ], | ||
241 | "description": "Powerful PHP database abstraction layer (DBAL) with many features for database schema introspection and management.", | ||
242 | "homepage": "https://www.doctrine-project.org/projects/dbal.html", | ||
243 | "keywords": [ | ||
244 | "abstraction", | ||
245 | "database", | ||
246 | "db2", | ||
247 | "dbal", | ||
248 | "mariadb", | ||
249 | "mssql", | ||
250 | "mysql", | ||
251 | "oci8", | ||
252 | "oracle", | ||
253 | "pdo", | ||
254 | "pgsql", | ||
255 | "postgresql", | ||
256 | "queryobject", | ||
257 | "sasql", | ||
258 | "sql", | ||
259 | "sqlanywhere", | ||
260 | "sqlite", | ||
261 | "sqlserver", | ||
262 | "sqlsrv" | ||
263 | ], | ||
264 | "support": { | ||
265 | "issues": "https://github.com/doctrine/dbal/issues", | ||
266 | "source": "https://github.com/doctrine/dbal/tree/2.13.9" | ||
267 | }, | ||
268 | "funding": [ | ||
269 | { | ||
270 | "url": "https://www.doctrine-project.org/sponsorship.html", | ||
271 | "type": "custom" | ||
272 | }, | ||
273 | { | ||
274 | "url": "https://www.patreon.com/phpdoctrine", | ||
275 | "type": "patreon" | ||
276 | }, | ||
277 | { | ||
278 | "url": "https://tidelift.com/funding/github/packagist/doctrine%2Fdbal", | ||
279 | "type": "tidelift" | ||
280 | } | ||
281 | ], | ||
282 | "time": "2022-05-02T20:28:55+00:00" | ||
283 | }, | ||
284 | { | ||
285 | "name": "doctrine/deprecations", | ||
286 | "version": "v1.1.1", | ||
287 | "source": { | ||
288 | "type": "git", | ||
289 | "url": "https://github.com/doctrine/deprecations.git", | ||
290 | "reference": "612a3ee5ab0d5dd97b7cf3874a6efe24325efac3" | ||
291 | }, | ||
292 | "dist": { | ||
293 | "type": "zip", | ||
294 | "url": "https://api.github.com/repos/doctrine/deprecations/zipball/612a3ee5ab0d5dd97b7cf3874a6efe24325efac3", | ||
295 | "reference": "612a3ee5ab0d5dd97b7cf3874a6efe24325efac3", | ||
296 | "shasum": "" | ||
297 | }, | ||
298 | "require": { | ||
299 | "php": "^7.1 || ^8.0" | ||
300 | }, | ||
301 | "require-dev": { | ||
302 | "doctrine/coding-standard": "^9", | ||
303 | "phpstan/phpstan": "1.4.10 || 1.10.15", | ||
304 | "phpstan/phpstan-phpunit": "^1.0", | ||
305 | "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5", | ||
306 | "psalm/plugin-phpunit": "0.18.4", | ||
307 | "psr/log": "^1 || ^2 || ^3", | ||
308 | "vimeo/psalm": "4.30.0 || 5.12.0" | ||
309 | }, | ||
310 | "suggest": { | ||
311 | "psr/log": "Allows logging deprecations via PSR-3 logger implementation" | ||
312 | }, | ||
313 | "type": "library", | ||
314 | "autoload": { | ||
315 | "psr-4": { | ||
316 | "Doctrine\\Deprecations\\": "lib/Doctrine/Deprecations" | ||
317 | } | ||
318 | }, | ||
319 | "notification-url": "https://packagist.org/downloads/", | ||
320 | "license": [ | ||
321 | "MIT" | ||
322 | ], | ||
323 | "description": "A small layer on top of trigger_error(E_USER_DEPRECATED) or PSR-3 logging with options to disable all deprecations or selectively for packages.", | ||
324 | "homepage": "https://www.doctrine-project.org/", | ||
325 | "support": { | ||
326 | "issues": "https://github.com/doctrine/deprecations/issues", | ||
327 | "source": "https://github.com/doctrine/deprecations/tree/v1.1.1" | ||
328 | }, | ||
329 | "time": "2023-06-03T09:27:29+00:00" | ||
330 | }, | ||
331 | { | ||
332 | "name": "doctrine/event-manager", | ||
333 | "version": "1.2.0", | ||
334 | "source": { | ||
335 | "type": "git", | ||
336 | "url": "https://github.com/doctrine/event-manager.git", | ||
337 | "reference": "95aa4cb529f1e96576f3fda9f5705ada4056a520" | ||
338 | }, | ||
339 | "dist": { | ||
340 | "type": "zip", | ||
341 | "url": "https://api.github.com/repos/doctrine/event-manager/zipball/95aa4cb529f1e96576f3fda9f5705ada4056a520", | ||
342 | "reference": "95aa4cb529f1e96576f3fda9f5705ada4056a520", | ||
343 | "shasum": "" | ||
344 | }, | ||
345 | "require": { | ||
346 | "doctrine/deprecations": "^0.5.3 || ^1", | ||
347 | "php": "^7.1 || ^8.0" | ||
348 | }, | ||
349 | "conflict": { | ||
350 | "doctrine/common": "<2.9" | ||
351 | }, | ||
352 | "require-dev": { | ||
353 | "doctrine/coding-standard": "^9 || ^10", | ||
354 | "phpstan/phpstan": "~1.4.10 || ^1.8.8", | ||
355 | "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5", | ||
356 | "vimeo/psalm": "^4.24" | ||
357 | }, | ||
358 | "type": "library", | ||
359 | "autoload": { | ||
360 | "psr-4": { | ||
361 | "Doctrine\\Common\\": "src" | ||
362 | } | ||
363 | }, | ||
364 | "notification-url": "https://packagist.org/downloads/", | ||
365 | "license": [ | ||
366 | "MIT" | ||
367 | ], | ||
368 | "authors": [ | ||
369 | { | ||
370 | "name": "Guilherme Blanco", | ||
371 | "email": "guilhermeblanco@gmail.com" | ||
372 | }, | ||
373 | { | ||
374 | "name": "Roman Borschel", | ||
375 | "email": "roman@code-factory.org" | ||
376 | }, | ||
377 | { | ||
378 | "name": "Benjamin Eberlei", | ||
379 | "email": "kontakt@beberlei.de" | ||
380 | }, | ||
381 | { | ||
382 | "name": "Jonathan Wage", | ||
383 | "email": "jonwage@gmail.com" | ||
384 | }, | ||
385 | { | ||
386 | "name": "Johannes Schmitt", | ||
387 | "email": "schmittjoh@gmail.com" | ||
388 | }, | ||
389 | { | ||
390 | "name": "Marco Pivetta", | ||
391 | "email": "ocramius@gmail.com" | ||
392 | } | ||
393 | ], | ||
394 | "description": "The Doctrine Event Manager is a simple PHP event system that was built to be used with the various Doctrine projects.", | ||
395 | "homepage": "https://www.doctrine-project.org/projects/event-manager.html", | ||
396 | "keywords": [ | ||
397 | "event", | ||
398 | "event dispatcher", | ||
399 | "event manager", | ||
400 | "event system", | ||
401 | "events" | ||
402 | ], | ||
403 | "support": { | ||
404 | "issues": "https://github.com/doctrine/event-manager/issues", | ||
405 | "source": "https://github.com/doctrine/event-manager/tree/1.2.0" | ||
406 | }, | ||
407 | "funding": [ | ||
408 | { | ||
409 | "url": "https://www.doctrine-project.org/sponsorship.html", | ||
410 | "type": "custom" | ||
411 | }, | ||
412 | { | ||
413 | "url": "https://www.patreon.com/phpdoctrine", | ||
414 | "type": "patreon" | ||
415 | }, | ||
416 | { | ||
417 | "url": "https://tidelift.com/funding/github/packagist/doctrine%2Fevent-manager", | ||
418 | "type": "tidelift" | ||
419 | } | ||
420 | ], | ||
421 | "time": "2022-10-12T20:51:15+00:00" | ||
422 | }, | ||
423 | { | ||
424 | "name": "doctrine/migrations", | ||
425 | "version": "2.3.5", | ||
426 | "source": { | ||
427 | "type": "git", | ||
428 | "url": "https://github.com/doctrine/migrations.git", | ||
429 | "reference": "28d92a34348fee5daeb80879e56461b2e862fc05" | ||
430 | }, | ||
431 | "dist": { | ||
432 | "type": "zip", | ||
433 | "url": "https://api.github.com/repos/doctrine/migrations/zipball/28d92a34348fee5daeb80879e56461b2e862fc05", | ||
434 | "reference": "28d92a34348fee5daeb80879e56461b2e862fc05", | ||
435 | "shasum": "" | ||
436 | }, | ||
437 | "require": { | ||
438 | "composer/package-versions-deprecated": "^1.8", | ||
439 | "doctrine/dbal": "^2.9", | ||
440 | "friendsofphp/proxy-manager-lts": "^1.0", | ||
441 | "php": "^7.1 || ^8.0", | ||
442 | "symfony/console": "^3.4||^4.4.16||^5.0", | ||
443 | "symfony/stopwatch": "^3.4||^4.0||^5.0" | ||
444 | }, | ||
445 | "require-dev": { | ||
446 | "doctrine/coding-standard": "^8.2", | ||
447 | "doctrine/orm": "^2.6", | ||
448 | "ext-pdo_sqlite": "*", | ||
449 | "jdorn/sql-formatter": "^1.1", | ||
450 | "mikey179/vfsstream": "^1.6", | ||
451 | "phpstan/phpstan": "^0.12", | ||
452 | "phpstan/phpstan-deprecation-rules": "^0.12", | ||
453 | "phpstan/phpstan-phpunit": "^0.12", | ||
454 | "phpstan/phpstan-strict-rules": "^0.12", | ||
455 | "phpunit/phpunit": "^7.5 || ^8.5 || ^9.4", | ||
456 | "symfony/cache": "^4.4. || ^5.3", | ||
457 | "symfony/process": "^3.4||^4.0||^5.0", | ||
458 | "symfony/yaml": "^3.4||^4.0||^5.0" | ||
459 | }, | ||
460 | "suggest": { | ||
461 | "jdorn/sql-formatter": "Allows to generate formatted SQL with the diff command.", | ||
462 | "symfony/yaml": "Allows the use of yaml for migration configuration files." | ||
463 | }, | ||
464 | "bin": [ | ||
465 | "bin/doctrine-migrations" | ||
466 | ], | ||
467 | "type": "library", | ||
468 | "autoload": { | ||
469 | "psr-4": { | ||
470 | "Doctrine\\Migrations\\": "lib/Doctrine/Migrations" | ||
471 | } | ||
472 | }, | ||
473 | "notification-url": "https://packagist.org/downloads/", | ||
474 | "license": [ | ||
475 | "MIT" | ||
476 | ], | ||
477 | "authors": [ | ||
478 | { | ||
479 | "name": "Benjamin Eberlei", | ||
480 | "email": "kontakt@beberlei.de" | ||
481 | }, | ||
482 | { | ||
483 | "name": "Jonathan Wage", | ||
484 | "email": "jonwage@gmail.com" | ||
485 | }, | ||
486 | { | ||
487 | "name": "Michael Simonson", | ||
488 | "email": "contact@mikesimonson.com" | ||
489 | } | ||
490 | ], | ||
491 | "description": "PHP Doctrine Migrations project offer additional functionality on top of the database abstraction layer (DBAL) for versioning your database schema and easily deploying changes to it. It is a very easy to use and a powerful tool.", | ||
492 | "homepage": "https://www.doctrine-project.org/projects/migrations.html", | ||
493 | "keywords": [ | ||
494 | "database", | ||
495 | "dbal", | ||
496 | "migrations", | ||
497 | "php" | ||
498 | ], | ||
499 | "support": { | ||
500 | "issues": "https://github.com/doctrine/migrations/issues", | ||
501 | "source": "https://github.com/doctrine/migrations/tree/2.3.5" | ||
502 | }, | ||
503 | "funding": [ | ||
504 | { | ||
505 | "url": "https://www.doctrine-project.org/sponsorship.html", | ||
506 | "type": "custom" | ||
507 | }, | ||
508 | { | ||
509 | "url": "https://www.patreon.com/phpdoctrine", | ||
510 | "type": "patreon" | ||
511 | }, | ||
512 | { | ||
513 | "url": "https://tidelift.com/funding/github/packagist/doctrine%2Fmigrations", | ||
514 | "type": "tidelift" | ||
515 | } | ||
516 | ], | ||
517 | "time": "2021-10-19T19:55:20+00:00" | ||
518 | }, | ||
519 | { | ||
520 | "name": "friendsofphp/proxy-manager-lts", | ||
521 | "version": "v1.0.16", | ||
522 | "source": { | ||
523 | "type": "git", | ||
524 | "url": "https://github.com/FriendsOfPHP/proxy-manager-lts.git", | ||
525 | "reference": "ecadbdc9052e4ad08c60c8a02268712e50427f7c" | ||
526 | }, | ||
527 | "dist": { | ||
528 | "type": "zip", | ||
529 | "url": "https://api.github.com/repos/FriendsOfPHP/proxy-manager-lts/zipball/ecadbdc9052e4ad08c60c8a02268712e50427f7c", | ||
530 | "reference": "ecadbdc9052e4ad08c60c8a02268712e50427f7c", | ||
531 | "shasum": "" | ||
532 | }, | ||
533 | "require": { | ||
534 | "laminas/laminas-code": "~3.4.1|^4.0", | ||
535 | "php": ">=7.1", | ||
536 | "symfony/filesystem": "^4.4.17|^5.0|^6.0|^7.0" | ||
537 | }, | ||
538 | "conflict": { | ||
539 | "laminas/laminas-stdlib": "<3.2.1", | ||
540 | "zendframework/zend-stdlib": "<3.2.1" | ||
541 | }, | ||
542 | "replace": { | ||
543 | "ocramius/proxy-manager": "^2.1" | ||
544 | }, | ||
545 | "require-dev": { | ||
546 | "ext-phar": "*", | ||
547 | "symfony/phpunit-bridge": "^5.4|^6.0|^7.0" | ||
548 | }, | ||
549 | "type": "library", | ||
550 | "extra": { | ||
551 | "thanks": { | ||
552 | "name": "ocramius/proxy-manager", | ||
553 | "url": "https://github.com/Ocramius/ProxyManager" | ||
554 | } | ||
555 | }, | ||
556 | "autoload": { | ||
557 | "psr-4": { | ||
558 | "ProxyManager\\": "src/ProxyManager" | ||
559 | } | ||
560 | }, | ||
561 | "notification-url": "https://packagist.org/downloads/", | ||
562 | "license": [ | ||
563 | "MIT" | ||
564 | ], | ||
565 | "authors": [ | ||
566 | { | ||
567 | "name": "Marco Pivetta", | ||
568 | "email": "ocramius@gmail.com", | ||
569 | "homepage": "https://ocramius.github.io/" | ||
570 | }, | ||
571 | { | ||
572 | "name": "Nicolas Grekas", | ||
573 | "email": "p@tchwork.com" | ||
574 | } | ||
575 | ], | ||
576 | "description": "Adding support for a wider range of PHP versions to ocramius/proxy-manager", | ||
577 | "homepage": "https://github.com/FriendsOfPHP/proxy-manager-lts", | ||
578 | "keywords": [ | ||
579 | "aop", | ||
580 | "lazy loading", | ||
581 | "proxy", | ||
582 | "proxy pattern", | ||
583 | "service proxies" | ||
584 | ], | ||
585 | "support": { | ||
586 | "issues": "https://github.com/FriendsOfPHP/proxy-manager-lts/issues", | ||
587 | "source": "https://github.com/FriendsOfPHP/proxy-manager-lts/tree/v1.0.16" | ||
588 | }, | ||
589 | "funding": [ | ||
590 | { | ||
591 | "url": "https://github.com/Ocramius", | ||
592 | "type": "github" | ||
593 | }, | ||
594 | { | ||
595 | "url": "https://tidelift.com/funding/github/packagist/ocramius/proxy-manager", | ||
596 | "type": "tidelift" | ||
597 | } | ||
598 | ], | ||
599 | "time": "2023-05-24T07:17:17+00:00" | ||
600 | }, | ||
601 | { | ||
602 | "name": "laminas/laminas-code", | ||
603 | "version": "4.7.1", | ||
604 | "source": { | ||
605 | "type": "git", | ||
606 | "url": "https://github.com/laminas/laminas-code.git", | ||
607 | "reference": "91aabc066d5620428120800c0eafc0411e441a62" | ||
608 | }, | ||
609 | "dist": { | ||
610 | "type": "zip", | ||
611 | "url": "https://api.github.com/repos/laminas/laminas-code/zipball/91aabc066d5620428120800c0eafc0411e441a62", | ||
612 | "reference": "91aabc066d5620428120800c0eafc0411e441a62", | ||
613 | "shasum": "" | ||
614 | }, | ||
615 | "require": { | ||
616 | "php": ">=7.4, <8.2" | ||
617 | }, | ||
618 | "require-dev": { | ||
619 | "doctrine/annotations": "^1.13.2", | ||
620 | "ext-phar": "*", | ||
621 | "laminas/laminas-coding-standard": "^2.3.0", | ||
622 | "laminas/laminas-stdlib": "^3.6.1", | ||
623 | "phpunit/phpunit": "^9.5.10", | ||
624 | "psalm/plugin-phpunit": "^0.17.0", | ||
625 | "vimeo/psalm": "^4.13.1" | ||
626 | }, | ||
627 | "suggest": { | ||
628 | "doctrine/annotations": "Doctrine\\Common\\Annotations >=1.0 for annotation features", | ||
629 | "laminas/laminas-stdlib": "Laminas\\Stdlib component" | ||
630 | }, | ||
631 | "type": "library", | ||
632 | "autoload": { | ||
633 | "files": [ | ||
634 | "polyfill/ReflectionEnumPolyfill.php" | ||
635 | ], | ||
636 | "psr-4": { | ||
637 | "Laminas\\Code\\": "src/" | ||
638 | } | ||
639 | }, | ||
640 | "notification-url": "https://packagist.org/downloads/", | ||
641 | "license": [ | ||
642 | "BSD-3-Clause" | ||
643 | ], | ||
644 | "description": "Extensions to the PHP Reflection API, static code scanning, and code generation", | ||
645 | "homepage": "https://laminas.dev", | ||
646 | "keywords": [ | ||
647 | "code", | ||
648 | "laminas", | ||
649 | "laminasframework" | ||
650 | ], | ||
651 | "support": { | ||
652 | "chat": "https://laminas.dev/chat", | ||
653 | "docs": "https://docs.laminas.dev/laminas-code/", | ||
654 | "forum": "https://discourse.laminas.dev", | ||
655 | "issues": "https://github.com/laminas/laminas-code/issues", | ||
656 | "rss": "https://github.com/laminas/laminas-code/releases.atom", | ||
657 | "source": "https://github.com/laminas/laminas-code" | ||
658 | }, | ||
659 | "funding": [ | ||
660 | { | ||
661 | "url": "https://funding.communitybridge.org/projects/laminas-project", | ||
662 | "type": "community_bridge" | ||
663 | } | ||
664 | ], | ||
665 | "time": "2022-11-21T01:32:31+00:00" | ||
666 | }, | ||
667 | { | ||
668 | "name": "paragonie/constant_time_encoding", | ||
669 | "version": "v2.6.3", | ||
670 | "source": { | ||
671 | "type": "git", | ||
672 | "url": "https://github.com/paragonie/constant_time_encoding.git", | ||
673 | "reference": "58c3f47f650c94ec05a151692652a868995d2938" | ||
674 | }, | ||
675 | "dist": { | ||
676 | "type": "zip", | ||
677 | "url": "https://api.github.com/repos/paragonie/constant_time_encoding/zipball/58c3f47f650c94ec05a151692652a868995d2938", | ||
678 | "reference": "58c3f47f650c94ec05a151692652a868995d2938", | ||
679 | "shasum": "" | ||
680 | }, | ||
681 | "require": { | ||
682 | "php": "^7|^8" | ||
683 | }, | ||
684 | "require-dev": { | ||
685 | "phpunit/phpunit": "^6|^7|^8|^9", | ||
686 | "vimeo/psalm": "^1|^2|^3|^4" | ||
687 | }, | ||
688 | "type": "library", | ||
689 | "autoload": { | ||
690 | "psr-4": { | ||
691 | "ParagonIE\\ConstantTime\\": "src/" | ||
692 | } | ||
693 | }, | ||
694 | "notification-url": "https://packagist.org/downloads/", | ||
695 | "license": [ | ||
696 | "MIT" | ||
697 | ], | ||
698 | "authors": [ | ||
699 | { | ||
700 | "name": "Paragon Initiative Enterprises", | ||
701 | "email": "security@paragonie.com", | ||
702 | "homepage": "https://paragonie.com", | ||
703 | "role": "Maintainer" | ||
704 | }, | ||
705 | { | ||
706 | "name": "Steve 'Sc00bz' Thomas", | ||
707 | "email": "steve@tobtu.com", | ||
708 | "homepage": "https://www.tobtu.com", | ||
709 | "role": "Original Developer" | ||
710 | } | ||
711 | ], | ||
712 | "description": "Constant-time Implementations of RFC 4648 Encoding (Base-64, Base-32, Base-16)", | ||
713 | "keywords": [ | ||
714 | "base16", | ||
715 | "base32", | ||
716 | "base32_decode", | ||
717 | "base32_encode", | ||
718 | "base64", | ||
719 | "base64_decode", | ||
720 | "base64_encode", | ||
721 | "bin2hex", | ||
722 | "encoding", | ||
723 | "hex", | ||
724 | "hex2bin", | ||
725 | "rfc4648" | ||
726 | ], | ||
727 | "support": { | ||
728 | "email": "info@paragonie.com", | ||
729 | "issues": "https://github.com/paragonie/constant_time_encoding/issues", | ||
730 | "source": "https://github.com/paragonie/constant_time_encoding" | ||
731 | }, | ||
732 | "time": "2022-06-14T06:56:20+00:00" | ||
733 | }, | ||
734 | { | ||
735 | "name": "paragonie/random_compat", | ||
736 | "version": "v9.99.100", | ||
737 | "source": { | ||
738 | "type": "git", | ||
739 | "url": "https://github.com/paragonie/random_compat.git", | ||
740 | "reference": "996434e5492cb4c3edcb9168db6fbb1359ef965a" | ||
741 | }, | ||
742 | "dist": { | ||
743 | "type": "zip", | ||
744 | "url": "https://api.github.com/repos/paragonie/random_compat/zipball/996434e5492cb4c3edcb9168db6fbb1359ef965a", | ||
745 | "reference": "996434e5492cb4c3edcb9168db6fbb1359ef965a", | ||
746 | "shasum": "" | ||
747 | }, | ||
748 | "require": { | ||
749 | "php": ">= 7" | ||
750 | }, | ||
751 | "require-dev": { | ||
752 | "phpunit/phpunit": "4.*|5.*", | ||
753 | "vimeo/psalm": "^1" | ||
754 | }, | ||
755 | "suggest": { | ||
756 | "ext-libsodium": "Provides a modern crypto API that can be used to generate random bytes." | ||
757 | }, | ||
758 | "type": "library", | ||
759 | "notification-url": "https://packagist.org/downloads/", | ||
760 | "license": [ | ||
761 | "MIT" | ||
762 | ], | ||
763 | "authors": [ | ||
764 | { | ||
765 | "name": "Paragon Initiative Enterprises", | ||
766 | "email": "security@paragonie.com", | ||
767 | "homepage": "https://paragonie.com" | ||
768 | } | ||
769 | ], | ||
770 | "description": "PHP 5.x polyfill for random_bytes() and random_int() from PHP 7", | ||
771 | "keywords": [ | ||
772 | "csprng", | ||
773 | "polyfill", | ||
774 | "pseudorandom", | ||
775 | "random" | ||
776 | ], | ||
777 | "support": { | ||
778 | "email": "info@paragonie.com", | ||
779 | "issues": "https://github.com/paragonie/random_compat/issues", | ||
780 | "source": "https://github.com/paragonie/random_compat" | ||
781 | }, | ||
782 | "time": "2020-10-15T08:29:30+00:00" | ||
783 | }, | ||
784 | { | ||
785 | "name": "php-amqplib/php-amqplib", | ||
786 | "version": "v3.5.4", | ||
787 | "source": { | ||
788 | "type": "git", | ||
789 | "url": "https://github.com/php-amqplib/php-amqplib.git", | ||
790 | "reference": "1aecbd182b35eb039667c50d7d92d71f105be779" | ||
791 | }, | ||
792 | "dist": { | ||
793 | "type": "zip", | ||
794 | "url": "https://api.github.com/repos/php-amqplib/php-amqplib/zipball/1aecbd182b35eb039667c50d7d92d71f105be779", | ||
795 | "reference": "1aecbd182b35eb039667c50d7d92d71f105be779", | ||
796 | "shasum": "" | ||
797 | }, | ||
798 | "require": { | ||
799 | "ext-mbstring": "*", | ||
800 | "ext-sockets": "*", | ||
801 | "php": "^7.1||^8.0", | ||
802 | "phpseclib/phpseclib": "^2.0|^3.0" | ||
803 | }, | ||
804 | "conflict": { | ||
805 | "php": "7.4.0 - 7.4.1" | ||
806 | }, | ||
807 | "replace": { | ||
808 | "videlalvaro/php-amqplib": "self.version" | ||
809 | }, | ||
810 | "require-dev": { | ||
811 | "ext-curl": "*", | ||
812 | "nategood/httpful": "^0.2.20", | ||
813 | "phpunit/phpunit": "^7.5|^9.5", | ||
814 | "squizlabs/php_codesniffer": "^3.6" | ||
815 | }, | ||
816 | "type": "library", | ||
817 | "extra": { | ||
818 | "branch-alias": { | ||
819 | "dev-master": "3.0-dev" | ||
820 | } | ||
821 | }, | ||
822 | "autoload": { | ||
823 | "psr-4": { | ||
824 | "PhpAmqpLib\\": "PhpAmqpLib/" | ||
825 | } | ||
826 | }, | ||
827 | "notification-url": "https://packagist.org/downloads/", | ||
828 | "license": [ | ||
829 | "LGPL-2.1-or-later" | ||
830 | ], | ||
831 | "authors": [ | ||
832 | { | ||
833 | "name": "Alvaro Videla", | ||
834 | "role": "Original Maintainer" | ||
835 | }, | ||
836 | { | ||
837 | "name": "Raúl Araya", | ||
838 | "email": "nubeiro@gmail.com", | ||
839 | "role": "Maintainer" | ||
840 | }, | ||
841 | { | ||
842 | "name": "Luke Bakken", | ||
843 | "email": "luke@bakken.io", | ||
844 | "role": "Maintainer" | ||
845 | }, | ||
846 | { | ||
847 | "name": "Ramūnas Dronga", | ||
848 | "email": "github@ramuno.lt", | ||
849 | "role": "Maintainer" | ||
850 | } | ||
851 | ], | ||
852 | "description": "Formerly videlalvaro/php-amqplib. This library is a pure PHP implementation of the AMQP protocol. It's been tested against RabbitMQ.", | ||
853 | "homepage": "https://github.com/php-amqplib/php-amqplib/", | ||
854 | "keywords": [ | ||
855 | "message", | ||
856 | "queue", | ||
857 | "rabbitmq" | ||
858 | ], | ||
859 | "support": { | ||
860 | "issues": "https://github.com/php-amqplib/php-amqplib/issues", | ||
861 | "source": "https://github.com/php-amqplib/php-amqplib/tree/v3.5.4" | ||
862 | }, | ||
863 | "time": "2023-07-01T11:25:08+00:00" | ||
864 | }, | ||
865 | { | ||
866 | "name": "phpseclib/phpseclib", | ||
867 | "version": "3.0.21", | ||
868 | "source": { | ||
869 | "type": "git", | ||
870 | "url": "https://github.com/phpseclib/phpseclib.git", | ||
871 | "reference": "4580645d3fc05c189024eb3b834c6c1e4f0f30a1" | ||
872 | }, | ||
873 | "dist": { | ||
874 | "type": "zip", | ||
875 | "url": "https://api.github.com/repos/phpseclib/phpseclib/zipball/4580645d3fc05c189024eb3b834c6c1e4f0f30a1", | ||
876 | "reference": "4580645d3fc05c189024eb3b834c6c1e4f0f30a1", | ||
877 | "shasum": "" | ||
878 | }, | ||
879 | "require": { | ||
880 | "paragonie/constant_time_encoding": "^1|^2", | ||
881 | "paragonie/random_compat": "^1.4|^2.0|^9.99.99", | ||
882 | "php": ">=5.6.1" | ||
883 | }, | ||
884 | "require-dev": { | ||
885 | "phpunit/phpunit": "*" | ||
886 | }, | ||
887 | "suggest": { | ||
888 | "ext-dom": "Install the DOM extension to load XML formatted public keys.", | ||
889 | "ext-gmp": "Install the GMP (GNU Multiple Precision) extension in order to speed up arbitrary precision integer arithmetic operations.", | ||
890 | "ext-libsodium": "SSH2/SFTP can make use of some algorithms provided by the libsodium-php extension.", | ||
891 | "ext-mcrypt": "Install the Mcrypt extension in order to speed up a few other cryptographic operations.", | ||
892 | "ext-openssl": "Install the OpenSSL extension in order to speed up a wide variety of cryptographic operations." | ||
893 | }, | ||
894 | "type": "library", | ||
895 | "autoload": { | ||
896 | "files": [ | ||
897 | "phpseclib/bootstrap.php" | ||
898 | ], | ||
899 | "psr-4": { | ||
900 | "phpseclib3\\": "phpseclib/" | ||
901 | } | ||
902 | }, | ||
903 | "notification-url": "https://packagist.org/downloads/", | ||
904 | "license": [ | ||
905 | "MIT" | ||
906 | ], | ||
907 | "authors": [ | ||
908 | { | ||
909 | "name": "Jim Wigginton", | ||
910 | "email": "terrafrost@php.net", | ||
911 | "role": "Lead Developer" | ||
912 | }, | ||
913 | { | ||
914 | "name": "Patrick Monnerat", | ||
915 | "email": "pm@datasphere.ch", | ||
916 | "role": "Developer" | ||
917 | }, | ||
918 | { | ||
919 | "name": "Andreas Fischer", | ||
920 | "email": "bantu@phpbb.com", | ||
921 | "role": "Developer" | ||
922 | }, | ||
923 | { | ||
924 | "name": "Hans-Jürgen Petrich", | ||
925 | "email": "petrich@tronic-media.com", | ||
926 | "role": "Developer" | ||
927 | }, | ||
928 | { | ||
929 | "name": "Graham Campbell", | ||
930 | "email": "graham@alt-three.com", | ||
931 | "role": "Developer" | ||
932 | } | ||
933 | ], | ||
934 | "description": "PHP Secure Communications Library - Pure-PHP implementations of RSA, AES, SSH2, SFTP, X.509 etc.", | ||
935 | "homepage": "http://phpseclib.sourceforge.net", | ||
936 | "keywords": [ | ||
937 | "BigInteger", | ||
938 | "aes", | ||
939 | "asn.1", | ||
940 | "asn1", | ||
941 | "blowfish", | ||
942 | "crypto", | ||
943 | "cryptography", | ||
944 | "encryption", | ||
945 | "rsa", | ||
946 | "security", | ||
947 | "sftp", | ||
948 | "signature", | ||
949 | "signing", | ||
950 | "ssh", | ||
951 | "twofish", | ||
952 | "x.509", | ||
953 | "x509" | ||
954 | ], | ||
955 | "support": { | ||
956 | "issues": "https://github.com/phpseclib/phpseclib/issues", | ||
957 | "source": "https://github.com/phpseclib/phpseclib/tree/3.0.21" | ||
958 | }, | ||
959 | "funding": [ | ||
960 | { | ||
961 | "url": "https://github.com/terrafrost", | ||
962 | "type": "github" | ||
963 | }, | ||
964 | { | ||
965 | "url": "https://www.patreon.com/phpseclib", | ||
966 | "type": "patreon" | ||
967 | }, | ||
968 | { | ||
969 | "url": "https://tidelift.com/funding/github/packagist/phpseclib/phpseclib", | ||
970 | "type": "tidelift" | ||
971 | } | ||
972 | ], | ||
973 | "time": "2023-07-09T15:24:48+00:00" | ||
974 | }, | ||
975 | { | ||
976 | "name": "psr/container", | ||
977 | "version": "2.0.2", | ||
978 | "source": { | ||
979 | "type": "git", | ||
980 | "url": "https://github.com/php-fig/container.git", | ||
981 | "reference": "c71ecc56dfe541dbd90c5360474fbc405f8d5963" | ||
982 | }, | ||
983 | "dist": { | ||
984 | "type": "zip", | ||
985 | "url": "https://api.github.com/repos/php-fig/container/zipball/c71ecc56dfe541dbd90c5360474fbc405f8d5963", | ||
986 | "reference": "c71ecc56dfe541dbd90c5360474fbc405f8d5963", | ||
987 | "shasum": "" | ||
988 | }, | ||
989 | "require": { | ||
990 | "php": ">=7.4.0" | ||
991 | }, | ||
992 | "type": "library", | ||
993 | "extra": { | ||
994 | "branch-alias": { | ||
995 | "dev-master": "2.0.x-dev" | ||
996 | } | ||
997 | }, | ||
998 | "autoload": { | ||
999 | "psr-4": { | ||
1000 | "Psr\\Container\\": "src/" | ||
1001 | } | ||
1002 | }, | ||
1003 | "notification-url": "https://packagist.org/downloads/", | ||
1004 | "license": [ | ||
1005 | "MIT" | ||
1006 | ], | ||
1007 | "authors": [ | ||
1008 | { | ||
1009 | "name": "PHP-FIG", | ||
1010 | "homepage": "https://www.php-fig.org/" | ||
1011 | } | ||
1012 | ], | ||
1013 | "description": "Common Container Interface (PHP FIG PSR-11)", | ||
1014 | "homepage": "https://github.com/php-fig/container", | ||
1015 | "keywords": [ | ||
1016 | "PSR-11", | ||
1017 | "container", | ||
1018 | "container-interface", | ||
1019 | "container-interop", | ||
1020 | "psr" | ||
1021 | ], | ||
1022 | "support": { | ||
1023 | "issues": "https://github.com/php-fig/container/issues", | ||
1024 | "source": "https://github.com/php-fig/container/tree/2.0.2" | ||
1025 | }, | ||
1026 | "time": "2021-11-05T16:47:00+00:00" | ||
1027 | }, | ||
1028 | { | ||
1029 | "name": "symfony/console", | ||
1030 | "version": "v5.4.26", | ||
1031 | "source": { | ||
1032 | "type": "git", | ||
1033 | "url": "https://github.com/symfony/console.git", | ||
1034 | "reference": "b504a3d266ad2bb632f196c0936ef2af5ff6e273" | ||
1035 | }, | ||
1036 | "dist": { | ||
1037 | "type": "zip", | ||
1038 | "url": "https://api.github.com/repos/symfony/console/zipball/b504a3d266ad2bb632f196c0936ef2af5ff6e273", | ||
1039 | "reference": "b504a3d266ad2bb632f196c0936ef2af5ff6e273", | ||
1040 | "shasum": "" | ||
1041 | }, | ||
1042 | "require": { | ||
1043 | "php": ">=7.2.5", | ||
1044 | "symfony/deprecation-contracts": "^2.1|^3", | ||
1045 | "symfony/polyfill-mbstring": "~1.0", | ||
1046 | "symfony/polyfill-php73": "^1.9", | ||
1047 | "symfony/polyfill-php80": "^1.16", | ||
1048 | "symfony/service-contracts": "^1.1|^2|^3", | ||
1049 | "symfony/string": "^5.1|^6.0" | ||
1050 | }, | ||
1051 | "conflict": { | ||
1052 | "psr/log": ">=3", | ||
1053 | "symfony/dependency-injection": "<4.4", | ||
1054 | "symfony/dotenv": "<5.1", | ||
1055 | "symfony/event-dispatcher": "<4.4", | ||
1056 | "symfony/lock": "<4.4", | ||
1057 | "symfony/process": "<4.4" | ||
1058 | }, | ||
1059 | "provide": { | ||
1060 | "psr/log-implementation": "1.0|2.0" | ||
1061 | }, | ||
1062 | "require-dev": { | ||
1063 | "psr/log": "^1|^2", | ||
1064 | "symfony/config": "^4.4|^5.0|^6.0", | ||
1065 | "symfony/dependency-injection": "^4.4|^5.0|^6.0", | ||
1066 | "symfony/event-dispatcher": "^4.4|^5.0|^6.0", | ||
1067 | "symfony/lock": "^4.4|^5.0|^6.0", | ||
1068 | "symfony/process": "^4.4|^5.0|^6.0", | ||
1069 | "symfony/var-dumper": "^4.4|^5.0|^6.0" | ||
1070 | }, | ||
1071 | "suggest": { | ||
1072 | "psr/log": "For using the console logger", | ||
1073 | "symfony/event-dispatcher": "", | ||
1074 | "symfony/lock": "", | ||
1075 | "symfony/process": "" | ||
1076 | }, | ||
1077 | "type": "library", | ||
1078 | "autoload": { | ||
1079 | "psr-4": { | ||
1080 | "Symfony\\Component\\Console\\": "" | ||
1081 | }, | ||
1082 | "exclude-from-classmap": [ | ||
1083 | "/Tests/" | ||
1084 | ] | ||
1085 | }, | ||
1086 | "notification-url": "https://packagist.org/downloads/", | ||
1087 | "license": [ | ||
1088 | "MIT" | ||
1089 | ], | ||
1090 | "authors": [ | ||
1091 | { | ||
1092 | "name": "Fabien Potencier", | ||
1093 | "email": "fabien@symfony.com" | ||
1094 | }, | ||
1095 | { | ||
1096 | "name": "Symfony Community", | ||
1097 | "homepage": "https://symfony.com/contributors" | ||
1098 | } | ||
1099 | ], | ||
1100 | "description": "Eases the creation of beautiful and testable command line interfaces", | ||
1101 | "homepage": "https://symfony.com", | ||
1102 | "keywords": [ | ||
1103 | "cli", | ||
1104 | "command-line", | ||
1105 | "console", | ||
1106 | "terminal" | ||
1107 | ], | ||
1108 | "support": { | ||
1109 | "source": "https://github.com/symfony/console/tree/v5.4.26" | ||
1110 | }, | ||
1111 | "funding": [ | ||
1112 | { | ||
1113 | "url": "https://symfony.com/sponsor", | ||
1114 | "type": "custom" | ||
1115 | }, | ||
1116 | { | ||
1117 | "url": "https://github.com/fabpot", | ||
1118 | "type": "github" | ||
1119 | }, | ||
1120 | { | ||
1121 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", | ||
1122 | "type": "tidelift" | ||
1123 | } | ||
1124 | ], | ||
1125 | "time": "2023-07-19T20:11:33+00:00" | ||
1126 | }, | ||
1127 | { | ||
1128 | "name": "symfony/deprecation-contracts", | ||
1129 | "version": "v3.0.2", | ||
1130 | "source": { | ||
1131 | "type": "git", | ||
1132 | "url": "https://github.com/symfony/deprecation-contracts.git", | ||
1133 | "reference": "26954b3d62a6c5fd0ea8a2a00c0353a14978d05c" | ||
1134 | }, | ||
1135 | "dist": { | ||
1136 | "type": "zip", | ||
1137 | "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/26954b3d62a6c5fd0ea8a2a00c0353a14978d05c", | ||
1138 | "reference": "26954b3d62a6c5fd0ea8a2a00c0353a14978d05c", | ||
1139 | "shasum": "" | ||
1140 | }, | ||
1141 | "require": { | ||
1142 | "php": ">=8.0.2" | ||
1143 | }, | ||
1144 | "type": "library", | ||
1145 | "extra": { | ||
1146 | "branch-alias": { | ||
1147 | "dev-main": "3.0-dev" | ||
1148 | }, | ||
1149 | "thanks": { | ||
1150 | "name": "symfony/contracts", | ||
1151 | "url": "https://github.com/symfony/contracts" | ||
1152 | } | ||
1153 | }, | ||
1154 | "autoload": { | ||
1155 | "files": [ | ||
1156 | "function.php" | ||
1157 | ] | ||
1158 | }, | ||
1159 | "notification-url": "https://packagist.org/downloads/", | ||
1160 | "license": [ | ||
1161 | "MIT" | ||
1162 | ], | ||
1163 | "authors": [ | ||
1164 | { | ||
1165 | "name": "Nicolas Grekas", | ||
1166 | "email": "p@tchwork.com" | ||
1167 | }, | ||
1168 | { | ||
1169 | "name": "Symfony Community", | ||
1170 | "homepage": "https://symfony.com/contributors" | ||
1171 | } | ||
1172 | ], | ||
1173 | "description": "A generic function and convention to trigger deprecation notices", | ||
1174 | "homepage": "https://symfony.com", | ||
1175 | "support": { | ||
1176 | "source": "https://github.com/symfony/deprecation-contracts/tree/v3.0.2" | ||
1177 | }, | ||
1178 | "funding": [ | ||
1179 | { | ||
1180 | "url": "https://symfony.com/sponsor", | ||
1181 | "type": "custom" | ||
1182 | }, | ||
1183 | { | ||
1184 | "url": "https://github.com/fabpot", | ||
1185 | "type": "github" | ||
1186 | }, | ||
1187 | { | ||
1188 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", | ||
1189 | "type": "tidelift" | ||
1190 | } | ||
1191 | ], | ||
1192 | "time": "2022-01-02T09:55:41+00:00" | ||
1193 | }, | ||
1194 | { | ||
1195 | "name": "symfony/filesystem", | ||
1196 | "version": "v6.0.19", | ||
1197 | "source": { | ||
1198 | "type": "git", | ||
1199 | "url": "https://github.com/symfony/filesystem.git", | ||
1200 | "reference": "3d49eec03fda1f0fc19b7349fbbe55ebc1004214" | ||
1201 | }, | ||
1202 | "dist": { | ||
1203 | "type": "zip", | ||
1204 | "url": "https://api.github.com/repos/symfony/filesystem/zipball/3d49eec03fda1f0fc19b7349fbbe55ebc1004214", | ||
1205 | "reference": "3d49eec03fda1f0fc19b7349fbbe55ebc1004214", | ||
1206 | "shasum": "" | ||
1207 | }, | ||
1208 | "require": { | ||
1209 | "php": ">=8.0.2", | ||
1210 | "symfony/polyfill-ctype": "~1.8", | ||
1211 | "symfony/polyfill-mbstring": "~1.8" | ||
1212 | }, | ||
1213 | "type": "library", | ||
1214 | "autoload": { | ||
1215 | "psr-4": { | ||
1216 | "Symfony\\Component\\Filesystem\\": "" | ||
1217 | }, | ||
1218 | "exclude-from-classmap": [ | ||
1219 | "/Tests/" | ||
1220 | ] | ||
1221 | }, | ||
1222 | "notification-url": "https://packagist.org/downloads/", | ||
1223 | "license": [ | ||
1224 | "MIT" | ||
1225 | ], | ||
1226 | "authors": [ | ||
1227 | { | ||
1228 | "name": "Fabien Potencier", | ||
1229 | "email": "fabien@symfony.com" | ||
1230 | }, | ||
1231 | { | ||
1232 | "name": "Symfony Community", | ||
1233 | "homepage": "https://symfony.com/contributors" | ||
1234 | } | ||
1235 | ], | ||
1236 | "description": "Provides basic utilities for the filesystem", | ||
1237 | "homepage": "https://symfony.com", | ||
1238 | "support": { | ||
1239 | "source": "https://github.com/symfony/filesystem/tree/v6.0.19" | ||
1240 | }, | ||
1241 | "funding": [ | ||
1242 | { | ||
1243 | "url": "https://symfony.com/sponsor", | ||
1244 | "type": "custom" | ||
1245 | }, | ||
1246 | { | ||
1247 | "url": "https://github.com/fabpot", | ||
1248 | "type": "github" | ||
1249 | }, | ||
1250 | { | ||
1251 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", | ||
1252 | "type": "tidelift" | ||
1253 | } | ||
1254 | ], | ||
1255 | "time": "2023-01-20T17:44:14+00:00" | ||
1256 | }, | ||
1257 | { | ||
1258 | "name": "symfony/polyfill-ctype", | ||
1259 | "version": "v1.27.0", | ||
1260 | "source": { | ||
1261 | "type": "git", | ||
1262 | "url": "https://github.com/symfony/polyfill-ctype.git", | ||
1263 | "reference": "5bbc823adecdae860bb64756d639ecfec17b050a" | ||
1264 | }, | ||
1265 | "dist": { | ||
1266 | "type": "zip", | ||
1267 | "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/5bbc823adecdae860bb64756d639ecfec17b050a", | ||
1268 | "reference": "5bbc823adecdae860bb64756d639ecfec17b050a", | ||
1269 | "shasum": "" | ||
1270 | }, | ||
1271 | "require": { | ||
1272 | "php": ">=7.1" | ||
1273 | }, | ||
1274 | "provide": { | ||
1275 | "ext-ctype": "*" | ||
1276 | }, | ||
1277 | "suggest": { | ||
1278 | "ext-ctype": "For best performance" | ||
1279 | }, | ||
1280 | "type": "library", | ||
1281 | "extra": { | ||
1282 | "branch-alias": { | ||
1283 | "dev-main": "1.27-dev" | ||
1284 | }, | ||
1285 | "thanks": { | ||
1286 | "name": "symfony/polyfill", | ||
1287 | "url": "https://github.com/symfony/polyfill" | ||
1288 | } | ||
1289 | }, | ||
1290 | "autoload": { | ||
1291 | "files": [ | ||
1292 | "bootstrap.php" | ||
1293 | ], | ||
1294 | "psr-4": { | ||
1295 | "Symfony\\Polyfill\\Ctype\\": "" | ||
1296 | } | ||
1297 | }, | ||
1298 | "notification-url": "https://packagist.org/downloads/", | ||
1299 | "license": [ | ||
1300 | "MIT" | ||
1301 | ], | ||
1302 | "authors": [ | ||
1303 | { | ||
1304 | "name": "Gert de Pagter", | ||
1305 | "email": "BackEndTea@gmail.com" | ||
1306 | }, | ||
1307 | { | ||
1308 | "name": "Symfony Community", | ||
1309 | "homepage": "https://symfony.com/contributors" | ||
1310 | } | ||
1311 | ], | ||
1312 | "description": "Symfony polyfill for ctype functions", | ||
1313 | "homepage": "https://symfony.com", | ||
1314 | "keywords": [ | ||
1315 | "compatibility", | ||
1316 | "ctype", | ||
1317 | "polyfill", | ||
1318 | "portable" | ||
1319 | ], | ||
1320 | "support": { | ||
1321 | "source": "https://github.com/symfony/polyfill-ctype/tree/v1.27.0" | ||
1322 | }, | ||
1323 | "funding": [ | ||
1324 | { | ||
1325 | "url": "https://symfony.com/sponsor", | ||
1326 | "type": "custom" | ||
1327 | }, | ||
1328 | { | ||
1329 | "url": "https://github.com/fabpot", | ||
1330 | "type": "github" | ||
1331 | }, | ||
1332 | { | ||
1333 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", | ||
1334 | "type": "tidelift" | ||
1335 | } | ||
1336 | ], | ||
1337 | "time": "2022-11-03T14:55:06+00:00" | ||
1338 | }, | ||
1339 | { | ||
1340 | "name": "symfony/polyfill-intl-grapheme", | ||
1341 | "version": "v1.27.0", | ||
1342 | "source": { | ||
1343 | "type": "git", | ||
1344 | "url": "https://github.com/symfony/polyfill-intl-grapheme.git", | ||
1345 | "reference": "511a08c03c1960e08a883f4cffcacd219b758354" | ||
1346 | }, | ||
1347 | "dist": { | ||
1348 | "type": "zip", | ||
1349 | "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/511a08c03c1960e08a883f4cffcacd219b758354", | ||
1350 | "reference": "511a08c03c1960e08a883f4cffcacd219b758354", | ||
1351 | "shasum": "" | ||
1352 | }, | ||
1353 | "require": { | ||
1354 | "php": ">=7.1" | ||
1355 | }, | ||
1356 | "suggest": { | ||
1357 | "ext-intl": "For best performance" | ||
1358 | }, | ||
1359 | "type": "library", | ||
1360 | "extra": { | ||
1361 | "branch-alias": { | ||
1362 | "dev-main": "1.27-dev" | ||
1363 | }, | ||
1364 | "thanks": { | ||
1365 | "name": "symfony/polyfill", | ||
1366 | "url": "https://github.com/symfony/polyfill" | ||
1367 | } | ||
1368 | }, | ||
1369 | "autoload": { | ||
1370 | "files": [ | ||
1371 | "bootstrap.php" | ||
1372 | ], | ||
1373 | "psr-4": { | ||
1374 | "Symfony\\Polyfill\\Intl\\Grapheme\\": "" | ||
1375 | } | ||
1376 | }, | ||
1377 | "notification-url": "https://packagist.org/downloads/", | ||
1378 | "license": [ | ||
1379 | "MIT" | ||
1380 | ], | ||
1381 | "authors": [ | ||
1382 | { | ||
1383 | "name": "Nicolas Grekas", | ||
1384 | "email": "p@tchwork.com" | ||
1385 | }, | ||
1386 | { | ||
1387 | "name": "Symfony Community", | ||
1388 | "homepage": "https://symfony.com/contributors" | ||
1389 | } | ||
1390 | ], | ||
1391 | "description": "Symfony polyfill for intl's grapheme_* functions", | ||
1392 | "homepage": "https://symfony.com", | ||
1393 | "keywords": [ | ||
1394 | "compatibility", | ||
1395 | "grapheme", | ||
1396 | "intl", | ||
1397 | "polyfill", | ||
1398 | "portable", | ||
1399 | "shim" | ||
1400 | ], | ||
1401 | "support": { | ||
1402 | "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.27.0" | ||
1403 | }, | ||
1404 | "funding": [ | ||
1405 | { | ||
1406 | "url": "https://symfony.com/sponsor", | ||
1407 | "type": "custom" | ||
1408 | }, | ||
1409 | { | ||
1410 | "url": "https://github.com/fabpot", | ||
1411 | "type": "github" | ||
1412 | }, | ||
1413 | { | ||
1414 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", | ||
1415 | "type": "tidelift" | ||
1416 | } | ||
1417 | ], | ||
1418 | "time": "2022-11-03T14:55:06+00:00" | ||
1419 | }, | ||
1420 | { | ||
1421 | "name": "symfony/polyfill-intl-normalizer", | ||
1422 | "version": "v1.27.0", | ||
1423 | "source": { | ||
1424 | "type": "git", | ||
1425 | "url": "https://github.com/symfony/polyfill-intl-normalizer.git", | ||
1426 | "reference": "19bd1e4fcd5b91116f14d8533c57831ed00571b6" | ||
1427 | }, | ||
1428 | "dist": { | ||
1429 | "type": "zip", | ||
1430 | "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/19bd1e4fcd5b91116f14d8533c57831ed00571b6", | ||
1431 | "reference": "19bd1e4fcd5b91116f14d8533c57831ed00571b6", | ||
1432 | "shasum": "" | ||
1433 | }, | ||
1434 | "require": { | ||
1435 | "php": ">=7.1" | ||
1436 | }, | ||
1437 | "suggest": { | ||
1438 | "ext-intl": "For best performance" | ||
1439 | }, | ||
1440 | "type": "library", | ||
1441 | "extra": { | ||
1442 | "branch-alias": { | ||
1443 | "dev-main": "1.27-dev" | ||
1444 | }, | ||
1445 | "thanks": { | ||
1446 | "name": "symfony/polyfill", | ||
1447 | "url": "https://github.com/symfony/polyfill" | ||
1448 | } | ||
1449 | }, | ||
1450 | "autoload": { | ||
1451 | "files": [ | ||
1452 | "bootstrap.php" | ||
1453 | ], | ||
1454 | "psr-4": { | ||
1455 | "Symfony\\Polyfill\\Intl\\Normalizer\\": "" | ||
1456 | }, | ||
1457 | "classmap": [ | ||
1458 | "Resources/stubs" | ||
1459 | ] | ||
1460 | }, | ||
1461 | "notification-url": "https://packagist.org/downloads/", | ||
1462 | "license": [ | ||
1463 | "MIT" | ||
1464 | ], | ||
1465 | "authors": [ | ||
1466 | { | ||
1467 | "name": "Nicolas Grekas", | ||
1468 | "email": "p@tchwork.com" | ||
1469 | }, | ||
1470 | { | ||
1471 | "name": "Symfony Community", | ||
1472 | "homepage": "https://symfony.com/contributors" | ||
1473 | } | ||
1474 | ], | ||
1475 | "description": "Symfony polyfill for intl's Normalizer class and related functions", | ||
1476 | "homepage": "https://symfony.com", | ||
1477 | "keywords": [ | ||
1478 | "compatibility", | ||
1479 | "intl", | ||
1480 | "normalizer", | ||
1481 | "polyfill", | ||
1482 | "portable", | ||
1483 | "shim" | ||
1484 | ], | ||
1485 | "support": { | ||
1486 | "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.27.0" | ||
1487 | }, | ||
1488 | "funding": [ | ||
1489 | { | ||
1490 | "url": "https://symfony.com/sponsor", | ||
1491 | "type": "custom" | ||
1492 | }, | ||
1493 | { | ||
1494 | "url": "https://github.com/fabpot", | ||
1495 | "type": "github" | ||
1496 | }, | ||
1497 | { | ||
1498 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", | ||
1499 | "type": "tidelift" | ||
1500 | } | ||
1501 | ], | ||
1502 | "time": "2022-11-03T14:55:06+00:00" | ||
1503 | }, | ||
1504 | { | ||
1505 | "name": "symfony/polyfill-mbstring", | ||
1506 | "version": "v1.27.0", | ||
1507 | "source": { | ||
1508 | "type": "git", | ||
1509 | "url": "https://github.com/symfony/polyfill-mbstring.git", | ||
1510 | "reference": "8ad114f6b39e2c98a8b0e3bd907732c207c2b534" | ||
1511 | }, | ||
1512 | "dist": { | ||
1513 | "type": "zip", | ||
1514 | "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/8ad114f6b39e2c98a8b0e3bd907732c207c2b534", | ||
1515 | "reference": "8ad114f6b39e2c98a8b0e3bd907732c207c2b534", | ||
1516 | "shasum": "" | ||
1517 | }, | ||
1518 | "require": { | ||
1519 | "php": ">=7.1" | ||
1520 | }, | ||
1521 | "provide": { | ||
1522 | "ext-mbstring": "*" | ||
1523 | }, | ||
1524 | "suggest": { | ||
1525 | "ext-mbstring": "For best performance" | ||
1526 | }, | ||
1527 | "type": "library", | ||
1528 | "extra": { | ||
1529 | "branch-alias": { | ||
1530 | "dev-main": "1.27-dev" | ||
1531 | }, | ||
1532 | "thanks": { | ||
1533 | "name": "symfony/polyfill", | ||
1534 | "url": "https://github.com/symfony/polyfill" | ||
1535 | } | ||
1536 | }, | ||
1537 | "autoload": { | ||
1538 | "files": [ | ||
1539 | "bootstrap.php" | ||
1540 | ], | ||
1541 | "psr-4": { | ||
1542 | "Symfony\\Polyfill\\Mbstring\\": "" | ||
1543 | } | ||
1544 | }, | ||
1545 | "notification-url": "https://packagist.org/downloads/", | ||
1546 | "license": [ | ||
1547 | "MIT" | ||
1548 | ], | ||
1549 | "authors": [ | ||
1550 | { | ||
1551 | "name": "Nicolas Grekas", | ||
1552 | "email": "p@tchwork.com" | ||
1553 | }, | ||
1554 | { | ||
1555 | "name": "Symfony Community", | ||
1556 | "homepage": "https://symfony.com/contributors" | ||
1557 | } | ||
1558 | ], | ||
1559 | "description": "Symfony polyfill for the Mbstring extension", | ||
1560 | "homepage": "https://symfony.com", | ||
1561 | "keywords": [ | ||
1562 | "compatibility", | ||
1563 | "mbstring", | ||
1564 | "polyfill", | ||
1565 | "portable", | ||
1566 | "shim" | ||
1567 | ], | ||
1568 | "support": { | ||
1569 | "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.27.0" | ||
1570 | }, | ||
1571 | "funding": [ | ||
1572 | { | ||
1573 | "url": "https://symfony.com/sponsor", | ||
1574 | "type": "custom" | ||
1575 | }, | ||
1576 | { | ||
1577 | "url": "https://github.com/fabpot", | ||
1578 | "type": "github" | ||
1579 | }, | ||
1580 | { | ||
1581 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", | ||
1582 | "type": "tidelift" | ||
1583 | } | ||
1584 | ], | ||
1585 | "time": "2022-11-03T14:55:06+00:00" | ||
1586 | }, | ||
1587 | { | ||
1588 | "name": "symfony/polyfill-php73", | ||
1589 | "version": "v1.27.0", | ||
1590 | "source": { | ||
1591 | "type": "git", | ||
1592 | "url": "https://github.com/symfony/polyfill-php73.git", | ||
1593 | "reference": "9e8ecb5f92152187c4799efd3c96b78ccab18ff9" | ||
1594 | }, | ||
1595 | "dist": { | ||
1596 | "type": "zip", | ||
1597 | "url": "https://api.github.com/repos/symfony/polyfill-php73/zipball/9e8ecb5f92152187c4799efd3c96b78ccab18ff9", | ||
1598 | "reference": "9e8ecb5f92152187c4799efd3c96b78ccab18ff9", | ||
1599 | "shasum": "" | ||
1600 | }, | ||
1601 | "require": { | ||
1602 | "php": ">=7.1" | ||
1603 | }, | ||
1604 | "type": "library", | ||
1605 | "extra": { | ||
1606 | "branch-alias": { | ||
1607 | "dev-main": "1.27-dev" | ||
1608 | }, | ||
1609 | "thanks": { | ||
1610 | "name": "symfony/polyfill", | ||
1611 | "url": "https://github.com/symfony/polyfill" | ||
1612 | } | ||
1613 | }, | ||
1614 | "autoload": { | ||
1615 | "files": [ | ||
1616 | "bootstrap.php" | ||
1617 | ], | ||
1618 | "psr-4": { | ||
1619 | "Symfony\\Polyfill\\Php73\\": "" | ||
1620 | }, | ||
1621 | "classmap": [ | ||
1622 | "Resources/stubs" | ||
1623 | ] | ||
1624 | }, | ||
1625 | "notification-url": "https://packagist.org/downloads/", | ||
1626 | "license": [ | ||
1627 | "MIT" | ||
1628 | ], | ||
1629 | "authors": [ | ||
1630 | { | ||
1631 | "name": "Nicolas Grekas", | ||
1632 | "email": "p@tchwork.com" | ||
1633 | }, | ||
1634 | { | ||
1635 | "name": "Symfony Community", | ||
1636 | "homepage": "https://symfony.com/contributors" | ||
1637 | } | ||
1638 | ], | ||
1639 | "description": "Symfony polyfill backporting some PHP 7.3+ features to lower PHP versions", | ||
1640 | "homepage": "https://symfony.com", | ||
1641 | "keywords": [ | ||
1642 | "compatibility", | ||
1643 | "polyfill", | ||
1644 | "portable", | ||
1645 | "shim" | ||
1646 | ], | ||
1647 | "support": { | ||
1648 | "source": "https://github.com/symfony/polyfill-php73/tree/v1.27.0" | ||
1649 | }, | ||
1650 | "funding": [ | ||
1651 | { | ||
1652 | "url": "https://symfony.com/sponsor", | ||
1653 | "type": "custom" | ||
1654 | }, | ||
1655 | { | ||
1656 | "url": "https://github.com/fabpot", | ||
1657 | "type": "github" | ||
1658 | }, | ||
1659 | { | ||
1660 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", | ||
1661 | "type": "tidelift" | ||
1662 | } | ||
1663 | ], | ||
1664 | "time": "2022-11-03T14:55:06+00:00" | ||
1665 | }, | ||
1666 | { | ||
1667 | "name": "symfony/polyfill-php80", | ||
1668 | "version": "v1.27.0", | ||
1669 | "source": { | ||
1670 | "type": "git", | ||
1671 | "url": "https://github.com/symfony/polyfill-php80.git", | ||
1672 | "reference": "7a6ff3f1959bb01aefccb463a0f2cd3d3d2fd936" | ||
1673 | }, | ||
1674 | "dist": { | ||
1675 | "type": "zip", | ||
1676 | "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/7a6ff3f1959bb01aefccb463a0f2cd3d3d2fd936", | ||
1677 | "reference": "7a6ff3f1959bb01aefccb463a0f2cd3d3d2fd936", | ||
1678 | "shasum": "" | ||
1679 | }, | ||
1680 | "require": { | ||
1681 | "php": ">=7.1" | ||
1682 | }, | ||
1683 | "type": "library", | ||
1684 | "extra": { | ||
1685 | "branch-alias": { | ||
1686 | "dev-main": "1.27-dev" | ||
1687 | }, | ||
1688 | "thanks": { | ||
1689 | "name": "symfony/polyfill", | ||
1690 | "url": "https://github.com/symfony/polyfill" | ||
1691 | } | ||
1692 | }, | ||
1693 | "autoload": { | ||
1694 | "files": [ | ||
1695 | "bootstrap.php" | ||
1696 | ], | ||
1697 | "psr-4": { | ||
1698 | "Symfony\\Polyfill\\Php80\\": "" | ||
1699 | }, | ||
1700 | "classmap": [ | ||
1701 | "Resources/stubs" | ||
1702 | ] | ||
1703 | }, | ||
1704 | "notification-url": "https://packagist.org/downloads/", | ||
1705 | "license": [ | ||
1706 | "MIT" | ||
1707 | ], | ||
1708 | "authors": [ | ||
1709 | { | ||
1710 | "name": "Ion Bazan", | ||
1711 | "email": "ion.bazan@gmail.com" | ||
1712 | }, | ||
1713 | { | ||
1714 | "name": "Nicolas Grekas", | ||
1715 | "email": "p@tchwork.com" | ||
1716 | }, | ||
1717 | { | ||
1718 | "name": "Symfony Community", | ||
1719 | "homepage": "https://symfony.com/contributors" | ||
1720 | } | ||
1721 | ], | ||
1722 | "description": "Symfony polyfill backporting some PHP 8.0+ features to lower PHP versions", | ||
1723 | "homepage": "https://symfony.com", | ||
1724 | "keywords": [ | ||
1725 | "compatibility", | ||
1726 | "polyfill", | ||
1727 | "portable", | ||
1728 | "shim" | ||
1729 | ], | ||
1730 | "support": { | ||
1731 | "source": "https://github.com/symfony/polyfill-php80/tree/v1.27.0" | ||
1732 | }, | ||
1733 | "funding": [ | ||
1734 | { | ||
1735 | "url": "https://symfony.com/sponsor", | ||
1736 | "type": "custom" | ||
1737 | }, | ||
1738 | { | ||
1739 | "url": "https://github.com/fabpot", | ||
1740 | "type": "github" | ||
1741 | }, | ||
1742 | { | ||
1743 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", | ||
1744 | "type": "tidelift" | ||
1745 | } | ||
1746 | ], | ||
1747 | "time": "2022-11-03T14:55:06+00:00" | ||
1748 | }, | ||
1749 | { | ||
1750 | "name": "symfony/service-contracts", | ||
1751 | "version": "v3.0.2", | ||
1752 | "source": { | ||
1753 | "type": "git", | ||
1754 | "url": "https://github.com/symfony/service-contracts.git", | ||
1755 | "reference": "d78d39c1599bd1188b8e26bb341da52c3c6d8a66" | ||
1756 | }, | ||
1757 | "dist": { | ||
1758 | "type": "zip", | ||
1759 | "url": "https://api.github.com/repos/symfony/service-contracts/zipball/d78d39c1599bd1188b8e26bb341da52c3c6d8a66", | ||
1760 | "reference": "d78d39c1599bd1188b8e26bb341da52c3c6d8a66", | ||
1761 | "shasum": "" | ||
1762 | }, | ||
1763 | "require": { | ||
1764 | "php": ">=8.0.2", | ||
1765 | "psr/container": "^2.0" | ||
1766 | }, | ||
1767 | "conflict": { | ||
1768 | "ext-psr": "<1.1|>=2" | ||
1769 | }, | ||
1770 | "suggest": { | ||
1771 | "symfony/service-implementation": "" | ||
1772 | }, | ||
1773 | "type": "library", | ||
1774 | "extra": { | ||
1775 | "branch-alias": { | ||
1776 | "dev-main": "3.0-dev" | ||
1777 | }, | ||
1778 | "thanks": { | ||
1779 | "name": "symfony/contracts", | ||
1780 | "url": "https://github.com/symfony/contracts" | ||
1781 | } | ||
1782 | }, | ||
1783 | "autoload": { | ||
1784 | "psr-4": { | ||
1785 | "Symfony\\Contracts\\Service\\": "" | ||
1786 | } | ||
1787 | }, | ||
1788 | "notification-url": "https://packagist.org/downloads/", | ||
1789 | "license": [ | ||
1790 | "MIT" | ||
1791 | ], | ||
1792 | "authors": [ | ||
1793 | { | ||
1794 | "name": "Nicolas Grekas", | ||
1795 | "email": "p@tchwork.com" | ||
1796 | }, | ||
1797 | { | ||
1798 | "name": "Symfony Community", | ||
1799 | "homepage": "https://symfony.com/contributors" | ||
1800 | } | ||
1801 | ], | ||
1802 | "description": "Generic abstractions related to writing services", | ||
1803 | "homepage": "https://symfony.com", | ||
1804 | "keywords": [ | ||
1805 | "abstractions", | ||
1806 | "contracts", | ||
1807 | "decoupling", | ||
1808 | "interfaces", | ||
1809 | "interoperability", | ||
1810 | "standards" | ||
1811 | ], | ||
1812 | "support": { | ||
1813 | "source": "https://github.com/symfony/service-contracts/tree/v3.0.2" | ||
1814 | }, | ||
1815 | "funding": [ | ||
1816 | { | ||
1817 | "url": "https://symfony.com/sponsor", | ||
1818 | "type": "custom" | ||
1819 | }, | ||
1820 | { | ||
1821 | "url": "https://github.com/fabpot", | ||
1822 | "type": "github" | ||
1823 | }, | ||
1824 | { | ||
1825 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", | ||
1826 | "type": "tidelift" | ||
1827 | } | ||
1828 | ], | ||
1829 | "time": "2022-05-30T19:17:58+00:00" | ||
1830 | }, | ||
1831 | { | ||
1832 | "name": "symfony/stopwatch", | ||
1833 | "version": "v5.4.21", | ||
1834 | "source": { | ||
1835 | "type": "git", | ||
1836 | "url": "https://github.com/symfony/stopwatch.git", | ||
1837 | "reference": "f83692cd869a6f2391691d40a01e8acb89e76fee" | ||
1838 | }, | ||
1839 | "dist": { | ||
1840 | "type": "zip", | ||
1841 | "url": "https://api.github.com/repos/symfony/stopwatch/zipball/f83692cd869a6f2391691d40a01e8acb89e76fee", | ||
1842 | "reference": "f83692cd869a6f2391691d40a01e8acb89e76fee", | ||
1843 | "shasum": "" | ||
1844 | }, | ||
1845 | "require": { | ||
1846 | "php": ">=7.2.5", | ||
1847 | "symfony/service-contracts": "^1|^2|^3" | ||
1848 | }, | ||
1849 | "type": "library", | ||
1850 | "autoload": { | ||
1851 | "psr-4": { | ||
1852 | "Symfony\\Component\\Stopwatch\\": "" | ||
1853 | }, | ||
1854 | "exclude-from-classmap": [ | ||
1855 | "/Tests/" | ||
1856 | ] | ||
1857 | }, | ||
1858 | "notification-url": "https://packagist.org/downloads/", | ||
1859 | "license": [ | ||
1860 | "MIT" | ||
1861 | ], | ||
1862 | "authors": [ | ||
1863 | { | ||
1864 | "name": "Fabien Potencier", | ||
1865 | "email": "fabien@symfony.com" | ||
1866 | }, | ||
1867 | { | ||
1868 | "name": "Symfony Community", | ||
1869 | "homepage": "https://symfony.com/contributors" | ||
1870 | } | ||
1871 | ], | ||
1872 | "description": "Provides a way to profile code", | ||
1873 | "homepage": "https://symfony.com", | ||
1874 | "support": { | ||
1875 | "source": "https://github.com/symfony/stopwatch/tree/v5.4.21" | ||
1876 | }, | ||
1877 | "funding": [ | ||
1878 | { | ||
1879 | "url": "https://symfony.com/sponsor", | ||
1880 | "type": "custom" | ||
1881 | }, | ||
1882 | { | ||
1883 | "url": "https://github.com/fabpot", | ||
1884 | "type": "github" | ||
1885 | }, | ||
1886 | { | ||
1887 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", | ||
1888 | "type": "tidelift" | ||
1889 | } | ||
1890 | ], | ||
1891 | "time": "2023-02-14T08:03:56+00:00" | ||
1892 | }, | ||
1893 | { | ||
1894 | "name": "symfony/string", | ||
1895 | "version": "v6.0.19", | ||
1896 | "source": { | ||
1897 | "type": "git", | ||
1898 | "url": "https://github.com/symfony/string.git", | ||
1899 | "reference": "d9e72497367c23e08bf94176d2be45b00a9d232a" | ||
1900 | }, | ||
1901 | "dist": { | ||
1902 | "type": "zip", | ||
1903 | "url": "https://api.github.com/repos/symfony/string/zipball/d9e72497367c23e08bf94176d2be45b00a9d232a", | ||
1904 | "reference": "d9e72497367c23e08bf94176d2be45b00a9d232a", | ||
1905 | "shasum": "" | ||
1906 | }, | ||
1907 | "require": { | ||
1908 | "php": ">=8.0.2", | ||
1909 | "symfony/polyfill-ctype": "~1.8", | ||
1910 | "symfony/polyfill-intl-grapheme": "~1.0", | ||
1911 | "symfony/polyfill-intl-normalizer": "~1.0", | ||
1912 | "symfony/polyfill-mbstring": "~1.0" | ||
1913 | }, | ||
1914 | "conflict": { | ||
1915 | "symfony/translation-contracts": "<2.0" | ||
1916 | }, | ||
1917 | "require-dev": { | ||
1918 | "symfony/error-handler": "^5.4|^6.0", | ||
1919 | "symfony/http-client": "^5.4|^6.0", | ||
1920 | "symfony/translation-contracts": "^2.0|^3.0", | ||
1921 | "symfony/var-exporter": "^5.4|^6.0" | ||
1922 | }, | ||
1923 | "type": "library", | ||
1924 | "autoload": { | ||
1925 | "files": [ | ||
1926 | "Resources/functions.php" | ||
1927 | ], | ||
1928 | "psr-4": { | ||
1929 | "Symfony\\Component\\String\\": "" | ||
1930 | }, | ||
1931 | "exclude-from-classmap": [ | ||
1932 | "/Tests/" | ||
1933 | ] | ||
1934 | }, | ||
1935 | "notification-url": "https://packagist.org/downloads/", | ||
1936 | "license": [ | ||
1937 | "MIT" | ||
1938 | ], | ||
1939 | "authors": [ | ||
1940 | { | ||
1941 | "name": "Nicolas Grekas", | ||
1942 | "email": "p@tchwork.com" | ||
1943 | }, | ||
1944 | { | ||
1945 | "name": "Symfony Community", | ||
1946 | "homepage": "https://symfony.com/contributors" | ||
1947 | } | ||
1948 | ], | ||
1949 | "description": "Provides an object-oriented API to strings and deals with bytes, UTF-8 code points and grapheme clusters in a unified way", | ||
1950 | "homepage": "https://symfony.com", | ||
1951 | "keywords": [ | ||
1952 | "grapheme", | ||
1953 | "i18n", | ||
1954 | "string", | ||
1955 | "unicode", | ||
1956 | "utf-8", | ||
1957 | "utf8" | ||
1958 | ], | ||
1959 | "support": { | ||
1960 | "source": "https://github.com/symfony/string/tree/v6.0.19" | ||
1961 | }, | ||
1962 | "funding": [ | ||
1963 | { | ||
1964 | "url": "https://symfony.com/sponsor", | ||
1965 | "type": "custom" | ||
1966 | }, | ||
1967 | { | ||
1968 | "url": "https://github.com/fabpot", | ||
1969 | "type": "github" | ||
1970 | }, | ||
1971 | { | ||
1972 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", | ||
1973 | "type": "tidelift" | ||
1974 | } | ||
1975 | ], | ||
1976 | "time": "2023-01-01T08:36:10+00:00" | ||
1977 | }, | ||
1978 | { | ||
1979 | "name": "symfony/yaml", | ||
1980 | "version": "v5.4.23", | ||
1981 | "source": { | ||
1982 | "type": "git", | ||
1983 | "url": "https://github.com/symfony/yaml.git", | ||
1984 | "reference": "4cd2e3ea301aadd76a4172756296fe552fb45b0b" | ||
1985 | }, | ||
1986 | "dist": { | ||
1987 | "type": "zip", | ||
1988 | "url": "https://api.github.com/repos/symfony/yaml/zipball/4cd2e3ea301aadd76a4172756296fe552fb45b0b", | ||
1989 | "reference": "4cd2e3ea301aadd76a4172756296fe552fb45b0b", | ||
1990 | "shasum": "" | ||
1991 | }, | ||
1992 | "require": { | ||
1993 | "php": ">=7.2.5", | ||
1994 | "symfony/deprecation-contracts": "^2.1|^3", | ||
1995 | "symfony/polyfill-ctype": "^1.8" | ||
1996 | }, | ||
1997 | "conflict": { | ||
1998 | "symfony/console": "<5.3" | ||
1999 | }, | ||
2000 | "require-dev": { | ||
2001 | "symfony/console": "^5.3|^6.0" | ||
2002 | }, | ||
2003 | "suggest": { | ||
2004 | "symfony/console": "For validating YAML files using the lint command" | ||
2005 | }, | ||
2006 | "bin": [ | ||
2007 | "Resources/bin/yaml-lint" | ||
2008 | ], | ||
2009 | "type": "library", | ||
2010 | "autoload": { | ||
2011 | "psr-4": { | ||
2012 | "Symfony\\Component\\Yaml\\": "" | ||
2013 | }, | ||
2014 | "exclude-from-classmap": [ | ||
2015 | "/Tests/" | ||
2016 | ] | ||
2017 | }, | ||
2018 | "notification-url": "https://packagist.org/downloads/", | ||
2019 | "license": [ | ||
2020 | "MIT" | ||
2021 | ], | ||
2022 | "authors": [ | ||
2023 | { | ||
2024 | "name": "Fabien Potencier", | ||
2025 | "email": "fabien@symfony.com" | ||
2026 | }, | ||
2027 | { | ||
2028 | "name": "Symfony Community", | ||
2029 | "homepage": "https://symfony.com/contributors" | ||
2030 | } | ||
2031 | ], | ||
2032 | "description": "Loads and dumps YAML files", | ||
2033 | "homepage": "https://symfony.com", | ||
2034 | "support": { | ||
2035 | "source": "https://github.com/symfony/yaml/tree/v5.4.23" | ||
2036 | }, | ||
2037 | "funding": [ | ||
2038 | { | ||
2039 | "url": "https://symfony.com/sponsor", | ||
2040 | "type": "custom" | ||
2041 | }, | ||
2042 | { | ||
2043 | "url": "https://github.com/fabpot", | ||
2044 | "type": "github" | ||
2045 | }, | ||
2046 | { | ||
2047 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", | ||
2048 | "type": "tidelift" | ||
2049 | } | ||
2050 | ], | ||
2051 | "time": "2023-04-23T19:33:36+00:00" | ||
2052 | } | ||
2053 | ], | ||
2054 | "packages-dev": [], | ||
2055 | "aliases": [], | ||
2056 | "minimum-stability": "stable", | ||
2057 | "stability-flags": [], | ||
2058 | "prefer-stable": false, | ||
2059 | "prefer-lowest": false, | ||
2060 | "platform": { | ||
2061 | "php": ">=7.2.0", | ||
2062 | "ext-redis": "*", | ||
2063 | "ext-gearman": "*", | ||
2064 | "ext-mbstring": "*", | ||
2065 | "ext-bcmath": "*", | ||
2066 | "ext-json": "*", | ||
2067 | "ext-iconv": "*", | ||
2068 | "ext-pdo": "*" | ||
2069 | }, | ||
2070 | "platform-dev": [], | ||
2071 | "plugin-api-version": "2.2.0" | ||
2072 | } | ||
diff --git a/flakes/mypackages/pkgs/status_engine/worker_php_packages.nix b/flakes/mypackages/pkgs/status_engine/worker_php_packages.nix new file mode 100644 index 0000000..47291d2 --- /dev/null +++ b/flakes/mypackages/pkgs/status_engine/worker_php_packages.nix | |||
@@ -0,0 +1,266 @@ | |||
1 | {composerEnv, fetchurl, fetchgit ? null, fetchhg ? null, fetchsvn ? null, noDev ? false}: | ||
2 | { | ||
3 | packages = | ||
4 | { | ||
5 | "composer/package-versions-deprecated" = { | ||
6 | targetDir = ""; | ||
7 | src = composerEnv.buildZipPackage { | ||
8 | name = "composer-package-versions-deprecated-b4f54f74ef3453349c24a845d22392cd31e65f1d"; | ||
9 | src = fetchurl { | ||
10 | url = "https://api.github.com/repos/composer/package-versions-deprecated/zipball/b4f54f74ef3453349c24a845d22392cd31e65f1d"; | ||
11 | sha256 = "1hrjxvk8i14pw9gi7j3qc0gljjy74hwdkv8zwsrg5brgyzhqfwam"; | ||
12 | }; | ||
13 | }; | ||
14 | }; | ||
15 | "doctrine/cache" = { | ||
16 | targetDir = ""; | ||
17 | src = composerEnv.buildZipPackage { | ||
18 | name = "doctrine-cache-1ca8f21980e770095a31456042471a57bc4c68fb"; | ||
19 | src = fetchurl { | ||
20 | url = "https://api.github.com/repos/doctrine/cache/zipball/1ca8f21980e770095a31456042471a57bc4c68fb"; | ||
21 | sha256 = "1p8ia9g3mqz71bv4x8q1ng1fgcidmyksbsli1fjbialpgjk9k1ss"; | ||
22 | }; | ||
23 | }; | ||
24 | }; | ||
25 | "doctrine/dbal" = { | ||
26 | targetDir = ""; | ||
27 | src = composerEnv.buildZipPackage { | ||
28 | name = "doctrine-dbal-c480849ca3ad6706a39c970cdfe6888fa8a058b8"; | ||
29 | src = fetchurl { | ||
30 | url = "https://api.github.com/repos/doctrine/dbal/zipball/c480849ca3ad6706a39c970cdfe6888fa8a058b8"; | ||
31 | sha256 = "15j98h80li6m1aj53p8ddy0lkbkanc5kdy6xrikpdd6zhmsfgq9k"; | ||
32 | }; | ||
33 | }; | ||
34 | }; | ||
35 | "doctrine/deprecations" = { | ||
36 | targetDir = ""; | ||
37 | src = composerEnv.buildZipPackage { | ||
38 | name = "doctrine-deprecations-612a3ee5ab0d5dd97b7cf3874a6efe24325efac3"; | ||
39 | src = fetchurl { | ||
40 | url = "https://api.github.com/repos/doctrine/deprecations/zipball/612a3ee5ab0d5dd97b7cf3874a6efe24325efac3"; | ||
41 | sha256 = "078w4k0xdywyb44caz5grbcbxsi87iy13g7a270rs9g5f0p245fi"; | ||
42 | }; | ||
43 | }; | ||
44 | }; | ||
45 | "doctrine/event-manager" = { | ||
46 | targetDir = ""; | ||
47 | src = composerEnv.buildZipPackage { | ||
48 | name = "doctrine-event-manager-95aa4cb529f1e96576f3fda9f5705ada4056a520"; | ||
49 | src = fetchurl { | ||
50 | url = "https://api.github.com/repos/doctrine/event-manager/zipball/95aa4cb529f1e96576f3fda9f5705ada4056a520"; | ||
51 | sha256 = "0xi2s28jmmvrndg1yd0r5s10d9a0q6j2dxdbazvcbws9waf0yrvj"; | ||
52 | }; | ||
53 | }; | ||
54 | }; | ||
55 | "doctrine/migrations" = { | ||
56 | targetDir = ""; | ||
57 | src = composerEnv.buildZipPackage { | ||
58 | name = "doctrine-migrations-28d92a34348fee5daeb80879e56461b2e862fc05"; | ||
59 | src = fetchurl { | ||
60 | url = "https://api.github.com/repos/doctrine/migrations/zipball/28d92a34348fee5daeb80879e56461b2e862fc05"; | ||
61 | sha256 = "0j5snc96r03vcjlb3k94cx871f69xaq53bza8mm8xs4jk85gr5jg"; | ||
62 | }; | ||
63 | }; | ||
64 | }; | ||
65 | "friendsofphp/proxy-manager-lts" = { | ||
66 | targetDir = ""; | ||
67 | src = composerEnv.buildZipPackage { | ||
68 | name = "friendsofphp-proxy-manager-lts-ecadbdc9052e4ad08c60c8a02268712e50427f7c"; | ||
69 | src = fetchurl { | ||
70 | url = "https://api.github.com/repos/FriendsOfPHP/proxy-manager-lts/zipball/ecadbdc9052e4ad08c60c8a02268712e50427f7c"; | ||
71 | sha256 = "15ch54cm3rvjyvsvqs9ixfn3vnydfxa0knd4g6myapsryirrskvi"; | ||
72 | }; | ||
73 | }; | ||
74 | }; | ||
75 | "laminas/laminas-code" = { | ||
76 | targetDir = ""; | ||
77 | src = composerEnv.buildZipPackage { | ||
78 | name = "laminas-laminas-code-91aabc066d5620428120800c0eafc0411e441a62"; | ||
79 | src = fetchurl { | ||
80 | url = "https://api.github.com/repos/laminas/laminas-code/zipball/91aabc066d5620428120800c0eafc0411e441a62"; | ||
81 | sha256 = "01wsb6ph5h8ga9rnlr0lxd3qwn897ccxqxpbz540lfgz7a1prpb0"; | ||
82 | }; | ||
83 | }; | ||
84 | }; | ||
85 | "paragonie/constant_time_encoding" = { | ||
86 | targetDir = ""; | ||
87 | src = composerEnv.buildZipPackage { | ||
88 | name = "paragonie-constant_time_encoding-58c3f47f650c94ec05a151692652a868995d2938"; | ||
89 | src = fetchurl { | ||
90 | url = "https://api.github.com/repos/paragonie/constant_time_encoding/zipball/58c3f47f650c94ec05a151692652a868995d2938"; | ||
91 | sha256 = "0i9km0lzvc7df9758fm1p3y0679pzvr5m9x3mrz0d2hxlppsm764"; | ||
92 | }; | ||
93 | }; | ||
94 | }; | ||
95 | "paragonie/random_compat" = { | ||
96 | targetDir = ""; | ||
97 | src = composerEnv.buildZipPackage { | ||
98 | name = "paragonie-random_compat-996434e5492cb4c3edcb9168db6fbb1359ef965a"; | ||
99 | src = fetchurl { | ||
100 | url = "https://api.github.com/repos/paragonie/random_compat/zipball/996434e5492cb4c3edcb9168db6fbb1359ef965a"; | ||
101 | sha256 = "0ky7lal59dihf969r1k3pb96ql8zzdc5062jdbg69j6rj0scgkyx"; | ||
102 | }; | ||
103 | }; | ||
104 | }; | ||
105 | "php-amqplib/php-amqplib" = { | ||
106 | targetDir = ""; | ||
107 | src = composerEnv.buildZipPackage { | ||
108 | name = "php-amqplib-php-amqplib-1aecbd182b35eb039667c50d7d92d71f105be779"; | ||
109 | src = fetchurl { | ||
110 | url = "https://api.github.com/repos/php-amqplib/php-amqplib/zipball/1aecbd182b35eb039667c50d7d92d71f105be779"; | ||
111 | sha256 = "0wwzlf2yhjrc523n0y7qh23pxgn4f2qhkbr0jnxzq9j6mm75hnjm"; | ||
112 | }; | ||
113 | }; | ||
114 | }; | ||
115 | "phpseclib/phpseclib" = { | ||
116 | targetDir = ""; | ||
117 | src = composerEnv.buildZipPackage { | ||
118 | name = "phpseclib-phpseclib-4580645d3fc05c189024eb3b834c6c1e4f0f30a1"; | ||
119 | src = fetchurl { | ||
120 | url = "https://api.github.com/repos/phpseclib/phpseclib/zipball/4580645d3fc05c189024eb3b834c6c1e4f0f30a1"; | ||
121 | sha256 = "0v3c7n9h99pw4f03bfxjsgni7wpq7xr47nw2hf2hq8yjndw19n3p"; | ||
122 | }; | ||
123 | }; | ||
124 | }; | ||
125 | "psr/container" = { | ||
126 | targetDir = ""; | ||
127 | src = composerEnv.buildZipPackage { | ||
128 | name = "psr-container-c71ecc56dfe541dbd90c5360474fbc405f8d5963"; | ||
129 | src = fetchurl { | ||
130 | url = "https://api.github.com/repos/php-fig/container/zipball/c71ecc56dfe541dbd90c5360474fbc405f8d5963"; | ||
131 | sha256 = "1mvan38yb65hwk68hl0p7jymwzr4zfnaxmwjbw7nj3rsknvga49i"; | ||
132 | }; | ||
133 | }; | ||
134 | }; | ||
135 | "symfony/console" = { | ||
136 | targetDir = ""; | ||
137 | src = composerEnv.buildZipPackage { | ||
138 | name = "symfony-console-b504a3d266ad2bb632f196c0936ef2af5ff6e273"; | ||
139 | src = fetchurl { | ||
140 | url = "https://api.github.com/repos/symfony/console/zipball/b504a3d266ad2bb632f196c0936ef2af5ff6e273"; | ||
141 | sha256 = "0na3lpgzvrsxngyzv2w90k3ykw1y5j4p6v965v3sal03y6rr2w2i"; | ||
142 | }; | ||
143 | }; | ||
144 | }; | ||
145 | "symfony/deprecation-contracts" = { | ||
146 | targetDir = ""; | ||
147 | src = composerEnv.buildZipPackage { | ||
148 | name = "symfony-deprecation-contracts-26954b3d62a6c5fd0ea8a2a00c0353a14978d05c"; | ||
149 | src = fetchurl { | ||
150 | url = "https://api.github.com/repos/symfony/deprecation-contracts/zipball/26954b3d62a6c5fd0ea8a2a00c0353a14978d05c"; | ||
151 | sha256 = "1wlaj9ngbyjmgr92gjyf7lsmjfswyh8vpbzq5rdzaxjb6bcsj3dp"; | ||
152 | }; | ||
153 | }; | ||
154 | }; | ||
155 | "symfony/filesystem" = { | ||
156 | targetDir = ""; | ||
157 | src = composerEnv.buildZipPackage { | ||
158 | name = "symfony-filesystem-3d49eec03fda1f0fc19b7349fbbe55ebc1004214"; | ||
159 | src = fetchurl { | ||
160 | url = "https://api.github.com/repos/symfony/filesystem/zipball/3d49eec03fda1f0fc19b7349fbbe55ebc1004214"; | ||
161 | sha256 = "0dhnyj6m9n6359z5c0xh4pz38n89i9x5c9r1s2dlgxz0daysbbyy"; | ||
162 | }; | ||
163 | }; | ||
164 | }; | ||
165 | "symfony/polyfill-ctype" = { | ||
166 | targetDir = ""; | ||
167 | src = composerEnv.buildZipPackage { | ||
168 | name = "symfony-polyfill-ctype-5bbc823adecdae860bb64756d639ecfec17b050a"; | ||
169 | src = fetchurl { | ||
170 | url = "https://api.github.com/repos/symfony/polyfill-ctype/zipball/5bbc823adecdae860bb64756d639ecfec17b050a"; | ||
171 | sha256 = "0vyv70z1yi2is727d1mkb961w5r1pb1v3wy1pvdp30h8ffy15wk6"; | ||
172 | }; | ||
173 | }; | ||
174 | }; | ||
175 | "symfony/polyfill-intl-grapheme" = { | ||
176 | targetDir = ""; | ||
177 | src = composerEnv.buildZipPackage { | ||
178 | name = "symfony-polyfill-intl-grapheme-511a08c03c1960e08a883f4cffcacd219b758354"; | ||
179 | src = fetchurl { | ||
180 | url = "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/511a08c03c1960e08a883f4cffcacd219b758354"; | ||
181 | sha256 = "0ifsgsyxf0z0nkynqvr5259dm5dsmbgdpvyi5zfvy8935mi0ki0i"; | ||
182 | }; | ||
183 | }; | ||
184 | }; | ||
185 | "symfony/polyfill-intl-normalizer" = { | ||
186 | targetDir = ""; | ||
187 | src = composerEnv.buildZipPackage { | ||
188 | name = "symfony-polyfill-intl-normalizer-19bd1e4fcd5b91116f14d8533c57831ed00571b6"; | ||
189 | src = fetchurl { | ||
190 | url = "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/19bd1e4fcd5b91116f14d8533c57831ed00571b6"; | ||
191 | sha256 = "1d80jph5ykiw6ydv8fwd43s0aglh24qc1yrzds2f3aqanpbk1gr2"; | ||
192 | }; | ||
193 | }; | ||
194 | }; | ||
195 | "symfony/polyfill-mbstring" = { | ||
196 | targetDir = ""; | ||
197 | src = composerEnv.buildZipPackage { | ||
198 | name = "symfony-polyfill-mbstring-8ad114f6b39e2c98a8b0e3bd907732c207c2b534"; | ||
199 | src = fetchurl { | ||
200 | url = "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/8ad114f6b39e2c98a8b0e3bd907732c207c2b534"; | ||
201 | sha256 = "1ym84qp609i50lv4vkd4yz99y19kaxd5kmpdnh66mxx1a4a104mi"; | ||
202 | }; | ||
203 | }; | ||
204 | }; | ||
205 | "symfony/polyfill-php73" = { | ||
206 | targetDir = ""; | ||
207 | src = composerEnv.buildZipPackage { | ||
208 | name = "symfony-polyfill-php73-9e8ecb5f92152187c4799efd3c96b78ccab18ff9"; | ||
209 | src = fetchurl { | ||
210 | url = "https://api.github.com/repos/symfony/polyfill-php73/zipball/9e8ecb5f92152187c4799efd3c96b78ccab18ff9"; | ||
211 | sha256 = "1p0jr92x323pl4frjbhmziyk5g1zig1g30i1v1p0wfli2sq8h5mb"; | ||
212 | }; | ||
213 | }; | ||
214 | }; | ||
215 | "symfony/polyfill-php80" = { | ||
216 | targetDir = ""; | ||
217 | src = composerEnv.buildZipPackage { | ||
218 | name = "symfony-polyfill-php80-7a6ff3f1959bb01aefccb463a0f2cd3d3d2fd936"; | ||
219 | src = fetchurl { | ||
220 | url = "https://api.github.com/repos/symfony/polyfill-php80/zipball/7a6ff3f1959bb01aefccb463a0f2cd3d3d2fd936"; | ||
221 | sha256 = "16yydk7rsknlasrpn47n4b4js8svvp4rxzw99dkav52wr3cqmcwd"; | ||
222 | }; | ||
223 | }; | ||
224 | }; | ||
225 | "symfony/service-contracts" = { | ||
226 | targetDir = ""; | ||
227 | src = composerEnv.buildZipPackage { | ||
228 | name = "symfony-service-contracts-d78d39c1599bd1188b8e26bb341da52c3c6d8a66"; | ||
229 | src = fetchurl { | ||
230 | url = "https://api.github.com/repos/symfony/service-contracts/zipball/d78d39c1599bd1188b8e26bb341da52c3c6d8a66"; | ||
231 | sha256 = "1cgbn2yx2fyrc3c1d85vdriiwwifr1sdg868f3rhq9bh78f03z99"; | ||
232 | }; | ||
233 | }; | ||
234 | }; | ||
235 | "symfony/stopwatch" = { | ||
236 | targetDir = ""; | ||
237 | src = composerEnv.buildZipPackage { | ||
238 | name = "symfony-stopwatch-f83692cd869a6f2391691d40a01e8acb89e76fee"; | ||
239 | src = fetchurl { | ||
240 | url = "https://api.github.com/repos/symfony/stopwatch/zipball/f83692cd869a6f2391691d40a01e8acb89e76fee"; | ||
241 | sha256 = "1qh49p2jfca5kpcmlcbjx5izgqqvjd91385zy5mipyslsdik2lwg"; | ||
242 | }; | ||
243 | }; | ||
244 | }; | ||
245 | "symfony/string" = { | ||
246 | targetDir = ""; | ||
247 | src = composerEnv.buildZipPackage { | ||
248 | name = "symfony-string-d9e72497367c23e08bf94176d2be45b00a9d232a"; | ||
249 | src = fetchurl { | ||
250 | url = "https://api.github.com/repos/symfony/string/zipball/d9e72497367c23e08bf94176d2be45b00a9d232a"; | ||
251 | sha256 = "0k4vvcjfdp2dni8gzq4rn8d6n0ivd38sfna70lgsh8vlc8rrlhpf"; | ||
252 | }; | ||
253 | }; | ||
254 | }; | ||
255 | "symfony/yaml" = { | ||
256 | targetDir = ""; | ||
257 | src = composerEnv.buildZipPackage { | ||
258 | name = "symfony-yaml-4cd2e3ea301aadd76a4172756296fe552fb45b0b"; | ||
259 | src = fetchurl { | ||
260 | url = "https://api.github.com/repos/symfony/yaml/zipball/4cd2e3ea301aadd76a4172756296fe552fb45b0b"; | ||
261 | sha256 = "18yirwiqbh11fwlpqypm0wlc0lnx7prgk68xrn607zcg6cxnfhiz"; | ||
262 | }; | ||
263 | }; | ||
264 | }; | ||
265 | }; | ||
266 | } | ||
diff --git a/flakes/mypackages/pkgs/telegram-history-dump/default.nix b/flakes/mypackages/pkgs/telegram-history-dump/default.nix new file mode 100644 index 0000000..492e265 --- /dev/null +++ b/flakes/mypackages/pkgs/telegram-history-dump/default.nix | |||
@@ -0,0 +1,18 @@ | |||
1 | { stdenv, ruby, fetchFromGitHub }: | ||
2 | stdenv.mkDerivation ({ | ||
3 | pname = "telegram-history-dump"; | ||
4 | version = "468ea91-master"; | ||
5 | src = fetchFromGitHub { | ||
6 | owner = "tvdstaaij"; | ||
7 | repo = "telegram-history-dump"; | ||
8 | rev = "468ea91e543529b54bc2c5ea28b1ea17f362fd3e"; | ||
9 | sha256 = "1wmwiqacfa56bmwx50njnb15cg0fy6rbdrmrjd4xfbh8bs6yp0gh"; | ||
10 | fetchSubmodules = true; | ||
11 | }; | ||
12 | installPhase = '' | ||
13 | mkdir -p $out/lib $out/bin | ||
14 | cp -a $src $out/lib/telegram-history-dump | ||
15 | ln -s $out/lib/telegram-history-dump/telegram-history-dump.rb $out/bin/telegram-history-dump | ||
16 | ''; | ||
17 | buildInputs = [ ruby ]; | ||
18 | }) | ||
diff --git a/flakes/mypackages/pkgs/telegramircd/default.nix b/flakes/mypackages/pkgs/telegramircd/default.nix new file mode 100644 index 0000000..d9196a2 --- /dev/null +++ b/flakes/mypackages/pkgs/telegramircd/default.nix | |||
@@ -0,0 +1,22 @@ | |||
1 | { openssl, telethon, python3Packages, fetchFromGitHub }: | ||
2 | with python3Packages; | ||
3 | buildPythonApplication rec { | ||
4 | format = "other"; | ||
5 | pname = "telegramircd"; | ||
6 | version = "master"; | ||
7 | propagatedBuildInputs = [ telethon aiohttp ConfigArgParse openssl ]; | ||
8 | src = fetchFromGitHub { | ||
9 | owner = "MaskRay"; | ||
10 | repo = "telegramircd"; | ||
11 | rev = "40a0c7cf60492bde3f44d43f06f62e3792480139"; | ||
12 | sha256 = "123fjhgxq2fzn0ar8274jv7jjbxnlpidrj5333kbch7rpcipks0y"; | ||
13 | fetchSubmodules = true; | ||
14 | }; | ||
15 | LD_LIBRARY_PATH = "${openssl.out}/lib"; | ||
16 | installPhase = '' | ||
17 | install -D $src/telegramircd.py $out/bin/telegramircd | ||
18 | wrapProgram "$out/bin/telegramircd" \ | ||
19 | --prefix LD_LIBRARY_PATH : "${openssl.out}/lib" | ||
20 | install -Dm644 "$src/config" -t "$out/etc/telegramircd/" | ||
21 | ''; | ||
22 | } | ||
diff --git a/flakes/mypackages/pkgs/telethon_sync/default.nix b/flakes/mypackages/pkgs/telethon_sync/default.nix new file mode 100644 index 0000000..a03e1c3 --- /dev/null +++ b/flakes/mypackages/pkgs/telethon_sync/default.nix | |||
@@ -0,0 +1,24 @@ | |||
1 | { lib, python3Packages, fetchgit }: | ||
2 | with python3Packages; | ||
3 | buildPythonPackage rec { | ||
4 | pname = "Telethon-sync"; | ||
5 | version = "1.1.1"; | ||
6 | |||
7 | src = fetchgit { | ||
8 | url = "https://github.com/LonamiWebs/Telethon"; | ||
9 | branchName = "sync-stale"; | ||
10 | rev = "6a785a01aa56cfd21c8c5beb9d722c68d664ba5e"; | ||
11 | sha256 = "0g7gnln5kbh1gy6sfb3jg6knmi33n6sgzy2rni2x6af84lza0lgc"; | ||
12 | }; | ||
13 | |||
14 | propagatedBuildInputs = [ | ||
15 | rsa pyaes async_generator | ||
16 | ]; | ||
17 | doCheck = false; | ||
18 | |||
19 | meta = with lib; { | ||
20 | homepage = https://github.com/LonamiWebs/Telethon; | ||
21 | description = "Full-featured Telegram client library for Python 3"; | ||
22 | license = licenses.mit; | ||
23 | }; | ||
24 | } | ||
diff --git a/flakes/mypackages/pkgs/terminal-velocity/default.nix b/flakes/mypackages/pkgs/terminal-velocity/default.nix new file mode 100644 index 0000000..3ccfcd3 --- /dev/null +++ b/flakes/mypackages/pkgs/terminal-velocity/default.nix | |||
@@ -0,0 +1,37 @@ | |||
1 | { python37Packages }: | ||
2 | with python37Packages; | ||
3 | buildPythonApplication rec { | ||
4 | pname = "terminal-velocity-git"; | ||
5 | version = "0.2.0"; | ||
6 | src = fetchPypi { | ||
7 | inherit pname version; | ||
8 | sha256 = "13yrkcmvh5h5fwnai61sbmqkrjyisz08n62pq0ada2lyyqf7g6b9"; | ||
9 | }; | ||
10 | |||
11 | patches = [ | ||
12 | ./sort_found_notes.patch | ||
13 | ./python3_support.patch | ||
14 | # FIXME: update this patch when version changes | ||
15 | ./fix_build.patch | ||
16 | ]; | ||
17 | |||
18 | preCheck = '' | ||
19 | # Needed for urwid test | ||
20 | export LC_ALL=en_US.UTF-8 | ||
21 | ''; | ||
22 | propagatedBuildInputs = [ | ||
23 | chardet | ||
24 | urwid | ||
25 | (sh.overridePythonAttrs { doCheck = false; }) | ||
26 | pyyaml | ||
27 | ]; | ||
28 | buildInputs = [ | ||
29 | m2r | ||
30 | (restructuredtext_lint.overridePythonAttrs { doCheck = false; }) | ||
31 | pygments | ||
32 | ]; | ||
33 | |||
34 | postInstall = '' | ||
35 | rm $out/bin/terminal_velocity | ||
36 | ''; | ||
37 | } | ||
diff --git a/flakes/mypackages/pkgs/terminal-velocity/fix_build.patch b/flakes/mypackages/pkgs/terminal-velocity/fix_build.patch new file mode 100644 index 0000000..b08e0c4 --- /dev/null +++ b/flakes/mypackages/pkgs/terminal-velocity/fix_build.patch | |||
@@ -0,0 +1,21 @@ | |||
1 | commit a64bf3d58f6ba7f5fa72fe5b89a3973cac0c1a99 | ||
2 | Author: Ismaël Bouya <ismael.bouya@normalesup.org> | ||
3 | Date: Sat Mar 9 20:13:52 2019 +0100 | ||
4 | |||
5 | Remove mister_bump dependency | ||
6 | |||
7 | diff --git a/setup.py b/setup.py | ||
8 | index 84a99e9..a783dff 100644 | ||
9 | --- a/setup.py | ||
10 | +++ b/setup.py | ||
11 | @@ -1,7 +1,9 @@ | ||
12 | from setuptools import setup | ||
13 | from m2r import parse_from_file | ||
14 | import restructuredtext_lint | ||
15 | -from mister_bump import bump | ||
16 | + | ||
17 | +def bump(): | ||
18 | + return "0.2.0" | ||
19 | |||
20 | # Parser README.md into reStructuredText format | ||
21 | rst_readme = parse_from_file('README.md') | ||
diff --git a/flakes/mypackages/pkgs/terminal-velocity/python3_support.patch b/flakes/mypackages/pkgs/terminal-velocity/python3_support.patch new file mode 100644 index 0000000..bd4aec7 --- /dev/null +++ b/flakes/mypackages/pkgs/terminal-velocity/python3_support.patch | |||
@@ -0,0 +1,215 @@ | |||
1 | commit 6ca19964b9e8a7866fd7e21a3dac9ccd35f0d434 | ||
2 | Author: Ismaël Bouya <ismael.bouya@normalesup.org> | ||
3 | Date: Sat Mar 9 20:13:18 2019 +0100 | ||
4 | |||
5 | Add python3 support | ||
6 | |||
7 | diff --git a/terminal_velocity/notebook.py b/terminal_velocity/notebook.py | ||
8 | index b6226dc..11f76de 100644 | ||
9 | --- a/terminal_velocity/notebook.py | ||
10 | +++ b/terminal_velocity/notebook.py | ||
11 | @@ -60,51 +60,6 @@ import sys | ||
12 | import chardet | ||
13 | |||
14 | |||
15 | -def unicode_or_bust(raw_text): | ||
16 | - """Return the given raw text data decoded to unicode. | ||
17 | - | ||
18 | - If the text cannot be decoded, return None. | ||
19 | - | ||
20 | - """ | ||
21 | - encodings = ["utf-8"] | ||
22 | - for encoding in (sys.getfilesystemencoding(), sys.getdefaultencoding()): | ||
23 | - # I would use a set for this, but they don't maintain order. | ||
24 | - if encoding not in encodings: | ||
25 | - encodings.append(encoding) | ||
26 | - | ||
27 | - for encoding in encodings: | ||
28 | - if encoding: # getfilesystemencoding() may return None | ||
29 | - try: | ||
30 | - decoded = unicode(raw_text, encoding=encoding) | ||
31 | - return decoded | ||
32 | - except UnicodeDecodeError: | ||
33 | - pass | ||
34 | - | ||
35 | - # If none of those guesses worked, let chardet have a go. | ||
36 | - encoding = chardet.detect(raw_text)["encoding"] | ||
37 | - if encoding and encoding not in encodings: | ||
38 | - try: | ||
39 | - decoded = unicode(raw_text, encoding=encoding) | ||
40 | - logger.debug("File decoded with chardet, encoding was {0}".format( | ||
41 | - encoding)) | ||
42 | - return decoded | ||
43 | - except UnicodeDecodeError: | ||
44 | - pass | ||
45 | - except LookupError: | ||
46 | - pass | ||
47 | - | ||
48 | - # I've heard that decoding with cp1252 never fails, so try that last. | ||
49 | - try: | ||
50 | - decoded = unicode(raw_text, encoding="cp1252") | ||
51 | - logger.debug("File decoded with encoding cp1252") | ||
52 | - return decoded | ||
53 | - except UnicodeDecodeError: | ||
54 | - pass | ||
55 | - | ||
56 | - # If nothing worked then give up. | ||
57 | - return None | ||
58 | - | ||
59 | - | ||
60 | class Error(Exception): | ||
61 | """Base class for exceptions in this module.""" | ||
62 | pass | ||
63 | @@ -192,12 +147,12 @@ class PlainTextNote(object): | ||
64 | # subdirs) if they don't exist. | ||
65 | directory = os.path.split(self.abspath)[0] | ||
66 | if not os.path.isdir(directory): | ||
67 | - logger.debug(u"'{0} doesn't exist, creating it".format(directory)) | ||
68 | + logger.debug("'{0} doesn't exist, creating it".format(directory)) | ||
69 | try: | ||
70 | os.makedirs(directory) | ||
71 | except os.error as e: | ||
72 | raise NewNoteError( | ||
73 | - u"{0} could not be created: {1}".format(directory, e)) | ||
74 | + "{0} could not be created: {1}".format(directory, e)) | ||
75 | |||
76 | # Create an empty file if the file doesn't exist. | ||
77 | open(self.abspath, 'a') | ||
78 | @@ -217,11 +172,11 @@ class PlainTextNote(object): | ||
79 | |||
80 | @property | ||
81 | def contents(self): | ||
82 | - contents = unicode_or_bust(open(self.abspath, "r").read()) | ||
83 | + contents = open(self.abspath, "rb").read().decode(errors='ignore') | ||
84 | if contents is None: | ||
85 | logger.error( | ||
86 | - u"Could not decode file contents: {0}".format(self.abspath)) | ||
87 | - return u"" | ||
88 | + "Could not decode file contents: {0}".format(self.abspath)) | ||
89 | + return "" | ||
90 | else: | ||
91 | return contents | ||
92 | |||
93 | @@ -322,12 +277,12 @@ class PlainTextNoteBook(object): | ||
94 | |||
95 | # Create notebook_dir if it doesn't exist. | ||
96 | if not os.path.isdir(self.path): | ||
97 | - logger.debug(u"'{0} doesn't exist, creating it".format(self.path)) | ||
98 | + logger.debug("'{0} doesn't exist, creating it".format(self.path)) | ||
99 | try: | ||
100 | os.makedirs(self.path) | ||
101 | except os.error as e: | ||
102 | raise NewNoteBookError( | ||
103 | - u"{0} could not be created: {1}".format(self.path, e)) | ||
104 | + "{0} could not be created: {1}".format(self.path, e)) | ||
105 | else: | ||
106 | # TODO: Check that self.path is a directory, if not raise. | ||
107 | pass | ||
108 | @@ -358,13 +313,12 @@ class PlainTextNoteBook(object): | ||
109 | abspath = os.path.join(root, filename) | ||
110 | relpath = os.path.relpath(abspath, self.path) | ||
111 | relpath, ext = os.path.splitext(relpath) | ||
112 | - unicode_relpath = unicode_or_bust(relpath) | ||
113 | if relpath is None: | ||
114 | # The filename could not be decoded. | ||
115 | logger.error( | ||
116 | "Could not decode filename: {0}".format(relpath)) | ||
117 | else: | ||
118 | - self.add_new(title=unicode_relpath, extension=ext) | ||
119 | + self.add_new(title=relpath, extension=ext) | ||
120 | |||
121 | @property | ||
122 | def path(self): | ||
123 | @@ -418,7 +372,7 @@ class PlainTextNoteBook(object): | ||
124 | for note in self._notes: | ||
125 | if note.title == title and note.extension == extension: | ||
126 | raise NoteAlreadyExistsError( | ||
127 | - u"Note already in NoteBook: {0}".format(note.title)) | ||
128 | + "Note already in NoteBook: {0}".format(note.title)) | ||
129 | |||
130 | # Ok, add the note. | ||
131 | note = PlainTextNote(title, self, extension) | ||
132 | diff --git a/terminal_velocity/terminal_velocity.py b/terminal_velocity/terminal_velocity.py | ||
133 | index 5f0e213..9234bea 100755 | ||
134 | --- a/terminal_velocity/terminal_velocity.py | ||
135 | +++ b/terminal_velocity/terminal_velocity.py | ||
136 | @@ -1,7 +1,7 @@ | ||
137 | -#!/usr/bin/env python2 | ||
138 | +#!/usr/bin/env python3 | ||
139 | """A fast note-taking app for the UNIX terminal""" | ||
140 | from __future__ import print_function | ||
141 | -import ConfigParser | ||
142 | +import configparser | ||
143 | import argparse | ||
144 | import os | ||
145 | import logging | ||
146 | @@ -9,9 +9,9 @@ import logging.handlers | ||
147 | import sys | ||
148 | |||
149 | #import terminal_velocity.urwid_ui as urwid_ui | ||
150 | -import urwid_ui | ||
151 | +from . import urwid_ui | ||
152 | |||
153 | -from git import get_git_project_config, git_project_is_configured, fetch_changes, push_changes | ||
154 | +from .git import get_git_project_config, git_project_is_configured, fetch_changes, push_changes | ||
155 | |||
156 | |||
157 | def startup(): | ||
158 | @@ -37,7 +37,7 @@ def main(): | ||
159 | |||
160 | # Parse the config file. | ||
161 | config_file = os.path.abspath(os.path.expanduser(args.config)) | ||
162 | - config = ConfigParser.SafeConfigParser() | ||
163 | + config = configparser.ConfigParser() | ||
164 | config.read(config_file) | ||
165 | defaults = dict(config.items('DEFAULT')) | ||
166 | |||
167 | diff --git a/terminal_velocity/urwid_ui.py b/terminal_velocity/urwid_ui.py | ||
168 | index caebcb9..89bab35 100644 | ||
169 | --- a/terminal_velocity/urwid_ui.py | ||
170 | +++ b/terminal_velocity/urwid_ui.py | ||
171 | @@ -10,7 +10,7 @@ import logging | ||
172 | logger = logging.getLogger(__name__) | ||
173 | |||
174 | import urwid | ||
175 | -import notebook | ||
176 | +from . import notebook | ||
177 | |||
178 | |||
179 | palette = [ | ||
180 | @@ -27,8 +27,6 @@ def system(cmd, loop): | ||
181 | |||
182 | loop.screen.stop() | ||
183 | |||
184 | - cmd = u"{0}".format(cmd) | ||
185 | - cmd = cmd.encode("utf-8") # FIXME: Correct encoding? | ||
186 | safe_cmd = shlex.split(cmd) | ||
187 | |||
188 | logger.debug("System command: {0}".format(safe_cmd)) | ||
189 | @@ -114,7 +112,7 @@ class AutocompleteWidget(urwid.Edit): | ||
190 | |||
191 | # When search bar is empty show placeholder text. | ||
192 | if not self.edit_text and not self.autocomplete_text: | ||
193 | - placeholder_text = u"Find or Create" | ||
194 | + placeholder_text = "Find or Create" | ||
195 | return (placeholder_text, | ||
196 | [("placeholder", len(placeholder_text))]) | ||
197 | |||
198 | @@ -186,7 +184,7 @@ class NoteFilterListBox(urwid.ListBox): | ||
199 | |||
200 | def render(self, size, focus=False): | ||
201 | if len(self.list_walker) == 0: | ||
202 | - placeholder = placeholder_text(u"No matching notes, press Enter " | ||
203 | + placeholder = placeholder_text("No matching notes, press Enter " | ||
204 | "to create a new note") | ||
205 | return placeholder.render(size) | ||
206 | return super(NoteFilterListBox, self).render(size, self.fake_focus) | ||
207 | @@ -399,7 +397,7 @@ class MainFrame(urwid.Frame): | ||
208 | # If the user has no notes yet show some placeholder text, otherwise | ||
209 | # show the note list. | ||
210 | if len(self.notebook) == 0: | ||
211 | - self.body = placeholder_text(u"You have no notes yet, to create " | ||
212 | + self.body = placeholder_text("You have no notes yet, to create " | ||
213 | "a note type a note title then press Enter") | ||
214 | else: | ||
215 | self.body = urwid.Padding(self.list_box, left=1, right=1) | ||
diff --git a/flakes/mypackages/pkgs/terminal-velocity/sort_found_notes.patch b/flakes/mypackages/pkgs/terminal-velocity/sort_found_notes.patch new file mode 100644 index 0000000..2bc563c --- /dev/null +++ b/flakes/mypackages/pkgs/terminal-velocity/sort_found_notes.patch | |||
@@ -0,0 +1,73 @@ | |||
1 | commit 0f9df37046e58c8963aff93c649e5d3dbf2202bd | ||
2 | Author: Ismaël Bouya <ismael.bouya@normalesup.org> | ||
3 | Date: Sat Mar 9 20:11:46 2019 +0100 | ||
4 | |||
5 | Add sorting option | ||
6 | |||
7 | diff --git a/terminal_velocity/terminal_velocity.py b/terminal_velocity/terminal_velocity.py | ||
8 | index a53eda3..5f0e213 100755 | ||
9 | --- a/terminal_velocity/terminal_velocity.py | ||
10 | +++ b/terminal_velocity/terminal_velocity.py | ||
11 | @@ -90,6 +90,10 @@ the default default will be used""" | ||
12 | default=defaults.get("log_file", "~/.tvlog"), | ||
13 | help="the file to log to (default: %(default)s)") | ||
14 | |||
15 | + parser.add_argument("-s", "--sort", dest="sort", action="store", | ||
16 | + default=defaults.get("sort", "date"), | ||
17 | + help="the note sorting rules. Possible values: date, title (default: %(default)s)") | ||
18 | + | ||
19 | parser.add_argument("-p", "--print-config", dest="print_config", | ||
20 | action="store_true", default=False, | ||
21 | help="print your configuration settings then exit") | ||
22 | @@ -138,7 +142,7 @@ the default default will be used""" | ||
23 | try: | ||
24 | urwid_ui.launch(notes_dir=args.notes_dir, editor=args.editor, | ||
25 | extension=args.extension, extensions=args.extensions, | ||
26 | - exclude=args.exclude) | ||
27 | + exclude=args.exclude, sort=args.sort) | ||
28 | except KeyboardInterrupt: | ||
29 | # Run the shutdown hook | ||
30 | shutdown() | ||
31 | diff --git a/terminal_velocity/urwid_ui.py b/terminal_velocity/urwid_ui.py | ||
32 | index 34cf4f6..caebcb9 100644 | ||
33 | --- a/terminal_velocity/urwid_ui.py | ||
34 | +++ b/terminal_velocity/urwid_ui.py | ||
35 | @@ -237,11 +237,12 @@ class NoteFilterListBox(urwid.ListBox): | ||
36 | class MainFrame(urwid.Frame): | ||
37 | """The topmost urwid widget.""" | ||
38 | |||
39 | - def __init__(self, notes_dir, editor, extension, extensions, exclude=None): | ||
40 | + def __init__(self, notes_dir, editor, extension, extensions, exclude=None, sort="date"): | ||
41 | |||
42 | self.editor = editor | ||
43 | self.notebook = notebook.PlainTextNoteBook(notes_dir, extension, | ||
44 | extensions, exclude=exclude) | ||
45 | + self.sort = sort | ||
46 | |||
47 | # Don't filter the note list when the text in the search box changes. | ||
48 | self.suppress_filter = False | ||
49 | @@ -408,7 +409,10 @@ class MainFrame(urwid.Frame): | ||
50 | |||
51 | # Sort the notes. | ||
52 | # TODO: Support different sort orderings. | ||
53 | - matching_notes.sort(key=lambda x: x.mtime, reverse=True) | ||
54 | + if self.sort == "title": | ||
55 | + matching_notes.sort(key=lambda x: x.title) | ||
56 | + else: | ||
57 | + matching_notes.sort(key=lambda x: x.mtime, reverse=True) | ||
58 | |||
59 | # Tell the list box to show only the matching notes. | ||
60 | self.list_box.filter(matching_notes) | ||
61 | @@ -433,10 +437,10 @@ class MainFrame(urwid.Frame): | ||
62 | self.selected_note = note | ||
63 | |||
64 | |||
65 | -def launch(notes_dir, editor, extension, extensions, exclude=None): | ||
66 | +def launch(notes_dir, editor, extension, extensions, exclude=None, sort="date"): | ||
67 | """Launch the user interface.""" | ||
68 | |||
69 | - frame = MainFrame(notes_dir, editor, extension, extensions, exclude=exclude) | ||
70 | + frame = MainFrame(notes_dir, editor, extension, extensions, exclude=exclude, sort=sort) | ||
71 | loop = urwid.MainLoop(frame, palette) | ||
72 | frame.loop = loop | ||
73 | loop.run() | ||
diff --git a/flakes/mypackages/pkgs/tiv/default.nix b/flakes/mypackages/pkgs/tiv/default.nix new file mode 100644 index 0000000..2415db9 --- /dev/null +++ b/flakes/mypackages/pkgs/tiv/default.nix | |||
@@ -0,0 +1,19 @@ | |||
1 | { fetchurl, perlPackages }: | ||
2 | perlPackages.buildPerlPackage rec { | ||
3 | pname = "tiv"; | ||
4 | version = "2015"; | ||
5 | src = fetchurl { | ||
6 | url = "http://xyne.archlinux.ca/projects/tiv/src/tiv-${version}.tar.xz"; | ||
7 | sha256 = "1vq073v7z7vmcd57lhs4rf4jasji69cpjgkz4dykp94a77p1qq90"; | ||
8 | }; | ||
9 | |||
10 | outputs = ["out"]; | ||
11 | buildInputs = with perlPackages; [ PerlMagick ]; | ||
12 | perlPreHookScript = ./tiv_builder.sh; | ||
13 | perlPreHook = '' | ||
14 | source $perlPreHookScript | ||
15 | ''; | ||
16 | installPhase = '' | ||
17 | install -Dm755 tiv "$out/bin/tiv" | ||
18 | ''; | ||
19 | } | ||
diff --git a/flakes/mypackages/pkgs/tiv/tiv_builder.sh b/flakes/mypackages/pkgs/tiv/tiv_builder.sh new file mode 100644 index 0000000..ea16682 --- /dev/null +++ b/flakes/mypackages/pkgs/tiv/tiv_builder.sh | |||
@@ -0,0 +1,8 @@ | |||
1 | orig=$(declare -f preConfigure) | ||
2 | new_name="preConfigure2 ${orig#preConfigure}" | ||
3 | eval "$new_name" | ||
4 | |||
5 | preConfigure() { | ||
6 | preConfigure2 || true | ||
7 | } | ||
8 | |||
diff --git a/flakes/mypackages/pkgs/twins/default.nix b/flakes/mypackages/pkgs/twins/default.nix new file mode 100644 index 0000000..d0656bb --- /dev/null +++ b/flakes/mypackages/pkgs/twins/default.nix | |||
@@ -0,0 +1,15 @@ | |||
1 | { buildGoModule, fetchgit }: | ||
2 | |||
3 | buildGoModule { | ||
4 | pname = "twins"; | ||
5 | version = "master-cd85204"; | ||
6 | src = fetchgit { | ||
7 | url = "https://code.rocketnine.space/tslocum/twins.git"; | ||
8 | branchName = "master"; | ||
9 | rev = "cd8520468072c39914ce5c8f6900dd804848d7ad"; | ||
10 | sha256 = "14pxcq24g3cllq8w76dwn7mmcphdpw4f5d2nhwxh06hs8ci22fz3"; | ||
11 | }; | ||
12 | |||
13 | vendorSha256 = "1h8bk8v1p52b3qwk71mv8015p990jczq31p7b7bwypb4im5l5pd9"; | ||
14 | |||
15 | } | ||
diff --git a/flakes/mypackages/pkgs/umami/build-geo.patch b/flakes/mypackages/pkgs/umami/build-geo.patch new file mode 100644 index 0000000..7a4f075 --- /dev/null +++ b/flakes/mypackages/pkgs/umami/build-geo.patch | |||
@@ -0,0 +1,15 @@ | |||
1 | diff --git a/scripts/build-geo.js b/scripts/build-geo.js | ||
2 | index cc66f94..5464b54 100644 | ||
3 | --- a/scripts/build-geo.js | ||
4 | +++ b/scripts/build-geo.js | ||
5 | @@ -22,9 +22,7 @@ if (!fs.existsSync(dest)) { | ||
6 | |||
7 | const download = url => | ||
8 | new Promise(resolve => { | ||
9 | - https.get(url, res => { | ||
10 | - resolve(res.pipe(zlib.createGunzip({})).pipe(tar.t())); | ||
11 | - }); | ||
12 | + resolve(fs.createReadStream(url).pipe(zlib.createGunzip({})).pipe(tar.t())); | ||
13 | }); | ||
14 | |||
15 | download(url).then( | ||
diff --git a/flakes/mypackages/pkgs/umami/default.nix b/flakes/mypackages/pkgs/umami/default.nix new file mode 100644 index 0000000..5620f90 --- /dev/null +++ b/flakes/mypackages/pkgs/umami/default.nix | |||
@@ -0,0 +1,72 @@ | |||
1 | { nodejs, writeScriptBin, stdenv, yarn2nix-moretea, lib, fetchzip, fetchurl, zlib, openssl, fetchFromGitHub }: | ||
2 | let | ||
3 | version = "1.17.0"; | ||
4 | geolite2-country-url = "https://raw.githubusercontent.com/GitSquared/node-geolite2-redist/master/redist/GeoLite2-Country.tar.gz"; | ||
5 | geolite2-country = fetchurl { | ||
6 | url = geolite2-country-url; | ||
7 | sha256 = "0mdjvx1dfpkhg5kbp7jnrspzybaavhlxmna44l7rw05nrw5nv9zw"; | ||
8 | }; | ||
9 | toBin = sha256: name: fetchurl { | ||
10 | inherit name sha256; | ||
11 | url = "https://binaries.prisma.sh/all_commits/e421996c87d5f3c8f7eeadd502d4ad402c89464d/debian-openssl-1.1.x/${name}.gz"; | ||
12 | downloadToTemp = true; | ||
13 | executable = true; | ||
14 | postFetch = '' | ||
15 | cat "$downloadedFile" | gunzip > $out | ||
16 | patchelf --set-interpreter "${stdenv.cc.bintools.dynamicLinker}" \ | ||
17 | --set-rpath "${lib.makeLibraryPath [ openssl zlib ]}:$(patchelf --print-rpath $out)" \ | ||
18 | $out | ||
19 | chmod +x $out | ||
20 | ''; | ||
21 | }; | ||
22 | binaries = { | ||
23 | DATABASE_TYPE = "postgresql"; | ||
24 | PRISMA_QUERY_ENGINE_BINARY = toBin "1sy67xqvbmgzksw7bl31k74k41jr44n514idqbi70j2i6jxbrl4j" "query-engine"; | ||
25 | PRISMA_INTROSPECTION_ENGINE_BINARY = toBin "1kcszg11f71sg2y0ki7kg4prwlyb67bdjpjcky9kyjd8n9ilc8hj" "introspection-engine"; | ||
26 | PRISMA_MIGRATION_ENGINE_BINARY = toBin "1lmz0wwjaavap9k6z5ysqrhlgs3r3kc9jpri2lv0lq95qmwr5hzq" "migration-engine"; | ||
27 | PRISMA_FMT_BINARY = toBin "0241aszja3j1pp7pxs40irmfj06ilfjbzyqjzrzrb5azk7izwm73" "prisma-fmt"; | ||
28 | }; | ||
29 | src = fetchFromGitHub { | ||
30 | owner = "mikecao"; | ||
31 | repo = "umami"; | ||
32 | rev = "v${version}"; | ||
33 | sha256 = "15jfgf057lsl20vdw45v5cim5d2ilalzaaxn6h82pz4d2fj1w0nh"; | ||
34 | }; | ||
35 | node-modules = yarn2nix-moretea.mkYarnModules rec { | ||
36 | pname = "umami"; | ||
37 | inherit version; | ||
38 | name = "${pname}-${version}"; | ||
39 | yarnLock = "${src}/yarn.lock"; | ||
40 | packageJSON = "${src}/package.json"; | ||
41 | pkgConfig.npm-run-all.postInstall = '' | ||
42 | patchShebangs . | ||
43 | ''; | ||
44 | pkgConfig.rollup.postInstall = '' | ||
45 | patchShebangs . | ||
46 | ''; | ||
47 | }; | ||
48 | package = stdenv.mkDerivation (binaries // { | ||
49 | pname = "umami"; | ||
50 | inherit version src; | ||
51 | buildInputs = [ nodejs ]; | ||
52 | patches = [ ./build-geo.patch ]; | ||
53 | configurePhase = '' | ||
54 | cp -r ${node-modules}/node_modules . | ||
55 | chmod u+w -R node_modules | ||
56 | ''; | ||
57 | buildPhase = '' | ||
58 | sed -i -e "s@${geolite2-country-url}@${geolite2-country}@" scripts/build-geo.js | ||
59 | npm run build | ||
60 | ''; | ||
61 | installPhase = '' | ||
62 | cp -a . $out | ||
63 | ''; | ||
64 | }); | ||
65 | script = writeScriptBin "umami" ('' | ||
66 | #! ${stdenv.shell} | ||
67 | cd ${package} | ||
68 | '' + builtins.concatStringsSep "\n" (lib.mapAttrsToList (n: v: "export ${n}=${v}") binaries) + "\n" + '' | ||
69 | ${nodejs}/bin/npm run start-env | ||
70 | ''); | ||
71 | in | ||
72 | script // { nodeApp = package; } | ||
diff --git a/flakes/mypackages/pkgs/unicode/default.nix b/flakes/mypackages/pkgs/unicode/default.nix new file mode 100644 index 0000000..756e939 --- /dev/null +++ b/flakes/mypackages/pkgs/unicode/default.nix | |||
@@ -0,0 +1,48 @@ | |||
1 | { lib, fetchurl, runCommand, libarchive }: | ||
2 | with lib.attrsets; | ||
3 | let | ||
4 | version = "12.0"; | ||
5 | version-full = "${version}.0"; | ||
6 | files = { | ||
7 | emoji-data = fetchurl { | ||
8 | url = "http://www.unicode.org/Public/emoji/${version}/emoji-data.txt"; | ||
9 | sha256 = "03sf7h1d6kb9m5s02lif88jsi5kjszpkfvcymaqxj8ds70ar9pgv"; | ||
10 | }; | ||
11 | emoji-sequences = fetchurl { | ||
12 | url = "http://www.unicode.org/Public/emoji/${version}/emoji-sequences.txt"; | ||
13 | sha256 = "1hghki2rn3n7m4lwpwi2a5wrsf2nij4bxga9ldabx4g0g2k23svs"; | ||
14 | }; | ||
15 | emoji-test = fetchurl { | ||
16 | url = "http://www.unicode.org/Public/emoji/${version}/emoji-test.txt"; | ||
17 | sha256 = "1dqd0fh999mh6naj816ni113m9dimfy3ih9nffjq2lrv9mmlgdck"; | ||
18 | }; | ||
19 | emoji-variation-sequences = fetchurl { | ||
20 | url = "http://www.unicode.org/Public/emoji/${version}/emoji-variation-sequences.txt"; | ||
21 | sha256 = "1cccwx5bl79w4c19vi5dhjqxrph92s8hihp9y8s2cqvdzmgbln7a"; | ||
22 | }; | ||
23 | emoji-zwj-sequences = fetchurl { | ||
24 | url = "http://www.unicode.org/Public/emoji/${version}/emoji-zwj-sequences.txt"; | ||
25 | sha256 = "1l791nbijmmhwa7kmvfn8gp26ban512l6mgqpz1mnbq3xm19181n"; | ||
26 | }; | ||
27 | }; | ||
28 | zippedFiles = { | ||
29 | UCD = fetchurl { | ||
30 | url = "http://www.unicode.org/Public/zipped/${version-full}/UCD.zip"; | ||
31 | sha256 = "1ighy39cjkmqnv1797wrxjz76mv1fdw7zp5j04q55bkwxsdkvrmh"; | ||
32 | }; | ||
33 | Unihan = fetchurl { | ||
34 | url = "http://www.unicode.org/Public/zipped/${version-full}/Unihan.zip"; | ||
35 | sha256 = "1kfdhgg2gm52x3s07bijb5cxjy0jxwhd097k5lqhvzpznprm6ibf"; | ||
36 | }; | ||
37 | }; | ||
38 | in | ||
39 | runCommand "unicode" { | ||
40 | buildInputs = [ libarchive ]; | ||
41 | } '' | ||
42 | mkdir -p $out/share/unicode | ||
43 | ${builtins.concatStringsSep "\n" (mapAttrsToList (n: u: "install -Dm644 ${u} $out/share/unicode/emoji/${n}.txt") files)} | ||
44 | ${builtins.concatStringsSep "\n" (mapAttrsToList (n: u: '' | ||
45 | install -Dm644 ${u} $out/share/unicode/${n}.zip | ||
46 | bsdtar -C "$out/share/unicode" -x -f "$out/share/unicode/${n}.zip" | ||
47 | '') zippedFiles)} | ||
48 | '' | ||
diff --git a/flakes/mypackages/pkgs/upcmd/default.nix b/flakes/mypackages/pkgs/upcmd/default.nix new file mode 100644 index 0000000..614ae2b --- /dev/null +++ b/flakes/mypackages/pkgs/upcmd/default.nix | |||
@@ -0,0 +1,13 @@ | |||
1 | { buildGoModule, fetchFromGitHub }: | ||
2 | buildGoModule rec { | ||
3 | pname = "upcmd"; | ||
4 | version = "20220112"; | ||
5 | src = fetchFromGitHub { | ||
6 | owner = pname; | ||
7 | repo = "up"; | ||
8 | rev = "rolling-${version}"; | ||
9 | sha256 = "sha256-dCi8p0oqLjEhEazbT4sgH7Sku3f/N79VWj5CO7LbvVA="; | ||
10 | }; | ||
11 | doCheck = false; | ||
12 | vendorSha256 = "sha256-Ve+lEVrxv4rwymrqHSc1V4SL7BWP4wsIHF8ObBWyHE4="; | ||
13 | } | ||
diff --git a/flakes/mypackages/pkgs/webapps/adminer/default.nix b/flakes/mypackages/pkgs/webapps/adminer/default.nix new file mode 100644 index 0000000..cd01080 --- /dev/null +++ b/flakes/mypackages/pkgs/webapps/adminer/default.nix | |||
@@ -0,0 +1,14 @@ | |||
1 | { stdenv, fetchurl }: | ||
2 | stdenv.mkDerivation rec { | ||
3 | version = "4.8.2"; | ||
4 | pname = "adminer"; | ||
5 | src = fetchurl { | ||
6 | url = "https://github.com/adminerevo/adminerevo/releases/download/v${version}/${pname}-${version}.php"; | ||
7 | sha256 = "sha256-jXcnGLyNQZqJKS0Rs+UY1SxzknBEZwBhcbD0BmJVFKs="; | ||
8 | }; | ||
9 | phases = "installPhase"; | ||
10 | installPhase = '' | ||
11 | mkdir -p $out | ||
12 | cp $src $out/index.php | ||
13 | ''; | ||
14 | } | ||
diff --git a/flakes/mypackages/pkgs/webapps/apache-theme/default.nix b/flakes/mypackages/pkgs/webapps/apache-theme/default.nix new file mode 100644 index 0000000..4b5755a --- /dev/null +++ b/flakes/mypackages/pkgs/webapps/apache-theme/default.nix | |||
@@ -0,0 +1,88 @@ | |||
1 | { theme_root ? null }: | ||
2 | rec { | ||
3 | theme = ./theme; | ||
4 | apacheConfig = let | ||
5 | theme_root' = if isNull theme_root then theme else theme_root; | ||
6 | in '' | ||
7 | <Macro Apaxy %{folder} %{ignored}> | ||
8 | Alias /theme ${theme_root'} | ||
9 | <Directory ${theme_root'}> | ||
10 | Options -Indexes | ||
11 | AllowOverride None | ||
12 | Require all granted | ||
13 | </Directory> | ||
14 | |||
15 | # mod_autoindex | ||
16 | <Directory %{folder}> | ||
17 | Options Indexes | ||
18 | AllowOverride None | ||
19 | Require all granted | ||
20 | |||
21 | # Inspired from Apaxy by @adamwhitcroft | ||
22 | |||
23 | IndexOptions +Charset=UTF-8 +FancyIndexing +IgnoreCase +FoldersFirst +XHTML +HTMLTable +SuppressRules +SuppressDescription +NameWidth=* +IconsAreLinks +ShowForbidden | ||
24 | |||
25 | IndexHeadInsert "<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\" />" | ||
26 | |||
27 | IndexIgnoreReset ON | ||
28 | IndexIgnore /theme .htaccess %{ignored} | ||
29 | |||
30 | AddIcon /theme/icons/blank.png ^^BLANKICON^^ | ||
31 | AddIcon /theme/icons/folder.png ^^DIRECTORY^^ | ||
32 | AddIcon /theme/icons/folder-home.png .. | ||
33 | |||
34 | AddIconByType (TXT,/theme/icons/text.png) text/* | ||
35 | AddIconByType (IMG,/theme/icons/image.png) image/* | ||
36 | AddIconByType (SND,/theme/icons/audio.png) audio/* | ||
37 | AddIconByType (VID,/theme/icons/video.png) video/* | ||
38 | |||
39 | AddIcon /theme/icons/archive.png .7z .bz2 .cab .gz .tar | ||
40 | AddIcon /theme/icons/audio.png .aac .aif .aifc .aiff .ape .au .flac .iff .m4a .mid .mp3 .mpa .ra .wav .wma .f4a .f4b .oga .ogg .xm .it .s3m .mod | ||
41 | AddIcon /theme/icons/bin.png .bin .hex | ||
42 | AddIcon /theme/icons/bmp.png .bmp | ||
43 | AddIcon /theme/icons/c.png .c | ||
44 | AddIcon /theme/icons/calc.png .xlsx .xlsm .xltx .xltm .xlam .xlr .xls .csv | ||
45 | AddIcon /theme/icons/cd.png .iso | ||
46 | AddIcon /theme/icons/cpp.png .cpp | ||
47 | AddIcon /theme/icons/css.png .css .sass .scss | ||
48 | AddIcon /theme/icons/deb.png .deb | ||
49 | AddIcon /theme/icons/doc.png .doc .docx .docm .dot .dotx .dotm .log .msg .odt .pages .rtf .tex .wpd .wps | ||
50 | AddIcon /theme/icons/draw.png .svg .svgz | ||
51 | AddIcon /theme/icons/eps.png .ai .eps | ||
52 | AddIcon /theme/icons/exe.png .exe | ||
53 | AddIcon /theme/icons/gif.png .gif | ||
54 | AddIcon /theme/icons/h.png .h | ||
55 | AddIcon /theme/icons/html.png .html .xhtml .shtml .htm .URL .url | ||
56 | AddIcon /theme/icons/ico.png .ico | ||
57 | AddIcon /theme/icons/java.png .jar | ||
58 | AddIcon /theme/icons/jpg.png .jpg .jpeg .jpe | ||
59 | AddIcon /theme/icons/js.png .js .json | ||
60 | AddIcon /theme/icons/markdown.png .md | ||
61 | AddIcon /theme/icons/package.png .pkg .dmg | ||
62 | AddIcon /theme/icons/pdf.png .pdf | ||
63 | AddIcon /theme/icons/php.png .php .phtml | ||
64 | AddIcon /theme/icons/playlist.png .m3u .m3u8 .pls .pls8 | ||
65 | AddIcon /theme/icons/png.png .png | ||
66 | AddIcon /theme/icons/ps.png .ps | ||
67 | AddIcon /theme/icons/psd.png .psd | ||
68 | AddIcon /theme/icons/py.png .py | ||
69 | AddIcon /theme/icons/rar.png .rar | ||
70 | AddIcon /theme/icons/rb.png .rb | ||
71 | AddIcon /theme/icons/rpm.png .rpm | ||
72 | AddIcon /theme/icons/rss.png .rss | ||
73 | AddIcon /theme/icons/script.png .bat .cmd .sh | ||
74 | AddIcon /theme/icons/sql.png .sql | ||
75 | AddIcon /theme/icons/tiff.png .tiff .tif | ||
76 | AddIcon /theme/icons/text.png .txt .nfo | ||
77 | AddIcon /theme/icons/video.png .asf .asx .avi .flv .mkv .mov .mp4 .mpg .rm .srt .swf .vob .wmv .m4v .f4v .f4p .ogv | ||
78 | AddIcon /theme/icons/xml.png .xml | ||
79 | AddIcon /theme/icons/zip.png .zip | ||
80 | DefaultIcon /theme/icons/default.png | ||
81 | |||
82 | HeaderName /theme/header.html | ||
83 | ReadmeName /theme/footer.html | ||
84 | IndexStyleSheet /theme/style.css | ||
85 | </Directory> | ||
86 | </Macro> | ||
87 | ''; | ||
88 | } | ||
diff --git a/flakes/mypackages/pkgs/webapps/apache-theme/theme/.htaccess b/flakes/mypackages/pkgs/webapps/apache-theme/theme/.htaccess new file mode 100644 index 0000000..f9e5472 --- /dev/null +++ b/flakes/mypackages/pkgs/webapps/apache-theme/theme/.htaccess | |||
@@ -0,0 +1,9 @@ | |||
1 | # | ||
2 | # Apaxy by @adamwhitcroft | ||
3 | # | ||
4 | # For a full breakdown of the mod_autoindex module | ||
5 | # http://apache.org/docs/2.2/mod/mod_autoindex.html | ||
6 | # | ||
7 | |||
8 | # Don't index this folder | ||
9 | Options -Indexes | ||
diff --git a/flakes/mypackages/pkgs/webapps/apache-theme/theme/footer.html b/flakes/mypackages/pkgs/webapps/apache-theme/theme/footer.html new file mode 100644 index 0000000..57a2012 --- /dev/null +++ b/flakes/mypackages/pkgs/webapps/apache-theme/theme/footer.html | |||
@@ -0,0 +1,31 @@ | |||
1 | </div><!--/.wrapper--> | ||
2 | |||
3 | <script type="text/javascript"> | ||
4 | // grab the 2nd child and add the parent class. tr:nth-child(2) | ||
5 | document.getElementsByTagName('tr')[1].className = 'parent'; | ||
6 | // fix links when not adding a / at the end of the URI | ||
7 | var uri = window.location.pathname.substr(1); | ||
8 | if (uri.length > 0 && uri.substring(uri.length-1) != '/'){ | ||
9 | var indexes = document.getElementsByClassName('indexcolname'), | ||
10 | i = indexes.length; | ||
11 | while (i--){ | ||
12 | var a = indexes[i].getElementsByTagName('a')[0]; | ||
13 | a.href = '/' + uri + '/' + a.getAttribute('href',2); | ||
14 | } | ||
15 | } | ||
16 | |||
17 | function getAjax(url, success) { | ||
18 | var xhr = window.XMLHttpRequest ? new XMLHttpRequest() : new ActiveXObject('Microsoft.XMLHTTP'); | ||
19 | xhr.open('GET', url); | ||
20 | xhr.onreadystatechange = function() { | ||
21 | if (xhr.readyState>3 && xhr.status==200) | ||
22 | success(xhr.responseText); | ||
23 | }; | ||
24 | xhr.setRequestHeader('X-Requested-With', 'XMLHttpRequest'); | ||
25 | xhr.send(); | ||
26 | return xhr; | ||
27 | } | ||
28 | getAjax("title", function(data) { | ||
29 | document.getElementById('pagetitle').innerHTML = data; | ||
30 | }); | ||
31 | </script> | ||
diff --git a/flakes/mypackages/pkgs/webapps/apache-theme/theme/header.html b/flakes/mypackages/pkgs/webapps/apache-theme/theme/header.html new file mode 100644 index 0000000..cbded6a --- /dev/null +++ b/flakes/mypackages/pkgs/webapps/apache-theme/theme/header.html | |||
@@ -0,0 +1,3 @@ | |||
1 | <div class="wrapper"> | ||
2 | <h1 id="pagetitle"></h1> | ||
3 | <!-- we open the `wrapper` element here, but close it in the `footer.html` file --> | ||
diff --git a/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/archive.png b/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/archive.png new file mode 100644 index 0000000..99ae6fc --- /dev/null +++ b/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/archive.png | |||
Binary files differ | |||
diff --git a/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/audio.png b/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/audio.png new file mode 100644 index 0000000..a67618d --- /dev/null +++ b/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/audio.png | |||
Binary files differ | |||
diff --git a/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/authors.png b/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/authors.png new file mode 100644 index 0000000..78bf784 --- /dev/null +++ b/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/authors.png | |||
Binary files differ | |||
diff --git a/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/bin.png b/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/bin.png new file mode 100644 index 0000000..ec2220b --- /dev/null +++ b/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/bin.png | |||
Binary files differ | |||
diff --git a/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/blank.png b/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/blank.png new file mode 100644 index 0000000..bef1f60 --- /dev/null +++ b/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/blank.png | |||
Binary files differ | |||
diff --git a/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/bmp.png b/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/bmp.png new file mode 100644 index 0000000..c6f3044 --- /dev/null +++ b/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/bmp.png | |||
Binary files differ | |||
diff --git a/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/c.png b/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/c.png new file mode 100644 index 0000000..12adaa3 --- /dev/null +++ b/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/c.png | |||
Binary files differ | |||
diff --git a/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/calc.png b/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/calc.png new file mode 100644 index 0000000..a034367 --- /dev/null +++ b/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/calc.png | |||
Binary files differ | |||
diff --git a/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/cd.png b/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/cd.png new file mode 100644 index 0000000..3a3ffbb --- /dev/null +++ b/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/cd.png | |||
Binary files differ | |||
diff --git a/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/copying.png b/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/copying.png new file mode 100644 index 0000000..83fa06e --- /dev/null +++ b/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/copying.png | |||
Binary files differ | |||
diff --git a/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/cpp.png b/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/cpp.png new file mode 100644 index 0000000..47e8b1e --- /dev/null +++ b/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/cpp.png | |||
Binary files differ | |||
diff --git a/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/css.png b/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/css.png new file mode 100644 index 0000000..15f7695 --- /dev/null +++ b/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/css.png | |||
Binary files differ | |||
diff --git a/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/deb.png b/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/deb.png new file mode 100644 index 0000000..1b12d29 --- /dev/null +++ b/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/deb.png | |||
Binary files differ | |||
diff --git a/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/default.png b/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/default.png new file mode 100644 index 0000000..6997229 --- /dev/null +++ b/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/default.png | |||
Binary files differ | |||
diff --git a/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/diff.png b/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/diff.png new file mode 100644 index 0000000..5bef920 --- /dev/null +++ b/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/diff.png | |||
Binary files differ | |||
diff --git a/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/doc.png b/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/doc.png new file mode 100644 index 0000000..5732f9b --- /dev/null +++ b/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/doc.png | |||
Binary files differ | |||
diff --git a/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/draw.png b/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/draw.png new file mode 100644 index 0000000..8f1da5c --- /dev/null +++ b/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/draw.png | |||
Binary files differ | |||
diff --git a/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/eps.png b/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/eps.png new file mode 100644 index 0000000..93736bb --- /dev/null +++ b/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/eps.png | |||
Binary files differ | |||
diff --git a/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/exe.png b/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/exe.png new file mode 100644 index 0000000..31299b7 --- /dev/null +++ b/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/exe.png | |||
Binary files differ | |||
diff --git a/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/folder-home.png b/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/folder-home.png new file mode 100644 index 0000000..14fe20a --- /dev/null +++ b/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/folder-home.png | |||
Binary files differ | |||
diff --git a/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/folder-open.png b/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/folder-open.png new file mode 100644 index 0000000..2aa5cc7 --- /dev/null +++ b/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/folder-open.png | |||
Binary files differ | |||
diff --git a/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/folder-page.png b/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/folder-page.png new file mode 100644 index 0000000..604f9ad --- /dev/null +++ b/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/folder-page.png | |||
Binary files differ | |||
diff --git a/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/folder-parent-old.png b/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/folder-parent-old.png new file mode 100644 index 0000000..b82d7a9 --- /dev/null +++ b/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/folder-parent-old.png | |||
Binary files differ | |||
diff --git a/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/folder-parent.png b/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/folder-parent.png new file mode 100644 index 0000000..3c964f1 --- /dev/null +++ b/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/folder-parent.png | |||
Binary files differ | |||
diff --git a/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/folder.png b/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/folder.png new file mode 100644 index 0000000..7c613e0 --- /dev/null +++ b/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/folder.png | |||
Binary files differ | |||
diff --git a/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/gif.png b/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/gif.png new file mode 100644 index 0000000..01a2f2a --- /dev/null +++ b/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/gif.png | |||
Binary files differ | |||
diff --git a/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/gzip.png b/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/gzip.png new file mode 100644 index 0000000..99ae6fc --- /dev/null +++ b/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/gzip.png | |||
Binary files differ | |||
diff --git a/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/h.png b/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/h.png new file mode 100644 index 0000000..d3c7a9c --- /dev/null +++ b/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/h.png | |||
Binary files differ | |||
diff --git a/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/hpp.png b/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/hpp.png new file mode 100644 index 0000000..e5e52e2 --- /dev/null +++ b/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/hpp.png | |||
Binary files differ | |||
diff --git a/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/html.png b/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/html.png new file mode 100644 index 0000000..2f94a78 --- /dev/null +++ b/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/html.png | |||
Binary files differ | |||
diff --git a/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/ico.png b/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/ico.png new file mode 100644 index 0000000..82227e8 --- /dev/null +++ b/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/ico.png | |||
Binary files differ | |||
diff --git a/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/image.png b/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/image.png new file mode 100644 index 0000000..add1c59 --- /dev/null +++ b/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/image.png | |||
Binary files differ | |||
diff --git a/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/install.png b/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/install.png new file mode 100644 index 0000000..0a9c036 --- /dev/null +++ b/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/install.png | |||
Binary files differ | |||
diff --git a/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/java.png b/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/java.png new file mode 100644 index 0000000..63b8683 --- /dev/null +++ b/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/java.png | |||
Binary files differ | |||
diff --git a/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/jpg.png b/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/jpg.png new file mode 100644 index 0000000..a50c99b --- /dev/null +++ b/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/jpg.png | |||
Binary files differ | |||
diff --git a/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/js.png b/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/js.png new file mode 100644 index 0000000..af1a475 --- /dev/null +++ b/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/js.png | |||
Binary files differ | |||
diff --git a/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/json.png b/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/json.png new file mode 100644 index 0000000..af1a475 --- /dev/null +++ b/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/json.png | |||
Binary files differ | |||
diff --git a/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/log.png b/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/log.png new file mode 100644 index 0000000..02f1b9a --- /dev/null +++ b/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/log.png | |||
Binary files differ | |||
diff --git a/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/makefile.png b/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/makefile.png new file mode 100644 index 0000000..f99ea4c --- /dev/null +++ b/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/makefile.png | |||
Binary files differ | |||
diff --git a/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/markdown.png b/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/markdown.png new file mode 100644 index 0000000..25c8373 --- /dev/null +++ b/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/markdown.png | |||
Binary files differ | |||
diff --git a/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/package.png b/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/package.png new file mode 100644 index 0000000..fb1343e --- /dev/null +++ b/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/package.png | |||
Binary files differ | |||
diff --git a/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/pdf.png b/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/pdf.png new file mode 100644 index 0000000..7408d8d --- /dev/null +++ b/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/pdf.png | |||
Binary files differ | |||
diff --git a/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/php.png b/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/php.png new file mode 100644 index 0000000..22c4df6 --- /dev/null +++ b/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/php.png | |||
Binary files differ | |||
diff --git a/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/playlist.png b/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/playlist.png new file mode 100644 index 0000000..8d6f281 --- /dev/null +++ b/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/playlist.png | |||
Binary files differ | |||
diff --git a/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/png.png b/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/png.png new file mode 100644 index 0000000..1fe1ec4 --- /dev/null +++ b/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/png.png | |||
Binary files differ | |||
diff --git a/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/pres.png b/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/pres.png new file mode 100644 index 0000000..db195e9 --- /dev/null +++ b/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/pres.png | |||
Binary files differ | |||
diff --git a/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/ps.png b/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/ps.png new file mode 100644 index 0000000..05f3ed9 --- /dev/null +++ b/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/ps.png | |||
Binary files differ | |||
diff --git a/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/psd.png b/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/psd.png new file mode 100644 index 0000000..62718ee --- /dev/null +++ b/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/psd.png | |||
Binary files differ | |||
diff --git a/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/py.png b/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/py.png new file mode 100644 index 0000000..0aaffd1 --- /dev/null +++ b/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/py.png | |||
Binary files differ | |||
diff --git a/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/rar.png b/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/rar.png new file mode 100644 index 0000000..8a0ff54 --- /dev/null +++ b/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/rar.png | |||
Binary files differ | |||
diff --git a/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/rb.png b/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/rb.png new file mode 100644 index 0000000..c7db42f --- /dev/null +++ b/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/rb.png | |||
Binary files differ | |||
diff --git a/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/readme.png b/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/readme.png new file mode 100644 index 0000000..3ae48cd --- /dev/null +++ b/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/readme.png | |||
Binary files differ | |||
diff --git a/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/rpm.png b/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/rpm.png new file mode 100644 index 0000000..64699ac --- /dev/null +++ b/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/rpm.png | |||
Binary files differ | |||
diff --git a/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/rss.png b/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/rss.png new file mode 100644 index 0000000..a1130a1 --- /dev/null +++ b/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/rss.png | |||
Binary files differ | |||
diff --git a/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/rtf.png b/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/rtf.png new file mode 100644 index 0000000..25c8373 --- /dev/null +++ b/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/rtf.png | |||
Binary files differ | |||
diff --git a/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/script.png b/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/script.png new file mode 100644 index 0000000..1099b5f --- /dev/null +++ b/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/script.png | |||
Binary files differ | |||
diff --git a/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/source.png b/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/source.png new file mode 100644 index 0000000..5bef920 --- /dev/null +++ b/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/source.png | |||
Binary files differ | |||
diff --git a/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/sql.png b/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/sql.png new file mode 100644 index 0000000..b3b1467 --- /dev/null +++ b/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/sql.png | |||
Binary files differ | |||
diff --git a/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/tar.png b/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/tar.png new file mode 100644 index 0000000..bab3b6a --- /dev/null +++ b/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/tar.png | |||
Binary files differ | |||
diff --git a/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/tex.png b/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/tex.png new file mode 100644 index 0000000..1487b25 --- /dev/null +++ b/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/tex.png | |||
Binary files differ | |||
diff --git a/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/text.png b/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/text.png new file mode 100644 index 0000000..1d48677 --- /dev/null +++ b/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/text.png | |||
Binary files differ | |||
diff --git a/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/tiff.png b/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/tiff.png new file mode 100644 index 0000000..819e64c --- /dev/null +++ b/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/tiff.png | |||
Binary files differ | |||
diff --git a/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/unknown.png b/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/unknown.png new file mode 100644 index 0000000..b1dcc3f --- /dev/null +++ b/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/unknown.png | |||
Binary files differ | |||
diff --git a/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/vcal.png b/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/vcal.png new file mode 100644 index 0000000..3d81455 --- /dev/null +++ b/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/vcal.png | |||
Binary files differ | |||
diff --git a/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/video.png b/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/video.png new file mode 100644 index 0000000..f92f7e1 --- /dev/null +++ b/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/video.png | |||
Binary files differ | |||
diff --git a/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/xml.png b/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/xml.png new file mode 100644 index 0000000..83a83df --- /dev/null +++ b/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/xml.png | |||
Binary files differ | |||
diff --git a/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/zip.png b/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/zip.png new file mode 100644 index 0000000..cc196c1 --- /dev/null +++ b/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/zip.png | |||
Binary files differ | |||
diff --git a/flakes/mypackages/pkgs/webapps/apache-theme/theme/style.css b/flakes/mypackages/pkgs/webapps/apache-theme/theme/style.css new file mode 100644 index 0000000..e46139f --- /dev/null +++ b/flakes/mypackages/pkgs/webapps/apache-theme/theme/style.css | |||
@@ -0,0 +1,160 @@ | |||
1 | /*------------------------------------*\ | ||
2 | Apaxy | ||
3 | by @adamwhitcroft | ||
4 | |||
5 | Theme name: Apaxy | ||
6 | Theme author: @adamwhitcroft | ||
7 | \*------------------------------------*/ | ||
8 | @import url('//assets.immae.eu/fonts/OpenSans/font.css'); | ||
9 | /* Have to use @import for the font, as you can only specify a single stylesheet */ | ||
10 | * { | ||
11 | margin:0; | ||
12 | padding:0; | ||
13 | -webkit-box-sizing:border-box; | ||
14 | -moz-box-sizing:border-box; | ||
15 | box-sizing: border-box; | ||
16 | } | ||
17 | |||
18 | html { | ||
19 | min-height:100%; | ||
20 | border-top:10px solid #ECEEF1; | ||
21 | border-bottom:10px solid #ECEEF1; | ||
22 | color:#61666c; | ||
23 | font-weight:400; | ||
24 | font-size:1em; | ||
25 | font-family:'Open Sans', sans-serif; | ||
26 | line-height:2em; | ||
27 | } | ||
28 | body { | ||
29 | padding:20px; | ||
30 | -webkit-backface-visibility:hidden; | ||
31 | } | ||
32 | code { | ||
33 | font-family:consolas,monospace; | ||
34 | } | ||
35 | a { | ||
36 | color:#61666c; | ||
37 | text-decoration:none; | ||
38 | } | ||
39 | a, img { | ||
40 | border:none; | ||
41 | outline:none | ||
42 | } | ||
43 | a:hover { | ||
44 | color:#2a2a2a; | ||
45 | } | ||
46 | /*------------------------------------*\ | ||
47 | Wrapper | ||
48 | \*------------------------------------*/ | ||
49 | .wrapper { | ||
50 | margin:0 auto; | ||
51 | padding-top:20px; | ||
52 | max-width:80%; | ||
53 | } | ||
54 | /*------------------------------------*\ | ||
55 | Demo block | ||
56 | \*------------------------------------*/ | ||
57 | .block { | ||
58 | font-size:.875em; | ||
59 | margin:20px 0; | ||
60 | padding:20px; | ||
61 | color:#9099A3; | ||
62 | } | ||
63 | /*------------------------------------*\ | ||
64 | Table (directory listing) | ||
65 | \*------------------------------------*/ | ||
66 | table { | ||
67 | width:100%; | ||
68 | border-collapse:collapse; | ||
69 | font-size:.875em; | ||
70 | } | ||
71 | tr { | ||
72 | outline:0; | ||
73 | border:0; | ||
74 | } | ||
75 | tr:hover td { | ||
76 | background:#f6f6f6; | ||
77 | } | ||
78 | th { | ||
79 | text-align:left; | ||
80 | font-size:.75em; | ||
81 | padding-right:20px; | ||
82 | } | ||
83 | /* 2nd Column: Filename */ | ||
84 | th + th { | ||
85 | width:65%; | ||
86 | } | ||
87 | /* 3rd Column: Last Modified */ | ||
88 | th + th + th { | ||
89 | } | ||
90 | /* 4th Column: Size */ | ||
91 | th + th + th + th { | ||
92 | width:5%; | ||
93 | } | ||
94 | tr td:first-of-type { | ||
95 | padding-left:10px; | ||
96 | padding-right:10px; | ||
97 | } | ||
98 | td { | ||
99 | padding:5px 0; | ||
100 | outline:0; | ||
101 | border:0; | ||
102 | border-bottom:1px solid #edf1f5; | ||
103 | vertical-align:middle; | ||
104 | text-align:left; | ||
105 | -webkit-transition:background 300ms ease; | ||
106 | -moz-transition:background 300ms ease; | ||
107 | -ms-transition:background 300ms ease; | ||
108 | -o-transition:background 300ms ease; | ||
109 | transition:background 300ms ease; | ||
110 | } | ||
111 | td a{ | ||
112 | display: block; | ||
113 | } | ||
114 | tr.parent a[href^="/"] { | ||
115 | color:#9099A3; | ||
116 | } | ||
117 | .parent a[href^="/"]:hover { | ||
118 | color:#2281d0; | ||
119 | } | ||
120 | /*------------------------------------*\ | ||
121 | Footer | ||
122 | \*------------------------------------*/ | ||
123 | .footer { | ||
124 | text-align:center; | ||
125 | font-size:.75em; | ||
126 | } | ||
127 | |||
128 | h1#pagetitle { | ||
129 | text-align: center; | ||
130 | } | ||
131 | tr.parent a[href="/"]{ | ||
132 | display: none; | ||
133 | } | ||
134 | |||
135 | tr.indexhead { | ||
136 | visibility: hidden; | ||
137 | } | ||
138 | |||
139 | th.indexcollastmod, td.indexcollastmod, th.indexcolsize, td.indexcolsize { | ||
140 | visibility: hidden; | ||
141 | } | ||
142 | |||
143 | .instructions a { | ||
144 | text-decoration: underline; | ||
145 | } | ||
146 | |||
147 | .instructions h2 { | ||
148 | margin-top: 10px; | ||
149 | } | ||
150 | .instructions em.important:before { | ||
151 | content: "⚠ Important ⚠ "; | ||
152 | color: red; | ||
153 | } | ||
154 | .instructions pre { | ||
155 | width: 50em; | ||
156 | padding: 10px 15px; | ||
157 | display: table; | ||
158 | border: 1px inset black; | ||
159 | line-height: 1em; | ||
160 | } | ||
diff --git a/flakes/mypackages/pkgs/webapps/awl/default.nix b/flakes/mypackages/pkgs/webapps/awl/default.nix new file mode 100644 index 0000000..dc78339 --- /dev/null +++ b/flakes/mypackages/pkgs/webapps/awl/default.nix | |||
@@ -0,0 +1,16 @@ | |||
1 | { stdenv, fetchurl }: | ||
2 | stdenv.mkDerivation rec { | ||
3 | version = "0.62"; | ||
4 | name = "awl-${version}"; | ||
5 | src = fetchurl { | ||
6 | url = "https://www.davical.org/downloads/awl_${version}.orig.tar.xz"; | ||
7 | sha256 = "0x9pr8sq3bicnvzsxfwdsqxnvfygn6gy5pawmm6i6fyb1p5h5izz"; | ||
8 | }; | ||
9 | unpackCmd = '' | ||
10 | tar --one-top-level -xf $curSrc | ||
11 | ''; | ||
12 | installPhase = '' | ||
13 | mkdir -p $out | ||
14 | cp -ra dba docs inc scripts tests $out | ||
15 | ''; | ||
16 | } | ||
diff --git a/flakes/mypackages/pkgs/webapps/davical/default.nix b/flakes/mypackages/pkgs/webapps/davical/default.nix new file mode 100644 index 0000000..045a93b --- /dev/null +++ b/flakes/mypackages/pkgs/webapps/davical/default.nix | |||
@@ -0,0 +1,23 @@ | |||
1 | { davical_config ? "/etc/davical/config.php", stdenv, fetchurl, gettext }: | ||
2 | stdenv.mkDerivation rec { | ||
3 | version = "1.1.10"; | ||
4 | name = "davical-${version}"; | ||
5 | src = fetchurl { | ||
6 | url = "https://www.davical.org/downloads/davical_${version}.orig.tar.xz"; | ||
7 | sha256 = "1d8zw558qrz2rybdv853ai04ar7v5a2dsypnffapx9ihgnrv4hq3"; | ||
8 | }; | ||
9 | unpackCmd = '' | ||
10 | tar --one-top-level -xf $curSrc | ||
11 | ''; | ||
12 | makeFlags = "all"; | ||
13 | patchPhase = '' | ||
14 | # https://gitlab.com/davical-project/davical/-/issues/229 | ||
15 | sed -i -e 's/"newpass1"/"newpass1", "password"/g' htdocs/always.php | ||
16 | ''; | ||
17 | installPhase = '' | ||
18 | mkdir -p $out | ||
19 | cp -ra config dba docs htdocs inc locale po scripts testing zonedb $out | ||
20 | ln -s ${davical_config} $out/config/config.php | ||
21 | ''; | ||
22 | buildInputs = [ gettext ]; | ||
23 | } | ||
diff --git a/flakes/mypackages/pkgs/webapps/default.nix b/flakes/mypackages/pkgs/webapps/default.nix new file mode 100644 index 0000000..18a724d --- /dev/null +++ b/flakes/mypackages/pkgs/webapps/default.nix | |||
@@ -0,0 +1,24 @@ | |||
1 | { callPackage, mylibs, composerEnv, sources }: | ||
2 | rec { | ||
3 | adminer = callPackage ./adminer {}; | ||
4 | apache-theme = import ./apache-theme; | ||
5 | awl = callPackage ./awl {}; | ||
6 | davical = callPackage ./davical {}; | ||
7 | dokuwiki = callPackage ./dokuwiki {}; | ||
8 | infcloud = callPackage ./infcloud {}; | ||
9 | mantisbt_2 = callPackage ./mantisbt_2 {}; | ||
10 | nextcloud_25 = callPackage ./nextcloud { nextcloudVersion = 25; }; | ||
11 | nextcloud_26 = callPackage ./nextcloud { nextcloudVersion = 26; }; | ||
12 | nextcloud_27 = callPackage ./nextcloud { nextcloudVersion = 27; }; | ||
13 | nextcloud_25-all = nextcloud_25.withApps (a: builtins.attrValues nextcloud_25.allSupportedApps); | ||
14 | nextcloud_26-all = nextcloud_26.withApps (a: builtins.attrValues nextcloud_26.allSupportedApps); | ||
15 | nextcloud_27-all = nextcloud_27.withApps (a: builtins.attrValues nextcloud_27.allSupportedApps); | ||
16 | phpbb = callPackage ./phpbb {}; | ||
17 | phpldapadmin = callPackage ./phpldapadmin {}; | ||
18 | rompr = callPackage ./rompr {}; | ||
19 | roundcubemail = callPackage ./roundcubemail {}; | ||
20 | spip = callPackage ./spip {}; | ||
21 | ttrss = callPackage ./ttrss { inherit sources; }; | ||
22 | wallabag = callPackage ./wallabag { inherit composerEnv; }; | ||
23 | yourls = callPackage ./yourls {}; | ||
24 | } | ||
diff --git a/flakes/mypackages/pkgs/webapps/dokuwiki/default.nix b/flakes/mypackages/pkgs/webapps/dokuwiki/default.nix new file mode 100644 index 0000000..db8be30 --- /dev/null +++ b/flakes/mypackages/pkgs/webapps/dokuwiki/default.nix | |||
@@ -0,0 +1,54 @@ | |||
1 | { varDir ? "/var/lib/dokuwiki", preload ? "", lib, callPackage, stdenv, fetchFromGitHub, writeText }: | ||
2 | let | ||
3 | preloadFile = plugins: let preloads = [preload] | ||
4 | ++ builtins.concatMap (p: lib.optional (lib.hasAttr "preload" p) (p.preload p)) plugins; | ||
5 | in writeText "preload.php" ('' | ||
6 | <?php | ||
7 | '' + builtins.concatStringsSep "\n" preloads | ||
8 | ); | ||
9 | pluginNames = [ "farmer" "todo" ]; | ||
10 | allPlugins = lib.attrsets.genAttrs pluginNames | ||
11 | (name: callPackage (./plugins + "/${name}.nix") {}); | ||
12 | toPassthru = pkg: plugins: { | ||
13 | inherit plugins varDir allPlugins; | ||
14 | withPlugins = withPlugins pkg; | ||
15 | }; | ||
16 | withPlugins = pkg: toPlugins: | ||
17 | let | ||
18 | plugins = toPlugins allPlugins; | ||
19 | toInstallPlugin = n: | ||
20 | "ln -sf ${n} $out/lib/plugins/${n.pluginName}"; | ||
21 | newDokuwiki = pkg.overrideAttrs(old: { | ||
22 | installPhase = old.installPhase + "\n" + builtins.concatStringsSep "\n" (map toInstallPlugin plugins); | ||
23 | installPreloadPhase = '' | ||
24 | cp ${preloadFile (pkg.plugins ++ plugins)} $out/inc/preload.php | ||
25 | ''; | ||
26 | passthru = toPassthru newDokuwiki (pkg.plugins ++ plugins); | ||
27 | }); | ||
28 | in newDokuwiki; | ||
29 | package = stdenv.mkDerivation (rec { | ||
30 | pname = "dokuwiki"; | ||
31 | version = "release_stable_2018-04-22b"; | ||
32 | src = fetchFromGitHub { | ||
33 | owner = "splitbrain"; | ||
34 | repo = "dokuwiki"; | ||
35 | rev = "871dae1320b40211626c7ec665f5e6d5290aca95"; | ||
36 | sha256 = "1syvd5dvv3v75swf8ig7dxqs0g5xikb0f6vlcy7g4c4ghldkw7nz"; | ||
37 | fetchSubmodules = true; | ||
38 | }; | ||
39 | phases = "unpackPhase buildPhase installPhase installPreloadPhase fixupPhase"; | ||
40 | buildPhase = '' | ||
41 | mv conf conf.dist | ||
42 | mv data data.dist | ||
43 | ''; | ||
44 | installPhase = '' | ||
45 | cp -a . $out | ||
46 | ln -sf ${varDir}/{conf,data} $out/ | ||
47 | ln -sf ${varDir}/conf/.htaccess $out/ | ||
48 | ''; | ||
49 | installPreloadPhase = '' | ||
50 | cp ${preloadFile []} $out/inc/preload.php | ||
51 | ''; | ||
52 | passthru = toPassthru package []; | ||
53 | }); | ||
54 | in package | ||
diff --git a/flakes/mypackages/pkgs/webapps/dokuwiki/plugins/farmer.nix b/flakes/mypackages/pkgs/webapps/dokuwiki/plugins/farmer.nix new file mode 100644 index 0000000..b737b2d --- /dev/null +++ b/flakes/mypackages/pkgs/webapps/dokuwiki/plugins/farmer.nix | |||
@@ -0,0 +1,25 @@ | |||
1 | { stdenv, fetchFromGitHub }: | ||
2 | stdenv.mkDerivation rec { | ||
3 | version = "72b8577-master"; | ||
4 | name = "dokuwiki-plugin-farmer-${version}"; | ||
5 | src = fetchFromGitHub { | ||
6 | owner = "cosmocode"; | ||
7 | repo = "dokuwiki-plugin-farmer"; | ||
8 | rev = "72b857734fd164bf79cc6e17abe56491d55c1072"; | ||
9 | sha256 = "1c9vc1z7yvzjz4p054kshb9yd00a4bb52s43k9zav0lvwvjij9l0"; | ||
10 | }; | ||
11 | installPhase = '' | ||
12 | mkdir $out | ||
13 | cp -a * $out | ||
14 | ''; | ||
15 | passthru = { | ||
16 | pluginName = "farmer"; | ||
17 | preload = out: '' | ||
18 | # farm setup by farmer plugin | ||
19 | if (file_exists('${out}/DokuWikiFarmCore.php')) | ||
20 | { | ||
21 | include('${out}/DokuWikiFarmCore.php'); | ||
22 | } | ||
23 | ''; | ||
24 | }; | ||
25 | } | ||
diff --git a/flakes/mypackages/pkgs/webapps/dokuwiki/plugins/todo.nix b/flakes/mypackages/pkgs/webapps/dokuwiki/plugins/todo.nix new file mode 100644 index 0000000..a3e03fb --- /dev/null +++ b/flakes/mypackages/pkgs/webapps/dokuwiki/plugins/todo.nix | |||
@@ -0,0 +1,18 @@ | |||
1 | { stdenv, fetchFromGitHub }: | ||
2 | stdenv.mkDerivation rec { | ||
3 | version = "49068ec-master"; | ||
4 | name = "dokuwiki-plugin-todo-${version}"; | ||
5 | src = fetchFromGitHub { | ||
6 | owner = "leibler"; | ||
7 | repo = "dokuwiki-plugin-todo"; | ||
8 | rev = "49068ecea455ea997d1e4a7adab171ccaf8228e8"; | ||
9 | sha256 = "1jaq623kp14fyhamsas5mk9ryqlk4q6x6znijrb5xhcdg3r83gmq"; | ||
10 | }; | ||
11 | installPhase = '' | ||
12 | mkdir $out | ||
13 | cp -a * $out | ||
14 | ''; | ||
15 | passthru = { | ||
16 | pluginName = "todo"; | ||
17 | }; | ||
18 | } | ||
diff --git a/flakes/mypackages/pkgs/webapps/infcloud/default.nix b/flakes/mypackages/pkgs/webapps/infcloud/default.nix new file mode 100644 index 0000000..45354fa --- /dev/null +++ b/flakes/mypackages/pkgs/webapps/infcloud/default.nix | |||
@@ -0,0 +1,19 @@ | |||
1 | { infcloud_config ? ./infcloud_config.js, stdenv, fetchzip, ed }: | ||
2 | stdenv.mkDerivation rec { | ||
3 | version = "0.13.2rc1"; | ||
4 | name = "InfCloud-${version}"; | ||
5 | src = fetchzip { | ||
6 | url = "https://www.inf-it.com/InfCloud_${version}.zip"; | ||
7 | sha256 = "1qgw6l7ccfkyzcw9dxcjwhxw9q27c0x9w584amc579mmrn9ppz3n"; | ||
8 | }; | ||
9 | buildPhase = '' | ||
10 | patchShebangs . | ||
11 | ./cache_update.sh | ||
12 | rm config.js | ||
13 | ''; | ||
14 | installPhase = '' | ||
15 | cp -a . $out | ||
16 | ln -s ${infcloud_config} $out/config.js | ||
17 | ''; | ||
18 | buildInputs = [ ed ]; | ||
19 | } | ||
diff --git a/flakes/mypackages/pkgs/webapps/infcloud/infcloud_config.js b/flakes/mypackages/pkgs/webapps/infcloud/infcloud_config.js new file mode 100644 index 0000000..ba73860 --- /dev/null +++ b/flakes/mypackages/pkgs/webapps/infcloud/infcloud_config.js | |||
@@ -0,0 +1,1446 @@ | |||
1 | /* | ||
2 | InfCloud - the open source CalDAV/CardDAV Web Client | ||
3 | Copyright (C) 2011-2015 | ||
4 | Jan Mate <jan.mate@inf-it.com> | ||
5 | Andrej Lezo <andrej.lezo@inf-it.com> | ||
6 | Matej Mihalik <matej.mihalik@inf-it.com> | ||
7 | |||
8 | This program is free software: you can redistribute it and/or modify | ||
9 | it under the terms of the GNU Affero General Public License as | ||
10 | published by the Free Software Foundation, either version 3 of the | ||
11 | License, or (at your option) any later version. | ||
12 | |||
13 | This program is distributed in the hope that it will be useful, | ||
14 | but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
15 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
16 | GNU Affero General Public License for more details. | ||
17 | |||
18 | You should have received a copy of the GNU Affero General Public License | ||
19 | along with this program. If not, see <http://www.gnu.org/licenses/>. | ||
20 | */ | ||
21 | |||
22 | |||
23 | // NOTE: see readme.txt before you start to configure this client! | ||
24 | |||
25 | |||
26 | // NOTE: do not forget to execute the cache_update.sh script every time you | ||
27 | // update this configuration file or any other files (otherwise your browser | ||
28 | // will use the previous version of files stored in HTML5 cache). Alternatively | ||
29 | // you can update the cache.manifest manually - edit the second line beginning | ||
30 | // with "#V 20" to anything else (this file simple needs "some" change) | ||
31 | |||
32 | |||
33 | // Supported setup types (use ONE of them): | ||
34 | // a.) globalAccountSettings => username and password is hardcoded | ||
35 | // in config.js, automatic login without the login screen | ||
36 | // - advantages: fast login process = no username/password is required | ||
37 | // - disadvantages: username/password is visible in your config.js, so | ||
38 | // this type of setup is recommended ONLY for intranet/home users | ||
39 | // b.) globalNetworkCheckSettings => standard setup with login screen | ||
40 | // - advantages: username/password is required (no visible | ||
41 | // username/password in config.js) | ||
42 | // - disadvantages: if a user enters wrong username/password then | ||
43 | // the browser will show authentication popup window (it is NOT | ||
44 | // possible to disable it in JavaScript; see the next option) | ||
45 | // c.) globalNetworkAccountSettings => advanced setup with login screen | ||
46 | // - advantages: no authentication popup if you enter wrong username/ | ||
47 | // password, dynamic XML configuration generator (you can generate | ||
48 | // different configurations for your users /by modifying the "auth" | ||
49 | // module configuration or the PHP code itself/) | ||
50 | // - disadvantages: requires PHP >= 5.3 and additional configuration, | ||
51 | // only basic http authentication is supported => always use https! | ||
52 | // | ||
53 | // | ||
54 | // What is a "principal URL"? => Check you server documentation! | ||
55 | // - "principal URL" is NOT "collection URL" | ||
56 | // - this client automatically detects collections for "principal URL" | ||
57 | // - PROPER "principal URL" looks like: | ||
58 | // https://server.com:8443/principals/users/USER/ | ||
59 | // https://server.com:8443/caldav.php/USER/ | ||
60 | // - INVALID principal URL looks like: | ||
61 | // https://server.com:8443/principals/users/USER/collection/ | ||
62 | // => this is a collection URL | ||
63 | // https://server.com:8443/caldav.php/USER/collection/ | ||
64 | // => this is a collection URL | ||
65 | // https://server.com:8443/principals/users/USER | ||
66 | // => missing trailing '/' | ||
67 | // https://server.com:8443/caldav.php/USER | ||
68 | // => missing trailing '/' | ||
69 | // /caldav.php/USER/ | ||
70 | // => relative URL instead of full URL | ||
71 | // | ||
72 | // | ||
73 | // List of properties used in globalAccountSettings, globalNetworkCheckSettings | ||
74 | // and globalNetworkAccountSettings variables (+ in the "auth" module): | ||
75 | // - href | ||
76 | // Depending on the setup type set the value to: | ||
77 | // a.) globalAccountSettings: full "principal URL" | ||
78 | // b.) globalNetworkCheckSettings: "principal URL" WITHOUT the "USER/" part | ||
79 | // c.) globalNetworkAccountSettings: "full URL" to the "auth" directory | ||
80 | // This property is supported in: | ||
81 | // globalAccountSettings | ||
82 | // globalNetworkCheckSettings | ||
83 | // globalNetworkAccountSettings | ||
84 | // - userAuth | ||
85 | // - userName | ||
86 | // Set the username you want to login. | ||
87 | // - userPassword | ||
88 | // Set the password for the given username. | ||
89 | // This property is supported in: | ||
90 | // globalAccountSettings | ||
91 | // - timeOut | ||
92 | // This option sets the timeout for jQuery .ajax call (in miliseconds). | ||
93 | // Example: | ||
94 | // timeOut: 90000 | ||
95 | // This property is supported in: | ||
96 | // globalAccountSettings | ||
97 | // globalNetworkCheckSettings | ||
98 | // globalNetworkAccountSettings | ||
99 | // - lockTimeOut | ||
100 | // NOTE: used only if server supports LOCK requests | ||
101 | // This option sets the LOCK timeout value if resource locking | ||
102 | // is used (in miliseconds). | ||
103 | // Example: | ||
104 | // lockTimeOut: 10000 | ||
105 | // This property is supported in: | ||
106 | // globalAccountSettings | ||
107 | // globalNetworkCheckSettings | ||
108 | // globalNetworkAccountSettings (available in auth module only) | ||
109 | // - checkContentType | ||
110 | // This option enables a content-type checking for server response. | ||
111 | // If enabled then only objects with proper content-type are inserted | ||
112 | // into the interface. | ||
113 | // If you cannot see data in the interface you may try to disable it (useful | ||
114 | // if your server returns wrong value in "propstat/prop/getcontenttype"). | ||
115 | // If undefined then content-type checking is enabled. | ||
116 | // Examples: | ||
117 | // checkContentType: true | ||
118 | // checkContentType: false | ||
119 | // This property is supported in: | ||
120 | // globalAccountSettings | ||
121 | // globalNetworkCheckSettings | ||
122 | // globalNetworkAccountSettings (available in auth module only) | ||
123 | // - settingsAccount | ||
124 | // NOTE: server support for custom DAV properties is REQUIRED! | ||
125 | // This option sets the account where the client properties such as: | ||
126 | // loaded collections, enabled collections, ... are saved during | ||
127 | // the logout and resource/collection synchronisation | ||
128 | // NOTE: set it to true ONLY for ONE account! | ||
129 | // Examples: | ||
130 | // settingsAccount: true | ||
131 | // settingsAccount: false | ||
132 | // This property is supported in: | ||
133 | // globalAccountSettings | ||
134 | // globalNetworkCheckSettings | ||
135 | // globalNetworkAccountSettings (available in auth module only) | ||
136 | // - delegation | ||
137 | // NOTE: server support for this functionality is REQUIRED! | ||
138 | // This option allows you to load delegated (shared) collections. | ||
139 | // If set to true (default) then delegation functionality is enabled, | ||
140 | // and the interface allows you to load delegated collections. | ||
141 | // If false then delegation functionality is completely disabled. | ||
142 | // Examples: | ||
143 | // delegation: true | ||
144 | // delegation: false | ||
145 | // This property is supported in: | ||
146 | // globalAccountSettings | ||
147 | // globalNetworkCheckSettings | ||
148 | // globalNetworkAccountSettings (available in auth module only) | ||
149 | // - additionalResources | ||
150 | // This options sets the list of additional resources (e.g. shared resources | ||
151 | // accessible by all users). If the server supports delegation (see | ||
152 | // the delegation option above) there is no reason to use this option! | ||
153 | // Supported values: | ||
154 | // - array of URL encoded resource names (not collections), such as: | ||
155 | // 'company' | ||
156 | // 'shared_resource' | ||
157 | // If empty (default) or undefined then shared resources are not loaded | ||
158 | // using this option, but may be loaded using the delegation option. | ||
159 | // Examples: | ||
160 | // additionalResources=[] | ||
161 | // additionalResources=['public', 'shared_resource'] | ||
162 | // This property is supported in: | ||
163 | // globalNetworkCheckSettings | ||
164 | // - hrefLabel | ||
165 | // This option sets the server name in the resource header (useful if | ||
166 | // you want to see custom resource header above the collections). | ||
167 | // You can use the following variables in the value: | ||
168 | // %H = full hostname (including the port number) | ||
169 | // %h = full hostname (without the port number) | ||
170 | // %D = full domain name | ||
171 | // %d = only the first and second level domain | ||
172 | // %P = principal name | ||
173 | // %p = principal name without the @domain.com part (if present) | ||
174 | // %U = logged user name | ||
175 | // %u = logged user name without the @domain.com part (if present) | ||
176 | // If undefined, empty or or null then '%d/%p [%u]' is used. | ||
177 | // Examples: | ||
178 | // hrefLabel: '%d/%p [%u]' | ||
179 | // hrefLabel: '%D/%u' | ||
180 | // This property is supported in: | ||
181 | // globalAccountSettings | ||
182 | // globalNetworkCheckSettings | ||
183 | // globalNetworkAccountSettings (available in auth module only) | ||
184 | // - forceReadOnly | ||
185 | // This option sets the list of collections as "read-only". | ||
186 | // Supported values: | ||
187 | // - true | ||
188 | // all collections will be "read-only" | ||
189 | // - array of URL encoded | ||
190 | // - collections, such as: | ||
191 | // '/caldav.php/user/calendar/' | ||
192 | // '/caldav.php/user%40domain.com/calendar/' | ||
193 | // - regexes, such as: | ||
194 | // new RegExp('^/caldav.php/user/calendar[0-9]/$', 'i') | ||
195 | // specifies the list of collections marked as "read-only" | ||
196 | // If null (default) or undefined then server detected privileges are used. | ||
197 | // Examples: | ||
198 | // forceReadOnly: null | ||
199 | // forceReadOnly: true | ||
200 | // forceReadOnly: ['/caldav.php/user/calendar/', | ||
201 | // '/caldav.php/user/calendar2/'] | ||
202 | // forceReadOnly: [new RegExp('^/.*/user/calendar[0-9]/$', 'i')] | ||
203 | // This property is supported in: | ||
204 | // globalAccountSettings | ||
205 | // globalNetworkCheckSettings | ||
206 | // globalNetworkAccountSettings (available in auth module only, with | ||
207 | // different syntax for regexes) | ||
208 | // - ignoreAlarms | ||
209 | // This option sets list of calendar collections with disabled | ||
210 | // alarm functionality. | ||
211 | // Supported values: | ||
212 | // - true | ||
213 | // alarm functionality is disabled for all collections | ||
214 | // - array of URL encoded | ||
215 | // - collections, such as: | ||
216 | // '/caldav.php/user/calendar/' | ||
217 | // '/caldav.php/user%40domain.com/calendar/' | ||
218 | // - regexes, such as: | ||
219 | // new RegExp('^/caldav.php/user/calendar[0-9]/$', 'i') | ||
220 | // specifies the list of collections with disabled alarm functionality. | ||
221 | // If false (default) or undefined then alarm functionality is enabled | ||
222 | // for all collections. | ||
223 | // Examples: | ||
224 | // ignoreAlarms: true | ||
225 | // ignoreAlarms: ['/caldav.php/user/calendar/', | ||
226 | // '/caldav.php/user/calendar2/'] | ||
227 | // ignoreAlarms: [new RegExp('^/.*/user/calendar[0-9]/$', 'i')] | ||
228 | // This property is supported in: | ||
229 | // globalAccountSettings | ||
230 | // globalNetworkCheckSettings | ||
231 | // globalNetworkAccountSettings (available in auth module only, with | ||
232 | // different syntax for regexes) | ||
233 | // - backgroundCalendars | ||
234 | // This options defines a list of background calendars. If there is | ||
235 | // at least one event defined for the given day in a background calendar, | ||
236 | // the background color for that day will be pink/light-red. | ||
237 | // Supported values: | ||
238 | // - array of URL encoded | ||
239 | // - collections, such as: | ||
240 | // '/caldav.php/user/calendar/' | ||
241 | // '/caldav.php/user%40domain.com/calendar/' | ||
242 | // - regexes, such as: | ||
243 | // new RegExp('^/caldav.php/user/calendar[0-9]/$', 'i') | ||
244 | // specifies the list of background calendar collections. | ||
245 | // Examples: | ||
246 | // backgroundCalendars: ['/caldav.php/user/calendar/', | ||
247 | // '/caldav.php/user/calendar2/'] | ||
248 | // backgroundCalendars: [new RegExp('^/.*/user/calendar[0-9]/$', 'i')] | ||
249 | // This property is supported in: | ||
250 | // globalAccountSettings | ||
251 | // globalNetworkCheckSettings | ||
252 | // globalNetworkAccountSettings (available in auth module only, with | ||
253 | // different syntax for regexes) | ||
254 | // Special options not present in configuration examples: | ||
255 | // NOTE: use ONLY if you know what are you doing! | ||
256 | // - crossDomain | ||
257 | // This option sets the crossDomain for jQuery .ajax call. If null (default) | ||
258 | // then the value is autodetected /and the result is shown in the console/ | ||
259 | // - withCredentials | ||
260 | // This option sets the withCredentials for jQuery .ajax call. The default | ||
261 | // value is false and there is NO REASON to change it to true! | ||
262 | // NOTE: if true, Access-Control-Allow-Origin "*" (CORS header) not works! | ||
263 | |||
264 | |||
265 | // globalAccountSettings | ||
266 | // Use this option if you want to use automatic login (without a login | ||
267 | // screen) with hardcoded username/password in config.js. Otherwise use | ||
268 | // globalNetworkCheckSettings or globalNetworkAccountSettings (see below). | ||
269 | // NOTE: if this option is used the value must be an array of object(s). | ||
270 | // List of properties used in globalAccountSettings variable: | ||
271 | // - href | ||
272 | // Set this option to the full "principal URL". | ||
273 | // NOTE: the last character in the value must be '/' | ||
274 | // - userAuth | ||
275 | // - userName | ||
276 | // Set the username you want to login. | ||
277 | // - userPassword | ||
278 | // Set the password for the given username. | ||
279 | // NOTE: for description of other properties see comments at the beginning | ||
280 | // of this file. | ||
281 | // NOTE: for minimal/fast setup you need to set only the href and userAuth | ||
282 | // options. It is safe/recommended to keep the remaining options unchanged! | ||
283 | // Example: | ||
284 | //var globalAccountSettings=[ | ||
285 | // { | ||
286 | // href: 'https://server1.com:8443/caldav.php/USERNAME1/', | ||
287 | // userAuth: | ||
288 | // { | ||
289 | // userName: 'USERNAME1', | ||
290 | // userPassword: 'PASSWORD1' | ||
291 | // }, | ||
292 | // timeOut: 90000, | ||
293 | // lockTimeOut: 10000, | ||
294 | // checkContentType: true, | ||
295 | // settingsAccount: true, | ||
296 | // delegation: true, | ||
297 | // hrefLabel: null, | ||
298 | // forceReadOnly: null, | ||
299 | // ignoreAlarms: false, | ||
300 | // backgroundCalendars: [] | ||
301 | // }, | ||
302 | // { | ||
303 | // href: 'https://server2.com:8443/caldav.php/USERNAME2/', | ||
304 | // ... | ||
305 | // ... | ||
306 | // } | ||
307 | //]; | ||
308 | |||
309 | |||
310 | // globalNetworkCheckSettings | ||
311 | // Use this option if you want to use standard login screen without | ||
312 | // hardcoded username/password in config.js (used by globalAccountSettings). | ||
313 | // NOTE: if this option is used the value must be an object. | ||
314 | // List of properties used in globalAccountSettings variable: | ||
315 | // - href | ||
316 | // Set this option to the "principal URL" WITHOUT the "USERNAME/" | ||
317 | // part (this options uses the username from the login screen). | ||
318 | // NOTE: the last character in the value must be '/' | ||
319 | // NOTE: for description of other properties see comments at the beginning | ||
320 | // of this file. | ||
321 | // NOTE: for minimal/fast setup you need to set only the href option. It is | ||
322 | // safe/recommended to keep the remaining options unchanged! | ||
323 | // Example href values: | ||
324 | // OS X server http example (see misc/readme_osx.txt for server setup): | ||
325 | // href: 'http://osx.server.com:8008/principals/users/' | ||
326 | // OS X server https example (see misc/readme_osx.txt for server setup): | ||
327 | // href: 'https://osx.server.com:8443/principals/users/' | ||
328 | // Cyrus server https example: | ||
329 | // href: 'https://cyrus.server.com/dav/principals/user/' | ||
330 | // Example: | ||
331 | // Davical example which automatically detects the protocol, server name, | ||
332 | // port, ... (client installed into Davical "htdocs" subdirectory; | ||
333 | // works "out of the box", no additional setup required): | ||
334 | var globalNetworkCheckSettings={ | ||
335 | href: location.protocol+'//'+location.hostname+ | ||
336 | (location.port ? ':'+location.port: '')+ | ||
337 | location.pathname.replace(RegExp('/+[^/]+/*(index\.html)?$'),'')+ | ||
338 | '/caldav.php/', | ||
339 | timeOut: 90000, | ||
340 | lockTimeOut: 10000, | ||
341 | checkContentType: true, | ||
342 | settingsAccount: true, | ||
343 | delegation: true, | ||
344 | additionalResources: [], | ||
345 | hrefLabel: null, | ||
346 | forceReadOnly: null, | ||
347 | ignoreAlarms: false, | ||
348 | backgroundCalendars: [] | ||
349 | } | ||
350 | |||
351 | |||
352 | // globalNetworkAccountSettings | ||
353 | // Try this option ONLY if you have working setup using | ||
354 | // globalNetworkCheckSettings and want to fix the authentication popup | ||
355 | // window problem (if invalid username/password is entered)! | ||
356 | // If you use this option then your browser sends username/password to the PHP | ||
357 | // "auth" module ("auth" directory) instead of the DAV server itself. | ||
358 | // The "auth" module then validates your username/password against your server, | ||
359 | // and if the authentication is successful, then it sends back a configuration | ||
360 | // XML (requires additional configuration). The resulting XML is handled | ||
361 | // IDENTICALLY as the globalAccountSettings configuration option. | ||
362 | // NOTE: for the "auth" module configuration see readme.txt! | ||
363 | // NOTE: this option invokes a login screen and disallows access until | ||
364 | // the client gets correct XML configuration file from the server! | ||
365 | // List of properties used in globalNetworkAccountSettings variable: | ||
366 | // - href | ||
367 | // Set this option to the "full URL" of the "auth" directory | ||
368 | // NOTE: the last character in the value must be '/' | ||
369 | // NOTE: for description of other properties see comments at the beginning | ||
370 | // of this file. | ||
371 | // Example href values: | ||
372 | // href: 'https://server.com/client/auth/' | ||
373 | // Example: | ||
374 | // Use this configuration if the "auth" module is located in the client | ||
375 | // installation subdirectory (default): | ||
376 | //var globalNetworkAccountSettings={ | ||
377 | // href: location.protocol+'//'+location.hostname+ | ||
378 | // (location.port ? ':'+location.port : '')+ | ||
379 | // location.pathname.replace(RegExp('index\.html$'),'')+ | ||
380 | // 'auth/', | ||
381 | // timeOut: 30000 | ||
382 | //}; | ||
383 | |||
384 | |||
385 | // globalUseJqueryAuth | ||
386 | // Use jQuery .ajax() auth or custom header for HTTP basic auth (default). | ||
387 | // Set this option to true if your server uses digest auth (note: you may | ||
388 | // experience auth popups on some browsers). | ||
389 | // If undefined (or empty), custom header for HTTP basic auth is used. | ||
390 | // Example: | ||
391 | //var globalUseJqueryAuth=false; | ||
392 | |||
393 | |||
394 | // globalBackgroundSync | ||
395 | // Enable background synchronization even if the browser window/tab has no | ||
396 | // focus. | ||
397 | // If false, synchronization is performed only if the browser window/tab | ||
398 | // is focused. If undefined or not false, then background sync is enabled. | ||
399 | // Example: | ||
400 | var globalBackgroundSync=true; | ||
401 | |||
402 | |||
403 | // globalSyncResourcesInterval | ||
404 | // This option defines how often (in miliseconds) are resources/collections | ||
405 | // asynchronously synchronized. | ||
406 | // Example: | ||
407 | var globalSyncResourcesInterval=120000; | ||
408 | |||
409 | |||
410 | // globalEnableRefresh | ||
411 | // This option enables or disables the manual synchronization button in | ||
412 | // the interface. If this option is enabled then users can perform server | ||
413 | // synchronization manually. Enabling this option may cause high server | ||
414 | // load (even DDOS) if users will try to manually synchronize data too | ||
415 | // often (instead of waiting for the automatic synchronization). | ||
416 | // If undefined or false, the synchronization button is disabled. | ||
417 | // NOTE: enable this option only if you really know what are you doing! | ||
418 | // Example: | ||
419 | var globalEnableRefresh=false; | ||
420 | |||
421 | |||
422 | // globalEnableKbNavigation | ||
423 | // Enable basic keyboard navigation using arrow keys? | ||
424 | // If undefined or not false, keyboard navigation is enabled. | ||
425 | // Example: | ||
426 | var globalEnableKbNavigation=true; | ||
427 | |||
428 | |||
429 | // globalSettingsType | ||
430 | // Where to store user settings such as: active view, enabled/selected | ||
431 | // collections, ... (the client store them into DAV property on the server). | ||
432 | // NOTE: not all servers support storing DAV properties (some servers support | ||
433 | // only subset /or none/ of these URLs). | ||
434 | // Supported values: | ||
435 | // - 'principal-URL', '', null or undefined (default) => settings are stored | ||
436 | // to principal-URL (recommended for most servers) | ||
437 | // - 'addressbook-home-set' => settings are are stored to addressbook-home-set | ||
438 | // - 'calendar-home-set' => settings are stored to calendar-home-set | ||
439 | // Example: | ||
440 | //var globalSettingsType=''; | ||
441 | |||
442 | |||
443 | // globalCrossServerSettingsURL | ||
444 | // Settings such as enabled/selected collections are stored on the server | ||
445 | // (see the previous option) in form of full URL | ||
446 | // (e.g.: https://user@server:port/principal/collection/), but even if this | ||
447 | // approach is "correct" (you can use the same principal URL with multiple | ||
448 | // different logins, ...) it causes a problem if your server is accessible | ||
449 | // from multiple URLs (e.g. http://server/ and https://server/). If you want | ||
450 | // to store only the "principal/collection/" part of the URL (instead of the | ||
451 | // full URL) then enable this option. | ||
452 | // Example: | ||
453 | //var globalCrossServerSettingsURL=false; | ||
454 | |||
455 | |||
456 | // globalInterfaceLanguage | ||
457 | // Default interface language (note: this option is case sensitive): | ||
458 | // cs_CZ (Čeština [Czech]) | ||
459 | // da_DK (Dansk [Danish]; thanks Niels Bo Andersen) | ||
460 | // de_DE (Deutsch [German]; thanks Marten Gajda and Thomas Scheel) | ||
461 | // en_US (English [English/US]) | ||
462 | // es_ES (Español [Spanish]; thanks Damián Vila) | ||
463 | // fr_FR (Français [French]; thanks John Fischer) | ||
464 | // it_IT (Italiano [Italian]; thanks Luca Ferrario) | ||
465 | // ja_JP (日本語 [Japan]; thanks Muimu Nakayama) | ||
466 | // hu_HU (Magyar [Hungarian]) | ||
467 | // nl_NL (Nederlands [Dutch]; thanks Johan Vromans) | ||
468 | // sk_SK (Slovenčina [Slovak]) | ||
469 | // tr_TR (Türkçe [Turkish]; thanks Selcuk Pultar) | ||
470 | // ru_RU (Русский [Russian]; thanks Александр Симонов) | ||
471 | // uk_UA (Українська [Ukrainian]; thanks Serge Yakimchuck) | ||
472 | // zh_CN (中国 [Chinese]; thanks Fandy) | ||
473 | // Example: | ||
474 | var globalInterfaceLanguage='fr_FR'; | ||
475 | |||
476 | |||
477 | // globalInterfaceCustomLanguages | ||
478 | // If defined and not empty then only languages listed here are shown | ||
479 | // at the login screen, otherwise (default) all languages are shown | ||
480 | // NOTE: values in the array must refer to an existing localization | ||
481 | // (see the option above) | ||
482 | // Example: | ||
483 | // globalInterfaceCustomLanguages=['en_US', 'sk_SK']; | ||
484 | var globalInterfaceCustomLanguages=[]; | ||
485 | |||
486 | |||
487 | // globalSortAlphabet | ||
488 | // Use JavaScript localeCompare() or custom alphabet for data sorting. | ||
489 | // Custom alphabet is used by default because JavaScript localeCompare() | ||
490 | // not supports collation and often returns "wrong" result. If set to null | ||
491 | // then localeCompare() is used. | ||
492 | // Example: | ||
493 | // var globalSortAlphabet=null; | ||
494 | var globalSortAlphabet=' 0123456789'+ | ||
495 | 'AÀÁÂÄÆÃÅĀBCÇĆČDĎEÈÉÊËĒĖĘĚFGĞHIÌÍÎİÏĪĮJKLŁĹĽMNŃÑŇOÒÓÔÖŐŒØÕŌ'+ | ||
496 | 'PQRŔŘSŚŠȘșŞşẞTŤȚțŢţUÙÚÛÜŰŮŪVWXYÝŸZŹŻŽ'+ | ||
497 | 'aàáâäæãåābcçćčdďeèéêëēėęěfgğhiìíîïīįıjklłĺľmnńñňoòóôöőœøõō'+ | ||
498 | 'pqrŕřsśšßtťuùúûüűůūvwxyýÿzźżžАБВГҐДЕЄЖЗИІЇЙКЛМНОПРСТУФХЦЧШЩЮЯ'+ | ||
499 | 'Ьабвгґдеєжзиіїйклмнопрстуфхцчшщюяь'; | ||
500 | |||
501 | |||
502 | // globalSearchTransformAlphabet | ||
503 | // To support search without diacritics (e.g. search for 'd' will find: 'Ď', 'ď') | ||
504 | // it is required to define something like "character equivalence". | ||
505 | // key = regex text, value = search character | ||
506 | // Example: | ||
507 | var globalSearchTransformAlphabet={ | ||
508 | '[ÀàÁáÂâÄäÆæÃãÅåĀā]': 'a', '[ÇçĆćČč]': 'c', '[Ďď]': 'd', | ||
509 | '[ÈèÉéÊêËëĒēĖėĘęĚě]': 'e', '[Ğğ]': 'g', '[ÌìÍíÎîİıÏïĪīĮį]': 'i', | ||
510 | '[ŁłĹ弾]': 'l', '[ŃńÑñŇň]': 'n', '[ÒòÓóÔôÖöŐőŒœØøÕõŌō]': 'o', | ||
511 | '[ŔŕŘř]': 'r', '[ŚśŠšȘșŞşẞß]': 's', '[ŤťȚțŢţ]': 't', | ||
512 | '[ÙùÚúÛûÜüŰűŮůŪū]': 'u', '[ÝýŸÿ]': 'y', '[ŹźŻżŽž]': 'z' | ||
513 | }; | ||
514 | |||
515 | // globalResourceAlphabetSorting | ||
516 | // If more than one resource (server account) is configured, sort the | ||
517 | // resources alphabetically? | ||
518 | // Example: | ||
519 | var globalResourceAlphabetSorting=true; | ||
520 | |||
521 | |||
522 | // globalNewVersionNotifyUsers | ||
523 | // Update notification will be shown only to users with login names defined | ||
524 | // in this array. | ||
525 | // If undefined (or empty), update notifications will be shown to all users. | ||
526 | // Example: | ||
527 | // globalNewVersionNotifyUsers=['admin', 'peter']; | ||
528 | var globalNewVersionNotifyUsers=[]; | ||
529 | |||
530 | |||
531 | // globalDatepickerFormat | ||
532 | // Set the datepicker format (see | ||
533 | // http://docs.jquery.com/UI/Datepicker/formatDate for valid values). | ||
534 | // NOTE: date format is predefined for each localization - use this option | ||
535 | // ONLY if you want to use custom date format (instead of the localization | ||
536 | // predefined one). | ||
537 | // Example: | ||
538 | //var globalDatepickerFormat='dd.mm.yy'; | ||
539 | var globalDatepickerFormat='yy-mm-dd'; | ||
540 | |||
541 | |||
542 | // globalDatepickerFirstDayOfWeek | ||
543 | // Set the datepicker first day of the week: Sunday is 0, Monday is 1, etc. | ||
544 | // Example: | ||
545 | var globalDatepickerFirstDayOfWeek=1; | ||
546 | |||
547 | |||
548 | // globalHideInfoMessageAfter | ||
549 | // How long are information messages (such as: success, error) displayed | ||
550 | // (in miliseconds). | ||
551 | // Example: | ||
552 | var globalHideInfoMessageAfter=1800; | ||
553 | |||
554 | |||
555 | // globalEditorFadeAnimation | ||
556 | // Set the editor fade in/out animation duration when editing or saving data | ||
557 | // (in miliseconds). | ||
558 | // Example: | ||
559 | var globalEditorFadeAnimation=666; | ||
560 | |||
561 | |||
562 | |||
563 | |||
564 | // ******* CalDAV (CalDavZAP) related settings ******* // | ||
565 | |||
566 | // globalEventStartPastLimit, globalEventStartFutureLimit, globalTodoPastLimit | ||
567 | // Number of months pre-loaded from past/future in advance for calendars | ||
568 | // and todo lists (if null then date range synchronization is disabled). | ||
569 | // NOTE: interval synchronization is used only if your server supports | ||
570 | // sync-collection REPORT (e.g. DAViCal). | ||
571 | // NOTE: if you experience problems with data loading and your server has | ||
572 | // no time-range filtering support set these variables to null. | ||
573 | // Example: | ||
574 | var globalEventStartPastLimit=3; | ||
575 | var globalEventStartFutureLimit=3; | ||
576 | var globalTodoPastLimit=1; | ||
577 | |||
578 | |||
579 | // globalLoadedCalendarCollections | ||
580 | // This option sets the list of calendar collections (down)loaded after login. | ||
581 | // If empty then all calendar collections for the currently logged user are | ||
582 | // loaded. | ||
583 | // NOTE: settings stored on the server (see settingsAccount) overwrite this | ||
584 | // option. | ||
585 | // Example: | ||
586 | var globalLoadedCalendarCollections=[]; | ||
587 | |||
588 | |||
589 | // globalLoadedTodoCollections | ||
590 | // This option sets the list of todo collections (down)loaded after login. | ||
591 | // If empty then all todo collections for the currently logged user are loaded. | ||
592 | // NOTE: settings stored on the server (see settingsAccount) overwrite this | ||
593 | // option. | ||
594 | // Example: | ||
595 | var globalLoadedTodoCollections=[]; | ||
596 | |||
597 | |||
598 | // globalActiveCalendarCollections | ||
599 | // This options sets the list of calendar collections checked (enabled | ||
600 | // checkbox => data visible in the interface) by default after login. | ||
601 | // If empty then all loaded calendar collections for the currently logged | ||
602 | // user are checked. | ||
603 | // NOTE: only already (down)loaded collections can be checked (see | ||
604 | // the globalLoadedCalendarCollections option). | ||
605 | // NOTE: settings stored on the server (see settingsAccount) overwrite this | ||
606 | // option. | ||
607 | // Example: | ||
608 | var globalActiveCalendarCollections=[]; | ||
609 | |||
610 | |||
611 | // globalActiveTodoCollections | ||
612 | // This options sets the list of todo collections checked (enabled | ||
613 | // checkbox => data visible in the interface) by default after login. | ||
614 | // If empty then all loaded todo collections for the currently logged | ||
615 | // user are checked. | ||
616 | // NOTE: only already (down)loaded collections can be checked (see | ||
617 | // the globalLoadedTodoCollections option). | ||
618 | // NOTE: settings stored on the server (see settingsAccount) overwrite this | ||
619 | // option. | ||
620 | // Example: | ||
621 | var globalActiveTodoCollections=[]; | ||
622 | |||
623 | |||
624 | // globalCalendarSelected | ||
625 | // This option sets which calendar collection will be pre-selected | ||
626 | // (if you create a new event) by default after login. | ||
627 | // The value must be URL encoded path to a calendar collection, | ||
628 | // for example: 'USER/calendar/' | ||
629 | // If empty or undefined then the first available calendar collection | ||
630 | // is selected automatically. | ||
631 | // NOTE: only already (down)loaded collections can be pre-selected (see | ||
632 | // the globalLoadedCalendarCollections option). | ||
633 | // NOTE: settings stored on the server (see settingsAccount) overwrite this | ||
634 | // option. | ||
635 | // Example: | ||
636 | //var globalCalendarSelected=''; | ||
637 | |||
638 | |||
639 | // globalTodoCalendarSelected | ||
640 | // This option sets which todo collection will be pre-selected | ||
641 | // (if you create a new todo) by default after login. | ||
642 | // The value must be URL encoded path to a todo collection, | ||
643 | // for example: 'USER/todo_calendar/' | ||
644 | // If empty or undefined then the first available todo collection | ||
645 | // is selected automatically. | ||
646 | // NOTE: only already (down)loaded collections can be pre-selected (see | ||
647 | // the globalLoadedTodoCollections option). | ||
648 | // NOTE: settings stored on the server (see settingsAccount) overwrite this | ||
649 | // option. | ||
650 | // Example: | ||
651 | //var globalTodoCalendarSelected=''; | ||
652 | |||
653 | |||
654 | // globalActiveView | ||
655 | // This options sets the default fullcalendar view option (the default calendar | ||
656 | // view after the first login). | ||
657 | // Supported values: | ||
658 | // - 'month' | ||
659 | // - 'multiWeek' | ||
660 | // - 'agendaWeek' | ||
661 | // - 'agendaDay' | ||
662 | // NOTE: we use custom and enhanced version of fullcalendar! | ||
663 | // Example: | ||
664 | var globalActiveView='multiWeek'; | ||
665 | |||
666 | |||
667 | // globalOpenFormMode | ||
668 | // Open new event form on 'single' or 'double' click. | ||
669 | // If undefined or not 'double', then 'single' is used. | ||
670 | // Example: | ||
671 | var globalOpenFormMode='double'; | ||
672 | |||
673 | |||
674 | // globalTodoListFilterSelected | ||
675 | // This options sets the list of filters in todo list that are selected | ||
676 | // after login. | ||
677 | // Supported options: | ||
678 | // - 'filterAction' | ||
679 | // - 'filterProgress' (available only if globalAppleRemindersMode is disabled) | ||
680 | // - 'filterCompleted' | ||
681 | // - 'filterCanceled' (available only if globalAppleRemindersMode is disabled) | ||
682 | // NOTE: settings stored on the server (see settingsAccount) overwrite this | ||
683 | // option. | ||
684 | // Example: | ||
685 | var globalTodoListFilterSelected=['filterAction', 'filterProgress']; | ||
686 | |||
687 | |||
688 | // globalCalendarStartOfBusiness, globalCalendarEndOfBusiness | ||
689 | // These options set the start and end of business hours with 0.5 hour | ||
690 | // precision. Non-business hours are faded out in the calendar interface. | ||
691 | // If both variables are set to the same value then no fade out occurs. | ||
692 | // Example: | ||
693 | var globalCalendarStartOfBusiness=8; | ||
694 | var globalCalendarEndOfBusiness=17; | ||
695 | |||
696 | |||
697 | // globalDefaultEventDuration | ||
698 | // This option sets the default duration (in minutes) for newly created events. | ||
699 | // If undefined or null, globalCalendarEndOfBusiness value will be taken as | ||
700 | // a default end time instead. | ||
701 | // Example: | ||
702 | var globalDefaultEventDuration=120; | ||
703 | |||
704 | |||
705 | // globalAMPMFormat | ||
706 | // This option enables to use 12 hours format (AM/PM) for displaying time. | ||
707 | // NOTE: time format is predefined for each localization - use this option | ||
708 | // ONLY if you want to use custom time format (instead of the localization | ||
709 | // predefined one). | ||
710 | // Example: | ||
711 | //var globalAMPMFormat=false; | ||
712 | |||
713 | |||
714 | // globalTimeFormatBasic | ||
715 | // This option defines the time format information for events in month and | ||
716 | // multiweek views. If undefined or null then default value is used. | ||
717 | // If defined as empty string no time information is shown in these views. | ||
718 | // See http://arshaw.com/fullcalendar/docs/utilities/formatDate/ for exact | ||
719 | // formating rules. | ||
720 | // Example: | ||
721 | //var globalTimeFormatBasic=''; | ||
722 | |||
723 | |||
724 | // globalTimeFormatAgenda | ||
725 | // This option defines the time format information for events in day and | ||
726 | // week views. If undefined or null then default value is used. | ||
727 | // If defined as empty string no time information is shown in these views. | ||
728 | // See http://arshaw.com/fullcalendar/docs/utilities/formatDate/ for exact | ||
729 | // formating rules. | ||
730 | // Example: | ||
731 | //var globalTimeFormatAgenda=''; | ||
732 | |||
733 | |||
734 | // globalDisplayHiddenEvents | ||
735 | // This option defined whether events from unechecked calendars are displayed | ||
736 | // with certain transparency (true) or completely hidden (false). | ||
737 | // Example: | ||
738 | var globalDisplayHiddenEvents=false; | ||
739 | |||
740 | |||
741 | // globalTimeZoneSupport | ||
742 | // This option enables timezone support in the client. | ||
743 | // NOTE: timezone cannot be specified for all-day events because these don't | ||
744 | // have start and end time. | ||
745 | // If this option is disabled then local time is used. | ||
746 | // Example: | ||
747 | var globalTimeZoneSupport=true; | ||
748 | |||
749 | |||
750 | // globalTimeZone | ||
751 | // If timezone support is enabled, this option sets the default timezone. | ||
752 | // See timezones.js or use the following command to get the list of supported | ||
753 | // timezones (defined in timezones.js): | ||
754 | // grep "'[^']\+': {" timezones.js | sed -Ee "s#(\s*'|':\s*\{)##g" | ||
755 | // Example: | ||
756 | var globalTimeZone='Europe/Paris'; | ||
757 | |||
758 | |||
759 | // globalTimeZonesEnabled | ||
760 | // This option sets the list of available timezones in the interface (for the | ||
761 | // list of supported timezones see the comment for the previous configuration | ||
762 | // option). | ||
763 | // NOTE: if there is at least one event/todo with a certain timezone defined, | ||
764 | // that timezone is enabled (even if it is not present in this list). | ||
765 | // Example: | ||
766 | // var globalTimeZonesEnabled=['America/New_York', 'Europe/Berlin']; | ||
767 | var globalTimeZonesEnabled=[]; | ||
768 | |||
769 | |||
770 | // globalRewriteTimezoneComponent | ||
771 | // This options sets whether the client will enhance/replace (if you edit an | ||
772 | // event or todo) the timezone information using the official IANA timezone | ||
773 | // database information (recommended). | ||
774 | // Example: | ||
775 | var globalRewriteTimezoneComponent=true; | ||
776 | |||
777 | |||
778 | // globalRemoveUnknownTimezone | ||
779 | // This options sets whether the client will remove all non-standard timezone | ||
780 | // names from events and todos (if you edit an event or todo) | ||
781 | // (e.g.: /freeassociation.sourceforge.net/Tzfile/Europe/Vienna) | ||
782 | // Example: | ||
783 | var globalRemoveUnknownTimezone=false; | ||
784 | |||
785 | |||
786 | // globalShowHiddenAlarms | ||
787 | // This option sets whether the client will show alarm notifications for | ||
788 | // unchecked calendars. If this option is enabled and you uncheck a calendar | ||
789 | // in the calendar list, alarm notifications will be temporary disabled for | ||
790 | // unchecked calendar(s). | ||
791 | // Example: | ||
792 | var globalShowHiddenAlarms=false; | ||
793 | |||
794 | |||
795 | // globalIgnoreCompletedOrCancelledAlarms | ||
796 | // This options sets whether the client will show alarm notifications for | ||
797 | // already completed or cancelled todos. If enabled then alarm notification | ||
798 | // for completed and cancelled todos are disabled. | ||
799 | // Example: | ||
800 | var globalIgnoreCompletedOrCancelledAlarms=true; | ||
801 | |||
802 | |||
803 | // globalMozillaSupport | ||
804 | // Mozilla automatically treats custom repeating event calculations as if | ||
805 | // the start day of the week is Monday, despite what day is chosen in settings. | ||
806 | // Set this variable to true to use the same approach, ensuring compatible | ||
807 | // event rendering in special cases. | ||
808 | // Example: | ||
809 | var globalMozillaSupport=false; | ||
810 | |||
811 | |||
812 | // globalCalendarColorPropertyXmlns | ||
813 | // This options sets the namespace used for storing the "calendar-color" | ||
814 | // property by the client. | ||
815 | // If true, undefined (or empty) "http://apple.com/ns/ical/" is used (Apple | ||
816 | // compatible). If false, then the calendar color modification functionality | ||
817 | // is completely disabled. | ||
818 | // Example: | ||
819 | //var globalCalendarColorPropertyXmlns=true; | ||
820 | |||
821 | |||
822 | // globalWeekendDays | ||
823 | // This option sets the list of days considered as weekend days (these | ||
824 | // are faded out in the calendar interface). Non-weekend days are automatically | ||
825 | // considered as business days. | ||
826 | // Sunday is 0, Monday is 1, etc. | ||
827 | // Example: | ||
828 | var globalWeekendDays=[0, 6]; | ||
829 | |||
830 | |||
831 | // globalAppleRemindersMode | ||
832 | // If this option is enabled then then client will use the same approach | ||
833 | // for handling repeating reminders (todos) as Apple. It is STRONGLY | ||
834 | // recommended to enabled this option if you use any Apple clients for | ||
835 | // reminders (todos). | ||
836 | // Supported options: | ||
837 | // - 'iOS6' | ||
838 | // - 'iOS7' | ||
839 | // - true (support of the latest iOS version - 'iOS8') | ||
840 | // - false | ||
841 | // If this option is enabled: | ||
842 | // - RFC todo support is SEVERELY limited and the client mimics the behaviour | ||
843 | // of Apple Reminders.app (to ensure maximum compatibility) | ||
844 | // - when a single instance of repeating todo is edited, it becomes an | ||
845 | // autonomous non-repeating todo with NO relation to the original repeating | ||
846 | // todo | ||
847 | // - capabilities of repeating todos are limited - only the first instance | ||
848 | // is ever visible in the interface | ||
849 | // - support for todo DTSTART attribute is disabled | ||
850 | // - support for todo STATUS attribute other than COMPLETED and NEEDS-ACTION | ||
851 | // is disabled | ||
852 | // - [iOS6 only] support for LOCATION and URL attributes is disabled | ||
853 | // Example: | ||
854 | var globalAppleRemindersMode=true; | ||
855 | |||
856 | |||
857 | // globalSubscribedCalendars | ||
858 | // This option specifies a list of remote URLs to ics files (e.g.: used | ||
859 | // for distributing holidays information). Subscribed calendars are | ||
860 | // ALWAYS read-only. Remote servers where ics files are hosted MUST | ||
861 | // return proper CORS headers (see readme.txt) otherwise this functionality | ||
862 | // will not work! | ||
863 | // NOTE: subsribed calendars are NOT "shared" calendars. For "shared" | ||
864 | // calendars see the delegation option in globalAccountSettings, | ||
865 | // globalNetworkCheckSettings and globalNetworkAccountSettings. | ||
866 | // List of properties used in globalSubscribedCalendars variable: | ||
867 | // - hrefLabel | ||
868 | // This options defines the header string above the subcsribed calendars. | ||
869 | // - calendars | ||
870 | // This option specifies an array of remote calendar objects with the | ||
871 | // following properties: | ||
872 | // - href | ||
873 | // Set this option to the "full URL" of the remote calendar | ||
874 | // - userAuth | ||
875 | // NOTE: keep empty if remote authentication is not required! | ||
876 | // - userName | ||
877 | // Set the username you want to login. | ||
878 | // - userPassword | ||
879 | // Set the password for the given username. | ||
880 | // - typeList | ||
881 | // Set the list of objects you want to process from remote calendars; | ||
882 | // two options are available: | ||
883 | // - 'vevent' (show remote events in the interface) | ||
884 | // - 'vtodo' (show remote todos in the interface) | ||
885 | // - ignoreAlarm | ||
886 | // Set this option to true if you want to disable alarm notifications | ||
887 | // from the remote calendar. | ||
888 | // - displayName | ||
889 | // Set this option to the name of the calendar you want to see | ||
890 | // in the interface. | ||
891 | // - color | ||
892 | // Set the calendar color you want to see in the interface. | ||
893 | // Example: | ||
894 | //var globalSubscribedCalendars={ | ||
895 | // hrefLabel: 'Subscribed', | ||
896 | // calendars: [ | ||
897 | // { | ||
898 | // href: 'http://something.com/calendar.ics', | ||
899 | // userAuth: { | ||
900 | // userName: '', | ||
901 | // userPassword: '' | ||
902 | // }, | ||
903 | // typeList: ['vevent', 'vtodo'], | ||
904 | // ignoreAlarm: true, | ||
905 | // displayName: 'Remote Calendar 1', | ||
906 | // color: '#ff0000' | ||
907 | // }, | ||
908 | // { | ||
909 | // href: 'http://calendar.com/calendar2.ics', | ||
910 | // ... | ||
911 | // ... | ||
912 | // } | ||
913 | // ] | ||
914 | //}; | ||
915 | |||
916 | |||
917 | |||
918 | // ******* CardDAV (CardDavMATE) related settings ******* // | ||
919 | |||
920 | |||
921 | // globalLoadedAddressbookCollections | ||
922 | // This option sets the list of addressbook collections (down)loaded after | ||
923 | // login. If empty then all addressbook collections for the currently logged | ||
924 | // user are loaded. | ||
925 | // NOTE: settings stored on the server (see settingsAccount) overwrite this | ||
926 | // option. | ||
927 | // Example: | ||
928 | var globalLoadedAddressbookCollections=[]; | ||
929 | |||
930 | |||
931 | // globalActiveAddressbookCollections | ||
932 | // This options sets the list of addressbook collections checked (enabled | ||
933 | // checkbox => data visible in the interface) by default after login. | ||
934 | // If empty then all loaded addressbook collections for the currently logged | ||
935 | // user are checked. | ||
936 | // NOTE: only already (down)loaded collections can be checked (see | ||
937 | // the globalLoadedAddressbookCollections option). | ||
938 | // NOTE: settings stored on the server (see settingsAccount) overwrite this | ||
939 | // option. | ||
940 | // Example: | ||
941 | var globalActiveAddressbookCollections=[]; | ||
942 | |||
943 | |||
944 | // globalAddressbookSelected | ||
945 | // This option sets which addressbook collection will be pre-selected | ||
946 | // (if you create a new contact) by default after login. | ||
947 | // The value must be URL encoded path to an addressbook collection, | ||
948 | // for example: 'USER/addressbook/' | ||
949 | // If empty or undefined then the first available addressbook collection | ||
950 | // is selected automatically. | ||
951 | // NOTE: only already (down)loaded collections can be pre-selected (see | ||
952 | // the globalLoadedAddressbookCollections option). | ||
953 | // NOTE: settings stored on the server (see settingsAccount) overwrite this | ||
954 | // option. | ||
955 | // Example: | ||
956 | //var globalAddressbookSelected=''; | ||
957 | |||
958 | |||
959 | // globalCompatibility | ||
960 | // This options is reserved for various compatibility settings. | ||
961 | // NOTE: if this option is used the value must be an object. | ||
962 | // Currently there is only one supported option: | ||
963 | // - anniversaryOutputFormat | ||
964 | // Different clients use different (and incompatible) approach | ||
965 | // to store anniversary date in vCards. Apple stores this attribute as: | ||
966 | // itemX.X-ABDATE;TYPE=pref:2000-01-01\r\n | ||
967 | // itemX.X-ABLabel:_$!<Anniversary>!$_\r\n' | ||
968 | // other clients store this attribute as: | ||
969 | // X-ANNIVERSARY:2000-01-01\r\n | ||
970 | // Choose 'apple' or 'other' (lower case) for your 3rd party client | ||
971 | // compatibility. You can chose both: ['apple', 'other'], but it may | ||
972 | // cause many problems in the future, for example: duplicate anniversary | ||
973 | // dates, invalid/old anniversary date in your clients, ...) | ||
974 | // Examples: | ||
975 | // anniversaryOutputFormat: ['other'] | ||
976 | // anniversaryOutputFormat: ['apple', 'other'] | ||
977 | // Example: | ||
978 | var globalCompatibility={anniversaryOutputFormat: ['apple']}; | ||
979 | |||
980 | |||
981 | // globalUriHandler{Tel,Email,Url,Profile} | ||
982 | // These options set the URI handlers for TEL, EMAIL, URL and X-SOCIALPROFILE | ||
983 | // vCard attributes. Set them to null (or comment out) to disable. | ||
984 | // NOTE: for globalUriHandlerTel is recommended to use 'tel:', 'callto:' | ||
985 | // or 'skype:'. The globalUriHandlerUrl value is used only if no URI handler | ||
986 | // is defined in the URL. | ||
987 | // NOTE: it is safe to keep these values unchanged! | ||
988 | // Example: | ||
989 | var globalUriHandlerTel='tel:'; | ||
990 | var globalUriHandlerEmail='mailto:'; | ||
991 | var globalUriHandlerUrl='http://'; | ||
992 | var globalUriHandlerProfile={ | ||
993 | 'twitter': 'http://twitter.com/%u', | ||
994 | 'facebook': 'http://www.facebook.com/%u', | ||
995 | 'flickr': 'http://www.flickr.com/photos/%u', | ||
996 | 'linkedin': 'http://www.linkedin.com/in/%u', | ||
997 | 'myspace': 'http://www.myspace.com/%u', | ||
998 | 'sinaweibo': 'http://weibo.com/n/%u' | ||
999 | }; | ||
1000 | |||
1001 | |||
1002 | // globalDefaultAddressCountry | ||
1003 | // This option sets the default country for new address fields. | ||
1004 | // See common.js or use the following command to get the list of | ||
1005 | // all supported country codes (defined in common.js): | ||
1006 | // grep -E "'[a-z]{2}':\s+\[" common.js | sed -Ee 's#^\s+|\s+\[\s+# #g' | ||
1007 | // Example: | ||
1008 | var globalDefaultAddressCountry='fr'; | ||
1009 | |||
1010 | |||
1011 | // globalAddressCountryEquivalence | ||
1012 | // This option sets the processing of the country field specified | ||
1013 | // in the vCard ADR attribute. | ||
1014 | // By default the address field in vCard looks like: | ||
1015 | // ADR;TYPE=WORK:;;1 Waters Edge;Baytown;LA;30314;USA\r\n | ||
1016 | // what cause a problem, because the country field is a plain | ||
1017 | // text and can contain any value, e.g.: | ||
1018 | // USA | ||
1019 | // United States of America | ||
1020 | // US | ||
1021 | // and because the address format can be completely different for | ||
1022 | // each country, e.g.: | ||
1023 | // China address example: | ||
1024 | // [China] | ||
1025 | // [Province] [City] | ||
1026 | // [Street] | ||
1027 | // [Postal] | ||
1028 | // Japan address example: | ||
1029 | // [Postal] | ||
1030 | // [Prefecture] [County/City] | ||
1031 | // [Further Divisions] | ||
1032 | // [Japan] | ||
1033 | // the client needs to correctly detect the country from the ADR | ||
1034 | // attribute. Apple solved this problem by using: | ||
1035 | // item1.ADR;TYPE=WORK:;;1 Waters Edge;Baytown;LA;30314;USA\r\n | ||
1036 | // item1.X-ABADR:us\r\n | ||
1037 | // where the second "related" attribute defines the country code | ||
1038 | // for the ADR attribute. This client uses the same approach, but | ||
1039 | // if the vCard is created by 3rd party clients and the X-ABADR | ||
1040 | // is missing, it is possible to define additional "rules" for | ||
1041 | // country matching. These rules are specied by the country code | ||
1042 | // (for full list of country codes see the comment for pre previous | ||
1043 | // option) and a case insensitive regular expression (which matches | ||
1044 | // the plain text value in the country field). | ||
1045 | // NOTE: if X-ABADR is not present and the country not matches any | ||
1046 | // country defined in this option, then globalDefaultAddressCountry | ||
1047 | // is used by default. | ||
1048 | // Example: | ||
1049 | var globalAddressCountryEquivalence=[ | ||
1050 | {country: 'de', regex: '^\\W*Deutschland\\W*$'}, | ||
1051 | {country: 'sk', regex: '^\\W*Slovensko\\W*$'} | ||
1052 | ]; | ||
1053 | |||
1054 | |||
1055 | // globalAddressCountryFavorites | ||
1056 | // This option defines the list of countries which are shown at the top | ||
1057 | // of the country list in the interface (for full list of country codes | ||
1058 | // see the comment for pre globalDefaultAddressCountry option). | ||
1059 | // Example: | ||
1060 | // var globalAddressCountryFavorites=['de','sk']; | ||
1061 | var globalAddressCountryFavorites=[]; | ||
1062 | |||
1063 | |||
1064 | // globalAddrColorPropertyXmlns | ||
1065 | // This options sets the namespace used for storing the "addressbook-color" | ||
1066 | // property by the client. | ||
1067 | // If true, undefined (or empty) "http://inf-it.com/ns/ab/" is used. | ||
1068 | // If false, then the addressbook color modification functionality | ||
1069 | // is completely disabled, and addressbook colors in the interface are | ||
1070 | // generated automatically. | ||
1071 | // Example: | ||
1072 | //var globalAddrColorPropertyXmlns=true; | ||
1073 | |||
1074 | |||
1075 | // globalContactStoreFN | ||
1076 | // This option specifies how the FN (formatted name) is stored into vCard. | ||
1077 | // The value for this options must be an array of strings, that can contain | ||
1078 | // the following variables: | ||
1079 | // prefix | ||
1080 | // last | ||
1081 | // middle | ||
1082 | // first | ||
1083 | // suffix | ||
1084 | // The string element of the array can contain any other characters (usually | ||
1085 | // space or colon). Elements are added into FN only if the there is | ||
1086 | // a variable match, for example if: | ||
1087 | // last='Lastname' | ||
1088 | // first='Firstname' | ||
1089 | // middle='' (empty) | ||
1090 | // and this option is set to: | ||
1091 | // ['last', ' middle', ' first'] (space in the second and third element) | ||
1092 | // the resulting value for FN will be: 'Lastname Firstname' and not | ||
1093 | // 'Lastname Firstname' (two spaces), because the middle name is empty (so | ||
1094 | // the second element is completely ignored /not added into FN/). | ||
1095 | // NOTE: this attribute is NOT used by this client, and it is also NOT | ||
1096 | // possible to directly edit it in the interface. | ||
1097 | // Examples: | ||
1098 | // var globalContactStoreFN=[' last', ' middle', ' first']; | ||
1099 | // var globalContactStoreFN=['last', ', middle', ' ,first']; | ||
1100 | var globalContactStoreFN=['prefix',' last',' middle',' first',' suffix']; | ||
1101 | |||
1102 | |||
1103 | // globalGroupContactsByCompanies | ||
1104 | // This options specifies how contacts are grouped in the interface. | ||
1105 | // By default the interface looks like (very simple example): | ||
1106 | // A | ||
1107 | // Adams Adam | ||
1108 | // Anderson Peter | ||
1109 | // B | ||
1110 | // Brown John | ||
1111 | // Baker Josh | ||
1112 | // if grouped by company/deparment the result is: | ||
1113 | // Company A [Department X] | ||
1114 | // Adams Adam | ||
1115 | // Brown John | ||
1116 | // Company B [Department Y] | ||
1117 | // Anderson Peter | ||
1118 | // Baker Josh | ||
1119 | // If this option is set to true contacts are grouped by company/department, | ||
1120 | // otherwise (default) contacts are grouped by letters of the alphabet. | ||
1121 | // If undefined or not true, grouping by alphabet letters is used. | ||
1122 | // NOTE: see also the globalCollectionDisplay option below. | ||
1123 | var globalGroupContactsByCompanies=false; | ||
1124 | |||
1125 | |||
1126 | // globalCollectionDisplay | ||
1127 | // This options specifies how data columns in the contact list are displayed. | ||
1128 | // | ||
1129 | // NOTE: columns are displayed ONLY if there is enought horizontal place in | ||
1130 | // the browser window (e.g. if you define 5 columns here, but your browser | ||
1131 | // window is not wide enough, you will see only first 3 columns instead of 5). | ||
1132 | // | ||
1133 | // NOTE: see the globalContactDataMinVisiblePercentage option which defines the | ||
1134 | // width for columns. | ||
1135 | // | ||
1136 | // The value must be an array of columns, where each column is represented by | ||
1137 | // an object with the following properties: | ||
1138 | // label => the value of this option is a string used as column header | ||
1139 | // You can use the following localized variables in the label string: | ||
1140 | // - {Name} | ||
1141 | // - {FirstName} | ||
1142 | // - {LastName} | ||
1143 | // - {MiddleName} | ||
1144 | // - {NickName} | ||
1145 | // - {Prefix} | ||
1146 | // - {Suffix} | ||
1147 | // - {BirthDay} | ||
1148 | // - {PhoneticLastName} | ||
1149 | // - {PhoneticFirstName} | ||
1150 | // - {JobTitle} | ||
1151 | // - {Company} | ||
1152 | // - {Department} | ||
1153 | // - {Categories} | ||
1154 | // - {NoteText} | ||
1155 | // - {Address}, {AddressWork}, {AddressHome}, {AddressOther} | ||
1156 | // - {Phone}, {PhoneWork}, {PhoneHome}, {PhoneCell}, {PhoneMain}, | ||
1157 | // {PhonePager}, {PhoneFax}, {PhoneIphone}, {PhoneOther} | ||
1158 | // - {Email}, {EmailWork}, {EmailHome}, {EmailMobileme}, {EmailOther} | ||
1159 | // - {URL}, {URLWork}, {URLHome}, {URLHomepage}, {URLOther} | ||
1160 | // - {Dates}, {DatesAnniversary}, {DatesOther} | ||
1161 | // - {Related}, {RelatedManager}, {RelatedAssistant}, {RelatedFather}, | ||
1162 | // {RelatedMother}, {RelatedParent}, {RelatedBrother}, {RelatedSister}, | ||
1163 | // {RelatedChild}, {RelatedFriend}, {RelatedSpouse}, {RelatedPartner}, | ||
1164 | // {RelatedOther} | ||
1165 | // - {Profile}, {ProfileTwitter}, {ProfileFacebook}, {ProfileFlickr}, | ||
1166 | // {ProfileLinkedin}, {ProfileMyspace}, {ProfileSinaweibo} | ||
1167 | // - {IM}, {IMWork}, {IMHome}, {IMMobileme}, {IMOther}, {IMAim}, {IMIcq}, | ||
1168 | // {IMIrc}, {IMJabber}, {IMMsn}, {IMYahoo}, {IMFacebook}, {IMGadugadu}, | ||
1169 | // {IMGoogletalk}, {IMQq}, {IMSkype} | ||
1170 | // value => the value of this option is an array of format strings, or | ||
1171 | // an object with the following properties: | ||
1172 | // - company (used for company contacts) | ||
1173 | // - personal (used for user contacts) | ||
1174 | // where the value of these properties is an array of format strings used | ||
1175 | // for company or user contacts (you can have different values in the same | ||
1176 | // column for personal and company contacts). | ||
1177 | // You can use the following simple variables in the format string: | ||
1178 | // - {FirstName} | ||
1179 | // - {LastName} | ||
1180 | // - {MiddleName} | ||
1181 | // - {NickName} | ||
1182 | // - {Prefix} | ||
1183 | // - {Suffix} | ||
1184 | // - {BirthDay} | ||
1185 | // - {PhoneticLastName} | ||
1186 | // - {PhoneticFirstName} | ||
1187 | // - {JobTitle} | ||
1188 | // - {Company} | ||
1189 | // - {Department} | ||
1190 | // - {Categories} | ||
1191 | // - {NoteText} | ||
1192 | // You can also use parametrized variables, where the parameter is enclosed | ||
1193 | // in square bracket. Paramatrized variables are useful to extract data | ||
1194 | // such as home phone {Phone[type=home]}, extract the second phone number | ||
1195 | // {Phone[:1]} (zero based indexing) or extract the third home phone number | ||
1196 | // {Phone[type=home][:2]} from the vCard. | ||
1197 | // NOTE: if the parametrized variable matches multiple items, e.g.: | ||
1198 | // {Phone[type=work]} (if the contact has multiple work phones) then the | ||
1199 | // first one is used! | ||
1200 | // | ||
1201 | // The following parametrized variables are supported (note: you can use | ||
1202 | // all of them also without parameters /the first one will be used/): | ||
1203 | // - {Address[type=XXX]} or {Address[:NUM]} or {Address[type=XXX][:NUM]} | ||
1204 | // where supported values for XXX are: | ||
1205 | // - work | ||
1206 | // - home | ||
1207 | // - other | ||
1208 | // - any other custom value | ||
1209 | // - {Phone[type=XXX]} or {Phone[:NUM]} or {Phone[type=XXX][:NUM]} | ||
1210 | // where supported values for XXX are: | ||
1211 | // - work | ||
1212 | // - home | ||
1213 | // - cell | ||
1214 | // - main | ||
1215 | // - pager | ||
1216 | // - fax | ||
1217 | // - iphone | ||
1218 | // - other | ||
1219 | // - any other custom value | ||
1220 | // - {Email[type=XXX]} or {Email[:NUM]} or {Email[type=XXX][:NUM]} | ||
1221 | // where supported values for XXX are: | ||
1222 | // - work | ||
1223 | // - home | ||
1224 | // - mobileme | ||
1225 | // - other | ||
1226 | // - any other custom value | ||
1227 | // - {URL[type=XXX]} or {URL[:NUM]} or {URL[type=XXX][:NUM]} | ||
1228 | // where supported values for XXX are: | ||
1229 | // - work | ||
1230 | // - home | ||
1231 | // - homepage | ||
1232 | // - other | ||
1233 | // - any other custom value | ||
1234 | // - {Dates[type=XXX]} or {Dates[:NUM]} or {Dates[type=XXX][:NUM]} | ||
1235 | // where supported values for XXX are: | ||
1236 | // - anniversary | ||
1237 | // - other | ||
1238 | // - any other custom value | ||
1239 | // - {Related[type=XXX]} or {Related[:NUM]} or {Related[type=XXX][:NUM]} | ||
1240 | // where supported values for XXX are: | ||
1241 | // - manager | ||
1242 | // - assistant | ||
1243 | // - father | ||
1244 | // - mother | ||
1245 | // - parent | ||
1246 | // - brother | ||
1247 | // - sister | ||
1248 | // - child | ||
1249 | // - friend | ||
1250 | // - spouse | ||
1251 | // - partner | ||
1252 | // - other | ||
1253 | // - any other custom value | ||
1254 | // - {Profile[type=XXX]} or {Profile[:NUM]} or {Profile[type=XXX][:NUM]} | ||
1255 | // where supported values for XXX are: | ||
1256 | |||
1257 | |||
1258 | // - flickr | ||
1259 | |||
1260 | // - myspace | ||
1261 | // - sinaweibo | ||
1262 | // - any other custom value | ||
1263 | // - {IM[type=XXX]} or {IM[service-type=YYY]} or {IM[:NUM]} | ||
1264 | // where supported values for XXX are: | ||
1265 | // - work | ||
1266 | // - home | ||
1267 | // - mobileme | ||
1268 | // - other | ||
1269 | // - any other custom value | ||
1270 | // and supported values for YYY are: | ||
1271 | // - aim | ||
1272 | // - icq | ||
1273 | // - irc | ||
1274 | // - jabber | ||
1275 | // - msn | ||
1276 | // - yahoo | ||
1277 | |||
1278 | // - gadugadu | ||
1279 | // - googletalk | ||
1280 | |||
1281 | // - skype | ||
1282 | // - any other custom value | ||
1283 | // | ||
1284 | // NOTE: if you want to use the "any other custom value" option (for XXX | ||
1285 | // or YYY above) you MUST double escape the following characters: | ||
1286 | // =[]{}\ | ||
1287 | // for example: | ||
1288 | // - for profile type "=XXX=" use: '{Profile[type=\\=XXX\\=]}' | ||
1289 | // - for profile type "\XXX\" use: '{Profile[type=\\\\XXX\\\\]}' | ||
1290 | // | ||
1291 | // NOTE: if you want to use curly brackets in the format string you must | ||
1292 | // double escape it, e.g.: ['{Company}', '\\{{Department}\\}'] | ||
1293 | // | ||
1294 | // The format string (for the value option) is an array to allow full | ||
1295 | // customization of the interface. For example if: | ||
1296 | // value: ['{LastName} {MiddleName} {FirstName}'] | ||
1297 | // and the person has no middle name, then the result in the column | ||
1298 | // will be (without quotes): | ||
1299 | // "Parker Peter" (note: two space characters) | ||
1300 | // but if you use: | ||
1301 | // value: ['{LastName}', ' {MiddleName}', ' {FirstName}'] | ||
1302 | // then the result will be (without quotes): | ||
1303 | // "Parker Peter" (note: only one space character) | ||
1304 | // The reason is that only those elements of the array are appended | ||
1305 | // into the result where non-empty substitution was performed (so the | ||
1306 | // ' {MiddleName}' element in this case is ignored, because the person | ||
1307 | // in the example above has no /more precisely has empty/ middle name). | ||
1308 | // | ||
1309 | // Examples: | ||
1310 | // To specify two columns (named "Company" and "Department / LastName"), | ||
1311 | // where the first will display the company name, and the second will display | ||
1312 | // department for company contacts (with "Dep -" prefix), and lastname for | ||
1313 | // personal contacts (with "Name -" prefix) use: | ||
1314 | // var globalCollectionDisplay=[ | ||
1315 | // { | ||
1316 | // label: 'Company', | ||
1317 | // value: ['{Company}'] | ||
1318 | // }, | ||
1319 | // { | ||
1320 | // label: 'Department / LastName', | ||
1321 | // value: { | ||
1322 | // company: ['Dep - {Department}'], | ||
1323 | // personal: ['Name - {LastName}'] | ||
1324 | // } | ||
1325 | // } | ||
1326 | // ]; | ||
1327 | // To specify 3 columns (named "Categories", "URL" and "IM"), where the first | ||
1328 | // will display categories, second will display the third work URL, and third | ||
1329 | // will display ICQ IM use: | ||
1330 | // var globalCollectionDisplay=[ | ||
1331 | // { | ||
1332 | // label: 'Categories', | ||
1333 | // value: ['{Categories}'] | ||
1334 | // }, | ||
1335 | // { | ||
1336 | // label: 'URL', | ||
1337 | // value: ['{URL[type=WORK][:2]}'] | ||
1338 | // }, | ||
1339 | // { | ||
1340 | // label: 'IM', | ||
1341 | // value: ['{IM[service-type=ICQ]}'] | ||
1342 | // } | ||
1343 | // ]; | ||
1344 | // | ||
1345 | // Recommended settings if globalGroupContactsByCompanies | ||
1346 | // is set to false: | ||
1347 | // var globalCollectionDisplay=[ | ||
1348 | // { | ||
1349 | // label: '{Name}', | ||
1350 | // value: ['{LastName}', ' {MiddleName}', ' {FirstName}'] | ||
1351 | // }, | ||
1352 | // { | ||
1353 | // label: '{Company} [{Department}]', | ||
1354 | // value: ['{Company}', ' [{Department}]'] | ||
1355 | // }, | ||
1356 | // { | ||
1357 | // label: '{JobTitle}', | ||
1358 | // value: ['{JobTitle}'] | ||
1359 | // }, | ||
1360 | // { | ||
1361 | // label: '{Email}', | ||
1362 | // value: ['{Email[:0]}'] | ||
1363 | // }, | ||
1364 | // { | ||
1365 | // label: '{Phone} 1', | ||
1366 | // value: ['{Phone[:0]}'] | ||
1367 | // }, | ||
1368 | // { | ||
1369 | // label: '{Phone} 2', | ||
1370 | // value: ['{Phone[:1]}'] | ||
1371 | // }, | ||
1372 | // { | ||
1373 | // label: '{NoteText}', | ||
1374 | // value: ['{NoteText}'] | ||
1375 | // } | ||
1376 | // ]; | ||
1377 | // | ||
1378 | // Recommended settings if globalGroupContactsByCompanies | ||
1379 | // is set to true: | ||
1380 | // var globalCollectionDisplay=[ | ||
1381 | // { | ||
1382 | // label: '{Name}', | ||
1383 | // value: { | ||
1384 | // personal: ['{LastName}', ' {MiddleName}', ' {FirstName}'], | ||
1385 | // company: ['{Company}', ' [{Department}]'] | ||
1386 | // } | ||
1387 | // }, | ||
1388 | // { | ||
1389 | // label: '{JobTitle}', | ||
1390 | // value: ['{JobTitle}'] | ||
1391 | // }, | ||
1392 | // { | ||
1393 | // label: '{Email}', | ||
1394 | // value: ['{Email[:0]}'] | ||
1395 | // }, | ||
1396 | // { | ||
1397 | // label: '{Phone} 1', | ||
1398 | // value: ['{Phone[:0]}'] | ||
1399 | // }, | ||
1400 | // { | ||
1401 | // label: '{Phone} 2', | ||
1402 | // value: ['{Phone[:1]}'] | ||
1403 | // }, | ||
1404 | // { | ||
1405 | // label: '{NoteText}', | ||
1406 | // value: ['{NoteText}'] | ||
1407 | // } | ||
1408 | // ]; | ||
1409 | // | ||
1410 | // NOTE: if left undefined, the recommended settings will be used. | ||
1411 | |||
1412 | |||
1413 | // globalCollectionSort | ||
1414 | // This options sets the ordering of contacts in the interface. In general | ||
1415 | // contacts are ordered alphabetically by an internal "sort string" which | ||
1416 | // is created for each contact. Here you can specify how this internal string | ||
1417 | // is created. The value is a simple array holding only the values from the | ||
1418 | // value property defined in the globalCollectionDisplay option. | ||
1419 | // If undefined, the definition from globalCollectionDisplay is used. | ||
1420 | // Example: | ||
1421 | // var globalCollectionSort = [ | ||
1422 | // ['{LastName}'], | ||
1423 | // ['{FirstName}'], | ||
1424 | // ['{MiddleName}'], | ||
1425 | // { | ||
1426 | // company: ['{Categories}'], | ||
1427 | // personal: ['{Company}'] | ||
1428 | // } | ||
1429 | // ]; | ||
1430 | var globalCollectionSort=[ | ||
1431 | ['{LastName}'], | ||
1432 | ['{FirstName}'], | ||
1433 | ['{MiddleName}'] | ||
1434 | ]; | ||
1435 | |||
1436 | |||
1437 | // globalContactDataMinVisiblePercentage | ||
1438 | // This option defines how the width for columns are computed. If you set | ||
1439 | // it to 1 then 100% of all data in the column will be visible (the column | ||
1440 | // width is determined by the longest string in the column). If you set it | ||
1441 | // to 0.95 then 95% of data will fit into the column width, and the remaining | ||
1442 | // 5% will be truncated (" ..."). | ||
1443 | // Example: | ||
1444 | var globalContactDataMinVisiblePercentage=0.95; | ||
1445 | |||
1446 | |||
diff --git a/flakes/mypackages/pkgs/webapps/mantisbt_2/bug_report.php.diff b/flakes/mypackages/pkgs/webapps/mantisbt_2/bug_report.php.diff new file mode 100644 index 0000000..2924252 --- /dev/null +++ b/flakes/mypackages/pkgs/webapps/mantisbt_2/bug_report.php.diff | |||
@@ -0,0 +1,20 @@ | |||
1 | --- a/bug_report.php 2019-05-06 12:06:44.265508011 +0200 | ||
2 | +++ b/bug_report.php 2019-05-06 12:09:40.106952738 +0200 | ||
3 | @@ -67,6 +67,17 @@ | ||
4 | 'copy_files' => $f_copy_attachments_from_parent | ||
5 | ); | ||
6 | |||
7 | +# begin captcha check for anon user | ||
8 | +if ( current_user_is_anonymous() && get_gd_version() > 0 ) { | ||
9 | + $f_captcha = gpc_get_string( 'captcha', '' ); | ||
10 | + $f_captcha = utf8_strtolower( trim( $f_captcha ) ); | ||
11 | + | ||
12 | + $t_securimage = new Securimage(); | ||
13 | + if( $t_securimage->check( $f_captcha ) == false ) { | ||
14 | + trigger_error( ERROR_SIGNUP_NOT_MATCHING_CAPTCHA, ERROR ); | ||
15 | + } | ||
16 | +} | ||
17 | + | ||
18 | if( $f_master_bug_id > 0 ) { | ||
19 | bug_ensure_exists( $f_master_bug_id ); | ||
20 | |||
diff --git a/flakes/mypackages/pkgs/webapps/mantisbt_2/bug_report_page.php.diff b/flakes/mypackages/pkgs/webapps/mantisbt_2/bug_report_page.php.diff new file mode 100644 index 0000000..80dea91 --- /dev/null +++ b/flakes/mypackages/pkgs/webapps/mantisbt_2/bug_report_page.php.diff | |||
@@ -0,0 +1,53 @@ | |||
1 | --- a/bug_report_page.php 2018-02-10 21:29:27.000000000 +0100 | ||
2 | +++ b/bug_report_page.php 2018-03-03 15:04:19.622499678 +0100 | ||
3 | @@ -708,7 +708,50 @@ | ||
4 | <span class="lbl padding-6"><?php echo lang_get( 'check_report_more_bugs' ) ?></span> | ||
5 | </label> | ||
6 | </td> | ||
7 | </tr> | ||
8 | +<?php | ||
9 | + # captcha image requires GD library and related option to ON | ||
10 | + if( current_user_is_anonymous() && get_gd_version() > 0 ) { | ||
11 | + $t_securimage_path = 'vendor/dapphp/securimage'; | ||
12 | + $t_securimage_show = $t_securimage_path . '/securimage_show.php'; | ||
13 | + $t_securimage_play = $t_securimage_path . '/securimage_play.swf?' | ||
14 | + . http_build_query( array( | ||
15 | + 'audio_file' => $t_securimage_path . '/securimage_play.php', | ||
16 | + 'bgColor1=' => '#fff', | ||
17 | + 'bgColor2=' => '#fff', | ||
18 | + 'iconColor=' => '#777', | ||
19 | + 'borderWidth=' => 1, | ||
20 | + 'borderColor=' => '#000', | ||
21 | + ) ); | ||
22 | +?> | ||
23 | + <tr> | ||
24 | + <th class="category">CAPTCHA</th> | ||
25 | + <td> | ||
26 | + | ||
27 | + <label for="captcha-field" class="block clearfix"> | ||
28 | + <strong><?php echo lang_get( 'signup_captcha_request_label' ); ?></strong> | ||
29 | + </label> | ||
30 | + <span id="captcha-input" class="input"> | ||
31 | + <?php print_captcha_input( 'captcha' ); ?> | ||
32 | + | ||
33 | + <span id="captcha-image" class="captcha-image" style="padding-right:3px;"> | ||
34 | + <img src="<?php echo $t_securimage_show; ?>" alt="visual captcha" /> | ||
35 | + <ul id="captcha-refresh"><li><a href="#"><?php | ||
36 | + echo lang_get( 'signup_captcha_refresh' ); | ||
37 | + ?></a></li></ul> | ||
38 | + </span> | ||
39 | + | ||
40 | + <object type="application/x-shockwave-flash" width="19" height="19" | ||
41 | + data="<?php echo $t_securimage_play; ?>"> | ||
42 | + <param name="movie" value="<?php echo $t_securimage_play; ?>" /> | ||
43 | + </object> | ||
44 | + </span> | ||
45 | + </td> | ||
46 | + </tr> | ||
47 | +<?php | ||
48 | + } | ||
49 | +?> | ||
50 | + | ||
51 | </table> | ||
52 | </div> | ||
53 | </div> | ||
diff --git a/flakes/mypackages/pkgs/webapps/mantisbt_2/bugnote_add.php.diff b/flakes/mypackages/pkgs/webapps/mantisbt_2/bugnote_add.php.diff new file mode 100644 index 0000000..4509f0a --- /dev/null +++ b/flakes/mypackages/pkgs/webapps/mantisbt_2/bugnote_add.php.diff | |||
@@ -0,0 +1,20 @@ | |||
1 | --- a/bugnote_add.php 2018-02-10 21:29:27.000000000 +0100 | ||
2 | +++ b/bugnote_add.php 2018-03-03 15:13:12.439919511 +0100 | ||
3 | @@ -44,6 +44,17 @@ | ||
4 | |||
5 | $t_query = array( 'issue_id' => $f_bug_id ); | ||
6 | |||
7 | +# begin captcha check for anon user | ||
8 | +if ( current_user_is_anonymous() && get_gd_version() > 0 ) { | ||
9 | + $f_captcha = gpc_get_string( 'captcha', '' ); | ||
10 | + $f_captcha = utf8_strtolower( trim( $f_captcha ) ); | ||
11 | + | ||
12 | + $t_securimage = new Securimage(); | ||
13 | + if( $t_securimage->check( $f_captcha ) == false ) { | ||
14 | + trigger_error( ERROR_SIGNUP_NOT_MATCHING_CAPTCHA, ERROR ); | ||
15 | + } | ||
16 | +} | ||
17 | + | ||
18 | if( count( $f_files ) > 0 && is_blank( $f_text ) && helper_duration_to_minutes( $f_duration ) == 0 ) { | ||
19 | $t_payload = array( | ||
20 | 'files' => helper_array_transpose( $f_files ) | ||
diff --git a/flakes/mypackages/pkgs/webapps/mantisbt_2/bugnote_add_inc.php.diff b/flakes/mypackages/pkgs/webapps/mantisbt_2/bugnote_add_inc.php.diff new file mode 100644 index 0000000..a8589c7 --- /dev/null +++ b/flakes/mypackages/pkgs/webapps/mantisbt_2/bugnote_add_inc.php.diff | |||
@@ -0,0 +1,52 @@ | |||
1 | --- a/bugnote_add_inc.php 2018-02-10 21:29:27.000000000 +0100 | ||
2 | +++ b/bugnote_add_inc.php 2018-03-03 15:14:27.332428557 +0100 | ||
3 | @@ -119,6 +119,49 @@ | ||
4 | <textarea name="bugnote_text" id="bugnote_text" class="<?php echo $t_bugnote_class ?>" rows="7"></textarea> | ||
5 | </td> | ||
6 | </tr> | ||
7 | +<?php | ||
8 | + # captcha image requires GD library and related option to ON | ||
9 | + if( current_user_is_anonymous() && get_gd_version() > 0 ) { | ||
10 | + $t_securimage_path = 'vendor/dapphp/securimage'; | ||
11 | + $t_securimage_show = $t_securimage_path . '/securimage_show.php'; | ||
12 | + $t_securimage_play = $t_securimage_path . '/securimage_play.swf?' | ||
13 | + . http_build_query( array( | ||
14 | + 'audio_file' => $t_securimage_path . '/securimage_play.php', | ||
15 | + 'bgColor1=' => '#fff', | ||
16 | + 'bgColor2=' => '#fff', | ||
17 | + 'iconColor=' => '#777', | ||
18 | + 'borderWidth=' => 1, | ||
19 | + 'borderColor=' => '#000', | ||
20 | + ) ); | ||
21 | +?> | ||
22 | + <tr> | ||
23 | + <th class="category">CAPTCHA</th> | ||
24 | + <td> | ||
25 | + | ||
26 | + <label for="captcha-field" class="block clearfix"> | ||
27 | + <strong><?php echo lang_get( 'signup_captcha_request_label' ); ?></strong> | ||
28 | + </label> | ||
29 | + <span id="captcha-input" class="input"> | ||
30 | + <?php print_captcha_input( 'captcha' ); ?> | ||
31 | + | ||
32 | + <span id="captcha-image" class="captcha-image" style="padding-right:3px;"> | ||
33 | + <img src="<?php echo $t_securimage_show; ?>" alt="visual captcha" /> | ||
34 | + <ul id="captcha-refresh"><li><a href="#"><?php | ||
35 | + echo lang_get( 'signup_captcha_refresh' ); | ||
36 | + ?></a></li></ul> | ||
37 | + </span> | ||
38 | + | ||
39 | + <object type="application/x-shockwave-flash" width="19" height="19" | ||
40 | + data="<?php echo $t_securimage_play; ?>"> | ||
41 | + <param name="movie" value="<?php echo $t_securimage_play; ?>" /> | ||
42 | + </object> | ||
43 | + </span> | ||
44 | + </td> | ||
45 | + </tr> | ||
46 | +<?php | ||
47 | + } | ||
48 | +?> | ||
49 | + | ||
50 | |||
51 | <?php | ||
52 | if( config_get( 'time_tracking_enabled' ) ) { | ||
diff --git a/flakes/mypackages/pkgs/webapps/mantisbt_2/default.nix b/flakes/mypackages/pkgs/webapps/mantisbt_2/default.nix new file mode 100644 index 0000000..466595d --- /dev/null +++ b/flakes/mypackages/pkgs/webapps/mantisbt_2/default.nix | |||
@@ -0,0 +1,44 @@ | |||
1 | { mantis_config ? "/etc/mantisbt/config_inc.php", stdenv, fetchurl, lib, callPackage}: | ||
2 | let | ||
3 | pluginNames = [ "slack" "source-integration" ]; | ||
4 | allPlugins = lib.attrsets.genAttrs pluginNames | ||
5 | (name: callPackage (./plugins + "/${name}") {}); | ||
6 | toPassthru = pkg: plugins: { | ||
7 | inherit plugins allPlugins; | ||
8 | pluginNames = map (n: n.pluginName) plugins; | ||
9 | withPlugins = withPlugins pkg; | ||
10 | }; | ||
11 | withPlugins = pkg: toPlugins: | ||
12 | let | ||
13 | plugins = toPlugins allPlugins; | ||
14 | toInstallPlugin = n: | ||
15 | if builtins.hasAttr "selector" n then | ||
16 | "ln -sf ${n}/${n.selector} $out/plugins/" | ||
17 | else | ||
18 | "ln -sf ${n} $out/plugins/${n.pluginName}"; | ||
19 | newMantisbt = pkg.overrideAttrs(old: { | ||
20 | installPhase = old.installPhase + "\n" + builtins.concatStringsSep "\n" (map toInstallPlugin plugins); | ||
21 | passthru = toPassthru newMantisbt (pkg.plugins ++ plugins); | ||
22 | }); | ||
23 | in newMantisbt; | ||
24 | package = stdenv.mkDerivation rec { | ||
25 | name = "mantisbt-${version}"; | ||
26 | version = "2.21.0"; | ||
27 | src = fetchurl { | ||
28 | url = "https://downloads.sourceforge.net/project/mantisbt/mantis-stable/${version}/${name}.tar.gz"; | ||
29 | sha256 = "13lx569dp1gibq5daqp7dj6gsqic85rrix1s7xkp60gwpzk8wiw5"; | ||
30 | }; | ||
31 | patches = [ | ||
32 | ./bug_report.php.diff | ||
33 | ./bug_report_page.php.diff | ||
34 | ./bugnote_add.php.diff | ||
35 | ./bugnote_add_inc.php.diff | ||
36 | ]; | ||
37 | installPhase = '' | ||
38 | cp -a . $out | ||
39 | ln -s ${mantis_config} $out/config/config_inc.php | ||
40 | ''; | ||
41 | |||
42 | passthru = toPassthru package []; | ||
43 | }; | ||
44 | in package | ||
diff --git a/flakes/mypackages/pkgs/webapps/mantisbt_2/plugins/slack/default.nix b/flakes/mypackages/pkgs/webapps/mantisbt_2/plugins/slack/default.nix new file mode 100644 index 0000000..61ed15f --- /dev/null +++ b/flakes/mypackages/pkgs/webapps/mantisbt_2/plugins/slack/default.nix | |||
@@ -0,0 +1,18 @@ | |||
1 | { stdenv, fetchFromGitHub }: | ||
2 | stdenv.mkDerivation rec { | ||
3 | passthru = { | ||
4 | pluginName = "Slack"; | ||
5 | }; | ||
6 | version = "9286d2e-master"; | ||
7 | name = "mantisbt-plugin-slack-${version}"; | ||
8 | src = fetchFromGitHub { | ||
9 | owner = "mantisbt-plugins"; | ||
10 | repo = "Slack"; | ||
11 | rev = "9286d2eeeb8a986ed949e378711fef5f0bf182dc"; | ||
12 | sha256 = "0nn0v4jc967giilkzrppi5svd04m2hnals75xxp0iabcdjnih0mn"; | ||
13 | }; | ||
14 | installPhase = '' | ||
15 | sed -i -e "s/return '@' . \\\$username;/return \\\$username;/" Slack.php | ||
16 | cp -a . $out | ||
17 | ''; | ||
18 | } | ||
diff --git a/flakes/mypackages/pkgs/webapps/mantisbt_2/plugins/source-integration/Source.API.php.diff b/flakes/mypackages/pkgs/webapps/mantisbt_2/plugins/source-integration/Source.API.php.diff new file mode 100644 index 0000000..c355144 --- /dev/null +++ b/flakes/mypackages/pkgs/webapps/mantisbt_2/plugins/source-integration/Source.API.php.diff | |||
@@ -0,0 +1,12 @@ | |||
1 | --- b/Source/Source.API.php 2017-09-18 00:50:32.000000000 +0200 | ||
2 | +++ a/Source/Source.API.php 2018-03-04 19:00:25.578889039 +0100 | ||
3 | @@ -452,6 +452,9 @@ | ||
4 | # Allow other plugins to post-process commit data | ||
5 | event_signal( 'EVENT_SOURCE_COMMITS', array( $p_changesets ) ); | ||
6 | event_signal( 'EVENT_SOURCE_FIXED', array( $t_fixed_bugs ) ); | ||
7 | + foreach( $t_fixed_bugs as $t_bug_id => $t_changeset ) { | ||
8 | + event_signal( 'EVENT_BUG_ACTION', array('RESOLVE', $t_bug_id) ); | ||
9 | + } | ||
10 | } | ||
11 | |||
12 | /** | ||
diff --git a/flakes/mypackages/pkgs/webapps/mantisbt_2/plugins/source-integration/default.nix b/flakes/mypackages/pkgs/webapps/mantisbt_2/plugins/source-integration/default.nix new file mode 100644 index 0000000..1ab00c5 --- /dev/null +++ b/flakes/mypackages/pkgs/webapps/mantisbt_2/plugins/source-integration/default.nix | |||
@@ -0,0 +1,22 @@ | |||
1 | { stdenv, fetchFromGitHub }: | ||
2 | stdenv.mkDerivation rec { | ||
3 | version = "v2.2.0"; | ||
4 | name = "mantisbt-plugin-source-integration-${version}"; | ||
5 | src = fetchFromGitHub { | ||
6 | owner = "mantisbt-plugins"; | ||
7 | repo = "source-integration"; | ||
8 | rev = "44fc9e2e770aff4f40f56833f26a86ce0e2deb76"; | ||
9 | sha256 = "0gcm6kqqijnv303sk59zn27adwx5vkr545mwzyaq2nrpxnkwdy5b"; | ||
10 | }; | ||
11 | patches = [ | ||
12 | ./Source.API.php.diff | ||
13 | ]; | ||
14 | installPhase = '' | ||
15 | mkdir $out | ||
16 | cp -a Source* $out/ | ||
17 | ''; | ||
18 | passthru = { | ||
19 | pluginName = "source-integration"; | ||
20 | selector = "Source*"; | ||
21 | }; | ||
22 | } | ||
diff --git a/flakes/mypackages/pkgs/webapps/nextcloud/apps/audioplayer.nix b/flakes/mypackages/pkgs/webapps/nextcloud/apps/audioplayer.nix new file mode 100644 index 0000000..6e7380c --- /dev/null +++ b/flakes/mypackages/pkgs/webapps/nextcloud/apps/audioplayer.nix | |||
@@ -0,0 +1,15 @@ | |||
1 | { buildApp, nextcloudVersion }: | ||
2 | let | ||
3 | audioplayer_3_4_0 = buildApp rec { | ||
4 | appName = "audioplayer"; | ||
5 | version = "3.4.0"; | ||
6 | url = "https://github.com/Rello/${appName}/releases/download/${version}/${appName}-${version}.tar.gz"; | ||
7 | sha256 = "sha256-pog9cll02+AbYHG/jiUztO9odqu7PSEWBUieK32Eqf4="; | ||
8 | }; | ||
9 | versions = { | ||
10 | "25" = audioplayer_3_4_0; | ||
11 | "26" = audioplayer_3_4_0; | ||
12 | "27" = audioplayer_3_4_0; | ||
13 | }; | ||
14 | in | ||
15 | versions."${builtins.toString nextcloudVersion}" or (throw "Unsupported version for nextcloud app audioplayer") | ||
diff --git a/flakes/mypackages/pkgs/webapps/nextcloud/apps/bookmarks.nix b/flakes/mypackages/pkgs/webapps/nextcloud/apps/bookmarks.nix new file mode 100644 index 0000000..0503e5b --- /dev/null +++ b/flakes/mypackages/pkgs/webapps/nextcloud/apps/bookmarks.nix | |||
@@ -0,0 +1,21 @@ | |||
1 | { buildApp, nextcloudVersion }: | ||
2 | let | ||
3 | bookmarks_12_1_0 = buildApp rec { | ||
4 | appName = "bookmarks"; | ||
5 | version = "12.1.0"; | ||
6 | url = "https://github.com/nextcloud/${appName}/releases/download/v${version}/${appName}-${version}.tar.gz"; | ||
7 | sha256 = "sha256-NVyaVeg/UPgFaW/iCZiJkw1l5Vqc+S/4FMfFhHCBUTo="; | ||
8 | }; | ||
9 | bookmarks_13_0_1 = buildApp rec { | ||
10 | appName = "bookmarks"; | ||
11 | version = "13.0.1"; | ||
12 | url = "https://github.com/nextcloud/${appName}/releases/download/v${version}/${appName}-${version}.tar.gz"; | ||
13 | sha256 = "sha256-7Gx8e8C2dDkB/39eAGKOLrP3YkVbGkfPKpQBeCaV/cE="; | ||
14 | }; | ||
15 | versions = { | ||
16 | "25" = bookmarks_12_1_0; | ||
17 | "26" = bookmarks_13_0_1; | ||
18 | "27" = bookmarks_13_0_1; | ||
19 | }; | ||
20 | in | ||
21 | versions."${builtins.toString nextcloudVersion}" or (throw "Unsupported version for nextcloud app bookmarks") | ||
diff --git a/flakes/mypackages/pkgs/webapps/nextcloud/apps/calendar.nix b/flakes/mypackages/pkgs/webapps/nextcloud/apps/calendar.nix new file mode 100644 index 0000000..497d4ba --- /dev/null +++ b/flakes/mypackages/pkgs/webapps/nextcloud/apps/calendar.nix | |||
@@ -0,0 +1,15 @@ | |||
1 | { buildApp, nextcloudVersion }: | ||
2 | let | ||
3 | calendar_4_4_4 = buildApp rec { | ||
4 | appName = "calendar"; | ||
5 | version = "4.4.4"; | ||
6 | url = "https://github.com/nextcloud-releases/${appName}/releases/download/v${version}/${appName}-v${version}.tar.gz"; | ||
7 | sha256 = "sha256-8UeHOpgbUf2oHHOvLN58v68QvyDYQXkSjsVKn6UGrGU="; | ||
8 | }; | ||
9 | versions = { | ||
10 | "25" = calendar_4_4_4; | ||
11 | "26" = calendar_4_4_4; | ||
12 | "27" = calendar_4_4_4; | ||
13 | }; | ||
14 | in | ||
15 | versions."${builtins.toString nextcloudVersion}" or (throw "Unsupported version for nextcloud app calendar") | ||
diff --git a/flakes/mypackages/pkgs/webapps/nextcloud/apps/carnet.nix b/flakes/mypackages/pkgs/webapps/nextcloud/apps/carnet.nix new file mode 100644 index 0000000..05f0928 --- /dev/null +++ b/flakes/mypackages/pkgs/webapps/nextcloud/apps/carnet.nix | |||
@@ -0,0 +1,15 @@ | |||
1 | { buildApp, nextcloudVersion }: | ||
2 | let | ||
3 | carnet_0_25_2 = buildApp rec { | ||
4 | appName = "carnet"; | ||
5 | version = "0.25.2"; | ||
6 | url = "https://github.com/PhieF/CarnetNextcloud/releases/download/v${version}/${appName}-nc-v${version}.tar.gz"; | ||
7 | sha256 = "sha256-HArD+M6UA9BhSsrlpp/gsKWkUTWAoNHl/gr0S3AlKzg="; | ||
8 | }; | ||
9 | versions = { | ||
10 | "25" = carnet_0_25_2; | ||
11 | "26" = carnet_0_25_2; | ||
12 | "27" = carnet_0_25_2; | ||
13 | }; | ||
14 | in | ||
15 | versions."${builtins.toString nextcloudVersion}" or (throw "Unsupported version for nextcloud app carnet") | ||
diff --git a/flakes/mypackages/pkgs/webapps/nextcloud/apps/contacts.nix b/flakes/mypackages/pkgs/webapps/nextcloud/apps/contacts.nix new file mode 100644 index 0000000..f8931b7 --- /dev/null +++ b/flakes/mypackages/pkgs/webapps/nextcloud/apps/contacts.nix | |||
@@ -0,0 +1,15 @@ | |||
1 | { buildApp, nextcloudVersion }: | ||
2 | let | ||
3 | contacts_5_3_2 = buildApp rec { | ||
4 | appName = "contacts"; | ||
5 | version = "5.3.2"; | ||
6 | url = "https://github.com/nextcloud-releases/${appName}/releases/download/v${version}/${appName}-v${version}.tar.gz"; | ||
7 | sha256 = "sha256-1jQ+pyLBPU7I4wSPkmezJq7ukrQh8WPErG4J6Ps3LR4="; | ||
8 | }; | ||
9 | versions = { | ||
10 | "25" = contacts_5_3_2; | ||
11 | "26" = contacts_5_3_2; | ||
12 | "27" = contacts_5_3_2; | ||
13 | }; | ||
14 | in | ||
15 | versions."${builtins.toString nextcloudVersion}" or (throw "Unsupported version for nextcloud app contacts") | ||
diff --git a/flakes/mypackages/pkgs/webapps/nextcloud/apps/cookbook.nix b/flakes/mypackages/pkgs/webapps/nextcloud/apps/cookbook.nix new file mode 100644 index 0000000..32fdcc0 --- /dev/null +++ b/flakes/mypackages/pkgs/webapps/nextcloud/apps/cookbook.nix | |||
@@ -0,0 +1,15 @@ | |||
1 | { buildApp, nextcloudVersion }: | ||
2 | let | ||
3 | cookbook_0_10_2 = buildApp rec { | ||
4 | appName = "cookbook"; | ||
5 | version = "0.10.2"; | ||
6 | url = "https://github.com/nextcloud/${appName}/releases/download/v${version}/Cookbook-${version}.tar.gz"; | ||
7 | sha256 = "sha256-H7KVeISBnu0/4Q31ihhiXvRtkXz4yLGOAsAj5ERgeCM="; | ||
8 | }; | ||
9 | versions = { | ||
10 | "25" = cookbook_0_10_2; | ||
11 | "26" = cookbook_0_10_2; | ||
12 | "27" = cookbook_0_10_2; | ||
13 | }; | ||
14 | in | ||
15 | versions."${builtins.toString nextcloudVersion}" or (throw "Unsupported version for nextcloud app cookbook") | ||
diff --git a/flakes/mypackages/pkgs/webapps/nextcloud/apps/deck.nix b/flakes/mypackages/pkgs/webapps/nextcloud/apps/deck.nix new file mode 100644 index 0000000..c5dd2d3 --- /dev/null +++ b/flakes/mypackages/pkgs/webapps/nextcloud/apps/deck.nix | |||
@@ -0,0 +1,27 @@ | |||
1 | { buildApp, nextcloudVersion }: | ||
2 | let | ||
3 | deck_1_8_5 = buildApp rec { | ||
4 | appName = "deck"; | ||
5 | version = "1.8.5"; | ||
6 | url = "https://github.com/nextcloud-releases/${appName}/releases/download/v${version}/${appName}-v${version}.tar.gz"; | ||
7 | sha256 = "sha256-KsSSl9orqMEKJlBftHwCi/dh+aMCxZqjS7kPT0uDZlE="; | ||
8 | }; | ||
9 | deck_1_9_2 = buildApp rec { | ||
10 | appName = "deck"; | ||
11 | version = "1.9.2"; | ||
12 | url = "https://github.com/nextcloud-releases/${appName}/releases/download/v${version}/${appName}-v${version}.tar.gz"; | ||
13 | sha256 = "sha256-h1fmT4CCEFDZPBwFDIBLmFGJmO1Wt3a5nVXX5xCk0o0="; | ||
14 | }; | ||
15 | deck_1_10_0 = buildApp rec { | ||
16 | appName = "deck"; | ||
17 | version = "1.10.0"; | ||
18 | url = "https://github.com/nextcloud-releases/${appName}/releases/download/v${version}/${appName}-v${version}.tar.gz"; | ||
19 | sha256 = "sha256-W0XVvhTQoCjoK7S2tEd7bvU0MTWtqYt7QiB9H1p1UP8="; | ||
20 | }; | ||
21 | versions = { | ||
22 | "25" = deck_1_8_5; | ||
23 | "26" = deck_1_9_2; | ||
24 | "27" = deck_1_10_0; | ||
25 | }; | ||
26 | in | ||
27 | versions."${builtins.toString nextcloudVersion}" or (throw "Unsupported version for nextcloud app deck") | ||
diff --git a/flakes/mypackages/pkgs/webapps/nextcloud/apps/drawio.nix b/flakes/mypackages/pkgs/webapps/nextcloud/apps/drawio.nix new file mode 100644 index 0000000..c03c479 --- /dev/null +++ b/flakes/mypackages/pkgs/webapps/nextcloud/apps/drawio.nix | |||
@@ -0,0 +1,24 @@ | |||
1 | { buildApp, nextcloudVersion }: | ||
2 | let | ||
3 | otherConfig = { | ||
4 | mimetypealiases = { | ||
5 | "application/x-drawio" = "drawio"; | ||
6 | }; | ||
7 | mimetypemapping = { | ||
8 | "drawio" = ["application/x-drawio"]; | ||
9 | }; | ||
10 | }; | ||
11 | drawio_2_1_2 = buildApp rec { | ||
12 | appName = "drawio"; | ||
13 | version = "2.1.2"; | ||
14 | url = "https://github.com/jgraph/drawio-nextcloud/releases/download/v${version}/${appName}-v${version}.tar.gz"; | ||
15 | sha256 = "sha256-5BrEnS2cMk/vwkAr1lXKtfocqReZAj1+pbDqmi/uG0A="; | ||
16 | inherit otherConfig; | ||
17 | }; | ||
18 | versions = { | ||
19 | "25" = drawio_2_1_2; | ||
20 | "26" = drawio_2_1_2; | ||
21 | "27" = drawio_2_1_2; | ||
22 | }; | ||
23 | in | ||
24 | versions."${builtins.toString nextcloudVersion}" or (throw "Unsupported version for nextcloud app drawio") | ||
diff --git a/flakes/mypackages/pkgs/webapps/nextcloud/apps/external.nix b/flakes/mypackages/pkgs/webapps/nextcloud/apps/external.nix new file mode 100644 index 0000000..941304a --- /dev/null +++ b/flakes/mypackages/pkgs/webapps/nextcloud/apps/external.nix | |||
@@ -0,0 +1,27 @@ | |||
1 | { buildApp, nextcloudVersion }: | ||
2 | let | ||
3 | external_5_0_2 = buildApp rec { | ||
4 | appName = "external"; | ||
5 | version = "5.0.2"; | ||
6 | url = "https://github.com/nextcloud-releases/${appName}/releases/download/v${version}/${appName}-v${version}.tar.gz"; | ||
7 | sha256 = "sha256-Bkk9X1tVonKsiA3YlKux2y8K7HdJv4qM/eJ9TP+i17I="; | ||
8 | }; | ||
9 | external_5_1_0 = buildApp rec { | ||
10 | appName = "external"; | ||
11 | version = "5.1.0"; | ||
12 | url = "https://github.com/nextcloud-releases/${appName}/releases/download/v${version}/${appName}-v${version}.tar.gz"; | ||
13 | sha256 = "sha256-EMKWSXufw4FMyaN2f37yifrpUm6QBqqpPPFmvLvYYmY="; | ||
14 | }; | ||
15 | external_5_2_0 = buildApp rec { | ||
16 | appName = "external"; | ||
17 | version = "5.2.0"; | ||
18 | url = "https://github.com/nextcloud-releases/${appName}/releases/download/v${version}/${appName}-v${version}.tar.gz"; | ||
19 | sha256 = "sha256-XqeJCWS8mncS7CfrnXdhtzdgkFTib/RnursJ/AqyvD8="; | ||
20 | }; | ||
21 | versions = { | ||
22 | "25" = external_5_0_2; | ||
23 | "26" = external_5_1_0; | ||
24 | "27" = external_5_2_0; | ||
25 | }; | ||
26 | in | ||
27 | versions."${builtins.toString nextcloudVersion}" or (throw "Unsupported version for nextcloud app external") | ||
diff --git a/flakes/mypackages/pkgs/webapps/nextcloud/apps/extract.nix b/flakes/mypackages/pkgs/webapps/nextcloud/apps/extract.nix new file mode 100644 index 0000000..589115e --- /dev/null +++ b/flakes/mypackages/pkgs/webapps/nextcloud/apps/extract.nix | |||
@@ -0,0 +1,15 @@ | |||
1 | { buildApp, nextcloudVersion }: | ||
2 | let | ||
3 | extract_1_3_6 = buildApp rec { | ||
4 | appName = "extract"; | ||
5 | version = "1.3.6"; | ||
6 | url = "https://github.com/PaulLereverend/NextcloudExtract/releases/download/${version}/${appName}.tar.gz"; | ||
7 | sha256 = "sha256-y1NacOWnCd/f5sOeEOLeZrWnqwi8q/XezOrhT7AzV/o="; | ||
8 | }; | ||
9 | versions = { | ||
10 | "25" = extract_1_3_6; | ||
11 | "26" = extract_1_3_6; | ||
12 | "27" = extract_1_3_6; | ||
13 | }; | ||
14 | in | ||
15 | versions."${builtins.toString nextcloudVersion}" or (throw "Unsupported version for nextcloud app extract") | ||
diff --git a/flakes/mypackages/pkgs/webapps/nextcloud/apps/files_markdown.nix b/flakes/mypackages/pkgs/webapps/nextcloud/apps/files_markdown.nix new file mode 100644 index 0000000..cf8e179 --- /dev/null +++ b/flakes/mypackages/pkgs/webapps/nextcloud/apps/files_markdown.nix | |||
@@ -0,0 +1,15 @@ | |||
1 | { buildApp, nextcloudVersion }: | ||
2 | let | ||
3 | files_markdown_2_4_1 = buildApp rec { | ||
4 | appName = "files_markdown"; | ||
5 | version = "2.4.1"; | ||
6 | url = "https://github.com/icewind1991/${appName}/releases/download/v${version}/${appName}-v${version}.tar.gz"; | ||
7 | sha256 = "sha256-6A9IMfRbKcF1+et7pzFF4zlZDmegx562cnyYsOFsVzU="; | ||
8 | }; | ||
9 | versions = { | ||
10 | "25" = files_markdown_2_4_1; | ||
11 | "26" = files_markdown_2_4_1; | ||
12 | "27" = files_markdown_2_4_1; | ||
13 | }; | ||
14 | in | ||
15 | versions."${builtins.toString nextcloudVersion}" or (throw "Unsupported version for nextcloud app files_markdown") | ||
diff --git a/flakes/mypackages/pkgs/webapps/nextcloud/apps/files_mindmap.nix b/flakes/mypackages/pkgs/webapps/nextcloud/apps/files_mindmap.nix new file mode 100644 index 0000000..fff85d7 --- /dev/null +++ b/flakes/mypackages/pkgs/webapps/nextcloud/apps/files_mindmap.nix | |||
@@ -0,0 +1,15 @@ | |||
1 | { buildApp, nextcloudVersion }: | ||
2 | let | ||
3 | files_mindmap_0_0_28 = buildApp rec { | ||
4 | appName = "files_mindmap"; | ||
5 | version = "0.0.28"; | ||
6 | url = "https://github.com/ACTom/${appName}/releases/download/v${version}/${appName}-${version}.tar.gz"; | ||
7 | sha256 = "sha256-VlzqstlsdinaqkbK32NvS1oFoQcFasJGHSlcKxdQwIM="; | ||
8 | }; | ||
9 | versions = { | ||
10 | "25" = files_mindmap_0_0_28; | ||
11 | "26" = files_mindmap_0_0_28; | ||
12 | "27" = files_mindmap_0_0_28; | ||
13 | }; | ||
14 | in | ||
15 | versions."${builtins.toString nextcloudVersion}" or (throw "Unsupported version for nextcloud app files_mindmap") | ||
diff --git a/flakes/mypackages/pkgs/webapps/nextcloud/apps/files_readmemd.nix b/flakes/mypackages/pkgs/webapps/nextcloud/apps/files_readmemd.nix new file mode 100644 index 0000000..97aeaf7 --- /dev/null +++ b/flakes/mypackages/pkgs/webapps/nextcloud/apps/files_readmemd.nix | |||
@@ -0,0 +1,14 @@ | |||
1 | { buildApp, nextcloudVersion }: | ||
2 | let | ||
3 | files_readmemd_2_0_0 = buildApp rec { | ||
4 | appName = "files_readmemd"; | ||
5 | version = "2.0.0"; | ||
6 | url = "https://github.com/mamatt/files_readmemd/releases/download/V${version}/${appName}.tar.gz"; | ||
7 | sha256 = "sha256-vUoSK+b4gj51eJcocrXINO/eFKPRZQoj0q6l0gVBqgw="; | ||
8 | }; | ||
9 | versions = { | ||
10 | "25" = files_readmemd_2_0_0; | ||
11 | "26" = files_readmemd_2_0_0; | ||
12 | }; | ||
13 | in | ||
14 | versions."${builtins.toString nextcloudVersion}" or (throw "Unsupported version for nextcloud app files_readmemd") | ||
diff --git a/flakes/mypackages/pkgs/webapps/nextcloud/apps/flowupload.nix b/flakes/mypackages/pkgs/webapps/nextcloud/apps/flowupload.nix new file mode 100644 index 0000000..55f4ba7 --- /dev/null +++ b/flakes/mypackages/pkgs/webapps/nextcloud/apps/flowupload.nix | |||
@@ -0,0 +1,14 @@ | |||
1 | { buildApp, nextcloudVersion }: | ||
2 | let | ||
3 | flowupload_1_1_3 = buildApp rec { | ||
4 | appName = "flowupload"; | ||
5 | version = "1.1.3"; | ||
6 | url = "https://github.com/e-alfred/${appName}/releases/download/${version}/${appName}-${version}.tar.gz"; | ||
7 | sha256 = "0d1xvimd4hzd0jpvv1h89zfqv3ajlrrm1xdbggvjhk9bllwqgxng"; | ||
8 | }; | ||
9 | versions = { | ||
10 | "22" = flowupload_1_1_3; | ||
11 | "23" = flowupload_1_1_3; | ||
12 | }; | ||
13 | in | ||
14 | versions."${builtins.toString nextcloudVersion}" or (throw "Unsupported version for nextcloud app flowupload") | ||
diff --git a/flakes/mypackages/pkgs/webapps/nextcloud/apps/gpxedit.nix b/flakes/mypackages/pkgs/webapps/nextcloud/apps/gpxedit.nix new file mode 100644 index 0000000..be230fd --- /dev/null +++ b/flakes/mypackages/pkgs/webapps/nextcloud/apps/gpxedit.nix | |||
@@ -0,0 +1,22 @@ | |||
1 | { buildApp, nextcloudVersion }: | ||
2 | let | ||
3 | gpxedit_0_0_14 = buildApp rec { | ||
4 | appName = "gpxedit"; | ||
5 | version = "0.0.14"; | ||
6 | url = "https://gitlab.com/eneiluj/gpxedit-oc/wikis/uploads/5b184c24f9e767ad19a84e177a9b473c/${appName}-${version}.tar.gz"; | ||
7 | sha256 = "1kgpcxps73l83krrjxdzh4vzacja4m3vwidf9kidgqq505cgzq90"; | ||
8 | otherConfig = { | ||
9 | mimetypealiases = { | ||
10 | "application/gpx+xml" = "gpx"; | ||
11 | }; | ||
12 | mimetypemapping = { | ||
13 | "gpx" = ["application/gpx+xml"]; | ||
14 | }; | ||
15 | }; | ||
16 | }; | ||
17 | versions = { | ||
18 | "22" = gpxedit_0_0_14; | ||
19 | "23" = gpxedit_0_0_14; | ||
20 | }; | ||
21 | in | ||
22 | versions."${builtins.toString nextcloudVersion}" or (throw "Unsupported version for nextcloud app gpxedit") | ||
diff --git a/flakes/mypackages/pkgs/webapps/nextcloud/apps/gpxpod.nix b/flakes/mypackages/pkgs/webapps/nextcloud/apps/gpxpod.nix new file mode 100644 index 0000000..5a3b7e7 --- /dev/null +++ b/flakes/mypackages/pkgs/webapps/nextcloud/apps/gpxpod.nix | |||
@@ -0,0 +1,31 @@ | |||
1 | { buildApp, nextcloudVersion }: | ||
2 | let | ||
3 | otherConfig = { | ||
4 | mimetypealiases = { | ||
5 | "application/gpx+xml" = "gpx"; | ||
6 | }; | ||
7 | mimetypemapping = { | ||
8 | "gpx" = ["application/gpx+xml"]; | ||
9 | }; | ||
10 | }; | ||
11 | gpxpod_5_0_10 = buildApp rec { | ||
12 | appName = "gpxpod"; | ||
13 | version = "5.0.10"; | ||
14 | url = "https://github.com/julien-nc/gpxpod/releases/download/v${version}/${appName}-${version}.tar.gz"; | ||
15 | sha256 = "sha256-Ylhl9jdOxG+Qfk5zgNO8FwOtAzrjGHS66y59qmorXPU="; | ||
16 | inherit otherConfig; | ||
17 | }; | ||
18 | gpxpod_5_0_12 = buildApp rec { | ||
19 | appName = "gpxpod"; | ||
20 | version = "5.0.12"; | ||
21 | url = "https://github.com/julien-nc/gpxpod/releases/download/v${version}/${appName}-${version}.tar.gz"; | ||
22 | sha256 = "sha256-uhz6AC8opDQkFQDpG4u8H4vkFtzbFAZvb8r32QHj/8I="; | ||
23 | inherit otherConfig; | ||
24 | }; | ||
25 | versions = { | ||
26 | "25" = gpxpod_5_0_10; | ||
27 | "26" = gpxpod_5_0_12; | ||
28 | "27" = gpxpod_5_0_12; | ||
29 | }; | ||
30 | in | ||
31 | versions."${builtins.toString nextcloudVersion}" or (throw "Unsupported version for nextcloud app gpxpod") | ||
diff --git a/flakes/mypackages/pkgs/webapps/nextcloud/apps/groupfolders.nix b/flakes/mypackages/pkgs/webapps/nextcloud/apps/groupfolders.nix new file mode 100644 index 0000000..b966d3d --- /dev/null +++ b/flakes/mypackages/pkgs/webapps/nextcloud/apps/groupfolders.nix | |||
@@ -0,0 +1,27 @@ | |||
1 | { buildApp, nextcloudVersion }: | ||
2 | let | ||
3 | groupfolders_13_1_5 = buildApp rec { | ||
4 | appName = "groupfolders"; | ||
5 | version = "13.1.5"; | ||
6 | url = "https://github.com/nextcloud-releases/${appName}/releases/download/v${version}/${appName}-v${version}.tar.gz"; | ||
7 | sha256 = "sha256-1yf/uSN8TRsYvK3m2pxGaXo9xxHNrI/NjyWJ8rLPQfg="; | ||
8 | }; | ||
9 | groupfolders_14_0_4 = buildApp rec { | ||
10 | appName = "groupfolders"; | ||
11 | version = "14.0.4"; | ||
12 | url = "https://github.com/nextcloud-releases/${appName}/releases/download/v${version}/${appName}-v${version}.tar.gz"; | ||
13 | sha256 = "sha256-QzlD8dLI6T7Sex75ZsO2F40nTrg2Ig6tHTG8cslnNME="; | ||
14 | }; | ||
15 | groupfolders_15_0_2 = buildApp rec { | ||
16 | appName = "groupfolders"; | ||
17 | version = "15.0.2"; | ||
18 | url = "https://github.com/nextcloud-releases/${appName}/releases/download/v${version}/${appName}-v${version}.tar.gz"; | ||
19 | sha256 = "sha256-NsTZhmY1XBKHn/1IcIp2Al7BwJzE2xoBzgyBXnmuWls="; | ||
20 | }; | ||
21 | versions = { | ||
22 | "25" = groupfolders_13_1_5; | ||
23 | "26" = groupfolders_14_0_4; | ||
24 | "27" = groupfolders_15_0_2; | ||
25 | }; | ||
26 | in | ||
27 | versions."${builtins.toString nextcloudVersion}" or (throw "Unsupported version for nextcloud app groupfolders") | ||
diff --git a/flakes/mypackages/pkgs/webapps/nextcloud/apps/impersonate.nix b/flakes/mypackages/pkgs/webapps/nextcloud/apps/impersonate.nix new file mode 100644 index 0000000..afae917 --- /dev/null +++ b/flakes/mypackages/pkgs/webapps/nextcloud/apps/impersonate.nix | |||
@@ -0,0 +1,27 @@ | |||
1 | { buildApp, nextcloudVersion }: | ||
2 | let | ||
3 | impersonate_1_12_1 = buildApp rec { | ||
4 | appName = "impersonate"; | ||
5 | version = "1.12.1"; | ||
6 | url = "https://github.com/nextcloud-releases/impersonate/releases/download/v${version}/${appName}-v${version}.tar.gz"; | ||
7 | sha256 = "sha256-xhlWGbLm1CtW4BSa/yQhv05Kn2r1DZJDUoDXQOLpEeQ="; | ||
8 | }; | ||
9 | impersonate_1_13_1 = buildApp rec { | ||
10 | appName = "impersonate"; | ||
11 | version = "1.13.1"; | ||
12 | url = "https://github.com/nextcloud-releases/impersonate/releases/download/v${version}/${appName}-v${version}.tar.gz"; | ||
13 | sha256 = "sha256-+tFWW5wQnbHxbgGdnp2GAFzfXnrW+e3eECY4O6ZckCU="; | ||
14 | }; | ||
15 | impersonate_1_14_0 = buildApp rec { | ||
16 | appName = "impersonate"; | ||
17 | version = "1.14.0"; | ||
18 | url = "https://github.com/nextcloud-releases/impersonate/releases/download/v${version}/${appName}-v${version}.tar.gz"; | ||
19 | sha256 = "sha256-A1rGJJLaWhiNf9l0YUh6WOB+fKRBRDckE890hq5OB4k="; | ||
20 | }; | ||
21 | versions = { | ||
22 | "25" = impersonate_1_12_1; | ||
23 | "26" = impersonate_1_13_1; | ||
24 | "27" = impersonate_1_14_0; | ||
25 | }; | ||
26 | in | ||
27 | versions."${builtins.toString nextcloudVersion}" or (throw "Unsupported version for nextcloud app impersonate") | ||
diff --git a/flakes/mypackages/pkgs/webapps/nextcloud/apps/integration_dropbox.nix b/flakes/mypackages/pkgs/webapps/nextcloud/apps/integration_dropbox.nix new file mode 100644 index 0000000..d3834ad --- /dev/null +++ b/flakes/mypackages/pkgs/webapps/nextcloud/apps/integration_dropbox.nix | |||
@@ -0,0 +1,13 @@ | |||
1 | { buildApp, nextcloudVersion }: | ||
2 | let | ||
3 | integration_dropbox_2_0_1 = buildApp rec { | ||
4 | appName = "integration_dropbox"; | ||
5 | version = "2.0.1"; | ||
6 | url = "https://github.com/nextcloud-releases/${appName}/releases/download/v${version}/${appName}-v${version}.tar.gz"; | ||
7 | sha256 = "sha256-RPCd8+/yKNlIGfEU+ITS8DBIxJDfc//8MGHaIjfYxdQ="; | ||
8 | }; | ||
9 | versions = { | ||
10 | "27" = integration_dropbox_2_0_1; | ||
11 | }; | ||
12 | in | ||
13 | versions."${builtins.toString nextcloudVersion}" or (throw "Unsupported version for nextcloud app integration_dropbox") | ||
diff --git a/flakes/mypackages/pkgs/webapps/nextcloud/apps/keeweb.nix b/flakes/mypackages/pkgs/webapps/nextcloud/apps/keeweb.nix new file mode 100644 index 0000000..7be8c6b --- /dev/null +++ b/flakes/mypackages/pkgs/webapps/nextcloud/apps/keeweb.nix | |||
@@ -0,0 +1,24 @@ | |||
1 | { buildApp, nextcloudVersion }: | ||
2 | let | ||
3 | keeweb_0_6_13 = buildApp rec { | ||
4 | appName = "keeweb"; | ||
5 | version = "0.6.13"; | ||
6 | url = "https://github.com/jhass/nextcloud-keeweb/releases/download/v${version}/${appName}-${version}.tar.gz"; | ||
7 | sha256 = "sha256-J9jFVXpmoeAjDI/crsXHVJvPvxCYaimWVuq473nLsNM="; | ||
8 | installPhase = '' | ||
9 | mkdir -p $out | ||
10 | cp -R . $out/ | ||
11 | ''; | ||
12 | otherConfig = { | ||
13 | mimetypemapping = { | ||
14 | "kdbx" = ["application/x-kdbx"]; | ||
15 | }; | ||
16 | }; | ||
17 | }; | ||
18 | versions = { | ||
19 | "25" = keeweb_0_6_13; | ||
20 | "26" = keeweb_0_6_13; | ||
21 | "27" = keeweb_0_6_13; | ||
22 | }; | ||
23 | in | ||
24 | versions."${builtins.toString nextcloudVersion}" or (throw "Unsupported version for nextcloud app keeweb") | ||
diff --git a/flakes/mypackages/pkgs/webapps/nextcloud/apps/maps.nix b/flakes/mypackages/pkgs/webapps/nextcloud/apps/maps.nix new file mode 100644 index 0000000..1b29173 --- /dev/null +++ b/flakes/mypackages/pkgs/webapps/nextcloud/apps/maps.nix | |||
@@ -0,0 +1,15 @@ | |||
1 | { buildApp, nextcloudVersion }: | ||
2 | let | ||
3 | maps_1_1_0 = buildApp rec { | ||
4 | appName = "maps"; | ||
5 | version = "1.1.0"; | ||
6 | url = "https://github.com/nextcloud/maps/releases/download/v${version}/${appName}-${version}.tar.gz"; | ||
7 | sha256 = "sha256-Me/V+9wXZyq3UEVx9Nqim6pfPFJaALjKv9f7iUjill8="; | ||
8 | }; | ||
9 | versions = { | ||
10 | "25" = maps_1_1_0; | ||
11 | "26" = maps_1_1_0; | ||
12 | "27" = maps_1_1_0; | ||
13 | }; | ||
14 | in | ||
15 | versions."${builtins.toString nextcloudVersion}" or (throw "Unsupported version for nextcloud app maps") | ||
diff --git a/flakes/mypackages/pkgs/webapps/nextcloud/apps/metadata.nix b/flakes/mypackages/pkgs/webapps/nextcloud/apps/metadata.nix new file mode 100644 index 0000000..0fe7409 --- /dev/null +++ b/flakes/mypackages/pkgs/webapps/nextcloud/apps/metadata.nix | |||
@@ -0,0 +1,15 @@ | |||
1 | { buildApp, nextcloudVersion }: | ||
2 | let | ||
3 | metadata_0_19_0 = buildApp rec { | ||
4 | appName = "metadata"; | ||
5 | version = "0.19.0"; | ||
6 | url = "https://github.com/gino0631/nextcloud-metadata/releases/download/v${version}/${appName}.tar.gz"; | ||
7 | sha256 = "sha256-XfFxCwRFO0WnBPU4CIejNXySRQdguvzauu62bzUKD44="; | ||
8 | }; | ||
9 | versions = { | ||
10 | "25" = metadata_0_19_0; | ||
11 | "26" = metadata_0_19_0; | ||
12 | "27" = metadata_0_19_0; | ||
13 | }; | ||
14 | in | ||
15 | versions."${builtins.toString nextcloudVersion}" or (throw "Unsupported version for nextcloud app metadata") | ||
diff --git a/flakes/mypackages/pkgs/webapps/nextcloud/apps/music.nix b/flakes/mypackages/pkgs/webapps/nextcloud/apps/music.nix new file mode 100644 index 0000000..fc96224 --- /dev/null +++ b/flakes/mypackages/pkgs/webapps/nextcloud/apps/music.nix | |||
@@ -0,0 +1,15 @@ | |||
1 | { buildApp, nextcloudVersion }: | ||
2 | let | ||
3 | music_1_8_4 = buildApp rec { | ||
4 | appName = "music"; | ||
5 | version = "1.8.4"; | ||
6 | url = "https://github.com/owncloud/music/releases/download/v${version}/${appName}_${version}_for_nextcloud.tar.gz"; | ||
7 | sha256 = "sha256-WWXMpOyTRxykAVeUj/h6QP5ENqaMvTcPIqPQjhY68KA="; | ||
8 | }; | ||
9 | versions = { | ||
10 | "25" = music_1_8_4; | ||
11 | "26" = music_1_8_4; | ||
12 | "27" = music_1_8_4; | ||
13 | }; | ||
14 | in | ||
15 | versions."${builtins.toString nextcloudVersion}" or (throw "Unsupported version for nextcloud app music") | ||
diff --git a/flakes/mypackages/pkgs/webapps/nextcloud/apps/notes.nix b/flakes/mypackages/pkgs/webapps/nextcloud/apps/notes.nix new file mode 100644 index 0000000..7677c6c --- /dev/null +++ b/flakes/mypackages/pkgs/webapps/nextcloud/apps/notes.nix | |||
@@ -0,0 +1,15 @@ | |||
1 | { buildApp, nextcloudVersion }: | ||
2 | let | ||
3 | notes_4_8_1 = buildApp rec { | ||
4 | appName = "notes"; | ||
5 | version = "4.8.1"; | ||
6 | url = "https://github.com/nextcloud/${appName}/releases/download/v${version}/${appName}.tar.gz"; | ||
7 | sha256 = "sha256-BfH1W+7TWKZRuAAhKQEQtlv8ePTtJQvZQVMMu3zULR4="; | ||
8 | }; | ||
9 | versions = { | ||
10 | "25" = notes_4_8_1; | ||
11 | "26" = notes_4_8_1; | ||
12 | "27" = notes_4_8_1; | ||
13 | }; | ||
14 | in | ||
15 | versions."${builtins.toString nextcloudVersion}" or (throw "Unsupported version for nextcloud app notes") | ||
diff --git a/flakes/mypackages/pkgs/webapps/nextcloud/apps/ocsms.nix b/flakes/mypackages/pkgs/webapps/nextcloud/apps/ocsms.nix new file mode 100644 index 0000000..dcdaad2 --- /dev/null +++ b/flakes/mypackages/pkgs/webapps/nextcloud/apps/ocsms.nix | |||
@@ -0,0 +1,21 @@ | |||
1 | { buildApp, nextcloudVersion }: | ||
2 | let | ||
3 | ocsms_2_2_0 = buildApp rec { | ||
4 | appName = "ocsms"; | ||
5 | version = "2.2.0"; | ||
6 | url = "https://github.com/nextcloud/${appName}/releases/download/${version}/${appName}-${version}.tar.gz"; | ||
7 | sha256 = "1hjl11lxdflk4w0l8prcjr3jvmsm8njldbrmnqm7yhdy6qcfli28"; | ||
8 | installPhase = '' | ||
9 | mkdir -p $out | ||
10 | cp -R . $out/ | ||
11 | ''; | ||
12 | }; | ||
13 | versions = { | ||
14 | "18" = ocsms_2_2_0; | ||
15 | "19" = ocsms_2_2_0; | ||
16 | "20" = ocsms_2_2_0; | ||
17 | # Beware, 1.10.1 has a too wide range of versions and is not | ||
18 | # compatible with nextcloud > 20! | ||
19 | }; | ||
20 | in | ||
21 | versions."${builtins.toString nextcloudVersion}" or (throw "Unsupported version for nextcloud app ocsms") | ||
diff --git a/flakes/mypackages/pkgs/webapps/nextcloud/apps/onlyoffice.nix b/flakes/mypackages/pkgs/webapps/nextcloud/apps/onlyoffice.nix new file mode 100644 index 0000000..e93df00 --- /dev/null +++ b/flakes/mypackages/pkgs/webapps/nextcloud/apps/onlyoffice.nix | |||
@@ -0,0 +1,21 @@ | |||
1 | { buildApp, nextcloudVersion }: | ||
2 | let | ||
3 | onlyoffice_7_9_0 = buildApp rec { | ||
4 | appName = "onlyoffice"; | ||
5 | version = "7.9.0"; | ||
6 | url = "https://github.com/ONLYOFFICE/onlyoffice-nextcloud/releases/download/v${version}/${appName}.tar.gz"; | ||
7 | sha256 = "sha256-GN0edA/aVdOEDR0LF6PgG2vTcULaG9RMj2gIAoxSVAM="; | ||
8 | }; | ||
9 | onlyoffice_8_2_0 = buildApp rec { | ||
10 | appName = "onlyoffice"; | ||
11 | version = "8.2.0"; | ||
12 | url = "https://github.com/ONLYOFFICE/onlyoffice-nextcloud/releases/download/v${version}/${appName}.tar.gz"; | ||
13 | sha256 = "sha256-DfZKgpkpcogy9I3A3ru0V/WR5wYWBr+wrHe+mQJBPYk="; | ||
14 | }; | ||
15 | versions = { | ||
16 | "25" = onlyoffice_7_9_0; | ||
17 | "26" = onlyoffice_7_9_0; | ||
18 | "27" = onlyoffice_8_2_0; | ||
19 | }; | ||
20 | in | ||
21 | versions."${builtins.toString nextcloudVersion}" or (throw "Unsupported version for nextcloud app onlyoffice") | ||
diff --git a/flakes/mypackages/pkgs/webapps/nextcloud/apps/passman.nix b/flakes/mypackages/pkgs/webapps/nextcloud/apps/passman.nix new file mode 100644 index 0000000..5559b22 --- /dev/null +++ b/flakes/mypackages/pkgs/webapps/nextcloud/apps/passman.nix | |||
@@ -0,0 +1,21 @@ | |||
1 | { buildApp, nextcloudVersion }: | ||
2 | let | ||
3 | passman_2_4_5 = buildApp rec { | ||
4 | appName = "passman"; | ||
5 | version = "2.4.5"; | ||
6 | url = "https://releases.passman.cc/${appName}_${version}.tar.gz"; | ||
7 | sha256 = "sha256-wcRx1lUEHbJBJBBSKOScGljOgHM7Vpf69OymJoI8S2Y="; | ||
8 | }; | ||
9 | passman_2_4_7 = buildApp rec { | ||
10 | appName = "passman"; | ||
11 | version = "2.4.7"; | ||
12 | url = "https://releases.passman.cc/${appName}_${version}.tar.gz"; | ||
13 | sha256 = "sha256-CeNaN0cioVjcW6ILB//BIvmjQWcbvfK3m8jVQ8LGtyM="; | ||
14 | }; | ||
15 | versions = { | ||
16 | "25" = passman_2_4_5; | ||
17 | "26" = passman_2_4_7; | ||
18 | "27" = passman_2_4_7; | ||
19 | }; | ||
20 | in | ||
21 | versions."${builtins.toString nextcloudVersion}" or (throw "Unsupported version for nextcloud app passman") | ||
diff --git a/flakes/mypackages/pkgs/webapps/nextcloud/apps/polls.nix b/flakes/mypackages/pkgs/webapps/nextcloud/apps/polls.nix new file mode 100644 index 0000000..a50ac43 --- /dev/null +++ b/flakes/mypackages/pkgs/webapps/nextcloud/apps/polls.nix | |||
@@ -0,0 +1,15 @@ | |||
1 | { buildApp, nextcloudVersion }: | ||
2 | let | ||
3 | polls_5_2_0 = buildApp rec { | ||
4 | appName = "polls"; | ||
5 | version = "5.2.0"; | ||
6 | url = "https://github.com/nextcloud/polls/releases/download/v${version}/${appName}.tar.gz"; | ||
7 | sha256 = "sha256-45YNcSeFG9v3mfk7eLbDiy6hFgmfePY0j86JiVS0k14="; | ||
8 | }; | ||
9 | versions = { | ||
10 | "25" = polls_5_2_0; | ||
11 | "26" = polls_5_2_0; | ||
12 | "27" = polls_5_2_0; | ||
13 | }; | ||
14 | in | ||
15 | versions."${builtins.toString nextcloudVersion}" or (throw "Unsupported version for nextcloud app polls") | ||
diff --git a/flakes/mypackages/pkgs/webapps/nextcloud/apps/side_menu.nix b/flakes/mypackages/pkgs/webapps/nextcloud/apps/side_menu.nix new file mode 100644 index 0000000..da48f91 --- /dev/null +++ b/flakes/mypackages/pkgs/webapps/nextcloud/apps/side_menu.nix | |||
@@ -0,0 +1,16 @@ | |||
1 | { buildApp, nextcloudVersion }: | ||
2 | let | ||
3 | side_menu_3_10_3 = buildApp rec { | ||
4 | appName = "side_menu"; | ||
5 | version = "3.10.3"; | ||
6 | url = "https://gitnet.fr/attachments/9c9be610-5d3b-414d-a523-396c237c15ef"; | ||
7 | filename = "${appName}-${version}.tar.gz"; | ||
8 | sha256 = "sha256-WKbc6Ln6v3LYyRzwy0xAOmXilbqrWGS8XGWIT+TajdM="; | ||
9 | }; | ||
10 | versions = { | ||
11 | "25" = side_menu_3_10_3; | ||
12 | "26" = side_menu_3_10_3; | ||
13 | "27" = side_menu_3_10_3; | ||
14 | }; | ||
15 | in | ||
16 | versions."${builtins.toString nextcloudVersion}" or (throw "Unsupported version for nextcloud app side_menu") | ||
diff --git a/flakes/mypackages/pkgs/webapps/nextcloud/apps/social.nix b/flakes/mypackages/pkgs/webapps/nextcloud/apps/social.nix new file mode 100644 index 0000000..912b5bf --- /dev/null +++ b/flakes/mypackages/pkgs/webapps/nextcloud/apps/social.nix | |||
@@ -0,0 +1,14 @@ | |||
1 | { buildApp, nextcloudVersion }: | ||
2 | let | ||
3 | social_0_6_1 = buildApp rec { | ||
4 | appName = "social"; | ||
5 | version = "0.6.1"; | ||
6 | url = "https://github.com/nextcloud-releases/social/releases/download/v${version}/${appName}-v${version}.tar.gz"; | ||
7 | sha256 = "sha256-5mww31ibwgnSiTuTaKo5MngbhPIw8lwLt1tkQySmerY="; | ||
8 | }; | ||
9 | versions = { | ||
10 | "26" = social_0_6_1; | ||
11 | "27" = social_0_6_1; | ||
12 | }; | ||
13 | in | ||
14 | versions."${builtins.toString nextcloudVersion}" or (throw "Unsupported version for nextcloud app social") | ||
diff --git a/flakes/mypackages/pkgs/webapps/nextcloud/apps/spreed.nix b/flakes/mypackages/pkgs/webapps/nextcloud/apps/spreed.nix new file mode 100644 index 0000000..d8a20b9 --- /dev/null +++ b/flakes/mypackages/pkgs/webapps/nextcloud/apps/spreed.nix | |||
@@ -0,0 +1,27 @@ | |||
1 | { buildApp, nextcloudVersion }: | ||
2 | let | ||
3 | spreed_15_0_7 = buildApp rec { | ||
4 | appName = "spreed"; | ||
5 | version = "15.0.7"; | ||
6 | url = "https://github.com/nextcloud-releases/${appName}/releases/download/v${version}/${appName}-v${version}.tar.gz"; | ||
7 | sha256 = "sha256-J9udO7qlRL+TDwTPTbBpYeZLUi4oco42LoqYoHJbIyE="; | ||
8 | }; | ||
9 | spreed_16_0_5 = buildApp rec { | ||
10 | appName = "spreed"; | ||
11 | version = "16.0.5"; | ||
12 | url = "https://github.com/nextcloud-releases/${appName}/releases/download/v${version}/${appName}-v${version}.tar.gz"; | ||
13 | sha256 = "sha256-tTDnWqNkP6fMSdCP1c0vPh8f0K7sTFBvRwws5Gln9Mg="; | ||
14 | }; | ||
15 | spreed_17_0_3 = buildApp rec { | ||
16 | appName = "spreed"; | ||
17 | version = "17.0.3"; | ||
18 | url = "https://github.com/nextcloud-releases/${appName}/releases/download/v${version}/${appName}-v${version}.tar.gz"; | ||
19 | sha256 = "sha256-vb08DI+q+5f87zz2UguE1y6b0NV2EoICYpaKUGmyF5w="; | ||
20 | }; | ||
21 | versions = { | ||
22 | "25" = spreed_15_0_7; | ||
23 | "26" = spreed_16_0_5; | ||
24 | "27" = spreed_17_0_3; | ||
25 | }; | ||
26 | in | ||
27 | versions."${builtins.toString nextcloudVersion}" or (throw "Unsupported version for nextcloud app spreed") | ||
diff --git a/flakes/mypackages/pkgs/webapps/nextcloud/apps/talk_matterbridge.nix b/flakes/mypackages/pkgs/webapps/nextcloud/apps/talk_matterbridge.nix new file mode 100644 index 0000000..906719d --- /dev/null +++ b/flakes/mypackages/pkgs/webapps/nextcloud/apps/talk_matterbridge.nix | |||
@@ -0,0 +1,14 @@ | |||
1 | { buildApp, nextcloudVersion }: | ||
2 | let | ||
3 | talk_matterbridge_1_26_0 = buildApp rec { | ||
4 | appName = "talk_matterbridge"; | ||
5 | version = "1.26.0"; | ||
6 | url = "https://github.com/nextcloud/${appName}/releases/download/v${version}/${appName}.tar.gz"; | ||
7 | sha256 = "sha256-gD5lfLWBjWOiy2ULf31ngQVIQbMZj3iwu3zuVrEDSks="; | ||
8 | }; | ||
9 | versions = { | ||
10 | "25" = talk_matterbridge_1_26_0; | ||
11 | "26" = talk_matterbridge_1_26_0; | ||
12 | }; | ||
13 | in | ||
14 | versions."${builtins.toString nextcloudVersion}" or (throw "Unsupported version for nextcloud app talk_matterbridge") | ||
diff --git a/flakes/mypackages/pkgs/webapps/nextcloud/apps/tasks.nix b/flakes/mypackages/pkgs/webapps/nextcloud/apps/tasks.nix new file mode 100644 index 0000000..aee7650 --- /dev/null +++ b/flakes/mypackages/pkgs/webapps/nextcloud/apps/tasks.nix | |||
@@ -0,0 +1,15 @@ | |||
1 | { buildApp, nextcloudVersion }: | ||
2 | let | ||
3 | tasks_0_15_0 = buildApp rec { | ||
4 | appName = "tasks"; | ||
5 | version = "0.15.0"; | ||
6 | url = "https://github.com/nextcloud/${appName}/releases/download/v${version}/${appName}.tar.gz"; | ||
7 | sha256 = "sha256-nizJUFByK78FZ6KPJ4zfOU5Z9ClAxhwgQ7d+X5TGnM8="; | ||
8 | }; | ||
9 | versions = { | ||
10 | "25" = tasks_0_15_0; | ||
11 | "26" = tasks_0_15_0; | ||
12 | "27" = tasks_0_15_0; | ||
13 | }; | ||
14 | in | ||
15 | versions."${builtins.toString nextcloudVersion}" or (throw "Unsupported version for nextcloud app tasks") | ||
diff --git a/flakes/mypackages/pkgs/webapps/nextcloud/default.nix b/flakes/mypackages/pkgs/webapps/nextcloud/default.nix new file mode 100644 index 0000000..6aeeaed --- /dev/null +++ b/flakes/mypackages/pkgs/webapps/nextcloud/default.nix | |||
@@ -0,0 +1,84 @@ | |||
1 | { nextcloudVersion, otherConfig ? {}, lib, stdenv, callPackage, fetchzip, fetchurl, postInstall ? null }: | ||
2 | let | ||
3 | shasumsAndVersion = { | ||
4 | "25" = { sum = "sha256-alvh0fWESSS5KbfiKI1gaoahisDWnfT/bUhsSEEXfQI="; fullVersion = "25.0.10"; }; # php 7.4 - 8.2 | ||
5 | "26" = { sum = "sha256-nhq0aAY4T1hUZdKJY66ZSlirCSgPQet8YJpciwJw1b4="; fullVersion = "26.0.5"; }; # php 8.0 - 8.2 | ||
6 | "27" = { sum = "sha256-ei3OpDqjuPswM0fv2kxvN3M8yhE8juFt2fDl+2jHIS8="; fullVersion = "27.0.2"; }; # php 8.0 - 8.2 | ||
7 | }; | ||
8 | appNames = [ | ||
9 | "audioplayer" "bookmarks" "calendar" "carnet" | ||
10 | "contacts" "cookbook" "deck" "external" "extract" "files_markdown" "files_mindmap" | ||
11 | "files_readmemd" "flowupload" "gpxedit" "gpxpod" "groupfolders" "impersonate" | ||
12 | "keeweb" "maps" "metadata" "music" "notes" "ocsms" "onlyoffice" "passman" "polls" | ||
13 | "social" "spreed" "talk_matterbridge" "tasks" "drawio" "side_menu" | ||
14 | "integration_dropbox" | ||
15 | ]; | ||
16 | toApp = name: callPackage (./apps + "/${name}.nix") { inherit buildApp nextcloudVersion; }; | ||
17 | allSupportedApps = lib.mapAttrs (n: v: v.value) (lib.filterAttrs (n: v: v.success) (lib.genAttrs appNames (name: builtins.tryEval (toApp name)))); | ||
18 | allApps = lib.genAttrs appNames toApp; | ||
19 | buildApp = { appName, version, filename ? null, url, sha256, installHook ? (n: ""), otherConfig ? {}, installPhase ? "mkdir -p $out && cp -R . $out/" }: | ||
20 | stdenv.mkDerivation rec { | ||
21 | name = "nextcloud-app-${appName}-${version}"; | ||
22 | inherit version; | ||
23 | phases = "unpackPhase installPhase"; | ||
24 | inherit installPhase; | ||
25 | src = fetchurl ({ inherit url sha256; } // lib.optionalAttrs (filename != null) { name = filename; }); | ||
26 | passthru = { | ||
27 | inherit appName otherConfig installHook; | ||
28 | }; | ||
29 | }; | ||
30 | toPassthru = pkg: apps: otherConfig: { | ||
31 | inherit apps otherConfig allApps allSupportedApps buildApp; | ||
32 | withApps = withApps pkg; | ||
33 | }; | ||
34 | withApps = pkg: toApps: | ||
35 | let | ||
36 | apps = toApps allApps; | ||
37 | toInstallApp = n: '' | ||
38 | if [ -e $out/apps/${n.appName} ]; then | ||
39 | echo "${n.appName} already exists" | ||
40 | false | ||
41 | fi | ||
42 | ln -sf ${n} $out/apps/${n.appName} | ||
43 | '' + (n.installHook n); | ||
44 | zipped = lib.attrsets.zipAttrs ([pkg.otherConfig or {}] ++ map (v: v.otherConfig) apps); | ||
45 | appConfigs = with lib.attrsets; with lib.lists; { | ||
46 | mimetypealiases = foldr (h: prev: prev // h) {} (zipped.mimetypealiases or []); | ||
47 | mimetypemapping = mapAttrs (_: v: unique (flatten v)) (zipAttrs (zipped.mimetypemapping or [])); | ||
48 | }; | ||
49 | newNextcloud = pkg.overrideAttrs(old: { | ||
50 | installPhase = old.installPhase + "\n" + builtins.concatStringsSep "\n" (map toInstallApp apps); | ||
51 | passthru = toPassthru newNextcloud (pkg.apps ++ apps) appConfigs; | ||
52 | }); | ||
53 | in newNextcloud; | ||
54 | package = stdenv.mkDerivation rec { | ||
55 | name = "nextcloud-${version}"; | ||
56 | version = shasumsAndVersion."${builtins.toString nextcloudVersion}".fullVersion; | ||
57 | |||
58 | src = fetchurl { | ||
59 | url = "https://download.nextcloud.com/server/releases/${name}.tar.bz2"; | ||
60 | sha256 = shasumsAndVersion."${builtins.toString nextcloudVersion}".sum; | ||
61 | }; | ||
62 | |||
63 | inherit postInstall; | ||
64 | installPhase = '' | ||
65 | mkdir -p $out/ | ||
66 | cp -R . $out/ | ||
67 | sed -i -e "/'appDirsWithDifferentOwner'/d" $out/apps/settings/lib/Controller/CheckSetupController.php | ||
68 | mv $out/config $out/config.example | ||
69 | runHook postInstall | ||
70 | ''; | ||
71 | |||
72 | noAuditTmpdir = true; | ||
73 | dontPatchELF = true; | ||
74 | dontStrip = true; | ||
75 | passthru = toPassthru package [] otherConfig; | ||
76 | meta = { | ||
77 | description = "Sharing solution for files, calendars, contacts and more"; | ||
78 | homepage = https://nextcloud.com; | ||
79 | maintainers = with lib.maintainers; [ schneefux bachp globin fpletz ]; | ||
80 | license = lib.licenses.agpl3Plus; | ||
81 | platforms = with lib.platforms; unix; | ||
82 | }; | ||
83 | }; | ||
84 | in package | ||
diff --git a/flakes/mypackages/pkgs/webapps/phpbb/default.nix b/flakes/mypackages/pkgs/webapps/phpbb/default.nix new file mode 100644 index 0000000..21ee154 --- /dev/null +++ b/flakes/mypackages/pkgs/webapps/phpbb/default.nix | |||
@@ -0,0 +1,61 @@ | |||
1 | { stdenv, fetchurl, callPackage | ||
2 | , varDir ? "/var/lib/phpbb" | ||
3 | }: | ||
4 | let | ||
5 | allExts = { | ||
6 | alfredoramos.markdown = callPackage ./extensions/markdown.nix {}; | ||
7 | davidiq.mailinglist = callPackage ./extensions/mailinglist.nix {}; | ||
8 | dmzx.mchat = callPackage ./extensions/mchat.nix {}; | ||
9 | empteintesduweb.monitoranswers = callPackage ./extensions/monitoranswers.nix {}; | ||
10 | lr94.autosubscribe = callPackage ./extensions/autosubscribe.nix {}; | ||
11 | phpbbmodders.adduser = callPackage ./extensions/adduser.nix {}; | ||
12 | }; | ||
13 | allLangs = { | ||
14 | fr = callPackage ./langs/fr.nix {}; | ||
15 | }; | ||
16 | toPassthru = pkg: { | ||
17 | inherit allLangs allExts; | ||
18 | withLangs = withLangs pkg; | ||
19 | withExts = withExts pkg; | ||
20 | }; | ||
21 | withExts = pkg: toExts: | ||
22 | let | ||
23 | exts = toExts allExts; | ||
24 | toInstallExt = ext: "cp -r ${ext}/* $out/ext/"; | ||
25 | newPhpBB = pkg.overrideAttrs(old: { | ||
26 | installPhase = old.installPhase + "\n" + builtins.concatStringsSep "\n" (map toInstallExt exts); | ||
27 | passthru = toPassthru newPhpBB; | ||
28 | }); | ||
29 | in newPhpBB; | ||
30 | withLangs = pkg: toLangs: | ||
31 | let | ||
32 | langs = toLangs allLangs; | ||
33 | toInstallLang = lang: "cp -r ${lang}/*/ $out"; | ||
34 | newPhpBB = pkg.overrideAttrs(old: { | ||
35 | installPhase = old.installPhase + "\n" + builtins.concatStringsSep "\n" (map toInstallLang langs); | ||
36 | passthru = toPassthru newPhpBB; | ||
37 | }); | ||
38 | in newPhpBB; | ||
39 | phpBB = stdenv.mkDerivation rec { | ||
40 | pname = "phpBB"; | ||
41 | version = "3.3.0"; | ||
42 | |||
43 | src = fetchurl { | ||
44 | url = "https://download.phpbb.com/pub/release/3.3/${version}/${pname}-${version}.tar.bz2"; | ||
45 | sha256 = "a6234ac9dcf9086c025ece29a0a235f997a92bb9a994eff0ddcf8917e841262f"; | ||
46 | }; | ||
47 | |||
48 | phases = [ "unpackPhase" "installPhase" ]; | ||
49 | |||
50 | installPhase = '' | ||
51 | cp -a . $out | ||
52 | mkdir -p $out/vars | ||
53 | mv $out/{cache,files,store,config.php} $out/vars | ||
54 | ln -s ${varDir}/{cache,files,store,config.php} $out/ | ||
55 | echo -e "core:\n allow_install_dir: true" >> $out/config/production/config.yml | ||
56 | ''; | ||
57 | |||
58 | passthru = toPassthru phpBB; | ||
59 | }; | ||
60 | in | ||
61 | phpBB | ||
diff --git a/flakes/mypackages/pkgs/webapps/phpbb/extensions/adduser.nix b/flakes/mypackages/pkgs/webapps/phpbb/extensions/adduser.nix new file mode 100644 index 0000000..f9073e6 --- /dev/null +++ b/flakes/mypackages/pkgs/webapps/phpbb/extensions/adduser.nix | |||
@@ -0,0 +1,22 @@ | |||
1 | { stdenv, fetchurl, unzip }: | ||
2 | stdenv.mkDerivation rec { | ||
3 | pname = "phpBB-extension-adduser"; | ||
4 | version = "1.0.4"; | ||
5 | src = fetchurl { | ||
6 | # https://www.phpbb.com/customise/db/extension/acp_add_user_2 | ||
7 | url = "https://www.phpbb.com/customise/db/download/141601"; | ||
8 | sha256 = "13m4anib74cinnv1ap3b1ncb8cxm3mzhhmlqhbrr9mlrqmwf4zg2"; | ||
9 | }; | ||
10 | |||
11 | buildInputs = [ unzip ]; | ||
12 | phases = [ "unpackPhase" "installPhase" ]; | ||
13 | unpackPhase = '' | ||
14 | mkdir src | ||
15 | cd src | ||
16 | unzip $src | ||
17 | ''; | ||
18 | installPhase = '' | ||
19 | cp -a . $out | ||
20 | cp -a $out/phpbbmodders/adduser/language/en $out/phpbbmodders/adduser/language/fr | ||
21 | ''; | ||
22 | } | ||
diff --git a/flakes/mypackages/pkgs/webapps/phpbb/extensions/autosubscribe.nix b/flakes/mypackages/pkgs/webapps/phpbb/extensions/autosubscribe.nix new file mode 100644 index 0000000..78e23fc --- /dev/null +++ b/flakes/mypackages/pkgs/webapps/phpbb/extensions/autosubscribe.nix | |||
@@ -0,0 +1,19 @@ | |||
1 | { stdenv, fetchurl, unzip }: | ||
2 | stdenv.mkDerivation rec { | ||
3 | pname = "phpBB-extension-autosubscribe"; | ||
4 | version = "1.1.0"; | ||
5 | src = fetchurl { | ||
6 | # https://www.phpbb.com/customise/db/extension/autosubscribe | ||
7 | url = "https://www.phpbb.com/customise/db/download/146556"; | ||
8 | sha256 = "0dsay463g4impw86w1nv307nslc195fkgkqmihfn5kc0hya0giv0"; | ||
9 | }; | ||
10 | |||
11 | buildInputs = [ unzip ]; | ||
12 | phases = [ "unpackPhase" "installPhase" ]; | ||
13 | unpackPhase = '' | ||
14 | mkdir src | ||
15 | cd src | ||
16 | unzip $src | ||
17 | ''; | ||
18 | installPhase = "cp -a . $out"; | ||
19 | } | ||
diff --git a/flakes/mypackages/pkgs/webapps/phpbb/extensions/mailinglist.nix b/flakes/mypackages/pkgs/webapps/phpbb/extensions/mailinglist.nix new file mode 100644 index 0000000..d432aaf --- /dev/null +++ b/flakes/mypackages/pkgs/webapps/phpbb/extensions/mailinglist.nix | |||
@@ -0,0 +1,18 @@ | |||
1 | { stdenv, fetchurl, unzip }: | ||
2 | stdenv.mkDerivation rec { | ||
3 | pname = "phpBB-extension-MailingList"; | ||
4 | version = "2.0.0"; | ||
5 | src = fetchurl { | ||
6 | url = "https://github.com/DavidIQ/MailingList/archive/${version}.tar.gz"; | ||
7 | sha256 = "1ddg8bci85jwmvyakcwdn4yzqwz1rgy7ljf4nmfk9p2kvx2nhj62"; | ||
8 | }; | ||
9 | |||
10 | phases = [ "unpackPhase" "installPhase" ]; | ||
11 | installPhase = '' | ||
12 | mkdir -p $out/davidiq/mailinglist | ||
13 | cp -a . $out/davidiq/mailinglist | ||
14 | # delete last two lines which contain EMAIL_SIG | ||
15 | sed -i -n -e :a -e '1,2!{P;N;D;};N;ba' $out/davidiq/mailinglist/language/en/email/* | ||
16 | ''; | ||
17 | } | ||
18 | |||
diff --git a/flakes/mypackages/pkgs/webapps/phpbb/extensions/markdown.nix b/flakes/mypackages/pkgs/webapps/phpbb/extensions/markdown.nix new file mode 100644 index 0000000..3bd73c7 --- /dev/null +++ b/flakes/mypackages/pkgs/webapps/phpbb/extensions/markdown.nix | |||
@@ -0,0 +1,20 @@ | |||
1 | { stdenv, fetchurl, unzip }: | ||
2 | stdenv.mkDerivation rec { | ||
3 | pname = "phpBB-extension-markdown"; | ||
4 | version = "1.2.0"; | ||
5 | src = fetchurl { | ||
6 | # https://www.phpbb.com/customise/db/extension/markdown | ||
7 | name = "alfredoramos_markdown_${version}.zip"; | ||
8 | url = "https://www.phpbb.com/customise/db/download/173626"; | ||
9 | sha256 = "0bmgi8qr6azaaz8xnz8dkyf147dyawqvqr93r01qbm9s8bfkpzqx"; | ||
10 | }; | ||
11 | |||
12 | buildInputs = [ unzip ]; | ||
13 | phases = [ "unpackPhase" "installPhase" ]; | ||
14 | unpackPhase = '' | ||
15 | mkdir src | ||
16 | cd src | ||
17 | unzip $src | ||
18 | ''; | ||
19 | installPhase = "cp -a . $out"; | ||
20 | } | ||
diff --git a/flakes/mypackages/pkgs/webapps/phpbb/extensions/mchat.nix b/flakes/mypackages/pkgs/webapps/phpbb/extensions/mchat.nix new file mode 100644 index 0000000..93ea861 --- /dev/null +++ b/flakes/mypackages/pkgs/webapps/phpbb/extensions/mchat.nix | |||
@@ -0,0 +1,21 @@ | |||
1 | { stdenv, fetchurl, unzip }: | ||
2 | stdenv.mkDerivation rec { | ||
3 | pname = "phpBB-extension-mchat"; | ||
4 | version = "2.1.3"; | ||
5 | src = fetchurl { | ||
6 | # https://www.phpbb.com/customise/db/extension/mchat_extension | ||
7 | name = "dmzx_mchat_${version}.zip"; | ||
8 | url = "https://www.phpbb.com/customise/db/download/168331"; | ||
9 | sha256 = "0mcka02wamn899vg64m1c5d5k6f4qml18cshhzfvccrdc7a0m5p1"; | ||
10 | }; | ||
11 | |||
12 | buildInputs = [ unzip ]; | ||
13 | phases = [ "unpackPhase" "installPhase" ]; | ||
14 | unpackPhase = '' | ||
15 | mkdir src | ||
16 | cd src | ||
17 | unzip $src | ||
18 | ''; | ||
19 | installPhase = "cp -a . $out"; | ||
20 | } | ||
21 | |||
diff --git a/flakes/mypackages/pkgs/webapps/phpbb/extensions/monitoranswers.nix b/flakes/mypackages/pkgs/webapps/phpbb/extensions/monitoranswers.nix new file mode 100644 index 0000000..52c852e --- /dev/null +++ b/flakes/mypackages/pkgs/webapps/phpbb/extensions/monitoranswers.nix | |||
@@ -0,0 +1,19 @@ | |||
1 | { stdenv, fetchurl, unzip }: | ||
2 | stdenv.mkDerivation rec { | ||
3 | pname = "phpBB-extension-monitoranswers"; | ||
4 | version = "1.0.0"; | ||
5 | src = fetchurl { | ||
6 | # http://forums.phpbb-fr.com/extensions-developpement-en-cours/sujet208410.html | ||
7 | url = "https://www.empreintesduweb.com/dl/extension_empreintesduweb_monitoranswers_v100.zip"; | ||
8 | sha256 = "0g5khzz7brkra9rnnjh8vsv11h8vf36pcw53b4wrkcjb66bfm20s"; | ||
9 | }; | ||
10 | |||
11 | buildInputs = [ unzip ]; | ||
12 | phases = [ "unpackPhase" "installPhase" ]; | ||
13 | unpackPhase = '' | ||
14 | mkdir src | ||
15 | cd src | ||
16 | unzip $src | ||
17 | ''; | ||
18 | installPhase = "cp -a . $out"; | ||
19 | } | ||
diff --git a/flakes/mypackages/pkgs/webapps/phpbb/langs/fr.nix b/flakes/mypackages/pkgs/webapps/phpbb/langs/fr.nix new file mode 100644 index 0000000..12f2df0 --- /dev/null +++ b/flakes/mypackages/pkgs/webapps/phpbb/langs/fr.nix | |||
@@ -0,0 +1,12 @@ | |||
1 | { stdenv, fetchurl }: | ||
2 | stdenv.mkDerivation rec { | ||
3 | pname = "phpBB-language-fr"; | ||
4 | version = "v4.0.0"; | ||
5 | src = fetchurl { | ||
6 | url = "https://github.com/milescellar/phpbb-language-fr/archive/${version}.tar.gz"; | ||
7 | sha256 = "0pkw55pb8ka4ayn1861hwvjwzs8vkq04yaxrs7zm9c8lh2g7y8z0"; | ||
8 | }; | ||
9 | |||
10 | phases = [ "unpackPhase" "installPhase" ]; | ||
11 | installPhase = "cp -a . $out"; | ||
12 | } | ||
diff --git a/flakes/mypackages/pkgs/webapps/phpldapadmin/default.nix b/flakes/mypackages/pkgs/webapps/phpldapadmin/default.nix new file mode 100644 index 0000000..da32f97 --- /dev/null +++ b/flakes/mypackages/pkgs/webapps/phpldapadmin/default.nix | |||
@@ -0,0 +1,27 @@ | |||
1 | { config ? "/etc/phpldapadmin/config.php", fetchurl, fetchFromGitHub, stdenv, optipng }: | ||
2 | stdenv.mkDerivation rec { | ||
3 | version = "1.2.5"; | ||
4 | name = "phpldapadmin-${version}"; | ||
5 | src = fetchFromGitHub { | ||
6 | owner = "leenooks"; | ||
7 | repo = "phpLDAPadmin"; | ||
8 | rev = "8f4ced96f9c63a09510a5bccb2189a8b92fb29ba"; | ||
9 | sha256 = "1x6xc3xbvw3aj46i5ds06a8h6mfljxdv3argxrzz02l541ra6ni7"; | ||
10 | }; | ||
11 | patches = [ | ||
12 | #./ldap-php5_5.patch | ||
13 | #./ldap-disable-mcrypt.patch | ||
14 | #./ldap-php7_2.patch | ||
15 | ./ldap-sort-in-templates.patch | ||
16 | ./ldap-align-button.patch | ||
17 | ./ldap-fix-password.patch | ||
18 | ]; | ||
19 | buildInputs = [ optipng ]; | ||
20 | buildPhase = '' | ||
21 | find -name '*.png' -exec optipng -quiet -force -fix {} \; | ||
22 | ''; | ||
23 | installPhase = '' | ||
24 | cp -a . $out | ||
25 | ln -sf ${config} $out/config/config.php | ||
26 | ''; | ||
27 | } | ||
diff --git a/flakes/mypackages/pkgs/webapps/phpldapadmin/ldap-align-button.patch b/flakes/mypackages/pkgs/webapps/phpldapadmin/ldap-align-button.patch new file mode 100644 index 0000000..d9a5504 --- /dev/null +++ b/flakes/mypackages/pkgs/webapps/phpldapadmin/ldap-align-button.patch | |||
@@ -0,0 +1,11 @@ | |||
1 | --- a/htdocs/update_confirm.php 2012-10-01 08:54:14.000000000 +0200 | ||
2 | +++ b/htdocs/update_confirm.php 2018-06-06 15:47:44.122398888 +0200 | ||
3 | @@ -187,7 +187,7 @@ | ||
4 | |||
5 | echo '</table>'; | ||
6 | |||
7 | - echo '<div style="text-align: center;">'; | ||
8 | + echo '<div style="text-align: left;">'; | ||
9 | echo '<br />'; | ||
10 | // @todo cant use AJAX here, it affects file uploads. | ||
11 | printf('<input type="submit" value="%s" />', | ||
diff --git a/flakes/mypackages/pkgs/webapps/phpldapadmin/ldap-fix-password.patch b/flakes/mypackages/pkgs/webapps/phpldapadmin/ldap-fix-password.patch new file mode 100644 index 0000000..d2d80e4 --- /dev/null +++ b/flakes/mypackages/pkgs/webapps/phpldapadmin/ldap-fix-password.patch | |||
@@ -0,0 +1,13 @@ | |||
1 | diff --git a/htdocs/login.php b/htdocs/login.php | ||
2 | index 48f9e2e..298b07d 100644 | ||
3 | --- a/htdocs/login.php | ||
4 | +++ b/htdocs/login.php | ||
5 | @@ -13,7 +13,7 @@ require './common.php'; | ||
6 | |||
7 | $user = array(); | ||
8 | $user['login'] = get_request('login'); | ||
9 | -$user['password'] = get_request('login_pass'); | ||
10 | +$user['password'] = get_request('login_pass','POST',false,null,false); | ||
11 | |||
12 | if ($user['login'] && ! strlen($user['password'])) | ||
13 | system_message(array( | ||
diff --git a/flakes/mypackages/pkgs/webapps/phpldapadmin/ldap-sort-in-templates.patch b/flakes/mypackages/pkgs/webapps/phpldapadmin/ldap-sort-in-templates.patch new file mode 100644 index 0000000..55a1974 --- /dev/null +++ b/flakes/mypackages/pkgs/webapps/phpldapadmin/ldap-sort-in-templates.patch | |||
@@ -0,0 +1,12 @@ | |||
1 | diff -wbBur phpldapadmin-1.2.3.org/lib/TemplateRender.php phpldapadmin-1.2.3/lib/TemplateRender.php | ||
2 | --- phpldapadmin-1.2.3.org/lib/TemplateRender.php 2012-10-01 10:54:14.000000000 +0400 | ||
3 | +++ phpldapadmin-1.2.3/lib/TemplateRender.php 2018-02-02 19:06:45.674760057 +0300 | ||
4 | @@ -321,6 +321,8 @@ | ||
5 | |||
6 | $vals = array(); | ||
7 | |||
8 | + asort($picklistvalues); | ||
9 | + | ||
10 | foreach ($picklistvalues as $key => $values) { | ||
11 | $display = $args[3]; | ||
12 | |||
diff --git a/flakes/mypackages/pkgs/webapps/rompr/default.nix b/flakes/mypackages/pkgs/webapps/rompr/default.nix new file mode 100644 index 0000000..5b3e7e0 --- /dev/null +++ b/flakes/mypackages/pkgs/webapps/rompr/default.nix | |||
@@ -0,0 +1,17 @@ | |||
1 | { varDir ? "/var/lib/rompr", stdenv, fetchFromGitHub }: | ||
2 | stdenv.mkDerivation ({ | ||
3 | pname = "rompr"; | ||
4 | version = "1.24"; | ||
5 | src = fetchFromGitHub { | ||
6 | owner = "fatg3erman"; | ||
7 | repo = "RompR"; | ||
8 | rev = "0d8f597027ac71b320963fe3f33f461a136312ad"; | ||
9 | sha256 = "13p3c4whhmvz1vvh9fva5gdx4xji288k108hjdi8b1yn506lzix2"; | ||
10 | fetchSubmodules = true; | ||
11 | }; | ||
12 | installPhase = '' | ||
13 | cp -a . $out | ||
14 | ln -sf ${varDir}/prefs $out/prefs | ||
15 | ln -sf ${varDir}/albumart $out/albumart | ||
16 | ''; | ||
17 | }) | ||
diff --git a/flakes/mypackages/pkgs/webapps/roundcubemail/add_all.patch b/flakes/mypackages/pkgs/webapps/roundcubemail/add_all.patch new file mode 100644 index 0000000..ba651e2 --- /dev/null +++ b/flakes/mypackages/pkgs/webapps/roundcubemail/add_all.patch | |||
@@ -0,0 +1,209 @@ | |||
1 | diff --git a/program/include/rcmail_output_html.php b/program/include/rcmail_output_html.php | ||
2 | index 0552b89c2..1b84e1b4e 100644 | ||
3 | --- a/program/include/rcmail_output_html.php | ||
4 | +++ b/program/include/rcmail_output_html.php | ||
5 | @@ -1013,13 +1013,13 @@ EOF; | ||
6 | // use minified file if exists (not in development mode) | ||
7 | if (!$this->devel_mode && !preg_match('/\.min\.' . $ext . '$/', $file)) { | ||
8 | $minified_file = substr($file, 0, strlen($ext) * -1) . 'min.' . $ext; | ||
9 | - if ($fs = @filemtime($this->assets_dir . $minified_file)) { | ||
10 | - return $minified_file . '?s=' . $fs; | ||
11 | + if ($fs = @md5_file($this->assets_dir . $minified_file)) { | ||
12 | + return $minified_file . '?s=' . substr($fs, 0, 6); | ||
13 | } | ||
14 | } | ||
15 | |||
16 | - if ($fs = @filemtime($this->assets_dir . $file)) { | ||
17 | - $file .= '?s=' . $fs; | ||
18 | + if ($fs = @md5_file($this->assets_dir . $file)) { | ||
19 | + $file .= '?s=' . substr($fs, 0, 6); | ||
20 | } | ||
21 | |||
22 | return $file; | ||
23 | diff --git a/program/js/app.js b/program/js/app.js | ||
24 | index 2094b7b7b..06fe96a80 100644 | ||
25 | --- a/program/js/app.js | ||
26 | +++ b/program/js/app.js | ||
27 | @@ -2277,6 +2277,9 @@ function rcube_webmail() | ||
28 | } | ||
29 | |||
30 | tree += '<span id="msgicn'+row.id+'" class="'+css_class+status_class+'" title="'+status_label+'"></span>'; | ||
31 | + if (flags.mbox != this.env.mailbox) { | ||
32 | + tree += '<span style="color:#737677">' + flags.mbox + ' <span>'; | ||
33 | + } | ||
34 | row.className = row_class; | ||
35 | |||
36 | // build subject link | ||
37 | diff --git a/program/localization/en_CA/labels.inc b/program/localization/en_CA/labels.inc | ||
38 | index 03c1c8e11..8d67a49ac 100644 | ||
39 | --- a/program/localization/en_CA/labels.inc | ||
40 | +++ b/program/localization/en_CA/labels.inc | ||
41 | @@ -128,6 +128,7 @@ $labels['markunread'] = 'As unread'; | ||
42 | $labels['markflagged'] = 'As flagged'; | ||
43 | $labels['markunflagged'] = 'As unflagged'; | ||
44 | $labels['moreactions'] = 'More actions...'; | ||
45 | +$labels['folders-allsubscribed'] = 'All subscribed folders'; | ||
46 | $labels['folders-all'] = 'All folders'; | ||
47 | $labels['more'] = 'More'; | ||
48 | $labels['back'] = 'Back'; | ||
49 | @@ -184,6 +185,7 @@ $labels['namex'] = 'Name'; | ||
50 | $labels['searchscope'] = 'Scope'; | ||
51 | $labels['currentfolder'] = 'Current folder'; | ||
52 | $labels['subfolders'] = 'This and subfolders'; | ||
53 | +$labels['allsubscribedfolders'] = 'All subscribed folders'; | ||
54 | $labels['allfolders'] = 'All folders'; | ||
55 | $labels['openinextwin'] = 'Open in new window'; | ||
56 | $labels['emlsave'] = 'Download (.eml)'; | ||
57 | diff --git a/program/localization/en_GB/labels.inc b/program/localization/en_GB/labels.inc | ||
58 | index a442965de..b5b4839e3 100644 | ||
59 | --- a/program/localization/en_GB/labels.inc | ||
60 | +++ b/program/localization/en_GB/labels.inc | ||
61 | @@ -135,6 +135,7 @@ $labels['moreactions'] = 'More actions...'; | ||
62 | $labels['markallread'] = 'Mark all as read'; | ||
63 | $labels['folders-cur'] = 'Selected folder only'; | ||
64 | $labels['folders-sub'] = 'Selected folder and its subfolders'; | ||
65 | +$labels['folders-allsubscribed'] = 'All subscribed folders'; | ||
66 | $labels['folders-all'] = 'All folders'; | ||
67 | $labels['more'] = 'More'; | ||
68 | $labels['back'] = 'Back'; | ||
69 | @@ -221,6 +222,7 @@ $labels['namex'] = 'Name'; | ||
70 | $labels['searchscope'] = 'Scope'; | ||
71 | $labels['currentfolder'] = 'Current folder'; | ||
72 | $labels['subfolders'] = 'This and subfolders'; | ||
73 | +$labels['allsubscribedfolders'] = 'All subscribed folders'; | ||
74 | $labels['allfolders'] = 'All folders'; | ||
75 | $labels['searchinterval-1W'] = 'older than a week'; | ||
76 | $labels['searchinterval-1M'] = 'older than a month'; | ||
77 | diff --git a/program/localization/en_US/labels.inc b/program/localization/en_US/labels.inc | ||
78 | index 2e8ec8009..c7736557f 100644 | ||
79 | --- a/program/localization/en_US/labels.inc | ||
80 | +++ b/program/localization/en_US/labels.inc | ||
81 | @@ -158,6 +158,7 @@ $labels['moreactions'] = 'More actions...'; | ||
82 | $labels['markallread'] = 'Mark all as read'; | ||
83 | $labels['folders-cur'] = 'Selected folder only'; | ||
84 | $labels['folders-sub'] = 'Selected folder and its subfolders'; | ||
85 | +$labels['folders-allsubscribed'] = 'All subscribed folders'; | ||
86 | $labels['folders-all'] = 'All folders'; | ||
87 | $labels['more'] = 'More'; | ||
88 | $labels['back'] = 'Back'; | ||
89 | @@ -249,6 +250,7 @@ $labels['namex'] = 'Name'; | ||
90 | $labels['searchscope'] = 'Scope'; | ||
91 | $labels['currentfolder'] = 'Current folder'; | ||
92 | $labels['subfolders'] = 'This and subfolders'; | ||
93 | +$labels['allsubscribedfolders'] = 'All subscribed folders'; | ||
94 | $labels['allfolders'] = 'All folders'; | ||
95 | $labels['searchinterval-1W'] = 'older than a week'; | ||
96 | $labels['searchinterval-1M'] = 'older than a month'; | ||
97 | diff --git a/program/localization/fr_FR/labels.inc b/program/localization/fr_FR/labels.inc | ||
98 | index 6db44f95c..ad83e15d8 100644 | ||
99 | --- a/program/localization/fr_FR/labels.inc | ||
100 | +++ b/program/localization/fr_FR/labels.inc | ||
101 | @@ -135,6 +135,7 @@ $labels['moreactions'] = 'Plus d’actions…'; | ||
102 | $labels['markallread'] = 'Tout marquer comme lu'; | ||
103 | $labels['folders-cur'] = 'Dossier sélectionné seulement'; | ||
104 | $labels['folders-sub'] = 'Dossier sélectionné et ses sous-dossiers'; | ||
105 | +$labels['folders-allsubscribed'] = 'Tous les dossiers souscrits'; | ||
106 | $labels['folders-all'] = 'Tous les dossiers'; | ||
107 | $labels['more'] = 'Plus'; | ||
108 | $labels['back'] = 'Retour'; | ||
109 | @@ -221,6 +222,7 @@ $labels['namex'] = 'Nom'; | ||
110 | $labels['searchscope'] = 'Portée'; | ||
111 | $labels['currentfolder'] = 'Répertoire actuel'; | ||
112 | $labels['subfolders'] = 'Ceci et les sous-dossiers'; | ||
113 | +$labels['allsubscribedfolders'] = 'Tous les dossiers souscrits'; | ||
114 | $labels['allfolders'] = 'Tous les dossiers'; | ||
115 | $labels['searchinterval-1W'] = 'plus d’une semaine'; | ||
116 | $labels['searchinterval-1M'] = 'plus d’un mois'; | ||
117 | diff --git a/program/steps/mail/func.inc b/program/steps/mail/func.inc | ||
118 | index 8e0c642f6..ac79780e0 100644 | ||
119 | --- a/program/steps/mail/func.inc | ||
120 | +++ b/program/steps/mail/func.inc | ||
121 | @@ -110,8 +110,8 @@ if (empty($RCMAIL->action) || $RCMAIL->action == 'list') { | ||
122 | 'copy', 'move', 'quota', 'replyall', 'replylist', 'stillsearching', | ||
123 | 'flagged', 'unflagged', 'unread', 'deleted', 'replied', 'forwarded', | ||
124 | 'priority', 'withattachment', 'fileuploaderror', 'mark', 'markallread', | ||
125 | - 'folders-cur', 'folders-sub', 'folders-all', 'cancel', 'bounce', 'bouncemsg', | ||
126 | - 'sendingmessage'); | ||
127 | + 'folders-cur', 'folders-sub', 'folders-allsubscribed', 'folder-all', | ||
128 | + 'cancel', 'bounce', 'bouncemsg', 'sendingmessage'); | ||
129 | } | ||
130 | } | ||
131 | |||
132 | diff --git a/program/steps/mail/search.inc b/program/steps/mail/search.inc | ||
133 | index f60528835..836a715b0 100644 | ||
134 | --- a/program/steps/mail/search.inc | ||
135 | +++ b/program/steps/mail/search.inc | ||
136 | @@ -86,7 +86,7 @@ else if (strlen(trim($str))) { | ||
137 | } | ||
138 | |||
139 | // save search modifiers for the current folder to user prefs | ||
140 | - $mkey = $scope == 'all' ? '*' : $mbox; | ||
141 | + $mkey = ($scope == 'all' || $scope == 'allsubscribed') ? '*' : $mbox; | ||
142 | $search_mods = rcmail_search_mods(); | ||
143 | $search_mods[$mkey] = array_fill_keys(array_keys($subject), 1); | ||
144 | |||
145 | @@ -124,6 +124,10 @@ if (!empty($continue) && isset($_SESSION['search']) && $_SESSION['search_request | ||
146 | if ($search_str) { | ||
147 | // search all, current or subfolders folders | ||
148 | if ($scope == 'all') { | ||
149 | + $mboxes = $RCMAIL->storage->list_folders('', '*', 'mail', null, true); | ||
150 | + natcasesort($mboxes); // we want natural alphabetic sorting of folders in the result set | ||
151 | + } | ||
152 | + else if ($scope == 'allsubscribed') { | ||
153 | $mboxes = $RCMAIL->storage->list_folders_subscribed('', '*', 'mail', null, true); | ||
154 | natcasesort($mboxes); // we want natural alphabetic sorting of folders in the result set | ||
155 | } | ||
156 | @@ -133,7 +137,7 @@ if ($search_str) { | ||
157 | array_unshift($mboxes, $mbox); | ||
158 | } | ||
159 | |||
160 | - if ($scope != 'all') { | ||
161 | + if ($scope != 'all' && $scope != 'allsubscribed') { | ||
162 | // Remember current folder, it can change in meantime (plugins) | ||
163 | // but we need it to e.g. recognize Sent folder to handle From/To column later | ||
164 | $RCMAIL->output->set_env('mailbox', $mbox); | ||
165 | @@ -194,7 +198,7 @@ else { | ||
166 | $count = 0; | ||
167 | $OUTPUT->show_message('searchnomatch', 'notice'); | ||
168 | $OUTPUT->set_env('multifolder_listing', (bool)$result->multi); | ||
169 | - if ($result->multi && $scope == 'all') { | ||
170 | + if ($result->multi && ($scope == 'all' || $scope == 'allsubscribed')) { | ||
171 | $OUTPUT->command('select_folder', ''); | ||
172 | } | ||
173 | } | ||
174 | diff --git a/skins/classic/templates/mail.html b/skins/classic/templates/mail.html | ||
175 | index 666adf606..23d12a275 100644 | ||
176 | --- a/skins/classic/templates/mail.html | ||
177 | +++ b/skins/classic/templates/mail.html | ||
178 | @@ -106,6 +106,7 @@ | ||
179 | <li><label class="comment"><roundcube:label name="searchscope" /></label></li> | ||
180 | <li><label><input type="radio" name="s_scope" value="base" id="s_scope_base" onclick="rcmail.set_searchscope(this.value)" /> <span><roundcube:label name="currentfolder" /></span></label></li> | ||
181 | <li><label><input type="radio" name="s_scope" value="sub" id="s_scope_sub" onclick="rcmail.set_searchscope(this.value)" /> <span><roundcube:label name="subfolders" /></span></label></li> | ||
182 | + <li><label><input type="radio" name="s_scope" value="allsubscribed" id="s_scope_allsubscribed" onclick="rcmail.set_searchscope(this.value)" /> <span><roundcube:label name="allsubscribedfolders" /></span></label></li> | ||
183 | <li><label><input type="radio" name="s_scope" value="all" id="s_scope_all" onclick="rcmail.set_searchscope(this.value)" /> <span><roundcube:label name="allfolders" /></span></label></li> | ||
184 | </ul> | ||
185 | </div> | ||
186 | diff --git a/skins/elastic/templates/mail.html b/skins/elastic/templates/mail.html | ||
187 | index 51dbfcd30..4c2281281 100644 | ||
188 | --- a/skins/elastic/templates/mail.html | ||
189 | +++ b/skins/elastic/templates/mail.html | ||
190 | @@ -77,6 +77,7 @@ | ||
191 | <select name="s_scope" id="s_scope"> | ||
192 | <option value="base"><roundcube:label name="currentfolder" /></option> | ||
193 | <option value="sub"><roundcube:label name="subfolders" /></option> | ||
194 | + <option value="allsubscribed"><roundcube:label name="allsubscribedfolders" /></option> | ||
195 | <option value="all"><roundcube:label name="allfolders" /></option> | ||
196 | </select> | ||
197 | </div> | ||
198 | diff --git a/skins/larry/templates/mail.html b/skins/larry/templates/mail.html | ||
199 | index 5ef0bc211..e0e8280ad 100644 | ||
200 | --- a/skins/larry/templates/mail.html | ||
201 | +++ b/skins/larry/templates/mail.html | ||
202 | @@ -56,6 +56,7 @@ | ||
203 | <li role="separator" class="separator"><label><roundcube:label name="searchscope" /></label></li> | ||
204 | <li role="menuitem"><label><input type="radio" name="s_scope" value="base" id="s_scope_base" onclick="UI.set_searchscope(this)" /> <span><roundcube:label name="currentfolder" /></span></label></li> | ||
205 | <li role="menuitem"><label><input type="radio" name="s_scope" value="sub" id="s_scope_sub" onclick="UI.set_searchscope(this)" /> <span><roundcube:label name="subfolders" /></span></label></li> | ||
206 | + <li role="menuitem"><label><input type="radio" name="s_scope" value="allsubscribed" id="s_scope_allsubscribed" onclick="UI.set_searchscope(this)" /> <span><roundcube:label name="allsubscribedfolders" /></span></label></li> | ||
207 | <li role="menuitem"><label><input type="radio" name="s_scope" value="all" id="s_scope_all" onclick="UI.set_searchscope(this)" /> <span><roundcube:label name="allfolders" /></span></label></li> | ||
208 | </ul> | ||
209 | <div class="buttons"><a class="button" href="#" onclick="if (rcmail.command('search')) UI.show_popup('searchmenu',false)"><roundcube:label name="search" /></a></div> | ||
diff --git a/flakes/mypackages/pkgs/webapps/roundcubemail/default.nix b/flakes/mypackages/pkgs/webapps/roundcubemail/default.nix new file mode 100644 index 0000000..bdddf2f --- /dev/null +++ b/flakes/mypackages/pkgs/webapps/roundcubemail/default.nix | |||
@@ -0,0 +1,85 @@ | |||
1 | { varDir ? "/var/lib/roundcubemail" | ||
2 | , roundcube_config ? "/etc/roundcube/config.php" | ||
3 | , stdenv, fetchurl, jre, unzip, lib, callPackage }: | ||
4 | let | ||
5 | defaultInstall = '' | ||
6 | mkdir -p $out | ||
7 | cp -R . $out/ | ||
8 | cd $out | ||
9 | if [ -d skins -a -d skins/larry -a ! -d skins/elastic ]; then | ||
10 | ln -s larry skins/elastic | ||
11 | fi | ||
12 | ''; | ||
13 | buildPlugin = { appName, version, url, sha256, installPhase ? defaultInstall }: | ||
14 | stdenv.mkDerivation rec { | ||
15 | name = "roundcube-${appName}-${version}"; | ||
16 | inherit version; | ||
17 | phases = "unpackPhase installPhase"; | ||
18 | inherit installPhase; | ||
19 | src = fetchurl { inherit url sha256; }; | ||
20 | passthru.pluginName = appName; | ||
21 | }; | ||
22 | skinNames = []; | ||
23 | allSkins = lib.attrsets.genAttrs skinNames | ||
24 | (name: callPackage (./skins + "/${name}") {}); | ||
25 | pluginNames = [ | ||
26 | "automatic_addressbook" "carddav" "contextmenu" | ||
27 | "contextmenu_folder" "html5_notifier" "ident_switch" | ||
28 | "message_highlight" "thunderbird_labels" | ||
29 | ]; | ||
30 | allPlugins = lib.attrsets.genAttrs pluginNames | ||
31 | (name: callPackage (./plugins + "/${name}") { inherit buildPlugin; }); | ||
32 | toPassthru = pkg: plugins: skins: { | ||
33 | inherit plugins skins allSkins allPlugins; | ||
34 | withSkins = withSkins pkg; | ||
35 | withPlugins = withPlugins pkg; | ||
36 | }; | ||
37 | withPlugins = pkg: toPlugins: | ||
38 | let | ||
39 | plugins = toPlugins allPlugins; | ||
40 | toInstallPlugin = n: "ln -s ${n} $out/plugins/${n.pluginName}"; | ||
41 | newRoundcube = pkg.overrideAttrs(old: { | ||
42 | installPhase = old.installPhase + "\n" + builtins.concatStringsSep "\n" (map toInstallPlugin plugins); | ||
43 | passthru = toPassthru newRoundcube (pkg.plugins ++ plugins) pkg.skins; | ||
44 | }); | ||
45 | in newRoundcube; | ||
46 | withSkins = pkg: toSkins: | ||
47 | let | ||
48 | skins = toSkins allSkins; | ||
49 | toInstallSkin = n: "ln -s ${n} $out/skins/${n.skinName}"; | ||
50 | newRoundcube = pkg.overrideAttrs(old: { | ||
51 | installPhase = old.installPhase + "\n" + builtins.concatStringsSep "\n" (map toInstallSkin skins); | ||
52 | passthru = toPassthru newRoundcube pkg.plugins (pkg.skins ++ skins); | ||
53 | }); | ||
54 | in newRoundcube; | ||
55 | shrinker = fetchurl { | ||
56 | url = "https://dl.google.com/closure-compiler/compiler-20200719.zip"; | ||
57 | sha256 = "0j46y9ack2yq67naca6nfysbmyilwjlkl29dbswidf1lq09yhhj3"; | ||
58 | }; | ||
59 | package = stdenv.mkDerivation rec { | ||
60 | version = "1.4.4"; | ||
61 | name = "roundcubemail-${version}"; | ||
62 | src= fetchurl { | ||
63 | url = "https://github.com/roundcube/roundcubemail/releases/download/${version}/${name}-complete.tar.gz"; | ||
64 | sha256 = "1my726p0wmsn21nbdsjx02h6hnbh8nidzipzdy0gk0qgda1j729b"; | ||
65 | }; | ||
66 | patches = [ ./add_all.patch ]; # This patch includes js modification which requires to re-run the jsshrink below | ||
67 | buildInputs = [ unzip jre ]; | ||
68 | buildPhase = '' | ||
69 | mkdir -p /tmp | ||
70 | unzip -p "${shrinker}" "*.jar" > "/tmp/compiler.jar" | ||
71 | ./bin/jsshrink.sh | ||
72 | sed -i \ | ||
73 | -e "s|RCUBE_INSTALL_PATH . 'temp.*|'${varDir}/cache';|" \ | ||
74 | config/defaults.inc.php | ||
75 | sed -i \ | ||
76 | -e "s|RCUBE_INSTALL_PATH . 'logs.*|'${varDir}/logs';|" \ | ||
77 | config/defaults.inc.php | ||
78 | ''; | ||
79 | installPhase = '' | ||
80 | cp -a . $out | ||
81 | ln -s ${roundcube_config} $out/config/config.inc.php | ||
82 | ''; | ||
83 | passthru = toPassthru package [] []; | ||
84 | }; | ||
85 | in package | ||
diff --git a/flakes/mypackages/pkgs/webapps/roundcubemail/plugins/automatic_addressbook/default.nix b/flakes/mypackages/pkgs/webapps/roundcubemail/plugins/automatic_addressbook/default.nix new file mode 100644 index 0000000..cd9efee --- /dev/null +++ b/flakes/mypackages/pkgs/webapps/roundcubemail/plugins/automatic_addressbook/default.nix | |||
@@ -0,0 +1,7 @@ | |||
1 | { buildPlugin }: | ||
2 | buildPlugin rec { | ||
3 | appName = "automatic_addressbook"; | ||
4 | version = "0.4.3"; | ||
5 | url = "https://github.com/sblaisot/${appName}/archive/${version}.tar.gz"; | ||
6 | sha256 = "0bx5qjzp3a3wc72fr295bvgsy5n15949c041hq76n6c7sqdn7inc"; | ||
7 | } | ||
diff --git a/flakes/mypackages/pkgs/webapps/roundcubemail/plugins/carddav/default.nix b/flakes/mypackages/pkgs/webapps/roundcubemail/plugins/carddav/default.nix new file mode 100644 index 0000000..ad6856b --- /dev/null +++ b/flakes/mypackages/pkgs/webapps/roundcubemail/plugins/carddav/default.nix | |||
@@ -0,0 +1,7 @@ | |||
1 | { buildPlugin }: | ||
2 | buildPlugin rec { | ||
3 | appName = "carddav"; | ||
4 | version = "3.0.3"; | ||
5 | url = "https://github.com/blind-coder/rcmcarddav/releases/download/v${version}/${appName}-${version}.tar.bz2"; | ||
6 | sha256 = "0cf5rnqkhhag2vdy808zfpr4l5586fn43nvcia8ac1ha58azrxal"; | ||
7 | } | ||
diff --git a/flakes/mypackages/pkgs/webapps/roundcubemail/plugins/contextmenu/default.nix b/flakes/mypackages/pkgs/webapps/roundcubemail/plugins/contextmenu/default.nix new file mode 100644 index 0000000..34a43a7 --- /dev/null +++ b/flakes/mypackages/pkgs/webapps/roundcubemail/plugins/contextmenu/default.nix | |||
@@ -0,0 +1,7 @@ | |||
1 | { buildPlugin }: | ||
2 | buildPlugin rec { | ||
3 | appName = "contextmenu"; | ||
4 | version = "3.2"; | ||
5 | url = "https://github.com/johndoh/roundcube-${appName}/archive/${version}.tar.gz"; | ||
6 | sha256 = "1j7qns42bvgwav8d5n8g16iajyrhydd76hgil8625f3xyjbv4mx0"; | ||
7 | } | ||
diff --git a/flakes/mypackages/pkgs/webapps/roundcubemail/plugins/contextmenu_folder/default.nix b/flakes/mypackages/pkgs/webapps/roundcubemail/plugins/contextmenu_folder/default.nix new file mode 100644 index 0000000..e5cb46d --- /dev/null +++ b/flakes/mypackages/pkgs/webapps/roundcubemail/plugins/contextmenu_folder/default.nix | |||
@@ -0,0 +1,7 @@ | |||
1 | { buildPlugin }: | ||
2 | buildPlugin rec { | ||
3 | appName = "contextmenu_folder"; | ||
4 | version = "1.3.3"; | ||
5 | url = "https://github.com/random-cuber/${appName}/archive/${version}.tar.gz"; | ||
6 | sha256 = "1ngfws1v8qrpa52rjh7kirc98alchk2vbqwra86h00agyjjlcc57"; | ||
7 | } | ||
diff --git a/flakes/mypackages/pkgs/webapps/roundcubemail/plugins/html5_notifier/default.nix b/flakes/mypackages/pkgs/webapps/roundcubemail/plugins/html5_notifier/default.nix new file mode 100644 index 0000000..a5788b3 --- /dev/null +++ b/flakes/mypackages/pkgs/webapps/roundcubemail/plugins/html5_notifier/default.nix | |||
@@ -0,0 +1,7 @@ | |||
1 | { buildPlugin }: | ||
2 | buildPlugin rec { | ||
3 | appName = "html5_notifier"; | ||
4 | version = "v0.6.4"; | ||
5 | url = "https://github.com/stremlau/${appName}/archive/${version}.tar.gz"; | ||
6 | sha256 = "1w6xkffgxwbahi7acixdh5sgjvsjlfwdq942gkvc64byk8r3bhsj"; | ||
7 | } | ||
diff --git a/flakes/mypackages/pkgs/webapps/roundcubemail/plugins/ident_switch/default.nix b/flakes/mypackages/pkgs/webapps/roundcubemail/plugins/ident_switch/default.nix new file mode 100644 index 0000000..3e10fee --- /dev/null +++ b/flakes/mypackages/pkgs/webapps/roundcubemail/plugins/ident_switch/default.nix | |||
@@ -0,0 +1,7 @@ | |||
1 | { buildPlugin }: | ||
2 | buildPlugin rec { | ||
3 | appName = "ident_switch"; | ||
4 | version = "4.2"; | ||
5 | url = "https://bitbucket.org/BoresExpress/${appName}/get/${version}.tar.gz"; | ||
6 | sha256 = "0rf2krjsnly4i0mzgsbx09xckr3p9a9dzxf8qq4lkyng1a7dvjkq"; | ||
7 | } | ||
diff --git a/flakes/mypackages/pkgs/webapps/roundcubemail/plugins/message_highlight/default.nix b/flakes/mypackages/pkgs/webapps/roundcubemail/plugins/message_highlight/default.nix new file mode 100644 index 0000000..dc7138a --- /dev/null +++ b/flakes/mypackages/pkgs/webapps/roundcubemail/plugins/message_highlight/default.nix | |||
@@ -0,0 +1,7 @@ | |||
1 | { buildPlugin }: | ||
2 | buildPlugin rec { | ||
3 | appName = "message_highlight"; | ||
4 | version = "4.4"; | ||
5 | url = "https://github.com/corbosman/${appName}/archive/${version}.tar.gz"; | ||
6 | sha256 = "12c4x47y70xdl5pgm8csh5i4yiyhpi232lvjbixmca6di4lkhh9j"; | ||
7 | } | ||
diff --git a/flakes/mypackages/pkgs/webapps/roundcubemail/plugins/thunderbird_labels/default.nix b/flakes/mypackages/pkgs/webapps/roundcubemail/plugins/thunderbird_labels/default.nix new file mode 100644 index 0000000..b67f16a --- /dev/null +++ b/flakes/mypackages/pkgs/webapps/roundcubemail/plugins/thunderbird_labels/default.nix | |||
@@ -0,0 +1,7 @@ | |||
1 | { buildPlugin }: | ||
2 | buildPlugin rec { | ||
3 | appName = "thunderbird_labels"; | ||
4 | version = "v1.4.2"; | ||
5 | url = "https://github.com/mike-kfed/roundcube-${appName}/archive/${version}.tar.gz"; | ||
6 | sha256 = "00dqqlq6m8a6dwynp6gwfimc10anbs8kh0qdy8xvq2l06hk6jxyc"; | ||
7 | } | ||
diff --git a/flakes/mypackages/pkgs/webapps/spip/default.nix b/flakes/mypackages/pkgs/webapps/spip/default.nix new file mode 100644 index 0000000..20d5c8c --- /dev/null +++ b/flakes/mypackages/pkgs/webapps/spip/default.nix | |||
@@ -0,0 +1,32 @@ | |||
1 | { siteName ? "spip" | ||
2 | , siteDir ? runCommand "empty" { preferLocalBuild = true; } "mkdir -p $out" | ||
3 | , environment ? "prod" | ||
4 | , ldap ? false | ||
5 | , varDir ? "/var/lib/${siteName}_${environment}" | ||
6 | , lib, fetchzip, runCommand, stdenv }: | ||
7 | let | ||
8 | app = stdenv.mkDerivation rec { | ||
9 | name = "${siteName}-${environment}-spip-${version}"; | ||
10 | version = "3.2.7"; | ||
11 | src = fetchzip { | ||
12 | url = "https://files.spip.net/spip/archives/SPIP-v${version}.zip"; | ||
13 | sha256 = "0n4kc95nhn524zbb11bpfjs965pm4v026s3m3q44pl8nyms91r33"; | ||
14 | }; | ||
15 | paches = lib.optionals ldap [ ./spip_ldap_patch.patch ]; | ||
16 | buildPhase = '' | ||
17 | rm -rf IMG local tmp config/remove.txt | ||
18 | ln -sf ${./spip_mes_options.php} config/mes_options.php | ||
19 | echo "Require all denied" > "config/.htaccess" | ||
20 | ln -sf ${varDir}/{IMG,local} . | ||
21 | ''; | ||
22 | installPhase = '' | ||
23 | cp -a . $out | ||
24 | cp -a ${siteDir}/* $out | ||
25 | ''; | ||
26 | passthru = { | ||
27 | inherit siteName siteDir environment varDir; | ||
28 | webRoot = app; | ||
29 | spipConfig = ./spip_mes_options.php; | ||
30 | }; | ||
31 | }; | ||
32 | in app | ||
diff --git a/flakes/mypackages/pkgs/webapps/spip/spip_ldap_patch.patch b/flakes/mypackages/pkgs/webapps/spip/spip_ldap_patch.patch new file mode 100644 index 0000000..653c909 --- /dev/null +++ b/flakes/mypackages/pkgs/webapps/spip/spip_ldap_patch.patch | |||
@@ -0,0 +1,60 @@ | |||
1 | --- old/ecrire/auth/ldap.php 2017-06-08 21:58:17.000000000 +0200 | ||
2 | +++ new/ecrire/auth/ldap.php 2017-06-10 02:54:02.687954143 +0200 | ||
3 | @@ -171,24 +171,41 @@ | ||
4 | $desc = isset($ldap['attributes']) && $ldap['attributes'] ? $ldap['attributes'] : $GLOBALS['ldap_attributes'] ; | ||
5 | |||
6 | $logins = is_array($desc['login']) ? $desc['login'] : array($desc['login']); | ||
7 | + if (isset($GLOBALS['ldap_search'])) { | ||
8 | + $search_query = str_replace("%user%", $login_search, $GLOBALS['ldap_search']); | ||
9 | + $result = @ldap_search($ldap_link, $ldap_base, $search_query, array("dn")); | ||
10 | + $info = @ldap_get_entries($ldap_link, $result); | ||
11 | + // Ne pas accepter les resultats si plus d'une entree | ||
12 | + // (on veut un attribut unique) | ||
13 | |||
14 | - // Tenter une recherche pour essayer de retrouver le DN | ||
15 | - foreach ($logins as $att) { | ||
16 | - $result = @ldap_search($ldap_link, $ldap_base, "$att=$login_search", array("dn")); | ||
17 | - $info = @ldap_get_entries($ldap_link, $result); | ||
18 | - // Ne pas accepter les resultats si plus d'une entree | ||
19 | - // (on veut un attribut unique) | ||
20 | + if (is_array($info) and $info['count'] == 1) { | ||
21 | + $dn = $info[0]['dn']; | ||
22 | + if (!$checkpass) { | ||
23 | + return $dn; | ||
24 | + } | ||
25 | + if (@ldap_bind($ldap_link, $dn, $pass)) { | ||
26 | + return $dn; | ||
27 | + } | ||
28 | + } | ||
29 | + } else { | ||
30 | + // Tenter une recherche pour essayer de retrouver le DN | ||
31 | + foreach ($logins as $att) { | ||
32 | + $result = @ldap_search($ldap_link, $ldap_base, "$att=$login_search", array("dn")); | ||
33 | + $info = @ldap_get_entries($ldap_link, $result); | ||
34 | + // Ne pas accepter les resultats si plus d'une entree | ||
35 | + // (on veut un attribut unique) | ||
36 | |||
37 | - if (is_array($info) and $info['count'] == 1) { | ||
38 | - $dn = $info[0]['dn']; | ||
39 | - if (!$checkpass) { | ||
40 | - return $dn; | ||
41 | - } | ||
42 | - if (@ldap_bind($ldap_link, $dn, $pass)) { | ||
43 | - return $dn; | ||
44 | - } | ||
45 | - } | ||
46 | - } | ||
47 | + if (is_array($info) and $info['count'] == 1) { | ||
48 | + $dn = $info[0]['dn']; | ||
49 | + if (!$checkpass) { | ||
50 | + return $dn; | ||
51 | + } | ||
52 | + if (@ldap_bind($ldap_link, $dn, $pass)) { | ||
53 | + return $dn; | ||
54 | + } | ||
55 | + } | ||
56 | + } | ||
57 | + } | ||
58 | |||
59 | if ($checkpass and !isset($dn)) { | ||
60 | // Si echec, essayer de deviner le DN | ||
diff --git a/flakes/mypackages/pkgs/webapps/spip/spip_mes_options.php b/flakes/mypackages/pkgs/webapps/spip/spip_mes_options.php new file mode 100644 index 0000000..8db8389 --- /dev/null +++ b/flakes/mypackages/pkgs/webapps/spip/spip_mes_options.php | |||
@@ -0,0 +1,18 @@ | |||
1 | <?php // /!\ Important: There must be no blank space before <?php or after ?> | ||
2 | // This file was inspired from the spip contrib website | ||
3 | // http://www.spip.net/fr_article3811.html | ||
4 | |||
5 | $config_dir = getenv('SPIP_CONFIG_DIR') . '/'; | ||
6 | $var_dir = getenv('SPIP_VAR_DIR') . '/'; | ||
7 | |||
8 | $cookie_prefix = str_replace('.', '_', getenv("SPIP_SITE")); | ||
9 | $table_prefix = 'spip'; | ||
10 | |||
11 | spip_initialisation( | ||
12 | $config_dir, | ||
13 | _DIR_RACINE . _NOM_PERMANENTS_ACCESSIBLES, | ||
14 | $var_dir . _NOM_TEMPORAIRES_INACCESSIBLES, | ||
15 | _DIR_RACINE . _NOM_TEMPORAIRES_ACCESSIBLES | ||
16 | ); | ||
17 | |||
18 | ?> | ||
diff --git a/flakes/mypackages/pkgs/webapps/ttrss/default.nix b/flakes/mypackages/pkgs/webapps/ttrss/default.nix new file mode 100644 index 0000000..fa2453e --- /dev/null +++ b/flakes/mypackages/pkgs/webapps/ttrss/default.nix | |||
@@ -0,0 +1,37 @@ | |||
1 | { ttrss_config ? "/etc/ttrss/config.php" | ||
2 | , varDir ? "/var/lib/ttrss" | ||
3 | , stdenv, lib, callPackage, sources }: | ||
4 | let | ||
5 | pluginNames = [ "auth_ldap" "af_feedmod" "feediron" "ff_instagram" "tumblr_gdpr_ua" ]; | ||
6 | allPlugins = lib.attrsets.genAttrs pluginNames | ||
7 | (name: callPackage (./plugins + "/${name}") {}); | ||
8 | toPassthru = pkg: plugins: { | ||
9 | inherit plugins allPlugins; | ||
10 | withPlugins = withPlugins pkg; | ||
11 | }; | ||
12 | withPlugins = pkg: toPlugins: | ||
13 | let | ||
14 | plugins = toPlugins allPlugins; | ||
15 | toInstallPlugin = n: | ||
16 | "ln -sf ${n} $out/plugins/${n.pluginName}"; | ||
17 | newTtrss = pkg.overrideAttrs(old: { | ||
18 | installPhase = old.installPhase + "\n" + builtins.concatStringsSep "\n" (map toInstallPlugin plugins); | ||
19 | passthru = toPassthru newTtrss (pkg.plugins ++ plugins); | ||
20 | }); | ||
21 | in newTtrss; | ||
22 | package = stdenv.mkDerivation rec { | ||
23 | pname = "tt-rss"; | ||
24 | version = "${sources.tools.ttrss.shortRev}-master"; | ||
25 | name = "${pname}-${version}"; | ||
26 | src = sources.tools.ttrss; | ||
27 | buildPhase = '' | ||
28 | rm -rf lock feed-icons cache | ||
29 | ln -sf ${varDir}/{lock,feed-icons,cache} . | ||
30 | ''; | ||
31 | installPhase = '' | ||
32 | cp -a . $out | ||
33 | ln -s ${ttrss_config} $out/config.php | ||
34 | ''; | ||
35 | passthru = toPassthru package []; | ||
36 | }; | ||
37 | in package | ||
diff --git a/flakes/mypackages/pkgs/webapps/ttrss/plugins/af_feedmod/default.nix b/flakes/mypackages/pkgs/webapps/ttrss/plugins/af_feedmod/default.nix new file mode 100644 index 0000000..39f9e0e --- /dev/null +++ b/flakes/mypackages/pkgs/webapps/ttrss/plugins/af_feedmod/default.nix | |||
@@ -0,0 +1,18 @@ | |||
1 | { patched ? false, stdenv, fetchFromGitHub, lib }: | ||
2 | stdenv.mkDerivation ({ | ||
3 | pname = "ttrss-af_feedmod"; | ||
4 | version = "0ea2092-master"; | ||
5 | src = fetchFromGitHub { | ||
6 | owner = "mbirth"; | ||
7 | repo = "ttrss_plugin-af_feedmod"; | ||
8 | rev = "0ea2092dd34067ecd898802cfca3570023d1ecfe"; | ||
9 | sha256 = "02ibf47zcrsc2rr45wsix8gxyyf371davj8n8i0gj1zdq95klvnv"; | ||
10 | fetchSubmodules = true; | ||
11 | }; | ||
12 | patches = lib.optionals patched [ ./type_replace.patch ]; | ||
13 | installPhase = '' | ||
14 | mkdir $out | ||
15 | cp init.php $out | ||
16 | ''; | ||
17 | passthru.pluginName = "af_feedmod"; | ||
18 | }) | ||
diff --git a/flakes/mypackages/pkgs/webapps/ttrss/plugins/af_feedmod/type_replace.patch b/flakes/mypackages/pkgs/webapps/ttrss/plugins/af_feedmod/type_replace.patch new file mode 100644 index 0000000..d622577 --- /dev/null +++ b/flakes/mypackages/pkgs/webapps/ttrss/plugins/af_feedmod/type_replace.patch | |||
@@ -0,0 +1,12 @@ | |||
1 | --- a/init.php 2014-06-16 14:21:06.995480038 +0200 | ||
2 | +++ b/init.php 2014-06-16 14:22:00.151027654 +0200 | ||
3 | @@ -147,6 +147,9 @@ | ||
4 | } | ||
5 | } | ||
6 | break; | ||
7 | + case 'replace': | ||
8 | + $article['content'] = preg_replace("/".$config['pattern']."/",$config['replacement'],$article['content']); | ||
9 | + break; | ||
10 | |||
11 | default: | ||
12 | // unknown type or invalid config | ||
diff --git a/flakes/mypackages/pkgs/webapps/ttrss/plugins/auth_ldap/default.nix b/flakes/mypackages/pkgs/webapps/ttrss/plugins/auth_ldap/default.nix new file mode 100644 index 0000000..d283160 --- /dev/null +++ b/flakes/mypackages/pkgs/webapps/ttrss/plugins/auth_ldap/default.nix | |||
@@ -0,0 +1,17 @@ | |||
1 | { stdenv, fetchFromGitHub }: | ||
2 | stdenv.mkDerivation ({ | ||
3 | pname = "ttrss-auth-ldap"; | ||
4 | version = "4d751b0-master"; | ||
5 | src = fetchFromGitHub { | ||
6 | owner = "hydrian"; | ||
7 | repo = "TTRSS-Auth-LDAP"; | ||
8 | rev = "4d751b095c29a8dbe2dc7bb07777742956136e94"; | ||
9 | sha256 = "0b9fl86acrzpcv41r7pj3bl8b3n72hpkdywzx9zjyfqv5pskxyim"; | ||
10 | fetchSubmodules = true; | ||
11 | }; | ||
12 | installPhase = '' | ||
13 | mkdir $out | ||
14 | cp plugins/auth_ldap/init.php $out | ||
15 | ''; | ||
16 | passthru.pluginName = "auth_ldap"; | ||
17 | }) | ||
diff --git a/flakes/mypackages/pkgs/webapps/ttrss/plugins/feediron/default.nix b/flakes/mypackages/pkgs/webapps/ttrss/plugins/feediron/default.nix new file mode 100644 index 0000000..2f86416 --- /dev/null +++ b/flakes/mypackages/pkgs/webapps/ttrss/plugins/feediron/default.nix | |||
@@ -0,0 +1,18 @@ | |||
1 | { patched ? false, stdenv, fetchFromGitHub, lib }: | ||
2 | stdenv.mkDerivation ({ | ||
3 | pname = "ttrss-feediron"; | ||
4 | version = "407168c-master"; | ||
5 | src = fetchFromGitHub { | ||
6 | owner = "m42e"; | ||
7 | repo = "ttrss_plugin-feediron"; | ||
8 | rev = "407168c628880b5ced572cc549db6d50e866d3c8"; | ||
9 | sha256 = "17b95ifpcph6m03hjd1mhi8gi1hw9yd3fnffmw66fqr5c9l3zd9r"; | ||
10 | fetchSubmodules = true; | ||
11 | }; | ||
12 | patches = lib.optionals patched [ ./json_reformat.patch ]; | ||
13 | installPhase = '' | ||
14 | mkdir $out | ||
15 | cp -a . $out | ||
16 | ''; | ||
17 | passthru.pluginName = "feediron"; | ||
18 | }) | ||
diff --git a/flakes/mypackages/pkgs/webapps/ttrss/plugins/feediron/json_reformat.patch b/flakes/mypackages/pkgs/webapps/ttrss/plugins/feediron/json_reformat.patch new file mode 100644 index 0000000..e1c44d9 --- /dev/null +++ b/flakes/mypackages/pkgs/webapps/ttrss/plugins/feediron/json_reformat.patch | |||
@@ -0,0 +1,18 @@ | |||
1 | diff --git a/init.php b/init.php | ||
2 | index 3c0f2f9..1aad146 100644 | ||
3 | --- a/init.php | ||
4 | +++ b/init.php | ||
5 | @@ -600,10 +600,11 @@ class Feediron extends Plugin implements IHandler | ||
6 | return false; | ||
7 | } | ||
8 | |||
9 | - $this->host->set($this, 'json_conf', Feediron_Json::format($json_conf)); | ||
10 | + $new_conf = json_encode(json_decode($json_conf), JSON_PRETTY_PRINT); | ||
11 | + $this->host->set($this, 'json_conf', $new_conf); | ||
12 | $json_reply['success'] = true; | ||
13 | $json_reply['message'] = __('Configuration saved.'); | ||
14 | - $json_reply['json_conf'] = Feediron_Json::format($json_conf); | ||
15 | + $json_reply['json_conf'] = $new_conf; | ||
16 | echo json_encode($json_reply); | ||
17 | } | ||
18 | |||
diff --git a/flakes/mypackages/pkgs/webapps/ttrss/plugins/ff_instagram/default.nix b/flakes/mypackages/pkgs/webapps/ttrss/plugins/ff_instagram/default.nix new file mode 100644 index 0000000..f0df588 --- /dev/null +++ b/flakes/mypackages/pkgs/webapps/ttrss/plugins/ff_instagram/default.nix | |||
@@ -0,0 +1,17 @@ | |||
1 | { stdenv, fetchFromGitHub }: | ||
2 | stdenv.mkDerivation ({ | ||
3 | pname = "ttrss-ff_instagram"; | ||
4 | version = "0366ffb-master"; | ||
5 | src = fetchFromGitHub { | ||
6 | owner = "wltb"; | ||
7 | repo = "ff_instagram"; | ||
8 | rev = "0366ffb18c4d490c8fbfba2f5f3367a5af23cfe8"; | ||
9 | sha256 = "0vvzl6wi6jmrqknsfddvckjgsgfizz1d923d1nyrpzjfn6bda1vk"; | ||
10 | fetchSubmodules = true; | ||
11 | }; | ||
12 | installPhase = '' | ||
13 | mkdir $out | ||
14 | cp -a . $out | ||
15 | ''; | ||
16 | passthru.pluginName = "ff_instagram"; | ||
17 | }) | ||
diff --git a/flakes/mypackages/pkgs/webapps/ttrss/plugins/tumblr_gdpr_ua/default.nix b/flakes/mypackages/pkgs/webapps/ttrss/plugins/tumblr_gdpr_ua/default.nix new file mode 100644 index 0000000..072b6c3 --- /dev/null +++ b/flakes/mypackages/pkgs/webapps/ttrss/plugins/tumblr_gdpr_ua/default.nix | |||
@@ -0,0 +1,17 @@ | |||
1 | { stdenv, fetchFromGitHub }: | ||
2 | stdenv.mkDerivation ({ | ||
3 | pname = "ttrss-tumblr_gdpr_ua"; | ||
4 | version = "287c584-master"; | ||
5 | src = fetchFromGitHub { | ||
6 | owner = "hkockerbeck"; | ||
7 | repo = "ttrss-tumblr-gdpr-ua"; | ||
8 | rev = "287c584e68845d524f920156bff0b2eaa6f65117"; | ||
9 | sha256 = "1fviawgcclqky4k4xv1sqzvpb8i74w9f0pclm09m78s8l85wh9py"; | ||
10 | fetchSubmodules = true; | ||
11 | }; | ||
12 | installPhase = '' | ||
13 | mkdir $out | ||
14 | cp -a . $out | ||
15 | ''; | ||
16 | passthru.pluginName = "tumblr_gdpr_ua"; | ||
17 | }) | ||
diff --git a/flakes/mypackages/pkgs/webapps/wallabag/default.nix b/flakes/mypackages/pkgs/webapps/wallabag/default.nix new file mode 100644 index 0000000..bd420d4 --- /dev/null +++ b/flakes/mypackages/pkgs/webapps/wallabag/default.nix | |||
@@ -0,0 +1,54 @@ | |||
1 | { varDir ? "/var/lib/wallabag" | ||
2 | , wallabag_config ? "/etc/wallabag/parameters.yml" | ||
3 | , ldap ? false | ||
4 | , composerEnv, fetchurl, lib }: | ||
5 | composerEnv.buildPackage rec { | ||
6 | packages = { | ||
7 | "fr3d/ldap-bundle" = { | ||
8 | targetDir = ""; | ||
9 | src = composerEnv.buildZipPackage { | ||
10 | name = "fr3d-ldap-bundle-5a8927c11af45fa06331b97221c6da1a4a237475"; | ||
11 | src = fetchurl { | ||
12 | url = https://api.github.com/repos/Maks3w/FR3DLdapBundle/zipball/5a8927c11af45fa06331b97221c6da1a4a237475; | ||
13 | sha256 = "168zkd82j200wd6h0a3lq81g5s2pifg889rv27q2g429nppsbfxc"; | ||
14 | }; | ||
15 | }; | ||
16 | }; | ||
17 | "zendframework/zend-ldap" = { | ||
18 | targetDir = ""; | ||
19 | src = composerEnv.buildZipPackage { | ||
20 | name = "zendframework-zend-ldap-b63c7884a08d3a6bda60ebcf7d6238cf8ad89f49"; | ||
21 | src = fetchurl { | ||
22 | url = https://api.github.com/repos/zendframework/zend-ldap/zipball/b63c7884a08d3a6bda60ebcf7d6238cf8ad89f49; | ||
23 | sha256 = "0mn4yqnb5prqhrbbybmw1i2rx7xf4s4wagbdq9qi55fa0vk3jgw9"; | ||
24 | }; | ||
25 | }; | ||
26 | }; | ||
27 | }; | ||
28 | noDev = true; | ||
29 | doRemoveVendor = false; | ||
30 | # Beware when upgrading, I probably messed up with the migrations table | ||
31 | # (due to a psql bug in wallabag) | ||
32 | version = "2.3.8"; | ||
33 | name = "wallabag-${version}"; | ||
34 | src = fetchurl { | ||
35 | url = "https://static.wallabag.org/releases/wallabag-release-${version}.tar.gz"; | ||
36 | sha256 = "1sr62hfk2f2rl5by48dg8yd1gchngjnc850as17wr3w287p1kwsq"; | ||
37 | }; | ||
38 | unpackPhase = '' | ||
39 | unpackFile "$src" | ||
40 | sourceRoot=${version} | ||
41 | src=$PWD/${version} | ||
42 | ''; | ||
43 | patches = lib.optionals ldap [ ./ldap.patch ]; | ||
44 | preInstall = '' | ||
45 | export SYMFONY_ENV="prod" | ||
46 | ''; | ||
47 | postInstall = '' | ||
48 | rm -rf web/assets var/{cache,logs,sessions} app/config/parameters.yml data | ||
49 | ln -sf ${wallabag_config} app/config/parameters.yml | ||
50 | ln -sf ${varDir}/var/{cache,logs,sessions} var | ||
51 | ln -sf ${varDir}/data data | ||
52 | ln -sf ${varDir}/assets web/assets | ||
53 | ''; | ||
54 | } | ||
diff --git a/flakes/mypackages/pkgs/webapps/wallabag/ldap.patch b/flakes/mypackages/pkgs/webapps/wallabag/ldap.patch new file mode 100644 index 0000000..e04dae1 --- /dev/null +++ b/flakes/mypackages/pkgs/webapps/wallabag/ldap.patch | |||
@@ -0,0 +1,664 @@ | |||
1 | diff --git a/.travis.yml b/.travis.yml | ||
2 | index 04cea258..56b1f576 100644 | ||
3 | --- a/.travis.yml | ||
4 | +++ b/.travis.yml | ||
5 | @@ -58,6 +58,7 @@ install: | ||
6 | |||
7 | before_script: | ||
8 | - PHP=$TRAVIS_PHP_VERSION | ||
9 | + - echo "extension=ldap.so" >> ~/.phpenv/versions/$(phpenv version-name)/etc/conf.d/travis.ini | ||
10 | - if [[ ! $PHP = hhvm* ]]; then echo "memory_limit=-1" >> ~/.phpenv/versions/$(phpenv version-name)/etc/conf.d/travis.ini; fi; | ||
11 | # xdebug isn't enable for PHP 7.1 | ||
12 | - if [[ ! $PHP = hhvm* ]]; then phpenv config-rm xdebug.ini || echo "xdebug not available"; fi | ||
13 | diff --git a/app/AppKernel.php b/app/AppKernel.php | ||
14 | index 40726f05..c4f465dc 100644 | ||
15 | --- a/app/AppKernel.php | ||
16 | +++ b/app/AppKernel.php | ||
17 | @@ -42,6 +42,10 @@ class AppKernel extends Kernel | ||
18 | new OldSound\RabbitMqBundle\OldSoundRabbitMqBundle(), | ||
19 | ]; | ||
20 | |||
21 | + if (class_exists('FR3D\\LdapBundle\\FR3DLdapBundle')) { | ||
22 | + $bundles[] = new FR3D\LdapBundle\FR3DLdapBundle(); | ||
23 | + } | ||
24 | + | ||
25 | if (in_array($this->getEnvironment(), ['dev', 'test'], true)) { | ||
26 | $bundles[] = new Symfony\Bundle\DebugBundle\DebugBundle(); | ||
27 | $bundles[] = new Symfony\Bundle\WebProfilerBundle\WebProfilerBundle(); | ||
28 | diff --git a/app/DoctrineMigrations/Version20170710113900.php b/app/DoctrineMigrations/Version20170710113900.php | ||
29 | new file mode 100644 | ||
30 | index 00000000..7be83110 | ||
31 | --- /dev/null | ||
32 | +++ b/app/DoctrineMigrations/Version20170710113900.php | ||
33 | @@ -0,0 +1,54 @@ | ||
34 | +<?php | ||
35 | + | ||
36 | +namespace Application\Migrations; | ||
37 | + | ||
38 | +use Doctrine\DBAL\Migrations\AbstractMigration; | ||
39 | +use Doctrine\DBAL\Schema\Schema; | ||
40 | +use Symfony\Component\DependencyInjection\ContainerAwareInterface; | ||
41 | +use Symfony\Component\DependencyInjection\ContainerInterface; | ||
42 | + | ||
43 | +/** | ||
44 | + * Added dn field on wallabag_users | ||
45 | + */ | ||
46 | +class Version20170710113900 extends AbstractMigration implements ContainerAwareInterface | ||
47 | +{ | ||
48 | + /** | ||
49 | + * @var ContainerInterface | ||
50 | + */ | ||
51 | + private $container; | ||
52 | + | ||
53 | + public function setContainer(ContainerInterface $container = null) | ||
54 | + { | ||
55 | + $this->container = $container; | ||
56 | + } | ||
57 | + | ||
58 | + private function getTable($tableName) | ||
59 | + { | ||
60 | + return $this->container->getParameter('database_table_prefix').$tableName; | ||
61 | + } | ||
62 | + | ||
63 | + /** | ||
64 | + * @param Schema $schema | ||
65 | + */ | ||
66 | + public function up(Schema $schema) | ||
67 | + { | ||
68 | + $usersTable = $schema->getTable($this->getTable('user')); | ||
69 | + | ||
70 | + $this->skipIf($usersTable->hasColumn('dn'), 'It seems that you already played this migration.'); | ||
71 | + | ||
72 | + $usersTable->addColumn('dn', 'text', [ | ||
73 | + 'default' => null, | ||
74 | + 'notnull' => false, | ||
75 | + ]); | ||
76 | + } | ||
77 | + | ||
78 | + /** | ||
79 | + * @param Schema $schema | ||
80 | + */ | ||
81 | + public function down(Schema $schema) | ||
82 | + { | ||
83 | + $usersTable = $schema->getTable($this->getTable('user')); | ||
84 | + $usersTable->dropColumn('dn'); | ||
85 | + } | ||
86 | +} | ||
87 | + | ||
88 | diff --git a/app/config/parameters.yml.dist b/app/config/parameters.yml.dist | ||
89 | index 6b0cb8e8..cfd41b69 100644 | ||
90 | --- a/app/config/parameters.yml.dist | ||
91 | +++ b/app/config/parameters.yml.dist | ||
92 | @@ -62,3 +62,23 @@ parameters: | ||
93 | redis_port: 6379 | ||
94 | redis_path: null | ||
95 | redis_password: null | ||
96 | + | ||
97 | + # ldap configuration | ||
98 | + # To enable, you need to require fr3d/ldap-bundle | ||
99 | + ldap_enabled: false | ||
100 | + ldap_host: localhost | ||
101 | + ldap_port: 389 | ||
102 | + ldap_tls: false | ||
103 | + ldap_ssl: false | ||
104 | + ldap_bind_requires_dn: true | ||
105 | + ldap_base: dc=example,dc=com | ||
106 | + ldap_manager_dn: ou=Manager,dc=example,dc=com | ||
107 | + ldap_manager_pw: password | ||
108 | + ldap_filter: (&(ObjectClass=Person)) | ||
109 | + # optional (if null: no ldap user is admin) | ||
110 | + ldap_admin_filter: (&(memberOf=ou=admins,dc=example,dc=com)(uid=%s)) | ||
111 | + ldap_username_attribute: uid | ||
112 | + ldap_email_attribute: mail | ||
113 | + ldap_name_attribute: cn | ||
114 | + # optional (default sets user as enabled unconditionally) | ||
115 | + ldap_enabled_attribute: ~ | ||
116 | diff --git a/app/config/security.yml b/app/config/security.yml | ||
117 | index 02afc9ea..48fbb553 100644 | ||
118 | --- a/app/config/security.yml | ||
119 | +++ b/app/config/security.yml | ||
120 | @@ -6,6 +6,7 @@ security: | ||
121 | ROLE_ADMIN: ROLE_USER | ||
122 | ROLE_SUPER_ADMIN: [ ROLE_USER, ROLE_ADMIN, ROLE_ALLOWED_TO_SWITCH ] | ||
123 | |||
124 | + # /!\ This list is modified in WallabagUserBundle when LDAP is enabled | ||
125 | providers: | ||
126 | administrators: | ||
127 | entity: | ||
128 | @@ -36,6 +37,7 @@ security: | ||
129 | pattern: ^/login$ | ||
130 | anonymous: ~ | ||
131 | |||
132 | + # /!\ This section is modified in WallabagUserBundle when LDAP is enabled | ||
133 | secured_area: | ||
134 | pattern: ^/ | ||
135 | form_login: | ||
136 | diff --git a/composer.json b/composer.json | ||
137 | index 0483da1d..e3e47bdc 100644 | ||
138 | --- a/composer.json | ||
139 | +++ b/composer.json | ||
140 | @@ -87,7 +87,11 @@ | ||
141 | "bdunogier/guzzle-site-authenticator": "^1.0.0", | ||
142 | "defuse/php-encryption": "^2.1", | ||
143 | "html2text/html2text": "^4.1", | ||
144 | - "sulu/symfony-intl-fix": "^1.0" | ||
145 | + "sulu/symfony-intl-fix": "^1.0", | ||
146 | + "fr3d/ldap-bundle": "^3.0" | ||
147 | + }, | ||
148 | + "suggest": { | ||
149 | + "fr3d/ldap-bundle": "If you want to authenticate via LDAP" | ||
150 | }, | ||
151 | "require-dev": { | ||
152 | "doctrine/doctrine-fixtures-bundle": "~2.2", | ||
153 | diff --git a/composer.lock b/composer.lock | ||
154 | index b3b0a4c6..8c8a87ee 100644 | ||
155 | --- a/composer.lock | ||
156 | +++ b/composer.lock | ||
157 | @@ -1346,6 +1346,65 @@ | ||
158 | ], | ||
159 | "time": "2019-05-09T11:53:40+00:00" | ||
160 | }, | ||
161 | + { | ||
162 | + "name": "fr3d/ldap-bundle", | ||
163 | + "version": "v3.0.0", | ||
164 | + "source": { | ||
165 | + "type": "git", | ||
166 | + "url": "https://github.com/Maks3w/FR3DLdapBundle.git", | ||
167 | + "reference": "5a8927c11af45fa06331b97221c6da1a4a237475" | ||
168 | + }, | ||
169 | + "dist": { | ||
170 | + "type": "zip", | ||
171 | + "url": "https://api.github.com/repos/Maks3w/FR3DLdapBundle/zipball/5a8927c11af45fa06331b97221c6da1a4a237475", | ||
172 | + "reference": "5a8927c11af45fa06331b97221c6da1a4a237475", | ||
173 | + "shasum": "" | ||
174 | + }, | ||
175 | + "require": { | ||
176 | + "php": ">=5.5", | ||
177 | + "psr/log": "~1.0", | ||
178 | + "symfony/config": "2.3 - 3", | ||
179 | + "symfony/dependency-injection": "2.3 - 3", | ||
180 | + "symfony/polyfill-php56": "^1.1", | ||
181 | + "symfony/security": "2.3 - 3", | ||
182 | + "symfony/security-bundle": "2.3 - 3", | ||
183 | + "zendframework/zend-ldap": "2.5 - 3" | ||
184 | + }, | ||
185 | + "require-dev": { | ||
186 | + "fabpot/php-cs-fixer": "1.11.*", | ||
187 | + "fr3d/psr3-message-assertions": "0.1.*", | ||
188 | + "friendsofsymfony/user-bundle": "~1.3", | ||
189 | + "maks3w/phpunit-methods-trait": "^4.6", | ||
190 | + "phpunit/phpunit": "^4.6", | ||
191 | + "symfony/validator": "2.3 - 3" | ||
192 | + }, | ||
193 | + "suggest": { | ||
194 | + "friendsofsymfony/user-bundle": "Integrate authentication and management for DB users, useful for unmanned LDAP servers", | ||
195 | + "symfony/validator": "Allow pre-validate for existing users before register new ones" | ||
196 | + }, | ||
197 | + "type": "symfony-bundle", | ||
198 | + "autoload": { | ||
199 | + "psr-4": { | ||
200 | + "FR3D\\LdapBundle\\": "" | ||
201 | + } | ||
202 | + }, | ||
203 | + "notification-url": "https://packagist.org/downloads/", | ||
204 | + "license": [ | ||
205 | + "MIT" | ||
206 | + ], | ||
207 | + "authors": [ | ||
208 | + { | ||
209 | + "name": "Maks3w" | ||
210 | + } | ||
211 | + ], | ||
212 | + "description": "This package provide users and authentication services based on LDAP directories for Symfony2 framework", | ||
213 | + "homepage": "https://github.com/Maks3w/FR3DLdapBundle", | ||
214 | + "keywords": [ | ||
215 | + "Authentication", | ||
216 | + "ldap" | ||
217 | + ], | ||
218 | + "time": "2016-02-12T17:45:14+00:00" | ||
219 | + }, | ||
220 | { | ||
221 | "name": "friendsofsymfony/jsrouting-bundle", | ||
222 | "version": "1.6.3", | ||
223 | @@ -7069,6 +7128,59 @@ | ||
224 | "zf2" | ||
225 | ], | ||
226 | "time": "2018-04-25T15:33:34+00:00" | ||
227 | + }, | ||
228 | + { | ||
229 | + "name": "zendframework/zend-ldap", | ||
230 | + "version": "2.10.0", | ||
231 | + "source": { | ||
232 | + "type": "git", | ||
233 | + "url": "https://github.com/zendframework/zend-ldap.git", | ||
234 | + "reference": "b63c7884a08d3a6bda60ebcf7d6238cf8ad89f49" | ||
235 | + }, | ||
236 | + "dist": { | ||
237 | + "type": "zip", | ||
238 | + "url": "https://api.github.com/repos/zendframework/zend-ldap/zipball/b63c7884a08d3a6bda60ebcf7d6238cf8ad89f49", | ||
239 | + "reference": "b63c7884a08d3a6bda60ebcf7d6238cf8ad89f49", | ||
240 | + "shasum": "" | ||
241 | + }, | ||
242 | + "require": { | ||
243 | + "ext-ldap": "*", | ||
244 | + "php": "^5.6 || ^7.0" | ||
245 | + }, | ||
246 | + "require-dev": { | ||
247 | + "php-mock/php-mock-phpunit": "^1.1.2 || ^2.1.1", | ||
248 | + "phpunit/phpunit": "^5.7.27 || ^6.5.8 || ^7.1.2", | ||
249 | + "zendframework/zend-coding-standard": "~1.0.0", | ||
250 | + "zendframework/zend-config": "^2.5", | ||
251 | + "zendframework/zend-eventmanager": "^2.6.3 || ^3.0.1", | ||
252 | + "zendframework/zend-stdlib": "^2.7 || ^3.0" | ||
253 | + }, | ||
254 | + "suggest": { | ||
255 | + "zendframework/zend-eventmanager": "Zend\\EventManager component" | ||
256 | + }, | ||
257 | + "type": "library", | ||
258 | + "extra": { | ||
259 | + "branch-alias": { | ||
260 | + "dev-master": "2.10.x-dev", | ||
261 | + "dev-develop": "2.11.x-dev" | ||
262 | + } | ||
263 | + }, | ||
264 | + "autoload": { | ||
265 | + "psr-4": { | ||
266 | + "Zend\\Ldap\\": "src/" | ||
267 | + } | ||
268 | + }, | ||
269 | + "notification-url": "https://packagist.org/downloads/", | ||
270 | + "license": [ | ||
271 | + "BSD-3-Clause" | ||
272 | + ], | ||
273 | + "description": "Provides support for LDAP operations including but not limited to binding, searching and modifying entries in an LDAP directory", | ||
274 | + "keywords": [ | ||
275 | + "ZendFramework", | ||
276 | + "ldap", | ||
277 | + "zf" | ||
278 | + ], | ||
279 | + "time": "2018-07-05T05:05:12+00:00" | ||
280 | } | ||
281 | ], | ||
282 | "packages-dev": [ | ||
283 | diff --git a/scripts/install.sh b/scripts/install.sh | ||
284 | index affa715f..45254212 100755 | ||
285 | --- a/scripts/install.sh | ||
286 | +++ b/scripts/install.sh | ||
287 | @@ -37,5 +37,8 @@ fi | ||
288 | TAG=$(git describe --tags $(git rev-list --tags --max-count=1)) | ||
289 | |||
290 | git checkout $TAG | ||
291 | +if [ -n "$LDAP_ENABLED" ]; then | ||
292 | + SYMFONY_ENV=$ENV $COMPOSER_COMMAND require --no-update fr3d/ldap-bundle | ||
293 | +fi | ||
294 | SYMFONY_ENV=$ENV $COMPOSER_COMMAND install --no-dev -o --prefer-dist | ||
295 | php bin/console wallabag:install --env=$ENV | ||
296 | diff --git a/scripts/update.sh b/scripts/update.sh | ||
297 | index 3ef10439..eeee28d6 100755 | ||
298 | --- a/scripts/update.sh | ||
299 | +++ b/scripts/update.sh | ||
300 | @@ -42,6 +42,9 @@ git fetch origin | ||
301 | git fetch --tags | ||
302 | TAG=$(git describe --tags $(git rev-list --tags --max-count=1)) | ||
303 | git checkout $TAG --force | ||
304 | +if [ -n "$LDAP_ENABLED" ]; then | ||
305 | + SYMFONY_ENV=$ENV $COMPOSER_COMMAND require --no-update fr3d/ldap-bundle | ||
306 | +fi | ||
307 | SYMFONY_ENV=$ENV $COMPOSER_COMMAND install --no-dev -o --prefer-dist | ||
308 | php bin/console doctrine:migrations:migrate --no-interaction --env=$ENV | ||
309 | php bin/console cache:clear --env=$ENV | ||
310 | diff --git a/src/Wallabag/UserBundle/DependencyInjection/WallabagUserExtension.php b/src/Wallabag/UserBundle/DependencyInjection/WallabagUserExtension.php | ||
311 | index 5ca3482e..904a6af1 100644 | ||
312 | --- a/src/Wallabag/UserBundle/DependencyInjection/WallabagUserExtension.php | ||
313 | +++ b/src/Wallabag/UserBundle/DependencyInjection/WallabagUserExtension.php | ||
314 | @@ -6,9 +6,34 @@ use Symfony\Component\Config\FileLocator; | ||
315 | use Symfony\Component\DependencyInjection\ContainerBuilder; | ||
316 | use Symfony\Component\DependencyInjection\Loader; | ||
317 | use Symfony\Component\HttpKernel\DependencyInjection\Extension; | ||
318 | +use Symfony\Component\DependencyInjection\Extension\PrependExtensionInterface; | ||
319 | |||
320 | -class WallabagUserExtension extends Extension | ||
321 | +class WallabagUserExtension extends Extension implements PrependExtensionInterface | ||
322 | { | ||
323 | + public function prepend(ContainerBuilder $container) | ||
324 | + { | ||
325 | + $ldap = $container->getParameter('ldap_enabled'); | ||
326 | + | ||
327 | + if ($ldap) { | ||
328 | + $container->prependExtensionConfig('security', array( | ||
329 | + 'providers' => array( | ||
330 | + 'chain_provider' => array(), | ||
331 | + ), | ||
332 | + )); | ||
333 | + $loader = new Loader\YamlFileLoader($container, new FileLocator(__DIR__.'/../Resources/config')); | ||
334 | + $loader->load('ldap.yml'); | ||
335 | + } elseif ($container->hasExtension('fr3d_ldap')) { | ||
336 | + $container->prependExtensionConfig('fr3_d_ldap', array( | ||
337 | + 'driver' => array( | ||
338 | + 'host' => 'localhost', | ||
339 | + ), | ||
340 | + 'user' => array( | ||
341 | + 'baseDn' => 'dc=example,dc=com', | ||
342 | + ), | ||
343 | + )); | ||
344 | + } | ||
345 | + } | ||
346 | + | ||
347 | public function load(array $configs, ContainerBuilder $container) | ||
348 | { | ||
349 | $configuration = new Configuration(); | ||
350 | @@ -16,6 +41,9 @@ class WallabagUserExtension extends Extension | ||
351 | |||
352 | $loader = new Loader\YamlFileLoader($container, new FileLocator(__DIR__ . '/../Resources/config')); | ||
353 | $loader->load('services.yml'); | ||
354 | + if ($container->getParameter('ldap_enabled')) { | ||
355 | + $loader->load('ldap_services.yml'); | ||
356 | + } | ||
357 | $container->setParameter('wallabag_user.registration_enabled', $config['registration_enabled']); | ||
358 | } | ||
359 | |||
360 | diff --git a/src/Wallabag/UserBundle/Entity/User.php b/src/Wallabag/UserBundle/Entity/User.php | ||
361 | index 48446e3c..f93c59c7 100644 | ||
362 | --- a/src/Wallabag/UserBundle/Entity/User.php | ||
363 | +++ b/src/Wallabag/UserBundle/Entity/User.php | ||
364 | @@ -1,5 +1,15 @@ | ||
365 | <?php | ||
366 | |||
367 | +// This permits to have the LdapUserInterface even when fr3d/ldap-bundle is not | ||
368 | +// in the packages | ||
369 | +namespace FR3D\LdapBundle\Model; | ||
370 | + | ||
371 | +interface LdapUserInterface | ||
372 | +{ | ||
373 | + public function setDn($dn); | ||
374 | + public function getDn(); | ||
375 | +} | ||
376 | + | ||
377 | namespace Wallabag\UserBundle\Entity; | ||
378 | |||
379 | use Doctrine\Common\Collections\ArrayCollection; | ||
380 | @@ -16,6 +26,7 @@ use Wallabag\ApiBundle\Entity\Client; | ||
381 | use Wallabag\CoreBundle\Entity\Config; | ||
382 | use Wallabag\CoreBundle\Entity\Entry; | ||
383 | use Wallabag\CoreBundle\Helper\EntityTimestampsTrait; | ||
384 | +use FR3D\LdapBundle\Model\LdapUserInterface; | ||
385 | |||
386 | /** | ||
387 | * User. | ||
388 | @@ -28,7 +39,7 @@ use Wallabag\CoreBundle\Helper\EntityTimestampsTrait; | ||
389 | * @UniqueEntity("email") | ||
390 | * @UniqueEntity("username") | ||
391 | */ | ||
392 | -class User extends BaseUser implements TwoFactorInterface, TrustedComputerInterface | ||
393 | +class User extends BaseUser implements TwoFactorInterface, TrustedComputerInterface, LdapUserInterface | ||
394 | { | ||
395 | use EntityTimestampsTrait; | ||
396 | |||
397 | @@ -67,6 +78,13 @@ class User extends BaseUser implements TwoFactorInterface, TrustedComputerInterf | ||
398 | */ | ||
399 | protected $email; | ||
400 | |||
401 | + /** | ||
402 | + * @var string | ||
403 | + * | ||
404 | + * @ORM\Column(name="dn", type="text", nullable=true) | ||
405 | + */ | ||
406 | + protected $dn; | ||
407 | + | ||
408 | /** | ||
409 | * @var \DateTime | ||
410 | * | ||
411 | @@ -309,4 +327,33 @@ class User extends BaseUser implements TwoFactorInterface, TrustedComputerInterf | ||
412 | return $this->clients->first(); | ||
413 | } | ||
414 | } | ||
415 | + | ||
416 | + /** | ||
417 | + * Set dn. | ||
418 | + * | ||
419 | + * @param string $dn | ||
420 | + * | ||
421 | + * @return User | ||
422 | + */ | ||
423 | + public function setDn($dn) | ||
424 | + { | ||
425 | + $this->dn = $dn; | ||
426 | + | ||
427 | + return $this; | ||
428 | + } | ||
429 | + | ||
430 | + /** | ||
431 | + * Get dn. | ||
432 | + * | ||
433 | + * @return string | ||
434 | + */ | ||
435 | + public function getDn() | ||
436 | + { | ||
437 | + return $this->dn; | ||
438 | + } | ||
439 | + | ||
440 | + public function isLdapUser() | ||
441 | + { | ||
442 | + return $this->dn !== null; | ||
443 | + } | ||
444 | } | ||
445 | diff --git a/src/Wallabag/UserBundle/LdapHydrator.php b/src/Wallabag/UserBundle/LdapHydrator.php | ||
446 | new file mode 100644 | ||
447 | index 00000000..cea2450f | ||
448 | --- /dev/null | ||
449 | +++ b/src/Wallabag/UserBundle/LdapHydrator.php | ||
450 | @@ -0,0 +1,103 @@ | ||
451 | +<?php | ||
452 | + | ||
453 | +namespace Wallabag\UserBundle; | ||
454 | + | ||
455 | +use FR3D\LdapBundle\Hydrator\HydratorInterface; | ||
456 | +use FOS\UserBundle\FOSUserEvents; | ||
457 | +use FOS\UserBundle\Event\UserEvent; | ||
458 | + | ||
459 | +class LdapHydrator implements HydratorInterface | ||
460 | +{ | ||
461 | + private $userManager; | ||
462 | + private $eventDispatcher; | ||
463 | + private $attributesMap; | ||
464 | + private $enabledAttribute; | ||
465 | + private $ldapBaseDn; | ||
466 | + private $ldapAdminFilter; | ||
467 | + private $ldapDriver; | ||
468 | + | ||
469 | + public function __construct( | ||
470 | + $user_manager, | ||
471 | + $event_dispatcher, | ||
472 | + array $attributes_map, | ||
473 | + $ldap_base_dn, | ||
474 | + $ldap_admin_filter, | ||
475 | + $ldap_driver | ||
476 | + ) { | ||
477 | + $this->userManager = $user_manager; | ||
478 | + $this->eventDispatcher = $event_dispatcher; | ||
479 | + | ||
480 | + $this->attributesMap = array( | ||
481 | + 'setUsername' => $attributes_map[0], | ||
482 | + 'setEmail' => $attributes_map[1], | ||
483 | + 'setName' => $attributes_map[2], | ||
484 | + ); | ||
485 | + $this->enabledAttribute = $attributes_map[3]; | ||
486 | + | ||
487 | + $this->ldapBaseDn = $ldap_base_dn; | ||
488 | + $this->ldapAdminFilter = $ldap_admin_filter; | ||
489 | + $this->ldapDriver = $ldap_driver; | ||
490 | + } | ||
491 | + | ||
492 | + public function hydrate(array $ldapEntry) | ||
493 | + { | ||
494 | + $user = $this->userManager->findUserBy(array('dn' => $ldapEntry['dn'])); | ||
495 | + | ||
496 | + if (!$user) { | ||
497 | + $user = $this->userManager->createUser(); | ||
498 | + $user->setDn($ldapEntry['dn']); | ||
499 | + $user->setPassword(''); | ||
500 | + $user->setSalt(''); | ||
501 | + $this->updateUserFields($user, $ldapEntry); | ||
502 | + | ||
503 | + $event = new UserEvent($user); | ||
504 | + $this->eventDispatcher->dispatch(FOSUserEvents::USER_CREATED, $event); | ||
505 | + | ||
506 | + $this->userManager->reloadUser($user); | ||
507 | + } else { | ||
508 | + $this->updateUserFields($user, $ldapEntry); | ||
509 | + } | ||
510 | + | ||
511 | + return $user; | ||
512 | + } | ||
513 | + | ||
514 | + private function updateUserFields($user, $ldapEntry) | ||
515 | + { | ||
516 | + foreach ($this->attributesMap as $key => $value) { | ||
517 | + if (is_array($ldapEntry[$value])) { | ||
518 | + $ldap_value = $ldapEntry[$value][0]; | ||
519 | + } else { | ||
520 | + $ldap_value = $ldapEntry[$value]; | ||
521 | + } | ||
522 | + | ||
523 | + call_user_func([$user, $key], $ldap_value); | ||
524 | + } | ||
525 | + | ||
526 | + if ($this->enabledAttribute !== null) { | ||
527 | + $user->setEnabled($ldapEntry[$this->enabledAttribute]); | ||
528 | + } else { | ||
529 | + $user->setEnabled(true); | ||
530 | + } | ||
531 | + | ||
532 | + if ($this->isAdmin($user)) { | ||
533 | + $user->addRole('ROLE_SUPER_ADMIN'); | ||
534 | + } else { | ||
535 | + $user->removeRole('ROLE_SUPER_ADMIN'); | ||
536 | + } | ||
537 | + | ||
538 | + $this->userManager->updateUser($user, true); | ||
539 | + } | ||
540 | + | ||
541 | + private function isAdmin($user) | ||
542 | + { | ||
543 | + if ($this->ldapAdminFilter === null) { | ||
544 | + return false; | ||
545 | + } | ||
546 | + | ||
547 | + $escaped_username = ldap_escape($user->getUsername(), '', LDAP_ESCAPE_FILTER); | ||
548 | + $filter = sprintf($this->ldapAdminFilter, $escaped_username); | ||
549 | + $entries = $this->ldapDriver->search($this->ldapBaseDn, $filter); | ||
550 | + | ||
551 | + return $entries['count'] == 1; | ||
552 | + } | ||
553 | +} | ||
554 | diff --git a/src/Wallabag/UserBundle/OAuthStorageLdapWrapper.php b/src/Wallabag/UserBundle/OAuthStorageLdapWrapper.php | ||
555 | new file mode 100644 | ||
556 | index 00000000..8a851f12 | ||
557 | --- /dev/null | ||
558 | +++ b/src/Wallabag/UserBundle/OAuthStorageLdapWrapper.php | ||
559 | @@ -0,0 +1,43 @@ | ||
560 | +<?php | ||
561 | + | ||
562 | +namespace Wallabag\UserBundle; | ||
563 | + | ||
564 | +use FOS\OAuthServerBundle\Storage\OAuthStorage; | ||
565 | +use OAuth2\Model\IOAuth2Client; | ||
566 | +use Symfony\Component\Security\Core\Exception\AuthenticationException; | ||
567 | + | ||
568 | +class OAuthStorageLdapWrapper extends OAuthStorage | ||
569 | +{ | ||
570 | + private $ldapManager; | ||
571 | + | ||
572 | + public function setLdapManager($ldap_manager) | ||
573 | + { | ||
574 | + $this->ldapManager = $ldap_manager; | ||
575 | + } | ||
576 | + | ||
577 | + public function checkUserCredentials(IOAuth2Client $client, $username, $password) | ||
578 | + { | ||
579 | + try { | ||
580 | + $user = $this->userProvider->loadUserByUsername($username); | ||
581 | + } catch (AuthenticationException $e) { | ||
582 | + return false; | ||
583 | + } | ||
584 | + | ||
585 | + if ($user->isLdapUser()) { | ||
586 | + return $this->checkLdapUserCredentials($user, $password); | ||
587 | + } else { | ||
588 | + return parent::checkUserCredentials($client, $username, $password); | ||
589 | + } | ||
590 | + } | ||
591 | + | ||
592 | + private function checkLdapUserCredentials($user, $password) | ||
593 | + { | ||
594 | + if ($this->ldapManager->bind($user, $password)) { | ||
595 | + return array( | ||
596 | + 'data' => $user, | ||
597 | + ); | ||
598 | + } else { | ||
599 | + return false; | ||
600 | + } | ||
601 | + } | ||
602 | +} | ||
603 | diff --git a/src/Wallabag/UserBundle/Resources/config/ldap.yml b/src/Wallabag/UserBundle/Resources/config/ldap.yml | ||
604 | new file mode 100644 | ||
605 | index 00000000..5ec16088 | ||
606 | --- /dev/null | ||
607 | +++ b/src/Wallabag/UserBundle/Resources/config/ldap.yml | ||
608 | @@ -0,0 +1,28 @@ | ||
609 | +fr3d_ldap: | ||
610 | + service: | ||
611 | + user_hydrator: ldap_user_hydrator | ||
612 | + driver: | ||
613 | + host: "%ldap_host%" | ||
614 | + port: "%ldap_port%" | ||
615 | + useSsl: "%ldap_ssl%" | ||
616 | + useStartTls: "%ldap_tls%" | ||
617 | + bindRequiresDn: "%ldap_bind_requires_dn%" | ||
618 | + username: "%ldap_manager_dn%" | ||
619 | + password: "%ldap_manager_pw%" | ||
620 | + user: | ||
621 | + baseDn: "%ldap_base%" | ||
622 | + filter: "%ldap_filter%" | ||
623 | + usernameAttribute: "%ldap_username_attribute%" | ||
624 | +security: | ||
625 | + providers: | ||
626 | + chain_provider: | ||
627 | + chain: | ||
628 | + providers: [ fr3d_ldapbundle, fos_userbundle ] | ||
629 | + fr3d_ldapbundle: | ||
630 | + id: fr3d_ldap.security.user.provider | ||
631 | + firewalls: | ||
632 | + secured_area: | ||
633 | + fr3d_ldap: ~ | ||
634 | + form_login: | ||
635 | + provider: chain_provider | ||
636 | + | ||
637 | diff --git a/src/Wallabag/UserBundle/Resources/config/ldap_services.yml b/src/Wallabag/UserBundle/Resources/config/ldap_services.yml | ||
638 | new file mode 100644 | ||
639 | index 00000000..b3e3fd8a | ||
640 | --- /dev/null | ||
641 | +++ b/src/Wallabag/UserBundle/Resources/config/ldap_services.yml | ||
642 | @@ -0,0 +1,22 @@ | ||
643 | +services: | ||
644 | + fos_oauth_server.server: | ||
645 | + class: OAuth2\OAuth2 | ||
646 | + arguments: | ||
647 | + - "@oauth_storage_ldap_wrapper" | ||
648 | + - "%fos_oauth_server.server.options%" | ||
649 | + oauth_storage_ldap_wrapper: | ||
650 | + class: Wallabag\UserBundle\OAuthStorageLdapWrapper | ||
651 | + parent: fos_oauth_server.storage | ||
652 | + calls: | ||
653 | + - [setLdapManager, ["@fr3d_ldap.ldap_manager"]] | ||
654 | + | ||
655 | + ldap_user_hydrator: | ||
656 | + class: Wallabag\UserBundle\LdapHydrator | ||
657 | + arguments: | ||
658 | + - "@fos_user.user_manager" | ||
659 | + - "@event_dispatcher" | ||
660 | + - [ "%ldap_username_attribute%", "%ldap_email_attribute%", "%ldap_name_attribute%", "%ldap_enabled_attribute%" ] | ||
661 | + - "%ldap_base%" | ||
662 | + - "%ldap_admin_filter%" | ||
663 | + - "@fr3d_ldap.ldap_driver" | ||
664 | + | ||
diff --git a/flakes/mypackages/pkgs/webapps/yourls/default.nix b/flakes/mypackages/pkgs/webapps/yourls/default.nix new file mode 100644 index 0000000..8001a60 --- /dev/null +++ b/flakes/mypackages/pkgs/webapps/yourls/default.nix | |||
@@ -0,0 +1,37 @@ | |||
1 | { yourls_config ? "/etc/yourls/config.php", fetchFromGitHub, callPackage, lib, stdenv }: | ||
2 | let | ||
3 | pluginNames = [ "ldap" ]; | ||
4 | allPlugins = lib.attrsets.genAttrs pluginNames | ||
5 | (name: callPackage (./plugins + "/${name}") {}); | ||
6 | toPassthru = pkg: plugins: { | ||
7 | inherit plugins allPlugins; | ||
8 | withPlugins = withPlugins pkg; | ||
9 | }; | ||
10 | withPlugins = pkg: toPlugins: | ||
11 | let | ||
12 | plugins = toPlugins allPlugins; | ||
13 | toInstallPlugin = n: "ln -s ${n} $out/user/plugins/${n.pluginName}"; | ||
14 | newYourls = pkg.overrideAttrs(old: { | ||
15 | installPhase = old.installPhase + "\n" + builtins.concatStringsSep "\n" (map toInstallPlugin plugins); | ||
16 | passthru = toPassthru newYourls (pkg.plugins ++ plugins); | ||
17 | }); | ||
18 | in newYourls; | ||
19 | package = stdenv.mkDerivation (rec { | ||
20 | pname = "yourls"; | ||
21 | version = "1.7.3"; | ||
22 | src = fetchFromGitHub { | ||
23 | owner = "YOURLS"; | ||
24 | repo = "YOURLS"; | ||
25 | rev = "077018822d3594229daa8343310d0b40804b9ddc"; | ||
26 | sha256 = "1av6h619rwqn0yn0kjn2s2h3gmrhmxaaa9hd5ns4ralxgg731imd"; | ||
27 | fetchSubmodules = true; | ||
28 | }; | ||
29 | installPhase = '' | ||
30 | mkdir -p $out | ||
31 | cp -a */ *.php $out/ | ||
32 | cp sample-robots.txt $out/robots.txt | ||
33 | ln -sf ${yourls_config} $out/includes/config.php | ||
34 | ''; | ||
35 | passthru = toPassthru package []; | ||
36 | }); | ||
37 | in package | ||
diff --git a/flakes/mypackages/pkgs/webapps/yourls/plugins/ldap/default.nix b/flakes/mypackages/pkgs/webapps/yourls/plugins/ldap/default.nix new file mode 100644 index 0000000..5870faa --- /dev/null +++ b/flakes/mypackages/pkgs/webapps/yourls/plugins/ldap/default.nix | |||
@@ -0,0 +1,17 @@ | |||
1 | { stdenv, fetchFromGitHub }: | ||
2 | stdenv.mkDerivation (rec { | ||
3 | pname = "yourls-ldap-plugin"; | ||
4 | version = "2a3cb03-master"; | ||
5 | src = fetchFromGitHub { | ||
6 | owner = "k3a"; | ||
7 | repo = "yourls-ldap-plugin"; | ||
8 | rev = "2a3cb0334b8a6b81b284a7196e614bbd2b2b1615"; | ||
9 | sha256 = "0cchbnli77d295lzf7kjmn4dcxj2bmdqa9qc3f8l8qgmp4n5n0gh"; | ||
10 | fetchSubmodules = true; | ||
11 | }; | ||
12 | installPhase = '' | ||
13 | mkdir -p $out | ||
14 | cp plugin.php $out | ||
15 | ''; | ||
16 | passthru.pluginName = "ldap"; | ||
17 | }) | ||