diff options
20 files changed, 150 insertions, 53 deletions
diff --git a/lib/deprecated.nix b/lib/deprecated.nix index 983e8d26892..d4e78c39250 100644 --- a/lib/deprecated.nix +++ b/lib/deprecated.nix @@ -423,4 +423,12 @@ rec { else if isInt x then "int" else "string"; + /* deprecated: + + For historical reasons, imap has an index starting at 1. + + But for consistency with the rest of the library we want an index + starting at zero. + */ + imap = imap1; } diff --git a/lib/lists.nix b/lib/lists.nix index fd746f4f97b..a04b1b27893 100644 --- a/lib/lists.nix +++ b/lib/lists.nix @@ -77,15 +77,21 @@ rec { */ foldl' = builtins.foldl' or foldl; - /* Map with index + /* Map with index starting from 0 - FIXME(zimbatm): why does this start to count at 1? + Example: + imap0 (i: v: "${v}-${toString i}") ["a" "b"] + => [ "a-0" "b-1" ] + */ + imap0 = f: list: genList (n: f n (elemAt list n)) (length list); + + /* Map with index starting from 1 Example: - imap (i: v: "${v}-${toString i}") ["a" "b"] + imap1 (i: v: "${v}-${toString i}") ["a" "b"] => [ "a-1" "b-2" ] */ - imap = f: list: genList (n: f (n + 1) (elemAt list n)) (length list); + imap1 = f: list: genList (n: f (n + 1) (elemAt list n)) (length list); /* Map and concatenate the result. diff --git a/lib/modules.nix b/lib/modules.nix index 91e2eae0595..3da689a6bdb 100644 --- a/lib/modules.nix +++ b/lib/modules.nix @@ -98,7 +98,7 @@ rec { /* Close a set of modules under the ‘imports’ relation. */ closeModules = modules: args: let - toClosureList = file: parentKey: imap (n: x: + toClosureList = file: parentKey: imap1 (n: x: if isAttrs x || isFunction x then let key = "${parentKey}:anon-${toString n}"; in unifyModuleSyntax file key (unpackSubmodule (applyIfFunction key) x args) diff --git a/lib/strings.nix b/lib/strings.nix index 1cc633c729d..a03694d1b1d 100644 --- a/lib/strings.nix +++ b/lib/strings.nix @@ -33,7 +33,7 @@ rec { concatImapStrings (pos: x: "${toString pos}-${x}") ["foo" "bar"] => "1-foo2-bar" */ - concatImapStrings = f: list: concatStrings (lib.imap f list); + concatImapStrings = f: list: concatStrings (lib.imap1 f list); /* Place an element between each element of a list @@ -70,7 +70,7 @@ rec { concatImapStringsSep "-" (pos: x: toString (x / pos)) [ 6 6 6 ] => "6-3-2" */ - concatImapStringsSep = sep: f: list: concatStringsSep sep (lib.imap f list); + concatImapStringsSep = sep: f: list: concatStringsSep sep (lib.imap1 f list); /* Construct a Unix-style search path consisting of each `subDir" directory of the given list of packages. diff --git a/lib/types.nix b/lib/types.nix index 50aa6d77085..a7dcd3f1e1c 100644 --- a/lib/types.nix +++ b/lib/types.nix @@ -179,9 +179,9 @@ rec { description = "list of ${elemType.description}s"; check = isList; merge = loc: defs: - map (x: x.value) (filter (x: x ? value) (concatLists (imap (n: def: + map (x: x.value) (filter (x: x ? value) (concatLists (imap1 (n: def: if isList def.value then - imap (m: def': + imap1 (m: def': (mergeDefinitions (loc ++ ["[definition ${toString n}-entry ${toString m}]"]) elemType @@ -220,7 +220,7 @@ rec { if isList def.value then { inherit (def) file; value = listToAttrs ( - imap (elemIdx: elem: + imap1 (elemIdx: elem: { name = elem.name or "unnamed-${toString defIdx}.${toString elemIdx}"; value = elem; }) def.value); @@ -233,7 +233,7 @@ rec { name = "loaOf"; description = "list or attribute set of ${elemType.description}s"; check = x: isList x || isAttrs x; - merge = loc: defs: attrOnly.merge loc (imap convertIfList defs); + merge = loc: defs: attrOnly.merge loc (imap1 convertIfList defs); getSubOptions = prefix: elemType.getSubOptions (prefix ++ ["<name?>"]); getSubModules = elemType.getSubModules; substSubModules = m: loaOf (elemType.substSubModules m); diff --git a/nixos/modules/misc/meta.nix b/nixos/modules/misc/meta.nix index 6a5738e47ff..7a1e751394c 100644 --- a/nixos/modules/misc/meta.nix +++ b/nixos/modules/misc/meta.nix @@ -17,7 +17,7 @@ let # } merge = loc: defs: zipAttrs - (flatten (imap (n: def: imap (m: def': + (flatten (imap1 (n: def: imap1 (m: def': maintainer.merge (loc ++ ["[${toString n}-${toString m}]"]) [{ inherit (def) file; value = def'; }]) def.value) defs)); }; diff --git a/nixos/modules/services/cluster/kubernetes.nix b/nixos/modules/services/cluster/kubernetes.nix index 68917af5094..4c9d9aad0e2 100644 --- a/nixos/modules/services/cluster/kubernetes.nix +++ b/nixos/modules/services/cluster/kubernetes.nix @@ -44,7 +44,7 @@ let cniConfig = pkgs.buildEnv { name = "kubernetes-cni-config"; - paths = imap (i: entry: + paths = imap1 (i: entry: pkgs.writeTextDir "${toString (10+i)}-${entry.type}.conf" (builtins.toJSON entry) ) cfg.kubelet.cni.config; }; diff --git a/nixos/modules/services/networking/libreswan.nix b/nixos/modules/services/networking/libreswan.nix index c87e738d2a2..e7a6c565f4f 100644 --- a/nixos/modules/services/networking/libreswan.nix +++ b/nixos/modules/services/networking/libreswan.nix @@ -11,7 +11,7 @@ let trim = chars: str: let nonchars = filter (x : !(elem x.value chars)) - (imap (i: v: {ind = (sub i 1); value = v;}) (stringToCharacters str)); + (imap0 (i: v: {ind = i; value = v;}) (stringToCharacters str)); in if length nonchars == 0 then "" else substring (head nonchars).ind (add 1 (sub (last nonchars).ind (head nonchars).ind)) str; diff --git a/nixos/modules/services/networking/networkmanager.nix b/nixos/modules/services/networking/networkmanager.nix index 58c93d8e2ac..f1b3d298fec 100644 --- a/nixos/modules/services/networking/networkmanager.nix +++ b/nixos/modules/services/networking/networkmanager.nix @@ -253,7 +253,7 @@ in { { source = overrideNameserversScript; target = "NetworkManager/dispatcher.d/02overridedns"; } - ++ lib.imap (i: s: { + ++ lib.imap1 (i: s: { inherit (s) source; target = "NetworkManager/dispatcher.d/${dispatcherTypesSubdirMap.${s.type}}03userscript${lib.fixedWidthNumber 4 i}"; }) cfg.dispatcherScripts; diff --git a/nixos/modules/services/x11/xserver.nix b/nixos/modules/services/x11/xserver.nix index bb9704fc26f..638509e710b 100644 --- a/nixos/modules/services/x11/xserver.nix +++ b/nixos/modules/services/x11/xserver.nix @@ -71,7 +71,7 @@ let name = "multihead${toString num}"; inherit config; }; - in imap mkHead cfg.xrandrHeads; + in imap1 mkHead cfg.xrandrHeads; xrandrDeviceSection = let monitors = flip map xrandrHeads (h: '' diff --git a/pkgs/applications/networking/instant-messengers/franz/default.nix b/pkgs/applications/networking/instant-messengers/franz/default.nix index d5ef754e173..a238009cd11 100644 --- a/pkgs/applications/networking/instant-messengers/franz/default.nix +++ b/pkgs/applications/networking/instant-messengers/franz/default.nix @@ -8,6 +8,17 @@ let version = "4.0.4"; + runtimeDeps = [ + udev libnotify + ]; + deps = (with xorg; [ + libXi libXcursor libXdamage libXrandr libXcomposite libXext libXfixes + libXrender libX11 libXtst libXScrnSaver + ]) ++ [ + gtk2 atk glib pango gdk_pixbuf cairo freetype fontconfig dbus + gnome2.GConf nss nspr alsaLib cups expat stdenv.cc.cc + ] ++ runtimeDeps; + desktopItem = makeDesktopItem rec { name = "Franz"; exec = name; @@ -28,17 +39,6 @@ in stdenv.mkDerivation rec { # don't remove runtime deps dontPatchELF = true; - deps = (with xorg; [ - libXi libXcursor libXdamage libXrandr libXcomposite libXext libXfixes - libXrender libX11 libXtst libXScrnSaver - ]) ++ [ - gtk2 atk glib pango gdk_pixbuf cairo freetype fontconfig dbus - gnome2.GConf nss nspr alsaLib cups expat stdenv.cc.cc - # runtime deps - ] ++ [ - udev libnotify - ]; - unpackPhase = '' tar xzf $src ''; @@ -65,7 +65,7 @@ in stdenv.mkDerivation rec { description = "A free messaging app that combines chat & messaging services into one application"; homepage = http://meetfranz.com; license = licenses.free; - maintainers = [ stdenv.lib.maintainers.gnidorah ]; + maintainers = [ maintainers.gnidorah ]; platforms = ["i686-linux" "x86_64-linux"]; hydraPlatforms = []; }; diff --git a/pkgs/applications/networking/instant-messengers/rambox/default.nix b/pkgs/applications/networking/instant-messengers/rambox/default.nix index 8f650e889f6..7cb89f019e0 100644 --- a/pkgs/applications/networking/instant-messengers/rambox/default.nix +++ b/pkgs/applications/networking/instant-messengers/rambox/default.nix @@ -6,7 +6,18 @@ let bits = if stdenv.system == "x86_64-linux" then "x64" else "ia32"; - version = "0.5.9"; + version = "0.5.10"; + + runtimeDeps = [ + udev libnotify + ]; + deps = (with xorg; [ + libXi libXcursor libXdamage libXrandr libXcomposite libXext libXfixes + libXrender libX11 libXtst libXScrnSaver libxcb + ]) ++ [ + gtk2 atk glib pango gdk_pixbuf cairo freetype fontconfig dbus + gnome2.GConf nss nspr alsaLib cups expat stdenv.cc.cc + ] ++ runtimeDeps; myIcon = fetchurl { url = "https://raw.githubusercontent.com/saenzramiro/rambox/9e4444e6297dd35743b79fe23f8d451a104028d5/resources/Icon.png"; @@ -25,24 +36,13 @@ in stdenv.mkDerivation rec { src = fetchurl { url = "https://github.com/saenzramiro/rambox/releases/download/${version}/Rambox-${version}-${bits}.tar.gz"; sha256 = if bits == "x64" then - "0wx1cj3h1h28lhvl8ysmvr2wxq39lklk37361i598vph2pvnibi0" else - "1dqjd5rmml63h3y43n1r68il3pn8zwy0wwr0866cnpizsbis96fy"; + "1i5jbhsfdbhr0rsb5w2pfpwjiagz47ppxk65qny3ay3lr4lbccn3" else + "1p1m6vsa9xvl3pjf3pygvllyk7j4q9vnlzmrizb8f5q30fpls25x"; }; # don't remove runtime deps dontPatchELF = true; - deps = (with xorg; [ - libXi libXcursor libXdamage libXrandr libXcomposite libXext libXfixes - libXrender libX11 libXtst libXScrnSaver libxcb - ]) ++ [ - gtk2 atk glib pango gdk_pixbuf cairo freetype fontconfig dbus - gnome2.GConf nss nspr alsaLib cups expat stdenv.cc.cc - # runtime deps - ] ++ [ - udev libnotify - ]; - installPhase = '' patchelf --set-interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" rambox patchelf --set-rpath "$out/opt/rambox:${stdenv.lib.makeLibraryPath deps}" rambox diff --git a/pkgs/applications/virtualization/virtualbox/default.nix b/pkgs/applications/virtualization/virtualbox/default.nix index 73ba76676b9..6675068bda9 100644 --- a/pkgs/applications/virtualization/virtualbox/default.nix +++ b/pkgs/applications/virtualization/virtualbox/default.nix @@ -88,7 +88,7 @@ in stdenv.mkDerivation { ''; patches = optional enableHardening ./hardened.patch - ++ [ ./qtx11extras.patch ]; + ++ [ ./qtx11extras.patch ./linux-4.12.patch ]; postPatch = '' sed -i -e 's|/sbin/ifconfig|${nettools}/bin/ifconfig|' \ diff --git a/pkgs/applications/virtualization/virtualbox/guest-additions/default.nix b/pkgs/applications/virtualization/virtualbox/guest-additions/default.nix index 3c9f28f4f2d..8865022c23e 100644 --- a/pkgs/applications/virtualization/virtualbox/guest-additions/default.nix +++ b/pkgs/applications/virtualization/virtualbox/guest-additions/default.nix @@ -62,6 +62,9 @@ stdenv.mkDerivation { for i in * do cd $i + # Files within the guest additions ISO are using DOS line endings + sed -re '/^(@@|---|\+\+\+)/!s/$/\r/' ${../linux-4.12.patch} \ + | patch -d vboxguest -p4 find . -type f | xargs sed 's/depmod -a/true/' -i make cd .. diff --git a/pkgs/applications/virtualization/virtualbox/linux-4.12.patch b/pkgs/applications/virtualization/virtualbox/linux-4.12.patch new file mode 100644 index 00000000000..7157365466f --- /dev/null +++ b/pkgs/applications/virtualization/virtualbox/linux-4.12.patch @@ -0,0 +1,80 @@ +commit 47fee9325e3b5feed0dbc4ba9e2de77c6d55e3bb +Author: vboxsync <vboxsync@cfe28804-0f27-0410-a406-dd0f0b0b656f> +Date: Wed May 17 09:42:23 2017 +0000 + + Runtime/r0drv: Linux 4.12 5-level page table adaptions + + + git-svn-id: https://www.virtualbox.org/svn/vbox/trunk@66927 cfe28804-0f27-0410-a406-dd0f0b0b656f + +diff --git a/src/VBox/Runtime/r0drv/linux/memobj-r0drv-linux.c b/src/VBox/Runtime/r0drv/linux/memobj-r0drv-linux.c +index 28dc33f963..41ed058860 100644 +--- a/src/VBox/Runtime/r0drv/linux/memobj-r0drv-linux.c ++++ b/src/VBox/Runtime/r0drv/linux/memobj-r0drv-linux.c +@@ -902,6 +902,9 @@ static struct page *rtR0MemObjLinuxVirtToPage(void *pv) + union + { + pgd_t Global; ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 12, 0) ++ p4d_t Four; ++#endif + #if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 11) + pud_t Upper; + #endif +@@ -917,12 +920,26 @@ static struct page *rtR0MemObjLinuxVirtToPage(void *pv) + u.Global = *pgd_offset(current->active_mm, ulAddr); + if (RT_UNLIKELY(pgd_none(u.Global))) + return NULL; +- +-#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 11) ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 12, 0) ++ u.Four = *p4d_offset(&u.Global, ulAddr); ++ if (RT_UNLIKELY(p4d_none(u.Four))) ++ return NULL; ++ if (p4d_large(u.Four)) ++ { ++ pPage = p4d_page(u.Four); ++ AssertReturn(pPage, NULL); ++ pfn = page_to_pfn(pPage); /* doing the safe way... */ ++ AssertCompile(P4D_SHIFT - PAGE_SHIFT < 31); ++ pfn += (ulAddr >> PAGE_SHIFT) & ((UINT32_C(1) << (P4D_SHIFT - PAGE_SHIFT)) - 1); ++ return pfn_to_page(pfn); ++ } ++ u.Upper = *pud_offset(&u.Four, ulAddr); ++#elif LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 11) + u.Upper = *pud_offset(&u.Global, ulAddr); ++#endif + if (RT_UNLIKELY(pud_none(u.Upper))) + return NULL; +-# if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 25) ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 25) + if (pud_large(u.Upper)) + { + pPage = pud_page(u.Upper); +@@ -931,8 +948,8 @@ static struct page *rtR0MemObjLinuxVirtToPage(void *pv) + pfn += (ulAddr >> PAGE_SHIFT) & ((UINT32_C(1) << (PUD_SHIFT - PAGE_SHIFT)) - 1); + return pfn_to_page(pfn); + } +-# endif +- ++#endif ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 11) + u.Middle = *pmd_offset(&u.Upper, ulAddr); + #else /* < 2.6.11 */ + u.Middle = *pmd_offset(&u.Global, ulAddr); +diff --git a/src/VBox/Runtime/r0drv/linux/the-linux-kernel.h b/src/VBox/Runtime/r0drv/linux/the-linux-kernel.h +index 5afdee9e71..20aab0817f 100644 +--- a/src/VBox/Runtime/r0drv/linux/the-linux-kernel.h ++++ b/src/VBox/Runtime/r0drv/linux/the-linux-kernel.h +@@ -159,6 +159,11 @@ + # include <asm/tlbflush.h> + #endif + ++/* for set_pages_x() */ ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 12, 0) ++# include <asm/set_memory.h> ++#endif ++ + #if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 7, 0) + # include <asm/smap.h> + #else diff --git a/pkgs/development/libraries/kirigami/default.nix b/pkgs/development/libraries/kirigami/default.nix index e24ad8196ee..1127f3e197d 100644 --- a/pkgs/development/libraries/kirigami/default.nix +++ b/pkgs/development/libraries/kirigami/default.nix @@ -1,5 +1,5 @@ { stdenv, fetchurl, cmake, extra-cmake-modules, pkgconfig -, plasma-framework, qtbase +, plasma-framework, qtbase, qttranslations , qtquickcontrols ? null , qtquickcontrols2 ? null }: @@ -15,7 +15,7 @@ let inherit sha256; }; - buildInputs = [ plasma-framework qtbase qtqc ]; + buildInputs = [ plasma-framework qtbase qtqc qttranslations ]; nativeBuildInputs = [ cmake pkgconfig extra-cmake-modules ]; diff --git a/pkgs/games/uqm/default.nix b/pkgs/games/uqm/default.nix index d6bcb787d60..d1416b0685a 100644 --- a/pkgs/games/uqm/default.nix +++ b/pkgs/games/uqm/default.nix @@ -18,7 +18,7 @@ let inherit stdenv requireFile writeText fetchurl haskellPackages; }; - remixPacks = imap (num: sha256: fetchurl rec { + remixPacks = imap1 (num: sha256: fetchurl rec { name = "uqm-remix-disc${toString num}.uqm"; url = "mirror://sourceforge/sc2/${name}"; inherit sha256; diff --git a/pkgs/os-specific/linux/kernel/linux-hardened-copperhead.nix b/pkgs/os-specific/linux/kernel/linux-hardened-copperhead.nix index fcd73823b89..b779e8298c0 100644 --- a/pkgs/os-specific/linux/kernel/linux-hardened-copperhead.nix +++ b/pkgs/os-specific/linux/kernel/linux-hardened-copperhead.nix @@ -1,15 +1,15 @@ { stdenv, hostPlatform, fetchFromGitHub, perl, buildLinux, ... } @ args: let - version = "4.12"; + version = "4.11.8"; revision = "a"; - sha256 = "1vh104y40b7lkmgdbr0rd56i6qydinijfnnzn5aj5fi4n0n750v6"; + sha256 = "02wy5gpgl2hz06dlqcgg9i3ydnxkyw0m1350vc5xyh6ld5r7jnn5"; in import ./generic.nix (args // { version = "${version}-${revision}"; - extraMeta.branch = "4.12"; - modDirVersion = "${version}.0"; + extraMeta.branch = "4.11"; + modDirVersion = version; src = fetchFromGitHub { inherit sha256; diff --git a/pkgs/stdenv/booter.nix b/pkgs/stdenv/booter.nix index d459deb6ab5..a1055708f99 100644 --- a/pkgs/stdenv/booter.nix +++ b/pkgs/stdenv/booter.nix @@ -73,7 +73,7 @@ stageFuns: let # Take the list and disallow custom overrides in all but the final stage, # and allow it in the final flag. Only defaults this boolean field if it # isn't already set. - withAllowCustomOverrides = lib.lists.imap + withAllowCustomOverrides = lib.lists.imap1 (index: stageFun: prevStage: # So true by default for only the first element because one # 1-indexing. Since we reverse the list, this means this is true diff --git a/pkgs/tools/misc/tlp/default.nix b/pkgs/tools/misc/tlp/default.nix index 9a2f9b65e8c..ff69fb01cea 100644 --- a/pkgs/tools/misc/tlp/default.nix +++ b/pkgs/tools/misc/tlp/default.nix @@ -14,13 +14,13 @@ let in stdenv.mkDerivation rec { name = "tlp-${version}"; - version = "0.9"; + version = "1.0"; src = fetchFromGitHub { owner = "linrunner"; repo = "TLP"; rev = "${version}"; - sha256 = "1gwi0h9klhdvqfqvmn297l1vyhj4g9dqvf50lcbswry02mvnd2vn"; + sha256 = "0gq1y1qnzwyv7cw32g4ymlfssi2ayrbnd04y4l242k6n41d05bij"; }; makeFlags = [ "DESTDIR=$(out)" |