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