diff --git a/doc/languages-frameworks/python.md b/doc/languages-frameworks/python.md index 9c67dc4ebe6..c38266413bf 100644 --- a/doc/languages-frameworks/python.md +++ b/doc/languages-frameworks/python.md @@ -715,8 +715,8 @@ Python attribute sets are created for each interpreter version. We will therefor In the following example we change the name of the package `pandas` to `foo`. ``` newpkgs = pkgs.overridePackages(self: super: rec { - python35Packages = super.python35Packages.override { - self = python35Packages // { pandas = python35Packages.pandas.override{name="foo";};}; + python35Packages = (super.python35Packages.override { self = python35Packages;}) + // { pandas = super.python35Packages.pandas.override {name = "foo";}; }; }); ``` @@ -727,8 +727,8 @@ with import {}; (let newpkgs = pkgs.overridePackages(self: super: rec { - python35Packages = super.python35Packages.override { - self = python35Packages // { pandas = python35Packages.pandas.override{name="foo";};}; + python35Packages = (super.python35Packages.override { self = python35Packages;}) + // { pandas = super.python35Packages.pandas.override {name = "foo";}; }; }); in newpkgs.python35.withPackages (ps: [ps.blaze]) @@ -743,7 +743,7 @@ with import {}; newpkgs = pkgs.overridePackages(self: super: rec { python35Packages = super.python35Packages.override { - self = python35Packages // { scipy = python35Packages.scipy_0_16;}; + self = python35Packages // { scipy = python35Packages.scipy_0_17;}; }; }); in newpkgs.python35.withPackages (ps: [ps.blaze]) @@ -751,23 +751,41 @@ in newpkgs.python35.withPackages (ps: [ps.blaze]) ``` The requested package `blaze` depends upon `pandas` which itself depends on `scipy`. +A similar example but now using `django` +``` +with import {}; + +(let + +newpkgs = pkgs.overridePackages(self: super: rec { + python27Packages = (super.python27Packages.override {self = python27Packages;}) + // { django = super.python27Packages.django_1_9; }; +}); +in newpkgs.python27.withPackages (ps: [ps.django_guardian ]) +).env +``` + ### `python setup.py bdist_wheel` cannot create .whl -Executing `python setup.py bdist_wheel` fails with +Executing `python setup.py bdist_wheel` in a `nix-shell `fails with ``` ValueError: ZIP does not support timestamps before 1980 ``` This is because files are included that depend on items in the Nix store which have a timestamp of, that is, it corresponds to January the 1st, 1970 at 00:00:00. And as the error informs you, ZIP does not support that. -Fortunately `bdist_wheel` takes into account `SOURCE_DATE_EPOCH`. On Nix this value is set to 1. By setting it to a value correspond to 1980 or later it is possible to build wheels. +The command `bdist_wheel` takes into account `SOURCE_DATE_EPOCH`, and `nix-shell` sets this to 1. By setting it to a value corresponding to 1980 or later, or by unsetting it, it is possible to build wheels. Use 1980 as timestamp: ``` -SOURCE_DATE_EPOCH=315532800 python3 setup.py bdist_wheel +nix-shell --run "SOURCE_DATE_EPOCH=315532800 python3 setup.py bdist_wheel" ``` or the current time: ``` -SOURCE_DATE_EPOCH=$(date +%s) python3 setup.py bdist_wheel +nix-shell --run "SOURCE_DATE_EPOCH=$(date +%s) python3 setup.py bdist_wheel" ``` +or unset: +""" +nix-shell --run "unset SOURCE_DATE_EPOCH; python3 setup.py bdist_wheel" +""" ### `install_data` / `data_files` problems diff --git a/lib/lists.nix b/lib/lists.nix index 4bf732b88c9..5e224921de8 100644 --- a/lib/lists.nix +++ b/lib/lists.nix @@ -218,12 +218,12 @@ rec { partition (x: x > 2) [ 5 1 2 3 4 ] => { right = [ 5 3 4 ]; wrong = [ 1 2 ]; } */ - partition = pred: + partition = builtins.partition or (pred: fold (h: t: if pred h then { right = [h] ++ t.right; wrong = t.wrong; } else { right = t.right; wrong = [h] ++ t.wrong; } - ) { right = []; wrong = []; }; + ) { right = []; wrong = []; }); /* Merges two lists of the same size together. If the sizes aren't the same the merging stops at the shortest. How both lists are merged is defined diff --git a/lib/maintainers.nix b/lib/maintainers.nix index f74937c073e..8c29c9b4cf2 100644 --- a/lib/maintainers.nix +++ b/lib/maintainers.nix @@ -273,6 +273,7 @@ mudri = "James Wood "; muflax = "Stefan Dorn "; myrl = "Myrl Hex "; + nand0p = "Fernando Jose Pando "; nathan-gs = "Nathan Bijnens "; Nate-Devv = "Nathan Moore "; nckx = "Tobias Geerinckx-Rice "; @@ -352,6 +353,7 @@ rvlander = "Gaëtan André "; ryanartecona = "Ryan Artecona "; ryantm = "Ryan Mulligan "; + ryansydnor = "Ryan Sydnor "; rycee = "Robert Helgesson "; ryneeverett = "Ryne Everett "; s1lvester = "Markus Silvester "; diff --git a/nixos/doc/manual/configuration/configuration.xml b/nixos/doc/manual/configuration/configuration.xml index 2d5281829ed..448e2a932e9 100644 --- a/nixos/doc/manual/configuration/configuration.xml +++ b/nixos/doc/manual/configuration/configuration.xml @@ -23,9 +23,7 @@ effect after you run nixos-rebuild. - - diff --git a/nixos/doc/manual/default.nix b/nixos/doc/manual/default.nix index 0f0c6e66e4c..13668dfd8eb 100644 --- a/nixos/doc/manual/default.nix +++ b/nixos/doc/manual/default.nix @@ -63,12 +63,6 @@ let '' cp -prd $sources/* . # */ chmod -R u+w . - cp ${../../modules/services/databases/postgresql.xml} configuration/postgresql.xml - cp ${../../modules/services/misc/gitlab.xml} configuration/gitlab.xml - 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 ${modulesDoc} configuration/modules.xml ln -s ${optionsDocBook} options-db.xml echo "${version}" > version diff --git a/nixos/modules/config/update-users-groups.pl b/nixos/modules/config/update-users-groups.pl index 967f427374b..cbbe216e5a1 100644 --- a/nixos/modules/config/update-users-groups.pl +++ b/nixos/modules/config/update-users-groups.pl @@ -52,8 +52,8 @@ foreach my $g (@{$spec->{groups}}) { $gidsUsed{$g->{gid}} = 1 if defined $g->{gid}; } -foreach my $u (@{$spec->{groups}}) { - $uidsUsed{$u->{u}} = 1 if defined $u->{uid}; +foreach my $u (@{$spec->{users}}) { + $uidsUsed{$u->{uid}} = 1 if defined $u->{uid}; } # Read the current /etc/group. diff --git a/nixos/modules/security/grsecurity.nix b/nixos/modules/security/grsecurity.nix index c6332ca9f9f..ea1064c2d42 100644 --- a/nixos/modules/security/grsecurity.nix +++ b/nixos/modules/security/grsecurity.nix @@ -20,6 +20,11 @@ let in { + meta = { + maintainers = with maintainers; [ joachifm ]; + doc = ./grsecurity.xml; + }; + options.security.grsecurity = { enable = mkEnableOption "grsecurity/PaX"; diff --git a/nixos/doc/manual/configuration/grsecurity.xml b/nixos/modules/security/grsecurity.xml similarity index 100% rename from nixos/doc/manual/configuration/grsecurity.xml rename to nixos/modules/security/grsecurity.xml diff --git a/nixos/modules/security/hidepid.nix b/nixos/modules/security/hidepid.nix index 8271578c55d..4917327d617 100644 --- a/nixos/modules/security/hidepid.nix +++ b/nixos/modules/security/hidepid.nix @@ -20,23 +20,6 @@ with lib; config = mkIf config.security.hideProcessInformation { users.groups.proc.gid = config.ids.gids.proc; - systemd.services.hidepid = { - wantedBy = [ "local-fs.target" ]; - after = [ "systemd-remount-fs.service" ]; - before = [ "local-fs-pre.target" "local-fs.target" "shutdown.target" ]; - wants = [ "local-fs-pre.target" ]; - - serviceConfig = { - Type = "oneshot"; - RemainAfterExit = true; - ExecStart = ''${pkgs.utillinux}/bin/mount -o remount,hidepid=2,gid=${toString config.ids.gids.proc} /proc''; - ExecStop = ''${pkgs.utillinux}/bin/mount -o remount,hidepid=0,gid=0 /proc''; - }; - - unitConfig = { - DefaultDependencies = false; - Conflicts = "shutdown.target"; - }; - }; + fileSystems."/proc".options = [ "hidepid=2" "gid=${toString config.ids.gids.proc}" ]; }; } diff --git a/nixos/modules/services/editors/emacs.nix b/nixos/modules/services/editors/emacs.nix index 43b4219c51d..6795ec52fe4 100644 --- a/nixos/modules/services/editors/emacs.nix +++ b/nixos/modules/services/editors/emacs.nix @@ -83,4 +83,6 @@ in { EDITOR = mkOverride 900 "${editorScript}/bin/emacseditor"; } else {}; }; + + meta.doc = ./emacs.xml; } diff --git a/nixos/modules/services/mail/opensmtpd.nix b/nixos/modules/services/mail/opensmtpd.nix index e773cdedaea..fb94560e10a 100644 --- a/nixos/modules/services/mail/opensmtpd.nix +++ b/nixos/modules/services/mail/opensmtpd.nix @@ -109,12 +109,14 @@ in { after = [ "network.target" ]; preStart = '' mkdir -p /var/spool/smtpd + chmod 711 /var/spool/smtpd mkdir -p /var/spool/smtpd/offline chown root.smtpq /var/spool/smtpd/offline chmod 770 /var/spool/smtpd/offline mkdir -p /var/spool/smtpd/purge + chown smtpq.root /var/spool/smtpd/purge chmod 700 /var/spool/smtpd/purge ''; serviceConfig.ExecStart = "${opensmtpd}/sbin/smtpd -d -f ${conf} ${args}"; diff --git a/nixos/modules/services/misc/nix-daemon.nix b/nixos/modules/services/misc/nix-daemon.nix index fe5132d4973..333782d15bc 100644 --- a/nixos/modules/services/misc/nix-daemon.nix +++ b/nixos/modules/services/misc/nix-daemon.nix @@ -311,7 +311,7 @@ in nixPath = mkOption { type = types.listOf types.str; default = - [ "/nix/var/nix/profiles/per-user/root/channels/nixos" + [ "nixpkgs=/nix/var/nix/profiles/per-user/root/channels/nixos/nixpkgs" "nixos-config=/etc/nixos/configuration.nix" "/nix/var/nix/profiles/per-user/root/channels" ]; diff --git a/nixos/modules/services/networking/dnscrypt-proxy.nix b/nixos/modules/services/networking/dnscrypt-proxy.nix index cf36ccf0572..2714e8d7599 100644 --- a/nixos/modules/services/networking/dnscrypt-proxy.nix +++ b/nixos/modules/services/networking/dnscrypt-proxy.nix @@ -28,31 +28,15 @@ let in { + meta = { + maintainers = with maintainers; [ joachifm ]; + doc = ./dnscrypt-proxy.xml; + }; + options = { services.dnscrypt-proxy = { - enable = mkEnableOption "dnscrypt-proxy" // { description = '' - Whether to enable the DNSCrypt client proxy. The proxy relays - DNS queries to a DNSCrypt enabled upstream resolver. The traffic - between the client and the upstream resolver is encrypted and - authenticated, mitigating the risk of MITM attacks and third-party - snooping (assuming the upstream is trustworthy). + enable = mkEnableOption "DNSCrypt client proxy"; - Enabling this option does not alter the system nameserver; to relay - local queries, prepend 127.0.0.1 to - . - - The recommended configuration is to run DNSCrypt proxy as a forwarder - for a caching DNS client, as in - - { - services.dnscrypt-proxy.enable = true; - services.dnscrypt-proxy.localPort = 43; - services.dnsmasq.enable = true; - services.dnsmasq.servers = [ "127.0.0.1#43" ]; - services.dnsmasq.resolveLocalQueries = true; # this is the default - } - - ''; }; localAddress = mkOption { default = "127.0.0.1"; type = types.str; @@ -62,6 +46,7 @@ in of other machines (typically on the local network). ''; }; + localPort = mkOption { default = 53; type = types.int; @@ -72,6 +57,7 @@ in to a different value; otherwise leave the default. ''; }; + resolverName = mkOption { default = "dnscrypt.eu-nl"; type = types.nullOr types.str; @@ -82,6 +68,7 @@ in extensions, and claims to not keep logs. ''; }; + resolverList = mkOption { description = '' The list of upstream DNSCrypt resolvers. By default, we use the most @@ -94,6 +81,7 @@ in }; defaultText = "pkgs.fetchurl { url = ...; sha256 = ...; }"; }; + customResolver = mkOption { default = null; description = '' @@ -103,26 +91,30 @@ in type = types.nullOr (types.submodule ({ ... }: { options = { address = mkOption { type = types.str; - description = "Resolver IP address"; + description = "IP address"; example = "208.67.220.220"; }; + port = mkOption { type = types.int; - description = "Resolver port"; + description = "Port"; default = 443; }; + name = mkOption { type = types.str; - description = "Provider fully qualified domain name"; + description = "Fully qualified domain name"; example = "2.dnscrypt-cert.opendns.com"; }; + key = mkOption { type = types.str; - description = "Provider public key"; + description = "Public key"; example = "B735:1140:206F:225D:3E2B:D822:D7FD:691E:A1C3:3CC8:D666:8D0C:BE04:BFAB:CA43:FB79"; }; }; })); }; + tcpOnly = mkOption { default = false; type = types.bool; @@ -131,6 +123,7 @@ in TCP instead of UDP (on port 443). Use only if the UDP port is blocked. ''; }; + ephemeralKeys = mkOption { default = false; type = types.bool; @@ -212,7 +205,6 @@ in ExecStart = "${dnscrypt-proxy}/bin/dnscrypt-proxy ${toString daemonArgs}"; User = "dnscrypt-proxy"; - Group = "dnscrypt-proxy"; PrivateTmp = true; PrivateDevices = true; diff --git a/nixos/modules/services/networking/dnscrypt-proxy.xml b/nixos/modules/services/networking/dnscrypt-proxy.xml new file mode 100644 index 00000000000..e212a8d3e2c --- /dev/null +++ b/nixos/modules/services/networking/dnscrypt-proxy.xml @@ -0,0 +1,76 @@ + + + DNSCrypt client proxy + + + The DNSCrypt client proxy relays DNS queries to a DNSCrypt enabled + upstream resolver. The traffic between the client and the upstream + resolver is encrypted and authenticated, mitigating the risk of MITM + attacks, DNS poisoning attacks, and third-party snooping (assuming the + upstream is trustworthy). + + + Basic configuration + + + To enable the client proxy, set + + services.dnscrypt-proxy.enable = true; + + + + + Enabling the client proxy does not alter the system nameserver; to + relay local queries, prepend 127.0.0.1 to + . + + + + + As a forwarder for a caching DNS client + + + By default, DNSCrypt proxy acts as a transparent proxy for the + system stub resolver. Because the client does not cache lookups, this + setup can significantly slow down e.g., web browsing. The recommended + configuration is to run DNSCrypt proxy as a forwarder for a caching DNS + client. To achieve this, change the default proxy listening port to + a non-standard value and point the caching client to it: + + services.dnscrypt-proxy.localPort = 43; + + + + dnsmasq + + + { + services.dnsmasq.enable = true; + services.dnsmasq.servers = [ "127.0.0.1#43" ]; + } + + + + + unbound + + + { + networking.nameservers = [ "127.0.0.1" ]; + services.unbound.enable = true; + services.unbound.forwardAddresses = [ "127.0.0.1@43" ]; + services.unbound.extraConfig = '' + do-not-query-localhost: no + ''; + } + + + + + + + diff --git a/nixos/modules/system/activation/activation-script.nix b/nixos/modules/system/activation/activation-script.nix index 4489e34831d..1c587413121 100644 --- a/nixos/modules/system/activation/activation-script.nix +++ b/nixos/modules/system/activation/activation-script.nix @@ -154,9 +154,15 @@ in system.activationScripts.tmpfs = '' - ${pkgs.utillinux}/bin/mount -o "remount,size=${config.boot.devSize}" none /dev - ${pkgs.utillinux}/bin/mount -o "remount,size=${config.boot.devShmSize}" none /dev/shm - ${pkgs.utillinux}/bin/mount -o "remount,size=${config.boot.runSize}" none /run + specialMount() { + local device="$1" + local mountPoint="$2" + local options="$3" + local fsType="$4" + + ${pkgs.utillinux}/bin/mount -t "$fsType" -o "remount,$options" "$device" "$mountPoint" + } + source ${config.system.build.earlyMountScript} ''; }; diff --git a/nixos/modules/system/boot/stage-1-init.sh b/nixos/modules/system/boot/stage-1-init.sh index 65d1dcb6168..abab5f20baa 100644 --- a/nixos/modules/system/boot/stage-1-init.sh +++ b/nixos/modules/system/boot/stage-1-init.sh @@ -59,22 +59,24 @@ echo echo "<<< NixOS Stage 1 >>>" echo - -# Mount special file systems. +# Make several required directories. mkdir -p /etc/udev touch /etc/fstab # to shut up mount -touch /etc/mtab # to shut up mke2fs +ln -s /proc/mounts /etc/mtab # to shut up mke2fs touch /etc/udev/hwdb.bin # to shut up udev touch /etc/initrd-release -mkdir -p /proc -mount -t proc proc /proc -mkdir -p /sys -mount -t sysfs sysfs /sys -mount -t devtmpfs -o "size=@devSize@" devtmpfs /dev -mkdir -p /run -mount -t tmpfs -o "mode=0755,size=@runSize@" tmpfs /run -mkdir /dev/pts -mount -t devpts devpts /dev/pts + +# Mount special file systems. +specialMount() { + local device="$1" + local mountPoint="$2" + local options="$3" + local fsType="$4" + + mkdir -m 0755 -p "$mountPoint" + mount -n -t "$fsType" -o "$options" "$device" "$mountPoint" +} +source @earlyMountScript@ # Log the script output to /dev/kmsg or /run/log/stage-1-init.log. mkdir -p /tmp diff --git a/nixos/modules/system/boot/stage-1.nix b/nixos/modules/system/boot/stage-1.nix index a5c05f3dbba..513c121347b 100644 --- a/nixos/modules/system/boot/stage-1.nix +++ b/nixos/modules/system/boot/stage-1.nix @@ -190,7 +190,9 @@ let inherit udevRules extraUtils modulesClosure; - inherit (config.boot) resumeDevice devSize runSize; + inherit (config.boot) resumeDevice; + + inherit (config.system.build) earlyMountScript; inherit (config.boot.initrd) checkJournalingFS preLVMCommands preDeviceCommands postDeviceCommands postMountCommands preFailCommands kernelModules; diff --git a/nixos/modules/system/boot/stage-2-init.sh b/nixos/modules/system/boot/stage-2-init.sh index c5a14f0766d..7de85209a15 100644 --- a/nixos/modules/system/boot/stage-2-init.sh +++ b/nixos/modules/system/boot/stage-2-init.sh @@ -37,12 +37,16 @@ fi # Likewise, stage 1 mounts /proc, /dev and /sys, so if we don't have a # stage 1, we need to do that here. if [ ! -e /proc/1 ]; then - mkdir -m 0755 -p /proc - mount -n -t proc proc /proc - mkdir -m 0755 -p /dev - mount -t devtmpfs devtmpfs /dev - mkdir -m 0755 -p /sys - mount -t sysfs sysfs /sys + specialMount() { + local device="$1" + local mountPoint="$2" + local options="$3" + local fsType="$4" + + mkdir -m 0755 -p "$mountPoint" + mount -n -t "$fsType" -o "$options" "$device" "$mountPoint" + } + source @earlyMountScript@ fi @@ -87,11 +91,6 @@ done # More special file systems, initialise required directories. -if ! mountpoint -q /dev/shm; then - mkdir -m 0755 /dev/shm - mount -t tmpfs -o "rw,nosuid,nodev,size=@devShmSize@" tmpfs /dev/shm -fi -mkdir -m 0755 -p /dev/pts [ -e /proc/bus/usb ] && mount -t usbfs usbfs /proc/bus/usb # UML doesn't have USB by default mkdir -m 01777 -p /tmp mkdir -m 0755 -p /var /var/log /var/lib /var/db @@ -112,14 +111,6 @@ rm -f /etc/{group,passwd,shadow}.lock rm -rf /nix/var/nix/gcroots/tmp /nix/var/nix/temproots -# Create a tmpfs on /run to hold runtime state for programs such as -# udev (if stage 1 hasn't already done so). -if ! mountpoint -q /run; then - rm -rf /run - mkdir -m 0755 -p /run - mount -t tmpfs -o "mode=0755,size=@runSize@" tmpfs /run -fi - # Create a ramfs on /run/keys to hold secrets that shouldn't be # written to disk (generally used for NixOps, harmless elsewhere). if ! mountpoint -q /run/keys; then diff --git a/nixos/modules/system/boot/stage-2.nix b/nixos/modules/system/boot/stage-2.nix index b67f42a017e..7e4ec2a4a67 100644 --- a/nixos/modules/system/boot/stage-2.nix +++ b/nixos/modules/system/boot/stage-2.nix @@ -20,10 +20,9 @@ let src = ./stage-2-init.sh; shellDebug = "${pkgs.bashInteractive}/bin/bash"; isExecutable = true; - inherit (config.boot) devShmSize runSize; inherit (config.nix) readOnlyStore; inherit (config.networking) useHostResolvConf; - ttyGid = config.ids.gids.tty; + inherit (config.system.build) earlyMountScript; path = [ pkgs.coreutils pkgs.utillinux diff --git a/nixos/modules/tasks/filesystems.nix b/nixos/modules/tasks/filesystems.nix index f146448200f..d69284a7532 100644 --- a/nixos/modules/tasks/filesystems.nix +++ b/nixos/modules/tasks/filesystems.nix @@ -18,6 +18,8 @@ let prioOption = prio: optionalString (prio != null) " pri=${toString prio}"; + specialFSTypes = [ "proc" "sysfs" "tmpfs" "devtmpfs" "devpts" ]; + fileSystemOpts = { name, config, ... }: { options = { @@ -97,11 +99,22 @@ let description = "Disable running fsck on this filesystem."; }; + early = mkOption { + default = false; + type = types.bool; + internal = true; + description = '' + Mount this filesystem very early during boot. At the moment of + mounting no disks are exposed, so this option is primarily for + special file systems. + ''; + }; + }; config = { mountPoint = mkDefault name; - device = mkIf (config.fsType == "tmpfs") (mkDefault config.fsType); + device = mkIf (elem config.fsType specialFSTypes) (mkDefault config.fsType); options = mkIf config.autoResize [ "x-nixos.autoresize" ]; # -F needed to allow bare block device without partitions @@ -110,6 +123,13 @@ let }; + # Makes sequence of `specialMount device mountPoint options fsType` commands. + # `systemMount` should be defined in the sourcing script. + makeSpecialMounts = mounts: + pkgs.writeText "mounts.sh" (concatMapStringsSep "\n" (mount: '' + specialMount "${mount.device}" "${mount.mountPoint}" "${concatStringsSep "," mount.options}" "${mount.fsType}" + '') mounts); + in { @@ -131,8 +151,7 @@ in "/bigdisk".label = "bigdisk"; } ''; - type = types.loaOf types.optionSet; - options = [ fileSystemOpts ]; + type = types.loaOf (types.submodule fileSystemOpts); description = '' The file systems to be mounted. It must include an entry for the root directory (mountPoint = "/"). Each @@ -177,10 +196,14 @@ in { assertion = ! (fileSystems' ? "cycle"); message = "The ‘fileSystems’ option can't be topologically sorted: mountpoint dependency path ${ls " -> " fileSystems'.cycle} loops to ${ls ", " fileSystems'.loops}"; } + { assertion = all (x: !x.early || (x.label == null && !x.autoFormat && !x.autoResize)) fileSystems; + message = "Early filesystems don't support mounting by label, auto formatting and resizing"; + } ]; # Export for use in other modules system.build.fileSystems = fileSystems; + system.build.earlyMountScript = makeSpecialMounts (filter (fs: fs.early) fileSystems); boot.supportedFilesystems = map (fs: fs.fsType) fileSystems; @@ -211,7 +234,7 @@ in + " " + (if skipCheck fs then "0" else if fs.mountPoint == "/" then "1" else "2") + "\n" - ) fileSystems} + ) (filter (fs: !fs.early) fileSystems)} # Swap devices. ${flip concatMapStrings config.swapDevices (sw: @@ -258,6 +281,16 @@ in in listToAttrs (map formatDevice (filter (fs: fs.autoFormat) fileSystems)); + # Sync mount options with systemd's src/core/mount-setup.c: mount_table. + fileSystems = mapAttrs (n: fs: fs // { early = true; }) { + "/proc" = { fsType = "proc"; options = [ "nosuid" "noexec" "nodev" ]; }; + "/sys" = { fsType = "sysfs"; options = [ "nosuid" "noexec" "nodev" ]; }; + "/run" = { fsType = "tmpfs"; options = [ "nosuid" "nodev" "strictatime" "mode=755" "size=${config.boot.runSize}" ]; }; + "/dev" = { fsType = "devtmpfs"; options = [ "nosuid" "strictatime" "mode=755" "size=${config.boot.devSize}" ]; }; + "/dev/shm" = { fsType = "tmpfs"; options = [ "nosuid" "nodev" "strictatime" "mode=1777" "size=${config.boot.devShmSize}" ]; }; + "/dev/pts" = { fsType = "devpts"; options = [ "nosuid" "noexec" "mode=620" "gid=${toString config.ids.gids.tty}" ]; }; + }; + }; } diff --git a/nixos/modules/virtualisation/amazon-grow-partition.nix b/nixos/modules/virtualisation/amazon-grow-partition.nix deleted file mode 100644 index 69b80d900ba..00000000000 --- a/nixos/modules/virtualisation/amazon-grow-partition.nix +++ /dev/null @@ -1,24 +0,0 @@ -# This module automatically grows the root partition on Amazon EC2 HVM -# instances. This allows an instance to be created with a bigger root -# filesystem than provided by the AMI. - -{ config, lib, pkgs, ... }: - -{ - config = lib.mkIf config.ec2.hvm { - boot.initrd.extraUtilsCommands = '' - copy_bin_and_libs ${pkgs.gawk}/bin/gawk - copy_bin_and_libs ${pkgs.gnused}/bin/sed - copy_bin_and_libs ${pkgs.utillinux}/sbin/sfdisk - cp -v ${pkgs.cloud-utils}/bin/growpart $out/bin/growpart - ln -s sed $out/bin/gnused - ''; - - boot.initrd.postDeviceCommands = '' - if [ -e /dev/xvda ] && [ -e /dev/xvda1 ]; then - TMPDIR=/run sh $(type -P growpart) /dev/xvda 1 - udevadm settle - fi - ''; - }; -} diff --git a/nixos/modules/virtualisation/amazon-image.nix b/nixos/modules/virtualisation/amazon-image.nix index ebf398fa266..f9c3f2e53ad 100644 --- a/nixos/modules/virtualisation/amazon-image.nix +++ b/nixos/modules/virtualisation/amazon-image.nix @@ -11,10 +11,12 @@ with lib; let cfg = config.ec2; in { - imports = [ ../profiles/headless.nix ./ec2-data.nix ./amazon-grow-partition.nix ./amazon-init.nix ]; + imports = [ ../profiles/headless.nix ./ec2-data.nix ./grow-partition.nix ./amazon-init.nix ]; config = { + virtualisation.growPartition = cfg.hvm; + fileSystems."/" = { device = "/dev/disk/by-label/nixos"; autoResize = true; diff --git a/nixos/modules/virtualisation/containers.nix b/nixos/modules/virtualisation/containers.nix index d83841452f9..413aa94339f 100644 --- a/nixos/modules/virtualisation/containers.nix +++ b/nixos/modules/virtualisation/containers.nix @@ -340,6 +340,20 @@ in A specification of the desired configuration of this container, as a NixOS module. ''; + type = lib.mkOptionType { + name = "Toplevel NixOS config"; + merge = loc: defs: (import ../../lib/eval-config.nix { + inherit system; + modules = + let extraConfig = + { boot.isContainer = true; + networking.hostName = mkDefault name; + networking.useDHCP = false; + }; + in [ extraConfig ] ++ (map (x: x.value) defs); + prefix = [ "containers" name ]; + }).config; + }; }; path = mkOption { @@ -410,18 +424,9 @@ in } // networkOptions; config = mkMerge - [ (mkIf options.config.isDefined { - path = (import ../../lib/eval-config.nix { - inherit system; - modules = - let extraConfig = - { boot.isContainer = true; - networking.hostName = mkDefault name; - networking.useDHCP = false; - }; - in [ extraConfig config.config ]; - prefix = [ "containers" name ]; - }).config.system.build.toplevel; + [ + (mkIf options.config.isDefined { + path = config.config.system.build.toplevel; }) ]; })); diff --git a/nixos/modules/virtualisation/grow-partition.nix b/nixos/modules/virtualisation/grow-partition.nix new file mode 100644 index 00000000000..34547905166 --- /dev/null +++ b/nixos/modules/virtualisation/grow-partition.nix @@ -0,0 +1,41 @@ +# This module automatically grows the root partition on virtual machines. +# This allows an instance to be created with a bigger root filesystem +# than provided by the machine image. + +{ config, lib, pkgs, ... }: + +{ + + options = { + + virtualisation.growPartition = mkOption { + type = types.bool; + default = true; + }; + + }; + + config = mkIf config.virtualisation.growPartition { + + boot.initrd.extraUtilsCommands = '' + copy_bin_and_libs ${pkgs.gawk}/bin/gawk + copy_bin_and_libs ${pkgs.gnused}/bin/sed + copy_bin_and_libs ${pkgs.utillinux}/sbin/sfdisk + copy_bin_and_libs ${pkgs.utillinux}/sbin/lsblk + cp -v ${pkgs.cloud-utils}/bin/growpart $out/bin/growpart + ln -s sed $out/bin/gnused + ''; + + boot.initrd.postDeviceCommands = '' + rootDevice="${config.fileSystems."/".device}" + if [ -e "$rootDevice" ]; then + rootDevice="$(readlink -f "$rootDevice")" + parentDevice="$(lsblk -npo PKNAME "$rootDevice")" + TMPDIR=/run sh $(type -P growpart) "$parentDevice" "''${rootDevice#$parentDevice}" + udevadm settle + fi + ''; + + }; + +} diff --git a/nixos/modules/virtualisation/virtualbox-image.nix b/nixos/modules/virtualisation/virtualbox-image.nix index 3a598a1c7dc..b6a5b3e4788 100644 --- a/nixos/modules/virtualisation/virtualbox-image.nix +++ b/nixos/modules/virtualisation/virtualbox-image.nix @@ -8,6 +8,8 @@ let in { + imports = [ ./grow-partition.nix ]; + options = { virtualbox = { baseImageSize = mkOption { @@ -64,7 +66,10 @@ in { ''; }; - fileSystems."/".device = "/dev/disk/by-label/nixos"; + fileSystems."/" = { + device = "/dev/disk/by-label/nixos"; + autoResize = true; + }; boot.loader.grub.device = "/dev/sda"; diff --git a/pkgs/applications/editors/emacs-24/default.nix b/pkgs/applications/editors/emacs-24/default.nix index 273507274fa..df53cf2c9a4 100644 --- a/pkgs/applications/editors/emacs-24/default.nix +++ b/pkgs/applications/editors/emacs-24/default.nix @@ -44,6 +44,10 @@ stdenv.mkDerivation rec { postPatch = '' sed -i 's|/usr/share/locale|${gettext}/share/locale|g' lisp/international/mule-cmds.el + # emacs runs then dumps itself. In the process, it keeps a copy of the + # PATH env var, holding all the build inputs in it's closure. + # Prevent that by running the self-dumping emacs with an empty PATH. + sed -i 's|^RUN_TEMACS = |&PATH= |' src/Makefile.in ''; buildInputs = diff --git a/pkgs/applications/editors/manuskript/default.nix b/pkgs/applications/editors/manuskript/default.nix index 93813152a16..fc27e4a00f7 100644 --- a/pkgs/applications/editors/manuskript/default.nix +++ b/pkgs/applications/editors/manuskript/default.nix @@ -17,11 +17,17 @@ python3Packages.buildPythonApplication rec { zlib ]; + patchPhase = '' + substituteInPlace manuskript/ui/welcome.py \ + --replace sample-projects $out/share/${name}/sample-projects + ''; + buildPhase = ''''; installPhase = '' - mkdir -p $out - cp -av * $out/ + mkdir -p $out/share/${name} + cp -av bin/ i18n/ libs/ manuskript/ resources/ icons/ $out + cp -r sample-projects/ $out/share/${name} ''; doCheck = false; @@ -29,6 +35,18 @@ python3Packages.buildPythonApplication rec { meta = { description = "A open-source tool for writers"; homepage = http://www.theologeek.ch/manuskript; + longDescription = '' + Manuskript is a tool for those writer who like to organize and + plan everything before writing. The snowflake method can help you + grow your idea into a book, by leading you step by step and asking + you questions to go deeper. While writing, keep track of notes + about every characters, plot, event, place in your story. + + Develop complex characters and keep track of all useful infos. + Create intricate plots, linked to your characters, and use them to + outline your story. Organize your ideas about the world your + characters live in. + ''; license = stdenv.lib.licenses.gpl3; maintainers = [ stdenv.lib.maintainers.steveej ]; platforms = stdenv.lib.platforms.linux; diff --git a/pkgs/applications/gis/qgis/default.nix b/pkgs/applications/gis/qgis/default.nix index a8c1428f8cb..880053e05c2 100644 --- a/pkgs/applications/gis/qgis/default.nix +++ b/pkgs/applications/gis/qgis/default.nix @@ -5,7 +5,7 @@ }: stdenv.mkDerivation rec { - name = "qgis-2.16.1"; + name = "qgis-2.16.2"; buildInputs = [ gdal qt4 flex bison proj geos xlibsWrapper sqlite gsl qwt qscintilla fcgi libspatialindex libspatialite postgresql qjson qca2 txt2tags ] ++ @@ -25,7 +25,7 @@ stdenv.mkDerivation rec { src = fetchurl { url = "http://qgis.org/downloads/${name}.tar.bz2"; - sha256 = "4a526cd8ae76fc06bb2b6a158e86db5dc0c94545137a8233cd465ef867acdc8b"; + sha256 = "0dll8klz0qfba4c1y7mp9k4y4azlay0sypvryicggllk1hna4w0n"; }; cmakeFlags = stdenv.lib.optional withGrass "-DGRASS_PREFIX7=${grass}/${grass.name}"; diff --git a/pkgs/applications/misc/audio/wavrsocvt/default.nix b/pkgs/applications/misc/audio/wavrsocvt/default.nix new file mode 100644 index 00000000000..09b75e27d46 --- /dev/null +++ b/pkgs/applications/misc/audio/wavrsocvt/default.nix @@ -0,0 +1,38 @@ +{ stdenv, fetchurl }: + +stdenv.mkDerivation { + name = "wavrsocvt-1.0.2.0"; + + src = fetchurl { + url = "http://bricxcc.sourceforge.net/wavrsocvt.tgz"; + sha256 = "15qlvdfwbiclljj7075ycm78yzqahzrgl4ky8pymix5179acm05h"; + }; + + phases = [ "unpackPhase" "installPhase" ]; + + unpackPhase = '' + tar -zxf $src + ''; + + installPhase = '' + mkdir -p $out/bin + cp wavrsocvt $out/bin + ''; + + meta = with stdenv.lib; { + description = "Convert .wav files into sound files for Lego NXT brick"; + longDescription = '' + wavrsocvt is a command-line utility which can be used from a + terminal window or script to convert .wav files into sound + files for the NXT brick (.rso files). It can also convert the + other direction (i.e., .rso -> .wav). It can produce RSO files + with a sample rate between 2000 and 16000 (the min/max range of + supported sample rates in the standard NXT firmware). + You can then upload these with e.g. nxt-python. + ''; + homepage = http://bricxcc.sourceforge.net/; + license = licenses.mpl11; + maintainers = with maintainers; [ leenaars ]; + platforms = with platforms; linux; + }; +} diff --git a/pkgs/applications/misc/timewarrior/default.nix b/pkgs/applications/misc/timewarrior/default.nix index e67c141f358..091d51d3305 100644 --- a/pkgs/applications/misc/timewarrior/default.nix +++ b/pkgs/applications/misc/timewarrior/default.nix @@ -2,13 +2,13 @@ stdenv.mkDerivation rec { name = "timewarrior-${version}"; - version = "1.0.0.beta1"; + version = "1.0.0"; enableParallelBuilding = true; src = fetchurl { url = "https://taskwarrior.org/download/timew-${version}.tar.gz"; - sha256 = "1gkh07mw8hiqslw8ps35r9lp5jbdy93s0sdrcbp34dd5h99qx587"; + sha256 = "1d8b9sjdbdld81n535iwip9igl16kcw452wa47fmndp8w487j0mc"; }; nativeBuildInputs = [ cmake ]; diff --git a/pkgs/applications/misc/valauncher/default.nix b/pkgs/applications/misc/valauncher/default.nix new file mode 100644 index 00000000000..7d35f1f64a8 --- /dev/null +++ b/pkgs/applications/misc/valauncher/default.nix @@ -0,0 +1,23 @@ +{ stdenv, fetchFromGitHub, cmake, gtk3, vala_0_26, pkgconfig, gnome3 }: + +stdenv.mkDerivation rec { + version = "1.2"; + name = "valauncher-${version}"; + + src = fetchFromGitHub { + owner = "Mic92"; + repo = "valauncher"; + rev = "v${version}"; + sha256 = "1d1gfmzmr5ra2rnjc6rbz31mf3hk7q04lh4i1hljgk7fh90dacb6"; + }; + + buildInputs = [ cmake gtk3 vala_0_26 pkgconfig gnome3.libgee ]; + + meta = with stdenv.lib; { + description = "A fast dmenu-like gtk3 application launcher"; + homepage = https://github.com/Mic92/valauncher; + license = licenses.mit; + maintainers = with maintainers; [ mic92 ]; + platforms = platforms.all; + }; +} diff --git a/pkgs/applications/networking/irc/communi/default.nix b/pkgs/applications/networking/irc/communi/default.nix index 382044bec5a..8b467a868b5 100644 --- a/pkgs/applications/networking/irc/communi/default.nix +++ b/pkgs/applications/networking/irc/communi/default.nix @@ -2,12 +2,13 @@ stdenv.mkDerivation rec { name = "communi-${version}"; - version = "2016-01-03"; + version = "2016-08-19"; src = fetchgit { url = "https://github.com/communi/communi-desktop.git"; - rev = "ad1b9a30ed6c51940c0d2714b126a32b5d68c876"; - sha256 = "0jx963pfvzk4dbk8mrmzfrhzybk5y6ib9yzaj662wliayrzj7vpg"; + rev = "d516b01b1382a805de65f21f3475e0a8e64a97b5"; + sha256 = "1pn7mr7ch1ck5qv9zdn3ril40c9kk6l04475564rpzf11jly76an"; + fetchSubmodules = true; }; nativeBuildInputs = [ makeQtWrapper qmakeHook ]; @@ -34,6 +35,10 @@ stdenv.mkDerivation rec { --replace "/usr/bin" "$out/bin" ''; + postFixup = '' + patchelf --set-rpath "$out/lib:$(patchelf --print-rpath $out/bin/.communi-wrapped)" $out/bin/.communi-wrapped + ''; + meta = with stdenv.lib; { description = "A simple and elegant cross-platform IRC client"; homepage = https://github.com/communi/communi-desktop; diff --git a/pkgs/applications/networking/irc/qweechat/default.nix b/pkgs/applications/networking/irc/qweechat/default.nix new file mode 100644 index 00000000000..83d459a97fe --- /dev/null +++ b/pkgs/applications/networking/irc/qweechat/default.nix @@ -0,0 +1,31 @@ +{ stdenv, fetchFromGitHub, python27Packages }: + +python27Packages.buildPythonApplication rec { + version = "2016-07-29"; + name = "qweechat-unstable-${version}"; + namePrefix = ""; + + src = fetchFromGitHub { + owner = "weechat"; + repo = "qweechat"; + rev = "f5e54d01691adb3abef47e051a6412186c33313c"; + sha256 = "0dhlriwvkrsn7jj01p2wqhf2p63n9qd173jsgccgxlacm2zzvhaz"; + }; + + prePatch = '' + substituteInPlace setup.py \ + --replace 'qweechat = qweechat.qweechat' 'qweechat = qweechat.qweechat:main' + ''; + + propagatedBuildInputs = with python27Packages; [ + pyside + ]; + + meta = with stdenv.lib; { + homepage = https://github.com/weechat/qweechat; + description = "Qt remote GUI for WeeChat"; + license = licenses.gpl3; + maintainers = with maintainers; [ ramkromberg ]; + platform = with platforms; linux; + }; +} diff --git a/pkgs/applications/networking/pjsip/default.nix b/pkgs/applications/networking/pjsip/default.nix index 4d08e1cc60a..4ccc3fd5237 100644 --- a/pkgs/applications/networking/pjsip/default.nix +++ b/pkgs/applications/networking/pjsip/default.nix @@ -1,14 +1,15 @@ -{stdenv, fetchurl, openssl, libsamplerate}: +{ stdenv, fetchurl, openssl, libsamplerate, alsaLib }: stdenv.mkDerivation rec { - name = "pjsip-2.1"; + name = "pjsip-${version}"; + version = "2.5.5"; src = fetchurl { - url = http://www.pjsip.org/release/2.1/pjproject-2.1.tar.bz2; - md5 = "310eb63638dac93095f6a1fc8ee1f578"; + url = "http://www.pjsip.org/release/${version}/pjproject-${version}.tar.bz2"; + sha256 = "ab39207b761d3485199cd881410afeb2d171dff7c2bf75e8caae91c6dca508f3"; }; - buildInputs = [ openssl libsamplerate ]; + buildInputs = [ openssl libsamplerate alsaLib ]; postInstall = '' mkdir -p $out/bin @@ -21,7 +22,7 @@ stdenv.mkDerivation rec { dontPatchELF = true; meta = { - description = "SIP stack and media stack for presence, im, and multimedia communication"; + description = "A multimedia communication library written in C, implementing standard based protocols such as SIP, SDP, RTP, STUN, TURN, and ICE"; homepage = http://pjsip.org/; license = stdenv.lib.licenses.gpl2Plus; maintainers = with stdenv.lib.maintainers; [viric]; diff --git a/pkgs/applications/office/libreoffice/still.nix b/pkgs/applications/office/libreoffice/still.nix index 8739f08fbd6..d873ca0a02f 100644 --- a/pkgs/applications/office/libreoffice/still.nix +++ b/pkgs/applications/office/libreoffice/still.nix @@ -69,6 +69,16 @@ in stdenv.mkDerivation rec { sha256 = "1qg0dj0zwh5ifhmvv4k771nmyqddz4ifn75s9mr1p0nyix8zks8x"; }; + # we only have this problem on i686 ATM + patches = if stdenv.is64bit then null else [ + (fetchurl { + name = "disable-flaky-tests.diff"; + url = "https://anonscm.debian.org/git/pkg-openoffice/libreoffice.git/plain" + + "/patches/disable-flaky-tests.diff?h=libreoffice_5.1.5_rc2-1"; + sha256 = "1v1aiqdi64iijjraj6v4ljzclrd9lqan54hmy2h6m20x3ab005wb"; + }) + ]; + # Openoffice will open libcups dynamically, so we link it directly # to make its dlopen work. # It also seems not to mention libdl explicitly in some places. diff --git a/pkgs/applications/video/mkvtoolnix/default.nix b/pkgs/applications/video/mkvtoolnix/default.nix index 9037e7bd6c8..c98d84dab43 100644 --- a/pkgs/applications/video/mkvtoolnix/default.nix +++ b/pkgs/applications/video/mkvtoolnix/default.nix @@ -10,13 +10,13 @@ with stdenv.lib; stdenv.mkDerivation rec { name = "mkvtoolnix-${version}"; - version = "9.3.1"; + version = "9.4.0"; src = fetchFromGitHub { owner = "mbunkus"; repo = "mkvtoolnix"; rev = "release-${version}"; - sha256 = "1vipznja07nr7gmzdbv93dv2ggmw4x1bh6xxnn13k3fk6ysqh163"; + sha256 = "0bmr0cnxp56flak6fjcn0ld5238h3ngrvy09yqp4790g8xwif35v"; }; nativeBuildInputs = [ pkgconfig autoconf automake gettext ruby ]; diff --git a/pkgs/applications/video/qarte/default.nix b/pkgs/applications/video/qarte/default.nix index f01f4ffd7f5..40011e11b2d 100644 --- a/pkgs/applications/video/qarte/default.nix +++ b/pkgs/applications/video/qarte/default.nix @@ -1,25 +1,23 @@ -{ stdenv, fetchbzr, pythonPackages, rtmpdump, makeWrapper }: +{ stdenv, fetchbzr, python3, rtmpdump, makeWrapper }: let - inherit (pythonPackages) python pyqt4 sip; + pythonEnv = python3.withPackages (ps: with ps; [ pyqt5 sip ]); in stdenv.mkDerivation { - name = "qarte-2.4.0"; + name = "qarte-3.2.0"; src = fetchbzr { - url = http://bazaar.launchpad.net/~vincent-vandevyvre/qarte/trunk; - rev = "150"; - sha256 = "0fj11jx9l5qi968c906rrksdic7w4yj414m47k6axlb4v6ghdnar"; + url = http://bazaar.launchpad.net/~vincent-vandevyvre/qarte/qarte-3; + rev = "146"; + sha256 = "0dvl38dknmnj2p4yr25p88kw3mh502c6qdp2bd43bhd2sqc3b0v0"; }; - buildInputs = [ makeWrapper ]; + buildInputs = [ makeWrapper pythonEnv ]; installPhase = '' mkdir -p $out/bin mv qarte $out/bin/ substituteInPlace $out/bin/qarte \ - --replace '/usr/bin/python' "${python.interpreter}" \ --replace '/usr/share' "$out/share" wrapProgram $out/bin/qarte \ - --prefix PYTHONPATH : "${pyqt4}/lib/${python.libPrefix}/site-packages:${sip}/lib/${python.libPrefix}/site-packages" \ --prefix PATH : "${rtmpdump}/bin" mkdir -p $out/share/man/man1/ diff --git a/pkgs/data/fonts/roboto/default.nix b/pkgs/data/fonts/roboto/default.nix new file mode 100644 index 00000000000..711cca5b164 --- /dev/null +++ b/pkgs/data/fonts/roboto/default.nix @@ -0,0 +1,31 @@ +{ stdenv, fetchurl, unzip }: + +stdenv.mkDerivation rec { + name = "roboto-${version}"; + version = "2.134"; + + src = fetchurl { + url = "https://github.com/google/roboto/releases/download/v${version}/roboto-unhinted.zip"; + sha256 = "1l033xc2n4754gwakxshh5235cnrnzy7q6zsp5zghn8ib0gdp5rb"; + }; + + nativeBuildInputs = [ unzip ]; + + installPhase = '' + mkdir -p $out/share/fonts/truetype + cp -a * $out/share/fonts/truetype/ + ''; + + meta = { + homepage = https://github.com/google/roboto; + description = "The Roboto family of fonts"; + longDescription = '' + Google’s signature family of fonts, the default font on Android and + Chrome OS, and the recommended font for Google’s visual language, + Material Design. + ''; + license = stdenv.lib.licenses.asl20; + maintainers = [ stdenv.lib.maintainers.romildo ]; + platforms = stdenv.lib.platforms.all; + }; +} diff --git a/pkgs/development/beam-modules/build-rebar3.nix b/pkgs/development/beam-modules/build-rebar3.nix index ac40b76a78a..f783683cd4a 100644 --- a/pkgs/development/beam-modules/build-rebar3.nix +++ b/pkgs/development/beam-modules/build-rebar3.nix @@ -49,7 +49,7 @@ let postPatch = '' rm -f rebar rebar3 - ''; + '' + postPatch; configurePhase = if configurePhase == null then '' diff --git a/pkgs/development/compilers/llvm/3.9/clang/default.nix b/pkgs/development/compilers/llvm/3.9/clang/default.nix new file mode 100644 index 00000000000..c6605dd656f --- /dev/null +++ b/pkgs/development/compilers/llvm/3.9/clang/default.nix @@ -0,0 +1,57 @@ +{ stdenv, fetch, cmake, libxml2, libedit, llvm, version, clang-tools-extra_src, python }: + +let + gcc = if stdenv.cc.isGNU then stdenv.cc.cc else stdenv.cc.cc.gcc; + self = stdenv.mkDerivation { + name = "clang-${version}"; + + unpackPhase = '' + unpackFile ${fetch "cfe" "0a1x32rxrq4ln079xf58irg56gjdxcfgwa00ws4hqv9pv73sg5km"} + mv cfe-${version}.src clang + sourceRoot=$PWD/clang + unpackFile ${clang-tools-extra_src} + mv clang-tools-extra-* $sourceRoot/tools/extra + ''; + + buildInputs = [ cmake libedit libxml2 llvm python ]; + + cmakeFlags = [ + "-DCMAKE_BUILD_TYPE=Release" + "-DCMAKE_CXX_FLAGS=-std=c++11" + ] ++ + # Maybe with compiler-rt this won't be needed? + (stdenv.lib.optional stdenv.isLinux "-DGCC_INSTALL_PREFIX=${gcc}") ++ + (stdenv.lib.optional (stdenv.cc.libc != null) "-DC_INCLUDE_DIRS=${stdenv.cc.libc}/include"); + + patches = [ ./purity.patch ]; + + postPatch = '' + sed -i -e 's/Args.hasArg(options::OPT_nostdlibinc)/true/' lib/Driver/Tools.cpp + sed -i -e 's/DriverArgs.hasArg(options::OPT_nostdlibinc)/true/' lib/Driver/ToolChains.cpp + ''; + + # Clang expects to find LLVMgold in its own prefix + # Clang expects to find sanitizer libraries in its own prefix + postInstall = '' + ln -sv ${llvm}/lib/LLVMgold.so $out/lib + ln -sv ${llvm}/lib/clang/3.9.0/lib $out/lib/clang/3.9.0/ + ln -sv $out/bin/clang $out/bin/cpp + ''; + + enableParallelBuilding = true; + + passthru = { + lib = self; # compatibility with gcc, so that `stdenv.cc.cc.lib` works on both + isClang = true; + } // stdenv.lib.optionalAttrs stdenv.isLinux { + inherit gcc; + }; + + meta = { + description = "A c, c++, objective-c, and objective-c++ frontend for the llvm compiler"; + homepage = http://llvm.org/; + license = stdenv.lib.licenses.bsd3; + platforms = stdenv.lib.platforms.all; + }; + }; +in self diff --git a/pkgs/development/compilers/llvm/3.9/clang/purity.patch b/pkgs/development/compilers/llvm/3.9/clang/purity.patch new file mode 100644 index 00000000000..f5fb4c73af4 --- /dev/null +++ b/pkgs/development/compilers/llvm/3.9/clang/purity.patch @@ -0,0 +1,16 @@ +--- a/lib/Driver/Tools.cpp 2016-08-25 15:48:05.187553443 +0200 ++++ b/lib/Driver/Tools.cpp 2016-08-25 15:48:47.534468882 +0200 +@@ -9420,13 +9420,6 @@ + if (!Args.hasArg(options::OPT_static)) { + if (Args.hasArg(options::OPT_rdynamic)) + CmdArgs.push_back("-export-dynamic"); +- +- if (!Args.hasArg(options::OPT_shared)) { +- const std::string Loader = +- D.DyldPrefix + ToolChain.getDynamicLinker(Args); +- CmdArgs.push_back("-dynamic-linker"); +- CmdArgs.push_back(Args.MakeArgString(Loader)); +- } + } + + CmdArgs.push_back("-o"); diff --git a/pkgs/development/compilers/llvm/3.9/default.nix b/pkgs/development/compilers/llvm/3.9/default.nix new file mode 100644 index 00000000000..7b9dbd93b2b --- /dev/null +++ b/pkgs/development/compilers/llvm/3.9/default.nix @@ -0,0 +1,35 @@ +{ newScope, stdenv, isl, fetchurl, overrideCC, wrapCC }: +let + callPackage = newScope (self // { inherit stdenv isl version fetch; }); + + version = "3.9.0"; + + fetch = fetch_v version; + fetch_v = ver: name: sha256: fetchurl { + url = "http://llvm.org/releases/3.9.0/${name}-${ver}.src.tar.xz"; + inherit sha256; + }; + + compiler-rt_src = fetch "compiler-rt" "16m5g0hf8yg9npnw25j2a86g34nsvk9rsm3c84gbch2prm7j5rg0"; + clang-tools-extra_src = fetch "clang-tools-extra" "052zg0h5vbmxnh2ikc743rw3649f112dfyn8hg39x6cfxi3fqyjv"; + + self = { + llvm = callPackage ./llvm.nix { + inherit compiler-rt_src stdenv; + }; + + clang-unwrapped = callPackage ./clang { + inherit clang-tools-extra_src stdenv; + }; + + clang = wrapCC self.clang-unwrapped; + + stdenv = overrideCC stdenv self.clang; + + lldb = callPackage ./lldb.nix {}; + + libcxx = callPackage ./libc++ {}; + + libcxxabi = callPackage ./libc++abi.nix {}; + }; +in self diff --git a/pkgs/development/compilers/llvm/3.9/libc++/darwin.patch b/pkgs/development/compilers/llvm/3.9/libc++/darwin.patch new file mode 100644 index 00000000000..6dd756f01cc --- /dev/null +++ b/pkgs/development/compilers/llvm/3.9/libc++/darwin.patch @@ -0,0 +1,39 @@ +--- libcxx-3.8.0.src.org/lib/CMakeLists.txt 2015-12-16 15:41:05.000000000 -0800 ++++ libcxx-3.8.0.src/lib/CMakeLists.txt 2016-06-17 19:40:00.293394500 -0700 +@@ -94,30 +94,30 @@ + add_definitions(-D__STRICT_ANSI__) + add_link_flags( + "-compatibility_version 1" + "-current_version 1" +- "-install_name /usr/lib/libc++.1.dylib" +- "-Wl,-reexport_library,/usr/lib/libc++abi.dylib" ++ "-install_name ${LIBCXX_LIBCXXABI_LIB_PATH}/libc++.1.dylib" ++ "-Wl,-reexport_library,${LIBCXX_LIBCXXABI_LIB_PATH}/libc++abi.dylib" + "-Wl,-unexported_symbols_list,${CMAKE_CURRENT_SOURCE_DIR}/libc++unexp.exp" + "/usr/lib/libSystem.B.dylib") + else() + if ( ${CMAKE_OSX_SYSROOT} ) + list(FIND ${CMAKE_OSX_ARCHITECTURES} "armv7" OSX_HAS_ARMV7) + if (OSX_HAS_ARMV7) + set(OSX_RE_EXPORT_LINE +- "${CMAKE_OSX_SYSROOT}/usr/lib/libc++abi.dylib" ++ "${CMAKE_OSX_SYSROOT}${LIBCXX_LIBCXXABI_LIB_PATH}/libc++abi.dylib" + "-Wl,-reexported_symbols_list,${CMAKE_CURRENT_SOURCE_DIR}/libc++sjlj-abi.exp") + else() + set(OSX_RE_EXPORT_LINE +- "-Wl,-reexport_library,${CMAKE_OSX_SYSROOT}/usr/lib/libc++abi.dylib") ++ "-Wl,-reexport_library,${CMAKE_OSX_SYSROOT}${LIBCXX_LIBCXXABI_LIB_PATH}/libc++abi.dylib") + endif() + else() +- set(OSX_RE_EXPORT_LINE "/usr/lib/libc++abi.dylib -Wl,-reexported_symbols_list,${CMAKE_CURRENT_SOURCE_DIR}/libc++abi${LIBCXX_LIBCPPABI_VERSION}.exp") ++ set(OSX_RE_EXPORT_LINE "${LIBCXX_LIBCXXABI_LIB_PATH}/libc++abi.dylib -Wl,-reexported_symbols_list,${CMAKE_CURRENT_SOURCE_DIR}/libc++abi${LIBCXX_LIBCPPABI_VERSION}.exp") + endif() + + add_link_flags( + "-compatibility_version 1" +- "-install_name /usr/lib/libc++.1.dylib" ++ "-install_name ${LIBCXX_LIBCXXABI_LIB_PATH}/libc++.1.dylib" + "-Wl,-unexported_symbols_list,${CMAKE_CURRENT_SOURCE_DIR}/libc++unexp.exp" + "${OSX_RE_EXPORT_LINE}" + "-Wl,-force_symbols_not_weak_list,${CMAKE_CURRENT_SOURCE_DIR}/notweak.exp" + "-Wl,-force_symbols_weak_list,${CMAKE_CURRENT_SOURCE_DIR}/weak.exp") diff --git a/pkgs/development/compilers/llvm/3.9/libc++/default.nix b/pkgs/development/compilers/llvm/3.9/libc++/default.nix new file mode 100644 index 00000000000..97cf65ad209 --- /dev/null +++ b/pkgs/development/compilers/llvm/3.9/libc++/default.nix @@ -0,0 +1,40 @@ +{ lib, stdenv, fetch, cmake, libcxxabi, fixDarwinDylibNames, version }: + +stdenv.mkDerivation rec { + name = "libc++-${version}"; + + src = fetch "libcxx" "01jvgwi9zd46bb1f93c561212bjzg02q2akacvsj4qsw6r8qvcyh"; + + postUnpack = '' + unpackFile ${libcxxabi.src} + ''; + + preConfigure = '' + # Get headers from the cxxabi source so we can see private headers not installed by the cxxabi package + cmakeFlagsArray=($cmakeFlagsArray -DLIBCXX_CXX_ABI_INCLUDE_PATHS="$NIX_BUILD_TOP/libcxxabi-${version}.src/include") + ''; + + patches = lib.optional stdenv.isDarwin ./darwin.patch; + + buildInputs = [ cmake libcxxabi ] ++ lib.optional stdenv.isDarwin fixDarwinDylibNames; + + cmakeFlags = + [ "-DCMAKE_BUILD_TYPE=Release" + "-DLIBCXX_LIBCXXABI_LIB_PATH=${libcxxabi}/lib" + "-DLIBCXX_LIBCPPABI_VERSION=2" + "-DLIBCXX_CXX_ABI=libcxxabi" + ]; + + enableParallelBuilding = true; + + linkCxxAbi = stdenv.isLinux; + + setupHook = ./setup-hook.sh; + + meta = { + homepage = http://libcxx.llvm.org/; + description = "A new implementation of the C++ standard library, targeting C++11"; + license = "BSD"; + platforms = stdenv.lib.platforms.unix; + }; +} diff --git a/pkgs/development/compilers/llvm/3.9/libc++/setup-hook.sh b/pkgs/development/compilers/llvm/3.9/libc++/setup-hook.sh new file mode 100644 index 00000000000..9022fced6ec --- /dev/null +++ b/pkgs/development/compilers/llvm/3.9/libc++/setup-hook.sh @@ -0,0 +1,3 @@ +linkCxxAbi="@linkCxxAbi@" +export NIX_CXXSTDLIB_COMPILE+=" -isystem @out@/include/c++/v1" +export NIX_CXXSTDLIB_LINK=" -stdlib=libc++${linkCxxAbi:+" -lc++abi"}" diff --git a/pkgs/development/compilers/llvm/3.9/libc++abi.nix b/pkgs/development/compilers/llvm/3.9/libc++abi.nix new file mode 100644 index 00000000000..2baac6386a5 --- /dev/null +++ b/pkgs/development/compilers/llvm/3.9/libc++abi.nix @@ -0,0 +1,47 @@ +{ stdenv, cmake, fetch, libcxx, libunwind, llvm, version }: + +stdenv.mkDerivation { + name = "libc++abi-${version}"; + + src = fetch "libcxxabi" "06c05jlwfgm2q5xhy5wzmsi9bmfphzh22wpmbph84s452wksjdxh"; + + buildInputs = [ cmake ] ++ stdenv.lib.optional (!stdenv.isDarwin && !stdenv.isFreeBSD) libunwind; + + postUnpack = '' + unpackFile ${libcxx.src} + unpackFile ${llvm.src} + export NIX_CFLAGS_COMPILE+=" -I$PWD/include" + export cmakeFlags="-DLLVM_PATH=$PWD/$(ls -d llvm-*) -DLIBCXXABI_LIBCXX_INCLUDES=$PWD/$(ls -d libcxx-*)/include" + '' + stdenv.lib.optionalString stdenv.isDarwin '' + export TRIPLE=x86_64-apple-darwin + ''; + + installPhase = if stdenv.isDarwin + then '' + for file in lib/*.dylib; do + # this should be done in CMake, but having trouble figuring out + # the magic combination of necessary CMake variables + # if you fancy a try, take a look at + # http://www.cmake.org/Wiki/CMake_RPATH_handling + install_name_tool -id $out/$file $file + done + make install + install -d 755 $out/include + install -m 644 ../include/*.h $out/include + '' + else '' + install -d -m 755 $out/include $out/lib + install -m 644 lib/libc++abi.so.1.0 $out/lib + install -m 644 ../include/cxxabi.h $out/include + ln -s libc++abi.so.1.0 $out/lib/libc++abi.so + ln -s libc++abi.so.1.0 $out/lib/libc++abi.so.1 + ''; + + meta = { + homepage = http://libcxxabi.llvm.org/; + description = "A new implementation of low level support for a standard C++ library"; + license = "BSD"; + maintainers = with stdenv.lib.maintainers; [ vlstill ]; + platforms = stdenv.lib.platforms.unix; + }; +} diff --git a/pkgs/development/compilers/llvm/3.9/lldb.nix b/pkgs/development/compilers/llvm/3.9/lldb.nix new file mode 100644 index 00000000000..bb92a6eed6c --- /dev/null +++ b/pkgs/development/compilers/llvm/3.9/lldb.nix @@ -0,0 +1,56 @@ +{ stdenv +, fetch +, cmake +, zlib +, ncurses +, swig +, which +, libedit +, llvm +, clang-unwrapped +, python +, version +}: + +stdenv.mkDerivation { + name = "lldb-${version}"; + + src = fetch "lldb" "1113s6crh94hzk9h9lqrvng0lsy174ml2rq0r962ngqy843hwa31"; + + postUnpack = '' + # Hack around broken standalone build as of 3.8 + unpackFile ${llvm.src} + srcDir="$(ls -d lldb-*.src)" + mkdir -p "$srcDir/tools/lib/Support" + cp "$(ls -d llvm-*.src)/lib/Support/regex_impl.h" "$srcDir/tools/lib/Support/" + + # Fix up various paths that assume llvm and clang are installed in the same place + substituteInPlace $srcDir/cmake/modules/LLDBStandalone.cmake \ + --replace CheckAtomic $(readlink -f llvm-*.src)/cmake/modules/CheckAtomic.cmake + sed -i 's,".*ClangConfig.cmake","${clang-unwrapped}/lib/cmake/clang/ClangConfig.cmake",' \ + $srcDir/cmake/modules/LLDBStandalone.cmake + sed -i 's,".*tools/clang/include","${clang-unwrapped}/include",' \ + $srcDir/cmake/modules/LLDBStandalone.cmake + sed -i 's,"$.LLVM_LIBRARY_DIR.",${llvm}/lib ${clang-unwrapped}/lib,' \ + $srcDir/cmake/modules/LLDBStandalone.cmake + ''; + + buildInputs = [ cmake python which swig ncurses zlib libedit llvm ]; + + CXXFLAGS = "-fno-rtti"; + hardeningDisable = [ "format" ]; + + cmakeFlags = [ + "-DCMAKE_BUILD_TYPE=Release" + "-DLLVM_MAIN_INCLUDE_DIR=${llvm}/include" + ]; + + enableParallelBuilding = true; + + meta = { + description = "A next-generation high-performance debugger"; + homepage = http://llvm.org/; + license = stdenv.lib.licenses.bsd3; + platforms = stdenv.lib.platforms.all; + }; +} diff --git a/pkgs/development/compilers/llvm/3.9/llvm.nix b/pkgs/development/compilers/llvm/3.9/llvm.nix new file mode 100644 index 00000000000..41d655015e4 --- /dev/null +++ b/pkgs/development/compilers/llvm/3.9/llvm.nix @@ -0,0 +1,89 @@ +{ stdenv +, fetch +, perl +, groff +, cmake +, python +, libffi +, binutils +, libxml2 +, valgrind +, ncurses +, version +, zlib +, compiler-rt_src +, libcxxabi +, debugVersion ? false +, enableSharedLibraries ? true +}: + +let + src = fetch "llvm" "0j49lkd5d7nnpdqzaybs2472bvcxyx0i4r3iccwf3kj2v9wk3iv6"; +in stdenv.mkDerivation rec { + name = "llvm-${version}"; + + unpackPhase = '' + unpackFile ${src} + mv llvm-${version}.src llvm + sourceRoot=$PWD/llvm + unpackFile ${compiler-rt_src} + mv compiler-rt-* $sourceRoot/projects/compiler-rt + ''; + + buildInputs = [ perl groff cmake libxml2 python libffi ] + ++ stdenv.lib.optional stdenv.isDarwin libcxxabi; + + propagatedBuildInputs = [ ncurses zlib ]; + + # hacky fix: New LLVM releases require a newer OS X SDK than + # 10.9. This is a temporary measure until nixpkgs darwin support is + # updated. + patchPhase = stdenv.lib.optionalString stdenv.isDarwin '' + sed -i 's/os_trace(\(.*\)");$/printf(\1\\n");/g' ./projects/compiler-rt/lib/sanitizer_common/sanitizer_mac.cc + ''; + + # hacky fix: created binaries need to be run before installation + preBuild = '' + mkdir -p $out/ + ln -sv $PWD/lib $out + ''; + + cmakeFlags = with stdenv; [ + "-DCMAKE_BUILD_TYPE=${if debugVersion then "Debug" else "Release"}" + "-DLLVM_INSTALL_UTILS=ON" # Needed by rustc + "-DLLVM_BUILD_TESTS=ON" + "-DLLVM_ENABLE_FFI=ON" + "-DLLVM_ENABLE_RTTI=ON" + "-DCOMPILER_RT_INCLUDE_TESTS=OFF" # FIXME: requires clang source code + ] ++ stdenv.lib.optional enableSharedLibraries [ + "-DLLVM_LINK_LLVM_DYLIB=ON" + ] ++ stdenv.lib.optional (!isDarwin) + "-DLLVM_BINUTILS_INCDIR=${binutils.dev}/include" + ++ stdenv.lib.optionals ( isDarwin) [ + "-DLLVM_ENABLE_LIBCXX=ON" + "-DCAN_TARGET_i386=false" + ]; + + postBuild = '' + rm -fR $out + + paxmark m bin/{lli,llvm-rtdyld} + ''; + + postInstall = stdenv.lib.optionalString (stdenv.isDarwin && enableSharedLibraries) '' + install_name_tool -id $out/lib/libLLVM.dylib $out/lib/libLLVM.dylib + ln -s $out/lib/libLLVM.dylib $out/lib/libLLVM-${version}.dylib + ''; + + enableParallelBuilding = true; + + passthru.src = src; + + meta = { + description = "Collection of modular and reusable compiler and toolchain technologies"; + homepage = http://llvm.org/; + license = stdenv.lib.licenses.bsd3; + maintainers = with stdenv.lib.maintainers; [ lovek323 raskin viric ]; + platforms = stdenv.lib.platforms.all; + }; +} diff --git a/pkgs/development/compilers/rust/beta.nix b/pkgs/development/compilers/rust/beta.nix index 2414480dda8..cb1b0bd8b40 100644 --- a/pkgs/development/compilers/rust/beta.nix +++ b/pkgs/development/compilers/rust/beta.nix @@ -18,10 +18,6 @@ rec { }; cargo = callPackage ./cargo.nix rec { - # TODO: We're temporarily tracking master here as Darwin needs the - # `http.cainfo` option from .cargo/config which isn't released - # yet. - version = "beta-2016-07-25"; srcRev = "f09ef68cc47956ccc5f99212bdcdd15298c400a0"; srcSha = "1r6q9jd0fl6mzhwkvrrcv358q2784hg51dfpy28xgh4n61m7c155"; diff --git a/pkgs/development/compilers/rust/default.nix b/pkgs/development/compilers/rust/default.nix index 9bbcb360e61..b7e992c916d 100644 --- a/pkgs/development/compilers/rust/default.nix +++ b/pkgs/development/compilers/rust/default.nix @@ -25,10 +25,6 @@ rec { }; cargo = callPackage ./cargo.nix rec { - # TODO: We're temporarily tracking master here as Darwin needs the - # `http.cainfo` option from .cargo/config which isn't released - # yet. - version = "0.12.0"; srcRev = "6b98d1f8abf5b33c1ca2771d3f5f3bafc3407b93"; srcSha = "0pq6l3yzmh2il6320f6501hvp9iikdxzl34i5b52v93ncpim36bk"; diff --git a/pkgs/development/interpreters/lush/default.nix b/pkgs/development/interpreters/lush/default.nix index dcfdc11c7a9..62568c40c78 100644 --- a/pkgs/development/interpreters/lush/default.nix +++ b/pkgs/development/interpreters/lush/default.nix @@ -1,5 +1,5 @@ {stdenv, fetchurl, libX11, xproto, indent, readline, gsl, freeglut, mesa, SDL -, blas, binutils, intltool, gettext, zlib}: +, blas, binutils, intltool, gettext, zlib, libSM}: stdenv.mkDerivation rec { baseName = "lush"; @@ -12,7 +12,7 @@ stdenv.mkDerivation rec { }; buildInputs = [ - libX11 xproto indent readline gsl freeglut mesa SDL blas binutils + libX11 libSM xproto indent readline gsl freeglut mesa SDL blas binutils intltool gettext zlib ]; diff --git a/pkgs/development/libraries/cxxtest/default.nix b/pkgs/development/libraries/cxxtest/default.nix new file mode 100644 index 00000000000..ebf21c13010 --- /dev/null +++ b/pkgs/development/libraries/cxxtest/default.nix @@ -0,0 +1,35 @@ +{ stdenv, fetchFromGitHub, pythonPackages}: + +stdenv.mkDerivation rec { + version = "4.4"; + name = "cxxtest"; + + src = fetchFromGitHub { + owner = "CxxTest"; + repo = name; + rev = version; + sha256 = "19w92kipfhp5wvs47l0qpibn3x49sbmvkk91yxw6nwk6fafcdl17"; + }; + + buildInputs = with pythonPackages; [ python wrapPython ]; + + installPhase = '' + cd python + python setup.py install --prefix=$out + cd .. + + mkdir -p $out/include + cp -R cxxtest $out/include/ + + wrapPythonProgramsIn $out/bin "$out $pythonPath" + ''; + + meta = with stdenv.lib; { + homepage = "http://cxxtest.com"; + description = "Unit testing framework for C++"; + platforms = platforms.unix ; + license = licenses.lgpl3; + maintainers = [ maintainers.juliendehos ]; + }; +} + diff --git a/pkgs/development/libraries/ffmpeg/3.1.nix b/pkgs/development/libraries/ffmpeg/3.1.nix index f2158b3756f..c0e70f1f348 100644 --- a/pkgs/development/libraries/ffmpeg/3.1.nix +++ b/pkgs/development/libraries/ffmpeg/3.1.nix @@ -5,8 +5,8 @@ }@args: callPackage ./generic.nix (args // rec { - version = "${branch}.2"; + version = "${branch}.3"; branch = "3.1"; - sha256 = "1xvh1c8nlws0wx6b7yl1pvkybgzaj5585h1r6z1gzhck1f0qvsv2"; + sha256 = "0f4ajs0c4088nkal4gqagx05wfyhd1izfxmzxxsdh56ibp38kg2q"; darwinFrameworks = [ Cocoa CoreMedia ]; }) diff --git a/pkgs/development/libraries/gsl/default.nix b/pkgs/development/libraries/gsl/default.nix index 4ab1b0cf56c..82e41329e00 100644 --- a/pkgs/development/libraries/gsl/default.nix +++ b/pkgs/development/libraries/gsl/default.nix @@ -1,11 +1,11 @@ { fetchurl, fetchpatch, stdenv }: stdenv.mkDerivation rec { - name = "gsl-2.1"; + name = "gsl-2.2"; src = fetchurl { url = "mirror://gnu/gsl/${name}.tar.gz"; - sha256 = "0rhcia9jhr3p1f1wybwyllwqfs9bggz99i3mi5lpyqcpff1hdbar"; + sha256 = "1pyq2c0j91z955746myn29c89jwkd435s2cbj8ks2hpag6d0mr2d"; }; patches = [ diff --git a/pkgs/development/libraries/ilmbase/default.nix b/pkgs/development/libraries/ilmbase/default.nix index 742048c9ae6..4df17d271a2 100644 --- a/pkgs/development/libraries/ilmbase/default.nix +++ b/pkgs/development/libraries/ilmbase/default.nix @@ -14,6 +14,8 @@ stdenv.mkDerivation rec { buildInputs = [ automake autoconf libtool which ]; + NIX_CFLAGS_LINK = [ "-pthread" ]; + patches = [ ./bootstrap.patch ]; meta = with stdenv.lib; { diff --git a/pkgs/development/libraries/libcommuni/default.nix b/pkgs/development/libraries/libcommuni/default.nix index 77199bf27a3..06a7f54e42b 100644 --- a/pkgs/development/libraries/libcommuni/default.nix +++ b/pkgs/development/libraries/libcommuni/default.nix @@ -1,17 +1,18 @@ -{ fetchgit, qtbase, qmakeHook, which, stdenv +{ stdenv, fetchFromGitHub, qtbase, qtdeclarative, qmakeHook, which }: stdenv.mkDerivation rec { name = "libcommuni-${version}"; - version = "2016-03-23"; + version = "2016-08-17"; - src = fetchgit { - url = "https://github.com/communi/libcommuni.git"; - rev = "6a5110b25e2838e7dc2c62d16b9fd06d12beee7e"; - sha256 = "184ah5xqg5pgy8h6fyyz2k0vak1fmhrcidwz828yl4lsvz1vjqh1"; + src = fetchFromGitHub { + owner = "communi"; + repo = "libcommuni"; + rev = "dedba6faf57c31c8c70fd563ba12d75a9caee8a3"; + sha256 = "0wvs53z34vfs5xlln4a6sbd4981svag89xm0f4k20mb1i052b20i"; }; - buildInputs = [ qtbase ]; + buildInputs = [ qtbase qtdeclarative ]; nativeBuildInputs = [ qmakeHook which ]; enableParallelBuild = true; diff --git a/pkgs/development/libraries/libtelnet/default.nix b/pkgs/development/libraries/libtelnet/default.nix new file mode 100644 index 00000000000..5f284d1a49a --- /dev/null +++ b/pkgs/development/libraries/libtelnet/default.nix @@ -0,0 +1,24 @@ +{ stdenv, fetchFromGitHub, pkgconfig, autoreconfHook, zlib }: + +stdenv.mkDerivation rec { + name = "libtelnet-${version}"; + version = "0.21+45f2d5c"; + + src = fetchFromGitHub { + owner = "seanmiddleditch"; + repo = "libtelnet"; + rev = "45f2d5cfcf383312280e61c85b107285fed260cf"; + sha256 = "1lp6gdbndsp2w8mhy88c2jknxj2klvnggvq04ln7qjg8407ifpda"; + }; + + nativeBuildInputs = [ pkgconfig autoreconfHook ]; + buildInputs = [ zlib ]; + + meta = { + description = "Simple RFC-complient TELNET implementation as a C library"; + homepage = "https://github.com/seanmiddleditch/libtelnet"; + license = stdenv.lib.licenses.publicDomain; + maintainers = [ stdenv.lib.maintainers.tomberek ]; + platforms = stdenv.lib.platforms.linux; + }; +} diff --git a/pkgs/development/libraries/opencascade/oce.nix b/pkgs/development/libraries/opencascade/oce.nix index 4988ee6ef24..58f9019d6e0 100644 --- a/pkgs/development/libraries/opencascade/oce.nix +++ b/pkgs/development/libraries/opencascade/oce.nix @@ -2,10 +2,10 @@ ftgl, freetype}: stdenv.mkDerivation rec { - name = "opencascade-oce-0.16"; + name = "opencascade-oce-0.17.2"; src = fetchurl { - url = https://github.com/tpaviot/oce/archive/OCE-0.16.tar.gz; - sha256 = "05bmg1cjz827bpq8s0hp96byirm4c3zc9vx26qz76kjsg8ry87w4"; + url = https://github.com/tpaviot/oce/archive/OCE-0.17.2.tar.gz; + sha256 = "0vpmnb0k5y2f7lpmwx9pg9yfq24zjvnsak5alzacncfm1hv9b6cd"; }; buildInputs = [ mesa tcl tk file libXmu libtool qt4 ftgl freetype cmake ]; diff --git a/pkgs/development/libraries/wxGTK-2.8/default.nix b/pkgs/development/libraries/wxGTK-2.8/default.nix index e023665f070..7396b700955 100644 --- a/pkgs/development/libraries/wxGTK-2.8/default.nix +++ b/pkgs/development/libraries/wxGTK-2.8/default.nix @@ -21,6 +21,8 @@ stdenv.mkDerivation rec { nativeBuildInputs = [ pkgconfig ]; + hardeningDisable = [ "format" ]; + configureFlags = [ "--enable-gtk2" (if compat24 then "--enable-compat24" else "--disable-compat24") diff --git a/pkgs/development/ruby-modules/bundler/default.nix b/pkgs/development/ruby-modules/bundler/default.nix index 50b8725a0af..c3c544d5268 100644 --- a/pkgs/development/ruby-modules/bundler/default.nix +++ b/pkgs/development/ruby-modules/bundler/default.nix @@ -7,4 +7,8 @@ buildRubyGem rec { version = "1.12.5"; sha256 = "1q84xiwm9j771lpmiply0ls9l2bpvl5axn3jblxjvrldh8di2pkc"; dontPatchShebangs = true; + + postFixup = '' + sed -i -e "s/activate_bin_path/bin_path/g" $out/bin/bundle + ''; } diff --git a/pkgs/development/ruby-modules/gem-config/default.nix b/pkgs/development/ruby-modules/gem-config/default.nix index 95b5033cc9d..41c837f52f0 100644 --- a/pkgs/development/ruby-modules/gem-config/default.nix +++ b/pkgs/development/ruby-modules/gem-config/default.nix @@ -29,6 +29,21 @@ let in { + bundler = attrs: + let + templates = "${attrs.ruby.gemPath}/gems/${attrs.gemName}-${attrs.version}/lib/bundler/templates/"; + in { + # patching shebangs would fail on the templates/Executable file, so we + # temporarily remove the executable flag. + preFixup = "chmod -x $out/${templates}/Executable"; + postFixup = '' + chmod +x $out/${templates}/Executable + + # Allows to load another bundler version + sed -i -e "s/activate_bin_path/bin_path/g" $out/bin/bundle + ''; + }; + capybara-webkit = attrs: { buildInputs = [ qt48 ]; }; @@ -177,14 +192,5 @@ in ''; }; - # patching shebangs would fail on the templates/Executable file, so we - # temporarily remove the executable flag. - bundler = attrs: - let - templates = "${attrs.ruby.gemPath}/gems/${attrs.gemName}-${attrs.version}/lib/bundler/templates/"; - in { - preFixup = "chmod -x $out/${templates}/Executable"; - postFixup = "chmod +x $out/${templates}/Executable"; - }; } diff --git a/pkgs/development/web/nodejs/v6.nix b/pkgs/development/web/nodejs/v6.nix index b2a50e2a8d9..c0a906aeb71 100644 --- a/pkgs/development/web/nodejs/v6.nix +++ b/pkgs/development/web/nodejs/v6.nix @@ -8,8 +8,8 @@ let inherit (darwin.apple_sdk.frameworks) CoreServices ApplicationServices; in import ./nodejs.nix (args // rec { - version = "6.3.1"; - sha256 = "06ran2ccfxkwyk6w4wikd7qws286952lbx93pqaygmbh9f0q9rbg"; + version = "6.4.0"; + sha256 = "1b3xpp38fd2y8zdkpvkyyvsddh5y4vly81hxkf9hi6wap0nqidj9"; extraBuildInputs = stdenv.lib.optionals stdenv.isDarwin [ CoreServices ApplicationServices ]; preBuild = stdenv.lib.optionalString stdenv.isDarwin '' diff --git a/pkgs/games/fsg/default.nix b/pkgs/games/fsg/default.nix index db18bc7c249..f6f52aabb6b 100644 --- a/pkgs/games/fsg/default.nix +++ b/pkgs/games/fsg/default.nix @@ -4,32 +4,14 @@ stdenv.mkDerivation { name = "fsg-4.4"; src = fetchurl { - #url = http://www.piettes.com/fallingsandgame/fsg-src-4.4.tar.gz; url = http://www.sourcefiles.org/Games/Simulation/Other/fsg-src-4.4.tar.gz; sha256 = "1756y01rkvd3f1pkj88jqh83fqcfl2fy0c48mcq53pjzln9ycv8c"; }; + hardeningDisable = [ "format" ]; + buildInputs = [ gtk glib pkgconfig mesa wxGTK libX11 xproto ]; -/* -# One day Unicode will overcome? - - preBuild = " - sed -e ' - s/\\(str\\.Printf(\\)\\(\".*\"\\)/\\1_(\\2)/; - s@\\ 0) + ; diff --git a/pkgs/tools/misc/youtube-dl/default.nix b/pkgs/tools/misc/youtube-dl/default.nix index 12ecf11517c..a4f837bf833 100644 --- a/pkgs/tools/misc/youtube-dl/default.nix +++ b/pkgs/tools/misc/youtube-dl/default.nix @@ -1,13 +1,15 @@ -{ stdenv, fetchurl, buildPythonApplication, makeWrapper, ffmpeg, zip -, pandoc ? null +{ stdenv, fetchurl, buildPythonApplication, makeWrapper, zip, ffmpeg, pandoc +, atomicparsley +# Pandoc is required to build the package's man page. Release tarballs contain a +# formatted man page already, though, it will still be installed. We keep the +# manpage argument in place in case someone wants to use this derivation to +# build a Git version of the tool that doesn't have the formatted man page +# included. +, generateManPage ? false +, ffmpegSupport ? true }: -# Pandoc is required to build the package's man page. Release tarballs -# contain a formatted man page already, though, so it's fine to pass -# "pandoc = null" to this derivation; the man page will still be -# installed. We keep the pandoc argument and build input in place in -# case someone wants to use this derivation to build a Git version of -# the tool that doesn't have the formatted man page included. +with stdenv.lib; buildPythonApplication rec { @@ -19,16 +21,20 @@ buildPythonApplication rec { sha256 = "017x2hqc2bacypjmn9ac9f91y9y6afydl0z7dich5l627494hvfg"; }; - buildInputs = [ makeWrapper zip pandoc ]; + buildInputs = [ makeWrapper zip ] ++ optional generateManPage pandoc; # Ensure ffmpeg is available in $PATH for post-processing & transcoding support. - postInstall = stdenv.lib.optionalString (ffmpeg != null) - ''wrapProgram $out/bin/youtube-dl --prefix PATH : "${ffmpeg.bin}/bin"''; + # atomicparsley for embedding thumbnails + postInstall = let + packagesthatwillbeusedbelow = [ atomicparsley ] ++ optional ffmpegSupport ffmpeg; + in '' + wrapProgram $out/bin/youtube-dl --prefix PATH : "${makeBinPath packagesthatwillbeusedbelow}" + ''; # Requires network doCheck = false; - meta = with stdenv.lib; { + meta = { homepage = http://rg3.github.io/youtube-dl/; repositories.git = https://github.com/rg3/youtube-dl.git; description = "Command-line tool to download videos from YouTube.com and other sites"; diff --git a/pkgs/tools/networking/aria2/default.nix b/pkgs/tools/networking/aria2/default.nix index 78541a5d9f2..105ddd1552f 100644 --- a/pkgs/tools/networking/aria2/default.nix +++ b/pkgs/tools/networking/aria2/default.nix @@ -1,17 +1,17 @@ -{ stdenv, fetchFromGitHub, fetchpatch, pkgconfig, autoreconfHook +{ stdenv, fetchFromGitHub, pkgconfig, autoreconfHook , openssl, c-ares, libxml2, sqlite, zlib, libssh2 , Security }: stdenv.mkDerivation rec { name = "aria2-${version}"; - version = "1.24.0"; + version = "1.26.1"; src = fetchFromGitHub { owner = "aria2"; repo = "aria2"; rev = "release-${version}"; - sha256 = "0sb8s2rf2l0x7m8fx8kys7vad0lfw3k9071iai03kxplkdvg96n9"; + sha256 = "1nf7z55cc6ljpz7zzb8ppg8ybg531gfbhyggya7lnr5ka74h87b5"; }; nativeBuildInputs = [ pkgconfig autoreconfHook ]; @@ -19,13 +19,6 @@ stdenv.mkDerivation rec { buildInputs = [ openssl c-ares libxml2 sqlite zlib libssh2 ] ++ stdenv.lib.optional stdenv.isDarwin Security; - patches = stdenv.lib.optionals stdenv.isDarwin [ - (fetchpatch { - url = https://github.com/aria2/aria2/commit/1e59e357af626edc870b7f53c1ae8083658d0d1a.patch; - sha256 = "1xjj4ll1v6adl6vdkl84v0mh7ma6p469ph1wpvksxrq6qp8345qj"; - }) - ]; - configureFlags = [ "--with-ca-bundle=/etc/ssl/certs/ca-certificates.crt" ]; enableParallelBuilding = true; diff --git a/pkgs/tools/package-management/nix/default.nix b/pkgs/tools/package-management/nix/default.nix index 0efb208ad0d..57d4cd181d2 100644 --- a/pkgs/tools/package-management/nix/default.nix +++ b/pkgs/tools/package-management/nix/default.nix @@ -89,10 +89,10 @@ in rec { nix = nixStable; nixStable = common rec { - name = "nix-1.11.2"; + name = "nix-1.11.3"; src = fetchurl { url = "http://nixos.org/releases/nix/${name}/${name}.tar.xz"; - sha256 = "fc1233814ebb385a2a991c1fb88c97b344267281e173fea7d9acd3f9caf969d6"; + sha256 = "054fya7q60nv4mcpnd5pxj4hxafrikdimjknpj46w4jd2fg61237"; }; }; diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index bd7fff480b0..0dd5a867208 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -2412,6 +2412,8 @@ in libtermkey = callPackage ../development/libraries/libtermkey { }; + libtelnet = callPackage ../development/libraries/libtelnet { }; + libtirpc = callPackage ../development/libraries/ti-rpc { }; libshout = callPackage ../development/libraries/libshout { }; @@ -4922,6 +4924,10 @@ in inherit (stdenvAdapters) overrideCC; }; + llvmPackages_39 = callPackage ../development/compilers/llvm/3.9 { + inherit (stdenvAdapters) overrideCC; + }; + manticore = callPackage ../development/compilers/manticore { }; mentorToolchains = recurseIntoAttrs ( @@ -5486,10 +5492,10 @@ in rust = rustStable; rustStable = callPackage ../development/compilers/rust {}; - rustBeta = lowPrio (callPackage ../development/compilers/rust/beta.nix {}); - rustUnstable = lowPrio (callPackage ../development/compilers/rust/head.nix { + rustBeta = callPackage ../development/compilers/rust/beta.nix {}; + rustUnstable = callPackage ../development/compilers/rust/head.nix { rustPlatform = recurseIntoAttrs (makeRustPlatform rustBeta); - }); + }; cargo = rust.cargo; rustc = rust.rustc; @@ -7073,6 +7079,8 @@ in cxx-prettyprint = callPackage ../development/libraries/cxx-prettyprint { }; + cxxtest = callPackage ../development/libraries/cxxtest { }; + cyrus_sasl = callPackage ../development/libraries/cyrus-sasl { kerberos = if stdenv.isFreeBSD then libheimdal else kerberos; }; @@ -8741,7 +8749,7 @@ in # makes it slower, but during runtime we link against just mesa_drivers # through /run/opengl-driver*, which is overriden according to config.grsecurity grsecEnabled = true; - llvmPackages = llvmPackages_38; # various problems with 3.7; see #11367, #11467 + llvmPackages = llvmPackages_39; }); mesa_glu = mesaDarwinOr (callPackage ../development/libraries/mesa-glu { }); mesa_drivers = mesaDarwinOr ( @@ -11185,12 +11193,14 @@ in }; linux_testing = callPackage ../os-specific/linux/kernel/linux-testing.nix { - kernelPatches = [ kernelPatches.bridge_stp_helper ] - ++ lib.optionals ((platform.kernelArch or null) == "mips") - [ kernelPatches.mips_fpureg_emu - kernelPatches.mips_fpu_sigill - kernelPatches.mips_ext3_n32 - ]; + kernelPatches = [ + kernelPatches.bridge_stp_helper + kernelPatches.modinst_arg_list_too_long + ] ++ lib.optionals ((platform.kernelArch or null) == "mips") [ + kernelPatches.mips_fpureg_emu + kernelPatches.mips_fpu_sigill + kernelPatches.mips_ext3_n32 + ]; }; linux_chromiumos_3_14 = callPackage ../os-specific/linux/kernel/linux-chromiumos-3.14.nix { @@ -12100,6 +12110,8 @@ in r5rs = callPackage ../data/documentation/rnrs/r5rs.nix { }; + roboto = callPackage ../data/fonts/roboto { }; + hasklig = callPackage ../data/fonts/hasklig {}; sound-theme-freedesktop = callPackage ../data/misc/sound-theme-freedesktop { }; @@ -13082,6 +13094,8 @@ in wavesurfer = callPackage ../applications/misc/audio/wavesurfer { }; + wavrsocvt = callPackage ../applications/misc/audio/wavrsocvt { }; + wireshark-cli = callPackage ../applications/networking/sniffers/wireshark { withQt = false; withGtk = false; @@ -15851,6 +15865,8 @@ in privateer = callPackage ../games/privateer { }; + qweechat = callPackage ../applications/networking/irc/qweechat { }; + qqwing = callPackage ../games/qqwing { }; quake3wrapper = callPackage ../games/quake3/wrapper { }; @@ -17398,6 +17414,8 @@ in utf8proc = callPackage ../development/libraries/utf8proc { }; + valauncher = callPackage ../applications/misc/valauncher { }; + vault = callPackage ../tools/security/vault { }; vbam = callPackage ../misc/emulators/vbam { diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix index 1646b65fa96..886e69e07dc 100644 --- a/pkgs/top-level/python-packages.nix +++ b/pkgs/top-level/python-packages.nix @@ -3597,6 +3597,25 @@ in modules // { }; }; + cmdline = buildPythonPackage rec { + pname = "cmdline"; + version = "0.1.6"; + name = "${pname}-${version}"; + + src = pkgs.fetchurl { + url = "mirror://pypi/c/${pname}/${name}.tar.gz"; + sha256 = "be2cb4711e9111bb7386a408e3c66a730c36dd6ac05851a9f03d0f4eae63536a"; + }; + + # No tests, https://github.com/rca/cmdline/issues/1 + doCheck = false; + propagatedBuildInputs = with self; [ pyyaml ]; + meta = { + description = "Utilities for consistent command line tools"; + homepage = http://github.com/rca/cmdline; + license = licenses.asl20; + }; + }; cogapp = buildPythonPackage rec { version = "2.3"; @@ -3983,26 +4002,23 @@ in modules // { cytoolz = buildPythonPackage rec { name = "cytoolz-${version}"; - version = "0.7.4"; + version = "0.8.0"; src = pkgs.fetchurl{ url = "mirror://pypi/c/cytoolz/cytoolz-${version}.tar.gz"; - sha256 = "9c2e3dda8232b6cd5b84b8c8df6c8155c2adeb8734eb7ec38e189affc0f2eba5"; + sha256 = "2239890c8fe2da3eba82947c6a68cfa406e5a5045911c9ab3de8113462372629"; }; # Extension types disabled = isPyPy; buildInputs = with self; [ nose ]; + propagatedBuildInputs = with self; [ toolz ]; checkPhase = '' nosetests -v $out/${python.sitePackages} ''; - # Several tests fail with Python 3.5 - # https://github.com/pytoolz/cytoolz/issues/73 - doCheck = !isPy35; - meta = { homepage = "http://github.com/pytoolz/cytoolz/"; description = "Cython implementation of Toolz: High performance functional utilities"; @@ -4033,17 +4049,17 @@ in modules // { cryptography = buildPythonPackage rec { # also bump cryptography_vectors name = "cryptography-${version}"; - version = "1.4"; + version = "1.5"; src = pkgs.fetchurl { url = "mirror://pypi/c/cryptography/${name}.tar.gz"; - sha256 = "0a6i4914ychryj7kqqmf970incynj5lzx57n3cbv5i4hxm09a55v"; + sha256 = "52f47ec9a57676043f88e3ca133638790b6b71e56e8890d9d7f3ae4fcd75fa24"; }; buildInputs = [ pkgs.openssl self.pretend self.cryptography_vectors self.iso8601 self.pyasn1 self.pytest self.py self.hypothesis1 ] ++ optional stdenv.isDarwin pkgs.darwin.apple_sdk.frameworks.Security; - propagatedBuildInputs = with self; [ six idna ipaddress pyasn1 cffi pyasn1-modules modules.sqlite3 ] + propagatedBuildInputs = with self; [ six idna ipaddress pyasn1 cffi pyasn1-modules modules.sqlite3 pytz ] ++ optional (pythonOlder "3.4") self.enum34; # IOKit's dependencies are inconsistent between OSX versions, so this is the best we @@ -4054,11 +4070,11 @@ in modules // { cryptography_vectors = buildPythonPackage rec { # also bump cryptography name = "cryptography_vectors-${version}"; - version = "1.4"; + version = "1.5"; src = pkgs.fetchurl { url = "mirror://pypi/c/cryptography-vectors/${name}.tar.gz"; - sha256 = "1sk6yhphk2k2vzshi0djxi0jsxd9a02259bs8gynfgf5y1g82a07"; + sha256 = "ad19a2b98a475785c3b2ec8a8c9c974e0c48d00db0c23e79d776a2c489ad812d"; }; }; @@ -4421,12 +4437,11 @@ in modules // { bcrypt = buildPythonPackage rec { name = "bcrypt-${version}"; - version = "2.0.0"; + version = "3.1.0"; src = pkgs.fetchurl { - url = "https://api.github.com/repos/pyca/bcrypt/tarball/${version}"; - name = "bcrypt-${version}.tar.gz"; - sha256 = "14i1yp4qkjklx82jl61cjjcw367lc0pkvnix3gaz451ijdcmz3x8"; + url = "mirror://pypi/b/bcrypt/${name}.tar.gz"; + sha256 = "e54820d8b9eff357d1003f5b8d4b949a632b76b89610d8a933783fd476033ebe"; }; buildInputs = with self; [ pycparser mock pytest py ]; propagatedBuildInputs = with self; optional (!isPyPy) cffi; @@ -4612,6 +4627,31 @@ in modules // { }; }; + pytest-fixture-config = buildPythonPackage rec { + name = "${pname}-${version}"; + pname = "pytest-fixture-config"; + version = "1.0.1"; + + src = pkgs.fetchurl { + url = "mirror://pypi/p/${pname}/${name}.tar.gz"; + sha256 = "7d7cc1cb25f88a707f083b1dc2e3c2fdfc6f37709567a2587dd0cd0bcd70edb6"; + }; + + propagatedBuildInputs = with self; [ pytest coverage virtualenv pytestcov six ]; + + checkPhase = '' + py.test -k "not test_yield_requires_config_doesnt_skip and not test_yield_requires_config_skips" + ''; + + meta = { + description = "Simple configuration objects for Py.test fixtures. Allows you to skip tests when their required config variables aren’t set."; + homepage = https://github.com/manahl/pytest-plugins; + license = licenses.mit; + maintainers = with maintainers; [ ryansydnor ]; + platforms = platforms.all; + }; + }; + pytestflakes = buildPythonPackage rec { name = "pytest-flakes-${version}"; version = "1.0.0"; @@ -4630,6 +4670,27 @@ in modules // { }; }; + pytest-mock = buildPythonPackage rec { + name = "${pname}-${version}"; + pname = "pytest-mock"; + version = "1.2"; + + propagatedBuildInputs = with self; [ mock pytest ]; + + meta = { + description = "Thin-wrapper around the mock package for easier use with py.test."; + homepage = "https://github.com/pytest-dev/pytest-mock"; + license = licenses.mit; + maintainers = with maintainers; [ nand0p ]; + platforms = platforms.all; + }; + + src = pkgs.fetchurl { + url = "mirror://pypi/p/${pname}/${name}.zip"; + sha256 = "03zxar5drzm7ksqyrwypjaza3cri6wqvpr6iam92djvg6znp32gp"; + }; + }; + pytestpep8 = buildPythonPackage rec { name = "pytest-pep8"; src = pkgs.fetchurl { @@ -4726,15 +4787,69 @@ in modules // { }; }; + pytest-server-fixtures = buildPythonPackage rec { + name = "${pname}-${version}"; + pname = "pytest-server-fixtures"; + version = "1.1.0"; + + propagatedBuildInputs = with self; [ setuptools-git pytest-shutil pytest-fixture-config psutil requests2 ]; + + meta = { + description = "Extensible server fixures for py.test"; + homepage = "https://github.com/manahl/pytest-plugins"; + license = licenses.mit; + maintainers = with maintainers; [ nand0p ]; + platforms = platforms.all; + }; + + doCheck = false; + # RuntimeError: Unable to find a free server number to start Xvfb + + src = pkgs.fetchurl { + url = "mirror://pypi/p/${pname}/${name}.tar.gz"; + sha256 = "1gs9qimcn8q6xi9d6i5624l0dziwvn6nj2rda07fg15g1cq66s8l"; + }; + }; + + pytest-shutil = buildPythonPackage rec { + name = "pytest-shutil-${version}"; + version = "1.1.1"; + src = pkgs.fetchurl { + url = "mirror://pypi/p/pytest-shutil/${name}.tar.gz"; + sha256 = "bb3c4fc2dddaf70b38bd9bb7a710d07728fa14f88fbc89c2a07979b383ade5d4"; + }; + buildInputs = with self; [ cmdline ]; + propagatedBuildInputs = with self; [ pytest pytestcov coverage setuptools-git mock pathpy execnet contextlib2 ]; + meta = { + description = "A goodie-bag of unix shell and environment tools for py.test"; + homepage = https://github.com/manahl/pytest-plugins; + maintainers = with maintainers; [ ryansydnor ]; + platforms = platforms.all; + license = licenses.mit; + }; + + + checkPhase = '' + py.test + ''; + # Bunch of pickle errors + doCheck = false; + }; + pytestcov = buildPythonPackage (rec { - name = "pytest-cov-2.2.0"; + name = "pytest-cov-2.3.1"; src = pkgs.fetchurl { url = "mirror://pypi/p/pytest-cov/${name}.tar.gz"; - sha256 = "1lf9jsmhqk5nc4w3kzwglmdzjvmi7ajvrsnwv826j3bn0wzx8c92"; + sha256 = "fa0a212283cdf52e2eecc24dd6459bb7687cc29adb60cb84258fab73be8dda0f"; }; - buildInputs = with self; [ covCore pytest ]; + buildInputs = with self; [ covCore pytest virtualenv process-tests helper ]; + + doCheck = false; + checkPhase = '' + py.test tests + ''; meta = { description = "Plugin for coverage reporting with support for both centralised and distributed testing, including subprocesses and multiprocessing"; @@ -4895,11 +5010,11 @@ in modules // { dask = buildPythonPackage rec { name = "dask-${version}"; - version = "0.9.0"; + version = "0.11.0"; src = pkgs.fetchurl { url = "mirror://pypi/d/dask/${name}.tar.gz"; - sha256 = "1jm6riz6fbbd554i0dg0w1xfcmx3f9ryp4jrlavsy4zambilm6b3"; + sha256 = "ef32490c0b156584a71576dccec4dfe550a0cd81a9c131a4ee2e43c241b601c3"; }; buildInputs = with self; [ pytest ]; @@ -6331,8 +6446,8 @@ in modules // { ${python.interpreter} -m unittest discover ''; - # Judging from SyntaxError in tests. - disabled = isPy3k; + # Tests are Python 2.x only judging from SyntaxError + doCheck = !(isPy3k); meta = { description = "Recursive descent parsing library based on functional combinators"; @@ -6737,6 +6852,31 @@ in modules // { }; }; + helper = buildPythonPackage rec { + pname = "helper"; + version = "2.4.1"; + name = "${pname}-${version}"; + + src = pkgs.fetchurl { + url = "mirror://pypi/h/${pname}/${name}.tar.gz"; + sha256 = "4e33dde42ad4df30fb7790689f93d77252cff26a565610d03ff2e434865a53a2"; + }; + + buildInputs = with self; [ mock ]; + propagatedBuildInputs = with self; [ pyyaml ]; + + # No tests + doCheck = false; + + meta = { + description = "Development library for quickly writing configurable applications and daemons"; + homepage = https://helper.readthedocs.org/; + license = licenses.bsd3; + }; + + + }; + hglib = buildPythonPackage rec { version = "1.7"; name = "hglib-${version}"; @@ -7166,6 +7306,9 @@ in modules // { ipywidgets ]; + # Meta-package, no tests + doCheck = false; + meta = { description = "Installs all the Jupyter components in one go"; homepage = "http://jupyter.org/"; @@ -12151,12 +12294,12 @@ in modules // { }; jupyter_client = buildPythonPackage rec { - version = "4.2.2"; + version = "4.3.0"; name = "jupyter_client-${version}"; src = pkgs.fetchurl { url = "mirror://pypi/j/jupyter_client/${name}.tar.gz"; - sha256 = "052a02p38byp3n95k8cwidid05gc5cx44qinzsdzs605zw757z1z"; + sha256 = "70b2e88403835a1d54b83858783d9e5e5771fa4bb6f6904e0b5bb8cfde4b99dd"; }; buildInputs = with self; [ nose ]; @@ -12178,12 +12321,12 @@ in modules // { }; jupyter_core = buildPythonPackage rec { - version = "4.1.0"; + version = "4.1.1"; name = "jupyter_core-${version}"; src = pkgs.fetchurl { url = "mirror://pypi/j/jupyter_core/${name}.tar.gz"; - sha256 = "04xxqa2m8yjpzxb2szbym6ngycyrmhymyy2vp2s6vi9kkikz0shl"; + sha256 = "ae0e69435258126466c86cd989e465a9c334c50107ef4f257decc8693650bf4c"; }; buildInputs = with self; [ pytest mock ]; @@ -12645,19 +12788,19 @@ in modules // { }; }; - llvmlite = buildPythonPackage rec { + llvmlite = let + llvm = pkgs.llvm_38; + in buildPythonPackage rec { name = "llvmlite-${version}"; - version = "0.12.1"; + version = "0.13.0"; disabled = isPyPy; src = pkgs.fetchurl { url = "mirror://pypi/l/llvmlite/${name}.tar.gz"; - sha256 = "3ce71beebd4cbc7a49abe4eadfc99725477fd43caeb7405650ebb746c7a1d0df"; + sha256 = "f852be3391acb2e77ef484c5d0ff90e7cf2821dcf9575e358a1f08c274c582eb"; }; - llvm = pkgs.llvm_37; - propagatedBuildInputs = with self; [ llvm ] ++ optional (pythonOlder "3.4") enum34; # Disable static linking @@ -17538,11 +17681,11 @@ in modules // { }; pillow = buildPythonPackage rec { - name = "Pillow-3.3.0"; + name = "Pillow-3.3.1"; src = pkgs.fetchurl { url = "mirror://pypi/P/Pillow/${name}.tar.gz"; - sha256 = "1lfc197rj4b4inib9b0q0g3rsi204gywfrnk38yk8kssi2f7q7h3"; + sha256 = "3491ca65d9fdba4db094ab3f8e17170425e7dd670e507921a665a1975d1b3df1"; }; # Check is disabled because of assertion errors, see @@ -19527,6 +19670,26 @@ in modules // { }; }); + process-tests = buildPythonPackage rec { + pname = "process-tests"; + name = "${pname}-${version}"; + version = "1.2.1"; + + src = pkgs.fetchurl { + url = "mirror://pypi/p/${pname}/${name}.tar.gz"; + sha256 = "65c9d7a0260f31c15b4a22a851757e61f7072d0557db5f8a976112fbe81ff7e9"; + }; + + # No tests + doCheck = false; + + meta = { + description = "Tools for testing processes"; + license = licenses.bsd2; + homepage = https://github.com/ionelmc/python-process-tests; + }; + }; + progressbar = buildPythonPackage (rec { name = "progressbar-2.2"; @@ -20080,13 +20243,17 @@ in modules // { pytz = buildPythonPackage rec { name = "pytz-${version}"; - version = "2016.3"; + version = "2016.6.1"; src = pkgs.fetchurl { url = "mirror://pypi/p/pytz/${name}.tar.gz"; - sha256 = "1a3hjclyylc4m1v1dn04b38wm2vl649ijdswpg0d8m8n0lcxlj9l"; + sha256 = "6f57732f0f8849817e9853eb9d50d85d1ebb1404f702dbc44ee627c642a486ca"; }; + checkPhase = '' + ${python.interpreter} -m unittest discover -s pytz/tests + ''; + meta = { description = "World timezone definitions, modern and historical"; homepage = "http://pythonhosted.org/pytz"; @@ -20391,11 +20558,11 @@ in modules // { requests2 = buildPythonPackage rec { name = "requests-${version}"; - version = "2.11.0"; + version = "2.11.1"; src = pkgs.fetchurl { url = "mirror://pypi/r/requests/${name}.tar.gz"; - sha256 = "11d3vrbiqrz30qbplv80y72y9i47hihs35p5n04fl4ggjcz0bzxj"; + sha256 = "5acf980358283faba0b897c73959cecf8b841205bb4b2ad3ef545f46eae1a133"; }; nativeBuildInputs = [ self.pytest ]; @@ -21982,11 +22149,11 @@ in modules // { sounddevice = buildPythonPackage rec { name = "sounddevice-${version}"; - version = "0.3.1"; + version = "0.3.4"; src = pkgs.fetchurl { url = "mirror://pypi/s/sounddevice/${name}.tar.gz"; - sha256 = "8e5a6816b369c7aea77e06092b2fee99c8b6efbeef4851f53ea3cb208a7607f5"; + sha256 = "f6c4120357c1458b23bd0d466c66808efdefad397bf97b1162600d079d4665ae"; }; propagatedBuildInputs = with self; [ cffi numpy pkgs.portaudio ]; @@ -22706,6 +22873,55 @@ in modules // { }; }); + sphinx-testing = buildPythonPackage rec { + name = "sphinx-testing-${version}"; + version = "0.7.1"; + + src = pkgs.fetchurl { + url = "mirror://pypi/s/sphinx-testing/${name}.tar.gz"; + sha256 = "0cd235ce939770ae5128eda01d8611fb1e36d8129399e98565f99fcbff3a8062"; + }; + + buildInputs = with self; [ mock ]; + propagatedBuildInputs = with self; [ sphinx six ]; + + checkPhase = '' + ${python.interpreter} -m unittest discover -s tests + ''; + + meta = { + homepage = https://github.com/sphinx-doc/sphinx-testing; + license = licenses.bsd2; + description = "Testing utility classes and functions for Sphinx extensions"; + }; + + }; + + sphinxcontrib-blockdiag = buildPythonPackage (rec { + name = "${pname}-${version}"; + pname = "sphinxcontrib-blockdiag"; + version = "1.5.5"; + src = pkgs.fetchurl { + url = "mirror://pypi/s/${pname}/${name}.tar.gz"; + sha256 = "1w7q2hhpzk159wd35hlbwkh80hnglqa475blcd9vjwpkv1kgkpvw"; + }; + + buildInputs = with self; [ mock sphinx-testing ]; + propagatedBuildInputs = with self; [ sphinx blockdiag ]; + + # Seems to look for files in the wrong dir + doCheck = false; + checkPhase = '' + ${python.interpreter} -m unittest discover -s tests + ''; + + meta = { + description = "Sphinx blockdiag extension"; + homepage = "https://github.com/blockdiag/sphinxcontrib-blockdiag"; + maintainers = with maintainers; [ nand0p ]; + license = licenses.bsd2; + }; + }); sphinxcontrib_httpdomain = buildPythonPackage (rec { name = "sphinxcontrib-httpdomain-1.3.0"; @@ -22751,6 +22967,45 @@ in modules // { }; }); + sphinxcontrib-spelling = buildPythonPackage (rec { + name = "${pname}-${version}"; + pname = "sphinxcontrib-spelling"; + version = "2.2.0"; + src = pkgs.fetchurl { + url = "mirror://pypi/s/${pname}/${name}.tar.gz"; + sha256 = "1f0fymrk4kvhqs0vj9gay4lhacxkfrlrpj4gvg0p4wjdczplxd3z"; + }; + propagatedBuildInputs = with self; [ sphinx pyenchant]; + # No tests included + doCheck = false; + meta = { + description = "Sphinx spelling extension"; + homepage = "http://bitbucket.org/dhellmann/sphinxcontrib-spelling"; + maintainers = with maintainers; [ nand0p ]; + license = licenses.bsd2; + }; + }); + + sphinx-jinja = buildPythonPackage (rec { + name = "${pname}-${version}"; + pname = "sphinx-jinja"; + version = "0.2.1"; + src = pkgs.fetchurl { + url = "mirror://pypi/s/${pname}/${name}.tar.gz"; + sha256 = "1zsnhc573rvaww9qqyzs4f5h4hhvxklvppv14450vi5dk8rij81z"; + }; + buildInputs = with self; [ sphinx-testing pytest]; + propagatedBuildInputs = with self; [ sphinx blockdiag ]; + checkPhase = '' + py.test -k "not test_build_epub" + ''; + disabled = isPy3k; + meta = { + description = "includes jinja templates in a documentation"; + maintainers = with maintainers; [ nand0p ]; + license = licenses.mit; + }; + }); sphinx_pypi_upload = buildPythonPackage (rec { name = "Sphinx-PyPI-upload-0.2.1"; @@ -23555,12 +23810,12 @@ in modules // { }; traitlets = buildPythonPackage rec { - version = "4.2.1"; + version = "4.2.2"; name = "traitlets-${version}"; src = pkgs.fetchurl { url = "mirror://pypi/t/traitlets/${name}.tar.gz"; - sha256 = "1h0aryjiqz2f3ykcjb34k5wz6bmzyp5cll7r4k08yfvji4ya7svn"; + sha256 = "7d7e3070484b2fe490fa55e0acf7023afc5ed9ddabec57405f25c355158e152a"; }; buildInputs = with self; [ nose mock ]; @@ -23688,11 +23943,11 @@ in modules // { toolz = buildPythonPackage rec{ name = "toolz-${version}"; - version = "0.7.4"; + version = "0.8.0"; src = pkgs.fetchurl{ url = "mirror://pypi/t/toolz/toolz-${version}.tar.gz"; - sha256 = "43c2c9e5e7a16b6c88ba3088a9bfc82f7db8e13378be7c78d6c14a5f8ed05afd"; + sha256 = "e8451af61face57b7c5d09e71c0d27b8005f001ead56e9fdf470417e5cc6d479"; }; buildInputs = with self; [ nose ]; @@ -23725,11 +23980,11 @@ in modules // { tqdm = buildPythonPackage rec { name = "tqdm-${version}"; - version = "3.7.1"; + version = "3.8.4"; src = pkgs.fetchurl { url = "mirror://pypi/t/tqdm/${name}.tar.gz"; - sha256 = "f12d792685f779e8754e623aff1a25a93b98a90457e3a2b7eb89b4401c2c239e"; + sha256 = "bab05f8bb6efd2702ab6c532e5e6a758a66c0d2f443e09784b73e4066e6b3a37"; }; buildInputs = with self; [ nose coverage pkgs.glibcLocales flake8 ]; @@ -24914,11 +25169,11 @@ in modules // { xarray = buildPythonPackage rec { name = "xarray-${version}"; - version = "0.7.2"; + version = "0.8.2"; src = pkgs.fetchurl { url = "mirror://pypi/x/xarray/${name}.tar.gz"; - sha256 = "0gnhznv18iz478r8wg6a686dqgs1v4i3yra8y91x3vsfl23mgv34"; + sha256 = "4da06e38baea65c51347ba0770db416ebf003dbad5637215d2b25b191f2be1fb"; }; buildInputs = with self; [ pytest ]; @@ -24957,17 +25212,10 @@ in modules // { }; }; - youtube-dl = callPackage ../tools/misc/youtube-dl { - # Release versions don't need pandoc because the formatted man page - # is included in the tarball. - pandoc = null; - }; + youtube-dl = callPackage ../tools/misc/youtube-dl {}; youtube-dl-light = callPackage ../tools/misc/youtube-dl { - # Release versions don't need pandoc because the formatted man page - # is included in the tarball. - ffmpeg = null; - pandoc = null; + ffmpegSupport = false; }; zbase32 = buildPythonPackage (rec { @@ -29421,6 +29669,58 @@ in modules // { ''; }; + txaio = buildPythonPackage rec { + name = "${pname}-${version}"; + pname = "txaio"; + version = "2.5.1"; + + meta = { + description = "Utilities to support code that runs unmodified on Twisted and asyncio."; + homepage = "https://github.com/crossbario/txaio"; + license = licenses.mit; + maintainers = with maintainers; [ nand0p ]; + platforms = platforms.all; + }; + + buildInputs = with self; [ pytest mock ]; + propagatedBuildInputs = with self; [ six twisted ]; + + checkPhase = '' + py.test -k "not test_sdist" + ''; + + src = pkgs.fetchurl { + url = "mirror://pypi/t/${pname}/${name}.tar.gz"; + sha256 = "1pni1m66mlmbybmaf3py4h7cpkmkssqb5l3rigkxvql2f53pcl32"; + }; + }; + + ramlfications = buildPythonPackage rec { + name = "${pname}-${version}"; + pname = "ramlfications"; + version = "0.1.9"; + + meta = { + description = "A Python RAML parser."; + homepage = "https://ramlfications.readthedocs.org"; + license = licenses.asl20; + maintainers = with maintainers; [ nand0p ]; + platforms = platforms.all; + }; + + doCheck = false; + # [darwin] AssertionError: Expected 'update_mime_types' to have been called once. Called 0 times. + + buildInputs = with self; [ mock pytest pytest-mock pytest-server-fixtures pytest-localserver ]; + + propagatedBuildInputs = with self; [ termcolor click markdown2 six jsonref pyyaml xmltodict attrs ]; + + src = pkgs.fetchurl { + url = "mirror://pypi/r/${pname}/${name}.tar.gz"; + sha256 = "0xvnna7kaq4nm5nfnwcwbr5bcm2s532hgyp7kq4v9iivn48rrf3v"; + }; + }; + yapf = buildPythonPackage rec { name = "yapf-${version}"; version = "0.11.0"; @@ -29437,4 +29737,51 @@ in modules // { sha256 = "14kb9gxw39zhvrijhp066b4bm6bgv35iw56c394y4dyczpha0dij"; }; }; + + autobahn = buildPythonPackage rec { + name = "${pname}-${version}"; + pname = "autobahn"; + version = "0.16.0"; + src = pkgs.fetchurl { + url = "mirror://pypi/a/${pname}/${name}.tar.gz"; + sha256 = "1158ml8h3g0vlsgw2jmy579glbg7dn0mjij8xibdl509b8qv9p51"; + }; + buildInputs = with self; [ unittest2 mock pytest txaio trollius ]; + propagatedBuildInputs = with self; [ six twisted ]; + checkPhase = '' + py.test $out + ''; + + meta = { + description = "WebSocket and WAMP in Python for Twisted and asyncio."; + homepage = "http://crossbar.io/autobahn"; + license = licenses.mit; + maintainers = with maintainers; [ nand0p ]; + platforms = platforms.all; + }; + }; + + jsonref = buildPythonPackage rec { + name = "${pname}-${version}"; + pname = "jsonref"; + version = "0.1"; + + meta = { + description = "An implementation of JSON Reference for Python."; + homepage = "http://github.com/gazpachoking/jsonref"; + license = licenses.mit; + maintainers = with maintainers; [ nand0p ]; + platforms = platforms.all; + }; + + buildInputs = with self; [ pytest mock ]; + checkPhase = '' + py.test tests.py + ''; + + src = pkgs.fetchurl { + url = "mirror://pypi/j/${pname}/${name}.tar.gz"; + sha256 = "1lqa8dy1sr1bxi00ri79lmbxvzxi84ki8p46zynyrgcqhwicxq2n"; + }; + }; }