lol

Merge branch 'master' into staging

+2995 -1540
+5
lib/licenses.nix
··· 195 195 fullName = "Unspecified free software license"; 196 196 }; 197 197 198 + g4sl = { 199 + fullName = "Geant4 Software License"; 200 + url = https://geant4.web.cern.ch/geant4/license/LICENSE.html; 201 + }; 202 + 198 203 gpl1 = spdx { 199 204 spdxId = "GPL-1.0"; 200 205 fullName = "GNU General Public License v1.0 only";
+3 -3
lib/sources.nix
··· 44 44 packedRefsName = toString path + "/packed-refs"; 45 45 in if lib.pathExists fileName 46 46 then 47 - let fileContent = readFile fileName; 47 + let fileContent = lib.fileContents fileName; 48 48 # Sometimes git stores the commitId directly in the file but 49 49 # sometimes it stores something like: «ref: refs/heads/branch-name» 50 - matchRef = match "^ref: (.*)\n$" fileContent; 50 + matchRef = match "^ref: (.*)$" fileContent; 51 51 in if isNull matchRef 52 - then lib.removeSuffix "\n" fileContent 52 + then fileContent 53 53 else readCommitFromFile path (lib.head matchRef) 54 54 # Sometimes, the file isn't there at all and has been packed away in the 55 55 # packed-refs file, so we have to grep through it:
+10
lib/strings.nix
··· 479 479 absolutePaths = builtins.map (path: builtins.toPath (root + "/" + path)) relativePaths; 480 480 in 481 481 absolutePaths; 482 + 483 + /* Read the contents of a file removing the trailing \n 484 + 485 + Example: 486 + $ echo "1.0" > ./version 487 + 488 + fileContents ./version 489 + => "1.0" 490 + */ 491 + fileContents = file: removeSuffix "\n" (builtins.readFile file); 482 492 }
+4 -2
lib/trivial.nix
··· 62 62 isInt add sub lessThan 63 63 seq deepSeq genericClosure; 64 64 65 + inherit (import ./strings.nix) fileContents; 66 + 65 67 # Return the Nixpkgs version number. 66 68 nixpkgsVersion = 67 69 let suffixFile = ../.version-suffix; in 68 - readFile ../.version 69 - + (if pathExists suffixFile then readFile suffixFile else "pre-git"); 70 + fileContents ../.version 71 + + (if pathExists suffixFile then fileContents suffixFile else "pre-git"); 70 72 71 73 # Whether we're being called by nix-shell. 72 74 inNixShell = builtins.getEnv "IN_NIX_SHELL" == "1";
+1
nixos/doc/manual/configuration/configuration.xml
··· 31 31 <xi:include href="taskserver.xml" /> 32 32 <xi:include href="acme.xml" /> 33 33 <xi:include href="input-methods.xml" /> 34 + <xi:include href="emacs.xml" /> 34 35 35 36 <!-- Apache; libvirtd virtualisation --> 36 37
+7 -26
nixos/doc/manual/default.nix
··· 60 60 cp ${../../modules/services/misc/taskserver/doc.xml} configuration/taskserver.xml 61 61 cp ${../../modules/security/acme.xml} configuration/acme.xml 62 62 cp ${../../modules/i18n/input-method/default.xml} configuration/input-methods.xml 63 + cp ${../../modules/services/editors/emacs.xml} configuration/emacs.xml 63 64 ln -s ${optionsDocBook} options-db.xml 64 65 echo "${version}" > version 65 66 ''; ··· 122 123 <targetset> 123 124 <targetsetinfo> 124 125 Allows for cross-referencing olinks between the manpages 125 - and the HTML/PDF manuals. 126 + and manual. 126 127 </targetsetinfo> 127 128 128 129 <document targetdoc="manual">&manualtargets;</document> ··· 221 222 mkdir -p $dst/epub/OEBPS/images/callouts 222 223 cp -r ${docbook5_xsl}/xml/xsl/docbook/images/callouts/*.gif $dst/epub/OEBPS/images/callouts 223 224 echo "application/epub+zip" > mimetype 224 - zip -0Xq "$dst/NixOS Manual - NixOS community.epub" mimetype 225 - zip -Xr9D "$dst/NixOS Manual - NixOS community.epub" $dst/epub/* 226 - 227 - mkdir -p $out/nix-support 228 - echo "doc-epub manual $dst/NixOS Manual - NixOS community.epub" >> $out/nix-support/hydra-build-products 229 - ''; 230 - }; 231 - 232 - 233 - manualPDF = stdenv.mkDerivation { 234 - name = "nixos-manual-pdf"; 235 - 236 - inherit sources; 237 - 238 - buildInputs = [ libxml2 libxslt dblatex dblatex.tex ]; 225 + manual="$dst/nixos-manual.epub" 226 + zip -0Xq "$manual" mimetype 227 + cd $dst/epub && zip -Xr9D "$manual" * 239 228 240 - buildCommand = '' 241 - ${copySources} 242 - 243 - dst=$out/share/doc/nixos 244 - mkdir -p $dst 245 - xmllint --xinclude manual.xml | dblatex -o $dst/manual.pdf - \ 246 - -P target.database.document="${olinkDB}/olinkdb.xml" \ 247 - -P doc.collab.show=0 \ 248 - -P latex.output.revhistory=0 229 + rm -rf $dst/epub 249 230 250 231 mkdir -p $out/nix-support 251 - echo "doc-pdf manual $dst/manual.pdf" >> $out/nix-support/hydra-build-products 232 + echo "doc-epub manual $manual" >> $out/nix-support/hydra-build-products 252 233 ''; 253 234 }; 254 235
+7
nixos/doc/manual/release-notes/rl-1609.xml
··· 33 33 following incompatible changes:</para> 34 34 35 35 <itemizedlist> 36 + 36 37 <listitem> 37 38 <para>Shell aliases for systemd sub-commands 38 39 <link xlink:href="https://github.com/NixOS/nixpkgs/pull/15598">were dropped</link>: 39 40 <command>start</command>, <command>stop</command>, 40 41 <command>restart</command>, <command>status</command>.</para> 41 42 </listitem> 43 + 44 + <listitem> 45 + <para>Redis now binds to 127.0.0.1 only instead of listening to all network interfaces. This is the default 46 + behavior of Redis 3.2</para> 47 + </listitem> 48 + 42 49 </itemizedlist> 43 50 44 51
+12 -27
nixos/modules/misc/version.nix
··· 35 35 nixosLabel = mkOption { 36 36 type = types.str; 37 37 description = '' 38 - NixOS version name to be used in the names of generated 39 - outputs and boot labels. 40 - 41 - If you ever wanted to influence the labels in your GRUB menu, 42 - this is option is for you. 43 - 44 - Can be set directly or with <envar>NIXOS_LABEL</envar> 45 - environment variable for <command>nixos-rebuild</command>, 46 - e.g.: 47 - 48 - <screen> 49 - #!/bin/sh 50 - today=`date +%Y%m%d` 51 - branch=`(cd nixpkgs ; git branch 2>/dev/null | sed -n '/^\* / { s|^\* ||; p; }')` 52 - revision=`(cd nixpkgs ; git rev-parse HEAD)` 53 - export NIXOS_LABEL="$today.$branch-''${revision:0:7}" 54 - nixos-rebuild switch</screen> 38 + Label to be used in the names of generated outputs and boot 39 + labels. 55 40 ''; 56 41 }; 57 42 58 43 nixosVersion = mkOption { 59 44 internal = true; 60 45 type = types.str; 61 - description = "NixOS version."; 46 + description = "The full NixOS version (e.g. <literal>16.03.1160.f2d4ee1</literal>)."; 62 47 }; 63 48 64 49 nixosRelease = mkOption { 65 50 readOnly = true; 66 51 type = types.str; 67 - default = readFile releaseFile; 68 - description = "NixOS release."; 52 + default = fileContents releaseFile; 53 + description = "The NixOS release (e.g. <literal>16.03</literal>)."; 69 54 }; 70 55 71 56 nixosVersionSuffix = mkOption { 72 57 internal = true; 73 58 type = types.str; 74 - default = if pathExists suffixFile then readFile suffixFile else "pre-git"; 75 - description = "NixOS version suffix."; 59 + default = if pathExists suffixFile then fileContents suffixFile else "pre-git"; 60 + description = "The NixOS version suffix (e.g. <literal>1160.f2d4ee1</literal>)."; 76 61 }; 77 62 78 63 nixosRevision = mkOption { 79 64 internal = true; 80 65 type = types.str; 81 - default = if pathExists revisionFile then readFile revisionFile else "master"; 82 - description = "NixOS Git revision hash."; 66 + default = if pathExists revisionFile then fileContents revisionFile else "master"; 67 + description = "The Git revision from which this NixOS configuration was built."; 83 68 }; 84 69 85 70 nixosCodeName = mkOption { 86 71 readOnly = true; 87 72 type = types.str; 88 - description = "NixOS release code name."; 73 + description = "The NixOS release code name (e.g. <literal>Emu</literal>)."; 89 74 }; 90 75 91 76 defaultChannel = mkOption { ··· 102 87 system = { 103 88 # These defaults are set here rather than up there so that 104 89 # changing them would not rebuild the manual 105 - nixosLabel = mkDefault (maybeEnv "NIXOS_LABEL" cfg.nixosVersion); 106 - nixosVersion = mkDefault (maybeEnv "NIXOS_VERSION" (cfg.nixosRelease + cfg.nixosVersionSuffix)); 90 + nixosLabel = mkDefault cfg.nixosVersion; 91 + nixosVersion = mkDefault (cfg.nixosRelease + cfg.nixosVersionSuffix); 107 92 nixosRevision = mkIf (pathIsDirectory gitRepo) (mkDefault gitCommitId); 108 93 nixosVersionSuffix = mkIf (pathIsDirectory gitRepo) (mkDefault (".git." + gitCommitId)); 109 94
+1 -1
nixos/modules/security/grsecurity.nix
··· 97 97 98 98 # Configure system tunables 99 99 boot.kernel.sysctl = { 100 - # Removed under grsecurity 100 + # Read-only under grsecurity 101 101 "kernel.kptr_restrict" = mkForce null; 102 102 } // optionalAttrs config.nix.useSandbox { 103 103 # chroot(2) restrictions that conflict with sandboxed Nix builds
+1
nixos/modules/services/audio/mopidy.nix
··· 47 47 }; 48 48 49 49 configuration = mkOption { 50 + default = ""; 50 51 type = types.lines; 51 52 description = '' 52 53 The configuration that Mopidy should use.
+578
nixos/modules/services/editors/emacs.xml
··· 1 + <chapter xmlns="http://docbook.org/ns/docbook" 2 + xmlns:xlink="http://www.w3.org/1999/xlink" 3 + xmlns:xi="http://www.w3.org/2001/XInclude" 4 + version="5.0" 5 + xml:id="module-services-emacs"> 6 + 7 + <title>Emacs</title> 8 + 9 + <!-- 10 + Documentation contributors: 11 + Damien Cassou @DamienCassou 12 + Thomas Tuegel @ttuegel 13 + Rodney Lorrimar @rvl 14 + --> 15 + 16 + <para> 17 + <link xlink:href="http://www.gnu.org/software/emacs/">Emacs</link> 18 + is an extensible, customizable, self-documenting real-time display 19 + editor — and more. At its core is an interpreter for Emacs Lisp, a 20 + dialect of the Lisp programming language with extensions to 21 + support text editing. 22 + </para> 23 + 24 + <para> 25 + Emacs runs within a graphical desktop environment using the X 26 + Window System, but works equally well on a text terminal. Under 27 + <productname>OS X</productname>, a "Mac port" edition is 28 + available, which uses Apple's native GUI frameworks. 29 + </para> 30 + 31 + <para> 32 + <productname>Nixpkgs</productname> provides a superior environment 33 + for running <application>Emacs</application>. It's simple to 34 + create custom builds by overriding the default packages. Chaotic 35 + collections of Emacs Lisp code and extensions can be brought under 36 + control using declarative package 37 + management. <productname>NixOS</productname> even provides a 38 + <command>systemd</command> user service for automatically 39 + starting the Emacs daemon. 40 + </para> 41 + 42 + <section> 43 + <title>Installing <application>Emacs</application></title> 44 + 45 + <para> 46 + Emacs can installed in the normal way for Nix (see <xref 47 + linkend="sec-package-management" />). In addition, a NixOS 48 + <emphasis>service</emphasis> can be enabled. 49 + </para> 50 + 51 + <section> 52 + <title>The Different Releases of Emacs</title> 53 + 54 + <para> 55 + <productname>Nixpkgs</productname> defines several basic Emacs 56 + packages. The following are attributes belonging to the 57 + <varname>pkgs</varname> set: 58 + 59 + <variablelist> 60 + <varlistentry> 61 + <term><varname>emacs</varname></term> 62 + <term><varname>emacs24</varname></term> 63 + <listitem> 64 + <para> 65 + The latest stable version of Emacs 24 using the <link 66 + xlink:href="http://www.gtk.org">GTK+ 2</link> widget 67 + toolkit. 68 + </para> 69 + </listitem> 70 + </varlistentry> 71 + <varlistentry> 72 + <term><varname>emacs24-nox</varname></term> 73 + <listitem> 74 + <para> 75 + Emacs 24 built without any dependency on X11 76 + libraries. 77 + </para> 78 + </listitem> 79 + </varlistentry> 80 + <varlistentry> 81 + <term><varname>emacs24Macport</varname></term> 82 + <listitem> 83 + <para> 84 + Emacs 24 with the "Mac port" patches, providing a more 85 + native look and feel under OS X. 86 + </para> 87 + </listitem> 88 + </varlistentry> 89 + <varlistentry> 90 + <term><varname>emacs25pre</varname></term> 91 + <listitem> 92 + <para> 93 + A pretest version of what will become the first 94 + version of Emacs 25. 95 + </para> 96 + </listitem> 97 + </varlistentry> 98 + </variablelist> 99 + </para> 100 + 101 + <para> 102 + If those aren't suitable, then the following imitation Emacs 103 + editors are also available in Nixpkgs: 104 + <link xlink:href="https://www.gnu.org/software/zile/">Zile</link>, 105 + <link xlink:href="http://homepage.boetes.org/software/mg/">mg</link>, 106 + <link xlink:href="http://yi-editor.github.io/">Yi</link>. 107 + </para> 108 + 109 + </section> 110 + <section> 111 + <title>Adding Packages to Emacs</title> 112 + <para> 113 + Emacs includes an entire ecosystem of functionality beyond 114 + text editing, including a project planner, mail and news 115 + reader, debugger interface, calendar, and more. 116 + </para> 117 + 118 + <para> 119 + Most extensions are gotten with the Emacs packaging system 120 + (<filename>package.el</filename>) from <link 121 + xlink:href="https://elpa.gnu.org/">Emacs Lisp Package Archive 122 + (<acronym>ELPA</acronym>)</link>, 123 + <link xlink:href="https://melpa.org/"><acronym>MELPA</acronym></link>, 124 + <link xlink:href="https://stable.melpa.org/">MELPA Stable</link>, 125 + and <link xlink:href="http://orgmode.org/elpa.html">Org ELPA</link>. 126 + Nixpkgs is regularly updated to mirror all these archives. 127 + </para> 128 + 129 + <para> 130 + Under NixOS, you can continue to use 131 + <function>package-list-packages</function> and 132 + <function>package-install</function> to install packages. You 133 + can also declare the set of Emacs packages you need using the 134 + derivations from Nixpkgs. The rest of this section discusses 135 + declarative installation of Emacs packages through nixpkgs. 136 + </para> 137 + 138 + <note> 139 + <para> 140 + This documentation describes the new Emacs packages 141 + framework in NixOS 16.03 142 + (<varname>emacsPackagesNg</varname>) which should not be 143 + confused with the previous and deprecated framework 144 + (<varname>emacs24Packages</varname>). 145 + </para> 146 + </note> 147 + 148 + <para> 149 + The first step to declare the list of packages you want in 150 + your Emacs installation is to create a dedicated 151 + derivation. This can be done in a dedicated 152 + <filename>emacs.nix</filename> file such as: 153 + 154 + <example xml:id="ex-emacsNix"> 155 + <title>Nix expression to build Emacs with packages (<filename>emacs.nix</filename>)</title> 156 + <programlisting language="nix"> 157 + /* 158 + This is a nix expression to build Emacs and some Emacs packages I like 159 + from source on any distribution where Nix is installed. This will install 160 + all the dependencies from the nixpkgs repository and build the binary files 161 + without interfering with the host distribution. 162 + 163 + To build the project, type the following from the current directory: 164 + 165 + $ nix-build emacs.nix 166 + 167 + To run the newly compiled executable: 168 + 169 + $ ./result/bin/emacs 170 + */ 171 + { pkgs ? import &lt;nixpkgs&gt; {} }: <co xml:id="ex-emacsNix-1" /> 172 + 173 + let 174 + myEmacs = pkgs.emacs; <co xml:id="ex-emacsNix-2" /> 175 + emacsWithPackages = (pkgs.emacsPackagesNgGen myEmacs).emacsWithPackages; <co xml:id="ex-emacsNix-3" /> 176 + in 177 + emacsWithPackages (epkgs: (with epkgs.melpaStablePackages; [ <co xml:id="ex-emacsNix-4" /> 178 + magit # ; Integrate git &lt;C-x g&gt; 179 + zerodark-theme # ; Nicolas' theme 180 + ]) ++ (with epkgs.melpaPackages; [ <co xml:id="ex-emacsNix-5" /> 181 + undo-tree # ; &lt;C-x u&gt; to show the undo tree 182 + zoom-frm # ; increase/decrease font size for all buffers %lt;C-x C-+&gt; 183 + ]) ++ (with epkgs.elpaPackages; [ <co xml:id="ex-emacsNix-6" /> 184 + auctex # ; LaTeX mode 185 + beacon # ; highlight my cursor when scrolling 186 + nameless # ; hide current package name everywhere in elisp code 187 + ]) ++ [ 188 + pkgs.notmuch # From main packages set <co xml:id="ex-emacsNix-7" /> 189 + ]) 190 + </programlisting> 191 + </example> 192 + 193 + <calloutlist> 194 + <callout arearefs="ex-emacsNix-1"> 195 + <para> 196 + The first non-comment line in this file 197 + (<literal>{ pkgs ? ... }</literal>) 198 + indicates that the whole file represents a function. 199 + </para> 200 + </callout> 201 + 202 + <callout arearefs="ex-emacsNix-2"> 203 + <para> 204 + The <varname>let</varname> expression below defines a 205 + <varname>myEmacs</varname> binding pointing to the current 206 + stable version of Emacs. This binding is here to separate the 207 + choice of the Emacs binary from the specification of the 208 + required packages. 209 + </para> 210 + </callout> 211 + 212 + <callout arearefs="ex-emacsNix-3"> 213 + <para> 214 + This generates an <varname>emacsWithPackages</varname> 215 + function. It takes a single argument: a function from a 216 + package set to a list of packages (the packages that will 217 + be available in Emacs). 218 + </para> 219 + </callout> 220 + 221 + <callout arearefs="ex-emacsNix-4"> 222 + <para> 223 + The rest of the file specifies the list of packages to 224 + install. In the example, two packages 225 + (<varname>magit</varname> and 226 + <varname>zerodark-theme</varname>) are taken from MELPA 227 + stable. 228 + </para> 229 + </callout> 230 + 231 + <callout arearefs="ex-emacsNix-5"> 232 + <para> 233 + Two packages (<varname>undo-tree</varname> and 234 + <varname>zoom-frm</varname>) are taken from MELPA. 235 + </para> 236 + </callout> 237 + 238 + <callout arearefs="ex-emacsNix-6"> 239 + <para>Three packages are taken from GNU ELPA.</para> 240 + </callout> 241 + 242 + <callout arearefs="ex-emacsNix-7"> 243 + <para> 244 + <varname>notmuch</varname> is taken from a nixpkgs derivation 245 + which contains an Emacs mode. 246 + </para> 247 + </callout> 248 + 249 + </calloutlist> 250 + </para> 251 + 252 + <para> 253 + The result of this configuration will be an 254 + <command>emacs</command> command which launches Emacs with all 255 + of your chosen packages in the <varname>load-path</varname>. 256 + </para> 257 + 258 + <para> 259 + You can check that it works by executing this in a terminal: 260 + 261 + <screen> 262 + $ nix-build emacs.nix 263 + $ ./result/bin/emacs -q 264 + </screen> 265 + 266 + and then typing <literal>M-x package-initialize</literal>. 267 + Check that you can use all the packages you want in this 268 + Emacs instance. For example, try switching to the zerodark 269 + theme through 270 + <literal>M-x load-theme &lt;RET&gt; zerodark &lt;RET&gt; y</literal>. 271 + </para> 272 + 273 + <tip> 274 + <para> 275 + A few popular extensions worth checking out are: auctex, 276 + company, edit-server, flycheck, helm, iedit, magit, 277 + multiple-cursors, projectile, and yasnippet. 278 + </para> 279 + </tip> 280 + 281 + <para> 282 + The list of available packages in the various ELPA 283 + repositories can be seen with the following commands: 284 + <example> 285 + <title>Querying Emacs packages</title> 286 + <programlisting><![CDATA[ 287 + nix-env -f "<nixpkgs>" -qaP -A emacsPackagesNg.elpaPackages 288 + nix-env -f "<nixpkgs>" -qaP -A emacsPackagesNg.melpaPackages 289 + nix-env -f "<nixpkgs>" -qaP -A emacsPackagesNg.melpaStablePackages 290 + nix-env -f "<nixpkgs>" -qaP -A emacsPackagesNg.orgPackages 291 + ]]></programlisting> 292 + </example> 293 + </para> 294 + 295 + <para> 296 + If you are on NixOS, you can install this particular Emacs for 297 + all users by adding it to the list of system packages 298 + (see <xref linkend="sec-declarative-package-mgmt" />). Simply 299 + modify your file <filename>configuration.nix</filename> to 300 + make it contain: 301 + <example> 302 + <title>Custom Emacs in <filename>configuration.nix</filename></title> 303 + <programlisting><![CDATA[ 304 + { 305 + environment.systemPackages = [ 306 + # [...] 307 + (import /path/to/emacs.nix { inherit pkgs; }) 308 + ]; 309 + } 310 + ]]></programlisting> 311 + </example> 312 + </para> 313 + 314 + <para> 315 + In this case, the next <command>nixos-rebuild switch</command> 316 + will take care of adding your <command>emacs</command> to the 317 + <varname>PATH</varname> environment variable 318 + (see <xref linkend="sec-changing-config" />). 319 + </para> 320 + 321 + <!-- fixme: i think the following is better done with config.nix 322 + https://nixos.org/nixpkgs/manual/#sec-modify-via-packageOverrides 323 + --> 324 + <para> 325 + If you are not on NixOS or want to install this particular 326 + Emacs only for yourself, you can do so by adding it to your 327 + <filename>~/.nixpkgs/config.nix</filename> 328 + (see <link xlink:href="http://nixos.org/nixpkgs/manual/#sec-modify-via-packageOverrides">Nixpkgs manual</link>): 329 + <example> 330 + <title>Custom Emacs in <filename>~/.nixpkgs/system.nix</filename></title> 331 + <programlisting><![CDATA[ 332 + { 333 + packageOverrides = super: let self = super.pkgs; in { 334 + myemacs = import /path/to/emacs.nix { pkgs = self; }; 335 + }; 336 + } 337 + ]]></programlisting> 338 + </example> 339 + </para> 340 + 341 + <para> 342 + In this case, the next 343 + <literal>nix-env -f '&lt;nixpkgs&gt;' -iA myemacs</literal> 344 + will take care of adding your emacs to the 345 + <varname>PATH</varname> environment variable. 346 + </para> 347 + </section> 348 + 349 + <section> 350 + <title>Advanced Emacs Configuration</title> 351 + 352 + <para> 353 + If you want, you can tweak the Emacs package itself from your 354 + <filename>emacs.nix</filename>. For example, if you want to 355 + have a GTK+3-based Emacs instead of the default GTK+2-based 356 + binary and remove the automatically generated 357 + <filename>emacs.desktop</filename> (useful is you only use 358 + <command>emacsclient</command>), you can change your file 359 + <filename>emacs.nix</filename> in this way: 360 + </para> 361 + 362 + <example xml:id="ex-emacsGtk3Nix"> 363 + <title>Custom Emacs build</title> 364 + <programlisting><![CDATA[ 365 + { pkgs ? import <nixpkgs> {} }: 366 + let 367 + myEmacs = pkgs.lib.overrideDerivation (pkgs.emacs.override { 368 + # Use gtk3 instead of the default gtk2 369 + withGTK3 = true; 370 + withGTK2 = false; 371 + }) (attrs: { 372 + # I don't want emacs.desktop file because I only use 373 + # emacsclient. 374 + postInstall = attrs.postInstall + '' 375 + rm $out/share/applications/emacs.desktop 376 + ''; 377 + }); 378 + in [...] 379 + ]]></programlisting> 380 + </example> 381 + 382 + <para> 383 + After building this file as shown in <xref linkend="ex-emacsNix" />, 384 + you will get an GTK3-based Emacs binary pre-loaded with your 385 + favorite packages. 386 + </para> 387 + </section> 388 + </section> 389 + 390 + <section> 391 + <title>Running Emacs as a Service</title> 392 + <para> 393 + <productname>NixOS</productname> provides an optional 394 + <command>systemd</command> service which launches 395 + <link xlink:href="https://www.gnu.org/software/emacs/manual/html_node/emacs/Emacs-Server.html"> 396 + Emacs daemon 397 + </link> 398 + with the user's login session. 399 + </para> 400 + 401 + <para> 402 + <emphasis>Source:</emphasis> 403 + <filename>modules/services/editors/emacs.nix</filename> 404 + </para> 405 + 406 + <section> 407 + <title>Enabling the Service</title> 408 + 409 + <para> 410 + To install and enable the <command>systemd</command> 411 + user service for Emacs daemon, add the following to your 412 + <filename>configuration.nix</filename>: 413 + 414 + <programlisting><![CDATA[ 415 + services.emacs.enable = true; 416 + services.emacs.package = import /home/cassou/.emacs.d { pkgs = pkgs; }; 417 + ]]></programlisting> 418 + </para> 419 + 420 + <para> 421 + The <varname>services.emacs.package</varname> option allows a 422 + custom derivation to be used, for example, one created by 423 + <function>emacsWithPackages</function>. 424 + </para> 425 + 426 + <para> 427 + Ensure that the Emacs server is enabled for your user's Emacs 428 + configuration, either by customizing the 429 + <varname>server-mode</varname> variable, or by adding 430 + <literal>(server-start)</literal> to 431 + <filename>~/.emacs.d/init.el</filename>. 432 + </para> 433 + 434 + <para> 435 + To start the daemon, execute the following: 436 + 437 + <screen> 438 + $ nixos-rebuild switch # to activate the new configuration.nix 439 + $ systemctl --user daemon-reload # to force systemd reload 440 + $ systemctl --user start emacs.service # to start the Emacs daemon 441 + </screen> 442 + 443 + The server should now be ready to serve Emacs clients. 444 + </para> 445 + 446 + </section> 447 + 448 + <section> 449 + <title>Starting the client</title> 450 + <para> 451 + Ensure that the emacs server is enabled, either by customizing 452 + the <varname>server-mode</varname> variable, or by adding 453 + <literal>(server-start)</literal> to 454 + <filename>~/.emacs</filename>. 455 + </para> 456 + 457 + <para> 458 + To connect to the emacs daemon, run one of the following: 459 + <programlisting><![CDATA[ 460 + emacsclient FILENAME 461 + emacsclient --create-frame # opens a new frame (window) 462 + emacsclient --create-frame --tty # opens a new frame on the current terminal 463 + ]]></programlisting> 464 + </para> 465 + </section> 466 + 467 + <section> 468 + <title>Configuring the <varname>EDITOR</varname> variable</title> 469 + <!--<title><command>emacsclient</command> as the Default Editor</title>--> 470 + 471 + <para> 472 + If <varname>services.emacs.defaultEditor</varname> is 473 + <literal>true</literal>, the <varname>EDITOR</varname> variable 474 + will be set to a wrapper script which launches 475 + <command>emacsclient</command>. 476 + </para> 477 + 478 + <para> 479 + Any setting of <varname>EDITOR</varname> in the shell config 480 + files will override 481 + <varname>services.emacs.defaultEditor</varname>. 482 + To make sure <varname>EDITOR</varname> refers to the Emacs 483 + wrapper script, remove any existing <varname>EDITOR</varname> 484 + assignment from <filename>.profile</filename>, 485 + <filename>.bashrc</filename>, <filename>.zshenv</filename> or 486 + any other shell config file. 487 + </para> 488 + 489 + <para> 490 + If you have formed certain bad habits when editing files, 491 + these can be corrected with a shell alias to the wrapper 492 + script: 493 + <programlisting>alias vi=$EDITOR</programlisting> 494 + </para> 495 + </section> 496 + 497 + <section> 498 + <title>Per-User Enabling of the Service</title> 499 + 500 + <para> 501 + In general, <command>systemd</command> user services 502 + are globally enabled by symlinks in 503 + <filename>/etc/systemd/user</filename>. In the case where 504 + Emacs daemon is not wanted for all users, it is possible to 505 + install the service but not globally enable it: 506 + 507 + <programlisting><![CDATA[ 508 + services.emacs.enable = false; 509 + services.emacs.install = true; 510 + ]]></programlisting> 511 + </para> 512 + 513 + <para> 514 + To enable the <command>systemd</command> user service for just 515 + the currently logged in user, run: 516 + 517 + <programlisting>systemctl --user enable emacs</programlisting> 518 + 519 + This will add the symlink 520 + <filename>~/.config/systemd/user/emacs.service</filename>. 521 + </para> 522 + </section> 523 + </section> 524 + 525 + <section> 526 + <title>Configuring Emacs</title> 527 + 528 + <para> 529 + The Emacs init file should be changed to load the extension 530 + packages at startup: 531 + 532 + <example> 533 + <title>Package initialization in <filename>.emacs</filename></title> 534 + <programlisting><![CDATA[ 535 + (require 'package) 536 + 537 + ;; optional. makes unpure packages archives unavailable 538 + (setq package-archives nil) 539 + 540 + (setq package-enable-at-startup nil) 541 + (package-initialize) 542 + ]]></programlisting> 543 + </example> 544 + </para> 545 + 546 + <para> 547 + After the declarative emacs package configuration has been 548 + tested, previously downloaded packages can be cleaned up by 549 + removing <filename>~/.emacs.d/elpa</filename> (do make a backup 550 + first, in case you forgot a package). 551 + </para> 552 + 553 + <!-- 554 + todo: is it worth documenting customizations for 555 + server-switch-hook, server-done-hook? 556 + --> 557 + 558 + <section> 559 + <title>A Major Mode for Nix Expressions</title> 560 + 561 + <para> 562 + Of interest may be <varname>melpaPackages.nix-mode</varname>, 563 + which provides syntax highlighting for the Nix language. This is 564 + particularly convenient if you regularly edit Nix files. 565 + </para> 566 + </section> 567 + 568 + <section> 569 + <title>Accessing man pages</title> 570 + <para> 571 + You can use <function>woman</function> to get completion of all 572 + available man pages. For example, type <literal>M-x woman 573 + &lt;RET&gt; nixos-rebuild &lt;RET&gt;.</literal> 574 + </para> 575 + </section> 576 + </section> 577 + 578 + </chapter>
+3 -9
nixos/modules/services/misc/nixos-manual.nix
··· 11 11 12 12 cfg = config.services.nixosManual; 13 13 14 - versionModule = 15 - { system.nixosVersionSuffix = config.system.nixosVersionSuffix; 16 - system.nixosRevision = config.system.nixosRevision; 17 - nixpkgs.system = config.nixpkgs.system; 18 - }; 19 - 20 14 /* For the purpose of generating docs, evaluate options with each derivation 21 15 in `pkgs` (recursively) replaced by a fake with path "\${pkgs.attribute.path}". 22 16 It isn't perfect, but it seems to cover a vast majority of use cases. ··· 24 18 the path above will be shown and not e.g. `${config.services.foo.package}`. */ 25 19 manual = import ../../../doc/manual { 26 20 inherit pkgs; 27 - version = config.system.nixosVersion; 28 - revision = config.system.nixosRevision; 21 + version = config.system.nixosRelease; 22 + revision = "release-${config.system.nixosRelease}"; 29 23 options = 30 24 let 31 25 scrubbedEval = evalModules { 32 - modules = [ versionModule ] ++ baseModules; 26 + modules = [ { nixpkgs.system = config.nixpkgs.system; } ] ++ baseModules; 33 27 args = (config._module.args) // { modules = [ ]; }; 34 28 specialArgs = { pkgs = scrubDerivations "pkgs" pkgs; }; 35 29 };
+3 -3
nixos/modules/services/networking/dnscrypt-proxy.nix
··· 55 55 ''; }; 56 56 localAddress = mkOption { 57 57 default = "127.0.0.1"; 58 - type = types.string; 58 + type = types.str; 59 59 description = '' 60 60 Listen for DNS queries to relay on this address. The only reason to 61 61 change this from its default value is to proxy queries on behalf ··· 74 74 }; 75 75 resolverName = mkOption { 76 76 default = "dnscrypt.eu-nl"; 77 - type = types.nullOr types.string; 77 + type = types.nullOr types.str; 78 78 description = '' 79 79 The name of the upstream DNSCrypt resolver to use, taken from the 80 80 list named in the <literal>resolverList</literal> option. ··· 90 90 example = literalExample "${pkgs.dnscrypt-proxy}/share/dnscrypt-proxy/dnscrypt-resolvers.csv"; 91 91 default = pkgs.fetchurl { 92 92 url = https://raw.githubusercontent.com/jedisct1/dnscrypt-proxy/master/dnscrypt-resolvers.csv; 93 - sha256 = "171zvdqcqqvcw3zr7wl9h1wmdmk6m3h55xr4gq2z1j7a0x0ba2in"; 93 + sha256 = "1i9wzw4zl052h5nyp28bwl8d66cgj0awvjhw5wgwz0warkjl1g8g"; 94 94 }; 95 95 defaultText = "pkgs.fetchurl { url = ...; sha256 = ...; }"; 96 96 };
+275 -10
nixos/modules/services/web-servers/nginx/default.nix
··· 4 4 5 5 let 6 6 cfg = config.services.nginx; 7 - nginx = cfg.package; 7 + virtualHosts = mapAttrs (vhostName: vhostConfig: 8 + vhostConfig // (optionalAttrs vhostConfig.enableACME { 9 + sslCertificate = "/var/lib/acme/${vhostName}/fullchain.pem"; 10 + sslCertificateKey = "/var/lib/acme/${vhostName}/key.pem"; 11 + }) 12 + ) cfg.virtualHosts; 13 + 8 14 configFile = pkgs.writeText "nginx.conf" '' 9 15 user ${cfg.user} ${cfg.group}; 16 + error_log stderr; 10 17 daemon off; 11 18 12 19 ${cfg.config} 13 20 21 + ${optionalString (cfg.httpConfig == "") '' 22 + http { 23 + include ${cfg.package}/conf/mime.types; 24 + include ${cfg.package}/conf/fastcgi.conf; 25 + 26 + ${optionalString (cfg.recommendedOptimisation) '' 27 + # optimisation 28 + sendfile on; 29 + tcp_nopush on; 30 + tcp_nodelay on; 31 + keepalive_timeout 65; 32 + types_hash_max_size 2048; 33 + ''} 34 + 35 + ssl_protocols ${cfg.sslProtocols}; 36 + ssl_ciphers ${cfg.sslCiphers}; 37 + ${optionalString (cfg.sslDhparam != null) "ssl_dhparam ${cfg.sslDhparam};"} 38 + 39 + ${optionalString (cfg.recommendedTlsSettings) '' 40 + ssl_session_cache shared:SSL:42m; 41 + ssl_session_timeout 23m; 42 + ssl_ecdh_curve secp384r1; 43 + ssl_prefer_server_ciphers on; 44 + ssl_stapling on; 45 + ssl_stapling_verify on; 46 + ''} 47 + 48 + ${optionalString (cfg.recommendedGzipSettings) '' 49 + gzip on; 50 + gzip_disable "msie6"; 51 + gzip_proxied any; 52 + gzip_comp_level 9; 53 + gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript; 54 + ''} 55 + 56 + ${optionalString (cfg.recommendedProxySettings) '' 57 + proxy_set_header Host $host; 58 + proxy_set_header X-Real-IP $remote_addr; 59 + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 60 + proxy_set_header X-Forwarded-Proto $scheme; 61 + proxy_set_header X-Forwarded-Host $host; 62 + proxy_set_header X-Forwarded-Server $host; 63 + proxy_set_header Accept-Encoding ""; 64 + 65 + proxy_redirect off; 66 + proxy_connect_timeout 90; 67 + proxy_send_timeout 90; 68 + proxy_read_timeout 90; 69 + proxy_http_version 1.0; 70 + ''} 71 + 72 + client_max_body_size ${cfg.clientMaxBodySize}; 73 + 74 + server_tokens ${if cfg.serverTokens then "on" else "off"}; 75 + 76 + ${vhosts} 77 + 78 + ${optionalString cfg.statusPage '' 79 + server { 80 + listen 80; 81 + listen [::]:80; 82 + 83 + server_name localhost; 84 + 85 + location /nginx_status { 86 + stub_status on; 87 + access_log off; 88 + allow 127.0.0.1; 89 + allow ::1; 90 + deny all; 91 + } 92 + } 93 + ''} 94 + 95 + ${cfg.appendHttpConfig} 96 + }''} 97 + 14 98 ${optionalString (cfg.httpConfig != "") '' 15 99 http { 16 100 include ${cfg.package}/conf/mime.types; 101 + include ${cfg.package}/conf/fastcgi.conf; 17 102 ${cfg.httpConfig} 103 + }''} 104 + 105 + ${cfg.appendConfig} 106 + ''; 107 + 108 + vhosts = concatStringsSep "\n" (mapAttrsToList (serverName: vhost: 109 + let 110 + ssl = vhost.enableSSL || vhost.forceSSL; 111 + port = if vhost.port != null then vhost.port else (if ssl then 443 else 80); 112 + listenString = toString port + optionalString ssl " ssl http2" 113 + + optionalString vhost.default " default"; 114 + acmeLocation = optionalString vhost.enableACME '' 115 + location /.well-known/acme-challenge { 116 + try_files $uri @acme-fallback; 117 + root ${vhost.acmeRoot}; 118 + auth_basic off; 119 + } 120 + location @acme-fallback { 121 + auth_basic off; 122 + proxy_pass http://${vhost.acmeFallbackHost}; 123 + } 124 + ''; 125 + in '' 126 + ${optionalString vhost.forceSSL '' 127 + server { 128 + listen 80 ${optionalString vhost.default "default"}; 129 + listen [::]:80 ${optionalString vhost.default "default"}; 130 + 131 + server_name ${serverName} ${concatStringsSep " " vhost.serverAliases}; 132 + ${acmeLocation} 133 + location / { 134 + return 301 https://$host${optionalString (port != 443) ":${port}"}$request_uri; 135 + } 136 + } 137 + ''} 138 + 139 + server { 140 + listen ${listenString}; 141 + listen [::]:${listenString}; 142 + 143 + server_name ${serverName} ${concatStringsSep " " vhost.serverAliases}; 144 + ${acmeLocation} 145 + ${optionalString (vhost.root != null) "root ${vhost.root};"} 146 + ${optionalString (vhost.globalRedirect != null) '' 147 + return 301 http${optionalString ssl "s"}://${vhost.globalRedirect}$request_uri; 148 + ''} 149 + ${optionalString ssl '' 150 + ssl_certificate ${vhost.sslCertificate}; 151 + ssl_certificate_key ${vhost.sslCertificateKey}; 152 + ''} 153 + 154 + ${optionalString (vhost.basicAuth != {}) (mkBasicAuth serverName vhost.basicAuth)} 155 + 156 + ${mkLocations vhost.locations} 157 + 158 + ${vhost.extraConfig} 159 + } 160 + '' 161 + ) virtualHosts); 162 + mkLocations = locations: concatStringsSep "\n" (mapAttrsToList (location: config: '' 163 + location ${location} { 164 + ${optionalString (config.proxyPass != null) "proxy_pass ${config.proxyPass};"} 165 + ${optionalString (config.root != null) "root ${config.root};"} 166 + ${config.extraConfig} 18 167 } 19 - ''} 20 - ${cfg.appendConfig} 168 + '') locations); 169 + mkBasicAuth = serverName: authDef: let 170 + htpasswdFile = pkgs.writeText "${serverName}.htpasswd" ( 171 + concatStringsSep "\n" (mapAttrsToList (user: password: '' 172 + ${user}:{PLAIN}${password} 173 + '') authDef) 174 + ); 175 + in '' 176 + auth_basic secured; 177 + auth_basic_user_file ${htpasswdFile}; 21 178 ''; 22 179 in 23 180 24 181 { 25 182 options = { 26 183 services.nginx = { 27 - enable = mkOption { 184 + enable = mkEnableOption "Nginx Web Server"; 185 + 186 + statusPage = mkOption { 187 + default = false; 188 + type = types.bool; 189 + description = " 190 + Enable status page reachable from localhost on http://127.0.0.1/nginx_status. 191 + "; 192 + }; 193 + 194 + recommendedTlsSettings = mkOption { 195 + default = false; 196 + type = types.bool; 197 + description = " 198 + Enable recommended TLS settings. 199 + "; 200 + }; 201 + 202 + recommendedOptimisation = mkOption { 203 + default = false; 204 + type = types.bool; 205 + description = " 206 + Enable recommended optimisation settings. 207 + "; 208 + }; 209 + 210 + recommendedGzipSettings = mkOption { 211 + default = false; 212 + type = types.bool; 213 + description = " 214 + Enable recommended gzip settings. 215 + "; 216 + }; 217 + 218 + recommendedProxySettings = mkOption { 28 219 default = false; 29 220 type = types.bool; 30 221 description = " 31 - Enable the nginx Web Server. 222 + Enable recommended proxy settings. 32 223 "; 33 224 }; 34 225 ··· 64 255 httpConfig = mkOption { 65 256 type = types.lines; 66 257 default = ""; 67 - description = "Configuration lines to be appended inside of the http {} block."; 258 + description = " 259 + Configuration lines to be set inside the http block. 260 + This is mutually exclusive with the structured configuration 261 + via virtualHosts and the recommendedXyzSettings configuration 262 + options. See appendHttpConfig for appending to the generated http block. 263 + "; 264 + }; 265 + 266 + appendHttpConfig = mkOption { 267 + type = types.lines; 268 + default = ""; 269 + description = " 270 + Configuration lines to be appended to the generated http block. 271 + This is mutually exclusive with using httpConfig for specifying the whole 272 + http block verbatim. 273 + "; 68 274 }; 69 275 70 276 stateDir = mkOption { ··· 86 292 description = "Group account under which nginx runs."; 87 293 }; 88 294 295 + serverTokens = mkOption { 296 + type = types.bool; 297 + default = false; 298 + description = "Show nginx version in headers and error pages."; 299 + }; 300 + 301 + clientMaxBodySize = mkOption { 302 + type = types.string; 303 + default = "10m"; 304 + description = "Set nginx global client_max_body_size."; 305 + }; 306 + 307 + sslCiphers = mkOption { 308 + type = types.str; 309 + default = "EECDH+aRSA+AESGCM:EDH+aRSA:EECDH+aRSA:+AES256:+AES128:+SHA1:!CAMELLIA:!SEED:!3DES:!DES:!RC4:!eNULL"; 310 + description = "Ciphers to choose from when negotiating tls handshakes."; 311 + }; 312 + 313 + sslProtocols = mkOption { 314 + type = types.str; 315 + default = "TLSv1.2"; 316 + example = "TLSv1 TLSv1.1 TLSv1.2"; 317 + description = "Allowed TLS protocol versions."; 318 + }; 319 + 320 + sslDhparam = mkOption { 321 + type = types.nullOr types.path; 322 + default = null; 323 + example = "/path/to/dhparams.pem"; 324 + description = "Path to DH parameters file."; 325 + }; 326 + 327 + virtualHosts = mkOption { 328 + type = types.attrsOf (types.submodule (import ./vhost-options.nix { 329 + inherit lib; 330 + })); 331 + default = { 332 + localhost = {}; 333 + }; 334 + example = literalExample '' 335 + { 336 + "hydra.example.com" = { 337 + forceSSL = true; 338 + enableACME = true; 339 + locations."/" = { 340 + proxyPass = "http://localhost:3000"; 341 + }; 342 + }; 343 + }; 344 + ''; 345 + description = "Declarative vhost config"; 346 + }; 89 347 }; 90 - 91 348 }; 92 349 93 350 config = mkIf cfg.enable { ··· 97 354 description = "Nginx Web Server"; 98 355 after = [ "network.target" ]; 99 356 wantedBy = [ "multi-user.target" ]; 100 - path = [ nginx ]; 101 357 preStart = 102 358 '' 103 359 mkdir -p ${cfg.stateDir}/logs ··· 105 361 chown -R ${cfg.user}:${cfg.group} ${cfg.stateDir} 106 362 ''; 107 363 serviceConfig = { 108 - ExecStart = "${nginx}/bin/nginx -c ${configFile} -p ${cfg.stateDir}"; 364 + ExecStart = "${cfg.package}/bin/nginx -c ${configFile} -p ${cfg.stateDir}"; 109 365 ExecReload = "${pkgs.coreutils}/bin/kill -HUP $MAINPID"; 110 - Restart = "on-failure"; 366 + Restart = "always"; 111 367 RestartSec = "10s"; 112 368 StartLimitInterval = "1min"; 113 369 }; 114 370 }; 371 + 372 + security.acme.certs = filterAttrs (n: v: v != {}) ( 373 + mapAttrs (vhostName: vhostConfig: 374 + optionalAttrs vhostConfig.enableACME { 375 + webroot = vhostConfig.acmeRoot; 376 + extraDomains = genAttrs vhostConfig.serverAliases (alias: null); 377 + } 378 + ) virtualHosts 379 + ); 115 380 116 381 users.extraUsers = optionalAttrs (cfg.user == "nginx") (singleton 117 382 { name = "nginx";
+40
nixos/modules/services/web-servers/nginx/location-options.nix
··· 1 + # This file defines the options that can be used both for the Apache 2 + # main server configuration, and for the virtual hosts. (The latter 3 + # has additional options that affect the web server as a whole, like 4 + # the user/group to run under.) 5 + 6 + { lib }: 7 + 8 + with lib; 9 + 10 + { 11 + options = { 12 + proxyPass = mkOption { 13 + type = types.nullOr types.str; 14 + default = null; 15 + example = "http://www.example.org/"; 16 + description = '' 17 + Adds proxy_pass directive and sets default proxy headers Host, X-Real-Ip 18 + and X-Forwarded-For. 19 + ''; 20 + }; 21 + 22 + root = mkOption { 23 + type = types.nullOr types.path; 24 + default = null; 25 + example = "/your/root/directory"; 26 + description = '' 27 + Root directory for requests. 28 + ''; 29 + }; 30 + 31 + extraConfig = mkOption { 32 + type = types.lines; 33 + default = ""; 34 + description = '' 35 + These lines go to the end of the location verbatim. 36 + ''; 37 + }; 38 + }; 39 + } 40 +
+140
nixos/modules/services/web-servers/nginx/vhost-options.nix
··· 1 + # This file defines the options that can be used both for the Apache 2 + # main server configuration, and for the virtual hosts. (The latter 3 + # has additional options that affect the web server as a whole, like 4 + # the user/group to run under.) 5 + 6 + { lib }: 7 + 8 + with lib; 9 + { 10 + options = { 11 + serverAliases = mkOption { 12 + type = types.listOf types.str; 13 + default = []; 14 + example = ["www.example.org" "example.org"]; 15 + description = '' 16 + Additional names of virtual hosts served by this virtual host configuration. 17 + ''; 18 + }; 19 + 20 + port = mkOption { 21 + type = types.nullOr types.int; 22 + default = null; 23 + description = '' 24 + Port for the server. Defaults to 80 for http 25 + and 443 for https (i.e. when enableSSL is set). 26 + ''; 27 + }; 28 + 29 + enableACME = mkOption { 30 + type = types.bool; 31 + default = false; 32 + description = "Whether to ask Let's Encrypt to sign a certificate for this vhost."; 33 + }; 34 + 35 + acmeRoot = mkOption { 36 + type = types.str; 37 + default = "/var/lib/acme/acme-challenge"; 38 + description = "Directory to store certificates and keys managed by the ACME service."; 39 + }; 40 + 41 + acmeFallbackHost = mkOption { 42 + type = types.str; 43 + default = "0.0.0.0"; 44 + description = '' 45 + Host which to proxy requests to if acme challenge is not found. Useful 46 + if you want multiple hosts to be able to verify the same domain name. 47 + ''; 48 + }; 49 + 50 + enableSSL = mkOption { 51 + type = types.bool; 52 + default = false; 53 + description = "Whether to enable SSL (https) support."; 54 + }; 55 + 56 + forceSSL = mkOption { 57 + type = types.bool; 58 + default = false; 59 + description = "Whether to always redirect to https."; 60 + }; 61 + 62 + sslCertificate = mkOption { 63 + type = types.path; 64 + example = "/var/host.cert"; 65 + description = "Path to server SSL certificate."; 66 + }; 67 + 68 + sslCertificateKey = mkOption { 69 + type = types.path; 70 + example = "/var/host.key"; 71 + description = "Path to server SSL certificate key."; 72 + }; 73 + 74 + root = mkOption { 75 + type = types.nullOr types.path; 76 + default = null; 77 + example = "/data/webserver/docs"; 78 + description = '' 79 + The path of the web root directory. 80 + ''; 81 + }; 82 + 83 + default = mkOption { 84 + type = types.bool; 85 + default = false; 86 + description = '' 87 + Makes this vhost the default. 88 + ''; 89 + }; 90 + 91 + extraConfig = mkOption { 92 + type = types.lines; 93 + default = ""; 94 + description = '' 95 + These lines go to the end of the vhost verbatim. 96 + ''; 97 + }; 98 + 99 + globalRedirect = mkOption { 100 + type = types.nullOr types.str; 101 + default = null; 102 + example = http://newserver.example.org/; 103 + description = '' 104 + If set, all requests for this host are redirected permanently to 105 + the given URL. 106 + ''; 107 + }; 108 + 109 + basicAuth = mkOption { 110 + type = types.attrsOf types.str; 111 + default = {}; 112 + example = literalExample '' 113 + { 114 + user = "password"; 115 + }; 116 + ''; 117 + description = '' 118 + Basic Auth protection for a vhost. 119 + 120 + WARNING: This is implemented to store the password in plain text in the 121 + nix store. 122 + ''; 123 + }; 124 + 125 + locations = mkOption { 126 + type = types.attrsOf (types.submodule (import ./location-options.nix { 127 + inherit lib; 128 + })); 129 + default = {}; 130 + example = literalExample '' 131 + { 132 + "/" = { 133 + proxyPass = "http://localhost:3000"; 134 + }; 135 + }; 136 + ''; 137 + description = "Declarative location config"; 138 + }; 139 + }; 140 + }
+280 -179
nixos/modules/virtualisation/containers.nix
··· 6 6 7 7 # The container's init script, a small wrapper around the regular 8 8 # NixOS stage-2 init script. 9 - containerInit = pkgs.writeScript "container-init" 9 + containerInit = (cfg: 10 + let 11 + renderExtraVeth = (name: cfg: 12 + '' 13 + echo "Bringing ${name} up" 14 + ip link set dev ${name} up 15 + ${optionalString (cfg . "localAddress" or null != null) '' 16 + echo "Setting ip for ${name}" 17 + ip addr add ${cfg . "localAddress"} dev ${name} 18 + ''} 19 + ${optionalString (cfg . "localAddress6" or null != null) '' 20 + echo "Setting ip6 for ${name}" 21 + ip -6 addr add ${cfg . "localAddress6"} dev ${name} 22 + ''} 23 + ${optionalString (cfg . "hostAddress" or null != null) '' 24 + echo "Setting route to host for ${name}" 25 + ip route add ${cfg . "hostAddress"} dev ${name} 26 + ''} 27 + ${optionalString (cfg . "hostAddress6" or null != null) '' 28 + echo "Setting route6 to host for ${name}" 29 + ip -6 route add ${cfg . "hostAddress6"} dev ${name} 30 + ''} 31 + '' 32 + ); 33 + in 34 + pkgs.writeScript "container-init" 35 + '' 36 + #! ${pkgs.stdenv.shell} -e 37 + 38 + # Initialise the container side of the veth pair. 39 + if [ "$PRIVATE_NETWORK" = 1 ]; then 40 + 41 + ip link set host0 name eth0 42 + ip link set dev eth0 up 43 + 44 + if [ -n "$LOCAL_ADDRESS" ]; then 45 + ip addr add $LOCAL_ADDRESS dev eth0 46 + fi 47 + if [ -n "$LOCAL_ADDRESS6" ]; then 48 + ip -6 addr add $LOCAL_ADDRESS6 dev eth0 49 + fi 50 + if [ -n "$HOST_ADDRESS" ]; then 51 + ip route add $HOST_ADDRESS dev eth0 52 + ip route add default via $HOST_ADDRESS 53 + fi 54 + if [ -n "$HOST_ADDRESS6" ]; then 55 + ip -6 route add $HOST_ADDRESS6 dev eth0 56 + ip -6 route add default via $HOST_ADDRESS6 57 + fi 58 + 59 + ${concatStringsSep "\n" (mapAttrsToList renderExtraVeth cfg . "extraVeths" or {})} 60 + ip a 61 + ip r 62 + fi 63 + 64 + # Start the regular stage 1 script. 65 + exec "$1" 66 + '' 67 + ); 68 + 69 + nspawnExtraVethArgs = (name: cfg: "--network-veth-extra=${name}"); 70 + startScript = (cfg: 10 71 '' 11 - #! ${pkgs.stdenv.shell} -e 72 + mkdir -p -m 0755 "$root/etc" "$root/var/lib" 73 + mkdir -p -m 0700 "$root/var/lib/private" "$root/root" /run/containers 74 + if ! [ -e "$root/etc/os-release" ]; then 75 + touch "$root/etc/os-release" 76 + fi 77 + 78 + if ! [ -e "$root/etc/machine-id" ]; then 79 + touch "$root/etc/machine-id" 80 + fi 81 + 82 + mkdir -p -m 0755 \ 83 + "/nix/var/nix/profiles/per-container/$INSTANCE" \ 84 + "/nix/var/nix/gcroots/per-container/$INSTANCE" 85 + 86 + cp --remove-destination /etc/resolv.conf "$root/etc/resolv.conf" 12 87 13 - # Initialise the container side of the veth pair. 14 88 if [ "$PRIVATE_NETWORK" = 1 ]; then 89 + extraFlags+=" --network-veth" 90 + if [ -n "$HOST_BRIDGE" ]; then 91 + extraFlags+=" --network-bridge=$HOST_BRIDGE" 92 + fi 93 + fi 15 94 16 - ip link set host0 name eth0 17 - ip link set dev eth0 up 95 + ${if cfg . "extraVeths" or null != null then 96 + ''extraFlags+=" ${concatStringsSep " " (mapAttrsToList nspawnExtraVethArgs cfg . "extraVeths" or {})}"'' 97 + else 98 + ''# No extra veth pairs to create'' 99 + } 18 100 19 - if [ -n "$LOCAL_ADDRESS" ]; then 20 - ip addr add $LOCAL_ADDRESS dev eth0 21 - fi 22 - if [ -n "$LOCAL_ADDRESS6" ]; then 23 - ip -6 addr add $LOCAL_ADDRESS6 dev eth0 24 - fi 25 - if [ -n "$HOST_ADDRESS" ]; then 26 - ip route add $HOST_ADDRESS dev eth0 27 - ip route add default via $HOST_ADDRESS 28 - fi 29 - if [ -n "$HOST_ADDRESS6" ]; then 30 - ip -6 route add $HOST_ADDRESS6 dev eth0 31 - ip -6 route add default via $HOST_ADDRESS6 101 + for iface in $INTERFACES; do 102 + extraFlags+=" --network-interface=$iface" 103 + done 104 + 105 + for iface in $MACVLANS; do 106 + extraFlags+=" --network-macvlan=$iface" 107 + done 108 + 109 + # If the host is 64-bit and the container is 32-bit, add a 110 + # --personality flag. 111 + ${optionalString (config.nixpkgs.system == "x86_64-linux") '' 112 + if [ "$(< ''${SYSTEM_PATH:-/nix/var/nix/profiles/per-container/$INSTANCE/system}/system)" = i686-linux ]; then 113 + extraFlags+=" --personality=x86" 32 114 fi 115 + ''} 116 + 117 + # Run systemd-nspawn without startup notification (we'll 118 + # wait for the container systemd to signal readiness). 119 + EXIT_ON_REBOOT=1 \ 120 + exec ${config.systemd.package}/bin/systemd-nspawn \ 121 + --keep-unit \ 122 + -M "$INSTANCE" -D "$root" $extraFlags \ 123 + $EXTRA_NSPAWN_FLAGS \ 124 + --notify-ready=yes \ 125 + --bind-ro=/nix/store \ 126 + --bind-ro=/nix/var/nix/db \ 127 + --bind-ro=/nix/var/nix/daemon-socket \ 128 + --bind="/nix/var/nix/profiles/per-container/$INSTANCE:/nix/var/nix/profiles" \ 129 + --bind="/nix/var/nix/gcroots/per-container/$INSTANCE:/nix/var/nix/gcroots" \ 130 + --setenv PRIVATE_NETWORK="$PRIVATE_NETWORK" \ 131 + --setenv HOST_BRIDGE="$HOST_BRIDGE" \ 132 + --setenv HOST_ADDRESS="$HOST_ADDRESS" \ 133 + --setenv LOCAL_ADDRESS="$LOCAL_ADDRESS" \ 134 + --setenv HOST_ADDRESS6="$HOST_ADDRESS6" \ 135 + --setenv LOCAL_ADDRESS6="$LOCAL_ADDRESS6" \ 136 + --setenv PATH="$PATH" \ 137 + ${containerInit cfg} "''${SYSTEM_PATH:-/nix/var/nix/profiles/system}/init" 138 + '' 139 + ); 140 + 141 + preStartScript = (cfg: 142 + '' 143 + # Clean up existing machined registration and interfaces. 144 + machinectl terminate "$INSTANCE" 2> /dev/null || true 145 + 146 + if [ "$PRIVATE_NETWORK" = 1 ]; then 147 + ip link del dev "ve-$INSTANCE" 2> /dev/null || true 148 + ip link del dev "vb-$INSTANCE" 2> /dev/null || true 33 149 fi 34 150 35 - # Start the regular stage 1 script. 36 - exec "$1" 37 - ''; 151 + ${concatStringsSep "\n" ( 152 + mapAttrsToList (name: cfg: 153 + ''ip link del dev ${name} 2> /dev/null || true '' 154 + ) cfg . "extraVeths" or {} 155 + )} 156 + '' 157 + ); 158 + postStartScript = (cfg: 159 + let 160 + ipcall = (cfg: ipcmd: variable: attribute: 161 + if cfg . attribute or null == null then 162 + '' 163 + if [ -n "${variable}" ]; then 164 + ${ipcmd} add ${variable} dev $ifaceHost 165 + fi 166 + '' 167 + else 168 + ''${ipcmd} add ${cfg . attribute} dev $ifaceHost'' 169 + ); 170 + renderExtraVeth = (name: cfg: 171 + if cfg . "hostBridge" or null != null then 172 + '' 173 + # Add ${name} to bridge ${cfg.hostBridge} 174 + ip link set dev ${name} master ${cfg.hostBridge} up 175 + '' 176 + else 177 + '' 178 + # Set IPs and routes for ${name} 179 + ${optionalString (cfg . "hostAddress" or null != null) '' 180 + ip addr add ${cfg . "hostAddress"} dev ${name} 181 + ''} 182 + ${optionalString (cfg . "hostAddress6" or null != null) '' 183 + ip -6 addr add ${cfg . "hostAddress6"} dev ${name} 184 + ''} 185 + ${optionalString (cfg . "localAddress" or null != null) '' 186 + ip route add ${cfg . "localAddress"} dev ${name} 187 + ''} 188 + ${optionalString (cfg . "localAddress6" or null != null) '' 189 + ip -6 route add ${cfg . "localAddress6"} dev ${name} 190 + ''} 191 + '' 192 + ); 193 + in 194 + '' 195 + if [ "$PRIVATE_NETWORK" = 1 ]; then 196 + if [ -z "$HOST_BRIDGE" ]; then 197 + ifaceHost=ve-$INSTANCE 198 + ip link set dev $ifaceHost up 199 + 200 + ${ipcall cfg "ip addr" "$HOST_ADDRESS" "hostAddress"} 201 + ${ipcall cfg "ip -6 addr" "$HOST_ADDRESS6" "hostAddress6"} 202 + ${ipcall cfg "ip route" "$LOCAL_ADDRESS" "localAddress"} 203 + ${ipcall cfg "ip -6 route" "$LOCAL_ADDRESS6" "localAddress6"} 204 + fi 205 + ${concatStringsSep "\n" (mapAttrsToList renderExtraVeth cfg . "extraVeths" or {})} 206 + fi 207 + 208 + # Get the leader PID so that we can signal it in 209 + # preStop. We can't use machinectl there because D-Bus 210 + # might be shutting down. FIXME: in systemd 219 we can 211 + # just signal systemd-nspawn to do a clean shutdown. 212 + machinectl show "$INSTANCE" | sed 's/Leader=\(.*\)/\1/;t;d' > "/run/containers/$INSTANCE.pid" 213 + '' 214 + ); 38 215 39 216 system = config.nixpkgs.system; 40 217 ··· 73 250 74 251 mkBindFlags = bs: concatMapStrings mkBindFlag (lib.attrValues bs); 75 252 253 + networkOptions = { 254 + hostBridge = mkOption { 255 + type = types.nullOr types.string; 256 + default = null; 257 + example = "br0"; 258 + description = '' 259 + Put the host-side of the veth-pair into the named bridge. 260 + Only one of hostAddress* or hostBridge can be given. 261 + ''; 262 + }; 263 + 264 + hostAddress = mkOption { 265 + type = types.nullOr types.str; 266 + default = null; 267 + example = "10.231.136.1"; 268 + description = '' 269 + The IPv4 address assigned to the host interface. 270 + (Not used when hostBridge is set.) 271 + ''; 272 + }; 273 + 274 + hostAddress6 = mkOption { 275 + type = types.nullOr types.string; 276 + default = null; 277 + example = "fc00::1"; 278 + description = '' 279 + The IPv6 address assigned to the host interface. 280 + (Not used when hostBridge is set.) 281 + ''; 282 + }; 283 + 284 + localAddress = mkOption { 285 + type = types.nullOr types.str; 286 + default = null; 287 + example = "10.231.136.2"; 288 + description = '' 289 + The IPv4 address assigned to the interface in the container. 290 + If a hostBridge is used, this should be given with netmask to access 291 + the whole network. Otherwise the default netmask is /32 and routing is 292 + set up from localAddress to hostAddress and back. 293 + ''; 294 + }; 295 + 296 + localAddress6 = mkOption { 297 + type = types.nullOr types.string; 298 + default = null; 299 + example = "fc00::2"; 300 + description = '' 301 + The IPv6 address assigned to the interface in the container. 302 + If a hostBridge is used, this should be given with netmask to access 303 + the whole network. Otherwise the default netmask is /128 and routing is 304 + set up from localAddress6 to hostAddress6 and back. 305 + ''; 306 + }; 307 + 308 + }; 309 + 76 310 in 77 311 78 312 { ··· 133 367 ''; 134 368 }; 135 369 136 - hostBridge = mkOption { 137 - type = types.nullOr types.string; 138 - default = null; 139 - example = "br0"; 140 - description = '' 141 - Put the host-side of the veth-pair into the named bridge. 142 - Only one of hostAddress* or hostBridge can be given. 143 - ''; 144 - }; 145 - 146 - hostAddress = mkOption { 147 - type = types.nullOr types.str; 148 - default = null; 149 - example = "10.231.136.1"; 150 - description = '' 151 - The IPv4 address assigned to the host interface. 152 - (Not used when hostBridge is set.) 153 - ''; 154 - }; 155 - 156 - hostAddress6 = mkOption { 157 - type = types.nullOr types.string; 158 - default = null; 159 - example = "fc00::1"; 160 - description = '' 161 - The IPv6 address assigned to the host interface. 162 - (Not used when hostBridge is set.) 163 - ''; 164 - }; 165 - 166 - localAddress = mkOption { 167 - type = types.nullOr types.str; 168 - default = null; 169 - example = "10.231.136.2"; 170 - description = '' 171 - The IPv4 address assigned to <literal>eth0</literal> 172 - in the container. 173 - ''; 174 - }; 175 - 176 - localAddress6 = mkOption { 177 - type = types.nullOr types.string; 178 - default = null; 179 - example = "fc00::2"; 180 - description = '' 181 - The IPv6 address assigned to <literal>eth0</literal> 182 - in the container. 183 - ''; 184 - }; 185 - 186 370 interfaces = mkOption { 187 371 type = types.listOf types.string; 188 372 default = []; 189 373 example = [ "eth1" "eth2" ]; 190 374 description = '' 191 375 The list of interfaces to be moved into the container. 376 + ''; 377 + }; 378 + 379 + extraVeths = mkOption { 380 + type = types.attrsOf types.optionSet; 381 + default = {}; 382 + options = networkOptions; 383 + description = '' 384 + Extra veth-pairs to be created for the container 192 385 ''; 193 386 }; 194 387 ··· 214 407 ''; 215 408 }; 216 409 217 - }; 410 + } // networkOptions; 218 411 219 412 config = mkMerge 220 413 [ (mkIf options.config.isDefined { ··· 272 465 environment.INSTANCE = "%i"; 273 466 environment.root = "/var/lib/containers/%i"; 274 467 275 - preStart = 276 - '' 277 - # Clean up existing machined registration and interfaces. 278 - machinectl terminate "$INSTANCE" 2> /dev/null || true 468 + preStart = preStartScript {}; 279 469 280 - if [ "$PRIVATE_NETWORK" = 1 ]; then 281 - ip link del dev "ve-$INSTANCE" 2> /dev/null || true 282 - ip link del dev "vb-$INSTANCE" 2> /dev/null || true 283 - fi 284 - ''; 470 + script = startScript {}; 285 471 286 - script = 287 - '' 288 - mkdir -p -m 0755 "$root/etc" "$root/var/lib" 289 - mkdir -p -m 0700 "$root/var/lib/private" "$root/root" /run/containers 290 - if ! [ -e "$root/etc/os-release" ]; then 291 - touch "$root/etc/os-release" 292 - fi 293 - 294 - if ! [ -e "$root/etc/machine-id" ]; then 295 - touch "$root/etc/machine-id" 296 - fi 297 - 298 - mkdir -p -m 0755 \ 299 - "/nix/var/nix/profiles/per-container/$INSTANCE" \ 300 - "/nix/var/nix/gcroots/per-container/$INSTANCE" 301 - 302 - cp --remove-destination /etc/resolv.conf "$root/etc/resolv.conf" 303 - 304 - if [ "$PRIVATE_NETWORK" = 1 ]; then 305 - extraFlags+=" --network-veth" 306 - if [ -n "$HOST_BRIDGE" ]; then 307 - extraFlags+=" --network-bridge=$HOST_BRIDGE" 308 - fi 309 - fi 310 - 311 - for iface in $INTERFACES; do 312 - extraFlags+=" --network-interface=$iface" 313 - done 314 - 315 - for iface in $MACVLANS; do 316 - extraFlags+=" --network-macvlan=$iface" 317 - done 318 - 319 - # If the host is 64-bit and the container is 32-bit, add a 320 - # --personality flag. 321 - ${optionalString (config.nixpkgs.system == "x86_64-linux") '' 322 - if [ "$(< ''${SYSTEM_PATH:-/nix/var/nix/profiles/per-container/$INSTANCE/system}/system)" = i686-linux ]; then 323 - extraFlags+=" --personality=x86" 324 - fi 325 - ''} 326 - 327 - # Run systemd-nspawn without startup notification (we'll 328 - # wait for the container systemd to signal readiness). 329 - EXIT_ON_REBOOT=1 \ 330 - exec ${config.systemd.package}/bin/systemd-nspawn \ 331 - --keep-unit \ 332 - -M "$INSTANCE" -D "$root" $extraFlags \ 333 - $EXTRA_NSPAWN_FLAGS \ 334 - --notify-ready=yes \ 335 - --bind-ro=/nix/store \ 336 - --bind-ro=/nix/var/nix/db \ 337 - --bind-ro=/nix/var/nix/daemon-socket \ 338 - --bind="/nix/var/nix/profiles/per-container/$INSTANCE:/nix/var/nix/profiles" \ 339 - --bind="/nix/var/nix/gcroots/per-container/$INSTANCE:/nix/var/nix/gcroots" \ 340 - --setenv PRIVATE_NETWORK="$PRIVATE_NETWORK" \ 341 - --setenv HOST_BRIDGE="$HOST_BRIDGE" \ 342 - --setenv HOST_ADDRESS="$HOST_ADDRESS" \ 343 - --setenv LOCAL_ADDRESS="$LOCAL_ADDRESS" \ 344 - --setenv HOST_ADDRESS6="$HOST_ADDRESS6" \ 345 - --setenv LOCAL_ADDRESS6="$LOCAL_ADDRESS6" \ 346 - --setenv PATH="$PATH" \ 347 - ${containerInit} "''${SYSTEM_PATH:-/nix/var/nix/profiles/system}/init" 348 - ''; 349 - 350 - postStart = 351 - '' 352 - if [ "$PRIVATE_NETWORK" = 1 ]; then 353 - if [ -z "$HOST_BRIDGE" ]; then 354 - ifaceHost=ve-$INSTANCE 355 - ip link set dev $ifaceHost up 356 - if [ -n "$HOST_ADDRESS" ]; then 357 - ip addr add $HOST_ADDRESS dev $ifaceHost 358 - fi 359 - if [ -n "$HOST_ADDRESS6" ]; then 360 - ip -6 addr add $HOST_ADDRESS6 dev $ifaceHost 361 - fi 362 - if [ -n "$LOCAL_ADDRESS" ]; then 363 - ip route add $LOCAL_ADDRESS dev $ifaceHost 364 - fi 365 - if [ -n "$LOCAL_ADDRESS6" ]; then 366 - ip -6 route add $LOCAL_ADDRESS6 dev $ifaceHost 367 - fi 368 - fi 369 - fi 370 - 371 - # Get the leader PID so that we can signal it in 372 - # preStop. We can't use machinectl there because D-Bus 373 - # might be shutting down. FIXME: in systemd 219 we can 374 - # just signal systemd-nspawn to do a clean shutdown. 375 - machinectl show "$INSTANCE" | sed 's/Leader=\(.*\)/\1/;t;d' > "/run/containers/$INSTANCE.pid" 376 - ''; 472 + postStart = postStartScript {}; 377 473 378 474 preStop = 379 475 '' ··· 425 521 [{ name = "container@"; value = unit; }] 426 522 # declarative containers 427 523 ++ (mapAttrsToList (name: cfg: nameValuePair "container@${name}" ( 524 + unit // { 525 + preStart = preStartScript cfg; 526 + script = startScript cfg; 527 + postStart = postStartScript cfg; 528 + } // ( 428 529 if cfg.autoStart then 429 - unit // { 530 + { 430 531 wantedBy = [ "multi-user.target" ]; 431 532 wants = [ "network.target" ]; 432 533 after = [ "network.target" ]; 433 534 restartTriggers = [ cfg.path ]; 434 535 reloadIfChanged = true; 435 536 } 436 - else null 537 + else {}) 437 538 )) config.containers) 438 539 )); 439 540 ··· 462 563 LOCAL_ADDRESS6=${cfg.localAddress6} 463 564 ''} 464 565 ''} 465 - INTERFACES="${toString cfg.interfaces}" 466 - ${optionalString cfg.autoStart '' 467 - AUTO_START=1 468 - ''} 469 - EXTRA_NSPAWN_FLAGS="${mkBindFlags cfg.bindMounts}" 566 + INTERFACES="${toString cfg.interfaces}" 567 + ${optionalString cfg.autoStart '' 568 + AUTO_START=1 569 + ''} 570 + EXTRA_NSPAWN_FLAGS="${mkBindFlags cfg.bindMounts}" 470 571 ''; 471 572 }) config.containers; 472 573
+2 -2
nixos/release.nix
··· 7 7 8 8 let 9 9 10 - version = builtins.readFile ../.version; 10 + version = fileContents ../.version; 11 11 versionSuffix = 12 12 (if stableBranch then "." else "pre") + "${toString nixpkgs.revCount}.${nixpkgs.shortRev}"; 13 13 ··· 96 96 97 97 manual = buildFromConfig ({ pkgs, ... }: { }) (config: config.system.build.manual.manual); 98 98 manualEpub = (buildFromConfig ({ pkgs, ... }: { }) (config: config.system.build.manual.manualEpub)); 99 - manualPDF = (buildFromConfig ({ pkgs, ... }: { }) (config: config.system.build.manual.manualPDF)).x86_64-linux; 100 99 manpages = buildFromConfig ({ pkgs, ... }: { }) (config: config.system.build.manual.manpages); 101 100 options = (buildFromConfig ({ pkgs, ... }: { }) (config: config.system.build.manual.optionsJSON)).x86_64-linux; 102 101 ··· 218 217 tests.containers-ipv6 = callTest tests/containers-ipv6.nix {}; 219 218 tests.containers-bridge = callTest tests/containers-bridge.nix {}; 220 219 tests.containers-imperative = callTest tests/containers-imperative.nix {}; 220 + tests.containers-extra_veth = callTest tests/containers-extra_veth.nix {}; 221 221 tests.docker = hydraJob (import tests/docker.nix { system = "x86_64-linux"; }); 222 222 tests.dockerRegistry = hydraJob (import tests/docker-registry.nix { system = "x86_64-linux"; }); 223 223 tests.dnscrypt-proxy = callTest tests/dnscrypt-proxy.nix { system = "x86_64-linux"; };
+1 -1
nixos/tests/containers-bridge.nix
··· 10 10 import ./make-test.nix ({ pkgs, ...} : { 11 11 name = "containers-bridge"; 12 12 meta = with pkgs.stdenv.lib.maintainers; { 13 - maintainers = [ aristid aszlig eelco chaoflow ]; 13 + maintainers = [ aristid aszlig eelco chaoflow kampfschlaefer ]; 14 14 }; 15 15 16 16 machine =
+103
nixos/tests/containers-extra_veth.nix
··· 1 + # Test for NixOS' container support. 2 + 3 + import ./make-test.nix ({ pkgs, ...} : { 4 + name = "containers-bridge"; 5 + meta = with pkgs.stdenv.lib.maintainers; { 6 + maintainers = [ kampfschlaefer ]; 7 + }; 8 + 9 + machine = 10 + { config, pkgs, ... }: 11 + { imports = [ ../modules/installer/cd-dvd/channel.nix ]; 12 + virtualisation.writableStore = true; 13 + virtualisation.memorySize = 768; 14 + virtualisation.vlans = []; 15 + 16 + networking.bridges = { 17 + br0 = { 18 + interfaces = []; 19 + }; 20 + br1 = { interfaces = []; }; 21 + }; 22 + networking.interfaces = { 23 + br0 = { 24 + ip4 = [{ address = "192.168.0.1"; prefixLength = 24; }]; 25 + ip6 = [{ address = "fc00::1"; prefixLength = 7; }]; 26 + }; 27 + br1 = { 28 + ip4 = [{ address = "192.168.1.1"; prefixLength = 24; }]; 29 + }; 30 + }; 31 + 32 + containers.webserver = 33 + { 34 + autoStart = true; 35 + privateNetwork = true; 36 + hostBridge = "br0"; 37 + localAddress = "192.168.0.100/24"; 38 + localAddress6 = "fc00::2/7"; 39 + extraVeths = { 40 + veth1 = { hostBridge = "br1"; localAddress = "192.168.1.100/24"; }; 41 + veth2 = { hostAddress = "192.168.2.1"; localAddress = "192.168.2.100"; }; 42 + }; 43 + config = 44 + { 45 + networking.firewall.allowedTCPPorts = [ 80 ]; 46 + networking.firewall.allowPing = true; 47 + }; 48 + }; 49 + 50 + virtualisation.pathsInNixDB = [ pkgs.stdenv ]; 51 + }; 52 + 53 + testScript = 54 + '' 55 + $machine->waitForUnit("default.target"); 56 + $machine->succeed("nixos-container list") =~ /webserver/ or die; 57 + 58 + # Status of the webserver container. 59 + $machine->succeed("nixos-container status webserver") =~ /up/ or die; 60 + 61 + # Debug 62 + #$machine->succeed("nixos-container run webserver -- ip link >&2"); 63 + 64 + # Ensure that the veths are inside the container 65 + $machine->succeed("nixos-container run webserver -- ip link show veth1") =~ /state UP/ or die; 66 + $machine->succeed("nixos-container run webserver -- ip link show veth2") =~ /state UP/ or die; 67 + 68 + # Debug 69 + #$machine->succeed("ip link >&2"); 70 + 71 + # Ensure the presence of the extra veths 72 + $machine->succeed("ip link show veth1") =~ /state UP/ or die; 73 + $machine->succeed("ip link show veth2") =~ /state UP/ or die; 74 + 75 + # Ensure the veth1 is part of br1 on the host 76 + $machine->succeed("ip link show veth1") =~ /master br1/ or die; 77 + 78 + # Debug 79 + #$machine->succeed("ip -4 a >&2"); 80 + #$machine->succeed("ip -4 r >&2"); 81 + #$machine->succeed("nixos-container run webserver -- ip link >&2"); 82 + #$machine->succeed("nixos-container run webserver -- ip -4 a >&2"); 83 + #$machine->succeed("nixos-container run webserver -- ip -4 r >&2"); 84 + 85 + # Ping on main veth 86 + $machine->succeed("ping -n -c 1 192.168.0.100"); 87 + $machine->succeed("ping6 -n -c 1 fc00::2"); 88 + 89 + # Ping on the first extra veth 90 + $machine->succeed("ping -n -c 1 192.168.1.100 >&2"); 91 + 92 + # Ping on the second extra veth 93 + $machine->succeed("ping -n -c 1 192.168.2.100 >&2"); 94 + 95 + # Stop the container. 96 + $machine->succeed("nixos-container stop webserver"); 97 + $machine->fail("ping -n -c 1 192.168.1.100 >&2"); 98 + $machine->fail("ping -n -c 1 192.168.2.100 >&2"); 99 + 100 + # Destroying a declarative container should fail. 101 + $machine->fail("nixos-container destroy webserver"); 102 + ''; 103 + })
+1 -1
nixos/tests/containers-imperative.nix
··· 3 3 import ./make-test.nix ({ pkgs, ...} : { 4 4 name = "containers-imperative"; 5 5 meta = with pkgs.stdenv.lib.maintainers; { 6 - maintainers = [ aristid aszlig eelco chaoflow ]; 6 + maintainers = [ aristid aszlig eelco chaoflow kampfschlaefer ]; 7 7 }; 8 8 9 9 machine =
+1 -1
nixos/tests/containers-ipv4.nix
··· 3 3 import ./make-test.nix ({ pkgs, ...} : { 4 4 name = "containers-ipv4"; 5 5 meta = with pkgs.stdenv.lib.maintainers; { 6 - maintainers = [ aristid aszlig eelco chaoflow ]; 6 + maintainers = [ aristid aszlig eelco chaoflow kampfschlaefer ]; 7 7 }; 8 8 9 9 machine =
+1 -1
nixos/tests/containers-ipv6.nix
··· 8 8 import ./make-test.nix ({ pkgs, ...} : { 9 9 name = "containers-ipv6"; 10 10 meta = with pkgs.stdenv.lib.maintainers; { 11 - maintainers = [ aristid aszlig eelco chaoflow ]; 11 + maintainers = [ aristid aszlig eelco chaoflow kampfschlaefer ]; 12 12 }; 13 13 14 14 machine =
+1 -1
pkgs/applications/audio/mopidy/default.nix
··· 22 22 ]; 23 23 24 24 propagatedBuildInputs = with pythonPackages; [ 25 - gst-python pygobject3 pykka tornado requests2 25 + gst-python pygobject3 pykka tornado requests2 dbus 26 26 ]; 27 27 28 28 # There are no tests
+3 -4
pkgs/applications/audio/zam-plugins/default.nix
··· 2 2 3 3 stdenv.mkDerivation rec { 4 4 name = "zam-plugins-${version}"; 5 - version = "3.6"; 5 + version = "3.7"; 6 6 7 7 src = fetchgit { 8 8 url = "https://github.com/zamaudio/zam-plugins.git"; 9 9 deepClone = true; 10 - rev = "91fe56931a3e57b80f18c740d2dde6b44f962aee"; 11 - sha256 = "1ldrqh6nk0m1axb553wjp1gfznw8b6b3k0v0z1jdwy425sl6g07d"; 10 + rev = "932046905a57f698406318765a60807a1f81257d"; 11 + sha256 = "0zgkmq3jgysrsb6cm6sfbgqpgfpwv8nxlgkqm29zzvb97j56bm7z"; 12 12 }; 13 13 14 14 buildInputs = [ boost libX11 mesa liblo libjack2 ladspaH lv2 pkgconfig rubberband libsndfile ]; 15 15 16 16 patchPhase = '' 17 17 patchShebangs ./dpf/utils/generate-ttl.sh 18 - substituteInPlace Makefile --replace "ZaMaximX2" "ZaMaximX2 ZamPiano ZamChild670" 19 18 ''; 20 19 21 20 makeFlags = [
+2 -2
pkgs/applications/editors/atom/default.nix
··· 2 2 3 3 stdenv.mkDerivation rec { 4 4 name = "atom-${version}"; 5 - version = "1.8.0"; 5 + version = "1.9.0"; 6 6 7 7 src = fetchurl { 8 8 url = "https://github.com/atom/atom/releases/download/v${version}/atom-amd64.deb"; 9 - sha256 = "0x73n64y3jfwbwg6s9pmsajryrjrrx1a0dzf3ff6dbi5gvv950xi"; 9 + sha256 = "0hhv1yfs2h5x86pjbkbdg1mn15afdd3baddwpf3p0fl8x2gv9z7m"; 10 10 name = "${name}.deb"; 11 11 }; 12 12
+43 -42
pkgs/applications/editors/kile/frameworks.nix
··· 1 - { stdenv 1 + { kdeDerivation 2 2 , lib 3 3 , fetchgit 4 - , extra-cmake-modules 4 + , ecm 5 5 , kdoctools 6 - , makeQtWrapper 6 + , kdeWrapper 7 7 , qtscript 8 8 , kconfig 9 9 , kcrash ··· 13 13 , kiconthemes 14 14 , kinit 15 15 , khtml 16 + , konsole 16 17 , kparts 17 18 , ktexteditor 18 19 , kwindowsystem 19 20 , poppler 20 21 }: 21 22 22 - stdenv.mkDerivation rec { 23 - name = "kile-${version}"; 24 - version = "2016-07-02"; 23 + let 24 + unwrapped = 25 + kdeDerivation rec { 26 + name = "kile-${version}"; 27 + version = "2016-07-02"; 25 28 26 - src = fetchgit { 27 - url = git://anongit.kde.org/kile.git; 28 - rev = "d38bc7069667119cc891b351188484ca6fb88973"; 29 - sha256 = "1nha71i16fs7nq2812b5565nbmbsbs3ak5czas6xg1dg5bsvdqh8"; 29 + src = fetchgit { 30 + url = git://anongit.kde.org/kile.git; 31 + rev = "d38bc7069667119cc891b351188484ca6fb88973"; 32 + sha256 = "1nha71i16fs7nq2812b5565nbmbsbs3ak5czas6xg1dg5bsvdqh8"; 30 33 31 - }; 34 + }; 32 35 33 - nativeBuildInputs = [ 34 - extra-cmake-modules 35 - kdoctools 36 - makeQtWrapper 37 - ]; 36 + nativeBuildInputs = [ ecm kdoctools ]; 38 37 39 - buildInputs = [ 40 - qtscript 41 - kconfig 42 - kcrash 43 - kdbusaddons 44 - kdelibs4support 45 - kdoctools 46 - kguiaddons 47 - kiconthemes 48 - kinit 49 - khtml 50 - kparts 51 - ktexteditor 52 - kwindowsystem 53 - poppler 54 - ]; 55 - 56 - postInstall = '' 57 - wrapQtProgram "$out/bin/kile" 58 - ''; 38 + buildInputs = [ 39 + kconfig 40 + kcrash 41 + kdbusaddons 42 + kdelibs4support 43 + kdoctools 44 + kguiaddons 45 + kiconthemes 46 + kinit 47 + khtml 48 + kparts 49 + ktexteditor 50 + kwindowsystem 51 + poppler 52 + qtscript 53 + ]; 59 54 60 - meta = { 61 - description = "Kile is a user friendly TeX/LaTeX authoring tool for the KDE desktop environment"; 62 - homepage = https://www.kde.org/applications/office/kile/; 63 - maintainers = with lib.maintainers; [ fridh ]; 64 - license = lib.licenses.gpl2Plus; 65 - }; 55 + meta = { 56 + description = "Kile is a user friendly TeX/LaTeX authoring tool for the KDE desktop environment"; 57 + homepage = https://www.kde.org/applications/office/kile/; 58 + maintainers = with lib.maintainers; [ fridh ]; 59 + license = lib.licenses.gpl2Plus; 60 + }; 61 + }; 62 + in 63 + kdeWrapper unwrapped 64 + { 65 + targets = [ "bin/kile" ]; 66 + paths = [ konsole.unwrapped ]; 66 67 }
+5 -4
pkgs/applications/gis/qgis/default.nix
··· 1 1 { stdenv, fetchurl, gdal, cmake, qt4, flex, bison, proj, geos, xlibsWrapper, sqlite, gsl 2 2 , qwt, fcgi, pythonPackages, libspatialindex, libspatialite, qscintilla, postgresql, makeWrapper 3 + , qjson, qca2, txt2tags 3 4 , withGrass ? false, grass 4 5 }: 5 6 6 7 stdenv.mkDerivation rec { 7 - name = "qgis-2.10.1"; 8 + name = "qgis-2.16.1"; 8 9 9 10 buildInputs = [ gdal qt4 flex bison proj geos xlibsWrapper sqlite gsl qwt qscintilla 10 - fcgi libspatialindex libspatialite postgresql ] ++ 11 + fcgi libspatialindex libspatialite postgresql qjson qca2 txt2tags ] ++ 11 12 (stdenv.lib.optional withGrass grass) ++ 12 - (with pythonPackages; [ numpy psycopg2 ]) ++ [ pythonPackages.qscintilla ]; 13 + (with pythonPackages; [ numpy psycopg2 requests2 ]) ++ [ pythonPackages.qscintilla ]; 13 14 14 15 nativeBuildInputs = [ cmake makeWrapper ]; 15 16 ··· 24 25 25 26 src = fetchurl { 26 27 url = "http://qgis.org/downloads/${name}.tar.bz2"; 27 - sha256 = "79119b54642edaffe3cda513531eb7b81913e013954a49c6d3b21c8b00143307"; 28 + sha256 = "4a526cd8ae76fc06bb2b6a158e86db5dc0c94545137a8233cd465ef867acdc8b"; 28 29 }; 29 30 30 31 cmakeFlags = stdenv.lib.optional withGrass "-DGRASS_PREFIX7=${grass}/${grass.name}";
+34
pkgs/applications/misc/moonlight-embedded/default.nix
··· 1 + { stdenv, fetchgit, cmake, perl 2 + , alsaLib, libevdev, libopus, libudev, SDL2 3 + , ffmpeg, pkgconfig, xorg, libvdpau, libpulseaudio, libcec 4 + , curl, expat, avahi, enet, libuuid 5 + }: 6 + 7 + stdenv.mkDerivation rec { 8 + name = "moonlight-embedded-${version}"; 9 + version = "2.2.1"; 10 + 11 + # fetchgit used to ensure submodules are available 12 + src = fetchgit { 13 + url = "git://github.com/irtimmer/moonlight-embedded"; 14 + rev = "refs/tags/v${version}"; 15 + sha256 = "0m1114dsz44rvq402b4v5ib2cwj2vbasir0l8vi0q5iymwmsvxj4"; 16 + }; 17 + 18 + outputs = [ "out" "doc" ]; 19 + 20 + nativeBuildInputs = [ cmake perl ]; 21 + buildInputs = [ 22 + alsaLib libevdev libopus libudev SDL2 23 + ffmpeg pkgconfig xorg.libxcb libvdpau libpulseaudio libcec 24 + xorg.libpthreadstubs curl expat avahi enet libuuid 25 + ]; 26 + 27 + meta = with stdenv.lib; { 28 + description = "Open source implementation of NVIDIA's GameStream"; 29 + homepage = https://github.com/irtimmer/moonlight-embedded; 30 + license = licenses.gpl3; 31 + maintainers = [ maintainers.globin ]; 32 + platforms = platforms.linux; 33 + }; 34 + }
+40 -43
pkgs/applications/misc/yakuake/3.0.nix
··· 1 - { stdenv 1 + { kdeDerivation 2 2 , lib 3 3 , fetchurl 4 - , cmake 5 - , extra-cmake-modules 4 + , kdoctools 5 + , kdeWrapper 6 + , ecm 6 7 , karchive 7 8 , kcrash 8 9 , kdbusaddons ··· 14 15 , konsole 15 16 , kparts 16 17 , kwindowsystem 17 - , makeQtWrapper 18 - 19 18 }: 20 19 21 20 let 22 - pname = "yakuake"; 23 - version = "3.0.2"; 24 - in 25 - stdenv.mkDerivation rec { 26 - name = "${pname}-${version}"; 21 + unwrapped = let 22 + pname = "yakuake"; 23 + version = "3.0.2"; 24 + in kdeDerivation rec { 25 + name = "${pname}-${version}"; 27 26 28 - src = fetchurl { 29 - url = "http://download.kde.org/stable/${pname}/${version}/src/${name}.tar.xz"; 30 - sha256 = "0vcdji1k8d3pz7k6lkw8ighkj94zff2l2cf9v1avf83f4hjyfhg5"; 31 - }; 27 + src = fetchurl { 28 + url = "http://download.kde.org/stable/${pname}/${version}/src/${name}.tar.xz"; 29 + sha256 = "0vcdji1k8d3pz7k6lkw8ighkj94zff2l2cf9v1avf83f4hjyfhg5"; 30 + }; 32 31 33 - buildInputs = [ 34 - cmake 35 - extra-cmake-modules 36 - karchive 37 - kcrash 38 - kdbusaddons 39 - ki18n 40 - kiconthemes 41 - knewstuff 42 - knotifications 43 - knotifyconfig 44 - kparts 45 - kwindowsystem 46 - ]; 32 + buildInputs = [ 33 + karchive 34 + kcrash 35 + kdbusaddons 36 + ki18n 37 + kiconthemes 38 + knewstuff 39 + knotifications 40 + knotifyconfig 41 + kparts 42 + kwindowsystem 43 + ]; 47 44 48 - nativeBuildInputs = [ 49 - extra-cmake-modules 50 - makeQtWrapper 51 - ]; 45 + nativeBuildInputs = [ 46 + ecm kdoctools 47 + ]; 52 48 53 - propagatedUserEnvPkgs = [ 54 - konsole 55 - ]; 49 + meta = { 50 + homepage = https://yakuake.kde.org; 51 + description = "Quad-style terminal emulator for KDE"; 52 + maintainers = with lib.maintainers; [ fridh ]; 53 + }; 54 + }; 56 55 57 - postInstall = '' 58 - wrapQtProgram "$out/bin/yakuake" 59 - ''; 60 56 61 - meta = { 62 - homepage = https://yakuake.kde.org; 63 - description = "Quad-style terminal emulator for KDE"; 64 - maintainers = with lib.maintainers; [ fridh ]; 65 - }; 57 + in 58 + kdeWrapper unwrapped 59 + { 60 + targets = [ "bin/yakuake" ]; 61 + paths = [ konsole.unwrapped ]; 66 62 } 63 +
+183 -183
pkgs/applications/networking/browsers/firefox-bin/sources.nix
··· 4 4 # ruby generate_sources.rb 46.0.1 > sources.nix 5 5 6 6 { 7 - version = "47.0.1"; 7 + version = "48.0"; 8 8 sources = [ 9 - { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-i686/ach/firefox-47.0.1.tar.bz2"; locale = "ach"; arch = "linux-i686"; sha512 = "a5391e45d1e59a7c14d8d421286033e3e760bf2b4afddfec3d1767b2ebc957b053c39f17f8185a6c9ca2542c76f6c9612d95d474c01bd5ecc62e5d4f4e43e8df"; } 10 - { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-x86_64/ach/firefox-47.0.1.tar.bz2"; locale = "ach"; arch = "linux-x86_64"; sha512 = "48681328033b694adfc6149bd965a3dff90ef014db6f65641ddd3d79ba7901604623735555bad024dc2425f226c65e332a0875d6b18fe1c06b18a1e407b70294"; } 11 - { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-i686/af/firefox-47.0.1.tar.bz2"; locale = "af"; arch = "linux-i686"; sha512 = "7757ba99ce9991f67a45d9a19615a93c0a1bf0e35d35c5fe653f04d47c068054c8d91327641a48cd20fb9531cd1e842066c0e6f2dd8b23bff216a9fc727ec84d"; } 12 - { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-x86_64/af/firefox-47.0.1.tar.bz2"; locale = "af"; arch = "linux-x86_64"; sha512 = "7e3d70da29aeb5fc81f5e6dc52a4b8f831813f8c025b1a105df631cc5b675905c82dae842459ad30c5257b74bd5654e9aec5dcfcdee93eb42443c45cda81138e"; } 13 - { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-i686/an/firefox-47.0.1.tar.bz2"; locale = "an"; arch = "linux-i686"; sha512 = "1051e1e3a6c25ba6b3aa4ce5adfdc60bcb3c612f3facd5edb702385ea8c0837cc53e95b064a424e0c055a56a11f3a54a7ba37e2ef35045c8cbb834aaec0f6327"; } 14 - { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-x86_64/an/firefox-47.0.1.tar.bz2"; locale = "an"; arch = "linux-x86_64"; sha512 = "27fb75ce402c0d47f8542d3d6d6992587e6ea0caaba2249e763f0f9c4f1d233b37a4b87ebb7e730d16704c7d2abab690660e409e721850875fc09deb0c433252"; } 15 - { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-i686/ar/firefox-47.0.1.tar.bz2"; locale = "ar"; arch = "linux-i686"; sha512 = "296e23fff265bcc08ec0f81608d50428181163d216fd896c80a1a8c31e95f243112aeedf3bbd96b1efbaa1d6d576a9bfc75e5fe8df434cbb74bb9576f7d90a83"; } 16 - { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-x86_64/ar/firefox-47.0.1.tar.bz2"; locale = "ar"; arch = "linux-x86_64"; sha512 = "15f0e7cbf5a98ffa9d2d7befcb11938b76194dff29b1d93ddcbb8f5c655ef33659534874a72aea18f98af06e5fa4392aee5412582ef43292d70603dff2c42c60"; } 17 - { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-i686/as/firefox-47.0.1.tar.bz2"; locale = "as"; arch = "linux-i686"; sha512 = "67883c8cb7ffb6c05288b316b2aa5bc3274372dd82ab4c771fcf1e5a968e550d12c89027440704d8479a906beeef24a18ca72ad243628a5ece45918ed990c793"; } 18 - { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-x86_64/as/firefox-47.0.1.tar.bz2"; locale = "as"; arch = "linux-x86_64"; sha512 = "f7718b0dc9bcbfd109591f87263d7791dcd7612b0312d0bf93e68b1f2014d3732dc6740c57a8e64dfc1af7946da14dde617945e38842eb19cfe39376cb12ad44"; } 19 - { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-i686/ast/firefox-47.0.1.tar.bz2"; locale = "ast"; arch = "linux-i686"; sha512 = "f29b883932752bfa947c48f7c1ff6084b1cf215ea84cf63beaea808702b0b90f50e85aa4cefa4d2c1234b0d366c8f6e3d8fdf7a0f92d432cba790adab6d24174"; } 20 - { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-x86_64/ast/firefox-47.0.1.tar.bz2"; locale = "ast"; arch = "linux-x86_64"; sha512 = "8b656c6b08640c125b94f90e1dc8259c90af2e764cee73b02b9dc3c0246b3195906d9208bc2a6b3ca31091d8cdfca8338fa6c489b7caa5685a23133e98847a39"; } 21 - { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-i686/az/firefox-47.0.1.tar.bz2"; locale = "az"; arch = "linux-i686"; sha512 = "5ee1247e37964274bbea8021c8e4e5116fedca95712fbd91d709c5c580bd1618c6319cae73278b2f0ba82031e94bd3fb382d2b4dcfc9a5d7ad47ecd80f4fca43"; } 22 - { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-x86_64/az/firefox-47.0.1.tar.bz2"; locale = "az"; arch = "linux-x86_64"; sha512 = "c369046c29dd0dfcf40e69e1f5b5a63423833a376d2b143d3fbf2ee1e23dedb3baf24843ba1178bda94b86f357724898a147d4adfac1e469cbf44166d7ffd16c"; } 23 - { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-i686/be/firefox-47.0.1.tar.bz2"; locale = "be"; arch = "linux-i686"; sha512 = "f8a1ab05b8d25a7a30e755a551f0851a308ba0720180685f6946a510363988717f8274ac2c8ef826c60232a62c394b86829d289e7d74e24b7656b55238129b15"; } 24 - { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-x86_64/be/firefox-47.0.1.tar.bz2"; locale = "be"; arch = "linux-x86_64"; sha512 = "df05271371de5fa25ec11164eaac0b253bc892749d421a6ca730dfeceb4ef89492c42ce83a87eccbe91cb03ab001bf0a1d9a20a7296b69841cab8c6b5d2acc36"; } 25 - { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-i686/bg/firefox-47.0.1.tar.bz2"; locale = "bg"; arch = "linux-i686"; sha512 = "80644b86f9296b708e74843a51f81d368e3508f0f2f74de1a998d30a15f6e3af08ffd70dcc5c79adb76c03be9ff4713fc8403b8433cbc33ca3493941c4fb2fe0"; } 26 - { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-x86_64/bg/firefox-47.0.1.tar.bz2"; locale = "bg"; arch = "linux-x86_64"; sha512 = "0e6cdc5b3cc706031c95a550b0c800c9e8e2d7bf241010c22f0872eca4bab018a5f0d4a94abb4f8291c279476700f2101a69ac0c57ae79994fba38b88b00fddb"; } 27 - { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-i686/bn-BD/firefox-47.0.1.tar.bz2"; locale = "bn-BD"; arch = "linux-i686"; sha512 = "4c697f1dcd68634e2ab712d4f2415e57cf8be0017fff3602223d8af19a1f3a5c973489d13951baaab95924fad42212a485fdff622d2b559be36e246c8a847b67"; } 28 - { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-x86_64/bn-BD/firefox-47.0.1.tar.bz2"; locale = "bn-BD"; arch = "linux-x86_64"; sha512 = "1931035a9d92dd9246a00b32443e282dc405096407a4feff7856125b7ee156840114c9be0dd58a020c250fa54c4ccb22052d2be291eeec9b5f76303fdf6c4cc5"; } 29 - { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-i686/bn-IN/firefox-47.0.1.tar.bz2"; locale = "bn-IN"; arch = "linux-i686"; sha512 = "fbab6f7e4205c803a50990624d58aa80cfd3aa76fed02cbf9ea390f4ecdcc1a97bda9b51791cec49f2a7e1010109d5f81a1c9b6ac224f1f70df49407df5f7386"; } 30 - { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-x86_64/bn-IN/firefox-47.0.1.tar.bz2"; locale = "bn-IN"; arch = "linux-x86_64"; sha512 = "c705ec8356796060c6782261086011bc0bf3ac9f08bc821ce2305c9aac11c522abb802a9d9ab7dcb53b0d38468bb6e667d45b187355d769acb43a8b252c4f400"; } 31 - { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-i686/br/firefox-47.0.1.tar.bz2"; locale = "br"; arch = "linux-i686"; sha512 = "c58cd77139a0ae7f3bb8f6f25c40856aca18a831c8f5d6f5d59a45ec615420bd55205093fb66a77591835b0d9493f774b1801a168b9c071086d510a1446cc914"; } 32 - { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-x86_64/br/firefox-47.0.1.tar.bz2"; locale = "br"; arch = "linux-x86_64"; sha512 = "b6bde26d478eac081007ef43a6d588f70dc4d54afc423b019468dc91bfcb117d3b4989c4cbb4cf77a1a11847a58ec74fbf822b6e6f0ef86fdb0065c301294850"; } 33 - { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-i686/bs/firefox-47.0.1.tar.bz2"; locale = "bs"; arch = "linux-i686"; sha512 = "16ee40d079996f42be77167b73645d389045648c9d36b76e34d0398c7b5b6dee54712d109f93d054236ac7076fc3edb06ee82acae40ad22825a23d92d0e2c636"; } 34 - { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-x86_64/bs/firefox-47.0.1.tar.bz2"; locale = "bs"; arch = "linux-x86_64"; sha512 = "ef674f409df5c32fe4584f9de65cc6558d6b3ec78d8a83f5cec829bc1ae09f30399567915e32584334704d12264c2592fecc9e4952beabc8b0d4eb49a7186854"; } 35 - { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-i686/ca/firefox-47.0.1.tar.bz2"; locale = "ca"; arch = "linux-i686"; sha512 = "fe522bd836c82cb68bb21ad1c7f36bd9a7af1642abf7c035e2d0999b4cc07c58124e4d8de81344598036159102ee12f22c12e44a8a087e54d6c661c3f453b63e"; } 36 - { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-x86_64/ca/firefox-47.0.1.tar.bz2"; locale = "ca"; arch = "linux-x86_64"; sha512 = "b618da984d35fbde3819d101c103d8d9a5a4de98f0e254c67e894656019ebb6adc56e14a57410a61430d9aa9c1e0a01339b39a5272164af372544f27329a1644"; } 37 - { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-i686/cak/firefox-47.0.1.tar.bz2"; locale = "cak"; arch = "linux-i686"; sha512 = "82659aa2fbd091224aef6800b3df1d2e5141b6a295918e4fc4ea09b671184f62c670e3dedd7040b2f167581b0c8a0e8799d861256b273b01b2455d0937722273"; } 38 - { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-x86_64/cak/firefox-47.0.1.tar.bz2"; locale = "cak"; arch = "linux-x86_64"; sha512 = "a507cff511c6337f805a27c0f73548342d2fb2cffa683874d66b054b844b17c354cc6da5c3d15618006c2279099b0cd9172b17d9d4b21a3863b5e395db686b22"; } 39 - { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-i686/cs/firefox-47.0.1.tar.bz2"; locale = "cs"; arch = "linux-i686"; sha512 = "9af91acffc2beeb53280a6cbd21656a91a686c03342fad90dd91314c49535acef1a8abac8fe54bcfc250ca8b8f07e3550c890094f3bcee6baece983cec68bd8a"; } 40 - { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-x86_64/cs/firefox-47.0.1.tar.bz2"; locale = "cs"; arch = "linux-x86_64"; sha512 = "c8bea48dc11c021fff9df5ee1a67a6b6e9193ffb2a07e17014d7448254d8a8f4d1512f862ea73bf84dc15b40edbba3fd94cd3d2d18872255bbfc7fa9a7b8ec29"; } 41 - { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-i686/cy/firefox-47.0.1.tar.bz2"; locale = "cy"; arch = "linux-i686"; sha512 = "7cc062c3b9b4bbfd0b1f7247f06505ae99458514b607d4d9062836085798bab7ade6c4d1c8903b1b961243c6fb6adb4c4f94780f1194f745cf62d786e2c4f5c6"; } 42 - { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-x86_64/cy/firefox-47.0.1.tar.bz2"; locale = "cy"; arch = "linux-x86_64"; sha512 = "abafa600b941e17f8aea0e778a937f5fb34cbc8803c93e59febc5d9fde6ad3347ba0bc7aa07ab57a61f6b9d6b11d582b987100364aa8401bca539dc6e14584e3"; } 43 - { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-i686/da/firefox-47.0.1.tar.bz2"; locale = "da"; arch = "linux-i686"; sha512 = "d4a9141779f52b78a51b9682b6b44e5ccffdecf5582358ab8a02efe133d9a52023e03c238e106a79e41a8aeaabcc58e0757c1af66837768e7bf4732f26182915"; } 44 - { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-x86_64/da/firefox-47.0.1.tar.bz2"; locale = "da"; arch = "linux-x86_64"; sha512 = "48f0c48aa273cec9830bf806330c7a630185262838007628acad904a45b3186450a8973938c36db636bdef9042c78ce94a4a456e1682ef561abaabab6ac20863"; } 45 - { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-i686/de/firefox-47.0.1.tar.bz2"; locale = "de"; arch = "linux-i686"; sha512 = "01675b3a8ecfa10da1d101cba36295b226b130e1cdb2c760541cd76c9b21436ae84ca7228e063402b1ca2eb59acadcac7720c9dd47db8b406675fb273af206c6"; } 46 - { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-x86_64/de/firefox-47.0.1.tar.bz2"; locale = "de"; arch = "linux-x86_64"; sha512 = "6a7ef802a8109f58504b2accb9ef0ee38986f6c8980e0831c30b470f2ee768169557cdbde1a58d7c72996b27596e553185ded476cecdd7114b75d82428b7846e"; } 47 - { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-i686/dsb/firefox-47.0.1.tar.bz2"; locale = "dsb"; arch = "linux-i686"; sha512 = "55528fca4d276b2b0430949686845e3d7d88975129c9a9846408f758b4f9c8f154425db891e5c1930197e36137d6c15ba29de90dad624bad23090015849d0ab5"; } 48 - { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-x86_64/dsb/firefox-47.0.1.tar.bz2"; locale = "dsb"; arch = "linux-x86_64"; sha512 = "f21c14a57f6f973be824340fcd417ce03765d5826114462f62adbd933661bccbfbe90b66935083619c62d48401c511830574ccc373ca2110093b06fad59734ff"; } 49 - { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-i686/el/firefox-47.0.1.tar.bz2"; locale = "el"; arch = "linux-i686"; sha512 = "ac5a808db1ba68286a7199eef33794f7aeeafa26e97a20738fb21be479462bcaeb1e8a7995720d5c7dcaadd0cebe91bb2a3e019873d0cf74f42838f7d5c1a427"; } 50 - { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-x86_64/el/firefox-47.0.1.tar.bz2"; locale = "el"; arch = "linux-x86_64"; sha512 = "c02e6587d99fc3ca66debe854c778a8b3dbf9b514e6ed74fa15e3035a54643b2bc324ff59f1705c6bd392c37ad1996f80dbabbb57df10aff954ed0ff3f5b01d5"; } 51 - { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-i686/en-GB/firefox-47.0.1.tar.bz2"; locale = "en-GB"; arch = "linux-i686"; sha512 = "c458c70db0408d627a904781adc9af18011f243689f4c5a606c8f1508b4e9417a8df499673c4ba56d32ea77d0f79ab85ff88852f7c518e7fd124e5970615b2f9"; } 52 - { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-x86_64/en-GB/firefox-47.0.1.tar.bz2"; locale = "en-GB"; arch = "linux-x86_64"; sha512 = "28ccaebc4f7613d7ea8c3b47504923f2d59bdf4afd6e386a67dcb6b6923a9374c1c783e4f904da0b6e0f716ec87a046fc12f3781b732389d1d680745d6955c58"; } 53 - { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-i686/en-US/firefox-47.0.1.tar.bz2"; locale = "en-US"; arch = "linux-i686"; sha512 = "e1ea34bd0829656c04c471b66d2013fc07cbd5cf40b47bf3a932326cca71f9a502c52d1d5e6dd902d274d307079475b0e75d7ff552fcb2fadf31b2883efba79e"; } 54 - { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-x86_64/en-US/firefox-47.0.1.tar.bz2"; locale = "en-US"; arch = "linux-x86_64"; sha512 = "a56b2ad26df424f008d96968a4e6a10406694b33f42d962f19dff1a0bcdf261bca5dd0e5c6f3af32d892c3268da5ebee8ce182090f04f8480d37d232ccd23b9f"; } 55 - { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-i686/en-ZA/firefox-47.0.1.tar.bz2"; locale = "en-ZA"; arch = "linux-i686"; sha512 = "d5efc3d4e624f34c81df068f4d6c184cb8a63ad0667695e9ce7099e069b23715eb77cf2004adee41bf355452179959e5ef7450f167f87be70339abb4cf70844a"; } 56 - { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-x86_64/en-ZA/firefox-47.0.1.tar.bz2"; locale = "en-ZA"; arch = "linux-x86_64"; sha512 = "859730132549691b61e936813f0f5fd3e62f3ef6fa9899e3f68bd3178b7438b4c6b49f54f00d4898b568d6abccdd55a0f9fc6c51858e95735fefcc13de460d73"; } 57 - { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-i686/eo/firefox-47.0.1.tar.bz2"; locale = "eo"; arch = "linux-i686"; sha512 = "8ef290bf1eb3504ace393b32c2da64d14435edc327c4f13a40cd925efaf7e042a03b6877689b3f2290f85625410a4e48dfb2cf676f138fdba87ffc597b25f4b6"; } 58 - { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-x86_64/eo/firefox-47.0.1.tar.bz2"; locale = "eo"; arch = "linux-x86_64"; sha512 = "7d6167749d2a57a9c12180302a825fee14555e9050b6be3c83dd35183678bc36e10391cedcc864ca0dd96d297997a68627dc4fc1a9cd8922e789dcfa814f18eb"; } 59 - { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-i686/es-AR/firefox-47.0.1.tar.bz2"; locale = "es-AR"; arch = "linux-i686"; sha512 = "07768e3b3ed903f4327881a132f192a65842a376eeca6d10ec0de69fefb4ddf3d7fee2a704bbc8d229c78556478814d9e53940cca9edee58270d9790d6b76998"; } 60 - { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-x86_64/es-AR/firefox-47.0.1.tar.bz2"; locale = "es-AR"; arch = "linux-x86_64"; sha512 = "cac021af09abd742273dc77291fb1528dd5d6d38cef3a5e36e615fbb9f3908655fdc96ceb93fd131c4879acf24e702a044471136e7575f3b550ebcecd982047e"; } 61 - { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-i686/es-CL/firefox-47.0.1.tar.bz2"; locale = "es-CL"; arch = "linux-i686"; sha512 = "e92ce6bec5b1ee8cf3db0a604eb4cae6245fb6d04a48eec64b6dd55139f3606cbbcb65511e29a3164d6572929b7216afbaa7f034a2191eba100ecb7403740504"; } 62 - { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-x86_64/es-CL/firefox-47.0.1.tar.bz2"; locale = "es-CL"; arch = "linux-x86_64"; sha512 = "98e57146481a53061c0b30872290ecabc2d14c73805a9461d82aaaf4cf9f301521fd55b01c8159c09a56f52a1580d83c9527986b1390f496d0fbd11227216e7f"; } 63 - { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-i686/es-ES/firefox-47.0.1.tar.bz2"; locale = "es-ES"; arch = "linux-i686"; sha512 = "c44df66e140ea9190112f89aedff9519b6bee18f5e2b54aea19acd233e623c299aecf134cdba70d366fcaf6b7795d220052ff75409c7a04394a7aa02d9ea708e"; } 64 - { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-x86_64/es-ES/firefox-47.0.1.tar.bz2"; locale = "es-ES"; arch = "linux-x86_64"; sha512 = "c2d70bc5a304df7b2484c8fb2b374f8e31a69049eb223a53dbd0e4b51e4ccce907efb1674eb637370ce7c3947ba5c09e65f433d10e0f328b80d482f3de9cae12"; } 65 - { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-i686/es-MX/firefox-47.0.1.tar.bz2"; locale = "es-MX"; arch = "linux-i686"; sha512 = "96dcb75cffeb85b85f092e295e38ee55c272714c40609ca90cfaac5fa0cfdb3efe8e993319ee690b4a7938c42346bf39f063ab1f3db606e743c1e4720de5a93f"; } 66 - { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-x86_64/es-MX/firefox-47.0.1.tar.bz2"; locale = "es-MX"; arch = "linux-x86_64"; sha512 = "60b50d6726b2e1985564bc02263eb88c9b4c1bb39e6d19812ecc6751d6ad223ba04f65a7755a946fb15dceab90628b057bda89c55fdd4972604586f52c5a4b1c"; } 67 - { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-i686/et/firefox-47.0.1.tar.bz2"; locale = "et"; arch = "linux-i686"; sha512 = "0a4bef2277f729c93db413b68f8263eb356f7b3278880574b8ebe010e2db9067b803967e1f0d6912f128a9ad5ef204466f52ae277f3addfb8fe9ac377c3b8a3a"; } 68 - { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-x86_64/et/firefox-47.0.1.tar.bz2"; locale = "et"; arch = "linux-x86_64"; sha512 = "ed1bd4fd67262958601f1107edc589bb28e9b7f9faf0edebdcaf0c07ec6007f527a9eab434582a65271a8f68edac8178601da54eab9398f48b31126657a21b0b"; } 69 - { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-i686/eu/firefox-47.0.1.tar.bz2"; locale = "eu"; arch = "linux-i686"; sha512 = "8c5c9406345e2a1fca3544aeb742dc0d254c804d887e3614613280c050a63b69320d4488b017ee16b0a2a07bea862e8b245baf7edc9df65689d509986f3c5958"; } 70 - { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-x86_64/eu/firefox-47.0.1.tar.bz2"; locale = "eu"; arch = "linux-x86_64"; sha512 = "d8f7004e24033f377391b577c549b66f73cf0e899ce5f580eaccd07713ec03b4362db7b222ce6345d113641d3e6a951302939bbb155c47ec0fa46a201a631427"; } 71 - { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-i686/fa/firefox-47.0.1.tar.bz2"; locale = "fa"; arch = "linux-i686"; sha512 = "f4e02737e20b6ffd3bc2b3a5e5fa59fc80a8e37dc8459ad4a6b99e7621a4d3f360884915f7136dc201830efe371de37977ef3e27f34f84e2cb734c1fff8f6e36"; } 72 - { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-x86_64/fa/firefox-47.0.1.tar.bz2"; locale = "fa"; arch = "linux-x86_64"; sha512 = "8f624b066faa39341b750dbb702dd60ee6ad75b3850c659dac2e21969ebed1f792423e9fb0a9cae7fc456943020f9a0155af5d7c596433eedaaa9990ce07b7d4"; } 73 - { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-i686/ff/firefox-47.0.1.tar.bz2"; locale = "ff"; arch = "linux-i686"; sha512 = "22a2c5376b1e8d770659475085d98ac1f1020cd816ff3ec6ccfcd68f2484b1b0dc25bb84ca52f4ad27144f4da356ce5e7fd54411d12ae7c852064509470d5828"; } 74 - { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-x86_64/ff/firefox-47.0.1.tar.bz2"; locale = "ff"; arch = "linux-x86_64"; sha512 = "bcb3dabc250045b8ad444219055fd9d14902296ef3f9c320bec1bef940f84eeb0d4a50249805188ae96ed0288a70f0216350ee79191beba49aeba890ae515b41"; } 75 - { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-i686/fi/firefox-47.0.1.tar.bz2"; locale = "fi"; arch = "linux-i686"; sha512 = "0c505a0e1d3030038b61ea159eece3892bcc7d947b6d7010c0be8791525c9d91ad1170d4cb45260584c93a78a4bc831b7acd9f28e95ae62e5b96b31745dcbe50"; } 76 - { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-x86_64/fi/firefox-47.0.1.tar.bz2"; locale = "fi"; arch = "linux-x86_64"; sha512 = "f347cde005c6b61366c633db5a8cbc5260dfa0d68230a938d847e3f80bff2f1bed09dddded7b1728f4ef9525610ecd046743f9e71eefb467943fe6b72ed198ca"; } 77 - { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-i686/fr/firefox-47.0.1.tar.bz2"; locale = "fr"; arch = "linux-i686"; sha512 = "8fb8ea2eab82740657a6b822b330fa0c289c31ad900683b4ad07b1e9b0c6c4e14f50af39d6d0f787642010628800b0a99b5ab0c4cad62e4a579390509b1ddd13"; } 78 - { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-x86_64/fr/firefox-47.0.1.tar.bz2"; locale = "fr"; arch = "linux-x86_64"; sha512 = "ae79c5b7f9f8305c3631f4f913baa341a9beaa7a2ee5df1c6c1826030c21bf22b92095ee579affb8911110bf3bcc359793c0beca18d4c32b1fcc1f3d1dbcc4b9"; } 79 - { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-i686/fy-NL/firefox-47.0.1.tar.bz2"; locale = "fy-NL"; arch = "linux-i686"; sha512 = "1c57d02fdc33ff53de48ed9aa9e89ecd5a56d35b432d5651e71bbfbd5f9dfd18aeaf14d10b881f72df871afd00a12b31ff05cf9d5c5a55cd44a92c7a0156523d"; } 80 - { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-x86_64/fy-NL/firefox-47.0.1.tar.bz2"; locale = "fy-NL"; arch = "linux-x86_64"; sha512 = "f30f59d630c5d289b61dc7440f7bbb976eb16732370f827365a477090cdf9f2859f39afb7ff9d9be7e8a022f181f2aeb7a3005c00f4c14e6505a28db7ae48a9a"; } 81 - { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-i686/ga-IE/firefox-47.0.1.tar.bz2"; locale = "ga-IE"; arch = "linux-i686"; sha512 = "739d5feec4bffee67876227f6783d35675f4c0d168b7abbe5f97b6e8edce7fe4b8f04f8240087f7f208db4180f3417997b661c93ebe046decff3f4f4fecac839"; } 82 - { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-x86_64/ga-IE/firefox-47.0.1.tar.bz2"; locale = "ga-IE"; arch = "linux-x86_64"; sha512 = "cb4344df6e07db839ce8c9fffd1b7b310c8108b5218cea3602972806c1a40f56bf1355ede4cb3595f54179b16e3470e25bfbddc8e39d726c7d6c1e99d128ca8b"; } 83 - { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-i686/gd/firefox-47.0.1.tar.bz2"; locale = "gd"; arch = "linux-i686"; sha512 = "91004d62bb5f1f6a1d65b35fee9e594d21d9877669e042cb4c9a834b01b35797363e1433a9ce5a8d0a9f64c8b256da6a6d09fa3342b74b7c2af8ce8afb3e4e56"; } 84 - { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-x86_64/gd/firefox-47.0.1.tar.bz2"; locale = "gd"; arch = "linux-x86_64"; sha512 = "f04034cafed25c34713ffe4109e53b107b8fe81321c0c0c035f54ff0ce67ac393b42db7598edc658d3f026e447f9ff1c4d1cfdedd31066eefb6019117248e4c0"; } 85 - { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-i686/gl/firefox-47.0.1.tar.bz2"; locale = "gl"; arch = "linux-i686"; sha512 = "107bdebb92ce86f39cdc45d6bb24a9c4d104820eca6bb77950693ccbd55e7f8a2f143fc3a5bbb1bfda161e7a33c8f6d8d2686b09da1497215defbca2b4e4e109"; } 86 - { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-x86_64/gl/firefox-47.0.1.tar.bz2"; locale = "gl"; arch = "linux-x86_64"; sha512 = "c841af5c73343475150b5404b4b54396bda845aa5b231a742aa17ecb7fdbbc5cd4123efc3ac2ede1c24f485d04bd87e8bf7cb00b7135bef236ce56afa0c27a19"; } 87 - { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-i686/gn/firefox-47.0.1.tar.bz2"; locale = "gn"; arch = "linux-i686"; sha512 = "20954e218967772488bd895ebf069522c3f4c56ebfa09a7c8efb740158cb95b6be76cee8f4d7f2c1c6c505ca9071a0ddc1914784a54f669d337d5196f18b6f4a"; } 88 - { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-x86_64/gn/firefox-47.0.1.tar.bz2"; locale = "gn"; arch = "linux-x86_64"; sha512 = "aaed68f13e326792671669883b452b65556998ed757ed5b745c6453d6bae8865a06f137709de37ace2688e2e09f1b96ecf2e5b6374b4170d29100c6f83ce22ce"; } 89 - { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-i686/gu-IN/firefox-47.0.1.tar.bz2"; locale = "gu-IN"; arch = "linux-i686"; sha512 = "205093ecc0dfcddb2b90e05b1a17f75805a4597bbfad214d67442fd0d952f765b031ba63a3c399ba9c1c46e4d05b3cf786f01c46eb8990240a16431964c93a94"; } 90 - { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-x86_64/gu-IN/firefox-47.0.1.tar.bz2"; locale = "gu-IN"; arch = "linux-x86_64"; sha512 = "a84ec5015f6922a22a284eaca985010586067370d818e77d401b58782f86dcf2f534f1ef021719c170f1f502525ce25c94760d3b75481c15fade3c25b969b563"; } 91 - { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-i686/he/firefox-47.0.1.tar.bz2"; locale = "he"; arch = "linux-i686"; sha512 = "5727fc4699316c4b34be1c2596c5cc20d5fc9d2062b1e106087cdb34b788fe3ebbc098acc8c690bc83c9d9be59ac3b3977fd9116d766ce908aa088660fe34771"; } 92 - { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-x86_64/he/firefox-47.0.1.tar.bz2"; locale = "he"; arch = "linux-x86_64"; sha512 = "c399969bc24b10ca1c1eff17d3414f214cfe3e5b73282942ead5b2ba4d2c58b74d665b13031ccf42956cd45f0fc7b206dd2f9674103c1e3a8861a33577b5caa7"; } 93 - { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-i686/hi-IN/firefox-47.0.1.tar.bz2"; locale = "hi-IN"; arch = "linux-i686"; sha512 = "f014c47a143d425aa3452be2bbed199a8b5e75d278c35fa86bb6bcac40bfb32bdee22d030386c881c818b465451b35c81f97bf29f9ccfbea606d52c822057899"; } 94 - { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-x86_64/hi-IN/firefox-47.0.1.tar.bz2"; locale = "hi-IN"; arch = "linux-x86_64"; sha512 = "0e5dc0970680886dc02448d7118b6864092699fe44f3276ca17cba160aee59418f8e39338247897b118de0e1fb7634cf725ddc6a34a8b6f002b7a78d92deffb0"; } 95 - { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-i686/hr/firefox-47.0.1.tar.bz2"; locale = "hr"; arch = "linux-i686"; sha512 = "a9af43f6cf6f493f728b8942d3a600f3cb3a23eb0818d284ddabb8766f7d274aa0a232f9925b65625bb56d00864946dc6b0567491cbecdd6a7cf626b6964d9b1"; } 96 - { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-x86_64/hr/firefox-47.0.1.tar.bz2"; locale = "hr"; arch = "linux-x86_64"; sha512 = "d97951148ca0ba80a67020f323859ea3f508e40906ecfd18f7a8fbe7a2bc85ea4635945b5c6063e1d5d18456471604075e6767da9a4fda6a09dd3e992a7d3a88"; } 97 - { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-i686/hsb/firefox-47.0.1.tar.bz2"; locale = "hsb"; arch = "linux-i686"; sha512 = "2f7adccdc894f345e861b29a6d65909b1cde2649c69ec9223f784e659e8e3f4668f815b3683fe691de0749483167d26885a0199bee88e8524377c7eee3afbe99"; } 98 - { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-x86_64/hsb/firefox-47.0.1.tar.bz2"; locale = "hsb"; arch = "linux-x86_64"; sha512 = "70e39341ede01e18c653a0eb56b48e31c73ee3df54ebc11bcd220e2d8e19c67c3e248095c4d070b12a0eac5c24acf5a8ad83069673dcaa684229f4706103685e"; } 99 - { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-i686/hu/firefox-47.0.1.tar.bz2"; locale = "hu"; arch = "linux-i686"; sha512 = "1fc01c6dd873e2194e6196b1bdb0246e95d0b0520f558b21a2052251d2a5202141c09410c4631b3f025479169d8f68411c2a24f32825261fa8d65696fc7cbe0f"; } 100 - { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-x86_64/hu/firefox-47.0.1.tar.bz2"; locale = "hu"; arch = "linux-x86_64"; sha512 = "b4509d671d7eac055812add85ae571f52c90b4eeb172d21c22ce844c70192ba235f37a732e94a0edd6794ecd5a8caa5e8bb6ce05a26d3705902d3628420af871"; } 101 - { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-i686/hy-AM/firefox-47.0.1.tar.bz2"; locale = "hy-AM"; arch = "linux-i686"; sha512 = "a2b7cd1ec95a0b5eb064e816cfcfc6a74a92806772592947267c4b266bf7ce77d1beb17a7c25b905251cf497ca8dfabf16bca367cf6d9e9e635182f306bd71ca"; } 102 - { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-x86_64/hy-AM/firefox-47.0.1.tar.bz2"; locale = "hy-AM"; arch = "linux-x86_64"; sha512 = "9997ca45051e609e289d7730caf1254adacefbf8e618a165750d5bb7ff7933d014781af76501296c89a4236fd3ac477df6e6be5a5dd45f214983c851a856ce5a"; } 103 - { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-i686/id/firefox-47.0.1.tar.bz2"; locale = "id"; arch = "linux-i686"; sha512 = "bda5a7c599885bef966daa35a3f34297e38534e32967142ff9cc720a34c7aa9730e3f24623c240637838eca03f78f9b2ee30af3ac3dc8ba48f9664c56b64c789"; } 104 - { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-x86_64/id/firefox-47.0.1.tar.bz2"; locale = "id"; arch = "linux-x86_64"; sha512 = "97d16c5b4382c7fc6ccee416d671e47d345834a44ab111aa486a41c756b25eb894628d0128e8454fc15f38937bc40436b12e60752ce7b7c1fe35a230abaca337"; } 105 - { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-i686/is/firefox-47.0.1.tar.bz2"; locale = "is"; arch = "linux-i686"; sha512 = "576b904fb836ea735f652c6b9c91891dee164edd3523c5f99d68cccb4bd6689c29e4c579b6cc44e699a8900101fb8d223f9e0b0860f71a2814ae0ee2c70609e5"; } 106 - { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-x86_64/is/firefox-47.0.1.tar.bz2"; locale = "is"; arch = "linux-x86_64"; sha512 = "592d65977c34c6133f5745a85722f822efa5956bafc6e880954a0b318fa59712c754e882768755fc08f5e08a1c99493c0b30b4219c46169ba663258e3fd3f3fc"; } 107 - { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-i686/it/firefox-47.0.1.tar.bz2"; locale = "it"; arch = "linux-i686"; sha512 = "4d749e1b5d8432df789f29a247ab48a688d4aa16fb25dcf7209783c6036bfccb9ff8ac32dcd09dab1708f71896fa034576d6048eef077d1a6c0a3dc58d3cdb26"; } 108 - { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-x86_64/it/firefox-47.0.1.tar.bz2"; locale = "it"; arch = "linux-x86_64"; sha512 = "087c456d691225d9aef54b2013af69cc7bf2501f83060179112e9c40c1d6762202f68e6329a936df091a1ae6aa5f20bcc96a4c8b0451b71270426bddfb45d15c"; } 109 - { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-i686/ja/firefox-47.0.1.tar.bz2"; locale = "ja"; arch = "linux-i686"; sha512 = "cb4b0bbff7d322f2f04fdaa50b365d4e0a1ff1786206539cd124870ebd69a9305b88d39b9fbed41c64ddbe68098e02c51a0dc665262424f8eff882b1497ea1fd"; } 110 - { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-x86_64/ja/firefox-47.0.1.tar.bz2"; locale = "ja"; arch = "linux-x86_64"; sha512 = "b6c9b419a3e746957f93a4bdba9043adc3911b6f76e1eea2e4e31e77e9aa9057ce720205db4af5586a90df4d6b774b90829f1d7689e77c560c50ccae755400b9"; } 111 - { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-i686/kk/firefox-47.0.1.tar.bz2"; locale = "kk"; arch = "linux-i686"; sha512 = "ae7711d86ce8180997f44f9309a63a436bd8b70ed0dccda773c34ba816daae99b3b1ae913ee87f4d1f9a4e8f016aea670e89652823df16b5e8414bb58ac28225"; } 112 - { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-x86_64/kk/firefox-47.0.1.tar.bz2"; locale = "kk"; arch = "linux-x86_64"; sha512 = "49fb6b5ab6aa12535373927519bf36099da6fab7c2e1bcd6f5ce73d91679f58e81eddd3556df65b305fc2d1cd439cf6de081980fa98ff79df16b620ed41290fd"; } 113 - { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-i686/km/firefox-47.0.1.tar.bz2"; locale = "km"; arch = "linux-i686"; sha512 = "29dd1808c1430c01dbb395d5e5a833bfbde85453278d4efd32f1afa1eac19a651c0c3a42eb4ba3402f56a8492e80746d753986c0ec0f1a6dc0e5eb6778b5c6ae"; } 114 - { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-x86_64/km/firefox-47.0.1.tar.bz2"; locale = "km"; arch = "linux-x86_64"; sha512 = "f53966aed30b57a601152f09a26414e11bff4ff31683989eb1e47546eaa32fce8cbb6511043f9753cae076d23d6f2172c2b224313cf5f3262f109b49119175e5"; } 115 - { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-i686/kn/firefox-47.0.1.tar.bz2"; locale = "kn"; arch = "linux-i686"; sha512 = "17dc37df2b3d5a87bbadc4d5c80d4ddff03752b7a80f5c76171ce9f0bc4b8926964b6315cd4f0c6c9dd3142cec56b464503bde34ec3c69e2b8a66ddcae72b0ec"; } 116 - { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-x86_64/kn/firefox-47.0.1.tar.bz2"; locale = "kn"; arch = "linux-x86_64"; sha512 = "2af5ac5c254bd0ed2d08656a6fee7966d73aa89973cfad67fd18d7d88fd1f18a2b882de7854af46a3ebc6acba4cceacc06942db7ae495faa2c6ef21c65e94158"; } 117 - { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-i686/ko/firefox-47.0.1.tar.bz2"; locale = "ko"; arch = "linux-i686"; sha512 = "415fc260f3dcc2ede6c43194501d9522fdfb106f7c86e5d8f5929df6615c73023fffc3efd190deb68bf08bb2a0d4ab34f7605e222301c8350b980f2dbc289c8a"; } 118 - { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-x86_64/ko/firefox-47.0.1.tar.bz2"; locale = "ko"; arch = "linux-x86_64"; sha512 = "c991c0b9a89b618ac046882b929fd7e3689e19dd96edf4535b25f9172b6baaa801a4490ae4fd35e82ca3c776afab74a0a09b993f8ae8c2a603d210f2cf248f73"; } 119 - { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-i686/lij/firefox-47.0.1.tar.bz2"; locale = "lij"; arch = "linux-i686"; sha512 = "3cd367654397d14b782cea4ef8c96f1f6938f011576a8dba92dd4ca832ca3c8682f3e0e161a4288b112fca550d556080d0ece5a79e4c4f6ec99a9298feb6fa12"; } 120 - { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-x86_64/lij/firefox-47.0.1.tar.bz2"; locale = "lij"; arch = "linux-x86_64"; sha512 = "2d7475c544df807a956feb9361f889ba0f5e43dc52a9e1dc9c469d86e97f344b4f2995e3fa149a77662969f3acbcc998f430973b2b9d28b23c82c5058b4a9dfc"; } 121 - { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-i686/lt/firefox-47.0.1.tar.bz2"; locale = "lt"; arch = "linux-i686"; sha512 = "35c8a452ca845576739d5faa9dab6f3c34dcecf9ce95870f68699836f3534b4807c91fbe80007950abbbca662e6d01b406205b3e4cdf4d33e0717ea5d6f57006"; } 122 - { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-x86_64/lt/firefox-47.0.1.tar.bz2"; locale = "lt"; arch = "linux-x86_64"; sha512 = "8791df09d841d5ddabd552d0fb0dc7e9446d23092bae1010d92bc3b056a9ad4a6dad01c5d8db531a273945eaaf4c30c922cd03d7b17e1b6be263e0bcb91b8384"; } 123 - { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-i686/lv/firefox-47.0.1.tar.bz2"; locale = "lv"; arch = "linux-i686"; sha512 = "22b865a344a46096c53a72ff6b1402d00808bb3b49ecabe6f4115ea60e40e522d64afc701648772616fcb784a963bc6d5bb3f89517d7f8407f22fa82d81bad98"; } 124 - { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-x86_64/lv/firefox-47.0.1.tar.bz2"; locale = "lv"; arch = "linux-x86_64"; sha512 = "3c66af306b1a8d0a684c12511d95353c0bdda0bea981ce4e577c928be03e12b582b19dcaccdccec551b3cb0fb716323b1079180aa7a8f1204f5e4b5a84b72831"; } 125 - { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-i686/mai/firefox-47.0.1.tar.bz2"; locale = "mai"; arch = "linux-i686"; sha512 = "780fe423a3cd56a7452df32679ee07a0e328b21cadc78faa2721cec59185c4a4467aeeb75e9237cc86d38dfa2cd71530f02156c4fb9515582ca564dd53d47543"; } 126 - { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-x86_64/mai/firefox-47.0.1.tar.bz2"; locale = "mai"; arch = "linux-x86_64"; sha512 = "d27218b59edf004dc57cfa9ffd70dbeb59b7d3c0871b00388a56b505629fd82ddd6f6e0147f5b4c67a8ad72a674e384b66ba2f9455fa9ff218c9ada4b27d1d7d"; } 127 - { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-i686/mk/firefox-47.0.1.tar.bz2"; locale = "mk"; arch = "linux-i686"; sha512 = "da7ae3718f3c69ec9b62aaaea93951375d82d8d02818d6855fa9f085a64b69c155a1336585d786ae2d33d657110b787f62909dc9e4d54c62d2ea94d2fa8fee3e"; } 128 - { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-x86_64/mk/firefox-47.0.1.tar.bz2"; locale = "mk"; arch = "linux-x86_64"; sha512 = "95136f8bf86014a63bcbf4a5cfbd778c4c7e6a84618aa0f6a6948bb597638569b3702e0569b50c5dc9b46339e723377faea8964b921ae9802043fb7983a2c4e4"; } 129 - { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-i686/ml/firefox-47.0.1.tar.bz2"; locale = "ml"; arch = "linux-i686"; sha512 = "56743acb54283715fb2a910caa85dda61f7e2c1c5e012aa222dc07e3b522572500056fddf990b7ef03a175ff8901fb11b113bcad5c2adf4a6e6e032644ccca2f"; } 130 - { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-x86_64/ml/firefox-47.0.1.tar.bz2"; locale = "ml"; arch = "linux-x86_64"; sha512 = "134f35f5f6616c2a7eec48f637277fc02e23b57bf38eccff9777bb08c70a41fe79967b69567f75f9c8bcbad4b22d2ddaf16bec98e399c4b8ca9db9b70e99ef58"; } 131 - { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-i686/mr/firefox-47.0.1.tar.bz2"; locale = "mr"; arch = "linux-i686"; sha512 = "f29de7ae7dba03465baf86f93d778c9faf3055d50295977c0207c7e4daae6f7ad733ed38e1323263cebe4f737d9a1616024333a97139156470de1a9fe3c16276"; } 132 - { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-x86_64/mr/firefox-47.0.1.tar.bz2"; locale = "mr"; arch = "linux-x86_64"; sha512 = "731b4f143fd1303ab54ea3f1b6aca6c4f78ce935caae32fed0b8cdcd46c0ade8c8977131a3be786ea929a7d284c3d45d34851a0d81242761f722f0bceb126957"; } 133 - { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-i686/ms/firefox-47.0.1.tar.bz2"; locale = "ms"; arch = "linux-i686"; sha512 = "d372bac105f2012b189efedc449c7c183d0daf64cd7a40822ef9d685ce4a1550ca9699620440dd198b13f95513a577766e9f1a8e88b212492831bf7ffcac7e0a"; } 134 - { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-x86_64/ms/firefox-47.0.1.tar.bz2"; locale = "ms"; arch = "linux-x86_64"; sha512 = "1287f36a742fa834d5f31e6bc2f6d3651e54f2bc8845a1f0f647e9a9e38ba66c58138961185897c8832107cffff06167a35dc3ee1f0ff830f997f65fb0854a63"; } 135 - { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-i686/nb-NO/firefox-47.0.1.tar.bz2"; locale = "nb-NO"; arch = "linux-i686"; sha512 = "ac3e46080e188e56a6b67ff77aeffdba7982d7c3aa4156a6f2781ef6b8fe63cac50d678e5afc91aca4ad16c4384d2b2727f74ddc4083da91a1e3590ac98ec9d2"; } 136 - { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-x86_64/nb-NO/firefox-47.0.1.tar.bz2"; locale = "nb-NO"; arch = "linux-x86_64"; sha512 = "dca52381e45b5c2d89f590971d830010a9ec1a2a513fe655ee93c3fbd980adcea78787701595a95402bdb660c2f3e0a489e001deba13798337493655798c713a"; } 137 - { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-i686/nl/firefox-47.0.1.tar.bz2"; locale = "nl"; arch = "linux-i686"; sha512 = "6ec01f8eb18384aadb5715a996c8410ffa94b801ee1f1b1ab43bdeb492e179e781e8b85acbeff4a25cb4fef847ce3e2335968458d9f6e47d046083264e91f6f7"; } 138 - { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-x86_64/nl/firefox-47.0.1.tar.bz2"; locale = "nl"; arch = "linux-x86_64"; sha512 = "7d5840518312dd167d914a8f7fa5670fe17f9a6fc39ccd128e30f689005b35bd352d0602993713c3d05288f2b036829be8e08398d536e4aebf2341ae2290e633"; } 139 - { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-i686/nn-NO/firefox-47.0.1.tar.bz2"; locale = "nn-NO"; arch = "linux-i686"; sha512 = "a185f7592649a91214363cf2a0474b5895f33342c98cd4bdc48fafb0cc76310b2ba4f46575970d723c76b2ecfeba8e2b39d9671e6059a15bcb2565258096156c"; } 140 - { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-x86_64/nn-NO/firefox-47.0.1.tar.bz2"; locale = "nn-NO"; arch = "linux-x86_64"; sha512 = "7f8e7277bcbfbe5f40c161f1ebbeed86159c2b6205a5ea55cd8b6253fa6742bcfede11d4de6c1aba36e2b1e98f9c9a7b8e26f9aa35e1eaadc1d011636d429be3"; } 141 - { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-i686/or/firefox-47.0.1.tar.bz2"; locale = "or"; arch = "linux-i686"; sha512 = "a543a7d3f4e24364be7e4df65a81da82d955d1268a4cbce741ad7ddd5f4e9916573e271f02af1e92b123a4da2c7f312c17f6ce714e3057a1b204484ef12133d8"; } 142 - { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-x86_64/or/firefox-47.0.1.tar.bz2"; locale = "or"; arch = "linux-x86_64"; sha512 = "7672596470cd8f49f9c4558b05bd637af1650da729bc518681a8cde3ec785358121fa7ef209e123fca4b59df1a63878832bc32d2ff404b5d2a818b60ba10c15e"; } 143 - { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-i686/pa-IN/firefox-47.0.1.tar.bz2"; locale = "pa-IN"; arch = "linux-i686"; sha512 = "a99b60ae1eb479e31f838fd41d5de325c418762fdcfa5e0f3bc3d5da8df108d3b64ce5bfac0af09663007becf5327164db8dea0ea7a3876586cc43030a780199"; } 144 - { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-x86_64/pa-IN/firefox-47.0.1.tar.bz2"; locale = "pa-IN"; arch = "linux-x86_64"; sha512 = "f0110b74842f924808f74979061151fec711d10a6005d2da2fbb8d46fa2a25ecd5a2c804e58c10a918efe570d4d67d05578b0245f526e1aede4bbc786e9f304e"; } 145 - { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-i686/pl/firefox-47.0.1.tar.bz2"; locale = "pl"; arch = "linux-i686"; sha512 = "7eaa2bad351429d76b476819a1529ed1609388968327382cc13df235a294f2e9fb14295341ff15fe3b2815ffd1c6c8978e2aa104a847fd2cb4adcf2ae3b0b974"; } 146 - { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-x86_64/pl/firefox-47.0.1.tar.bz2"; locale = "pl"; arch = "linux-x86_64"; sha512 = "a40e2c15cff0e7f7bff8a5c0bc4cf39df948a21bd37b34ffc93dd87e1f5256526a25526e457fcfd8d081bc872dc1bec13e67da3cf671b6a16dfa17850be4743c"; } 147 - { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-i686/pt-BR/firefox-47.0.1.tar.bz2"; locale = "pt-BR"; arch = "linux-i686"; sha512 = "c9cd96e68fa2e1f73a49e71c287a25be8d45a8ebb56262e02c40ba5869fc58c7fc43a1f6958592bb377e7dd4064d64f5ebcbcb5cd3a9fe0a007c2da665f50a66"; } 148 - { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-x86_64/pt-BR/firefox-47.0.1.tar.bz2"; locale = "pt-BR"; arch = "linux-x86_64"; sha512 = "1184751c1d1a0a9044f8df2d20aee7dfe332dc5f851802ebaf2c5c83fa2bcccfd913cb6e16d2baa449cff1b02aa18f828489914c0741a2ef2a46d54fefecc268"; } 149 - { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-i686/pt-PT/firefox-47.0.1.tar.bz2"; locale = "pt-PT"; arch = "linux-i686"; sha512 = "86538057ae91b1297acc11c9bf3f7d24ba1950edead89d4733f7c898cf53e3848054bf391a975f19766b69f4c56f576ca54e4b8da806db7416f3e3d91777c3c3"; } 150 - { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-x86_64/pt-PT/firefox-47.0.1.tar.bz2"; locale = "pt-PT"; arch = "linux-x86_64"; sha512 = "0a480c26e5dfe2bb9b536e122ae32e18a6dac999004493839cb506c1ad615e095c554d296f1a77bfccbbb86b58bcf549db83f7de51d02b68d1eb752b421f23cc"; } 151 - { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-i686/rm/firefox-47.0.1.tar.bz2"; locale = "rm"; arch = "linux-i686"; sha512 = "751ffe931cd60296490c7164f49f61f4a51bac5210328a18d02261a07eb607e181b2bab4fa0b59d2df15334152386bf816a984840d2331b7e801171be9c90594"; } 152 - { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-x86_64/rm/firefox-47.0.1.tar.bz2"; locale = "rm"; arch = "linux-x86_64"; sha512 = "3e526c9a1a876e5d2c548c9a68803dd11c04c8214e18eb09c0b1c3fb3833f64c8a3362db8083ac5de81c59268439b53effa3bf1c64807fafc874eb8ed9baf188"; } 153 - { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-i686/ro/firefox-47.0.1.tar.bz2"; locale = "ro"; arch = "linux-i686"; sha512 = "73cf6a18deafb7ba93fd60cba3ba0bb0191471f977c41bac11bf2fd6cc6f7fd7cf2ad125ac5cf168ef577d71dfb0e893e182f39be6ad186ddc642d87c40041a5"; } 154 - { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-x86_64/ro/firefox-47.0.1.tar.bz2"; locale = "ro"; arch = "linux-x86_64"; sha512 = "b62c54b8694b4a662c1d336056d404a8d432ba0a3d4f2964b5c5acc0e39b668fd228105e1c4e307bfab1acfa5c3ce223db4229df01866cdbbc7c1ac95e70fe2c"; } 155 - { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-i686/ru/firefox-47.0.1.tar.bz2"; locale = "ru"; arch = "linux-i686"; sha512 = "6ebd3b3a1f3613905313129cde7cf113bdd777fd0f600496231ba813a95b04309b25016dd69891d31189a93ccad3f87b9c69d54d6219ad39dd38d1181b1f3102"; } 156 - { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-x86_64/ru/firefox-47.0.1.tar.bz2"; locale = "ru"; arch = "linux-x86_64"; sha512 = "539a22d13587cdcc21b6f76ff24ccfd1df98cbaaacac802aed46ba8f2bfed27cb2f3e5c146cbd2c3559aaff22297e692030b9612041a05a6bfca08f49bf0d2fb"; } 157 - { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-i686/si/firefox-47.0.1.tar.bz2"; locale = "si"; arch = "linux-i686"; sha512 = "bb0d1621f5b9af886fca0ea7cf7fd851d7c22d2d8f279a7b88e9bce98be33ad7b75d6a51ab47ea859802ed39b467815db60409285afaa0bbf4bb1ce6d590eabc"; } 158 - { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-x86_64/si/firefox-47.0.1.tar.bz2"; locale = "si"; arch = "linux-x86_64"; sha512 = "90337d193df7db41a1384856938bb62212952a80144dcc319a725a9b567ffd4deb7bb7af89b57891d3c17499ff466990e656edf7d0b017b8f4e0370aab445477"; } 159 - { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-i686/sk/firefox-47.0.1.tar.bz2"; locale = "sk"; arch = "linux-i686"; sha512 = "23a15e6ad5ce9b03c218be4e26e603a412de4d870d5f64b599ae511bfc66bf2cf04613cc06fc1a054d06b80435e284456c0b08e33f34d8c9482f5ca23da6ae62"; } 160 - { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-x86_64/sk/firefox-47.0.1.tar.bz2"; locale = "sk"; arch = "linux-x86_64"; sha512 = "a86cbed60f65e4ebb36c614d846fbb2515945112fd4f2482c3a63b49a62c3acb310f050dcbd57cc76a808c049eefd8f779d6aeea53362dd81798bb8d7177c86a"; } 161 - { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-i686/sl/firefox-47.0.1.tar.bz2"; locale = "sl"; arch = "linux-i686"; sha512 = "8ae008f0077081ef40de3bf08c2de294231f41439a83d8a41a485f53e95ba3f4fc6ef03d6ac98e8848c3f3dad290978f1607d8c847f1622bd86b7d38cd0be730"; } 162 - { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-x86_64/sl/firefox-47.0.1.tar.bz2"; locale = "sl"; arch = "linux-x86_64"; sha512 = "34efb560c65329c7f3f6b341cc49ac4952f24e6e9b34e7f5bd45d98618a4d03ac89c6f62580223efd2d37db24a03f76a54381d4162f5430b887122bb56eb49d9"; } 163 - { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-i686/son/firefox-47.0.1.tar.bz2"; locale = "son"; arch = "linux-i686"; sha512 = "d3e5a25fbc4a786239a7ae543fefb7b7e3ecc34192c8326af915f18b9b08436656bf68faa4953a34bdc464e32305baecce800f91ef0152bb4b4a8323ab448f33"; } 164 - { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-x86_64/son/firefox-47.0.1.tar.bz2"; locale = "son"; arch = "linux-x86_64"; sha512 = "ffee5d1a23e91911fd1dedb5ecf24bfc6b1733fb582e64a5e07d4df4b7afd9a6c502a70ab3af6624b4594f5ddcd81bc8962ede5b693cc035a96a561389f6bfca"; } 165 - { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-i686/sq/firefox-47.0.1.tar.bz2"; locale = "sq"; arch = "linux-i686"; sha512 = "1cbaf8c32d1d3205cd85127839eed11b416903960c9e411b9adc71c42ba4add47acddd32a9217bb68f27b90d6765892edf2d356e21235c5bfd5cf69d1ee719f9"; } 166 - { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-x86_64/sq/firefox-47.0.1.tar.bz2"; locale = "sq"; arch = "linux-x86_64"; sha512 = "16d93961a53ecc3e1ae3480be9e34f2a22dec2bdab55dbd35d1ea79ecf2ee48f195380bd52efc7d39529601610793b75daadeeb54dd76c9a3702c786af25acdd"; } 167 - { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-i686/sr/firefox-47.0.1.tar.bz2"; locale = "sr"; arch = "linux-i686"; sha512 = "0b2c5234f1787cd972fad398dc270766fbc3015dc1bba29755e5316f207af9f5787d4aa41e96cffd2c9d31c57a5d1896e63fcd04e6235a4a6798469e738fa10d"; } 168 - { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-x86_64/sr/firefox-47.0.1.tar.bz2"; locale = "sr"; arch = "linux-x86_64"; sha512 = "e7c7e7ff7fd81ca86f45997faed7244e4d807c3e5ad7ed66d6feb38c3e9173eaf136bd34af690ce28534f0c531c7f1d11595ec6502dfa42778cc19dee4334c49"; } 169 - { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-i686/sv-SE/firefox-47.0.1.tar.bz2"; locale = "sv-SE"; arch = "linux-i686"; sha512 = "dffb94b0ddb4b9d2effba3894b408c9f191f2079dc4b47e214347a235c9bf1adf77e520465691d14a274c3f3344c7f8b7d41965051d506728347e0af1117ad27"; } 170 - { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-x86_64/sv-SE/firefox-47.0.1.tar.bz2"; locale = "sv-SE"; arch = "linux-x86_64"; sha512 = "b601906d28f071c6beb3dbd6b37fa68f50809c9c47c9db69d631127ccc7b784e7d3b278aea6de060b34d83b6c78137da32b77f8e17ed199c3213b89dd9391264"; } 171 - { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-i686/ta/firefox-47.0.1.tar.bz2"; locale = "ta"; arch = "linux-i686"; sha512 = "1a496470ef8e0899bfce66b41490f54d4d32776eaf60aca8725c4732512f1d3befb2e1fc3b942ebea95fe2359509c43d41649e5f90498264b8e02a3352244260"; } 172 - { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-x86_64/ta/firefox-47.0.1.tar.bz2"; locale = "ta"; arch = "linux-x86_64"; sha512 = "00e6dbc43ad3c77693903fe534722094826637698df691b266eb801b27cd5e63502c21ca3e34ff939a7645a1f75d36fce6154626019eb96bc73cc39ab845c952"; } 173 - { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-i686/te/firefox-47.0.1.tar.bz2"; locale = "te"; arch = "linux-i686"; sha512 = "70ed539571cadf241f819b68ff24829db32f56287aadab31656fdf66c0ed94ccc6cc11b6cef6e2e963203cda47af2c6032db6e5689c37aaaf495b1e4fa970207"; } 174 - { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-x86_64/te/firefox-47.0.1.tar.bz2"; locale = "te"; arch = "linux-x86_64"; sha512 = "d491acd4635ab9b22f76531740c7ee7a85832678aef9ed646e75f56755c02538440adeea71e9ca5a7a5e11f3f2f6941c3c4c1e47380547179f63baaf6c20ad07"; } 175 - { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-i686/th/firefox-47.0.1.tar.bz2"; locale = "th"; arch = "linux-i686"; sha512 = "0414f74c6266fc204f2741b6860f7919c957364bd56ccc2cec5ef4b9c4be812c554ab584e6ce53387e6b7a18ad02991a44d9507a16da59a4aabfd44e7fb5b754"; } 176 - { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-x86_64/th/firefox-47.0.1.tar.bz2"; locale = "th"; arch = "linux-x86_64"; sha512 = "2952cceaecdd4013882150e8158607639e4ab2cffdef563d4fd1a015c41f1eff6c5ac22c0b9301a05ab6f9fef9659d54916275d5a50d97ad43bf69f10da7b3c8"; } 177 - { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-i686/tr/firefox-47.0.1.tar.bz2"; locale = "tr"; arch = "linux-i686"; sha512 = "c5c6273bae2b9a46108a433af3a85b5cbbba4cd3154ee124ccc49f46c4a76264836a76d1b2da4b1064e9a913cc9fe461911c53e44f40343c5f780be04da932e5"; } 178 - { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-x86_64/tr/firefox-47.0.1.tar.bz2"; locale = "tr"; arch = "linux-x86_64"; sha512 = "f0b5bef1ea4b948d699a79d902055d5b31afbe5c4f1814d98cadef1ca820ce39212ec009f68d875860a48942e9d797bda88eec4f6ed591dd8b3b260e04170974"; } 179 - { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-i686/uk/firefox-47.0.1.tar.bz2"; locale = "uk"; arch = "linux-i686"; sha512 = "3a069ba914716ce122c4a89612988708d811b9350d333aab203dde212527c0e0cc86ec4781e6aa23f40b77f2266f76eca366cf355651870f43e180b97aa25c43"; } 180 - { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-x86_64/uk/firefox-47.0.1.tar.bz2"; locale = "uk"; arch = "linux-x86_64"; sha512 = "db7931aa3f1d150e4b5b8c87b9d069df4a515fb2aa5e250b8f8a1bae0d8fd9a210ae949df056c47e3c88e8faf28f2571311ce2d6f179e3365720b42f1335b546"; } 181 - { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-i686/uz/firefox-47.0.1.tar.bz2"; locale = "uz"; arch = "linux-i686"; sha512 = "110a82749e187f39d77f63b16ad515218e5512e5974916e4145e625a40d797e23fdbb5d110a23f061448cfc3d3c597858636c9304e941a34c68368f749c3c900"; } 182 - { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-x86_64/uz/firefox-47.0.1.tar.bz2"; locale = "uz"; arch = "linux-x86_64"; sha512 = "1dbf94cef034449e8d1342822384bf1761dc61748e2d876aec1ac628dd161f92b62da832fe397b2fe4f8a1b82f9adf1c3690f26e07ee3e48c6299f95969533cf"; } 183 - { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-i686/vi/firefox-47.0.1.tar.bz2"; locale = "vi"; arch = "linux-i686"; sha512 = "af97e1dcfc9bfbdce95a5cd35025b2540ad928d3238863471116e071a51b354b7818577bc3e7427c513e7b335bc1510605ba3ad1a37221389de7c7fedf6e2103"; } 184 - { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-x86_64/vi/firefox-47.0.1.tar.bz2"; locale = "vi"; arch = "linux-x86_64"; sha512 = "cc938935395e66ef721fdbb8c8b781ef648b5419393ed1687a116a4d9ae12dd18f2edbc8287235504aa6782bbd6a41f9f5dd89c9c712ed4980fb9fa44f46ef38"; } 185 - { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-i686/xh/firefox-47.0.1.tar.bz2"; locale = "xh"; arch = "linux-i686"; sha512 = "a76dbac054cdb7f5c194766dc54f215de4cb4cca4aacd7c883e0e3632b9dfc18cc25d7a54788e213bc65c894dd26ca9b863199b55b649133f93da9fed9a58fe4"; } 186 - { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-x86_64/xh/firefox-47.0.1.tar.bz2"; locale = "xh"; arch = "linux-x86_64"; sha512 = "cfd8bbb81637c19464ec34788254740e999c13bc8a64b4289b0e1c64f76d711a5a5a8380995271f309444032739066f06334da2f81b6ca2b2be33ff55d3ff402"; } 187 - { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-i686/zh-CN/firefox-47.0.1.tar.bz2"; locale = "zh-CN"; arch = "linux-i686"; sha512 = "d11637b0c28aa1c45b315322ff12392e133aebe21f435564da278b9e301f0c8515ccb721df2bd55c175c48c3e24934837abbba4b84c9fa659b7a58db1da68f04"; } 188 - { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-x86_64/zh-CN/firefox-47.0.1.tar.bz2"; locale = "zh-CN"; arch = "linux-x86_64"; sha512 = "27a06d87f23eaeec170d1ea7f3df636198bfd4787001e178948fe9b8a3f1aafff3be59b9d01ed5b5851902b550601f061e923a4cda3a972f0ac68928cab28577"; } 189 - { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-i686/zh-TW/firefox-47.0.1.tar.bz2"; locale = "zh-TW"; arch = "linux-i686"; sha512 = "7c6ef5592b273749ccbf7b37c09984b11722beb7f49d4ed25555b84f0521e0dbac5197c7642ac508a21a1a40c5578dcfb49310858819875cc9407c85426d599a"; } 190 - { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-x86_64/zh-TW/firefox-47.0.1.tar.bz2"; locale = "zh-TW"; arch = "linux-x86_64"; sha512 = "9ccce84a292144f3758190ff2858c077d1e7ec6d49ff5e1efb404b8dfb3bcfebf96eab15d0ec32325e4d96d94f4c6bcc67f4e43dd22af418b822d82a2afaf6f1"; } 9 + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0/linux-i686/ach/firefox-48.0.tar.bz2"; locale = "ach"; arch = "linux-i686"; sha512 = "57ecf646fdb81b48be76e79d9ca514d2d1bdf76cc5e577545be6bafce466938e14a508819e69e1a28905a278ccf48c2f958f8e404f312f90e63cbe9317b39314"; } 10 + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0/linux-x86_64/ach/firefox-48.0.tar.bz2"; locale = "ach"; arch = "linux-x86_64"; sha512 = "ebb5273a458eeb62a48575ece8c1c20f760ff0c015073e13d4103d3f2d9db5ffa085df6e59b6a651c39a743852ec0fff4455e9d9cc8c0dcff1554a948726de47"; } 11 + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0/linux-i686/af/firefox-48.0.tar.bz2"; locale = "af"; arch = "linux-i686"; sha512 = "efbd8aa1118a76d37e79970928c622f382eacb10441fce578ad0d782e7c900b22c197f1b70057c1142fe7c7eaf4bdffb7af9f9662e9cf7b32123a332278c5be8"; } 12 + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0/linux-x86_64/af/firefox-48.0.tar.bz2"; locale = "af"; arch = "linux-x86_64"; sha512 = "ee623538bf68b42961fa921d03b69181ed901f55fb853bf435afc5de7942ffde3bc4bb70a4baaa613b7d679002be2e11f3405eeabf2a0d8cf9338c4a4354e841"; } 13 + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0/linux-i686/an/firefox-48.0.tar.bz2"; locale = "an"; arch = "linux-i686"; sha512 = "73591c7ce176834de04c8d8ed45239502199b3b34b0884dc87a56580e8548de2e0c3b2a9cb7d03c463ee6022bd3c2c8e08cb40697ecbf1368e276658f3fe3d68"; } 14 + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0/linux-x86_64/an/firefox-48.0.tar.bz2"; locale = "an"; arch = "linux-x86_64"; sha512 = "489d88b99ff4adc9edb919f5cefca944577391d19c9b10797d7447db5468a43e143234bdfc884c8d98c4ac715b8c29388aebc9efe3e79ec68694e33ff1f21987"; } 15 + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0/linux-i686/ar/firefox-48.0.tar.bz2"; locale = "ar"; arch = "linux-i686"; sha512 = "606bb3823834020e6110ef2cae2732ba8e4b2a3f38450a38ed23355d0f16dba7c98ef29df8b6fb6e76fd12e99b4ee97dc066cf74b3156e99af7c0929d9b2af0f"; } 16 + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0/linux-x86_64/ar/firefox-48.0.tar.bz2"; locale = "ar"; arch = "linux-x86_64"; sha512 = "af7970892dba0afb677c478ee296cd4ddb75064f229d13f74f6102d45ab7af819d911eafc84cd4351e3eb50bc47e69ac7a3c204b7e96cbb946fc13f46fc1a4af"; } 17 + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0/linux-i686/as/firefox-48.0.tar.bz2"; locale = "as"; arch = "linux-i686"; sha512 = "cfd631ca2893eee802a9bc82dee3d8d348fe48010080fc82521dc61a6efe1271513f0f1b9a0cf2866050fb1ba3d41ee9a7ad7283b3e669bf8537d8cb38bfbbc2"; } 18 + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0/linux-x86_64/as/firefox-48.0.tar.bz2"; locale = "as"; arch = "linux-x86_64"; sha512 = "ff94b9f687da69ca541f03e720dab47dc805e2ae86ab297615195302cfdef13bff294bd9f0a3bc802cca9f855e83c6f346833847d7dddcd4f1cc19404dabd752"; } 19 + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0/linux-i686/ast/firefox-48.0.tar.bz2"; locale = "ast"; arch = "linux-i686"; sha512 = "3ec1c5a9c73cca3d637cd6045a1110c729cd1ee83d5b4e7452ba45cfb0e01cdc1f87bca870ca0af595769607154364bc03bf88ab99067f1c1be82fd8584a439c"; } 20 + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0/linux-x86_64/ast/firefox-48.0.tar.bz2"; locale = "ast"; arch = "linux-x86_64"; sha512 = "84a6961c164cb6279ecfda6bf07f81ee40fe59636bcda0970bb20880d0337447fbc7fe12699627d3544b9f748426c3bf5b9ac2168ad9951c5a04a63a54acfc73"; } 21 + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0/linux-i686/az/firefox-48.0.tar.bz2"; locale = "az"; arch = "linux-i686"; sha512 = "95b2228952c52d1daf5d34813fc9ab83261899e8f43208b06146c44cf969167c63f71cb1846386d2d657cfcd283c398ee3363a28e0b8febee1d7704c392b6064"; } 22 + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0/linux-x86_64/az/firefox-48.0.tar.bz2"; locale = "az"; arch = "linux-x86_64"; sha512 = "d87b848645c779a1ce5c989a95dcf9a4ebdf305aaec5cd16ecded438a5f0a0e69ef1d6285a4c9fc9f2c9da0bbb26e2b79c24bd27b1d3a1b3df4ba18e2de4b465"; } 23 + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0/linux-i686/be/firefox-48.0.tar.bz2"; locale = "be"; arch = "linux-i686"; sha512 = "9dbf3497d52dd7e4260aee089fa77d888db7f97f6512c53a410a7440683e58759686f543ca5052c8a1fbd6372c924e83800299fa0e9454c74ff4a03cf29e8fca"; } 24 + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0/linux-x86_64/be/firefox-48.0.tar.bz2"; locale = "be"; arch = "linux-x86_64"; sha512 = "a9fdc05f4cc123dfe672cf8b31cd47f2b25f0f1685d09839a0e86709994e31851ad78bae36f6156f273cb8e94c01319be08bfd4e5ee931a88ddbe40b06336b63"; } 25 + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0/linux-i686/bg/firefox-48.0.tar.bz2"; locale = "bg"; arch = "linux-i686"; sha512 = "46df725d41d0229af74205e3e0afa16b89841a0161902cbdf69faa065067db387fe6480ca80e10d3f805c98301d576e279b3405313bf10146a78085b2c05dd7c"; } 26 + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0/linux-x86_64/bg/firefox-48.0.tar.bz2"; locale = "bg"; arch = "linux-x86_64"; sha512 = "fbe69e3b48f7c7baba07b23fce7cf266258851427b2bbf8c21b7a870177a499574ae937ce88270abebe3030a289bce236ab1d4f806a223a309e9ced9d5549de8"; } 27 + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0/linux-i686/bn-BD/firefox-48.0.tar.bz2"; locale = "bn-BD"; arch = "linux-i686"; sha512 = "c82e3f2192be0e8aca9f0cdd8eb06e7c8b193c151c4ae52a5ffa1908c62382de9938ca97da44d10cdcb8dd98bb17362887811df41496a389c49e20dc42229f96"; } 28 + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0/linux-x86_64/bn-BD/firefox-48.0.tar.bz2"; locale = "bn-BD"; arch = "linux-x86_64"; sha512 = "14dc923c5db1b49a1ca98eda1e45d5978f7a0e034bb26462da25ab7b160303f3f546e4aaeac3b712fa1a7dc8c70433ad09d11ab7493234bf5bd1ef73eede930f"; } 29 + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0/linux-i686/bn-IN/firefox-48.0.tar.bz2"; locale = "bn-IN"; arch = "linux-i686"; sha512 = "9e86a9dcbfd1516a134670f17c2734c9624daeb28a0eebb9e81f40f7a1f49ef8d7b9ecbe501beac1e5cd895502cebeae0dde9dfcb91758b5dba5ee42cc061cc4"; } 30 + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0/linux-x86_64/bn-IN/firefox-48.0.tar.bz2"; locale = "bn-IN"; arch = "linux-x86_64"; sha512 = "4cee2c673cd4dc14c33849e93c0bd2aead14c631940aee255fd75391b5588610cdd79c71e85264981d44e06892d1ec99bd484e72e7e56d207db9911cc5f3dcba"; } 31 + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0/linux-i686/br/firefox-48.0.tar.bz2"; locale = "br"; arch = "linux-i686"; sha512 = "5f420addb318b9c5fa11ca83f837758b49e2358448347cbfc13b2cf644f4f5bafebadfbebe5522d790d5a03d4c35406bb49268e40d62161288f0592235c0aa6c"; } 32 + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0/linux-x86_64/br/firefox-48.0.tar.bz2"; locale = "br"; arch = "linux-x86_64"; sha512 = "0dc0bec866a3d4471e3b1928a9bb32549bfe09b9c77d28406cc8f8c9e5d6064581c148701e4e650b28e1b95ba6db85c27de7625ddd39caf1b92e2d6d1a357889"; } 33 + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0/linux-i686/bs/firefox-48.0.tar.bz2"; locale = "bs"; arch = "linux-i686"; sha512 = "0e2563650a9cf9ed48928e49c2cd9aa9c295106ae5147a2ec87e5fbf28acf303da071e9f586315159db72e93cb7611a3eb8607da1dcda9c2645b9af19faaec31"; } 34 + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0/linux-x86_64/bs/firefox-48.0.tar.bz2"; locale = "bs"; arch = "linux-x86_64"; sha512 = "4324112ba0112db3dddd7cec05ae3965a7b656f7e0e05e28a00b127dc0885814064219c1c2f9bce9dce0a0237a4f0def79d6cdc15a8f46c23efde1c34b89cc91"; } 35 + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0/linux-i686/ca/firefox-48.0.tar.bz2"; locale = "ca"; arch = "linux-i686"; sha512 = "3977d2c8b5a05659f5c160e2ea1a25729ce4565821a67d4da9649fd57c1451f1b136a147faaf9987c719518028dc2be14df1edbef083220c9de40a377612f9f8"; } 36 + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0/linux-x86_64/ca/firefox-48.0.tar.bz2"; locale = "ca"; arch = "linux-x86_64"; sha512 = "e9a3ad240e7d6fbcf7b54e350c297b40cb224e75390919c737b2380c5af7ddc93834469ee5dc4c93115fda44ee97b21d01b002f35f69630dc667fba8333620bc"; } 37 + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0/linux-i686/cak/firefox-48.0.tar.bz2"; locale = "cak"; arch = "linux-i686"; sha512 = "ab7b9d41f3686ae77c72c332e04775785741a2b81a3a8b8ca2059dae3a27aad26585a59d99e5c99486d75b7c8c5571a5c9524ec142e7f75f29ecc34c824d5d92"; } 38 + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0/linux-x86_64/cak/firefox-48.0.tar.bz2"; locale = "cak"; arch = "linux-x86_64"; sha512 = "be80d95ebfa0d79869257a788aa59cc88849bfe14ccd148bb46caa6db32046a62ffd17d36c6451caa0b4f500153e7f607616f4313fb42c0576e669bacc6b117c"; } 39 + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0/linux-i686/cs/firefox-48.0.tar.bz2"; locale = "cs"; arch = "linux-i686"; sha512 = "8c0873fcea5ff7aa6f0a78fb6cbe59f7514ad5b0e64ac0d10f03cf3747ef3b6b1cfce01d12f0e11d5f3ed7a7b248e0dd5250850edd4a3a8c8d5f692b6fdc9d75"; } 40 + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0/linux-x86_64/cs/firefox-48.0.tar.bz2"; locale = "cs"; arch = "linux-x86_64"; sha512 = "fe5d78ce15f041ab006f5d3b445deb26acd2c5e5d079f6789a0e5f56c2d9077b43595f1dddea3b03d4d7a2fc5565b5da4cc8d138b541d88a31475eb5ce219d68"; } 41 + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0/linux-i686/cy/firefox-48.0.tar.bz2"; locale = "cy"; arch = "linux-i686"; sha512 = "0c66565a03806c33ecb92c9c7106122283213b5b5cd171b93337a14d446cf0d4d36d298680d286d57c4f09f532f5794a67a426ff7e2d7044c65800d1a6e2ef81"; } 42 + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0/linux-x86_64/cy/firefox-48.0.tar.bz2"; locale = "cy"; arch = "linux-x86_64"; sha512 = "2c52f2e204a86afe6f1016fde6aa13cd6b34fc22f7a1943e81b7e6ec0e2136c51156b57bbf12a1cee95aad66d415356cbbd47c2aa94d944672169526b8f1bd94"; } 43 + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0/linux-i686/da/firefox-48.0.tar.bz2"; locale = "da"; arch = "linux-i686"; sha512 = "fc0e9ba7db425e4a209022487f796f646ba82e4ba9e06153f094037ccb4a959b6fe2ceeadee96b906eb0cb8eab72e34b29f6d024cf34d93cf4e54dc16fccef9c"; } 44 + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0/linux-x86_64/da/firefox-48.0.tar.bz2"; locale = "da"; arch = "linux-x86_64"; sha512 = "a6a4c67f9bfe80ff83f99e459c49c58635739da0967f9e8bb1a37568084c4c2f83057e0daa969d6fb844d93994107ea29982f515217a18e79ac8b04c766a0fd0"; } 45 + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0/linux-i686/de/firefox-48.0.tar.bz2"; locale = "de"; arch = "linux-i686"; sha512 = "40f912539b1bbaf1291270b109d455de1f080a68490950fc9acfb675179d37e75d3cd09cc25ed01bd9f0d970b6d988caaf7d3510a00bbe696139e68dda1aea25"; } 46 + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0/linux-x86_64/de/firefox-48.0.tar.bz2"; locale = "de"; arch = "linux-x86_64"; sha512 = "b41cbe809060c2fbaf19688f450532ef71f8d7d995e382aedeaf394b00742d8256aca9560f069f60efe7dfb24d05f884fd7160e3cfa9a15437124b8c4de38786"; } 47 + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0/linux-i686/dsb/firefox-48.0.tar.bz2"; locale = "dsb"; arch = "linux-i686"; sha512 = "cbbfedfe185cced2644ed6aa34ae754f7c79a18fae8e6b2846d7a1a9b3b141f95def6d7b9c2b2c8b58c0b1e777d36291164866dbf43e93e3ffc8c1e319aa3ca6"; } 48 + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0/linux-x86_64/dsb/firefox-48.0.tar.bz2"; locale = "dsb"; arch = "linux-x86_64"; sha512 = "dbef6f6acd1e5cff574e9f456fe0d7ab3c2982d90c15ffcc1195e693357849ffe01091b2be997203d56a580774bba71334635c1f5a0aed57ebb7f7ca6c95b879"; } 49 + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0/linux-i686/el/firefox-48.0.tar.bz2"; locale = "el"; arch = "linux-i686"; sha512 = "7cd345924f3113d22c338d1bde94c9ec3157531c38aebee0048e81258fe60e600b11449e1db78fca15073636c2fdd120e90f12c3eee461a43718c8de0e89e646"; } 50 + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0/linux-x86_64/el/firefox-48.0.tar.bz2"; locale = "el"; arch = "linux-x86_64"; sha512 = "47a500294df276b752d6728b47dff65aa34cfd87ec861d55357ddcf2386e53c646c24ab7e29f70e547986ac6311b2961bcd245a51333c5c4d46912d0bf84547c"; } 51 + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0/linux-i686/en-GB/firefox-48.0.tar.bz2"; locale = "en-GB"; arch = "linux-i686"; sha512 = "2ee0c7b3653c18a4c26cb78e6b579e0f22cba9dd0a6d54dc0028df6635a9ac912eb8c8958af5ffb4e572ae45b54891a19efd7f6efb407027130a3e444e435968"; } 52 + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0/linux-x86_64/en-GB/firefox-48.0.tar.bz2"; locale = "en-GB"; arch = "linux-x86_64"; sha512 = "8ea361476983e9677ad6d9b5c833f114566c528b72158d18664ee66dfe5c00bbcec1ab8c5b1293755348282b4e86ba3f033a86aad3ce943a695ace06a43bd252"; } 53 + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0/linux-i686/en-US/firefox-48.0.tar.bz2"; locale = "en-US"; arch = "linux-i686"; sha512 = "b7d35e0664012ed45e8256bde69ce6c64a984160185082e3caea8762bf81adde8eb9caa9b4b83ba79083217fb202642face8c660623a87002bd61bbf9092ff7a"; } 54 + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0/linux-x86_64/en-US/firefox-48.0.tar.bz2"; locale = "en-US"; arch = "linux-x86_64"; sha512 = "1c66c802af9ca1a665074ebbde5ee349b14cbe5a7e911f42c71334ebd15fadfacd33759b8bac92f56b117a66661c7602aa7c5bcd21e1e186f6d669d5d7957bc8"; } 55 + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0/linux-i686/en-ZA/firefox-48.0.tar.bz2"; locale = "en-ZA"; arch = "linux-i686"; sha512 = "2db66b79129bff445e9a5fb6ae982453b5fc2b18f3c9b017afb739ec774465f098e11ef02b8d00049a5ca3289acd117bc076d578934a215626f246efdf41c6d3"; } 56 + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0/linux-x86_64/en-ZA/firefox-48.0.tar.bz2"; locale = "en-ZA"; arch = "linux-x86_64"; sha512 = "1473001924b17825893f0e0d9a65bff0be03369e6b07e9ad51a2d0c6afb4c4faeece06aadd53ffaa941de364c54708c483a21088a4c6afaffa24291ac97c679c"; } 57 + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0/linux-i686/eo/firefox-48.0.tar.bz2"; locale = "eo"; arch = "linux-i686"; sha512 = "64b8b4e1bd0afcde46fc431ebc7579813b16554ac5a55b06835eb58b317b93590d34a3925195d4cd93aee04c3c86c99242a9a4454572141100c4873f1ee9d2a7"; } 58 + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0/linux-x86_64/eo/firefox-48.0.tar.bz2"; locale = "eo"; arch = "linux-x86_64"; sha512 = "414f7411db27fe462d030e937d0549a35f735747b736b713192887947f0492734ff2bdd1654706e9eda15410b2b240f3d747f3c8905a31ad5c72a73b621ef0c2"; } 59 + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0/linux-i686/es-AR/firefox-48.0.tar.bz2"; locale = "es-AR"; arch = "linux-i686"; sha512 = "f25942436f05c0a1029a5f9921e9cc7a0d0a40c57a0742207c336e73ca382b881319c67961b240924266650731b806c7f07ff67937d503d8e94e43f2387cf7da"; } 60 + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0/linux-x86_64/es-AR/firefox-48.0.tar.bz2"; locale = "es-AR"; arch = "linux-x86_64"; sha512 = "c4ccbaf8741e339bdf0faba2a95d6e481bc10408064248a2b27e447637d53e3f866ee671d61d8d0663b6dab48553b3ab1b0680fa37dfe13ffcb5119fd3996b72"; } 61 + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0/linux-i686/es-CL/firefox-48.0.tar.bz2"; locale = "es-CL"; arch = "linux-i686"; sha512 = "b77df1944974a2bde0482c0fb2d36f9e3d38d09b5182faf6c008174525fa598f52910547fb1ea7e692968407279dfef9a576e1748e0d6de7382937e4258b7d41"; } 62 + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0/linux-x86_64/es-CL/firefox-48.0.tar.bz2"; locale = "es-CL"; arch = "linux-x86_64"; sha512 = "6d62e95696d8ab3a227fd176dfc4555aa37482585d3f575cf6cc62e2573bf0085c2ba3ca64dd597e68ffb0abca9cb8e11bbd6040a7e5df2e2371328a029e298e"; } 63 + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0/linux-i686/es-ES/firefox-48.0.tar.bz2"; locale = "es-ES"; arch = "linux-i686"; sha512 = "7064370188a13d7918925ca727af1291d009651dd562af17e461cccc59f5f62df6a29f3919be847f968004421ebcdbc0ab67b32d994079b55528894733e1079b"; } 64 + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0/linux-x86_64/es-ES/firefox-48.0.tar.bz2"; locale = "es-ES"; arch = "linux-x86_64"; sha512 = "7562fc8cf2e8a80c59ce3893b01fe56b62ed81ccc04703a6e1d8da372e15198626a16378697e71079ecb129bef9ea70eebcfca1da8a8b4567ee96e9fdc8ac83a"; } 65 + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0/linux-i686/es-MX/firefox-48.0.tar.bz2"; locale = "es-MX"; arch = "linux-i686"; sha512 = "cdc43dae9bb8cb5e7e5816fde84ec6a4ca072bf3e594dc3cc0f77bc4fd2cb3a28bd5950dbfe2d1864ffd313f304beb5c1173f53e560fd4ededdc249e276f0dd1"; } 66 + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0/linux-x86_64/es-MX/firefox-48.0.tar.bz2"; locale = "es-MX"; arch = "linux-x86_64"; sha512 = "d0a118ea015d709191ac654a22806186a3e62ee540c6efceb6a05d9cfa8fee9a611d2f3f19430988ade7a77ea02fe62383574d41b18c4a8d2925a5c09b65a1c4"; } 67 + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0/linux-i686/et/firefox-48.0.tar.bz2"; locale = "et"; arch = "linux-i686"; sha512 = "3218dc25082bb1e6047445542e902934346c104843ef10efaed5c283372734662737829a3edc7ba7025558566b7b0e4485f02ecd24802c781bb8037f92478deb"; } 68 + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0/linux-x86_64/et/firefox-48.0.tar.bz2"; locale = "et"; arch = "linux-x86_64"; sha512 = "81c14a517b59dcba904950559ba6388c75fc39bc498dae4106dee555a3f1d737f9a258327f3130c85dc6c6b52e17b741056b4095dae7cc8cf8dd612965ad7f99"; } 69 + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0/linux-i686/eu/firefox-48.0.tar.bz2"; locale = "eu"; arch = "linux-i686"; sha512 = "31c0c182f84468aa15b03410b1cdfbba35b7e74474d506e9bc32168941e210e93fe441de9df77e48fe9996c77d45255a513e6acfb733e179fbbda0a75318b7a7"; } 70 + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0/linux-x86_64/eu/firefox-48.0.tar.bz2"; locale = "eu"; arch = "linux-x86_64"; sha512 = "5bf898af06d2b9fd6be194adf4453f8c271cd2c2d3b166e788427d4edc45f814787265956120619a5347df7c2fb5a7002954eb70d9745143e540055a7105a05e"; } 71 + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0/linux-i686/fa/firefox-48.0.tar.bz2"; locale = "fa"; arch = "linux-i686"; sha512 = "53a86ce6b5a0312b1380fc17bf7eaa879f266307934bfc46cfa18bd385021f875fa306836a796ed2777271758f2a0201b385ba8aaef076e6a54c94cf24fe03bf"; } 72 + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0/linux-x86_64/fa/firefox-48.0.tar.bz2"; locale = "fa"; arch = "linux-x86_64"; sha512 = "a5a961f0a93be6fcbdd7fcfdf356b937b946974a96876ac9cc1e9ff60f54a4f61634d4c4b9cce5b979d4fa1b6084f4f68b2265f503c70fa1b3a5f4392ee0e3d5"; } 73 + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0/linux-i686/ff/firefox-48.0.tar.bz2"; locale = "ff"; arch = "linux-i686"; sha512 = "4b2dd232f326efd720fce08a91222476cf10f33b90ecc9b43cba715ede44b3d00dbf05cb54616db4a32bcfa8c5b593e2981a69454a015e8e9baad927ad5162d9"; } 74 + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0/linux-x86_64/ff/firefox-48.0.tar.bz2"; locale = "ff"; arch = "linux-x86_64"; sha512 = "23d4b17bddfb62f947a4b07eed55dfbe13232f98d0197e5ce06bd6e53758f3af172e878f47031a1b0a551b68bbc0cb684e614f8b217523a1b7d7485da8df4a57"; } 75 + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0/linux-i686/fi/firefox-48.0.tar.bz2"; locale = "fi"; arch = "linux-i686"; sha512 = "d68b48a97fbc3bfa00cca45ec48bc08f0c736c1d4ca04cddb9519d5fbeeadf88da1602750e4d58c46e258eeb83e32e740f539f556776ab05f01f6ddd2fb2630d"; } 76 + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0/linux-x86_64/fi/firefox-48.0.tar.bz2"; locale = "fi"; arch = "linux-x86_64"; sha512 = "1ad0df0c9f4c3c6e179c5df2fc982fdb8878038fe85f622042613f80a4556d8791d82569ed8ee03237936564987b3a21e2f8e9d2dc40c676ffbae2aecb93f032"; } 77 + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0/linux-i686/fr/firefox-48.0.tar.bz2"; locale = "fr"; arch = "linux-i686"; sha512 = "725abc4ab51cdf3be84958de058350341a8d27a484ff3d2a021dfee018b1419f560c8920f18b6d6d592bac82b89556a662d244e492634248c970a3630e4fea8b"; } 78 + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0/linux-x86_64/fr/firefox-48.0.tar.bz2"; locale = "fr"; arch = "linux-x86_64"; sha512 = "076a780821a4de51d38a51254c5f53c91545f48b72ab8b869500cd1afae7d113329889c75766de3061cd423f28917c3125991a36bf97c515b1bc473aa89dc7f2"; } 79 + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0/linux-i686/fy-NL/firefox-48.0.tar.bz2"; locale = "fy-NL"; arch = "linux-i686"; sha512 = "bae1c596a488af768865942129e906adec9fab6c79be6f9b09a21a8dc5db7d36f38299fb19126b03d9158618d9cff62fa2143fe524aa068ca58f51af223a7104"; } 80 + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0/linux-x86_64/fy-NL/firefox-48.0.tar.bz2"; locale = "fy-NL"; arch = "linux-x86_64"; sha512 = "077be175984e50d5ba64b62576c9632a6c9924af99e330eb029ad8a6bc9d2c54f5d505771b0d8fcd1aeccea35624b50318eaf921b34b8e86cde592ab3bc4a449"; } 81 + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0/linux-i686/ga-IE/firefox-48.0.tar.bz2"; locale = "ga-IE"; arch = "linux-i686"; sha512 = "861f9e61f9c355628fd923d1167e4db71697526ea87c5280cc976056e27505401b407e3348294177cd77204fdd43ee6497c8fcf89ec7e9215a09acaeb3d6d328"; } 82 + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0/linux-x86_64/ga-IE/firefox-48.0.tar.bz2"; locale = "ga-IE"; arch = "linux-x86_64"; sha512 = "2d945375532a35b53f8416129010d6cd7d2c3bbba0fd44dd647a61ada38637b044daaf51189de4c7e04c440254c4fba88aba97fb20d2ee4ad5bc55e1ce61da6d"; } 83 + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0/linux-i686/gd/firefox-48.0.tar.bz2"; locale = "gd"; arch = "linux-i686"; sha512 = "5a08ccb0b2c3fb9886cac45e69c7641053ef18d652fdd4528f5ef06b9c51e412fae4e6301c078df314de8dccc4ffd87907571906f4df9c382492ef1d94c6d6ef"; } 84 + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0/linux-x86_64/gd/firefox-48.0.tar.bz2"; locale = "gd"; arch = "linux-x86_64"; sha512 = "66e643754812be465d3884758d1e2db405486633e08aff79ef7dc142e70183eab1ba357794ffd3920392e0e80c3b9729590e8c4e803c5c030e0aee8a758eac84"; } 85 + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0/linux-i686/gl/firefox-48.0.tar.bz2"; locale = "gl"; arch = "linux-i686"; sha512 = "3cceaab829a2f80d0b329a4a035b34fe67653ea6637272f2ffc2235d4bcc491096846e927773ec7a9bbd53f987b3c1cee982c7e8c9cf900883e8b15393b36023"; } 86 + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0/linux-x86_64/gl/firefox-48.0.tar.bz2"; locale = "gl"; arch = "linux-x86_64"; sha512 = "65a35cf89bdc168cfe1e3f14c1aa799ee0a728c9d4b34e7f6a99bb20a88da872de3df3df6b77094035c6baa4487a3a1583591d60741f125cf14d85ea20b55545"; } 87 + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0/linux-i686/gn/firefox-48.0.tar.bz2"; locale = "gn"; arch = "linux-i686"; sha512 = "b7164178349bdccbccad6e32fcac29f5c3acb512f3e8e1db57f7c7cbb8e6950ec5e8985779116eafe6b237d39d8ba36b3adeaa70813ff3a3a978618808765740"; } 88 + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0/linux-x86_64/gn/firefox-48.0.tar.bz2"; locale = "gn"; arch = "linux-x86_64"; sha512 = "c0526f1aca929a77beec1b54393751d3b985753843239892818da4727e3ccf0d3a94e14114e842c7dcb99d2fa7421f3821e3a9f2aa33c6944d62e27963c4154a"; } 89 + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0/linux-i686/gu-IN/firefox-48.0.tar.bz2"; locale = "gu-IN"; arch = "linux-i686"; sha512 = "ec0675aee25136317c9e9f861947e3fc8fe3bafacda7169590398ed5abe125b0ee7104bfb56988ea7312039418e356a4255e98735167a3bbc4def7b2f326e9ef"; } 90 + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0/linux-x86_64/gu-IN/firefox-48.0.tar.bz2"; locale = "gu-IN"; arch = "linux-x86_64"; sha512 = "4d7b83c829dc8fa4eeac364880b90dae4a9a7d33036c92e72d358b5e235c36ccd6b4cc578f786b6f28ea49b665b0ae611046b5c05ecde8bfa89b0396d43b4791"; } 91 + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0/linux-i686/he/firefox-48.0.tar.bz2"; locale = "he"; arch = "linux-i686"; sha512 = "5f2bb563531130410e67735146a62dcdd8646e401ad8fd468b1bea56de36e1e1a248d3580c2408b6f30a3cabe58a69d13525413a2b7cdc926722f2434408797c"; } 92 + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0/linux-x86_64/he/firefox-48.0.tar.bz2"; locale = "he"; arch = "linux-x86_64"; sha512 = "9958faec273e584efbb438791af10971e0e795c33850000f967b060eb73f898ae73a780b2c6707772a233d2f6aff8d664d4ecd327b959210ceefe5efbc4110a2"; } 93 + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0/linux-i686/hi-IN/firefox-48.0.tar.bz2"; locale = "hi-IN"; arch = "linux-i686"; sha512 = "48ca543b4d3dec309bd443a9cda5a9f6fffe2d467a665eb08454cee0914387aaff863629cb156ed92d98aa878f804454cf4af6f5bcb04d4d4d1221c4854ec554"; } 94 + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0/linux-x86_64/hi-IN/firefox-48.0.tar.bz2"; locale = "hi-IN"; arch = "linux-x86_64"; sha512 = "672ec5bb5154c1edddbf6f0586065482bd8a54c5b8b8bb9678eec1825fa10f5ab9142437b96beef0b865740d6426ae4da9122549df1e242cdfdb2a86abbe9d3e"; } 95 + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0/linux-i686/hr/firefox-48.0.tar.bz2"; locale = "hr"; arch = "linux-i686"; sha512 = "68dd6692de0d72c41dd058a505c508cf365ec688850be7e87aea7b99164e8e5eb3eea547fa54753c76ff6b8fbede44c73f047cac3f4cee700617da55329a5e84"; } 96 + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0/linux-x86_64/hr/firefox-48.0.tar.bz2"; locale = "hr"; arch = "linux-x86_64"; sha512 = "146dd255b89fcb616032d04dbe0d4a4e8b3098cb79758b4adebd45ec83c153832fc332486b3cd11e771284d14e2c0eabd407373abc5466d7ae7a081368ce868d"; } 97 + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0/linux-i686/hsb/firefox-48.0.tar.bz2"; locale = "hsb"; arch = "linux-i686"; sha512 = "768ea8eb848e26664af47c3b93e6906d2f81a1890b43801f4e00a90be321b9ab66827a082c2f42182532722c913149bb4d1d40af3c9fe0d2ba691447f41552b8"; } 98 + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0/linux-x86_64/hsb/firefox-48.0.tar.bz2"; locale = "hsb"; arch = "linux-x86_64"; sha512 = "869997277e071e3eb654479c497792640d836cb96a20c9a1974f9915b616d5bcac8dd635c3a9509b365c62719941b7751a5d87e3874ca095926b7c80596c7cec"; } 99 + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0/linux-i686/hu/firefox-48.0.tar.bz2"; locale = "hu"; arch = "linux-i686"; sha512 = "9cfe20df539646f445d9edc0bf30b00cff660875bfb334abb6a05658dd420869ca34114d5c5c16c183afdc58dda5075b08a4e93d789c3e3c0d661c4c5a3a58b8"; } 100 + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0/linux-x86_64/hu/firefox-48.0.tar.bz2"; locale = "hu"; arch = "linux-x86_64"; sha512 = "f7d5e6802f2389aa62b4448e50468e2fd6eb24cc4044b91f33fe47d83eda14f6b27a2024c7d77be7282d568b177ecb3a563b4123ab9cab6ab6aa275ddab2567b"; } 101 + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0/linux-i686/hy-AM/firefox-48.0.tar.bz2"; locale = "hy-AM"; arch = "linux-i686"; sha512 = "d449ffe339181ed8fbeeb91074d5a04ef4b81ad92b2203d48c6d7f3a7eda22922f0a946310b1e810b384b4c05fb434fd2067537d9d46561490905468e9fc327f"; } 102 + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0/linux-x86_64/hy-AM/firefox-48.0.tar.bz2"; locale = "hy-AM"; arch = "linux-x86_64"; sha512 = "2ea54b459c15782a61fd1b56d66278d2ee76a91bfbaf5fede2ef6adb81255bab7401f587ed33b827d4a04272bbbd222f942e6bb34d8463940cb580ad34c08d10"; } 103 + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0/linux-i686/id/firefox-48.0.tar.bz2"; locale = "id"; arch = "linux-i686"; sha512 = "5c9f65c9cee48477f778891abd6a943ead2f08e0f66e9270e73e74cb5f2a281b2a061e06c0eba3d134b868d7747d50a0d5a6cd4b4f3cc7690776405f1204140d"; } 104 + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0/linux-x86_64/id/firefox-48.0.tar.bz2"; locale = "id"; arch = "linux-x86_64"; sha512 = "67824631456a2f92c073e7a11b4e6bdbd802611a8dec857db264ea85aac63e84d5e34e44a4470796fd7b02afc62912b1d8deac3cf28dad7e11ca5db2c98d7668"; } 105 + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0/linux-i686/is/firefox-48.0.tar.bz2"; locale = "is"; arch = "linux-i686"; sha512 = "f49a88c16729605553806839645bd85a8ffb82b903fc2a64928319c849ab57edc300ade3d2831ae30a258e601f34b9cd356ccf8886d0ca5444781b9cfd6dbd83"; } 106 + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0/linux-x86_64/is/firefox-48.0.tar.bz2"; locale = "is"; arch = "linux-x86_64"; sha512 = "69422bbce98fd6974d3ba6f3f1e88d552381cbe346ce726ab31891f612999bed2a4fa20723bf858736708410e43e4c68962fbaa17f675076cf2720135ddeaebd"; } 107 + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0/linux-i686/it/firefox-48.0.tar.bz2"; locale = "it"; arch = "linux-i686"; sha512 = "6a421e08e72d29223a8440ebbe6965866a6bfb3b982ebf2012a314b8132bd21823a00e65e974f057df390b874d90a6f6428d01d00fe594c33b57e533b2db2bc5"; } 108 + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0/linux-x86_64/it/firefox-48.0.tar.bz2"; locale = "it"; arch = "linux-x86_64"; sha512 = "f321b707772adcb15cadf4c13126cd3e5db40124acb012d2188a0e07ab5b184a9a2b43ee2474146c0d48415f3c160d69a3e82fe19688eb71b225ea70c5531f09"; } 109 + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0/linux-i686/ja/firefox-48.0.tar.bz2"; locale = "ja"; arch = "linux-i686"; sha512 = "73a8bd6e32c728246ef8f14a916f7012f2b758ef5d154a898fa0975a723e767ea10d5ca0dc2deacb73741ac48ea3b6007bf7e0b5872143162ad46d452dc689fc"; } 110 + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0/linux-x86_64/ja/firefox-48.0.tar.bz2"; locale = "ja"; arch = "linux-x86_64"; sha512 = "d61fd9a87e158f27aa82f659d84292a3aefe8df57938b677be94258505259a110d8e3dc051012031f91adb41f34764b759306e362fc1d6be0181588c2301cde6"; } 111 + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0/linux-i686/kk/firefox-48.0.tar.bz2"; locale = "kk"; arch = "linux-i686"; sha512 = "51ac197ee684f770970a5973289255ef62ebcdbe59ba2197135e326fc0885b5891b7616b3755a6812bee4c23b1e2fbf31f336113cb3da9b6d1bf12bcbee7b2a0"; } 112 + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0/linux-x86_64/kk/firefox-48.0.tar.bz2"; locale = "kk"; arch = "linux-x86_64"; sha512 = "e437542b5f4922c35fd0a3c3d8b0199115d12b1cac4db07da46d0e6de7106d6222cfec0d73af481ee7e754486af3a795174a28d8c545360a7602a2b9d2123bbe"; } 113 + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0/linux-i686/km/firefox-48.0.tar.bz2"; locale = "km"; arch = "linux-i686"; sha512 = "d7dae5e1ca04aebe076c291ce54d7b626109f3e27e1018576cdf09607968b5e6ef4f05c32ea004a5b3cf5f0c297a436f4091ca88a1f7c0891f3da7d2e60d4aaf"; } 114 + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0/linux-x86_64/km/firefox-48.0.tar.bz2"; locale = "km"; arch = "linux-x86_64"; sha512 = "49fb1bcf8e56692227afbfab13d7edd31ee5aaaad60f4400ac54d66d4be5acca5b77ab4e18f9476c87086f482c586f607671b065be0196da786e9fa0e4a6b5f2"; } 115 + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0/linux-i686/kn/firefox-48.0.tar.bz2"; locale = "kn"; arch = "linux-i686"; sha512 = "724ffda3f3b69c6539f07ad55763fc34f61b3fa45b2b141c7d7d7ae1ac421ee8f27226f6d9cbab7bc36a1c2ae246020f9ee8ea894e9262d019cbf8a1c3a391b9"; } 116 + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0/linux-x86_64/kn/firefox-48.0.tar.bz2"; locale = "kn"; arch = "linux-x86_64"; sha512 = "ab757a4a3d2c916ea588b6701cce2fc63e44d926138ce6c95dc4138169a0db49205d243361bca045ef01632e6989743330b351e8448b2e2b60d99a308598b0d8"; } 117 + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0/linux-i686/ko/firefox-48.0.tar.bz2"; locale = "ko"; arch = "linux-i686"; sha512 = "9bcbf38241a52bbf374c0f8c78acfdff5ca2ae773234ae9b5d4e5019f9d499310e329e87c8d8430712f74256fc9f68a3687af4d148fb5998ca61c0b4772e8f8e"; } 118 + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0/linux-x86_64/ko/firefox-48.0.tar.bz2"; locale = "ko"; arch = "linux-x86_64"; sha512 = "01f32d8f63a40d3d57b298219d889746fb340f631d62ce14a6d85632c7e9c4c3a2da4c0cc1fb738289040addf2e0d2d2e823581d67928b3c4f82ed9b05aa95fa"; } 119 + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0/linux-i686/lij/firefox-48.0.tar.bz2"; locale = "lij"; arch = "linux-i686"; sha512 = "3e168e0ed92f982f9215317a7fa8d088abefa5a3820cb7e61f16099f5111b654d199960f2dc23f59816d6b6992703aaa36bfc61316e82ba07b6fec5b6abd77f6"; } 120 + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0/linux-x86_64/lij/firefox-48.0.tar.bz2"; locale = "lij"; arch = "linux-x86_64"; sha512 = "a79e2a75c7e94bddb9d44708f68f0462bd9a7d2926c2e9334d6e3d879f083dcc5faf716ac3b0f1acf522f29dc20e44ac28a3c6f7667f7a8402c215fb5da00f1f"; } 121 + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0/linux-i686/lt/firefox-48.0.tar.bz2"; locale = "lt"; arch = "linux-i686"; sha512 = "22e060b0fdddfafde0ade9d985af9a2fc5097b226104bdd30c8d0c06da7c44a663384893eea67c95363124c91d5e2ff395162d0a504d54ed3ef36656e0de17fc"; } 122 + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0/linux-x86_64/lt/firefox-48.0.tar.bz2"; locale = "lt"; arch = "linux-x86_64"; sha512 = "e8648f3e0b4b3b93b936f5b5343ab2fb397cce8f9829108011de0b7332246dcdb904374530a20d40a78e5d1ed264bba7809b79afeb9d71f61a17e963d5b4e03d"; } 123 + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0/linux-i686/lv/firefox-48.0.tar.bz2"; locale = "lv"; arch = "linux-i686"; sha512 = "133f9da47452b1f444674d02300a20295c67d35d44f722d082c087d78cc2d91bfab1efeb2a9a30e2566b182dcbe64edcfe899aa6bb86d40f4be18ff27e5649d2"; } 124 + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0/linux-x86_64/lv/firefox-48.0.tar.bz2"; locale = "lv"; arch = "linux-x86_64"; sha512 = "2a1ba8da43090bbd17eee75d3b08910e5a416c044ddecbe831fd63d8e9fc7a6393ce944ef4e698c008025ce4e489e90c7a26fc90f823d06b59c48a06ac5e9712"; } 125 + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0/linux-i686/mai/firefox-48.0.tar.bz2"; locale = "mai"; arch = "linux-i686"; sha512 = "66d7f8da81ed7e430633727904b69ef2e9cda8efc51e1335a49c6ca633d16e2f8412ca5eb2c7b4e1c52006c0c2687ab9ff7e6b822ebc5da49db3288419d0804d"; } 126 + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0/linux-x86_64/mai/firefox-48.0.tar.bz2"; locale = "mai"; arch = "linux-x86_64"; sha512 = "5f5109907b04a4e1ca195cce93dc1350d2a62a6308ab1f1dbc3c5427765376af02147ec08478af21fae9ee925900d820015727f47eb2654fc54b17ff4eada2a4"; } 127 + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0/linux-i686/mk/firefox-48.0.tar.bz2"; locale = "mk"; arch = "linux-i686"; sha512 = "50989bd953deddd04da3da12b42c869db68785decc4336ac4f5ed889524ed5630f28b71cef8198e2c5a5194f8bbde825996bcbe636c03609ed835a9a2e21109a"; } 128 + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0/linux-x86_64/mk/firefox-48.0.tar.bz2"; locale = "mk"; arch = "linux-x86_64"; sha512 = "8d94075342c67c02974d101d7537b07237662590df31feebdd81b672f09593fcf5b4f306bb5eb083943866872a78a1d02f7669844a0b2746fa9d04487d8e09e9"; } 129 + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0/linux-i686/ml/firefox-48.0.tar.bz2"; locale = "ml"; arch = "linux-i686"; sha512 = "7176048a887e7847487e82fe3c38d585d05b415be60b7f4ad102e97f6294034da57d4d6094d7c9f0f5edc977133055e2e02819d7ea2b56e80d5c85e8c5f7ac9a"; } 130 + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0/linux-x86_64/ml/firefox-48.0.tar.bz2"; locale = "ml"; arch = "linux-x86_64"; sha512 = "ef2db6b3e924fee6210ea1b52fbfdf9087d32a56c7238297f38e1e5ef9e6f6a0b5cb27a741224f8f07540e6c469d231b11c366c10c70d8e9aef9695ca5d50dd3"; } 131 + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0/linux-i686/mr/firefox-48.0.tar.bz2"; locale = "mr"; arch = "linux-i686"; sha512 = "0500bcf8b6b2ab8abacc73eea7f1c268b4e65f7fc6b86c92eda6a941051c84d1fda4060590e3c8dd6e0e176670cad098efe07389ad42151e3901b121dfb460f5"; } 132 + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0/linux-x86_64/mr/firefox-48.0.tar.bz2"; locale = "mr"; arch = "linux-x86_64"; sha512 = "4518cba5968661dffd5bf7b6d0084cf6eee3e4b654ab63af928a6c29ad8a7cf077328f3e52c2331e965939571fa0a8ddbd538c4aedd8edd4f0c213e1104fefa4"; } 133 + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0/linux-i686/ms/firefox-48.0.tar.bz2"; locale = "ms"; arch = "linux-i686"; sha512 = "8fab40915ddde779e1c3589335c32f3d0054b73052a6659cfd45a733f0a05f05f3ab5d776588514e648848ab75f8d36ee911296b5ea701e8cda40e10a214f0c2"; } 134 + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0/linux-x86_64/ms/firefox-48.0.tar.bz2"; locale = "ms"; arch = "linux-x86_64"; sha512 = "94b3fffb74c8113caf423a77ef9f24a93513e08c90e242acd581d4b4fa2e23a4acb1295e1abf67dcf70ae034455c32e19b0e4ddc3f32547eca736fcdace01170"; } 135 + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0/linux-i686/nb-NO/firefox-48.0.tar.bz2"; locale = "nb-NO"; arch = "linux-i686"; sha512 = "c5d2cdfab387e5f3380be0132ea52768e4d08a5da6f1c8b101920817166d1cdb077a1138e1ea5c2e938975fc2c745e8b0707221cf9cf8c942f45a07d5496674e"; } 136 + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0/linux-x86_64/nb-NO/firefox-48.0.tar.bz2"; locale = "nb-NO"; arch = "linux-x86_64"; sha512 = "4ecc38821e83b8170a410dc994738806027806fdf69298b51c0387b234e58ddf74801014da50cf3f7531b793968512ed4d2bc659044b82b65574cef154f99dfe"; } 137 + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0/linux-i686/nl/firefox-48.0.tar.bz2"; locale = "nl"; arch = "linux-i686"; sha512 = "e5baa58c1f0e92635220f9b07d1bc10b3439461fefe33a03fc85e3535e64ef20c06e2aa2ac7bb3cddcd15ff9c9aa40dec7ac9ee4e7cc11069503287210e745aa"; } 138 + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0/linux-x86_64/nl/firefox-48.0.tar.bz2"; locale = "nl"; arch = "linux-x86_64"; sha512 = "ceae5e1b50de221e858d89053f38c5bbc8eac1875136401b0c5188017d3fa35ad73faf2c1f45b6175a30ab0a9b47ed8f3c19f21a3abe1a07e1e6f2a88160cd61"; } 139 + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0/linux-i686/nn-NO/firefox-48.0.tar.bz2"; locale = "nn-NO"; arch = "linux-i686"; sha512 = "89bcd86969fe09cd86a2694a4d93abaa32a1b4fe0f74e6d3d1ef66346af86ab77b85fd9c94196835220c2caa1af4bd52d11a9f2394a1c9347d6ddd72d93f43a7"; } 140 + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0/linux-x86_64/nn-NO/firefox-48.0.tar.bz2"; locale = "nn-NO"; arch = "linux-x86_64"; sha512 = "0e9d74c2c4d05740c19dbfe660c9bf116a3f328c5e35b85dcf317f1a77b52d224bfd84e4a82718bbf44323dfdad4ed6955c7b18f2b6000cd6af47abeb4b93cb2"; } 141 + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0/linux-i686/or/firefox-48.0.tar.bz2"; locale = "or"; arch = "linux-i686"; sha512 = "3e797ba54bdb312d468dbc528eb23bc8b40489b061d8597262fd5a8b4689ee814ece54373dc823e378d73abc1caae9af2c8adc0a7d3df8673e486fd5f31084d9"; } 142 + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0/linux-x86_64/or/firefox-48.0.tar.bz2"; locale = "or"; arch = "linux-x86_64"; sha512 = "c7abba3faefca9ea4ec6241444894d935611b5b855be58f52671e7ffecff1c29fb59854a89e546921ed70d3cb6d3f42808d8dbebf8c0555daad6325131de128e"; } 143 + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0/linux-i686/pa-IN/firefox-48.0.tar.bz2"; locale = "pa-IN"; arch = "linux-i686"; sha512 = "d8714bd35288aa565afcd493a21c76d1c8485a289008f28ecc7fc5c077f9b779c485648cbb556490db140d5d5791f4041e138b94b5fc9c66980180c9a7e63bc9"; } 144 + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0/linux-x86_64/pa-IN/firefox-48.0.tar.bz2"; locale = "pa-IN"; arch = "linux-x86_64"; sha512 = "052e90ea858141bbdbf808c18b9e5b6bfb0f235daac84828c9cc35130c6d8e7324b44b3db7a982ac148dc5349a972796c3274e39f61a944f1d0f580152cccfa3"; } 145 + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0/linux-i686/pl/firefox-48.0.tar.bz2"; locale = "pl"; arch = "linux-i686"; sha512 = "d45227a3936d522fd44c3526a0d78e8572b392630dc71d1c75de2f89af9f60c1a4b6b8096cd5db308f111a88b7d9da649e353a67f592ced07fbe601a8f2267db"; } 146 + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0/linux-x86_64/pl/firefox-48.0.tar.bz2"; locale = "pl"; arch = "linux-x86_64"; sha512 = "90bd5b1fb555942fd5a20e923fb7effcee67e43e413f3581c6cff91e9437fe330bc39eef324a82a68d26fd7d5ffaddd2b7f32e7f8c97784002405c35e0a6a45f"; } 147 + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0/linux-i686/pt-BR/firefox-48.0.tar.bz2"; locale = "pt-BR"; arch = "linux-i686"; sha512 = "740a6f543e2e93cc83c1bd5285c00bbc7324d443197c38b069ff912d0e9ed13451b77490fcfa85c4507938f538b3fc50729130754bb13e36806d5d03ad6b83ba"; } 148 + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0/linux-x86_64/pt-BR/firefox-48.0.tar.bz2"; locale = "pt-BR"; arch = "linux-x86_64"; sha512 = "bd8db956583b18a629b39d02dc6f60e31da287e3e834cb7b2ad9c618e8647877e07637afb8993d5605acb746ee948e8fbed7fe5692fc25a1215c98c8e98b3ca0"; } 149 + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0/linux-i686/pt-PT/firefox-48.0.tar.bz2"; locale = "pt-PT"; arch = "linux-i686"; sha512 = "452fc407467c3a6a2837543889d0978569e48ef45ab24141450635b5f7b10e7b6b0ceed805783b700a223bfa8f97c9e46cf59236bb89050ce65a33e183b539ac"; } 150 + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0/linux-x86_64/pt-PT/firefox-48.0.tar.bz2"; locale = "pt-PT"; arch = "linux-x86_64"; sha512 = "29610bc8fd02d36c7acb018105290d06d625530d2e9e62e52732c553d26b4b38a22319dc1701416b3c0c533a34902e7237322f34c35beb49a6053eb9d7c40c4a"; } 151 + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0/linux-i686/rm/firefox-48.0.tar.bz2"; locale = "rm"; arch = "linux-i686"; sha512 = "6f267154c8a612ab6026a5b71a4b906ef6bc773e796dce63f7daeffba4196722218f6b2631180069a8820082e72b97796023bde163ac4b1103887b14c8fec57d"; } 152 + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0/linux-x86_64/rm/firefox-48.0.tar.bz2"; locale = "rm"; arch = "linux-x86_64"; sha512 = "fbcfa337605725848d9786fd43be6ace0b68eb0e2750ec07707abc40ce4813a3fe77860f71eca714bf2dfd933eef735d16b7623f13affa9073c9c6535c9d1759"; } 153 + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0/linux-i686/ro/firefox-48.0.tar.bz2"; locale = "ro"; arch = "linux-i686"; sha512 = "e053c7a6e968dd8dabc8e9ca1a92abe1f97ac754c9eb0acf12e80c9f507f63f8b32a322623eac0914d1f640b5ae30abf158f2889e2fc6a2acfc41cd5881b6630"; } 154 + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0/linux-x86_64/ro/firefox-48.0.tar.bz2"; locale = "ro"; arch = "linux-x86_64"; sha512 = "4b75367765b4bb2a89b6b0316a824b58a0440749055e30ccf997d129e251fcfd43b3d5453e792fb34c4e675bd4155b61a6d9bb98b8c5e7a5cd574f22637b3c88"; } 155 + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0/linux-i686/ru/firefox-48.0.tar.bz2"; locale = "ru"; arch = "linux-i686"; sha512 = "4d91d076a6d8241b9209cbb8b5d1ea8f0238197e0a7c151efd03849e56b9ffb825844d67e2810247d524a96c9cb8ba360d07d3dfc71cf548a8db3df428505255"; } 156 + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0/linux-x86_64/ru/firefox-48.0.tar.bz2"; locale = "ru"; arch = "linux-x86_64"; sha512 = "dce443a48e515f40862631f5310a56a774c014e21d02ddfda17fb499b7d3bb5260b868e8465d320bc19e8638a79ec63ea9ea70a46bcfb4b08f8fbafb293b614d"; } 157 + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0/linux-i686/si/firefox-48.0.tar.bz2"; locale = "si"; arch = "linux-i686"; sha512 = "81f99b788a395676f837b2ba1972d1e6eb05eeb6a0b4a40ebf7e79e9bcb82f9399188252f8782ab84fcc021e9e8ef3f8eb95d333166a4ceb205613f7bd105704"; } 158 + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0/linux-x86_64/si/firefox-48.0.tar.bz2"; locale = "si"; arch = "linux-x86_64"; sha512 = "6abe3abb6771e8bcf1880e777df1f7517b6c784d320e3ca8ae709befe802adca51ddc5996910c6bf7d570e12bc6e3564872001bcb28a1f0143eddd33be3af9c8"; } 159 + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0/linux-i686/sk/firefox-48.0.tar.bz2"; locale = "sk"; arch = "linux-i686"; sha512 = "dc6c4bce34a4eae6c9217e116dc558956fd500b3c4ddb8d88a6067c7d6ef746f19901014c1cc3fcb826695519a62aecfa8091eb58f360cfa4c1e65b34df9c2b2"; } 160 + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0/linux-x86_64/sk/firefox-48.0.tar.bz2"; locale = "sk"; arch = "linux-x86_64"; sha512 = "56771e20b4148ef16445ebb8f59b87b00eb7aa1d3174beb77eefdc2868a3468e6cc4e811cafddeca8b7b9e5b88b8c75101cb3a78600c17fe0376580d8cc4ad54"; } 161 + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0/linux-i686/sl/firefox-48.0.tar.bz2"; locale = "sl"; arch = "linux-i686"; sha512 = "737a878720bbf0038145aff1a460debb7065b68a07db5d6ff46234fbb39eb06d0a3d5b6b2b188997259e6e8e41af30b401646b2064e55e7b6ee25cf5c63b3a02"; } 162 + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0/linux-x86_64/sl/firefox-48.0.tar.bz2"; locale = "sl"; arch = "linux-x86_64"; sha512 = "a5767047a75bdb5839e9ef55c50adac95c6f6d60bd0e4bbbee531657c4cb37db0e51b82a9db498c3cb151496cb0f2f72126efe45627d0c6c8057a081d2c2be35"; } 163 + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0/linux-i686/son/firefox-48.0.tar.bz2"; locale = "son"; arch = "linux-i686"; sha512 = "3f9f457096b086e35757594305c446591f33d414b9a056c4869aea05d841d378abd9c36c4ede67d461afd7ad1433ffbc091da45d49df8c98829e6ba303778791"; } 164 + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0/linux-x86_64/son/firefox-48.0.tar.bz2"; locale = "son"; arch = "linux-x86_64"; sha512 = "702df22f5564d3ae3db222d6ebf0ba96653233c8596a910a7a599f43021dbaaa2f2911a6c3414f78305ab428877d303bb7e8a42336633c359a1f96918b5ef048"; } 165 + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0/linux-i686/sq/firefox-48.0.tar.bz2"; locale = "sq"; arch = "linux-i686"; sha512 = "3bfdd90de86a74c5f9dfece1878884ac652a04e3d6bfc9245d40703ff30ca000834cf71333596f5c84e7bbaecd02b0068b4e221aa8515924011afebe82c3018f"; } 166 + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0/linux-x86_64/sq/firefox-48.0.tar.bz2"; locale = "sq"; arch = "linux-x86_64"; sha512 = "d1b26f23a8ce2023f4b191b33871ea03ef361d9defd81c9ede4508ac9f8d2902999258bf2975e0f92120aa9109808f5818ad546d059b052327911b854f5a09cd"; } 167 + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0/linux-i686/sr/firefox-48.0.tar.bz2"; locale = "sr"; arch = "linux-i686"; sha512 = "4834ecae89b424d1152650a1a2f3c1f9f900afff09a713fc9158834bc904fd0063742f47cba7afe05c9c32048ae2a9929dad9485717f759946348c081ef09e4a"; } 168 + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0/linux-x86_64/sr/firefox-48.0.tar.bz2"; locale = "sr"; arch = "linux-x86_64"; sha512 = "a625bcf7277694a8ec2bea0a561b581b9fa5062d67c6f5a247f8b1cbf29860838a6d24902208cdee3116b6ef2bd97ff094a7088b45b70ad66f9d638febb12e01"; } 169 + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0/linux-i686/sv-SE/firefox-48.0.tar.bz2"; locale = "sv-SE"; arch = "linux-i686"; sha512 = "7a4bde2aa79928adc3dcf75f4d1e267e26cae47fa03086aa4586760551b78219a78a22da41144eb402e6efd77830200858d01415d434020da433447119494e68"; } 170 + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0/linux-x86_64/sv-SE/firefox-48.0.tar.bz2"; locale = "sv-SE"; arch = "linux-x86_64"; sha512 = "b2de3cee2384b183cff272b1856f3911655346704d768a874d44ae7a78bf2debe3fd006ee5fbcd1f44f3cc0687fd851832231c5c36c317952d5dd9e06d3a9f66"; } 171 + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0/linux-i686/ta/firefox-48.0.tar.bz2"; locale = "ta"; arch = "linux-i686"; sha512 = "0e7483aadeb8a588075c688de52dc7c9278f3f72b003e10115cf5353d0100e63001691f8e09e5155f0f544e847c3965a3e938b2e4b640a4dbdb9eaa837d5fa1e"; } 172 + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0/linux-x86_64/ta/firefox-48.0.tar.bz2"; locale = "ta"; arch = "linux-x86_64"; sha512 = "73bdb7c53dcd17a14ffbdfe34d5053b00d8f1f096869be84a5a2dcd64effe14670081da3ff71fdab8cd636b76ab63fa09f4f03d6da8fee61007eaa2395b1eff0"; } 173 + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0/linux-i686/te/firefox-48.0.tar.bz2"; locale = "te"; arch = "linux-i686"; sha512 = "35f4e0914262392b491c1379ffc81bc70206965511c54b14fcca3004a67938b0dfcacdb89bf1fb1485e5f43b4bca1b9f0ccb7bc1a7734d55ec9b6e6fea9f7050"; } 174 + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0/linux-x86_64/te/firefox-48.0.tar.bz2"; locale = "te"; arch = "linux-x86_64"; sha512 = "2aa1f92a0d3d60e1e9a38fa08b76d951cbedba208f48298cc41dcb52bb60f904fd34bb124b7ad92da672a921df13abf32cf4defc05aed0a714de7b8503d240d9"; } 175 + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0/linux-i686/th/firefox-48.0.tar.bz2"; locale = "th"; arch = "linux-i686"; sha512 = "b70ced17faae84781ab512e2d84d31204dea6fb074072bd60529f52209135a71d4270d4ad7c21173de9e545e65785d066d453fa16ee28ada39708e256451be2f"; } 176 + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0/linux-x86_64/th/firefox-48.0.tar.bz2"; locale = "th"; arch = "linux-x86_64"; sha512 = "91767bda7438695142b9eb16d311ecdc8e884d572775627867a03e85564ca20499f1892cf948dc7daee17fcc39885c811bb37759db406393cbc263dcb8bf95e4"; } 177 + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0/linux-i686/tr/firefox-48.0.tar.bz2"; locale = "tr"; arch = "linux-i686"; sha512 = "44ffbf4cf5993243ffe6308ff91aa4025020546cee5d446481ae1b9dade1c4f98a726ec9ebed15ecf63437a0039e42265a4d4444dc3560ea42201832c0db03f1"; } 178 + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0/linux-x86_64/tr/firefox-48.0.tar.bz2"; locale = "tr"; arch = "linux-x86_64"; sha512 = "48869a5d1c60a43c7bdabe9d55060f6211dbd18e8f4e438cc0245c151f37eea748c3c05c9e9811e522df7bff7a6b531ce1bba062738e95244aa2e0e47fbe9ee2"; } 179 + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0/linux-i686/uk/firefox-48.0.tar.bz2"; locale = "uk"; arch = "linux-i686"; sha512 = "93a0617b74fd8e19b7289cba78182b56d76e754e55b5e666fe8ad34e7f0b8529d3b5575a1d695f5a8eb19085a2e09d5c223a5663c11e5cb1011700b0ab80ca3e"; } 180 + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0/linux-x86_64/uk/firefox-48.0.tar.bz2"; locale = "uk"; arch = "linux-x86_64"; sha512 = "a0cfb64b8ceb111509778c2af0d6846eb2b212db04bef166c74b47c7c85dba51379ad1b4d97f0955c75ef04518742136fc9cf018359465c9faaea082cd379906"; } 181 + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0/linux-i686/uz/firefox-48.0.tar.bz2"; locale = "uz"; arch = "linux-i686"; sha512 = "9ff52914522dffde0c4f2767daefc4cf8e3f15075cdee1bd63fb8cbdf052c081ccb82cf22091b066d5a4ad1243c7efdc384b972fcad6985b4c0d47de03ec9131"; } 182 + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0/linux-x86_64/uz/firefox-48.0.tar.bz2"; locale = "uz"; arch = "linux-x86_64"; sha512 = "85f029d028611d25055ec115eef07b1433c61c0d1c8364c8fb8aaa9ad8d89ea8ac477fdae90a79653a45a47a936397c0f4f758aa2a708ce9b12d2872909f1a01"; } 183 + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0/linux-i686/vi/firefox-48.0.tar.bz2"; locale = "vi"; arch = "linux-i686"; sha512 = "deb75ecd16deae76ed58caa155234c22e5829c087be9a7a1309a13fab822c524f879aa752b76945a7ff1bb0527006757583180cd7cdcee22dd6430cdf43b3fb5"; } 184 + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0/linux-x86_64/vi/firefox-48.0.tar.bz2"; locale = "vi"; arch = "linux-x86_64"; sha512 = "b36d4a40c11c2cd4e0bc92afd4147c2114554f87d852090f94e13854da2b27ad4a1bfee349d8a92993fa40783adbd4203d2e13767734176b47548ea81c365619"; } 185 + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0/linux-i686/xh/firefox-48.0.tar.bz2"; locale = "xh"; arch = "linux-i686"; sha512 = "8efda5736eaff631c1d8a752fcc58a57c6bb3b9ad10cd2f1803e31c25ccfeaac53b5118ceaac994131b40aefa2822bbffc584f54a9f46bcb31a87d76c9eb7024"; } 186 + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0/linux-x86_64/xh/firefox-48.0.tar.bz2"; locale = "xh"; arch = "linux-x86_64"; sha512 = "108ddf05b9552eb25165e093fed70f99fb91f14ba7db17a32c55715da22da702c3cc0d52e1c54ec48b8111e570dff00c88efc2be665ab39f804f733f2778e62d"; } 187 + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0/linux-i686/zh-CN/firefox-48.0.tar.bz2"; locale = "zh-CN"; arch = "linux-i686"; sha512 = "56bc566490056d46e9adb2a63fe37353eff79f41d7f657d67265045b57394e67578e8dc8485f8500603ec94f6326a2f643d3fd7dbb522912ecbc4571863d804b"; } 188 + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0/linux-x86_64/zh-CN/firefox-48.0.tar.bz2"; locale = "zh-CN"; arch = "linux-x86_64"; sha512 = "0da88b26ca2fba192bce4462945f284addd1b660c81baec7e102daad61c18471b4a76a0c4c66dd85e061278dd69e418e999c58bd7c6606426d126ff8ecaf2e3e"; } 189 + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0/linux-i686/zh-TW/firefox-48.0.tar.bz2"; locale = "zh-TW"; arch = "linux-i686"; sha512 = "1d410032e898d0437cf1ed669fdbafe9103944c35c135240c25a3e56116bdd2d926e3632556fbc916d465287e78ec67bc7204d8147596d0411d10f914fefccd8"; } 190 + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0/linux-x86_64/zh-TW/firefox-48.0.tar.bz2"; locale = "zh-TW"; arch = "linux-x86_64"; sha512 = "6c39f409eb4b48a5b38dc4d6a82f4d9d82b78ea82af10f338108f0237ecd1075cb9a00d5786b7aa9d83051a994e0a05f59f91f12d2b52953bacfdcfd05411ed0"; } 191 191 ]; 192 192 }
+50 -53
pkgs/applications/networking/irc/konversation/1.6.nix
··· 1 - { stdenv 1 + { kdeDerivation 2 2 , lib 3 3 , fetchurl 4 - , cmake 5 - , extra-cmake-modules 4 + , ecm 6 5 , kbookmarks 7 6 , karchive 8 7 , kconfig 9 8 , kconfigwidgets 10 9 , kcoreaddons 11 10 , kdbusaddons 11 + , kdeWrapper 12 12 , kdoctools 13 13 , kemoticons 14 14 , kglobalaccel ··· 24 24 , makeQtWrapper 25 25 , solid 26 26 , sonnet 27 - , phonon}: 27 + , phonon 28 + }: 28 29 29 30 let 30 - pn = "konversation"; 31 - v = "1.6"; 32 - in 31 + unwrapped = let 32 + pname = "konversation"; 33 + version = "1.6.1"; 34 + in kdeDerivation rec { 35 + name = "${pname}-${version}"; 33 36 34 - stdenv.mkDerivation rec { 35 - name = "${pn}-${v}"; 37 + src = fetchurl { 38 + url = "mirror://kde/stable/${pname}/${version}/src/${name}.tar.xz"; 39 + sha256 = "28346d6629261a5328c43ffa09c12e37743b3ef4f4bc4c411d39bc19f7bf06c6"; 40 + }; 36 41 37 - src = fetchurl { 38 - url = "mirror://kde/stable/${pn}/${v}/src/${name}.tar.xz"; 39 - sha256 = "789fd75644bf54606778971310433dbe2bc01ac0917b34bc4e8cac88e204d5b6"; 40 - }; 42 + buildInputs = [ 43 + kbookmarks 44 + karchive 45 + kconfig 46 + kconfigwidgets 47 + kcoreaddons 48 + kdbusaddons 49 + kdoctools 50 + kemoticons 51 + kglobalaccel 52 + ki18n 53 + kiconthemes 54 + kidletime 55 + kitemviews 56 + knotifications 57 + knotifyconfig 58 + kio 59 + kparts 60 + kwallet 61 + solid 62 + sonnet 63 + phonon 64 + ]; 41 65 42 - buildInputs = [ 43 - cmake 44 - extra-cmake-modules 45 - kbookmarks 46 - karchive 47 - kconfig 48 - kconfigwidgets 49 - kcoreaddons 50 - kdbusaddons 51 - kdoctools 52 - kemoticons 53 - kglobalaccel 54 - ki18n 55 - kiconthemes 56 - kidletime 57 - kitemviews 58 - knotifications 59 - knotifyconfig 60 - kio 61 - kparts 62 - kwallet 63 - solid 64 - sonnet 65 - phonon 66 - ]; 66 + nativeBuildInputs = [ 67 + ecm 68 + kdoctools 69 + ]; 67 70 68 - nativeBuildInputs = [ 69 - extra-cmake-modules 70 - kdoctools 71 - makeQtWrapper 72 - ]; 73 - 74 - postInstall = '' 75 - wrapQtProgram "$out/bin/konversation" 76 - ''; 77 - 78 - meta = { 79 - description = "Integrated IRC client for KDE"; 80 - license = with lib.licenses; [ gpl2 ]; 81 - maintainers = with lib.maintainers; [ fridh ]; 82 - homepage = https://konversation.kde.org; 71 + meta = { 72 + description = "Integrated IRC client for KDE"; 73 + license = with lib.licenses; [ gpl2 ]; 74 + maintainers = with lib.maintainers; [ fridh ]; 75 + homepage = https://konversation.kde.org; 76 + }; 83 77 }; 78 + in kdeWrapper unwrapped { 79 + targets = [ "bin/konversation" ]; 84 80 } 81 +
+3 -1
pkgs/applications/networking/mailreaders/notmuch/default.nix
··· 5 5 }: 6 6 7 7 stdenv.mkDerivation rec { 8 - name = "notmuch-0.22"; 8 + version = "0.22"; 9 + name = "notmuch-${version}"; 9 10 10 11 passthru = { 11 12 pythonSourceRoot = "${name}/bindings/python"; 13 + inherit version; 12 14 }; 13 15 14 16 src = fetchurl {
+46
pkgs/applications/networking/mailreaders/notmuch/mutt.nix
··· 1 + { stdenv, lib, perl, perlPackages, makeWrapper, coreutils, notmuch }: 2 + 3 + stdenv.mkDerivation rec { 4 + name = "notmuch-mutt-${version}"; 5 + version = notmuch.version; 6 + 7 + outputs = [ "out" ]; 8 + 9 + dontStrip = true; 10 + 11 + buildInputs = [ 12 + perl 13 + makeWrapper 14 + ] ++ (with perlPackages; [ 15 + FileRemove 16 + DigestSHA1 17 + Later 18 + MailBox 19 + MailMaildir 20 + MailTools 21 + StringShellQuote 22 + TermReadLineGnu 23 + ]); 24 + 25 + src = notmuch.src; 26 + 27 + phases = [ "unpackPhase" "installPhase" "fixupPhase" ]; 28 + 29 + installPhase = '' 30 + ${coreutils}/bin/install -Dm755 \ 31 + ./contrib/notmuch-mutt/notmuch-mutt \ 32 + $out/bin/notmuch-mutt 33 + 34 + wrapProgram $out/bin/notmuch-mutt \ 35 + --prefix PERL5LIB : $PERL5LIB 36 + ''; 37 + 38 + meta = with lib; { 39 + inherit version; 40 + description = "Mutt support for notmuch"; 41 + homepage = http://notmuchmua.org/; 42 + license = with licenses; mit; 43 + maintainers = with maintainers; [ peterhoeg ]; 44 + platforms = platforms.unix; 45 + }; 46 + }
+3 -1
pkgs/applications/office/libreoffice/default.nix
··· 76 76 77 77 # For some reason librdf_redland sometimes refers to rasqal.h instead 78 78 # of rasqal/rasqal.h 79 - NIX_CFLAGS_COMPILE="-I${librdf_rasqal}/include/rasqal"; 79 + # curl upgrade to 7.50.0 (#17152) changes the libcurl headers slightly and 80 + # therefore requires the -fpermissive flag until this package gets updated 81 + NIX_CFLAGS_COMPILE="-I${librdf_rasqal}/include/rasqal -fpermissive"; 80 82 81 83 # If we call 'configure', 'make' will then call configure again without parameters. 82 84 # It's their system.
+3 -1
pkgs/applications/office/libreoffice/still.nix
··· 76 76 77 77 # For some reason librdf_redland sometimes refers to rasqal.h instead 78 78 # of rasqal/rasqal.h 79 - NIX_CFLAGS_COMPILE="-I${librdf_rasqal}/include/rasqal"; 79 + # curl upgrade to 7.50.0 (#17152) changes the libcurl headers slightly and 80 + # therefore requires the -fpermissive flag until this package gets updated 81 + NIX_CFLAGS_COMPILE="-I${librdf_rasqal}/include/rasqal -fpermissive"; 80 82 81 83 # If we call 'configure', 'make' will then call configure again without parameters. 82 84 # It's their system.
+2 -1
pkgs/build-support/vm/default.nix
··· 2 2 , kernel ? pkgs.linux 3 3 , img ? "bzImage" 4 4 , rootModules ? 5 - [ "virtio_pci" "virtio_blk" "virtio_balloon" "ext4" "unix" "9p" "9pnet_virtio" "rtc_cmos" ] 5 + [ "virtio_pci" "virtio_blk" "virtio_balloon" "virtio_rng" "ext4" "unix" "9p" "9pnet_virtio" "rtc_cmos" ] 6 6 }: 7 7 8 8 with pkgs; ··· 218 218 ${qemuProg} \ 219 219 ${lib.optionalString (pkgs.stdenv.system == "x86_64-linux") "-cpu kvm64"} \ 220 220 -nographic -no-reboot \ 221 + -device virtio-rng-pci \ 221 222 -virtfs local,path=/nix/store,security_model=none,mount_tag=store \ 222 223 -virtfs local,path=$TMPDIR/xchg,security_model=none,mount_tag=xchg \ 223 224 -drive file=$diskImage,if=virtio,cache=unsafe,werror=report \
+30 -23
pkgs/desktops/kde-5/applications/ark/default.nix
··· 1 1 { 2 - kdeApp, lib, 2 + kdeApp, lib, kdeWrapper, 3 3 4 - ecm, kdoctools, makeQtWrapper, 4 + ecm, kdoctools, makeWrapper, 5 5 6 6 karchive, kconfig, kcrash, kdbusaddons, ki18n, kiconthemes, khtml, kio, 7 7 kservice, kpty, kwidgetsaddons, libarchive, ··· 10 10 p7zip, unrar, unzipNLS, zip 11 11 }: 12 12 13 - kdeApp { 14 - name = "ark"; 15 - nativeBuildInputs = [ 16 - ecm kdoctools makeQtWrapper 17 - ]; 18 - propagatedBuildInputs = [ 19 - khtml ki18n kio karchive kconfig kcrash kdbusaddons kiconthemes kservice 20 - kpty kwidgetsaddons libarchive 21 - ]; 22 - postInstall = 23 - let 24 - PATH = lib.makeBinPath [ 25 - p7zip unrar unzipNLS zip 13 + let 14 + unwrapped = 15 + kdeApp { 16 + name = "ark"; 17 + nativeBuildInputs = [ 18 + ecm kdoctools makeWrapper 19 + ]; 20 + propagatedBuildInputs = [ 21 + khtml ki18n kio karchive kconfig kcrash kdbusaddons kiconthemes kservice 22 + kpty kwidgetsaddons libarchive 26 23 ]; 27 - in '' 28 - wrapQtProgram "$out/bin/ark" \ 29 - --prefix PATH : "${PATH}" 30 - ''; 31 - meta = { 32 - license = with lib.licenses; [ gpl2 lgpl3 ]; 33 - maintainers = [ lib.maintainers.ttuegel ]; 34 - }; 24 + postInstall = 25 + let 26 + PATH = lib.makeBinPath [ 27 + p7zip unrar unzipNLS zip 28 + ]; 29 + in '' 30 + wrapProgram "$out/bin/ark" \ 31 + --prefix PATH : "${PATH}" 32 + ''; 33 + meta = { 34 + license = with lib.licenses; [ gpl2 lgpl3 ]; 35 + maintainers = [ lib.maintainers.ttuegel ]; 36 + }; 37 + }; 38 + in 39 + kdeWrapper unwrapped 40 + { 41 + targets = [ "bin/ark" ]; 35 42 }
+3 -1
pkgs/desktops/kde-5/applications/dolphin-plugins.nix
··· 11 11 maintainers = [ lib.maintainers.ttuegel ]; 12 12 }; 13 13 nativeBuildInputs = [ ecm kdoctools ]; 14 - propagatedBuildInputs = [ dolphin kdelibs4support ki18n kio kxmlgui ]; 14 + propagatedBuildInputs = [ 15 + dolphin.unwrapped kdelibs4support ki18n kio kxmlgui 16 + ]; 15 17 }
+26 -21
pkgs/desktops/kde-5/applications/dolphin.nix
··· 1 1 { 2 - kdeApp, lib, 2 + kdeApp, lib, kdeWrapper, 3 3 ecm, kdoctools, makeQtWrapper, 4 - baloo, baloo-widgets, kactivities, kbookmarks, kcmutils, kcompletion, kconfig, 5 - kcoreaddons, kdelibs4support, kdbusaddons, kfilemetadata, ki18n, kiconthemes, 6 - kinit, kio, knewstuff, knotifications, kparts, ktexteditor, kwindowsystem, 7 - phonon, solid 4 + baloo, baloo-widgets, dolphin-plugins, kactivities, kbookmarks, kcmutils, 5 + kcompletion, kconfig, kcoreaddons, kdelibs4support, kdbusaddons, 6 + kfilemetadata, ki18n, kiconthemes, kinit, kio, knewstuff, knotifications, 7 + konsole, kparts, ktexteditor, kwindowsystem, phonon, solid 8 8 }: 9 9 10 - kdeApp { 11 - name = "dolphin"; 12 - meta = { 13 - license = with lib.licenses; [ gpl2 fdl12 ]; 14 - maintainers = [ lib.maintainers.ttuegel ]; 15 - }; 16 - nativeBuildInputs = [ ecm kdoctools makeQtWrapper ]; 17 - propagatedBuildInputs = [ 18 - baloo baloo-widgets kactivities kbookmarks kcmutils kcompletion kconfig 19 - kcoreaddons kdelibs4support kdbusaddons kfilemetadata ki18n kiconthemes 20 - kinit kio knewstuff knotifications kparts ktexteditor kwindowsystem phonon 21 - solid 22 - ]; 23 - postInstall = '' 24 - wrapQtProgram "$out/bin/dolphin" 25 - ''; 10 + let 11 + unwrapped = 12 + kdeApp { 13 + name = "dolphin"; 14 + meta = { 15 + license = with lib.licenses; [ gpl2 fdl12 ]; 16 + maintainers = [ lib.maintainers.ttuegel ]; 17 + }; 18 + nativeBuildInputs = [ ecm kdoctools makeQtWrapper ]; 19 + propagatedBuildInputs = [ 20 + baloo baloo-widgets kactivities kbookmarks kcmutils kcompletion kconfig 21 + kcoreaddons kdelibs4support kdbusaddons kfilemetadata ki18n kiconthemes 22 + kinit kio knewstuff knotifications kparts ktexteditor kwindowsystem 23 + phonon solid 24 + ]; 25 + }; 26 + in 27 + kdeWrapper unwrapped 28 + { 29 + targets = [ "bin/dolphin" ]; 30 + paths = [ dolphin-plugins konsole.unwrapped ]; 26 31 }
+17 -16
pkgs/desktops/kde-5/applications/filelight.nix
··· 1 1 { 2 - kdeApp, lib, 3 - ecm, kdoctools, makeQtWrapper, 2 + kdeApp, lib, kdeWrapper, 3 + ecm, kdoctools, 4 4 kio, kparts, kxmlgui, qtscript, solid 5 5 }: 6 6 7 - kdeApp { 8 - name = "filelight"; 9 - meta = { 10 - license = with lib.licenses; [ gpl2 ]; 11 - maintainers = with lib.maintainers; [ fridh vcunat ]; 12 - }; 13 - nativeBuildInputs = [ ecm kdoctools makeQtWrapper ]; 14 - propagatedBuildInputs = [ 15 - kio kparts kxmlgui qtscript solid 16 - ]; 17 - postInstall = '' 18 - wrapQtProgram "$out/bin/filelight" 19 - ''; 20 - } 7 + let 8 + unwrapped = 9 + kdeApp { 10 + name = "filelight"; 11 + meta = { 12 + license = with lib.licenses; [ gpl2 ]; 13 + maintainers = with lib.maintainers; [ fridh vcunat ]; 14 + }; 15 + nativeBuildInputs = [ ecm kdoctools ]; 16 + propagatedBuildInputs = [ 17 + kio kparts kxmlgui qtscript solid 18 + ]; 19 + }; 20 + in 21 + kdeWrapper unwrapped { targets = [ "bin/filelight" ]; }
+18 -16
pkgs/desktops/kde-5/applications/gwenview.nix
··· 1 1 { 2 - kdeApp, lib, 3 - ecm, kdoctools, makeQtWrapper, 2 + kdeApp, lib, kdeWrapper, 3 + ecm, kdoctools, 4 4 baloo, exiv2, kactivities, kdelibs4support, kio, lcms2, phonon, 5 5 qtsvg, qtx11extras 6 6 }: 7 7 8 - kdeApp { 9 - name = "gwenview"; 10 - meta = { 11 - license = with lib.licenses; [ gpl2 fdl12 ]; 12 - maintainers = [ lib.maintainers.ttuegel ]; 13 - }; 14 - nativeBuildInputs = [ ecm kdoctools makeQtWrapper ]; 15 - propagatedBuildInputs = [ 16 - baloo kactivities kdelibs4support kio qtx11extras exiv2 lcms2 phonon qtsvg 17 - ]; 18 - postInstall = '' 19 - wrapQtProgram "$out/bin/gwenview" 20 - ''; 21 - } 8 + let 9 + unwrapped = 10 + kdeApp { 11 + name = "gwenview"; 12 + meta = { 13 + license = with lib.licenses; [ gpl2 fdl12 ]; 14 + maintainers = [ lib.maintainers.ttuegel ]; 15 + }; 16 + nativeBuildInputs = [ ecm kdoctools ]; 17 + propagatedBuildInputs = [ 18 + baloo kactivities kdelibs4support kio qtx11extras exiv2 lcms2 phonon 19 + qtsvg 20 + ]; 21 + }; 22 + in 23 + kdeWrapper unwrapped { targets = [ "bin/gwenview" ]; }
+27 -22
pkgs/desktops/kde-5/applications/kate.nix
··· 1 1 { 2 - kdeApp, lib, makeQtWrapper, ecm, kdoctools, 3 - kactivities, kconfig, kcrash, kguiaddons, kiconthemes, ki18n, kinit, 4 - kjobwidgets, kio, kparts, ktexteditor, kwindowsystem, kxmlgui, kdbusaddons, 5 - kwallet, plasma-framework, kitemmodels, knotifications, qtscript, 6 - threadweaver, knewstuff, libgit2 2 + kdeApp, lib, kdeWrapper, 3 + ecm, kdoctools, 4 + kactivities, kconfig, kcrash, kdbusaddons, kguiaddons, kiconthemes, ki18n, 5 + kinit, kio, kitemmodels, kjobwidgets, knewstuff, knotifications, konsole, 6 + kparts, ktexteditor, kwindowsystem, kwallet, kxmlgui, libgit2, 7 + plasma-framework, qtscript, threadweaver 7 8 }: 8 9 9 - kdeApp { 10 - name = "kate"; 11 - meta = { 12 - license = with lib.licenses; [ gpl3 lgpl3 lgpl2 ]; 13 - maintainers = [ lib.maintainers.ttuegel ]; 14 - }; 15 - nativeBuildInputs = [ ecm kdoctools makeQtWrapper ]; 16 - propagatedBuildInputs = [ 17 - kactivities ki18n kio ktexteditor kwindowsystem plasma-framework qtscript 18 - kconfig kcrash kguiaddons kiconthemes kinit kjobwidgets kparts kxmlgui 19 - kdbusaddons kwallet kitemmodels knotifications threadweaver knewstuff 20 - libgit2 21 - ]; 22 - postInstall = '' 23 - wrapQtProgram "$out/bin/kate" 24 - wrapQtProgram "$out/bin/kwrite" 25 - ''; 10 + let 11 + unwrapped = 12 + kdeApp { 13 + name = "kate"; 14 + meta = { 15 + license = with lib.licenses; [ gpl3 lgpl3 lgpl2 ]; 16 + maintainers = [ lib.maintainers.ttuegel ]; 17 + }; 18 + nativeBuildInputs = [ ecm kdoctools ]; 19 + propagatedBuildInputs = [ 20 + kactivities ki18n kio ktexteditor kwindowsystem plasma-framework 21 + qtscript kconfig kcrash kguiaddons kiconthemes kinit kjobwidgets kparts 22 + kxmlgui kdbusaddons kwallet kitemmodels knotifications threadweaver 23 + knewstuff libgit2 24 + ]; 25 + }; 26 + in 27 + kdeWrapper unwrapped 28 + { 29 + targets = [ "bin/kate" "bin/kwrite" ]; 30 + paths = [ konsole.unwrapped ]; 26 31 }
+18 -17
pkgs/desktops/kde-5/applications/kcalc.nix
··· 1 1 { 2 - kdeApp, lib, makeQtWrapper, kdoctools, 3 - ecm, kconfig, kconfigwidgets, kguiaddons, kinit, 4 - knotifications, gmp 2 + kdeApp, lib, kdeWrapper, 3 + ecm, kdoctools, 4 + kconfig, kconfigwidgets, kguiaddons, kinit, knotifications, gmp 5 5 }: 6 6 7 - kdeApp { 8 - name = "kcalc"; 9 - meta = { 10 - license = with lib.licenses; [ gpl2 ]; 11 - maintainers = [ lib.maintainers.fridh ]; 12 - }; 13 - nativeBuildInputs = [ ecm kdoctools makeQtWrapper ]; 14 - propagatedBuildInputs = [ 15 - gmp kconfig kconfigwidgets kguiaddons kinit knotifications 16 - ]; 17 - postInstall = '' 18 - wrapQtProgram "$out/bin/kcalc" 19 - ''; 20 - } 7 + let 8 + unwrapped = 9 + kdeApp { 10 + name = "kcalc"; 11 + meta = { 12 + license = with lib.licenses; [ gpl2 ]; 13 + maintainers = [ lib.maintainers.fridh ]; 14 + }; 15 + nativeBuildInputs = [ ecm kdoctools ]; 16 + propagatedBuildInputs = [ 17 + gmp kconfig kconfigwidgets kguiaddons kinit knotifications 18 + ]; 19 + }; 20 + in 21 + kdeWrapper unwrapped { targets = [ "bin/kcalc" ]; }
+14 -10
pkgs/desktops/kde-5/applications/kcolorchooser.nix
··· 1 1 { 2 - kdeApp, lib, 2 + kdeApp, lib, kdeWrapper, 3 3 ecm, ki18n, kwidgetsaddons, kxmlgui 4 4 }: 5 5 6 - kdeApp { 7 - name = "kcolorchooser"; 8 - meta = { 9 - license = with lib.licenses; [ mit ]; 10 - maintainers = [ lib.maintainers.ttuegel ]; 11 - }; 12 - nativeBuildInputs = [ ecm ]; 13 - propagatedBuildInputs = [ ki18n kwidgetsaddons kxmlgui ]; 14 - } 6 + let 7 + unwrapped = 8 + kdeApp { 9 + name = "kcolorchooser"; 10 + meta = { 11 + license = with lib.licenses; [ mit ]; 12 + maintainers = [ lib.maintainers.ttuegel ]; 13 + }; 14 + nativeBuildInputs = [ ecm ]; 15 + propagatedBuildInputs = [ ki18n kwidgetsaddons kxmlgui ]; 16 + }; 17 + in 18 + kdeWrapper unwrapped { targets = [ "bin/kcolorchooser" ]; }
+14 -12
pkgs/desktops/kde-5/applications/khelpcenter.nix
··· 1 1 { 2 - kdeApp, ecm, kdoctools, makeQtWrapper, 2 + kdeApp, kdeWrapper, 3 + ecm, kdoctools, 3 4 grantlee, kconfig, kcoreaddons, kdbusaddons, ki18n, kinit, kcmutils, 4 5 kdelibs4support, khtml, kservice, xapian 5 6 }: 6 7 7 - kdeApp { 8 - name = "khelpcenter"; 9 - nativeBuildInputs = [ ecm kdoctools makeQtWrapper ]; 10 - buildInputs = [ 11 - grantlee kdelibs4support khtml ki18n kconfig kcoreaddons kdbusaddons kinit 12 - kcmutils kservice xapian 13 - ]; 14 - postInstall = '' 15 - wrapQtProgram "$out/bin/khelpcenter" 16 - ''; 17 - } 8 + let 9 + unwrapped = 10 + kdeApp { 11 + name = "khelpcenter"; 12 + nativeBuildInputs = [ ecm kdoctools ]; 13 + buildInputs = [ 14 + grantlee kdelibs4support khtml ki18n kconfig kcoreaddons kdbusaddons 15 + kinit kcmutils kservice xapian 16 + ]; 17 + }; 18 + in 19 + kdeWrapper unwrapped { targets = [ "bin/khelpcenter" ]; }
+14 -15
pkgs/desktops/kde-5/applications/kompare.nix
··· 1 1 { 2 - kdeApp, lib, ecm, kdoctools, makeQtWrapper, 2 + kdeApp, lib, kdeWrapper, 3 + ecm, kdoctools, 3 4 kparts, ktexteditor, kwidgetsaddons, libkomparediff2 4 5 }: 5 6 6 - kdeApp { 7 - name = "kompare"; 8 - meta = { 9 - license = with lib.licenses; [ gpl2 ]; 10 - }; 11 - 12 - nativeBuildInputs = [ ecm kdoctools makeQtWrapper ]; 13 - 14 - propagatedBuildInputs = [ kparts ktexteditor kwidgetsaddons libkomparediff2 ]; 15 - 16 - postInstall = '' 17 - wrapQtProgram "$out/bin/kompare" 18 - ''; 19 - } 7 + let 8 + unwrapped = 9 + kdeApp { 10 + name = "kompare"; 11 + meta = { license = with lib.licenses; [ gpl2 ]; }; 12 + nativeBuildInputs = [ ecm kdoctools ]; 13 + propagatedBuildInputs = [ 14 + kparts ktexteditor kwidgetsaddons libkomparediff2 15 + ]; 16 + }; 17 + in 18 + kdeWrapper unwrapped { targets = [ "bin/kompare" ]; }
+20 -18
pkgs/desktops/kde-5/applications/konsole.nix
··· 1 1 { 2 - kdeApp, lib, 3 - ecm, kdoctools, makeQtWrapper, 2 + kdeApp, lib, kdeWrapper, 3 + ecm, kdoctools, 4 4 kbookmarks, kcompletion, kconfig, kconfigwidgets, kcoreaddons, kguiaddons, 5 5 ki18n, kiconthemes, kinit, kdelibs4support, kio, knotifications, 6 6 knotifyconfig, kparts, kpty, kservice, ktextwidgets, kwidgetsaddons, 7 7 kwindowsystem, kxmlgui, qtscript 8 8 }: 9 9 10 - kdeApp { 11 - name = "konsole"; 12 - meta = { 13 - license = with lib.licenses; [ gpl2 lgpl21 fdl12 ]; 14 - maintainers = [ lib.maintainers.ttuegel ]; 15 - }; 16 - nativeBuildInputs = [ ecm kdoctools makeQtWrapper ]; 17 - propagatedBuildInputs = [ 18 - kdelibs4support ki18n kwindowsystem qtscript kbookmarks kcompletion kconfig 19 - kconfigwidgets kcoreaddons kguiaddons kiconthemes kinit kio knotifications 20 - knotifyconfig kparts kpty kservice ktextwidgets kwidgetsaddons kxmlgui 21 - ]; 22 - postInstall = '' 23 - wrapQtProgram "$out/bin/konsole" 24 - ''; 25 - } 10 + let 11 + unwrapped = 12 + kdeApp { 13 + name = "konsole"; 14 + meta = { 15 + license = with lib.licenses; [ gpl2 lgpl21 fdl12 ]; 16 + maintainers = [ lib.maintainers.ttuegel ]; 17 + }; 18 + nativeBuildInputs = [ ecm kdoctools ]; 19 + propagatedBuildInputs = [ 20 + kdelibs4support ki18n kwindowsystem qtscript kbookmarks kcompletion 21 + kconfig kconfigwidgets kcoreaddons kguiaddons kiconthemes kinit kio 22 + knotifications knotifyconfig kparts kpty kservice ktextwidgets 23 + kwidgetsaddons kxmlgui 24 + ]; 25 + }; 26 + in 27 + kdeWrapper unwrapped { targets = [ "bin/konsole" ]; }
+15 -15
pkgs/desktops/kde-5/applications/spectacle.nix
··· 1 1 { 2 - kdeApp, lib, ecm, kdoctools, makeQtWrapper, 2 + kdeApp, lib, kdeWrapper, 3 + ecm, kdoctools, 3 4 kconfig, kcoreaddons, kdbusaddons, kdeclarative, ki18n, kio, knotifications, 4 5 kscreen, kwidgetsaddons, kwindowsystem, kxmlgui, libkipi, xcb-util-cursor 5 6 }: 6 7 7 - kdeApp { 8 - name = "spectacle"; 9 - meta = with lib; { 10 - maintainers = with maintainers; [ ttuegel ]; 11 - }; 12 - nativeBuildInputs = [ ecm kdoctools makeQtWrapper ]; 13 - propagatedBuildInputs = [ 14 - kconfig kcoreaddons kdbusaddons kdeclarative ki18n kio knotifications 15 - kscreen kwidgetsaddons kwindowsystem kxmlgui libkipi xcb-util-cursor 16 - ]; 17 - postInstall = '' 18 - wrapQtProgram "$out/bin/spectacle" 19 - ''; 20 - } 8 + let 9 + unwrapped = 10 + kdeApp { 11 + name = "spectacle"; 12 + meta = with lib; { maintainers = with maintainers; [ ttuegel ]; }; 13 + nativeBuildInputs = [ ecm kdoctools ]; 14 + propagatedBuildInputs = [ 15 + kconfig kcoreaddons kdbusaddons kdeclarative ki18n kio knotifications 16 + kscreen kwidgetsaddons kwindowsystem kxmlgui libkipi xcb-util-cursor 17 + ]; 18 + }; 19 + in 20 + kdeWrapper unwrapped { targets = [ "bin/spectacle" ]; }
+6 -10
pkgs/desktops/kde-5/plasma/bluedevil.nix
··· 1 - { plasmaPackage, ecm, bluez-qt, kcoreaddons 2 - , kdbusaddons, kded, ki18n, kiconthemes, kio, knotifications 3 - , kwidgetsaddons, kwindowsystem, makeQtWrapper, plasma-framework 4 - , qtdeclarative, shared_mime_info 1 + { 2 + plasmaPackage, ecm, shared_mime_info, 3 + bluez-qt, kcoreaddons, kdbusaddons, kded, ki18n, kiconthemes, kio, 4 + knotifications, kwidgetsaddons, kwindowsystem, plasma-framework, qtdeclarative 5 5 }: 6 6 7 7 plasmaPackage { 8 8 name = "bluedevil"; 9 - nativeBuildInputs = [ 10 - ecm makeQtWrapper shared_mime_info 11 - ]; 9 + nativeBuildInputs = [ ecm shared_mime_info ]; 12 10 propagatedBuildInputs = [ 13 11 bluez-qt ki18n kio kwindowsystem plasma-framework qtdeclarative kcoreaddons 14 12 kdbusaddons kded kiconthemes knotifications kwidgetsaddons 15 13 ]; 16 - propagatedUserEnvPkgs = [ bluez-qt ]; 14 + propagatedUserEnvPkgs = [ bluez-qt.out ]; 17 15 postInstall = '' 18 - wrapQtProgram "$out/bin/bluedevil-wizard" 19 - wrapQtProgram "$out/bin/bluedevil-sendfile" 20 16 # Fix the location of logic.js for the plasmoid 21 17 ln -s $out/share/plasma/plasmoids/org.kde.plasma.bluetooth/contents/code/logic.js $out/share/plasma/plasmoids/org.kde.plasma.bluetooth/contents/ui/logic.js 22 18 '';
+7 -18
pkgs/desktops/kde-5/plasma/kde-cli-tools.nix
··· 1 - { plasmaPackage, ecm, kcmutils, kconfig 2 - , kdelibs4support, kdesu, kdoctools, ki18n, kiconthemes 3 - , kwindowsystem, makeQtWrapper, qtsvg, qtx11extras 1 + { 2 + plasmaPackage, ecm, 3 + kcmutils, kconfig, kdelibs4support, kdesu, kdoctools, ki18n, kiconthemes, 4 + kwindowsystem, qtsvg, qtx11extras 4 5 }: 5 6 6 7 plasmaPackage { 7 8 name = "kde-cli-tools"; 8 - nativeBuildInputs = [ ecm kdoctools makeQtWrapper ]; 9 + nativeBuildInputs = [ ecm kdoctools ]; 9 10 propagatedBuildInputs = [ 10 - kdelibs4support ki18n kwindowsystem qtsvg qtx11extras kcmutils kconfig kdesu 11 - kiconthemes 11 + kcmutils kconfig kdesu kdelibs4support ki18n kiconthemes kwindowsystem qtsvg 12 + qtx11extras 12 13 ]; 13 - postInstall = '' 14 - wrapQtProgram "$out/bin/kmimetypefinder5" 15 - wrapQtProgram "$out/bin/ksvgtopng5" 16 - wrapQtProgram "$out/bin/ktraderclient5" 17 - wrapQtProgram "$out/bin/kioclient5" 18 - wrapQtProgram "$out/bin/kdecp5" 19 - wrapQtProgram "$out/bin/keditfiletype5" 20 - wrapQtProgram "$out/bin/kcmshell5" 21 - wrapQtProgram "$out/bin/kdemv5" 22 - wrapQtProgram "$out/bin/kstart5" 23 - wrapQtProgram "$out/bin/kde-open5" 24 - ''; 25 14 }
+2 -9
pkgs/desktops/kde-5/plasma/kinfocenter.nix
··· 1 1 { plasmaPackage, ecm, kdoctools, kcmutils 2 2 , kcompletion, kconfig, kconfigwidgets, kcoreaddons, kdbusaddons 3 3 , kdeclarative, kdelibs4support, ki18n, kiconthemes, kio, kpackage 4 - , kservice, kwidgetsaddons, kxmlgui, libraw1394, makeQtWrapper 4 + , kservice, kwidgetsaddons, kxmlgui, libraw1394 5 5 , pciutils, solid 6 6 }: 7 7 8 8 plasmaPackage { 9 9 name = "kinfocenter"; 10 - nativeBuildInputs = [ 11 - ecm 12 - kdoctools 13 - makeQtWrapper 14 - ]; 10 + nativeBuildInputs = [ ecm kdoctools ]; 15 11 propagatedBuildInputs = [ 16 12 kdeclarative kdelibs4support ki18n kio kcmutils kcompletion kconfig 17 13 kconfigwidgets kcoreaddons kdbusaddons kiconthemes kpackage kservice 18 14 kwidgetsaddons kxmlgui libraw1394 pciutils solid 19 15 ]; 20 - postInstall = '' 21 - wrapQtProgram "$out/bin/kinfocenter" 22 - ''; 23 16 }
+2 -9
pkgs/desktops/kde-5/plasma/kmenuedit.nix
··· 1 1 { plasmaPackage, ecm, kdoctools, ki18n, kxmlgui 2 - , kdbusaddons, kiconthemes, kio, sonnet, kdelibs4support, makeQtWrapper 2 + , kdbusaddons, kiconthemes, kio, sonnet, kdelibs4support 3 3 }: 4 4 5 5 plasmaPackage { 6 6 name = "kmenuedit"; 7 - nativeBuildInputs = [ 8 - ecm 9 - kdoctools 10 - makeQtWrapper 11 - ]; 7 + nativeBuildInputs = [ ecm kdoctools ]; 12 8 propagatedBuildInputs = [ 13 9 kdelibs4support ki18n kio sonnet kxmlgui kdbusaddons kiconthemes 14 10 ]; 15 - postInstall = '' 16 - wrapQtProgram "$out/bin/kmenuedit" 17 - ''; 18 11 }
+2 -8
pkgs/desktops/kde-5/plasma/kscreen.nix
··· 1 1 { plasmaPackage, ecm, kconfig, kconfigwidgets 2 2 , kdbusaddons, kglobalaccel, ki18n, kwidgetsaddons, kxmlgui 3 - , libkscreen, makeQtWrapper, qtdeclarative, qtgraphicaleffects 3 + , libkscreen, qtdeclarative, qtgraphicaleffects 4 4 }: 5 5 6 6 plasmaPackage { 7 7 name = "kscreen"; 8 - nativeBuildInputs = [ 9 - ecm 10 - makeQtWrapper 11 - ]; 8 + nativeBuildInputs = [ ecm ]; 12 9 propagatedBuildInputs = [ 13 10 kglobalaccel ki18n libkscreen qtdeclarative qtgraphicaleffects kconfig 14 11 kconfigwidgets kdbusaddons kwidgetsaddons kxmlgui 15 12 ]; 16 - postInstall = '' 17 - wrapQtProgram "$out/bin/kscreen-console" 18 - ''; 19 13 }
+1 -4
pkgs/desktops/kde-5/plasma/kscreenlocker.nix
··· 5 5 6 6 plasmaPackage { 7 7 name = "kscreenlocker"; 8 - nativeBuildInputs = [ 9 - ecm 10 - kdoctools 11 - ]; 8 + nativeBuildInputs = [ ecm kdoctools ]; 12 9 propagatedBuildInputs = [ 13 10 kdeclarative plasma-framework qtdeclarative kcmutils kcrash kdelibs4support 14 11 kglobalaccel kidletime kwayland libXcursor pam wayland
+2 -5
pkgs/desktops/kde-5/plasma/ksshaskpass.nix
··· 1 1 { plasmaPackage, ecm, kdoctools, kcoreaddons 2 - , ki18n, kwallet, kwidgetsaddons, makeQtWrapper 2 + , ki18n, kwallet, kwidgetsaddons 3 3 }: 4 4 5 5 plasmaPackage { 6 6 name = "ksshaskpass"; 7 - nativeBuildInputs = [ ecm kdoctools makeQtWrapper ]; 7 + nativeBuildInputs = [ ecm kdoctools ]; 8 8 propagatedBuildInputs = [ kcoreaddons ki18n kwallet kwidgetsaddons ]; 9 - postInstall = '' 10 - wrapQtProgram "$out/bin/ksshaskpass" 11 - ''; 12 9 }
+2 -9
pkgs/desktops/kde-5/plasma/ksysguard.nix
··· 1 1 { plasmaPackage, ecm, kdoctools, kconfig 2 2 , kcoreaddons, kdelibs4support, ki18n, kitemviews, knewstuff 3 - , kiconthemes, libksysguard, makeQtWrapper 3 + , kiconthemes, libksysguard 4 4 }: 5 5 6 6 plasmaPackage { 7 7 name = "ksysguard"; 8 - nativeBuildInputs = [ 9 - ecm 10 - kdoctools 11 - makeQtWrapper 12 - ]; 8 + nativeBuildInputs = [ ecm kdoctools ]; 13 9 propagatedBuildInputs = [ 14 10 kconfig kcoreaddons kitemviews knewstuff kiconthemes libksysguard 15 11 kdelibs4support ki18n 16 12 ]; 17 - postInstall = '' 18 - wrapQtProgram "$out/bin/ksysguardd" 19 - ''; 20 13 }
-5
pkgs/desktops/kde-5/plasma/kwin/default.nix
··· 13 13 nativeBuildInputs = [ 14 14 ecm 15 15 kdoctools 16 - makeQtWrapper 17 16 ]; 18 17 propagatedBuildInputs = [ 19 18 kactivities kdeclarative kglobalaccel ki18n kio kscreenlocker kwindowsystem ··· 25 24 ]; 26 25 patches = [ ./0001-qdiriterator-follow-symlinks.patch ]; 27 26 cmakeFlags = [ "-DCMAKE_SKIP_BUILD_RPATH=OFF" ]; 28 - postInstall = '' 29 - wrapQtProgram "$out/bin/kwin_x11" 30 - wrapQtProgram "$out/bin/kwin_wayland" 31 - ''; 32 27 }
+2 -16
pkgs/desktops/kde-5/plasma/plasma-desktop/default.nix
··· 6 6 , plasma-framework, plasma-workspace, qtdeclarative, qtx11extras 7 7 , qtsvg, libXcursor, libXft, libxkbfile, xf86inputevdev 8 8 , xf86inputsynaptics, xinput, xkeyboard_config, xorgserver 9 - , libcanberra_kde, libpulseaudio, makeQtWrapper, utillinux 9 + , libcanberra_kde, libpulseaudio, utillinux 10 10 , qtquickcontrols, ksysguard 11 11 }: 12 12 13 13 plasmaPackage rec { 14 14 name = "plasma-desktop"; 15 - nativeBuildInputs = [ 16 - ecm 17 - kdoctools 18 - makeQtWrapper 19 - ]; 15 + nativeBuildInputs = [ ecm kdoctools ]; 20 16 buildInputs = [ 21 17 attica boost fontconfig kcmutils kdbusaddons kded kitemmodels knewstuff 22 18 knotifications knotifyconfig kwallet libcanberra_kde libXcursor ··· 42 38 "-DEvdev_INCLUDE_DIRS=${xf86inputevdev.dev}/include/xorg" 43 39 "-DSynaptics_INCLUDE_DIRS=${xf86inputsynaptics}/include/xorg" 44 40 ]; 45 - postInstall = '' 46 - wrapQtProgram "$out/bin/kaccess" 47 - wrapQtProgram "$out/bin/solid-action-desktop-gen" 48 - wrapQtProgram "$out/bin/knetattach" 49 - wrapQtProgram "$out/bin/krdb" 50 - wrapQtProgram "$out/bin/kapplymousetheme" 51 - wrapQtProgram "$out/bin/kfontinst" 52 - wrapQtProgram "$out/bin/kcm-touchpad-list-devices" 53 - wrapQtProgram "$out/bin/kfontview" 54 - ''; 55 41 }
+2 -9
pkgs/desktops/kde-5/plasma/plasma-nm/default.nix
··· 2 2 , kcompletion, kconfigwidgets, kcoreaddons, kdbusaddons, kdeclarative 3 3 , kdelibs4support, ki18n, kiconthemes, kinit, kio, kitemviews 4 4 , knotifications, kservice, kwallet, kwidgetsaddons, kwindowsystem 5 - , kxmlgui, makeQtWrapper, mobile_broadband_provider_info 5 + , kxmlgui, mobile_broadband_provider_info 6 6 , modemmanager-qt, networkmanager-qt, openconnect, plasma-framework 7 7 , qca-qt5, qtdeclarative, solid 8 8 }: ··· 15 15 inherit mobile_broadband_provider_info; 16 16 }) 17 17 ]; 18 - nativeBuildInputs = [ 19 - ecm 20 - kdoctools 21 - makeQtWrapper 22 - ]; 18 + nativeBuildInputs = [ ecm kdoctools ]; 23 19 propagatedBuildInputs = [ 24 20 kdeclarative kdelibs4support ki18n kio kwindowsystem plasma-framework 25 21 qtdeclarative kcompletion kconfigwidgets kcoreaddons kdbusaddons kiconthemes ··· 27 23 mobile_broadband_provider_info modemmanager-qt networkmanager-qt openconnect 28 24 qca-qt5 solid 29 25 ]; 30 - postInstall = '' 31 - wrapQtProgram "$out/bin/kde5-nm-connection-editor" 32 - ''; 33 26 }
+1
pkgs/desktops/kde-5/plasma/plasma-workspace-wallpapers.nix
··· 4 4 5 5 plasmaPackage { 6 6 name = "plasma-workspace-wallpapers"; 7 + outputs = [ "out" ]; 7 8 nativeBuildInputs = [ 8 9 ecm 9 10 ];
+1 -3
pkgs/desktops/kde-5/plasma/plasma-workspace/default.nix
··· 14 14 plasmaPackage { 15 15 name = "plasma-workspace"; 16 16 17 - nativeBuildInputs = [ 18 - ecm kdoctools 19 - ]; 17 + nativeBuildInputs = [ ecm kdoctools ]; 20 18 buildInputs = [ 21 19 baloo kactivities kcmutils kconfig kcrash kdbusaddons kdeclarative 22 20 kdelibs4support kdesu kglobalaccel kidletime kjsembed knewstuff
+5 -15
pkgs/desktops/kde-5/plasma/polkit-kde-agent.nix
··· 1 - { plasmaPackage 2 - , ecm 3 - , ki18n 4 - , kwindowsystem 5 - , kdbusaddons 6 - , kwidgetsaddons 7 - , kcoreaddons 8 - , kcrash 9 - , kconfig 10 - , kiconthemes 11 - , knotifications 12 - , polkit-qt 1 + { 2 + plasmaPackage, ecm, 3 + kcoreaddons, kconfig, kcrash, kdbusaddons, ki18n, kiconthemes, knotifications, 4 + kwidgetsaddons, kwindowsystem, polkit-qt 13 5 }: 14 6 15 7 plasmaPackage { 16 8 name = "polkit-kde-agent"; 17 - nativeBuildInputs = [ 18 - ecm 19 - ]; 9 + nativeBuildInputs = [ ecm ]; 20 10 propagatedBuildInputs = [ 21 11 kdbusaddons kwidgetsaddons kcoreaddons kcrash kconfig ki18n kiconthemes 22 12 knotifications kwindowsystem polkit-qt
+1 -4
pkgs/desktops/kde-5/plasma/powerdevil.nix
··· 6 6 7 7 plasmaPackage { 8 8 name = "powerdevil"; 9 - nativeBuildInputs = [ 10 - ecm 11 - kdoctools 12 - ]; 9 + nativeBuildInputs = [ ecm kdoctools ]; 13 10 propagatedBuildInputs = [ 14 11 kconfig kdbusaddons knotifyconfig solid udev bluez-qt kactivities kauth 15 12 kdelibs4support kglobalaccel ki18n kio kidletime kwayland libkscreen
-3
pkgs/desktops/kde-5/plasma/systemsettings.nix
··· 11 11 kcmutils kconfig kdbusaddons khtml ki18n kiconthemes kio kitemviews kservice 12 12 kwindowsystem kxmlgui qtquickcontrols 13 13 ]; 14 - postInstall = '' 15 - wrapQtProgram "$out/bin/systemsettings5" 16 - ''; 17 14 }
+20 -14
pkgs/development/compilers/ponyc/default.nix
··· 1 - {stdenv, glibc, fetchFromGitHub, llvm, makeWrapper, openssl, pcre2 }: 1 + {stdenv, glibc, fetchFromGitHub, llvm, makeWrapper, openssl, pcre2, coreutils }: 2 2 3 3 stdenv.mkDerivation { 4 - name = "ponyc-0.2.1"; 4 + name = "ponyc-2016-07-26"; 5 5 6 6 src = fetchFromGitHub { 7 - owner = "CausalityLtd"; 7 + owner = "ponylang"; 8 8 repo = "ponyc"; 9 - rev = "0.2.1"; 10 - sha256 = "1wmvqrj9v2kjqha9fcs10vfnhdxhc3rf67wpn36ldhs1hq0k25jy"; 9 + rev = "4eec8a9b0d9936b2a0249bd17fd7a2caac6aaa9c"; 10 + sha256 = "184x2jivp7826i60rf0dpx0a9dg5rsj56dv0cll28as4nyqfmna2"; 11 11 }; 12 12 13 13 buildInputs = [ llvm makeWrapper ]; 14 14 15 - makeFlags = [ "config=release" ]; 16 - doCheck = true; 17 - checkTarget = "test"; 15 + # Disable problematic networking tests 16 + patches = [ ./disable-tests.patch ]; 18 17 19 - patchPhase = '' 20 - sed 's|/usr/lib/x86_64-linux-gnu/|${glibc.out}/lib/|g' -i src/libponyc/codegen/genexe.c 21 - sed 's|/lib/x86_64-linux-gnu/|${stdenv.cc.cc.lib}/lib/|g' -i src/libponyc/codegen/genexe.c 18 + preBuild = '' 19 + # Fix tests 20 + substituteInPlace packages/process/_test.pony \ 21 + --replace "/bin/cat" "${coreutils}/bin/cat" 22 + 23 + export LLVM_CONFIG=${llvm}/bin/llvm-config 22 24 ''; 23 25 24 - preBuild = '' 25 - export LLVM_CONFIG=${llvm}/bin/llvm-config 26 - ''; 26 + makeFlags = [ "config=release" ]; 27 + 28 + enableParallelBuilding = true; 29 + 30 + doCheck = true; 31 + 32 + checkTarget = "test"; 27 33 28 34 preCheck = '' 29 35 export LIBRARY_PATH="$out/lib:${openssl.out}/lib:${pcre2}/lib"
+16
pkgs/development/compilers/ponyc/disable-tests.patch
··· 1 + diff --git a/packages/net/_test.pony b/packages/net/_test.pony 2 + index d6c3e56..dc37dd9 100644 3 + --- a/packages/net/_test.pony 4 + +++ b/packages/net/_test.pony 5 + @@ -7,11 +7,6 @@ actor Main is TestList 6 + fun tag tests(test: PonyTest) => 7 + test(_TestReadBuffer) 8 + test(_TestWriteBuffer) 9 + - test(_TestBroadcast) 10 + - ifdef not windows then 11 + - test(_TestTCPExpect) 12 + - test(_TestTCPWritev) 13 + - end 14 + 15 + class iso _TestReadBuffer is UnitTest 16 + """
+2 -2
pkgs/development/interpreters/pypy/default.nix pkgs/development/interpreters/python/pypy/2.7/default.nix
··· 117 117 inherit zlibSupport libPrefix; 118 118 executable = "pypy"; 119 119 isPypy = true; 120 - buildEnv = callPackage ../python/wrapper.nix { python = self; }; 120 + buildEnv = callPackage ../../wrapper.nix { python = self; }; 121 121 interpreter = "${self}/bin/${executable}"; 122 122 sitePackages = "site-packages"; 123 - withPackages = import ../python/with-packages.nix { inherit buildEnv; pythonPackages = pypyPackages; }; 123 + withPackages = import ../../with-packages.nix { inherit buildEnv; pythonPackages = pypyPackages; }; 124 124 }; 125 125 126 126 enableParallelBuilding = true; # almost no parallelization without STM
pkgs/development/interpreters/pypy/setup-hook.sh pkgs/development/interpreters/python/pypy/2.7/setup-hook.sh
+2 -2
pkgs/development/interpreters/python/2.6/default.nix pkgs/development/interpreters/python/cpython/2.6/default.nix
··· 99 99 inherit zlibSupport; 100 100 isPy2 = true; 101 101 isPy26 = true; 102 - buildEnv = callPackage ../wrapper.nix { python = self; }; 103 - withPackages = import ../with-packages.nix { inherit buildEnv; pythonPackages = python26Packages; }; 102 + buildEnv = callPackage ../../wrapper.nix { python = self; }; 103 + withPackages = import ../../with-packages.nix { inherit buildEnv; pythonPackages = python26Packages; }; 104 104 libPrefix = "python${majorVersion}"; 105 105 executable = libPrefix; 106 106 sitePackages = "lib/${libPrefix}/site-packages";
pkgs/development/interpreters/python/2.6/nix-store-mtime.patch pkgs/development/interpreters/python/cpython/2.6/nix-store-mtime.patch
pkgs/development/interpreters/python/2.6/python2.6-fix-parallel-make.patch pkgs/development/interpreters/python/cpython/2.6/python2.6-fix-parallel-make.patch
pkgs/development/interpreters/python/2.6/search-path.patch pkgs/development/interpreters/python/cpython/2.6/search-path.patch
pkgs/development/interpreters/python/2.6/setup-hook.sh pkgs/development/interpreters/python/cpython/2.6/setup-hook.sh
pkgs/development/interpreters/python/2.7/2.5.2-ctypes-util-find_library.patch pkgs/development/interpreters/python/cpython/2.7/2.5.2-ctypes-util-find_library.patch
pkgs/development/interpreters/python/2.7/2.5.2-tkinter-x11.patch pkgs/development/interpreters/python/cpython/2.7/2.5.2-tkinter-x11.patch
pkgs/development/interpreters/python/2.7/2.6.2-ssl-threads.patch pkgs/development/interpreters/python/cpython/2.7/2.6.2-ssl-threads.patch
pkgs/development/interpreters/python/2.7/2.6.5-FD_SETSIZE.patch pkgs/development/interpreters/python/cpython/2.7/2.6.5-FD_SETSIZE.patch
pkgs/development/interpreters/python/2.7/2.6.5-export-PySignal_SetWakeupFd.patch pkgs/development/interpreters/python/cpython/2.7/2.6.5-export-PySignal_SetWakeupFd.patch
pkgs/development/interpreters/python/2.7/2.6.5-ncurses-abi6.patch pkgs/development/interpreters/python/cpython/2.7/2.6.5-ncurses-abi6.patch
pkgs/development/interpreters/python/2.7/2.7.3-dbm.patch pkgs/development/interpreters/python/cpython/2.7/2.7.3-dbm.patch
pkgs/development/interpreters/python/2.7/2.7.3-dylib.patch pkgs/development/interpreters/python/cpython/2.7/2.7.3-dylib.patch
pkgs/development/interpreters/python/2.7/2.7.3-getpath-exe-extension.patch pkgs/development/interpreters/python/cpython/2.7/2.7.3-getpath-exe-extension.patch
pkgs/development/interpreters/python/2.7/2.7.3-no-libm.patch pkgs/development/interpreters/python/cpython/2.7/2.7.3-no-libm.patch
+2 -2
pkgs/development/interpreters/python/2.7/default.nix pkgs/development/interpreters/python/cpython/2.7/default.nix
··· 160 160 inherit zlibSupport; 161 161 isPy2 = true; 162 162 isPy27 = true; 163 - buildEnv = callPackage ../wrapper.nix { python = self; }; 164 - withPackages = import ../with-packages.nix { inherit buildEnv; pythonPackages = python27Packages; }; 163 + buildEnv = callPackage ../../wrapper.nix { python = self; }; 164 + withPackages = import ../../with-packages.nix { inherit buildEnv; pythonPackages = python27Packages; }; 165 165 libPrefix = "python${majorVersion}"; 166 166 executable = libPrefix; 167 167 sitePackages = "lib/${libPrefix}/site-packages";
pkgs/development/interpreters/python/2.7/deterministic-build.patch pkgs/development/interpreters/python/cpython/2.7/deterministic-build.patch
pkgs/development/interpreters/python/2.7/nix-store-mtime.patch pkgs/development/interpreters/python/cpython/2.7/nix-store-mtime.patch
pkgs/development/interpreters/python/2.7/no-ldconfig.patch pkgs/development/interpreters/python/cpython/2.7/no-ldconfig.patch
pkgs/development/interpreters/python/2.7/properly-detect-curses.patch pkgs/development/interpreters/python/cpython/2.7/properly-detect-curses.patch
pkgs/development/interpreters/python/2.7/search-path.patch pkgs/development/interpreters/python/cpython/2.7/search-path.patch
pkgs/development/interpreters/python/2.7/setup-hook.sh pkgs/development/interpreters/python/cpython/2.7/setup-hook.sh
+2 -2
pkgs/development/interpreters/python/3.3/default.nix pkgs/development/interpreters/python/cpython/3.3/default.nix
··· 88 88 tkSupport = (tk != null) && (tcl != null) && (libX11 != null) && (xproto != null); 89 89 libPrefix = "python${majorVersion}"; 90 90 executable = "python3.3m"; 91 - buildEnv = callPackage ../wrapper.nix { python = self; }; 92 - withPackages = import ../with-packages.nix { inherit buildEnv; pythonPackages = python33Packages; }; 91 + buildEnv = callPackage ../../wrapper.nix { python = self; }; 92 + withPackages = import ../../with-packages.nix { inherit buildEnv; pythonPackages = python33Packages; }; 93 93 isPy3 = true; 94 94 isPy33 = true; 95 95 is_py3k = true; # deprecated
pkgs/development/interpreters/python/3.3/setup-hook.sh pkgs/development/interpreters/python/cpython/3.3/setup-hook.sh
+2 -2
pkgs/development/interpreters/python/3.4/default.nix pkgs/development/interpreters/python/cpython/3.4/default.nix
··· 111 111 tkSupport = (tk != null) && (tcl != null) && (libX11 != null) && (xproto != null); 112 112 libPrefix = "python${majorVersion}"; 113 113 executable = "python3.4m"; 114 - buildEnv = callPackage ../wrapper.nix { python = self; }; 115 - withPackages = import ../with-packages.nix { inherit buildEnv; pythonPackages = python34Packages; }; 114 + buildEnv = callPackage ../../wrapper.nix { python = self; }; 115 + withPackages = import ../../with-packages.nix { inherit buildEnv; pythonPackages = python34Packages; }; 116 116 isPy3 = true; 117 117 isPy34 = true; 118 118 is_py3k = true; # deprecated
pkgs/development/interpreters/python/3.4/setup-hook.sh pkgs/development/interpreters/python/cpython/3.4/setup-hook.sh
+2 -2
pkgs/development/interpreters/python/3.5/default.nix pkgs/development/interpreters/python/cpython/3.5/default.nix
··· 111 111 tkSupport = (tk != null) && (tcl != null) && (libX11 != null) && (xproto != null); 112 112 libPrefix = "python${majorVersion}"; 113 113 executable = "python${majorVersion}m"; 114 - buildEnv = callPackage ../wrapper.nix { python = self; }; 115 - withPackages = import ../with-packages.nix { inherit buildEnv; pythonPackages = python35Packages; }; 114 + buildEnv = callPackage ../../wrapper.nix { python = self; }; 115 + withPackages = import ../../with-packages.nix { inherit buildEnv; pythonPackages = python35Packages; }; 116 116 isPy3 = true; 117 117 isPy35 = true; 118 118 is_py3k = true; # deprecated
pkgs/development/interpreters/python/3.5/setup-hook.sh pkgs/development/interpreters/python/cpython/3.5/setup-hook.sh
+2 -2
pkgs/development/interpreters/python/3.6/default.nix pkgs/development/interpreters/python/cpython/3.6/default.nix
··· 115 115 tkSupport = (tk != null) && (tcl != null) && (libX11 != null) && (xproto != null); 116 116 libPrefix = "python${majorVersion}"; 117 117 executable = "python${majorVersion}m"; 118 - buildEnv = callPackage ../wrapper.nix { python = self; }; 119 - withPackages = import ../with-packages.nix { inherit buildEnv; pythonPackages = python36Packages; }; 118 + buildEnv = callPackage ../../wrapper.nix { python = self; }; 119 + withPackages = import ../../with-packages.nix { inherit buildEnv; pythonPackages = python36Packages; }; 120 120 isPy3 = true; 121 121 isPy35 = true; 122 122 is_py3k = true; # deprecated
pkgs/development/interpreters/python/3.6/setup-hook.sh pkgs/development/interpreters/python/cpython/3.6/setup-hook.sh
pkgs/development/interpreters/python/docs/2.6-html.nix pkgs/development/interpreters/python/cpython/docs/2.6-html.nix
pkgs/development/interpreters/python/docs/2.6-pdf-a4.nix pkgs/development/interpreters/python/cpython/docs/2.6-pdf-a4.nix
pkgs/development/interpreters/python/docs/2.6-pdf-letter.nix pkgs/development/interpreters/python/cpython/docs/2.6-pdf-letter.nix
pkgs/development/interpreters/python/docs/2.6-text.nix pkgs/development/interpreters/python/cpython/docs/2.6-text.nix
pkgs/development/interpreters/python/docs/2.7-html.nix pkgs/development/interpreters/python/cpython/docs/2.7-html.nix
pkgs/development/interpreters/python/docs/2.7-pdf-a4.nix pkgs/development/interpreters/python/cpython/docs/2.7-pdf-a4.nix
pkgs/development/interpreters/python/docs/2.7-pdf-letter.nix pkgs/development/interpreters/python/cpython/docs/2.7-pdf-letter.nix
pkgs/development/interpreters/python/docs/2.7-text.nix pkgs/development/interpreters/python/cpython/docs/2.7-text.nix
pkgs/development/interpreters/python/docs/3.3-html.nix pkgs/development/interpreters/python/cpython/docs/3.3-html.nix
pkgs/development/interpreters/python/docs/3.3-pdf-a4.nix pkgs/development/interpreters/python/cpython/docs/3.3-pdf-a4.nix
pkgs/development/interpreters/python/docs/3.3-pdf-letter.nix pkgs/development/interpreters/python/cpython/docs/3.3-pdf-letter.nix
pkgs/development/interpreters/python/docs/3.3-text.nix pkgs/development/interpreters/python/cpython/docs/3.3-text.nix
pkgs/development/interpreters/python/docs/default.nix pkgs/development/interpreters/python/cpython/docs/default.nix
pkgs/development/interpreters/python/docs/generate.sh pkgs/development/interpreters/python/cpython/docs/generate.sh
pkgs/development/interpreters/python/docs/template.nix pkgs/development/interpreters/python/cpython/docs/template.nix
+2 -8
pkgs/development/libraries/gdal/default.nix
··· 6 6 }: 7 7 8 8 composableDerivation.composableDerivation {} (fixed: rec { 9 - version = "2.0.2"; 9 + version = "2.1.1"; 10 10 name = "gdal-${version}"; 11 11 12 12 src = fetchurl { 13 13 url = "http://download.osgeo.org/gdal/${version}/${name}.tar.gz"; 14 - sha256 = "db7722caf8d9dd798ec18012b9cacf40a518918466126a88b9fd277bd7d40cc4"; 14 + sha256 = "55fc6ffbe76e9d2e7e6cf637010e5d4bba6a966d065f40194ff798544198236b"; 15 15 }; 16 16 17 17 buildInputs = [ unzip libjpeg libtiff libpng proj openssl ] 18 18 ++ (with pythonPackages; [ python numpy wrapPython ]) 19 19 ++ (stdenv.lib.optionals netcdfSupport [ netcdf hdf5 curl ]); 20 - 21 - patches = [ 22 - # This ensures that the python package is installed into gdal's prefix, 23 - # rather than trying to install into python's prefix. 24 - ./python.patch 25 - ]; 26 20 27 21 # Don't use optimization for gcc >= 4.3. That's said to be causing segfaults. 28 22 # Unset CC and CXX as they confuse libtool.
+1 -1
pkgs/development/libraries/kde-frameworks/breeze-icons.nix
··· 5 5 meta = { maintainers = [ lib.maintainers.ttuegel ]; }; 6 6 outputs = [ "out" ]; 7 7 nativeBuildInputs = [ ecm ]; 8 - propagatedBuildInputs = [ qtsvg ]; 8 + buildInputs = [ qtsvg ]; 9 9 propagatedUserEnvPkgs = [ qtsvg.out ]; 10 10 }
+13
pkgs/development/libraries/kde-frameworks/default.nix
··· 26 26 27 27 outputs = args.outputs or [ "dev" "out" ]; 28 28 29 + propagatedUserEnvPkgs = 30 + builtins.map lib.getBin (args.propagatedBuildInputs or []); 31 + 29 32 cmakeFlags = 30 33 (args.cmakeFlags or []) 31 34 ++ [ "-DBUILD_TESTING=OFF" ] ··· 49 52 homepage = "http://www.kde.org"; 50 53 } // (args.meta or {}); 51 54 }); 55 + 56 + kdeEnv = import ./kde-env.nix { 57 + inherit (pkgs) stdenv lib; 58 + inherit (pkgs.xorg) lndir; 59 + }; 60 + 61 + kdeWrapper = import ./kde-wrapper.nix { 62 + inherit (pkgs) stdenv lib makeWrapper; 63 + inherit kdeEnv; 64 + }; 52 65 53 66 attica = callPackage ./attica.nix {}; 54 67 baloo = callPackage ./baloo.nix {};
+31
pkgs/development/libraries/kde-frameworks/kde-env.nix
··· 1 + { stdenv, lib, lndir }: 2 + 3 + drv: pkgs: 4 + 5 + stdenv.mkDerivation { 6 + name = "kde-env-${drv.name}"; 7 + nativeBuildInputs = [ lndir ]; 8 + propagatedUserEnvPkgs = builtins.map lib.getBin ([drv] ++ pkgs); 9 + unpackPhase = "true"; 10 + configurePhase = "runHook preConfigure; runHook postConfigure"; 11 + buildPhase = "true"; 12 + installPhase = '' 13 + runHook preInstall 14 + 15 + propagated="" 16 + for i in $propagatedUserEnvPkgs; do 17 + findInputs $i propagated propagated-user-env-packages 18 + done 19 + 20 + for tgt in bin etc/xdg lib/libexec lib/qt5 share; do 21 + mkdir -p "$out/$tgt" 22 + for p in $propagated; do 23 + if [ -d "$p/$tgt" ]; then 24 + lndir -silent "$p/$tgt" "$out/$tgt" >/dev/null 2>&1 25 + fi 26 + done 27 + done 28 + 29 + runHook postInstall 30 + ''; 31 + }
+47
pkgs/development/libraries/kde-frameworks/kde-wrapper.nix
··· 1 + { stdenv, lib, makeWrapper, kdeEnv }: 2 + 3 + drv: 4 + 5 + { targets, paths ? [] }: 6 + 7 + let 8 + env = kdeEnv drv paths; 9 + in 10 + stdenv.mkDerivation { 11 + inherit (drv) name; 12 + 13 + drv = lib.getBin drv; 14 + inherit env targets; 15 + passthru = { unwrapped = drv; }; 16 + 17 + nativeBuildInputs = [ makeWrapper ]; 18 + 19 + unpackPhase = "true"; 20 + configurePhase = "runHook preConfigure; runHook postConfigure"; 21 + buildPhase = "true"; 22 + 23 + installPhase = '' 24 + for t in $targets; do 25 + if [ -a "$drv/$t" ]; then 26 + makeWrapper "$drv/$t" "$out/$t" \ 27 + --argv0 '"$0"' \ 28 + --suffix PATH : "$out/bin:$env/bin" \ 29 + --prefix XDG_CONFIG_DIRS : "$env/etc/xdg" \ 30 + --prefix XDG_DATA_DIRS : "$env/share" \ 31 + --set QML_IMPORT_PATH "$env/lib/qt5/imports" \ 32 + --set QML2_IMPORT_PATH "$env/lib/qt5/qml" \ 33 + --set QT_PLUGIN_PATH "$env/lib/qt5/plugins" 34 + else 35 + echo "no such file or directory: $drv/$t" 36 + exit 1 37 + fi 38 + done 39 + 40 + for s in applications dbus-1 desktop-directories icons mime polkit-1; do 41 + if [ -d "$env/share/$s" ]; then 42 + mkdir -p "$out/share" 43 + ln -s "$env/share/$s" "$out/share/$s" 44 + fi 45 + done 46 + ''; 47 + }
+33 -81
pkgs/development/libraries/kde-frameworks/setup-hook.sh
··· 1 1 _ecmSetXdgDirs() { 2 2 addToSearchPathOnce XDG_DATA_DIRS "$1/share" 3 3 addToSearchPathOnce XDG_CONFIG_DIRS "$1/etc/xdg" 4 - addToSearchPathOnce RUNTIME_XDG_CONFIG_DIRS "$1/etc/xdg" 5 4 } 6 5 7 - _ecmSharePaths=( \ 8 - "appdata" \ 9 - "applications" \ 10 - "config.cfg" \ 11 - "dbus-1" \ 12 - "desktop-directories" \ 13 - "doc" \ 14 - "icons" \ 15 - "kconf_update" \ 16 - "kservices5" \ 17 - "kservicetypes5" \ 18 - "knotifications5" \ 19 - "kxmlgui5" \ 20 - "locale" \ 21 - "mime" \ 22 - "polkit-1" \ 23 - "sounds" \ 24 - "templates" \ 25 - "wallpapers" \ 26 - ) 27 - 28 - _ecmPropagateNative() { 29 - for dir in ${_ecmSharePaths[@]}; do 30 - if [ -d "$1/share/$dir" ]; then 31 - propagateOnce propagatedNativeBuildInputs "$1" 32 - if [ -z "$crossConfig" ]; then 33 - propagateOnce propagatedUserEnvPkgs "$1" 34 - addToSearchPathOnce RUNTIME_XDG_DATA_DIRS "$1/share" 35 - fi 36 - break 37 - fi 38 - done 39 - } 40 - 41 - envHooks+=(_ecmSetXdgDirs _ecmPropagate) 42 - 43 - _ecmPropagate() { 44 - for dir in ${_ecmSharePaths[@]}; do 45 - if [ -d "$1/share/$dir" ]; then 46 - propagateOnce propagatedBuildInputs "$1" 47 - propagateOnce propagatedUserEnvPkgs "$1" 48 - addToSearchPathOnce RUNTIME_XDG_DATA_DIRS "$1/share" 49 - break 50 - fi 51 - done 52 - } 53 - 54 - crossEnvHooks+=(_ecmPropagate) 6 + envHooks+=(_ecmSetXdgDirs) 55 7 56 8 _ecmConfig() { 57 9 # Because we need to use absolute paths here, we must set *all* the paths. ··· 59 11 cmakeFlags+=" -DKDE_INSTALL_BINDIR=${!outputBin}/bin" 60 12 cmakeFlags+=" -DKDE_INSTALL_SBINDIR=${!outputBin}/sbin" 61 13 cmakeFlags+=" -DKDE_INSTALL_LIBDIR=${!outputLib}/lib" 62 - cmakeFlags+=" -DKDE_INSTALL_LIBEXECDIR=${!outputLib}/lib/libexec" 14 + cmakeFlags+=" -DKDE_INSTALL_LIBEXECDIR=${!outputBin}/lib/libexec" 63 15 cmakeFlags+=" -DKDE_INSTALL_CMAKEPACKAGEDIR=${!outputDev}/lib/cmake" 64 - cmakeFlags+=" -DKDE_INSTALL_QTPLUGINDIR=${!outputLib}/lib/qt5/plugins" 65 - cmakeFlags+=" -DKDE_INSTALL_PLUGINDIR=${!outputLib}/lib/qt5/plugins" 66 - cmakeFlags+=" -DKDE_INSTALL_QTQUICKIMPORTSDIR=${!outputLib}/lib/qt5/imports" 67 - cmakeFlags+=" -DKDE_INSTALL_QMLDIR=${!outputLib}/lib/qt5/qml" 16 + cmakeFlags+=" -DKDE_INSTALL_QTPLUGINDIR=${!outputBin}/lib/qt5/plugins" 17 + cmakeFlags+=" -DKDE_INSTALL_PLUGINDIR=${!outputBin}/lib/qt5/plugins" 18 + cmakeFlags+=" -DKDE_INSTALL_QTQUICKIMPORTSDIR=${!outputBin}/lib/qt5/imports" 19 + cmakeFlags+=" -DKDE_INSTALL_QMLDIR=${!outputBin}/lib/qt5/qml" 68 20 cmakeFlags+=" -DKDE_INSTALL_INCLUDEDIR=${!outputInclude}/include" 69 21 cmakeFlags+=" -DKDE_INSTALL_LOCALSTATEDIR=/var" 70 - cmakeFlags+=" -DKDE_INSTALL_DATAROOTDIR=${!outputLib}/share" 71 - cmakeFlags+=" -DKDE_INSTALL_DATADIR=${!outputLib}/share" 72 - cmakeFlags+=" -DKDE_INSTALL_DOCBUNDLEDIR=${!outputLib}/share/doc/HTML" 73 - cmakeFlags+=" -DKDE_INSTALL_KCFGDIR=${!outputLib}/share/config.kcfg" 74 - cmakeFlags+=" -DKDE_INSTALL_KCONFUPDATEDIR=${!outputLib}/share/kconf_update" 75 - cmakeFlags+=" -DKDE_INSTALL_KSERVICES5DIR=${!outputLib}/share/kservices5" 76 - cmakeFlags+=" -DKDE_INSTALL_KSERVICETYPES5DIR=${!outputLib}/share/kservicetypes5" 77 - cmakeFlags+=" -DKDE_INSTALL_KXMLGUI5DIR=${!outputLib}/share/kxmlgui5" 78 - cmakeFlags+=" -DKDE_INSTALL_KNOTIFY5RCDIR=${!outputLib}/share/knotifications5" 79 - cmakeFlags+=" -DKDE_INSTALL_ICONDIR=${!outputLib}/share/icons" 80 - cmakeFlags+=" -DKDE_INSTALL_LOCALEDIR=${!outputLib}/share/locale" 81 - cmakeFlags+=" -DKDE_INSTALL_SOUNDDIR=${!outputLib}/share/sounds" 82 - cmakeFlags+=" -DKDE_INSTALL_TEMPLATEDIR=${!outputLib}/share/templates" 83 - cmakeFlags+=" -DKDE_INSTALL_WALLPAPERDIR=${!outputLib}/share/wallpapers" 84 - cmakeFlags+=" -DKDE_INSTALL_APPDIR=${!outputLib}/share/applications" 85 - cmakeFlags+=" -DKDE_INSTALL_DESKTOPDIR=${!outputLib}/share/desktop-directories" 86 - cmakeFlags+=" -DKDE_INSTALL_MIMEDIR=${!outputLib}/share/mime/packages" 87 - cmakeFlags+=" -DKDE_INSTALL_METAINFODIR=${!outputLib}/share/appdata" 88 - cmakeFlags+=" -DKDE_INSTALL_MANDIR=${!outputLib}/share/man" 89 - cmakeFlags+=" -DKDE_INSTALL_INFODIR=${!outputLib}/share/info" 90 - cmakeFlags+=" -DKDE_INSTALL_DBUSDIR=${!outputLib}/share/dbus-1" 91 - cmakeFlags+=" -DKDE_INSTALL_DBUSINTERFACEDIR=${!outputLib}/share/dbus-1/interfaces" 92 - cmakeFlags+=" -DKDE_INSTALL_DBUSSERVICEDIR=${!outputLib}/share/dbus-1/services" 93 - cmakeFlags+=" -DKDE_INSTALL_DBUSSYSTEMSERVICEDIR=${!outputLib}/share/dbus-1/system-services" 94 - cmakeFlags+=" -DKDE_INSTALL_SYSCONFDIR=${!outputLib}/etc" 95 - cmakeFlags+=" -DKDE_INSTALL_CONFDIR=${!outputLib}/etc/xdg" 96 - cmakeFlags+=" -DKDE_INSTALL_AUTOSTARTDIR=${!outputLib}/etc/xdg/autostart" 22 + cmakeFlags+=" -DKDE_INSTALL_DATAROOTDIR=${!outputBin}/share" 23 + cmakeFlags+=" -DKDE_INSTALL_DATADIR=${!outputBin}/share" 24 + cmakeFlags+=" -DKDE_INSTALL_DOCBUNDLEDIR=${!outputBin}/share/doc/HTML" 25 + cmakeFlags+=" -DKDE_INSTALL_KCFGDIR=${!outputBin}/share/config.kcfg" 26 + cmakeFlags+=" -DKDE_INSTALL_KCONFUPDATEDIR=${!outputBin}/share/kconf_update" 27 + cmakeFlags+=" -DKDE_INSTALL_KSERVICES5DIR=${!outputBin}/share/kservices5" 28 + cmakeFlags+=" -DKDE_INSTALL_KSERVICETYPES5DIR=${!outputBin}/share/kservicetypes5" 29 + cmakeFlags+=" -DKDE_INSTALL_KXMLGUI5DIR=${!outputBin}/share/kxmlgui5" 30 + cmakeFlags+=" -DKDE_INSTALL_KNOTIFY5RCDIR=${!outputBin}/share/knotifications5" 31 + cmakeFlags+=" -DKDE_INSTALL_ICONDIR=${!outputBin}/share/icons" 32 + cmakeFlags+=" -DKDE_INSTALL_LOCALEDIR=${!outputBin}/share/locale" 33 + cmakeFlags+=" -DKDE_INSTALL_SOUNDDIR=${!outputBin}/share/sounds" 34 + cmakeFlags+=" -DKDE_INSTALL_TEMPLATEDIR=${!outputBin}/share/templates" 35 + cmakeFlags+=" -DKDE_INSTALL_WALLPAPERDIR=${!outputBin}/share/wallpapers" 36 + cmakeFlags+=" -DKDE_INSTALL_APPDIR=${!outputBin}/share/applications" 37 + cmakeFlags+=" -DKDE_INSTALL_DESKTOPDIR=${!outputBin}/share/desktop-directories" 38 + cmakeFlags+=" -DKDE_INSTALL_MIMEDIR=${!outputBin}/share/mime/packages" 39 + cmakeFlags+=" -DKDE_INSTALL_METAINFODIR=${!outputBin}/share/appdata" 40 + cmakeFlags+=" -DKDE_INSTALL_MANDIR=${!outputBin}/share/man" 41 + cmakeFlags+=" -DKDE_INSTALL_INFODIR=${!outputBin}/share/info" 42 + cmakeFlags+=" -DKDE_INSTALL_DBUSDIR=${!outputBin}/share/dbus-1" 43 + cmakeFlags+=" -DKDE_INSTALL_DBUSINTERFACEDIR=${!outputBin}/share/dbus-1/interfaces" 44 + cmakeFlags+=" -DKDE_INSTALL_DBUSSERVICEDIR=${!outputBin}/share/dbus-1/services" 45 + cmakeFlags+=" -DKDE_INSTALL_DBUSSYSTEMSERVICEDIR=${!outputBin}/share/dbus-1/system-services" 46 + cmakeFlags+=" -DKDE_INSTALL_SYSCONFDIR=${!outputBin}/etc" 47 + cmakeFlags+=" -DKDE_INSTALL_CONFDIR=${!outputBin}/etc/xdg" 48 + cmakeFlags+=" -DKDE_INSTALL_AUTOSTARTDIR=${!outputBin}/etc/xdg/autostart" 97 49 } 98 50 99 51 preConfigureHooks+=(_ecmConfig)
+4
pkgs/development/libraries/leatherman/default.nix
··· 13 13 14 14 buildInputs = [ boost cmake curl ]; 15 15 16 + # curl upgrade to 7.50.0 (#17152) broke the curl mock tests, disabling for now 17 + # upstream bug raised https://tickets.puppetlabs.com/browse/LTH-108 18 + cmakeFlags = [ "-DLEATHERMAN_MOCK_CURL=OFF" ]; 19 + 16 20 meta = with stdenv.lib; { 17 21 homepage = https://github.com/puppetlabs/leatherman/; 18 22 description = "A collection of C++ and CMake utility libraries";
+6 -1
pkgs/development/libraries/poppler/default.nix
··· 1 1 { stdenv, lib, fetchurl, fetchpatch, pkgconfig, libiconv, libintlOrEmpty 2 2 , zlib, curl, cairo, freetype, fontconfig, lcms, libjpeg, openjpeg 3 - , minimal ? false, qt4Support ? false, qt4 ? null, qt5Support ? false, qtbase ? null 3 + , minimal ? false 4 + , qt4Support ? false, qt4 ? null 5 + , qt5Support ? false, qtbase ? null 4 6 , utils ? false, suffix ? "glib" 5 7 }: 6 8 ··· 30 32 nativeBuildInputs = [ pkgconfig libiconv ] ++ libintlOrEmpty; 31 33 32 34 NIX_CFLAGS_COMPILE = [ "-DQT_NO_DEBUG" ]; 35 + 36 + # Any package depending on Qt >= 5.7 must build using the C++11 standard. 37 + CXXFLAGS = lib.optional qt5Support "-std=c++11"; 33 38 34 39 configureFlags = with lib; 35 40 [
+1
pkgs/development/python-modules/setuptools/default.nix
··· 28 28 homepage = http://pypi.python.org/pypi/setuptools; 29 29 license = with lib.licenses; [ psfl zpt20 ]; 30 30 platforms = platforms.all; 31 + priority = 10; 31 32 }; 32 33 }
+22 -26
pkgs/games/construo/default.nix
··· 1 - { stdenv, fetchurl, builderDefs, libX11, zlib, xproto, mesa ? null, freeglut ? null }: 2 - 3 - let localDefs = builderDefs.passthru.function { 4 - src = /* put a fetchurl here */ 5 - fetchurl { 6 - url = http://savannah.nongnu.org/download/construo/construo-0.2.2.tar.gz; 7 - sha256 = "0c661rjasax4ykw77dgqj39jhb4qi48m0bhhdy42vd5a4rfdrcck"; 8 - }; 1 + { stdenv, fetchurl, libX11, zlib, xproto, mesa ? null, freeglut ? null }: 9 2 10 - buildInputs = [ libX11 zlib xproto ] 11 - ++ stdenv.lib.optional (mesa != null) mesa 12 - ++ stdenv.lib.optional (freeglut != null) freeglut; 13 - preConfigure = builderDefs.stringsWithDeps.fullDepEntry ('' 14 - sed -e 's/math[.]h/cmath/' -i vector.cxx 15 - sed -e 's/games/bin/' -i Makefile.in 16 - sed -e '1i\#include <stdlib.h>' -i construo_main.cxx -i command_line.cxx -i config.hxx 17 - sed -e '1i\#include <string.h>' -i command_line.cxx -i lisp_reader.cxx -i unix_system.cxx \ 18 - -i world.cxx construo_main.cxx 19 - '') ["doUnpack" "minInit"]; 20 - }; 21 - in with localDefs; 22 3 stdenv.mkDerivation rec { 23 - name = "construo-0.2.2"; 24 - builder = writeScript (name + "-builder") 25 - (textClosure localDefs ["preConfigure" "doConfigure" "doMakeInstall" "doForceShare" "doPropagate"]); 26 - meta = { 27 - description = "Masses and springs simulation game"; 28 - }; 4 + name = "construo-${version}"; 5 + version = "0.2.3"; 6 + 7 + src = fetchurl { 8 + url = "https://github.com/Construo/construo/releases/download/v${version}/${name}.tar.gz"; 9 + sha256 = "1wmj527hbj1qv44cdsj6ahfjrnrjwg2dp8gdick8nd07vm062qxa"; 10 + }; 11 + 12 + buildInputs = [ libX11 zlib xproto ] 13 + ++ stdenv.lib.optional (mesa != null) mesa 14 + ++ stdenv.lib.optional (freeglut != null) freeglut; 15 + 16 + preConfigure = '' 17 + substituteInPlace src/Makefile.in \ 18 + --replace games bin 19 + ''; 20 + 21 + meta = { 22 + description = "Masses and springs simulation game"; 23 + homepage = http://fs.fsf.org/construo/; 24 + }; 29 25 }
+38
pkgs/games/holdingnuts/default.nix
··· 1 + { stdenv, fetchurl, cmake, SDL, qt4 }: 2 + 3 + let mirror = "http://download.holdingnuts.net"; 4 + in stdenv.mkDerivation rec { 5 + name = "${pname}-${version}"; 6 + pname = "holdingnuts"; 7 + version = "0.0.5"; 8 + 9 + src = fetchurl { 10 + url = "${mirror}/release/${version}/${name}.tar.bz2"; 11 + sha256 = "0iw25jmnqzscg34v66d4zz70lvgjp4l7gi16nna6491xnqha5a8g"; 12 + }; 13 + 14 + patches = [ 15 + (fetchurl { 16 + url = "${mirror}/patches/holdingnuts-0.0.5-wheel.patch"; 17 + sha256 = "0hap5anxgc19s5qi64mjpi3wpgphy4dqdxqw34q19dw3gwxw5g8n"; 18 + }) 19 + (fetchurl { 20 + url = "${mirror}/patches/holdingnuts-qpixmapcache-workaround.patch"; 21 + sha256 = "15cf9j9mdm85f0h7w5f5852ic7xpim0243yywkd2qrfp37mi93pd"; 22 + }) 23 + ]; 24 + 25 + postPatch = '' 26 + substituteInPlace src/system/SysAccess.c --replace /usr/share $out/share 27 + ''; 28 + 29 + buildInputs = [ cmake SDL qt4 ]; 30 + 31 + meta = with stdenv.lib; { 32 + homepage = http://www.holdingnuts.net/; 33 + description = "Open Source Poker client and server"; 34 + license = licenses.gpl3; 35 + maintainers = with maintainers; [ obadz ]; 36 + platforms = platforms.all; 37 + }; 38 + }
+13
pkgs/misc/drivers/dell-530cdn/default.nix
··· 1 + { runCommand, fetchurl, rpm, cpio }: let 2 + version = "1.3-1"; 3 + 4 + src = fetchurl { 5 + url = "http://downloads.dell.com/printer/Dell-5130cdn-Color-Laser-${version}.noarch.rpm"; 6 + md5 = "7fb7122e67e40b99deb9665d88df62d1"; 7 + }; 8 + in runCommand "Dell-5130cdn-Color-Laser-1.3-1" {} '' 9 + mkdir -p usr/share/cups/model 10 + ${rpm}/bin/rpm2cpio ${src} | ${cpio}/bin/cpio -i 11 + mkdir -p $out/share/ppd 12 + mv usr/share/cups/model/Dell $out/share/ppd 13 + ''
+20
pkgs/misc/long-shebang/default.nix
··· 1 + { stdenv, fetchurl }: let 2 + version = "1.0.0"; 3 + in stdenv.mkDerivation { 4 + name = "long-shebang-${version}"; 5 + 6 + src = fetchurl { 7 + url = "https://github.com/shlevy/long-shebang/releases/download/v1.0.0/long-shebang-1.0.0.tar.xz"; 8 + sha256 = "15f5rmihj3r53rmalix1bn1agybbzrc3g2a9xzjyd4v3vfd2vckr"; 9 + }; 10 + 11 + meta = { 12 + description = "A tool for #! scripts with more than one argument"; 13 + 14 + homepage = https://github.com/shlevy/long-shebang; 15 + 16 + license = stdenv.lib.licenses.mit; 17 + 18 + platforms = stdenv.lib.platforms.unix; 19 + }; 20 + }
+27 -23
pkgs/os-specific/linux/broadcom-sta/default.nix
··· 1 1 { stdenv, fetchurl, kernel }: 2 + 2 3 let 3 - version = "6.30.223.248"; 4 + version = "6.30.223.271"; 5 + hashes = { 6 + i686-linux = "1kaqa2dw3nb8k23ffvx46g8jj3wdhz8xa6jp1v3wb35cjfr712sg"; 7 + x86_64-linux = "1gj485qqr190idilacpxwgqyw21il03zph2rddizgj7fbd6pfyaz"; 8 + }; 9 + 10 + arch = stdenv.lib.optionalString (stdenv.system == "x86_64-linux") "_64"; 11 + tarballVersion = stdenv.lib.replaceStrings ["."] ["_"] version; 12 + tarball = "hybrid-v35${arch}-nodebug-pcoem-${tarballVersion}.tar.gz"; 4 13 in 5 14 stdenv.mkDerivation { 6 15 name = "broadcom-sta-${version}-${kernel.version}"; 7 16 8 - src = if stdenv.system == "i686-linux" then ( 9 - fetchurl { 10 - url = http://www.broadcom.com/docs/linux_sta/hybrid-v35-nodebug-pcoem-6_30_223_248.tar.gz; 11 - sha256 = "1bd13pq5hj4yzp32rx71sg1i5wkzdsg1s32xsywb48lw88x595mi"; 12 - } ) else ( 13 - fetchurl { 14 - url = http://www.broadcom.com/docs/linux_sta/hybrid-v35_64-nodebug-pcoem-6_30_223_248.tar.gz; 15 - sha256 = "08ihbhwnqpnazskw9rlrk0alanp4x70kl8bsy2vg962iq334r69x"; 16 - } 17 - ); 17 + src = fetchurl { 18 + url = "http://www.broadcom.com/docs/linux_sta/${tarball}"; 19 + sha256 = hashes.${stdenv.system}; 20 + }; 18 21 19 22 patches = [ 23 + ./i686-build-failure.patch 20 24 ./license.patch 21 - ./linux-recent.patch 25 + ./linux-4.7.patch 26 + ./null-pointer-fix.patch 22 27 ./gcc.patch 23 28 ]; 24 29 25 30 makeFlags = "KBASE=${kernel.dev}/lib/modules/${kernel.modDirVersion}"; 26 31 27 32 unpackPhase = '' 28 - sourceRoot=broadcom-sta 29 - mkdir "$sourceRoot" 30 - tar xvf "$src" -C "$sourceRoot" 33 + sourceRoot=broadcom-sta 34 + mkdir "$sourceRoot" 35 + tar xvf "$src" -C "$sourceRoot" 31 36 ''; 32 37 33 - installPhase = 34 - '' 35 - binDir="$out/lib/modules/${kernel.modDirVersion}/kernel/net/wireless/" 36 - docDir="$out/share/doc/broadcom-sta/" 37 - mkdir -p "$binDir" "$docDir" 38 - cp wl.ko "$binDir" 39 - cp lib/LICENSE.txt "$docDir" 40 - ''; 38 + installPhase = '' 39 + binDir="$out/lib/modules/${kernel.modDirVersion}/kernel/net/wireless/" 40 + docDir="$out/share/doc/broadcom-sta/" 41 + mkdir -p "$binDir" "$docDir" 42 + cp wl.ko "$binDir" 43 + cp lib/LICENSE.txt "$docDir" 44 + ''; 41 45 42 46 meta = { 43 47 description = "Kernel module driver for some Broadcom's wireless cards";
+18
pkgs/os-specific/linux/broadcom-sta/i686-build-failure.patch
··· 1 + https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit?id=fe47ae6e1a5005b2e82f7eab57b5c3820453293a 2 + https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit?id=4ea1636b04dbd66536fa387bae2eea463efc705b 3 + 4 + diff -ru a/src/shared/linux_osl.c b/src/shared/linux_osl.c 5 + --- a/src/shared/linux_osl.c 2015-09-19 01:47:15.000000000 +0300 6 + +++ b/src/shared/linux_osl.c 2015-11-21 15:20:30.585902518 +0200 7 + @@ -932,7 +932,11 @@ 8 + uint cycles; 9 + 10 + #if defined(__i386__) 11 + +#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 3, 0) 12 + + cycles = (u32)rdtsc(); 13 + +#else 14 + rdtscl(cycles); 15 + +#endif 16 + #else 17 + cycles = 0; 18 + #endif
+109
pkgs/os-specific/linux/broadcom-sta/linux-4.7.patch
··· 1 + Since Linux 4.7, the enum ieee80211_band is no longer used 2 + 3 + This shall cause no problem's since both enums ieee80211_band 4 + and nl80211_band were added in the same commit: 5 + https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit?id=13ae75b103e07304a34ab40c9136e9f53e06475c 6 + 7 + This patch refactors the references of IEEE80211_BAND_* to NL80211_BAND_* 8 + 9 + Reference: 10 + https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit?id=57fbcce37be7c1d2622b56587c10ade00e96afa3 11 + 12 + --- a/src/wl/sys/wl_cfg80211_hybrid.c 2016-06-13 11:57:36.159340297 -0500 13 + +++ b/src/wl/sys/wl_cfg80211_hybrid.c 2016-06-13 11:58:18.442323435 -0500 14 + @@ -236,7 +236,7 @@ 15 + #endif 16 + 17 + #define CHAN2G(_channel, _freq, _flags) { \ 18 + - .band = IEEE80211_BAND_2GHZ, \ 19 + + .band = NL80211_BAND_2GHZ, \ 20 + .center_freq = (_freq), \ 21 + .hw_value = (_channel), \ 22 + .flags = (_flags), \ 23 + @@ -245,7 +245,7 @@ 24 + } 25 + 26 + #define CHAN5G(_channel, _flags) { \ 27 + - .band = IEEE80211_BAND_5GHZ, \ 28 + + .band = NL80211_BAND_5GHZ, \ 29 + .center_freq = 5000 + (5 * (_channel)), \ 30 + .hw_value = (_channel), \ 31 + .flags = (_flags), \ 32 + @@ -379,7 +379,7 @@ 33 + }; 34 + 35 + static struct ieee80211_supported_band __wl_band_2ghz = { 36 + - .band = IEEE80211_BAND_2GHZ, 37 + + .band = NL80211_BAND_2GHZ, 38 + .channels = __wl_2ghz_channels, 39 + .n_channels = ARRAY_SIZE(__wl_2ghz_channels), 40 + .bitrates = wl_g_rates, 41 + @@ -387,7 +387,7 @@ 42 + }; 43 + 44 + static struct ieee80211_supported_band __wl_band_5ghz_a = { 45 + - .band = IEEE80211_BAND_5GHZ, 46 + + .band = NL80211_BAND_5GHZ, 47 + .channels = __wl_5ghz_a_channels, 48 + .n_channels = ARRAY_SIZE(__wl_5ghz_a_channels), 49 + .bitrates = wl_a_rates, 50 + @@ -395,7 +395,7 @@ 51 + }; 52 + 53 + static struct ieee80211_supported_band __wl_band_5ghz_n = { 54 + - .band = IEEE80211_BAND_5GHZ, 55 + + .band = NL80211_BAND_5GHZ, 56 + .channels = __wl_5ghz_n_channels, 57 + .n_channels = ARRAY_SIZE(__wl_5ghz_n_channels), 58 + .bitrates = wl_a_rates, 59 + @@ -1876,8 +1876,8 @@ 60 + wdev->wiphy->max_num_pmkids = WL_NUM_PMKIDS_MAX; 61 + #endif 62 + wdev->wiphy->interface_modes = BIT(NL80211_IFTYPE_STATION) | BIT(NL80211_IFTYPE_ADHOC); 63 + - wdev->wiphy->bands[IEEE80211_BAND_2GHZ] = &__wl_band_2ghz; 64 + - wdev->wiphy->bands[IEEE80211_BAND_5GHZ] = &__wl_band_5ghz_a; 65 + + wdev->wiphy->bands[NL80211_BAND_2GHZ] = &__wl_band_2ghz; 66 + + wdev->wiphy->bands[NL80211_BAND_5GHZ] = &__wl_band_5ghz_a; 67 + wdev->wiphy->signal_type = CFG80211_SIGNAL_TYPE_MBM; 68 + wdev->wiphy->cipher_suites = __wl_cipher_suites; 69 + wdev->wiphy->n_cipher_suites = ARRAY_SIZE(__wl_cipher_suites); 70 + @@ -2000,7 +2000,7 @@ 71 + #if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 39) 72 + freq = ieee80211_channel_to_frequency(notif_bss_info->channel, 73 + (notif_bss_info->channel <= CH_MAX_2G_CHANNEL) ? 74 + - IEEE80211_BAND_2GHZ : IEEE80211_BAND_5GHZ); 75 + + NL80211_BAND_2GHZ : NL80211_BAND_5GHZ); 76 + #else 77 + freq = ieee80211_channel_to_frequency(notif_bss_info->channel); 78 + #endif 79 + @@ -2116,7 +2116,7 @@ 80 + return err; 81 + } 82 + chan = wf_chspec_ctlchan(chanspec); 83 + - band = (chan <= CH_MAX_2G_CHANNEL) ? IEEE80211_BAND_2GHZ : IEEE80211_BAND_5GHZ; 84 + + band = (chan <= CH_MAX_2G_CHANNEL) ? NL80211_BAND_2GHZ : NL80211_BAND_5GHZ; 85 + freq = ieee80211_channel_to_frequency(chan, band); 86 + channel = ieee80211_get_channel(wiphy, freq); 87 + cfg80211_ibss_joined(ndev, (u8 *)&wl->bssid, channel, GFP_KERNEL); 88 + @@ -2250,10 +2250,10 @@ 89 + join_params->params.chanspec_list[0] = 90 + ieee80211_frequency_to_channel(chan->center_freq); 91 + 92 + - if (chan->band == IEEE80211_BAND_2GHZ) { 93 + + if (chan->band == NL80211_BAND_2GHZ) { 94 + chanspec |= WL_CHANSPEC_BAND_2G; 95 + } 96 + - else if (chan->band == IEEE80211_BAND_5GHZ) { 97 + + else if (chan->band == NL80211_BAND_5GHZ) { 98 + chanspec |= WL_CHANSPEC_BAND_5G; 99 + } 100 + else { 101 + @@ -2885,7 +2885,7 @@ 102 + 103 + if (phy == 'n' || phy == 'a' || phy == 'v') { 104 + wiphy = wl_to_wiphy(wl); 105 + - wiphy->bands[IEEE80211_BAND_5GHZ] = &__wl_band_5ghz_n; 106 + + wiphy->bands[NL80211_BAND_5GHZ] = &__wl_band_5ghz_n; 107 + } 108 + 109 + return err;
-386
pkgs/os-specific/linux/broadcom-sta/linux-recent.patch
··· 1 - --- a/src/wl/sys/wl_cfg80211_hybrid.c 2014-06-26 12:42:08.000000000 +0200 2 - +++ b/src/wl/sys/wl_cfg80211_hybrid.c 2015-04-13 13:20:08.140013177 +0200 3 - @@ -63,8 +63,13 @@ 4 - static s32 wl_cfg80211_join_ibss(struct wiphy *wiphy, struct net_device *dev, 5 - struct cfg80211_ibss_params *params); 6 - static s32 wl_cfg80211_leave_ibss(struct wiphy *wiphy, struct net_device *dev); 7 - +#if LINUX_VERSION_CODE < KERNEL_VERSION(3, 16, 0) 8 - static s32 wl_cfg80211_get_station(struct wiphy *wiphy, 9 - struct net_device *dev, u8 *mac, struct station_info *sinfo); 10 - +#else 11 - +static s32 wl_cfg80211_get_station(struct wiphy *wiphy, 12 - + struct net_device *dev, const u8 *mac, struct station_info *sinfo); 13 - +#endif 14 - static s32 wl_cfg80211_set_power_mgmt(struct wiphy *wiphy, 15 - struct net_device *dev, bool enabled, s32 timeout); 16 - static int wl_cfg80211_connect(struct wiphy *wiphy, struct net_device *dev, 17 - @@ -1387,7 +1392,7 @@ 18 - key_endian_to_host(&key); 19 - 20 - params.key_len = (u8) min_t(u8, DOT11_MAX_KEY_SIZE, key.len); 21 - - memcpy(params.key, key.data, params.key_len); 22 - + memcpy((char *)params.key, key.data, params.key_len); 23 - 24 - if ((err = wl_dev_ioctl(dev, WLC_GET_WSEC, &wsec, sizeof(wsec)))) { 25 - return err; 26 - @@ -1421,9 +1426,15 @@ 27 - return err; 28 - } 29 - 30 - +#if LINUX_VERSION_CODE < KERNEL_VERSION(3, 16, 0) 31 - static s32 32 - wl_cfg80211_get_station(struct wiphy *wiphy, struct net_device *dev, 33 - u8 *mac, struct station_info *sinfo) 34 - +#else 35 - +static s32 36 - +wl_cfg80211_get_station(struct wiphy *wiphy, struct net_device *dev, 37 - + const u8 *mac, struct station_info *sinfo) 38 - +#endif 39 - { 40 - struct wl_cfg80211_priv *wl = wiphy_to_wl(wiphy); 41 - scb_val_t scb_val; 42 - @@ -1441,7 +1452,11 @@ 43 - WL_DBG(("Could not get rate (%d)\n", err)); 44 - } else { 45 - rate = dtoh32(rate); 46 - +#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 0, 0) 47 - sinfo->filled |= STATION_INFO_TX_BITRATE; 48 - +#else 49 - + sinfo->filled |= BIT(NL80211_STA_INFO_TX_BITRATE); 50 - +#endif 51 - sinfo->txrate.legacy = rate * 5; 52 - WL_DBG(("Rate %d Mbps\n", (rate / 2))); 53 - } 54 - @@ -1454,7 +1469,11 @@ 55 - return err; 56 - } 57 - rssi = dtoh32(scb_val.val); 58 - +#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 0, 0) 59 - sinfo->filled |= STATION_INFO_SIGNAL; 60 - +#else 61 - + sinfo->filled |= BIT(NL80211_STA_INFO_SIGNAL); 62 - +#endif 63 - sinfo->signal = rssi; 64 - WL_DBG(("RSSI %d dBm\n", rssi)); 65 - } 66 - @@ -2010,9 +2029,15 @@ 67 - 68 - notify_ie = (u8 *)bi + le16_to_cpu(bi->ie_offset); 69 - notify_ielen = le32_to_cpu(bi->ie_length); 70 - +#if LINUX_VERSION_CODE < KERNEL_VERSION(3, 18, 0) 71 - cbss = cfg80211_inform_bss(wiphy, channel, (const u8 *)(bi->BSSID.octet), 72 - 0, beacon_proberesp->capab_info, beacon_proberesp->beacon_int, 73 - (const u8 *)notify_ie, notify_ielen, signal, GFP_KERNEL); 74 - +#else 75 - + cbss = cfg80211_inform_bss(wiphy, channel, CFG80211_BSS_FTYPE_UNKNOWN, (const u8 *)(bi->BSSID.octet), 76 - + 0, beacon_proberesp->capab_info, beacon_proberesp->beacon_int, 77 - + (const u8 *)notify_ie, notify_ielen, signal, GFP_KERNEL); 78 - +#endif 79 - 80 - if (unlikely(!cbss)) 81 - return -ENOMEM; 82 - @@ -2047,7 +2072,11 @@ 83 - } 84 - else if ((event == WLC_E_LINK && ~(flags & WLC_EVENT_MSG_LINK)) || 85 - event == WLC_E_DEAUTH_IND || event == WLC_E_DISASSOC_IND) { 86 - +#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 2, 0) 87 - + cfg80211_disconnected(ndev, 0, NULL, 0, false, GFP_KERNEL); 88 - +#else 89 - cfg80211_disconnected(ndev, 0, NULL, 0, GFP_KERNEL); 90 - +#endif 91 - clear_bit(WL_STATUS_CONNECTED, &wl->status); 92 - wl_link_down(wl); 93 - wl_init_prof(wl->profile); 94 - @@ -2071,7 +2100,26 @@ 95 - wl_get_assoc_ies(wl); 96 - memcpy(&wl->bssid, &e->addr, ETHER_ADDR_LEN); 97 - wl_update_bss_info(wl); 98 - +#if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 15, 0) 99 - + { 100 - + struct wl_bss_info *bi; 101 - + u16 bss_info_channel; 102 - + struct ieee80211_channel *channel; 103 - + u32 freq; 104 - + 105 - + bi = (struct wl_bss_info *)(wl->extra_buf + 4); 106 - + bss_info_channel = bi->ctl_ch ? bi->ctl_ch : CHSPEC_CHANNEL(bi->chanspec); 107 - + 108 - + freq = ieee80211_channel_to_frequency(bss_info_channel, 109 - + (bss_info_channel <= CH_MAX_2G_CHANNEL) ? 110 - + IEEE80211_BAND_2GHZ : IEEE80211_BAND_5GHZ); 111 - + 112 - + channel = ieee80211_get_channel(wl_to_wiphy(wl), freq); 113 - + cfg80211_ibss_joined(ndev, (u8 *)&wl->bssid, channel, GFP_KERNEL); 114 - + } 115 - +#else 116 - cfg80211_ibss_joined(ndev, (u8 *)&wl->bssid, GFP_KERNEL); 117 - +#endif 118 - set_bit(WL_STATUS_CONNECTED, &wl->status); 119 - wl->profile->active = true; 120 - } 121 - @@ -2629,7 +2677,15 @@ 122 - 123 - void wl_cfg80211_detach(struct net_device *ndev) 124 - { 125 - - struct wl_cfg80211_priv *wl = ndev_to_wl(ndev); 126 - + struct wl_cfg80211_priv *wl; 127 - + struct wireless_dev *wdev; 128 - + 129 - + wdev = ndev->ieee80211_ptr; 130 - + if (wdev == NULL) { 131 - + printk(KERN_ERR "[%s()] in ndev=%p: IEEE80211ptr=%p\n", __FUNCTION__, ndev, wdev); 132 - + return; 133 - + } 134 - + wl = ndev_to_wl(ndev); 135 - 136 - wl_deinit_cfg80211_priv(wl); 137 - wl_free_wdev(wl); 138 - --- a/src/wl/sys/wl_dbg.h 2014-06-26 12:42:08.000000000 +0200 139 - +++ b/src/wl/sys/wl_dbg.h 2015-04-13 13:19:52.443345832 +0200 140 - @@ -55,10 +55,12 @@ 141 - 142 - #define WL_NONE(args) 143 - 144 - +#define FORCE_TRACE_LEVEL(fmt, ...) do { printk(KERN_ERR fmt, ## __VA_ARGS__); } while (0) /* ## is GCC specific syntax to remove comma when single arg */ 145 - + 146 - #ifdef BCMDBG_ERR 147 - #define WL_ERROR(args) WL_PRINT(args) 148 - #else 149 - -#define WL_ERROR(args) 150 - +#define WL_ERROR(args) FORCE_TRACE_LEVEL args 151 - #endif 152 - #define WL_TRACE(args) 153 - #define WL_APSTA_UPDN(args) 154 - --- a/src/wl/sys/wl_linux.c 2014-06-26 12:42:08.000000000 +0200 155 - +++ b/src/wl/sys/wl_linux.c 2015-04-13 13:19:52.443345832 +0200 156 - @@ -878,7 +878,7 @@ 157 - static SIMPLE_DEV_PM_OPS(wl_pm_ops, wl_suspend, wl_resume); 158 - #endif 159 - 160 - -static struct pci_driver wl_pci_driver = { 161 - +static struct pci_driver wl_pci_driver __refdata = { 162 - .name = "wl", 163 - .probe = wl_pci_probe, 164 - .remove = __devexit_p(wl_remove), 165 - @@ -1270,6 +1270,7 @@ 166 - MFREE(wl->osh, wlif->dev, sizeof(struct net_device)); 167 - #else 168 - free_netdev(wlif->dev); 169 - + wlif->dev = NULL; 170 - #endif 171 - } 172 - 173 - @@ -1307,7 +1308,12 @@ 174 - dev->priv = priv_link; 175 - #else 176 - 177 - +#if (LINUX_VERSION_CODE < KERNEL_VERSION(3, 17, 0)) 178 - dev = alloc_netdev(sizeof(priv_link_t), intf_name, ether_setup); 179 - +#else 180 - + dev = alloc_netdev(sizeof(priv_link_t), intf_name, NET_NAME_UNKNOWN, 181 - + ether_setup); 182 - +#endif 183 - if (!dev) { 184 - WL_ERROR(("wl%d: %s: alloc_netdev failed\n", 185 - (wl->pub)?wl->pub->unit:wlif->subunit, __FUNCTION__)); 186 - @@ -1651,11 +1657,7 @@ 187 - } 188 - 189 - WL_LOCK(wl); 190 - - if (!capable(CAP_NET_ADMIN)) { 191 - - bcmerror = BCME_EPERM; 192 - - } else { 193 - - bcmerror = wlc_ioctl(wl->wlc, ioc.cmd, buf, ioc.len, wlif->wlcif); 194 - - } 195 - + bcmerror = wlc_ioctl(wl->wlc, ioc.cmd, buf, ioc.len, wlif->wlcif); 196 - WL_UNLOCK(wl); 197 - 198 - done1: 199 - @@ -2157,8 +2159,8 @@ 200 - wlif = WL_DEV_IF(dev); 201 - wl = WL_INFO(dev); 202 - 203 - + skb->prev = NULL; 204 - if (WL_ALL_PASSIVE_ENAB(wl) || (WL_RTR() && WL_CONFIG_SMP())) { 205 - - skb->prev = NULL; 206 - 207 - TXQ_LOCK(wl); 208 - 209 - @@ -2455,8 +2457,10 @@ 210 - p80211msg_t *phdr; 211 - 212 - len = sizeof(p80211msg_t) + oskb->len - D11_PHY_HDR_LEN; 213 - - if ((skb = dev_alloc_skb(len)) == NULL) 214 - + if ((skb = dev_alloc_skb(len)) == NULL) { 215 - + WL_ERROR(("in %s:%d [%s()] dev_alloc_skb() failure!", __FILE__, __LINE__, __FUNCTION__)); 216 - return; 217 - + } 218 - 219 - skb_put(skb, len); 220 - phdr = (p80211msg_t*)skb->data; 221 - @@ -2535,8 +2539,10 @@ 222 - rtap_len = sizeof(wl_radiotap_ht_brcm_2_t); 223 - 224 - len = rtap_len + (oskb->len - D11_PHY_HDR_LEN); 225 - - if ((skb = dev_alloc_skb(len)) == NULL) 226 - + if ((skb = dev_alloc_skb(len)) == NULL) { 227 - + WL_ERROR(("in %s:%d [%s()] dev_alloc_skb() failure!", __FILE__, __LINE__, __FUNCTION__)); 228 - return; 229 - + } 230 - 231 - skb_put(skb, len); 232 - 233 - @@ -2664,8 +2670,10 @@ 234 - len += amsdu_len; 235 - } 236 - 237 - - if ((skb = dev_alloc_skb(len)) == NULL) 238 - + if ((skb = dev_alloc_skb(len)) == NULL) { 239 - + WL_ERROR(("in %s:%d [%s()] dev_alloc_skb() failure!", __FILE__, __LINE__, __FUNCTION__)); 240 - return; 241 - + } 242 - 243 - skb_put(skb, len); 244 - 245 - @@ -2990,7 +2998,7 @@ 246 - } 247 - 248 - void 249 - -wl_set_monitor(wl_info_t *wl, int val) 250 - +wl_set_monitor(wl_info_t *wl, int val) /* public => is called by wlc_hybrid.o_shipped */ 251 - { 252 - const char *devname; 253 - wl_if_t *wlif; 254 - @@ -3224,42 +3232,75 @@ 255 - #if LINUX_VERSION_CODE < KERNEL_VERSION(3, 10, 0) 256 - static int 257 - wl_proc_read(char *buffer, char **start, off_t offset, int length, int *eof, void *data) 258 - +{ 259 - + wl_info_t * wl = (wl_info_t *)data; 260 - #else 261 - static ssize_t 262 - -wl_proc_read(struct file *filp, char __user *buffer, size_t length, loff_t *data) 263 - -#endif 264 - +wl_proc_read(struct file *filp, char __user *buffer, size_t length, loff_t *offp) 265 - { 266 - - wl_info_t * wl = (wl_info_t *)data; 267 - - int to_user; 268 - - int len; 269 - + wl_info_t * wl = PDE_DATA(file_inode(filp)); 270 - +#endif 271 - + int bcmerror, len; 272 - + int to_user = 0; 273 - + char tmp[8]; 274 - 275 - #if LINUX_VERSION_CODE < KERNEL_VERSION(3, 10, 0) 276 - if (offset > 0) { 277 - *eof = 1; 278 - return 0; 279 - } 280 - +#else 281 - + if (*offp > 0) { /* for example, stop: cat /proc/brcm_monitor0 */ 282 - + return 0; /* 0 <=> EOF */ 283 - + } 284 - #endif 285 - 286 - - if (!length) { 287 - - WL_ERROR(("%s: Not enough return buf space\n", __FUNCTION__)); 288 - - return 0; 289 - - } 290 - WL_LOCK(wl); 291 - - wlc_ioctl(wl->wlc, WLC_GET_MONITOR, &to_user, sizeof(int), NULL); 292 - - len = sprintf(buffer, "%d\n", to_user); 293 - - WL_UNLOCK(wl); 294 - - return len; 295 - + bcmerror = wlc_ioctl(wl->wlc, WLC_GET_MONITOR, &to_user, sizeof(int), NULL); 296 - + WL_UNLOCK(wl); 297 - + 298 - + if (bcmerror != BCME_OK) { 299 - + WL_ERROR(("%s: GET_MONITOR failed with %d\n", __FUNCTION__, bcmerror)); 300 - + return -EIO; 301 - + } 302 - + 303 - + len = snprintf(tmp, ARRAY_SIZE(tmp), "%d\n", to_user); 304 - + tmp[ARRAY_SIZE(tmp) - 1] = '\0'; 305 - + if (len >= ARRAY_SIZE(tmp)) { 306 - + printk(KERN_ERR "%s:%d [%s()] output would be truncated (ret=%d)!", __FILE__, __LINE__, __FUNCTION__, len); 307 - + return -ERANGE; 308 - + } 309 - + else if (len < 0) { 310 - + printk(KERN_ERR "%s:%d [%s()] unable to convert value (ret=%d)!", __FILE__, __LINE__, __FUNCTION__, len); 311 - + return len; 312 - + } 313 - + if (length < len) { 314 - + printk(KERN_ERR "%s:%d [%s()] user buffer is too small (at least=%d ; user=%d)!", __FILE__, __LINE__, __FUNCTION__, len, (int)length); 315 - + return -EMSGSIZE; 316 - + } 317 - + if (copy_to_user(buffer, tmp, len) != 0) { 318 - + printk(KERN_ERR "%s:%d [%s()] unable to copy data!", __FILE__, __LINE__, __FUNCTION__); 319 - + return -EFAULT; 320 - + } 321 - + 322 - +#if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 10, 0) 323 - + *offp += len; 324 - +#endif 325 - + 326 - + return len; 327 - } 328 - 329 - #if LINUX_VERSION_CODE < KERNEL_VERSION(3, 10, 0) 330 - static int 331 - wl_proc_write(struct file *filp, const char *buff, unsigned long length, void *data) 332 - +{ 333 - + wl_info_t * wl = (wl_info_t *)data; 334 - #else 335 - static ssize_t 336 - -wl_proc_write(struct file *filp, const char __user *buff, size_t length, loff_t *data) 337 - -#endif 338 - +wl_proc_write(struct file *filp, const char __user *buff, size_t length, loff_t *offp) 339 - { 340 - - wl_info_t * wl = (wl_info_t *)data; 341 - + wl_info_t * wl = PDE_DATA(file_inode(filp)); 342 - +#endif 343 - int from_user = 0; 344 - int bcmerror; 345 - 346 - @@ -3270,7 +3311,11 @@ 347 - } 348 - if (copy_from_user(&from_user, buff, 1)) { 349 - WL_ERROR(("%s: copy from user failed\n", __FUNCTION__)); 350 - - return -EIO; 351 - +#if LINUX_VERSION_CODE < KERNEL_VERSION(3, 10, 0) 352 - + return -EIO; 353 - +#else 354 - + return -EFAULT; 355 - +#endif 356 - } 357 - 358 - if (from_user >= 0x30) 359 - @@ -3280,10 +3325,15 @@ 360 - bcmerror = wlc_ioctl(wl->wlc, WLC_SET_MONITOR, &from_user, sizeof(int), NULL); 361 - WL_UNLOCK(wl); 362 - 363 - - if (bcmerror < 0) { 364 - + if (bcmerror != BCME_OK) { 365 - WL_ERROR(("%s: SET_MONITOR failed with %d\n", __FUNCTION__, bcmerror)); 366 - return -EIO; 367 - } 368 - + 369 - +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3, 10, 0)) && 0 /* no need to update offset because this file should only trigger action... */ 370 - + *offp += length; 371 - +#endif 372 - + 373 - return length; 374 - } 375 - 376 - @@ -3304,8 +3354,8 @@ 377 - if ((wl->proc_entry = create_proc_entry(tmp, 0644, NULL)) == NULL) { 378 - WL_ERROR(("%s: create_proc_entry %s failed\n", __FUNCTION__, tmp)); 379 - #else 380 - - if ((wl->proc_entry = proc_create(tmp, 0644, NULL, &wl_fops)) == NULL) { 381 - - WL_ERROR(("%s: proc_create %s failed\n", __FUNCTION__, tmp)); 382 - + if ((wl->proc_entry = proc_create_data(tmp, 0644, NULL, &wl_fops, wl)) == NULL) { 383 - + WL_ERROR(("%s: proc_create_data %s failed\n", __FUNCTION__, tmp)); 384 - #endif 385 - ASSERT(0); 386 - return -1;
+13
pkgs/os-specific/linux/broadcom-sta/null-pointer-fix.patch
··· 1 + diff -urN a/src/wl/sys/wl_linux.c b/src/wl/sys/wl_linux.c 2 + --- a/src/wl/sys/wl_linux.c 2015-01-06 12:33:42.981659618 +0100 3 + +++ b/src/wl/sys/wl_linux.c 2015-01-06 12:34:05.647395418 +0100 4 + @@ -2157,8 +2157,8 @@ 5 + wlif = WL_DEV_IF(dev); 6 + wl = WL_INFO(dev); 7 + 8 + + skb->prev = NULL; 9 + if (WL_ALL_PASSIVE_ENAB(wl) || (WL_RTR() && WL_CONFIG_SMP())) { 10 + - skb->prev = NULL; 11 + 12 + TXQ_LOCK(wl); 13 +
+2 -2
pkgs/os-specific/linux/kernel/patches.nix
··· 94 94 95 95 grsecurity_testing = grsecPatch 96 96 { kver = "4.6.5"; 97 - grrev = "201607272152"; 98 - sha256 = "120rj3cpvbchihj3w3i9j2fxvap3270kfxjfznw2ljglzf7pi8zc"; 97 + grrev = "201607312210"; 98 + sha256 = "17dnp6w092kvqxqxbdgjpl4mrsn2wkb7z8q5d8ck7dfanpmqap0w"; 99 99 }; 100 100 101 101 # This patch relaxes grsec constraints on the location of usermode helpers,
+40
pkgs/os-specific/linux/nvidia-x11/365.35-kernel-4.7.patch
··· 1 + diff -Naur NVIDIA-Linux-x86_64-367.35-no-compat32-upstream/kernel/nvidia-drm/nvidia-drm-fb.c NVIDIA-Linux-x86_64-367.35-no-compat32/kernel/nvidia-drm/nvidia-drm-fb.c 2 + --- NVIDIA-Linux-x86_64-367.35-no-compat32-upstream/kernel/nvidia-drm/nvidia-drm-fb.c 2016-07-31 19:07:06.595038290 -0400 3 + +++ NVIDIA-Linux-x86_64-367.35-no-compat32/kernel/nvidia-drm/nvidia-drm-fb.c 2016-07-31 19:09:18.532197060 -0400 4 + @@ -114,7 +114,7 @@ 5 + * We don't support any planar format, pick up first buffer only. 6 + */ 7 + 8 + - gem = drm_gem_object_lookup(dev, file, cmd->handles[0]); 9 + + gem = drm_gem_object_lookup(file, cmd->handles[0]); 10 + 11 + if (gem == NULL) 12 + { 13 + diff -Naur NVIDIA-Linux-x86_64-367.35-no-compat32-upstream/kernel/nvidia-drm/nvidia-drm-gem.c NVIDIA-Linux-x86_64-367.35-no-compat32/kernel/nvidia-drm/nvidia-drm-gem.c 14 + --- NVIDIA-Linux-x86_64-367.35-no-compat32-upstream/kernel/nvidia-drm/nvidia-drm-gem.c 2016-07-31 19:07:06.595038290 -0400 15 + +++ NVIDIA-Linux-x86_64-367.35-no-compat32/kernel/nvidia-drm/nvidia-drm-gem.c 2016-07-31 19:08:56.187492736 -0400 16 + @@ -408,7 +408,7 @@ 17 + 18 + mutex_lock(&dev->struct_mutex); 19 + 20 + - gem = drm_gem_object_lookup(dev, file, handle); 21 + + gem = drm_gem_object_lookup(file, handle); 22 + 23 + if (gem == NULL) 24 + { 25 + diff -Naur NVIDIA-Linux-x86_64-367.35-no-compat32-upstream/kernel/nvidia-uvm/uvm_linux.h NVIDIA-Linux-x86_64-367.35-no-compat32/kernel/nvidia-uvm/uvm_linux.h 26 + --- NVIDIA-Linux-x86_64-367.35-no-compat32-upstream/kernel/nvidia-uvm/uvm_linux.h 2016-07-31 19:07:06.600038448 -0400 27 + +++ NVIDIA-Linux-x86_64-367.35-no-compat32/kernel/nvidia-uvm/uvm_linux.h 2016-07-31 19:08:06.506926763 -0400 28 + @@ -554,12 +554,6 @@ 29 + INIT_RADIX_TREE(tree, GFP_NOWAIT); 30 + } 31 + 32 + -static bool radix_tree_empty(struct radix_tree_root *tree) 33 + -{ 34 + - void *dummy; 35 + - return radix_tree_gang_lookup(tree, &dummy, 0, 1) == 0; 36 + -} 37 + - 38 + 39 + #if !defined(NV_USLEEP_RANGE_PRESENT) 40 + static void __sched usleep_range(unsigned long min, unsigned long max)
+5 -3
pkgs/os-specific/linux/nvidia-x11/default.nix
··· 12 12 13 13 let 14 14 15 - versionNumber = "361.45.11"; 15 + versionNumber = "367.35"; 16 16 17 17 # Policy: use the highest stable version as the default (on our master). 18 18 inherit (stdenv.lib) makeLibraryPath; ··· 28 28 if stdenv.system == "i686-linux" then 29 29 fetchurl { 30 30 url = "http://download.nvidia.com/XFree86/Linux-x86/${versionNumber}/NVIDIA-Linux-x86-${versionNumber}.run"; 31 - sha256 = "036v7bzh9zy7zvaz2wf7zsamrynbg1yr1dll7sf1l928w059i6pb"; 31 + sha256 = "05g36bxcfk21ab8b0ay3zy21k5nd71468p9y1nbflx7ghpx25jrq"; 32 32 } 33 33 else if stdenv.system == "x86_64-linux" then 34 34 fetchurl { 35 35 url = "http://download.nvidia.com/XFree86/Linux-x86_64/${versionNumber}/NVIDIA-Linux-x86_64-${versionNumber}-no-compat32.run"; 36 - sha256 = "1f8bxmf8cr3cgzxgap5ccb1yrqyrrdig19dp282y6z9xjq27l074"; 36 + sha256 = "0m4k8f0212l63h22wk6hgi8fbfsgxqih5mizsw4ixqqmjd75av4a"; 37 37 } 38 38 else throw "nvidia-x11 does not support platform ${stdenv.system}"; 39 39 ··· 52 52 gtkPath = optionalString (!libsOnly) (makeLibraryPath 53 53 [ gtk atk pango glib gdk_pixbuf cairo ] ); 54 54 programPath = makeLibraryPath [ xorg.libXv ]; 55 + 56 + patches = if versionAtLeast kernel.version "4.7" then [ ./365.35-kernel-4.7.patch ] else []; 55 57 56 58 buildInputs = [ perl nukeReferences ]; 57 59
+1 -1
pkgs/servers/matrix-synapse/default.nix
··· 27 27 blist canonicaljson daemonize dateutil frozendict pillow pybcrypt pyasn1 28 28 pydenticon pymacaroons-pynacl pynacl pyopenssl pysaml2 pytz requests2 29 29 service-identity signedjson systemd twisted ujson unpaddedbase64 pyyaml 30 - matrix-angular-sdk bleach netaddr jinja2 psycopg2 30 + matrix-angular-sdk bleach netaddr jinja2 psycopg2 python.modules.curses 31 31 ]; 32 32 33 33 # Checks fail because of Tox.
+2 -2
pkgs/servers/nosql/redis/default.nix
··· 1 1 { stdenv, fetchurl, lua }: 2 2 3 3 stdenv.mkDerivation rec { 4 - version = "3.0.7"; 4 + version = "3.2.2"; 5 5 name = "redis-${version}"; 6 6 7 7 src = fetchurl { 8 8 url = "http://download.redis.io/releases/${name}.tar.gz"; 9 - sha256 = "08vzfdr67gp3lvk770qpax2c5g2sx8hn6p64jn3jddrvxb2939xj"; 9 + sha256 = "05cf63502b2248b5d39588962100bfa4fcb47dabd56931a8cb60b301b1d8daea"; 10 10 }; 11 11 12 12 buildInputs = [ lua ];
+4 -8
pkgs/tools/audio/beets/default.nix
··· 6 6 , enableBadfiles ? true, flac ? null, mp3val ? null 7 7 , enableConvert ? true, ffmpeg ? null 8 8 , enableDiscogs ? true 9 - , enableEchonest ? true 10 9 , enableEmbyupdate ? true 11 10 , enableFetchart ? true 12 11 , enableLastfm ? true ··· 25 24 assert enableBadfiles -> flac != null && mp3val != null; 26 25 assert enableConvert -> ffmpeg != null; 27 26 assert enableDiscogs -> pythonPackages.discogs_client != null; 28 - assert enableEchonest -> pythonPackages.pyechonest != null; 29 27 assert enableFetchart -> pythonPackages.responses != null; 30 28 assert enableLastfm -> pythonPackages.pylast != null; 31 29 assert enableMpd -> pythonPackages.mpd != null; ··· 42 40 chroma = enableAcoustid; 43 41 convert = enableConvert; 44 42 discogs = enableDiscogs; 45 - echonest = enableEchonest; 46 43 embyupdate = enableEmbyupdate; 47 44 fetchart = enableFetchart; 48 45 lastgenre = enableLastfm; ··· 55 52 }; 56 53 57 54 pluginsWithoutDeps = [ 58 - "bench" "bpd" "bpm" "bucket" "cue" "duplicates" "edit" "embedart" 59 - "filefilter" "freedesktop" "fromfilename" "ftintitle" "fuzzy" "ihate" 55 + "beatport" "bench" "bpd" "bpm" "bucket" "cue" "duplicates" "edit" "embedart" 56 + "export" "filefilter" "freedesktop" "fromfilename" "ftintitle" "fuzzy" "hook" "ihate" 60 57 "importadded" "importfeeds" "info" "inline" "ipfs" "keyfinder" "lyrics" 61 58 "mbcollection" "mbsubmit" "mbsync" "metasync" "missing" "permissions" "play" 62 59 "plexupdate" "random" "rewrite" "scrub" "smartplaylist" "spotify" "the" ··· 73 70 74 71 in buildPythonApplication rec { 75 72 name = "beets-${version}"; 76 - version = "1.3.17"; 73 + version = "1.3.19"; 77 74 namePrefix = ""; 78 75 79 76 src = fetchFromGitHub { 80 77 owner = "sampsyo"; 81 78 repo = "beets"; 82 79 rev = "v${version}"; 83 - sha256 = "1fskxx5xxjqf4xmfjrinh7idjiq6qncb24hiyccv09l47fr1yipc"; 80 + sha256 = "0f2v1924ryx5xijpv1jycanl4471vcd7c5lld58lm0viyvh5k28x"; 84 81 }; 85 82 86 83 propagatedBuildInputs = [ ··· 101 98 pythonPackages.requests2 102 99 ++ optional enableConvert ffmpeg 103 100 ++ optional enableDiscogs pythonPackages.discogs_client 104 - ++ optional enableEchonest pythonPackages.pyechonest 105 101 ++ optional enableLastfm pythonPackages.pylast 106 102 ++ optional enableMpd pythonPackages.mpd 107 103 ++ optional enableThumbnails pythonPackages.pyxdg
+24
pkgs/tools/backup/rdup/default.nix
··· 1 + { stdenv, fetchFromGitHub, pkgconfig, autoreconfHook, glib, pcre }: 2 + 3 + stdenv.mkDerivation rec { 4 + name = "rdup-${version}"; 5 + version = "1.1.15"; 6 + 7 + src = fetchFromGitHub { 8 + owner = "miekg"; 9 + repo = "rdup"; 10 + rev = "d66e4320cd0bbcc83253baddafe87f9e0e83caa6"; 11 + sha256 = "0bzyv6qmnivxnv9nw7lnfn46k0m1dlxcjj53zcva6v8y8084l1iw"; 12 + }; 13 + 14 + nativeBuildInputs = [ autoreconfHook pkgconfig ]; 15 + buildInputs = [ glib pcre ]; 16 + 17 + meta = { 18 + description = "The only backup program that doesn't make backups"; 19 + homepage = "https://github.com/miekg/rdup"; 20 + license = stdenv.lib.licenses.gpl3; 21 + platforms = stdenv.lib.platforms.linux; 22 + maintainers = with stdenv.lib.maintainers; [ lukasepple ]; 23 + }; 24 + }
+5 -4
pkgs/tools/misc/cpuminer-multi/default.nix
··· 2 2 , aesni ? true }: 3 3 4 4 let 5 - rev = "977dad27e18627e5b723800f5f4201e385fe0d2e"; 6 - date = "20140723"; 5 + rev = "8393e03089c0abde61bd5d72aba8f926c3d6eca4"; 6 + date = "20160316"; 7 7 in 8 8 stdenv.mkDerivation rec { 9 9 name = "cpuminer-multi-${date}-${stdenv.lib.strings.substring 0 7 rev}"; ··· 11 11 src = fetchgit { 12 12 inherit rev; 13 13 url = https://github.com/wolf9466/cpuminer-multi.git; 14 - sha256 = "1lzaiwy2wk9awpzpfnp3d6dymnb4bvgw1vg2433plfqhi9jfdrqj"; 14 + sha256 = "11dg4rra4dgfb9x6q85irn0hrkx2lkwyrdpgdh10pag09s3vhy4v"; 15 15 }; 16 16 17 17 buildInputs = [ autoconf automake curl jansson ]; ··· 27 27 homepage = https://github.com/wolf9466/cpuminer-multi; 28 28 license = licenses.gpl2; 29 29 maintainers = [ maintainers.ehmry ]; 30 + platforms = platforms.linux; 30 31 }; 31 - } 32 + }
+25
pkgs/tools/misc/tmuxp/default.nix
··· 1 + { stdenv, fetchurl, pythonPackages }: 2 + 3 + pythonPackages.buildPythonApplication rec { 4 + name = "tmuxp-${version}"; 5 + version = "1.2.0"; 6 + 7 + namePrefix = ""; 8 + 9 + src = fetchurl { 10 + url = "mirror://pypi/t/tmuxp/${name}.tar.gz"; 11 + sha256 = "05z5ssv9glsqmcy9fdq06bawy1274dnzqsqd3a4z4jd0w6j09smn"; 12 + }; 13 + 14 + propagatedBuildInputs = with pythonPackages; [ 15 + click colorama kaptan libtmux 16 + ]; 17 + 18 + meta = with stdenv.lib; { 19 + description = "Manage tmux workspaces from JSON and YAML"; 20 + homepage = "http://tmuxp.readthedocs.io"; 21 + license = licenses.bsd3; 22 + platforms = platforms.linux; 23 + maintainers = with maintainers; [ jgeerds ]; 24 + }; 25 + }
+2 -2
pkgs/tools/misc/vdirsyncer/default.nix
··· 3 3 # Packaging documentation at: 4 4 # https://github.com/untitaker/vdirsyncer/blob/master/docs/packaging.rst 5 5 pythonPackages.buildPythonApplication rec { 6 - version = "0.11.2"; 6 + version = "0.11.3"; 7 7 name = "vdirsyncer-${version}"; 8 8 9 9 src = fetchurl { 10 10 url = "mirror://pypi/v/vdirsyncer/${name}.tar.gz"; 11 - sha256 = "15isw2jhjfxi213wdj9d8mwq2m58k8bwf831qnxrjcz7j7bwy7mj"; 11 + sha256 = "10majl58vdpxgbddjqgwblvl7akvvr4c2c8iaxnf3kgyh01jq6k9"; 12 12 }; 13 13 14 14 propagatedBuildInputs = with pythonPackages; [
+2 -2
pkgs/tools/networking/dnscrypt-proxy/default.nix
··· 4 4 5 5 stdenv.mkDerivation rec { 6 6 name = "dnscrypt-proxy-${version}"; 7 - version = "1.6.1"; 7 + version = "1.7.0"; 8 8 9 9 src = fetchurl { 10 10 url = "https://download.dnscrypt.org/dnscrypt-proxy/${name}.tar.bz2"; 11 - sha256 = "16lif3qhyfjpgg54vjlwpslxk90akmbhlpnn1szxm628bmpw6nl9"; 11 + sha256 = "1qw2nib0d5ia8581lbdnjxgn9c7pf2qw8vhpnnh1wjcjj3gpgbqx"; 12 12 }; 13 13 14 14 configureFlags = optional stdenv.isLinux "--with-systemd";
+65
pkgs/tools/networking/unbound/python.nix
··· 1 + { stdenv, fetchurl, openssl, expat, libevent, swig, pythonPackages }: 2 + 3 + let 4 + inherit (pythonPackages) python; 5 + in stdenv.mkDerivation rec { 6 + pname = "pyunbound"; 7 + name = "${pname}-${version}"; 8 + version = "1.5.9"; 9 + 10 + src = fetchurl { 11 + url = "http://unbound.net/downloads/unbound-${version}.tar.gz"; 12 + sha256 = "01328cfac99ab5b8c47115151896a244979e442e284eb962c0ea84b7782b6990"; 13 + }; 14 + 15 + buildInputs = [ openssl expat libevent swig python ]; 16 + 17 + patchPhase = ''substituteInPlace Makefile.in \ 18 + --replace "\$(DESTDIR)\$(PYTHON_SITE_PKG)" "$out/${python.sitePackages}" \ 19 + --replace "\$(LIBTOOL) --mode=install cp _unbound.la" "cp _unbound.la" 20 + ''; 21 + 22 + preConfigure = "export PYTHON_VERSION=${python.majorVersion}"; 23 + 24 + configureFlags = [ 25 + "--with-ssl=${openssl.dev}" 26 + "--with-libexpat=${expat.dev}" 27 + "--with-libevent=${libevent.dev}" 28 + "--localstatedir=/var" 29 + "--sysconfdir=/etc" 30 + "--sbindir=\${out}/bin" 31 + "--enable-pie" 32 + "--enable-relro-now" 33 + "--with-pyunbound" 34 + "DESTDIR=$out PREFIX=" 35 + ]; 36 + 37 + preInstall = '' 38 + mkdir -p $out/${python.sitePackages} $out/etc/${pname} 39 + cp .libs/_unbound.so .libs/libunbound.so* $out/${python.sitePackages} 40 + substituteInPlace _unbound.la \ 41 + --replace "-L.libs $PWD/libunbound.la" "-L$out/${python.sitePackages}" \ 42 + --replace "libdir=\'$PWD/${python.sitePackages}\'" "libdir=\'$out/${python.sitePackages}\'" 43 + ''; 44 + 45 + installFlags = [ "configfile=\${out}/etc/unbound/unbound.conf pyunbound-install lib" ]; 46 + 47 + # All we want is the Unbound Python module 48 + postInstall = '' 49 + # Generate the built in root anchor and root key and store these in a logical place 50 + # to be used by tools depending only on the Python module 51 + $out/bin/unbound-anchor -l | head -1 > $out/etc/${pname}/root.anchor 52 + $out/bin/unbound-anchor -l | tail --lines=+2 - > $out/etc/${pname}/root.key 53 + # We don't need anything else 54 + rm -fR $out/bin $out/share $out/include $out/etc/unbound 55 + patchelf --replace-needed libunbound.so.2 $out/${python.sitePackages}/libunbound.so.2 $out/${python.sitePackages}/_unbound.so 56 + ''; 57 + 58 + meta = with stdenv.lib; { 59 + description = "Python library for Unbound, the validating, recursive, and caching DNS resolver"; 60 + license = licenses.bsd3; 61 + homepage = http://www.unbound.net; 62 + maintainers = with maintainers; [ leenaars ]; 63 + platforms = stdenv.lib.platforms.unix; 64 + }; 65 + }
+2 -2
pkgs/tools/security/afl/default.nix
··· 9 9 in 10 10 stdenv.mkDerivation rec { 11 11 name = "afl-${version}"; 12 - version = "2.10b"; 12 + version = "2.23b"; 13 13 14 14 src = fetchurl { 15 15 url = "http://lcamtuf.coredump.cx/afl/releases/${name}.tgz"; 16 - sha256 = "1qxz3szsdr3ciz496mjb5v2k8p90nilgnlbwwv9csk828qb2jhc1"; 16 + sha256 = "152pqrc0py6jk1i3pwn2k928bsgax0d4yavpa3ca29bmrbzpnadh"; 17 17 }; 18 18 19 19 # Note: libcgroup isn't needed for building, just for the afl-cgroup
+46
pkgs/tools/security/hash-slinger/default.nix
··· 1 + { stdenv, fetchFromGitHub, pythonPackages, openssh, gnupg, unbound, libreswan }: 2 + 3 + let 4 + inherit (pythonPackages) python; 5 + in stdenv.mkDerivation rec { 6 + pname = "hash-slinger"; 7 + name = "${pname}-${version}"; 8 + version = "2.7"; 9 + 10 + src = fetchFromGitHub { 11 + owner = "letoams"; 12 + repo = "${pname}"; 13 + rev = "${version}"; 14 + sha256 = "05wn744ydclpnpyah6yfjqlfjlasrrhzj48lqmm5a91nyps5yqyn"; 15 + }; 16 + 17 + pythonPath = with pythonPackages; [ dns m2crypto ipaddr python-gnupg 18 + pyunbound ]; 19 + 20 + buildInputs = [ pythonPackages.wrapPython ]; 21 + propagatedBuildInputs = [ unbound libreswan ] ++ pythonPath; 22 + propagatedUserEnvPkgs = [ unbound libreswan ]; 23 + 24 + patchPhase = '' 25 + substituteInPlace Makefile \ 26 + --replace "$(DESTDIR)/usr" "$out" 27 + substituteInPlace ipseckey \ 28 + --replace "/usr/sbin/ipsec" "${libreswan}/sbin/ipsec" 29 + substituteInPlace tlsa \ 30 + --replace "/var/lib/unbound/root" "${pythonPackages.pyunbound}/etc/pyunbound/root" 31 + patchShebangs * 32 + ''; 33 + 34 + installPhase = '' 35 + mkdir -p $out/bin $out/man $out/${python.sitePackages}/ 36 + make install 37 + wrapPythonPrograms 38 + ''; 39 + 40 + meta = { 41 + description = "Various tools to generate special DNS records"; 42 + homepage = "https://github.com/letoams/hash-slinger"; 43 + license = stdenv.lib.licenses.gpl2Plus; 44 + maintainers = [ stdenv.lib.maintainers.leenaars ]; 45 + }; 46 + }
+1 -1
pkgs/tools/system/acct/default.nix
··· 25 25 homepage = http://www.gnu.org/software/acct/; 26 26 27 27 maintainers = with maintainers; [ pSub ]; 28 - platforms = with platforms; allBut cygwin; 28 + platforms = platforms.linux; 29 29 }; 30 30 }
+29 -12
pkgs/top-level/all-packages.nix
··· 823 823 824 824 interlock = callPackage ../servers/interlock {}; 825 825 826 + long-shebang = callPackage ../misc/long-shebang {}; 827 + 826 828 mathics = pythonPackages.mathics; 827 829 828 830 mcrl = callPackage ../tools/misc/mcrl { }; ··· 1961 1963 hardlink = callPackage ../tools/system/hardlink { }; 1962 1964 1963 1965 hashcat = callPackage ../tools/security/hashcat { }; 1966 + 1967 + hash-slinger = callPackage ../tools/security/hash-slinger { }; 1964 1968 1965 1969 hal-flash = callPackage ../os-specific/linux/hal-flash { }; 1966 1970 ··· 3697 3701 tmux = callPackage ../tools/misc/tmux { }; 3698 3702 3699 3703 tmux-cssh = callPackage ../tools/misc/tmux-cssh { }; 3704 + 3705 + tmuxp = callPackage ../tools/misc/tmuxp { }; 3700 3706 3701 3707 tmuxinator = callPackage ../tools/misc/tmuxinator { }; 3702 3708 ··· 5457 5463 stdenv = overrideCC stdenv gcc49; 5458 5464 }; 5459 5465 5460 - ponyc = callPackage ../development/compilers/ponyc { 5461 - llvm = llvm_36; 5462 - }; 5466 + ponyc = callPackage ../development/compilers/ponyc { }; 5463 5467 5464 5468 qcmm = callPackage ../development/compilers/qcmm { 5465 5469 lua = lua4; ··· 5883 5887 python2Packages = python27Packages; 5884 5888 python3Packages = python35Packages; 5885 5889 5886 - python26 = callPackage ../development/interpreters/python/2.6 { 5890 + python26 = callPackage ../development/interpreters/python/cpython/2.6 { 5887 5891 db = db47; 5888 5892 self = python26; 5889 5893 }; 5890 - python27 = callPackage ../development/interpreters/python/2.7 { 5894 + python27 = callPackage ../development/interpreters/python/cpython/2.7 { 5891 5895 self = python27; 5892 5896 inherit (darwin) CF configd; 5893 5897 }; 5894 - python33 = callPackage ../development/interpreters/python/3.3 { 5898 + python33 = callPackage ../development/interpreters/python/cpython/3.3 { 5895 5899 self = python33; 5896 5900 }; 5897 - python34 = hiPrio (callPackage ../development/interpreters/python/3.4 { 5901 + python34 = hiPrio (callPackage ../development/interpreters/python/cpython/3.4 { 5898 5902 inherit (darwin) CF configd; 5899 5903 self = python34; 5900 5904 }); 5901 - python35 = hiPrio (callPackage ../development/interpreters/python/3.5 { 5905 + python35 = hiPrio (callPackage ../development/interpreters/python/cpython/3.5 { 5902 5906 inherit (darwin) CF configd; 5903 5907 self = python35; 5904 5908 }); 5905 - python36 = callPackage ../development/interpreters/python/3.6 { 5909 + python36 = callPackage ../development/interpreters/python/cpython/3.6 { 5906 5910 inherit (darwin) CF configd; 5907 5911 self = python36; 5908 5912 }; 5909 - pypy = callPackage ../development/interpreters/pypy { 5910 - self = pypy; 5913 + 5914 + pypy = pypy27; 5915 + 5916 + pypy27 = callPackage ../development/interpreters/python/pypy/2.7 { 5917 + self = pypy27; 5911 5918 }; 5912 5919 5913 5920 pythonFull = python2Full; ··· 5923 5930 5924 5931 python2nix = callPackage ../tools/package-management/python2nix { }; 5925 5932 5926 - pythonDocs = recurseIntoAttrs (callPackage ../development/interpreters/python/docs {}); 5933 + pythonDocs = recurseIntoAttrs (callPackage ../development/interpreters/python/cpython/docs {}); 5927 5934 5928 5935 pypi2nix = callPackage ../development/tools/pypi2nix { python = python35; }; 5929 5936 ··· 13884 13891 inherit (gnome) libgnomecanvas glib; 13885 13892 }; 13886 13893 13894 + moonlight-embedded = callPackage ../applications/misc/moonlight-embedded { }; 13895 + 13887 13896 mop = callPackage ../applications/misc/mop { }; 13888 13897 13889 13898 mopidy = callPackage ../applications/audio/mopidy { }; ··· 14111 14120 emacs = null; 14112 14121 sphinx = pythonPackages.sphinx; 14113 14122 }; 14123 + 14124 + notmuch-mutt = callPackage ../applications/networking/mailreaders/notmuch/mutt.nix { }; 14114 14125 14115 14126 # Open Stack 14116 14127 nova = callPackage ../applications/virtualization/openstack/nova.nix { }; ··· 14427 14438 14428 14439 rdesktop = callPackage ../applications/networking/remote/rdesktop { }; 14429 14440 14441 + rdup = callPackage ../tools/backup/rdup { }; 14442 + 14430 14443 recode = callPackage ../tools/text/recode { }; 14431 14444 14432 14445 remotebox = callPackage ../applications/virtualization/remotebox { }; ··· 15653 15666 }; 15654 15667 15655 15668 hexen = callPackage ../games/hexen { }; 15669 + 15670 + holdingnuts = callPackage ../games/holdingnuts { }; 15656 15671 15657 15672 icbm3d = callPackage ../games/icbm3d { }; 15658 15673 ··· 16992 17007 }); 16993 17008 16994 17009 dbus-map = callPackage ../tools/misc/dbus-map { }; 17010 + 17011 + dell-530cdn = callPackage ../misc/drivers/dell-530cdn {}; 16995 17012 16996 17013 dosbox = callPackage ../misc/emulators/dosbox { }; 16997 17014
+1 -1
pkgs/top-level/make-tarball.nix
··· 15 15 src = nixpkgs; 16 16 17 17 inherit officialRelease; 18 - version = builtins.readFile ../../.version; 18 + version = pkgs.lib.fileContents ../../.version; 19 19 versionSuffix = "pre${toString nixpkgs.revCount}.${nixpkgs.shortRev}"; 20 20 21 21 buildInputs = [ nix.out jq ];
+39
pkgs/top-level/perl-packages.nix
··· 6956 6956 }; 6957 6957 }; 6958 6958 6959 + Later = buildPerlPackage rec { 6960 + version = "0.19"; 6961 + name = "Object-Realize-Later-${version}"; 6962 + src = fetchurl { 6963 + url = "mirror://cpan/authors/id/M/MA/MARKOV/${name}.tar.gz"; 6964 + sha256 = "0ka0qar51kk5wlvd2s3yis3w9qc14h0ngn0ds0v6c8ssmjvfcgbz"; 6965 + }; 6966 + }; 6967 + 6959 6968 lib_ = buildPerlPackage { 6960 6969 name = "lib-0.63"; 6961 6970 src = fetchurl { ··· 7599 7608 7600 7609 maatkit = import ../development/perl-modules/maatkit { 7601 7610 inherit fetchurl buildPerlPackage stdenv DBDmysql; 7611 + }; 7612 + 7613 + MailMaildir = buildPerlPackage rec { 7614 + version = "1.0.0"; 7615 + name = "Mail-Maildir-${version}"; 7616 + src = fetchurl { 7617 + url = "mirror://cpan/authors/id/Z/ZE/ZEROALTI/Mail-Maildir-100/${name}.tar.bz2"; 7618 + sha256 = "1krkqfps6q3ifrhi9450l5gm9199qyfcm6vidllr0dv65kdaqpj4"; 7619 + }; 7620 + }; 7621 + 7622 + MailBox = buildPerlPackage rec { 7623 + version = "2.118"; 7624 + name = "Mail-Box-${version}"; 7625 + src = fetchurl { 7626 + url = "mirror://cpan/authors/id/M/MA/MARKOV/${name}.tar.gz"; 7627 + sha256 = "1ixi7xpvj8kn2y0l8rxkvdnnl7x5wqg7mi2av0viwdh5l828dcfc"; 7628 + }; 7629 + 7630 + doCheck = false; 7631 + 7632 + propagatedBuildInputs = [ 7633 + Later 7634 + 7635 + DevelGlobalDestruction 7636 + FileRemove 7637 + IOStringy 7638 + MailTools 7639 + MIMETypes 7640 + ]; 7602 7641 }; 7603 7642 7604 7643 MailMboxMessageParser = buildPerlPackage rec {
+103 -31
pkgs/top-level/python-packages.nix
··· 24 24 25 25 buildPythonApplication = args: buildPythonPackage ({namePrefix="";} // args ); 26 26 27 - # Unique python version identifier 28 - pythonName = 29 - if isPy26 then "python26" else 30 - if isPy27 then "python27" else 31 - if isPy33 then "python33" else 32 - if isPy34 then "python34" else 33 - if isPy35 then "python35" else 34 - if isPy36 then "python36" else 35 - if isPyPy then "pypy" else ""; 36 - 37 27 modules = python.modules or { 38 28 readline = null; 39 29 sqlite3 = null; ··· 44 34 45 35 in modules // { 46 36 47 - inherit python bootstrapped-pip isPy26 isPy27 isPy33 isPy34 isPy35 isPy36 isPyPy isPy3k pythonName buildPythonPackage buildPythonApplication; 37 + inherit python bootstrapped-pip isPy26 isPy27 isPy33 isPy34 isPy35 isPy36 isPyPy isPy3k buildPythonPackage buildPythonApplication; 48 38 49 39 # helpers 50 40 ··· 326 316 tables = callPackage ../development/python-modules/tables { 327 317 hdf5 = pkgs.hdf5.override { zlib = pkgs.zlib; }; 328 318 }; 319 + 320 + pyunbound = callPackage ../tools/networking/unbound/python.nix { }; 329 321 330 322 # packages defined here 331 323 ··· 846 838 }; 847 839 848 840 ansible2 = buildPythonPackage rec { 849 - version = "2.1.0.0"; 841 + version = "2.1.1.0"; 850 842 name = "ansible-${version}"; 851 843 disabled = isPy3k; 852 844 853 845 src = pkgs.fetchurl { 854 846 url = "http://releases.ansible.com/ansible/${name}.tar.gz"; 855 - sha256 = "1bfc2xiplpad6f2nwi48y0kps7xqnsll85dlz63cy8k5bysl6d20"; 847 + sha256 = "12v7smivjz8d2skk5qxl83nmkxqxypjm8b7ld40sjfwj4g0kkrv1"; 856 848 }; 857 849 858 850 prePatch = '' ··· 1359 1351 1360 1352 awscli = buildPythonPackage rec { 1361 1353 name = "awscli-${version}"; 1362 - version = "1.10.46"; 1354 + version = "1.10.51"; 1363 1355 1364 1356 namePrefix = ""; 1365 1357 1366 1358 src = pkgs.fetchurl { 1367 1359 url = "mirror://pypi/a/awscli/${name}.tar.gz"; 1368 - sha256 = "1d2xjhdmjna9zxa4ybk7cjypib5yq2gd3w5fgpb4lfs6bh3mr554"; 1360 + sha256 = "19n7r6fwnwpi0cyrqh20w80mrcj0b6j3if5p58hi1k3fdp60nscq"; 1369 1361 }; 1370 1362 1371 1363 # No tests included ··· 2776 2768 }; 2777 2769 2778 2770 botocore = buildPythonPackage rec { 2779 - version = "1.4.36"; # This version is required by awscli 2771 + version = "1.4.41"; # This version is required by awscli 2780 2772 name = "botocore-${version}"; 2781 2773 2782 2774 src = pkgs.fetchurl { 2783 2775 url = "mirror://pypi/b/botocore/${name}.tar.gz"; 2784 - sha256 = "0mkydnbbn0x97nfzwqia68zw2y5j7i9yzpq5kasvc80n2z999h39"; 2776 + sha256 = "0c3abr2rxiilqklika8x360pr0mgx7hlhbhj8w72izs2r6ww4dys"; 2785 2777 }; 2786 2778 2787 2779 propagatedBuildInputs = ··· 3225 3217 name = "celery-${version}"; 3226 3218 version = "3.1.23"; 3227 3219 3228 - disabled = pythonOlder "2.6"; 3220 + disabled = (pythonOlder "2.6") || isPy35; 3229 3221 3230 3222 src = pkgs.fetchurl { 3231 3223 url = "mirror://pypi/c/celery/${name}.tar.gz"; ··· 4926 4918 }; 4927 4919 }; 4928 4920 4921 + libtmux = buildPythonPackage rec { 4922 + name = "libtmux-${version}"; 4923 + version = "0.5.0"; 4924 + 4925 + src = pkgs.fetchurl { 4926 + url = "mirror://pypi/l/libtmux/${name}.tar.gz"; 4927 + sha256 = "0fwydaahgflz9w753v1cmkfzrlfq1vb8zp4i20m2d3lvkm4crv93"; 4928 + }; 4929 + 4930 + meta = with stdenv.lib; { 4931 + description = "Scripting library for tmux"; 4932 + homepage = https://libtmux.readthedocs.io/; 4933 + license = licenses.bsd3; 4934 + platforms = platforms.linux; 4935 + maintainers = with maintainers; [ jgeerds ]; 4936 + }; 4937 + }; 4938 + 4929 4939 locket = buildPythonPackage rec { 4930 4940 name = "locket-${version}"; 4931 4941 version = "0.2.0"; ··· 6517 6527 }; 6518 6528 6519 6529 git-up = buildPythonPackage rec { 6520 - version = "1.4.0"; 6530 + version = "1.4.1"; 6521 6531 name = "git-up-${version}"; 6522 6532 6523 - src = pkgs.fetchFromGitHub { 6524 - owner = "msiemens"; 6525 - repo = "PyGitUp"; 6526 - rev = "v${version}"; 6527 - sha256 = "1g7sxiqg6vxx2jlgg8pg9fqsk1xgvm80d7mcpw8i3mw7r835q4bi"; 6533 + src = pkgs.fetchurl { 6534 + url = "mirror://pypi/g/git-up/${name}.zip"; 6535 + sha256 = "1nsdzjnla0926fzfsqnwyzg3f7g253n8lk4wgw8nj2rv0awbdmas"; 6528 6536 }; 6529 6537 6530 6538 buildInputs = with self; [ pkgs.git nose ]; ··· 8494 8502 }; 8495 8503 }; 8496 8504 8505 + schedule = buildPythonPackage rec { 8506 + name = "schedule-0.3.2"; 8507 + 8508 + src = pkgs.fetchurl { 8509 + url = "https://pypi.python.org/packages/10/96/d101fab391753ebc81fa3bb0e744df1ddcfb032c31b036d38083f8994db1/schedule-0.3.2.tar.gz"; 8510 + sha256 = "1h0waw4jd5ql68y5kxb9irwapkbkwfs1w0asvbl24fq5f8czdijm"; 8511 + }; 8512 + 8513 + buildInputs = with self; [ mock ]; 8514 + 8515 + meta = with stdenv.lib; { 8516 + description = "Python job scheduling for humans"; 8517 + homepage = https://github.com/dbader/schedule; 8518 + license = licenses.mit; 8519 + }; 8520 + }; 8521 + 8497 8522 substanced = buildPythonPackage rec { 8498 8523 # no release yet 8499 8524 rev = "089818bc61c3dc5eca023254e37a280b041ea8cc"; ··· 9023 9048 name = "django-colorful-${version}"; 9024 9049 version = "1.2"; 9025 9050 9026 - disabled = isPy35; 9027 - 9028 9051 src = pkgs.fetchurl { 9029 9052 url = "mirror://pypi/d/django-colorful/${name}.tar.gz"; 9030 9053 sha256 = "0y34hzvfrm1xbxrd8frybc9yzgqvz4c07frafipjikw7kfjsw8az"; ··· 9227 9250 }; 9228 9251 }; 9229 9252 9253 + django_raster = buildPythonPackage rec { 9254 + name = "django-raster-${version}"; 9255 + version = "0.2"; 9256 + 9257 + src = pkgs.fetchurl { 9258 + url = "mirror://pypi/d/django-raster/${name}.tar.gz"; 9259 + sha256 = "1zdcxzj43qrv7cl6q9nb2dkfnsyn74dzf2igpnd6nbbfdnkif9bm"; 9260 + }; 9261 + 9262 + propagatedBuildInputs = with self ; [ numpy django_colorful pillow psycopg2 9263 + pyparsing django celery ]; 9264 + 9265 + meta = { 9266 + description = "Basic raster data integration for Django"; 9267 + homepage = https://github.com/geodesign/django-raster; 9268 + license = licenses.mit; 9269 + }; 9270 + }; 9271 + 9230 9272 django_redis = buildPythonPackage rec { 9231 9273 name = "django-redis-${version}"; 9232 9274 version = "4.2.0"; ··· 9406 9448 }; 9407 9449 }; 9408 9450 9451 + kaptan = buildPythonPackage rec { 9452 + name = "kaptan-${version}"; 9453 + version = "0.5.8"; 9454 + 9455 + src = pkgs.fetchurl { 9456 + url = "mirror://pypi/k/kaptan/${name}.tar.gz"; 9457 + sha256 = "1b8r86yyvdvyxd6f10mhkl6cr2jhxm80jjqr4zch96w9hs9rh5vq"; 9458 + }; 9459 + 9460 + propagatedBuildInputs = with self; [ pyyaml ]; 9461 + 9462 + meta = with stdenv.lib; { 9463 + description = "Configuration manager for python applications"; 9464 + homepage = https://emre.github.io/kaptan/; 9465 + license = licenses.bsd3; 9466 + platforms = platforms.linux; 9467 + maintainers = with maintainers; [ jgeerds ]; 9468 + }; 9469 + }; 9409 9470 9410 9471 keepalive = buildPythonPackage rec { 9411 9472 name = "keepalive-${version}"; ··· 12081 12142 }; 12082 12143 12083 12144 # most of these are simply to allow the test suite to do its job 12084 - buildInputs = with self; [ mock unittest2 nose redis qpid-python pymongo sqlalchemy pyyaml msgpack boto ]; 12145 + buildInputs = with self; optionals isPy27 [ mock unittest2 nose redis qpid-python pymongo sqlalchemy pyyaml msgpack boto ]; 12085 12146 12086 12147 propagatedBuildInputs = with self; [ amqp anyjson ] ++ 12087 12148 (optionals (pythonOlder "2.7") [ importlib ordereddict ]); 12088 12149 12089 12150 # tests broken on python 2.6? https://github.com/nose-devs/nose/issues/806 12090 - doCheck = (pythonAtLeast "2.7"); 12151 + doCheck = isPy27; 12091 12152 12092 12153 meta = { 12093 12154 description = "Messaging library for Python"; ··· 13418 13479 }; 13419 13480 13420 13481 mutagen = buildPythonPackage (rec { 13421 - name = "mutagen-1.27"; 13482 + name = "mutagen-1.32"; 13422 13483 13423 13484 src = pkgs.fetchurl { 13424 13485 url = "mirror://pypi/m/mutagen/${name}.tar.gz"; 13425 - sha256 = "cc884fe1e20fe220be7ce7c3b269f4cadc69a8310150a3a41162fba1ca9c88bd"; 13486 + sha256 = "1d9sxl442xjj7pdyjj5h0dsjyd7d3wqswr8icqqgqdmg9k8dw8bp"; 13426 13487 }; 13427 13488 13428 13489 # Needed for tests only 13429 - buildInputs = [ pkgs.faad2 pkgs.flac pkgs.vorbis-tools pkgs.liboggz ]; 13490 + buildInputs = [ pkgs.faad2 pkgs.flac pkgs.vorbis-tools pkgs.liboggz 13491 + pkgs.glibcLocales 13492 + ]; 13493 + LC_ALL = "en_US.UTF-8"; 13494 + 13495 + # Remove test that fails due to missing encoding in nix_run_setup.py, a 13496 + # file that buildPythonPackage copies to source trees at build time. 13497 + # PR with fix: https://github.com/NixOS/nixpkgs/pull/17430 13498 + # ("python: add file encoding to run_setup.py") 13499 + preBuild = '' 13500 + rm tests/test_encoding.py 13501 + ''; 13430 13502 13431 13503 meta = { 13432 13504 description = "Python multimedia tagging library";