diff --git a/lib/systems/platforms.nix b/lib/systems/platforms.nix index 3106c05dd5d..938368db02f 100644 --- a/lib/systems/platforms.nix +++ b/lib/systems/platforms.nix @@ -545,6 +545,12 @@ rec { name = "riscv-multiplatform"; kernelArch = "riscv"; bfdEmulation = "elf${bits}lriscv"; + kernelTarget = "vmlinux"; + kernelAutoModules = true; + kernelBaseConfig = "defconfig"; + kernelExtraConfig = '' + FTRACE n + ''; }; selectBySystem = system: { diff --git a/nixos/doc/manual/configuration/ipv4-config.xml b/nixos/doc/manual/configuration/ipv4-config.xml index 053501b1736..68238b547d6 100644 --- a/nixos/doc/manual/configuration/ipv4-config.xml +++ b/nixos/doc/manual/configuration/ipv4-config.xml @@ -12,7 +12,7 @@ interfaces. However, you can configure an interface manually as follows: -networking.interfaces.eth0.ip4 = [ { address = "192.168.1.2"; prefixLength = 24; } ]; +networking.interfaces.eth0.ipv4.addresses = [ { address = "192.168.1.2"; prefixLength = 24; } ]; Typically you’ll also want to set a default gateway and set of name diff --git a/nixos/doc/manual/configuration/ipv6-config.xml b/nixos/doc/manual/configuration/ipv6-config.xml index 6d9e0a164e9..74a21e18ec3 100644 --- a/nixos/doc/manual/configuration/ipv6-config.xml +++ b/nixos/doc/manual/configuration/ipv6-config.xml @@ -26,7 +26,7 @@ boot.kernel.sysctl."net.ipv6.conf.eth0.disable_ipv6" = true; DHCPv6. You can configure an interface manually: -networking.interfaces.eth0.ip6 = [ { address = "fe00:aa:bb:cc::2"; prefixLength = 64; } ]; +networking.interfaces.eth0.ipv6.addresses = [ { address = "fe00:aa:bb:cc::2"; prefixLength = 64; } ]; diff --git a/nixos/doc/manual/default.nix b/nixos/doc/manual/default.nix index bbe82066aa0..6098b057a37 100644 --- a/nixos/doc/manual/default.nix +++ b/nixos/doc/manual/default.nix @@ -36,7 +36,7 @@ let package = args.package or (lib.attrByPath path (throw "Invalid package attribute path `${toString path}'") pkgs); in "" + "pkgs.${name} (${package.meta.name})" - + lib.optionalString (!package.meta.evaluates) " [UNAVAILABLE]" + + lib.optionalString (!package.meta.available) " [UNAVAILABLE]" + ": ${package.meta.description or "???"}." + lib.optionalString (args ? comment) "\n${args.comment}" # Lots of `longDescription's break DocBook, so we just wrap them into diff --git a/nixos/doc/manual/release-notes/rl-1803.xml b/nixos/doc/manual/release-notes/rl-1803.xml index 2494e487da1..09d34b6f035 100644 --- a/nixos/doc/manual/release-notes/rl-1803.xml +++ b/nixos/doc/manual/release-notes/rl-1803.xml @@ -261,10 +261,42 @@ following incompatible changes: - The option is now none by default. - An assertion failure is thrown if WM's and DM's default are none. - To explicitly run a plain X session without and DM or WM, the newly introduced option - must be set to true. + In the module the + following options have been removed: + + + + + + + + + + + + + + + + + + To assign static addresses to an interface the options + and + should be used instead. + The options and have been + renamed to + respectively. + The new options and + have been added to set up static routing. + + + + + The option is now + none by default. An assertion failure is thrown if WM's + and DM's default are none. + To explicitly run a plain X session without and DM or WM, the newly + introduced option must be set to true. diff --git a/nixos/lib/build-vms.nix b/nixos/lib/build-vms.nix index 4685fe6914a..e14105f5f01 100644 --- a/nixos/lib/build-vms.nix +++ b/nixos/lib/build-vms.nix @@ -51,7 +51,7 @@ rec { let interfacesNumbered = zipLists config.virtualisation.vlans (range 1 255); interfaces = flip map interfacesNumbered ({ fst, snd }: - nameValuePair "eth${toString snd}" { ip4 = + nameValuePair "eth${toString snd}" { ipv4.addresses = [ { address = "192.168.${toString fst}.${toString m.snd}"; prefixLength = 24; } ]; @@ -64,7 +64,7 @@ rec { networking.interfaces = listToAttrs interfaces; networking.primaryIPAddress = - optionalString (interfaces != []) (head (head interfaces).value.ip4).address; + optionalString (interfaces != []) (head (head interfaces).value.ipv4.addresses).address; # Put the IP addresses of all VMs in this machine's # /etc/hosts file. If a machine has multiple diff --git a/nixos/lib/make-disk-image.nix b/nixos/lib/make-disk-image.nix index 8a3d8ed1770..b7a38760dd3 100644 --- a/nixos/lib/make-disk-image.nix +++ b/nixos/lib/make-disk-image.nix @@ -84,7 +84,7 @@ let format' = format; in let nixpkgs = cleanSource pkgs.path; - channelSources = pkgs.runCommand "nixos-${config.system.nixosVersion}" {} '' + channelSources = pkgs.runCommand "nixos-${config.system.nixos.version}" {} '' mkdir -p $out cp -prd ${nixpkgs} $out/nixos chmod -R u+w $out/nixos @@ -92,7 +92,7 @@ let format' = format; in let ln -s . $out/nixos/nixpkgs fi rm -rf $out/nixos/.git - echo -n ${config.system.nixosVersionSuffix} > $out/nixos/.version-suffix + echo -n ${config.system.nixos.versionSuffix} > $out/nixos/.version-suffix ''; metaClosure = pkgs.writeText "meta" '' diff --git a/nixos/modules/installer/cd-dvd/channel.nix b/nixos/modules/installer/cd-dvd/channel.nix index ddb00f174d1..4a198316795 100644 --- a/nixos/modules/installer/cd-dvd/channel.nix +++ b/nixos/modules/installer/cd-dvd/channel.nix @@ -12,7 +12,7 @@ let # CD. These are installed into the "nixos" channel of the root # user, as expected by nixos-rebuild/nixos-install. FIXME: merge # with make-channel.nix. - channelSources = pkgs.runCommand "nixos-${config.system.nixosVersion}" + channelSources = pkgs.runCommand "nixos-${config.system.nixos.version}" { } '' mkdir -p $out @@ -21,7 +21,7 @@ let if [ ! -e $out/nixos/nixpkgs ]; then ln -s . $out/nixos/nixpkgs fi - echo -n ${config.system.nixosVersionSuffix} > $out/nixos/.version-suffix + echo -n ${config.system.nixos.versionSuffix} > $out/nixos/.version-suffix ''; in diff --git a/nixos/modules/installer/cd-dvd/installation-cd-base.nix b/nixos/modules/installer/cd-dvd/installation-cd-base.nix index 2569860a098..756c8751d00 100644 --- a/nixos/modules/installer/cd-dvd/installation-cd-base.nix +++ b/nixos/modules/installer/cd-dvd/installation-cd-base.nix @@ -16,7 +16,7 @@ with lib; ]; # ISO naming. - isoImage.isoName = "${config.isoImage.isoBaseName}-${config.system.nixosLabel}-${pkgs.stdenv.system}.iso"; + isoImage.isoName = "${config.isoImage.isoBaseName}-${config.system.nixos.label}-${pkgs.stdenv.system}.iso"; isoImage.volumeID = substring 0 11 "NIXOS_ISO"; diff --git a/nixos/modules/installer/cd-dvd/iso-image.nix b/nixos/modules/installer/cd-dvd/iso-image.nix index a039f7fdcb6..811449e9fe7 100644 --- a/nixos/modules/installer/cd-dvd/iso-image.nix +++ b/nixos/modules/installer/cd-dvd/iso-image.nix @@ -39,31 +39,31 @@ let DEFAULT boot LABEL boot - MENU LABEL NixOS ${config.system.nixosLabel}${config.isoImage.appendToMenuLabel} - LINUX /boot/bzImage + MENU LABEL NixOS ${config.system.nixos.label}${config.isoImage.appendToMenuLabel} + LINUX /boot/${config.system.boot.loader.kernelFile} APPEND init=${config.system.build.toplevel}/init ${toString config.boot.kernelParams} - INITRD /boot/initrd + INITRD /boot/${config.system.boot.loader.initrdFile} # A variant to boot with 'nomodeset' LABEL boot-nomodeset - MENU LABEL NixOS ${config.system.nixosVersion}${config.isoImage.appendToMenuLabel} (nomodeset) - LINUX /boot/bzImage + MENU LABEL NixOS ${config.system.nixos.label}${config.isoImage.appendToMenuLabel} (nomodeset) + LINUX /boot/${config.system.boot.loader.kernelFile} APPEND init=${config.system.build.toplevel}/init ${toString config.boot.kernelParams} nomodeset - INITRD /boot/initrd + INITRD /boot/${config.system.boot.loader.initrdFile} # A variant to boot with 'copytoram' LABEL boot-copytoram - MENU LABEL NixOS ${config.system.nixosVersion}${config.isoImage.appendToMenuLabel} (copytoram) - LINUX /boot/bzImage + MENU LABEL NixOS ${config.system.nixos.label}${config.isoImage.appendToMenuLabel} (copytoram) + LINUX /boot/${config.system.boot.loader.kernelFile} APPEND init=${config.system.build.toplevel}/init ${toString config.boot.kernelParams} copytoram - INITRD /boot/initrd + INITRD /boot/${config.system.boot.loader.initrdFile} # A variant to boot with verbose logging to the console LABEL boot-nomodeset - MENU LABEL NixOS ${config.system.nixosVersion}${config.isoImage.appendToMenuLabel} (debug) - LINUX /boot/bzImage + MENU LABEL NixOS ${config.system.nixos.label}${config.isoImage.appendToMenuLabel} (debug) + LINUX /boot/${config.system.boot.loader.kernelFile} APPEND init=${config.system.build.toplevel}/init ${toString config.boot.kernelParams} loglevel=7 - INITRD /boot/initrd + INITRD /boot/${config.system.boot.loader.initrdFile} ''; isolinuxMemtest86Entry = '' @@ -82,35 +82,35 @@ let mkdir -p $out/loader/entries cat << EOF > $out/loader/entries/nixos-iso.conf - title NixOS ${config.system.nixosVersion}${config.isoImage.appendToMenuLabel} - linux /boot/bzImage - initrd /boot/initrd + title NixOS ${config.system.nixos.label}${config.isoImage.appendToMenuLabel} + linux /boot/${config.system.boot.loader.kernelFile} + initrd /boot/${config.system.boot.loader.initrdFile} options init=${config.system.build.toplevel}/init ${toString config.boot.kernelParams} EOF # A variant to boot with 'nomodeset' cat << EOF > $out/loader/entries/nixos-iso-nomodeset.conf - title NixOS ${config.system.nixosVersion}${config.isoImage.appendToMenuLabel} + title NixOS ${config.system.nixos.label}${config.isoImage.appendToMenuLabel} version nomodeset - linux /boot/bzImage - initrd /boot/initrd + linux /boot/${config.system.boot.loader.kernelFile} + initrd /boot/${config.system.boot.loader.initrdFile} options init=${config.system.build.toplevel}/init ${toString config.boot.kernelParams} nomodeset EOF # A variant to boot with 'copytoram' cat << EOF > $out/loader/entries/nixos-iso-copytoram.conf - title NixOS ${config.system.nixosVersion}${config.isoImage.appendToMenuLabel} + title NixOS ${config.system.nixos.label}${config.isoImage.appendToMenuLabel} version copytoram - linux /boot/bzImage - initrd /boot/initrd + linux /boot/${config.system.boot.loader.kernelFile} + initrd /boot/${config.system.boot.loader.initrdFile} options init=${config.system.build.toplevel}/init ${toString config.boot.kernelParams} copytoram EOF # A variant to boot with verbose logging to the console cat << EOF > $out/loader/entries/nixos-iso-debug.conf - title NixOS ${config.system.nixosVersion}${config.isoImage.appendToMenuLabel} (debug) - linux /boot/bzImage - initrd /boot/initrd + title NixOS ${config.system.nixos.label}${config.isoImage.appendToMenuLabel} (debug) + linux /boot/${config.system.boot.loader.kernelFile} + initrd /boot/${config.system.boot.loader.initrdFile} options init=${config.system.build.toplevel}/init ${toString config.boot.kernelParams} loglevel=7 EOF @@ -127,8 +127,8 @@ let mkdir ./contents && cd ./contents cp -rp "${efiDir}"/* . mkdir ./boot - cp -p "${config.boot.kernelPackages.kernel}/bzImage" \ - "${config.system.build.initialRamdisk}/initrd" ./boot/ + cp -p "${config.boot.kernelPackages.kernel}/${config.system.boot.loader.kernelFile}" \ + "${config.system.build.initialRamdisk}/${config.system.boot.loader.initrdFile}" ./boot/ touch --date=@0 ./* usage_size=$(du -sb --apparent-size . | tr -cd '[:digit:]') @@ -346,11 +346,11 @@ in }; target = "/isolinux/isolinux.cfg"; } - { source = config.boot.kernelPackages.kernel + "/bzImage"; - target = "/boot/bzImage"; + { source = config.boot.kernelPackages.kernel + "/" + config.system.boot.loader.kernelFile; + target = "/boot/" + config.system.boot.loader.kernelFile; } - { source = config.system.build.initialRamdisk + "/initrd"; - target = "/boot/initrd"; + { source = config.system.build.initialRamdisk + "/" + config.system.boot.loader.initrdFile; + target = "/boot/" + config.system.boot.loader.initrdFile; } { source = config.system.build.squashfsStore; target = "/nix-store.squashfs"; @@ -361,7 +361,7 @@ in { source = config.isoImage.splashImage; target = "/isolinux/background.png"; } - { source = pkgs.writeText "version" config.system.nixosVersion; + { source = pkgs.writeText "version" config.system.nixos.label; target = "/version.txt"; } ] ++ optionals config.isoImage.makeEfiBootable [ diff --git a/nixos/modules/installer/cd-dvd/system-tarball.nix b/nixos/modules/installer/cd-dvd/system-tarball.nix index 1962a1959ea..e72d4a5b491 100644 --- a/nixos/modules/installer/cd-dvd/system-tarball.nix +++ b/nixos/modules/installer/cd-dvd/system-tarball.nix @@ -8,7 +8,7 @@ with lib; let - versionFile = pkgs.writeText "nixos-version" config.system.nixosVersion; + versionFile = pkgs.writeText "nixos-label" config.system.nixos.label; in @@ -58,8 +58,8 @@ in # Individual files to be included on the CD, outside of the Nix # store on the CD. tarball.contents = - [ { source = config.system.build.initialRamdisk + "/initrd"; - target = "/boot/initrd"; + [ { source = config.system.build.initialRamdisk + "/" + config.system.boot.loader.initrdFile; + target = "/boot/" + config.system.boot.loader.initrdFile; } { source = versionFile; target = "/nixos-version.txt"; diff --git a/nixos/modules/installer/tools/nixos-generate-config.pl b/nixos/modules/installer/tools/nixos-generate-config.pl index 7c737e84de0..a82ee63fd0c 100644 --- a/nixos/modules/installer/tools/nixos-generate-config.pl +++ b/nixos/modules/installer/tools/nixos-generate-config.pl @@ -625,7 +625,7 @@ $bootLoaderConfig # compatible, in order to avoid breaking some software such as database # servers. You should change this only after NixOS release notes say you # should. - system.stateVersion = "${\(qw(@nixosRelease@))}"; # Did you read the comment? + system.stateVersion = "${\(qw(@release@))}"; # Did you read the comment? } EOF diff --git a/nixos/modules/installer/tools/nixos-version.sh b/nixos/modules/installer/tools/nixos-version.sh index 77a1b458a34..190c49a33ec 100644 --- a/nixos/modules/installer/tools/nixos-version.sh +++ b/nixos/modules/installer/tools/nixos-version.sh @@ -6,9 +6,9 @@ case "$1" in exit 1 ;; --hash|--revision) - echo "@nixosRevision@" + echo "@revision@" ;; *) - echo "@nixosVersion@ (@nixosCodeName@)" + echo "@version@ (@codeName@)" ;; esac diff --git a/nixos/modules/installer/tools/tools.nix b/nixos/modules/installer/tools/tools.nix index a3bae78c0ff..eab5f114766 100644 --- a/nixos/modules/installer/tools/tools.nix +++ b/nixos/modules/installer/tools/tools.nix @@ -55,7 +55,7 @@ let src = ./nixos-generate-config.pl; path = [ pkgs.btrfs-progs ]; perl = "${pkgs.perl}/bin/perl -I${pkgs.perlPackages.FileSlurp}/lib/perl5/site_perl"; - inherit (config.system) nixosRelease; + inherit (config.system.nixos) release; }; nixos-option = makeProg { @@ -66,7 +66,7 @@ let nixos-version = makeProg { name = "nixos-version"; src = ./nixos-version.sh; - inherit (config.system) nixosVersion nixosCodeName nixosRevision; + inherit (config.system.nixos) version codeName revision; }; in diff --git a/nixos/modules/misc/label.nix b/nixos/modules/misc/label.nix new file mode 100644 index 00000000000..250914e8f82 --- /dev/null +++ b/nixos/modules/misc/label.nix @@ -0,0 +1,72 @@ +{ config, lib, pkgs, ... }: + +with lib; + +let + cfg = config.system.nixos; +in + +{ + + options.system = { + + nixos.label = mkOption { + type = types.str; + description = '' + NixOS version name to be used in the names of generated + outputs and boot labels. + + If you ever wanted to influence the labels in your GRUB menu, + this is the option for you. + + The default is separated by + "-" + "-" + NIXOS_LABEL_VERSION environment + variable (defaults to the value of + ). + + Can be overriden by setting NIXOS_LABEL. + + Useful for not loosing track of configurations built from different + nixos branches/revisions, e.g.: + + + #!/bin/sh + today=`date +%Y%m%d` + branch=`(cd nixpkgs ; git branch 2>/dev/null | sed -n '/^\* / { s|^\* ||; p; }')` + revision=`(cd nixpkgs ; git rev-parse HEAD)` + export NIXOS_LABEL_VERSION="$today.$branch-''${revision:0:7}" + nixos-rebuild switch + ''; + }; + + nixos.tags = mkOption { + type = types.listOf types.str; + default = []; + example = [ "with-xen" ]; + description = '' + Strings to prefix to the default + . + + Useful for not loosing track of configurations built with + different options, e.g.: + + + { + system.nixos.tags = [ "with-xen" ]; + virtualisation.xen.enable = true; + } + + ''; + }; + + }; + + config = { + # This is set here rather than up there so that changing it would + # not rebuild the manual + system.nixos.label = mkDefault (maybeEnv "NIXOS_LABEL" + (concatStringsSep "-" (sort (x: y: x < y) cfg.tags) + + "-" + maybeEnv "NIXOS_LABEL_VERSION" cfg.version)); + }; + +} diff --git a/nixos/modules/misc/version.nix b/nixos/modules/misc/version.nix index 48cde2ebbc8..6af584250a7 100644 --- a/nixos/modules/misc/version.nix +++ b/nixos/modules/misc/version.nix @@ -3,7 +3,7 @@ with lib; let - cfg = config.system; + cfg = config.system.nixos; releaseFile = "${toString pkgs.path}/.version"; suffixFile = "${toString pkgs.path}/.version-suffix"; @@ -16,9 +16,44 @@ in options.system = { + nixos.version = mkOption { + internal = true; + type = types.str; + description = "The full NixOS version (e.g. 16.03.1160.f2d4ee1)."; + }; + + nixos.release = mkOption { + readOnly = true; + type = types.str; + default = fileContents releaseFile; + description = "The NixOS release (e.g. 16.03)."; + }; + + nixos.versionSuffix = mkOption { + internal = true; + type = types.str; + default = if pathExists suffixFile then fileContents suffixFile else "pre-git"; + description = "The NixOS version suffix (e.g. 1160.f2d4ee1)."; + }; + + nixos.revision = mkOption { + internal = true; + type = types.str; + default = if pathIsDirectory gitRepo then commitIdFromGitRepo gitRepo + else if pathExists revisionFile then fileContents revisionFile + else "master"; + description = "The Git revision from which this NixOS configuration was built."; + }; + + nixos.codeName = mkOption { + readOnly = true; + type = types.str; + description = "The NixOS release code name (e.g. Emu)."; + }; + stateVersion = mkOption { type = types.str; - default = cfg.nixosRelease; + default = cfg.release; description = '' Every once in a while, a new NixOS release may change configuration defaults in a way incompatible with stateful @@ -32,49 +67,6 @@ in ''; }; - nixosLabel = mkOption { - type = types.str; - description = '' - Label to be used in the names of generated outputs and boot - labels. - ''; - }; - - nixosVersion = mkOption { - internal = true; - type = types.str; - description = "The full NixOS version (e.g. 16.03.1160.f2d4ee1)."; - }; - - nixosRelease = mkOption { - readOnly = true; - type = types.str; - default = fileContents releaseFile; - description = "The NixOS release (e.g. 16.03)."; - }; - - nixosVersionSuffix = mkOption { - internal = true; - type = types.str; - default = if pathExists suffixFile then fileContents suffixFile else "pre-git"; - description = "The NixOS version suffix (e.g. 1160.f2d4ee1)."; - }; - - nixosRevision = mkOption { - internal = true; - type = types.str; - default = if pathIsDirectory gitRepo then commitIdFromGitRepo gitRepo - else if pathExists revisionFile then fileContents revisionFile - else "master"; - description = "The Git revision from which this NixOS configuration was built."; - }; - - nixosCodeName = mkOption { - readOnly = true; - type = types.str; - description = "The NixOS release code name (e.g. Emu)."; - }; - defaultChannel = mkOption { internal = true; type = types.str; @@ -86,16 +78,15 @@ in config = { - system = { + system.nixos = { # These defaults are set here rather than up there so that # changing them would not rebuild the manual - nixosLabel = mkDefault cfg.nixosVersion; - nixosVersion = mkDefault (cfg.nixosRelease + cfg.nixosVersionSuffix); - nixosRevision = mkIf (pathIsDirectory gitRepo) (mkDefault gitCommitId); - nixosVersionSuffix = mkIf (pathIsDirectory gitRepo) (mkDefault (".git." + gitCommitId)); + version = mkDefault (cfg.release + cfg.versionSuffix); + revision = mkIf (pathIsDirectory gitRepo) (mkDefault gitCommitId); + versionSuffix = mkIf (pathIsDirectory gitRepo) (mkDefault (".git." + gitCommitId)); # Note: code names must only increase in alphabetical order. - nixosCodeName = "Impala"; + codeName = "Impala"; }; # Generate /etc/os-release. See @@ -105,10 +96,10 @@ in '' NAME=NixOS ID=nixos - VERSION="${config.system.nixosVersion} (${config.system.nixosCodeName})" - VERSION_CODENAME=${toLower config.system.nixosCodeName} - VERSION_ID="${config.system.nixosVersion}" - PRETTY_NAME="NixOS ${config.system.nixosVersion} (${config.system.nixosCodeName})" + VERSION="${cfg.version} (${cfg.codeName})" + VERSION_CODENAME=${toLower cfg.codeName} + VERSION_ID="${cfg.version}" + PRETTY_NAME="NixOS ${cfg.version} (${cfg.codeName})" HOME_URL="https://nixos.org/" SUPPORT_URL="https://nixos.org/nixos/support.html" BUG_REPORT_URL="https://github.com/NixOS/nixpkgs/issues" diff --git a/nixos/modules/module-list.nix b/nixos/modules/module-list.nix index 01bd2960517..a3f820a35a1 100644 --- a/nixos/modules/module-list.nix +++ b/nixos/modules/module-list.nix @@ -60,6 +60,7 @@ ./misc/extra-arguments.nix ./misc/ids.nix ./misc/lib.nix + ./misc/label.nix ./misc/locate.nix ./misc/meta.nix ./misc/nixpkgs.nix diff --git a/nixos/modules/rename.nix b/nixos/modules/rename.nix index 710387ebc1d..da83baed371 100644 --- a/nixos/modules/rename.nix +++ b/nixos/modules/rename.nix @@ -189,6 +189,14 @@ with lib; # Profile splitting (mkRenamedOptionModule [ "virtualization" "growPartition" ] [ "boot" "growPartition" ]) + # misc/version.nix + (mkRenamedOptionModule [ "config" "system" "nixosVersion" ] [ "config" "system" "nixos" "version" ]) + (mkRenamedOptionModule [ "config" "system" "nixosRelease" ] [ "config" "system" "nixos" "release" ]) + (mkRenamedOptionModule [ "config" "system" "nixosVersionSuffix" ] [ "config" "system" "nixos" "versionSuffix" ]) + (mkRenamedOptionModule [ "config" "system" "nixosRevision" ] [ "config" "system" "nixos" "revision" ]) + (mkRenamedOptionModule [ "config" "system" "nixosCodeName" ] [ "config" "system" "nixos" "codeName" ]) + (mkRenamedOptionModule [ "config" "system" "nixosLabel" ] [ "config" "system" "nixos" "label" ]) + # Options that are obsolete and have no replacement. (mkRemovedOptionModule [ "boot" "initrd" "luks" "enable" ] "") (mkRemovedOptionModule [ "programs" "bash" "enable" ] "") diff --git a/nixos/modules/services/misc/nixos-manual.nix b/nixos/modules/services/misc/nixos-manual.nix index 41cadb4a6de..5d0f2abd13a 100644 --- a/nixos/modules/services/misc/nixos-manual.nix +++ b/nixos/modules/services/misc/nixos-manual.nix @@ -16,10 +16,10 @@ let It isn't perfect, but it seems to cover a vast majority of use cases. Caveat: even if the package is reached by a different means, the path above will be shown and not e.g. `${config.services.foo.package}`. */ - manual = import ../../../doc/manual { + manual = import ../../../doc/manual rec { inherit pkgs config; - version = config.system.nixosRelease; - revision = "release-${config.system.nixosRelease}"; + version = config.system.nixos.release; + revision = "release-${version}"; options = let scrubbedEval = evalModules { diff --git a/nixos/modules/services/misc/ssm-agent.nix b/nixos/modules/services/misc/ssm-agent.nix index c1e1f090353..a57fbca86fb 100644 --- a/nixos/modules/services/misc/ssm-agent.nix +++ b/nixos/modules/services/misc/ssm-agent.nix @@ -12,7 +12,7 @@ let case "$1" in -i) echo "nixos";; - -r) echo "${config.system.nixosVersion}";; + -r) echo "${config.system.nixos.version}";; esac ''; in { diff --git a/nixos/modules/services/networking/dhcpcd.nix b/nixos/modules/services/networking/dhcpcd.nix index d283c762433..d10b72ecf05 100644 --- a/nixos/modules/services/networking/dhcpcd.nix +++ b/nixos/modules/services/networking/dhcpcd.nix @@ -16,7 +16,7 @@ let # Don't start dhcpcd on explicitly configured interfaces or on # interfaces that are part of a bridge, bond or sit device. ignoredInterfaces = - map (i: i.name) (filter (i: if i.useDHCP != null then !i.useDHCP else i.ip4 != [ ] || i.ipAddress != null) interfaces) + map (i: i.name) (filter (i: if i.useDHCP != null then !i.useDHCP else i.ipv4.addresses != [ ]) interfaces) ++ mapAttrsToList (i: _: i) config.networking.sits ++ concatLists (attrValues (mapAttrs (n: v: v.interfaces) config.networking.bridges)) ++ concatLists (attrValues (mapAttrs (n: v: v.interfaces) config.networking.vswitches)) diff --git a/nixos/modules/services/security/hologram-agent.nix b/nixos/modules/services/security/hologram-agent.nix index 6c53a2df630..39ed506f761 100644 --- a/nixos/modules/services/security/hologram-agent.nix +++ b/nixos/modules/services/security/hologram-agent.nix @@ -35,10 +35,9 @@ in { config = mkIf cfg.enable { boot.kernelModules = [ "dummy" ]; - networking.interfaces.dummy0 = { - ipAddress = "169.254.169.254"; - prefixLength = 32; - }; + networking.interfaces.dummy0.ipv4.addresses = [ + { address = "169.254.169.254"; prefixLength = 32; } + ]; systemd.services.hologram-agent = { description = "Provide EC2 instance credentials to machines outside of EC2"; diff --git a/nixos/modules/services/ttys/agetty.nix b/nixos/modules/services/ttys/agetty.nix index 3429397d2cc..b50de496e97 100644 --- a/nixos/modules/services/ttys/agetty.nix +++ b/nixos/modules/services/ttys/agetty.nix @@ -64,8 +64,8 @@ in config = { # Note: this is set here rather than up there so that changing - # nixosLabel would not rebuild manual pages - services.mingetty.greetingLine = mkDefault ''<<< Welcome to NixOS ${config.system.nixosLabel} (\m) - \l >>>''; + # nixos.label would not rebuild manual pages + services.mingetty.greetingLine = mkDefault ''<<< Welcome to NixOS ${config.system.nixos.label} (\m) - \l >>>''; systemd.services."getty@" = { serviceConfig.ExecStart = [ diff --git a/nixos/modules/system/activation/top-level.nix b/nixos/modules/system/activation/top-level.nix index 0c50241f2ed..091a2e412ee 100644 --- a/nixos/modules/system/activation/top-level.nix +++ b/nixos/modules/system/activation/top-level.nix @@ -30,6 +30,8 @@ let let kernelPath = "${config.boot.kernelPackages.kernel}/" + "${config.system.boot.loader.kernelFile}"; + initrdPath = "${config.system.build.initialRamdisk}/" + + "${config.system.boot.loader.initrdFile}"; in '' mkdir $out @@ -50,7 +52,7 @@ let echo -n "$kernelParams" > $out/kernel-params - ln -s ${config.system.build.initialRamdisk}/initrd $out/initrd + ln -s ${initrdPath} $out/initrd ln -s ${config.system.build.initialRamdiskSecretAppender}/bin/append-initrd-secrets $out @@ -106,7 +108,7 @@ let if [] == failed then pkgs.stdenvNoCC.mkDerivation { name = let hn = config.networking.hostName; nn = if (hn != "") then hn else "unnamed"; - in "nixos-system-${nn}-${config.system.nixosLabel}"; + in "nixos-system-${nn}-${config.system.nixos.label}"; preferLocalBuild = true; allowSubstitutes = false; buildCommand = systemBuilder; @@ -120,7 +122,7 @@ let config.system.build.installBootLoader or "echo 'Warning: do not know how to make this configuration bootable; please enable a boot loader.' 1>&2; true"; activationScript = config.system.activationScripts.script; - nixosLabel = config.system.nixosLabel; + nixosLabel = config.system.nixos.label; configurationName = config.boot.loader.grub.configurationName; @@ -179,6 +181,15 @@ in ''; }; + system.boot.loader.initrdFile = mkOption { + internal = true; + default = "initrd"; + type = types.str; + description = '' + Name of the initrd file to be passed to the bootloader. + ''; + }; + system.copySystemConfiguration = mkOption { type = types.bool; default = false; diff --git a/nixos/modules/system/boot/plymouth.nix b/nixos/modules/system/boot/plymouth.nix index e78fdf1311d..f8fb8a64cb9 100644 --- a/nixos/modules/system/boot/plymouth.nix +++ b/nixos/modules/system/boot/plymouth.nix @@ -10,7 +10,7 @@ let breezePlymouth = pkgs.breeze-plymouth.override { nixosBranding = true; - nixosVersion = config.system.nixosRelease; + nixosVersion = config.system.nixos.release; }; themesEnv = pkgs.buildEnv { diff --git a/nixos/modules/tasks/network-interfaces-scripted.nix b/nixos/modules/tasks/network-interfaces-scripted.nix index 63d07832d10..66732ce7732 100644 --- a/nixos/modules/tasks/network-interfaces-scripted.nix +++ b/nixos/modules/tasks/network-interfaces-scripted.nix @@ -20,14 +20,8 @@ let "sys-subsystem-net-devices-${escapeSystemdPath interface}.device"; interfaceIps = i: - i.ip4 ++ optionals cfg.enableIPv6 i.ip6 - ++ optional (i.ipAddress != null) { - address = i.ipAddress; - prefixLength = i.prefixLength; - } ++ optional (cfg.enableIPv6 && i.ipv6Address != null) { - address = i.ipv6Address; - prefixLength = i.ipv6PrefixLength; - }; + i.ipv4.addresses + ++ optionals cfg.enableIPv6 i.ipv6.addresses; destroyBond = i: '' while true; do @@ -185,33 +179,58 @@ let path = [ pkgs.iproute ]; script = '' - # FIXME: shouldn't this be done in network-link? - echo "bringing up interface..." - ip link set "${i.name}" up - state="/run/nixos/network/addresses/${i.name}" - mkdir -p $(dirname "$state") - '' + flip concatMapStrings (ips) (ip: - let - address = "${ip.address}/${toString ip.prefixLength}"; - in - '' - echo "${address}" >> $state - if out=$(ip addr add "${address}" dev "${i.name}" 2>&1); then - echo "added ip ${address}" - elif ! echo "$out" | grep "File exists" >/dev/null 2>&1; then - echo "failed to add ${address}" - exit 1 - fi - ''); + ${flip concatMapStrings ips (ip: + let + cidr = "${ip.address}/${toString ip.prefixLength}"; + in + '' + echo "${cidr}" >> $state + echo -n "adding address ${cidr}... " + if out=$(ip addr add "${cidr}" dev "${i.name}" 2>&1); then + echo "done" + elif ! echo "$out" | grep "File exists" >/dev/null 2>&1; then + echo "failed" + exit 1 + fi + '' + )} + + state="/run/nixos/network/routes/${i.name}" + mkdir -p $(dirname "$state") + + ${flip concatMapStrings (i.ipv4.routes ++ i.ipv6.routes) (route: + let + cidr = "${route.address}/${toString route.prefixLength}"; + via = optionalString (route.via != null) ''via "${route.via}"''; + options = concatStrings (mapAttrsToList (name: val: "${name} ${val} ") route.options); + in + '' + echo "${cidr}" >> $state + echo -n "adding route ${cidr}... " + if out=$(ip route add "${cidr}" ${options} ${via} dev "${i.name}" 2>&1); then + echo "done" + elif ! echo "$out" | grep "File exists" >/dev/null 2>&1; then + echo "failed" + exit 1 + fi + '' + )} + ''; preStop = '' + state="/run/nixos/network/routes/${i.name}" + while read cidr; do + echo -n "deleting route $cidr... " + ip route del "$cidr" dev "${i.name}" >/dev/null 2>&1 && echo "done" || echo "failed" + done < "$state" + rm -f "$state" + state="/run/nixos/network/addresses/${i.name}" - while read address; do - echo -n "deleting $address..." - ip addr del "$address" dev "${i.name}" >/dev/null 2>&1 || echo -n " Failed" - echo "" + while read cidr; do + echo -n "deleting address $cidr... " + ip addr del "$cidr" dev "${i.name}" >/dev/null 2>&1 && echo "done" || echo "failed" done < "$state" rm -f "$state" ''; diff --git a/nixos/modules/tasks/network-interfaces-systemd.nix b/nixos/modules/tasks/network-interfaces-systemd.nix index be7f52a76de..c640e886fca 100644 --- a/nixos/modules/tasks/network-interfaces-systemd.nix +++ b/nixos/modules/tasks/network-interfaces-systemd.nix @@ -9,14 +9,8 @@ let interfaces = attrValues cfg.interfaces; interfaceIps = i: - i.ip4 ++ optionals cfg.enableIPv6 i.ip6 - ++ optional (i.ipAddress != null) { - address = i.ipAddress; - prefixLength = i.prefixLength; - } ++ optional (cfg.enableIPv6 && i.ipv6Address != null) { - address = i.ipv6Address; - prefixLength = i.ipv6PrefixLength; - }; + i.ipv4.addresses + ++ optionals cfg.enableIPv6 i.ipv6.addresses; dhcpStr = useDHCP: if useDHCP == true || useDHCP == null then "both" else "none"; diff --git a/nixos/modules/tasks/network-interfaces.nix b/nixos/modules/tasks/network-interfaces.nix index f80c5045c07..5036b701bd8 100644 --- a/nixos/modules/tasks/network-interfaces.nix +++ b/nixos/modules/tasks/network-interfaces.nix @@ -1,4 +1,4 @@ -{ config, lib, pkgs, utils, stdenv, ... }: +{ config, options, lib, pkgs, utils, stdenv, ... }: with lib; with utils; @@ -101,7 +101,7 @@ let address = mkOption { type = types.str; description = '' - IPv${toString v} address of the interface. Leave empty to configure the + IPv${toString v} address of the interface. Leave empty to configure the interface using DHCP. ''; }; @@ -116,6 +116,40 @@ let }; }; + routeOpts = v: + { options = { + address = mkOption { + type = types.str; + description = "IPv${toString v} address of the network."; + }; + + prefixLength = mkOption { + type = types.addCheck types.int (n: n >= 0 && n <= (if v == 4 then 32 else 128)); + description = '' + Subnet mask of the network, specified as the number of + bits in the prefix (${if v == 4 then "24" else "64"}). + ''; + }; + + via = mkOption { + type = types.nullOr types.str; + default = null; + description = "IPv${toString v} address of the next hop."; + }; + + options = mkOption { + type = types.attrsOf types.str; + default = { }; + example = { mtu = "1492"; window = "524288"; }; + description = '' + Other route options. See the symbol OPTION + in the ip-route(8) manual page for the details. + ''; + }; + + }; + }; + gatewayCoerce = address: { inherit address; }; gatewayOpts = { ... }: { @@ -148,7 +182,6 @@ let interfaceOpts = { name, ... }: { options = { - name = mkOption { example = "eth0"; type = types.str; @@ -175,7 +208,7 @@ let ''; }; - ip4 = mkOption { + ipv4.addresses = mkOption { default = [ ]; example = [ { address = "10.0.0.1"; prefixLength = 16; } @@ -187,7 +220,7 @@ let ''; }; - ip6 = mkOption { + ipv6.addresses = mkOption { default = [ ]; example = [ { address = "fdfd:b3f0:482::1"; prefixLength = 48; } @@ -199,50 +232,27 @@ let ''; }; - ipAddress = mkOption { - default = null; - example = "10.0.0.1"; - type = types.nullOr types.str; + ipv4.routes = mkOption { + default = []; + example = [ + { address = "10.0.0.0"; prefixLength = 16; } + { address = "192.168.2.0"; prefixLength = 24; via = "192.168.1.1"; } + ]; + type = with types; listOf (submodule (routeOpts 4)); description = '' - IP address of the interface. Leave empty to configure the - interface using DHCP. + List of extra IPv4 static routes that will be assigned to the interface. ''; }; - prefixLength = mkOption { - default = null; - example = 24; - type = types.nullOr types.int; + ipv6.routes = mkOption { + default = []; + example = [ + { address = "fdfd:b3f0::"; prefixLength = 48; } + { address = "2001:1470:fffd:2098::"; prefixLength = 64; via = "fdfd:b3f0::1"; } + ]; + type = with types; listOf (submodule (routeOpts 6)); description = '' - Subnet mask of the interface, specified as the number of - bits in the prefix (24). - ''; - }; - - subnetMask = mkOption { - default = null; - description = '' - Defunct, supply the prefix length instead. - ''; - }; - - ipv6Address = mkOption { - default = null; - example = "2001:1470:fffd:2098::e006"; - type = types.nullOr types.str; - description = '' - IPv6 address of the interface. Leave empty to configure the - interface using NDP. - ''; - }; - - ipv6PrefixLength = mkOption { - default = 64; - example = 64; - type = types.int; - description = '' - Subnet mask of the interface, specified as the number of - bits in the prefix (64). + List of extra IPv6 static routes that will be assigned to the interface. ''; }; @@ -317,6 +327,32 @@ let name = mkDefault name; }; + # Renamed or removed options + imports = + let + defined = x: x != "_mkMergedOptionModule"; + in [ + (mkRenamedOptionModule [ "ip4" ] [ "ipv4" "addresses"]) + (mkRenamedOptionModule [ "ip6" ] [ "ipv6" "addresses"]) + (mkRemovedOptionModule [ "subnetMask" ] '' + Supply a prefix length instead; use option + networking.interfaces..ipv{4,6}.addresses'') + (mkMergedOptionModule + [ [ "ipAddress" ] [ "prefixLength" ] ] + [ "ipv4" "addresses" ] + (cfg: with cfg; + optional (defined ipAddress && defined prefixLength) + { address = ipAddress; prefixLength = prefixLength; })) + (mkMergedOptionModule + [ [ "ipv6Address" ] [ "ipv6PrefixLength" ] ] + [ "ipv6" "addresses" ] + (cfg: with cfg; + optional (defined ipv6Address && defined ipv6PrefixLength) + { address = ipv6Address; prefixLength = ipv6PrefixLength; })) + + ({ options.warnings = options.warnings; }) + ]; + }; hexChars = stringToCharacters "0123456789abcdef"; @@ -453,7 +489,7 @@ in networking.interfaces = mkOption { default = {}; example = - { eth0.ip4 = [ { + { eth0.ipv4 = [ { address = "131.211.84.78"; prefixLength = 25; } ]; @@ -932,13 +968,10 @@ in config = { + warnings = concatMap (i: i.warnings) interfaces; + assertions = (flip map interfaces (i: { - assertion = i.subnetMask == null; - message = '' - The networking.interfaces."${i.name}".subnetMask option is defunct. Use prefixLength instead. - ''; - })) ++ (flip map interfaces (i: { # With the linux kernel, interface name length is limited by IFNAMSIZ # to 16 bytes, including the trailing null byte. # See include/linux/if.h in the kernel sources @@ -947,7 +980,7 @@ in The name of networking.interfaces."${i.name}" is too long, it needs to be less than 16 characters. ''; })) ++ (flip map slaveIfs (i: { - assertion = i.ip4 == [ ] && i.ipAddress == null && i.ip6 == [ ] && i.ipv6Address == null; + assertion = i.ipv4.addresses == [ ] && i.ipv6.addresses == [ ]; message = '' The networking.interfaces."${i.name}" must not have any defined ips when it is a slave. ''; @@ -1089,6 +1122,9 @@ in '' + optionalString (i.mtu != null) '' echo "setting MTU to ${toString i.mtu}..." ip link set "${i.name}" mtu "${toString i.mtu}" + '' + '' + echo -n "bringing up interface... " + ip link set "${i.name}" up && echo "done" || (echo "failed"; exit 1) ''; }))); diff --git a/nixos/modules/virtualisation/brightbox-image.nix b/nixos/modules/virtualisation/brightbox-image.nix index 08bbcfd9d7c..39a655b4c10 100644 --- a/nixos/modules/virtualisation/brightbox-image.nix +++ b/nixos/modules/virtualisation/brightbox-image.nix @@ -26,7 +26,7 @@ in rm $diskImageBase popd ''; - diskImageBase = "nixos-image-${config.system.nixosLabel}-${pkgs.stdenv.system}.raw"; + diskImageBase = "nixos-image-${config.system.nixos.label}-${pkgs.stdenv.system}.raw"; buildInputs = [ pkgs.utillinux pkgs.perl ]; exportReferencesGraph = [ "closure" config.system.build.toplevel ]; diff --git a/nixos/modules/virtualisation/google-compute-image.nix b/nixos/modules/virtualisation/google-compute-image.nix index 2fb38059b26..155a33b3bb3 100644 --- a/nixos/modules/virtualisation/google-compute-image.nix +++ b/nixos/modules/virtualisation/google-compute-image.nix @@ -14,7 +14,7 @@ in PATH=$PATH:${pkgs.stdenv.lib.makeBinPath [ pkgs.gnutar pkgs.gzip ]} pushd $out mv $diskImage disk.raw - tar -Szcf nixos-image-${config.system.nixosLabel}-${pkgs.stdenv.system}.raw.tar.gz disk.raw + tar -Szcf nixos-image-${config.system.nixos.label}-${pkgs.stdenv.system}.raw.tar.gz disk.raw rm $out/disk.raw popd ''; diff --git a/nixos/modules/virtualisation/virtualbox-host.nix b/nixos/modules/virtualisation/virtualbox-host.nix index bb0c38bd4eb..7413e12c8f3 100644 --- a/nixos/modules/virtualisation/virtualbox-host.nix +++ b/nixos/modules/virtualisation/virtualbox-host.nix @@ -124,7 +124,7 @@ in ''; }; - networking.interfaces.vboxnet0.ip4 = [ { address = "192.168.56.1"; prefixLength = 24; } ]; + networking.interfaces.vboxnet0.ipv4.addresses = [{ address = "192.168.56.1"; prefixLength = 24; }]; # Make sure NetworkManager won't assume this interface being up # means we have internet access. networking.networkmanager.unmanaged = ["vboxnet0"]; diff --git a/nixos/modules/virtualisation/virtualbox-image.nix b/nixos/modules/virtualisation/virtualbox-image.nix index a544403e6be..64f145f77ca 100644 --- a/nixos/modules/virtualisation/virtualbox-image.nix +++ b/nixos/modules/virtualisation/virtualbox-image.nix @@ -22,7 +22,7 @@ in { config = { system.build.virtualBoxOVA = import ../../lib/make-disk-image.nix { - name = "nixos-ova-${config.system.nixosLabel}-${pkgs.stdenv.system}"; + name = "nixos-ova-${config.system.nixos.label}-${pkgs.stdenv.system}"; inherit pkgs lib config; partitionTableType = "legacy"; @@ -37,7 +37,7 @@ in { VBoxManage internalcommands createrawvmdk -filename disk.vmdk -rawdisk $diskImage echo "creating VirtualBox VM..." - vmName="NixOS ${config.system.nixosLabel} (${pkgs.stdenv.system})" + vmName="NixOS ${config.system.nixos.label} (${pkgs.stdenv.system})" VBoxManage createvm --name "$vmName" --register \ --ostype ${if pkgs.stdenv.system == "x86_64-linux" then "Linux26_64" else "Linux26"} VBoxManage modifyvm "$vmName" \ @@ -53,7 +53,7 @@ in { echo "exporting VirtualBox VM..." mkdir -p $out - fn="$out/nixos-${config.system.nixosLabel}-${pkgs.stdenv.system}.ova" + fn="$out/nixos-${config.system.nixos.label}-${pkgs.stdenv.system}.ova" VBoxManage export "$vmName" --output "$fn" rm -v $diskImage diff --git a/nixos/release.nix b/nixos/release.nix index 6bf2e4d8c7f..8095dfeab84 100644 --- a/nixos/release.nix +++ b/nixos/release.nix @@ -35,8 +35,8 @@ let versionModule = - { system.nixosVersionSuffix = versionSuffix; - system.nixosRevision = nixpkgs.rev or nixpkgs.shortRev; + { system.nixos.versionSuffix = versionSuffix; + system.nixos.revision = nixpkgs.rev or nixpkgs.shortRev; }; diff --git a/nixos/tests/bittorrent.nix b/nixos/tests/bittorrent.nix index 3a718a79831..50c98664660 100644 --- a/nixos/tests/bittorrent.nix +++ b/nixos/tests/bittorrent.nix @@ -16,7 +16,7 @@ let miniupnpdConf = nodes: pkgs.writeText "miniupnpd.conf" '' ext_ifname=eth1 - listening_ip=${(pkgs.lib.head nodes.router.config.networking.interfaces.eth2.ip4).address}/24 + listening_ip=${(pkgs.lib.head nodes.router.config.networking.interfaces.eth2.ipv4.addresses).address}/24 allow 1024-65535 192.168.2.0/24 1024-65535 ''; @@ -56,7 +56,7 @@ in { environment.systemPackages = [ pkgs.transmission ]; virtualisation.vlans = [ 2 ]; networking.defaultGateway = - (pkgs.lib.head nodes.router.config.networking.interfaces.eth2.ip4).address; + (pkgs.lib.head nodes.router.config.networking.interfaces.eth2.ipv4.addresses).address; networking.firewall.enable = false; }; @@ -84,7 +84,7 @@ in # Create the torrent. $tracker->succeed("mkdir /tmp/data"); $tracker->succeed("cp ${file} /tmp/data/test.tar.bz2"); - $tracker->succeed("transmission-create /tmp/data/test.tar.bz2 -p -t http://${(pkgs.lib.head nodes.tracker.config.networking.interfaces.eth1.ip4).address}:6969/announce -o /tmp/test.torrent"); + $tracker->succeed("transmission-create /tmp/data/test.tar.bz2 -p -t http://${(pkgs.lib.head nodes.tracker.config.networking.interfaces.eth1.ipv4.addresses).address}:6969/announce -o /tmp/test.torrent"); $tracker->succeed("chmod 644 /tmp/test.torrent"); # Start the tracker. !!! use a less crappy tracker diff --git a/nixos/tests/cjdns.nix b/nixos/tests/cjdns.nix index 46666379924..4d3b58abc6e 100644 --- a/nixos/tests/cjdns.nix +++ b/nixos/tests/cjdns.nix @@ -12,7 +12,6 @@ let # the sequence of address assignment less stochastic. networking.useDHCP = false; - networking.interfaces.eth1.prefixLength = 24; # CJDNS output is incompatible with the XML log. systemd.services.cjdns.serviceConfig.StandardOutput = "null"; #networking.firewall.enable = true; @@ -49,7 +48,9 @@ import ./make-test.nix ({ pkgs, ...} : { { imports = [ basicConfig ]; - networking.interfaces.eth1.ipAddress = "192.168.0.2"; + networking.interfaces.eth1.ipv4.addresses = [ + { address = "192.168.0.2"; prefixLength = 24; } + ]; services.cjdns = { UDPInterface = @@ -76,7 +77,9 @@ import ./make-test.nix ({ pkgs, ...} : { CJDNS_ADMIN_PASSWORD=FOOBAR ''; - networking.interfaces.eth1.ipAddress = "192.168.0.1"; + networking.interfaces.eth1.ipv4.addresses = [ + { address = "192.168.0.1"; prefixLength = 24; } + ]; services.cjdns = { authorizedPasswords = [ carolPassword ]; diff --git a/nixos/tests/containers-bridge.nix b/nixos/tests/containers-bridge.nix index b8d4759684c..dfef46a2ada 100644 --- a/nixos/tests/containers-bridge.nix +++ b/nixos/tests/containers-bridge.nix @@ -26,8 +26,8 @@ import ./make-test.nix ({ pkgs, ...} : { }; networking.interfaces = { br0 = { - ip4 = [{ address = hostIp; prefixLength = 24; }]; - ip6 = [{ address = hostIp6; prefixLength = 7; }]; + ipv4.addresses = [{ address = hostIp; prefixLength = 24; }]; + ipv6.addresses = [{ address = hostIp6; prefixLength = 7; }]; }; }; diff --git a/nixos/tests/containers-extra_veth.nix b/nixos/tests/containers-extra_veth.nix index 6339c8c558b..df3f3354b2d 100644 --- a/nixos/tests/containers-extra_veth.nix +++ b/nixos/tests/containers-extra_veth.nix @@ -21,11 +21,11 @@ import ./make-test.nix ({ pkgs, ...} : { }; networking.interfaces = { br0 = { - ip4 = [{ address = "192.168.0.1"; prefixLength = 24; }]; - ip6 = [{ address = "fc00::1"; prefixLength = 7; }]; + ipv4.addresses = [{ address = "192.168.0.1"; prefixLength = 24; }]; + ipv6.addresses = [{ address = "fc00::1"; prefixLength = 7; }]; }; br1 = { - ip4 = [{ address = "192.168.1.1"; prefixLength = 24; }]; + ipv4.addresses = [{ address = "192.168.1.1"; prefixLength = 24; }]; }; }; diff --git a/nixos/tests/containers-hosts.nix b/nixos/tests/containers-hosts.nix index c7a85f190a5..df1ef6d1493 100644 --- a/nixos/tests/containers-hosts.nix +++ b/nixos/tests/containers-hosts.nix @@ -13,9 +13,9 @@ import ./make-test.nix ({ pkgs, ...} : { virtualisation.vlans = []; networking.bridges.br0.interfaces = []; - networking.interfaces.br0 = { - ip4 = [ { address = "10.11.0.254"; prefixLength = 24; } ]; - }; + networking.interfaces.br0.ipv4.addresses = [ + { address = "10.11.0.254"; prefixLength = 24; } + ]; # Force /etc/hosts to be the only source for host name resolution environment.etc."nsswitch.conf".text = lib.mkForce '' diff --git a/nixos/tests/containers-macvlans.nix b/nixos/tests/containers-macvlans.nix index 721f9848149..390dc4ad2c2 100644 --- a/nixos/tests/containers-macvlans.nix +++ b/nixos/tests/containers-macvlans.nix @@ -26,9 +26,9 @@ import ./make-test.nix ({ pkgs, ...} : { interface = "eth1"; mode = "bridge"; }; - networking.interfaces.eth1.ip4 = lib.mkForce []; + networking.interfaces.eth1.ipv4.addresses = lib.mkForce []; networking.interfaces.mv-eth1-host = { - ip4 = [ { address = "192.168.1.1"; prefixLength = 24; } ]; + ipv4.addresses = [ { address = "192.168.1.1"; prefixLength = 24; } ]; }; containers.test1 = { @@ -37,7 +37,7 @@ import ./make-test.nix ({ pkgs, ...} : { config = { networking.interfaces.mv-eth1 = { - ip4 = [ { address = containerIp1; prefixLength = 24; } ]; + ipv4.addresses = [ { address = containerIp1; prefixLength = 24; } ]; }; }; }; @@ -48,7 +48,7 @@ import ./make-test.nix ({ pkgs, ...} : { config = { networking.interfaces.mv-eth1 = { - ip4 = [ { address = containerIp2; prefixLength = 24; } ]; + ipv4.addresses = [ { address = containerIp2; prefixLength = 24; } ]; }; }; }; diff --git a/nixos/tests/containers-physical_interfaces.nix b/nixos/tests/containers-physical_interfaces.nix index a3b0b29951b..bd1228b8e37 100644 --- a/nixos/tests/containers-physical_interfaces.nix +++ b/nixos/tests/containers-physical_interfaces.nix @@ -16,9 +16,9 @@ import ./make-test.nix ({ pkgs, ...} : { interfaces = [ "eth1" ]; config = { - networking.interfaces.eth1 = { - ip4 = [ { address = "10.10.0.1"; prefixLength = 24; } ]; - }; + networking.interfaces.eth1.ipv4.addresses = [ + { address = "10.10.0.1"; prefixLength = 24; } + ]; networking.firewall.enable = false; }; }; @@ -33,9 +33,9 @@ import ./make-test.nix ({ pkgs, ...} : { config = { networking.bridges.br0.interfaces = [ "eth1" ]; - networking.interfaces.br0 = { - ip4 = [ { address = "10.10.0.2"; prefixLength = 24; } ]; - }; + networking.interfaces.br0.ipv4.addresses = [ + { address = "10.10.0.2"; prefixLength = 24; } + ]; networking.firewall.enable = false; }; }; @@ -54,9 +54,9 @@ import ./make-test.nix ({ pkgs, ...} : { interfaces = [ "eth1" ]; mode = "active-backup"; }; - networking.interfaces.bond0 = { - ip4 = [ { address = "10.10.0.3"; prefixLength = 24; } ]; - }; + networking.interfaces.bond0.ipv4.addresses = [ + { address = "10.10.0.3"; prefixLength = 24; } + ]; networking.firewall.enable = false; }; }; @@ -76,9 +76,9 @@ import ./make-test.nix ({ pkgs, ...} : { mode = "active-backup"; }; networking.bridges.br0.interfaces = [ "bond0" ]; - networking.interfaces.br0 = { - ip4 = [ { address = "10.10.0.4"; prefixLength = 24; } ]; - }; + networking.interfaces.br0.ipv4.addresses = [ + { address = "10.10.0.4"; prefixLength = 24; } + ]; networking.firewall.enable = false; }; }; diff --git a/nixos/tests/containers-reloadable.nix b/nixos/tests/containers-reloadable.nix index b5867c6f6ab..5fb42f2272b 100644 --- a/nixos/tests/containers-reloadable.nix +++ b/nixos/tests/containers-reloadable.nix @@ -11,7 +11,7 @@ let # prevent make-test.nix to change IP networking.interfaces = { - eth1.ip4 = lib.mkOverride 0 [ ]; + eth1.ipv4.addresses = lib.mkOverride 0 [ ]; }; }; in { diff --git a/nixos/tests/containers-restart_networking.nix b/nixos/tests/containers-restart_networking.nix index 086d056c51c..f68c9b07759 100644 --- a/nixos/tests/containers-restart_networking.nix +++ b/nixos/tests/containers-restart_networking.nix @@ -11,7 +11,7 @@ let config = { networking.firewall.enable = false; networking.firewall.allowPing = true; - networking.interfaces.eth0.ip4 = [ + networking.interfaces.eth0.ipv4.addresses = [ { address = "192.168.1.122"; prefixLength = 24; } ]; }; @@ -33,8 +33,8 @@ in import ./make-test.nix ({ pkgs, lib, ...} : rstp = false; }; networking.interfaces = { - eth1.ip4 = lib.mkOverride 0 [ ]; - br0.ip4 = [{ address = "192.168.1.1"; prefixLength = 24; }]; + eth1.ipv4.addresses = lib.mkOverride 0 [ ]; + br0.ipv4.addresses = [ { address = "192.168.1.1"; prefixLength = 24; } ]; }; }; @@ -44,8 +44,8 @@ in import ./make-test.nix ({ pkgs, lib, ...} : rstp = false; }; networking.interfaces = { - eth1.ip4 = lib.mkOverride 0 [ ]; - br0.ip4 = [{ address = "192.168.1.2"; prefixLength = 24; }]; + eth1.ipv4.addresses = lib.mkOverride 0 [ ]; + br0.ipv4.addresses = [ { address = "192.168.1.2"; prefixLength = 24; } ]; }; }; client_eth1_rstp = { lib, pkgs, ... }: client_base // { @@ -54,8 +54,8 @@ in import ./make-test.nix ({ pkgs, lib, ...} : rstp = true; }; networking.interfaces = { - eth1.ip4 = lib.mkOverride 0 [ ]; - br0.ip4 = [{ address = "192.168.1.2"; prefixLength = 24; }]; + eth1.ipv4.addresses = lib.mkOverride 0 [ ]; + br0.ipv4.addresses = [ { address = "192.168.1.2"; prefixLength = 24; } ]; }; }; }; diff --git a/nixos/tests/ferm.nix b/nixos/tests/ferm.nix index 8f2a8c01eeb..bb7daae118c 100644 --- a/nixos/tests/ferm.nix +++ b/nixos/tests/ferm.nix @@ -11,8 +11,8 @@ import ./make-test.nix ({ pkgs, ...} : { with pkgs.lib; { networking = { - interfaces.eth1.ip6 = mkOverride 0 [ { address = "fd00::2"; prefixLength = 64; } ]; - interfaces.eth1.ip4 = mkOverride 0 [ { address = "192.168.1.2"; prefixLength = 24; } ]; + interfaces.eth1.ipv6.addresses = mkOverride 0 [ { address = "fd00::2"; prefixLength = 64; } ]; + interfaces.eth1.ipv4.addresses = mkOverride 0 [ { address = "192.168.1.2"; prefixLength = 24; } ]; }; }; server = @@ -20,8 +20,8 @@ import ./make-test.nix ({ pkgs, ...} : { with pkgs.lib; { networking = { - interfaces.eth1.ip6 = mkOverride 0 [ { address = "fd00::1"; prefixLength = 64; } ]; - interfaces.eth1.ip4 = mkOverride 0 [ { address = "192.168.1.1"; prefixLength = 24; } ]; + interfaces.eth1.ipv6.addresses = mkOverride 0 [ { address = "fd00::1"; prefixLength = 64; } ]; + interfaces.eth1.ipv4.addresses = mkOverride 0 [ { address = "192.168.1.1"; prefixLength = 24; } ]; }; services = { diff --git a/nixos/tests/initrd-network-ssh/default.nix b/nixos/tests/initrd-network-ssh/default.nix index 9d476cb1a96..b1f3d147e86 100644 --- a/nixos/tests/initrd-network-ssh/default.nix +++ b/nixos/tests/initrd-network-ssh/default.nix @@ -11,9 +11,7 @@ import ../make-test.nix ({ pkgs, lib, ... }: { config, pkgs, ... }: { boot.kernelParams = [ - "ip=${ - (head config.networking.interfaces.eth1.ip4).address - }:::255.255.255.0::eth1:none" + "ip=${config.networking.primaryIPAddress}:::255.255.255.0::eth1:none" ]; boot.initrd.network = { enable = true; diff --git a/nixos/tests/nat.nix b/nixos/tests/nat.nix index a12b7645bc2..7057158a829 100644 --- a/nixos/tests/nat.nix +++ b/nixos/tests/nat.nix @@ -35,7 +35,7 @@ import ./make-test.nix ({ pkgs, lib, withFirewall, withConntrackHelpers ? false, { virtualisation.vlans = [ 1 ]; networking.firewall.allowPing = true; networking.defaultGateway = - (pkgs.lib.head nodes.router.config.networking.interfaces.eth2.ip4).address; + (pkgs.lib.head nodes.router.config.networking.interfaces.eth2.ipv4.addresses).address; } (lib.optionalAttrs withConntrackHelpers { networking.firewall.connectionTrackingModules = [ "ftp" ]; diff --git a/nixos/tests/networking.nix b/nixos/tests/networking.nix index bcdbad3bab0..5cb40af5799 100644 --- a/nixos/tests/networking.nix +++ b/nixos/tests/networking.nix @@ -21,10 +21,8 @@ let firewall.allowedUDPPorts = [ 547 ]; interfaces = mkOverride 0 (listToAttrs (flip map vlanIfs (n: nameValuePair "eth${toString n}" { - ipAddress = "192.168.${toString n}.1"; - prefixLength = 24; - ipv6Address = "fd00:1234:5678:${toString n}::1"; - ipv6PrefixLength = 64; + ipv4.addresses = [ { address = "192.168.${toString n}.1"; prefixLength = 24; } ]; + ipv6.addresses = [ { address = "fd00:1234:5678:${toString n}::1"; prefixLength = 64; } ]; }))); }; services.dhcpd4 = { @@ -90,12 +88,12 @@ let firewall.allowPing = true; useDHCP = false; defaultGateway = "192.168.1.1"; - interfaces.eth1.ip4 = mkOverride 0 [ + interfaces.eth1.ipv4.addresses = mkOverride 0 [ { address = "192.168.1.2"; prefixLength = 24; } { address = "192.168.1.3"; prefixLength = 32; } { address = "192.168.1.10"; prefixLength = 32; } ]; - interfaces.eth2.ip4 = mkOverride 0 [ + interfaces.eth2.ipv4.addresses = mkOverride 0 [ { address = "192.168.2.2"; prefixLength = 24; } ]; }; @@ -143,12 +141,12 @@ let firewall.allowPing = true; useDHCP = true; interfaces.eth1 = { - ip4 = mkOverride 0 [ ]; - ip6 = mkOverride 0 [ ]; + ipv4.addresses = mkOverride 0 [ ]; + ipv6.addresses = mkOverride 0 [ ]; }; interfaces.eth2 = { - ip4 = mkOverride 0 [ ]; - ip6 = mkOverride 0 [ ]; + ipv4.addresses = mkOverride 0 [ ]; + ipv6.addresses = mkOverride 0 [ ]; }; }; }; @@ -198,10 +196,10 @@ let firewall.allowPing = true; useDHCP = false; interfaces.eth1 = { - ip4 = mkOverride 0 [ ]; + ipv4.addresses = mkOverride 0 [ ]; useDHCP = true; }; - interfaces.eth2.ip4 = mkOverride 0 [ ]; + interfaces.eth2.ipv4.addresses = mkOverride 0 [ ]; }; }; testScript = { nodes, ... }: @@ -241,9 +239,9 @@ let interfaces = [ "eth1" "eth2" ]; driverOptions.mode = "balance-rr"; }; - interfaces.eth1.ip4 = mkOverride 0 [ ]; - interfaces.eth2.ip4 = mkOverride 0 [ ]; - interfaces.bond.ip4 = mkOverride 0 + interfaces.eth1.ipv4.addresses = mkOverride 0 [ ]; + interfaces.eth2.ipv4.addresses = mkOverride 0 [ ]; + interfaces.bond.ipv4.addresses = mkOverride 0 [ { inherit address; prefixLength = 30; } ]; }; }; @@ -274,7 +272,7 @@ let useNetworkd = networkd; firewall.allowPing = true; useDHCP = false; - interfaces.eth1.ip4 = mkOverride 0 + interfaces.eth1.ipv4.addresses = mkOverride 0 [ { inherit address; prefixLength = 24; } ]; }; }; @@ -289,9 +287,9 @@ let firewall.allowPing = true; useDHCP = false; bridges.bridge.interfaces = [ "eth1" "eth2" ]; - interfaces.eth1.ip4 = mkOverride 0 [ ]; - interfaces.eth2.ip4 = mkOverride 0 [ ]; - interfaces.bridge.ip4 = mkOverride 0 + interfaces.eth1.ipv4.addresses = mkOverride 0 [ ]; + interfaces.eth2.ipv4.addresses = mkOverride 0 [ ]; + interfaces.bridge.ipv4.addresses = mkOverride 0 [ { address = "192.168.1.1"; prefixLength = 24; } ]; }; }; @@ -328,7 +326,7 @@ let firewall.allowPing = true; useDHCP = true; macvlans.macvlan.interface = "eth1"; - interfaces.eth1.ip4 = mkOverride 0 [ ]; + interfaces.eth1.ipv4.addresses = mkOverride 0 [ ]; }; }; testScript = { nodes, ... }: @@ -369,9 +367,9 @@ let local = address4; dev = "eth1"; }; - interfaces.eth1.ip4 = mkOverride 0 + interfaces.eth1.ipv4.addresses = mkOverride 0 [ { address = address4; prefixLength = 24; } ]; - interfaces.sit.ip6 = mkOverride 0 + interfaces.sit.ipv6.addresses = mkOverride 0 [ { address = address6; prefixLength = 64; } ]; }; }; @@ -410,9 +408,9 @@ let id = 1; interface = "eth0"; }; - interfaces.eth0.ip4 = mkOverride 0 [ ]; - interfaces.eth1.ip4 = mkOverride 0 [ ]; - interfaces.vlan.ip4 = mkOverride 0 + interfaces.eth0.ipv4.addresses = mkOverride 0 [ ]; + interfaces.eth1.ipv4.addresses = mkOverride 0 [ ]; + interfaces.vlan.ipv4.addresses = mkOverride 0 [ { inherit address; prefixLength = 24; } ]; }; }; @@ -437,13 +435,13 @@ let name = "Virtual"; machine = { networking.interfaces."tap0" = { - ip4 = [ { address = "192.168.1.1"; prefixLength = 24; } ]; - ip6 = [ { address = "2001:1470:fffd:2096::"; prefixLength = 64; } ]; + ipv4.addresses = [ { address = "192.168.1.1"; prefixLength = 24; } ]; + ipv6.addresses = [ { address = "2001:1470:fffd:2096::"; prefixLength = 64; } ]; virtual = true; }; networking.interfaces."tun0" = { - ip4 = [ { address = "192.168.1.2"; prefixLength = 24; } ]; - ip6 = [ { address = "2001:1470:fffd:2097::"; prefixLength = 64; } ]; + ipv4.addresses = [ { address = "192.168.1.2"; prefixLength = 24; } ]; + ipv6.addresses = [ { address = "2001:1470:fffd:2097::"; prefixLength = 64; } ]; virtual = true; }; }; @@ -483,9 +481,9 @@ let boot.kernel.sysctl."net.ipv6.conf.all.forwarding" = true; networking = { useNetworkd = networkd; - interfaces.eth1 = { - ipv6Address = "fd00:1234:5678:1::1"; - ipv6PrefixLength = 64; + interfaces.eth1.ipv6.addresses = singleton { + address = "fd00:1234:5678:1::1"; + prefixLength = 64; }; }; services.radvd = { @@ -511,8 +509,8 @@ let useDHCP = true; interfaces.eth1 = { preferTempAddress = true; - ip4 = mkOverride 0 [ ]; - ip6 = mkOverride 0 [ ]; + ipv4.addresses = mkOverride 0 [ ]; + ipv6.addresses = mkOverride 0 [ ]; }; }; }; @@ -533,6 +531,69 @@ let $client->waitUntilSucceeds("! ip route get fd00:1234:5678:1::1 | grep -q ':[a-f0-9]*ff:fe[a-f0-9]*:'"); ''; }; + routes = { + name = "routes"; + machine = { + networking.useDHCP = false; + networking.interfaces."eth0" = { + ipv4.addresses = [ { address = "192.168.1.2"; prefixLength = 24; } ]; + ipv6.addresses = [ { address = "2001:1470:fffd:2097::"; prefixLength = 64; } ]; + ipv6.routes = [ + { address = "fdfd:b3f0::"; prefixLength = 48; } + { address = "2001:1470:fffd:2098::"; prefixLength = 64; via = "fdfd:b3f0::1"; } + ]; + ipv4.routes = [ + { address = "10.0.0.0"; prefixLength = 16; options = { mtu = "1500"; }; } + { address = "192.168.2.0"; prefixLength = 24; via = "192.168.1.1"; } + ]; + }; + virtualisation.vlans = [ ]; + }; + + testScript = '' + my $targetIPv4Table = <<'END'; + 10.0.0.0/16 scope link mtu 1500 + 192.168.1.0/24 proto kernel scope link src 192.168.1.2 + 192.168.2.0/24 via 192.168.1.1 + END + + my $targetIPv6Table = <<'END'; + 2001:1470:fffd:2097::/64 proto kernel metric 256 pref medium + 2001:1470:fffd:2098::/64 via fdfd:b3f0::1 metric 1024 pref medium + fdfd:b3f0::/48 metric 1024 pref medium + END + + $machine->start; + $machine->waitForUnit("network.target"); + + # test routing tables + my $ipv4Table = $machine->succeed("ip -4 route list dev eth0 | head -n3"); + my $ipv6Table = $machine->succeed("ip -6 route list dev eth0 | head -n3"); + "$ipv4Table" eq "$targetIPv4Table" or die( + "The IPv4 routing table does not match the expected one:\n", + "Result:\n", "$ipv4Table\n", + "Expected:\n", "$targetIPv4Table\n" + ); + "$ipv6Table" eq "$targetIPv6Table" or die( + "The IPv6 routing table does not match the expected one:\n", + "Result:\n", "$ipv6Table\n", + "Expected:\n", "$targetIPv6Table\n" + ); + + # test clean-up of the tables + $machine->succeed("systemctl stop network-addresses-eth0"); + my $ipv4Residue = $machine->succeed("ip -4 route list dev eth0 | head -n-3"); + my $ipv6Residue = $machine->succeed("ip -6 route list dev eth0 | head -n-3"); + $ipv4Residue eq "" or die( + "The IPv4 routing table has not been properly cleaned:\n", + "$ipv4Residue\n" + ); + $ipv6Residue eq "" or die( + "The IPv6 routing table has not been properly cleaned:\n", + "$ipv6Residue\n" + ); + ''; + }; }; in mapAttrs (const (attrs: makeTest (attrs // { diff --git a/nixos/tests/nsd.nix b/nixos/tests/nsd.nix index 0b1082056f6..ad4d4f82243 100644 --- a/nixos/tests/nsd.nix +++ b/nixos/tests/nsd.nix @@ -15,25 +15,31 @@ in import ./make-test.nix ({ pkgs, ...} : { clientv4 = { lib, nodes, ... }: { imports = [ common ]; networking.nameservers = lib.mkForce [ - nodes.server.config.networking.interfaces.eth1.ipAddress + (lib.head nodes.server.config.networking.interfaces.eth1.ipv4.addresses).address + ]; + networking.interfaces.eth1.ipv4.addresses = [ + { address = "192.168.0.2"; prefixLength = 24; } ]; - networking.interfaces.eth1.ipAddress = "192.168.0.2"; - networking.interfaces.eth1.prefixLength = 24; }; clientv6 = { lib, nodes, ... }: { imports = [ common ]; networking.nameservers = lib.mkForce [ - nodes.server.config.networking.interfaces.eth1.ipv6Address + (lib.head nodes.server.config.networking.interfaces.eth1.ipv6.addresses).address + ]; + networking.interfaces.eth1.ipv4.addresses = [ + { address = "dead:beef::2"; prefixLength = 24; } ]; - networking.interfaces.eth1.ipv6Address = "dead:beef::2"; }; server = { lib, ... }: { imports = [ common ]; - networking.interfaces.eth1.ipAddress = "192.168.0.1"; - networking.interfaces.eth1.prefixLength = 24; - networking.interfaces.eth1.ipv6Address = "dead:beef::1"; + networking.interfaces.eth1.ipv4.addresses = [ + { address = "192.168.0.1"; prefixLength = 24; } + ]; + networking.interfaces.eth1.ipv6.addresses = [ + { address = "dead:beef::1"; prefixLength = 64; } + ]; services.nsd.enable = true; services.nsd.interfaces = lib.mkForce []; services.nsd.zones."example.com.".data = '' diff --git a/nixos/tests/quagga.nix b/nixos/tests/quagga.nix index b9644b4768c..613180942c4 100644 --- a/nixos/tests/quagga.nix +++ b/nixos/tests/quagga.nix @@ -8,7 +8,7 @@ import ./make-test.nix ({ pkgs, ... }: let - ifAddr = node: iface: (pkgs.lib.head node.config.networking.interfaces.${iface}.ip4).address; + ifAddr = node: iface: (pkgs.lib.head node.config.networking.interfaces.${iface}.ipv4.addresses).address; ospfConf = '' interface eth2 diff --git a/pkgs/applications/audio/sayonara/default.nix b/pkgs/applications/audio/sayonara/default.nix new file mode 100644 index 00000000000..1bf1a8b2c49 --- /dev/null +++ b/pkgs/applications/audio/sayonara/default.nix @@ -0,0 +1,45 @@ +{ stdenv, fetchurl, cmake, qt5, zlib, taglib, pkgconfig, pcre, gst_all_1 }: + +let + version = "1.0.0-git5-20180115"; +in +stdenv.mkDerivation { + name = "sayonara-player-${version}"; + + src = fetchurl { + url = "https://sayonara-player.com/sw/sayonara-player-${version}.tar.gz"; + sha256 = "1fl7zplnrrvbv1xm4g348bpd46jj39jvbm808hyjjq92i64wqg37"; + }; + + nativeBuildInputs = [ cmake pkgconfig ]; + buildInputs = with qt5; with gst_all_1; + [ gstreamer gst-plugins-base gst-plugins-good gst-plugins-ugly + pcre qtbase qttools taglib zlib + ]; + + # CMake Error at src/GUI/Resources/Icons/cmake_install.cmake:49 (file): + # file cannot create directory: /usr/share/icons. Maybe need administrative + # privileges. + # Call Stack (most recent call first): + # src/GUI/Resources/cmake_install.cmake:50 (include) + # src/GUI/cmake_install.cmake:50 (include) + # src/cmake_install.cmake:59 (include) + # cmake_install.cmake:42 (include) + postPatch = '' + substituteInPlace src/GUI/Resources/Icons/CMakeLists.txt \ + --replace "/usr/share" "$out/share" + ''; + + # [ 65%] Building CXX object src/Components/Engine/CMakeFiles/say_comp_engine.dir/AbstractPipeline.cpp.o + # /tmp/nix-build-sayonara-player-1.0.0-git5-20180115.drv-0/sayonara-player/src/Components/Engine/AbstractPipeline.cpp:28:32: fatal error: gst/app/gstappsink.h: No such file or directory + # #include + NIX_CFLAGS_COMPILE = "-I${gst_all_1.gst-plugins-base.dev}/include/gstreamer-1.0"; + + meta = with stdenv.lib; + { description = "Sayonara music player"; + homepage = https://sayonara-player.com/; + license = licenses.gpl3; + platforms = qt5.qtbase.meta.platforms; + maintainers = [ maintainers.deepfire ]; + }; +} diff --git a/pkgs/applications/misc/jekyll/Gemfile b/pkgs/applications/misc/jekyll/Gemfile deleted file mode 100644 index 97ebb9705bd..00000000000 --- a/pkgs/applications/misc/jekyll/Gemfile +++ /dev/null @@ -1,7 +0,0 @@ -source 'https://rubygems.org' -gem 'jekyll' -gem 'jekyll-feed' -gem 'jekyll-paginate' -gem 'rdiscount' -gem 'RedCloth' -gem 'minima' diff --git a/pkgs/applications/misc/jekyll/Gemfile.lock b/pkgs/applications/misc/jekyll/Gemfile.lock deleted file mode 100644 index da4be83382f..00000000000 --- a/pkgs/applications/misc/jekyll/Gemfile.lock +++ /dev/null @@ -1,59 +0,0 @@ -GEM - remote: https://rubygems.org/ - specs: - RedCloth (4.3.2) - addressable (2.5.0) - public_suffix (~> 2.0, >= 2.0.2) - colorator (1.1.0) - ffi (1.9.18) - forwardable-extended (2.6.0) - jekyll (3.4.1) - addressable (~> 2.4) - colorator (~> 1.0) - jekyll-sass-converter (~> 1.0) - jekyll-watch (~> 1.1) - kramdown (~> 1.3) - liquid (~> 3.0) - mercenary (~> 0.3.3) - pathutil (~> 0.9) - rouge (~> 1.7) - safe_yaml (~> 1.0) - jekyll-feed (0.9.1) - jekyll (~> 3.3) - jekyll-paginate (1.1.0) - jekyll-sass-converter (1.5.0) - sass (~> 3.4) - jekyll-watch (1.5.0) - listen (~> 3.0, < 3.1) - kramdown (1.13.2) - liquid (3.0.6) - listen (3.0.8) - rb-fsevent (~> 0.9, >= 0.9.4) - rb-inotify (~> 0.9, >= 0.9.7) - mercenary (0.3.6) - minima (2.1.0) - jekyll (~> 3.3) - pathutil (0.14.0) - forwardable-extended (~> 2.6) - public_suffix (2.0.5) - rb-fsevent (0.9.8) - rb-inotify (0.9.8) - ffi (>= 0.5.0) - rdiscount (2.2.0.1) - rouge (1.11.1) - safe_yaml (1.0.4) - sass (3.4.23) - -PLATFORMS - ruby - -DEPENDENCIES - RedCloth - jekyll - jekyll-feed - jekyll-paginate - minima - rdiscount - -BUNDLED WITH - 1.14.4 diff --git a/pkgs/applications/misc/jekyll/basic/Gemfile b/pkgs/applications/misc/jekyll/basic/Gemfile new file mode 100644 index 00000000000..2d3446a8113 --- /dev/null +++ b/pkgs/applications/misc/jekyll/basic/Gemfile @@ -0,0 +1,10 @@ +source "https://rubygems.org" +gem "jekyll" +# jekyll alone might be enough for most use-cases +gem "rouge" +gem "activesupport", "~> 4.2" +gem "jekyll-avatar" +gem "jekyll-mentions" +gem "jekyll-seo-tag" +gem "jekyll-sitemap" +gem "jemoji" diff --git a/pkgs/applications/misc/jekyll/basic/Gemfile.lock b/pkgs/applications/misc/jekyll/basic/Gemfile.lock new file mode 100644 index 00000000000..972403a4754 --- /dev/null +++ b/pkgs/applications/misc/jekyll/basic/Gemfile.lock @@ -0,0 +1,101 @@ +GEM + remote: https://rubygems.org/ + specs: + activesupport (4.2.10) + i18n (~> 0.7) + minitest (~> 5.1) + thread_safe (~> 0.3, >= 0.3.4) + tzinfo (~> 1.1) + addressable (2.5.2) + public_suffix (>= 2.0.2, < 4.0) + colorator (1.1.0) + concurrent-ruby (1.0.5) + em-websocket (0.5.1) + eventmachine (>= 0.12.9) + http_parser.rb (~> 0.6.0) + eventmachine (1.2.5) + ffi (1.9.21) + forwardable-extended (2.6.0) + gemoji (3.0.0) + html-pipeline (2.7.1) + activesupport (>= 2) + nokogiri (>= 1.4) + http_parser.rb (0.6.0) + i18n (0.9.5) + concurrent-ruby (~> 1.0) + jekyll (3.7.2) + addressable (~> 2.4) + colorator (~> 1.0) + em-websocket (~> 0.5) + i18n (~> 0.7) + jekyll-sass-converter (~> 1.0) + jekyll-watch (~> 2.0) + kramdown (~> 1.14) + liquid (~> 4.0) + mercenary (~> 0.3.3) + pathutil (~> 0.9) + rouge (>= 1.7, < 4) + safe_yaml (~> 1.0) + jekyll-avatar (0.5.0) + jekyll (~> 3.0) + jekyll-mentions (1.2.0) + activesupport (~> 4.0) + html-pipeline (~> 2.3) + jekyll (~> 3.0) + jekyll-sass-converter (1.5.2) + sass (~> 3.4) + jekyll-seo-tag (2.4.0) + jekyll (~> 3.3) + jekyll-sitemap (1.2.0) + jekyll (~> 3.3) + jekyll-watch (2.0.0) + listen (~> 3.0) + jemoji (0.9.0) + activesupport (~> 4.0, >= 4.2.9) + gemoji (~> 3.0) + html-pipeline (~> 2.2) + jekyll (~> 3.0) + kramdown (1.16.2) + liquid (4.0.0) + listen (3.1.5) + rb-fsevent (~> 0.9, >= 0.9.4) + rb-inotify (~> 0.9, >= 0.9.7) + ruby_dep (~> 1.2) + mercenary (0.3.6) + mini_portile2 (2.3.0) + minitest (5.11.3) + nokogiri (1.8.2) + mini_portile2 (~> 2.3.0) + pathutil (0.16.1) + forwardable-extended (~> 2.6) + public_suffix (3.0.2) + rb-fsevent (0.10.2) + rb-inotify (0.9.10) + ffi (>= 0.5.0, < 2) + rouge (3.1.1) + ruby_dep (1.5.0) + safe_yaml (1.0.4) + sass (3.5.5) + sass-listen (~> 4.0.0) + sass-listen (4.0.0) + rb-fsevent (~> 0.9, >= 0.9.4) + rb-inotify (~> 0.9, >= 0.9.7) + thread_safe (0.3.6) + tzinfo (1.2.5) + thread_safe (~> 0.1) + +PLATFORMS + ruby + +DEPENDENCIES + activesupport (~> 4.2) + jekyll + jekyll-avatar + jekyll-mentions + jekyll-seo-tag + jekyll-sitemap + jemoji + rouge + +BUNDLED WITH + 1.14.6 diff --git a/pkgs/applications/misc/jekyll/basic/gemset.nix b/pkgs/applications/misc/jekyll/basic/gemset.nix new file mode 100644 index 00000000000..32e90b07a26 --- /dev/null +++ b/pkgs/applications/misc/jekyll/basic/gemset.nix @@ -0,0 +1,326 @@ +{ + activesupport = { + dependencies = ["i18n" "minitest" "thread_safe" "tzinfo"]; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0s12j8vl8vrxfngkdlz9g8bpz9akq1z42d57mx5r537b2pji8nr7"; + type = "gem"; + }; + version = "4.2.10"; + }; + addressable = { + dependencies = ["public_suffix"]; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0viqszpkggqi8hq87pqp0xykhvz60g99nwmkwsb0v45kc2liwxvk"; + type = "gem"; + }; + version = "2.5.2"; + }; + colorator = { + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0f7wvpam948cglrciyqd798gdc6z3cfijciavd0dfixgaypmvy72"; + type = "gem"; + }; + version = "1.1.0"; + }; + concurrent-ruby = { + source = { + remotes = ["https://rubygems.org"]; + sha256 = "183lszf5gx84kcpb779v6a2y0mx9sssy8dgppng1z9a505nj1qcf"; + type = "gem"; + }; + version = "1.0.5"; + }; + em-websocket = { + dependencies = ["eventmachine" "http_parser.rb"]; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1bsw8vjz0z267j40nhbmrvfz7dvacq4p0pagvyp17jif6mj6v7n3"; + type = "gem"; + }; + version = "0.5.1"; + }; + eventmachine = { + source = { + remotes = ["https://rubygems.org"]; + sha256 = "075hdw0fgzldgss3xaqm2dk545736khcvv1fmzbf1sgdlkyh1v8z"; + type = "gem"; + }; + version = "1.2.5"; + }; + ffi = { + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0c2dl10pi6a30kcvx2s6p2v1wb4kbm48iv38kmz2ff600nirhpb8"; + type = "gem"; + }; + version = "1.9.21"; + }; + forwardable-extended = { + source = { + remotes = ["https://rubygems.org"]; + sha256 = "15zcqfxfvsnprwm8agia85x64vjzr2w0xn9vxfnxzgcv8s699v0v"; + type = "gem"; + }; + version = "2.6.0"; + }; + gemoji = { + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1h85qpn2xbmsn8ssf2fqzlqg181j000m5z4l3g26r7vblncg162d"; + type = "gem"; + }; + version = "3.0.0"; + }; + html-pipeline = { + dependencies = ["activesupport" "nokogiri"]; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0hkx70z9ijgnncmrna9qdh9ajn9m7v146k91j257lrzyq2f6jdjd"; + type = "gem"; + }; + version = "2.7.1"; + }; + "http_parser.rb" = { + source = { + remotes = ["https://rubygems.org"]; + sha256 = "15nidriy0v5yqfjsgsra51wmknxci2n2grliz78sf9pga3n0l7gi"; + type = "gem"; + }; + version = "0.6.0"; + }; + i18n = { + dependencies = ["concurrent-ruby"]; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "038qvz7kd3cfxk8bvagqhakx68pfbnmghpdkx7573wbf0maqp9a3"; + type = "gem"; + }; + version = "0.9.5"; + }; + jekyll = { + dependencies = ["addressable" "colorator" "em-websocket" "i18n" "jekyll-sass-converter" "jekyll-watch" "kramdown" "liquid" "mercenary" "pathutil" "rouge" "safe_yaml"]; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "05f61rqwz1isci7by34zyz38ah2rv5b8i5h618cxcl97hwqps8n2"; + type = "gem"; + }; + version = "3.7.2"; + }; + jekyll-avatar = { + dependencies = ["jekyll"]; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0y2w7pnahkm3ddxrq589wv1w53ay7p1pvfs6khcmh6wq85r6wpsf"; + type = "gem"; + }; + version = "0.5.0"; + }; + jekyll-mentions = { + dependencies = ["activesupport" "html-pipeline" "jekyll"]; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "00nqm1ng4iiibmv4vx0ayzq7fqm2sm1af98r4ykvld6asqj5qkyd"; + type = "gem"; + }; + version = "1.2.0"; + }; + jekyll-sass-converter = { + dependencies = ["sass"]; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "008ikh5fk0n6ri54mylcl8jn0mq8p2nfyfqif2q3pp0lwilkcxsk"; + type = "gem"; + }; + version = "1.5.2"; + }; + jekyll-seo-tag = { + dependencies = ["jekyll"]; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0f9b2mvmx57zj49afb3x8cmzdmb1kh4rbpbv3v7w5bh47g2c9big"; + type = "gem"; + }; + version = "2.4.0"; + }; + jekyll-sitemap = { + dependencies = ["jekyll"]; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0xy93ysl1q8r4xhbnffycvsslja0dskh2z2pl1jnykwsy27dc89n"; + type = "gem"; + }; + version = "1.2.0"; + }; + jekyll-watch = { + dependencies = ["listen"]; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0m7scvj3ki8bmyx5v8pzibpg6my10nycnc28lip98dskf8iakprp"; + type = "gem"; + }; + version = "2.0.0"; + }; + jemoji = { + dependencies = ["activesupport" "gemoji" "html-pipeline" "jekyll"]; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0acmi7mgr844dmzgfi9flcqkkb0jh5l21h579cidxwf1409w588b"; + type = "gem"; + }; + version = "0.9.0"; + }; + kramdown = { + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0mkrqpp01rrfn3rx6wwsjizyqmafp0vgg8ja1dvbjs185r5zw3za"; + type = "gem"; + }; + version = "1.16.2"; + }; + liquid = { + source = { + remotes = ["https://rubygems.org"]; + sha256 = "17fa0jgwm9a935fyvzy8bysz7j5n1vf1x2wzqkdfd5k08dbw3x2y"; + type = "gem"; + }; + version = "4.0.0"; + }; + listen = { + dependencies = ["rb-fsevent" "rb-inotify" "ruby_dep"]; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "01v5mrnfqm6sgm8xn2v5swxsn1wlmq7rzh2i48d4jzjsc7qvb6mx"; + type = "gem"; + }; + version = "3.1.5"; + }; + mercenary = { + source = { + remotes = ["https://rubygems.org"]; + sha256 = "10la0xw82dh5mqab8bl0dk21zld63cqxb1g16fk8cb39ylc4n21a"; + type = "gem"; + }; + version = "0.3.6"; + }; + mini_portile2 = { + source = { + remotes = ["https://rubygems.org"]; + sha256 = "13d32jjadpjj6d2wdhkfpsmy68zjx90p49bgf8f7nkpz86r1fr11"; + type = "gem"; + }; + version = "2.3.0"; + }; + minitest = { + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0icglrhghgwdlnzzp4jf76b0mbc71s80njn5afyfjn4wqji8mqbq"; + type = "gem"; + }; + version = "5.11.3"; + }; + nokogiri = { + dependencies = ["mini_portile2"]; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "05fm3xh462glvs0rwnfmc1spmgl4ljg2giifynbmwwqvl42zaaiq"; + type = "gem"; + }; + version = "1.8.2"; + }; + pathutil = { + dependencies = ["forwardable-extended"]; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0wc18ms1rzi44lpjychyw2a96jcmgxqdvy2949r4vvb5f4p0lgvz"; + type = "gem"; + }; + version = "0.16.1"; + }; + public_suffix = { + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1x5h1dh1i3gwc01jbg01rly2g6a1qwhynb1s8a30ic507z1nh09s"; + type = "gem"; + }; + version = "3.0.2"; + }; + rb-fsevent = { + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1fbpmjypwxkb8r7y1kmhmyp6gawa4byw0yb3jc3dn9ly4ld9lizf"; + type = "gem"; + }; + version = "0.10.2"; + }; + rb-inotify = { + dependencies = ["ffi"]; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0yfsgw5n7pkpyky6a9wkf1g9jafxb0ja7gz0qw0y14fd2jnzfh71"; + type = "gem"; + }; + version = "0.9.10"; + }; + rouge = { + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1sfhy0xxqjnzqa7qxmpz1bmy0mzcr55qyvi410gsb6d6i4ialbw3"; + type = "gem"; + }; + version = "3.1.1"; + }; + ruby_dep = { + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1c1bkl97i9mkcvkn1jks346ksnvnnp84cs22gwl0vd7radybrgy5"; + type = "gem"; + }; + version = "1.5.0"; + }; + safe_yaml = { + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1hly915584hyi9q9vgd968x2nsi5yag9jyf5kq60lwzi5scr7094"; + type = "gem"; + }; + version = "1.0.4"; + }; + sass = { + dependencies = ["sass-listen"]; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "10401m2xlv6vaxfwzy4xxmk51ddcnkvwi918cw3jkki0qqdl7d8v"; + type = "gem"; + }; + version = "3.5.5"; + }; + sass-listen = { + dependencies = ["rb-fsevent" "rb-inotify"]; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0xw3q46cmahkgyldid5hwyiwacp590zj2vmswlll68ryvmvcp7df"; + type = "gem"; + }; + version = "4.0.0"; + }; + thread_safe = { + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0nmhcgq6cgz44srylra07bmaw99f5271l0dpsvl5f75m44l0gmwy"; + type = "gem"; + }; + version = "0.3.6"; + }; + tzinfo = { + dependencies = ["thread_safe"]; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1fjx9j327xpkkdlxwmkl3a8wqj7i4l4jwlrv3z13mg95z9wl253z"; + type = "gem"; + }; + version = "1.2.5"; + }; +} \ No newline at end of file diff --git a/pkgs/applications/misc/jekyll/default.nix b/pkgs/applications/misc/jekyll/default.nix index ad8b7b262e5..418b4ea466e 100644 --- a/pkgs/applications/misc/jekyll/default.nix +++ b/pkgs/applications/misc/jekyll/default.nix @@ -1,19 +1,34 @@ -{ stdenv, lib, bundlerEnv, ruby }: +{ lib, bundlerEnv, ruby +, withOptionalDependencies ? false +}: bundlerEnv rec { - name = "jekyll-${version}"; + name = pname + "-" + version; + pname = "jekyll"; + version = (import + (if withOptionalDependencies + then ./full/gemset.nix + else ./basic/gemset.nix)) + .jekyll.version; - version = (import gemset).jekyll.version; inherit ruby; - gemfile = ./Gemfile; - lockfile = ./Gemfile.lock; - gemset = ./gemset.nix; + gemdir = if withOptionalDependencies + then ./full + else ./basic; meta = with lib; { - description = "Simple, blog aware, static site generator"; - homepage = https://jekyllrb.com/; + description = "A blog-aware, static site generator, written in Ruby"; + longDescription = '' + Jekyll is a simple, blog-aware, static site generator, written in Ruby. + Think of it like a file-based CMS, without all the complexity. Jekyll + takes your content, renders Markdown and Liquid templates, and spits out a + complete, static website ready to be served by Apache, Nginx or another + web server. Jekyll is the engine behind GitHub Pages, which you can use to + host sites right from your GitHub repositories. + ''; + homepage = https://jekyllrb.com/; license = licenses.mit; - maintainers = with maintainers; [ pesterhazy ]; + maintainers = with maintainers; [ primeos pesterhazy ]; platforms = platforms.unix; }; } diff --git a/pkgs/applications/misc/jekyll/full/Gemfile b/pkgs/applications/misc/jekyll/full/Gemfile new file mode 100644 index 00000000000..41f33c6e9ea --- /dev/null +++ b/pkgs/applications/misc/jekyll/full/Gemfile @@ -0,0 +1,30 @@ +source "https://rubygems.org" +gem "jekyll" +gem "rouge" +gem "activesupport", "~> 4.2" +gem "jekyll-avatar" +gem "jekyll-mentions" +gem "jekyll-seo-tag" +gem "jekyll-sitemap" +gem "jemoji" +# Optional dependencies: +gem "coderay", "~> 1.1.0" +gem "jekyll-coffeescript" +gem "jekyll-docs" +gem "jekyll-feed", "~> 0.9" +gem "jekyll-gist" +gem "jekyll-paginate" +gem "jekyll-redirect-from" +gem "kramdown", "~> 1.14" +gem "mime-types", "~> 3.0" +gem "rdoc", RUBY_VERSION >= "2.2.2" ? "~> 6.0" : "~> 5.1" +gem "tomlrb", "~> 1.2" + +platform :ruby, :mswin, :mingw, :x64_mingw do + gem "classifier-reborn", "~> 2.2.0" + gem "liquid-c", "~> 3.0" + gem "pygments.rb", "~> 1.0" + gem "rdiscount", "~> 2.0" + gem "redcarpet", "~> 3.2", ">= 3.2.3" + gem "yajl-ruby", "~> 1.3.1" +end diff --git a/pkgs/applications/misc/jekyll/full/Gemfile.lock b/pkgs/applications/misc/jekyll/full/Gemfile.lock new file mode 100644 index 00000000000..d070ad66f65 --- /dev/null +++ b/pkgs/applications/misc/jekyll/full/Gemfile.lock @@ -0,0 +1,160 @@ +GEM + remote: https://rubygems.org/ + specs: + activesupport (4.2.10) + i18n (~> 0.7) + minitest (~> 5.1) + thread_safe (~> 0.3, >= 0.3.4) + tzinfo (~> 1.1) + addressable (2.5.2) + public_suffix (>= 2.0.2, < 4.0) + classifier-reborn (2.2.0) + fast-stemmer (~> 1.0) + coderay (1.1.2) + coffee-script (2.4.1) + coffee-script-source + execjs + coffee-script-source (1.11.1) + colorator (1.1.0) + concurrent-ruby (1.0.5) + em-websocket (0.5.1) + eventmachine (>= 0.12.9) + http_parser.rb (~> 0.6.0) + eventmachine (1.2.5) + execjs (2.7.0) + faraday (0.14.0) + multipart-post (>= 1.2, < 3) + fast-stemmer (1.0.2) + ffi (1.9.21) + forwardable-extended (2.6.0) + gemoji (3.0.0) + html-pipeline (2.7.1) + activesupport (>= 2) + nokogiri (>= 1.4) + http_parser.rb (0.6.0) + i18n (0.9.5) + concurrent-ruby (~> 1.0) + jekyll (3.7.2) + addressable (~> 2.4) + colorator (~> 1.0) + em-websocket (~> 0.5) + i18n (~> 0.7) + jekyll-sass-converter (~> 1.0) + jekyll-watch (~> 2.0) + kramdown (~> 1.14) + liquid (~> 4.0) + mercenary (~> 0.3.3) + pathutil (~> 0.9) + rouge (>= 1.7, < 4) + safe_yaml (~> 1.0) + jekyll-avatar (0.5.0) + jekyll (~> 3.0) + jekyll-coffeescript (1.1.1) + coffee-script (~> 2.2) + coffee-script-source (~> 1.11.1) + jekyll-docs (3.7.2) + jekyll (= 3.7.2) + jekyll-feed (0.9.3) + jekyll (~> 3.3) + jekyll-gist (1.5.0) + octokit (~> 4.2) + jekyll-mentions (1.2.0) + activesupport (~> 4.0) + html-pipeline (~> 2.3) + jekyll (~> 3.0) + jekyll-paginate (1.1.0) + jekyll-redirect-from (0.13.0) + jekyll (~> 3.3) + jekyll-sass-converter (1.5.2) + sass (~> 3.4) + jekyll-seo-tag (2.4.0) + jekyll (~> 3.3) + jekyll-sitemap (1.2.0) + jekyll (~> 3.3) + jekyll-watch (2.0.0) + listen (~> 3.0) + jemoji (0.9.0) + activesupport (~> 4.0, >= 4.2.9) + gemoji (~> 3.0) + html-pipeline (~> 2.2) + jekyll (~> 3.0) + kramdown (1.16.2) + liquid (4.0.0) + liquid-c (3.0.0) + liquid (>= 3.0.0) + listen (3.1.5) + rb-fsevent (~> 0.9, >= 0.9.4) + rb-inotify (~> 0.9, >= 0.9.7) + ruby_dep (~> 1.2) + mercenary (0.3.6) + mime-types (3.1) + mime-types-data (~> 3.2015) + mime-types-data (3.2016.0521) + mini_portile2 (2.3.0) + minitest (5.11.3) + multi_json (1.13.1) + multipart-post (2.0.0) + nokogiri (1.8.2) + mini_portile2 (~> 2.3.0) + octokit (4.8.0) + sawyer (~> 0.8.0, >= 0.5.3) + pathutil (0.16.1) + forwardable-extended (~> 2.6) + public_suffix (3.0.2) + pygments.rb (1.2.1) + multi_json (>= 1.0.0) + rb-fsevent (0.10.2) + rb-inotify (0.9.10) + ffi (>= 0.5.0, < 2) + rdiscount (2.2.0.1) + rdoc (6.0.1) + redcarpet (3.4.0) + rouge (3.1.1) + ruby_dep (1.5.0) + safe_yaml (1.0.4) + sass (3.5.5) + sass-listen (~> 4.0.0) + sass-listen (4.0.0) + rb-fsevent (~> 0.9, >= 0.9.4) + rb-inotify (~> 0.9, >= 0.9.7) + sawyer (0.8.1) + addressable (>= 2.3.5, < 2.6) + faraday (~> 0.8, < 1.0) + thread_safe (0.3.6) + tomlrb (1.2.6) + tzinfo (1.2.5) + thread_safe (~> 0.1) + yajl-ruby (1.3.1) + +PLATFORMS + ruby + +DEPENDENCIES + activesupport (~> 4.2) + classifier-reborn (~> 2.2.0) + coderay (~> 1.1.0) + jekyll + jekyll-avatar + jekyll-coffeescript + jekyll-docs + jekyll-feed (~> 0.9) + jekyll-gist + jekyll-mentions + jekyll-paginate + jekyll-redirect-from + jekyll-seo-tag + jekyll-sitemap + jemoji + kramdown (~> 1.14) + liquid-c (~> 3.0) + mime-types (~> 3.0) + pygments.rb (~> 1.0) + rdiscount (~> 2.0) + rdoc (~> 6.0) + redcarpet (~> 3.2, >= 3.2.3) + rouge + tomlrb (~> 1.2) + yajl-ruby (~> 1.3.1) + +BUNDLED WITH + 1.14.6 diff --git a/pkgs/applications/misc/jekyll/full/gemset.nix b/pkgs/applications/misc/jekyll/full/gemset.nix new file mode 100644 index 00000000000..f41acb66191 --- /dev/null +++ b/pkgs/applications/misc/jekyll/full/gemset.nix @@ -0,0 +1,547 @@ +{ + activesupport = { + dependencies = ["i18n" "minitest" "thread_safe" "tzinfo"]; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0s12j8vl8vrxfngkdlz9g8bpz9akq1z42d57mx5r537b2pji8nr7"; + type = "gem"; + }; + version = "4.2.10"; + }; + addressable = { + dependencies = ["public_suffix"]; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0viqszpkggqi8hq87pqp0xykhvz60g99nwmkwsb0v45kc2liwxvk"; + type = "gem"; + }; + version = "2.5.2"; + }; + classifier-reborn = { + dependencies = ["fast-stemmer"]; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "04nxmm5b7j7r0ij9pcpdr7xqpig559gfzrw042ycxcfyav2pv6ij"; + type = "gem"; + }; + version = "2.2.0"; + }; + coderay = { + source = { + remotes = ["https://rubygems.org"]; + sha256 = "15vav4bhcc2x3jmi3izb11l4d9f3xv8hp2fszb7iqmpsccv1pz4y"; + type = "gem"; + }; + version = "1.1.2"; + }; + coffee-script = { + dependencies = ["coffee-script-source" "execjs"]; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0rc7scyk7mnpfxqv5yy4y5q1hx3i7q3ahplcp4bq2g5r24g2izl2"; + type = "gem"; + }; + version = "2.4.1"; + }; + coffee-script-source = { + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0xfshhlz808f8639wc88wgls1mww35sid8rd55vn0a4yqajf4vh9"; + type = "gem"; + }; + version = "1.11.1"; + }; + colorator = { + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0f7wvpam948cglrciyqd798gdc6z3cfijciavd0dfixgaypmvy72"; + type = "gem"; + }; + version = "1.1.0"; + }; + concurrent-ruby = { + source = { + remotes = ["https://rubygems.org"]; + sha256 = "183lszf5gx84kcpb779v6a2y0mx9sssy8dgppng1z9a505nj1qcf"; + type = "gem"; + }; + version = "1.0.5"; + }; + em-websocket = { + dependencies = ["eventmachine" "http_parser.rb"]; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1bsw8vjz0z267j40nhbmrvfz7dvacq4p0pagvyp17jif6mj6v7n3"; + type = "gem"; + }; + version = "0.5.1"; + }; + eventmachine = { + source = { + remotes = ["https://rubygems.org"]; + sha256 = "075hdw0fgzldgss3xaqm2dk545736khcvv1fmzbf1sgdlkyh1v8z"; + type = "gem"; + }; + version = "1.2.5"; + }; + execjs = { + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1yz55sf2nd3l666ms6xr18sm2aggcvmb8qr3v53lr4rir32y1yp1"; + type = "gem"; + }; + version = "2.7.0"; + }; + faraday = { + dependencies = ["multipart-post"]; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1c3x3s8vb5nf7inyfvhdxwa4q3swmnacpxby6pish5fgmhws7zrr"; + type = "gem"; + }; + version = "0.14.0"; + }; + fast-stemmer = { + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0688clyk4xxh3kdb18vi089k90mca8ji5fwaknh3da5wrzcrzanh"; + type = "gem"; + }; + version = "1.0.2"; + }; + ffi = { + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0c2dl10pi6a30kcvx2s6p2v1wb4kbm48iv38kmz2ff600nirhpb8"; + type = "gem"; + }; + version = "1.9.21"; + }; + forwardable-extended = { + source = { + remotes = ["https://rubygems.org"]; + sha256 = "15zcqfxfvsnprwm8agia85x64vjzr2w0xn9vxfnxzgcv8s699v0v"; + type = "gem"; + }; + version = "2.6.0"; + }; + gemoji = { + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1h85qpn2xbmsn8ssf2fqzlqg181j000m5z4l3g26r7vblncg162d"; + type = "gem"; + }; + version = "3.0.0"; + }; + html-pipeline = { + dependencies = ["activesupport" "nokogiri"]; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0hkx70z9ijgnncmrna9qdh9ajn9m7v146k91j257lrzyq2f6jdjd"; + type = "gem"; + }; + version = "2.7.1"; + }; + "http_parser.rb" = { + source = { + remotes = ["https://rubygems.org"]; + sha256 = "15nidriy0v5yqfjsgsra51wmknxci2n2grliz78sf9pga3n0l7gi"; + type = "gem"; + }; + version = "0.6.0"; + }; + i18n = { + dependencies = ["concurrent-ruby"]; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "038qvz7kd3cfxk8bvagqhakx68pfbnmghpdkx7573wbf0maqp9a3"; + type = "gem"; + }; + version = "0.9.5"; + }; + jekyll = { + dependencies = ["addressable" "colorator" "em-websocket" "i18n" "jekyll-sass-converter" "jekyll-watch" "kramdown" "liquid" "mercenary" "pathutil" "rouge" "safe_yaml"]; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "05f61rqwz1isci7by34zyz38ah2rv5b8i5h618cxcl97hwqps8n2"; + type = "gem"; + }; + version = "3.7.2"; + }; + jekyll-avatar = { + dependencies = ["jekyll"]; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0y2w7pnahkm3ddxrq589wv1w53ay7p1pvfs6khcmh6wq85r6wpsf"; + type = "gem"; + }; + version = "0.5.0"; + }; + jekyll-coffeescript = { + dependencies = ["coffee-script" "coffee-script-source"]; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "06qf4j9f6ysjb4bq6gsdaiz2ksmhc5yb484v458ra3s6ybccqvvy"; + type = "gem"; + }; + version = "1.1.1"; + }; + jekyll-docs = { + dependencies = ["jekyll"]; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0dw8pvxr0q02rivc0n0v4w6151zi6s212xwl27iam6pjc8skbg9b"; + type = "gem"; + }; + version = "3.7.2"; + }; + jekyll-feed = { + dependencies = ["jekyll"]; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0kr3kyaq4z3jixn6ay8h16bxxlv6slvvp7nqnl05jdymhkl0bmm9"; + type = "gem"; + }; + version = "0.9.3"; + }; + jekyll-gist = { + dependencies = ["octokit"]; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "03wz9j6yq3552nzf4g71qrdm9pfdgbm68abml9sjjgiaan1n8ns9"; + type = "gem"; + }; + version = "1.5.0"; + }; + jekyll-mentions = { + dependencies = ["activesupport" "html-pipeline" "jekyll"]; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "00nqm1ng4iiibmv4vx0ayzq7fqm2sm1af98r4ykvld6asqj5qkyd"; + type = "gem"; + }; + version = "1.2.0"; + }; + jekyll-paginate = { + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0r7bcs8fq98zldih4787zk5i9w24nz5wa26m84ssja95n3sas2l8"; + type = "gem"; + }; + version = "1.1.0"; + }; + jekyll-redirect-from = { + dependencies = ["jekyll"]; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1crm5xqgv5asbbbaxfgky4ppib5rih59yzpa3yc94gh8b9cjixrj"; + type = "gem"; + }; + version = "0.13.0"; + }; + jekyll-sass-converter = { + dependencies = ["sass"]; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "008ikh5fk0n6ri54mylcl8jn0mq8p2nfyfqif2q3pp0lwilkcxsk"; + type = "gem"; + }; + version = "1.5.2"; + }; + jekyll-seo-tag = { + dependencies = ["jekyll"]; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0f9b2mvmx57zj49afb3x8cmzdmb1kh4rbpbv3v7w5bh47g2c9big"; + type = "gem"; + }; + version = "2.4.0"; + }; + jekyll-sitemap = { + dependencies = ["jekyll"]; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0xy93ysl1q8r4xhbnffycvsslja0dskh2z2pl1jnykwsy27dc89n"; + type = "gem"; + }; + version = "1.2.0"; + }; + jekyll-watch = { + dependencies = ["listen"]; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0m7scvj3ki8bmyx5v8pzibpg6my10nycnc28lip98dskf8iakprp"; + type = "gem"; + }; + version = "2.0.0"; + }; + jemoji = { + dependencies = ["activesupport" "gemoji" "html-pipeline" "jekyll"]; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0acmi7mgr844dmzgfi9flcqkkb0jh5l21h579cidxwf1409w588b"; + type = "gem"; + }; + version = "0.9.0"; + }; + kramdown = { + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0mkrqpp01rrfn3rx6wwsjizyqmafp0vgg8ja1dvbjs185r5zw3za"; + type = "gem"; + }; + version = "1.16.2"; + }; + liquid = { + source = { + remotes = ["https://rubygems.org"]; + sha256 = "17fa0jgwm9a935fyvzy8bysz7j5n1vf1x2wzqkdfd5k08dbw3x2y"; + type = "gem"; + }; + version = "4.0.0"; + }; + liquid-c = { + dependencies = ["liquid"]; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0a5n7q314ma32y7v9a1g6ps60b14zfn2q4nip4j5aknblz51v7gi"; + type = "gem"; + }; + version = "3.0.0"; + }; + listen = { + dependencies = ["rb-fsevent" "rb-inotify" "ruby_dep"]; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "01v5mrnfqm6sgm8xn2v5swxsn1wlmq7rzh2i48d4jzjsc7qvb6mx"; + type = "gem"; + }; + version = "3.1.5"; + }; + mercenary = { + source = { + remotes = ["https://rubygems.org"]; + sha256 = "10la0xw82dh5mqab8bl0dk21zld63cqxb1g16fk8cb39ylc4n21a"; + type = "gem"; + }; + version = "0.3.6"; + }; + mime-types = { + dependencies = ["mime-types-data"]; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0087z9kbnlqhci7fxh9f6il63hj1k02icq2rs0c6cppmqchr753m"; + type = "gem"; + }; + version = "3.1"; + }; + mime-types-data = { + source = { + remotes = ["https://rubygems.org"]; + sha256 = "04my3746hwa4yvbx1ranhfaqkgf6vavi1kyijjnw8w3dy37vqhkm"; + type = "gem"; + }; + version = "3.2016.0521"; + }; + mini_portile2 = { + source = { + remotes = ["https://rubygems.org"]; + sha256 = "13d32jjadpjj6d2wdhkfpsmy68zjx90p49bgf8f7nkpz86r1fr11"; + type = "gem"; + }; + version = "2.3.0"; + }; + minitest = { + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0icglrhghgwdlnzzp4jf76b0mbc71s80njn5afyfjn4wqji8mqbq"; + type = "gem"; + }; + version = "5.11.3"; + }; + multi_json = { + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1rl0qy4inf1mp8mybfk56dfga0mvx97zwpmq5xmiwl5r770171nv"; + type = "gem"; + }; + version = "1.13.1"; + }; + multipart-post = { + source = { + remotes = ["https://rubygems.org"]; + sha256 = "09k0b3cybqilk1gwrwwain95rdypixb2q9w65gd44gfzsd84xi1x"; + type = "gem"; + }; + version = "2.0.0"; + }; + nokogiri = { + dependencies = ["mini_portile2"]; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "05fm3xh462glvs0rwnfmc1spmgl4ljg2giifynbmwwqvl42zaaiq"; + type = "gem"; + }; + version = "1.8.2"; + }; + octokit = { + dependencies = ["sawyer"]; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1hp77svmpxcwnfajb324i1g2b7jazg23fn4ccjr5y3lww0rnj1dg"; + type = "gem"; + }; + version = "4.8.0"; + }; + pathutil = { + dependencies = ["forwardable-extended"]; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0wc18ms1rzi44lpjychyw2a96jcmgxqdvy2949r4vvb5f4p0lgvz"; + type = "gem"; + }; + version = "0.16.1"; + }; + public_suffix = { + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1x5h1dh1i3gwc01jbg01rly2g6a1qwhynb1s8a30ic507z1nh09s"; + type = "gem"; + }; + version = "3.0.2"; + }; + "pygments.rb" = { + dependencies = ["multi_json"]; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0lbvnwvz770ambm4d6lxgc2097rydn5rcc5d6986bnkzyxfqqjnv"; + type = "gem"; + }; + version = "1.2.1"; + }; + rb-fsevent = { + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1fbpmjypwxkb8r7y1kmhmyp6gawa4byw0yb3jc3dn9ly4ld9lizf"; + type = "gem"; + }; + version = "0.10.2"; + }; + rb-inotify = { + dependencies = ["ffi"]; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0yfsgw5n7pkpyky6a9wkf1g9jafxb0ja7gz0qw0y14fd2jnzfh71"; + type = "gem"; + }; + version = "0.9.10"; + }; + rdiscount = { + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1arvk3k06prxasq1djbj065ixar4zl171340g7wr1ww4gj9makx3"; + type = "gem"; + }; + version = "2.2.0.1"; + }; + rdoc = { + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1vzhv04lp76iax258dh47zsxhjg34r9sg76vgikbyfywjzflvfyj"; + type = "gem"; + }; + version = "6.0.1"; + }; + redcarpet = { + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0h9qz2hik4s9knpmbwrzb3jcp3vc5vygp9ya8lcpl7f1l9khmcd7"; + type = "gem"; + }; + version = "3.4.0"; + }; + rouge = { + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1sfhy0xxqjnzqa7qxmpz1bmy0mzcr55qyvi410gsb6d6i4ialbw3"; + type = "gem"; + }; + version = "3.1.1"; + }; + ruby_dep = { + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1c1bkl97i9mkcvkn1jks346ksnvnnp84cs22gwl0vd7radybrgy5"; + type = "gem"; + }; + version = "1.5.0"; + }; + safe_yaml = { + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1hly915584hyi9q9vgd968x2nsi5yag9jyf5kq60lwzi5scr7094"; + type = "gem"; + }; + version = "1.0.4"; + }; + sass = { + dependencies = ["sass-listen"]; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "10401m2xlv6vaxfwzy4xxmk51ddcnkvwi918cw3jkki0qqdl7d8v"; + type = "gem"; + }; + version = "3.5.5"; + }; + sass-listen = { + dependencies = ["rb-fsevent" "rb-inotify"]; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0xw3q46cmahkgyldid5hwyiwacp590zj2vmswlll68ryvmvcp7df"; + type = "gem"; + }; + version = "4.0.0"; + }; + sawyer = { + dependencies = ["addressable" "faraday"]; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0sv1463r7bqzvx4drqdmd36m7rrv6sf1v3c6vswpnq3k6vdw2dvd"; + type = "gem"; + }; + version = "0.8.1"; + }; + thread_safe = { + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0nmhcgq6cgz44srylra07bmaw99f5271l0dpsvl5f75m44l0gmwy"; + type = "gem"; + }; + version = "0.3.6"; + }; + tomlrb = { + source = { + remotes = ["https://rubygems.org"]; + sha256 = "09gh67v8s1pr7c37490sjp782gi4wf9k9cadp4l926h1sp27bcgz"; + type = "gem"; + }; + version = "1.2.6"; + }; + tzinfo = { + dependencies = ["thread_safe"]; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1fjx9j327xpkkdlxwmkl3a8wqj7i4l4jwlrv3z13mg95z9wl253z"; + type = "gem"; + }; + version = "1.2.5"; + }; + yajl-ruby = { + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1rn4kc9fha990yd252wglh6rcyh35cavm1vpyfj8krlcwph09g30"; + type = "gem"; + }; + version = "1.3.1"; + }; +} \ No newline at end of file diff --git a/pkgs/applications/misc/jekyll/gemset.nix b/pkgs/applications/misc/jekyll/gemset.nix deleted file mode 100644 index 5b1a35209ae..00000000000 --- a/pkgs/applications/misc/jekyll/gemset.nix +++ /dev/null @@ -1,183 +0,0 @@ -{ - addressable = { - source = { - remotes = ["https://rubygems.org"]; - sha256 = "1j5r0anj8m4qlf2psnldip4b8ha2bsscv11lpdgnfh4nnchzjnxw"; - type = "gem"; - }; - version = "2.5.0"; - }; - colorator = { - source = { - remotes = ["https://rubygems.org"]; - sha256 = "0f7wvpam948cglrciyqd798gdc6z3cfijciavd0dfixgaypmvy72"; - type = "gem"; - }; - version = "1.1.0"; - }; - ffi = { - source = { - remotes = ["https://rubygems.org"]; - sha256 = "034f52xf7zcqgbvwbl20jwdyjwznvqnwpbaps9nk18v9lgb1dpx0"; - type = "gem"; - }; - version = "1.9.18"; - }; - forwardable-extended = { - source = { - remotes = ["https://rubygems.org"]; - sha256 = "15zcqfxfvsnprwm8agia85x64vjzr2w0xn9vxfnxzgcv8s699v0v"; - type = "gem"; - }; - version = "2.6.0"; - }; - jekyll = { - source = { - remotes = ["https://rubygems.org"]; - sha256 = "0qbnjx7bpshbcam6p9ss2g6gpd3gxz6h4w9yszphj3ip335yhawb"; - type = "gem"; - }; - version = "3.4.1"; - }; - jekyll-feed = { - source = { - remotes = ["https://rubygems.org"]; - sha256 = "1dj62gy1jskkn703mi5h0bkg1psbpkdm2qqdw3bhjfid9358qvay"; - type = "gem"; - }; - version = "0.9.1"; - }; - jekyll-paginate = { - source = { - sha256 = "0r7bcs8fq98zldih4787zk5i9w24nz5wa26m84ssja95n3sas2l8"; - type = "gem"; - }; - version = "1.1.0"; - }; - jekyll-sass-converter = { - source = { - remotes = ["https://rubygems.org"]; - sha256 = "01m921763yfgx1gc33k5ixqz623f4c4azgnpqhgsc2q61fyfk3q1"; - type = "gem"; - }; - version = "1.5.0"; - }; - jekyll-watch = { - source = { - remotes = ["https://rubygems.org"]; - sha256 = "02rg3wi95w2l0bg1igl5k6pza723vn2b2gj975gycz1cpmhdjn6z"; - type = "gem"; - }; - version = "1.5.0"; - }; - kramdown = { - source = { - remotes = ["https://rubygems.org"]; - sha256 = "1isiqc40q44zg57bd6cfnw1a2l0s2j5skw2awn2cz3gcm7wsf49d"; - type = "gem"; - }; - version = "1.13.2"; - }; - liquid = { - source = { - sha256 = "033png37ym4jrjz5bi7zb4ic4yxacwvnllm1xxmrnr4swgyyygc2"; - type = "gem"; - }; - version = "3.0.6"; - }; - listen = { - source = { - remotes = ["https://rubygems.org"]; - sha256 = "1l0y7hbyfiwpvk172r28hsdqsifq1ls39hsfmzi1vy4ll0smd14i"; - type = "gem"; - }; - version = "3.0.8"; - }; - mercenary = { - source = { - remotes = ["https://rubygems.org"]; - sha256 = "10la0xw82dh5mqab8bl0dk21zld63cqxb1g16fk8cb39ylc4n21a"; - type = "gem"; - }; - version = "0.3.6"; - }; - minima = { - source = { - remotes = ["https://rubygems.org"]; - sha256 = "1s7ks9fqfvqx7qicnkrg76wavg9mjas52f7iyhr89lz9mqiy7p39"; - type = "gem"; - }; - version = "2.1.0"; - }; - pathutil = { - source = { - remotes = ["https://rubygems.org"]; - sha256 = "0f444wx6vjd30lkkb2zn1k5a6g33lidrpyy7lmgy66n1gsiipzn7"; - type = "gem"; - }; - version = "0.14.0"; - }; - public_suffix = { - source = { - remotes = ["https://rubygems.org"]; - sha256 = "040jf98jpp6w140ghkhw2hvc1qx41zvywx5gj7r2ylr1148qnj7q"; - type = "gem"; - }; - version = "2.0.5"; - }; - rb-fsevent = { - source = { - remotes = ["https://rubygems.org"]; - sha256 = "1pdiasp9zlr306yld19szapi6kdjk38rpv1hih9x0ry40x6mb63n"; - type = "gem"; - }; - version = "0.9.8"; - }; - rb-inotify = { - source = { - remotes = ["https://rubygems.org"]; - sha256 = "0bq14f3md5nm00kgxgf0r9lcbn0vgbwljgajif0slxcwv622fjg9"; - type = "gem"; - }; - version = "0.9.8"; - }; - rdiscount = { - source = { - remotes = ["https://rubygems.org"]; - sha256 = "1arvk3k06prxasq1djbj065ixar4zl171340g7wr1ww4gj9makx3"; - type = "gem"; - }; - version = "2.2.0.1"; - }; - RedCloth = { - source = { - remotes = ["https://rubygems.org"]; - sha256 = "0m9dv7ya9q93r8x1pg2gi15rxlbck8m178j1fz7r5v6wr1avrrqy"; - type = "gem"; - }; - version = "4.3.2"; - }; - rouge = { - source = { - remotes = ["https://rubygems.org"]; - sha256 = "13amckbdknnc5491ag28y8pqbyfpbzx5n4rlmadxhd3wkrhp92c8"; - type = "gem"; - }; - version = "1.11.1"; - }; - safe_yaml = { - source = { - sha256 = "1hly915584hyi9q9vgd968x2nsi5yag9jyf5kq60lwzi5scr7094"; - type = "gem"; - }; - version = "1.0.4"; - }; - sass = { - source = { - remotes = ["https://rubygems.org"]; - sha256 = "0da4mn3n60cm1ss1pw1rrpa7fxagglxiwcgvz1asf1qgf4mvcwyr"; - type = "gem"; - }; - version = "3.4.23"; - }; -} \ No newline at end of file diff --git a/pkgs/applications/networking/remote/xrdp/default.nix b/pkgs/applications/networking/remote/xrdp/default.nix index b6b1f6542af..ed1abfcba99 100644 --- a/pkgs/applications/networking/remote/xrdp/default.nix +++ b/pkgs/applications/networking/remote/xrdp/default.nix @@ -3,13 +3,13 @@ let xorgxrdp = stdenv.mkDerivation rec { name = "xorgxrdp-${version}"; - version = "0.2.3"; + version = "0.2.5"; src = fetchFromGitHub { owner = "neutrinolabs"; repo = "xorgxrdp"; rev = "v${version}"; - sha256 = "0l1b38j3q9mxyb8ffpdplbqs6rnabj92i8wngrwlkhfh2c88szn1"; + sha256 = "05ix0bvbgpg0l0f6pyxp64a4785yv16dxf522y7k84b0rag4bxr7"; }; nativeBuildInputs = [ pkgconfig autoconf automake which libtool nasm ]; @@ -34,7 +34,7 @@ let }; xrdp = stdenv.mkDerivation rec { - version = "0.9.3"; + version = "0.9.5"; name = "xrdp-${version}"; src = fetchFromGitHub { @@ -42,7 +42,7 @@ let repo = "xrdp"; rev = "refs/heads/runtime-cfg-path-${version}"; # Fixes https://github.com/neutrinolabs/xrdp/issues/609; not a patch on top of the official repo because "xorgxrdp.configureFlags" above includes "xrdp.src" which must be patched already fetchSubmodules = true; - sha256 = "0xqyg3m688fj442zgg9fqmbz7nnzvqpd7a9ki2cwh1hyibacpmz7"; + sha256 = "1sm994dic72zvxgwxw9z6an6050976nlnnn2my42pnzj9l5842d8"; }; nativeBuildInputs = [ pkgconfig autoconf automake which libtool nasm ]; diff --git a/pkgs/build-support/fetchurl/default.nix b/pkgs/build-support/fetchurl/default.nix index 3e47d4a4b68..0bf529caa75 100644 --- a/pkgs/build-support/fetchurl/default.nix +++ b/pkgs/build-support/fetchurl/default.nix @@ -1,4 +1,4 @@ -{ stdenvNoCC, curl }: # Note that `curl' may be `null', in case of the native stdenvNoCC. +{ lib, stdenvNoCC, curl }: # Note that `curl' may be `null', in case of the native stdenvNoCC. let @@ -20,7 +20,7 @@ let # "gnu", etc.). sites = builtins.attrNames mirrors; - impureEnvVars = stdenvNoCC.lib.fetchers.proxyImpureEnvVars ++ [ + impureEnvVars = lib.fetchers.proxyImpureEnvVars ++ [ # This variable allows the user to pass additional options to curl "NIX_CURL_FLAGS" @@ -89,22 +89,28 @@ in , passthru ? {} }: -assert builtins.isList urls; -assert (urls == []) != (url == ""); assert sha512 != "" -> builtins.compareVersions "1.11" builtins.nixVersion <= 0; - let - hasHash = showURLs || (outputHash != "" && outputHashAlgo != "") - || sha1 != "" || sha256 != "" || sha512 != ""; - urls_ = if urls != [] then urls else [url]; + urls_ = + if urls != [] && url == "" then + (if lib.isList urls then urls + else throw "`urls` is not a list") + else if urls == [] && url != "" then [url] + else throw "fetchurl requires either `url` or `urls` to be set"; + + hash_ = + if md5 != "" then throw "fetchurl does not support md5 anymore, please use sha256 or sha512" + else if (outputHash != "" && outputHashAlgo != "") then { inherit outputHashAlgo outputHash; } + else if sha512 != "" then { outputHashAlgo = "sha512"; outputHash = sha512; } + else if sha256 != "" then { outputHashAlgo = "sha256"; outputHash = sha256; } + else if sha1 != "" then { outputHashAlgo = "sha1"; outputHash = sha1; } + else throw "fetchurl requires a hash for fixed-output derivation: ${lib.concatStringsSep ", " urls_}"; in -if md5 != "" then throw "fetchurl does not support md5 anymore, please use sha256 or sha512" -else if (!hasHash) then throw "Specify hash for fetchurl fixed-output derivation: ${stdenvNoCC.lib.concatStringsSep ", " urls_}" -else stdenvNoCC.mkDerivation { +stdenvNoCC.mkDerivation { name = if showURLs then "urls" else if name != "" then name @@ -121,10 +127,7 @@ else stdenvNoCC.mkDerivation { preferHashedMirrors = true; # New-style output content requirements. - outputHashAlgo = if outputHashAlgo != "" then outputHashAlgo else - if sha512 != "" then "sha512" else if sha256 != "" then "sha256" else "sha1"; - outputHash = if outputHash != "" then outputHash else - if sha512 != "" then sha512 else if sha256 != "" then sha256 else sha1; + inherit (hash_) outputHashAlgo outputHash; outputHashMode = if (recursiveHash || executable) then "recursive" else "flat"; diff --git a/pkgs/development/compilers/llvm/4/clang/default.nix b/pkgs/development/compilers/llvm/4/clang/default.nix index 77863ab4f1e..5531fd2ab77 100644 --- a/pkgs/development/compilers/llvm/4/clang/default.nix +++ b/pkgs/development/compilers/llvm/4/clang/default.nix @@ -43,6 +43,8 @@ let # Patch for standalone doc building sed -i '1s,^,find_package(Sphinx REQUIRED)\n,' docs/CMakeLists.txt + '' + stdenv.lib.optionalString stdenv.hostPlatform.isMusl '' + sed -i -e 's/lgcc_s/lgcc_eh/' lib/Driver/Tools.cpp ''; outputs = [ "out" "lib" "python" ]; diff --git a/pkgs/development/compilers/llvm/4/dynamiclibrary-musl.patch b/pkgs/development/compilers/llvm/4/dynamiclibrary-musl.patch new file mode 100644 index 00000000000..d5d7f07b5e1 --- /dev/null +++ b/pkgs/development/compilers/llvm/4/dynamiclibrary-musl.patch @@ -0,0 +1,33 @@ +From d12ecb83d01dcb580dd94f4d57828f33d3eb4c35 Mon Sep 17 00:00:00 2001 +From: Natanael Copa +Date: Thu, 18 Feb 2016 15:33:21 +0100 +Subject: [PATCH 3/3] Fix DynamicLibrary to build with musl libc + +stdin/out/err is part of the libc and not the kernel so we check for the +specific libc that does the unexpected instead of linux. + +This is needed for making it build with musl libc. +--- + lib/Support/DynamicLibrary.cpp | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/lib/Support/DynamicLibrary.cpp b/lib/Support/DynamicLibrary.cpp +index 9a7aeb5..0c1c8f8 100644 +--- a/lib/Support/DynamicLibrary.cpp ++++ b/lib/Support/DynamicLibrary.cpp +@@ -140,10 +140,10 @@ void* DynamicLibrary::SearchForAddressOfSymbol(const char *symbolName) { + #define EXPLICIT_SYMBOL(SYM) \ + if (!strcmp(symbolName, #SYM)) return &SYM + +-// On linux we have a weird situation. The stderr/out/in symbols are both ++// On GNU libc we have a weird situation. The stderr/out/in symbols are both + // macros and global variables because of standards requirements. So, we + // boldly use the EXPLICIT_SYMBOL macro without checking for a #define first. +-#if defined(__linux__) and !defined(__ANDROID__) ++#if defined(__GLIBC__) + { + EXPLICIT_SYMBOL(stderr); + EXPLICIT_SYMBOL(stdout); +-- +2.7.3 + diff --git a/pkgs/development/compilers/llvm/4/libc++/default.nix b/pkgs/development/compilers/llvm/4/libc++/default.nix index db751bcffd4..f28957c3518 100644 --- a/pkgs/development/compilers/llvm/4/libc++/default.nix +++ b/pkgs/development/compilers/llvm/4/libc++/default.nix @@ -1,4 +1,4 @@ -{ lib, stdenv, fetch, cmake, llvm, libcxxabi, fixDarwinDylibNames, version }: +{ lib, stdenv, fetch, cmake, python, llvm, libcxxabi, fixDarwinDylibNames, version }: stdenv.mkDerivation rec { name = "libc++-${version}"; @@ -15,6 +15,9 @@ stdenv.mkDerivation rec { ./pthread_mach_thread_np.patch # glibc 2.26 fix ./xlocale-glibc-2.26.patch + ] ++ stdenv.lib.optionals stdenv.hostPlatform.isMusl [ + ../../libcxx-0001-musl-hacks.patch + ./max_align_t.patch ]; prePatch = '' @@ -24,9 +27,10 @@ stdenv.mkDerivation rec { 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="$LIBCXXABI_INCLUDE_DIR") + '' + lib.optionalString stdenv.hostPlatform.isMusl '' + patchShebangs utils/cat_files.py ''; - - nativeBuildInputs = [ cmake ]; + nativeBuildInputs = [ cmake ] ++ stdenv.lib.optional stdenv.hostPlatform.isMusl python; buildInputs = [ libcxxabi ] ++ lib.optional stdenv.isDarwin fixDarwinDylibNames; @@ -34,7 +38,7 @@ stdenv.mkDerivation rec { "-DLIBCXX_LIBCXXABI_LIB_PATH=${libcxxabi}/lib" "-DLIBCXX_LIBCPPABI_VERSION=2" "-DLIBCXX_CXX_ABI=libcxxabi" - ]; + ] ++ stdenv.lib.optional stdenv.hostPlatform.isMusl "-DLIBCXX_HAS_MUSL_LIBC=1"; enableParallelBuilding = true; diff --git a/pkgs/development/compilers/llvm/4/libc++/max_align_t.patch b/pkgs/development/compilers/llvm/4/libc++/max_align_t.patch new file mode 100644 index 00000000000..060be5b23de --- /dev/null +++ b/pkgs/development/compilers/llvm/4/libc++/max_align_t.patch @@ -0,0 +1,54 @@ +From 917331c88bd2afce0cf0fdbcab55a64541b5bcf0 Mon Sep 17 00:00:00 2001 +From: "David L. Jones" +Date: Fri, 10 Feb 2017 01:27:42 +0000 +Subject: [PATCH] Check for musl-libc's max_align_t in addition to other + variants. + +Summary: +Libcxx will define its own max_align_t when it is not available. However, the +availability checks today only check for Clang's definition and GCC's +definition. In particular, it does not check for musl's definition, which is the +same as GCC's but guarded with a different macro. + +Reviewers: mclow.lists, EricWF + +Reviewed By: EricWF + +Subscribers: chandlerc, cfe-commits + +Differential Revision: https://reviews.llvm.org/D28478 + +git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@294683 91177308-0d34-0410-b5e6-96231b3b80d8 +--- + include/cstddef | 3 ++- + include/stddef.h | 3 ++- + 2 files changed, 4 insertions(+), 2 deletions(-) + +diff --git a/include/cstddef b/include/cstddef +index edd106c00..103898b7d 100644 +--- a/include/cstddef ++++ b/include/cstddef +@@ -48,7 +48,8 @@ _LIBCPP_BEGIN_NAMESPACE_STD + using ::ptrdiff_t; + using ::size_t; + +-#if defined(__CLANG_MAX_ALIGN_T_DEFINED) || defined(_GCC_MAX_ALIGN_T) ++#if defined(__CLANG_MAX_ALIGN_T_DEFINED) || defined(_GCC_MAX_ALIGN_T) || \ ++ defined(__DEFINED_max_align_t) + // Re-use the compiler's max_align_t where possible. + using ::max_align_t; + #else +diff --git a/include/stddef.h b/include/stddef.h +index 8841bbea2..faf8552d8 100644 +--- a/include/stddef.h ++++ b/include/stddef.h +@@ -53,7 +53,8 @@ using std::nullptr_t; + } + + // Re-use the compiler's max_align_t where possible. +-#if !defined(__CLANG_MAX_ALIGN_T_DEFINED) && !defined(_GCC_MAX_ALIGN_T) ++#if !defined(__CLANG_MAX_ALIGN_T_DEFINED) && !defined(_GCC_MAX_ALIGN_T) && \ ++ !defined(__DEFINED_max_align_t) + typedef long double max_align_t; + #endif + diff --git a/pkgs/development/compilers/llvm/4/libc++abi.nix b/pkgs/development/compilers/llvm/4/libc++abi.nix index 6a3d9110136..41eb40e124e 100644 --- a/pkgs/development/compilers/llvm/4/libc++abi.nix +++ b/pkgs/development/compilers/llvm/4/libc++abi.nix @@ -14,6 +14,9 @@ stdenv.mkDerivation { export cmakeFlags="-DLLVM_PATH=$PWD/$(ls -d llvm-*) -DLIBCXXABI_LIBCXX_PATH=$PWD/$(ls -d libcxx-*)" '' + stdenv.lib.optionalString stdenv.isDarwin '' export TRIPLE=x86_64-apple-darwin + '' + stdenv.lib.optionalString stdenv.hostPlatform.isMusl '' + patch -p1 -d $(ls -d libcxx-*) -i ${../libcxx-0001-musl-hacks.patch} + patch -p1 -d $(ls -d libcxx-*) -i ${./libc++/max_align_t.patch} ''; installPhase = if stdenv.isDarwin diff --git a/pkgs/development/compilers/llvm/4/llvm.nix b/pkgs/development/compilers/llvm/4/llvm.nix index ceaa45fe8d7..7fd94316d73 100644 --- a/pkgs/development/compilers/llvm/4/llvm.nix +++ b/pkgs/development/compilers/llvm/4/llvm.nix @@ -80,6 +80,9 @@ in stdenv.mkDerivation (rec { ) '' + stdenv.lib.optionalString stdenv.isAarch64 '' patch -p0 < ${../aarch64.patch} + '' + stdenv.lib.optionalString stdenv.hostPlatform.isMusl '' + patch -p1 -i ${../TLI-musl.patch} + patch -p1 -i ${./dynamiclibrary-musl.patch} ''; # hacky fix: created binaries need to be run before installation @@ -110,6 +113,14 @@ in stdenv.mkDerivation (rec { ++ stdenv.lib.optionals (isDarwin) [ "-DLLVM_ENABLE_LIBCXX=ON" "-DCAN_TARGET_i386=false" + ] + ++ stdenv.lib.optionals stdenv.hostPlatform.isMusl [ + "-DLLVM_HOST_TRIPLE=${stdenv.hostPlatform.config}" + "-DLLVM_DEFAULT_TARGET_TRIPLE=${stdenv.targetPlatform.config}" + "-DTARGET_TRIPLE=${stdenv.targetPlatform.config}" + + "-DCOMPILER_RT_BUILD_SANITIZERS=OFF" + "-DCOMPILER_RT_BUILD_XRAY=OFF" ]; postBuild = '' diff --git a/pkgs/development/compilers/llvm/5/clang/default.nix b/pkgs/development/compilers/llvm/5/clang/default.nix index c8eafce4e39..b5aea54b577 100644 --- a/pkgs/development/compilers/llvm/5/clang/default.nix +++ b/pkgs/development/compilers/llvm/5/clang/default.nix @@ -44,6 +44,8 @@ let # Patch for standalone doc building sed -i '1s,^,find_package(Sphinx REQUIRED)\n,' docs/CMakeLists.txt + '' + stdenv.lib.optionalString stdenv.hostPlatform.isMusl '' + sed -i -e 's/lgcc_s/lgcc_eh/' lib/Driver/ToolChains/*.cpp ''; outputs = [ "out" "lib" "python" ]; diff --git a/pkgs/development/compilers/llvm/5/libc++/default.nix b/pkgs/development/compilers/llvm/5/libc++/default.nix index 6f03e225ad6..9ddeea7ef79 100644 --- a/pkgs/development/compilers/llvm/5/libc++/default.nix +++ b/pkgs/development/compilers/llvm/5/libc++/default.nix @@ -1,4 +1,4 @@ -{ lib, stdenv, fetch, cmake, llvm, libcxxabi, fixDarwinDylibNames, version }: +{ lib, stdenv, fetch, cmake, python, llvm, libcxxabi, fixDarwinDylibNames, version }: stdenv.mkDerivation rec { name = "libc++-${version}"; @@ -10,6 +10,12 @@ stdenv.mkDerivation rec { export LIBCXXABI_INCLUDE_DIR="$PWD/$(ls -d libcxxabi-${version}*)/include" ''; + # on next rebuild, this can be replaced with optionals; for now set to null to avoid + # patches = stdenv.lib.optionals stdenv.hostPlatform.isMusl [ + patches = if stdenv.hostPlatform.isMusl then [ + ../../libcxx-0001-musl-hacks.patch + ] else null; + prePatch = '' substituteInPlace lib/CMakeLists.txt --replace "/usr/lib/libc++" "\''${LIBCXX_LIBCXXABI_LIB_PATH}/libc++" ''; @@ -17,9 +23,10 @@ stdenv.mkDerivation rec { 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="$LIBCXXABI_INCLUDE_DIR") + '' + lib.optionalString stdenv.hostPlatform.isMusl '' + patchShebangs utils/cat_files.py ''; - - nativeBuildInputs = [ cmake ]; + nativeBuildInputs = [ cmake ] ++ stdenv.lib.optional stdenv.hostPlatform.isMusl python; buildInputs = [ libcxxabi ] ++ lib.optional stdenv.isDarwin fixDarwinDylibNames; @@ -27,7 +34,7 @@ stdenv.mkDerivation rec { "-DLIBCXX_LIBCXXABI_LIB_PATH=${libcxxabi}/lib" "-DLIBCXX_LIBCPPABI_VERSION=2" "-DLIBCXX_CXX_ABI=libcxxabi" - ]; + ] ++ stdenv.lib.optional stdenv.hostPlatform.isMusl "-DLIBCXX_HAS_MUSL_LIBC=1"; enableParallelBuilding = true; diff --git a/pkgs/development/compilers/llvm/5/libc++abi.nix b/pkgs/development/compilers/llvm/5/libc++abi.nix index 166f4260291..6d27dcd47b0 100644 --- a/pkgs/development/compilers/llvm/5/libc++abi.nix +++ b/pkgs/development/compilers/llvm/5/libc++abi.nix @@ -14,6 +14,8 @@ stdenv.mkDerivation { export cmakeFlags="-DLLVM_PATH=$PWD/$(ls -d llvm-*) -DLIBCXXABI_LIBCXX_PATH=$PWD/$(ls -d libcxx-*)" '' + stdenv.lib.optionalString stdenv.isDarwin '' export TRIPLE=x86_64-apple-darwin + '' + stdenv.lib.optionalString stdenv.hostPlatform.isMusl '' + patch -p1 -d $(ls -d libcxx-*) -i ${../libcxx-0001-musl-hacks.patch} ''; installPhase = if stdenv.isDarwin diff --git a/pkgs/development/compilers/llvm/5/llvm.nix b/pkgs/development/compilers/llvm/5/llvm.nix index 1067fa886bc..f574eb05f92 100644 --- a/pkgs/development/compilers/llvm/5/llvm.nix +++ b/pkgs/development/compilers/llvm/5/llvm.nix @@ -74,6 +74,11 @@ in stdenv.mkDerivation (rec { patch -p1 -i ${./compiler-rt-codesign.patch} -d projects/compiler-rt '' + stdenv.lib.optionalString stdenv.isAarch64 '' patch -p0 < ${../aarch64.patch} + '' + stdenv.lib.optionalString stdenv.hostPlatform.isMusl '' + patch -p1 -i ${../TLI-musl.patch} + substituteInPlace unittests/Support/CMakeLists.txt \ + --replace "add_subdirectory(DynamicLibrary)" "" + rm unittests/Support/DynamicLibrary/DynamicLibraryTest.cpp ''; # hacky fix: created binaries need to be run before installation @@ -104,6 +109,14 @@ in stdenv.mkDerivation (rec { ++ stdenv.lib.optionals (isDarwin) [ "-DLLVM_ENABLE_LIBCXX=ON" "-DCAN_TARGET_i386=false" + ] + ++ stdenv.lib.optionals stdenv.hostPlatform.isMusl [ + "-DLLVM_HOST_TRIPLE=${stdenv.hostPlatform.config}" + "-DLLVM_DEFAULT_TARGET_TRIPLE=${stdenv.targetPlatform.config}" + "-DTARGET_TRIPLE=${stdenv.targetPlatform.config}" + + "-DCOMPILER_RT_BUILD_SANITIZERS=OFF" + "-DCOMPILER_RT_BUILD_XRAY=OFF" ]; postBuild = '' diff --git a/pkgs/development/compilers/llvm/TLI-musl.patch b/pkgs/development/compilers/llvm/TLI-musl.patch new file mode 100644 index 00000000000..1a690808663 --- /dev/null +++ b/pkgs/development/compilers/llvm/TLI-musl.patch @@ -0,0 +1,35 @@ +From 5c571082fdaf61f6df19d9b7137dc26d71334058 Mon Sep 17 00:00:00 2001 +From: Natanael Copa +Date: Thu, 18 Feb 2016 10:33:04 +0100 +Subject: [PATCH 2/3] Fix build with musl libc + +On musl libc the fopen64 and fopen are the same thing, but for +compatibility they have a `#define fopen64 fopen`. Same applies for +fseek64, fstat64, fstatvfs64, ftello64, lstat64, stat64 and tmpfile64. +--- + include/llvm/Analysis/TargetLibraryInfo.h | 9 +++++++++ + 1 file changed, 9 insertions(+) + +diff --git a/include/llvm/Analysis/TargetLibraryInfo.h b/include/llvm/Analysis/TargetLibraryInfo.h +index 7becdf0..7f14427 100644 +--- a/include/llvm/Analysis/TargetLibraryInfo.h ++++ b/include/llvm/Analysis/TargetLibraryInfo.h +@@ -18,6 +18,15 @@ + #include "llvm/IR/Module.h" + #include "llvm/Pass.h" + ++#undef fopen64 ++#undef fseeko64 ++#undef fstat64 ++#undef fstatvfs64 ++#undef ftello64 ++#undef lstat64 ++#undef stat64 ++#undef tmpfile64 ++ + namespace llvm { + /// VecDesc - Describes a possible vectorization of a function. + /// Function 'VectorFnName' is equivalent to 'ScalarFnName' vectorized +-- +2.7.3 + diff --git a/pkgs/development/compilers/llvm/libcxx-0001-musl-hacks.patch b/pkgs/development/compilers/llvm/libcxx-0001-musl-hacks.patch new file mode 100644 index 00000000000..bcb5ad8cfb8 --- /dev/null +++ b/pkgs/development/compilers/llvm/libcxx-0001-musl-hacks.patch @@ -0,0 +1,39 @@ +From 1c936d7fda3275265e37f93697232a1ed652390f Mon Sep 17 00:00:00 2001 +From: Will Dietz +Date: Sat, 9 Jul 2016 19:22:54 -0500 +Subject: [PATCH] musl fixes/hacks + +Conflicts: + + include/__config + include/locale + src/locale.cpp +--- + include/locale | 4 ++-- + 1 files changed, 2 insertions(+), 2 deletions(-) + +diff --git a/include/locale b/include/locale +index 3d804e8..9b01f5b 100644 +--- a/include/locale ++++ b/include/locale +@@ -695,7 +695,7 @@ __num_get_signed_integral(const char* __a, const char* __a_end, + typename remove_reference::type __save_errno = errno; + errno = 0; + char *__p2; +- long long __ll = strtoll_l(__a, &__p2, __base, _LIBCPP_GET_C_LOCALE); ++ long long __ll = strtoll(__a, &__p2, __base); + typename remove_reference::type __current_errno = errno; + if (__current_errno == 0) + errno = __save_errno; +@@ -735,7 +735,7 @@ __num_get_unsigned_integral(const char* __a, const char* __a_end, + typename remove_reference::type __save_errno = errno; + errno = 0; + char *__p2; +- unsigned long long __ll = strtoull_l(__a, &__p2, __base, _LIBCPP_GET_C_LOCALE); ++ unsigned long long __ll = strtoull(__a, &__p2, __base); + typename remove_reference::type __current_errno = errno; + if (__current_errno == 0) + errno = __save_errno; +-- +1.7.1 + diff --git a/pkgs/development/haskell-modules/configuration-ghc-8.4.x.nix b/pkgs/development/haskell-modules/configuration-ghc-8.4.x.nix index b3990fab761..f276613db0b 100644 --- a/pkgs/development/haskell-modules/configuration-ghc-8.4.x.nix +++ b/pkgs/development/haskell-modules/configuration-ghc-8.4.x.nix @@ -88,12 +88,34 @@ self: super: { ## from the context: a constraints = super.constraints_0_10; + ## Needs bump to a versioned attribute + ## + ## • Could not deduce (Semigroup (IterT m a)) + ## arising from the superclasses of an instance declaration + ## from the context: (Monad m, Monoid a) + free = super.free_5; + + funcmp = overrideCabal super.funcmp_1_9 (drv: { + ## Needs bump to a versioned attribute + ## + ## Needed for (<>) in prelude + ## Setup: Encountered missing dependencies: + ## base >=3 && <4.11 + jailbreak = true; + }); + hspec-core = overrideCabal super.hspec-core_2_4_8 (drv: { ## Needs bump to a versioned attribute ## ## • No instance for (Semigroup Summary) ## arising from the superclasses of an instance declaration ## • In the instance declaration for ‘Monoid Summary’ + ## error: while evaluating the attribute ‘buildInputs’ of the derivation ‘hspec-core-2.4.8’ at /home/deepfire/src/nixpkgs/pkgs/stdenv/generic/make-derivation.nix:148:11: + ## while evaluating the attribute ‘buildInputs’ of the derivation ‘silently-1.2.5’ at /home/deepfire/src/nixpkgs/pkgs/stdenv/generic/make-derivation.nix:148:11: + ## while evaluating the attribute ‘buildInputs’ of the derivation ‘temporary-1.2.1.1’ at /home/deepfire/src/nixpkgs/pkgs/stdenv/generic/make-derivation.nix:148:11: + ## while evaluating the attribute ‘buildInputs’ of the derivation ‘base-compat-0.9.3’ at /home/deepfire/src/nixpkgs/pkgs/stdenv/generic/make-derivation.nix:148:11: + ## while evaluating the attribute ‘propagatedBuildInputs’ of the derivation ‘hspec-2.4.8’ at /home/deepfire/src/nixpkgs/pkgs/stdenv/generic/make-derivation.nix:148:11: + ## infinite recursion encountered, at undefined position doCheck = false; }); @@ -104,105 +126,87 @@ self: super: { ## hspec-discover ==2.4.7 hspec-discover = super.hspec-discover_2_4_8; - ## Needs bump to a versioned attribute - ## - ## • Could not deduce (Semigroup (a :->: b)) - ## arising from the superclasses of an instance declaration - ## from the context: (HasTrie a, Monoid b) - MemoTrie = super.MemoTrie_0_6_9; + lens = overrideCabal super.lens_4_16 (drv: { + ## Needs bump to a versioned attribute + ## + ## • Could not deduce (Apply f) + ## arising from the superclasses of an instance declaration + ## from the context: (Contravariant f, Applicative f) + ## Setup: Encountered missing dependencies: + ## ghc >=7.0 && <8.4 + ## /run/current-system/sw/bin/nix-shell: failed to build all dependencies + doCheck = false; + }); semigroupoids = overrideCabal super.semigroupoids_5_2_2 (drv: { ## Needs bump to a versioned attribute ## ## • Variable not in scope: mappend :: Seq a -> Seq a -> Seq a - ## CABAL-MISSING-DEPS ## Setup: Encountered missing dependencies: ## ghc >=7.0 && <8.4 - ## builder for ‘/nix/store/yklyv4lw4d02316p31x7a2pni1z6gjgk-doctest-0.13.0.drv’ failed with exit code 1 - ## error: build of ‘/nix/store/yklyv4lw4d02316p31x7a2pni1z6gjgk-doctest-0.13.0.drv’ failed + ## /run/current-system/sw/bin/nix-shell: failed to build all dependencies doCheck = false; }); ## Needs bump to a versioned attribute ## - ## • Could not deduce (Semigroup (Traversal f)) + ## • No instance for (Semigroup Builder) ## arising from the superclasses of an instance declaration - ## from the context: Applicative f - tasty = super.tasty_1_0_1; + ## • In the instance declaration for ‘Monoid Builder’ + stringbuilder = super.stringbuilder_0_5_1; + + ## Needs bump to a versioned attribute + ## + ## Module ‘Data.Semigroup’ does not export ‘Monoid(..)’ + ## | + ## 80 | import Data.Semigroup (Semigroup(..), Monoid(..)) + unordered-containers = super.unordered-containers_0_2_9_0; + ## On Hackage: - happy = overrideCabal super.happy (drv: { + tasty = overrideCabal super.tasty (drv: { ## On Hackage, awaiting for import ## - ## Ambiguous occurrence ‘<>’ - ## It could refer to either ‘Prelude.<>’, - ## imported from ‘Prelude’ at src/PrettyGrammar.hs:1:8-20 - version = "1.19.9"; - sha256 = "138xpxdb7x62lpmgmb6b3v3vgdqqvqn4273jaap3mjmc2gla709y"; + ## • No instance for (Semigroup OptionSet) + ## arising from the superclasses of an instance declaration + ## • In the instance declaration for ‘Monoid OptionSet’ + version = "1.0.0.1"; + sha256 = "0ggqffw9kbb6nlq1pplk131qzxndqqzqyf4s2p7576nljx11a7qf"; }); ## Upstreamed - free = overrideCabal super.free (drv: { - ## Upstreamed, awaiting a Hackage release - ## - ## • Could not deduce (Semigroup (IterT m a)) - ## arising from the superclasses of an instance declaration - ## from the context: (Monad m, Monoid a) - src = pkgs.fetchFromGitHub { - owner = "ekmett"; - repo = "free"; - rev = "fcefc71ed302f2eaf60f020046bad392338b3109"; - sha256 = "0mfrd7y97pgqmb2i66jn5xwjpcrgnfcqq8dzkxqgx1b5wjdydq70"; - }; - ## Setup: Encountered missing dependencies: - ## transformers-base <0.5 - ## builder for ‘/nix/store/3yvaqx5qcg1fb3nnyc273fkhgfh73pgv-free-4.12.4.drv’ failed with exit code 1 - ## error: build of ‘/nix/store/3yvaqx5qcg1fb3nnyc273fkhgfh73pgv-free-4.12.4.drv’ failed - libraryHaskellDepends = drv.libraryHaskellDepends ++ [ self.transformers-base ]; - }); - haskell-gi = overrideCabal super.haskell-gi (drv: { ## Upstreamed, awaiting a Hackage release ## ## Setup: Encountered missing dependencies: ## haskell-gi-base ==0.20.* - ## builder for ‘/nix/store/q0qkq2gzmdnkvdz6xl7svv5305chbr4b-haskell-gi-0.20.3.drv’ failed with exit code 1 - ## error: build of ‘/nix/store/q0qkq2gzmdnkvdz6xl7svv5305chbr4b-haskell-gi-0.20.3.drv’ failed src = pkgs.fetchFromGitHub { owner = "haskell-gi"; repo = "haskell-gi"; rev = "30d2e6415c5b57760f8754cd3003eb07483d60e6"; sha256 = "1l3qm97gcjih695hhj80rbpnd72prnc81lg5y373yj8jk9f6ypbr"; }; - ## CABAL-MISSING-DEPS ## Setup: Encountered missing dependencies: ## ghc >=7.0 && <8.4 - ## builder for ‘/nix/store/yklyv4lw4d02316p31x7a2pni1z6gjgk-doctest-0.13.0.drv’ failed with exit code 1 - ## error: build of ‘/nix/store/yklyv4lw4d02316p31x7a2pni1z6gjgk-doctest-0.13.0.drv’ failed + ## /run/current-system/sw/bin/nix-shell: failed to build all dependencies doCheck = false; }); haskell-gi-base = overrideCabal super.haskell-gi-base (drv: { ## Upstreamed, awaiting a Hackage release ## - ## breaks haskell-gi: ## Setup: Encountered missing dependencies: ## haskell-gi-base ==0.21.* + ## cannot build derivation ‘/nix/store/b3d6yr1rzk4hpzg87yk4n5i4321i824f-gi-cairo-1.0.14.drv’: 1 dependencies couldn't be built src = pkgs.fetchFromGitHub { owner = "haskell-gi"; repo = "haskell-gi"; rev = "30d2e6415c5b57760f8754cd3003eb07483d60e6"; sha256 = "1l3qm97gcjih695hhj80rbpnd72prnc81lg5y373yj8jk9f6ypbr"; }; - ## Setup: Encountered missing dependencies: - ## attoparsec ==0.13.*, - ## doctest >=0.8, - ## haskell-gi-base ==0.21.*, - ## pretty-show -any, - ## regex-tdfa >=1.2, prePatch = "cd base; "; }); @@ -220,20 +224,6 @@ self: super: { }; }); - hedgehog = overrideCabal super.hedgehog (drv: { - ## Upstreamed, awaiting a Hackage release - ## - ## /nix/store/78sxg2kvl2klplqfx22s6b42lds7qq23-stdenv/setup: line 99: cd: hedgehog: No such file or directory - src = pkgs.fetchFromGitHub { - owner = "hedgehogqa"; - repo = "haskell-hedgehog"; - rev = "7a4fab73670bc33838f2b5f25eb824ee550079ce"; - sha256 = "1l8maassmklf6wgairk7llxvlbwxngv0dzx0fwnqx6hsb32sms05"; - }; - ## jailbreak-cabal: dieVerbatim: user error (jailbreak-cabal: Error Parsing: file "hedgehog.cabal" doesn't exist. Cannot - prePatch = "cd hedgehog; "; - }); - lambdacube-compiler = overrideCabal super.lambdacube-compiler (drv: { ## Upstreamed, awaiting a Hackage release ## @@ -254,42 +244,17 @@ self: super: { lambdacube-ir = overrideCabal super.lambdacube-ir (drv: { ## Upstreamed, awaiting a Hackage release ## - ## /nix/store/78sxg2kvl2klplqfx22s6b42lds7qq23-stdenv/setup: line 99: cd: lambdacube-ir.haskell: No such file or directory + ## Setup: Encountered missing dependencies: + ## aeson >=0.9 && <0.12, base >=4.8 && <4.10, vector ==0.11.* src = pkgs.fetchFromGitHub { owner = "lambdacube3d"; repo = "lambdacube-ir"; rev = "b86318b510ef59606c5b7c882cad33af52ce257c"; sha256 = "0j4r6b32lcm6jg653xzg9ijxkfjahlb4x026mv5dhs18kvgqhr8x"; }; - ## Setup: No cabal file found. prePatch = "cd lambdacube-ir.haskell; "; }); - lens = overrideCabal super.lens (drv: { - ## Upstreamed, awaiting a Hackage release - ## - ## • Could not deduce (Apply f) - ## arising from the superclasses of an instance declaration - ## from the context: (Contravariant f, Applicative f) - src = pkgs.fetchFromGitHub { - owner = "ekmett"; - repo = "lens"; - rev = "4ad49eaf2448d856f0433fe5a4232f1e8fa87eb0"; - sha256 = "0sd08v6syadplhk5d21yi7qffbjncn8z1bqlwz9nyyb0xja8s8wa"; - }; - ## CABAL-MISSING-DEPS - ## Setup: Encountered missing dependencies: - ## ghc >=7.0 && <8.4 - ## builder for ‘/nix/store/yklyv4lw4d02316p31x7a2pni1z6gjgk-doctest-0.13.0.drv’ failed with exit code 1 - ## error: build of ‘/nix/store/yklyv4lw4d02316p31x7a2pni1z6gjgk-doctest-0.13.0.drv’ failed - doCheck = false; - ## Setup: Encountered missing dependencies: - ## template-haskell >=2.4 && <2.13 - ## builder for ‘/nix/store/fvrc4s96ym33i74y794nap7xai9p69fa-lens-4.15.4.drv’ failed with exit code 1 - ## error: build of ‘/nix/store/fvrc4s96ym33i74y794nap7xai9p69fa-lens-4.15.4.drv’ failed - jailbreak = true; - }); - simple-reflect = overrideCabal super.simple-reflect (drv: { ## Upstreamed, awaiting a Hackage release ## @@ -309,8 +274,6 @@ self: super: { ## ## Setup: Encountered missing dependencies: ## th-desugar ==1.7.* - ## builder for ‘/nix/store/g5jl22kpq8fnrg8ldphxndri759nxwzf-singletons-2.3.1.drv’ failed with exit code 1 - ## error: build of ‘/nix/store/g5jl22kpq8fnrg8ldphxndri759nxwzf-singletons-2.3.1.drv’ failed src = pkgs.fetchFromGitHub { owner = "goldfirere"; repo = "singletons"; @@ -319,20 +282,6 @@ self: super: { }; }); - stringbuilder = overrideCabal super.stringbuilder (drv: { - ## Upstreamed, awaiting a Hackage release - ## - ## • No instance for (Semigroup Builder) - ## arising from the superclasses of an instance declaration - ## • In the instance declaration for ‘Monoid Builder’ - src = pkgs.fetchFromGitHub { - owner = "sol"; - repo = "stringbuilder"; - rev = "4a1b689d3c8a462b28e0d21224b96165f622e6f7"; - sha256 = "0h3nva4mwxkdg7hh7b7a3v561wi1bvmj0pshhd3sl7dy3lpvnrah"; - }; - }); - th-desugar = overrideCabal super.th-desugar (drv: { ## Upstreamed, awaiting a Hackage release ## @@ -347,20 +296,6 @@ self: super: { }; }); - unordered-containers = overrideCabal super.unordered-containers (drv: { - ## Upstreamed, awaiting a Hackage release - ## - ## Module ‘Data.Semigroup’ does not export ‘Monoid(..)’ - ## | - ## 80 | import Data.Semigroup (Semigroup(..), Monoid(..)) - src = pkgs.fetchFromGitHub { - owner = "tibbe"; - repo = "unordered-containers"; - rev = "0a6b84ec103e28b73458f385ef846a7e2d3ea42f"; - sha256 = "128q8k4py2wr1v0gmyvqvzikk6sksl9aqj0lxzf46763lis8x9my"; - }; - }); - websockets = overrideCabal super.websockets (drv: { ## Upstreamed, awaiting a Hackage release ## @@ -412,22 +347,20 @@ self: super: { doCheck = false; ## Setup: Encountered missing dependencies: ## data-or ==1.0.* - ## builder for ‘/nix/store/iw3xsljnygsv9q2jglcv54mqd94fig7n-bytestring-trie-0.2.4.1.drv’ failed with exit code 1 - ## error: build of ‘/nix/store/iw3xsljnygsv9q2jglcv54mqd94fig7n-bytestring-trie-0.2.4.1.drv’ failed libraryHaskellDepends = drv.libraryHaskellDepends ++ [ self.data-or ]; }); gtk2hs-buildtools = overrideCabal super.gtk2hs-buildtools (drv: { ## Unmerged. PR: https://github.com/gtk2hs/gtk2hs/pull/233 ## - ## /nix/store/78sxg2kvl2klplqfx22s6b42lds7qq23-stdenv/setup: line 99: cd: tools: No such file or directory + ## Setup: Encountered missing dependencies: + ## Cabal >=1.24.0.0 && <2.1 src = pkgs.fetchFromGitHub { owner = "deepfire"; repo = "gtk2hs"; rev = "08c68d5afc22dd5761ec2c92ebf49c6d252e545b"; sha256 = "06prn5wqq8x225n9wlbyk60f50jyjj8fm2hf181dyqjpf8wq75xa"; }; - ## Setup: No cabal file found. prePatch = "cd tools; "; }); @@ -503,41 +436,12 @@ self: super: { rev = "4fb50139db45a37493b91973eeaad9885b4c63ca"; sha256 = "0i7pp6cw394m2vbwcqv9z5ngdarp01sabqr1jkkgchxdkkii94nx"; }; - ## mergeIncrementalWithMove :: - ## GCompare k => - ## Incremental t (PatchDMapWithMove k (Event t)) - ## -> Event t (DMap k Identity) - ## currentIncremental :: - ## Patch p => Incremental t p -> Behavior t (PatchTarget p) - ## updatedIncremental :: Patch p => Incremental t p -> Event t p - ## incrementalToDynamic :: - ## Patch p => Incremental t p -> Dynamic t (PatchTarget p) - ## behaviorCoercion :: - ## Coercion a b -> Coercion (Behavior t a) (Behavior t b) - ## eventCoercion :: Coercion a b -> Coercion (Event t a) (Event t b) - ## dynamicCoercion :: - ## Coercion a b -> Coercion (Dynamic t a) (Dynamic t b) - ## mergeIntIncremental :: - ## Incremental t (PatchIntMap (Event t a)) -> Event t (IntMap a) - ## fanInt :: Event t (IntMap a) -> EventSelectorInt t a - ## {-# MINIMAL never, constant, push, pushCheap, pull, merge, fan, - ## switch, coincidence, current, updated, unsafeBuildDynamic, - ## unsafeBuildIncremental, mergeIncremental, mergeIncrementalWithMove, - ## currentIncremental, updatedIncremental, incrementalToDynamic, - ## behaviorCoercion, eventCoercion, dynamicCoercion, - ## mergeIntIncremental, fanInt #-} - ## Matches: - ## [] - ## Call stack: - ## CallStack (from HasCallStack): - ## callStackDoc, called at compiler/utils/Outputable.hs:1150:37 in ghc:Outputable - ## pprPanic, called at utils/haddock/haddock-api/src/Haddock/Interface/Create.hs:1013:16 in main:Haddock.Interface.Create - ## Please report this as a GHC bug: http://www.haskell.org/ghc/reportabug + ## haddock: internal error: internal: extractDecl (ClsInstD) + ## CallStack (from HasCallStack): + ## error, called at utils/haddock/haddock-api/src/Haddock/Interface/Create.hs:1058:16 in main:Haddock.Interface.Create doHaddock = false; ## Setup: Encountered missing dependencies: ## base >=4.7 && <4.11, bifunctors >=5.2 && <5.5 - ## builder for ‘/nix/store/93ka24600m4mipsgn2cq8fwk124q97ca-reflex-0.4.0.1.drv’ failed with exit code 1 - ## error: build of ‘/nix/store/93ka24600m4mipsgn2cq8fwk124q97ca-reflex-0.4.0.1.drv’ failed jailbreak = true; ## Setup: Encountered missing dependencies: ## data-default -any, @@ -562,6 +466,20 @@ self: super: { }; }); + securemem = overrideCabal super.securemem (drv: { + ## Unmerged. PR: https://github.com/vincenthz/hs-securemem/pull/12 + ## + ## • No instance for (Semigroup SecureMem) + ## arising from the superclasses of an instance declaration + ## • In the instance declaration for ‘Monoid SecureMem’ + src = pkgs.fetchFromGitHub { + owner = "shlevy"; + repo = "hs-securemem"; + rev = "6168d90b00bfc6a559d3b9160732343644ef60fb"; + sha256 = "06dhx1z44j5gshpdlsb4aryr3g4was3x4c2sgv1px8j57zrvlypx"; + }; + }); + text-format = overrideCabal super.text-format (drv: { ## Unmerged. PR: https://github.com/bos/text-format/pull/21 ## @@ -596,237 +514,153 @@ self: super: { adjunctions = overrideCabal super.adjunctions (drv: { ## Setup: Encountered missing dependencies: ## free ==4.* - ## builder for ‘/nix/store/64pvqslahgby4jlg9rpz29n8w4njb670-adjunctions-4.3.drv’ failed with exit code 1 - ## error: build of ‘/nix/store/64pvqslahgby4jlg9rpz29n8w4njb670-adjunctions-4.3.drv’ failed jailbreak = true; }); async = overrideCabal super.async (drv: { ## Setup: Encountered missing dependencies: ## base >=4.3 && <4.11 - ## builder for ‘/nix/store/2xf491hgsmckz2akrn765kvvy2k8crbd-async-2.1.1.1.drv’ failed with exit code 1 - ## error: build of ‘/nix/store/2xf491hgsmckz2akrn765kvvy2k8crbd-async-2.1.1.1.drv’ failed jailbreak = true; }); bifunctors = overrideCabal super.bifunctors (drv: { ## Setup: Encountered missing dependencies: ## template-haskell >=2.4 && <2.13 - ## builder for ‘/nix/store/dy1hzdy14pz96cvx37yggbv6a88sgxq4-bifunctors-5.5.drv’ failed with exit code 1 - ## error: build of ‘/nix/store/dy1hzdy14pz96cvx37yggbv6a88sgxq4-bifunctors-5.5.drv’ failed jailbreak = true; }); bindings-GLFW = overrideCabal super.bindings-GLFW (drv: { ## Setup: Encountered missing dependencies: ## template-haskell >=2.10 && <2.13 - ## builder for ‘/nix/store/ykc786r2bby5kkbpqjg0y10wb9jhmsa9-bindings-GLFW-3.1.2.3.drv’ failed with exit code 1 - ## error: build of ‘/nix/store/ykc786r2bby5kkbpqjg0y10wb9jhmsa9-bindings-GLFW-3.1.2.3.drv’ failed jailbreak = true; }); bytes = overrideCabal super.bytes (drv: { - ## CABAL-MISSING-DEPS ## Setup: Encountered missing dependencies: ## ghc >=7.0 && <8.4 - ## builder for ‘/nix/store/yklyv4lw4d02316p31x7a2pni1z6gjgk-doctest-0.13.0.drv’ failed with exit code 1 - ## error: build of ‘/nix/store/yklyv4lw4d02316p31x7a2pni1z6gjgk-doctest-0.13.0.drv’ failed + ## /run/current-system/sw/bin/nix-shell: failed to build all dependencies doCheck = false; }); cabal-doctest = overrideCabal super.cabal-doctest (drv: { ## Setup: Encountered missing dependencies: ## Cabal >=1.10 && <2.1, base >=4.3 && <4.11 - ## builder for ‘/nix/store/zy3l0ll0r9dq29lgxajv12rz1jzjdkrn-cabal-doctest-1.0.5.drv’ failed with exit code 1 - ## error: build of ‘/nix/store/zy3l0ll0r9dq29lgxajv12rz1jzjdkrn-cabal-doctest-1.0.5.drv’ failed jailbreak = true; }); ChasingBottoms = overrideCabal super.ChasingBottoms (drv: { ## Setup: Encountered missing dependencies: ## base >=4.2 && <4.11 - ## builder for ‘/nix/store/wsyjjf4x6pmx84kxnjaka7zwakyrca03-ChasingBottoms-1.3.1.3.drv’ failed with exit code 1 - ## error: build of ‘/nix/store/wsyjjf4x6pmx84kxnjaka7zwakyrca03-ChasingBottoms-1.3.1.3.drv’ failed jailbreak = true; }); comonad = overrideCabal super.comonad (drv: { - ## CABAL-MISSING-DEPS ## Setup: Encountered missing dependencies: ## ghc >=7.0 && <8.4 - ## builder for ‘/nix/store/yklyv4lw4d02316p31x7a2pni1z6gjgk-doctest-0.13.0.drv’ failed with exit code 1 - ## error: build of ‘/nix/store/yklyv4lw4d02316p31x7a2pni1z6gjgk-doctest-0.13.0.drv’ failed + ## /run/current-system/sw/bin/nix-shell: failed to build all dependencies doCheck = false; }); + deepseq-generics = overrideCabal super.deepseq-generics (drv: { + ## https://github.com/haskell-hvr/deepseq-generics/pull/4 + jailbreak = true; + }); + distributive = overrideCabal super.distributive (drv: { - ## CABAL-MISSING-DEPS ## Setup: Encountered missing dependencies: ## ghc >=7.0 && <8.4 - ## builder for ‘/nix/store/yklyv4lw4d02316p31x7a2pni1z6gjgk-doctest-0.13.0.drv’ failed with exit code 1 - ## error: build of ‘/nix/store/yklyv4lw4d02316p31x7a2pni1z6gjgk-doctest-0.13.0.drv’ failed + ## /run/current-system/sw/bin/nix-shell: failed to build all dependencies doCheck = false; }); exception-transformers = overrideCabal super.exception-transformers (drv: { ## Setup: Encountered missing dependencies: ## HUnit >=1.2 && <1.6 - ## builder for ‘/nix/store/qs4g7lzq1ixcgg5rw4xb5545g7r34md8-exception-transformers-0.4.0.5.drv’ failed with exit code 1 - ## error: build of ‘/nix/store/qs4g7lzq1ixcgg5rw4xb5545g7r34md8-exception-transformers-0.4.0.5.drv’ failed jailbreak = true; }); hashable = overrideCabal super.hashable (drv: { ## Setup: Encountered missing dependencies: ## base >=4.4 && <4.11 - ## builder for ‘/nix/store/4qlxxypfhbwcv227cmsja1asgqnq37gf-hashable-1.2.6.1.drv’ failed with exit code 1 - ## error: build of ‘/nix/store/4qlxxypfhbwcv227cmsja1asgqnq37gf-hashable-1.2.6.1.drv’ failed jailbreak = true; }); hashable-time = overrideCabal super.hashable-time (drv: { ## Setup: Encountered missing dependencies: ## base >=4.7 && <4.11 - ## builder for ‘/nix/store/38dllcgxpmkd2fgvs6wd7ji86py0wbnh-hashable-time-0.2.0.1.drv’ failed with exit code 1 - ## error: build of ‘/nix/store/38dllcgxpmkd2fgvs6wd7ji86py0wbnh-hashable-time-0.2.0.1.drv’ failed jailbreak = true; }); haskell-src-meta = overrideCabal super.haskell-src-meta (drv: { ## Setup: Encountered missing dependencies: ## base >=4.6 && <4.11, template-haskell >=2.8 && <2.13 - ## builder for ‘/nix/store/g5wkb14sydvyv484agvaa7hxl84a0wr9-haskell-src-meta-0.8.0.2.drv’ failed with exit code 1 - ## error: build of ‘/nix/store/g5wkb14sydvyv484agvaa7hxl84a0wr9-haskell-src-meta-0.8.0.2.drv’ failed jailbreak = true; }); - hspec-meta = overrideCabal super.hspec-meta (drv: { - ## Linking dist/build/hspec-meta-discover/hspec-meta-discover ... - ## running tests - ## Package has no test suites. - ## haddockPhase - ## Running hscolour for hspec-meta-2.4.6... - ## Preprocessing library for hspec-meta-2.4.6.. - ## Preprocessing executable 'hspec-meta-discover' for hspec-meta-2.4.6.. - ## Preprocessing library for hspec-meta-2.4.6.. - ## Running Haddock on library for hspec-meta-2.4.6.. - ## Haddock coverage: - ## haddock: panic! (the 'impossible' happened) - ## (GHC version 8.4.20180122 for x86_64-unknown-linux): - ## extractDecl - ## Ambiguous decl for Arg in class: - ## class Example e where - ## type Arg e - ## type Arg e = () - ## evaluateExample :: - ## e - ## -> Params - ## -> (ActionWith (Arg e) -> IO ()) -> ProgressCallback -> IO Result - ## {-# MINIMAL evaluateExample #-} - ## Matches: - ## [] - ## Call stack: - ## CallStack (from HasCallStack): - ## callStackDoc, called at compiler/utils/Outputable.hs:1150:37 in ghc:Outputable - ## pprPanic, called at utils/haddock/haddock-api/src/Haddock/Interface/Create.hs:1013:16 in main:Haddock.Interface.Create - ## Please report this as a GHC bug: http://www.haskell.org/ghc/reportabug - doHaddock = false; - }); - integer-logarithms = overrideCabal super.integer-logarithms (drv: { ## Setup: Encountered missing dependencies: ## base >=4.3 && <4.11 - ## builder for ‘/nix/store/zdiicv0jmjsw6bprs8wxxaq5m0z0a75f-integer-logarithms-1.0.2.drv’ failed with exit code 1 - ## error: build of ‘/nix/store/zdiicv0jmjsw6bprs8wxxaq5m0z0a75f-integer-logarithms-1.0.2.drv’ failed jailbreak = true; }); kan-extensions = overrideCabal super.kan-extensions (drv: { ## Setup: Encountered missing dependencies: ## free ==4.* - ## builder for ‘/nix/store/kvnlcj6zdqi2d2yq988l784hswjwkk4c-kan-extensions-5.0.2.drv’ failed with exit code 1 - ## error: build of ‘/nix/store/kvnlcj6zdqi2d2yq988l784hswjwkk4c-kan-extensions-5.0.2.drv’ failed jailbreak = true; }); keys = overrideCabal super.keys (drv: { ## Setup: Encountered missing dependencies: ## free ==4.* - ## builder for ‘/nix/store/khkbn7wmjr10nyq0wwkmn888bj1l4fmh-keys-3.11.drv’ failed with exit code 1 - ## error: build of ‘/nix/store/khkbn7wmjr10nyq0wwkmn888bj1l4fmh-keys-3.11.drv’ failed jailbreak = true; }); lambdacube-gl = overrideCabal super.lambdacube-gl (drv: { ## Setup: Encountered missing dependencies: ## vector ==0.11.* - ## builder for ‘/nix/store/a98830jm4yywfg1d6264p4yngbiyvssp-lambdacube-gl-0.5.2.4.drv’ failed with exit code 1 - ## error: build of ‘/nix/store/a98830jm4yywfg1d6264p4yngbiyvssp-lambdacube-gl-0.5.2.4.drv’ failed jailbreak = true; }); lifted-async = overrideCabal super.lifted-async (drv: { ## Setup: Encountered missing dependencies: ## base >=4.5 && <4.11 - ## builder for ‘/nix/store/l3000vil24jyq66a5kfqvxfdmy7agwic-lifted-async-0.9.3.3.drv’ failed with exit code 1 - ## error: build of ‘/nix/store/l3000vil24jyq66a5kfqvxfdmy7agwic-lifted-async-0.9.3.3.drv’ failed jailbreak = true; }); linear = overrideCabal super.linear (drv: { - ## CABAL-MISSING-DEPS ## Setup: Encountered missing dependencies: ## ghc >=7.0 && <8.4 - ## builder for ‘/nix/store/yklyv4lw4d02316p31x7a2pni1z6gjgk-doctest-0.13.0.drv’ failed with exit code 1 - ## error: build of ‘/nix/store/yklyv4lw4d02316p31x7a2pni1z6gjgk-doctest-0.13.0.drv’ failed + ## /run/current-system/sw/bin/nix-shell: failed to build all dependencies doCheck = false; }); newtype-generics = overrideCabal super.newtype-generics (drv: { ## Setup: Encountered missing dependencies: ## base >=4.6 && <4.11 - ## builder for ‘/nix/store/l3rzsjbwys4rjrpv1703iv5zwbd4bwy6-newtype-generics-0.5.1.drv’ failed with exit code 1 - ## error: build of ‘/nix/store/l3rzsjbwys4rjrpv1703iv5zwbd4bwy6-newtype-generics-0.5.1.drv’ failed - jailbreak = true; - }); - - parallel = overrideCabal super.parallel (drv: { - ## Setup: Encountered missing dependencies: - ## base >=4.3 && <4.11 - ## builder for ‘/nix/store/c16gcgn7d7gql8bbjqngx7wbw907hnwb-parallel-3.2.1.1.drv’ failed with exit code 1 - ## error: build of ‘/nix/store/c16gcgn7d7gql8bbjqngx7wbw907hnwb-parallel-3.2.1.1.drv’ failed jailbreak = true; }); quickcheck-instances = overrideCabal super.quickcheck-instances (drv: { ## Setup: Encountered missing dependencies: ## base >=4.5 && <4.11 - ## builder for ‘/nix/store/r3fx9f7ksp41wfn6cp4id3mzgv04pwij-quickcheck-instances-0.3.16.1.drv’ failed with exit code 1 - ## error: build of ‘/nix/store/r3fx9f7ksp41wfn6cp4id3mzgv04pwij-quickcheck-instances-0.3.16.1.drv’ failed jailbreak = true; }); - tasty-ant-xml = overrideCabal super.tasty-ant-xml (drv: { + rapid = overrideCabal super.rapid (drv: { ## Setup: Encountered missing dependencies: - ## tasty >=0.10 && <1.0 - ## builder for ‘/nix/store/86dlb96cdw9jpq95xbndf4axj1z542d6-tasty-ant-xml-1.1.2.drv’ failed with exit code 1 - ## error: build of ‘/nix/store/86dlb96cdw9jpq95xbndf4axj1z542d6-tasty-ant-xml-1.1.2.drv’ failed + ## base >=4.8 && <4.11 jailbreak = true; }); tasty-expected-failure = overrideCabal super.tasty-expected-failure (drv: { ## Setup: Encountered missing dependencies: ## base >=4.5 && <4.11 - ## builder for ‘/nix/store/gdm01qb8ppxgrl6dgzhlj8fzmk4x8dj3-tasty-expected-failure-0.11.0.4.drv’ failed with exit code 1 - ## error: build of ‘/nix/store/gdm01qb8ppxgrl6dgzhlj8fzmk4x8dj3-tasty-expected-failure-0.11.0.4.drv’ failed jailbreak = true; }); tasty-hedgehog = overrideCabal super.tasty-hedgehog (drv: { ## Setup: Encountered missing dependencies: ## base >=4.8 && <4.11, tasty ==0.11.* - ## builder for ‘/nix/store/bpxyzzbmb03n88l4xz4k2rllj4227fwv-tasty-hedgehog-0.1.0.1.drv’ failed with exit code 1 - ## error: build of ‘/nix/store/bpxyzzbmb03n88l4xz4k2rllj4227fwv-tasty-hedgehog-0.1.0.1.drv’ failed jailbreak = true; }); @@ -842,33 +676,25 @@ self: super: { th-abstraction = overrideCabal super.th-abstraction (drv: { ## Setup: Encountered missing dependencies: ## template-haskell >=2.5 && <2.13 - ## builder for ‘/nix/store/la3zdphp3nqzl590n25zyrgj62ga8cl6-th-abstraction-0.2.6.0.drv’ failed with exit code 1 - ## error: build of ‘/nix/store/la3zdphp3nqzl590n25zyrgj62ga8cl6-th-abstraction-0.2.6.0.drv’ failed jailbreak = true; }); these = overrideCabal super.these (drv: { ## Setup: Encountered missing dependencies: ## base >=4.5 && <4.11 - ## builder for ‘/nix/store/1wwqq67pinjj95fgqg13bchh0kbyrb83-these-0.7.4.drv’ failed with exit code 1 - ## error: build of ‘/nix/store/1wwqq67pinjj95fgqg13bchh0kbyrb83-these-0.7.4.drv’ failed jailbreak = true; }); trifecta = overrideCabal super.trifecta (drv: { - ## CABAL-MISSING-DEPS ## Setup: Encountered missing dependencies: ## ghc >=7.0 && <8.4 - ## builder for ‘/nix/store/yklyv4lw4d02316p31x7a2pni1z6gjgk-doctest-0.13.0.drv’ failed with exit code 1 - ## error: build of ‘/nix/store/yklyv4lw4d02316p31x7a2pni1z6gjgk-doctest-0.13.0.drv’ failed + ## /run/current-system/sw/bin/nix-shell: failed to build all dependencies doCheck = false; }); unliftio-core = overrideCabal super.unliftio-core (drv: { ## Setup: Encountered missing dependencies: ## base >=4.5 && <4.11 - ## builder for ‘/nix/store/bn8w06wlq7zzli0858hfwlai7wbj6dmq-unliftio-core-0.1.1.0.drv’ failed with exit code 1 - ## error: build of ‘/nix/store/bn8w06wlq7zzli0858hfwlai7wbj6dmq-unliftio-core-0.1.1.0.drv’ failed jailbreak = true; }); @@ -880,23 +706,6 @@ self: super: { wavefront = overrideCabal super.wavefront (drv: { ## Setup: Encountered missing dependencies: ## base >=4.8 && <4.11 - ## builder for ‘/nix/store/iy6ccxh4dvp6plalx4ww81qrnhxm7jgr-wavefront-0.7.1.1.drv’ failed with exit code 1 - ## error: build of ‘/nix/store/iy6ccxh4dvp6plalx4ww81qrnhxm7jgr-wavefront-0.7.1.1.drv’ failed jailbreak = true; }); - - # Needed for (<>) in prelude - funcmp = super.funcmp_1_9; - - # https://github.com/haskell-hvr/deepseq-generics/pull/4 - deepseq-generics = doJailbreak super.deepseq-generics; - - # SMP compat - # https://github.com/vincenthz/hs-securemem/pull/12 - securemem = - let patch = pkgs.fetchpatch - { url = https://github.com/vincenthz/hs-securemem/commit/6168d90b00bfc6a559d3b9160732343644ef60fb.patch; - sha256 = "0pfjmq57kcvxq7mhljd40whg2g77vdlvjyycdqmxxzz1crb6pipf"; - }; - in appendPatch super.securemem patch; } diff --git a/pkgs/development/libraries/aspell/dictionaries.nix b/pkgs/development/libraries/aspell/dictionaries.nix index 8d97d6db2f1..096ac80e5a7 100644 --- a/pkgs/development/libraries/aspell/dictionaries.nix +++ b/pkgs/development/libraries/aspell/dictionaries.nix @@ -1,32 +1,113 @@ -{stdenv, fetchurl, aspell, which}: +{lib, stdenv, fetchurl, aspell, which}: + +with lib; + +/* HOWTO: + + * Add some of these to your profile or systemPackages. + + ~~~~ + environment.systemPackages = [ + aspell + aspellDicts.en + aspellDicts.en-computers + aspellDicts.en-science + ]; + ~~~~ + + * Rebuild and switch to the new profile. + * Add something like + + ~~~~ + master en_US + extra-dicts en-computers.rws + add-extra-dicts en_US-science.rws + ~~~~ + + to `/etc/aspell.conf` or `~/.aspell.conf`. + * Check that `aspell -a` starts without errors. + * (optional) Check your config with `aspell dump config | grep -vE '^(#|$)'`. + * Enjoy. + +*/ let /* Function to compile an Aspell dictionary. Fortunately, they all build in the exact same way. */ buildDict = - {shortName, fullName, src, postInstall ? ""}: + {shortName, fullName, ...}@args: - stdenv.mkDerivation { + stdenv.mkDerivation ({ name = "aspell-dict-${shortName}"; - inherit src; - buildInputs = [aspell which]; dontAddPrefix = true; preBuild = "makeFlagsArray=(dictdir=$out/lib/aspell datadir=$out/lib/aspell)"; - inherit postInstall; - meta = { description = "Aspell dictionary for ${fullName}"; platforms = stdenv.lib.platforms.all; - }; - }; + } // (args.meta or {}); + } // removeAttrs args [ "meta" ]); -in { + /* Function to compile txt dict files into Aspell dictionaries. */ + buildTxtDict = + {langInputs ? [], ...}@args: + buildDict ({ + propagatedUserEnvPackages = langInputs; + + preBuild = '' + # Aspell can't handle multiple data-dirs + # Copy everything we might possibly need + ${concatMapStringsSep "\n" (p: '' + cp -a ${p}/lib/aspell/* . + '') ([ aspell ] ++ langInputs)} + export ASPELL_CONF="data-dir $(pwd)" + + aspell-create() { + target=$1 + shift + echo building $target + aspell create "$@" master ./$target.rws + } + + words-only() { + awk -F'\t' '{print $1}' | sort | uniq + } + + # drop comments + aspell-affix() { + words-only \ + | grep -v '#' \ + | aspell-create "$@" + } + + # Hack: drop comments and words with affixes + aspell-plain() { + words-only \ + | grep -v '#' \ + | grep -v '/' \ + | aspell-create "$@" + } + + aspell-install() { + install -d $out/lib/aspell + for a in "$@"; do + echo installing $a + install -t $out/lib/aspell $a.rws + done + } + ''; + + phases = [ "preBuild" "buildPhase" "installPhase" ]; + } // args); + +in rec { + + ### Languages ca = buildDict { shortName = "ca-2.1.5-1"; @@ -230,4 +311,53 @@ in { }; }; + ### Jargons + + en-computers = buildTxtDict rec { + shortName = "en-computers"; + fullName = "English Computer Jargon"; + + src = fetchurl { + url = https://mrsatterly.com/computer.dic; + sha256 = "1vzk7cdvcm9r1c6mgxpabrdcpvghdv9mjmnf6iq5wllcif5nsw2b"; + }; + + langInputs = [ en ]; + + buildPhase = "cat $src | aspell-affix en-computers --dont-validate-words --lang=en"; + installPhase = "aspell-install en-computers"; + + meta = { + homepage = https://mrsatterly.com/spelling.html; + }; + }; + + en-science = buildTxtDict rec { + shortName = "en-science"; + fullName = "English Scientific Jargon"; + + src1 = fetchurl { + url = http://jpetrie.net/wp-content/uploads/custom_scientific_US.txt; + sha256 = "1psqm094zl4prk2f8h18jv0d471hxykzd1zdnrlx7gzrzy6pz5r3"; + }; + + src2 = fetchurl { + url = http://jpetrie.net/wp-content/uploads/custom_scientific_UK.txt; + sha256 = "17ss1sdr3k70zbyx2z9xf74345slrp41gbkpih8axrmg4x92fgm1"; + }; + + langInputs = [ en ]; + + buildPhase = '' + cat $src1 | aspell-plain en_US-science --dont-validate-words --lang=en + cat $src2 | aspell-plain en_GB-science --dont-validate-words --lang=en + ''; + installPhase = "aspell-install en_US-science en_GB-science"; + + meta = { + homepage = http://www.jpetrie.net/scientific-word-list-for-spell-checkersspelling-dictionaries/; + }; + + }; + } diff --git a/pkgs/development/ocaml-modules/bitv/default.nix b/pkgs/development/ocaml-modules/bitv/default.nix new file mode 100644 index 00000000000..359d83b4762 --- /dev/null +++ b/pkgs/development/ocaml-modules/bitv/default.nix @@ -0,0 +1,27 @@ +{ stdenv, fetchzip, autoreconfHook, which, ocaml, findlib }: + +if !stdenv.lib.versionAtLeast ocaml.version "4.02" +then throw "bitv is not available for OCaml ${ocaml.version}" +else + +stdenv.mkDerivation rec { + name = "ocaml${ocaml.version}-bitv-${version}"; + version = "1.3"; + + src = fetchzip { + url = "https://github.com/backtracking/bitv/archive/${version}.tar.gz"; + sha256 = "0vkh1w9fpi5m1sgiqg6r38j3fqglhdajmbyiyr91113lrpljm75i"; + }; + + buildInputs = [ autoreconfHook which ocaml findlib ]; + + createFindlibDestdir = true; + + meta = { + description = "A bit vector library for OCaml"; + license = stdenv.lib.licenses.lgpl21; + homepage = "https://github.com/backtracking/bitv"; + maintainers = [ stdenv.lib.maintainers.vbgl ]; + inherit (ocaml.meta) platforms; + }; +} diff --git a/pkgs/development/tools/analysis/flow/default.nix b/pkgs/development/tools/analysis/flow/default.nix index 69ca68351ba..4a2d298495d 100644 --- a/pkgs/development/tools/analysis/flow/default.nix +++ b/pkgs/development/tools/analysis/flow/default.nix @@ -4,14 +4,14 @@ with lib; stdenv.mkDerivation rec { - version = "0.65.0"; + version = "0.66.0"; name = "flow-${version}"; src = fetchFromGitHub { owner = "facebook"; repo = "flow"; rev = "v${version}"; - sha256 = "00m9wqfqpnv7p2kz0970254jfaqakb12lsnhk95hw47ghfyb2f7p"; + sha256 = "0l1sdd1n0llmz8m81vym3zhcn824sr9w46h9jpb7i7wrcm4y410d"; }; installPhase = '' diff --git a/pkgs/development/tools/build-managers/gnumake/4.2/default.nix b/pkgs/development/tools/build-managers/gnumake/4.2/default.nix index 1094cacb7af..e175205143f 100644 --- a/pkgs/development/tools/build-managers/gnumake/4.2/default.nix +++ b/pkgs/development/tools/build-managers/gnumake/4.2/default.nix @@ -4,8 +4,6 @@ assert guileSupport -> ( pkgconfig != null && guile != null ); let version = "4.2.1"; - - needGlibcPatch = (stdenv.cc.libc.version or "") == "2.27"; in stdenv.mkDerivation { name = "gnumake-${version}"; @@ -22,7 +20,7 @@ stdenv.mkDerivation { # included Makefiles, don't look in /usr/include and friends. ./impure-dirs.patch ./pselect.patch - ] ++ stdenv.lib.optional needGlibcPatch ./glibc-2.27.patch; + ]; nativeBuildInputs = stdenv.lib.optionals guileSupport [ pkgconfig ]; buildInputs = stdenv.lib.optionals guileSupport [ guile ]; diff --git a/pkgs/development/tools/build-managers/gnumake/4.2/head.nix b/pkgs/development/tools/build-managers/gnumake/4.2/head.nix new file mode 100644 index 00000000000..5f3ae10c3e5 --- /dev/null +++ b/pkgs/development/tools/build-managers/gnumake/4.2/head.nix @@ -0,0 +1,69 @@ +{ stdenv, fetchurl, texinfo, guileSupport ? false, pkgconfig , guile ? null, autoreconfHook }: + +assert guileSupport -> ( guile != null ); + +let + version = "4.2.90"; + revision = "48c8a116a914a325a0497721f5d8b58d5bba34d4"; + revCount = "2491"; + shortRev = "48c8a11"; + + baseVersion = "4.2.1"; + baseTarball = fetchurl { + url = "mirror://gnu/make/make-${baseVersion}.tar.bz2"; + sha256 = "12f5zzyq2w56g95nni65hc0g5p7154033y2f3qmjvd016szn5qnn"; + }; +in +stdenv.mkDerivation { + name = "gnumake-${version}pre${revCount}_${shortRev}"; + + src = fetchurl { + url = "http://git.savannah.gnu.org/cgit/make.git/snapshot/make-${revision}.tar.gz"; + sha256 = "0k6yvhr2a5lh1qhflv02dyvq5p20ikgaakm8w6gr4xmkspljwpwx"; + }; + + postUnpack = '' + unpackFile ${baseTarball} + cp make-${baseVersion}/po/*.po $sourceRoot/po + cp make-${baseVersion}/doc/{fdl,make-stds}.texi $sourceRoot/doc + ''; + + patches = [ + # Purity: don't look for library dependencies (of the form `-lfoo') in /lib + # and /usr/lib. It's a stupid feature anyway. Likewise, when searching for + # included Makefiles, don't look in /usr/include and friends. + ./impure-dirs-head.patch + ]; + + postPatch = '' + # These aren't in the 4.2.1 tarball yet. + sed -i -e 's/sr//' -e 's/zh_TW//' po/LINGUAS + ''; + + nativeBuildInputs = [ autoreconfHook pkgconfig texinfo ]; + buildInputs = stdenv.lib.optional guileSupport guile; + + configureFlags = stdenv.lib.optional guileSupport "--with-guile"; + + outputs = [ "out" "man" "info" ]; + + meta = with stdenv.lib; { + homepage = http://www.gnu.org/software/make/; + description = "A tool to control the generation of non-source files from sources"; + license = licenses.gpl3Plus; + + longDescription = '' + Make is a tool which controls the generation of executables and + other non-source files of a program from the program's source files. + + Make gets its knowledge of how to build your program from a file + called the makefile, which lists each of the non-source files and + how to compute it from other files. When you write a program, you + should write a makefile for it, so that it is possible to use Make + to build and install the program. + ''; + + platforms = platforms.all; + maintainers = [ maintainers.vrthra ]; + }; +} diff --git a/pkgs/development/tools/build-managers/gnumake/4.2/impure-dirs-head.patch b/pkgs/development/tools/build-managers/gnumake/4.2/impure-dirs-head.patch new file mode 100644 index 00000000000..06d39e13ce3 --- /dev/null +++ b/pkgs/development/tools/build-managers/gnumake/4.2/impure-dirs-head.patch @@ -0,0 +1,31 @@ +diff -Naur a/src/read.c b/src/read.c +--- a/src/read.c 2017-11-19 15:17:47.000000000 -0500 ++++ b/src/read.c 2018-02-19 08:53:51.548755213 -0500 +@@ -109,10 +109,12 @@ + #endif + INCLUDEDIR, + #ifndef _AMIGA ++#if 0 + "/usr/gnu/include", + "/usr/local/include", + "/usr/include", + #endif ++#endif + 0 + }; + +diff -Naur a/src/remake.c b/src/remake.c +--- a/src/remake.c 2017-11-19 15:17:47.000000000 -0500 ++++ b/src/remake.c 2018-02-19 08:54:08.304101943 -0500 +@@ -1601,9 +1601,11 @@ + static const char *dirs[] = + { + #ifndef _AMIGA ++#if 0 + "/lib", + "/usr/lib", + #endif ++#endif + #if defined(WINDOWS32) && !defined(LIBDIR) + /* + * This is completely up to the user at product install time. Just define diff --git a/pkgs/misc/riscv-pk/default.nix b/pkgs/misc/riscv-pk/default.nix index 025d591d137..5f0d1fa438f 100644 --- a/pkgs/misc/riscv-pk/default.nix +++ b/pkgs/misc/riscv-pk/default.nix @@ -1,4 +1,4 @@ -{ stdenv, fetchFromGitHub, autoreconfHook }: let +{ stdenv, fetchFromGitHub, autoreconfHook, payload ? null }: let rev = "e5846a2bc707eaa58dc8ab6a8d20a090c6ee8570"; sha256 = "1clynpp70fnbgsjgxx7xi0vrdrj1v0h8zpv0x26i324kp2gwylf4"; revCount = "438"; @@ -21,6 +21,9 @@ in stdenv.mkDerivation { configureScript = "../configure"; + configureFlags = stdenv.lib.optional (payload != null) + "--with-payload=${payload}"; + hardeningDisable = [ "all" ]; meta = { diff --git a/pkgs/os-specific/linux/kernel/linux-riscv.nix b/pkgs/os-specific/linux/kernel/linux-riscv.nix new file mode 100644 index 00000000000..b2eb0a69a8e --- /dev/null +++ b/pkgs/os-specific/linux/kernel/linux-riscv.nix @@ -0,0 +1,18 @@ +{ stdenv, buildPackages, hostPlatform, fetchFromGitHub, perl, buildLinux, libelf, utillinux, ... } @ args: + +buildLinux (args // rec { + version = "4.16-rc1"; + modDirVersion = "4.16.0-rc1"; + extraMeta.branch = "4.16"; + + src = fetchFromGitHub { + owner = "riscv"; + repo ="riscv-linux"; + rev = "a31991a9c6ce2c86fd676cf458a0ec10edc20d37"; + sha256 = "0n97wfbi3pnp5c70xfj7s0fk8zjjkjz6ldxh7n54kbf64l4in01f"; + }; + + # Should the testing kernels ever be built on Hydra? + extraMeta.hydraPlatforms = []; + +} // (args.argsOverride or {})) diff --git a/pkgs/os-specific/linux/kernel/manual-config.nix b/pkgs/os-specific/linux/kernel/manual-config.nix index bd9334b8f9b..ebbc69dec59 100644 --- a/pkgs/os-specific/linux/kernel/manual-config.nix +++ b/pkgs/os-specific/linux/kernel/manual-config.nix @@ -155,14 +155,13 @@ let if platform.kernelTarget == "zImage" || platform.kernelTarget == "Image.gz" then "zinstall" else "install") ]; - postInstall = '' - mkdir -p $dev - cp vmlinux $dev/ - '' + (optionalString installsFirmware '' + postInstall = (optionalString installsFirmware '' mkdir -p $out/lib/firmware '') + (if (platform ? kernelDTB && platform.kernelDTB) then '' make $makeFlags "''${makeFlagsArray[@]}" dtbs dtbs_install INSTALL_DTBS_PATH=$out/dtbs '' else "") + (if isModular then '' + mkdir -p $dev + cp vmlinux $dev/ if [ -z "$dontStrip" ]; then installFlagsArray+=("INSTALL_MOD_STRIP=1") fi diff --git a/pkgs/os-specific/linux/kernel/patches.nix b/pkgs/os-specific/linux/kernel/patches.nix index 754a2372c6d..39af0a67936 100644 --- a/pkgs/os-specific/linux/kernel/patches.nix +++ b/pkgs/os-specific/linux/kernel/patches.nix @@ -72,4 +72,20 @@ rec { sha256 = "09096npxpgvlwdz3pb3m9brvxh7vy0xc9z9p8hh85xyczyzcsjhr"; }; }; + + riscv_modules = { + name = "riscv-modules"; + patch = ./riscv-modules.patch; + }; + + riscv_irq_busy = { + name = "riscv-irq-busy"; + patch = ./riscv-irq-busy.patch; + }; + + riscv_install = { + name = "riscv-install"; + patch = ./riscv-install.patch; + }; + } diff --git a/pkgs/os-specific/linux/kernel/riscv-install.patch b/pkgs/os-specific/linux/kernel/riscv-install.patch new file mode 100644 index 00000000000..707230e9a33 --- /dev/null +++ b/pkgs/os-specific/linux/kernel/riscv-install.patch @@ -0,0 +1,65 @@ +commit 365fc1312f4911bfae25c5914c398f9aca21948f +Author: Shea Levy +Date: Mon Feb 19 10:50:58 2018 -0500 + + riscv: Add install target to Makefile. + + Signed-off-by: Shea Levy + +diff --git a/arch/riscv/Makefile b/arch/riscv/Makefile +index 6719dd30ec5b..26892daefa05 100644 +--- a/arch/riscv/Makefile ++++ b/arch/riscv/Makefile +@@ -70,3 +70,7 @@ core-y += arch/riscv/kernel/ arch/riscv/mm/ + libs-y += arch/riscv/lib/ + + all: vmlinux ++ ++PHONY += install ++install: vmlinux ++ sh $(srctree)/arch/riscv/install.sh $(KERNELRELEASE) $< System.map "$(INSTALL_PATH)" +diff --git a/arch/riscv/install.sh b/arch/riscv/install.sh +new file mode 100644 +index 000000000000..8b3155a11a4a +--- /dev/null ++++ b/arch/riscv/install.sh +@@ -0,0 +1,39 @@ ++#!/bin/sh ++# ++# arch/riscv/install.sh ++# ++# This file is subject to the terms and conditions of the GNU General Public ++# License. See the file "COPYING" in the main directory of this archive ++# for more details. ++# ++# Copyright (C) 1995 by Linus Torvalds ++# ++# Adapted from code in arch/ia64/Makefile by Shea Levy ++# ++# "make install" script for riscv architecture ++# ++# Arguments: ++# $1 - kernel version ++# $2 - kernel image file ++# $3 - kernel map file ++# $4 - default install path (blank if root directory) ++# ++ ++# User may have a custom install script ++ ++if [ -x ~/bin/${INSTALLKERNEL} ]; then exec ~/bin/${INSTALLKERNEL} "$@"; fi ++if [ -x /sbin/${INSTALLKERNEL} ]; then exec /sbin/${INSTALLKERNEL} "$@"; fi ++ ++# Default install - no bootloader configuration (yet?) ++base=$(basename $2) ++ ++if [ -f $4/$base ]; then ++ mv $4/$base $4/$base.old ++fi ++ ++if [ -f $4/System.map ]; then ++ mv $4/System.map $4/System.old ++fi ++ ++cat $2 > $4/$base ++cp $3 $4/System.map diff --git a/pkgs/os-specific/linux/kernel/riscv-irq-busy.patch b/pkgs/os-specific/linux/kernel/riscv-irq-busy.patch new file mode 100644 index 00000000000..5f5e8f0c8b7 --- /dev/null +++ b/pkgs/os-specific/linux/kernel/riscv-irq-busy.patch @@ -0,0 +1,42 @@ +commit 2603e6087b26e9428b806b267aee6bcb919abcea +Author: Shea Levy +Date: Sun Feb 18 20:08:30 2018 -0500 + + set_handle_irq: Return EBUSY if the handler has already been registered. + + This is what's expected by the comments and at least by irq-riscv-intc.c + + Signed-off-by: Shea Levy + +diff --git a/include/linux/irq.h b/include/linux/irq.h +index 2930fd2572e4..77e97872a13e 100644 +--- a/include/linux/irq.h ++++ b/include/linux/irq.h +@@ -1179,7 +1179,7 @@ int ipi_send_mask(unsigned int virq, const struct cpumask *dest); + * Returns 0 on success, or -EBUSY if an IRQ handler has already been + * registered. + */ +-void __init set_handle_irq(void (*handle_irq)(struct pt_regs *)); ++int __init set_handle_irq(void (*handle_irq)(struct pt_regs *)); + + /* + * Allows interrupt handlers to find the irqchip that's been registered as the +diff --git a/kernel/irq/handle.c b/kernel/irq/handle.c +index dee4f9a172ca..3570c715c3e7 100644 +--- a/kernel/irq/handle.c ++++ b/kernel/irq/handle.c +@@ -213,11 +213,12 @@ irqreturn_t handle_irq_event(struct irq_desc *desc) + } + + #ifdef CONFIG_GENERIC_IRQ_MULTI_HANDLER +-void __init set_handle_irq(void (*handle_irq)(struct pt_regs *)) ++int __init set_handle_irq(void (*handle_irq)(struct pt_regs *)) + { + if (handle_arch_irq) +- return; ++ return -EBUSY; + + handle_arch_irq = handle_irq; ++ return 0; + } + #endif diff --git a/pkgs/os-specific/linux/kernel/riscv-modules.patch b/pkgs/os-specific/linux/kernel/riscv-modules.patch new file mode 100644 index 00000000000..6d5356e0e46 --- /dev/null +++ b/pkgs/os-specific/linux/kernel/riscv-modules.patch @@ -0,0 +1,11 @@ +diff -Naur linux-4.15.4-orig/arch/riscv/configs/defconfig linux-4.15.4/arch/riscv/configs/defconfig +--- linux-4.15.4-orig/arch/riscv/configs/defconfig 2018-02-16 14:07:01.000000000 -0500 ++++ linux-4.15.4/arch/riscv/configs/defconfig 2018-02-18 18:33:09.488431900 -0500 +@@ -12,6 +12,7 @@ + CONFIG_NAMESPACES=y + CONFIG_USER_NS=y + CONFIG_BLK_DEV_INITRD=y ++CONFIG_MODULES=y + CONFIG_EXPERT=y + CONFIG_CHECKPOINT_RESTORE=y + CONFIG_BPF_SYSCALL=y diff --git a/pkgs/stdenv/darwin/default.nix b/pkgs/stdenv/darwin/default.nix index 28b2f203dae..27b3c176a2a 100644 --- a/pkgs/stdenv/darwin/default.nix +++ b/pkgs/stdenv/darwin/default.nix @@ -118,6 +118,7 @@ in rec { initialPath = [ bootstrapTools ]; fetchurlBoot = import ../../build-support/fetchurl { + inherit lib; stdenvNoCC = stage0.stdenv; curl = bootstrapTools; }; diff --git a/pkgs/stdenv/freebsd/default.nix b/pkgs/stdenv/freebsd/default.nix index 6ab8bf21726..b3a6cedad84 100644 --- a/pkgs/stdenv/freebsd/default.nix +++ b/pkgs/stdenv/freebsd/default.nix @@ -29,7 +29,8 @@ let inherit (localSystem) system; in inherit bootstrapTools; fetchurl = import ../../build-support/fetchurl { - inherit stdenv; + inherit lib; + stdenvNoCC = stdenv; curl = bootstrapTools; }; diff --git a/pkgs/stdenv/generic/check-meta.nix b/pkgs/stdenv/generic/check-meta.nix index dc5e79fcd4f..93d0f4cc980 100644 --- a/pkgs/stdenv/generic/check-meta.nix +++ b/pkgs/stdenv/generic/check-meta.nix @@ -159,7 +159,7 @@ let executables = listOf str; outputsToInstall = listOf str; position = str; - evaluates = bool; + available = bool; repositories = attrsOf str; isBuildPythonPackage = platforms; schedulingPriority = int; diff --git a/pkgs/stdenv/generic/make-derivation.nix b/pkgs/stdenv/generic/make-derivation.nix index e021b284a12..e8f78d7401f 100644 --- a/pkgs/stdenv/generic/make-derivation.nix +++ b/pkgs/stdenv/generic/make-derivation.nix @@ -238,9 +238,9 @@ rec { position = pos.file + ":" + toString pos.line; # Expose the result of the checks for everyone to see. } // { - evaluates = validity.valid + available = validity.valid && (if config.checkMetaRecursively or false - then lib.all (d: d.meta.evaluates or true) references + then lib.all (d: d.meta.available or true) references else true); }; diff --git a/pkgs/stdenv/native/default.nix b/pkgs/stdenv/native/default.nix index 558a77281ed..19efac3700a 100644 --- a/pkgs/stdenv/native/default.nix +++ b/pkgs/stdenv/native/default.nix @@ -131,7 +131,7 @@ in }; fetchurl = import ../../build-support/fetchurl { - inherit stdenv; + inherit lib stdenvNoCC; # Curl should be in /usr/bin or so. curl = null; }; diff --git a/pkgs/tools/package-management/nix/default.nix b/pkgs/tools/package-management/nix/default.nix index f6e6988270a..e8eb3050c6d 100644 --- a/pkgs/tools/package-management/nix/default.nix +++ b/pkgs/tools/package-management/nix/default.nix @@ -126,12 +126,12 @@ in rec { nixUnstable = (lib.lowPrio (common rec { name = "nix-2.0${suffix}"; - suffix = "pre5951_690ac7c9"; + suffix = "pre5968_a6c0b773"; src = fetchFromGitHub { owner = "NixOS"; repo = "nix"; - rev = "690ac7c90b5bf3c599e210c53365c7d229c8b0ff"; - sha256 = "1yn2p38kp1i67makbawr1rhdiwihgnvk2zwrz0gvf6q65mj2k89c"; + rev = "a6c0b773b72d4e30690e01f1f1dcffc28f2d9ea1"; + sha256 = "0i8wcblcjw3291ba6ki4llw3fgm8ylp9q52kajkyr58dih537346"; }; fromGit = true; })) // { perl-bindings = perl-bindings { nix = nixUnstable; }; }; diff --git a/pkgs/tools/security/afl/default.nix b/pkgs/tools/security/afl/default.nix index 51701590b8e..1ff0ad6f6b6 100644 --- a/pkgs/tools/security/afl/default.nix +++ b/pkgs/tools/security/afl/default.nix @@ -20,7 +20,7 @@ stdenv.mkDerivation rec { # Note: libcgroup isn't needed for building, just for the afl-cgroup # script. - buildInputs = [ makeWrapper clang llvm which ]; + buildInputs = [ makeWrapper llvm which ]; buildPhase = '' make PREFIX=$out @@ -53,8 +53,7 @@ stdenv.mkDerivation rec { for x in $out/bin/afl-clang-fast $out/bin/afl-clang-fast++; do wrapProgram $x \ --prefix AFL_PATH : "$out/lib/afl" \ - --prefix AFL_CC : "${clang}/bin/clang" \ - --prefix AFL_CXX : "${clang}/bin/clang++" + --run 'export AFL_CC=''${AFL_CC:-${clang}/bin/clang} AFL_CXX=''${AFL_CXX:-${clang}/bin/clang++}' done ''; @@ -76,7 +75,7 @@ stdenv.mkDerivation rec { ''; homepage = "http://lcamtuf.coredump.cx/afl/"; license = stdenv.lib.licenses.asl20; - platforms = stdenv.lib.platforms.linux; + platforms = ["x86_64-linux" "i686-linux"]; maintainers = [ stdenv.lib.maintainers.thoughtpolice ]; }; } diff --git a/pkgs/tools/text/replace/default.nix b/pkgs/tools/text/replace/default.nix index 2719a4c8191..9242014cdca 100644 --- a/pkgs/tools/text/replace/default.nix +++ b/pkgs/tools/text/replace/default.nix @@ -8,6 +8,8 @@ stdenv.mkDerivation { sha256 = "1c2nkxx83vmlh1v3ib6r2xqh121gdb1rharwsimcb2h0xwc558dm"; }; + outputs = [ "out" "man" ]; + makeFlags = "TREE=\$(out) MANTREE=\$(TREE)/share/man"; preBuild = '' diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index efd3683f36b..78444eb34d1 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -195,7 +195,7 @@ with pkgs; # `fetchurl' downloads a file from the network. fetchurl = import ../build-support/fetchurl { - inherit stdenvNoCC; + inherit lib stdenvNoCC; # On darwin, libkrb5 needs bootstrap_cmds which would require # converting many packages to fetchurl_boot to avoid evaluation cycles. curl = buildPackages.curl.override (lib.optionalAttrs stdenv.isDarwin { gssSupport = false; }); @@ -7661,7 +7661,10 @@ with pkgs; gnumake382 = callPackage ../development/tools/build-managers/gnumake/3.82 { }; gnumake3 = gnumake382; gnumake42 = callPackage ../development/tools/build-managers/gnumake/4.2 { }; - gnumake = gnumake42; + gnumake = if hostPlatform.isRiscV # Technically this check should be for glibc version. + then gnumake42HEAD + else gnumake42; + gnumake42HEAD = callPackage ../development/tools/build-managers/gnumake/4.2/head.nix { }; gnustep = recurseIntoAttrs (callPackage ../desktops/gnustep {}); @@ -13104,6 +13107,13 @@ with pkgs; ]; }; + linux_riscv = callPackage ../os-specific/linux/kernel/linux-riscv.nix { + kernelPatches = [ + kernelPatches.bridge_stp_helper + kernelPatches.modinst_arg_list_too_long + ] ++ lib.optionals hostPlatform.isRiscV [ kernelPatches.riscv_modules kernelPatches.riscv_irq_busy kernelPatches.riscv_install ]; + }; + linux_samus_4_12 = callPackage ../os-specific/linux/kernel/linux-samus-4.12.nix { kernelPatches = [ kernelPatches.bridge_stp_helper @@ -13321,7 +13331,7 @@ with pkgs; linux_samus_latest = linuxPackages_samus_latest.kernel; # A function to build a manually-configured kernel - linuxManualConfig = pkgs.buildLinux; + linuxManualConfig = makeOverridable (callPackage ../os-specific/linux/kernel/manual-config.nix {}); buildLinux = makeOverridable (callPackage ../os-specific/linux/kernel/generic.nix {}); keyutils = callPackage ../os-specific/linux/keyutils { }; @@ -13555,6 +13565,10 @@ with pkgs; riscv-pk = callPackage ../misc/riscv-pk { }; + riscv-pk-with-kernel = riscv-pk.override { + payload = "${linux_riscv}/vmlinux"; + }; + rtkit = callPackage ../os-specific/linux/rtkit { }; rt5677-firmware = callPackage ../os-specific/linux/firmware/rt5677 { }; @@ -17164,6 +17178,8 @@ with pkgs; vte = gnome3.vte; }; + sayonara = callPackage ../applications/audio/sayonara { }; + sbagen = callPackage ../applications/misc/sbagen { }; scantailor = callPackage ../applications/graphics/scantailor { }; @@ -20661,6 +20677,8 @@ with pkgs; cc-wrapper-libcxx = callPackage ../test/cc-wrapper { stdenv = llvmPackages.libcxxStdenv; }; cc-wrapper-clang-39 = callPackage ../test/cc-wrapper { stdenv = llvmPackages_39.stdenv; }; cc-wrapper-libcxx-39 = callPackage ../test/cc-wrapper { stdenv = llvmPackages_39.libcxxStdenv; }; + cc-wrapper-clang-4 = callPackage ../test/cc-wrapper { stdenv = llvmPackages_4.stdenv; }; + cc-wrapper-libcxx-4 = callPackage ../test/cc-wrapper { stdenv = llvmPackages_4.libcxxStdenv; }; cc-wrapper-clang-5 = callPackage ../test/cc-wrapper { stdenv = llvmPackages_5.stdenv; }; cc-wrapper-libcxx-5 = callPackage ../test/cc-wrapper { stdenv = llvmPackages_5.libcxxStdenv; }; stdenv-inputs = callPackage ../test/stdenv-inputs { }; diff --git a/pkgs/top-level/ocaml-packages.nix b/pkgs/top-level/ocaml-packages.nix index 1fffa3fa800..10eb72da19e 100644 --- a/pkgs/top-level/ocaml-packages.nix +++ b/pkgs/top-level/ocaml-packages.nix @@ -60,6 +60,8 @@ let bitstring = callPackage ../development/ocaml-modules/bitstring { }; + bitv = callPackage ../development/ocaml-modules/bitv { }; + bolt = callPackage ../development/ocaml-modules/bolt { }; bos = callPackage ../development/ocaml-modules/bos { }; diff --git a/pkgs/top-level/perl-packages.nix b/pkgs/top-level/perl-packages.nix index 793c1d9189c..fc66cc7739c 100644 --- a/pkgs/top-level/perl-packages.nix +++ b/pkgs/top-level/perl-packages.nix @@ -6301,6 +6301,17 @@ let self = _self // overrides; _self = with self; { propagatedBuildInputs = [ ExtUtilsDepends ExtUtilsPkgConfig Glib Gtk2 Pango pkgs.gnome2.libglade pkgs.gtk2 ]; meta = { description = "Create user interfaces directly from Glade XML files"; + }; + }; + + Gtk2TrayIcon = buildPerlPackage rec { + name = "Gtk2-TrayIcon-0.06"; + src = fetchurl { + url = "mirror://cpan/authors/id/B/BO/BORUP/${name}.tar.gz"; + sha256 = "cbb7632b75d7f41554dfe8ee9063dbfd1d8522291077c65d0d82e9ceb5e94ae2"; + }; + propagatedBuildInputs = [ ExtUtilsDepends ExtUtilsPkgConfig Glib Gtk2 Pango pkgs.gtk2 ]; + meta = { license = stdenv.lib.licenses.gpl2; }; }; diff --git a/pkgs/top-level/release.nix b/pkgs/top-level/release.nix index 5358738acb6..e7f8d3f2e4c 100644 --- a/pkgs/top-level/release.nix +++ b/pkgs/top-level/release.nix @@ -112,6 +112,14 @@ let jobs.tests.cc-wrapper-clang-39.x86_64-darwin jobs.tests.cc-wrapper-libcxx-39.x86_64-linux jobs.tests.cc-wrapper-libcxx-39.x86_64-darwin + jobs.tests.cc-wrapper-clang-4.x86_64-linux + jobs.tests.cc-wrapper-clang-4.x86_64-darwin + jobs.tests.cc-wrapper-libcxx-4.x86_64-linux + jobs.tests.cc-wrapper-libcxx-4.x86_64-darwin + jobs.tests.cc-wrapper-clang-5.x86_64-linux + jobs.tests.cc-wrapper-clang-5.x86_64-darwin + jobs.tests.cc-wrapper-libcxx-5.x86_64-linux + jobs.tests.cc-wrapper-libcxx-5.x86_64-darwin jobs.tests.cc-multilib-gcc.x86_64-linux jobs.tests.cc-multilib-clang.x86_64-linux jobs.tests.stdenv-inputs.x86_64-linux