diff --git a/lib/licenses.nix b/lib/licenses.nix index f01712500e7..4071fcfd70d 100644 --- a/lib/licenses.nix +++ b/lib/licenses.nix @@ -195,6 +195,11 @@ lib.mapAttrs (n: v: v // { shortName = n; }) rec { fullName = "Unspecified free software license"; }; + g4sl = { + fullName = "Geant4 Software License"; + url = https://geant4.web.cern.ch/geant4/license/LICENSE.html; + }; + gpl1 = spdx { spdxId = "GPL-1.0"; fullName = "GNU General Public License v1.0 only"; diff --git a/lib/sources.nix b/lib/sources.nix index 535b04523b5..c1ec02b9c26 100644 --- a/lib/sources.nix +++ b/lib/sources.nix @@ -44,12 +44,12 @@ rec { packedRefsName = toString path + "/packed-refs"; in if lib.pathExists fileName then - let fileContent = readFile fileName; + let fileContent = lib.fileContents fileName; # Sometimes git stores the commitId directly in the file but # sometimes it stores something like: «ref: refs/heads/branch-name» - matchRef = match "^ref: (.*)\n$" fileContent; + matchRef = match "^ref: (.*)$" fileContent; in if isNull matchRef - then lib.removeSuffix "\n" fileContent + then fileContent else readCommitFromFile path (lib.head matchRef) # Sometimes, the file isn't there at all and has been packed away in the # packed-refs file, so we have to grep through it: diff --git a/lib/strings.nix b/lib/strings.nix index 5e5f7b37866..daf84583934 100644 --- a/lib/strings.nix +++ b/lib/strings.nix @@ -479,4 +479,14 @@ rec { absolutePaths = builtins.map (path: builtins.toPath (root + "/" + path)) relativePaths; in absolutePaths; + + /* Read the contents of a file removing the trailing \n + + Example: + $ echo "1.0" > ./version + + fileContents ./version + => "1.0" + */ + fileContents = file: removeSuffix "\n" (builtins.readFile file); } diff --git a/lib/trivial.nix b/lib/trivial.nix index 9821e3c138d..f85c74ab88e 100644 --- a/lib/trivial.nix +++ b/lib/trivial.nix @@ -62,11 +62,13 @@ rec { isInt add sub lessThan seq deepSeq genericClosure; + inherit (import ./strings.nix) fileContents; + # Return the Nixpkgs version number. nixpkgsVersion = let suffixFile = ../.version-suffix; in - readFile ../.version - + (if pathExists suffixFile then readFile suffixFile else "pre-git"); + fileContents ../.version + + (if pathExists suffixFile then fileContents suffixFile else "pre-git"); # Whether we're being called by nix-shell. inNixShell = builtins.getEnv "IN_NIX_SHELL" == "1"; diff --git a/nixos/doc/manual/configuration/configuration.xml b/nixos/doc/manual/configuration/configuration.xml index 48810cc6ac6..26f8ebad734 100644 --- a/nixos/doc/manual/configuration/configuration.xml +++ b/nixos/doc/manual/configuration/configuration.xml @@ -31,6 +31,7 @@ effect after you run nixos-rebuild. + diff --git a/nixos/doc/manual/default.nix b/nixos/doc/manual/default.nix index 83dad5fd8dc..2592766ee49 100644 --- a/nixos/doc/manual/default.nix +++ b/nixos/doc/manual/default.nix @@ -60,6 +60,7 @@ let cp ${../../modules/services/misc/taskserver/doc.xml} configuration/taskserver.xml cp ${../../modules/security/acme.xml} configuration/acme.xml cp ${../../modules/i18n/input-method/default.xml} configuration/input-methods.xml + cp ${../../modules/services/editors/emacs.xml} configuration/emacs.xml ln -s ${optionsDocBook} options-db.xml echo "${version}" > version ''; @@ -122,7 +123,7 @@ let Allows for cross-referencing olinks between the manpages - and the HTML/PDF manuals. + and manual. &manualtargets; @@ -221,34 +222,14 @@ in rec { mkdir -p $dst/epub/OEBPS/images/callouts cp -r ${docbook5_xsl}/xml/xsl/docbook/images/callouts/*.gif $dst/epub/OEBPS/images/callouts echo "application/epub+zip" > mimetype - zip -0Xq "$dst/NixOS Manual - NixOS community.epub" mimetype - zip -Xr9D "$dst/NixOS Manual - NixOS community.epub" $dst/epub/* + manual="$dst/nixos-manual.epub" + zip -0Xq "$manual" mimetype + cd $dst/epub && zip -Xr9D "$manual" * + + rm -rf $dst/epub mkdir -p $out/nix-support - echo "doc-epub manual $dst/NixOS Manual - NixOS community.epub" >> $out/nix-support/hydra-build-products - ''; - }; - - - manualPDF = stdenv.mkDerivation { - name = "nixos-manual-pdf"; - - inherit sources; - - buildInputs = [ libxml2 libxslt dblatex dblatex.tex ]; - - buildCommand = '' - ${copySources} - - dst=$out/share/doc/nixos - mkdir -p $dst - xmllint --xinclude manual.xml | dblatex -o $dst/manual.pdf - \ - -P target.database.document="${olinkDB}/olinkdb.xml" \ - -P doc.collab.show=0 \ - -P latex.output.revhistory=0 - - mkdir -p $out/nix-support - echo "doc-pdf manual $dst/manual.pdf" >> $out/nix-support/hydra-build-products + echo "doc-epub manual $manual" >> $out/nix-support/hydra-build-products ''; }; diff --git a/nixos/doc/manual/release-notes/rl-1609.xml b/nixos/doc/manual/release-notes/rl-1609.xml index 0bea6cbbf2d..8dbf03ee42b 100644 --- a/nixos/doc/manual/release-notes/rl-1609.xml +++ b/nixos/doc/manual/release-notes/rl-1609.xml @@ -33,12 +33,19 @@ has the following highlights: following incompatible changes: + Shell aliases for systemd sub-commands were dropped: start, stop, restart, status. + + + Redis now binds to 127.0.0.1 only instead of listening to all network interfaces. This is the default + behavior of Redis 3.2 + + diff --git a/nixos/modules/misc/version.nix b/nixos/modules/misc/version.nix index 9a37f595093..6af310a9d87 100644 --- a/nixos/modules/misc/version.nix +++ b/nixos/modules/misc/version.nix @@ -35,57 +35,42 @@ in nixosLabel = mkOption { type = types.str; description = '' - NixOS version name to be used in the names of generated - outputs and boot labels. - - If you ever wanted to influence the labels in your GRUB menu, - this is option is for you. - - Can be set directly or with NIXOS_LABEL - environment variable for nixos-rebuild, - e.g.: - - - #!/bin/sh - today=`date +%Y%m%d` - branch=`(cd nixpkgs ; git branch 2>/dev/null | sed -n '/^\* / { s|^\* ||; p; }')` - revision=`(cd nixpkgs ; git rev-parse HEAD)` - export NIXOS_LABEL="$today.$branch-''${revision:0:7}" - nixos-rebuild switch + Label to be used in the names of generated outputs and boot + labels. ''; }; nixosVersion = mkOption { internal = true; type = types.str; - description = "NixOS version."; + description = "The full NixOS version (e.g. 16.03.1160.f2d4ee1)."; }; nixosRelease = mkOption { readOnly = true; type = types.str; - default = readFile releaseFile; - description = "NixOS release."; + default = fileContents releaseFile; + description = "The NixOS release (e.g. 16.03)."; }; nixosVersionSuffix = mkOption { internal = true; type = types.str; - default = if pathExists suffixFile then readFile suffixFile else "pre-git"; - description = "NixOS version suffix."; + default = if pathExists suffixFile then fileContents suffixFile else "pre-git"; + description = "The NixOS version suffix (e.g. 1160.f2d4ee1)."; }; nixosRevision = mkOption { internal = true; type = types.str; - default = if pathExists revisionFile then readFile revisionFile else "master"; - description = "NixOS Git revision hash."; + default = if pathExists revisionFile then fileContents revisionFile else "master"; + description = "The Git revision from which this NixOS configuration was built."; }; nixosCodeName = mkOption { readOnly = true; type = types.str; - description = "NixOS release code name."; + description = "The NixOS release code name (e.g. Emu)."; }; defaultChannel = mkOption { @@ -102,8 +87,8 @@ in system = { # These defaults are set here rather than up there so that # changing them would not rebuild the manual - nixosLabel = mkDefault (maybeEnv "NIXOS_LABEL" cfg.nixosVersion); - nixosVersion = mkDefault (maybeEnv "NIXOS_VERSION" (cfg.nixosRelease + cfg.nixosVersionSuffix)); + nixosLabel = mkDefault cfg.nixosVersion; + nixosVersion = mkDefault (cfg.nixosRelease + cfg.nixosVersionSuffix); nixosRevision = mkIf (pathIsDirectory gitRepo) (mkDefault gitCommitId); nixosVersionSuffix = mkIf (pathIsDirectory gitRepo) (mkDefault (".git." + gitCommitId)); diff --git a/nixos/modules/security/grsecurity.nix b/nixos/modules/security/grsecurity.nix index 4b9a11cf6dc..6b4dbe8e11f 100644 --- a/nixos/modules/security/grsecurity.nix +++ b/nixos/modules/security/grsecurity.nix @@ -97,7 +97,7 @@ in # Configure system tunables boot.kernel.sysctl = { - # Removed under grsecurity + # Read-only under grsecurity "kernel.kptr_restrict" = mkForce null; } // optionalAttrs config.nix.useSandbox { # chroot(2) restrictions that conflict with sandboxed Nix builds diff --git a/nixos/modules/services/audio/mopidy.nix b/nixos/modules/services/audio/mopidy.nix index 9981b065f28..029b14ab472 100644 --- a/nixos/modules/services/audio/mopidy.nix +++ b/nixos/modules/services/audio/mopidy.nix @@ -47,6 +47,7 @@ in { }; configuration = mkOption { + default = ""; type = types.lines; description = '' The configuration that Mopidy should use. diff --git a/nixos/modules/services/editors/emacs.xml b/nixos/modules/services/editors/emacs.xml new file mode 100644 index 00000000000..ee8ef512bc7 --- /dev/null +++ b/nixos/modules/services/editors/emacs.xml @@ -0,0 +1,578 @@ + + + Emacs + + + + + Emacs + is an extensible, customizable, self-documenting real-time display + editor — and more. At its core is an interpreter for Emacs Lisp, a + dialect of the Lisp programming language with extensions to + support text editing. + + + + Emacs runs within a graphical desktop environment using the X + Window System, but works equally well on a text terminal. Under + OS X, a "Mac port" edition is + available, which uses Apple's native GUI frameworks. + + + + Nixpkgs provides a superior environment + for running Emacs. It's simple to + create custom builds by overriding the default packages. Chaotic + collections of Emacs Lisp code and extensions can be brought under + control using declarative package + management. NixOS even provides a + systemd user service for automatically + starting the Emacs daemon. + + +
+ Installing <application>Emacs</application> + + + Emacs can installed in the normal way for Nix (see ). In addition, a NixOS + service can be enabled. + + +
+ The Different Releases of Emacs + + + Nixpkgs defines several basic Emacs + packages. The following are attributes belonging to the + pkgs set: + + + + emacs + emacs24 + + + The latest stable version of Emacs 24 using the GTK+ 2 widget + toolkit. + + + + + emacs24-nox + + + Emacs 24 built without any dependency on X11 + libraries. + + + + + emacs24Macport + + + Emacs 24 with the "Mac port" patches, providing a more + native look and feel under OS X. + + + + + emacs25pre + + + A pretest version of what will become the first + version of Emacs 25. + + + + + + + + If those aren't suitable, then the following imitation Emacs + editors are also available in Nixpkgs: + Zile, + mg, + Yi. + + +
+
+ Adding Packages to Emacs + + Emacs includes an entire ecosystem of functionality beyond + text editing, including a project planner, mail and news + reader, debugger interface, calendar, and more. + + + + Most extensions are gotten with the Emacs packaging system + (package.el) from Emacs Lisp Package Archive + (ELPA), + MELPA, + MELPA Stable, + and Org ELPA. + Nixpkgs is regularly updated to mirror all these archives. + + + + Under NixOS, you can continue to use + package-list-packages and + package-install to install packages. You + can also declare the set of Emacs packages you need using the + derivations from Nixpkgs. The rest of this section discusses + declarative installation of Emacs packages through nixpkgs. + + + + + This documentation describes the new Emacs packages + framework in NixOS 16.03 + (emacsPackagesNg) which should not be + confused with the previous and deprecated framework + (emacs24Packages). + + + + + The first step to declare the list of packages you want in + your Emacs installation is to create a dedicated + derivation. This can be done in a dedicated + emacs.nix file such as: + + + Nix expression to build Emacs with packages (<filename>emacs.nix</filename>) + +/* +This is a nix expression to build Emacs and some Emacs packages I like +from source on any distribution where Nix is installed. This will install +all the dependencies from the nixpkgs repository and build the binary files +without interfering with the host distribution. + +To build the project, type the following from the current directory: + +$ nix-build emacs.nix + +To run the newly compiled executable: + +$ ./result/bin/emacs +*/ +{ pkgs ? import <nixpkgs> {} }: + +let + myEmacs = pkgs.emacs; + emacsWithPackages = (pkgs.emacsPackagesNgGen myEmacs).emacsWithPackages; +in + emacsWithPackages (epkgs: (with epkgs.melpaStablePackages; [ + magit # ; Integrate git <C-x g> + zerodark-theme # ; Nicolas' theme + ]) ++ (with epkgs.melpaPackages; [ + undo-tree # ; <C-x u> to show the undo tree + zoom-frm # ; increase/decrease font size for all buffers %lt;C-x C-+> + ]) ++ (with epkgs.elpaPackages; [ + auctex # ; LaTeX mode + beacon # ; highlight my cursor when scrolling + nameless # ; hide current package name everywhere in elisp code + ]) ++ [ + pkgs.notmuch # From main packages set + ]) + + + + + + + The first non-comment line in this file + ({ pkgs ? ... }) + indicates that the whole file represents a function. + + + + + + The let expression below defines a + myEmacs binding pointing to the current + stable version of Emacs. This binding is here to separate the + choice of the Emacs binary from the specification of the + required packages. + + + + + + This generates an emacsWithPackages + function. It takes a single argument: a function from a + package set to a list of packages (the packages that will + be available in Emacs). + + + + + + The rest of the file specifies the list of packages to + install. In the example, two packages + (magit and + zerodark-theme) are taken from MELPA + stable. + + + + + + Two packages (undo-tree and + zoom-frm) are taken from MELPA. + + + + + Three packages are taken from GNU ELPA. + + + + + notmuch is taken from a nixpkgs derivation + which contains an Emacs mode. + + + + + + + + The result of this configuration will be an + emacs command which launches Emacs with all + of your chosen packages in the load-path. + + + + You can check that it works by executing this in a terminal: + + +$ nix-build emacs.nix +$ ./result/bin/emacs -q + + + and then typing M-x package-initialize. + Check that you can use all the packages you want in this + Emacs instance. For example, try switching to the zerodark + theme through + M-x load-theme <RET> zerodark <RET> y. + + + + + A few popular extensions worth checking out are: auctex, + company, edit-server, flycheck, helm, iedit, magit, + multiple-cursors, projectile, and yasnippet. + + + + + The list of available packages in the various ELPA + repositories can be seen with the following commands: + + Querying Emacs packages + " -qaP -A emacsPackagesNg.elpaPackages +nix-env -f "" -qaP -A emacsPackagesNg.melpaPackages +nix-env -f "" -qaP -A emacsPackagesNg.melpaStablePackages +nix-env -f "" -qaP -A emacsPackagesNg.orgPackages +]]> + + + + + If you are on NixOS, you can install this particular Emacs for + all users by adding it to the list of system packages + (see ). Simply + modify your file configuration.nix to + make it contain: + + Custom Emacs in <filename>configuration.nix</filename> + + + + + + In this case, the next nixos-rebuild switch + will take care of adding your emacs to the + PATH environment variable + (see ). + + + + + If you are not on NixOS or want to install this particular + Emacs only for yourself, you can do so by adding it to your + ~/.nixpkgs/config.nix + (see Nixpkgs manual): + + Custom Emacs in <filename>~/.nixpkgs/system.nix</filename> + + + + + + In this case, the next + nix-env -f '<nixpkgs>' -iA myemacs + will take care of adding your emacs to the + PATH environment variable. + +
+ +
+ Advanced Emacs Configuration + + + If you want, you can tweak the Emacs package itself from your + emacs.nix. For example, if you want to + have a GTK+3-based Emacs instead of the default GTK+2-based + binary and remove the automatically generated + emacs.desktop (useful is you only use + emacsclient), you can change your file + emacs.nix in this way: + + + + Custom Emacs build + {} }: +let + myEmacs = pkgs.lib.overrideDerivation (pkgs.emacs.override { + # Use gtk3 instead of the default gtk2 + withGTK3 = true; + withGTK2 = false; + }) (attrs: { + # I don't want emacs.desktop file because I only use + # emacsclient. + postInstall = attrs.postInstall + '' + rm $out/share/applications/emacs.desktop + ''; + }); +in [...] +]]> + + + + After building this file as shown in , + you will get an GTK3-based Emacs binary pre-loaded with your + favorite packages. + +
+
+ +
+ Running Emacs as a Service + + NixOS provides an optional + systemd service which launches + + Emacs daemon + + with the user's login session. + + + + Source: + modules/services/editors/emacs.nix + + +
+ Enabling the Service + + + To install and enable the systemd + user service for Emacs daemon, add the following to your + configuration.nix: + + + + + + The services.emacs.package option allows a + custom derivation to be used, for example, one created by + emacsWithPackages. + + + + Ensure that the Emacs server is enabled for your user's Emacs + configuration, either by customizing the + server-mode variable, or by adding + (server-start) to + ~/.emacs.d/init.el. + + + + To start the daemon, execute the following: + + +$ nixos-rebuild switch # to activate the new configuration.nix +$ systemctl --user daemon-reload # to force systemd reload +$ systemctl --user start emacs.service # to start the Emacs daemon + + + The server should now be ready to serve Emacs clients. + + +
+ +
+ Starting the client + + Ensure that the emacs server is enabled, either by customizing + the server-mode variable, or by adding + (server-start) to + ~/.emacs. + + + + To connect to the emacs daemon, run one of the following: + + +
+ +
+ Configuring the <varname>EDITOR</varname> variable + + + + If services.emacs.defaultEditor is + true, the EDITOR variable + will be set to a wrapper script which launches + emacsclient. + + + + Any setting of EDITOR in the shell config + files will override + services.emacs.defaultEditor. + To make sure EDITOR refers to the Emacs + wrapper script, remove any existing EDITOR + assignment from .profile, + .bashrc, .zshenv or + any other shell config file. + + + + If you have formed certain bad habits when editing files, + these can be corrected with a shell alias to the wrapper + script: + alias vi=$EDITOR + +
+ +
+ Per-User Enabling of the Service + + + In general, systemd user services + are globally enabled by symlinks in + /etc/systemd/user. In the case where + Emacs daemon is not wanted for all users, it is possible to + install the service but not globally enable it: + + + + + + To enable the systemd user service for just + the currently logged in user, run: + + systemctl --user enable emacs + + This will add the symlink + ~/.config/systemd/user/emacs.service. + +
+
+ +
+ Configuring Emacs + + + The Emacs init file should be changed to load the extension + packages at startup: + + + Package initialization in <filename>.emacs</filename> + + + + + + After the declarative emacs package configuration has been + tested, previously downloaded packages can be cleaned up by + removing ~/.emacs.d/elpa (do make a backup + first, in case you forgot a package). + + + + +
+ A Major Mode for Nix Expressions + + + Of interest may be melpaPackages.nix-mode, + which provides syntax highlighting for the Nix language. This is + particularly convenient if you regularly edit Nix files. + +
+ +
+ Accessing man pages + + You can use woman to get completion of all + available man pages. For example, type M-x woman + <RET> nixos-rebuild <RET>. + +
+
+ +
diff --git a/nixos/modules/services/misc/nixos-manual.nix b/nixos/modules/services/misc/nixos-manual.nix index 37ea339300d..a60d5f7983b 100644 --- a/nixos/modules/services/misc/nixos-manual.nix +++ b/nixos/modules/services/misc/nixos-manual.nix @@ -11,12 +11,6 @@ let cfg = config.services.nixosManual; - versionModule = - { system.nixosVersionSuffix = config.system.nixosVersionSuffix; - system.nixosRevision = config.system.nixosRevision; - nixpkgs.system = config.nixpkgs.system; - }; - /* For the purpose of generating docs, evaluate options with each derivation in `pkgs` (recursively) replaced by a fake with path "\${pkgs.attribute.path}". It isn't perfect, but it seems to cover a vast majority of use cases. @@ -24,12 +18,12 @@ let the path above will be shown and not e.g. `${config.services.foo.package}`. */ manual = import ../../../doc/manual { inherit pkgs; - version = config.system.nixosVersion; - revision = config.system.nixosRevision; + version = config.system.nixosRelease; + revision = "release-${config.system.nixosRelease}"; options = let scrubbedEval = evalModules { - modules = [ versionModule ] ++ baseModules; + modules = [ { nixpkgs.system = config.nixpkgs.system; } ] ++ baseModules; args = (config._module.args) // { modules = [ ]; }; specialArgs = { pkgs = scrubDerivations "pkgs" pkgs; }; }; diff --git a/nixos/modules/services/networking/dnscrypt-proxy.nix b/nixos/modules/services/networking/dnscrypt-proxy.nix index 227e38acc4a..cf36ccf0572 100644 --- a/nixos/modules/services/networking/dnscrypt-proxy.nix +++ b/nixos/modules/services/networking/dnscrypt-proxy.nix @@ -55,7 +55,7 @@ in ''; }; localAddress = mkOption { default = "127.0.0.1"; - type = types.string; + type = types.str; description = '' Listen for DNS queries to relay on this address. The only reason to change this from its default value is to proxy queries on behalf @@ -74,7 +74,7 @@ in }; resolverName = mkOption { default = "dnscrypt.eu-nl"; - type = types.nullOr types.string; + type = types.nullOr types.str; description = '' The name of the upstream DNSCrypt resolver to use, taken from the list named in the resolverList option. @@ -90,7 +90,7 @@ in example = literalExample "${pkgs.dnscrypt-proxy}/share/dnscrypt-proxy/dnscrypt-resolvers.csv"; default = pkgs.fetchurl { url = https://raw.githubusercontent.com/jedisct1/dnscrypt-proxy/master/dnscrypt-resolvers.csv; - sha256 = "171zvdqcqqvcw3zr7wl9h1wmdmk6m3h55xr4gq2z1j7a0x0ba2in"; + sha256 = "1i9wzw4zl052h5nyp28bwl8d66cgj0awvjhw5wgwz0warkjl1g8g"; }; defaultText = "pkgs.fetchurl { url = ...; sha256 = ...; }"; }; diff --git a/nixos/modules/services/web-servers/nginx/default.nix b/nixos/modules/services/web-servers/nginx/default.nix index 27a33f33ff9..8385d8e6026 100644 --- a/nixos/modules/services/web-servers/nginx/default.nix +++ b/nixos/modules/services/web-servers/nginx/default.nix @@ -4,31 +4,222 @@ with lib; let cfg = config.services.nginx; - nginx = cfg.package; + virtualHosts = mapAttrs (vhostName: vhostConfig: + vhostConfig // (optionalAttrs vhostConfig.enableACME { + sslCertificate = "/var/lib/acme/${vhostName}/fullchain.pem"; + sslCertificateKey = "/var/lib/acme/${vhostName}/key.pem"; + }) + ) cfg.virtualHosts; + configFile = pkgs.writeText "nginx.conf" '' user ${cfg.user} ${cfg.group}; + error_log stderr; daemon off; ${cfg.config} + ${optionalString (cfg.httpConfig == "") '' + http { + include ${cfg.package}/conf/mime.types; + include ${cfg.package}/conf/fastcgi.conf; + + ${optionalString (cfg.recommendedOptimisation) '' + # optimisation + sendfile on; + tcp_nopush on; + tcp_nodelay on; + keepalive_timeout 65; + types_hash_max_size 2048; + ''} + + ssl_protocols ${cfg.sslProtocols}; + ssl_ciphers ${cfg.sslCiphers}; + ${optionalString (cfg.sslDhparam != null) "ssl_dhparam ${cfg.sslDhparam};"} + + ${optionalString (cfg.recommendedTlsSettings) '' + ssl_session_cache shared:SSL:42m; + ssl_session_timeout 23m; + ssl_ecdh_curve secp384r1; + ssl_prefer_server_ciphers on; + ssl_stapling on; + ssl_stapling_verify on; + ''} + + ${optionalString (cfg.recommendedGzipSettings) '' + gzip on; + gzip_disable "msie6"; + gzip_proxied any; + gzip_comp_level 9; + gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript; + ''} + + ${optionalString (cfg.recommendedProxySettings) '' + proxy_set_header Host $host; + proxy_set_header X-Real-IP $remote_addr; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + proxy_set_header X-Forwarded-Proto $scheme; + proxy_set_header X-Forwarded-Host $host; + proxy_set_header X-Forwarded-Server $host; + proxy_set_header Accept-Encoding ""; + + proxy_redirect off; + proxy_connect_timeout 90; + proxy_send_timeout 90; + proxy_read_timeout 90; + proxy_http_version 1.0; + ''} + + client_max_body_size ${cfg.clientMaxBodySize}; + + server_tokens ${if cfg.serverTokens then "on" else "off"}; + + ${vhosts} + + ${optionalString cfg.statusPage '' + server { + listen 80; + listen [::]:80; + + server_name localhost; + + location /nginx_status { + stub_status on; + access_log off; + allow 127.0.0.1; + allow ::1; + deny all; + } + } + ''} + + ${cfg.appendHttpConfig} + }''} + ${optionalString (cfg.httpConfig != "") '' http { include ${cfg.package}/conf/mime.types; + include ${cfg.package}/conf/fastcgi.conf; ${cfg.httpConfig} - } - ''} + }''} + ${cfg.appendConfig} ''; + + vhosts = concatStringsSep "\n" (mapAttrsToList (serverName: vhost: + let + ssl = vhost.enableSSL || vhost.forceSSL; + port = if vhost.port != null then vhost.port else (if ssl then 443 else 80); + listenString = toString port + optionalString ssl " ssl http2" + + optionalString vhost.default " default"; + acmeLocation = optionalString vhost.enableACME '' + location /.well-known/acme-challenge { + try_files $uri @acme-fallback; + root ${vhost.acmeRoot}; + auth_basic off; + } + location @acme-fallback { + auth_basic off; + proxy_pass http://${vhost.acmeFallbackHost}; + } + ''; + in '' + ${optionalString vhost.forceSSL '' + server { + listen 80 ${optionalString vhost.default "default"}; + listen [::]:80 ${optionalString vhost.default "default"}; + + server_name ${serverName} ${concatStringsSep " " vhost.serverAliases}; + ${acmeLocation} + location / { + return 301 https://$host${optionalString (port != 443) ":${port}"}$request_uri; + } + } + ''} + + server { + listen ${listenString}; + listen [::]:${listenString}; + + server_name ${serverName} ${concatStringsSep " " vhost.serverAliases}; + ${acmeLocation} + ${optionalString (vhost.root != null) "root ${vhost.root};"} + ${optionalString (vhost.globalRedirect != null) '' + return 301 http${optionalString ssl "s"}://${vhost.globalRedirect}$request_uri; + ''} + ${optionalString ssl '' + ssl_certificate ${vhost.sslCertificate}; + ssl_certificate_key ${vhost.sslCertificateKey}; + ''} + + ${optionalString (vhost.basicAuth != {}) (mkBasicAuth serverName vhost.basicAuth)} + + ${mkLocations vhost.locations} + + ${vhost.extraConfig} + } + '' + ) virtualHosts); + mkLocations = locations: concatStringsSep "\n" (mapAttrsToList (location: config: '' + location ${location} { + ${optionalString (config.proxyPass != null) "proxy_pass ${config.proxyPass};"} + ${optionalString (config.root != null) "root ${config.root};"} + ${config.extraConfig} + } + '') locations); + mkBasicAuth = serverName: authDef: let + htpasswdFile = pkgs.writeText "${serverName}.htpasswd" ( + concatStringsSep "\n" (mapAttrsToList (user: password: '' + ${user}:{PLAIN}${password} + '') authDef) + ); + in '' + auth_basic secured; + auth_basic_user_file ${htpasswdFile}; + ''; in { options = { services.nginx = { - enable = mkOption { + enable = mkEnableOption "Nginx Web Server"; + + statusPage = mkOption { default = false; type = types.bool; description = " - Enable the nginx Web Server. + Enable status page reachable from localhost on http://127.0.0.1/nginx_status. + "; + }; + + recommendedTlsSettings = mkOption { + default = false; + type = types.bool; + description = " + Enable recommended TLS settings. + "; + }; + + recommendedOptimisation = mkOption { + default = false; + type = types.bool; + description = " + Enable recommended optimisation settings. + "; + }; + + recommendedGzipSettings = mkOption { + default = false; + type = types.bool; + description = " + Enable recommended gzip settings. + "; + }; + + recommendedProxySettings = mkOption { + default = false; + type = types.bool; + description = " + Enable recommended proxy settings. "; }; @@ -64,7 +255,22 @@ in httpConfig = mkOption { type = types.lines; default = ""; - description = "Configuration lines to be appended inside of the http {} block."; + description = " + Configuration lines to be set inside the http block. + This is mutually exclusive with the structured configuration + via virtualHosts and the recommendedXyzSettings configuration + options. See appendHttpConfig for appending to the generated http block. + "; + }; + + appendHttpConfig = mkOption { + type = types.lines; + default = ""; + description = " + Configuration lines to be appended to the generated http block. + This is mutually exclusive with using httpConfig for specifying the whole + http block verbatim. + "; }; stateDir = mkOption { @@ -86,8 +292,59 @@ in description = "Group account under which nginx runs."; }; - }; + serverTokens = mkOption { + type = types.bool; + default = false; + description = "Show nginx version in headers and error pages."; + }; + clientMaxBodySize = mkOption { + type = types.string; + default = "10m"; + description = "Set nginx global client_max_body_size."; + }; + + sslCiphers = mkOption { + type = types.str; + default = "EECDH+aRSA+AESGCM:EDH+aRSA:EECDH+aRSA:+AES256:+AES128:+SHA1:!CAMELLIA:!SEED:!3DES:!DES:!RC4:!eNULL"; + description = "Ciphers to choose from when negotiating tls handshakes."; + }; + + sslProtocols = mkOption { + type = types.str; + default = "TLSv1.2"; + example = "TLSv1 TLSv1.1 TLSv1.2"; + description = "Allowed TLS protocol versions."; + }; + + sslDhparam = mkOption { + type = types.nullOr types.path; + default = null; + example = "/path/to/dhparams.pem"; + description = "Path to DH parameters file."; + }; + + virtualHosts = mkOption { + type = types.attrsOf (types.submodule (import ./vhost-options.nix { + inherit lib; + })); + default = { + localhost = {}; + }; + example = literalExample '' + { + "hydra.example.com" = { + forceSSL = true; + enableACME = true; + locations."/" = { + proxyPass = "http://localhost:3000"; + }; + }; + }; + ''; + description = "Declarative vhost config"; + }; + }; }; config = mkIf cfg.enable { @@ -97,7 +354,6 @@ in description = "Nginx Web Server"; after = [ "network.target" ]; wantedBy = [ "multi-user.target" ]; - path = [ nginx ]; preStart = '' mkdir -p ${cfg.stateDir}/logs @@ -105,14 +361,23 @@ in chown -R ${cfg.user}:${cfg.group} ${cfg.stateDir} ''; serviceConfig = { - ExecStart = "${nginx}/bin/nginx -c ${configFile} -p ${cfg.stateDir}"; + ExecStart = "${cfg.package}/bin/nginx -c ${configFile} -p ${cfg.stateDir}"; ExecReload = "${pkgs.coreutils}/bin/kill -HUP $MAINPID"; - Restart = "on-failure"; + Restart = "always"; RestartSec = "10s"; StartLimitInterval = "1min"; }; }; + security.acme.certs = filterAttrs (n: v: v != {}) ( + mapAttrs (vhostName: vhostConfig: + optionalAttrs vhostConfig.enableACME { + webroot = vhostConfig.acmeRoot; + extraDomains = genAttrs vhostConfig.serverAliases (alias: null); + } + ) virtualHosts + ); + users.extraUsers = optionalAttrs (cfg.user == "nginx") (singleton { name = "nginx"; group = cfg.group; diff --git a/nixos/modules/services/web-servers/nginx/location-options.nix b/nixos/modules/services/web-servers/nginx/location-options.nix new file mode 100644 index 00000000000..8aaa3e96f80 --- /dev/null +++ b/nixos/modules/services/web-servers/nginx/location-options.nix @@ -0,0 +1,40 @@ +# This file defines the options that can be used both for the Apache +# main server configuration, and for the virtual hosts. (The latter +# has additional options that affect the web server as a whole, like +# the user/group to run under.) + +{ lib }: + +with lib; + +{ + options = { + proxyPass = mkOption { + type = types.nullOr types.str; + default = null; + example = "http://www.example.org/"; + description = '' + Adds proxy_pass directive and sets default proxy headers Host, X-Real-Ip + and X-Forwarded-For. + ''; + }; + + root = mkOption { + type = types.nullOr types.path; + default = null; + example = "/your/root/directory"; + description = '' + Root directory for requests. + ''; + }; + + extraConfig = mkOption { + type = types.lines; + default = ""; + description = '' + These lines go to the end of the location verbatim. + ''; + }; + }; +} + diff --git a/nixos/modules/services/web-servers/nginx/vhost-options.nix b/nixos/modules/services/web-servers/nginx/vhost-options.nix new file mode 100644 index 00000000000..ee3f68bf805 --- /dev/null +++ b/nixos/modules/services/web-servers/nginx/vhost-options.nix @@ -0,0 +1,140 @@ +# This file defines the options that can be used both for the Apache +# main server configuration, and for the virtual hosts. (The latter +# has additional options that affect the web server as a whole, like +# the user/group to run under.) + +{ lib }: + +with lib; +{ + options = { + serverAliases = mkOption { + type = types.listOf types.str; + default = []; + example = ["www.example.org" "example.org"]; + description = '' + Additional names of virtual hosts served by this virtual host configuration. + ''; + }; + + port = mkOption { + type = types.nullOr types.int; + default = null; + description = '' + Port for the server. Defaults to 80 for http + and 443 for https (i.e. when enableSSL is set). + ''; + }; + + enableACME = mkOption { + type = types.bool; + default = false; + description = "Whether to ask Let's Encrypt to sign a certificate for this vhost."; + }; + + acmeRoot = mkOption { + type = types.str; + default = "/var/lib/acme/acme-challenge"; + description = "Directory to store certificates and keys managed by the ACME service."; + }; + + acmeFallbackHost = mkOption { + type = types.str; + default = "0.0.0.0"; + description = '' + Host which to proxy requests to if acme challenge is not found. Useful + if you want multiple hosts to be able to verify the same domain name. + ''; + }; + + enableSSL = mkOption { + type = types.bool; + default = false; + description = "Whether to enable SSL (https) support."; + }; + + forceSSL = mkOption { + type = types.bool; + default = false; + description = "Whether to always redirect to https."; + }; + + sslCertificate = mkOption { + type = types.path; + example = "/var/host.cert"; + description = "Path to server SSL certificate."; + }; + + sslCertificateKey = mkOption { + type = types.path; + example = "/var/host.key"; + description = "Path to server SSL certificate key."; + }; + + root = mkOption { + type = types.nullOr types.path; + default = null; + example = "/data/webserver/docs"; + description = '' + The path of the web root directory. + ''; + }; + + default = mkOption { + type = types.bool; + default = false; + description = '' + Makes this vhost the default. + ''; + }; + + extraConfig = mkOption { + type = types.lines; + default = ""; + description = '' + These lines go to the end of the vhost verbatim. + ''; + }; + + globalRedirect = mkOption { + type = types.nullOr types.str; + default = null; + example = http://newserver.example.org/; + description = '' + If set, all requests for this host are redirected permanently to + the given URL. + ''; + }; + + basicAuth = mkOption { + type = types.attrsOf types.str; + default = {}; + example = literalExample '' + { + user = "password"; + }; + ''; + description = '' + Basic Auth protection for a vhost. + + WARNING: This is implemented to store the password in plain text in the + nix store. + ''; + }; + + locations = mkOption { + type = types.attrsOf (types.submodule (import ./location-options.nix { + inherit lib; + })); + default = {}; + example = literalExample '' + { + "/" = { + proxyPass = "http://localhost:3000"; + }; + }; + ''; + description = "Declarative location config"; + }; + }; +} diff --git a/nixos/modules/virtualisation/containers.nix b/nixos/modules/virtualisation/containers.nix index 8cfe90e67d1..d83841452f9 100644 --- a/nixos/modules/virtualisation/containers.nix +++ b/nixos/modules/virtualisation/containers.nix @@ -6,35 +6,212 @@ let # The container's init script, a small wrapper around the regular # NixOS stage-2 init script. - containerInit = pkgs.writeScript "container-init" + containerInit = (cfg: + let + renderExtraVeth = (name: cfg: + '' + echo "Bringing ${name} up" + ip link set dev ${name} up + ${optionalString (cfg . "localAddress" or null != null) '' + echo "Setting ip for ${name}" + ip addr add ${cfg . "localAddress"} dev ${name} + ''} + ${optionalString (cfg . "localAddress6" or null != null) '' + echo "Setting ip6 for ${name}" + ip -6 addr add ${cfg . "localAddress6"} dev ${name} + ''} + ${optionalString (cfg . "hostAddress" or null != null) '' + echo "Setting route to host for ${name}" + ip route add ${cfg . "hostAddress"} dev ${name} + ''} + ${optionalString (cfg . "hostAddress6" or null != null) '' + echo "Setting route6 to host for ${name}" + ip -6 route add ${cfg . "hostAddress6"} dev ${name} + ''} + '' + ); + in + pkgs.writeScript "container-init" + '' + #! ${pkgs.stdenv.shell} -e + + # Initialise the container side of the veth pair. + if [ "$PRIVATE_NETWORK" = 1 ]; then + + ip link set host0 name eth0 + ip link set dev eth0 up + + if [ -n "$LOCAL_ADDRESS" ]; then + ip addr add $LOCAL_ADDRESS dev eth0 + fi + if [ -n "$LOCAL_ADDRESS6" ]; then + ip -6 addr add $LOCAL_ADDRESS6 dev eth0 + fi + if [ -n "$HOST_ADDRESS" ]; then + ip route add $HOST_ADDRESS dev eth0 + ip route add default via $HOST_ADDRESS + fi + if [ -n "$HOST_ADDRESS6" ]; then + ip -6 route add $HOST_ADDRESS6 dev eth0 + ip -6 route add default via $HOST_ADDRESS6 + fi + + ${concatStringsSep "\n" (mapAttrsToList renderExtraVeth cfg . "extraVeths" or {})} + ip a + ip r + fi + + # Start the regular stage 1 script. + exec "$1" + '' + ); + + nspawnExtraVethArgs = (name: cfg: "--network-veth-extra=${name}"); + startScript = (cfg: '' - #! ${pkgs.stdenv.shell} -e + mkdir -p -m 0755 "$root/etc" "$root/var/lib" + mkdir -p -m 0700 "$root/var/lib/private" "$root/root" /run/containers + if ! [ -e "$root/etc/os-release" ]; then + touch "$root/etc/os-release" + fi + + if ! [ -e "$root/etc/machine-id" ]; then + touch "$root/etc/machine-id" + fi + + mkdir -p -m 0755 \ + "/nix/var/nix/profiles/per-container/$INSTANCE" \ + "/nix/var/nix/gcroots/per-container/$INSTANCE" + + cp --remove-destination /etc/resolv.conf "$root/etc/resolv.conf" - # Initialise the container side of the veth pair. if [ "$PRIVATE_NETWORK" = 1 ]; then - - ip link set host0 name eth0 - ip link set dev eth0 up - - if [ -n "$LOCAL_ADDRESS" ]; then - ip addr add $LOCAL_ADDRESS dev eth0 - fi - if [ -n "$LOCAL_ADDRESS6" ]; then - ip -6 addr add $LOCAL_ADDRESS6 dev eth0 - fi - if [ -n "$HOST_ADDRESS" ]; then - ip route add $HOST_ADDRESS dev eth0 - ip route add default via $HOST_ADDRESS - fi - if [ -n "$HOST_ADDRESS6" ]; then - ip -6 route add $HOST_ADDRESS6 dev eth0 - ip -6 route add default via $HOST_ADDRESS6 + extraFlags+=" --network-veth" + if [ -n "$HOST_BRIDGE" ]; then + extraFlags+=" --network-bridge=$HOST_BRIDGE" fi fi - # Start the regular stage 1 script. - exec "$1" - ''; + ${if cfg . "extraVeths" or null != null then + ''extraFlags+=" ${concatStringsSep " " (mapAttrsToList nspawnExtraVethArgs cfg . "extraVeths" or {})}"'' + else + ''# No extra veth pairs to create'' + } + + for iface in $INTERFACES; do + extraFlags+=" --network-interface=$iface" + done + + for iface in $MACVLANS; do + extraFlags+=" --network-macvlan=$iface" + done + + # If the host is 64-bit and the container is 32-bit, add a + # --personality flag. + ${optionalString (config.nixpkgs.system == "x86_64-linux") '' + if [ "$(< ''${SYSTEM_PATH:-/nix/var/nix/profiles/per-container/$INSTANCE/system}/system)" = i686-linux ]; then + extraFlags+=" --personality=x86" + fi + ''} + + # Run systemd-nspawn without startup notification (we'll + # wait for the container systemd to signal readiness). + EXIT_ON_REBOOT=1 \ + exec ${config.systemd.package}/bin/systemd-nspawn \ + --keep-unit \ + -M "$INSTANCE" -D "$root" $extraFlags \ + $EXTRA_NSPAWN_FLAGS \ + --notify-ready=yes \ + --bind-ro=/nix/store \ + --bind-ro=/nix/var/nix/db \ + --bind-ro=/nix/var/nix/daemon-socket \ + --bind="/nix/var/nix/profiles/per-container/$INSTANCE:/nix/var/nix/profiles" \ + --bind="/nix/var/nix/gcroots/per-container/$INSTANCE:/nix/var/nix/gcroots" \ + --setenv PRIVATE_NETWORK="$PRIVATE_NETWORK" \ + --setenv HOST_BRIDGE="$HOST_BRIDGE" \ + --setenv HOST_ADDRESS="$HOST_ADDRESS" \ + --setenv LOCAL_ADDRESS="$LOCAL_ADDRESS" \ + --setenv HOST_ADDRESS6="$HOST_ADDRESS6" \ + --setenv LOCAL_ADDRESS6="$LOCAL_ADDRESS6" \ + --setenv PATH="$PATH" \ + ${containerInit cfg} "''${SYSTEM_PATH:-/nix/var/nix/profiles/system}/init" + '' + ); + + preStartScript = (cfg: + '' + # Clean up existing machined registration and interfaces. + machinectl terminate "$INSTANCE" 2> /dev/null || true + + if [ "$PRIVATE_NETWORK" = 1 ]; then + ip link del dev "ve-$INSTANCE" 2> /dev/null || true + ip link del dev "vb-$INSTANCE" 2> /dev/null || true + fi + + ${concatStringsSep "\n" ( + mapAttrsToList (name: cfg: + ''ip link del dev ${name} 2> /dev/null || true '' + ) cfg . "extraVeths" or {} + )} + '' + ); + postStartScript = (cfg: + let + ipcall = (cfg: ipcmd: variable: attribute: + if cfg . attribute or null == null then + '' + if [ -n "${variable}" ]; then + ${ipcmd} add ${variable} dev $ifaceHost + fi + '' + else + ''${ipcmd} add ${cfg . attribute} dev $ifaceHost'' + ); + renderExtraVeth = (name: cfg: + if cfg . "hostBridge" or null != null then + '' + # Add ${name} to bridge ${cfg.hostBridge} + ip link set dev ${name} master ${cfg.hostBridge} up + '' + else + '' + # Set IPs and routes for ${name} + ${optionalString (cfg . "hostAddress" or null != null) '' + ip addr add ${cfg . "hostAddress"} dev ${name} + ''} + ${optionalString (cfg . "hostAddress6" or null != null) '' + ip -6 addr add ${cfg . "hostAddress6"} dev ${name} + ''} + ${optionalString (cfg . "localAddress" or null != null) '' + ip route add ${cfg . "localAddress"} dev ${name} + ''} + ${optionalString (cfg . "localAddress6" or null != null) '' + ip -6 route add ${cfg . "localAddress6"} dev ${name} + ''} + '' + ); + in + '' + if [ "$PRIVATE_NETWORK" = 1 ]; then + if [ -z "$HOST_BRIDGE" ]; then + ifaceHost=ve-$INSTANCE + ip link set dev $ifaceHost up + + ${ipcall cfg "ip addr" "$HOST_ADDRESS" "hostAddress"} + ${ipcall cfg "ip -6 addr" "$HOST_ADDRESS6" "hostAddress6"} + ${ipcall cfg "ip route" "$LOCAL_ADDRESS" "localAddress"} + ${ipcall cfg "ip -6 route" "$LOCAL_ADDRESS6" "localAddress6"} + fi + ${concatStringsSep "\n" (mapAttrsToList renderExtraVeth cfg . "extraVeths" or {})} + fi + + # Get the leader PID so that we can signal it in + # preStop. We can't use machinectl there because D-Bus + # might be shutting down. FIXME: in systemd 219 we can + # just signal systemd-nspawn to do a clean shutdown. + machinectl show "$INSTANCE" | sed 's/Leader=\(.*\)/\1/;t;d' > "/run/containers/$INSTANCE.pid" + '' + ); system = config.nixpkgs.system; @@ -73,6 +250,63 @@ let mkBindFlags = bs: concatMapStrings mkBindFlag (lib.attrValues bs); + networkOptions = { + hostBridge = mkOption { + type = types.nullOr types.string; + default = null; + example = "br0"; + description = '' + Put the host-side of the veth-pair into the named bridge. + Only one of hostAddress* or hostBridge can be given. + ''; + }; + + hostAddress = mkOption { + type = types.nullOr types.str; + default = null; + example = "10.231.136.1"; + description = '' + The IPv4 address assigned to the host interface. + (Not used when hostBridge is set.) + ''; + }; + + hostAddress6 = mkOption { + type = types.nullOr types.string; + default = null; + example = "fc00::1"; + description = '' + The IPv6 address assigned to the host interface. + (Not used when hostBridge is set.) + ''; + }; + + localAddress = mkOption { + type = types.nullOr types.str; + default = null; + example = "10.231.136.2"; + description = '' + The IPv4 address assigned to the interface in the container. + If a hostBridge is used, this should be given with netmask to access + the whole network. Otherwise the default netmask is /32 and routing is + set up from localAddress to hostAddress and back. + ''; + }; + + localAddress6 = mkOption { + type = types.nullOr types.string; + default = null; + example = "fc00::2"; + description = '' + The IPv6 address assigned to the interface in the container. + If a hostBridge is used, this should be given with netmask to access + the whole network. Otherwise the default netmask is /128 and routing is + set up from localAddress6 to hostAddress6 and back. + ''; + }; + + }; + in { @@ -133,56 +367,6 @@ in ''; }; - hostBridge = mkOption { - type = types.nullOr types.string; - default = null; - example = "br0"; - description = '' - Put the host-side of the veth-pair into the named bridge. - Only one of hostAddress* or hostBridge can be given. - ''; - }; - - hostAddress = mkOption { - type = types.nullOr types.str; - default = null; - example = "10.231.136.1"; - description = '' - The IPv4 address assigned to the host interface. - (Not used when hostBridge is set.) - ''; - }; - - hostAddress6 = mkOption { - type = types.nullOr types.string; - default = null; - example = "fc00::1"; - description = '' - The IPv6 address assigned to the host interface. - (Not used when hostBridge is set.) - ''; - }; - - localAddress = mkOption { - type = types.nullOr types.str; - default = null; - example = "10.231.136.2"; - description = '' - The IPv4 address assigned to eth0 - in the container. - ''; - }; - - localAddress6 = mkOption { - type = types.nullOr types.string; - default = null; - example = "fc00::2"; - description = '' - The IPv6 address assigned to eth0 - in the container. - ''; - }; - interfaces = mkOption { type = types.listOf types.string; default = []; @@ -192,6 +376,15 @@ in ''; }; + extraVeths = mkOption { + type = types.attrsOf types.optionSet; + default = {}; + options = networkOptions; + description = '' + Extra veth-pairs to be created for the container + ''; + }; + autoStart = mkOption { type = types.bool; default = false; @@ -214,7 +407,7 @@ in ''; }; - }; + } // networkOptions; config = mkMerge [ (mkIf options.config.isDefined { @@ -272,108 +465,11 @@ in environment.INSTANCE = "%i"; environment.root = "/var/lib/containers/%i"; - preStart = - '' - # Clean up existing machined registration and interfaces. - machinectl terminate "$INSTANCE" 2> /dev/null || true + preStart = preStartScript {}; - if [ "$PRIVATE_NETWORK" = 1 ]; then - ip link del dev "ve-$INSTANCE" 2> /dev/null || true - ip link del dev "vb-$INSTANCE" 2> /dev/null || true - fi - ''; + script = startScript {}; - script = - '' - mkdir -p -m 0755 "$root/etc" "$root/var/lib" - mkdir -p -m 0700 "$root/var/lib/private" "$root/root" /run/containers - if ! [ -e "$root/etc/os-release" ]; then - touch "$root/etc/os-release" - fi - - if ! [ -e "$root/etc/machine-id" ]; then - touch "$root/etc/machine-id" - fi - - mkdir -p -m 0755 \ - "/nix/var/nix/profiles/per-container/$INSTANCE" \ - "/nix/var/nix/gcroots/per-container/$INSTANCE" - - cp --remove-destination /etc/resolv.conf "$root/etc/resolv.conf" - - if [ "$PRIVATE_NETWORK" = 1 ]; then - extraFlags+=" --network-veth" - if [ -n "$HOST_BRIDGE" ]; then - extraFlags+=" --network-bridge=$HOST_BRIDGE" - fi - fi - - for iface in $INTERFACES; do - extraFlags+=" --network-interface=$iface" - done - - for iface in $MACVLANS; do - extraFlags+=" --network-macvlan=$iface" - done - - # If the host is 64-bit and the container is 32-bit, add a - # --personality flag. - ${optionalString (config.nixpkgs.system == "x86_64-linux") '' - if [ "$(< ''${SYSTEM_PATH:-/nix/var/nix/profiles/per-container/$INSTANCE/system}/system)" = i686-linux ]; then - extraFlags+=" --personality=x86" - fi - ''} - - # Run systemd-nspawn without startup notification (we'll - # wait for the container systemd to signal readiness). - EXIT_ON_REBOOT=1 \ - exec ${config.systemd.package}/bin/systemd-nspawn \ - --keep-unit \ - -M "$INSTANCE" -D "$root" $extraFlags \ - $EXTRA_NSPAWN_FLAGS \ - --notify-ready=yes \ - --bind-ro=/nix/store \ - --bind-ro=/nix/var/nix/db \ - --bind-ro=/nix/var/nix/daemon-socket \ - --bind="/nix/var/nix/profiles/per-container/$INSTANCE:/nix/var/nix/profiles" \ - --bind="/nix/var/nix/gcroots/per-container/$INSTANCE:/nix/var/nix/gcroots" \ - --setenv PRIVATE_NETWORK="$PRIVATE_NETWORK" \ - --setenv HOST_BRIDGE="$HOST_BRIDGE" \ - --setenv HOST_ADDRESS="$HOST_ADDRESS" \ - --setenv LOCAL_ADDRESS="$LOCAL_ADDRESS" \ - --setenv HOST_ADDRESS6="$HOST_ADDRESS6" \ - --setenv LOCAL_ADDRESS6="$LOCAL_ADDRESS6" \ - --setenv PATH="$PATH" \ - ${containerInit} "''${SYSTEM_PATH:-/nix/var/nix/profiles/system}/init" - ''; - - postStart = - '' - if [ "$PRIVATE_NETWORK" = 1 ]; then - if [ -z "$HOST_BRIDGE" ]; then - ifaceHost=ve-$INSTANCE - ip link set dev $ifaceHost up - if [ -n "$HOST_ADDRESS" ]; then - ip addr add $HOST_ADDRESS dev $ifaceHost - fi - if [ -n "$HOST_ADDRESS6" ]; then - ip -6 addr add $HOST_ADDRESS6 dev $ifaceHost - fi - if [ -n "$LOCAL_ADDRESS" ]; then - ip route add $LOCAL_ADDRESS dev $ifaceHost - fi - if [ -n "$LOCAL_ADDRESS6" ]; then - ip -6 route add $LOCAL_ADDRESS6 dev $ifaceHost - fi - fi - fi - - # Get the leader PID so that we can signal it in - # preStop. We can't use machinectl there because D-Bus - # might be shutting down. FIXME: in systemd 219 we can - # just signal systemd-nspawn to do a clean shutdown. - machinectl show "$INSTANCE" | sed 's/Leader=\(.*\)/\1/;t;d' > "/run/containers/$INSTANCE.pid" - ''; + postStart = postStartScript {}; preStop = '' @@ -425,15 +521,20 @@ in [{ name = "container@"; value = unit; }] # declarative containers ++ (mapAttrsToList (name: cfg: nameValuePair "container@${name}" ( + unit // { + preStart = preStartScript cfg; + script = startScript cfg; + postStart = postStartScript cfg; + } // ( if cfg.autoStart then - unit // { + { wantedBy = [ "multi-user.target" ]; wants = [ "network.target" ]; after = [ "network.target" ]; restartTriggers = [ cfg.path ]; reloadIfChanged = true; } - else null + else {}) )) config.containers) )); @@ -462,11 +563,11 @@ in LOCAL_ADDRESS6=${cfg.localAddress6} ''} ''} - INTERFACES="${toString cfg.interfaces}" - ${optionalString cfg.autoStart '' - AUTO_START=1 - ''} - EXTRA_NSPAWN_FLAGS="${mkBindFlags cfg.bindMounts}" + INTERFACES="${toString cfg.interfaces}" + ${optionalString cfg.autoStart '' + AUTO_START=1 + ''} + EXTRA_NSPAWN_FLAGS="${mkBindFlags cfg.bindMounts}" ''; }) config.containers; diff --git a/nixos/release.nix b/nixos/release.nix index b059de34132..4647a02afb1 100644 --- a/nixos/release.nix +++ b/nixos/release.nix @@ -7,7 +7,7 @@ with import ../lib; let - version = builtins.readFile ../.version; + version = fileContents ../.version; versionSuffix = (if stableBranch then "." else "pre") + "${toString nixpkgs.revCount}.${nixpkgs.shortRev}"; @@ -96,7 +96,6 @@ in rec { manual = buildFromConfig ({ pkgs, ... }: { }) (config: config.system.build.manual.manual); manualEpub = (buildFromConfig ({ pkgs, ... }: { }) (config: config.system.build.manual.manualEpub)); - manualPDF = (buildFromConfig ({ pkgs, ... }: { }) (config: config.system.build.manual.manualPDF)).x86_64-linux; manpages = buildFromConfig ({ pkgs, ... }: { }) (config: config.system.build.manual.manpages); options = (buildFromConfig ({ pkgs, ... }: { }) (config: config.system.build.manual.optionsJSON)).x86_64-linux; @@ -218,6 +217,7 @@ in rec { tests.containers-ipv6 = callTest tests/containers-ipv6.nix {}; tests.containers-bridge = callTest tests/containers-bridge.nix {}; tests.containers-imperative = callTest tests/containers-imperative.nix {}; + tests.containers-extra_veth = callTest tests/containers-extra_veth.nix {}; tests.docker = hydraJob (import tests/docker.nix { system = "x86_64-linux"; }); tests.dockerRegistry = hydraJob (import tests/docker-registry.nix { system = "x86_64-linux"; }); tests.dnscrypt-proxy = callTest tests/dnscrypt-proxy.nix { system = "x86_64-linux"; }; diff --git a/nixos/tests/containers-bridge.nix b/nixos/tests/containers-bridge.nix index 8c3340b60a7..bb32d852a6f 100644 --- a/nixos/tests/containers-bridge.nix +++ b/nixos/tests/containers-bridge.nix @@ -10,7 +10,7 @@ in import ./make-test.nix ({ pkgs, ...} : { name = "containers-bridge"; meta = with pkgs.stdenv.lib.maintainers; { - maintainers = [ aristid aszlig eelco chaoflow ]; + maintainers = [ aristid aszlig eelco chaoflow kampfschlaefer ]; }; machine = diff --git a/nixos/tests/containers-extra_veth.nix b/nixos/tests/containers-extra_veth.nix new file mode 100644 index 00000000000..2a54b1d961c --- /dev/null +++ b/nixos/tests/containers-extra_veth.nix @@ -0,0 +1,103 @@ +# Test for NixOS' container support. + +import ./make-test.nix ({ pkgs, ...} : { + name = "containers-bridge"; + meta = with pkgs.stdenv.lib.maintainers; { + maintainers = [ kampfschlaefer ]; + }; + + machine = + { config, pkgs, ... }: + { imports = [ ../modules/installer/cd-dvd/channel.nix ]; + virtualisation.writableStore = true; + virtualisation.memorySize = 768; + virtualisation.vlans = []; + + networking.bridges = { + br0 = { + interfaces = []; + }; + br1 = { interfaces = []; }; + }; + networking.interfaces = { + br0 = { + ip4 = [{ address = "192.168.0.1"; prefixLength = 24; }]; + ip6 = [{ address = "fc00::1"; prefixLength = 7; }]; + }; + br1 = { + ip4 = [{ address = "192.168.1.1"; prefixLength = 24; }]; + }; + }; + + containers.webserver = + { + autoStart = true; + privateNetwork = true; + hostBridge = "br0"; + localAddress = "192.168.0.100/24"; + localAddress6 = "fc00::2/7"; + extraVeths = { + veth1 = { hostBridge = "br1"; localAddress = "192.168.1.100/24"; }; + veth2 = { hostAddress = "192.168.2.1"; localAddress = "192.168.2.100"; }; + }; + config = + { + networking.firewall.allowedTCPPorts = [ 80 ]; + networking.firewall.allowPing = true; + }; + }; + + virtualisation.pathsInNixDB = [ pkgs.stdenv ]; + }; + + testScript = + '' + $machine->waitForUnit("default.target"); + $machine->succeed("nixos-container list") =~ /webserver/ or die; + + # Status of the webserver container. + $machine->succeed("nixos-container status webserver") =~ /up/ or die; + + # Debug + #$machine->succeed("nixos-container run webserver -- ip link >&2"); + + # Ensure that the veths are inside the container + $machine->succeed("nixos-container run webserver -- ip link show veth1") =~ /state UP/ or die; + $machine->succeed("nixos-container run webserver -- ip link show veth2") =~ /state UP/ or die; + + # Debug + #$machine->succeed("ip link >&2"); + + # Ensure the presence of the extra veths + $machine->succeed("ip link show veth1") =~ /state UP/ or die; + $machine->succeed("ip link show veth2") =~ /state UP/ or die; + + # Ensure the veth1 is part of br1 on the host + $machine->succeed("ip link show veth1") =~ /master br1/ or die; + + # Debug + #$machine->succeed("ip -4 a >&2"); + #$machine->succeed("ip -4 r >&2"); + #$machine->succeed("nixos-container run webserver -- ip link >&2"); + #$machine->succeed("nixos-container run webserver -- ip -4 a >&2"); + #$machine->succeed("nixos-container run webserver -- ip -4 r >&2"); + + # Ping on main veth + $machine->succeed("ping -n -c 1 192.168.0.100"); + $machine->succeed("ping6 -n -c 1 fc00::2"); + + # Ping on the first extra veth + $machine->succeed("ping -n -c 1 192.168.1.100 >&2"); + + # Ping on the second extra veth + $machine->succeed("ping -n -c 1 192.168.2.100 >&2"); + + # Stop the container. + $machine->succeed("nixos-container stop webserver"); + $machine->fail("ping -n -c 1 192.168.1.100 >&2"); + $machine->fail("ping -n -c 1 192.168.2.100 >&2"); + + # Destroying a declarative container should fail. + $machine->fail("nixos-container destroy webserver"); + ''; +}) diff --git a/nixos/tests/containers-imperative.nix b/nixos/tests/containers-imperative.nix index 89babdcc476..7e2a5497638 100644 --- a/nixos/tests/containers-imperative.nix +++ b/nixos/tests/containers-imperative.nix @@ -3,7 +3,7 @@ import ./make-test.nix ({ pkgs, ...} : { name = "containers-imperative"; meta = with pkgs.stdenv.lib.maintainers; { - maintainers = [ aristid aszlig eelco chaoflow ]; + maintainers = [ aristid aszlig eelco chaoflow kampfschlaefer ]; }; machine = diff --git a/nixos/tests/containers-ipv4.nix b/nixos/tests/containers-ipv4.nix index 8f1ab40221a..31d05990a67 100644 --- a/nixos/tests/containers-ipv4.nix +++ b/nixos/tests/containers-ipv4.nix @@ -3,7 +3,7 @@ import ./make-test.nix ({ pkgs, ...} : { name = "containers-ipv4"; meta = with pkgs.stdenv.lib.maintainers; { - maintainers = [ aristid aszlig eelco chaoflow ]; + maintainers = [ aristid aszlig eelco chaoflow kampfschlaefer ]; }; machine = diff --git a/nixos/tests/containers-ipv6.nix b/nixos/tests/containers-ipv6.nix index 0c1b8e88564..320465ebb95 100644 --- a/nixos/tests/containers-ipv6.nix +++ b/nixos/tests/containers-ipv6.nix @@ -8,7 +8,7 @@ in import ./make-test.nix ({ pkgs, ...} : { name = "containers-ipv6"; meta = with pkgs.stdenv.lib.maintainers; { - maintainers = [ aristid aszlig eelco chaoflow ]; + maintainers = [ aristid aszlig eelco chaoflow kampfschlaefer ]; }; machine = diff --git a/pkgs/applications/audio/mopidy/default.nix b/pkgs/applications/audio/mopidy/default.nix index c1bdab8622c..5feabbf4206 100644 --- a/pkgs/applications/audio/mopidy/default.nix +++ b/pkgs/applications/audio/mopidy/default.nix @@ -22,7 +22,7 @@ pythonPackages.buildPythonApplication rec { ]; propagatedBuildInputs = with pythonPackages; [ - gst-python pygobject3 pykka tornado requests2 + gst-python pygobject3 pykka tornado requests2 dbus ]; # There are no tests diff --git a/pkgs/applications/audio/zam-plugins/default.nix b/pkgs/applications/audio/zam-plugins/default.nix index 70051e587cd..b79083ee402 100644 --- a/pkgs/applications/audio/zam-plugins/default.nix +++ b/pkgs/applications/audio/zam-plugins/default.nix @@ -2,20 +2,19 @@ stdenv.mkDerivation rec { name = "zam-plugins-${version}"; - version = "3.6"; + version = "3.7"; src = fetchgit { url = "https://github.com/zamaudio/zam-plugins.git"; deepClone = true; - rev = "91fe56931a3e57b80f18c740d2dde6b44f962aee"; - sha256 = "1ldrqh6nk0m1axb553wjp1gfznw8b6b3k0v0z1jdwy425sl6g07d"; + rev = "932046905a57f698406318765a60807a1f81257d"; + sha256 = "0zgkmq3jgysrsb6cm6sfbgqpgfpwv8nxlgkqm29zzvb97j56bm7z"; }; buildInputs = [ boost libX11 mesa liblo libjack2 ladspaH lv2 pkgconfig rubberband libsndfile ]; patchPhase = '' patchShebangs ./dpf/utils/generate-ttl.sh - substituteInPlace Makefile --replace "ZaMaximX2" "ZaMaximX2 ZamPiano ZamChild670" ''; makeFlags = [ diff --git a/pkgs/applications/editors/atom/default.nix b/pkgs/applications/editors/atom/default.nix index 620d0fb629e..13816f8bfdc 100644 --- a/pkgs/applications/editors/atom/default.nix +++ b/pkgs/applications/editors/atom/default.nix @@ -2,11 +2,11 @@ stdenv.mkDerivation rec { name = "atom-${version}"; - version = "1.8.0"; + version = "1.9.0"; src = fetchurl { url = "https://github.com/atom/atom/releases/download/v${version}/atom-amd64.deb"; - sha256 = "0x73n64y3jfwbwg6s9pmsajryrjrrx1a0dzf3ff6dbi5gvv950xi"; + sha256 = "0hhv1yfs2h5x86pjbkbdg1mn15afdd3baddwpf3p0fl8x2gv9z7m"; name = "${name}.deb"; }; diff --git a/pkgs/applications/editors/kile/frameworks.nix b/pkgs/applications/editors/kile/frameworks.nix index 2fd8dfe4128..f42e9fa4335 100644 --- a/pkgs/applications/editors/kile/frameworks.nix +++ b/pkgs/applications/editors/kile/frameworks.nix @@ -1,9 +1,9 @@ -{ stdenv +{ kdeDerivation , lib , fetchgit -, extra-cmake-modules +, ecm , kdoctools -, makeQtWrapper +, kdeWrapper , qtscript , kconfig , kcrash @@ -13,54 +13,55 @@ , kiconthemes , kinit , khtml +, konsole , kparts , ktexteditor , kwindowsystem , poppler }: -stdenv.mkDerivation rec { - name = "kile-${version}"; - version = "2016-07-02"; +let + unwrapped = + kdeDerivation rec { + name = "kile-${version}"; + version = "2016-07-02"; - src = fetchgit { - url = git://anongit.kde.org/kile.git; - rev = "d38bc7069667119cc891b351188484ca6fb88973"; - sha256 = "1nha71i16fs7nq2812b5565nbmbsbs3ak5czas6xg1dg5bsvdqh8"; + src = fetchgit { + url = git://anongit.kde.org/kile.git; + rev = "d38bc7069667119cc891b351188484ca6fb88973"; + sha256 = "1nha71i16fs7nq2812b5565nbmbsbs3ak5czas6xg1dg5bsvdqh8"; - }; + }; - nativeBuildInputs = [ - extra-cmake-modules - kdoctools - makeQtWrapper - ]; + nativeBuildInputs = [ ecm kdoctools ]; - buildInputs = [ - qtscript - kconfig - kcrash - kdbusaddons - kdelibs4support - kdoctools - kguiaddons - kiconthemes - kinit - khtml - kparts - ktexteditor - kwindowsystem - poppler - ]; + buildInputs = [ + kconfig + kcrash + kdbusaddons + kdelibs4support + kdoctools + kguiaddons + kiconthemes + kinit + khtml + kparts + ktexteditor + kwindowsystem + poppler + qtscript + ]; - postInstall = '' - wrapQtProgram "$out/bin/kile" - ''; - - meta = { - description = "Kile is a user friendly TeX/LaTeX authoring tool for the KDE desktop environment"; - homepage = https://www.kde.org/applications/office/kile/; - maintainers = with lib.maintainers; [ fridh ]; - license = lib.licenses.gpl2Plus; - }; + meta = { + description = "Kile is a user friendly TeX/LaTeX authoring tool for the KDE desktop environment"; + homepage = https://www.kde.org/applications/office/kile/; + maintainers = with lib.maintainers; [ fridh ]; + license = lib.licenses.gpl2Plus; + }; + }; +in +kdeWrapper unwrapped +{ + targets = [ "bin/kile" ]; + paths = [ konsole.unwrapped ]; } diff --git a/pkgs/applications/gis/qgis/default.nix b/pkgs/applications/gis/qgis/default.nix index b771d2552d8..a8c1428f8cb 100644 --- a/pkgs/applications/gis/qgis/default.nix +++ b/pkgs/applications/gis/qgis/default.nix @@ -1,15 +1,16 @@ { stdenv, fetchurl, gdal, cmake, qt4, flex, bison, proj, geos, xlibsWrapper, sqlite, gsl , qwt, fcgi, pythonPackages, libspatialindex, libspatialite, qscintilla, postgresql, makeWrapper +, qjson, qca2, txt2tags , withGrass ? false, grass }: stdenv.mkDerivation rec { - name = "qgis-2.10.1"; + name = "qgis-2.16.1"; buildInputs = [ gdal qt4 flex bison proj geos xlibsWrapper sqlite gsl qwt qscintilla - fcgi libspatialindex libspatialite postgresql ] ++ + fcgi libspatialindex libspatialite postgresql qjson qca2 txt2tags ] ++ (stdenv.lib.optional withGrass grass) ++ - (with pythonPackages; [ numpy psycopg2 ]) ++ [ pythonPackages.qscintilla ]; + (with pythonPackages; [ numpy psycopg2 requests2 ]) ++ [ pythonPackages.qscintilla ]; nativeBuildInputs = [ cmake makeWrapper ]; @@ -24,7 +25,7 @@ stdenv.mkDerivation rec { src = fetchurl { url = "http://qgis.org/downloads/${name}.tar.bz2"; - sha256 = "79119b54642edaffe3cda513531eb7b81913e013954a49c6d3b21c8b00143307"; + sha256 = "4a526cd8ae76fc06bb2b6a158e86db5dc0c94545137a8233cd465ef867acdc8b"; }; cmakeFlags = stdenv.lib.optional withGrass "-DGRASS_PREFIX7=${grass}/${grass.name}"; diff --git a/pkgs/applications/misc/moonlight-embedded/default.nix b/pkgs/applications/misc/moonlight-embedded/default.nix new file mode 100644 index 00000000000..9171e012807 --- /dev/null +++ b/pkgs/applications/misc/moonlight-embedded/default.nix @@ -0,0 +1,34 @@ +{ stdenv, fetchgit, cmake, perl +, alsaLib, libevdev, libopus, libudev, SDL2 +, ffmpeg, pkgconfig, xorg, libvdpau, libpulseaudio, libcec +, curl, expat, avahi, enet, libuuid +}: + +stdenv.mkDerivation rec { + name = "moonlight-embedded-${version}"; + version = "2.2.1"; + + # fetchgit used to ensure submodules are available + src = fetchgit { + url = "git://github.com/irtimmer/moonlight-embedded"; + rev = "refs/tags/v${version}"; + sha256 = "0m1114dsz44rvq402b4v5ib2cwj2vbasir0l8vi0q5iymwmsvxj4"; + }; + + outputs = [ "out" "doc" ]; + + nativeBuildInputs = [ cmake perl ]; + buildInputs = [ + alsaLib libevdev libopus libudev SDL2 + ffmpeg pkgconfig xorg.libxcb libvdpau libpulseaudio libcec + xorg.libpthreadstubs curl expat avahi enet libuuid + ]; + + meta = with stdenv.lib; { + description = "Open source implementation of NVIDIA's GameStream"; + homepage = https://github.com/irtimmer/moonlight-embedded; + license = licenses.gpl3; + maintainers = [ maintainers.globin ]; + platforms = platforms.linux; + }; +} diff --git a/pkgs/applications/misc/yakuake/3.0.nix b/pkgs/applications/misc/yakuake/3.0.nix index f3aff480914..4ccef7f435a 100644 --- a/pkgs/applications/misc/yakuake/3.0.nix +++ b/pkgs/applications/misc/yakuake/3.0.nix @@ -1,8 +1,9 @@ -{ stdenv +{ kdeDerivation , lib , fetchurl -, cmake -, extra-cmake-modules +, kdoctools +, kdeWrapper +, ecm , karchive , kcrash , kdbusaddons @@ -14,53 +15,49 @@ , konsole , kparts , kwindowsystem -, makeQtWrapper - }: let - pname = "yakuake"; - version = "3.0.2"; + unwrapped = let + pname = "yakuake"; + version = "3.0.2"; + in kdeDerivation rec { + name = "${pname}-${version}"; + + src = fetchurl { + url = "http://download.kde.org/stable/${pname}/${version}/src/${name}.tar.xz"; + sha256 = "0vcdji1k8d3pz7k6lkw8ighkj94zff2l2cf9v1avf83f4hjyfhg5"; + }; + + buildInputs = [ + karchive + kcrash + kdbusaddons + ki18n + kiconthemes + knewstuff + knotifications + knotifyconfig + kparts + kwindowsystem + ]; + + nativeBuildInputs = [ + ecm kdoctools + ]; + + meta = { + homepage = https://yakuake.kde.org; + description = "Quad-style terminal emulator for KDE"; + maintainers = with lib.maintainers; [ fridh ]; + }; + }; + + in -stdenv.mkDerivation rec { - name = "${pname}-${version}"; - - src = fetchurl { - url = "http://download.kde.org/stable/${pname}/${version}/src/${name}.tar.xz"; - sha256 = "0vcdji1k8d3pz7k6lkw8ighkj94zff2l2cf9v1avf83f4hjyfhg5"; - }; - - buildInputs = [ - cmake - extra-cmake-modules - karchive - kcrash - kdbusaddons - ki18n - kiconthemes - knewstuff - knotifications - knotifyconfig - kparts - kwindowsystem - ]; - - nativeBuildInputs = [ - extra-cmake-modules - makeQtWrapper - ]; - - propagatedUserEnvPkgs = [ - konsole - ]; - - postInstall = '' - wrapQtProgram "$out/bin/yakuake" - ''; - - meta = { - homepage = https://yakuake.kde.org; - description = "Quad-style terminal emulator for KDE"; - maintainers = with lib.maintainers; [ fridh ]; - }; +kdeWrapper unwrapped +{ + targets = [ "bin/yakuake" ]; + paths = [ konsole.unwrapped ]; } + diff --git a/pkgs/applications/networking/browsers/firefox-bin/sources.nix b/pkgs/applications/networking/browsers/firefox-bin/sources.nix index 90749b914f1..6751193f237 100644 --- a/pkgs/applications/networking/browsers/firefox-bin/sources.nix +++ b/pkgs/applications/networking/browsers/firefox-bin/sources.nix @@ -4,189 +4,189 @@ # ruby generate_sources.rb 46.0.1 > sources.nix { - version = "47.0.1"; + version = "48.0"; sources = [ - { 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"; } - { 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"; } - { 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"; } - { 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"; } - { 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"; } - { 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"; } - { 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"; } - { 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"; } - { 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"; } - { 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"; } - { 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"; } - { 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"; } - { 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"; } - { 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"; } - { 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"; } - { 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"; } - { 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"; } - { 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"; } - { 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"; } - { 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"; } - { 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"; } - { 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"; } - { 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"; } - { 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"; } - { 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"; } - { 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"; } - { 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"; } - { 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"; } - { 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"; } - { 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"; } - { 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"; } - { 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"; } - { 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"; } - { 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"; } - { 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"; } - { 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"; } - { 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"; } - { 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"; } - { 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"; } - { 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"; } - { 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"; } - { 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"; } - { 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"; } - { 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"; } - { 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"; } - { 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"; } - { 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"; } - { 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"; } - { 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"; } - { 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"; } - { 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"; } - { 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"; } - { 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"; } - { 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"; } - { 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"; } - { 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"; } - { 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"; } - { 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"; } - { 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"; } - { 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"; } - { 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"; } - { 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"; } - { 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"; } - { 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"; } - { 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"; } - { 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"; } - { 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"; } - { 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"; } - { 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"; } - { 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"; } - { 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"; } - { 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"; } - { 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"; } - { 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"; } - { 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"; } - { 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"; } - { 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"; } - { 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"; } - { 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"; } - { 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"; } - { 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"; } - { 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"; } - { 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"; } - { 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"; } - { 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"; } - { 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"; } - { 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"; } - { 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"; } - { 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"; } - { 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"; } - { 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"; } - { 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"; } - { 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"; } - { 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"; } - { 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"; } - { 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"; } - { 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"; } - { 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"; } - { 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"; } - { 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"; } - { 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"; } - { 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"; } - { 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"; } - { 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"; } - { 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"; } - { 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"; } - { 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"; } - { 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"; } - { 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"; } - { 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"; } - { 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"; } - { 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"; } - { 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"; } - { 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"; } - { 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"; } - { 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"; } - { 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"; } - { 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"; } - { 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"; } - { 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"; } - { 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"; } - { 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"; } - { 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"; } - { 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"; } - { 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"; } - { 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"; } - { 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"; } - { 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"; } - { 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"; } - { 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"; } - { 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"; } - { 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"; } - { 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"; } - { 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"; } - { 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"; } - { 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"; } - { 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"; } - { 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"; } - { 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"; } - { 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"; } - { 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"; } - { 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"; } - { 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"; } - { 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"; } - { 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"; } - { 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"; } - { 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"; } - { 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"; } - { 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"; } - { 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"; } - { 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"; } - { 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"; } - { 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"; } - { 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"; } - { 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"; } - { 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"; } - { 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"; } - { 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"; } - { 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"; } - { 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"; } - { 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"; } - { 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"; } - { 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"; } - { 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"; } - { 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"; } - { 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"; } - { 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"; } - { 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"; } - { 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"; } - { 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"; } - { 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"; } - { 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"; } - { 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"; } - { 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"; } - { 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"; } - { 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"; } - { 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"; } - { 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"; } - { 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"; } - { 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"; } - { 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"; } - { 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"; } + { 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"; } + { 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"; } + { 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"; } + { 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"; } + { 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"; } + { 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"; } + { 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"; } + { 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"; } + { 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"; } + { 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"; } + { 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"; } + { 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"; } + { 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"; } + { 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"; } + { 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"; } + { 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"; } + { 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"; } + { 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"; } + { 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"; } + { 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"; } + { 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"; } + { 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"; } + { 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"; } + { 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"; } + { 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"; } + { 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"; } + { 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"; } + { 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"; } + { 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"; } + { 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"; } + { 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"; } + { 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"; } + { 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"; } + { 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"; } + { 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"; } + { 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"; } + { 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"; } + { 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"; } + { 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"; } + { 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"; } + { 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"; } + { 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"; } + { 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"; } + { 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"; } + { 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"; } + { 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"; } + { 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"; } + { 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"; } + { 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"; } + { 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"; } + { 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"; } + { 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"; } + { 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"; } + { 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"; } + { 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"; } + { 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"; } + { 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"; } + { 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"; } + { 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"; } + { 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"; } + { 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"; } + { 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"; } + { 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"; } + { 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"; } + { 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"; } + { 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"; } + { 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"; } + { 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"; } + { 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"; } + { 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"; } + { 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"; } + { 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"; } + { 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"; } + { 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"; } + { 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"; } + { 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"; } + { 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"; } + { 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"; } + { 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"; } + { 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"; } + { 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"; } + { 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"; } + { 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"; } + { 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"; } + { 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"; } + { 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"; } + { 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"; } + { 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"; } + { 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"; } + { 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"; } + { 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"; } + { 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"; } + { 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"; } + { 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"; } + { 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"; } + { 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"; } + { 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"; } + { 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"; } + { 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"; } + { 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"; } + { 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"; } + { 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"; } + { 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"; } + { 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"; } + { 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"; } + { 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"; } + { 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"; } + { 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"; } + { 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"; } + { 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"; } + { 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"; } + { 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"; } + { 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"; } + { 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"; } + { 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"; } + { 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"; } + { 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"; } + { 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"; } + { 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"; } + { 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"; } + { 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"; } + { 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"; } + { 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"; } + { 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"; } + { 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"; } + { 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"; } + { 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"; } + { 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"; } + { 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"; } + { 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"; } + { 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"; } + { 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"; } + { 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"; } + { 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"; } + { 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"; } + { 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"; } + { 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"; } + { 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"; } + { 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"; } + { 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"; } + { 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"; } + { 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"; } + { 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"; } + { 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"; } + { 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"; } + { 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"; } + { 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"; } + { 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"; } + { 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"; } + { 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"; } + { 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"; } + { 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"; } + { 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"; } + { 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"; } + { 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"; } + { 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"; } + { 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"; } + { 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"; } + { 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"; } + { 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"; } + { 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"; } + { 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"; } + { 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"; } + { 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"; } + { 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"; } + { 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"; } + { 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"; } + { 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"; } + { 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"; } + { 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"; } + { 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"; } + { 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"; } + { 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"; } + { 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"; } + { 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"; } + { 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"; } + { 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"; } + { 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"; } + { 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"; } + { 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"; } + { 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"; } + { 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"; } ]; } diff --git a/pkgs/applications/networking/irc/konversation/1.6.nix b/pkgs/applications/networking/irc/konversation/1.6.nix index 158fe886b8b..995eddd9321 100644 --- a/pkgs/applications/networking/irc/konversation/1.6.nix +++ b/pkgs/applications/networking/irc/konversation/1.6.nix @@ -1,14 +1,14 @@ -{ stdenv +{ kdeDerivation , lib , fetchurl -, cmake -, extra-cmake-modules +, ecm , kbookmarks , karchive , kconfig , kconfigwidgets , kcoreaddons , kdbusaddons +, kdeWrapper , kdoctools , kemoticons , kglobalaccel @@ -24,61 +24,58 @@ , makeQtWrapper , solid , sonnet -, phonon}: +, phonon +}: let - pn = "konversation"; - v = "1.6"; -in + unwrapped = let + pname = "konversation"; + version = "1.6.1"; + in kdeDerivation rec { + name = "${pname}-${version}"; -stdenv.mkDerivation rec { - name = "${pn}-${v}"; + src = fetchurl { + url = "mirror://kde/stable/${pname}/${version}/src/${name}.tar.xz"; + sha256 = "28346d6629261a5328c43ffa09c12e37743b3ef4f4bc4c411d39bc19f7bf06c6"; + }; - src = fetchurl { - url = "mirror://kde/stable/${pn}/${v}/src/${name}.tar.xz"; - sha256 = "789fd75644bf54606778971310433dbe2bc01ac0917b34bc4e8cac88e204d5b6"; - }; - - buildInputs = [ - cmake - extra-cmake-modules - kbookmarks - karchive - kconfig - kconfigwidgets - kcoreaddons - kdbusaddons - kdoctools - kemoticons - kglobalaccel - ki18n - kiconthemes - kidletime - kitemviews - knotifications - knotifyconfig - kio - kparts - kwallet - solid - sonnet - phonon - ]; - - nativeBuildInputs = [ - extra-cmake-modules - kdoctools - makeQtWrapper - ]; - - postInstall = '' - wrapQtProgram "$out/bin/konversation" - ''; - - meta = { - description = "Integrated IRC client for KDE"; - license = with lib.licenses; [ gpl2 ]; - maintainers = with lib.maintainers; [ fridh ]; - homepage = https://konversation.kde.org; + buildInputs = [ + kbookmarks + karchive + kconfig + kconfigwidgets + kcoreaddons + kdbusaddons + kdoctools + kemoticons + kglobalaccel + ki18n + kiconthemes + kidletime + kitemviews + knotifications + knotifyconfig + kio + kparts + kwallet + solid + sonnet + phonon + ]; + + nativeBuildInputs = [ + ecm + kdoctools + ]; + + meta = { + description = "Integrated IRC client for KDE"; + license = with lib.licenses; [ gpl2 ]; + maintainers = with lib.maintainers; [ fridh ]; + homepage = https://konversation.kde.org; + }; }; +in kdeWrapper unwrapped { + targets = [ "bin/konversation" ]; } + diff --git a/pkgs/applications/networking/mailreaders/notmuch/default.nix b/pkgs/applications/networking/mailreaders/notmuch/default.nix index b9fc84d2058..bbf92ea0462 100644 --- a/pkgs/applications/networking/mailreaders/notmuch/default.nix +++ b/pkgs/applications/networking/mailreaders/notmuch/default.nix @@ -5,10 +5,12 @@ }: stdenv.mkDerivation rec { - name = "notmuch-0.22"; + version = "0.22"; + name = "notmuch-${version}"; passthru = { pythonSourceRoot = "${name}/bindings/python"; + inherit version; }; src = fetchurl { diff --git a/pkgs/applications/networking/mailreaders/notmuch/mutt.nix b/pkgs/applications/networking/mailreaders/notmuch/mutt.nix new file mode 100644 index 00000000000..6d08ad724b2 --- /dev/null +++ b/pkgs/applications/networking/mailreaders/notmuch/mutt.nix @@ -0,0 +1,46 @@ +{ stdenv, lib, perl, perlPackages, makeWrapper, coreutils, notmuch }: + +stdenv.mkDerivation rec { + name = "notmuch-mutt-${version}"; + version = notmuch.version; + + outputs = [ "out" ]; + + dontStrip = true; + + buildInputs = [ + perl + makeWrapper + ] ++ (with perlPackages; [ + FileRemove + DigestSHA1 + Later + MailBox + MailMaildir + MailTools + StringShellQuote + TermReadLineGnu + ]); + + src = notmuch.src; + + phases = [ "unpackPhase" "installPhase" "fixupPhase" ]; + + installPhase = '' + ${coreutils}/bin/install -Dm755 \ + ./contrib/notmuch-mutt/notmuch-mutt \ + $out/bin/notmuch-mutt + + wrapProgram $out/bin/notmuch-mutt \ + --prefix PERL5LIB : $PERL5LIB + ''; + + meta = with lib; { + inherit version; + description = "Mutt support for notmuch"; + homepage = http://notmuchmua.org/; + license = with licenses; mit; + maintainers = with maintainers; [ peterhoeg ]; + platforms = platforms.unix; + }; +} diff --git a/pkgs/applications/office/libreoffice/default.nix b/pkgs/applications/office/libreoffice/default.nix index 63af5babca2..6b206bb13d9 100644 --- a/pkgs/applications/office/libreoffice/default.nix +++ b/pkgs/applications/office/libreoffice/default.nix @@ -76,7 +76,9 @@ in stdenv.mkDerivation rec { # For some reason librdf_redland sometimes refers to rasqal.h instead # of rasqal/rasqal.h - NIX_CFLAGS_COMPILE="-I${librdf_rasqal}/include/rasqal"; + # curl upgrade to 7.50.0 (#17152) changes the libcurl headers slightly and + # therefore requires the -fpermissive flag until this package gets updated + NIX_CFLAGS_COMPILE="-I${librdf_rasqal}/include/rasqal -fpermissive"; # If we call 'configure', 'make' will then call configure again without parameters. # It's their system. diff --git a/pkgs/applications/office/libreoffice/still.nix b/pkgs/applications/office/libreoffice/still.nix index eadf4135630..248772b759f 100644 --- a/pkgs/applications/office/libreoffice/still.nix +++ b/pkgs/applications/office/libreoffice/still.nix @@ -76,7 +76,9 @@ in stdenv.mkDerivation rec { # For some reason librdf_redland sometimes refers to rasqal.h instead # of rasqal/rasqal.h - NIX_CFLAGS_COMPILE="-I${librdf_rasqal}/include/rasqal"; + # curl upgrade to 7.50.0 (#17152) changes the libcurl headers slightly and + # therefore requires the -fpermissive flag until this package gets updated + NIX_CFLAGS_COMPILE="-I${librdf_rasqal}/include/rasqal -fpermissive"; # If we call 'configure', 'make' will then call configure again without parameters. # It's their system. diff --git a/pkgs/build-support/vm/default.nix b/pkgs/build-support/vm/default.nix index fa7107bd738..7ac1b2cc519 100644 --- a/pkgs/build-support/vm/default.nix +++ b/pkgs/build-support/vm/default.nix @@ -2,7 +2,7 @@ , kernel ? pkgs.linux , img ? "bzImage" , rootModules ? - [ "virtio_pci" "virtio_blk" "virtio_balloon" "ext4" "unix" "9p" "9pnet_virtio" "rtc_cmos" ] + [ "virtio_pci" "virtio_blk" "virtio_balloon" "virtio_rng" "ext4" "unix" "9p" "9pnet_virtio" "rtc_cmos" ] }: with pkgs; @@ -218,6 +218,7 @@ rec { ${qemuProg} \ ${lib.optionalString (pkgs.stdenv.system == "x86_64-linux") "-cpu kvm64"} \ -nographic -no-reboot \ + -device virtio-rng-pci \ -virtfs local,path=/nix/store,security_model=none,mount_tag=store \ -virtfs local,path=$TMPDIR/xchg,security_model=none,mount_tag=xchg \ -drive file=$diskImage,if=virtio,cache=unsafe,werror=report \ diff --git a/pkgs/desktops/kde-5/applications/ark/default.nix b/pkgs/desktops/kde-5/applications/ark/default.nix index 503ea6d8cfc..24902757066 100644 --- a/pkgs/desktops/kde-5/applications/ark/default.nix +++ b/pkgs/desktops/kde-5/applications/ark/default.nix @@ -1,7 +1,7 @@ { - kdeApp, lib, + kdeApp, lib, kdeWrapper, - ecm, kdoctools, makeQtWrapper, + ecm, kdoctools, makeWrapper, karchive, kconfig, kcrash, kdbusaddons, ki18n, kiconthemes, khtml, kio, kservice, kpty, kwidgetsaddons, libarchive, @@ -10,26 +10,33 @@ p7zip, unrar, unzipNLS, zip }: -kdeApp { - name = "ark"; - nativeBuildInputs = [ - ecm kdoctools makeQtWrapper - ]; - propagatedBuildInputs = [ - khtml ki18n kio karchive kconfig kcrash kdbusaddons kiconthemes kservice - kpty kwidgetsaddons libarchive - ]; - postInstall = - let - PATH = lib.makeBinPath [ - p7zip unrar unzipNLS zip +let + unwrapped = + kdeApp { + name = "ark"; + nativeBuildInputs = [ + ecm kdoctools makeWrapper ]; - in '' - wrapQtProgram "$out/bin/ark" \ - --prefix PATH : "${PATH}" - ''; - meta = { - license = with lib.licenses; [ gpl2 lgpl3 ]; - maintainers = [ lib.maintainers.ttuegel ]; - }; + propagatedBuildInputs = [ + khtml ki18n kio karchive kconfig kcrash kdbusaddons kiconthemes kservice + kpty kwidgetsaddons libarchive + ]; + postInstall = + let + PATH = lib.makeBinPath [ + p7zip unrar unzipNLS zip + ]; + in '' + wrapProgram "$out/bin/ark" \ + --prefix PATH : "${PATH}" + ''; + meta = { + license = with lib.licenses; [ gpl2 lgpl3 ]; + maintainers = [ lib.maintainers.ttuegel ]; + }; + }; +in +kdeWrapper unwrapped +{ + targets = [ "bin/ark" ]; } diff --git a/pkgs/desktops/kde-5/applications/dolphin-plugins.nix b/pkgs/desktops/kde-5/applications/dolphin-plugins.nix index 500dd29c100..e9932adc5dc 100644 --- a/pkgs/desktops/kde-5/applications/dolphin-plugins.nix +++ b/pkgs/desktops/kde-5/applications/dolphin-plugins.nix @@ -11,5 +11,7 @@ kdeApp { maintainers = [ lib.maintainers.ttuegel ]; }; nativeBuildInputs = [ ecm kdoctools ]; - propagatedBuildInputs = [ dolphin kdelibs4support ki18n kio kxmlgui ]; + propagatedBuildInputs = [ + dolphin.unwrapped kdelibs4support ki18n kio kxmlgui + ]; } diff --git a/pkgs/desktops/kde-5/applications/dolphin.nix b/pkgs/desktops/kde-5/applications/dolphin.nix index 8145d948391..4e636ae3186 100644 --- a/pkgs/desktops/kde-5/applications/dolphin.nix +++ b/pkgs/desktops/kde-5/applications/dolphin.nix @@ -1,26 +1,31 @@ { - kdeApp, lib, + kdeApp, lib, kdeWrapper, ecm, kdoctools, makeQtWrapper, - baloo, baloo-widgets, kactivities, kbookmarks, kcmutils, kcompletion, kconfig, - kcoreaddons, kdelibs4support, kdbusaddons, kfilemetadata, ki18n, kiconthemes, - kinit, kio, knewstuff, knotifications, kparts, ktexteditor, kwindowsystem, - phonon, solid + baloo, baloo-widgets, dolphin-plugins, kactivities, kbookmarks, kcmutils, + kcompletion, kconfig, kcoreaddons, kdelibs4support, kdbusaddons, + kfilemetadata, ki18n, kiconthemes, kinit, kio, knewstuff, knotifications, + konsole, kparts, ktexteditor, kwindowsystem, phonon, solid }: -kdeApp { - name = "dolphin"; - meta = { - license = with lib.licenses; [ gpl2 fdl12 ]; - maintainers = [ lib.maintainers.ttuegel ]; - }; - nativeBuildInputs = [ ecm kdoctools makeQtWrapper ]; - propagatedBuildInputs = [ - baloo baloo-widgets kactivities kbookmarks kcmutils kcompletion kconfig - kcoreaddons kdelibs4support kdbusaddons kfilemetadata ki18n kiconthemes - kinit kio knewstuff knotifications kparts ktexteditor kwindowsystem phonon - solid - ]; - postInstall = '' - wrapQtProgram "$out/bin/dolphin" - ''; +let + unwrapped = + kdeApp { + name = "dolphin"; + meta = { + license = with lib.licenses; [ gpl2 fdl12 ]; + maintainers = [ lib.maintainers.ttuegel ]; + }; + nativeBuildInputs = [ ecm kdoctools makeQtWrapper ]; + propagatedBuildInputs = [ + baloo baloo-widgets kactivities kbookmarks kcmutils kcompletion kconfig + kcoreaddons kdelibs4support kdbusaddons kfilemetadata ki18n kiconthemes + kinit kio knewstuff knotifications kparts ktexteditor kwindowsystem + phonon solid + ]; + }; +in +kdeWrapper unwrapped +{ + targets = [ "bin/dolphin" ]; + paths = [ dolphin-plugins konsole.unwrapped ]; } diff --git a/pkgs/desktops/kde-5/applications/filelight.nix b/pkgs/desktops/kde-5/applications/filelight.nix index 523c236ba26..acc5808b4a3 100644 --- a/pkgs/desktops/kde-5/applications/filelight.nix +++ b/pkgs/desktops/kde-5/applications/filelight.nix @@ -1,20 +1,21 @@ { - kdeApp, lib, - ecm, kdoctools, makeQtWrapper, + kdeApp, lib, kdeWrapper, + ecm, kdoctools, kio, kparts, kxmlgui, qtscript, solid }: -kdeApp { - name = "filelight"; - meta = { - license = with lib.licenses; [ gpl2 ]; - maintainers = with lib.maintainers; [ fridh vcunat ]; - }; - nativeBuildInputs = [ ecm kdoctools makeQtWrapper ]; - propagatedBuildInputs = [ - kio kparts kxmlgui qtscript solid - ]; - postInstall = '' - wrapQtProgram "$out/bin/filelight" - ''; -} +let + unwrapped = + kdeApp { + name = "filelight"; + meta = { + license = with lib.licenses; [ gpl2 ]; + maintainers = with lib.maintainers; [ fridh vcunat ]; + }; + nativeBuildInputs = [ ecm kdoctools ]; + propagatedBuildInputs = [ + kio kparts kxmlgui qtscript solid + ]; + }; +in +kdeWrapper unwrapped { targets = [ "bin/filelight" ]; } diff --git a/pkgs/desktops/kde-5/applications/gwenview.nix b/pkgs/desktops/kde-5/applications/gwenview.nix index e2b2fa014a9..66df17f2e44 100644 --- a/pkgs/desktops/kde-5/applications/gwenview.nix +++ b/pkgs/desktops/kde-5/applications/gwenview.nix @@ -1,21 +1,23 @@ { - kdeApp, lib, - ecm, kdoctools, makeQtWrapper, + kdeApp, lib, kdeWrapper, + ecm, kdoctools, baloo, exiv2, kactivities, kdelibs4support, kio, lcms2, phonon, qtsvg, qtx11extras }: -kdeApp { - name = "gwenview"; - meta = { - license = with lib.licenses; [ gpl2 fdl12 ]; - maintainers = [ lib.maintainers.ttuegel ]; - }; - nativeBuildInputs = [ ecm kdoctools makeQtWrapper ]; - propagatedBuildInputs = [ - baloo kactivities kdelibs4support kio qtx11extras exiv2 lcms2 phonon qtsvg - ]; - postInstall = '' - wrapQtProgram "$out/bin/gwenview" - ''; -} +let + unwrapped = + kdeApp { + name = "gwenview"; + meta = { + license = with lib.licenses; [ gpl2 fdl12 ]; + maintainers = [ lib.maintainers.ttuegel ]; + }; + nativeBuildInputs = [ ecm kdoctools ]; + propagatedBuildInputs = [ + baloo kactivities kdelibs4support kio qtx11extras exiv2 lcms2 phonon + qtsvg + ]; + }; +in +kdeWrapper unwrapped { targets = [ "bin/gwenview" ]; } diff --git a/pkgs/desktops/kde-5/applications/kate.nix b/pkgs/desktops/kde-5/applications/kate.nix index 4459dea8063..ab0087930c0 100644 --- a/pkgs/desktops/kde-5/applications/kate.nix +++ b/pkgs/desktops/kde-5/applications/kate.nix @@ -1,26 +1,31 @@ { - kdeApp, lib, makeQtWrapper, ecm, kdoctools, - kactivities, kconfig, kcrash, kguiaddons, kiconthemes, ki18n, kinit, - kjobwidgets, kio, kparts, ktexteditor, kwindowsystem, kxmlgui, kdbusaddons, - kwallet, plasma-framework, kitemmodels, knotifications, qtscript, - threadweaver, knewstuff, libgit2 + kdeApp, lib, kdeWrapper, + ecm, kdoctools, + kactivities, kconfig, kcrash, kdbusaddons, kguiaddons, kiconthemes, ki18n, + kinit, kio, kitemmodels, kjobwidgets, knewstuff, knotifications, konsole, + kparts, ktexteditor, kwindowsystem, kwallet, kxmlgui, libgit2, + plasma-framework, qtscript, threadweaver }: -kdeApp { - name = "kate"; - meta = { - license = with lib.licenses; [ gpl3 lgpl3 lgpl2 ]; - maintainers = [ lib.maintainers.ttuegel ]; - }; - nativeBuildInputs = [ ecm kdoctools makeQtWrapper ]; - propagatedBuildInputs = [ - kactivities ki18n kio ktexteditor kwindowsystem plasma-framework qtscript - kconfig kcrash kguiaddons kiconthemes kinit kjobwidgets kparts kxmlgui - kdbusaddons kwallet kitemmodels knotifications threadweaver knewstuff - libgit2 - ]; - postInstall = '' - wrapQtProgram "$out/bin/kate" - wrapQtProgram "$out/bin/kwrite" - ''; +let + unwrapped = + kdeApp { + name = "kate"; + meta = { + license = with lib.licenses; [ gpl3 lgpl3 lgpl2 ]; + maintainers = [ lib.maintainers.ttuegel ]; + }; + nativeBuildInputs = [ ecm kdoctools ]; + propagatedBuildInputs = [ + kactivities ki18n kio ktexteditor kwindowsystem plasma-framework + qtscript kconfig kcrash kguiaddons kiconthemes kinit kjobwidgets kparts + kxmlgui kdbusaddons kwallet kitemmodels knotifications threadweaver + knewstuff libgit2 + ]; + }; +in +kdeWrapper unwrapped +{ + targets = [ "bin/kate" "bin/kwrite" ]; + paths = [ konsole.unwrapped ]; } diff --git a/pkgs/desktops/kde-5/applications/kcalc.nix b/pkgs/desktops/kde-5/applications/kcalc.nix index ca1254e6974..f6d87e3e6e9 100644 --- a/pkgs/desktops/kde-5/applications/kcalc.nix +++ b/pkgs/desktops/kde-5/applications/kcalc.nix @@ -1,20 +1,21 @@ { - kdeApp, lib, makeQtWrapper, kdoctools, - ecm, kconfig, kconfigwidgets, kguiaddons, kinit, - knotifications, gmp + kdeApp, lib, kdeWrapper, + ecm, kdoctools, + kconfig, kconfigwidgets, kguiaddons, kinit, knotifications, gmp }: -kdeApp { - name = "kcalc"; - meta = { - license = with lib.licenses; [ gpl2 ]; - maintainers = [ lib.maintainers.fridh ]; - }; - nativeBuildInputs = [ ecm kdoctools makeQtWrapper ]; - propagatedBuildInputs = [ - gmp kconfig kconfigwidgets kguiaddons kinit knotifications - ]; - postInstall = '' - wrapQtProgram "$out/bin/kcalc" - ''; -} +let + unwrapped = + kdeApp { + name = "kcalc"; + meta = { + license = with lib.licenses; [ gpl2 ]; + maintainers = [ lib.maintainers.fridh ]; + }; + nativeBuildInputs = [ ecm kdoctools ]; + propagatedBuildInputs = [ + gmp kconfig kconfigwidgets kguiaddons kinit knotifications + ]; + }; +in +kdeWrapper unwrapped { targets = [ "bin/kcalc" ]; } diff --git a/pkgs/desktops/kde-5/applications/kcolorchooser.nix b/pkgs/desktops/kde-5/applications/kcolorchooser.nix index d5e0eff21e4..45a72a0bbc1 100644 --- a/pkgs/desktops/kde-5/applications/kcolorchooser.nix +++ b/pkgs/desktops/kde-5/applications/kcolorchooser.nix @@ -1,14 +1,18 @@ { - kdeApp, lib, + kdeApp, lib, kdeWrapper, ecm, ki18n, kwidgetsaddons, kxmlgui }: -kdeApp { - name = "kcolorchooser"; - meta = { - license = with lib.licenses; [ mit ]; - maintainers = [ lib.maintainers.ttuegel ]; - }; - nativeBuildInputs = [ ecm ]; - propagatedBuildInputs = [ ki18n kwidgetsaddons kxmlgui ]; -} +let + unwrapped = + kdeApp { + name = "kcolorchooser"; + meta = { + license = with lib.licenses; [ mit ]; + maintainers = [ lib.maintainers.ttuegel ]; + }; + nativeBuildInputs = [ ecm ]; + propagatedBuildInputs = [ ki18n kwidgetsaddons kxmlgui ]; + }; +in +kdeWrapper unwrapped { targets = [ "bin/kcolorchooser" ]; } diff --git a/pkgs/desktops/kde-5/applications/khelpcenter.nix b/pkgs/desktops/kde-5/applications/khelpcenter.nix index aab0c051e80..934f13425e8 100644 --- a/pkgs/desktops/kde-5/applications/khelpcenter.nix +++ b/pkgs/desktops/kde-5/applications/khelpcenter.nix @@ -1,17 +1,19 @@ { - kdeApp, ecm, kdoctools, makeQtWrapper, + kdeApp, kdeWrapper, + ecm, kdoctools, grantlee, kconfig, kcoreaddons, kdbusaddons, ki18n, kinit, kcmutils, kdelibs4support, khtml, kservice, xapian }: -kdeApp { - name = "khelpcenter"; - nativeBuildInputs = [ ecm kdoctools makeQtWrapper ]; - buildInputs = [ - grantlee kdelibs4support khtml ki18n kconfig kcoreaddons kdbusaddons kinit - kcmutils kservice xapian - ]; - postInstall = '' - wrapQtProgram "$out/bin/khelpcenter" - ''; -} +let + unwrapped = + kdeApp { + name = "khelpcenter"; + nativeBuildInputs = [ ecm kdoctools ]; + buildInputs = [ + grantlee kdelibs4support khtml ki18n kconfig kcoreaddons kdbusaddons + kinit kcmutils kservice xapian + ]; + }; +in +kdeWrapper unwrapped { targets = [ "bin/khelpcenter" ]; } diff --git a/pkgs/desktops/kde-5/applications/kompare.nix b/pkgs/desktops/kde-5/applications/kompare.nix index de2dd9338a2..3b2143af615 100644 --- a/pkgs/desktops/kde-5/applications/kompare.nix +++ b/pkgs/desktops/kde-5/applications/kompare.nix @@ -1,19 +1,18 @@ { - kdeApp, lib, ecm, kdoctools, makeQtWrapper, + kdeApp, lib, kdeWrapper, + ecm, kdoctools, kparts, ktexteditor, kwidgetsaddons, libkomparediff2 }: -kdeApp { - name = "kompare"; - meta = { - license = with lib.licenses; [ gpl2 ]; - }; - - nativeBuildInputs = [ ecm kdoctools makeQtWrapper ]; - - propagatedBuildInputs = [ kparts ktexteditor kwidgetsaddons libkomparediff2 ]; - - postInstall = '' - wrapQtProgram "$out/bin/kompare" - ''; -} +let + unwrapped = + kdeApp { + name = "kompare"; + meta = { license = with lib.licenses; [ gpl2 ]; }; + nativeBuildInputs = [ ecm kdoctools ]; + propagatedBuildInputs = [ + kparts ktexteditor kwidgetsaddons libkomparediff2 + ]; + }; +in +kdeWrapper unwrapped { targets = [ "bin/kompare" ]; } diff --git a/pkgs/desktops/kde-5/applications/konsole.nix b/pkgs/desktops/kde-5/applications/konsole.nix index 1d12c671fa8..bf3a497fefa 100644 --- a/pkgs/desktops/kde-5/applications/konsole.nix +++ b/pkgs/desktops/kde-5/applications/konsole.nix @@ -1,25 +1,27 @@ { - kdeApp, lib, - ecm, kdoctools, makeQtWrapper, + kdeApp, lib, kdeWrapper, + ecm, kdoctools, kbookmarks, kcompletion, kconfig, kconfigwidgets, kcoreaddons, kguiaddons, ki18n, kiconthemes, kinit, kdelibs4support, kio, knotifications, knotifyconfig, kparts, kpty, kservice, ktextwidgets, kwidgetsaddons, kwindowsystem, kxmlgui, qtscript }: -kdeApp { - name = "konsole"; - meta = { - license = with lib.licenses; [ gpl2 lgpl21 fdl12 ]; - maintainers = [ lib.maintainers.ttuegel ]; - }; - nativeBuildInputs = [ ecm kdoctools makeQtWrapper ]; - propagatedBuildInputs = [ - kdelibs4support ki18n kwindowsystem qtscript kbookmarks kcompletion kconfig - kconfigwidgets kcoreaddons kguiaddons kiconthemes kinit kio knotifications - knotifyconfig kparts kpty kservice ktextwidgets kwidgetsaddons kxmlgui - ]; - postInstall = '' - wrapQtProgram "$out/bin/konsole" - ''; -} +let + unwrapped = + kdeApp { + name = "konsole"; + meta = { + license = with lib.licenses; [ gpl2 lgpl21 fdl12 ]; + maintainers = [ lib.maintainers.ttuegel ]; + }; + nativeBuildInputs = [ ecm kdoctools ]; + propagatedBuildInputs = [ + kdelibs4support ki18n kwindowsystem qtscript kbookmarks kcompletion + kconfig kconfigwidgets kcoreaddons kguiaddons kiconthemes kinit kio + knotifications knotifyconfig kparts kpty kservice ktextwidgets + kwidgetsaddons kxmlgui + ]; + }; +in +kdeWrapper unwrapped { targets = [ "bin/konsole" ]; } diff --git a/pkgs/desktops/kde-5/applications/spectacle.nix b/pkgs/desktops/kde-5/applications/spectacle.nix index 2665d840c38..26faea2678a 100644 --- a/pkgs/desktops/kde-5/applications/spectacle.nix +++ b/pkgs/desktops/kde-5/applications/spectacle.nix @@ -1,20 +1,20 @@ { - kdeApp, lib, ecm, kdoctools, makeQtWrapper, + kdeApp, lib, kdeWrapper, + ecm, kdoctools, kconfig, kcoreaddons, kdbusaddons, kdeclarative, ki18n, kio, knotifications, kscreen, kwidgetsaddons, kwindowsystem, kxmlgui, libkipi, xcb-util-cursor }: -kdeApp { - name = "spectacle"; - meta = with lib; { - maintainers = with maintainers; [ ttuegel ]; - }; - nativeBuildInputs = [ ecm kdoctools makeQtWrapper ]; - propagatedBuildInputs = [ - kconfig kcoreaddons kdbusaddons kdeclarative ki18n kio knotifications - kscreen kwidgetsaddons kwindowsystem kxmlgui libkipi xcb-util-cursor - ]; - postInstall = '' - wrapQtProgram "$out/bin/spectacle" - ''; -} +let + unwrapped = + kdeApp { + name = "spectacle"; + meta = with lib; { maintainers = with maintainers; [ ttuegel ]; }; + nativeBuildInputs = [ ecm kdoctools ]; + propagatedBuildInputs = [ + kconfig kcoreaddons kdbusaddons kdeclarative ki18n kio knotifications + kscreen kwidgetsaddons kwindowsystem kxmlgui libkipi xcb-util-cursor + ]; + }; +in +kdeWrapper unwrapped { targets = [ "bin/spectacle" ]; } diff --git a/pkgs/desktops/kde-5/plasma/bluedevil.nix b/pkgs/desktops/kde-5/plasma/bluedevil.nix index 677a6ce961b..1deef241a62 100644 --- a/pkgs/desktops/kde-5/plasma/bluedevil.nix +++ b/pkgs/desktops/kde-5/plasma/bluedevil.nix @@ -1,22 +1,18 @@ -{ plasmaPackage, ecm, bluez-qt, kcoreaddons -, kdbusaddons, kded, ki18n, kiconthemes, kio, knotifications -, kwidgetsaddons, kwindowsystem, makeQtWrapper, plasma-framework -, qtdeclarative, shared_mime_info +{ + plasmaPackage, ecm, shared_mime_info, + bluez-qt, kcoreaddons, kdbusaddons, kded, ki18n, kiconthemes, kio, + knotifications, kwidgetsaddons, kwindowsystem, plasma-framework, qtdeclarative }: plasmaPackage { name = "bluedevil"; - nativeBuildInputs = [ - ecm makeQtWrapper shared_mime_info - ]; + nativeBuildInputs = [ ecm shared_mime_info ]; propagatedBuildInputs = [ bluez-qt ki18n kio kwindowsystem plasma-framework qtdeclarative kcoreaddons kdbusaddons kded kiconthemes knotifications kwidgetsaddons ]; - propagatedUserEnvPkgs = [ bluez-qt ]; + propagatedUserEnvPkgs = [ bluez-qt.out ]; postInstall = '' - wrapQtProgram "$out/bin/bluedevil-wizard" - wrapQtProgram "$out/bin/bluedevil-sendfile" # Fix the location of logic.js for the plasmoid 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 ''; diff --git a/pkgs/desktops/kde-5/plasma/kde-cli-tools.nix b/pkgs/desktops/kde-5/plasma/kde-cli-tools.nix index e6216650c8a..33a7340cb85 100644 --- a/pkgs/desktops/kde-5/plasma/kde-cli-tools.nix +++ b/pkgs/desktops/kde-5/plasma/kde-cli-tools.nix @@ -1,25 +1,14 @@ -{ plasmaPackage, ecm, kcmutils, kconfig -, kdelibs4support, kdesu, kdoctools, ki18n, kiconthemes -, kwindowsystem, makeQtWrapper, qtsvg, qtx11extras +{ + plasmaPackage, ecm, + kcmutils, kconfig, kdelibs4support, kdesu, kdoctools, ki18n, kiconthemes, + kwindowsystem, qtsvg, qtx11extras }: plasmaPackage { name = "kde-cli-tools"; - nativeBuildInputs = [ ecm kdoctools makeQtWrapper ]; + nativeBuildInputs = [ ecm kdoctools ]; propagatedBuildInputs = [ - kdelibs4support ki18n kwindowsystem qtsvg qtx11extras kcmutils kconfig kdesu - kiconthemes + kcmutils kconfig kdesu kdelibs4support ki18n kiconthemes kwindowsystem qtsvg + qtx11extras ]; - postInstall = '' - wrapQtProgram "$out/bin/kmimetypefinder5" - wrapQtProgram "$out/bin/ksvgtopng5" - wrapQtProgram "$out/bin/ktraderclient5" - wrapQtProgram "$out/bin/kioclient5" - wrapQtProgram "$out/bin/kdecp5" - wrapQtProgram "$out/bin/keditfiletype5" - wrapQtProgram "$out/bin/kcmshell5" - wrapQtProgram "$out/bin/kdemv5" - wrapQtProgram "$out/bin/kstart5" - wrapQtProgram "$out/bin/kde-open5" - ''; } diff --git a/pkgs/desktops/kde-5/plasma/kinfocenter.nix b/pkgs/desktops/kde-5/plasma/kinfocenter.nix index 1d2918ae27b..dd9bdbd31bd 100644 --- a/pkgs/desktops/kde-5/plasma/kinfocenter.nix +++ b/pkgs/desktops/kde-5/plasma/kinfocenter.nix @@ -1,23 +1,16 @@ { plasmaPackage, ecm, kdoctools, kcmutils , kcompletion, kconfig, kconfigwidgets, kcoreaddons, kdbusaddons , kdeclarative, kdelibs4support, ki18n, kiconthemes, kio, kpackage -, kservice, kwidgetsaddons, kxmlgui, libraw1394, makeQtWrapper +, kservice, kwidgetsaddons, kxmlgui, libraw1394 , pciutils, solid }: plasmaPackage { name = "kinfocenter"; - nativeBuildInputs = [ - ecm - kdoctools - makeQtWrapper - ]; + nativeBuildInputs = [ ecm kdoctools ]; propagatedBuildInputs = [ kdeclarative kdelibs4support ki18n kio kcmutils kcompletion kconfig kconfigwidgets kcoreaddons kdbusaddons kiconthemes kpackage kservice kwidgetsaddons kxmlgui libraw1394 pciutils solid ]; - postInstall = '' - wrapQtProgram "$out/bin/kinfocenter" - ''; } diff --git a/pkgs/desktops/kde-5/plasma/kmenuedit.nix b/pkgs/desktops/kde-5/plasma/kmenuedit.nix index 377f39076d9..3adb77a0051 100644 --- a/pkgs/desktops/kde-5/plasma/kmenuedit.nix +++ b/pkgs/desktops/kde-5/plasma/kmenuedit.nix @@ -1,18 +1,11 @@ { plasmaPackage, ecm, kdoctools, ki18n, kxmlgui -, kdbusaddons, kiconthemes, kio, sonnet, kdelibs4support, makeQtWrapper +, kdbusaddons, kiconthemes, kio, sonnet, kdelibs4support }: plasmaPackage { name = "kmenuedit"; - nativeBuildInputs = [ - ecm - kdoctools - makeQtWrapper - ]; + nativeBuildInputs = [ ecm kdoctools ]; propagatedBuildInputs = [ kdelibs4support ki18n kio sonnet kxmlgui kdbusaddons kiconthemes ]; - postInstall = '' - wrapQtProgram "$out/bin/kmenuedit" - ''; } diff --git a/pkgs/desktops/kde-5/plasma/kscreen.nix b/pkgs/desktops/kde-5/plasma/kscreen.nix index 28e0f7af33d..ecbd88c2146 100644 --- a/pkgs/desktops/kde-5/plasma/kscreen.nix +++ b/pkgs/desktops/kde-5/plasma/kscreen.nix @@ -1,19 +1,13 @@ { plasmaPackage, ecm, kconfig, kconfigwidgets , kdbusaddons, kglobalaccel, ki18n, kwidgetsaddons, kxmlgui -, libkscreen, makeQtWrapper, qtdeclarative, qtgraphicaleffects +, libkscreen, qtdeclarative, qtgraphicaleffects }: plasmaPackage { name = "kscreen"; - nativeBuildInputs = [ - ecm - makeQtWrapper - ]; + nativeBuildInputs = [ ecm ]; propagatedBuildInputs = [ kglobalaccel ki18n libkscreen qtdeclarative qtgraphicaleffects kconfig kconfigwidgets kdbusaddons kwidgetsaddons kxmlgui ]; - postInstall = '' - wrapQtProgram "$out/bin/kscreen-console" - ''; } diff --git a/pkgs/desktops/kde-5/plasma/kscreenlocker.nix b/pkgs/desktops/kde-5/plasma/kscreenlocker.nix index 9a28a800a64..8fb5d9e708b 100644 --- a/pkgs/desktops/kde-5/plasma/kscreenlocker.nix +++ b/pkgs/desktops/kde-5/plasma/kscreenlocker.nix @@ -5,10 +5,7 @@ plasmaPackage { name = "kscreenlocker"; - nativeBuildInputs = [ - ecm - kdoctools - ]; + nativeBuildInputs = [ ecm kdoctools ]; propagatedBuildInputs = [ kdeclarative plasma-framework qtdeclarative kcmutils kcrash kdelibs4support kglobalaccel kidletime kwayland libXcursor pam wayland diff --git a/pkgs/desktops/kde-5/plasma/ksshaskpass.nix b/pkgs/desktops/kde-5/plasma/ksshaskpass.nix index 0adfb6de238..80b529a6668 100644 --- a/pkgs/desktops/kde-5/plasma/ksshaskpass.nix +++ b/pkgs/desktops/kde-5/plasma/ksshaskpass.nix @@ -1,12 +1,9 @@ { plasmaPackage, ecm, kdoctools, kcoreaddons -, ki18n, kwallet, kwidgetsaddons, makeQtWrapper +, ki18n, kwallet, kwidgetsaddons }: plasmaPackage { name = "ksshaskpass"; - nativeBuildInputs = [ ecm kdoctools makeQtWrapper ]; + nativeBuildInputs = [ ecm kdoctools ]; propagatedBuildInputs = [ kcoreaddons ki18n kwallet kwidgetsaddons ]; - postInstall = '' - wrapQtProgram "$out/bin/ksshaskpass" - ''; } diff --git a/pkgs/desktops/kde-5/plasma/ksysguard.nix b/pkgs/desktops/kde-5/plasma/ksysguard.nix index 44335c5fa74..b0e94c6a595 100644 --- a/pkgs/desktops/kde-5/plasma/ksysguard.nix +++ b/pkgs/desktops/kde-5/plasma/ksysguard.nix @@ -1,20 +1,13 @@ { plasmaPackage, ecm, kdoctools, kconfig , kcoreaddons, kdelibs4support, ki18n, kitemviews, knewstuff -, kiconthemes, libksysguard, makeQtWrapper +, kiconthemes, libksysguard }: plasmaPackage { name = "ksysguard"; - nativeBuildInputs = [ - ecm - kdoctools - makeQtWrapper - ]; + nativeBuildInputs = [ ecm kdoctools ]; propagatedBuildInputs = [ kconfig kcoreaddons kitemviews knewstuff kiconthemes libksysguard kdelibs4support ki18n ]; - postInstall = '' - wrapQtProgram "$out/bin/ksysguardd" - ''; } diff --git a/pkgs/desktops/kde-5/plasma/kwin/default.nix b/pkgs/desktops/kde-5/plasma/kwin/default.nix index 382ed3ef939..d121ba84dd0 100644 --- a/pkgs/desktops/kde-5/plasma/kwin/default.nix +++ b/pkgs/desktops/kde-5/plasma/kwin/default.nix @@ -13,7 +13,6 @@ plasmaPackage { nativeBuildInputs = [ ecm kdoctools - makeQtWrapper ]; propagatedBuildInputs = [ kactivities kdeclarative kglobalaccel ki18n kio kscreenlocker kwindowsystem @@ -25,8 +24,4 @@ plasmaPackage { ]; patches = [ ./0001-qdiriterator-follow-symlinks.patch ]; cmakeFlags = [ "-DCMAKE_SKIP_BUILD_RPATH=OFF" ]; - postInstall = '' - wrapQtProgram "$out/bin/kwin_x11" - wrapQtProgram "$out/bin/kwin_wayland" - ''; } diff --git a/pkgs/desktops/kde-5/plasma/plasma-desktop/default.nix b/pkgs/desktops/kde-5/plasma/plasma-desktop/default.nix index 6b54dcd20d4..dc4e81ef4ea 100644 --- a/pkgs/desktops/kde-5/plasma/plasma-desktop/default.nix +++ b/pkgs/desktops/kde-5/plasma/plasma-desktop/default.nix @@ -6,17 +6,13 @@ , plasma-framework, plasma-workspace, qtdeclarative, qtx11extras , qtsvg, libXcursor, libXft, libxkbfile, xf86inputevdev , xf86inputsynaptics, xinput, xkeyboard_config, xorgserver -, libcanberra_kde, libpulseaudio, makeQtWrapper, utillinux +, libcanberra_kde, libpulseaudio, utillinux , qtquickcontrols, ksysguard }: plasmaPackage rec { name = "plasma-desktop"; - nativeBuildInputs = [ - ecm - kdoctools - makeQtWrapper - ]; + nativeBuildInputs = [ ecm kdoctools ]; buildInputs = [ attica boost fontconfig kcmutils kdbusaddons kded kitemmodels knewstuff knotifications knotifyconfig kwallet libcanberra_kde libXcursor @@ -42,14 +38,4 @@ plasmaPackage rec { "-DEvdev_INCLUDE_DIRS=${xf86inputevdev.dev}/include/xorg" "-DSynaptics_INCLUDE_DIRS=${xf86inputsynaptics}/include/xorg" ]; - postInstall = '' - wrapQtProgram "$out/bin/kaccess" - wrapQtProgram "$out/bin/solid-action-desktop-gen" - wrapQtProgram "$out/bin/knetattach" - wrapQtProgram "$out/bin/krdb" - wrapQtProgram "$out/bin/kapplymousetheme" - wrapQtProgram "$out/bin/kfontinst" - wrapQtProgram "$out/bin/kcm-touchpad-list-devices" - wrapQtProgram "$out/bin/kfontview" - ''; } diff --git a/pkgs/desktops/kde-5/plasma/plasma-nm/default.nix b/pkgs/desktops/kde-5/plasma/plasma-nm/default.nix index 0deef373f4f..b6d18dbf91d 100644 --- a/pkgs/desktops/kde-5/plasma/plasma-nm/default.nix +++ b/pkgs/desktops/kde-5/plasma/plasma-nm/default.nix @@ -2,7 +2,7 @@ , kcompletion, kconfigwidgets, kcoreaddons, kdbusaddons, kdeclarative , kdelibs4support, ki18n, kiconthemes, kinit, kio, kitemviews , knotifications, kservice, kwallet, kwidgetsaddons, kwindowsystem -, kxmlgui, makeQtWrapper, mobile_broadband_provider_info +, kxmlgui, mobile_broadband_provider_info , modemmanager-qt, networkmanager-qt, openconnect, plasma-framework , qca-qt5, qtdeclarative, solid }: @@ -15,11 +15,7 @@ plasmaPackage { inherit mobile_broadband_provider_info; }) ]; - nativeBuildInputs = [ - ecm - kdoctools - makeQtWrapper - ]; + nativeBuildInputs = [ ecm kdoctools ]; propagatedBuildInputs = [ kdeclarative kdelibs4support ki18n kio kwindowsystem plasma-framework qtdeclarative kcompletion kconfigwidgets kcoreaddons kdbusaddons kiconthemes @@ -27,7 +23,4 @@ plasmaPackage { mobile_broadband_provider_info modemmanager-qt networkmanager-qt openconnect qca-qt5 solid ]; - postInstall = '' - wrapQtProgram "$out/bin/kde5-nm-connection-editor" - ''; } diff --git a/pkgs/desktops/kde-5/plasma/plasma-workspace-wallpapers.nix b/pkgs/desktops/kde-5/plasma/plasma-workspace-wallpapers.nix index da2a5b59d2d..6ffdb17cbea 100644 --- a/pkgs/desktops/kde-5/plasma/plasma-workspace-wallpapers.nix +++ b/pkgs/desktops/kde-5/plasma/plasma-workspace-wallpapers.nix @@ -4,6 +4,7 @@ plasmaPackage { name = "plasma-workspace-wallpapers"; + outputs = [ "out" ]; nativeBuildInputs = [ ecm ]; diff --git a/pkgs/desktops/kde-5/plasma/plasma-workspace/default.nix b/pkgs/desktops/kde-5/plasma/plasma-workspace/default.nix index 39788a4d7c4..09bba4a709f 100644 --- a/pkgs/desktops/kde-5/plasma/plasma-workspace/default.nix +++ b/pkgs/desktops/kde-5/plasma/plasma-workspace/default.nix @@ -14,9 +14,7 @@ plasmaPackage { name = "plasma-workspace"; - nativeBuildInputs = [ - ecm kdoctools - ]; + nativeBuildInputs = [ ecm kdoctools ]; buildInputs = [ baloo kactivities kcmutils kconfig kcrash kdbusaddons kdeclarative kdelibs4support kdesu kglobalaccel kidletime kjsembed knewstuff diff --git a/pkgs/desktops/kde-5/plasma/polkit-kde-agent.nix b/pkgs/desktops/kde-5/plasma/polkit-kde-agent.nix index 1016912de29..002c2bb10ff 100644 --- a/pkgs/desktops/kde-5/plasma/polkit-kde-agent.nix +++ b/pkgs/desktops/kde-5/plasma/polkit-kde-agent.nix @@ -1,22 +1,12 @@ -{ plasmaPackage -, ecm -, ki18n -, kwindowsystem -, kdbusaddons -, kwidgetsaddons -, kcoreaddons -, kcrash -, kconfig -, kiconthemes -, knotifications -, polkit-qt +{ + plasmaPackage, ecm, + kcoreaddons, kconfig, kcrash, kdbusaddons, ki18n, kiconthemes, knotifications, + kwidgetsaddons, kwindowsystem, polkit-qt }: plasmaPackage { name = "polkit-kde-agent"; - nativeBuildInputs = [ - ecm - ]; + nativeBuildInputs = [ ecm ]; propagatedBuildInputs = [ kdbusaddons kwidgetsaddons kcoreaddons kcrash kconfig ki18n kiconthemes knotifications kwindowsystem polkit-qt diff --git a/pkgs/desktops/kde-5/plasma/powerdevil.nix b/pkgs/desktops/kde-5/plasma/powerdevil.nix index ba08fa86ef0..c0c18a6eae6 100644 --- a/pkgs/desktops/kde-5/plasma/powerdevil.nix +++ b/pkgs/desktops/kde-5/plasma/powerdevil.nix @@ -6,10 +6,7 @@ plasmaPackage { name = "powerdevil"; - nativeBuildInputs = [ - ecm - kdoctools - ]; + nativeBuildInputs = [ ecm kdoctools ]; propagatedBuildInputs = [ kconfig kdbusaddons knotifyconfig solid udev bluez-qt kactivities kauth kdelibs4support kglobalaccel ki18n kio kidletime kwayland libkscreen diff --git a/pkgs/desktops/kde-5/plasma/systemsettings.nix b/pkgs/desktops/kde-5/plasma/systemsettings.nix index 1e1c396a44d..407d0e91626 100644 --- a/pkgs/desktops/kde-5/plasma/systemsettings.nix +++ b/pkgs/desktops/kde-5/plasma/systemsettings.nix @@ -11,7 +11,4 @@ plasmaPackage { kcmutils kconfig kdbusaddons khtml ki18n kiconthemes kio kitemviews kservice kwindowsystem kxmlgui qtquickcontrols ]; - postInstall = '' - wrapQtProgram "$out/bin/systemsettings5" - ''; } diff --git a/pkgs/development/compilers/ponyc/default.nix b/pkgs/development/compilers/ponyc/default.nix index ef355e64e1e..30b96822cab 100644 --- a/pkgs/development/compilers/ponyc/default.nix +++ b/pkgs/development/compilers/ponyc/default.nix @@ -1,29 +1,35 @@ -{stdenv, glibc, fetchFromGitHub, llvm, makeWrapper, openssl, pcre2 }: +{stdenv, glibc, fetchFromGitHub, llvm, makeWrapper, openssl, pcre2, coreutils }: stdenv.mkDerivation { - name = "ponyc-0.2.1"; + name = "ponyc-2016-07-26"; src = fetchFromGitHub { - owner = "CausalityLtd"; + owner = "ponylang"; repo = "ponyc"; - rev = "0.2.1"; - sha256 = "1wmvqrj9v2kjqha9fcs10vfnhdxhc3rf67wpn36ldhs1hq0k25jy"; + rev = "4eec8a9b0d9936b2a0249bd17fd7a2caac6aaa9c"; + sha256 = "184x2jivp7826i60rf0dpx0a9dg5rsj56dv0cll28as4nyqfmna2"; }; buildInputs = [ llvm makeWrapper ]; - makeFlags = [ "config=release" ]; - doCheck = true; - checkTarget = "test"; - - patchPhase = '' - sed 's|/usr/lib/x86_64-linux-gnu/|${glibc.out}/lib/|g' -i src/libponyc/codegen/genexe.c - sed 's|/lib/x86_64-linux-gnu/|${stdenv.cc.cc.lib}/lib/|g' -i src/libponyc/codegen/genexe.c - ''; + # Disable problematic networking tests + patches = [ ./disable-tests.patch ]; preBuild = '' - export LLVM_CONFIG=${llvm}/bin/llvm-config - ''; + # Fix tests + substituteInPlace packages/process/_test.pony \ + --replace "/bin/cat" "${coreutils}/bin/cat" + + export LLVM_CONFIG=${llvm}/bin/llvm-config + ''; + + makeFlags = [ "config=release" ]; + + enableParallelBuilding = true; + + doCheck = true; + + checkTarget = "test"; preCheck = '' export LIBRARY_PATH="$out/lib:${openssl.out}/lib:${pcre2}/lib" diff --git a/pkgs/development/compilers/ponyc/disable-tests.patch b/pkgs/development/compilers/ponyc/disable-tests.patch new file mode 100644 index 00000000000..9335ebd6eea --- /dev/null +++ b/pkgs/development/compilers/ponyc/disable-tests.patch @@ -0,0 +1,16 @@ +diff --git a/packages/net/_test.pony b/packages/net/_test.pony +index d6c3e56..dc37dd9 100644 +--- a/packages/net/_test.pony ++++ b/packages/net/_test.pony +@@ -7,11 +7,6 @@ actor Main is TestList + fun tag tests(test: PonyTest) => + test(_TestReadBuffer) + test(_TestWriteBuffer) +- test(_TestBroadcast) +- ifdef not windows then +- test(_TestTCPExpect) +- test(_TestTCPWritev) +- end + + class iso _TestReadBuffer is UnitTest + """ diff --git a/pkgs/development/interpreters/python/2.6/default.nix b/pkgs/development/interpreters/python/cpython/2.6/default.nix similarity index 97% rename from pkgs/development/interpreters/python/2.6/default.nix rename to pkgs/development/interpreters/python/cpython/2.6/default.nix index 6641eb24b24..e5c33cd7b2b 100644 --- a/pkgs/development/interpreters/python/2.6/default.nix +++ b/pkgs/development/interpreters/python/cpython/2.6/default.nix @@ -99,8 +99,8 @@ let inherit zlibSupport; isPy2 = true; isPy26 = true; - buildEnv = callPackage ../wrapper.nix { python = self; }; - withPackages = import ../with-packages.nix { inherit buildEnv; pythonPackages = python26Packages; }; + buildEnv = callPackage ../../wrapper.nix { python = self; }; + withPackages = import ../../with-packages.nix { inherit buildEnv; pythonPackages = python26Packages; }; libPrefix = "python${majorVersion}"; executable = libPrefix; sitePackages = "lib/${libPrefix}/site-packages"; diff --git a/pkgs/development/interpreters/python/2.6/nix-store-mtime.patch b/pkgs/development/interpreters/python/cpython/2.6/nix-store-mtime.patch similarity index 100% rename from pkgs/development/interpreters/python/2.6/nix-store-mtime.patch rename to pkgs/development/interpreters/python/cpython/2.6/nix-store-mtime.patch diff --git a/pkgs/development/interpreters/python/2.6/python2.6-fix-parallel-make.patch b/pkgs/development/interpreters/python/cpython/2.6/python2.6-fix-parallel-make.patch similarity index 100% rename from pkgs/development/interpreters/python/2.6/python2.6-fix-parallel-make.patch rename to pkgs/development/interpreters/python/cpython/2.6/python2.6-fix-parallel-make.patch diff --git a/pkgs/development/interpreters/python/2.6/search-path.patch b/pkgs/development/interpreters/python/cpython/2.6/search-path.patch similarity index 100% rename from pkgs/development/interpreters/python/2.6/search-path.patch rename to pkgs/development/interpreters/python/cpython/2.6/search-path.patch diff --git a/pkgs/development/interpreters/python/2.6/setup-hook.sh b/pkgs/development/interpreters/python/cpython/2.6/setup-hook.sh similarity index 100% rename from pkgs/development/interpreters/python/2.6/setup-hook.sh rename to pkgs/development/interpreters/python/cpython/2.6/setup-hook.sh diff --git a/pkgs/development/interpreters/python/2.7/2.5.2-ctypes-util-find_library.patch b/pkgs/development/interpreters/python/cpython/2.7/2.5.2-ctypes-util-find_library.patch similarity index 100% rename from pkgs/development/interpreters/python/2.7/2.5.2-ctypes-util-find_library.patch rename to pkgs/development/interpreters/python/cpython/2.7/2.5.2-ctypes-util-find_library.patch diff --git a/pkgs/development/interpreters/python/2.7/2.5.2-tkinter-x11.patch b/pkgs/development/interpreters/python/cpython/2.7/2.5.2-tkinter-x11.patch similarity index 100% rename from pkgs/development/interpreters/python/2.7/2.5.2-tkinter-x11.patch rename to pkgs/development/interpreters/python/cpython/2.7/2.5.2-tkinter-x11.patch diff --git a/pkgs/development/interpreters/python/2.7/2.6.2-ssl-threads.patch b/pkgs/development/interpreters/python/cpython/2.7/2.6.2-ssl-threads.patch similarity index 100% rename from pkgs/development/interpreters/python/2.7/2.6.2-ssl-threads.patch rename to pkgs/development/interpreters/python/cpython/2.7/2.6.2-ssl-threads.patch diff --git a/pkgs/development/interpreters/python/2.7/2.6.5-FD_SETSIZE.patch b/pkgs/development/interpreters/python/cpython/2.7/2.6.5-FD_SETSIZE.patch similarity index 100% rename from pkgs/development/interpreters/python/2.7/2.6.5-FD_SETSIZE.patch rename to pkgs/development/interpreters/python/cpython/2.7/2.6.5-FD_SETSIZE.patch diff --git a/pkgs/development/interpreters/python/2.7/2.6.5-export-PySignal_SetWakeupFd.patch b/pkgs/development/interpreters/python/cpython/2.7/2.6.5-export-PySignal_SetWakeupFd.patch similarity index 100% rename from pkgs/development/interpreters/python/2.7/2.6.5-export-PySignal_SetWakeupFd.patch rename to pkgs/development/interpreters/python/cpython/2.7/2.6.5-export-PySignal_SetWakeupFd.patch diff --git a/pkgs/development/interpreters/python/2.7/2.6.5-ncurses-abi6.patch b/pkgs/development/interpreters/python/cpython/2.7/2.6.5-ncurses-abi6.patch similarity index 100% rename from pkgs/development/interpreters/python/2.7/2.6.5-ncurses-abi6.patch rename to pkgs/development/interpreters/python/cpython/2.7/2.6.5-ncurses-abi6.patch diff --git a/pkgs/development/interpreters/python/2.7/2.7.3-dbm.patch b/pkgs/development/interpreters/python/cpython/2.7/2.7.3-dbm.patch similarity index 100% rename from pkgs/development/interpreters/python/2.7/2.7.3-dbm.patch rename to pkgs/development/interpreters/python/cpython/2.7/2.7.3-dbm.patch diff --git a/pkgs/development/interpreters/python/2.7/2.7.3-dylib.patch b/pkgs/development/interpreters/python/cpython/2.7/2.7.3-dylib.patch similarity index 100% rename from pkgs/development/interpreters/python/2.7/2.7.3-dylib.patch rename to pkgs/development/interpreters/python/cpython/2.7/2.7.3-dylib.patch diff --git a/pkgs/development/interpreters/python/2.7/2.7.3-getpath-exe-extension.patch b/pkgs/development/interpreters/python/cpython/2.7/2.7.3-getpath-exe-extension.patch similarity index 100% rename from pkgs/development/interpreters/python/2.7/2.7.3-getpath-exe-extension.patch rename to pkgs/development/interpreters/python/cpython/2.7/2.7.3-getpath-exe-extension.patch diff --git a/pkgs/development/interpreters/python/2.7/2.7.3-no-libm.patch b/pkgs/development/interpreters/python/cpython/2.7/2.7.3-no-libm.patch similarity index 100% rename from pkgs/development/interpreters/python/2.7/2.7.3-no-libm.patch rename to pkgs/development/interpreters/python/cpython/2.7/2.7.3-no-libm.patch diff --git a/pkgs/development/interpreters/python/2.7/default.nix b/pkgs/development/interpreters/python/cpython/2.7/default.nix similarity index 98% rename from pkgs/development/interpreters/python/2.7/default.nix rename to pkgs/development/interpreters/python/cpython/2.7/default.nix index aca88f504a0..96c098c82dc 100644 --- a/pkgs/development/interpreters/python/2.7/default.nix +++ b/pkgs/development/interpreters/python/cpython/2.7/default.nix @@ -160,8 +160,8 @@ let inherit zlibSupport; isPy2 = true; isPy27 = true; - buildEnv = callPackage ../wrapper.nix { python = self; }; - withPackages = import ../with-packages.nix { inherit buildEnv; pythonPackages = python27Packages; }; + buildEnv = callPackage ../../wrapper.nix { python = self; }; + withPackages = import ../../with-packages.nix { inherit buildEnv; pythonPackages = python27Packages; }; libPrefix = "python${majorVersion}"; executable = libPrefix; sitePackages = "lib/${libPrefix}/site-packages"; diff --git a/pkgs/development/interpreters/python/2.7/deterministic-build.patch b/pkgs/development/interpreters/python/cpython/2.7/deterministic-build.patch similarity index 100% rename from pkgs/development/interpreters/python/2.7/deterministic-build.patch rename to pkgs/development/interpreters/python/cpython/2.7/deterministic-build.patch diff --git a/pkgs/development/interpreters/python/2.7/nix-store-mtime.patch b/pkgs/development/interpreters/python/cpython/2.7/nix-store-mtime.patch similarity index 100% rename from pkgs/development/interpreters/python/2.7/nix-store-mtime.patch rename to pkgs/development/interpreters/python/cpython/2.7/nix-store-mtime.patch diff --git a/pkgs/development/interpreters/python/2.7/no-ldconfig.patch b/pkgs/development/interpreters/python/cpython/2.7/no-ldconfig.patch similarity index 100% rename from pkgs/development/interpreters/python/2.7/no-ldconfig.patch rename to pkgs/development/interpreters/python/cpython/2.7/no-ldconfig.patch diff --git a/pkgs/development/interpreters/python/2.7/properly-detect-curses.patch b/pkgs/development/interpreters/python/cpython/2.7/properly-detect-curses.patch similarity index 100% rename from pkgs/development/interpreters/python/2.7/properly-detect-curses.patch rename to pkgs/development/interpreters/python/cpython/2.7/properly-detect-curses.patch diff --git a/pkgs/development/interpreters/python/2.7/search-path.patch b/pkgs/development/interpreters/python/cpython/2.7/search-path.patch similarity index 100% rename from pkgs/development/interpreters/python/2.7/search-path.patch rename to pkgs/development/interpreters/python/cpython/2.7/search-path.patch diff --git a/pkgs/development/interpreters/python/2.7/setup-hook.sh b/pkgs/development/interpreters/python/cpython/2.7/setup-hook.sh similarity index 100% rename from pkgs/development/interpreters/python/2.7/setup-hook.sh rename to pkgs/development/interpreters/python/cpython/2.7/setup-hook.sh diff --git a/pkgs/development/interpreters/python/3.3/default.nix b/pkgs/development/interpreters/python/cpython/3.3/default.nix similarity index 95% rename from pkgs/development/interpreters/python/3.3/default.nix rename to pkgs/development/interpreters/python/cpython/3.3/default.nix index 8a36e03c784..1d2312fdc15 100644 --- a/pkgs/development/interpreters/python/3.3/default.nix +++ b/pkgs/development/interpreters/python/cpython/3.3/default.nix @@ -88,8 +88,8 @@ stdenv.mkDerivation { tkSupport = (tk != null) && (tcl != null) && (libX11 != null) && (xproto != null); libPrefix = "python${majorVersion}"; executable = "python3.3m"; - buildEnv = callPackage ../wrapper.nix { python = self; }; - withPackages = import ../with-packages.nix { inherit buildEnv; pythonPackages = python33Packages; }; + buildEnv = callPackage ../../wrapper.nix { python = self; }; + withPackages = import ../../with-packages.nix { inherit buildEnv; pythonPackages = python33Packages; }; isPy3 = true; isPy33 = true; is_py3k = true; # deprecated diff --git a/pkgs/development/interpreters/python/3.3/setup-hook.sh b/pkgs/development/interpreters/python/cpython/3.3/setup-hook.sh similarity index 100% rename from pkgs/development/interpreters/python/3.3/setup-hook.sh rename to pkgs/development/interpreters/python/cpython/3.3/setup-hook.sh diff --git a/pkgs/development/interpreters/python/3.4/default.nix b/pkgs/development/interpreters/python/cpython/3.4/default.nix similarity index 95% rename from pkgs/development/interpreters/python/3.4/default.nix rename to pkgs/development/interpreters/python/cpython/3.4/default.nix index 7ea6adc4370..64c61e504b7 100644 --- a/pkgs/development/interpreters/python/3.4/default.nix +++ b/pkgs/development/interpreters/python/cpython/3.4/default.nix @@ -111,8 +111,8 @@ stdenv.mkDerivation { tkSupport = (tk != null) && (tcl != null) && (libX11 != null) && (xproto != null); libPrefix = "python${majorVersion}"; executable = "python3.4m"; - buildEnv = callPackage ../wrapper.nix { python = self; }; - withPackages = import ../with-packages.nix { inherit buildEnv; pythonPackages = python34Packages; }; + buildEnv = callPackage ../../wrapper.nix { python = self; }; + withPackages = import ../../with-packages.nix { inherit buildEnv; pythonPackages = python34Packages; }; isPy3 = true; isPy34 = true; is_py3k = true; # deprecated diff --git a/pkgs/development/interpreters/python/3.4/setup-hook.sh b/pkgs/development/interpreters/python/cpython/3.4/setup-hook.sh similarity index 100% rename from pkgs/development/interpreters/python/3.4/setup-hook.sh rename to pkgs/development/interpreters/python/cpython/3.4/setup-hook.sh diff --git a/pkgs/development/interpreters/python/3.5/default.nix b/pkgs/development/interpreters/python/cpython/3.5/default.nix similarity index 95% rename from pkgs/development/interpreters/python/3.5/default.nix rename to pkgs/development/interpreters/python/cpython/3.5/default.nix index 21716c87386..c36d7c2a6eb 100644 --- a/pkgs/development/interpreters/python/3.5/default.nix +++ b/pkgs/development/interpreters/python/cpython/3.5/default.nix @@ -111,8 +111,8 @@ stdenv.mkDerivation { tkSupport = (tk != null) && (tcl != null) && (libX11 != null) && (xproto != null); libPrefix = "python${majorVersion}"; executable = "python${majorVersion}m"; - buildEnv = callPackage ../wrapper.nix { python = self; }; - withPackages = import ../with-packages.nix { inherit buildEnv; pythonPackages = python35Packages; }; + buildEnv = callPackage ../../wrapper.nix { python = self; }; + withPackages = import ../../with-packages.nix { inherit buildEnv; pythonPackages = python35Packages; }; isPy3 = true; isPy35 = true; is_py3k = true; # deprecated diff --git a/pkgs/development/interpreters/python/3.5/setup-hook.sh b/pkgs/development/interpreters/python/cpython/3.5/setup-hook.sh similarity index 100% rename from pkgs/development/interpreters/python/3.5/setup-hook.sh rename to pkgs/development/interpreters/python/cpython/3.5/setup-hook.sh diff --git a/pkgs/development/interpreters/python/3.6/default.nix b/pkgs/development/interpreters/python/cpython/3.6/default.nix similarity index 95% rename from pkgs/development/interpreters/python/3.6/default.nix rename to pkgs/development/interpreters/python/cpython/3.6/default.nix index 9515e1587d7..a337b28859b 100644 --- a/pkgs/development/interpreters/python/3.6/default.nix +++ b/pkgs/development/interpreters/python/cpython/3.6/default.nix @@ -115,8 +115,8 @@ stdenv.mkDerivation { tkSupport = (tk != null) && (tcl != null) && (libX11 != null) && (xproto != null); libPrefix = "python${majorVersion}"; executable = "python${majorVersion}m"; - buildEnv = callPackage ../wrapper.nix { python = self; }; - withPackages = import ../with-packages.nix { inherit buildEnv; pythonPackages = python36Packages; }; + buildEnv = callPackage ../../wrapper.nix { python = self; }; + withPackages = import ../../with-packages.nix { inherit buildEnv; pythonPackages = python36Packages; }; isPy3 = true; isPy35 = true; is_py3k = true; # deprecated diff --git a/pkgs/development/interpreters/python/3.6/setup-hook.sh b/pkgs/development/interpreters/python/cpython/3.6/setup-hook.sh similarity index 100% rename from pkgs/development/interpreters/python/3.6/setup-hook.sh rename to pkgs/development/interpreters/python/cpython/3.6/setup-hook.sh diff --git a/pkgs/development/interpreters/python/docs/2.6-html.nix b/pkgs/development/interpreters/python/cpython/docs/2.6-html.nix similarity index 100% rename from pkgs/development/interpreters/python/docs/2.6-html.nix rename to pkgs/development/interpreters/python/cpython/docs/2.6-html.nix diff --git a/pkgs/development/interpreters/python/docs/2.6-pdf-a4.nix b/pkgs/development/interpreters/python/cpython/docs/2.6-pdf-a4.nix similarity index 100% rename from pkgs/development/interpreters/python/docs/2.6-pdf-a4.nix rename to pkgs/development/interpreters/python/cpython/docs/2.6-pdf-a4.nix diff --git a/pkgs/development/interpreters/python/docs/2.6-pdf-letter.nix b/pkgs/development/interpreters/python/cpython/docs/2.6-pdf-letter.nix similarity index 100% rename from pkgs/development/interpreters/python/docs/2.6-pdf-letter.nix rename to pkgs/development/interpreters/python/cpython/docs/2.6-pdf-letter.nix diff --git a/pkgs/development/interpreters/python/docs/2.6-text.nix b/pkgs/development/interpreters/python/cpython/docs/2.6-text.nix similarity index 100% rename from pkgs/development/interpreters/python/docs/2.6-text.nix rename to pkgs/development/interpreters/python/cpython/docs/2.6-text.nix diff --git a/pkgs/development/interpreters/python/docs/2.7-html.nix b/pkgs/development/interpreters/python/cpython/docs/2.7-html.nix similarity index 100% rename from pkgs/development/interpreters/python/docs/2.7-html.nix rename to pkgs/development/interpreters/python/cpython/docs/2.7-html.nix diff --git a/pkgs/development/interpreters/python/docs/2.7-pdf-a4.nix b/pkgs/development/interpreters/python/cpython/docs/2.7-pdf-a4.nix similarity index 100% rename from pkgs/development/interpreters/python/docs/2.7-pdf-a4.nix rename to pkgs/development/interpreters/python/cpython/docs/2.7-pdf-a4.nix diff --git a/pkgs/development/interpreters/python/docs/2.7-pdf-letter.nix b/pkgs/development/interpreters/python/cpython/docs/2.7-pdf-letter.nix similarity index 100% rename from pkgs/development/interpreters/python/docs/2.7-pdf-letter.nix rename to pkgs/development/interpreters/python/cpython/docs/2.7-pdf-letter.nix diff --git a/pkgs/development/interpreters/python/docs/2.7-text.nix b/pkgs/development/interpreters/python/cpython/docs/2.7-text.nix similarity index 100% rename from pkgs/development/interpreters/python/docs/2.7-text.nix rename to pkgs/development/interpreters/python/cpython/docs/2.7-text.nix diff --git a/pkgs/development/interpreters/python/docs/3.3-html.nix b/pkgs/development/interpreters/python/cpython/docs/3.3-html.nix similarity index 100% rename from pkgs/development/interpreters/python/docs/3.3-html.nix rename to pkgs/development/interpreters/python/cpython/docs/3.3-html.nix diff --git a/pkgs/development/interpreters/python/docs/3.3-pdf-a4.nix b/pkgs/development/interpreters/python/cpython/docs/3.3-pdf-a4.nix similarity index 100% rename from pkgs/development/interpreters/python/docs/3.3-pdf-a4.nix rename to pkgs/development/interpreters/python/cpython/docs/3.3-pdf-a4.nix diff --git a/pkgs/development/interpreters/python/docs/3.3-pdf-letter.nix b/pkgs/development/interpreters/python/cpython/docs/3.3-pdf-letter.nix similarity index 100% rename from pkgs/development/interpreters/python/docs/3.3-pdf-letter.nix rename to pkgs/development/interpreters/python/cpython/docs/3.3-pdf-letter.nix diff --git a/pkgs/development/interpreters/python/docs/3.3-text.nix b/pkgs/development/interpreters/python/cpython/docs/3.3-text.nix similarity index 100% rename from pkgs/development/interpreters/python/docs/3.3-text.nix rename to pkgs/development/interpreters/python/cpython/docs/3.3-text.nix diff --git a/pkgs/development/interpreters/python/docs/default.nix b/pkgs/development/interpreters/python/cpython/docs/default.nix similarity index 100% rename from pkgs/development/interpreters/python/docs/default.nix rename to pkgs/development/interpreters/python/cpython/docs/default.nix diff --git a/pkgs/development/interpreters/python/docs/generate.sh b/pkgs/development/interpreters/python/cpython/docs/generate.sh similarity index 100% rename from pkgs/development/interpreters/python/docs/generate.sh rename to pkgs/development/interpreters/python/cpython/docs/generate.sh diff --git a/pkgs/development/interpreters/python/docs/template.nix b/pkgs/development/interpreters/python/cpython/docs/template.nix similarity index 100% rename from pkgs/development/interpreters/python/docs/template.nix rename to pkgs/development/interpreters/python/cpython/docs/template.nix diff --git a/pkgs/development/interpreters/pypy/default.nix b/pkgs/development/interpreters/python/pypy/2.7/default.nix similarity index 96% rename from pkgs/development/interpreters/pypy/default.nix rename to pkgs/development/interpreters/python/pypy/2.7/default.nix index f07e53e592f..ba6f5706bbd 100644 --- a/pkgs/development/interpreters/pypy/default.nix +++ b/pkgs/development/interpreters/python/pypy/2.7/default.nix @@ -117,10 +117,10 @@ let inherit zlibSupport libPrefix; executable = "pypy"; isPypy = true; - buildEnv = callPackage ../python/wrapper.nix { python = self; }; + buildEnv = callPackage ../../wrapper.nix { python = self; }; interpreter = "${self}/bin/${executable}"; sitePackages = "site-packages"; - withPackages = import ../python/with-packages.nix { inherit buildEnv; pythonPackages = pypyPackages; }; + withPackages = import ../../with-packages.nix { inherit buildEnv; pythonPackages = pypyPackages; }; }; enableParallelBuilding = true; # almost no parallelization without STM diff --git a/pkgs/development/interpreters/pypy/setup-hook.sh b/pkgs/development/interpreters/python/pypy/2.7/setup-hook.sh similarity index 100% rename from pkgs/development/interpreters/pypy/setup-hook.sh rename to pkgs/development/interpreters/python/pypy/2.7/setup-hook.sh diff --git a/pkgs/development/libraries/gdal/default.nix b/pkgs/development/libraries/gdal/default.nix index 36019bdd7f7..f19f760c748 100644 --- a/pkgs/development/libraries/gdal/default.nix +++ b/pkgs/development/libraries/gdal/default.nix @@ -6,24 +6,18 @@ }: composableDerivation.composableDerivation {} (fixed: rec { - version = "2.0.2"; + version = "2.1.1"; name = "gdal-${version}"; src = fetchurl { url = "http://download.osgeo.org/gdal/${version}/${name}.tar.gz"; - sha256 = "db7722caf8d9dd798ec18012b9cacf40a518918466126a88b9fd277bd7d40cc4"; + sha256 = "55fc6ffbe76e9d2e7e6cf637010e5d4bba6a966d065f40194ff798544198236b"; }; buildInputs = [ unzip libjpeg libtiff libpng proj openssl ] ++ (with pythonPackages; [ python numpy wrapPython ]) ++ (stdenv.lib.optionals netcdfSupport [ netcdf hdf5 curl ]); - patches = [ - # This ensures that the python package is installed into gdal's prefix, - # rather than trying to install into python's prefix. - ./python.patch - ]; - # Don't use optimization for gcc >= 4.3. That's said to be causing segfaults. # Unset CC and CXX as they confuse libtool. preConfigure = "export CFLAGS=-O0 CXXFLAGS=-O0; unset CC CXX"; diff --git a/pkgs/development/libraries/kde-frameworks/breeze-icons.nix b/pkgs/development/libraries/kde-frameworks/breeze-icons.nix index bf6df87a972..c87ba75b2b4 100644 --- a/pkgs/development/libraries/kde-frameworks/breeze-icons.nix +++ b/pkgs/development/libraries/kde-frameworks/breeze-icons.nix @@ -5,6 +5,6 @@ kdeFramework { meta = { maintainers = [ lib.maintainers.ttuegel ]; }; outputs = [ "out" ]; nativeBuildInputs = [ ecm ]; - propagatedBuildInputs = [ qtsvg ]; + buildInputs = [ qtsvg ]; propagatedUserEnvPkgs = [ qtsvg.out ]; } diff --git a/pkgs/development/libraries/kde-frameworks/default.nix b/pkgs/development/libraries/kde-frameworks/default.nix index 74e9df114f0..bf27d52dceb 100644 --- a/pkgs/development/libraries/kde-frameworks/default.nix +++ b/pkgs/development/libraries/kde-frameworks/default.nix @@ -26,6 +26,9 @@ let outputs = args.outputs or [ "dev" "out" ]; + propagatedUserEnvPkgs = + builtins.map lib.getBin (args.propagatedBuildInputs or []); + cmakeFlags = (args.cmakeFlags or []) ++ [ "-DBUILD_TESTING=OFF" ] @@ -50,6 +53,16 @@ let } // (args.meta or {}); }); + kdeEnv = import ./kde-env.nix { + inherit (pkgs) stdenv lib; + inherit (pkgs.xorg) lndir; + }; + + kdeWrapper = import ./kde-wrapper.nix { + inherit (pkgs) stdenv lib makeWrapper; + inherit kdeEnv; + }; + attica = callPackage ./attica.nix {}; baloo = callPackage ./baloo.nix {}; bluez-qt = callPackage ./bluez-qt.nix {}; diff --git a/pkgs/development/libraries/kde-frameworks/kde-env.nix b/pkgs/development/libraries/kde-frameworks/kde-env.nix new file mode 100644 index 00000000000..c77ff49bfea --- /dev/null +++ b/pkgs/development/libraries/kde-frameworks/kde-env.nix @@ -0,0 +1,31 @@ +{ stdenv, lib, lndir }: + +drv: pkgs: + +stdenv.mkDerivation { + name = "kde-env-${drv.name}"; + nativeBuildInputs = [ lndir ]; + propagatedUserEnvPkgs = builtins.map lib.getBin ([drv] ++ pkgs); + unpackPhase = "true"; + configurePhase = "runHook preConfigure; runHook postConfigure"; + buildPhase = "true"; + installPhase = '' + runHook preInstall + + propagated="" + for i in $propagatedUserEnvPkgs; do + findInputs $i propagated propagated-user-env-packages + done + + for tgt in bin etc/xdg lib/libexec lib/qt5 share; do + mkdir -p "$out/$tgt" + for p in $propagated; do + if [ -d "$p/$tgt" ]; then + lndir -silent "$p/$tgt" "$out/$tgt" >/dev/null 2>&1 + fi + done + done + + runHook postInstall + ''; +} diff --git a/pkgs/development/libraries/kde-frameworks/kde-wrapper.nix b/pkgs/development/libraries/kde-frameworks/kde-wrapper.nix new file mode 100644 index 00000000000..95f9cdcecb7 --- /dev/null +++ b/pkgs/development/libraries/kde-frameworks/kde-wrapper.nix @@ -0,0 +1,47 @@ +{ stdenv, lib, makeWrapper, kdeEnv }: + +drv: + +{ targets, paths ? [] }: + +let + env = kdeEnv drv paths; +in +stdenv.mkDerivation { + inherit (drv) name; + + drv = lib.getBin drv; + inherit env targets; + passthru = { unwrapped = drv; }; + + nativeBuildInputs = [ makeWrapper ]; + + unpackPhase = "true"; + configurePhase = "runHook preConfigure; runHook postConfigure"; + buildPhase = "true"; + + installPhase = '' + for t in $targets; do + if [ -a "$drv/$t" ]; then + makeWrapper "$drv/$t" "$out/$t" \ + --argv0 '"$0"' \ + --suffix PATH : "$out/bin:$env/bin" \ + --prefix XDG_CONFIG_DIRS : "$env/etc/xdg" \ + --prefix XDG_DATA_DIRS : "$env/share" \ + --set QML_IMPORT_PATH "$env/lib/qt5/imports" \ + --set QML2_IMPORT_PATH "$env/lib/qt5/qml" \ + --set QT_PLUGIN_PATH "$env/lib/qt5/plugins" + else + echo "no such file or directory: $drv/$t" + exit 1 + fi + done + + for s in applications dbus-1 desktop-directories icons mime polkit-1; do + if [ -d "$env/share/$s" ]; then + mkdir -p "$out/share" + ln -s "$env/share/$s" "$out/share/$s" + fi + done + ''; +} diff --git a/pkgs/development/libraries/kde-frameworks/setup-hook.sh b/pkgs/development/libraries/kde-frameworks/setup-hook.sh index 5363f4e30fd..a1638ca541b 100644 --- a/pkgs/development/libraries/kde-frameworks/setup-hook.sh +++ b/pkgs/development/libraries/kde-frameworks/setup-hook.sh @@ -1,57 +1,9 @@ _ecmSetXdgDirs() { addToSearchPathOnce XDG_DATA_DIRS "$1/share" addToSearchPathOnce XDG_CONFIG_DIRS "$1/etc/xdg" - addToSearchPathOnce RUNTIME_XDG_CONFIG_DIRS "$1/etc/xdg" } -_ecmSharePaths=( \ - "appdata" \ - "applications" \ - "config.cfg" \ - "dbus-1" \ - "desktop-directories" \ - "doc" \ - "icons" \ - "kconf_update" \ - "kservices5" \ - "kservicetypes5" \ - "knotifications5" \ - "kxmlgui5" \ - "locale" \ - "mime" \ - "polkit-1" \ - "sounds" \ - "templates" \ - "wallpapers" \ - ) - -_ecmPropagateNative() { - for dir in ${_ecmSharePaths[@]}; do - if [ -d "$1/share/$dir" ]; then - propagateOnce propagatedNativeBuildInputs "$1" - if [ -z "$crossConfig" ]; then - propagateOnce propagatedUserEnvPkgs "$1" - addToSearchPathOnce RUNTIME_XDG_DATA_DIRS "$1/share" - fi - break - fi - done -} - -envHooks+=(_ecmSetXdgDirs _ecmPropagate) - -_ecmPropagate() { - for dir in ${_ecmSharePaths[@]}; do - if [ -d "$1/share/$dir" ]; then - propagateOnce propagatedBuildInputs "$1" - propagateOnce propagatedUserEnvPkgs "$1" - addToSearchPathOnce RUNTIME_XDG_DATA_DIRS "$1/share" - break - fi - done -} - -crossEnvHooks+=(_ecmPropagate) +envHooks+=(_ecmSetXdgDirs) _ecmConfig() { # Because we need to use absolute paths here, we must set *all* the paths. @@ -59,41 +11,41 @@ _ecmConfig() { cmakeFlags+=" -DKDE_INSTALL_BINDIR=${!outputBin}/bin" cmakeFlags+=" -DKDE_INSTALL_SBINDIR=${!outputBin}/sbin" cmakeFlags+=" -DKDE_INSTALL_LIBDIR=${!outputLib}/lib" - cmakeFlags+=" -DKDE_INSTALL_LIBEXECDIR=${!outputLib}/lib/libexec" + cmakeFlags+=" -DKDE_INSTALL_LIBEXECDIR=${!outputBin}/lib/libexec" cmakeFlags+=" -DKDE_INSTALL_CMAKEPACKAGEDIR=${!outputDev}/lib/cmake" - cmakeFlags+=" -DKDE_INSTALL_QTPLUGINDIR=${!outputLib}/lib/qt5/plugins" - cmakeFlags+=" -DKDE_INSTALL_PLUGINDIR=${!outputLib}/lib/qt5/plugins" - cmakeFlags+=" -DKDE_INSTALL_QTQUICKIMPORTSDIR=${!outputLib}/lib/qt5/imports" - cmakeFlags+=" -DKDE_INSTALL_QMLDIR=${!outputLib}/lib/qt5/qml" + cmakeFlags+=" -DKDE_INSTALL_QTPLUGINDIR=${!outputBin}/lib/qt5/plugins" + cmakeFlags+=" -DKDE_INSTALL_PLUGINDIR=${!outputBin}/lib/qt5/plugins" + cmakeFlags+=" -DKDE_INSTALL_QTQUICKIMPORTSDIR=${!outputBin}/lib/qt5/imports" + cmakeFlags+=" -DKDE_INSTALL_QMLDIR=${!outputBin}/lib/qt5/qml" cmakeFlags+=" -DKDE_INSTALL_INCLUDEDIR=${!outputInclude}/include" cmakeFlags+=" -DKDE_INSTALL_LOCALSTATEDIR=/var" - cmakeFlags+=" -DKDE_INSTALL_DATAROOTDIR=${!outputLib}/share" - cmakeFlags+=" -DKDE_INSTALL_DATADIR=${!outputLib}/share" - cmakeFlags+=" -DKDE_INSTALL_DOCBUNDLEDIR=${!outputLib}/share/doc/HTML" - cmakeFlags+=" -DKDE_INSTALL_KCFGDIR=${!outputLib}/share/config.kcfg" - cmakeFlags+=" -DKDE_INSTALL_KCONFUPDATEDIR=${!outputLib}/share/kconf_update" - cmakeFlags+=" -DKDE_INSTALL_KSERVICES5DIR=${!outputLib}/share/kservices5" - cmakeFlags+=" -DKDE_INSTALL_KSERVICETYPES5DIR=${!outputLib}/share/kservicetypes5" - cmakeFlags+=" -DKDE_INSTALL_KXMLGUI5DIR=${!outputLib}/share/kxmlgui5" - cmakeFlags+=" -DKDE_INSTALL_KNOTIFY5RCDIR=${!outputLib}/share/knotifications5" - cmakeFlags+=" -DKDE_INSTALL_ICONDIR=${!outputLib}/share/icons" - cmakeFlags+=" -DKDE_INSTALL_LOCALEDIR=${!outputLib}/share/locale" - cmakeFlags+=" -DKDE_INSTALL_SOUNDDIR=${!outputLib}/share/sounds" - cmakeFlags+=" -DKDE_INSTALL_TEMPLATEDIR=${!outputLib}/share/templates" - cmakeFlags+=" -DKDE_INSTALL_WALLPAPERDIR=${!outputLib}/share/wallpapers" - cmakeFlags+=" -DKDE_INSTALL_APPDIR=${!outputLib}/share/applications" - cmakeFlags+=" -DKDE_INSTALL_DESKTOPDIR=${!outputLib}/share/desktop-directories" - cmakeFlags+=" -DKDE_INSTALL_MIMEDIR=${!outputLib}/share/mime/packages" - cmakeFlags+=" -DKDE_INSTALL_METAINFODIR=${!outputLib}/share/appdata" - cmakeFlags+=" -DKDE_INSTALL_MANDIR=${!outputLib}/share/man" - cmakeFlags+=" -DKDE_INSTALL_INFODIR=${!outputLib}/share/info" - cmakeFlags+=" -DKDE_INSTALL_DBUSDIR=${!outputLib}/share/dbus-1" - cmakeFlags+=" -DKDE_INSTALL_DBUSINTERFACEDIR=${!outputLib}/share/dbus-1/interfaces" - cmakeFlags+=" -DKDE_INSTALL_DBUSSERVICEDIR=${!outputLib}/share/dbus-1/services" - cmakeFlags+=" -DKDE_INSTALL_DBUSSYSTEMSERVICEDIR=${!outputLib}/share/dbus-1/system-services" - cmakeFlags+=" -DKDE_INSTALL_SYSCONFDIR=${!outputLib}/etc" - cmakeFlags+=" -DKDE_INSTALL_CONFDIR=${!outputLib}/etc/xdg" - cmakeFlags+=" -DKDE_INSTALL_AUTOSTARTDIR=${!outputLib}/etc/xdg/autostart" + cmakeFlags+=" -DKDE_INSTALL_DATAROOTDIR=${!outputBin}/share" + cmakeFlags+=" -DKDE_INSTALL_DATADIR=${!outputBin}/share" + cmakeFlags+=" -DKDE_INSTALL_DOCBUNDLEDIR=${!outputBin}/share/doc/HTML" + cmakeFlags+=" -DKDE_INSTALL_KCFGDIR=${!outputBin}/share/config.kcfg" + cmakeFlags+=" -DKDE_INSTALL_KCONFUPDATEDIR=${!outputBin}/share/kconf_update" + cmakeFlags+=" -DKDE_INSTALL_KSERVICES5DIR=${!outputBin}/share/kservices5" + cmakeFlags+=" -DKDE_INSTALL_KSERVICETYPES5DIR=${!outputBin}/share/kservicetypes5" + cmakeFlags+=" -DKDE_INSTALL_KXMLGUI5DIR=${!outputBin}/share/kxmlgui5" + cmakeFlags+=" -DKDE_INSTALL_KNOTIFY5RCDIR=${!outputBin}/share/knotifications5" + cmakeFlags+=" -DKDE_INSTALL_ICONDIR=${!outputBin}/share/icons" + cmakeFlags+=" -DKDE_INSTALL_LOCALEDIR=${!outputBin}/share/locale" + cmakeFlags+=" -DKDE_INSTALL_SOUNDDIR=${!outputBin}/share/sounds" + cmakeFlags+=" -DKDE_INSTALL_TEMPLATEDIR=${!outputBin}/share/templates" + cmakeFlags+=" -DKDE_INSTALL_WALLPAPERDIR=${!outputBin}/share/wallpapers" + cmakeFlags+=" -DKDE_INSTALL_APPDIR=${!outputBin}/share/applications" + cmakeFlags+=" -DKDE_INSTALL_DESKTOPDIR=${!outputBin}/share/desktop-directories" + cmakeFlags+=" -DKDE_INSTALL_MIMEDIR=${!outputBin}/share/mime/packages" + cmakeFlags+=" -DKDE_INSTALL_METAINFODIR=${!outputBin}/share/appdata" + cmakeFlags+=" -DKDE_INSTALL_MANDIR=${!outputBin}/share/man" + cmakeFlags+=" -DKDE_INSTALL_INFODIR=${!outputBin}/share/info" + cmakeFlags+=" -DKDE_INSTALL_DBUSDIR=${!outputBin}/share/dbus-1" + cmakeFlags+=" -DKDE_INSTALL_DBUSINTERFACEDIR=${!outputBin}/share/dbus-1/interfaces" + cmakeFlags+=" -DKDE_INSTALL_DBUSSERVICEDIR=${!outputBin}/share/dbus-1/services" + cmakeFlags+=" -DKDE_INSTALL_DBUSSYSTEMSERVICEDIR=${!outputBin}/share/dbus-1/system-services" + cmakeFlags+=" -DKDE_INSTALL_SYSCONFDIR=${!outputBin}/etc" + cmakeFlags+=" -DKDE_INSTALL_CONFDIR=${!outputBin}/etc/xdg" + cmakeFlags+=" -DKDE_INSTALL_AUTOSTARTDIR=${!outputBin}/etc/xdg/autostart" } preConfigureHooks+=(_ecmConfig) diff --git a/pkgs/development/libraries/leatherman/default.nix b/pkgs/development/libraries/leatherman/default.nix index 3dfc9e2990e..a4b007fa399 100644 --- a/pkgs/development/libraries/leatherman/default.nix +++ b/pkgs/development/libraries/leatherman/default.nix @@ -13,6 +13,10 @@ stdenv.mkDerivation rec { buildInputs = [ boost cmake curl ]; + # curl upgrade to 7.50.0 (#17152) broke the curl mock tests, disabling for now + # upstream bug raised https://tickets.puppetlabs.com/browse/LTH-108 + cmakeFlags = [ "-DLEATHERMAN_MOCK_CURL=OFF" ]; + meta = with stdenv.lib; { homepage = https://github.com/puppetlabs/leatherman/; description = "A collection of C++ and CMake utility libraries"; diff --git a/pkgs/development/libraries/poppler/default.nix b/pkgs/development/libraries/poppler/default.nix index 51b5ac5981e..e445af46e09 100644 --- a/pkgs/development/libraries/poppler/default.nix +++ b/pkgs/development/libraries/poppler/default.nix @@ -1,6 +1,8 @@ { stdenv, lib, fetchurl, fetchpatch, pkgconfig, libiconv, libintlOrEmpty , zlib, curl, cairo, freetype, fontconfig, lcms, libjpeg, openjpeg -, minimal ? false, qt4Support ? false, qt4 ? null, qt5Support ? false, qtbase ? null +, minimal ? false +, qt4Support ? false, qt4 ? null +, qt5Support ? false, qtbase ? null , utils ? false, suffix ? "glib" }: @@ -31,6 +33,9 @@ stdenv.mkDerivation rec { NIX_CFLAGS_COMPILE = [ "-DQT_NO_DEBUG" ]; + # Any package depending on Qt >= 5.7 must build using the C++11 standard. + CXXFLAGS = lib.optional qt5Support "-std=c++11"; + configureFlags = with lib; [ "--enable-xpdf-headers" diff --git a/pkgs/development/python-modules/setuptools/default.nix b/pkgs/development/python-modules/setuptools/default.nix index d01bc684f69..290b0d98fe0 100644 --- a/pkgs/development/python-modules/setuptools/default.nix +++ b/pkgs/development/python-modules/setuptools/default.nix @@ -28,5 +28,6 @@ stdenv.mkDerivation rec { homepage = http://pypi.python.org/pypi/setuptools; license = with lib.licenses; [ psfl zpt20 ]; platforms = platforms.all; + priority = 10; }; } diff --git a/pkgs/games/construo/default.nix b/pkgs/games/construo/default.nix index f94b489908e..0c9e83cdb9a 100644 --- a/pkgs/games/construo/default.nix +++ b/pkgs/games/construo/default.nix @@ -1,29 +1,25 @@ -{ stdenv, fetchurl, builderDefs, libX11, zlib, xproto, mesa ? null, freeglut ? null }: +{ stdenv, fetchurl, libX11, zlib, xproto, mesa ? null, freeglut ? null }: - let localDefs = builderDefs.passthru.function { - src = /* put a fetchurl here */ - fetchurl { - url = http://savannah.nongnu.org/download/construo/construo-0.2.2.tar.gz; - sha256 = "0c661rjasax4ykw77dgqj39jhb4qi48m0bhhdy42vd5a4rfdrcck"; - }; - - buildInputs = [ libX11 zlib xproto ] - ++ stdenv.lib.optional (mesa != null) mesa - ++ stdenv.lib.optional (freeglut != null) freeglut; - preConfigure = builderDefs.stringsWithDeps.fullDepEntry ('' - sed -e 's/math[.]h/cmath/' -i vector.cxx - sed -e 's/games/bin/' -i Makefile.in - sed -e '1i\#include ' -i construo_main.cxx -i command_line.cxx -i config.hxx - sed -e '1i\#include ' -i command_line.cxx -i lisp_reader.cxx -i unix_system.cxx \ - -i world.cxx construo_main.cxx - '') ["doUnpack" "minInit"]; - }; - in with localDefs; stdenv.mkDerivation rec { - name = "construo-0.2.2"; - builder = writeScript (name + "-builder") - (textClosure localDefs ["preConfigure" "doConfigure" "doMakeInstall" "doForceShare" "doPropagate"]); - meta = { - description = "Masses and springs simulation game"; - }; + name = "construo-${version}"; + version = "0.2.3"; + + src = fetchurl { + url = "https://github.com/Construo/construo/releases/download/v${version}/${name}.tar.gz"; + sha256 = "1wmj527hbj1qv44cdsj6ahfjrnrjwg2dp8gdick8nd07vm062qxa"; + }; + + buildInputs = [ libX11 zlib xproto ] + ++ stdenv.lib.optional (mesa != null) mesa + ++ stdenv.lib.optional (freeglut != null) freeglut; + + preConfigure = '' + substituteInPlace src/Makefile.in \ + --replace games bin + ''; + + meta = { + description = "Masses and springs simulation game"; + homepage = http://fs.fsf.org/construo/; + }; } diff --git a/pkgs/games/holdingnuts/default.nix b/pkgs/games/holdingnuts/default.nix new file mode 100644 index 00000000000..e6d6febeac6 --- /dev/null +++ b/pkgs/games/holdingnuts/default.nix @@ -0,0 +1,38 @@ +{ stdenv, fetchurl, cmake, SDL, qt4 }: + +let mirror = "http://download.holdingnuts.net"; +in stdenv.mkDerivation rec { + name = "${pname}-${version}"; + pname = "holdingnuts"; + version = "0.0.5"; + + src = fetchurl { + url = "${mirror}/release/${version}/${name}.tar.bz2"; + sha256 = "0iw25jmnqzscg34v66d4zz70lvgjp4l7gi16nna6491xnqha5a8g"; + }; + + patches = [ + (fetchurl { + url = "${mirror}/patches/holdingnuts-0.0.5-wheel.patch"; + sha256 = "0hap5anxgc19s5qi64mjpi3wpgphy4dqdxqw34q19dw3gwxw5g8n"; + }) + (fetchurl { + url = "${mirror}/patches/holdingnuts-qpixmapcache-workaround.patch"; + sha256 = "15cf9j9mdm85f0h7w5f5852ic7xpim0243yywkd2qrfp37mi93pd"; + }) + ]; + + postPatch = '' + substituteInPlace src/system/SysAccess.c --replace /usr/share $out/share + ''; + + buildInputs = [ cmake SDL qt4 ]; + + meta = with stdenv.lib; { + homepage = http://www.holdingnuts.net/; + description = "Open Source Poker client and server"; + license = licenses.gpl3; + maintainers = with maintainers; [ obadz ]; + platforms = platforms.all; + }; +} diff --git a/pkgs/misc/drivers/dell-530cdn/default.nix b/pkgs/misc/drivers/dell-530cdn/default.nix new file mode 100644 index 00000000000..9b2f8bd47b3 --- /dev/null +++ b/pkgs/misc/drivers/dell-530cdn/default.nix @@ -0,0 +1,13 @@ +{ runCommand, fetchurl, rpm, cpio }: let + version = "1.3-1"; + + src = fetchurl { + url = "http://downloads.dell.com/printer/Dell-5130cdn-Color-Laser-${version}.noarch.rpm"; + md5 = "7fb7122e67e40b99deb9665d88df62d1"; + }; +in runCommand "Dell-5130cdn-Color-Laser-1.3-1" {} '' + mkdir -p usr/share/cups/model + ${rpm}/bin/rpm2cpio ${src} | ${cpio}/bin/cpio -i + mkdir -p $out/share/ppd + mv usr/share/cups/model/Dell $out/share/ppd +'' diff --git a/pkgs/misc/long-shebang/default.nix b/pkgs/misc/long-shebang/default.nix new file mode 100644 index 00000000000..17bf0e95fee --- /dev/null +++ b/pkgs/misc/long-shebang/default.nix @@ -0,0 +1,20 @@ +{ stdenv, fetchurl }: let + version = "1.0.0"; +in stdenv.mkDerivation { + name = "long-shebang-${version}"; + + src = fetchurl { + url = "https://github.com/shlevy/long-shebang/releases/download/v1.0.0/long-shebang-1.0.0.tar.xz"; + sha256 = "15f5rmihj3r53rmalix1bn1agybbzrc3g2a9xzjyd4v3vfd2vckr"; + }; + + meta = { + description = "A tool for #! scripts with more than one argument"; + + homepage = https://github.com/shlevy/long-shebang; + + license = stdenv.lib.licenses.mit; + + platforms = stdenv.lib.platforms.unix; + }; +} diff --git a/pkgs/os-specific/linux/broadcom-sta/default.nix b/pkgs/os-specific/linux/broadcom-sta/default.nix index 64a0c3138c9..28b23a61ff0 100644 --- a/pkgs/os-specific/linux/broadcom-sta/default.nix +++ b/pkgs/os-specific/linux/broadcom-sta/default.nix @@ -1,43 +1,47 @@ { stdenv, fetchurl, kernel }: + let - version = "6.30.223.248"; + version = "6.30.223.271"; + hashes = { + i686-linux = "1kaqa2dw3nb8k23ffvx46g8jj3wdhz8xa6jp1v3wb35cjfr712sg"; + x86_64-linux = "1gj485qqr190idilacpxwgqyw21il03zph2rddizgj7fbd6pfyaz"; + }; + + arch = stdenv.lib.optionalString (stdenv.system == "x86_64-linux") "_64"; + tarballVersion = stdenv.lib.replaceStrings ["."] ["_"] version; + tarball = "hybrid-v35${arch}-nodebug-pcoem-${tarballVersion}.tar.gz"; in stdenv.mkDerivation { name = "broadcom-sta-${version}-${kernel.version}"; - src = if stdenv.system == "i686-linux" then ( - fetchurl { - url = http://www.broadcom.com/docs/linux_sta/hybrid-v35-nodebug-pcoem-6_30_223_248.tar.gz; - sha256 = "1bd13pq5hj4yzp32rx71sg1i5wkzdsg1s32xsywb48lw88x595mi"; - } ) else ( - fetchurl { - url = http://www.broadcom.com/docs/linux_sta/hybrid-v35_64-nodebug-pcoem-6_30_223_248.tar.gz; - sha256 = "08ihbhwnqpnazskw9rlrk0alanp4x70kl8bsy2vg962iq334r69x"; - } - ); + src = fetchurl { + url = "http://www.broadcom.com/docs/linux_sta/${tarball}"; + sha256 = hashes.${stdenv.system}; + }; patches = [ + ./i686-build-failure.patch ./license.patch - ./linux-recent.patch + ./linux-4.7.patch + ./null-pointer-fix.patch ./gcc.patch ]; makeFlags = "KBASE=${kernel.dev}/lib/modules/${kernel.modDirVersion}"; unpackPhase = '' - sourceRoot=broadcom-sta - mkdir "$sourceRoot" - tar xvf "$src" -C "$sourceRoot" + sourceRoot=broadcom-sta + mkdir "$sourceRoot" + tar xvf "$src" -C "$sourceRoot" ''; - installPhase = - '' - binDir="$out/lib/modules/${kernel.modDirVersion}/kernel/net/wireless/" - docDir="$out/share/doc/broadcom-sta/" - mkdir -p "$binDir" "$docDir" - cp wl.ko "$binDir" - cp lib/LICENSE.txt "$docDir" - ''; + installPhase = '' + binDir="$out/lib/modules/${kernel.modDirVersion}/kernel/net/wireless/" + docDir="$out/share/doc/broadcom-sta/" + mkdir -p "$binDir" "$docDir" + cp wl.ko "$binDir" + cp lib/LICENSE.txt "$docDir" + ''; meta = { description = "Kernel module driver for some Broadcom's wireless cards"; diff --git a/pkgs/os-specific/linux/broadcom-sta/i686-build-failure.patch b/pkgs/os-specific/linux/broadcom-sta/i686-build-failure.patch new file mode 100644 index 00000000000..cfa16075409 --- /dev/null +++ b/pkgs/os-specific/linux/broadcom-sta/i686-build-failure.patch @@ -0,0 +1,18 @@ +https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit?id=fe47ae6e1a5005b2e82f7eab57b5c3820453293a +https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit?id=4ea1636b04dbd66536fa387bae2eea463efc705b + +diff -ru a/src/shared/linux_osl.c b/src/shared/linux_osl.c +--- a/src/shared/linux_osl.c 2015-09-19 01:47:15.000000000 +0300 ++++ b/src/shared/linux_osl.c 2015-11-21 15:20:30.585902518 +0200 +@@ -932,7 +932,11 @@ + uint cycles; + + #if defined(__i386__) ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 3, 0) ++ cycles = (u32)rdtsc(); ++#else + rdtscl(cycles); ++#endif + #else + cycles = 0; + #endif diff --git a/pkgs/os-specific/linux/broadcom-sta/linux-4.7.patch b/pkgs/os-specific/linux/broadcom-sta/linux-4.7.patch new file mode 100644 index 00000000000..566680a0914 --- /dev/null +++ b/pkgs/os-specific/linux/broadcom-sta/linux-4.7.patch @@ -0,0 +1,109 @@ +Since Linux 4.7, the enum ieee80211_band is no longer used + +This shall cause no problem's since both enums ieee80211_band +and nl80211_band were added in the same commit: +https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit?id=13ae75b103e07304a34ab40c9136e9f53e06475c + +This patch refactors the references of IEEE80211_BAND_* to NL80211_BAND_* + +Reference: +https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit?id=57fbcce37be7c1d2622b56587c10ade00e96afa3 + +--- a/src/wl/sys/wl_cfg80211_hybrid.c 2016-06-13 11:57:36.159340297 -0500 ++++ b/src/wl/sys/wl_cfg80211_hybrid.c 2016-06-13 11:58:18.442323435 -0500 +@@ -236,7 +236,7 @@ + #endif + + #define CHAN2G(_channel, _freq, _flags) { \ +- .band = IEEE80211_BAND_2GHZ, \ ++ .band = NL80211_BAND_2GHZ, \ + .center_freq = (_freq), \ + .hw_value = (_channel), \ + .flags = (_flags), \ +@@ -245,7 +245,7 @@ + } + + #define CHAN5G(_channel, _flags) { \ +- .band = IEEE80211_BAND_5GHZ, \ ++ .band = NL80211_BAND_5GHZ, \ + .center_freq = 5000 + (5 * (_channel)), \ + .hw_value = (_channel), \ + .flags = (_flags), \ +@@ -379,7 +379,7 @@ + }; + + static struct ieee80211_supported_band __wl_band_2ghz = { +- .band = IEEE80211_BAND_2GHZ, ++ .band = NL80211_BAND_2GHZ, + .channels = __wl_2ghz_channels, + .n_channels = ARRAY_SIZE(__wl_2ghz_channels), + .bitrates = wl_g_rates, +@@ -387,7 +387,7 @@ + }; + + static struct ieee80211_supported_band __wl_band_5ghz_a = { +- .band = IEEE80211_BAND_5GHZ, ++ .band = NL80211_BAND_5GHZ, + .channels = __wl_5ghz_a_channels, + .n_channels = ARRAY_SIZE(__wl_5ghz_a_channels), + .bitrates = wl_a_rates, +@@ -395,7 +395,7 @@ + }; + + static struct ieee80211_supported_band __wl_band_5ghz_n = { +- .band = IEEE80211_BAND_5GHZ, ++ .band = NL80211_BAND_5GHZ, + .channels = __wl_5ghz_n_channels, + .n_channels = ARRAY_SIZE(__wl_5ghz_n_channels), + .bitrates = wl_a_rates, +@@ -1876,8 +1876,8 @@ + wdev->wiphy->max_num_pmkids = WL_NUM_PMKIDS_MAX; + #endif + wdev->wiphy->interface_modes = BIT(NL80211_IFTYPE_STATION) | BIT(NL80211_IFTYPE_ADHOC); +- wdev->wiphy->bands[IEEE80211_BAND_2GHZ] = &__wl_band_2ghz; +- wdev->wiphy->bands[IEEE80211_BAND_5GHZ] = &__wl_band_5ghz_a; ++ wdev->wiphy->bands[NL80211_BAND_2GHZ] = &__wl_band_2ghz; ++ wdev->wiphy->bands[NL80211_BAND_5GHZ] = &__wl_band_5ghz_a; + wdev->wiphy->signal_type = CFG80211_SIGNAL_TYPE_MBM; + wdev->wiphy->cipher_suites = __wl_cipher_suites; + wdev->wiphy->n_cipher_suites = ARRAY_SIZE(__wl_cipher_suites); +@@ -2000,7 +2000,7 @@ + #if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 39) + freq = ieee80211_channel_to_frequency(notif_bss_info->channel, + (notif_bss_info->channel <= CH_MAX_2G_CHANNEL) ? +- IEEE80211_BAND_2GHZ : IEEE80211_BAND_5GHZ); ++ NL80211_BAND_2GHZ : NL80211_BAND_5GHZ); + #else + freq = ieee80211_channel_to_frequency(notif_bss_info->channel); + #endif +@@ -2116,7 +2116,7 @@ + return err; + } + chan = wf_chspec_ctlchan(chanspec); +- band = (chan <= CH_MAX_2G_CHANNEL) ? IEEE80211_BAND_2GHZ : IEEE80211_BAND_5GHZ; ++ band = (chan <= CH_MAX_2G_CHANNEL) ? NL80211_BAND_2GHZ : NL80211_BAND_5GHZ; + freq = ieee80211_channel_to_frequency(chan, band); + channel = ieee80211_get_channel(wiphy, freq); + cfg80211_ibss_joined(ndev, (u8 *)&wl->bssid, channel, GFP_KERNEL); +@@ -2250,10 +2250,10 @@ + join_params->params.chanspec_list[0] = + ieee80211_frequency_to_channel(chan->center_freq); + +- if (chan->band == IEEE80211_BAND_2GHZ) { ++ if (chan->band == NL80211_BAND_2GHZ) { + chanspec |= WL_CHANSPEC_BAND_2G; + } +- else if (chan->band == IEEE80211_BAND_5GHZ) { ++ else if (chan->band == NL80211_BAND_5GHZ) { + chanspec |= WL_CHANSPEC_BAND_5G; + } + else { +@@ -2885,7 +2885,7 @@ + + if (phy == 'n' || phy == 'a' || phy == 'v') { + wiphy = wl_to_wiphy(wl); +- wiphy->bands[IEEE80211_BAND_5GHZ] = &__wl_band_5ghz_n; ++ wiphy->bands[NL80211_BAND_5GHZ] = &__wl_band_5ghz_n; + } + + return err; diff --git a/pkgs/os-specific/linux/broadcom-sta/linux-recent.patch b/pkgs/os-specific/linux/broadcom-sta/linux-recent.patch deleted file mode 100644 index a690558eb5b..00000000000 --- a/pkgs/os-specific/linux/broadcom-sta/linux-recent.patch +++ /dev/null @@ -1,386 +0,0 @@ ---- a/src/wl/sys/wl_cfg80211_hybrid.c 2014-06-26 12:42:08.000000000 +0200 -+++ b/src/wl/sys/wl_cfg80211_hybrid.c 2015-04-13 13:20:08.140013177 +0200 -@@ -63,8 +63,13 @@ - static s32 wl_cfg80211_join_ibss(struct wiphy *wiphy, struct net_device *dev, - struct cfg80211_ibss_params *params); - static s32 wl_cfg80211_leave_ibss(struct wiphy *wiphy, struct net_device *dev); -+#if LINUX_VERSION_CODE < KERNEL_VERSION(3, 16, 0) - static s32 wl_cfg80211_get_station(struct wiphy *wiphy, - struct net_device *dev, u8 *mac, struct station_info *sinfo); -+#else -+static s32 wl_cfg80211_get_station(struct wiphy *wiphy, -+ struct net_device *dev, const u8 *mac, struct station_info *sinfo); -+#endif - static s32 wl_cfg80211_set_power_mgmt(struct wiphy *wiphy, - struct net_device *dev, bool enabled, s32 timeout); - static int wl_cfg80211_connect(struct wiphy *wiphy, struct net_device *dev, -@@ -1387,7 +1392,7 @@ - key_endian_to_host(&key); - - params.key_len = (u8) min_t(u8, DOT11_MAX_KEY_SIZE, key.len); -- memcpy(params.key, key.data, params.key_len); -+ memcpy((char *)params.key, key.data, params.key_len); - - if ((err = wl_dev_ioctl(dev, WLC_GET_WSEC, &wsec, sizeof(wsec)))) { - return err; -@@ -1421,9 +1426,15 @@ - return err; - } - -+#if LINUX_VERSION_CODE < KERNEL_VERSION(3, 16, 0) - static s32 - wl_cfg80211_get_station(struct wiphy *wiphy, struct net_device *dev, - u8 *mac, struct station_info *sinfo) -+#else -+static s32 -+wl_cfg80211_get_station(struct wiphy *wiphy, struct net_device *dev, -+ const u8 *mac, struct station_info *sinfo) -+#endif - { - struct wl_cfg80211_priv *wl = wiphy_to_wl(wiphy); - scb_val_t scb_val; -@@ -1441,7 +1452,11 @@ - WL_DBG(("Could not get rate (%d)\n", err)); - } else { - rate = dtoh32(rate); -+#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 0, 0) - sinfo->filled |= STATION_INFO_TX_BITRATE; -+#else -+ sinfo->filled |= BIT(NL80211_STA_INFO_TX_BITRATE); -+#endif - sinfo->txrate.legacy = rate * 5; - WL_DBG(("Rate %d Mbps\n", (rate / 2))); - } -@@ -1454,7 +1469,11 @@ - return err; - } - rssi = dtoh32(scb_val.val); -+#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 0, 0) - sinfo->filled |= STATION_INFO_SIGNAL; -+#else -+ sinfo->filled |= BIT(NL80211_STA_INFO_SIGNAL); -+#endif - sinfo->signal = rssi; - WL_DBG(("RSSI %d dBm\n", rssi)); - } -@@ -2010,9 +2029,15 @@ - - notify_ie = (u8 *)bi + le16_to_cpu(bi->ie_offset); - notify_ielen = le32_to_cpu(bi->ie_length); -+#if LINUX_VERSION_CODE < KERNEL_VERSION(3, 18, 0) - cbss = cfg80211_inform_bss(wiphy, channel, (const u8 *)(bi->BSSID.octet), - 0, beacon_proberesp->capab_info, beacon_proberesp->beacon_int, - (const u8 *)notify_ie, notify_ielen, signal, GFP_KERNEL); -+#else -+ cbss = cfg80211_inform_bss(wiphy, channel, CFG80211_BSS_FTYPE_UNKNOWN, (const u8 *)(bi->BSSID.octet), -+ 0, beacon_proberesp->capab_info, beacon_proberesp->beacon_int, -+ (const u8 *)notify_ie, notify_ielen, signal, GFP_KERNEL); -+#endif - - if (unlikely(!cbss)) - return -ENOMEM; -@@ -2047,7 +2072,11 @@ - } - else if ((event == WLC_E_LINK && ~(flags & WLC_EVENT_MSG_LINK)) || - event == WLC_E_DEAUTH_IND || event == WLC_E_DISASSOC_IND) { -+#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 2, 0) -+ cfg80211_disconnected(ndev, 0, NULL, 0, false, GFP_KERNEL); -+#else - cfg80211_disconnected(ndev, 0, NULL, 0, GFP_KERNEL); -+#endif - clear_bit(WL_STATUS_CONNECTED, &wl->status); - wl_link_down(wl); - wl_init_prof(wl->profile); -@@ -2071,7 +2100,26 @@ - wl_get_assoc_ies(wl); - memcpy(&wl->bssid, &e->addr, ETHER_ADDR_LEN); - wl_update_bss_info(wl); -+#if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 15, 0) -+ { -+ struct wl_bss_info *bi; -+ u16 bss_info_channel; -+ struct ieee80211_channel *channel; -+ u32 freq; -+ -+ bi = (struct wl_bss_info *)(wl->extra_buf + 4); -+ bss_info_channel = bi->ctl_ch ? bi->ctl_ch : CHSPEC_CHANNEL(bi->chanspec); -+ -+ freq = ieee80211_channel_to_frequency(bss_info_channel, -+ (bss_info_channel <= CH_MAX_2G_CHANNEL) ? -+ IEEE80211_BAND_2GHZ : IEEE80211_BAND_5GHZ); -+ -+ channel = ieee80211_get_channel(wl_to_wiphy(wl), freq); -+ cfg80211_ibss_joined(ndev, (u8 *)&wl->bssid, channel, GFP_KERNEL); -+ } -+#else - cfg80211_ibss_joined(ndev, (u8 *)&wl->bssid, GFP_KERNEL); -+#endif - set_bit(WL_STATUS_CONNECTED, &wl->status); - wl->profile->active = true; - } -@@ -2629,7 +2677,15 @@ - - void wl_cfg80211_detach(struct net_device *ndev) - { -- struct wl_cfg80211_priv *wl = ndev_to_wl(ndev); -+ struct wl_cfg80211_priv *wl; -+ struct wireless_dev *wdev; -+ -+ wdev = ndev->ieee80211_ptr; -+ if (wdev == NULL) { -+ printk(KERN_ERR "[%s()] in ndev=%p: IEEE80211ptr=%p\n", __FUNCTION__, ndev, wdev); -+ return; -+ } -+ wl = ndev_to_wl(ndev); - - wl_deinit_cfg80211_priv(wl); - wl_free_wdev(wl); ---- a/src/wl/sys/wl_dbg.h 2014-06-26 12:42:08.000000000 +0200 -+++ b/src/wl/sys/wl_dbg.h 2015-04-13 13:19:52.443345832 +0200 -@@ -55,10 +55,12 @@ - - #define WL_NONE(args) - -+#define FORCE_TRACE_LEVEL(fmt, ...) do { printk(KERN_ERR fmt, ## __VA_ARGS__); } while (0) /* ## is GCC specific syntax to remove comma when single arg */ -+ - #ifdef BCMDBG_ERR - #define WL_ERROR(args) WL_PRINT(args) - #else --#define WL_ERROR(args) -+#define WL_ERROR(args) FORCE_TRACE_LEVEL args - #endif - #define WL_TRACE(args) - #define WL_APSTA_UPDN(args) ---- a/src/wl/sys/wl_linux.c 2014-06-26 12:42:08.000000000 +0200 -+++ b/src/wl/sys/wl_linux.c 2015-04-13 13:19:52.443345832 +0200 -@@ -878,7 +878,7 @@ - static SIMPLE_DEV_PM_OPS(wl_pm_ops, wl_suspend, wl_resume); - #endif - --static struct pci_driver wl_pci_driver = { -+static struct pci_driver wl_pci_driver __refdata = { - .name = "wl", - .probe = wl_pci_probe, - .remove = __devexit_p(wl_remove), -@@ -1270,6 +1270,7 @@ - MFREE(wl->osh, wlif->dev, sizeof(struct net_device)); - #else - free_netdev(wlif->dev); -+ wlif->dev = NULL; - #endif - } - -@@ -1307,7 +1308,12 @@ - dev->priv = priv_link; - #else - -+#if (LINUX_VERSION_CODE < KERNEL_VERSION(3, 17, 0)) - dev = alloc_netdev(sizeof(priv_link_t), intf_name, ether_setup); -+#else -+ dev = alloc_netdev(sizeof(priv_link_t), intf_name, NET_NAME_UNKNOWN, -+ ether_setup); -+#endif - if (!dev) { - WL_ERROR(("wl%d: %s: alloc_netdev failed\n", - (wl->pub)?wl->pub->unit:wlif->subunit, __FUNCTION__)); -@@ -1651,11 +1657,7 @@ - } - - WL_LOCK(wl); -- if (!capable(CAP_NET_ADMIN)) { -- bcmerror = BCME_EPERM; -- } else { -- bcmerror = wlc_ioctl(wl->wlc, ioc.cmd, buf, ioc.len, wlif->wlcif); -- } -+ bcmerror = wlc_ioctl(wl->wlc, ioc.cmd, buf, ioc.len, wlif->wlcif); - WL_UNLOCK(wl); - - done1: -@@ -2157,8 +2159,8 @@ - wlif = WL_DEV_IF(dev); - wl = WL_INFO(dev); - -+ skb->prev = NULL; - if (WL_ALL_PASSIVE_ENAB(wl) || (WL_RTR() && WL_CONFIG_SMP())) { -- skb->prev = NULL; - - TXQ_LOCK(wl); - -@@ -2455,8 +2457,10 @@ - p80211msg_t *phdr; - - len = sizeof(p80211msg_t) + oskb->len - D11_PHY_HDR_LEN; -- if ((skb = dev_alloc_skb(len)) == NULL) -+ if ((skb = dev_alloc_skb(len)) == NULL) { -+ WL_ERROR(("in %s:%d [%s()] dev_alloc_skb() failure!", __FILE__, __LINE__, __FUNCTION__)); - return; -+ } - - skb_put(skb, len); - phdr = (p80211msg_t*)skb->data; -@@ -2535,8 +2539,10 @@ - rtap_len = sizeof(wl_radiotap_ht_brcm_2_t); - - len = rtap_len + (oskb->len - D11_PHY_HDR_LEN); -- if ((skb = dev_alloc_skb(len)) == NULL) -+ if ((skb = dev_alloc_skb(len)) == NULL) { -+ WL_ERROR(("in %s:%d [%s()] dev_alloc_skb() failure!", __FILE__, __LINE__, __FUNCTION__)); - return; -+ } - - skb_put(skb, len); - -@@ -2664,8 +2670,10 @@ - len += amsdu_len; - } - -- if ((skb = dev_alloc_skb(len)) == NULL) -+ if ((skb = dev_alloc_skb(len)) == NULL) { -+ WL_ERROR(("in %s:%d [%s()] dev_alloc_skb() failure!", __FILE__, __LINE__, __FUNCTION__)); - return; -+ } - - skb_put(skb, len); - -@@ -2990,7 +2998,7 @@ - } - - void --wl_set_monitor(wl_info_t *wl, int val) -+wl_set_monitor(wl_info_t *wl, int val) /* public => is called by wlc_hybrid.o_shipped */ - { - const char *devname; - wl_if_t *wlif; -@@ -3224,42 +3232,75 @@ - #if LINUX_VERSION_CODE < KERNEL_VERSION(3, 10, 0) - static int - wl_proc_read(char *buffer, char **start, off_t offset, int length, int *eof, void *data) -+{ -+ wl_info_t * wl = (wl_info_t *)data; - #else - static ssize_t --wl_proc_read(struct file *filp, char __user *buffer, size_t length, loff_t *data) --#endif -+wl_proc_read(struct file *filp, char __user *buffer, size_t length, loff_t *offp) - { -- wl_info_t * wl = (wl_info_t *)data; -- int to_user; -- int len; -+ wl_info_t * wl = PDE_DATA(file_inode(filp)); -+#endif -+ int bcmerror, len; -+ int to_user = 0; -+ char tmp[8]; - - #if LINUX_VERSION_CODE < KERNEL_VERSION(3, 10, 0) - if (offset > 0) { - *eof = 1; - return 0; - } -+#else -+ if (*offp > 0) { /* for example, stop: cat /proc/brcm_monitor0 */ -+ return 0; /* 0 <=> EOF */ -+ } - #endif - -- if (!length) { -- WL_ERROR(("%s: Not enough return buf space\n", __FUNCTION__)); -- return 0; -- } - WL_LOCK(wl); -- wlc_ioctl(wl->wlc, WLC_GET_MONITOR, &to_user, sizeof(int), NULL); -- len = sprintf(buffer, "%d\n", to_user); -- WL_UNLOCK(wl); -- return len; -+ bcmerror = wlc_ioctl(wl->wlc, WLC_GET_MONITOR, &to_user, sizeof(int), NULL); -+ WL_UNLOCK(wl); -+ -+ if (bcmerror != BCME_OK) { -+ WL_ERROR(("%s: GET_MONITOR failed with %d\n", __FUNCTION__, bcmerror)); -+ return -EIO; -+ } -+ -+ len = snprintf(tmp, ARRAY_SIZE(tmp), "%d\n", to_user); -+ tmp[ARRAY_SIZE(tmp) - 1] = '\0'; -+ if (len >= ARRAY_SIZE(tmp)) { -+ printk(KERN_ERR "%s:%d [%s()] output would be truncated (ret=%d)!", __FILE__, __LINE__, __FUNCTION__, len); -+ return -ERANGE; -+ } -+ else if (len < 0) { -+ printk(KERN_ERR "%s:%d [%s()] unable to convert value (ret=%d)!", __FILE__, __LINE__, __FUNCTION__, len); -+ return len; -+ } -+ if (length < len) { -+ printk(KERN_ERR "%s:%d [%s()] user buffer is too small (at least=%d ; user=%d)!", __FILE__, __LINE__, __FUNCTION__, len, (int)length); -+ return -EMSGSIZE; -+ } -+ if (copy_to_user(buffer, tmp, len) != 0) { -+ printk(KERN_ERR "%s:%d [%s()] unable to copy data!", __FILE__, __LINE__, __FUNCTION__); -+ return -EFAULT; -+ } -+ -+#if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 10, 0) -+ *offp += len; -+#endif -+ -+ return len; - } - - #if LINUX_VERSION_CODE < KERNEL_VERSION(3, 10, 0) - static int - wl_proc_write(struct file *filp, const char *buff, unsigned long length, void *data) -+{ -+ wl_info_t * wl = (wl_info_t *)data; - #else - static ssize_t --wl_proc_write(struct file *filp, const char __user *buff, size_t length, loff_t *data) --#endif -+wl_proc_write(struct file *filp, const char __user *buff, size_t length, loff_t *offp) - { -- wl_info_t * wl = (wl_info_t *)data; -+ wl_info_t * wl = PDE_DATA(file_inode(filp)); -+#endif - int from_user = 0; - int bcmerror; - -@@ -3270,7 +3311,11 @@ - } - if (copy_from_user(&from_user, buff, 1)) { - WL_ERROR(("%s: copy from user failed\n", __FUNCTION__)); -- return -EIO; -+#if LINUX_VERSION_CODE < KERNEL_VERSION(3, 10, 0) -+ return -EIO; -+#else -+ return -EFAULT; -+#endif - } - - if (from_user >= 0x30) -@@ -3280,10 +3325,15 @@ - bcmerror = wlc_ioctl(wl->wlc, WLC_SET_MONITOR, &from_user, sizeof(int), NULL); - WL_UNLOCK(wl); - -- if (bcmerror < 0) { -+ if (bcmerror != BCME_OK) { - WL_ERROR(("%s: SET_MONITOR failed with %d\n", __FUNCTION__, bcmerror)); - return -EIO; - } -+ -+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3, 10, 0)) && 0 /* no need to update offset because this file should only trigger action... */ -+ *offp += length; -+#endif -+ - return length; - } - -@@ -3304,8 +3354,8 @@ - if ((wl->proc_entry = create_proc_entry(tmp, 0644, NULL)) == NULL) { - WL_ERROR(("%s: create_proc_entry %s failed\n", __FUNCTION__, tmp)); - #else -- if ((wl->proc_entry = proc_create(tmp, 0644, NULL, &wl_fops)) == NULL) { -- WL_ERROR(("%s: proc_create %s failed\n", __FUNCTION__, tmp)); -+ if ((wl->proc_entry = proc_create_data(tmp, 0644, NULL, &wl_fops, wl)) == NULL) { -+ WL_ERROR(("%s: proc_create_data %s failed\n", __FUNCTION__, tmp)); - #endif - ASSERT(0); - return -1; diff --git a/pkgs/os-specific/linux/broadcom-sta/null-pointer-fix.patch b/pkgs/os-specific/linux/broadcom-sta/null-pointer-fix.patch new file mode 100644 index 00000000000..76379729430 --- /dev/null +++ b/pkgs/os-specific/linux/broadcom-sta/null-pointer-fix.patch @@ -0,0 +1,13 @@ +diff -urN a/src/wl/sys/wl_linux.c b/src/wl/sys/wl_linux.c +--- a/src/wl/sys/wl_linux.c 2015-01-06 12:33:42.981659618 +0100 ++++ b/src/wl/sys/wl_linux.c 2015-01-06 12:34:05.647395418 +0100 +@@ -2157,8 +2157,8 @@ + wlif = WL_DEV_IF(dev); + wl = WL_INFO(dev); + ++ skb->prev = NULL; + if (WL_ALL_PASSIVE_ENAB(wl) || (WL_RTR() && WL_CONFIG_SMP())) { +- skb->prev = NULL; + + TXQ_LOCK(wl); + diff --git a/pkgs/os-specific/linux/kernel/patches.nix b/pkgs/os-specific/linux/kernel/patches.nix index e538a527f50..375f0e3b0b4 100644 --- a/pkgs/os-specific/linux/kernel/patches.nix +++ b/pkgs/os-specific/linux/kernel/patches.nix @@ -94,8 +94,8 @@ rec { grsecurity_testing = grsecPatch { kver = "4.6.5"; - grrev = "201607272152"; - sha256 = "120rj3cpvbchihj3w3i9j2fxvap3270kfxjfznw2ljglzf7pi8zc"; + grrev = "201607312210"; + sha256 = "17dnp6w092kvqxqxbdgjpl4mrsn2wkb7z8q5d8ck7dfanpmqap0w"; }; # This patch relaxes grsec constraints on the location of usermode helpers, diff --git a/pkgs/os-specific/linux/nvidia-x11/365.35-kernel-4.7.patch b/pkgs/os-specific/linux/nvidia-x11/365.35-kernel-4.7.patch new file mode 100644 index 00000000000..8d1436c5094 --- /dev/null +++ b/pkgs/os-specific/linux/nvidia-x11/365.35-kernel-4.7.patch @@ -0,0 +1,40 @@ +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 +--- NVIDIA-Linux-x86_64-367.35-no-compat32-upstream/kernel/nvidia-drm/nvidia-drm-fb.c 2016-07-31 19:07:06.595038290 -0400 ++++ NVIDIA-Linux-x86_64-367.35-no-compat32/kernel/nvidia-drm/nvidia-drm-fb.c 2016-07-31 19:09:18.532197060 -0400 +@@ -114,7 +114,7 @@ + * We don't support any planar format, pick up first buffer only. + */ + +- gem = drm_gem_object_lookup(dev, file, cmd->handles[0]); ++ gem = drm_gem_object_lookup(file, cmd->handles[0]); + + if (gem == NULL) + { +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 +--- NVIDIA-Linux-x86_64-367.35-no-compat32-upstream/kernel/nvidia-drm/nvidia-drm-gem.c 2016-07-31 19:07:06.595038290 -0400 ++++ NVIDIA-Linux-x86_64-367.35-no-compat32/kernel/nvidia-drm/nvidia-drm-gem.c 2016-07-31 19:08:56.187492736 -0400 +@@ -408,7 +408,7 @@ + + mutex_lock(&dev->struct_mutex); + +- gem = drm_gem_object_lookup(dev, file, handle); ++ gem = drm_gem_object_lookup(file, handle); + + if (gem == NULL) + { +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 +--- NVIDIA-Linux-x86_64-367.35-no-compat32-upstream/kernel/nvidia-uvm/uvm_linux.h 2016-07-31 19:07:06.600038448 -0400 ++++ NVIDIA-Linux-x86_64-367.35-no-compat32/kernel/nvidia-uvm/uvm_linux.h 2016-07-31 19:08:06.506926763 -0400 +@@ -554,12 +554,6 @@ + INIT_RADIX_TREE(tree, GFP_NOWAIT); + } + +-static bool radix_tree_empty(struct radix_tree_root *tree) +-{ +- void *dummy; +- return radix_tree_gang_lookup(tree, &dummy, 0, 1) == 0; +-} +- + + #if !defined(NV_USLEEP_RANGE_PRESENT) + static void __sched usleep_range(unsigned long min, unsigned long max) diff --git a/pkgs/os-specific/linux/nvidia-x11/default.nix b/pkgs/os-specific/linux/nvidia-x11/default.nix index e3be760700b..5edf03bf409 100644 --- a/pkgs/os-specific/linux/nvidia-x11/default.nix +++ b/pkgs/os-specific/linux/nvidia-x11/default.nix @@ -12,7 +12,7 @@ assert (!libsOnly) -> kernel != null; let - versionNumber = "361.45.11"; + versionNumber = "367.35"; # Policy: use the highest stable version as the default (on our master). inherit (stdenv.lib) makeLibraryPath; @@ -28,12 +28,12 @@ stdenv.mkDerivation { if stdenv.system == "i686-linux" then fetchurl { url = "http://download.nvidia.com/XFree86/Linux-x86/${versionNumber}/NVIDIA-Linux-x86-${versionNumber}.run"; - sha256 = "036v7bzh9zy7zvaz2wf7zsamrynbg1yr1dll7sf1l928w059i6pb"; + sha256 = "05g36bxcfk21ab8b0ay3zy21k5nd71468p9y1nbflx7ghpx25jrq"; } else if stdenv.system == "x86_64-linux" then fetchurl { url = "http://download.nvidia.com/XFree86/Linux-x86_64/${versionNumber}/NVIDIA-Linux-x86_64-${versionNumber}-no-compat32.run"; - sha256 = "1f8bxmf8cr3cgzxgap5ccb1yrqyrrdig19dp282y6z9xjq27l074"; + sha256 = "0m4k8f0212l63h22wk6hgi8fbfsgxqih5mizsw4ixqqmjd75av4a"; } else throw "nvidia-x11 does not support platform ${stdenv.system}"; @@ -53,6 +53,8 @@ stdenv.mkDerivation { [ gtk atk pango glib gdk_pixbuf cairo ] ); programPath = makeLibraryPath [ xorg.libXv ]; + patches = if versionAtLeast kernel.version "4.7" then [ ./365.35-kernel-4.7.patch ] else []; + buildInputs = [ perl nukeReferences ]; disallowedReferences = if libsOnly then [] else [ kernel.dev ]; diff --git a/pkgs/servers/matrix-synapse/default.nix b/pkgs/servers/matrix-synapse/default.nix index 26cdb3d78ef..96f874139d5 100644 --- a/pkgs/servers/matrix-synapse/default.nix +++ b/pkgs/servers/matrix-synapse/default.nix @@ -27,7 +27,7 @@ buildPythonApplication rec { blist canonicaljson daemonize dateutil frozendict pillow pybcrypt pyasn1 pydenticon pymacaroons-pynacl pynacl pyopenssl pysaml2 pytz requests2 service-identity signedjson systemd twisted ujson unpaddedbase64 pyyaml - matrix-angular-sdk bleach netaddr jinja2 psycopg2 + matrix-angular-sdk bleach netaddr jinja2 psycopg2 python.modules.curses ]; # Checks fail because of Tox. diff --git a/pkgs/servers/nosql/redis/default.nix b/pkgs/servers/nosql/redis/default.nix index 16a2ec21079..69d6377b664 100644 --- a/pkgs/servers/nosql/redis/default.nix +++ b/pkgs/servers/nosql/redis/default.nix @@ -1,12 +1,12 @@ { stdenv, fetchurl, lua }: stdenv.mkDerivation rec { - version = "3.0.7"; + version = "3.2.2"; name = "redis-${version}"; src = fetchurl { url = "http://download.redis.io/releases/${name}.tar.gz"; - sha256 = "08vzfdr67gp3lvk770qpax2c5g2sx8hn6p64jn3jddrvxb2939xj"; + sha256 = "05cf63502b2248b5d39588962100bfa4fcb47dabd56931a8cb60b301b1d8daea"; }; buildInputs = [ lua ]; diff --git a/pkgs/tools/audio/beets/default.nix b/pkgs/tools/audio/beets/default.nix index 33de429d531..9dcfbd10b35 100644 --- a/pkgs/tools/audio/beets/default.nix +++ b/pkgs/tools/audio/beets/default.nix @@ -6,7 +6,6 @@ , enableBadfiles ? true, flac ? null, mp3val ? null , enableConvert ? true, ffmpeg ? null , enableDiscogs ? true -, enableEchonest ? true , enableEmbyupdate ? true , enableFetchart ? true , enableLastfm ? true @@ -25,7 +24,6 @@ assert enableAcoustid -> pythonPackages.pyacoustid != null; assert enableBadfiles -> flac != null && mp3val != null; assert enableConvert -> ffmpeg != null; assert enableDiscogs -> pythonPackages.discogs_client != null; -assert enableEchonest -> pythonPackages.pyechonest != null; assert enableFetchart -> pythonPackages.responses != null; assert enableLastfm -> pythonPackages.pylast != null; assert enableMpd -> pythonPackages.mpd != null; @@ -42,7 +40,6 @@ let chroma = enableAcoustid; convert = enableConvert; discogs = enableDiscogs; - echonest = enableEchonest; embyupdate = enableEmbyupdate; fetchart = enableFetchart; lastgenre = enableLastfm; @@ -55,8 +52,8 @@ let }; pluginsWithoutDeps = [ - "bench" "bpd" "bpm" "bucket" "cue" "duplicates" "edit" "embedart" - "filefilter" "freedesktop" "fromfilename" "ftintitle" "fuzzy" "ihate" + "beatport" "bench" "bpd" "bpm" "bucket" "cue" "duplicates" "edit" "embedart" + "export" "filefilter" "freedesktop" "fromfilename" "ftintitle" "fuzzy" "hook" "ihate" "importadded" "importfeeds" "info" "inline" "ipfs" "keyfinder" "lyrics" "mbcollection" "mbsubmit" "mbsync" "metasync" "missing" "permissions" "play" "plexupdate" "random" "rewrite" "scrub" "smartplaylist" "spotify" "the" @@ -73,14 +70,14 @@ let in buildPythonApplication rec { name = "beets-${version}"; - version = "1.3.17"; + version = "1.3.19"; namePrefix = ""; src = fetchFromGitHub { owner = "sampsyo"; repo = "beets"; rev = "v${version}"; - sha256 = "1fskxx5xxjqf4xmfjrinh7idjiq6qncb24hiyccv09l47fr1yipc"; + sha256 = "0f2v1924ryx5xijpv1jycanl4471vcd7c5lld58lm0viyvh5k28x"; }; propagatedBuildInputs = [ @@ -101,7 +98,6 @@ in buildPythonApplication rec { pythonPackages.requests2 ++ optional enableConvert ffmpeg ++ optional enableDiscogs pythonPackages.discogs_client - ++ optional enableEchonest pythonPackages.pyechonest ++ optional enableLastfm pythonPackages.pylast ++ optional enableMpd pythonPackages.mpd ++ optional enableThumbnails pythonPackages.pyxdg diff --git a/pkgs/tools/backup/rdup/default.nix b/pkgs/tools/backup/rdup/default.nix new file mode 100644 index 00000000000..8ca07e2c823 --- /dev/null +++ b/pkgs/tools/backup/rdup/default.nix @@ -0,0 +1,24 @@ +{ stdenv, fetchFromGitHub, pkgconfig, autoreconfHook, glib, pcre }: + +stdenv.mkDerivation rec { + name = "rdup-${version}"; + version = "1.1.15"; + + src = fetchFromGitHub { + owner = "miekg"; + repo = "rdup"; + rev = "d66e4320cd0bbcc83253baddafe87f9e0e83caa6"; + sha256 = "0bzyv6qmnivxnv9nw7lnfn46k0m1dlxcjj53zcva6v8y8084l1iw"; + }; + + nativeBuildInputs = [ autoreconfHook pkgconfig ]; + buildInputs = [ glib pcre ]; + + meta = { + description = "The only backup program that doesn't make backups"; + homepage = "https://github.com/miekg/rdup"; + license = stdenv.lib.licenses.gpl3; + platforms = stdenv.lib.platforms.linux; + maintainers = with stdenv.lib.maintainers; [ lukasepple ]; + }; +} diff --git a/pkgs/tools/misc/cpuminer-multi/default.nix b/pkgs/tools/misc/cpuminer-multi/default.nix index 5657703d3f2..9c8a54b5545 100644 --- a/pkgs/tools/misc/cpuminer-multi/default.nix +++ b/pkgs/tools/misc/cpuminer-multi/default.nix @@ -2,8 +2,8 @@ , aesni ? true }: let - rev = "977dad27e18627e5b723800f5f4201e385fe0d2e"; - date = "20140723"; + rev = "8393e03089c0abde61bd5d72aba8f926c3d6eca4"; + date = "20160316"; in stdenv.mkDerivation rec { name = "cpuminer-multi-${date}-${stdenv.lib.strings.substring 0 7 rev}"; @@ -11,7 +11,7 @@ stdenv.mkDerivation rec { src = fetchgit { inherit rev; url = https://github.com/wolf9466/cpuminer-multi.git; - sha256 = "1lzaiwy2wk9awpzpfnp3d6dymnb4bvgw1vg2433plfqhi9jfdrqj"; + sha256 = "11dg4rra4dgfb9x6q85irn0hrkx2lkwyrdpgdh10pag09s3vhy4v"; }; buildInputs = [ autoconf automake curl jansson ]; @@ -27,5 +27,6 @@ stdenv.mkDerivation rec { homepage = https://github.com/wolf9466/cpuminer-multi; license = licenses.gpl2; maintainers = [ maintainers.ehmry ]; + platforms = platforms.linux; }; -} \ No newline at end of file +} diff --git a/pkgs/tools/misc/tmuxp/default.nix b/pkgs/tools/misc/tmuxp/default.nix new file mode 100644 index 00000000000..08dcc184b3c --- /dev/null +++ b/pkgs/tools/misc/tmuxp/default.nix @@ -0,0 +1,25 @@ +{ stdenv, fetchurl, pythonPackages }: + +pythonPackages.buildPythonApplication rec { + name = "tmuxp-${version}"; + version = "1.2.0"; + + namePrefix = ""; + + src = fetchurl { + url = "mirror://pypi/t/tmuxp/${name}.tar.gz"; + sha256 = "05z5ssv9glsqmcy9fdq06bawy1274dnzqsqd3a4z4jd0w6j09smn"; + }; + + propagatedBuildInputs = with pythonPackages; [ + click colorama kaptan libtmux + ]; + + meta = with stdenv.lib; { + description = "Manage tmux workspaces from JSON and YAML"; + homepage = "http://tmuxp.readthedocs.io"; + license = licenses.bsd3; + platforms = platforms.linux; + maintainers = with maintainers; [ jgeerds ]; + }; +} diff --git a/pkgs/tools/misc/vdirsyncer/default.nix b/pkgs/tools/misc/vdirsyncer/default.nix index 1a8621effd5..51762006b62 100644 --- a/pkgs/tools/misc/vdirsyncer/default.nix +++ b/pkgs/tools/misc/vdirsyncer/default.nix @@ -3,12 +3,12 @@ # Packaging documentation at: # https://github.com/untitaker/vdirsyncer/blob/master/docs/packaging.rst pythonPackages.buildPythonApplication rec { - version = "0.11.2"; + version = "0.11.3"; name = "vdirsyncer-${version}"; src = fetchurl { url = "mirror://pypi/v/vdirsyncer/${name}.tar.gz"; - sha256 = "15isw2jhjfxi213wdj9d8mwq2m58k8bwf831qnxrjcz7j7bwy7mj"; + sha256 = "10majl58vdpxgbddjqgwblvl7akvvr4c2c8iaxnf3kgyh01jq6k9"; }; propagatedBuildInputs = with pythonPackages; [ diff --git a/pkgs/tools/networking/dnscrypt-proxy/default.nix b/pkgs/tools/networking/dnscrypt-proxy/default.nix index 3dadbeedd4d..1eac3cf6c02 100644 --- a/pkgs/tools/networking/dnscrypt-proxy/default.nix +++ b/pkgs/tools/networking/dnscrypt-proxy/default.nix @@ -4,11 +4,11 @@ with stdenv.lib; stdenv.mkDerivation rec { name = "dnscrypt-proxy-${version}"; - version = "1.6.1"; + version = "1.7.0"; src = fetchurl { url = "https://download.dnscrypt.org/dnscrypt-proxy/${name}.tar.bz2"; - sha256 = "16lif3qhyfjpgg54vjlwpslxk90akmbhlpnn1szxm628bmpw6nl9"; + sha256 = "1qw2nib0d5ia8581lbdnjxgn9c7pf2qw8vhpnnh1wjcjj3gpgbqx"; }; configureFlags = optional stdenv.isLinux "--with-systemd"; diff --git a/pkgs/tools/networking/unbound/python.nix b/pkgs/tools/networking/unbound/python.nix new file mode 100644 index 00000000000..5d7096ab168 --- /dev/null +++ b/pkgs/tools/networking/unbound/python.nix @@ -0,0 +1,65 @@ +{ stdenv, fetchurl, openssl, expat, libevent, swig, pythonPackages }: + +let + inherit (pythonPackages) python; +in stdenv.mkDerivation rec { + pname = "pyunbound"; + name = "${pname}-${version}"; + version = "1.5.9"; + + src = fetchurl { + url = "http://unbound.net/downloads/unbound-${version}.tar.gz"; + sha256 = "01328cfac99ab5b8c47115151896a244979e442e284eb962c0ea84b7782b6990"; + }; + + buildInputs = [ openssl expat libevent swig python ]; + + patchPhase = ''substituteInPlace Makefile.in \ + --replace "\$(DESTDIR)\$(PYTHON_SITE_PKG)" "$out/${python.sitePackages}" \ + --replace "\$(LIBTOOL) --mode=install cp _unbound.la" "cp _unbound.la" + ''; + + preConfigure = "export PYTHON_VERSION=${python.majorVersion}"; + + configureFlags = [ + "--with-ssl=${openssl.dev}" + "--with-libexpat=${expat.dev}" + "--with-libevent=${libevent.dev}" + "--localstatedir=/var" + "--sysconfdir=/etc" + "--sbindir=\${out}/bin" + "--enable-pie" + "--enable-relro-now" + "--with-pyunbound" + "DESTDIR=$out PREFIX=" + ]; + + preInstall = '' + mkdir -p $out/${python.sitePackages} $out/etc/${pname} + cp .libs/_unbound.so .libs/libunbound.so* $out/${python.sitePackages} + substituteInPlace _unbound.la \ + --replace "-L.libs $PWD/libunbound.la" "-L$out/${python.sitePackages}" \ + --replace "libdir=\'$PWD/${python.sitePackages}\'" "libdir=\'$out/${python.sitePackages}\'" + ''; + + installFlags = [ "configfile=\${out}/etc/unbound/unbound.conf pyunbound-install lib" ]; + + # All we want is the Unbound Python module + postInstall = '' + # Generate the built in root anchor and root key and store these in a logical place + # to be used by tools depending only on the Python module + $out/bin/unbound-anchor -l | head -1 > $out/etc/${pname}/root.anchor + $out/bin/unbound-anchor -l | tail --lines=+2 - > $out/etc/${pname}/root.key + # We don't need anything else + rm -fR $out/bin $out/share $out/include $out/etc/unbound + patchelf --replace-needed libunbound.so.2 $out/${python.sitePackages}/libunbound.so.2 $out/${python.sitePackages}/_unbound.so + ''; + + meta = with stdenv.lib; { + description = "Python library for Unbound, the validating, recursive, and caching DNS resolver"; + license = licenses.bsd3; + homepage = http://www.unbound.net; + maintainers = with maintainers; [ leenaars ]; + platforms = stdenv.lib.platforms.unix; + }; +} diff --git a/pkgs/tools/security/afl/default.nix b/pkgs/tools/security/afl/default.nix index a252dad5ea1..eac593e0076 100644 --- a/pkgs/tools/security/afl/default.nix +++ b/pkgs/tools/security/afl/default.nix @@ -9,11 +9,11 @@ let in stdenv.mkDerivation rec { name = "afl-${version}"; - version = "2.10b"; + version = "2.23b"; src = fetchurl { url = "http://lcamtuf.coredump.cx/afl/releases/${name}.tgz"; - sha256 = "1qxz3szsdr3ciz496mjb5v2k8p90nilgnlbwwv9csk828qb2jhc1"; + sha256 = "152pqrc0py6jk1i3pwn2k928bsgax0d4yavpa3ca29bmrbzpnadh"; }; # Note: libcgroup isn't needed for building, just for the afl-cgroup diff --git a/pkgs/tools/security/hash-slinger/default.nix b/pkgs/tools/security/hash-slinger/default.nix new file mode 100644 index 00000000000..4d60b11f977 --- /dev/null +++ b/pkgs/tools/security/hash-slinger/default.nix @@ -0,0 +1,46 @@ +{ stdenv, fetchFromGitHub, pythonPackages, openssh, gnupg, unbound, libreswan }: + +let + inherit (pythonPackages) python; +in stdenv.mkDerivation rec { + pname = "hash-slinger"; + name = "${pname}-${version}"; + version = "2.7"; + + src = fetchFromGitHub { + owner = "letoams"; + repo = "${pname}"; + rev = "${version}"; + sha256 = "05wn744ydclpnpyah6yfjqlfjlasrrhzj48lqmm5a91nyps5yqyn"; + }; + + pythonPath = with pythonPackages; [ dns m2crypto ipaddr python-gnupg + pyunbound ]; + + buildInputs = [ pythonPackages.wrapPython ]; + propagatedBuildInputs = [ unbound libreswan ] ++ pythonPath; + propagatedUserEnvPkgs = [ unbound libreswan ]; + + patchPhase = '' + substituteInPlace Makefile \ + --replace "$(DESTDIR)/usr" "$out" + substituteInPlace ipseckey \ + --replace "/usr/sbin/ipsec" "${libreswan}/sbin/ipsec" + substituteInPlace tlsa \ + --replace "/var/lib/unbound/root" "${pythonPackages.pyunbound}/etc/pyunbound/root" + patchShebangs * + ''; + + installPhase = '' + mkdir -p $out/bin $out/man $out/${python.sitePackages}/ + make install + wrapPythonPrograms + ''; + + meta = { + description = "Various tools to generate special DNS records"; + homepage = "https://github.com/letoams/hash-slinger"; + license = stdenv.lib.licenses.gpl2Plus; + maintainers = [ stdenv.lib.maintainers.leenaars ]; + }; +} diff --git a/pkgs/tools/system/acct/default.nix b/pkgs/tools/system/acct/default.nix index c99d20d7953..4263709fe9a 100644 --- a/pkgs/tools/system/acct/default.nix +++ b/pkgs/tools/system/acct/default.nix @@ -25,6 +25,6 @@ stdenv.mkDerivation rec { homepage = http://www.gnu.org/software/acct/; maintainers = with maintainers; [ pSub ]; - platforms = with platforms; allBut cygwin; + platforms = platforms.linux; }; } diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index c1b5613e11c..a716d5bc5af 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -823,6 +823,8 @@ in interlock = callPackage ../servers/interlock {}; + long-shebang = callPackage ../misc/long-shebang {}; + mathics = pythonPackages.mathics; mcrl = callPackage ../tools/misc/mcrl { }; @@ -1962,6 +1964,8 @@ in hashcat = callPackage ../tools/security/hashcat { }; + hash-slinger = callPackage ../tools/security/hash-slinger { }; + hal-flash = callPackage ../os-specific/linux/hal-flash { }; halibut = callPackage ../tools/typesetting/halibut { }; @@ -3698,6 +3702,8 @@ in tmux-cssh = callPackage ../tools/misc/tmux-cssh { }; + tmuxp = callPackage ../tools/misc/tmuxp { }; + tmuxinator = callPackage ../tools/misc/tmuxinator { }; tmin = callPackage ../tools/security/tmin { }; @@ -5457,9 +5463,7 @@ in stdenv = overrideCC stdenv gcc49; }; - ponyc = callPackage ../development/compilers/ponyc { - llvm = llvm_36; - }; + ponyc = callPackage ../development/compilers/ponyc { }; qcmm = callPackage ../development/compilers/qcmm { lua = lua4; @@ -5883,31 +5887,34 @@ in python2Packages = python27Packages; python3Packages = python35Packages; - python26 = callPackage ../development/interpreters/python/2.6 { + python26 = callPackage ../development/interpreters/python/cpython/2.6 { db = db47; self = python26; }; - python27 = callPackage ../development/interpreters/python/2.7 { + python27 = callPackage ../development/interpreters/python/cpython/2.7 { self = python27; inherit (darwin) CF configd; }; - python33 = callPackage ../development/interpreters/python/3.3 { + python33 = callPackage ../development/interpreters/python/cpython/3.3 { self = python33; }; - python34 = hiPrio (callPackage ../development/interpreters/python/3.4 { + python34 = hiPrio (callPackage ../development/interpreters/python/cpython/3.4 { inherit (darwin) CF configd; self = python34; }); - python35 = hiPrio (callPackage ../development/interpreters/python/3.5 { + python35 = hiPrio (callPackage ../development/interpreters/python/cpython/3.5 { inherit (darwin) CF configd; self = python35; }); - python36 = callPackage ../development/interpreters/python/3.6 { + python36 = callPackage ../development/interpreters/python/cpython/3.6 { inherit (darwin) CF configd; self = python36; }; - pypy = callPackage ../development/interpreters/pypy { - self = pypy; + + pypy = pypy27; + + pypy27 = callPackage ../development/interpreters/python/pypy/2.7 { + self = pypy27; }; pythonFull = python2Full; @@ -5923,7 +5930,7 @@ in python2nix = callPackage ../tools/package-management/python2nix { }; - pythonDocs = recurseIntoAttrs (callPackage ../development/interpreters/python/docs {}); + pythonDocs = recurseIntoAttrs (callPackage ../development/interpreters/python/cpython/docs {}); pypi2nix = callPackage ../development/tools/pypi2nix { python = python35; }; @@ -13884,6 +13891,8 @@ in inherit (gnome) libgnomecanvas glib; }; + moonlight-embedded = callPackage ../applications/misc/moonlight-embedded { }; + mop = callPackage ../applications/misc/mop { }; mopidy = callPackage ../applications/audio/mopidy { }; @@ -14112,6 +14121,8 @@ in sphinx = pythonPackages.sphinx; }; + notmuch-mutt = callPackage ../applications/networking/mailreaders/notmuch/mutt.nix { }; + # Open Stack nova = callPackage ../applications/virtualization/openstack/nova.nix { }; keystone = callPackage ../applications/virtualization/openstack/keystone.nix { }; @@ -14427,6 +14438,8 @@ in rdesktop = callPackage ../applications/networking/remote/rdesktop { }; + rdup = callPackage ../tools/backup/rdup { }; + recode = callPackage ../tools/text/recode { }; remotebox = callPackage ../applications/virtualization/remotebox { }; @@ -15654,6 +15667,8 @@ in hexen = callPackage ../games/hexen { }; + holdingnuts = callPackage ../games/holdingnuts { }; + icbm3d = callPackage ../games/icbm3d { }; ingen = callPackage ../applications/audio/ingen { @@ -16993,6 +17008,8 @@ in dbus-map = callPackage ../tools/misc/dbus-map { }; + dell-530cdn = callPackage ../misc/drivers/dell-530cdn {}; + dosbox = callPackage ../misc/emulators/dosbox { }; dpkg = callPackage ../tools/package-management/dpkg { }; diff --git a/pkgs/top-level/make-tarball.nix b/pkgs/top-level/make-tarball.nix index b664dceaa95..2fe69390ec5 100644 --- a/pkgs/top-level/make-tarball.nix +++ b/pkgs/top-level/make-tarball.nix @@ -15,7 +15,7 @@ releaseTools.sourceTarball rec { src = nixpkgs; inherit officialRelease; - version = builtins.readFile ../../.version; + version = pkgs.lib.fileContents ../../.version; versionSuffix = "pre${toString nixpkgs.revCount}.${nixpkgs.shortRev}"; buildInputs = [ nix.out jq ]; diff --git a/pkgs/top-level/perl-packages.nix b/pkgs/top-level/perl-packages.nix index e87964fd9a6..d746a45753c 100644 --- a/pkgs/top-level/perl-packages.nix +++ b/pkgs/top-level/perl-packages.nix @@ -6956,6 +6956,15 @@ let self = _self // overrides; _self = with self; { }; }; + Later = buildPerlPackage rec { + version = "0.19"; + name = "Object-Realize-Later-${version}"; + src = fetchurl { + url = "mirror://cpan/authors/id/M/MA/MARKOV/${name}.tar.gz"; + sha256 = "0ka0qar51kk5wlvd2s3yis3w9qc14h0ngn0ds0v6c8ssmjvfcgbz"; + }; + }; + lib_ = buildPerlPackage { name = "lib-0.63"; src = fetchurl { @@ -7601,6 +7610,36 @@ let self = _self // overrides; _self = with self; { inherit fetchurl buildPerlPackage stdenv DBDmysql; }; + MailMaildir = buildPerlPackage rec { + version = "1.0.0"; + name = "Mail-Maildir-${version}"; + src = fetchurl { + url = "mirror://cpan/authors/id/Z/ZE/ZEROALTI/Mail-Maildir-100/${name}.tar.bz2"; + sha256 = "1krkqfps6q3ifrhi9450l5gm9199qyfcm6vidllr0dv65kdaqpj4"; + }; + }; + + MailBox = buildPerlPackage rec { + version = "2.118"; + name = "Mail-Box-${version}"; + src = fetchurl { + url = "mirror://cpan/authors/id/M/MA/MARKOV/${name}.tar.gz"; + sha256 = "1ixi7xpvj8kn2y0l8rxkvdnnl7x5wqg7mi2av0viwdh5l828dcfc"; + }; + + doCheck = false; + + propagatedBuildInputs = [ + Later + + DevelGlobalDestruction + FileRemove + IOStringy + MailTools + MIMETypes + ]; + }; + MailMboxMessageParser = buildPerlPackage rec { name = "Mail-Mbox-MessageParser-1.5105"; src = fetchurl { diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix index 76fd4596e54..2e70212bc13 100644 --- a/pkgs/top-level/python-packages.nix +++ b/pkgs/top-level/python-packages.nix @@ -24,16 +24,6 @@ let buildPythonApplication = args: buildPythonPackage ({namePrefix="";} // args ); - # Unique python version identifier - pythonName = - if isPy26 then "python26" else - if isPy27 then "python27" else - if isPy33 then "python33" else - if isPy34 then "python34" else - if isPy35 then "python35" else - if isPy36 then "python36" else - if isPyPy then "pypy" else ""; - modules = python.modules or { readline = null; sqlite3 = null; @@ -44,7 +34,7 @@ let in modules // { - inherit python bootstrapped-pip isPy26 isPy27 isPy33 isPy34 isPy35 isPy36 isPyPy isPy3k pythonName buildPythonPackage buildPythonApplication; + inherit python bootstrapped-pip isPy26 isPy27 isPy33 isPy34 isPy35 isPy36 isPyPy isPy3k buildPythonPackage buildPythonApplication; # helpers @@ -327,6 +317,8 @@ in modules // { hdf5 = pkgs.hdf5.override { zlib = pkgs.zlib; }; }; + pyunbound = callPackage ../tools/networking/unbound/python.nix { }; + # packages defined here aafigure = buildPythonPackage rec { @@ -846,13 +838,13 @@ in modules // { }; ansible2 = buildPythonPackage rec { - version = "2.1.0.0"; + version = "2.1.1.0"; name = "ansible-${version}"; disabled = isPy3k; src = pkgs.fetchurl { url = "http://releases.ansible.com/ansible/${name}.tar.gz"; - sha256 = "1bfc2xiplpad6f2nwi48y0kps7xqnsll85dlz63cy8k5bysl6d20"; + sha256 = "12v7smivjz8d2skk5qxl83nmkxqxypjm8b7ld40sjfwj4g0kkrv1"; }; prePatch = '' @@ -1359,13 +1351,13 @@ in modules // { awscli = buildPythonPackage rec { name = "awscli-${version}"; - version = "1.10.46"; + version = "1.10.51"; namePrefix = ""; src = pkgs.fetchurl { url = "mirror://pypi/a/awscli/${name}.tar.gz"; - sha256 = "1d2xjhdmjna9zxa4ybk7cjypib5yq2gd3w5fgpb4lfs6bh3mr554"; + sha256 = "19n7r6fwnwpi0cyrqh20w80mrcj0b6j3if5p58hi1k3fdp60nscq"; }; # No tests included @@ -2776,12 +2768,12 @@ in modules // { }; botocore = buildPythonPackage rec { - version = "1.4.36"; # This version is required by awscli + version = "1.4.41"; # This version is required by awscli name = "botocore-${version}"; src = pkgs.fetchurl { url = "mirror://pypi/b/botocore/${name}.tar.gz"; - sha256 = "0mkydnbbn0x97nfzwqia68zw2y5j7i9yzpq5kasvc80n2z999h39"; + sha256 = "0c3abr2rxiilqklika8x360pr0mgx7hlhbhj8w72izs2r6ww4dys"; }; propagatedBuildInputs = @@ -3225,7 +3217,7 @@ in modules // { name = "celery-${version}"; version = "3.1.23"; - disabled = pythonOlder "2.6"; + disabled = (pythonOlder "2.6") || isPy35; src = pkgs.fetchurl { url = "mirror://pypi/c/celery/${name}.tar.gz"; @@ -4926,6 +4918,24 @@ in modules // { }; }; + libtmux = buildPythonPackage rec { + name = "libtmux-${version}"; + version = "0.5.0"; + + src = pkgs.fetchurl { + url = "mirror://pypi/l/libtmux/${name}.tar.gz"; + sha256 = "0fwydaahgflz9w753v1cmkfzrlfq1vb8zp4i20m2d3lvkm4crv93"; + }; + + meta = with stdenv.lib; { + description = "Scripting library for tmux"; + homepage = https://libtmux.readthedocs.io/; + license = licenses.bsd3; + platforms = platforms.linux; + maintainers = with maintainers; [ jgeerds ]; + }; + }; + locket = buildPythonPackage rec { name = "locket-${version}"; version = "0.2.0"; @@ -6517,14 +6527,12 @@ in modules // { }; git-up = buildPythonPackage rec { - version = "1.4.0"; + version = "1.4.1"; name = "git-up-${version}"; - src = pkgs.fetchFromGitHub { - owner = "msiemens"; - repo = "PyGitUp"; - rev = "v${version}"; - sha256 = "1g7sxiqg6vxx2jlgg8pg9fqsk1xgvm80d7mcpw8i3mw7r835q4bi"; + src = pkgs.fetchurl { + url = "mirror://pypi/g/git-up/${name}.zip"; + sha256 = "1nsdzjnla0926fzfsqnwyzg3f7g253n8lk4wgw8nj2rv0awbdmas"; }; buildInputs = with self; [ pkgs.git nose ]; @@ -8494,6 +8502,23 @@ in modules // { }; }; + schedule = buildPythonPackage rec { + name = "schedule-0.3.2"; + + src = pkgs.fetchurl { + url = "https://pypi.python.org/packages/10/96/d101fab391753ebc81fa3bb0e744df1ddcfb032c31b036d38083f8994db1/schedule-0.3.2.tar.gz"; + sha256 = "1h0waw4jd5ql68y5kxb9irwapkbkwfs1w0asvbl24fq5f8czdijm"; + }; + + buildInputs = with self; [ mock ]; + + meta = with stdenv.lib; { + description = "Python job scheduling for humans"; + homepage = https://github.com/dbader/schedule; + license = licenses.mit; + }; + }; + substanced = buildPythonPackage rec { # no release yet rev = "089818bc61c3dc5eca023254e37a280b041ea8cc"; @@ -9023,8 +9048,6 @@ in modules // { name = "django-colorful-${version}"; version = "1.2"; - disabled = isPy35; - src = pkgs.fetchurl { url = "mirror://pypi/d/django-colorful/${name}.tar.gz"; sha256 = "0y34hzvfrm1xbxrd8frybc9yzgqvz4c07frafipjikw7kfjsw8az"; @@ -9227,6 +9250,25 @@ in modules // { }; }; + django_raster = buildPythonPackage rec { + name = "django-raster-${version}"; + version = "0.2"; + + src = pkgs.fetchurl { + url = "mirror://pypi/d/django-raster/${name}.tar.gz"; + sha256 = "1zdcxzj43qrv7cl6q9nb2dkfnsyn74dzf2igpnd6nbbfdnkif9bm"; + }; + + propagatedBuildInputs = with self ; [ numpy django_colorful pillow psycopg2 + pyparsing django celery ]; + + meta = { + description = "Basic raster data integration for Django"; + homepage = https://github.com/geodesign/django-raster; + license = licenses.mit; + }; + }; + django_redis = buildPythonPackage rec { name = "django-redis-${version}"; version = "4.2.0"; @@ -9406,6 +9448,25 @@ in modules // { }; }; + kaptan = buildPythonPackage rec { + name = "kaptan-${version}"; + version = "0.5.8"; + + src = pkgs.fetchurl { + url = "mirror://pypi/k/kaptan/${name}.tar.gz"; + sha256 = "1b8r86yyvdvyxd6f10mhkl6cr2jhxm80jjqr4zch96w9hs9rh5vq"; + }; + + propagatedBuildInputs = with self; [ pyyaml ]; + + meta = with stdenv.lib; { + description = "Configuration manager for python applications"; + homepage = https://emre.github.io/kaptan/; + license = licenses.bsd3; + platforms = platforms.linux; + maintainers = with maintainers; [ jgeerds ]; + }; + }; keepalive = buildPythonPackage rec { name = "keepalive-${version}"; @@ -12081,13 +12142,13 @@ in modules // { }; # most of these are simply to allow the test suite to do its job - buildInputs = with self; [ mock unittest2 nose redis qpid-python pymongo sqlalchemy pyyaml msgpack boto ]; + buildInputs = with self; optionals isPy27 [ mock unittest2 nose redis qpid-python pymongo sqlalchemy pyyaml msgpack boto ]; propagatedBuildInputs = with self; [ amqp anyjson ] ++ (optionals (pythonOlder "2.7") [ importlib ordereddict ]); # tests broken on python 2.6? https://github.com/nose-devs/nose/issues/806 - doCheck = (pythonAtLeast "2.7"); + doCheck = isPy27; meta = { description = "Messaging library for Python"; @@ -13418,15 +13479,26 @@ in modules // { }; mutagen = buildPythonPackage (rec { - name = "mutagen-1.27"; + name = "mutagen-1.32"; src = pkgs.fetchurl { url = "mirror://pypi/m/mutagen/${name}.tar.gz"; - sha256 = "cc884fe1e20fe220be7ce7c3b269f4cadc69a8310150a3a41162fba1ca9c88bd"; + sha256 = "1d9sxl442xjj7pdyjj5h0dsjyd7d3wqswr8icqqgqdmg9k8dw8bp"; }; # Needed for tests only - buildInputs = [ pkgs.faad2 pkgs.flac pkgs.vorbis-tools pkgs.liboggz ]; + buildInputs = [ pkgs.faad2 pkgs.flac pkgs.vorbis-tools pkgs.liboggz + pkgs.glibcLocales + ]; + LC_ALL = "en_US.UTF-8"; + + # Remove test that fails due to missing encoding in nix_run_setup.py, a + # file that buildPythonPackage copies to source trees at build time. + # PR with fix: https://github.com/NixOS/nixpkgs/pull/17430 + # ("python: add file encoding to run_setup.py") + preBuild = '' + rm tests/test_encoding.py + ''; meta = { description = "Python multimedia tagging library";