From 6cf020fc29fa8a272e991e633e8372c424250e09 Mon Sep 17 00:00:00 2001 From: Michel Kuhlmann Date: Thu, 21 Jul 2016 08:17:44 +0200 Subject: [PATCH 001/125] gdal: 2.0.2 -> 2.1.1 --- pkgs/development/libraries/gdal/default.nix | 10 ++-------- 1 file changed, 2 insertions(+), 8 deletions(-) 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"; From f298be9ef44657fdd267f7c296b40d4c97c9c1fc Mon Sep 17 00:00:00 2001 From: Robin Gloster Date: Sun, 24 Jan 2016 15:50:54 +0000 Subject: [PATCH 002/125] nginx module: declarative config --- .../services/web-servers/nginx/default.nix | 113 +++++++++++++++++- .../web-servers/nginx/location-options.nix | 32 +++++ .../web-servers/nginx/vhost-options.nix | 96 +++++++++++++++ 3 files changed, 237 insertions(+), 4 deletions(-) create mode 100644 nixos/modules/services/web-servers/nginx/location-options.nix create mode 100644 nixos/modules/services/web-servers/nginx/vhost-options.nix diff --git a/nixos/modules/services/web-servers/nginx/default.nix b/nixos/modules/services/web-servers/nginx/default.nix index 27a33f33ff9..ab5657a9aa9 100644 --- a/nixos/modules/services/web-servers/nginx/default.nix +++ b/nixos/modules/services/web-servers/nginx/default.nix @@ -7,18 +7,107 @@ let nginx = cfg.package; 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; + + # optimisation + sendfile on; + tcp_nopush on; + tcp_nodelay on; + keepalive_timeout 65; + types_hash_max_size 2048; + + # use secure TLS defaults + ssl_protocols TLSv1.2; + ssl_session_cache shared:SSL:42m; + ssl_session_timeout 23m; + + ssl_ciphers EDH+aRSA+AES256:+AESGCM:ECDHE+aRSA+AES256; + ssl_ecdh_curve secp521r1; + ssl_prefer_server_ciphers on; + + ssl_stapling on; + ssl_stapling_verify on; + + gzip on; + gzip_disable "msie6"; + gzip_proxied any; + gzip_comp_level 9; + gzip_buffers 16 8k; + gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript; + + # sane proxy settings/headers + 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 Accept-Encoding ""; + + proxy_redirect off; + client_max_body_size 10m; + client_body_buffer_size 128k; + proxy_connect_timeout 90; + proxy_send_timeout 90; + proxy_read_timeout 90; + proxy_buffers 32 4k; + proxy_buffer_size 8k; + proxy_http_version 1.0; + + server_tokens ${if cfg.serverTokens then "on" else "off"}; + ${vhosts} ${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 spdy"; + in '' + ${if vhost.forceSSL then '' + server { + listen 80; + listen [::]:80; + + server_name ${serverName} ${concatStringsSep " " vhost.serverAliases}; + return 301 https://$host${optionalString (port != 443) ":${port}"}$request_uri; + } + '' else ""} + + server { + listen ${listenString}; + listen [::]:${listenString}; + + server_name ${serverName} ${concatStringsSep " " vhost.serverAliases}; + ${optionalString (vhost.root != null) "root ${vhost.root};"} + ${optionalString (vhost.globalRedirect != null) '' + return 301 https://${vhost.globalRedirect}$request_uri; + ''} + ${optionalString ssl '' + ssl_certificate ${vhost.sslCertificate}; + ssl_certificate_key ${vhost.sslCertificateKey}; + ''} + + ${genLocations vhost.locations} + + ${vhost.extraConfig} + } + '' + ) cfg.virtualHosts); + genLocations = locations: concatStringsSep "\n" (mapAttrsToList (location: config: '' + location ${location} { + ${optionalString (config.proxyPass != null) "proxy_pass ${config.proxyPass};"} + ${optionalString (config.root != null) "root ${config.root};"} + } + '') locations); in { @@ -86,8 +175,24 @@ in description = "Group account under which nginx runs."; }; - }; + serverTokens = mkOption { + type = types.bool; + default = false; + description = "Show nginx version in headers and error pages"; + }; + virtualHosts = mkOption { + type = types.attrsOf (types.submodule (import ./vhost-options.nix { + inherit lib; + })); + default = { + localhost = {}; + }; + example = []; + description = '' + ''; + }; + }; }; config = mkIf cfg.enable { @@ -107,7 +212,7 @@ in serviceConfig = { ExecStart = "${nginx}/bin/nginx -c ${configFile} -p ${cfg.stateDir}"; ExecReload = "${pkgs.coreutils}/bin/kill -HUP $MAINPID"; - Restart = "on-failure"; + Restart = "always"; RestartSec = "10s"; StartLimitInterval = "1min"; }; 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..6537e45a459 --- /dev/null +++ b/nixos/modules/services/web-servers/nginx/location-options.nix @@ -0,0 +1,32 @@ +# 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. + ''; + }; + }; +} + 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..2acb3743677 --- /dev/null +++ b/nixos/modules/services/web-servers/nginx/vhost-options.nix @@ -0,0 +1,96 @@ +# 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. 80 for http + and 443 for https (i.e. when enableSSL is set). + ''; + }; + + 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. + ''; + }; + + 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 = {}; + description = "user = password"; + }; + + locations = mkOption { + type = types.attrsOf (types.submodule (import ./location-options.nix { + inherit lib; + })); + default = {}; + example = {}; + description = '' + ''; + }; + }; +} From 4676983990b1d35676eba19cee9e24a16e0f60d7 Mon Sep 17 00:00:00 2001 From: Tristan Helmich Date: Mon, 25 Jan 2016 19:36:21 +0100 Subject: [PATCH 003/125] nginx module: Add ACME support for ssl sites --- .../services/web-servers/nginx/default.nix | 27 ++++++++++++++----- .../web-servers/nginx/vhost-options.nix | 14 +++++++++- 2 files changed, 34 insertions(+), 7 deletions(-) diff --git a/nixos/modules/services/web-servers/nginx/default.nix b/nixos/modules/services/web-servers/nginx/default.nix index ab5657a9aa9..a84a3c9f2a2 100644 --- a/nixos/modules/services/web-servers/nginx/default.nix +++ b/nixos/modules/services/web-servers/nginx/default.nix @@ -4,7 +4,13 @@ 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; @@ -72,21 +78,23 @@ let port = if vhost.port != null then vhost.port else (if ssl then 443 else 80); listenString = toString port + optionalString ssl " ssl spdy"; in '' - ${if vhost.forceSSL then '' + ${optionalString vhost.forceSSL '' server { listen 80; listen [::]:80; server_name ${serverName} ${concatStringsSep " " vhost.serverAliases}; + ${optionalString vhost.enableACME "location /.well-known/acme-challenge { root ${vhost.acmeRoot}; }"} return 301 https://$host${optionalString (port != 443) ":${port}"}$request_uri; } - '' else ""} + ''} server { listen ${listenString}; listen [::]:${listenString}; server_name ${serverName} ${concatStringsSep " " vhost.serverAliases}; + ${optionalString vhost.enableACME "location /.well-known/acme-challenge { root ${vhost.acmeRoot}; }"} ${optionalString (vhost.root != null) "root ${vhost.root};"} ${optionalString (vhost.globalRedirect != null) '' return 301 https://${vhost.globalRedirect}$request_uri; @@ -101,7 +109,7 @@ let ${vhost.extraConfig} } '' - ) cfg.virtualHosts); + ) virtualHosts); genLocations = locations: concatStringsSep "\n" (mapAttrsToList (location: config: '' location ${location} { ${optionalString (config.proxyPass != null) "proxy_pass ${config.proxyPass};"} @@ -202,7 +210,6 @@ in description = "Nginx Web Server"; after = [ "network.target" ]; wantedBy = [ "multi-user.target" ]; - path = [ nginx ]; preStart = '' mkdir -p ${cfg.stateDir}/logs @@ -210,7 +217,7 @@ 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 = "always"; RestartSec = "10s"; @@ -218,6 +225,14 @@ in }; }; + security.acme.certs = mapAttrs (vhostName: vhostConfig: { + webroot = vhostConfig.acmeRoot; + extraDomains = genAttrs vhostConfig.serverAliases (alias: { + "${alias}" = null; + }); + }) virtualHosts; + + users.extraUsers = optionalAttrs (cfg.user == "nginx") (singleton { name = "nginx"; group = cfg.group; diff --git a/nixos/modules/services/web-servers/nginx/vhost-options.nix b/nixos/modules/services/web-servers/nginx/vhost-options.nix index 2acb3743677..5fa3b18c24f 100644 --- a/nixos/modules/services/web-servers/nginx/vhost-options.nix +++ b/nixos/modules/services/web-servers/nginx/vhost-options.nix @@ -26,6 +26,18 @@ with lib; ''; }; + 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."; + }; + enableSSL = mkOption { type = types.bool; default = false; @@ -44,7 +56,7 @@ with lib; description = "Path to server SSL certificate."; }; - sslCertificateKey= mkOption { + sslCertificateKey = mkOption { type = types.path; example = "/var/host.key"; description = "Path to server SSL certificate key."; From 900b311a386b82ab66f209c1b9d4c292af08d6dc Mon Sep 17 00:00:00 2001 From: Tristan Helmich Date: Tue, 26 Jan 2016 14:29:30 +0100 Subject: [PATCH 004/125] nginx module: Fix ACME extraDomains, fix challenge url to not redirect to allow renewals --- nixos/modules/services/web-servers/nginx/default.nix | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/nixos/modules/services/web-servers/nginx/default.nix b/nixos/modules/services/web-servers/nginx/default.nix index a84a3c9f2a2..fb3f554bbf2 100644 --- a/nixos/modules/services/web-servers/nginx/default.nix +++ b/nixos/modules/services/web-servers/nginx/default.nix @@ -85,7 +85,9 @@ let server_name ${serverName} ${concatStringsSep " " vhost.serverAliases}; ${optionalString vhost.enableACME "location /.well-known/acme-challenge { root ${vhost.acmeRoot}; }"} - return 301 https://$host${optionalString (port != 443) ":${port}"}$request_uri; + location / { + return 301 https://$host${optionalString (port != 443) ":${port}"}$request_uri; + } } ''} @@ -227,9 +229,7 @@ in security.acme.certs = mapAttrs (vhostName: vhostConfig: { webroot = vhostConfig.acmeRoot; - extraDomains = genAttrs vhostConfig.serverAliases (alias: { - "${alias}" = null; - }); + extraDomains = genAttrs vhostConfig.serverAliases (alias: null); }) virtualHosts; From 8bd1f401bbacf7e6537528d3f2dfd9e610e346c8 Mon Sep 17 00:00:00 2001 From: Tristan Helmich Date: Mon, 1 Feb 2016 14:08:45 +0100 Subject: [PATCH 005/125] nginx module: Add sslProtocols option --- nixos/modules/services/web-servers/nginx/default.nix | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/nixos/modules/services/web-servers/nginx/default.nix b/nixos/modules/services/web-servers/nginx/default.nix index fb3f554bbf2..75ce9e26a30 100644 --- a/nixos/modules/services/web-servers/nginx/default.nix +++ b/nixos/modules/services/web-servers/nginx/default.nix @@ -30,7 +30,7 @@ let types_hash_max_size 2048; # use secure TLS defaults - ssl_protocols TLSv1.2; + ssl_protocols ${cfg.sslProtocols}; ssl_session_cache shared:SSL:42m; ssl_session_timeout 23m; @@ -191,6 +191,13 @@ in description = "Show nginx version in headers and error pages"; }; + sslProtocols = mkOption { + type = types.str; + default = "TLSv1.2"; + example = "TLSv1 TLSv1.1 TLSv1.2"; + description = "Allowed TLS protocol versions."; + }; + virtualHosts = mkOption { type = types.attrsOf (types.submodule (import ./vhost-options.nix { inherit lib; From 35d76a72aba69108a369478be6cb21914d5075a5 Mon Sep 17 00:00:00 2001 From: Tristan Helmich Date: Mon, 1 Feb 2016 14:09:13 +0100 Subject: [PATCH 006/125] nginx module: Add sslCiphers option --- nixos/modules/services/web-servers/nginx/default.nix | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/nixos/modules/services/web-servers/nginx/default.nix b/nixos/modules/services/web-servers/nginx/default.nix index 75ce9e26a30..b74a35f1e9f 100644 --- a/nixos/modules/services/web-servers/nginx/default.nix +++ b/nixos/modules/services/web-servers/nginx/default.nix @@ -34,7 +34,7 @@ let ssl_session_cache shared:SSL:42m; ssl_session_timeout 23m; - ssl_ciphers EDH+aRSA+AES256:+AESGCM:ECDHE+aRSA+AES256; + ssl_ciphers ${cfg.sslCiphers}; ssl_ecdh_curve secp521r1; ssl_prefer_server_ciphers on; @@ -191,6 +191,12 @@ in description = "Show nginx version in headers and error pages"; }; + sslCiphers = mkOption { + type = types.str; + default = "EDH+CHACHA20:EDH+AES:EECDHE+CHACHA20:ECDHE+AES:+AES128:-DSS"; + description = "Ciphers to choose from when negotiating tls handshakes."; + }; + sslProtocols = mkOption { type = types.str; default = "TLSv1.2"; From c61157b7e6512036a7abc04a45df334162b3b111 Mon Sep 17 00:00:00 2001 From: Tristan Helmich Date: Mon, 1 Feb 2016 17:30:43 +0100 Subject: [PATCH 007/125] nginx module: Add dhParams option --- nixos/modules/services/web-servers/nginx/default.nix | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/nixos/modules/services/web-servers/nginx/default.nix b/nixos/modules/services/web-servers/nginx/default.nix index b74a35f1e9f..e369505fbc3 100644 --- a/nixos/modules/services/web-servers/nginx/default.nix +++ b/nixos/modules/services/web-servers/nginx/default.nix @@ -37,6 +37,7 @@ let ssl_ciphers ${cfg.sslCiphers}; ssl_ecdh_curve secp521r1; ssl_prefer_server_ciphers on; + ${optionalString (cfg.sslDhparam != null) "ssl_dhparam ${cfg.sslDhparam};"} ssl_stapling on; ssl_stapling_verify on; @@ -204,6 +205,13 @@ in description = "Allowed TLS protocol versions."; }; + sslDhparam = mkOption { + type = types.nullOr types.path; + default = null; + example = literalExample "/path/to/dhparams.pem"; + description = "Path to DH parameters file."; + }; + virtualHosts = mkOption { type = types.attrsOf (types.submodule (import ./vhost-options.nix { inherit lib; From d5a097fdb609ec5ffb09bcab632e4b2a03ae05ca Mon Sep 17 00:00:00 2001 From: Franz Pletz Date: Mon, 8 Feb 2016 06:12:49 +0100 Subject: [PATCH 008/125] nginx module: Don't create acme certs if acme is not enabled --- nixos/modules/services/web-servers/nginx/default.nix | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/nixos/modules/services/web-servers/nginx/default.nix b/nixos/modules/services/web-servers/nginx/default.nix index e369505fbc3..18fce9672dd 100644 --- a/nixos/modules/services/web-servers/nginx/default.nix +++ b/nixos/modules/services/web-servers/nginx/default.nix @@ -248,10 +248,14 @@ in }; }; - security.acme.certs = mapAttrs (vhostName: vhostConfig: { - webroot = vhostConfig.acmeRoot; - extraDomains = genAttrs vhostConfig.serverAliases (alias: null); - }) virtualHosts; + 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 From 811f243ce6f1ce82cf93bc5b45e5879513a2a305 Mon Sep 17 00:00:00 2001 From: Franz Pletz Date: Wed, 10 Feb 2016 16:02:38 +0100 Subject: [PATCH 009/125] nginx module: Add extraConfig for locations --- nixos/modules/services/web-servers/nginx/default.nix | 1 + .../services/web-servers/nginx/location-options.nix | 8 ++++++++ 2 files changed, 9 insertions(+) diff --git a/nixos/modules/services/web-servers/nginx/default.nix b/nixos/modules/services/web-servers/nginx/default.nix index 18fce9672dd..62348d48f5d 100644 --- a/nixos/modules/services/web-servers/nginx/default.nix +++ b/nixos/modules/services/web-servers/nginx/default.nix @@ -117,6 +117,7 @@ let location ${location} { ${optionalString (config.proxyPass != null) "proxy_pass ${config.proxyPass};"} ${optionalString (config.root != null) "root ${config.root};"} + ${config.extraConfig} } '') locations); in diff --git a/nixos/modules/services/web-servers/nginx/location-options.nix b/nixos/modules/services/web-servers/nginx/location-options.nix index 6537e45a459..ce3462bed0a 100644 --- a/nixos/modules/services/web-servers/nginx/location-options.nix +++ b/nixos/modules/services/web-servers/nginx/location-options.nix @@ -27,6 +27,14 @@ with lib; Root directory for requests. ''; }; + + extraConfig = mkOption { + type = types.lines; + default = ""; + description = '' + These lines go to the end of the location verbatim. + ''; + }; }; } From 4e5c7913e9db6906b031bb8310ba811f533854d3 Mon Sep 17 00:00:00 2001 From: Franz Pletz Date: Wed, 17 Feb 2016 04:01:50 +0100 Subject: [PATCH 010/125] nginx module: Add acmeFallbackHost vhost option --- .../modules/services/web-servers/nginx/default.nix | 13 +++++++++++-- .../services/web-servers/nginx/vhost-options.nix | 9 +++++++++ 2 files changed, 20 insertions(+), 2 deletions(-) diff --git a/nixos/modules/services/web-servers/nginx/default.nix b/nixos/modules/services/web-servers/nginx/default.nix index 62348d48f5d..e48e9b6cfd8 100644 --- a/nixos/modules/services/web-servers/nginx/default.nix +++ b/nixos/modules/services/web-servers/nginx/default.nix @@ -78,6 +78,15 @@ 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 spdy"; + acmeLocation = optionalString vhost.enableACME '' + location /.well-known/acme-challenge { + try_files $uri @acme-fallback; + root ${vhost.acmeRoot}; + } + location @acme-fallback { + proxy_pass http://${vhost.acmeFallbackHost}; + } + ''; in '' ${optionalString vhost.forceSSL '' server { @@ -85,7 +94,7 @@ let listen [::]:80; server_name ${serverName} ${concatStringsSep " " vhost.serverAliases}; - ${optionalString vhost.enableACME "location /.well-known/acme-challenge { root ${vhost.acmeRoot}; }"} + ${acmeLocation} location / { return 301 https://$host${optionalString (port != 443) ":${port}"}$request_uri; } @@ -97,7 +106,7 @@ let listen [::]:${listenString}; server_name ${serverName} ${concatStringsSep " " vhost.serverAliases}; - ${optionalString vhost.enableACME "location /.well-known/acme-challenge { root ${vhost.acmeRoot}; }"} + ${acmeLocation} ${optionalString (vhost.root != null) "root ${vhost.root};"} ${optionalString (vhost.globalRedirect != null) '' return 301 https://${vhost.globalRedirect}$request_uri; diff --git a/nixos/modules/services/web-servers/nginx/vhost-options.nix b/nixos/modules/services/web-servers/nginx/vhost-options.nix index 5fa3b18c24f..61868d8890d 100644 --- a/nixos/modules/services/web-servers/nginx/vhost-options.nix +++ b/nixos/modules/services/web-servers/nginx/vhost-options.nix @@ -38,6 +38,15 @@ with lib; 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; From e18f8e8b6614499794ef704f0272bf986a906b78 Mon Sep 17 00:00:00 2001 From: Robin Gloster Date: Fri, 25 Mar 2016 00:58:45 +0000 Subject: [PATCH 011/125] nginx module: turn off basic auth on acme locations --- nixos/modules/services/web-servers/nginx/default.nix | 2 ++ 1 file changed, 2 insertions(+) diff --git a/nixos/modules/services/web-servers/nginx/default.nix b/nixos/modules/services/web-servers/nginx/default.nix index e48e9b6cfd8..b2bcb737a8f 100644 --- a/nixos/modules/services/web-servers/nginx/default.nix +++ b/nixos/modules/services/web-servers/nginx/default.nix @@ -82,8 +82,10 @@ let 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}; } ''; From ff12ee35b702dca2ed3c3b6671ac232bc850e6d7 Mon Sep 17 00:00:00 2001 From: Robin Gloster Date: Fri, 25 Mar 2016 00:59:34 +0000 Subject: [PATCH 012/125] nginx module: redirect to same protocol --- nixos/modules/services/web-servers/nginx/default.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/nixos/modules/services/web-servers/nginx/default.nix b/nixos/modules/services/web-servers/nginx/default.nix index b2bcb737a8f..37526255f8a 100644 --- a/nixos/modules/services/web-servers/nginx/default.nix +++ b/nixos/modules/services/web-servers/nginx/default.nix @@ -111,7 +111,7 @@ let ${acmeLocation} ${optionalString (vhost.root != null) "root ${vhost.root};"} ${optionalString (vhost.globalRedirect != null) '' - return 301 https://${vhost.globalRedirect}$request_uri; + return 301 http${optionalString ssl "s"}://${vhost.globalRedirect}$request_uri; ''} ${optionalString ssl '' ssl_certificate ${vhost.sslCertificate}; From 138945500ee71eaac71435a78f627f9c83d035f4 Mon Sep 17 00:00:00 2001 From: Robin Gloster Date: Fri, 25 Mar 2016 01:00:09 +0000 Subject: [PATCH 013/125] nginx module: implement basic auth --- .../services/web-servers/nginx/default.nix | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/nixos/modules/services/web-servers/nginx/default.nix b/nixos/modules/services/web-servers/nginx/default.nix index 37526255f8a..d4c7cb08eef 100644 --- a/nixos/modules/services/web-servers/nginx/default.nix +++ b/nixos/modules/services/web-servers/nginx/default.nix @@ -118,19 +118,31 @@ let ssl_certificate_key ${vhost.sslCertificateKey}; ''} - ${genLocations vhost.locations} + ${optionalString (vhost.basicAuth != {}) (mkBasicAuth serverName vhost.basicAuth)} + + ${mkLocations vhost.locations} ${vhost.extraConfig} } '' ) virtualHosts); - genLocations = locations: concatStringsSep "\n" (mapAttrsToList (location: config: '' + 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 { From 3830a890ab42b35cd4da9991edef47b3c832cbdc Mon Sep 17 00:00:00 2001 From: Robin Gloster Date: Sun, 3 Apr 2016 10:58:34 +0000 Subject: [PATCH 014/125] nginx module: add option to make vhost default --- nixos/modules/services/web-servers/nginx/default.nix | 7 ++++--- .../modules/services/web-servers/nginx/vhost-options.nix | 8 ++++++++ 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/nixos/modules/services/web-servers/nginx/default.nix b/nixos/modules/services/web-servers/nginx/default.nix index d4c7cb08eef..e912434e6b0 100644 --- a/nixos/modules/services/web-servers/nginx/default.nix +++ b/nixos/modules/services/web-servers/nginx/default.nix @@ -77,7 +77,8 @@ let 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 spdy"; + listenString = toString port + optionalString ssl " ssl spdy" + + optionalString vhost.default " default"; acmeLocation = optionalString vhost.enableACME '' location /.well-known/acme-challenge { try_files $uri @acme-fallback; @@ -92,8 +93,8 @@ let in '' ${optionalString vhost.forceSSL '' server { - listen 80; - listen [::]:80; + listen 80 ${optionalString vhost.default "default"}; + listen [::]:80 ${optionalString vhost.default "default"}; server_name ${serverName} ${concatStringsSep " " vhost.serverAliases}; ${acmeLocation} diff --git a/nixos/modules/services/web-servers/nginx/vhost-options.nix b/nixos/modules/services/web-servers/nginx/vhost-options.nix index 61868d8890d..d684d7c1ff6 100644 --- a/nixos/modules/services/web-servers/nginx/vhost-options.nix +++ b/nixos/modules/services/web-servers/nginx/vhost-options.nix @@ -80,6 +80,14 @@ with lib; ''; }; + default = mkOption { + type = types.bool; + default = false; + description = '' + Makes this vhost the default. + ''; + }; + extraConfig = mkOption { type = types.lines; default = ""; From e982aeae6a2ab4f414b1a505852d69271cb779ae Mon Sep 17 00:00:00 2001 From: Franz Pletz Date: Thu, 7 Apr 2016 17:27:31 +0200 Subject: [PATCH 015/125] nginx module: Add default proxy headers for tomcat --- nixos/modules/services/web-servers/nginx/default.nix | 2 ++ 1 file changed, 2 insertions(+) diff --git a/nixos/modules/services/web-servers/nginx/default.nix b/nixos/modules/services/web-servers/nginx/default.nix index e912434e6b0..1338f6aec22 100644 --- a/nixos/modules/services/web-servers/nginx/default.nix +++ b/nixos/modules/services/web-servers/nginx/default.nix @@ -54,6 +54,8 @@ let 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; From de8008a1b182ea2eb1740f8ca2aa2f7e3f37b5e1 Mon Sep 17 00:00:00 2001 From: Franz Pletz Date: Fri, 29 Apr 2016 09:17:30 +0200 Subject: [PATCH 016/125] nginx module: Enable http2 --- nixos/modules/services/web-servers/nginx/default.nix | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/nixos/modules/services/web-servers/nginx/default.nix b/nixos/modules/services/web-servers/nginx/default.nix index 1338f6aec22..1978de6da6e 100644 --- a/nixos/modules/services/web-servers/nginx/default.nix +++ b/nixos/modules/services/web-servers/nginx/default.nix @@ -35,7 +35,7 @@ let ssl_session_timeout 23m; ssl_ciphers ${cfg.sslCiphers}; - ssl_ecdh_curve secp521r1; + ssl_ecdh_curve secp384r1; ssl_prefer_server_ciphers on; ${optionalString (cfg.sslDhparam != null) "ssl_dhparam ${cfg.sslDhparam};"} @@ -79,7 +79,7 @@ let 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 spdy" + listenString = toString port + optionalString ssl " ssl http2" + optionalString vhost.default " default"; acmeLocation = optionalString vhost.enableACME '' location /.well-known/acme-challenge { @@ -221,7 +221,7 @@ in sslCiphers = mkOption { type = types.str; - default = "EDH+CHACHA20:EDH+AES:EECDHE+CHACHA20:ECDHE+AES:+AES128:-DSS"; + 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."; }; From 5dd7cf964ac4f65b4d4ae35fcd7f553b7cbae1c0 Mon Sep 17 00:00:00 2001 From: Robin Gloster Date: Mon, 9 May 2016 14:46:44 +0000 Subject: [PATCH 017/125] nginx module: improve documentation --- .../services/web-servers/nginx/default.nix | 15 +++++++++--- .../web-servers/nginx/vhost-options.nix | 23 +++++++++++++++---- 2 files changed, 31 insertions(+), 7 deletions(-) diff --git a/nixos/modules/services/web-servers/nginx/default.nix b/nixos/modules/services/web-servers/nginx/default.nix index 1978de6da6e..b3889cb0294 100644 --- a/nixos/modules/services/web-servers/nginx/default.nix +++ b/nixos/modules/services/web-servers/nginx/default.nix @@ -235,7 +235,7 @@ in sslDhparam = mkOption { type = types.nullOr types.path; default = null; - example = literalExample "/path/to/dhparams.pem"; + example = "/path/to/dhparams.pem"; description = "Path to DH parameters file."; }; @@ -246,9 +246,18 @@ in default = { localhost = {}; }; - example = []; - description = '' + example = literalExample '' + { + "hydra.example.com" = { + forceSSL = true; + enableACME = true; + locations."/" = { + proxyPass = "http://localhost:3000"; + }; + }; + }; ''; + description = "Declarative vhost config"; }; }; }; diff --git a/nixos/modules/services/web-servers/nginx/vhost-options.nix b/nixos/modules/services/web-servers/nginx/vhost-options.nix index d684d7c1ff6..ee3f68bf805 100644 --- a/nixos/modules/services/web-servers/nginx/vhost-options.nix +++ b/nixos/modules/services/web-servers/nginx/vhost-options.nix @@ -21,7 +21,7 @@ with lib; type = types.nullOr types.int; default = null; description = '' - Port for the server. 80 for http + Port for the server. Defaults to 80 for http and 443 for https (i.e. when enableSSL is set). ''; }; @@ -109,7 +109,17 @@ with lib; basicAuth = mkOption { type = types.attrsOf types.str; default = {}; - description = "user = password"; + 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 { @@ -117,9 +127,14 @@ with lib; inherit lib; })); default = {}; - example = {}; - description = '' + example = literalExample '' + { + "/" = { + proxyPass = "http://localhost:3000"; + }; + }; ''; + description = "Declarative location config"; }; }; } From 186a8400ed80f08d977d8c2d94644d4027b11f45 Mon Sep 17 00:00:00 2001 From: Robin Gloster Date: Mon, 25 Jul 2016 15:10:36 +0000 Subject: [PATCH 018/125] nginx module: make httpConfig backward compatible --- nixos/modules/services/web-servers/nginx/default.nix | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/nixos/modules/services/web-servers/nginx/default.nix b/nixos/modules/services/web-servers/nginx/default.nix index b3889cb0294..6b6ad0d9b98 100644 --- a/nixos/modules/services/web-servers/nginx/default.nix +++ b/nixos/modules/services/web-servers/nginx/default.nix @@ -70,8 +70,14 @@ let server_tokens ${if cfg.serverTokens then "on" else "off"}; ${vhosts} + } + ${optionalString (cfg.httpConfig != "") '' + http { + include ${cfg.package}/conf/mime.types; + include ${cfg.package}/conf/fastcgi.conf; ${cfg.httpConfig} } + ''} ${cfg.appendConfig} ''; From a294ad01b38d9108e02d18aa9788143c15d1e151 Mon Sep 17 00:00:00 2001 From: Robin Gloster Date: Mon, 25 Jul 2016 16:07:53 +0000 Subject: [PATCH 019/125] nginx module: make recommended settings optional --- .../services/web-servers/nginx/default.nix | 110 +++++++++++------- 1 file changed, 70 insertions(+), 40 deletions(-) diff --git a/nixos/modules/services/web-servers/nginx/default.nix b/nixos/modules/services/web-servers/nginx/default.nix index 6b6ad0d9b98..c8486d3bfcd 100644 --- a/nixos/modules/services/web-servers/nginx/default.nix +++ b/nixos/modules/services/web-servers/nginx/default.nix @@ -16,61 +16,65 @@ let error_log stderr; daemon off; - ${cfg.config} - http { include ${cfg.package}/conf/mime.types; include ${cfg.package}/conf/fastcgi.conf; - # optimisation - sendfile on; - tcp_nopush on; - tcp_nodelay on; - keepalive_timeout 65; - types_hash_max_size 2048; + ${optionalString (cfg.recommendedOptimisation) '' + # optimisation + sendfile on; + tcp_nopush on; + tcp_nodelay on; + keepalive_timeout 65; + types_hash_max_size 2048; + ''} - # use secure TLS defaults ssl_protocols ${cfg.sslProtocols}; - ssl_session_cache shared:SSL:42m; - ssl_session_timeout 23m; - ssl_ciphers ${cfg.sslCiphers}; - ssl_ecdh_curve secp384r1; - ssl_prefer_server_ciphers on; ${optionalString (cfg.sslDhparam != null) "ssl_dhparam ${cfg.sslDhparam};"} - ssl_stapling on; - ssl_stapling_verify on; + ${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; + ''} - gzip on; - gzip_disable "msie6"; - gzip_proxied any; - gzip_comp_level 9; - gzip_buffers 16 8k; - gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript; + ${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; + ''} - # sane proxy settings/headers - 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 ""; + ${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; + ''} - proxy_redirect off; client_max_body_size 10m; - client_body_buffer_size 128k; - proxy_connect_timeout 90; - proxy_send_timeout 90; - proxy_read_timeout 90; - proxy_buffers 32 4k; - proxy_buffer_size 8k; - proxy_http_version 1.0; server_tokens ${if cfg.serverTokens then "on" else "off"}; ${vhosts} } + + ${cfg.config} + + # Keep this seperate to allow overriding previous settings ${optionalString (cfg.httpConfig != "") '' http { include ${cfg.package}/conf/mime.types; @@ -157,11 +161,37 @@ in { options = { services.nginx = { - enable = mkOption { + enable = mkEnableOption "Nginx Web Server"; + + recommendedTlsSettings = mkOption { default = false; type = types.bool; description = " - Enable the nginx Web Server. + 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. "; }; From 91680de317b0a134c5a6b6bad441013aa6ed233a Mon Sep 17 00:00:00 2001 From: Robin Gloster Date: Tue, 26 Jul 2016 14:09:05 +0000 Subject: [PATCH 020/125] nginx module: add statusPage option --- .../services/web-servers/nginx/default.nix | 24 +++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/nixos/modules/services/web-servers/nginx/default.nix b/nixos/modules/services/web-servers/nginx/default.nix index c8486d3bfcd..1e5a8b9bc35 100644 --- a/nixos/modules/services/web-servers/nginx/default.nix +++ b/nixos/modules/services/web-servers/nginx/default.nix @@ -69,7 +69,23 @@ let client_max_body_size 10m; 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; + allow 127.0.0.1; + deny all; + } + } + ''} } ${cfg.config} @@ -163,6 +179,14 @@ in services.nginx = { enable = mkEnableOption "Nginx Web Server"; + statusPage = mkOption { + default = false; + type = types.bool; + description = " + Enable status page reachable from localhost on http://127.0.0.1/nginx_status. + "; + }; + recommendedTlsSettings = mkOption { default = false; type = types.bool; From 8c61b3af0398b1ec93d2abb2b80fa97099155b1c Mon Sep 17 00:00:00 2001 From: Tristan Helmich Date: Tue, 26 Jul 2016 18:11:16 +0200 Subject: [PATCH 021/125] nginx: fixed duplicate http declaration --- nixos/modules/services/web-servers/nginx/default.nix | 12 +++--------- 1 file changed, 3 insertions(+), 9 deletions(-) diff --git a/nixos/modules/services/web-servers/nginx/default.nix b/nixos/modules/services/web-servers/nginx/default.nix index 1e5a8b9bc35..d6b9836498d 100644 --- a/nixos/modules/services/web-servers/nginx/default.nix +++ b/nixos/modules/services/web-servers/nginx/default.nix @@ -16,6 +16,8 @@ let error_log stderr; daemon off; + ${cfg.config} + http { include ${cfg.package}/conf/mime.types; include ${cfg.package}/conf/fastcgi.conf; @@ -86,18 +88,10 @@ let } } ''} - } - ${cfg.config} - - # Keep this seperate to allow overriding previous settings - ${optionalString (cfg.httpConfig != "") '' - http { - include ${cfg.package}/conf/mime.types; - include ${cfg.package}/conf/fastcgi.conf; ${cfg.httpConfig} } - ''} + ${cfg.appendConfig} ''; From 511410789be5ef0baa441b1a684b3dff63d33704 Mon Sep 17 00:00:00 2001 From: Robin Gloster Date: Wed, 27 Jul 2016 13:47:31 +0000 Subject: [PATCH 022/125] nginx module: make client_max_body_size configurable --- nixos/modules/services/web-servers/nginx/default.nix | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/nixos/modules/services/web-servers/nginx/default.nix b/nixos/modules/services/web-servers/nginx/default.nix index d6b9836498d..62737a28935 100644 --- a/nixos/modules/services/web-servers/nginx/default.nix +++ b/nixos/modules/services/web-servers/nginx/default.nix @@ -68,7 +68,7 @@ let proxy_http_version 1.0; ''} - client_max_body_size 10m; + client_max_body_size ${cfg.clientMaxBodySize}; server_tokens ${if cfg.serverTokens then "on" else "off"}; @@ -270,7 +270,13 @@ in serverTokens = mkOption { type = types.bool; default = false; - description = "Show nginx version in headers and error pages"; + 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 { From 3ccfca7d6b6a642bbe7075d09e4ffc0a89743038 Mon Sep 17 00:00:00 2001 From: Robin Gloster Date: Wed, 27 Jul 2016 13:48:13 +0000 Subject: [PATCH 023/125] nginx module: httpConfig backward compatibility Revert httpConfig its old behaviour and make it mutually exclusive to the new structured configuration. Adds appendHttpConfig to have the ability to write custom config in the generated http block. --- .../services/web-servers/nginx/default.nix | 28 +++++++++++++++++-- 1 file changed, 25 insertions(+), 3 deletions(-) diff --git a/nixos/modules/services/web-servers/nginx/default.nix b/nixos/modules/services/web-servers/nginx/default.nix index 62737a28935..ba3618cc101 100644 --- a/nixos/modules/services/web-servers/nginx/default.nix +++ b/nixos/modules/services/web-servers/nginx/default.nix @@ -18,6 +18,7 @@ let ${cfg.config} + ${optionalString (cfg.httpConfig == "") '' http { include ${cfg.package}/conf/mime.types; include ${cfg.package}/conf/fastcgi.conf; @@ -89,8 +90,15 @@ let } ''} + ${cfg.appendHttpConfig} + }''} + + ${optionalString (cfg.httpConfig != "") '' + http { + include ${cfg.package}/conf/mime.types; + include ${cfg.package}/conf/fastcgi.conf; ${cfg.httpConfig} - } + }''} ${cfg.appendConfig} ''; @@ -245,7 +253,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 { @@ -353,7 +376,6 @@ in ) virtualHosts ); - users.extraUsers = optionalAttrs (cfg.user == "nginx") (singleton { name = "nginx"; group = cfg.group; From a193fecf0ef3fb2d048981217d6de7a051212e44 Mon Sep 17 00:00:00 2001 From: Robin Gloster Date: Wed, 27 Jul 2016 13:49:46 +0000 Subject: [PATCH 024/125] nginx module: improve statusPage generated code Adds ::1 as allowed host and turns of access_log for the status page. --- nixos/modules/services/web-servers/nginx/default.nix | 2 ++ 1 file changed, 2 insertions(+) diff --git a/nixos/modules/services/web-servers/nginx/default.nix b/nixos/modules/services/web-servers/nginx/default.nix index ba3618cc101..8385d8e6026 100644 --- a/nixos/modules/services/web-servers/nginx/default.nix +++ b/nixos/modules/services/web-servers/nginx/default.nix @@ -84,7 +84,9 @@ let location /nginx_status { stub_status on; + access_log off; allow 127.0.0.1; + allow ::1; deny all; } } From 1da6775775e3695ff206bdcd3fca945bf5331101 Mon Sep 17 00:00:00 2001 From: Frederik Rietdijk Date: Thu, 7 Jul 2016 14:05:05 +0200 Subject: [PATCH 025/125] Python: move interpreters Move Python interpreters (CPython, PyPy) to same folder and share layout. --- .../python/{ => cpython}/2.6/default.nix | 4 ++-- .../{ => cpython}/2.6/nix-store-mtime.patch | 0 .../2.6/python2.6-fix-parallel-make.patch | 0 .../{ => cpython}/2.6/search-path.patch | 0 .../python/{ => cpython}/2.6/setup-hook.sh | 0 .../2.7/2.5.2-ctypes-util-find_library.patch | 0 .../{ => cpython}/2.7/2.5.2-tkinter-x11.patch | 0 .../{ => cpython}/2.7/2.6.2-ssl-threads.patch | 0 .../{ => cpython}/2.7/2.6.5-FD_SETSIZE.patch | 0 .../2.6.5-export-PySignal_SetWakeupFd.patch | 0 .../2.7/2.6.5-ncurses-abi6.patch | 0 .../python/{ => cpython}/2.7/2.7.3-dbm.patch | 0 .../{ => cpython}/2.7/2.7.3-dylib.patch | 0 .../2.7/2.7.3-getpath-exe-extension.patch | 0 .../{ => cpython}/2.7/2.7.3-no-libm.patch | 0 .../python/{ => cpython}/2.7/default.nix | 4 ++-- .../2.7/deterministic-build.patch | 0 .../{ => cpython}/2.7/nix-store-mtime.patch | 0 .../{ => cpython}/2.7/no-ldconfig.patch | 0 .../2.7/properly-detect-curses.patch | 0 .../{ => cpython}/2.7/search-path.patch | 0 .../python/{ => cpython}/2.7/setup-hook.sh | 0 .../python/{ => cpython}/3.3/default.nix | 4 ++-- .../python/{ => cpython}/3.3/setup-hook.sh | 0 .../python/{ => cpython}/3.4/default.nix | 4 ++-- .../python/{ => cpython}/3.4/setup-hook.sh | 0 .../python/{ => cpython}/3.5/default.nix | 4 ++-- .../python/{ => cpython}/3.5/setup-hook.sh | 0 .../python/{ => cpython}/3.6/default.nix | 4 ++-- .../python/{ => cpython}/3.6/setup-hook.sh | 0 .../python/{ => cpython}/docs/2.6-html.nix | 0 .../python/{ => cpython}/docs/2.6-pdf-a4.nix | 0 .../{ => cpython}/docs/2.6-pdf-letter.nix | 0 .../python/{ => cpython}/docs/2.6-text.nix | 0 .../python/{ => cpython}/docs/2.7-html.nix | 0 .../python/{ => cpython}/docs/2.7-pdf-a4.nix | 0 .../{ => cpython}/docs/2.7-pdf-letter.nix | 0 .../python/{ => cpython}/docs/2.7-text.nix | 0 .../python/{ => cpython}/docs/3.3-html.nix | 0 .../python/{ => cpython}/docs/3.3-pdf-a4.nix | 0 .../{ => cpython}/docs/3.3-pdf-letter.nix | 0 .../python/{ => cpython}/docs/3.3-text.nix | 0 .../python/{ => cpython}/docs/default.nix | 0 .../python/{ => cpython}/docs/generate.sh | 0 .../python/{ => cpython}/docs/template.nix | 0 .../{pypy => python/pypy/2.7}/default.nix | 4 ++-- .../{pypy => python/pypy/2.7}/setup-hook.sh | 0 pkgs/top-level/all-packages.nix | 21 +++++++++++-------- 48 files changed, 26 insertions(+), 23 deletions(-) rename pkgs/development/interpreters/python/{ => cpython}/2.6/default.nix (97%) rename pkgs/development/interpreters/python/{ => cpython}/2.6/nix-store-mtime.patch (100%) rename pkgs/development/interpreters/python/{ => cpython}/2.6/python2.6-fix-parallel-make.patch (100%) rename pkgs/development/interpreters/python/{ => cpython}/2.6/search-path.patch (100%) rename pkgs/development/interpreters/python/{ => cpython}/2.6/setup-hook.sh (100%) rename pkgs/development/interpreters/python/{ => cpython}/2.7/2.5.2-ctypes-util-find_library.patch (100%) rename pkgs/development/interpreters/python/{ => cpython}/2.7/2.5.2-tkinter-x11.patch (100%) rename pkgs/development/interpreters/python/{ => cpython}/2.7/2.6.2-ssl-threads.patch (100%) rename pkgs/development/interpreters/python/{ => cpython}/2.7/2.6.5-FD_SETSIZE.patch (100%) rename pkgs/development/interpreters/python/{ => cpython}/2.7/2.6.5-export-PySignal_SetWakeupFd.patch (100%) rename pkgs/development/interpreters/python/{ => cpython}/2.7/2.6.5-ncurses-abi6.patch (100%) rename pkgs/development/interpreters/python/{ => cpython}/2.7/2.7.3-dbm.patch (100%) rename pkgs/development/interpreters/python/{ => cpython}/2.7/2.7.3-dylib.patch (100%) rename pkgs/development/interpreters/python/{ => cpython}/2.7/2.7.3-getpath-exe-extension.patch (100%) rename pkgs/development/interpreters/python/{ => cpython}/2.7/2.7.3-no-libm.patch (100%) rename pkgs/development/interpreters/python/{ => cpython}/2.7/default.nix (98%) rename pkgs/development/interpreters/python/{ => cpython}/2.7/deterministic-build.patch (100%) rename pkgs/development/interpreters/python/{ => cpython}/2.7/nix-store-mtime.patch (100%) rename pkgs/development/interpreters/python/{ => cpython}/2.7/no-ldconfig.patch (100%) rename pkgs/development/interpreters/python/{ => cpython}/2.7/properly-detect-curses.patch (100%) rename pkgs/development/interpreters/python/{ => cpython}/2.7/search-path.patch (100%) rename pkgs/development/interpreters/python/{ => cpython}/2.7/setup-hook.sh (100%) rename pkgs/development/interpreters/python/{ => cpython}/3.3/default.nix (95%) rename pkgs/development/interpreters/python/{ => cpython}/3.3/setup-hook.sh (100%) rename pkgs/development/interpreters/python/{ => cpython}/3.4/default.nix (95%) rename pkgs/development/interpreters/python/{ => cpython}/3.4/setup-hook.sh (100%) rename pkgs/development/interpreters/python/{ => cpython}/3.5/default.nix (95%) rename pkgs/development/interpreters/python/{ => cpython}/3.5/setup-hook.sh (100%) rename pkgs/development/interpreters/python/{ => cpython}/3.6/default.nix (95%) rename pkgs/development/interpreters/python/{ => cpython}/3.6/setup-hook.sh (100%) rename pkgs/development/interpreters/python/{ => cpython}/docs/2.6-html.nix (100%) rename pkgs/development/interpreters/python/{ => cpython}/docs/2.6-pdf-a4.nix (100%) rename pkgs/development/interpreters/python/{ => cpython}/docs/2.6-pdf-letter.nix (100%) rename pkgs/development/interpreters/python/{ => cpython}/docs/2.6-text.nix (100%) rename pkgs/development/interpreters/python/{ => cpython}/docs/2.7-html.nix (100%) rename pkgs/development/interpreters/python/{ => cpython}/docs/2.7-pdf-a4.nix (100%) rename pkgs/development/interpreters/python/{ => cpython}/docs/2.7-pdf-letter.nix (100%) rename pkgs/development/interpreters/python/{ => cpython}/docs/2.7-text.nix (100%) rename pkgs/development/interpreters/python/{ => cpython}/docs/3.3-html.nix (100%) rename pkgs/development/interpreters/python/{ => cpython}/docs/3.3-pdf-a4.nix (100%) rename pkgs/development/interpreters/python/{ => cpython}/docs/3.3-pdf-letter.nix (100%) rename pkgs/development/interpreters/python/{ => cpython}/docs/3.3-text.nix (100%) rename pkgs/development/interpreters/python/{ => cpython}/docs/default.nix (100%) rename pkgs/development/interpreters/python/{ => cpython}/docs/generate.sh (100%) rename pkgs/development/interpreters/python/{ => cpython}/docs/template.nix (100%) rename pkgs/development/interpreters/{pypy => python/pypy/2.7}/default.nix (96%) rename pkgs/development/interpreters/{pypy => python/pypy/2.7}/setup-hook.sh (100%) 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/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index dd5c5541462..b78dfb4bc26 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -5879,31 +5879,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; @@ -5919,7 +5922,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; }; From 9045a8e24c4c4a981b76df7d6ddcde99a7606831 Mon Sep 17 00:00:00 2001 From: Arnold Krille Date: Sat, 7 May 2016 00:04:28 +0200 Subject: [PATCH 026/125] declarative containers: additional veths With these changes, a container can have more then one veth-pair. This allows for example to have LAN and DMZ as bridges on the host and add dedicated containers for proxies, ipv4-firewall and ipv6-firewall. Or to have a bridge for normal WAN, one bridge for administration and one bridge for customer-internal communication. So that web-server containers can be reached from outside per http, from the management via ssh and can talk to their database via the customer network. The scripts to set up the containers are now rendered several times instead of just one template. The scripts now contain per-container code to configure the extra veth interfaces. The default template without support for extra-veths is still rendered for the imperative containers. Also a test is there to see if extra veths can be placed into host-bridges or can be reached via routing. --- nixos/modules/virtualisation/containers.nix | 463 ++++++++++++-------- nixos/release.nix | 1 + nixos/tests/containers-extra_veth.nix | 103 +++++ 3 files changed, 386 insertions(+), 181 deletions(-) create mode 100644 nixos/tests/containers-extra_veth.nix 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..68f06a83298 100644 --- a/nixos/release.nix +++ b/nixos/release.nix @@ -218,6 +218,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-extra_veth.nix b/nixos/tests/containers-extra_veth.nix new file mode 100644 index 00000000000..26de2998d2f --- /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 = [ aristid aszlig eelco chaoflow ]; + }; + + 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"); + ''; +}) From 07de11f165cfb6e6357938a434e29b2fa8911cbd Mon Sep 17 00:00:00 2001 From: Arnold Krille Date: Mon, 16 May 2016 13:06:40 +0200 Subject: [PATCH 027/125] containers: add myself to the maintainers of the tests Seems like the right thing to do. --- nixos/tests/containers-bridge.nix | 2 +- nixos/tests/containers-extra_veth.nix | 2 +- nixos/tests/containers-imperative.nix | 2 +- nixos/tests/containers-ipv4.nix | 2 +- nixos/tests/containers-ipv6.nix | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) 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 index 26de2998d2f..2a54b1d961c 100644 --- a/nixos/tests/containers-extra_veth.nix +++ b/nixos/tests/containers-extra_veth.nix @@ -3,7 +3,7 @@ import ./make-test.nix ({ pkgs, ...} : { name = "containers-bridge"; meta = with pkgs.stdenv.lib.maintainers; { - maintainers = [ aristid aszlig eelco chaoflow ]; + maintainers = [ kampfschlaefer ]; }; machine = 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 = From e362442562576dcf76e914a69e0cc8557311635b Mon Sep 17 00:00:00 2001 From: Thomas Tuegel Date: Sun, 17 Jul 2016 14:08:29 -0500 Subject: [PATCH 028/125] kde5: avoid propagating dev outputs to reduce closure size --- .../libraries/kde-frameworks/setup-hook.sh | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/pkgs/development/libraries/kde-frameworks/setup-hook.sh b/pkgs/development/libraries/kde-frameworks/setup-hook.sh index 5363f4e30fd..285ad552253 100644 --- a/pkgs/development/libraries/kde-frameworks/setup-hook.sh +++ b/pkgs/development/libraries/kde-frameworks/setup-hook.sh @@ -22,12 +22,13 @@ _ecmSharePaths=( \ "polkit-1" \ "sounds" \ "templates" \ - "wallpapers" \ - ) + "wallpapers" ) _ecmPropagateNative() { + local target for dir in ${_ecmSharePaths[@]}; do - if [ -d "$1/share/$dir" ]; then + target=$(readlink -m "$1/share/$dir") + if [ "$target" != "$1/share" ] && [ -d "$target" ]; then propagateOnce propagatedNativeBuildInputs "$1" if [ -z "$crossConfig" ]; then propagateOnce propagatedUserEnvPkgs "$1" @@ -41,8 +42,10 @@ _ecmPropagateNative() { envHooks+=(_ecmSetXdgDirs _ecmPropagate) _ecmPropagate() { + local target for dir in ${_ecmSharePaths[@]}; do - if [ -d "$1/share/$dir" ]; then + target=$(readlink -m "$1/share/$dir") + if [ "$target" != "$1/share" ] && [ -d "$target" ]; then propagateOnce propagatedBuildInputs "$1" propagateOnce propagatedUserEnvPkgs "$1" addToSearchPathOnce RUNTIME_XDG_DATA_DIRS "$1/share" From 795cfd578a4ec8c9b78b39cf60102904a23af993 Mon Sep 17 00:00:00 2001 From: Thomas Tuegel Date: Sun, 17 Jul 2016 15:42:41 -0500 Subject: [PATCH 029/125] kde5.plasma: unwrap everything --- pkgs/desktops/kde-5/plasma/bluedevil.nix | 16 +++++------- pkgs/desktops/kde-5/plasma/kde-cli-tools.nix | 25 ++++++------------- pkgs/desktops/kde-5/plasma/kinfocenter.nix | 11 ++------ pkgs/desktops/kde-5/plasma/kmenuedit.nix | 11 ++------ pkgs/desktops/kde-5/plasma/kscreen.nix | 10 ++------ pkgs/desktops/kde-5/plasma/kscreenlocker.nix | 5 +--- pkgs/desktops/kde-5/plasma/ksshaskpass.nix | 7 ++---- pkgs/desktops/kde-5/plasma/ksysguard.nix | 11 ++------ pkgs/desktops/kde-5/plasma/kwin/default.nix | 5 ---- .../kde-5/plasma/plasma-desktop/default.nix | 18 ++----------- .../kde-5/plasma/plasma-nm/default.nix | 11 ++------ .../plasma/plasma-workspace-wallpapers.nix | 1 + .../kde-5/plasma/plasma-workspace/default.nix | 4 +-- .../kde-5/plasma/polkit-kde-agent.nix | 20 ++++----------- pkgs/desktops/kde-5/plasma/powerdevil.nix | 5 +--- pkgs/desktops/kde-5/plasma/systemsettings.nix | 3 --- 16 files changed, 36 insertions(+), 127 deletions(-) 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" - ''; } From 83a2d74a7ce8011e76f0dc5f0332b2a005249763 Mon Sep 17 00:00:00 2001 From: Christine Koppelt Date: Sat, 30 Jul 2016 21:50:34 +0200 Subject: [PATCH 030/125] redis: 3.0.7 -> 3.2.2 --- pkgs/servers/nosql/redis/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) 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 ]; From 86cf45338a7c43d9e2b2b2fb4cc41f14aca85398 Mon Sep 17 00:00:00 2001 From: Bart Brouns Date: Sat, 30 Jul 2016 21:51:41 +0200 Subject: [PATCH 031/125] zam-plugins: 3.6 -> 3.7 --- pkgs/applications/audio/zam-plugins/default.nix | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) 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 = [ From c122f791c95db53a0d86d0dffc9e4a7b2fda12bd Mon Sep 17 00:00:00 2001 From: Thomas Tuegel Date: Sat, 30 Jul 2016 16:16:36 -0500 Subject: [PATCH 032/125] Add kdeEnv and kdeWrapper --- .../kde-5/applications/dolphin-plugins.nix | 4 +- pkgs/desktops/kde-5/applications/dolphin.nix | 47 +++---- .../libraries/kde-frameworks/default.nix | 16 ++- .../libraries/kde-frameworks/kde-env.nix | 34 +++++ .../libraries/kde-frameworks/kde-wrapper.nix | 47 +++++++ .../libraries/kde-frameworks/setup-hook.sh | 117 +++++------------- 6 files changed, 158 insertions(+), 107 deletions(-) create mode 100644 pkgs/development/libraries/kde-frameworks/kde-env.nix create mode 100644 pkgs/development/libraries/kde-frameworks/kde-wrapper.nix 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..27e4a38741e 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, + 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 ]; } diff --git a/pkgs/development/libraries/kde-frameworks/default.nix b/pkgs/development/libraries/kde-frameworks/default.nix index 74e9df114f0..d5164297161 100644 --- a/pkgs/development/libraries/kde-frameworks/default.nix +++ b/pkgs/development/libraries/kde-frameworks/default.nix @@ -24,7 +24,10 @@ let let in stdenv.mkDerivation (args // { - outputs = args.outputs or [ "dev" "out" ]; + outputs = args.outputs or [ "dev" "out" "bin" ]; + + propagatedUserEnvPkgs = + builtins.map lib.getBin (args.propagatedBuildInputs or []); cmakeFlags = (args.cmakeFlags or []) @@ -50,6 +53,17 @@ let } // (args.meta or {}); }); + kdeEnv = import ./kde-env.nix { + inherit (pkgs) stdenv lib; + inherit (pkgs.xorg) lndir; + inherit ecmNoHooks; + }; + + 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..f4ad528454b --- /dev/null +++ b/pkgs/development/libraries/kde-frameworks/kde-env.nix @@ -0,0 +1,34 @@ +{ stdenv, lib, lndir, ecmNoHooks }: + +name: pkgs: + +let + inherit (builtins.parseDrvName ecmNoHooks.name) version; +in +stdenv.mkDerivation { + name = "kde-env-${name}"; + nativeBuildInputs = [ lndir ]; + propagatedUserEnvPkgs = builtins.map lib.getBin 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..3d0c104c905 --- /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.name ([ 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 : "$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 285ad552253..a1638ca541b 100644 --- a/pkgs/development/libraries/kde-frameworks/setup-hook.sh +++ b/pkgs/development/libraries/kde-frameworks/setup-hook.sh @@ -1,60 +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() { - local target - for dir in ${_ecmSharePaths[@]}; do - target=$(readlink -m "$1/share/$dir") - if [ "$target" != "$1/share" ] && [ -d "$target" ]; 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() { - local target - for dir in ${_ecmSharePaths[@]}; do - target=$(readlink -m "$1/share/$dir") - if [ "$target" != "$1/share" ] && [ -d "$target" ]; 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. @@ -62,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) From aaf612e833e6813245dd1c913b2a121fcfca3e06 Mon Sep 17 00:00:00 2001 From: Thomas Tuegel Date: Sat, 30 Jul 2016 16:26:05 -0500 Subject: [PATCH 033/125] kdeDerivation: don't fail by default on library-only packages --- pkgs/development/libraries/kde-frameworks/default.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkgs/development/libraries/kde-frameworks/default.nix b/pkgs/development/libraries/kde-frameworks/default.nix index d5164297161..5962c16860d 100644 --- a/pkgs/development/libraries/kde-frameworks/default.nix +++ b/pkgs/development/libraries/kde-frameworks/default.nix @@ -24,7 +24,7 @@ let let in stdenv.mkDerivation (args // { - outputs = args.outputs or [ "dev" "out" "bin" ]; + outputs = args.outputs or [ "dev" "out" ]; propagatedUserEnvPkgs = builtins.map lib.getBin (args.propagatedBuildInputs or []); From 22bc6f01cfaa86953802060138128a2783781b4d Mon Sep 17 00:00:00 2001 From: Thomas Tuegel Date: Sat, 30 Jul 2016 17:07:06 -0500 Subject: [PATCH 034/125] kdeEnv: use package version, not ecm version --- pkgs/development/libraries/kde-frameworks/default.nix | 1 - pkgs/development/libraries/kde-frameworks/kde-env.nix | 11 ++++------- 2 files changed, 4 insertions(+), 8 deletions(-) diff --git a/pkgs/development/libraries/kde-frameworks/default.nix b/pkgs/development/libraries/kde-frameworks/default.nix index 5962c16860d..bf27d52dceb 100644 --- a/pkgs/development/libraries/kde-frameworks/default.nix +++ b/pkgs/development/libraries/kde-frameworks/default.nix @@ -56,7 +56,6 @@ let kdeEnv = import ./kde-env.nix { inherit (pkgs) stdenv lib; inherit (pkgs.xorg) lndir; - inherit ecmNoHooks; }; kdeWrapper = import ./kde-wrapper.nix { diff --git a/pkgs/development/libraries/kde-frameworks/kde-env.nix b/pkgs/development/libraries/kde-frameworks/kde-env.nix index f4ad528454b..c77ff49bfea 100644 --- a/pkgs/development/libraries/kde-frameworks/kde-env.nix +++ b/pkgs/development/libraries/kde-frameworks/kde-env.nix @@ -1,14 +1,11 @@ -{ stdenv, lib, lndir, ecmNoHooks }: +{ stdenv, lib, lndir }: -name: pkgs: +drv: pkgs: -let - inherit (builtins.parseDrvName ecmNoHooks.name) version; -in stdenv.mkDerivation { - name = "kde-env-${name}"; + name = "kde-env-${drv.name}"; nativeBuildInputs = [ lndir ]; - propagatedUserEnvPkgs = builtins.map lib.getBin pkgs; + propagatedUserEnvPkgs = builtins.map lib.getBin ([drv] ++ pkgs); unpackPhase = "true"; configurePhase = "runHook preConfigure; runHook postConfigure"; buildPhase = "true"; From d1d38f2888ab63e83ee412a526e017a91a1b57ba Mon Sep 17 00:00:00 2001 From: Thomas Tuegel Date: Sat, 30 Jul 2016 17:07:19 -0500 Subject: [PATCH 035/125] kdeWrapper: include wrappers in path --- pkgs/development/libraries/kde-frameworks/kde-wrapper.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/development/libraries/kde-frameworks/kde-wrapper.nix b/pkgs/development/libraries/kde-frameworks/kde-wrapper.nix index 3d0c104c905..ea4d5acfa3b 100644 --- a/pkgs/development/libraries/kde-frameworks/kde-wrapper.nix +++ b/pkgs/development/libraries/kde-frameworks/kde-wrapper.nix @@ -5,7 +5,7 @@ drv: { targets, paths }: let - env = kdeEnv drv.name ([ drv ] ++ paths); + env = kdeEnv drv paths; in stdenv.mkDerivation { inherit (drv) name; @@ -25,7 +25,7 @@ stdenv.mkDerivation { if [ -a "$drv/$t" ]; then makeWrapper "$drv/$t" "$out/$t" \ --argv0 '"$0"' \ - --suffix PATH : "$env/bin" \ + --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" \ From f7d98785d5be667fb535f7f3325b85b53ec43270 Mon Sep 17 00:00:00 2001 From: Thomas Tuegel Date: Sat, 30 Jul 2016 17:10:30 -0500 Subject: [PATCH 036/125] breeze-icons: don't propagate qtsvg build input breeze-icons does not have a separate dev output, so this pulls qtsvg.dev into the closure. --- pkgs/development/libraries/kde-frameworks/breeze-icons.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 ]; } From ab58794838d33b4426b81f2887d64f40e31fdf49 Mon Sep 17 00:00:00 2001 From: Thomas Tuegel Date: Sat, 30 Jul 2016 17:25:29 -0500 Subject: [PATCH 037/125] kdeWrapper: assume empty path list by default --- pkgs/development/libraries/kde-frameworks/kde-wrapper.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkgs/development/libraries/kde-frameworks/kde-wrapper.nix b/pkgs/development/libraries/kde-frameworks/kde-wrapper.nix index ea4d5acfa3b..95f9cdcecb7 100644 --- a/pkgs/development/libraries/kde-frameworks/kde-wrapper.nix +++ b/pkgs/development/libraries/kde-frameworks/kde-wrapper.nix @@ -2,7 +2,7 @@ drv: -{ targets, paths }: +{ targets, paths ? [] }: let env = kdeEnv drv paths; From 425f9be1c8c56f7f9bc4beff067f492940eafa4e Mon Sep 17 00:00:00 2001 From: Thomas Tuegel Date: Sat, 30 Jul 2016 17:25:46 -0500 Subject: [PATCH 038/125] ark: use kdeWrapper --- .../kde-5/applications/ark/default.nix | 53 +++++++++++-------- 1 file changed, 30 insertions(+), 23 deletions(-) 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" ]; } From e809667b171da294dc4e9ce98f0901cd33210835 Mon Sep 17 00:00:00 2001 From: Maarten Hoogendoorn Date: Wed, 27 Jul 2016 11:29:18 +0200 Subject: [PATCH 039/125] vmTools.runInLinuxImage: add virtio_rng device This allows the QEMU VM's to use the /dev/random device, by getting entropy from the host. --- pkgs/build-support/vm/default.nix | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) 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 \ From 07ca9bd4bc7b7c57fbf628e60197cc8b7821404b Mon Sep 17 00:00:00 2001 From: Christine Koppelt Date: Sun, 31 Jul 2016 15:28:56 +0200 Subject: [PATCH 040/125] Redis: add entry to release notes --- nixos/doc/manual/release-notes/rl-1609.xml | 7 +++++++ 1 file changed, 7 insertions(+) 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 + + From 0206373fb2cee04794566c27ccc919cf5ee1b0ac Mon Sep 17 00:00:00 2001 From: Thomas Tuegel Date: Sat, 30 Jul 2016 17:27:03 -0500 Subject: [PATCH 041/125] filelight: use kdeWrapper --- .../desktops/kde-5/applications/filelight.nix | 33 ++++++++++--------- 1 file changed, 17 insertions(+), 16 deletions(-) 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" ]; } From e824741a2dbf9aec434e66aa5795fd7bdf37ac30 Mon Sep 17 00:00:00 2001 From: Thomas Tuegel Date: Sat, 30 Jul 2016 17:28:00 -0500 Subject: [PATCH 042/125] gwenview: use kdeWrapper --- pkgs/desktops/kde-5/applications/gwenview.nix | 34 ++++++++++--------- 1 file changed, 18 insertions(+), 16 deletions(-) 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" ]; } From f66b4ca61d7c95dca527244cc34265eb1a0b40c3 Mon Sep 17 00:00:00 2001 From: Thomas Tuegel Date: Sat, 30 Jul 2016 17:29:25 -0500 Subject: [PATCH 043/125] kate: use kdeWrapper --- pkgs/desktops/kde-5/applications/kate.nix | 39 ++++++++++++----------- 1 file changed, 20 insertions(+), 19 deletions(-) diff --git a/pkgs/desktops/kde-5/applications/kate.nix b/pkgs/desktops/kde-5/applications/kate.nix index 4459dea8063..738266e8df7 100644 --- a/pkgs/desktops/kde-5/applications/kate.nix +++ b/pkgs/desktops/kde-5/applications/kate.nix @@ -1,26 +1,27 @@ { - kdeApp, lib, makeQtWrapper, ecm, kdoctools, + kdeApp, lib, kdeWrapper, + 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 { - 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" ]; } From 6db7ef73b62c17ed2e3fadc0d85116567299f89f Mon Sep 17 00:00:00 2001 From: Thomas Tuegel Date: Sat, 30 Jul 2016 17:31:49 -0500 Subject: [PATCH 044/125] kcalc: use kdeWrapper --- pkgs/desktops/kde-5/applications/kcalc.nix | 35 +++++++++++----------- 1 file changed, 18 insertions(+), 17 deletions(-) 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" ]; } From ee88a01dd5c02ab1f7add3a908a2bd647999d49f Mon Sep 17 00:00:00 2001 From: Thomas Tuegel Date: Sat, 30 Jul 2016 17:32:36 -0500 Subject: [PATCH 045/125] kcolorchooser: use kdeWrapper --- .../kde-5/applications/kcolorchooser.nix | 24 +++++++++++-------- 1 file changed, 14 insertions(+), 10 deletions(-) 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" ]; } From b93b617f181f0dc3b87c14e927c2af6bd94c2d24 Mon Sep 17 00:00:00 2001 From: Thomas Tuegel Date: Sat, 30 Jul 2016 17:34:42 -0500 Subject: [PATCH 046/125] khelpcenter: use kdeWrapper --- .../kde-5/applications/khelpcenter.nix | 26 ++++++++++--------- 1 file changed, 14 insertions(+), 12 deletions(-) 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" ]; } From 4805d008e4333f0e9348ce52a8867352b47a2690 Mon Sep 17 00:00:00 2001 From: Thomas Tuegel Date: Sat, 30 Jul 2016 17:35:49 -0500 Subject: [PATCH 047/125] kompare: use kdeWrapper --- pkgs/desktops/kde-5/applications/kompare.nix | 29 ++++++++++---------- 1 file changed, 14 insertions(+), 15 deletions(-) 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" ]; } From 4e5dfd0d2a5a38c7e3580daa9adcad8d1265ce89 Mon Sep 17 00:00:00 2001 From: Thomas Tuegel Date: Sat, 30 Jul 2016 17:38:39 -0500 Subject: [PATCH 048/125] konsole: use kdeWrapper --- pkgs/desktops/kde-5/applications/konsole.nix | 38 ++++++++++---------- 1 file changed, 20 insertions(+), 18 deletions(-) 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" ]; } From 551f26fc71c7dd82751d9e5fda27caff1d3bc15c Mon Sep 17 00:00:00 2001 From: Thomas Tuegel Date: Sat, 30 Jul 2016 17:40:00 -0500 Subject: [PATCH 049/125] spectacle: use kdeWrapper --- .../desktops/kde-5/applications/spectacle.nix | 30 +++++++++---------- 1 file changed, 15 insertions(+), 15 deletions(-) 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" ]; } From 8db2b2e2cd647a245c007226473ca7092f82fa9b Mon Sep 17 00:00:00 2001 From: Kranium Gikos Mendoza Date: Sun, 31 Jul 2016 23:10:41 +0800 Subject: [PATCH 050/125] cpuminer-multi: 20140723 -> 20160316 --- pkgs/tools/misc/cpuminer-multi/default.nix | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) 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 +} From a28273df32b970e29872b29ad87b4131c68f9a06 Mon Sep 17 00:00:00 2001 From: Langston Barrett Date: Sun, 31 Jul 2016 18:35:09 +0200 Subject: [PATCH 051/125] mopidy service: add default value for configuration (#17385) Mopidy will start if the configuration is empty. Fixes #17381. --- nixos/modules/services/audio/mopidy.nix | 1 + 1 file changed, 1 insertion(+) 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. From 03a8f723bdce313fed87e2ef5c8931f9d6715ae3 Mon Sep 17 00:00:00 2001 From: Shea Levy Date: Sun, 31 Jul 2016 13:11:50 -0400 Subject: [PATCH 052/125] Add long-shebang tool --- pkgs/misc/long-shebang/default.nix | 20 ++++++++++++++++++++ pkgs/top-level/all-packages.nix | 2 ++ 2 files changed, 22 insertions(+) create mode 100644 pkgs/misc/long-shebang/default.nix 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/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index ac96ea3448f..7a7e868f3b8 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 { }; From 33b9935878e6226d93c55fb8370d0c10e685bc42 Mon Sep 17 00:00:00 2001 From: Josef Kemetmueller Date: Sun, 31 Jul 2016 21:22:26 +0200 Subject: [PATCH 053/125] Add geant4 license This license was left out during the geant4 pull request: https://github.com/NixOS/nixpkgs/pull/3963 --- lib/licenses.nix | 5 +++++ 1 file changed, 5 insertions(+) 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"; From 96e5533cfac0eebb44e072cc494b3b65ee2982f7 Mon Sep 17 00:00:00 2001 From: Benjamin Saunders Date: Sun, 31 Jul 2016 12:31:14 -0700 Subject: [PATCH 054/125] matrix-synapse: fix missing curses dependency --- pkgs/servers/matrix-synapse/default.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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. From 7a799b94a3596b6631d6601c12c90e57008b9fc7 Mon Sep 17 00:00:00 2001 From: Dan Peebles Date: Sun, 31 Jul 2016 16:42:14 -0400 Subject: [PATCH 055/125] awscli: 1.10.46 -> 1.10.51 This also required a bump of botocore from 1.4.36 to 1.4.41. I tested boto3 with the new version and it seemed to work fine. --- pkgs/top-level/python-packages.nix | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix index 76fd4596e54..e06c1c6765d 100644 --- a/pkgs/top-level/python-packages.nix +++ b/pkgs/top-level/python-packages.nix @@ -1359,13 +1359,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 +2776,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 = From 845317e5d62f8e42155933a7c4c74eaca85eb94f Mon Sep 17 00:00:00 2001 From: Robert Helgesson Date: Sun, 31 Jul 2016 22:54:11 +0200 Subject: [PATCH 056/125] construo: remove use of `builderDefsPackage` --- pkgs/games/construo/default.nix | 49 ++++++++++++++++----------------- 1 file changed, 23 insertions(+), 26 deletions(-) diff --git a/pkgs/games/construo/default.nix b/pkgs/games/construo/default.nix index f94b489908e..7e4f3c58c31 100644 --- a/pkgs/games/construo/default.nix +++ b/pkgs/games/construo/default.nix @@ -1,29 +1,26 @@ -{ 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-0.2.2"; + + src = 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 = '' + 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 + ''; + + meta = { + description = "Masses and springs simulation game"; + }; } From 677add282239748a97f7674d56b59a26856650a7 Mon Sep 17 00:00:00 2001 From: Robert Helgesson Date: Sun, 31 Jul 2016 23:13:39 +0200 Subject: [PATCH 057/125] construo: 0.2.2 -> 0.2.3 --- pkgs/games/construo/default.nix | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/pkgs/games/construo/default.nix b/pkgs/games/construo/default.nix index 7e4f3c58c31..0c9e83cdb9a 100644 --- a/pkgs/games/construo/default.nix +++ b/pkgs/games/construo/default.nix @@ -1,11 +1,12 @@ { stdenv, fetchurl, libX11, zlib, xproto, mesa ? null, freeglut ? null }: stdenv.mkDerivation rec { - name = "construo-0.2.2"; + name = "construo-${version}"; + version = "0.2.3"; src = fetchurl { - url = http://savannah.nongnu.org/download/construo/construo-0.2.2.tar.gz; - sha256 = "0c661rjasax4ykw77dgqj39jhb4qi48m0bhhdy42vd5a4rfdrcck"; + url = "https://github.com/Construo/construo/releases/download/v${version}/${name}.tar.gz"; + sha256 = "1wmj527hbj1qv44cdsj6ahfjrnrjwg2dp8gdick8nd07vm062qxa"; }; buildInputs = [ libX11 zlib xproto ] @@ -13,14 +14,12 @@ stdenv.mkDerivation rec { ++ stdenv.lib.optional (freeglut != null) freeglut; preConfigure = '' - 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 + substituteInPlace src/Makefile.in \ + --replace games bin ''; meta = { description = "Masses and springs simulation game"; + homepage = http://fs.fsf.org/construo/; }; } From bafc296e531aab26d2aa351f1dacf0ba632f4512 Mon Sep 17 00:00:00 2001 From: obadz Date: Mon, 1 Aug 2016 01:43:25 +0100 Subject: [PATCH 058/125] holdingnuts: init at 0.0.5 --- pkgs/games/holdingnuts/default.nix | 38 ++++++++++++++++++++++++++++++ pkgs/top-level/all-packages.nix | 2 ++ 2 files changed, 40 insertions(+) create mode 100644 pkgs/games/holdingnuts/default.nix 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/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 7a7e868f3b8..240a53181f5 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -15655,6 +15655,8 @@ in hexen = callPackage ../games/hexen { }; + holdingnuts = callPackage ../games/holdingnuts { }; + icbm3d = callPackage ../games/icbm3d { }; ingen = callPackage ../applications/audio/ingen { From 55904aa5c402bc5bdc9d34d22a51e7ef0af8a601 Mon Sep 17 00:00:00 2001 From: Michiel Leenaars Date: Wed, 20 Jul 2016 18:09:44 +0200 Subject: [PATCH 059/125] hash-slinger: init at 2.7.0 --- pkgs/tools/security/hash-slinger/default.nix | 44 ++++++++++++++++++++ pkgs/top-level/all-packages.nix | 2 + 2 files changed, 46 insertions(+) create mode 100644 pkgs/tools/security/hash-slinger/default.nix diff --git a/pkgs/tools/security/hash-slinger/default.nix b/pkgs/tools/security/hash-slinger/default.nix new file mode 100644 index 00000000000..9551c8e36db --- /dev/null +++ b/pkgs/tools/security/hash-slinger/default.nix @@ -0,0 +1,44 @@ +{ stdenv, fetchFromGitHub, pythonPackages, openssh, gnupg, unbound, libreswan }: + +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/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 5683c1add21..3dd3fc76312 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -1947,6 +1947,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 { }; From c8f2d8dae0f3a7511c708e4896502654361f4a67 Mon Sep 17 00:00:00 2001 From: Michiel Leenaars Date: Sat, 23 Jul 2016 00:25:36 +0200 Subject: [PATCH 060/125] py-unbound: init at 1.5.9 --- pkgs/tools/networking/unbound/python.nix | 63 ++++++++++++++++++++++++ pkgs/top-level/python-packages.nix | 2 + 2 files changed, 65 insertions(+) create mode 100644 pkgs/tools/networking/unbound/python.nix diff --git a/pkgs/tools/networking/unbound/python.nix b/pkgs/tools/networking/unbound/python.nix new file mode 100644 index 00000000000..b2f43740a67 --- /dev/null +++ b/pkgs/tools/networking/unbound/python.nix @@ -0,0 +1,63 @@ +{ stdenv, fetchurl, openssl, expat, libevent, swig, python, pythonPackages }: + +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/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix index e0405b63f9f..60a5ad93ad3 100644 --- a/pkgs/top-level/python-packages.nix +++ b/pkgs/top-level/python-packages.nix @@ -327,6 +327,8 @@ in modules // { hdf5 = pkgs.hdf5.override { zlib = pkgs.zlib; }; }; + pyunbound = callPackage ../tools/networking/unbound/python.nix { }; + # packages defined here aafigure = buildPythonPackage rec { From ea6bd8fa79f578706667439126adebcfeda93af6 Mon Sep 17 00:00:00 2001 From: Frederik Rietdijk Date: Mon, 1 Aug 2016 10:19:48 +0200 Subject: [PATCH 061/125] py-unbound: fix evaluation --- pkgs/tools/networking/unbound/python.nix | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/pkgs/tools/networking/unbound/python.nix b/pkgs/tools/networking/unbound/python.nix index b2f43740a67..5d7096ab168 100644 --- a/pkgs/tools/networking/unbound/python.nix +++ b/pkgs/tools/networking/unbound/python.nix @@ -1,6 +1,8 @@ -{ stdenv, fetchurl, openssl, expat, libevent, swig, python, pythonPackages }: +{ stdenv, fetchurl, openssl, expat, libevent, swig, pythonPackages }: -stdenv.mkDerivation rec { +let + inherit (pythonPackages) python; +in stdenv.mkDerivation rec { pname = "pyunbound"; name = "${pname}-${version}"; version = "1.5.9"; From 0a1703ba279b186f3dac6dbed2d793c1172866f1 Mon Sep 17 00:00:00 2001 From: Frederik Rietdijk Date: Mon, 1 Aug 2016 10:19:55 +0200 Subject: [PATCH 062/125] hash-slinger: fix evaluation --- pkgs/tools/security/hash-slinger/default.nix | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/pkgs/tools/security/hash-slinger/default.nix b/pkgs/tools/security/hash-slinger/default.nix index 9551c8e36db..4d60b11f977 100644 --- a/pkgs/tools/security/hash-slinger/default.nix +++ b/pkgs/tools/security/hash-slinger/default.nix @@ -1,6 +1,8 @@ { stdenv, fetchFromGitHub, pythonPackages, openssh, gnupg, unbound, libreswan }: -stdenv.mkDerivation rec { +let + inherit (pythonPackages) python; +in stdenv.mkDerivation rec { pname = "hash-slinger"; name = "${pname}-${version}"; version = "2.7"; From 2a05368ff3217175cd87105e778e2e70bc7eef1c Mon Sep 17 00:00:00 2001 From: Eelco Dolstra Date: Thu, 28 Jul 2016 18:10:17 +0200 Subject: [PATCH 063/125] Remove $NIXOS_LABEL and $NIXOS_VERSION Relying on environment variables to override configuration options is ugly, and there is no reason for them. --- nixos/modules/misc/version.nix | 23 ++++------------------- 1 file changed, 4 insertions(+), 19 deletions(-) diff --git a/nixos/modules/misc/version.nix b/nixos/modules/misc/version.nix index 9a37f595093..9158d82a73a 100644 --- a/nixos/modules/misc/version.nix +++ b/nixos/modules/misc/version.nix @@ -35,23 +35,8 @@ 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. ''; }; @@ -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)); From 83eb49220b4a91658b710d7095899d04856875a3 Mon Sep 17 00:00:00 2001 From: Eelco Dolstra Date: Thu, 28 Jul 2016 18:27:03 +0200 Subject: [PATCH 064/125] Manual: Only include the release number (e.g. 16.03) This prevents gratuitous rebuilds of the manual every time the Git revision changes. Should help a bit with #17261. --- nixos/modules/misc/version.nix | 10 +++++----- nixos/modules/services/misc/nixos-manual.nix | 12 +++--------- 2 files changed, 8 insertions(+), 14 deletions(-) diff --git a/nixos/modules/misc/version.nix b/nixos/modules/misc/version.nix index 9158d82a73a..6d4d3a9eea3 100644 --- a/nixos/modules/misc/version.nix +++ b/nixos/modules/misc/version.nix @@ -43,34 +43,34 @@ in 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."; + 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."; + 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."; + 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 { 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; }; }; From d5756cdf0afb066af91b837856867bd8e1bc7fe0 Mon Sep 17 00:00:00 2001 From: Eelco Dolstra Date: Thu, 28 Jul 2016 18:32:56 +0200 Subject: [PATCH 065/125] Remove the PDF manual PDF is very 20th century and nobody reads technical documentation this way anymore. --- nixos/doc/manual/default.nix | 25 +------------------------ nixos/release.nix | 1 - 2 files changed, 1 insertion(+), 25 deletions(-) diff --git a/nixos/doc/manual/default.nix b/nixos/doc/manual/default.nix index 83dad5fd8dc..c27c6c60eec 100644 --- a/nixos/doc/manual/default.nix +++ b/nixos/doc/manual/default.nix @@ -122,7 +122,7 @@ let Allows for cross-referencing olinks between the manpages - and the HTML/PDF manuals. + and manual. &manualtargets; @@ -229,29 +229,6 @@ in rec { ''; }; - - 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 - ''; - }; - # Generate the NixOS manpages. manpages = stdenv.mkDerivation { name = "nixos-manpages"; diff --git a/nixos/release.nix b/nixos/release.nix index 68f06a83298..9886fdea291 100644 --- a/nixos/release.nix +++ b/nixos/release.nix @@ -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; From 0804f67024f21a75a710e41423561cc0d3472e2f Mon Sep 17 00:00:00 2001 From: Eelco Dolstra Date: Mon, 1 Aug 2016 11:02:41 +0200 Subject: [PATCH 066/125] Fix epub generation * Hydra doesn't like spaces in filenames. * The zip file contained nix/store/.../OEBPS rather than OEBPS at top-level, causing some programs (like okular) to barf. * Remove the redundant $dst/epub directory. --- nixos/doc/manual/default.nix | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/nixos/doc/manual/default.nix b/nixos/doc/manual/default.nix index c27c6c60eec..1bec0d92522 100644 --- a/nixos/doc/manual/default.nix +++ b/nixos/doc/manual/default.nix @@ -221,11 +221,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 + echo "doc-epub manual $manual" >> $out/nix-support/hydra-build-products ''; }; From 56575cc0ac289d1f50358297cb72d9cd73f24630 Mon Sep 17 00:00:00 2001 From: Eric Sagnes Date: Fri, 29 Jul 2016 17:15:37 +0900 Subject: [PATCH 067/125] lib: add fileContents function --- lib/strings.nix | 10 ++++++++++ 1 file changed, 10 insertions(+) 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); } From 85d8b016600925791cbf970f69873dfac1f781cb Mon Sep 17 00:00:00 2001 From: Eric Sagnes Date: Sun, 31 Jul 2016 21:58:54 +0900 Subject: [PATCH 068/125] lib: refactor commitIdFromGitRepo with fileContents --- lib/sources.nix | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) 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: From e276842f6adef45554f05f2aee8c938c8c651ed1 Mon Sep 17 00:00:00 2001 From: Eric Sagnes Date: Sun, 31 Jul 2016 21:59:30 +0900 Subject: [PATCH 069/125] lib: refactor nixpkgsVersion with fileContents --- lib/trivial.nix | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) 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"; From 1114ab41e6622cc4ac59ffb16e3bd291194e3208 Mon Sep 17 00:00:00 2001 From: Eric Sagnes Date: Sun, 31 Jul 2016 22:05:38 +0900 Subject: [PATCH 070/125] release.nix: refactor with fileContents --- nixos/release.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/nixos/release.nix b/nixos/release.nix index 9886fdea291..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}"; From c7bd26e5376da23e94c49515f0bff60964de4433 Mon Sep 17 00:00:00 2001 From: Eric Sagnes Date: Sun, 31 Jul 2016 22:08:29 +0900 Subject: [PATCH 071/125] version module: refactor with fileContents --- nixos/modules/misc/version.nix | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/nixos/modules/misc/version.nix b/nixos/modules/misc/version.nix index 6d4d3a9eea3..6af310a9d87 100644 --- a/nixos/modules/misc/version.nix +++ b/nixos/modules/misc/version.nix @@ -49,21 +49,21 @@ in nixosRelease = mkOption { readOnly = true; type = types.str; - default = readFile releaseFile; + 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"; + 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"; + default = if pathExists revisionFile then fileContents revisionFile else "master"; description = "The Git revision from which this NixOS configuration was built."; }; From 4c97e4fbffd5cba4fb1ae32172b730658972550a Mon Sep 17 00:00:00 2001 From: Eric Sagnes Date: Mon, 1 Aug 2016 18:34:54 +0900 Subject: [PATCH 072/125] make tarball: refactor with fileContents --- pkgs/top-level/make-tarball.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 ]; From 292f2f41e97472d4e7ff93ea9edd535fb25fd306 Mon Sep 17 00:00:00 2001 From: Damien Cassou Date: Mon, 1 Aug 2016 12:40:33 +0200 Subject: [PATCH 073/125] vdirsyncer: 0.11.2 -> 0.11.3 --- pkgs/tools/misc/vdirsyncer/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) 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; [ From 76f2e827a7b65bb486edb16a2210fa8cc4c457bf Mon Sep 17 00:00:00 2001 From: Joachim Fasting Date: Mon, 1 Aug 2016 12:46:48 +0200 Subject: [PATCH 074/125] grsecurity: 4.6.5-201607272152 -> 4.6.5-201607312210 --- pkgs/os-specific/linux/kernel/patches.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) 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, From c91d07b6689c9f7bd90622a0d31530005c02256d Mon Sep 17 00:00:00 2001 From: Joachim Fasting Date: Mon, 1 Aug 2016 12:55:42 +0200 Subject: [PATCH 075/125] dnscrypt-proxy module: types.string should be types.str --- nixos/modules/services/networking/dnscrypt-proxy.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/nixos/modules/services/networking/dnscrypt-proxy.nix b/nixos/modules/services/networking/dnscrypt-proxy.nix index 227e38acc4a..984219676cd 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. From 7f3ca5d75b351cebf284aa2ab4d5ac01920b67d0 Mon Sep 17 00:00:00 2001 From: Kranium Gikos Mendoza Date: Mon, 1 Aug 2016 19:20:45 +0800 Subject: [PATCH 076/125] leatherman: disable curl test to fix build --- pkgs/development/libraries/leatherman/default.nix | 4 ++++ 1 file changed, 4 insertions(+) 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"; From 8d84e6a20fad4bab7d8a75ba7d4f45657ac464a5 Mon Sep 17 00:00:00 2001 From: obadz Date: Mon, 1 Aug 2016 13:22:03 +0100 Subject: [PATCH 077/125] libreoffice: add compile flag -fpermissive due to libcurl upgrade curl upgrade to 7.50.0 (#17152) changes the libcurl headers slightly and therefore requires the -fpermissive flag until this package gets updated --- pkgs/applications/office/libreoffice/default.nix | 4 +++- pkgs/applications/office/libreoffice/still.nix | 4 +++- 2 files changed, 6 insertions(+), 2 deletions(-) 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. From 52b787b0cd779f1f0da379127fa4e8db0b927551 Mon Sep 17 00:00:00 2001 From: Shea Levy Date: Mon, 1 Aug 2016 08:32:38 -0400 Subject: [PATCH 078/125] Add dell-530cdn printer driver --- pkgs/misc/drivers/dell-530cdn/default.nix | 13 +++++++++++++ pkgs/top-level/all-packages.nix | 2 ++ 2 files changed, 15 insertions(+) create mode 100644 pkgs/misc/drivers/dell-530cdn/default.nix 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/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 1907f1ffd66..d72a5574fe8 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -16998,6 +16998,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 { }; From 053df6076330e3cbcbb87f9a1b3646cab52be638 Mon Sep 17 00:00:00 2001 From: Jascha Geerds Date: Mon, 1 Aug 2016 15:59:18 +0200 Subject: [PATCH 079/125] pythonPackages.kaptan: init at 0.5.8 --- pkgs/top-level/python-packages.nix | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix index 46859333a84..39e8c1d7abd 100644 --- a/pkgs/top-level/python-packages.nix +++ b/pkgs/top-level/python-packages.nix @@ -9408,6 +9408,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}"; From 0fb70dfbb01efa816049b0d821996e0f4d4cf6f6 Mon Sep 17 00:00:00 2001 From: Jascha Geerds Date: Mon, 1 Aug 2016 15:59:55 +0200 Subject: [PATCH 080/125] pythonPackages.libtmux: init at 0.5.0 --- pkgs/top-level/python-packages.nix | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix index 39e8c1d7abd..7ccbb0c2dca 100644 --- a/pkgs/top-level/python-packages.nix +++ b/pkgs/top-level/python-packages.nix @@ -4928,6 +4928,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"; From 9cc42ade37cb4f4e9c0bb294e03c80e51fc07fb7 Mon Sep 17 00:00:00 2001 From: Jascha Geerds Date: Mon, 1 Aug 2016 16:01:02 +0200 Subject: [PATCH 081/125] tmuxp: init at 1.2.0 --- pkgs/tools/misc/tmuxp/default.nix | 25 +++++++++++++++++++++++++ pkgs/top-level/all-packages.nix | 2 ++ 2 files changed, 27 insertions(+) create mode 100644 pkgs/tools/misc/tmuxp/default.nix 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/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 9b0c9e6ce6b..c35136b1637 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -3702,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 { }; From 5d11dac8bb8f10b797467e913d6ebb9ea1eccd29 Mon Sep 17 00:00:00 2001 From: Karn Kallio Date: Mon, 1 Aug 2016 09:44:04 -0400 Subject: [PATCH 082/125] nvidia-x11: advance to 365.35 and patch kernel 4.7. --- .../linux/nvidia-x11/365.35-kernel-4.7.patch | 40 +++++++++++++++++++ pkgs/os-specific/linux/nvidia-x11/default.nix | 8 ++-- 2 files changed, 45 insertions(+), 3 deletions(-) create mode 100644 pkgs/os-specific/linux/nvidia-x11/365.35-kernel-4.7.patch 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 ]; From d1572d06fe13302263e451e91ec6777ecd66e50e Mon Sep 17 00:00:00 2001 From: Joachim Fasting Date: Mon, 1 Aug 2016 15:56:09 +0200 Subject: [PATCH 083/125] grsecurity module: correct internal note --- nixos/modules/security/grsecurity.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 From 8fd84fcb870b3d55f6760ede5bb46aa57bbec64e Mon Sep 17 00:00:00 2001 From: Michael Raskin <7c6f434c@mail.ru> Date: Mon, 1 Aug 2016 17:22:28 +0200 Subject: [PATCH 084/125] libreoffice: reinstante and use curl 7.48 before the removal of a required feature. CVE's not fixed because of that decision: a Windows-specific DLL substitution and a mbedSSL/PolarSSL specific insufficient certificate validation --- pkgs/tools/networking/curl/7.48.nix | 90 +++++++++++++++++++++++++++++ pkgs/top-level/all-packages.nix | 9 +++ 2 files changed, 99 insertions(+) create mode 100644 pkgs/tools/networking/curl/7.48.nix diff --git a/pkgs/tools/networking/curl/7.48.nix b/pkgs/tools/networking/curl/7.48.nix new file mode 100644 index 00000000000..d156423a547 --- /dev/null +++ b/pkgs/tools/networking/curl/7.48.nix @@ -0,0 +1,90 @@ +{ stdenv, fetchurl, pkgconfig, perl +, http2Support ? true, nghttp2 +, idnSupport ? false, libidn ? null +, ldapSupport ? false, openldap ? null +, zlibSupport ? false, zlib ? null +, sslSupport ? false, openssl ? null +, scpSupport ? false, libssh2 ? null +, gssSupport ? false, gss ? null +, c-aresSupport ? false, c-ares ? null +}: + +assert http2Support -> nghttp2 != null; +assert idnSupport -> libidn != null; +assert ldapSupport -> openldap != null; +assert zlibSupport -> zlib != null; +assert sslSupport -> openssl != null; +assert scpSupport -> libssh2 != null; +assert c-aresSupport -> c-ares != null; + +stdenv.mkDerivation rec { + name = "curl-7.48.0"; + + src = fetchurl { + url = "http://curl.haxx.se/download/${name}.tar.bz2"; + sha256 = "0ly7fbysxrdbclswcr6s7n5sfxfffzazv8blqr16sn0b44cphkl6"; + }; + + outputs = [ "dev" "out" "bin" "man" "docdev" ]; + + nativeBuildInputs = [ pkgconfig perl ]; + + # Zlib and OpenSSL must be propagated because `libcurl.la' contains + # "-lz -lssl", which aren't necessary direct build inputs of + # applications that use Curl. + propagatedBuildInputs = with stdenv.lib; + optional http2Support nghttp2 ++ + optional idnSupport libidn ++ + optional ldapSupport openldap ++ + optional zlibSupport zlib ++ + optional gssSupport gss ++ + optional c-aresSupport c-ares ++ + optional sslSupport openssl ++ + optional scpSupport libssh2; + + # for the second line see http://curl.haxx.se/mail/tracker-2014-03/0087.html + preConfigure = '' + sed -e 's|/usr/bin|/no-such-path|g' -i.bak configure + rm src/tool_hugehelp.c + ''; + + configureFlags = [ + "--with-ca-bundle=/etc/ssl/certs/ca-certificates.crt" + "--disable-manual" + ( if sslSupport then "--with-ssl=${openssl.dev}" else "--without-ssl" ) + ( if scpSupport then "--with-libssh2=${libssh2.dev}" else "--without-libssh2" ) + ( if ldapSupport then "--enable-ldap" else "--disable-ldap" ) + ( if ldapSupport then "--enable-ldaps" else "--disable-ldaps" ) + ( if idnSupport then "--with-libidn=${libidn.dev}" else "--without-libidn" ) + ] + ++ stdenv.lib.optional c-aresSupport "--enable-ares=${c-ares}" + ++ stdenv.lib.optional gssSupport "--with-gssapi=${gss}"; + + CXX = "g++"; + CXXCPP = "g++ -E"; + + postInstall = '' + moveToOutput bin/curl-config "$dev" + sed '/^dependency_libs/s|${libssh2.dev}|${libssh2.out}|' -i "$out"/lib/*.la + ''; + + crossAttrs = { + # We should refer to the cross built openssl + # For the 'urandom', maybe it should be a cross-system option + configureFlags = [ + ( if sslSupport then "--with-ssl=${openssl.crossDrv}" else "--without-ssl" ) + "--with-random /dev/urandom" + ]; + }; + + passthru = { + inherit sslSupport openssl; + }; + + meta = with stdenv.lib; { + description = "A command line tool for transferring files with URL syntax"; + homepage = http://curl.haxx.se/; + maintainers = with maintainers; [ lovek323 ]; + platforms = platforms.all; + }; +} diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index c35136b1637..79ae2523ff6 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -1235,6 +1235,14 @@ in scpSupport = zlibSupport && !stdenv.isSunOS && !stdenv.isCygwin; }; + curl_7_48 = callPackage ../tools/networking/curl/7.48.nix rec { + fetchurl = fetchurlBoot; + http2Support = !stdenv.isDarwin; + zlibSupport = true; + sslSupport = zlibSupport; + scpSupport = zlibSupport && !stdenv.isSunOS && !stdenv.isCygwin; + }; + curl3 = callPackage ../tools/networking/curl/7.15.nix rec { zlibSupport = true; sslSupport = zlibSupport; @@ -13720,6 +13728,7 @@ in harfbuzz = harfbuzz.override { withIcu = true; withGraphite2 = true; }; + curl = curl_7_48; }); From 93bac07b38d6d46c599e5440bd05c5bc7cf4c6ab Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B8rn=20Forsman?= Date: Mon, 1 Aug 2016 17:10:37 +0200 Subject: [PATCH 085/125] mopidy: fix zeroconf support (by depending on dbus) Closure size increases by 1 MiB, from 480 to 481. --- pkgs/applications/audio/mopidy/default.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 From 9c15bb703155d480a70be4f7d202ba20a1e9a6e4 Mon Sep 17 00:00:00 2001 From: Michael Raskin <7c6f434c@mail.ru> Date: Mon, 1 Aug 2016 17:31:24 +0200 Subject: [PATCH 086/125] Revert "libreoffice: reinstante and use curl 7.48 before the removal of a required feature. CVE's not fixed because of that decision: a Windows-specific DLL substitution and a mbedSSL/PolarSSL specific insufficient certificate validation" This reverts commit 8fd84fcb870b3d55f6760ede5bb46aa57bbec64e. While I was testing my solution, @obadz have committed a different and hopefully a better one. --- pkgs/tools/networking/curl/7.48.nix | 90 ----------------------------- pkgs/top-level/all-packages.nix | 9 --- 2 files changed, 99 deletions(-) delete mode 100644 pkgs/tools/networking/curl/7.48.nix diff --git a/pkgs/tools/networking/curl/7.48.nix b/pkgs/tools/networking/curl/7.48.nix deleted file mode 100644 index d156423a547..00000000000 --- a/pkgs/tools/networking/curl/7.48.nix +++ /dev/null @@ -1,90 +0,0 @@ -{ stdenv, fetchurl, pkgconfig, perl -, http2Support ? true, nghttp2 -, idnSupport ? false, libidn ? null -, ldapSupport ? false, openldap ? null -, zlibSupport ? false, zlib ? null -, sslSupport ? false, openssl ? null -, scpSupport ? false, libssh2 ? null -, gssSupport ? false, gss ? null -, c-aresSupport ? false, c-ares ? null -}: - -assert http2Support -> nghttp2 != null; -assert idnSupport -> libidn != null; -assert ldapSupport -> openldap != null; -assert zlibSupport -> zlib != null; -assert sslSupport -> openssl != null; -assert scpSupport -> libssh2 != null; -assert c-aresSupport -> c-ares != null; - -stdenv.mkDerivation rec { - name = "curl-7.48.0"; - - src = fetchurl { - url = "http://curl.haxx.se/download/${name}.tar.bz2"; - sha256 = "0ly7fbysxrdbclswcr6s7n5sfxfffzazv8blqr16sn0b44cphkl6"; - }; - - outputs = [ "dev" "out" "bin" "man" "docdev" ]; - - nativeBuildInputs = [ pkgconfig perl ]; - - # Zlib and OpenSSL must be propagated because `libcurl.la' contains - # "-lz -lssl", which aren't necessary direct build inputs of - # applications that use Curl. - propagatedBuildInputs = with stdenv.lib; - optional http2Support nghttp2 ++ - optional idnSupport libidn ++ - optional ldapSupport openldap ++ - optional zlibSupport zlib ++ - optional gssSupport gss ++ - optional c-aresSupport c-ares ++ - optional sslSupport openssl ++ - optional scpSupport libssh2; - - # for the second line see http://curl.haxx.se/mail/tracker-2014-03/0087.html - preConfigure = '' - sed -e 's|/usr/bin|/no-such-path|g' -i.bak configure - rm src/tool_hugehelp.c - ''; - - configureFlags = [ - "--with-ca-bundle=/etc/ssl/certs/ca-certificates.crt" - "--disable-manual" - ( if sslSupport then "--with-ssl=${openssl.dev}" else "--without-ssl" ) - ( if scpSupport then "--with-libssh2=${libssh2.dev}" else "--without-libssh2" ) - ( if ldapSupport then "--enable-ldap" else "--disable-ldap" ) - ( if ldapSupport then "--enable-ldaps" else "--disable-ldaps" ) - ( if idnSupport then "--with-libidn=${libidn.dev}" else "--without-libidn" ) - ] - ++ stdenv.lib.optional c-aresSupport "--enable-ares=${c-ares}" - ++ stdenv.lib.optional gssSupport "--with-gssapi=${gss}"; - - CXX = "g++"; - CXXCPP = "g++ -E"; - - postInstall = '' - moveToOutput bin/curl-config "$dev" - sed '/^dependency_libs/s|${libssh2.dev}|${libssh2.out}|' -i "$out"/lib/*.la - ''; - - crossAttrs = { - # We should refer to the cross built openssl - # For the 'urandom', maybe it should be a cross-system option - configureFlags = [ - ( if sslSupport then "--with-ssl=${openssl.crossDrv}" else "--without-ssl" ) - "--with-random /dev/urandom" - ]; - }; - - passthru = { - inherit sslSupport openssl; - }; - - meta = with stdenv.lib; { - description = "A command line tool for transferring files with URL syntax"; - homepage = http://curl.haxx.se/; - maintainers = with maintainers; [ lovek323 ]; - platforms = platforms.all; - }; -} diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 79ae2523ff6..c35136b1637 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -1235,14 +1235,6 @@ in scpSupport = zlibSupport && !stdenv.isSunOS && !stdenv.isCygwin; }; - curl_7_48 = callPackage ../tools/networking/curl/7.48.nix rec { - fetchurl = fetchurlBoot; - http2Support = !stdenv.isDarwin; - zlibSupport = true; - sslSupport = zlibSupport; - scpSupport = zlibSupport && !stdenv.isSunOS && !stdenv.isCygwin; - }; - curl3 = callPackage ../tools/networking/curl/7.15.nix rec { zlibSupport = true; sslSupport = zlibSupport; @@ -13728,7 +13720,6 @@ in harfbuzz = harfbuzz.override { withIcu = true; withGraphite2 = true; }; - curl = curl_7_48; }); From 5341b8b1f8acb58631330eb04cbc7e15e141b686 Mon Sep 17 00:00:00 2001 From: Robin Gloster Date: Mon, 1 Aug 2016 18:46:13 +0200 Subject: [PATCH 087/125] moonlight-embedded: init at 2.2.1 (#17414) --- .../misc/moonlight-embedded/default.nix | 34 +++++++++++++++++++ pkgs/top-level/all-packages.nix | 2 ++ 2 files changed, 36 insertions(+) create mode 100644 pkgs/applications/misc/moonlight-embedded/default.nix 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/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index c35136b1637..b1ee80f669e 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -13893,6 +13893,8 @@ in inherit (gnome) libgnomecanvas glib; }; + moonlight-embedded = callPackage ../applications/misc/moonlight-embedded { }; + mop = callPackage ../applications/misc/mop { }; mopidy = callPackage ../applications/audio/mopidy { }; From c90a43f4c53dcc56c556832e5d2d81772f473970 Mon Sep 17 00:00:00 2001 From: Franz Pletz Date: Mon, 1 Aug 2016 19:35:01 +0200 Subject: [PATCH 088/125] nginx module: fix evaluation of root location option --- nixos/modules/services/web-servers/nginx/location-options.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/nixos/modules/services/web-servers/nginx/location-options.nix b/nixos/modules/services/web-servers/nginx/location-options.nix index ce3462bed0a..8aaa3e96f80 100644 --- a/nixos/modules/services/web-servers/nginx/location-options.nix +++ b/nixos/modules/services/web-servers/nginx/location-options.nix @@ -22,7 +22,7 @@ with lib; root = mkOption { type = types.nullOr types.path; default = null; - example = /your/root/directory; + example = "/your/root/directory"; description = '' Root directory for requests. ''; From bd14e4242ee022bf1496a76a0235196229e80d8b Mon Sep 17 00:00:00 2001 From: lukasepple Date: Mon, 1 Aug 2016 12:04:42 +0200 Subject: [PATCH 089/125] rdup: init at 1.1.15 --- pkgs/tools/backup/rdup/default.nix | 24 ++++++++++++++++++++++++ pkgs/top-level/all-packages.nix | 2 ++ 2 files changed, 26 insertions(+) create mode 100644 pkgs/tools/backup/rdup/default.nix 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/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 1907f1ffd66..6c182dbb3c8 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -14430,6 +14430,8 @@ in rdesktop = callPackage ../applications/networking/remote/rdesktop { }; + rdup = callPackage ../tools/backup/rdup { }; + recode = callPackage ../tools/text/recode { }; remotebox = callPackage ../applications/virtualization/remotebox { }; From 5c7708e56806246bedf595f9202c67d9a2fc6beb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B8rn=20Forsman?= Date: Mon, 1 Aug 2016 19:47:18 +0200 Subject: [PATCH 090/125] pythonPackages.schedule: init at 0.3.2 --- pkgs/top-level/python-packages.nix | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix index 7ccbb0c2dca..06c94b727b5 100644 --- a/pkgs/top-level/python-packages.nix +++ b/pkgs/top-level/python-packages.nix @@ -8514,6 +8514,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"; From bd7ce1581daa2a43cad3a73556ed94fc2031b0eb Mon Sep 17 00:00:00 2001 From: aszlig Date: Mon, 1 Aug 2016 20:26:02 +0200 Subject: [PATCH 091/125] broadcom_sta: 6.30.223.248 -> 6.30.223.271 The patch for kernel version 3.18 is already applied upstream, so we don't need it any longer. Without i686-build-failure.patch, the build for i686-linux fails because it references rdtscl(), which is no longer available in Linux 4.3.0. Patch for missing rdtscl() is from Arch Linux: https://aur.archlinux.org/cgit/aur.git/tree/002-rdtscl.patch?h=broadcom-wl-ck I've tested building against 32 and 64 bit Linux versions 3.18.36, 4.4.16 and 4.7.0. The hashes were verified using the ones from the AUR (using the 16 bit hashes of course): $ nix-hash --type sha256 --to-base16 1kaqa2dw3nb8k23ffvx46g8jj3wdhz8xa6jp1v3wb35cjfr712sg 4f8b70b293ac8cc5c70e571ad5d1878d0f29d133a46fe7869868d9c19b5058cd $ nix-hash --type sha256 --to-base16 1gj485qqr190idilacpxwgqyw21il03zph2rddizgj7fbd6pfyaz 5f79774d5beec8f7636b59c0fb07a03108eef1e3fd3245638b20858c714144be AUR hashes can be found at: https://aur.archlinux.org/cgit/aur.git/tree/PKGBUILD?h=broadcom-wl&id=9d6f10b1b7745fbf5d140ac749e2253caf70daa8#n26 Signed-off-by: aszlig Cc: @phreedom, @vcunat --- .../linux/broadcom-sta/default.nix | 27 +- .../broadcom-sta/i686-build-failure.patch | 18 + .../linux/broadcom-sta/linux-recent.patch | 386 ------------------ 3 files changed, 33 insertions(+), 398 deletions(-) create mode 100644 pkgs/os-specific/linux/broadcom-sta/i686-build-failure.patch delete mode 100644 pkgs/os-specific/linux/broadcom-sta/linux-recent.patch diff --git a/pkgs/os-specific/linux/broadcom-sta/default.nix b/pkgs/os-specific/linux/broadcom-sta/default.nix index 64a0c3138c9..57746730597 100644 --- a/pkgs/os-specific/linux/broadcom-sta/default.nix +++ b/pkgs/os-specific/linux/broadcom-sta/default.nix @@ -1,24 +1,27 @@ { 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 ./gcc.patch ]; 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-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; From 4d3545f2a579f9c68ac131794e97e22a312d9422 Mon Sep 17 00:00:00 2001 From: aszlig Date: Mon, 1 Aug 2016 20:45:47 +0200 Subject: [PATCH 092/125] broadcom_sta: Add patch for supporting Linux 4.7 Patch is from Arch Linux at: https://aur.archlinux.org/cgit/aur.git/tree/?h=broadcom-wl I've tested building against 3.18.36, 4.4.16 and 4.7.0. Signed-off-by: aszlig Cc: @phreedom, @vcunat --- .../linux/broadcom-sta/default.nix | 1 + .../linux/broadcom-sta/linux-4.7.patch | 109 ++++++++++++++++++ 2 files changed, 110 insertions(+) create mode 100644 pkgs/os-specific/linux/broadcom-sta/linux-4.7.patch diff --git a/pkgs/os-specific/linux/broadcom-sta/default.nix b/pkgs/os-specific/linux/broadcom-sta/default.nix index 57746730597..e542c2881d8 100644 --- a/pkgs/os-specific/linux/broadcom-sta/default.nix +++ b/pkgs/os-specific/linux/broadcom-sta/default.nix @@ -22,6 +22,7 @@ stdenv.mkDerivation { patches = [ ./i686-build-failure.patch ./license.patch + ./linux-4.7.patch ./gcc.patch ]; 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; From 8f08399671911842174056b46aa1cc66c82f2a71 Mon Sep 17 00:00:00 2001 From: aszlig Date: Mon, 1 Aug 2016 20:57:18 +0200 Subject: [PATCH 093/125] broadcom_sta: Reindent file, no code changes Let's make sure we indent using two spaces, because the unpackPhase was indented using four spaces. Signed-off-by: aszlig --- .../linux/broadcom-sta/default.nix | 21 +++++++++---------- 1 file changed, 10 insertions(+), 11 deletions(-) diff --git a/pkgs/os-specific/linux/broadcom-sta/default.nix b/pkgs/os-specific/linux/broadcom-sta/default.nix index e542c2881d8..d193554c4e3 100644 --- a/pkgs/os-specific/linux/broadcom-sta/default.nix +++ b/pkgs/os-specific/linux/broadcom-sta/default.nix @@ -29,19 +29,18 @@ stdenv.mkDerivation { 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"; From fef4b62657903021f9b60fc6a6cf6fe4bac167ed Mon Sep 17 00:00:00 2001 From: aszlig Date: Mon, 1 Aug 2016 21:00:02 +0200 Subject: [PATCH 094/125] broadcom_sta: Add patch to fix NULL pointer deref The patch is from the following Gentoo bug: https://bugs.gentoo.org/show_bug.cgi?id=523326#c24 Built successfully against Linux 3.18.36, 4.4.16 and 4.7.0. Signed-off-by: aszlig Cc: @phreedom, @vcunat --- pkgs/os-specific/linux/broadcom-sta/default.nix | 1 + .../linux/broadcom-sta/null-pointer-fix.patch | 13 +++++++++++++ 2 files changed, 14 insertions(+) create mode 100644 pkgs/os-specific/linux/broadcom-sta/null-pointer-fix.patch diff --git a/pkgs/os-specific/linux/broadcom-sta/default.nix b/pkgs/os-specific/linux/broadcom-sta/default.nix index d193554c4e3..28b23a61ff0 100644 --- a/pkgs/os-specific/linux/broadcom-sta/default.nix +++ b/pkgs/os-specific/linux/broadcom-sta/default.nix @@ -23,6 +23,7 @@ stdenv.mkDerivation { ./i686-build-failure.patch ./license.patch ./linux-4.7.patch + ./null-pointer-fix.patch ./gcc.patch ]; 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); + From 26a2392594ad432883f9af06951e7b4c5e108eac Mon Sep 17 00:00:00 2001 From: Jean-Pierre PRUNARET Date: Mon, 1 Aug 2016 18:01:09 +0200 Subject: [PATCH 095/125] qgis: 2.10.0 -> 2.16.1 Upgrade qgis with latest version --- pkgs/applications/gis/qgis/default.nix | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) 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}"; From 853209dde916dbb30650e6b7682fd25089fd494c Mon Sep 17 00:00:00 2001 From: Lancelot SIX Date: Mon, 1 Aug 2016 21:13:49 +0200 Subject: [PATCH 096/125] pythonPackages.kombu: Enable for python > 2.7 Only tests cannot run on python3* because dependencies are unavailable (qpid-python). Kombu is announced to work fine for python3[1] [1] https://github.com/celery/kombu/blob/a4edc670f49027154e3f708dfcd3726aceda8fc5/setup.py#L168-L170 --- pkgs/top-level/python-packages.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix index 06c94b727b5..18088e8b87d 100644 --- a/pkgs/top-level/python-packages.nix +++ b/pkgs/top-level/python-packages.nix @@ -12137,13 +12137,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"; From abc85a9601a7f384df6e095eb2645777dc4abce4 Mon Sep 17 00:00:00 2001 From: Lancelot SIX Date: Mon, 1 Aug 2016 21:18:16 +0200 Subject: [PATCH 097/125] python35Packages.celery: disable Few tests fail with python35 (related to OrderedDict changes). setup.py file do not report this release as supporting python35 [1] [1] https://github.com/celery/celery/blob/f6aa74a0b5fdfae27169ab09f45cc82602d7012b/setup.py#L73-L75 --- pkgs/top-level/python-packages.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix index 18088e8b87d..8a41e54f8a4 100644 --- a/pkgs/top-level/python-packages.nix +++ b/pkgs/top-level/python-packages.nix @@ -3227,7 +3227,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"; From 20a94d9b40cdbdf451cf760a2582c30e605621b7 Mon Sep 17 00:00:00 2001 From: Lancelot SIX Date: Mon, 1 Aug 2016 21:20:03 +0200 Subject: [PATCH 098/125] pythonPackages.django_raster: init at 0.2 --- pkgs/top-level/python-packages.nix | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix index 8a41e54f8a4..a79f0b41b61 100644 --- a/pkgs/top-level/python-packages.nix +++ b/pkgs/top-level/python-packages.nix @@ -9264,6 +9264,25 @@ in modules // { }; }; + django_raster = buildPythonPackage rec { + name = "djongoraster-${version}"; + version = "0.2"; + + src = pkgs.fetchurl { + url = "https://pypi.python.org/packages/09/3d/5b9b491186579825ef6e81d60c8ddaf86d8c98d928753a329980bf48b050/django-raster-0.2.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"; From ab1fdce28534255872c8aef10974dfb849bde325 Mon Sep 17 00:00:00 2001 From: Lancelot SIX Date: Mon, 1 Aug 2016 21:22:43 +0200 Subject: [PATCH 099/125] python35Packages.django_colorful: enable at 1.2 python35Packages.django_colorful was erroneously disabled for python35. --- pkgs/top-level/python-packages.nix | 2 -- 1 file changed, 2 deletions(-) diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix index a79f0b41b61..272f81469ab 100644 --- a/pkgs/top-level/python-packages.nix +++ b/pkgs/top-level/python-packages.nix @@ -9060,8 +9060,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"; From 2ae5dbbf3b39c99e6e4217c5eb22ac49bd2a7522 Mon Sep 17 00:00:00 2001 From: Matthew Justin Bauer Date: Mon, 1 Aug 2016 15:12:31 -0500 Subject: [PATCH 100/125] acct: only build on linux --- pkgs/tools/system/acct/default.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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; }; } From 248972b86a514c0d17babe823db4ab12815fc6f1 Mon Sep 17 00:00:00 2001 From: Thomas Tuegel Date: Mon, 1 Aug 2016 15:31:14 -0500 Subject: [PATCH 101/125] kde5.dolphin: include konsole kpart --- pkgs/desktops/kde-5/applications/dolphin.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/desktops/kde-5/applications/dolphin.nix b/pkgs/desktops/kde-5/applications/dolphin.nix index 27e4a38741e..4e636ae3186 100644 --- a/pkgs/desktops/kde-5/applications/dolphin.nix +++ b/pkgs/desktops/kde-5/applications/dolphin.nix @@ -4,7 +4,7 @@ baloo, baloo-widgets, dolphin-plugins, kactivities, kbookmarks, kcmutils, kcompletion, kconfig, kcoreaddons, kdelibs4support, kdbusaddons, kfilemetadata, ki18n, kiconthemes, kinit, kio, knewstuff, knotifications, - kparts, ktexteditor, kwindowsystem, phonon, solid + konsole, kparts, ktexteditor, kwindowsystem, phonon, solid }: let @@ -27,5 +27,5 @@ in kdeWrapper unwrapped { targets = [ "bin/dolphin" ]; - paths = [ dolphin-plugins ]; + paths = [ dolphin-plugins konsole.unwrapped ]; } From ff7a65956755d5c571a7c7d56717f0b44ca30376 Mon Sep 17 00:00:00 2001 From: Thomas Tuegel Date: Mon, 1 Aug 2016 15:33:31 -0500 Subject: [PATCH 102/125] kde5.kate: add konsole kpart --- pkgs/desktops/kde-5/applications/kate.nix | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/pkgs/desktops/kde-5/applications/kate.nix b/pkgs/desktops/kde-5/applications/kate.nix index 738266e8df7..ab0087930c0 100644 --- a/pkgs/desktops/kde-5/applications/kate.nix +++ b/pkgs/desktops/kde-5/applications/kate.nix @@ -1,10 +1,10 @@ { kdeApp, lib, kdeWrapper, 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 + kactivities, kconfig, kcrash, kdbusaddons, kguiaddons, kiconthemes, ki18n, + kinit, kio, kitemmodels, kjobwidgets, knewstuff, knotifications, konsole, + kparts, ktexteditor, kwindowsystem, kwallet, kxmlgui, libgit2, + plasma-framework, qtscript, threadweaver }: let @@ -24,4 +24,8 @@ let ]; }; in -kdeWrapper unwrapped { targets = [ "bin/kate" "bin/kwrite" ]; } +kdeWrapper unwrapped +{ + targets = [ "bin/kate" "bin/kwrite" ]; + paths = [ konsole.unwrapped ]; +} From 39aff85b0e253fd950cf2f87c94143e7e2a4e991 Mon Sep 17 00:00:00 2001 From: Thomas Tuegel Date: Mon, 1 Aug 2016 15:36:14 -0500 Subject: [PATCH 103/125] kde5.kile: add konsole kpart --- pkgs/applications/editors/kile/frameworks.nix | 85 ++++++++++--------- 1 file changed, 43 insertions(+), 42 deletions(-) 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 ]; } From b5884b06984500cd2979c804e5dbfa987a9c4ae7 Mon Sep 17 00:00:00 2001 From: Aaron Bull Schaefer Date: Mon, 1 Aug 2016 22:40:13 +0000 Subject: [PATCH 104/125] pythonPackages.ansible2: 2.1.0.0 -> 2.1.1.0 (#17437) --- pkgs/top-level/python-packages.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix index 06c94b727b5..381d8c56b84 100644 --- a/pkgs/top-level/python-packages.nix +++ b/pkgs/top-level/python-packages.nix @@ -848,13 +848,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 = '' From 3445ab79a22a0227e78133fbd3262deae911c828 Mon Sep 17 00:00:00 2001 From: Thomas Tuegel Date: Mon, 1 Aug 2016 18:06:10 -0500 Subject: [PATCH 105/125] qt57.poppler: fix build Packages that depend on Qt >= 5.7 must build using the C++11 standard. --- pkgs/development/libraries/poppler/default.nix | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) 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" From 0a417845ef00c6964dd2ecf040055bfc3dc7f1f1 Mon Sep 17 00:00:00 2001 From: "Ricardo M. Correia" Date: Wed, 27 Jul 2016 17:51:19 +0200 Subject: [PATCH 106/125] ponyc: 0.2.1 -> 2016-07-26 --- pkgs/development/compilers/ponyc/default.nix | 36 +++++++++++-------- .../compilers/ponyc/disable-tests.patch | 16 +++++++++ pkgs/top-level/all-packages.nix | 4 +-- 3 files changed, 38 insertions(+), 18 deletions(-) create mode 100644 pkgs/development/compilers/ponyc/disable-tests.patch 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/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index b1ee80f669e..2023297bbd3 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -5463,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; From 9e2937ca657b71ec83ab726aeb3110dfc73be4b0 Mon Sep 17 00:00:00 2001 From: Joachim Fasting Date: Mon, 1 Aug 2016 22:46:28 +0200 Subject: [PATCH 107/125] afl: 2.10b -> 2.23b Looks like mostly performance enhancements and stability fixes. The main user facing changes appear to be: - The -Z option was removed - A macro named FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION is defined when compiling with afl-gcc Full changelog at http://lcamtuf.coredump.cx/afl/ChangeLog.txt --- pkgs/tools/security/afl/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) 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 From 2e538a0f55e3c40b2b02ee1c750f145eeb1cd27f Mon Sep 17 00:00:00 2001 From: Frederik Rietdijk Date: Tue, 2 Aug 2016 08:39:55 +0200 Subject: [PATCH 108/125] kde5.yakuake: use kdeWrapper --- pkgs/applications/misc/yakuake/3.0.nix | 93 +++++++++++++------------- 1 file changed, 45 insertions(+), 48 deletions(-) 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 ]; } + From 65c109f8875e37726a96ec8cd9e8a090c921b08c Mon Sep 17 00:00:00 2001 From: Frederik Rietdijk Date: Tue, 2 Aug 2016 08:49:12 +0200 Subject: [PATCH 109/125] kde5.konversation: use kdeWrapper --- .../networking/irc/konversation/1.6.nix | 107 +++++++++--------- 1 file changed, 52 insertions(+), 55 deletions(-) diff --git a/pkgs/applications/networking/irc/konversation/1.6.nix b/pkgs/applications/networking/irc/konversation/1.6.nix index 158fe886b8b..eb032518324 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"; + 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 = "789fd75644bf54606778971310433dbe2bc01ac0917b34bc4e8cac88e204d5b6"; + }; - 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" ]; } + From 266fde80ca137cfa4f6dfc6b382e936737a19e32 Mon Sep 17 00:00:00 2001 From: Frederik Rietdijk Date: Tue, 2 Aug 2016 09:00:03 +0200 Subject: [PATCH 110/125] kde5.konversation: 1.6 -> 1.6.1 --- pkgs/applications/networking/irc/konversation/1.6.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/applications/networking/irc/konversation/1.6.nix b/pkgs/applications/networking/irc/konversation/1.6.nix index eb032518324..995eddd9321 100644 --- a/pkgs/applications/networking/irc/konversation/1.6.nix +++ b/pkgs/applications/networking/irc/konversation/1.6.nix @@ -30,13 +30,13 @@ let unwrapped = let pname = "konversation"; - version = "1.6"; + version = "1.6.1"; in kdeDerivation rec { name = "${pname}-${version}"; src = fetchurl { url = "mirror://kde/stable/${pname}/${version}/src/${name}.tar.xz"; - sha256 = "789fd75644bf54606778971310433dbe2bc01ac0917b34bc4e8cac88e204d5b6"; + sha256 = "28346d6629261a5328c43ffa09c12e37743b3ef4f4bc4c411d39bc19f7bf06c6"; }; buildInputs = [ From 8d02a631be021b4fbec75b05ae9c83225184fd72 Mon Sep 17 00:00:00 2001 From: Joachim Fasting Date: Tue, 2 Aug 2016 09:34:58 +0200 Subject: [PATCH 111/125] dnscrypt-proxy: 1.6.1 -> 1.7.0 No user-facing changes of particular note. Full changelog at https://github.com/jedisct1/dnscrypt-proxy/releases/tag/1.7.0 --- pkgs/tools/networking/dnscrypt-proxy/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) 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"; From 79ac02ed648156e8d34a6dbc283af5dca6f78771 Mon Sep 17 00:00:00 2001 From: Joachim Fasting Date: Tue, 2 Aug 2016 09:36:22 +0200 Subject: [PATCH 112/125] dnscrypt-proxy service: update resolver list --- nixos/modules/services/networking/dnscrypt-proxy.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/nixos/modules/services/networking/dnscrypt-proxy.nix b/nixos/modules/services/networking/dnscrypt-proxy.nix index 984219676cd..cf36ccf0572 100644 --- a/nixos/modules/services/networking/dnscrypt-proxy.nix +++ b/nixos/modules/services/networking/dnscrypt-proxy.nix @@ -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 = ...; }"; }; From 2988112a0ccae54766247385934d463ba2ad5ce6 Mon Sep 17 00:00:00 2001 From: Frederik Rietdijk Date: Tue, 2 Aug 2016 10:32:48 +0200 Subject: [PATCH 113/125] pythonPackages: remove pythonName because it is not used anywhere --- pkgs/top-level/python-packages.nix | 10 ---------- 1 file changed, 10 deletions(-) diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix index 381d8c56b84..e00fc0c3e1a 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; From 0d08b7d03cfdc8dd00545458e7a057d3ef4d3598 Mon Sep 17 00:00:00 2001 From: Lancelot SIX Date: Tue, 2 Aug 2016 10:50:31 +0200 Subject: [PATCH 114/125] pythonPackages.django_raster: Use mirror in URL --- pkgs/top-level/python-packages.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix index 89f384353f9..cafd59c5e84 100644 --- a/pkgs/top-level/python-packages.nix +++ b/pkgs/top-level/python-packages.nix @@ -9253,11 +9253,11 @@ in modules // { }; django_raster = buildPythonPackage rec { - name = "djongoraster-${version}"; + name = "django-raster-${version}"; version = "0.2"; src = pkgs.fetchurl { - url = "https://pypi.python.org/packages/09/3d/5b9b491186579825ef6e81d60c8ddaf86d8c98d928753a329980bf48b050/django-raster-0.2.tar.gz"; + url = "mirror://pypi/d/django-raster/${name}.tar.gz"; sha256 = "1zdcxzj43qrv7cl6q9nb2dkfnsyn74dzf2igpnd6nbbfdnkif9bm"; }; From 3a185d159f78b1f2ab2e954a501158ca5770f3a5 Mon Sep 17 00:00:00 2001 From: Frederik Rietdijk Date: Tue, 2 Aug 2016 11:03:11 +0200 Subject: [PATCH 115/125] fix eval --- pkgs/top-level/python-packages.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix index cafd59c5e84..6dd8d613d72 100644 --- a/pkgs/top-level/python-packages.nix +++ b/pkgs/top-level/python-packages.nix @@ -34,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 From 9d85a87e730f9d856ba2e4b41fed8976377a40d8 Mon Sep 17 00:00:00 2001 From: Danny Arnold Date: Tue, 2 Aug 2016 11:38:58 +0200 Subject: [PATCH 116/125] atom: 1.8.0 -> 1.9.0 --- pkgs/applications/editors/atom/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) 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"; }; From 8c04c3c899cfa08e8a5e8a0e7b6d0b323f756ef6 Mon Sep 17 00:00:00 2001 From: Peter Hoeg Date: Tue, 2 Aug 2016 14:59:41 +0800 Subject: [PATCH 117/125] notmuch-mutt: init at 0.22 --- .../mailreaders/notmuch/default.nix | 4 +- .../networking/mailreaders/notmuch/mutt.nix | 47 +++++++++++++++++++ pkgs/top-level/all-packages.nix | 2 + pkgs/top-level/perl-packages.nix | 39 +++++++++++++++ 4 files changed, 91 insertions(+), 1 deletion(-) create mode 100644 pkgs/applications/networking/mailreaders/notmuch/mutt.nix 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..14f03c91f7c --- /dev/null +++ b/pkgs/applications/networking/mailreaders/notmuch/mutt.nix @@ -0,0 +1,47 @@ +{ stdenv, lib, fetchurl, perl, buildPerlPackage, 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/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 1b111c0e45c..7010c15db98 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -14120,6 +14120,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 { }; 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 { From 58afc252e4a1f856e000b862412fb1b1b1ca001a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Benno=20F=C3=BCnfst=C3=BCck?= Date: Tue, 2 Aug 2016 11:37:16 +0200 Subject: [PATCH 118/125] notmuch-mutt: remove unused parameter --- pkgs/applications/networking/mailreaders/notmuch/mutt.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkgs/applications/networking/mailreaders/notmuch/mutt.nix b/pkgs/applications/networking/mailreaders/notmuch/mutt.nix index 14f03c91f7c..aefa965354e 100644 --- a/pkgs/applications/networking/mailreaders/notmuch/mutt.nix +++ b/pkgs/applications/networking/mailreaders/notmuch/mutt.nix @@ -1,4 +1,4 @@ -{ stdenv, lib, fetchurl, perl, buildPerlPackage, perlPackages, makeWrapper, coreutils +{ stdenv, lib, fetchurl, perl, perlPackages, makeWrapper, coreutils , notmuch }: stdenv.mkDerivation rec { From 2c7b5ac8a9cddbda9fa929c193e4a37d4aead437 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Benno=20F=C3=BCnfst=C3=BCck?= Date: Tue, 2 Aug 2016 11:45:42 +0200 Subject: [PATCH 119/125] notmuch-mutt: drop unused fetchurl parameter --- pkgs/applications/networking/mailreaders/notmuch/mutt.nix | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/pkgs/applications/networking/mailreaders/notmuch/mutt.nix b/pkgs/applications/networking/mailreaders/notmuch/mutt.nix index aefa965354e..6d08ad724b2 100644 --- a/pkgs/applications/networking/mailreaders/notmuch/mutt.nix +++ b/pkgs/applications/networking/mailreaders/notmuch/mutt.nix @@ -1,5 +1,4 @@ -{ stdenv, lib, fetchurl, perl, perlPackages, makeWrapper, coreutils -, notmuch }: +{ stdenv, lib, perl, perlPackages, makeWrapper, coreutils, notmuch }: stdenv.mkDerivation rec { name = "notmuch-mutt-${version}"; From 6711e62d51a014d24eb1ec6313e1facf94bb8498 Mon Sep 17 00:00:00 2001 From: Rodney Lorrimar Date: Sat, 25 Jun 2016 23:19:27 +0100 Subject: [PATCH 120/125] nixos manual: add Emacs section (fixes #13217) In light of Emacs packaging improvements such as those mentioned in #11503, and with the addition of a systemd service (#15807 and #16356), and considering that the wiki page is completely out of date (#13217), it seems that some documentation is in order. --- .../manual/configuration/configuration.xml | 1 + nixos/doc/manual/default.nix | 1 + nixos/modules/services/editors/emacs.xml | 578 ++++++++++++++++++ 3 files changed, 580 insertions(+) create mode 100644 nixos/modules/services/editors/emacs.xml 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 1bec0d92522..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 ''; 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>. + +
+
+ +
From 8fad3e81b07825ae8476f49eb32bd80f87ea82d2 Mon Sep 17 00:00:00 2001 From: Frederik Rietdijk Date: Tue, 2 Aug 2016 12:17:37 +0200 Subject: [PATCH 121/125] pythonPackages.setuptools: specify priority Both python3 and setuptools come with easy-install. For some magic reason this hasn't caused any collisions yet, but it does with #17428. We hereby prioritize the version that comes with setuptools. --- pkgs/development/python-modules/setuptools/default.nix | 1 + 1 file changed, 1 insertion(+) 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; }; } From b1882ad395278be7d28e27e4484db6048820f29b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B8rn=20Forsman?= Date: Tue, 2 Aug 2016 11:33:20 +0200 Subject: [PATCH 122/125] beets: 1.3.17 -> 1.3.19 The echonest plugin was removed in 3.18 because the API it used is shutting down. You might want to try the acousticbrainz instead. Update pluginsWithoutDeps as needed to keep preCheck working. --- pkgs/tools/audio/beets/default.nix | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) 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 From 9e919254043ef52adc6b66a5c484b81a95a8ae13 Mon Sep 17 00:00:00 2001 From: Peter Hoeg Date: Tue, 2 Aug 2016 19:57:10 +0800 Subject: [PATCH 123/125] git-up: 1.4.0 -> 1.4.1 --- pkgs/top-level/python-packages.nix | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix index 6dd8d613d72..21617202510 100644 --- a/pkgs/top-level/python-packages.nix +++ b/pkgs/top-level/python-packages.nix @@ -6527,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 ]; From 99f63b4ded22117186eeba671c1657d155b45a20 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B8rn=20Forsman?= Date: Mon, 1 Aug 2016 20:35:09 +0200 Subject: [PATCH 124/125] pythonPackages.mutagen: 1.27 -> 1.32 (Not updating to the latest version, 1.34, because it breaks e.g. 'beets'. See https://github.com/beetbox/beets/issues/2153.) The new version requires locale / i18n to be set-up for tests or else this message is thrown: RuntimeError: This test suite needs a unicode locale encoding. Try setting LANG=C.UTF-8 Also, remove a test that currently fails due to the python builder in nixpkgs. PR with fix: https://github.com/NixOS/nixpkgs/pull/17430 ("python: add file encoding to run_setup.py"). --- pkgs/top-level/python-packages.nix | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix index 21617202510..2e70212bc13 100644 --- a/pkgs/top-level/python-packages.nix +++ b/pkgs/top-level/python-packages.nix @@ -13479,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"; From 47024938a2ef8c0d6821e7998dee062b430aebf0 Mon Sep 17 00:00:00 2001 From: taku0 Date: Tue, 2 Aug 2016 23:55:55 +0900 Subject: [PATCH 125/125] firefox-bin: 47.0.1 -> 48.0 (#17452) --- .../browsers/firefox-bin/sources.nix | 366 +++++++++--------- 1 file changed, 183 insertions(+), 183 deletions(-) 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"; } ]; }