From b244e57c9cb26bacc7186fd47efc93fb9a4f2cac Mon Sep 17 00:00:00 2001 From: Frederik Rietdijk Date: Mon, 9 Oct 2017 18:21:41 +0200 Subject: [PATCH 01/43] python.pkgs.django: make gdal support optional --- pkgs/development/python-modules/django/1_11.nix | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/pkgs/development/python-modules/django/1_11.nix b/pkgs/development/python-modules/django/1_11.nix index 483a8eb23d0..8bb4c4cae69 100644 --- a/pkgs/development/python-modules/django/1_11.nix +++ b/pkgs/development/python-modules/django/1_11.nix @@ -1,6 +1,7 @@ { stdenv, buildPythonPackage, fetchurl, substituteAll, pythonOlder, - geos, gdal, pytz + geos, gdal, pytz, + withGdal ? false }: buildPythonPackage rec { @@ -15,7 +16,7 @@ buildPythonPackage rec { sha256 = "0a9bk1a0n0264lcr67fmwzqyhkhy6bqdzkxsj9a8dpyzca0qfdhq"; }; - patches = [ + patches = stdenv.lib.optionals withGdal [ (substituteAll { src = ./1.10-gis-libs.template.patch; geos = geos; From b28bd2a81ff15421e726b070c8ec0079169bba21 Mon Sep 17 00:00:00 2001 From: Matthew Justin Bauer Date: Thu, 12 Oct 2017 00:38:18 -0500 Subject: [PATCH 02/43] Update CODEOWNERS to use darwin-maintainers team This sets up the Darwin-maintainers team as CODEOWNERS for Darwin paths. So anyone in that team will get notified (instead of just listing individuals). /cc @org/darwin-maintainers --- .github/CODEOWNERS | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index 24983cb5287..124a1d19ecb 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -35,9 +35,8 @@ pkgs/applications/science/math/R @peti pkgs/development/r-modules @peti # Darwin-related -pkgs/stdenv/darwin/* @copumpkin @LnL7 -pkgs/os-specific/darwin/* @LnL7 -pkgs/os-specific/darwin/apple-source-releases/* @copumpkin +/pkgs/stdenv/darwin/ @org/darwin-maintainers +/pkgs/os-specific/darwin/ @org/darwin-maintainers # Beam-related (Erlang, Elixir, LFE, etc) pkgs/development/beam-modules/* @gleber From 67d56ea69937f416dc374fcf2cb07273eb770b66 Mon Sep 17 00:00:00 2001 From: Lancelot SIX Date: Fri, 13 Oct 2017 09:33:25 +0200 Subject: [PATCH 03/43] pythonPackages.django: 1.11.5 -> 1.11.6 This is a bugfix release. See https://docs.djangoproject.com/en/1.11/releases/1.11.6/ --- pkgs/development/python-modules/django/1_11.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/development/python-modules/django/1_11.nix b/pkgs/development/python-modules/django/1_11.nix index 483a8eb23d0..35845faced7 100644 --- a/pkgs/development/python-modules/django/1_11.nix +++ b/pkgs/development/python-modules/django/1_11.nix @@ -6,13 +6,13 @@ buildPythonPackage rec { pname = "Django"; name = "${pname}-${version}"; - version = "1.11.5"; + version = "1.11.6"; disabled = pythonOlder "2.7"; src = fetchurl { url = "http://www.djangoproject.com/m/releases/1.11/${name}.tar.gz"; - sha256 = "0a9bk1a0n0264lcr67fmwzqyhkhy6bqdzkxsj9a8dpyzca0qfdhq"; + sha256 = "0q0cmwifa6c0k6kh8fpa3mjmqw7yqd616qz8m4ls3h51xyhjrd63"; }; patches = [ From 36bbc3cfda6ca2fa4e9dee29cda925c966cda03b Mon Sep 17 00:00:00 2001 From: rnhmjoj Date: Mon, 16 Oct 2017 23:52:42 +0200 Subject: [PATCH 04/43] nixos/compton: improve options type-checking --- nixos/modules/services/x11/compton.nix | 69 +++++++++++++++----------- 1 file changed, 41 insertions(+), 28 deletions(-) diff --git a/nixos/modules/services/x11/compton.nix b/nixos/modules/services/x11/compton.nix index 42ceeb81980..fcccf98c9cf 100644 --- a/nixos/modules/services/x11/compton.nix +++ b/nixos/modules/services/x11/compton.nix @@ -7,12 +7,15 @@ let cfg = config.services.compton; - configFile = let - opacityRules = optionalString (length cfg.opacityRules != 0) - (concatStringsSep "\n" - (map (a: "opacity-rule = [ \"${a}\" ];") cfg.opacityRules) - ); - in pkgs.writeText "compton.conf" + floatBetween = a: b: with lib; with types; + addCheck str (x: versionAtLeast x a && versionOlder x b); + + pairOf = x: with types; addCheck (listOf x) (y: lib.length y == 2); + + opacityRules = optionalString (length cfg.opacityRules != 0) + (concatMapStringsSep ",\n" (rule: ''"${rule}"'') cfg.opacityRules); + + configFile = pkgs.writeText "compton.conf" (optionalString cfg.fade '' # fading fading = true; @@ -36,7 +39,9 @@ let inactive-opacity = ${cfg.inactiveOpacity}; menu-opacity = ${cfg.menuOpacity}; - ${opacityRules} + opacity-rule = [ + ${opacityRules} + ]; # other options backend = ${toJSON cfg.backend}; @@ -64,7 +69,7 @@ in { }; fadeDelta = mkOption { - type = types.int; + type = types.addCheck types.int (x: x > 0); default = 10; example = 5; description = '' @@ -73,11 +78,12 @@ in { }; fadeSteps = mkOption { - type = types.listOf types.str; + type = pairOf (floatBetween "0.01" "1.01"); default = [ "0.028" "0.03" ]; example = [ "0.04" "0.04" ]; description = '' Opacity change between fade steps (in and out). + (numbers in range 0.01 - 1.0) ''; }; @@ -104,7 +110,7 @@ in { }; shadowOffsets = mkOption { - type = types.listOf types.int; + type = pairOf types.int; default = [ (-15) (-15) ]; example = [ (-10) (-15) ]; description = '' @@ -113,11 +119,11 @@ in { }; shadowOpacity = mkOption { - type = types.str; + type = floatBetween "0.0" "1.01"; default = "0.75"; example = "0.8"; description = '' - Window shadows opacity (number in range 0 - 1). + Window shadows opacity (number in range 0.0 - 1.0). ''; }; @@ -136,42 +142,46 @@ in { }; activeOpacity = mkOption { - type = types.str; + type = floatBetween "0.0" "1.01"; default = "1.0"; example = "0.8"; description = '' - Opacity of active windows. + Opacity of active windows (number in range 0.0 - 1.0). ''; }; inactiveOpacity = mkOption { - type = types.str; + type = floatBetween "0.1" "1.01"; default = "1.0"; example = "0.8"; description = '' - Opacity of inactive windows. + Opacity of inactive windows (number in range 0.1 - 1.0). ''; }; menuOpacity = mkOption { - type = types.str; + type = floatBetween "0.0" "1.01"; default = "1.0"; example = "0.8"; description = '' - Opacity of dropdown and popup menu. + Opacity of dropdown and popup menu (number in range 0.0 - 1.0). ''; }; opacityRules = mkOption { type = types.listOf types.str; default = []; + example = [ + "95:class_g = 'URxvt' && !_NET_WM_STATE@:32a" + "0:_NET_WM_STATE@:32a *= '_NET_WM_STATE_HIDDEN'" + ]; description = '' - Opacity rules to be handled by compton. + Rules that control the opacity of windows, in format PERCENT:PATTERN. ''; }; backend = mkOption { - type = types.str; + type = types.enum [ "glx" "xrender" ]; default = "glx"; description = '' Backend to use: glx or xrender. @@ -179,17 +189,20 @@ in { }; vSync = mkOption { - type = types.str; - default = "none"; - example = "opengl-swc"; - description = '' - Enable vertical synchronization using the specified method. - See compton(1) man page available methods. - ''; + type = types.enum [ + "none" "drm" "opengl" + "opengl-oml" "opengl-swc" "opengl-mswc" + ]; + default = "none"; + example = "opengl-swc"; + description = '' + Enable vertical synchronization using the specified method. + See compton(1) man page an explanation. + ''; }; refreshRate = mkOption { - type = types.int; + type = types.addCheck types.int (x: x >= 0); default = 0; example = 60; description = '' From 3918385f29e01e0f17eaf074d4832af581e8e687 Mon Sep 17 00:00:00 2001 From: rnhmjoj Date: Mon, 16 Oct 2017 23:54:10 +0200 Subject: [PATCH 05/43] nixos/compton: use xrender by default --- nixos/modules/services/x11/compton.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/nixos/modules/services/x11/compton.nix b/nixos/modules/services/x11/compton.nix index fcccf98c9cf..8701354b528 100644 --- a/nixos/modules/services/x11/compton.nix +++ b/nixos/modules/services/x11/compton.nix @@ -182,7 +182,7 @@ in { backend = mkOption { type = types.enum [ "glx" "xrender" ]; - default = "glx"; + default = "xrender"; description = '' Backend to use: glx or xrender. ''; From 1101eebefdb160f8743893a1a8227396e898830d Mon Sep 17 00:00:00 2001 From: Samuel Leathers Date: Mon, 16 Oct 2017 10:18:18 -0400 Subject: [PATCH 06/43] wlc: 0.0.9 -> 0.0.10 --- pkgs/development/libraries/wlc/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/development/libraries/wlc/default.nix b/pkgs/development/libraries/wlc/default.nix index c67070094de..95a8603e08c 100644 --- a/pkgs/development/libraries/wlc/default.nix +++ b/pkgs/development/libraries/wlc/default.nix @@ -7,14 +7,14 @@ stdenv.mkDerivation rec { name = "wlc-${version}"; - version = "0.0.9"; # 0.0.10 currently causes segfaults + version = "0.0.10"; src = fetchFromGitHub { owner = "Cloudef"; repo = "wlc"; rev = "v${version}"; fetchSubmodules = true; - sha256 = "1r6jf64gs7n9a8129wsc0mdwhcv44p8k87kg0714rhx3g2w22asg"; + sha256 = "09kvwhrpgkxlagn9lgqxc80jbg56djn29a6z0n6h0dsm90ysyb2k"; }; nativeBuildInputs = [ cmake pkgconfig ]; From 1dc92fe688f5e5bba904b6e60dc6a47d127a0a0b Mon Sep 17 00:00:00 2001 From: Samuel Leathers Date: Mon, 16 Oct 2017 21:47:59 -0400 Subject: [PATCH 07/43] sway: 0.13.0 -> 0.14.0 --- pkgs/applications/window-managers/sway/default.nix | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/pkgs/applications/window-managers/sway/default.nix b/pkgs/applications/window-managers/sway/default.nix index 2c94f7f6fec..8de87d2e8fd 100644 --- a/pkgs/applications/window-managers/sway/default.nix +++ b/pkgs/applications/window-managers/sway/default.nix @@ -5,17 +5,15 @@ , libXdmcp }: -let - # TODO: Sway 0.14.0 with wlc 0.0.10 segfaults - version = "0.13.0"; -in stdenv.mkDerivation rec { +stdenv.mkDerivation rec { name = "sway-${version}"; + version = "0.14.0"; src = fetchFromGitHub { owner = "Sircmpwn"; repo = "sway"; rev = "${version}"; - sha256 = "1vgk4rl51nx66yzpwg4yhnbj7wc30k5q0hh5lf8y0i1nvpal0p3q"; + sha256 = "1l8v9cdzd44bm4q71d47vqg6933b8j42q1a61r362vz2la1rcpq2"; }; nativeBuildInputs = [ From c800d574bfc5c173b3d248fe447c42a6aa9e817e Mon Sep 17 00:00:00 2001 From: Jun Hao Date: Sat, 14 Oct 2017 13:19:58 +0800 Subject: [PATCH 08/43] qt5: fix Darwin build for 5.9.2 --- .../libraries/qt-5/5.9/qtbase/default.nix | 4 +- .../5.9/qtbase/mkspecs-features-mac.patch | 66 +++++++++++-------- .../qt-5/qtbase-setup-hook-darwin.sh | 3 +- 3 files changed, 45 insertions(+), 28 deletions(-) diff --git a/pkgs/development/libraries/qt-5/5.9/qtbase/default.nix b/pkgs/development/libraries/qt-5/5.9/qtbase/default.nix index fc5e5d39c63..418a13fc991 100644 --- a/pkgs/development/libraries/qt-5/5.9/qtbase/default.nix +++ b/pkgs/development/libraries/qt-5/5.9/qtbase/default.nix @@ -86,7 +86,7 @@ stdenv.mkDerivation { '' substituteInPlace configure --replace /bin/pwd pwd substituteInPlace src/corelib/global/global.pri --replace /bin/ls ${coreutils}/bin/ls - sed -e 's@/\(usr\|opt\)/@/var/empty/@g' -i config.tests/*/*.test -i mkspecs/*/*.conf + sed -e 's@/\(usr\|opt\)/@/var/empty/@g' -i mkspecs/*/*.conf sed -i '/PATHS.*NO_DEFAULT_PATH/ d' src/corelib/Qt5Config.cmake.in sed -i '/PATHS.*NO_DEFAULT_PATH/ d' src/corelib/Qt5CoreMacros.cmake @@ -105,6 +105,7 @@ stdenv.mkDerivation { -e 's|! /usr/bin/xcode-select --print-path >/dev/null 2>&1;|false;|' \ -e 's|! /usr/bin/xcrun -find xcodebuild >/dev/null 2>&1;|false;|' \ -e 's|sysroot=$(/usr/bin/xcodebuild -sdk $sdk -version Path 2>/dev/null)|sysroot=/nonsense|' \ + -e 's|sysroot=$(/usr/bin/xcrun --sdk $sdk --show-sdk-path 2>/dev/null)|sysroot=/nonsense|' \ -e 's|QMAKE_CONF_COMPILER=`getXQMakeConf QMAKE_CXX`|QMAKE_CXX="clang++"\nQMAKE_CONF_COMPILER="clang++"|' \ -e 's|XCRUN=`/usr/bin/xcrun -sdk macosx clang -v 2>&1`|XCRUN="clang -v 2>&1"|' \ -e 's#sdk_val=$(/usr/bin/xcrun -sdk $sdk -find $(echo $val | cut -d \x27 \x27 -f 1))##' \ @@ -155,6 +156,7 @@ stdenv.mkDerivation { ++ lib.optionals stdenv.isDarwin [ + "-Wno-missing-sysroot" "-D__MAC_OS_X_VERSION_MAX_ALLOWED=1090" "-D__AVAILABILITY_INTERNAL__MAC_10_10=__attribute__((availability(macosx,introduced=10.10)))" # Note that nixpkgs's objc4 is from macOS 10.11 while the SDK is diff --git a/pkgs/development/libraries/qt-5/5.9/qtbase/mkspecs-features-mac.patch b/pkgs/development/libraries/qt-5/5.9/qtbase/mkspecs-features-mac.patch index 6f7baa558db..46d950a767b 100644 --- a/pkgs/development/libraries/qt-5/5.9/qtbase/mkspecs-features-mac.patch +++ b/pkgs/development/libraries/qt-5/5.9/qtbase/mkspecs-features-mac.patch @@ -1,7 +1,7 @@ -diff -u qtbase-opensource-src-5.9.1.orig/mkspecs/features/mac/default_post.prf qtbase-opensource-src-5.9.1/mkspecs/features/mac/default_post.prf ---- qtbase-opensource-src-5.9.1.orig/mkspecs/features/mac/default_post.prf 2017-09-16 16:40:30.000000000 +0800 -+++ qtbase-opensource-src-5.9.1/mkspecs/features/mac/default_post.prf 2017-09-16 16:41:03.000000000 +0800 -@@ -24,165 +24,3 @@ +diff -u -r qtbase-opensource-src-5.9.2.orig/mkspecs/features/mac/default_post.prf qtbase-opensource-src-5.9.2/mkspecs/features/mac/default_post.prf +--- qtbase-opensource-src-5.9.2.orig/mkspecs/features/mac/default_post.prf 2017-10-14 12:31:04.000000000 +0800 ++++ qtbase-opensource-src-5.9.2/mkspecs/features/mac/default_post.prf 2017-10-14 12:42:02.000000000 +0800 +@@ -24,166 +24,3 @@ } } } @@ -164,13 +164,14 @@ diff -u qtbase-opensource-src-5.9.1.orig/mkspecs/features/mac/default_post.prf q -} - -cache(QMAKE_XCODE_DEVELOPER_PATH, stash) --cache(QMAKE_XCODE_VERSION, stash) +-!isEmpty(QMAKE_XCODE_VERSION): \ +- cache(QMAKE_XCODE_VERSION, stash) - -QMAKE_XCODE_LIBRARY_SUFFIX = $$qtPlatformTargetSuffix() -diff -u qtbase-opensource-src-5.9.1.orig/mkspecs/features/mac/default_pre.prf qtbase-opensource-src-5.9.1/mkspecs/features/mac/default_pre.prf ---- qtbase-opensource-src-5.9.1.orig/mkspecs/features/mac/default_pre.prf 2017-09-16 16:40:30.000000000 +0800 -+++ qtbase-opensource-src-5.9.1/mkspecs/features/mac/default_pre.prf 2017-09-16 16:40:45.000000000 +0800 -@@ -1,51 +1,2 @@ +diff -u -r qtbase-opensource-src-5.9.2.orig/mkspecs/features/mac/default_pre.prf qtbase-opensource-src-5.9.2/mkspecs/features/mac/default_pre.prf +--- qtbase-opensource-src-5.9.2.orig/mkspecs/features/mac/default_pre.prf 2017-10-14 12:31:04.000000000 +0800 ++++ qtbase-opensource-src-5.9.2/mkspecs/features/mac/default_pre.prf 2017-10-14 12:42:02.000000000 +0800 +@@ -1,56 +1,2 @@ CONFIG = asset_catalogs rez $$CONFIG load(default_pre) - @@ -183,18 +184,23 @@ diff -u qtbase-opensource-src-5.9.1.orig/mkspecs/features/mac/default_pre.prf qt - # Make sure Xcode path is valid - !exists($$QMAKE_XCODE_DEVELOPER_PATH): \ - error("Xcode is not installed in $${QMAKE_XCODE_DEVELOPER_PATH}. Please use xcode-select to choose Xcode installation path.") -- -- # Make sure Xcode is set up properly -- isEmpty($$list($$system("/usr/bin/xcrun -find xcodebuild 2>/dev/null"))): \ -- error("Xcode not set up properly. You may need to confirm the license agreement by running /usr/bin/xcodebuild.") -} - --isEmpty(QMAKE_XCODE_VERSION) { -- # Extract Xcode version using xcodebuild -- xcode_version = $$system("/usr/bin/xcodebuild -version") -- QMAKE_XCODE_VERSION = $$member(xcode_version, 1) -- isEmpty(QMAKE_XCODE_VERSION): error("Could not resolve Xcode version.") -- unset(xcode_version) +-isEmpty(QMAKE_XCODEBUILD_PATH): \ +- QMAKE_XCODEBUILD_PATH = $$system("/usr/bin/xcrun -find xcodebuild 2>/dev/null") +- +-!isEmpty(QMAKE_XCODEBUILD_PATH) { +- # Make sure Xcode is set up properly +- !system("/usr/bin/xcrun xcodebuild -license check 2>/dev/null"): \ +- error("Xcode not set up properly. You need to confirm the license agreement by running 'sudo xcrun xcodebuild -license accept'.") +- +- isEmpty(QMAKE_XCODE_VERSION) { +- # Extract Xcode version using xcodebuild +- xcode_version = $$system("/usr/bin/xcrun xcodebuild -version") +- QMAKE_XCODE_VERSION = $$member(xcode_version, 1) +- isEmpty(QMAKE_XCODE_VERSION): error("Could not resolve Xcode version.") +- unset(xcode_version) +- } -} - -isEmpty(QMAKE_TARGET_BUNDLE_PREFIX) { @@ -222,10 +228,10 @@ diff -u qtbase-opensource-src-5.9.1.orig/mkspecs/features/mac/default_pre.prf qt -# feature, which allows Xcode to choose the Qt libraries to link to -# at build time, depending on the current Xcode SDK and configuration. -QMAKE_XCODE_LIBRARY_SUFFIX_SETTING = QT_LIBRARY_SUFFIX -diff -u qtbase-opensource-src-5.9.1.orig/mkspecs/features/mac/sdk.prf qtbase-opensource-src-5.9.1/mkspecs/features/mac/sdk.prf ---- qtbase-opensource-src-5.9.1.orig/mkspecs/features/mac/sdk.prf 2017-09-16 16:40:30.000000000 +0800 -+++ qtbase-opensource-src-5.9.1/mkspecs/features/mac/sdk.prf 2017-09-16 16:41:16.000000000 +0800 -@@ -1,49 +0,0 @@ +diff -u -r qtbase-opensource-src-5.9.2.orig/mkspecs/features/mac/sdk.prf qtbase-opensource-src-5.9.2/mkspecs/features/mac/sdk.prf +--- qtbase-opensource-src-5.9.2.orig/mkspecs/features/mac/sdk.prf 2017-10-14 12:31:04.000000000 +0800 ++++ qtbase-opensource-src-5.9.2/mkspecs/features/mac/sdk.prf 2017-10-14 12:42:10.000000000 +0800 +@@ -1,58 +0,0 @@ - -isEmpty(QMAKE_MAC_SDK): \ - error("QMAKE_MAC_SDK must be set when using CONFIG += sdk.") @@ -235,13 +241,22 @@ diff -u qtbase-opensource-src-5.9.1.orig/mkspecs/features/mac/sdk.prf qtbase-ope - -defineReplace(xcodeSDKInfo) { - info = $$1 +- equals(info, "Path"): \ +- info = --show-sdk-path +- equals(info, "PlatformPath"): \ +- info = --show-sdk-platform-path +- equals(info, "SDKVersion"): \ +- info = --show-sdk-version - sdk = $$2 - isEmpty(sdk): \ - sdk = $$QMAKE_MAC_SDK - - isEmpty(QMAKE_MAC_SDK.$${sdk}.$${info}) { -- QMAKE_MAC_SDK.$${sdk}.$${info} = $$system("/usr/bin/xcodebuild -sdk $$sdk -version $$info 2>/dev/null") -- isEmpty(QMAKE_MAC_SDK.$${sdk}.$${info}): error("Could not resolve SDK $$info for \'$$sdk\'") +- QMAKE_MAC_SDK.$${sdk}.$${info} = $$system("/usr/bin/xcrun --sdk $$sdk $$info 2>/dev/null") +- # --show-sdk-platform-path won't work for Command Line Tools; this is fine +- # only used by the XCTest backend to testlib +- isEmpty(QMAKE_MAC_SDK.$${sdk}.$${info}):if(!isEmpty(QMAKE_XCODEBUILD_PATH)|!equals(info, "--show-sdk-platform-path")): \ +- error("Could not resolve SDK $$info for \'$$sdk\'") - cache(QMAKE_MAC_SDK.$${sdk}.$${info}, set stash, QMAKE_MAC_SDK.$${sdk}.$${info}) - } - @@ -275,4 +290,3 @@ diff -u qtbase-opensource-src-5.9.1.orig/mkspecs/features/mac/sdk.prf qtbase-ope - $$tool = $$sysrooted $$member(value, 1, -1) - cache($$tool_variable, set stash, $$tool) -} -Common subdirectories: qtbase-opensource-src-5.9.1.orig/mkspecs/features/mac/unsupported and qtbase-opensource-src-5.9.1/mkspecs/features/mac/unsupported diff --git a/pkgs/development/libraries/qt-5/qtbase-setup-hook-darwin.sh b/pkgs/development/libraries/qt-5/qtbase-setup-hook-darwin.sh index 4458e18a454..ce1dada0c47 100644 --- a/pkgs/development/libraries/qt-5/qtbase-setup-hook-darwin.sh +++ b/pkgs/development/libraries/qt-5/qtbase-setup-hook-darwin.sh @@ -182,7 +182,8 @@ _qtFixCMakePaths() { find "${!outputLib}" -name "*.cmake" | while read file; do substituteInPlace "$file" \ --subst-var-by NIX_OUT "${!outputLib}" \ - --subst-var-by NIX_DEV "${!outputDev}" + --subst-var-by NIX_DEV "${!outputDev}" \ + --subst-var-by NIX_BIN "${!outputBin}" done } From 717436b4aa029cbd6161fdf49938fc955f3a46a0 Mon Sep 17 00:00:00 2001 From: Samuel Leathers Date: Wed, 18 Oct 2017 00:16:33 -0400 Subject: [PATCH 09/43] gitea: init at 1.2.1 --- .../version-management/gitea/default.nix | 50 +++++++++++++++++++ .../gitea/static-root-path.patch | 13 +++++ 2 files changed, 63 insertions(+) create mode 100644 pkgs/applications/version-management/gitea/default.nix create mode 100644 pkgs/applications/version-management/gitea/static-root-path.patch diff --git a/pkgs/applications/version-management/gitea/default.nix b/pkgs/applications/version-management/gitea/default.nix new file mode 100644 index 00000000000..734b9d3629c --- /dev/null +++ b/pkgs/applications/version-management/gitea/default.nix @@ -0,0 +1,50 @@ +{ stdenv, buildGoPackage, fetchFromGitHub, makeWrapper +, git, coreutils, bash, gzip, openssh +, sqliteSupport ? true +}: + +with stdenv.lib; + +buildGoPackage rec { + name = "gitea-${version}"; + version = "1.2.1"; + + src = fetchFromGitHub { + owner = "go-gitea"; + repo = "gitea"; + rev = "v${version}"; + sha256 = "15zw4b6hnx4hmzn2xlsi4p7jvh6jx4g4smbdidnrzrykzyq4rmpp"; + }; + + patches = [ ./static-root-path.patch ]; + + postPatch = '' + patchShebangs . + substituteInPlace modules/setting/setting.go --subst-var data + ''; + + nativeBuildInputs = [ makeWrapper ]; + + buildFlags = optionalString sqliteSupport "-tags sqlite"; + + outputs = [ "bin" "out" "data" ]; + + postInstall = '' + mkdir $data + cp -R $src/{public,templates} $data + mkdir -p $out + cp -R $src/options/locale $out/locale + + wrapProgram $bin/bin/gitea \ + --prefix PATH : ${makeBinPath [ bash git gzip openssh ]} + ''; + + goPackagePath = "code.gitea.io/gitea"; + + meta = { + description = "Git with a cup of tea"; + homepage = http://gitea.io; + license = licenses.mit; + maintainers = [ maintainers.disassembler ]; + }; +} diff --git a/pkgs/applications/version-management/gitea/static-root-path.patch b/pkgs/applications/version-management/gitea/static-root-path.patch new file mode 100644 index 00000000000..06ce521e9e8 --- /dev/null +++ b/pkgs/applications/version-management/gitea/static-root-path.patch @@ -0,0 +1,13 @@ +diff --git i/modules/setting/setting.go w/modules/setting/setting.go +index aafe2d1b..1e4a8064 100644 +--- i/modules/setting/setting.go ++++ w/modules/setting/setting.go +@@ -683,7 +683,7 @@ func NewContext() { + LocalURL = sec.Key("LOCAL_ROOT_URL").MustString(defaultLocalURL) + OfflineMode = sec.Key("OFFLINE_MODE").MustBool() + DisableRouterLog = sec.Key("DISABLE_ROUTER_LOG").MustBool() +- StaticRootPath = sec.Key("STATIC_ROOT_PATH").MustString(workDir) ++ StaticRootPath = sec.Key("STATIC_ROOT_PATH").MustString("@data@") + AppDataPath = sec.Key("APP_DATA_PATH").MustString("data") + EnableGzip = sec.Key("ENABLE_GZIP").MustBool() + EnablePprof = sec.Key("ENABLE_PPROF").MustBool(false) From 98c7361d3ba065610c10566cba9db2086d868f9c Mon Sep 17 00:00:00 2001 From: xd1le Date: Thu, 19 Oct 2017 02:03:36 +1100 Subject: [PATCH 10/43] idrisPackages.lightyear: 2016-08-01 -> 2017-09-10 --- pkgs/development/idris-modules/lightyear.nix | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pkgs/development/idris-modules/lightyear.nix b/pkgs/development/idris-modules/lightyear.nix index 11afd4ebe76..27828e6f41f 100644 --- a/pkgs/development/idris-modules/lightyear.nix +++ b/pkgs/development/idris-modules/lightyear.nix @@ -8,7 +8,7 @@ }: let - date = "2016-08-01"; + date = "2017-09-10"; in build-idris-package { name = "lightyear-${date}"; @@ -16,8 +16,8 @@ build-idris-package { src = fetchFromGitHub { owner = "ziman"; repo = "lightyear"; - rev = "9420f9e892e23a7016dea1a61d8ce43a6d4ecf15"; - sha256 = "0xbjwq7sk4x78mi2zcqxbx7wziijlr1ayxihb1vml33lqmsgl1dn"; + rev = "f737e25a09c1fe7c5fff063c53bd7458be232cc8"; + sha256 = "05x66abhpbdm6yr0afbwfk6w04ysdk78gylj5alhgwhy4jqakv29"; }; propagatedBuildInputs = [ prelude base effects ]; From 66201d49bb3f2a0c2e2c4665791880b7a32f0622 Mon Sep 17 00:00:00 2001 From: Samuel Leathers Date: Wed, 18 Oct 2017 00:16:46 -0400 Subject: [PATCH 11/43] gitea: add nixos service module --- nixos/modules/module-list.nix | 1 + nixos/modules/services/misc/gitea.nix | 270 ++++++++++++++++++++++++++ pkgs/top-level/all-packages.nix | 2 + 3 files changed, 273 insertions(+) create mode 100644 nixos/modules/services/misc/gitea.nix diff --git a/nixos/modules/module-list.nix b/nixos/modules/module-list.nix index a8cb957ffe2..7486f27ec1a 100644 --- a/nixos/modules/module-list.nix +++ b/nixos/modules/module-list.nix @@ -296,6 +296,7 @@ ./services/misc/fstrim.nix ./services/misc/gammu-smsd.nix ./services/misc/geoip-updater.nix + ./services/misc/gitea.nix #./services/misc/gitit.nix ./services/misc/gitlab.nix ./services/misc/gitolite.nix diff --git a/nixos/modules/services/misc/gitea.nix b/nixos/modules/services/misc/gitea.nix new file mode 100644 index 00000000000..f0b44b7bede --- /dev/null +++ b/nixos/modules/services/misc/gitea.nix @@ -0,0 +1,270 @@ +{ config, lib, pkgs, ... }: + +with lib; + +let + cfg = config.services.gitea; + configFile = pkgs.writeText "app.ini" '' + APP_NAME = ${cfg.appName} + RUN_USER = ${cfg.user} + RUN_MODE = prod + + [database] + DB_TYPE = ${cfg.database.type} + HOST = ${cfg.database.host}:${toString cfg.database.port} + NAME = ${cfg.database.name} + USER = ${cfg.database.user} + PASSWD = #dbpass# + PATH = ${cfg.database.path} + + [repository] + ROOT = ${cfg.repositoryRoot} + + [server] + DOMAIN = ${cfg.domain} + HTTP_ADDR = ${cfg.httpAddress} + HTTP_PORT = ${toString cfg.httpPort} + ROOT_URL = ${cfg.rootUrl} + STATIC_ROOT_PATH = ${cfg.staticRootPath} + + [session] + COOKIE_NAME = session + COOKIE_SECURE = ${boolToString cfg.cookieSecure} + + [security] + SECRET_KEY = #secretkey# + INSTALL_LOCK = true + + ${cfg.extraConfig} + ''; +in + +{ + options = { + services.gitea = { + enable = mkOption { + default = false; + type = types.bool; + description = "Enable Gitea Service."; + }; + + useWizard = mkOption { + default = false; + type = types.bool; + description = "Do not generate a configuration and use gitea' installation wizard instead. The first registered user will be administrator."; + }; + + stateDir = mkOption { + default = "/var/lib/gitea"; + type = types.str; + description = "gitea data directory."; + }; + + user = mkOption { + type = types.str; + default = "gitea"; + description = "User account under which gitea runs."; + }; + + database = { + type = mkOption { + type = types.enum [ "sqlite3" "mysql" "postgres" ]; + example = "mysql"; + default = "sqlite3"; + description = "Database engine to use."; + }; + + host = mkOption { + type = types.str; + default = "127.0.0.1"; + description = "Database host address."; + }; + + port = mkOption { + type = types.int; + default = 3306; + description = "Database host port."; + }; + + name = mkOption { + type = types.str; + default = "gitea"; + description = "Database name."; + }; + + user = mkOption { + type = types.str; + default = "gitea"; + description = "Database user."; + }; + + password = mkOption { + type = types.str; + default = ""; + description = '' + The password corresponding to . + Warning: this is stored in cleartext in the Nix store! + Use instead. + ''; + }; + + passwordFile = mkOption { + type = types.nullOr types.path; + default = null; + example = "/run/keys/gitea-dbpassword"; + description = '' + A file containing the password corresponding to + . + ''; + }; + + path = mkOption { + type = types.str; + default = "${cfg.stateDir}/data/gitea.db"; + description = "Path to the sqlite3 database file."; + }; + }; + + appName = mkOption { + type = types.str; + default = "gitea: Gitea Service"; + description = "Application name."; + }; + + repositoryRoot = mkOption { + type = types.str; + default = "${cfg.stateDir}/repositories"; + description = "Path to the git repositories."; + }; + + domain = mkOption { + type = types.str; + default = "localhost"; + description = "Domain name of your server."; + }; + + rootUrl = mkOption { + type = types.str; + default = "http://localhost:3000/"; + description = "Full public URL of gitea server."; + }; + + httpAddress = mkOption { + type = types.str; + default = "0.0.0.0"; + description = "HTTP listen address."; + }; + + httpPort = mkOption { + type = types.int; + default = 3000; + description = "HTTP listen port."; + }; + + cookieSecure = mkOption { + type = types.bool; + default = false; + description = '' + Marks session cookies as "secure" as a hint for browsers to only send + them via HTTPS. This option is recommend, if gitea is being served over HTTPS. + ''; + }; + + staticRootPath = mkOption { + type = types.str; + default = "${pkgs.gitea.data}"; + example = "/var/lib/gitea/data"; + description = "Upper level of template and static files path."; + }; + + extraConfig = mkOption { + type = types.str; + default = ""; + description = "Configuration lines appended to the generated gitea configuration file."; + }; + }; + }; + + config = mkIf cfg.enable { + + systemd.services.gitea = { + description = "gitea"; + after = [ "network.target" ]; + wantedBy = [ "multi-user.target" ]; + path = [ pkgs.gitea.bin ]; + + preStart = let + runConfig = "${cfg.stateDir}/custom/conf/app.ini"; + secretKey = "${cfg.stateDir}/custom/conf/secret_key"; + in '' + mkdir -p ${cfg.stateDir} + + # copy custom configuration and generate a random secret key if needed + ${optionalString (cfg.useWizard == false) '' + mkdir -p ${cfg.stateDir}/custom/conf + cp -f ${configFile} ${runConfig} + + if [ ! -e ${secretKey} ]; then + head -c 16 /dev/urandom | base64 > ${secretKey} + fi + + KEY=$(head -n1 ${secretKey}) + DBPASS=$(head -n1 ${cfg.database.passwordFile}) + sed -e "s,#secretkey#,$KEY,g" \ + -e "s,#dbpass#,$DBPASS,g" \ + -i ${runConfig} + chmod 640 ${runConfig} ${secretKey} + ''} + + mkdir -p ${cfg.repositoryRoot} + # update all hooks' binary paths + HOOKS=$(find ${cfg.repositoryRoot} -mindepth 4 -maxdepth 4 -type f -wholename "*git/hooks/*") + if [ "$HOOKS" ] + then + sed -ri 's,/nix/store/[a-z0-9.-]+/bin/gitea,${pkgs.gitea.bin}/bin/gitea,g' $HOOKS + sed -ri 's,/nix/store/[a-z0-9.-]+/bin/env,${pkgs.coreutils}/bin/env,g' $HOOKS + sed -ri 's,/nix/store/[a-z0-9.-]+/bin/bash,${pkgs.bash}/bin/bash,g' $HOOKS + sed -ri 's,/nix/store/[a-z0-9.-]+/bin/perl,${pkgs.perl}/bin/perl,g' $HOOKS + fi + if [ ! -d ${cfg.stateDir}/conf/locale ] + then + mkdir -p ${cfg.stateDir}/conf + cp -r ${pkgs.gitea.out}/locale ${cfg.stateDir}/conf/locale + fi + ''; + + serviceConfig = { + Type = "simple"; + User = cfg.user; + WorkingDirectory = cfg.stateDir; + ExecStart = "${pkgs.gitea.bin}/bin/gitea web"; + Restart = "always"; + }; + + environment = { + USER = cfg.user; + HOME = cfg.stateDir; + GITEA_WORK_DIR = cfg.stateDir; + }; + }; + + users = mkIf (cfg.user == "gitea") { + extraUsers.gitea = { + description = "Gitea Service"; + home = cfg.stateDir; + createHome = true; + }; + }; + + warnings = optional (cfg.database.password != "") + ''config.services.gitea.database.password will be stored as plaintext + in the Nix store. Use database.passwordFile instead.''; + + # Create database passwordFile default when password is configured. + services.gitea.database.passwordFile = + (mkDefault (toString (pkgs.writeTextFile { + name = "gitea-database-password"; + text = cfg.database.password; + }))); + }; +} diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 6bef03ff836..84bf74a2234 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -2255,6 +2255,8 @@ with pkgs; git-latexdiff = callPackage ../tools/typesetting/git-latexdiff { }; + gitea = callPackage ../applications/version-management/gitea { }; + glusterfs = callPackage ../tools/filesystems/glusterfs { }; glmark2 = callPackage ../tools/graphics/glmark2 { }; From 922bd8182e060e576150b0bc442f116d0a6eca1e Mon Sep 17 00:00:00 2001 From: Michael Peyton Jones Date: Mon, 16 Oct 2017 15:46:10 -0700 Subject: [PATCH 12/43] tzupdate: init at 1.2.0 --- pkgs/applications/misc/tzupdate/default.nix | 24 +++++++++++++++++++++ pkgs/top-level/all-packages.nix | 2 ++ 2 files changed, 26 insertions(+) create mode 100644 pkgs/applications/misc/tzupdate/default.nix diff --git a/pkgs/applications/misc/tzupdate/default.nix b/pkgs/applications/misc/tzupdate/default.nix new file mode 100644 index 00000000000..7eb0f2d41b5 --- /dev/null +++ b/pkgs/applications/misc/tzupdate/default.nix @@ -0,0 +1,24 @@ +{ stdenv, python }: + +let + inherit (python.pkgs) buildPythonApplication fetchPypi requests; +in +buildPythonApplication rec { + name = "${pname}-${version}"; + pname = "tzupdate"; + version = "1.2.0"; + + src = fetchPypi { + inherit pname version; + sha256 = "1wj2r1wirnn5kllaasdldimvp3cc3w7w890iqrjksz5wwjbnj8pk"; + }; + + propagatedBuildInputs = [ requests ]; + + meta = with stdenv.lib; { + description = "Update timezone information based on geoip."; + homepage = https://github.com/cdown/tzupdate; + maintainers = [ maintainers.michaelpj ]; + license = licenses.unlicense; + }; +} diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 6bef03ff836..6076927584f 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -4635,6 +4635,8 @@ with pkgs; timetrap = callPackage ../applications/office/timetrap { }; + tzupdate = callPackage ../applications/misc/tzupdate { }; + tinc = callPackage ../tools/networking/tinc { }; tie = callPackage ../development/tools/misc/tie { }; From 281bf1ddeda5705cc23ee0cf0bf95cbeb84832a0 Mon Sep 17 00:00:00 2001 From: Michael Peyton Jones Date: Tue, 17 Oct 2017 09:26:02 -0700 Subject: [PATCH 13/43] tzupdate service: init --- nixos/modules/module-list.nix | 1 + nixos/modules/services/misc/tzupdate.nix | 45 ++++++++++++++++++++++++ 2 files changed, 46 insertions(+) create mode 100644 nixos/modules/services/misc/tzupdate.nix diff --git a/nixos/modules/module-list.nix b/nixos/modules/module-list.nix index a8cb957ffe2..4c92c28dda9 100644 --- a/nixos/modules/module-list.nix +++ b/nixos/modules/module-list.nix @@ -343,6 +343,7 @@ ./services/misc/svnserve.nix ./services/misc/synergy.nix ./services/misc/taskserver + ./services/misc/tzupdate.nix ./services/misc/uhub.nix ./services/misc/zookeeper.nix ./services/monitoring/apcupsd.nix diff --git a/nixos/modules/services/misc/tzupdate.nix b/nixos/modules/services/misc/tzupdate.nix new file mode 100644 index 00000000000..570982ced29 --- /dev/null +++ b/nixos/modules/services/misc/tzupdate.nix @@ -0,0 +1,45 @@ +{ config, lib, pkgs, ... }: + +with lib; + +let + cfg = config.services.tzupdate; +in { + options.services.tzupdate = { + enable = mkOption { + type = types.bool; + default = false; + description = '' + Enable the tzupdate timezone updating service. This provides + a one-shot service which can be activated with systemctl to + update the timezone. + ''; + }; + }; + + config = mkIf cfg.enable { + # We need to have imperative time zone management for this to work. + # This will give users an error if they have set an explicit time + # zone, which is better than silently overriding it. + time.timeZone = null; + + # We provide a one-shot service which can be manually run. We could + # provide a service that runs on startup, but it's tricky to get + # a service to run after you have *internet* access. + systemd.services.tzupdate = { + description = "tzupdate timezone update service"; + wants = [ "network-online.target" ]; + after = [ "network-online.target" ]; + + serviceConfig = { + Type = "oneshot"; + # We could link directly into pkgs.tzdata, but at least timedatectl seems + # to expect the symlink to point directly to a file in etc. + # Setting the "debian timezone file" to point at /dev/null stops it doing anything. + ExecStart = "${pkgs.tzupdate}/bin/tzupdate -z /etc/zoneinfo -d /dev/null"; + }; + }; + }; + + meta.maintainers = [ maintainers.michaelpj ]; +} From 19efa65f59f7b219c316f9d349bd9968fe7e202c Mon Sep 17 00:00:00 2001 From: Dmitry Kalinkin Date: Thu, 19 Oct 2017 00:25:24 -0400 Subject: [PATCH 14/43] texlive: fix after dependency update --- pkgs/tools/typesetting/tex/texlive/bin.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/pkgs/tools/typesetting/tex/texlive/bin.nix b/pkgs/tools/typesetting/tex/texlive/bin.nix index 34a689ee9bd..30979e312fc 100644 --- a/pkgs/tools/typesetting/tex/texlive/bin.nix +++ b/pkgs/tools/typesetting/tex/texlive/bin.nix @@ -187,6 +187,7 @@ core-big = stdenv.mkDerivation { #TODO: upmendex ''; preBuild = "cd texk/web2c"; + CXXFLAGS = "-std=c++11 -Wno-reserved-user-defined-literal"; # TODO: remove once texlive 2017 is out? enableParallelBuilding = true; # now distribute stuff into outputs, roughly as upstream TL From 38b94d1f1f7c6ac691b6131986fcec0da342a3f3 Mon Sep 17 00:00:00 2001 From: Nikolay Amiantov Date: Thu, 19 Oct 2017 17:05:35 +0300 Subject: [PATCH 15/43] wt: 3.3.6 -> 4.0.0 Fix build with new Boost. --- pkgs/development/libraries/wt/cmake.patch | 10 ---------- pkgs/development/libraries/wt/default.nix | 6 ++---- 2 files changed, 2 insertions(+), 14 deletions(-) delete mode 100644 pkgs/development/libraries/wt/cmake.patch diff --git a/pkgs/development/libraries/wt/cmake.patch b/pkgs/development/libraries/wt/cmake.patch deleted file mode 100644 index e7b1f87411d..00000000000 --- a/pkgs/development/libraries/wt/cmake.patch +++ /dev/null @@ -1,10 +0,0 @@ ---- a/CMakeLists.txt 2016-07-13 14:27:26.000000000 +0200 -+++ b/CMakeLists.txt 2016-08-16 12:58:28.135652964 +0200 -@@ -6,6 +6,7 @@ - CMAKE_POLICY(SET CMP0002 OLD) - CMAKE_POLICY(SET CMP0003 OLD) - CMAKE_POLICY(SET CMP0005 OLD) -+ CMAKE_POLICY(SET CMP0037 OLD) - ENDIF(COMMAND CMAKE_POLICY) - - PROJECT(WT) diff --git a/pkgs/development/libraries/wt/default.nix b/pkgs/development/libraries/wt/default.nix index 5d4caed890a..8dc6db03bc3 100644 --- a/pkgs/development/libraries/wt/default.nix +++ b/pkgs/development/libraries/wt/default.nix @@ -4,13 +4,13 @@ stdenv.mkDerivation rec { name = "wt"; - version = "3.3.6"; + version = "4.0.0"; src = fetchFromGitHub { owner = "kdeforche"; repo = name; rev = version; - sha256 = "1pvykc969l9cpd0da8bgpi4gr8f6qczrbpprrxamyj1pn0ydzvq3"; + sha256 = "1451xxvnx6mlvxg0jxlr1mfv5v18h2214kijk5kacilqashfc43i"; }; enableParallelBuilding = true; @@ -28,8 +28,6 @@ stdenv.mkDerivation rec { "--no-warn-unused-cli" ]; - patches = [ ./cmake.patch ]; # fix a cmake warning; PR sent to upstream - meta = with stdenv.lib; { homepage = https://www.webtoolkit.eu/wt; description = "C++ library for developing web applications"; From f3d368b93fcaf4c5f5109cb772f2b63ccd7cc6ae Mon Sep 17 00:00:00 2001 From: Nikolay Amiantov Date: Thu, 19 Oct 2017 17:22:49 +0300 Subject: [PATCH 16/43] python.pkgs.python-mapnik: 2016-08-30 -> 3.0.13 --- pkgs/top-level/python-packages.nix | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix index 4f395232005..a0eb42209d0 100644 --- a/pkgs/top-level/python-packages.nix +++ b/pkgs/top-level/python-packages.nix @@ -6671,14 +6671,15 @@ in { }; }; - python-mapnik = buildPythonPackage { - name = "python-mapnik-git-2016-08-30"; + python-mapnik = buildPythonPackage rec { + name = "python-mapnik-${version}"; + version = "3.0.13"; src = pkgs.fetchFromGitHub { owner = "mapnik"; repo = "python-mapnik"; - rev = "541fd962d4fc99d50ec472af6ddccfdbf98cff37"; - sha256 = "1d93qjnzggdpbhnmxlmk5jh0zd2jnpfl4n4aip5ypd39ilqibhf3"; + rev = "v${version}"; + sha256 = "0biw9bfkbsgfyjihyvkj4abx9s9r3h81rk6dc1y32022rypsqhkp"; }; disabled = isPyPy; From 47299d94f1766cbd44e43075c6858dfb10941922 Mon Sep 17 00:00:00 2001 From: Tristan Helmich Date: Thu, 19 Oct 2017 12:18:45 +0200 Subject: [PATCH 17/43] uftp: 4.9.3 -> 4.9.4 --- pkgs/servers/uftp/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/servers/uftp/default.nix b/pkgs/servers/uftp/default.nix index 2e32f75c867..102868c0d46 100644 --- a/pkgs/servers/uftp/default.nix +++ b/pkgs/servers/uftp/default.nix @@ -2,11 +2,11 @@ stdenv.mkDerivation rec { name = "uftp-${version}"; - version = "4.9.3"; + version = "4.9.4"; src = fetchurl { url = "mirror://sourceforge/uftp-multicast/source-tar/uftp-${version}.tar.gz"; - sha256 = "13y7k6g6jksnllw0mwgzw4dqczh5c5hvq3zlqin7q98m0fpib4ly"; + sha256 = "1npfl7n1w2l0j6c6iizw1szzq0lz9wy6jb55qmwhfkzwj0zd7mqp"; }; buildInputs = [ openssl ]; From 22de3b48cf388774cc5d351ff62cef059458d1ce Mon Sep 17 00:00:00 2001 From: Robin Gloster Date: Wed, 18 Oct 2017 16:53:24 +0200 Subject: [PATCH 18/43] python.pkgs.colorlover: init at 0.2.1 --- .../python-modules/colorlover/default.nix | 23 +++++++++++++++++++ pkgs/top-level/python-packages.nix | 2 ++ 2 files changed, 25 insertions(+) create mode 100644 pkgs/development/python-modules/colorlover/default.nix diff --git a/pkgs/development/python-modules/colorlover/default.nix b/pkgs/development/python-modules/colorlover/default.nix new file mode 100644 index 00000000000..7c2147a6431 --- /dev/null +++ b/pkgs/development/python-modules/colorlover/default.nix @@ -0,0 +1,23 @@ +{ buildPythonPackage, fetchPypi, python, stdenv, nose +}: + +buildPythonPackage rec { + pname = "colorlover"; + version = "0.2.1"; + name = "${pname}-${version}"; + + src = fetchPypi { + inherit pname version; + sha256 = "1clwvssrj007r07prfvkqnpjy3f77dlp584lj879x8mwl8f0japi"; + }; + + # no tests included in distributed archive + doCheck = false; + + meta = { + homepage = https://github.com/jackparmer/colorlover; + description = "Color scales in Python for humans"; + license = stdenv.lib.licenses.mit; + maintainers = with stdenv.lib.maintainers; [ globin ]; + }; +} diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix index a0eb42209d0..f167d50e4ec 100644 --- a/pkgs/top-level/python-packages.nix +++ b/pkgs/top-level/python-packages.nix @@ -2932,6 +2932,8 @@ in { colorama = callPackage ../development/python-modules/colorama { }; + colorlover = callPackage ../development/python-modules/colorlover { }; + CommonMark = buildPythonPackage rec { name = "CommonMark-${version}"; version = "0.6.3"; From c6adc2e3487e09ef7bd61ab1bd244af84e2d6be4 Mon Sep 17 00:00:00 2001 From: Robin Gloster Date: Wed, 18 Oct 2017 16:54:05 +0200 Subject: [PATCH 19/43] python.pkgs.cufflinks: init at 0.12.0 --- .../python-modules/cufflinks/default.nix | 25 +++++++++++++++++++ pkgs/top-level/python-packages.nix | 2 ++ 2 files changed, 27 insertions(+) create mode 100644 pkgs/development/python-modules/cufflinks/default.nix diff --git a/pkgs/development/python-modules/cufflinks/default.nix b/pkgs/development/python-modules/cufflinks/default.nix new file mode 100644 index 00000000000..620f85e436d --- /dev/null +++ b/pkgs/development/python-modules/cufflinks/default.nix @@ -0,0 +1,25 @@ +{ buildPythonPackage, stdenv, fetchPypi, pandas, plotly, colorlover +}: + +buildPythonPackage rec { + pname = "cufflinks"; + version = "0.12.0"; + name = "${pname}-${version}"; + + src = fetchPypi { + inherit pname version; + sha256 = "04ninvwm6277n3hqc17ririss90cd832wza3q3vf115rrrds3xyy"; + }; + + propagatedBuildInputs = [ pandas plotly colorlover ]; + + # tests not included in archive + doCheck = false; + + meta = { + homepage = https://github.com/santosjorge/cufflinks; + description = "Productivity Tools for Plotly + Pandas"; + license = stdenv.lib.licenses.mit; + maintainers = with stdenv.lib.maintainers; [ globin ]; + }; +} diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix index f167d50e4ec..0f4cdf69171 100644 --- a/pkgs/top-level/python-packages.nix +++ b/pkgs/top-level/python-packages.nix @@ -1669,6 +1669,8 @@ in { csvkit = callPackage ../development/python-modules/csvkit { }; + cufflinks = callPackage ../development/python-modules/cufflinks { }; + cx_Freeze = callPackage ../development/python-modules/cx_freeze {}; cvxopt = buildPythonPackage rec { From f8085cb1dd8f86253e57330371f00147a98ac3ae Mon Sep 17 00:00:00 2001 From: Joerg Thalheim Date: Tue, 17 Oct 2017 15:09:42 +0100 Subject: [PATCH 20/43] nixos/sway: add module --- nixos/modules/module-list.nix | 1 + nixos/modules/programs/sway.nix | 19 +++++++++++++++++++ 2 files changed, 20 insertions(+) create mode 100644 nixos/modules/programs/sway.nix diff --git a/nixos/modules/module-list.nix b/nixos/modules/module-list.nix index a8cb957ffe2..e8fecafb2c8 100644 --- a/nixos/modules/module-list.nix +++ b/nixos/modules/module-list.nix @@ -99,6 +99,7 @@ ./programs/ssh.nix ./programs/ssmtp.nix ./programs/sysdig.nix + ./programs/sway.nix ./programs/thefuck.nix ./programs/tmux.nix ./programs/venus.nix diff --git a/nixos/modules/programs/sway.nix b/nixos/modules/programs/sway.nix new file mode 100644 index 00000000000..fc8a06d106a --- /dev/null +++ b/nixos/modules/programs/sway.nix @@ -0,0 +1,19 @@ +{ config, pkgs, lib, ... }: + +with lib; +{ + options.programs.sway.enable = mkEnableOption "sway"; + + config = mkIf config.programs.sway.enable { + environment.systemPackages = [ pkgs.sway pkgs.xwayland ]; + security.wrappers.sway = { + source = "${pkgs.sway}/bin/sway"; + capabilities = "cap_sys_ptrace,cap_sys_tty_config=eip"; + owner = "root"; + group = "sway"; + permissions = "u+rx,g+rx"; + }; + + users.extraGroups.sway = {}; + }; +} From 9cf797408c453f9413cf890072273a7882d14ce2 Mon Sep 17 00:00:00 2001 From: James Earl Douglas Date: Thu, 19 Oct 2017 08:57:37 -0600 Subject: [PATCH 21/43] jenkins: 2.84 -> 2.85 --- .../tools/continuous-integration/jenkins/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/development/tools/continuous-integration/jenkins/default.nix b/pkgs/development/tools/continuous-integration/jenkins/default.nix index bcd63769915..1c5950a04c2 100644 --- a/pkgs/development/tools/continuous-integration/jenkins/default.nix +++ b/pkgs/development/tools/continuous-integration/jenkins/default.nix @@ -2,11 +2,11 @@ stdenv.mkDerivation rec { name = "jenkins-${version}"; - version = "2.84"; + version = "2.85"; src = fetchurl { url = "http://mirrors.jenkins-ci.org/war/${version}/jenkins.war"; - sha256 = "0pwmviaps4gbv9a3sdn17kqdv9jmh5fpbms1wm95jfj77m5dyyq6"; + sha256 = "0z8rv6fxsvnw71f8s711n9s60r8jd43bigy9rqz5805k3xa68whr"; }; buildCommand = '' From d8842199cb4b178e4c2b634dee355b92d524af37 Mon Sep 17 00:00:00 2001 From: Joerg Thalheim Date: Mon, 16 Oct 2017 11:35:44 +0100 Subject: [PATCH 22/43] splUnstable: 2017-09-26 -> 2017-10-16 --- pkgs/os-specific/linux/spl/default.nix | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pkgs/os-specific/linux/spl/default.nix b/pkgs/os-specific/linux/spl/default.nix index 75fbacfb90e..5e0f83c4c68 100644 --- a/pkgs/os-specific/linux/spl/default.nix +++ b/pkgs/os-specific/linux/spl/default.nix @@ -68,8 +68,8 @@ in }; splUnstable = common { - version = "2017-09-26"; - rev = "e8474f9ad3b3d23c3277535c4f53f8fd1e6cbd74"; - sha256 = "0251cnffgx98nckgz6imwa8dnvba44wc02aacmr1n430gmq72xra"; + version = "2017-10-16"; + rev = "28920ea3346c1c905c5f727ea3e54297e6257568"; + sha256 = "0m42na009ivb9q9gz15ra94wqx5xdw18waanm56aqzrjxbqqa3ll"; }; } From 485fe616576be7805bcc10222db5e17ea049beb5 Mon Sep 17 00:00:00 2001 From: Joerg Thalheim Date: Mon, 16 Oct 2017 11:36:01 +0100 Subject: [PATCH 23/43] zfsUnstable: 2017-09-26 -> 2017-10-16 --- pkgs/os-specific/linux/zfs/default.nix | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/pkgs/os-specific/linux/zfs/default.nix b/pkgs/os-specific/linux/zfs/default.nix index dfcb3896244..bfa8dac72ba 100644 --- a/pkgs/os-specific/linux/zfs/default.nix +++ b/pkgs/os-specific/linux/zfs/default.nix @@ -2,7 +2,7 @@ , configFile ? "all" # Userspace dependencies -, zlib, libuuid, python, attr +, zlib, libuuid, python, attr, openssl # Kernel dependencies , kernel ? null, spl ? null, splUnstable ? null @@ -41,7 +41,8 @@ let nativeBuildInputs = [ autoreconfHook nukeReferences ]; buildInputs = optionals buildKernel [ spl ] - ++ optionals buildUser [ zlib libuuid python attr ]; + ++ optionals buildUser [ zlib libuuid python attr ] + ++ optionals (buildUser && isUnstable) [ openssl ]; # for zdb to get the rpath to libgcc_s, needed for pthread_cancel to work NIX_CFLAGS_LINK = "-lgcc_s"; @@ -158,10 +159,10 @@ in { incompatibleKernelVersion = null; # this package should point to a version / git revision compatible with the latest kernel release - version = "2017-09-26"; + version = "2017-10-16"; - rev = "7e98073379353a05498ac5a2f1a5df2a2257d6b0"; - sha256 = "1hydfhmngpq31gxkxipqxnin74l760d1ia202h12vsgix9sp32h7"; + rev = "7670f721fc82e6cdcdd31f83760a79b6f2f2b998"; + sha256 = "0ask9d9936s7mhs9q5wzvn6c8fd322i76hs2n7fajfk17b1a1lkj"; isUnstable = true; extraPatches = [ From c5f71751977b2891ad3b58df13166272262e02d6 Mon Sep 17 00:00:00 2001 From: Kamil Chmielewski Date: Wed, 18 Oct 2017 09:14:33 +0200 Subject: [PATCH 24/43] ponyc: 0.19.3 -> 0.20.0 https://github.com/ponylang/ponyc/issues/2286 --- pkgs/development/compilers/ponyc/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/development/compilers/ponyc/default.nix b/pkgs/development/compilers/ponyc/default.nix index 63c1d97006f..8c744e7038e 100644 --- a/pkgs/development/compilers/ponyc/default.nix +++ b/pkgs/development/compilers/ponyc/default.nix @@ -3,13 +3,13 @@ stdenv.mkDerivation ( rec { name = "ponyc-${version}"; - version = "0.19.3"; + version = "0.20.0"; src = fetchFromGitHub { owner = "ponylang"; repo = "ponyc"; rev = version; - sha256 = "0aishczaasp877z1a17iq0vk6pp369bv7yz5mvinr7wm44930qr3"; + sha256 = "0shln9v0bp0q9qfipm3834vl284q5vwz9333yzgx46d0l2ivggyi"; }; buildInputs = [ llvm makeWrapper which ]; From 1923cabeb4dae8fe9e6655d375cbd638965b1b9d Mon Sep 17 00:00:00 2001 From: Vincent Laporte Date: Fri, 22 Sep 2017 07:20:08 +0000 Subject: [PATCH 25/43] ocamlPackages: default to 4.04 --- pkgs/applications/virtualization/xen/4.5.nix | 3 +- pkgs/tools/audio/liquidsoap/full.nix | 6 +-- pkgs/top-level/all-packages.nix | 40 ++++++++++---------- pkgs/top-level/ocaml-packages.nix | 2 +- 4 files changed, 26 insertions(+), 25 deletions(-) diff --git a/pkgs/applications/virtualization/xen/4.5.nix b/pkgs/applications/virtualization/xen/4.5.nix index 5fe4fa823fe..614122a3b24 100644 --- a/pkgs/applications/virtualization/xen/4.5.nix +++ b/pkgs/applications/virtualization/xen/4.5.nix @@ -1,4 +1,5 @@ { stdenv, callPackage, fetchurl, fetchpatch, fetchgit +, ocamlPackages_4_02 , withInternalQemu ? true , withInternalTraditionalQemu ? true , withInternalSeabios ? true @@ -414,4 +415,4 @@ callPackage (import ./generic.nix (rec { -i tools/libxl/libxl_device.c ''; -})) args +})) ({ ocamlPackages = ocamlPackages_4_02; } // args) diff --git a/pkgs/tools/audio/liquidsoap/full.nix b/pkgs/tools/audio/liquidsoap/full.nix index 318bb2859e5..eb544fc693e 100644 --- a/pkgs/tools/audio/liquidsoap/full.nix +++ b/pkgs/tools/audio/liquidsoap/full.nix @@ -1,5 +1,5 @@ { stdenv, fetchurl, which, pkgconfig -, ocaml, ocamlPackages +, ocamlPackages , libao, portaudio, alsaLib, libpulseaudio, libjack2 , libsamplerate, libmad, taglib, lame, libogg , libvorbis, speex, libtheora, libopus, fdk_aac @@ -26,7 +26,7 @@ stdenv.mkDerivation { configureFlags = [ "--localstatedir=/var" ]; buildInputs = - [ which ocaml ocamlPackages.findlib pkgconfig + [ which ocamlPackages.ocaml ocamlPackages.findlib pkgconfig libao portaudio alsaLib libpulseaudio libjack2 libsamplerate libmad taglib lame libogg libvorbis speex libtheora libopus fdk_aac @@ -40,6 +40,6 @@ stdenv.mkDerivation { homepage = http://liquidsoap.fm/; maintainers = with maintainers; [ ehmry ]; license = licenses.gpl2; - platforms = ocaml.meta.platforms or []; + platforms = ocamlPackages.ocaml.meta.platforms or []; }; } diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 677357e4782..49fb69b9e3d 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -1149,9 +1149,7 @@ with pkgs; nfdump = callPackage ../tools/networking/nfdump { }; - patdiff = callPackage ../tools/misc/patdiff { - ocamlPackages = ocamlPackages_4_03; - }; + patdiff = callPackage ../tools/misc/patdiff { }; playerctl = callPackage ../tools/audio/playerctl { }; @@ -2893,6 +2891,7 @@ with pkgs; liquidsoap = callPackage ../tools/audio/liquidsoap/full.nix { ffmpeg = ffmpeg_2; + ocamlPackages = ocamlPackages_4_02; }; lksctp-tools = callPackage ../os-specific/linux/lksctp-tools { }; @@ -4379,7 +4378,7 @@ with pkgs; skippy-xd = callPackage ../tools/X11/skippy-xd {}; - sks = callPackage ../servers/sks { inherit (ocamlPackages) ocaml camlp4; }; + sks = callPackage ../servers/sks { inherit (ocamlPackages_4_02) ocaml camlp4; }; skydns = callPackage ../servers/skydns { }; @@ -6145,9 +6144,7 @@ with pkgs; ocaml-top = callPackage ../development/tools/ocaml/ocaml-top { }; - ocsigen-i18n = callPackage ../development/tools/ocaml/ocsigen-i18n { - ocamlPackages = ocamlPackages_4_03; - }; + ocsigen-i18n = callPackage ../development/tools/ocaml/ocsigen-i18n { }; opa = callPackage ../development/compilers/opa { nodejs = nodejs-4_x; @@ -6286,6 +6283,7 @@ with pkgs; }; teyjus = callPackage ../development/compilers/teyjus { + inherit (ocamlPackages_4_02) ocaml; omake = omake_rc1; }; @@ -7187,10 +7185,12 @@ with pkgs; flow = callPackage ../development/tools/analysis/flow { inherit (darwin.apple_sdk.frameworks) CoreServices; inherit (darwin) cf-private; - inherit (ocamlPackages_4_03) ocaml findlib camlp4 sedlex ocamlbuild; + inherit (ocamlPackages) ocaml findlib camlp4 sedlex ocamlbuild; }; - framac = callPackage ../development/tools/analysis/frama-c { }; + framac = callPackage ../development/tools/analysis/frama-c { + ocamlPackages = ocamlPackages_4_03; + }; frame = callPackage ../development/libraries/frame { }; @@ -7412,9 +7412,7 @@ with pkgs; noweb = callPackage ../development/tools/literate-programming/noweb { }; nuweb = callPackage ../development/tools/literate-programming/nuweb { tex = texlive.combined.scheme-small; }; - obelisk = callPackage ../development/tools/ocaml/obelisk { - ocamlPackages = ocaml-ng.ocamlPackages_4_03; - }; + obelisk = callPackage ../development/tools/ocaml/obelisk { }; obuild = callPackage ../development/tools/ocaml/obuild { }; @@ -15418,7 +15416,7 @@ with pkgs; bison = bison2; }; - llpp = ocaml-ng.ocamlPackages_4_04.callPackage ../applications/misc/llpp { }; + llpp = ocaml-ng.ocamlPackages.callPackage ../applications/misc/llpp { }; lmms = callPackage ../applications/audio/lmms { stdenv = overrideCC stdenv gcc5; @@ -15920,7 +15918,7 @@ with pkgs; opusTools = callPackage ../applications/audio/opus-tools { }; - orpie = callPackage ../applications/misc/orpie { gsl = gsl_1; }; + orpie = callPackage ../applications/misc/orpie { gsl = gsl_1; ocamlPackages = ocamlPackages_4_02; }; osmo = callPackage ../applications/office/osmo { }; @@ -16571,7 +16569,7 @@ with pkgs; stalonetray = callPackage ../applications/window-managers/stalonetray {}; - inherit (ocamlPackages_4_03) stog; + inherit (ocamlPackages) stog; stp = callPackage ../applications/science/logic/stp {}; @@ -18497,9 +18495,7 @@ with pkgs; abella = callPackage ../applications/science/logic/abella {}; - acgtk = callPackage ../applications/science/logic/acgtk { - ocamlPackages = ocamlPackages_4_03; - }; + acgtk = callPackage ../applications/science/logic/acgtk { }; alt-ergo = callPackage ../applications/science/logic/alt-ergo { ocamlPackages = ocamlPackages_4_02; @@ -18600,7 +18596,9 @@ with pkgs; }; cvc4 = callPackage ../applications/science/logic/cvc4 {}; - ekrhyper = callPackage ../applications/science/logic/ekrhyper {}; + ekrhyper = callPackage ../applications/science/logic/ekrhyper { + inherit (ocamlPackages_4_02) ocaml; + }; eprover = callPackage ../applications/science/logic/eprover { }; @@ -18631,7 +18629,9 @@ with pkgs; java = if stdenv.isLinux then jre else jdk; }; - iprover = callPackage ../applications/science/logic/iprover {}; + iprover = callPackage ../applications/science/logic/iprover { + inherit (ocamlPackages_4_02) ocaml; + }; jonprl = callPackage ../applications/science/logic/jonprl { smlnj = if stdenv.isDarwin diff --git a/pkgs/top-level/ocaml-packages.nix b/pkgs/top-level/ocaml-packages.nix index 275c0739ce6..c27cb1bcdfd 100644 --- a/pkgs/top-level/ocaml-packages.nix +++ b/pkgs/top-level/ocaml-packages.nix @@ -986,5 +986,5 @@ in rec ocamlPackages_latest = ocamlPackages_4_05; - ocamlPackages = ocamlPackages_4_02; + ocamlPackages = ocamlPackages_4_04; } From b17ec549a14a4b3fb8cdfff914afddd65fee942e Mon Sep 17 00:00:00 2001 From: gnidorah Date: Thu, 19 Oct 2017 13:35:09 +0300 Subject: [PATCH 26/43] pythonPackages.fontconfig: init at 0.5.1 --- .../python-fontconfig/default.nix | 30 +++++++++++++++++++ pkgs/top-level/python-packages.nix | 2 ++ 2 files changed, 32 insertions(+) create mode 100644 pkgs/development/python-modules/python-fontconfig/default.nix diff --git a/pkgs/development/python-modules/python-fontconfig/default.nix b/pkgs/development/python-modules/python-fontconfig/default.nix new file mode 100644 index 00000000000..a8faadffc11 --- /dev/null +++ b/pkgs/development/python-modules/python-fontconfig/default.nix @@ -0,0 +1,30 @@ +{ lib, buildPythonPackage, fetchPypi, fontconfig, python, freefont_ttf, makeFontsConf }: + +let + fontsConf = makeFontsConf { + fontDirectories = [ freefont_ttf ]; + }; +in buildPythonPackage rec { + pname = "Python-fontconfig"; + version = "0.5.1"; + name = "${pname}-${version}"; + + src = fetchPypi { + inherit pname version; + sha256 = "154rfd0ygcbj9y8m32n537b457yijpfx9dvmf76vi0rg4ikf7kxp"; + }; + + buildInputs = [ fontconfig ]; + + checkPhase = '' + export FONTCONFIG_FILE=${fontsConf}; + echo y | ${python.interpreter} test/test.py + ''; + + meta = { + homepage = https://github.com/Vayn/python-fontconfig; + description = "Python binding for Fontconfig"; + license = lib.licenses.gpl3; + maintainers = with lib.maintainers; [ gnidorah ]; + }; +} diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix index 0f4cdf69171..daee60ccec4 100644 --- a/pkgs/top-level/python-packages.nix +++ b/pkgs/top-level/python-packages.nix @@ -535,6 +535,8 @@ in { }; } else null; + python-fontconfig = callPackage ../development/python-modules/python-fontconfig { }; + funcsigs = callPackage ../development/python-modules/funcsigs { }; APScheduler = callPackage ../development/python-modules/APScheduler { }; From 89dc04fe93699e8f43bb22ad59bdb6a76565957b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9-Patrick=20Bubel?= Date: Thu, 19 Oct 2017 21:19:58 +0200 Subject: [PATCH 27/43] electrum: enable plotting support Plotting seems to be a core feature now, with a menu entry available by default. Without the matplotlib dependency this opens a warning popup though. --- pkgs/applications/misc/electrum/default.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkgs/applications/misc/electrum/default.nix b/pkgs/applications/misc/electrum/default.nix index 0781617eb69..abe8d0dde84 100644 --- a/pkgs/applications/misc/electrum/default.nix +++ b/pkgs/applications/misc/electrum/default.nix @@ -13,6 +13,7 @@ python2Packages.buildPythonApplication rec { dns ecdsa jsonrpclib + matplotlib pbkdf2 protobuf pyaes @@ -30,7 +31,6 @@ python2Packages.buildPythonApplication rec { # TODO plugins # amodem # btchip - # matplotlib ]; preBuild = '' From 9a84b52c931ab4e419adb29e04877dd5e41a2f77 Mon Sep 17 00:00:00 2001 From: Nikolay Amiantov Date: Thu, 19 Oct 2017 23:18:47 +0300 Subject: [PATCH 28/43] openra: 20161019 -> 20171014 Closes #30581. --- pkgs/games/openra/default.nix | 100 +++++++++------------------------- 1 file changed, 25 insertions(+), 75 deletions(-) diff --git a/pkgs/games/openra/default.nix b/pkgs/games/openra/default.nix index ee8e865a6f1..fb01346d84e 100644 --- a/pkgs/games/openra/default.nix +++ b/pkgs/games/openra/default.nix @@ -1,12 +1,11 @@ -{ stdenv, fetchurl, mono, makeWrapper, lua +{ stdenv, fetchFromGitHub, mono, makeWrapper, lua , SDL2, freetype, openal, systemd, pkgconfig, - dotnetPackages, gnome3, curl, unzip + dotnetPackages, gnome3, curl, unzip, which }: -let - version = "20161019"; -in stdenv.mkDerivation rec { +stdenv.mkDerivation rec { name = "openra-${version}"; + version = "20171014"; meta = with stdenv.lib; { description = "Real Time Strategy game engine recreating the C&C titles"; @@ -16,24 +15,33 @@ in stdenv.mkDerivation rec { platforms = platforms.linux; }; - src = fetchurl { - name = "${name}.tar.gz"; - url = "https://github.com/OpenRA/OpenRA/archive/release-${version}.tar.gz"; - sha256 = "1psmq3kb2whkavh5pm0xc4m5b4bihvrl8pfrk851iqg1cs22bg0w"; + src = fetchFromGitHub { + owner = "OpenRA"; + repo = "OpenRA"; + rev = "release-${version}"; + sha256 = "0nlwpmiwhjs3qc2lxwnrh4p874v5y6mf4avi6bqgr1wvzc43n8wr"; + + extraPostFetch = '' + sed -i 's,curl,curl --insecure,g' $out/thirdparty/{fetch-thirdparty-deps,noget}.sh + $out/thirdparty/fetch-thirdparty-deps.sh + ''; }; dontStrip = true; - buildInputs = with dotnetPackages; - [ NUnit3 NewtonsoftJson MonoNat FuzzyLogicLibrary SmartIrc4net SharpZipLib MaxMindGeoIP2 MaxMindDb SharpFont StyleCopMSBuild StyleCopPlusMSBuild RestSharp NUnitConsole OpenNAT ] + buildInputs = (with dotnetPackages; + [ NUnit3 NewtonsoftJson MonoNat FuzzyLogicLibrary SmartIrc4net SharpZipLib MaxMindGeoIP2 MaxMindDb SharpFont StyleCopMSBuild StyleCopPlusMSBuild RestSharp NUnitConsole OpenNAT ]) ++ [ curl unzip lua gnome3.zenity ]; nativeBuildInputs = [ curl unzip mono makeWrapper lua pkgconfig ]; - patchPhase = '' + postPatch = '' mkdir Support - sed -i 's/^VERSION.*/VERSION = release-${version}/g' Makefile + sed -i \ + -e 's/^VERSION.*/VERSION = release-${version}/g' \ + -e '/GeoLite2-Country.mmdb.gz/d' \ + -e '/fetch-geoip-db.sh/d' \ + Makefile substituteInPlace thirdparty/configure-native-deps.sh --replace "locations=\"" "locations=\"${lua}/lib " - substituteInPlace Makefile --replace "@./thirdparty/fetch-geoip-db.sh" "" ''; preConfigure = '' @@ -41,63 +49,6 @@ in stdenv.mkDerivation rec { make version ''; - preBuild = let dotnetPackagesDlls = with dotnetPackages; [ - "${OpenNAT}/lib/dotnet/Open.NAT/net45/Open.Nat.dll" - "${MonoNat}/lib/dotnet/Mono.Nat/net40/Mono.Nat.dll" - "${FuzzyLogicLibrary}/lib/dotnet/FuzzyLogicLibrary/Release/FuzzyLogicLibrary.dll" - "${SmartIrc4net}/lib/dotnet/SmartIrc4net/net40/SmarIrc4net*" - "${SharpZipLib}/lib/dotnet/SharpZipLib/20/ICSharpCode.SharpZipLib.dll" - "${MaxMindGeoIP2}/lib/dotnet/MaxMind.GeoIP2/net40/MaxMind.GeoIP2*" - "${MaxMindDb}/lib/dotnet/MaxMind.Db/net40/MaxMind.Db.*" - "${SharpFont}/lib/dotnet/SharpFont/net20/SharpFont.dll" - "${SharpFont}/lib/dotnet/SharpFont/SharpFont.dll.config" - "${StyleCopMSBuild}/lib/dotnet/StyleCop.MSBuild/StyleCop*.dll" - "${StyleCopPlusMSBuild}/lib/dotnet/StyleCopPlus.MSBuild/StyleCopPlus.dll" - "${RestSharp}/lib/dotnet/RestSharp/net4-client/RestSharp.dll" - "${NUnit}/lib/dotnet/NUnit/nunit.framework.*" - "${NUnitConsole}/lib/dotnet/NUnit.Console/*" - "${NewtonsoftJson}/lib/dotnet/Newtonsoft.Json/Newtonsoft.Json.dll" - ]; - movePackages = [ - ( let filename = "Eluant.dll"; in { origin = fetchurl { - url = "https://github.com/OpenRA/Eluant/releases/download/20160124/${filename}"; - sha256 = "1c20whz7dzfhg3szd62rvb79745x5iwrd5pp62j3bbj1q9wpddmb"; - }; target = filename; }) - - ( let filename = "SDL2-CS.dll"; in { origin = fetchurl { - url = "https://github.com/OpenRA/SDL2-CS/releases/download/20151227/${filename}"; - sha256 = "0gqw2wg37cqhhlc2a9lfc4ndkyfi4m8bkv7ckxbawgydjlknq83n"; - }; target = filename; }) - - ( let filename = "SDL2-CS.dll.config"; in { origin = fetchurl { - url = "https://github.com/OpenRA/SDL2-CS/releases/download/20151227/${filename}"; - sha256 = "15709iscdg44wd33szw5y0fdxwvqfjw8v3xjq6a0mm46gr7mkw7g"; - }; target = filename; }) - - ( let filename = "OpenAL-CS.dll"; in { origin = fetchurl { - url = "https://github.com/OpenRA/OpenAL-CS/releases/download/20151227/${filename}"; - sha256 = "0lvyjkn7fqys97wym8rwlcp6ay2z059iabfvlcxhlrscjpyr2cyk"; - }; target = filename; }) - - ( let filename = "OpenAL-CS.dll.config"; in { origin = fetchurl { - url = "https://github.com/OpenRA/OpenAL-CS/releases/download/20151227/${filename}"; - sha256 = "0wcmk3dw26s93598ck5jism5609v0y233i0f1b76yilyfimg9sjq"; - }; target = filename; }) - - ( let filename = "GeoLite2-Country.mmdb.gz"; in { origin = fetchurl { - url = "http://geolite.maxmind.com/download/geoip/database/${filename}"; - sha256 = "0a82v0sj4zf5vigrn1pd6mnbqz6zl3rgk9nidqqzy836as2kxk9v"; - }; target = filename; }) - ]; - in '' - mkdir thirdparty/download/ - - ${stdenv.lib.concatMapStringsSep "\n" (from: "cp -r ${from} thirdparty/download") dotnetPackagesDlls} - ${stdenv.lib.concatMapStringsSep "\n" ({origin, target}: "cp ${origin} thirdparty/download/${target}") movePackages} - - make dependencies - ''; - buildFlags = [ "DEBUG=false" "default" "man-page" ]; doCheck = true; @@ -109,14 +60,13 @@ in stdenv.mkDerivation rec { postInstall = with stdenv.lib; let runtime = makeLibraryPath [ SDL2 freetype openal systemd lua ]; + binaries= makeBinPath [ which mono gnome3.zenity ]; in '' wrapProgram $out/lib/openra/launch-game.sh \ - --prefix PATH : "${mono}/bin" \ - --set PWD $out/lib/openra/ \ + --prefix PATH : "${binaries}" \ --prefix LD_LIBRARY_PATH : "${runtime}" mkdir -p $out/bin - echo -e "#!${stdenv.shell}\ncd $out/lib/openra && $out/lib/openra/launch-game.sh" > $out/bin/openra - chmod +x $out/bin/openra + makeWrapper $out/lib/openra/launch-game.sh $out/bin/openra --run "cd $out/lib/openra" ''; } From acd80042a475f2b44dd2adc54e75f3f294ede1f1 Mon Sep 17 00:00:00 2001 From: Michael Weiss Date: Thu, 19 Oct 2017 22:49:41 +0200 Subject: [PATCH 29/43] android-studio-preview: 3.0.0.16 -> 3.0.0.17 --- pkgs/applications/editors/android-studio/packages.nix | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pkgs/applications/editors/android-studio/packages.nix b/pkgs/applications/editors/android-studio/packages.nix index 061d75d4016..4e834afa9d0 100644 --- a/pkgs/applications/editors/android-studio/packages.nix +++ b/pkgs/applications/editors/android-studio/packages.nix @@ -27,9 +27,9 @@ in rec { preview = mkStudio rec { pname = "android-studio-preview"; - version = "3.0.0.16"; # "Android Studio 3.0 RC 1" - build = "171.4392136"; - sha256Hash = "13zaqbbl7bqhiwh0ybbxkfv0h90qsfpa7sim778n2j32jjvdcby5"; + version = "3.0.0.17"; # "Android Studio 3.0 RC 2" + build = "171.4402976"; + sha256Hash = "18f5cq1dcmyjxaq520kqjac332bpp35pis02yplh6gzp65i4bvvf"; meta = stable.meta // { description = "The Official IDE for Android (preview version)"; From 4eb090efc88aed4479f607e0293ca1494cc1672e Mon Sep 17 00:00:00 2001 From: Will Dietz Date: Thu, 19 Oct 2017 15:57:19 -0500 Subject: [PATCH 30/43] musl: 1.1.16 -> 1.1.17, build with stack protector --- pkgs/os-specific/linux/musl/default.nix | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/pkgs/os-specific/linux/musl/default.nix b/pkgs/os-specific/linux/musl/default.nix index e37a2b9f55e..c51b8b26c80 100644 --- a/pkgs/os-specific/linux/musl/default.nix +++ b/pkgs/os-specific/linux/musl/default.nix @@ -2,17 +2,17 @@ stdenv.mkDerivation rec { name = "musl-${version}"; - version = "1.1.16"; + version = "1.1.17"; src = fetchurl { url = "http://www.musl-libc.org/releases/${name}.tar.gz"; - sha256 = "048h0w4yjyza4h05bkc6dpwg3hq6l03na46g0q1ha8fpwnjqawck"; + sha256 = "0r0lyp2w6v2bvm8h1si7w3p2qx037szl14qnxm5p00568z3m3an8"; }; enableParallelBuilding = true; - # required to avoid busybox segfaulting on startup when invoking - # nix-build "" + # Disable auto-adding stack protector flags, + # so musl can selectively disable as needed hardeningDisable = [ "stackprotector" ]; preConfigure = '' @@ -22,6 +22,7 @@ stdenv.mkDerivation rec { configureFlags = [ "--enable-shared" "--enable-static" + "CFLAGS=-fstack-protector-strong" ]; patches = []; From aae32e15af60cbe96dcb8e70430be9f3eb82960c Mon Sep 17 00:00:00 2001 From: James Earl Douglas Date: Thu, 19 Oct 2017 12:17:47 -0600 Subject: [PATCH 31/43] nixos/jenkins: add an option for the package This allows NixOS configuration to specify the desired Jenkins package. --- .../services/continuous-integration/jenkins/default.nix | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/nixos/modules/services/continuous-integration/jenkins/default.nix b/nixos/modules/services/continuous-integration/jenkins/default.nix index c14aa416723..0dd59e4fb44 100644 --- a/nixos/modules/services/continuous-integration/jenkins/default.nix +++ b/nixos/modules/services/continuous-integration/jenkins/default.nix @@ -78,6 +78,13 @@ in { ''; }; + package = mkOption { + default = pkgs.jenkins; + defaultText = "pkgs.jenkins"; + type = types.package; + description = "Jenkins package to use."; + }; + packages = mkOption { default = [ pkgs.stdenv pkgs.git pkgs.jdk config.programs.ssh.package pkgs.nix ]; defaultText = "[ pkgs.stdenv pkgs.git pkgs.jdk config.programs.ssh.package pkgs.nix ]"; @@ -194,7 +201,7 @@ in { ''; script = '' - ${pkgs.jdk}/bin/java ${concatStringsSep " " cfg.extraJavaOptions} -jar ${pkgs.jenkins}/webapps/jenkins.war --httpListenAddress=${cfg.listenAddress} \ + ${pkgs.jdk}/bin/java ${concatStringsSep " " cfg.extraJavaOptions} -jar ${cfg.package}/webapps/jenkins.war --httpListenAddress=${cfg.listenAddress} \ --httpPort=${toString cfg.port} \ --prefix=${cfg.prefix} \ ${concatStringsSep " " cfg.extraOptions} From 5da5af56e11ea26841d0c3226dc27c0dc720b3c9 Mon Sep 17 00:00:00 2001 From: Shea Levy Date: Thu, 19 Oct 2017 19:25:08 -0400 Subject: [PATCH 32/43] nixUnstable: Bump for nix-shell interpreter bugfix --- pkgs/tools/package-management/nix/default.nix | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pkgs/tools/package-management/nix/default.nix b/pkgs/tools/package-management/nix/default.nix index de6c1178221..4359682d96a 100644 --- a/pkgs/tools/package-management/nix/default.nix +++ b/pkgs/tools/package-management/nix/default.nix @@ -161,12 +161,12 @@ in rec { nixUnstable = (lib.lowPrio (common rec { name = "nix-1.12${suffix}"; - suffix = "pre5655_cbc21691"; + suffix = "pre5663_c7af84ce"; src = fetchFromGitHub { owner = "NixOS"; repo = "nix"; - rev = "cbc216911dbda23c3bc050c969bc725fe60760ef"; - sha256 = "0ynnk2m2n5pjmhy5gry90dy5k2wwy29v2wnq6zz32ak9zwz36x8r"; + rev = "c7af84ce846a9deefa5b4db1b1bce1c091ca2a1e"; + sha256 = "1sc6rkx0500jz4fyfqm7443s1q24whmpx10mfs12wdk516f0q8qh"; }; fromGit = true; })) // { perl-bindings = perl-bindings { nix = nixUnstable; }; }; From 4d85689cf37f1ac5cfcbecd3cb96385a110a1656 Mon Sep 17 00:00:00 2001 From: Dmitry Kalinkin Date: Fri, 20 Oct 2017 00:57:45 -0400 Subject: [PATCH 33/43] xxHash: init at 0.6.3.20171018 --- pkgs/development/libraries/xxHash/default.nix | 31 +++++++++++++++++++ pkgs/top-level/all-packages.nix | 2 ++ 2 files changed, 33 insertions(+) create mode 100644 pkgs/development/libraries/xxHash/default.nix diff --git a/pkgs/development/libraries/xxHash/default.nix b/pkgs/development/libraries/xxHash/default.nix new file mode 100644 index 00000000000..d702500bf71 --- /dev/null +++ b/pkgs/development/libraries/xxHash/default.nix @@ -0,0 +1,31 @@ +{ stdenv, fetchFromGitHub }: + +stdenv.mkDerivation rec { + name = "xxHash-${version}"; + version = "0.6.3.20171018"; + + src = fetchFromGitHub { + sha256 = "0061ivxpx0p24m4vg7kfx9fs9f0jxvv4g76bmyss5gp90p05hc18"; + rev = "333804ccf0c0339451accac023deeab9e5f7c002"; + repo = "xxHash"; + owner = "Cyan4973"; + }; + + outputs = [ "out" "dev" ]; + + makeFlags = [ "PREFIX=$(out)" "INCLUDEDIR=$(dev)/include" ]; + + meta = with stdenv.lib; { + description = "Extremely fast hash algorithm"; + longDescription = '' + xxHash is an Extremely fast Hash algorithm, running at RAM speed limits. + It successfully completes the SMHasher test suite which evaluates + collision, dispersion and randomness qualities of hash functions. Code is + highly portable, and hashes are identical on all platforms (little / big + endian). + ''; + homepage = https://github.com/Cyan4973/xxHash; + license = with licenses; [ bsd2 gpl2 ]; + platforms = platforms.unix; + }; +} diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 49fb69b9e3d..974ed3fee52 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -11059,6 +11059,8 @@ with pkgs; xvidcore = callPackage ../development/libraries/xvidcore { }; + xxHash = callPackage ../development/libraries/xxHash {}; + xylib = callPackage ../development/libraries/xylib { }; yajl = callPackage ../development/libraries/yajl { }; From ef2fc289a6547141212bd9528cdd1ac97a1df7c1 Mon Sep 17 00:00:00 2001 From: Dmitry Kalinkin Date: Thu, 19 Oct 2017 23:15:53 -0400 Subject: [PATCH 34/43] root: 6.10.04 -> 6.10.08 --- .../science/misc/root/ROOT-8728-extra.patch | 175 ------------------ .../science/misc/root/default.nix | 14 +- .../science/misc/root/thisroot.patch | 15 -- 3 files changed, 4 insertions(+), 200 deletions(-) delete mode 100644 pkgs/applications/science/misc/root/ROOT-8728-extra.patch delete mode 100644 pkgs/applications/science/misc/root/thisroot.patch diff --git a/pkgs/applications/science/misc/root/ROOT-8728-extra.patch b/pkgs/applications/science/misc/root/ROOT-8728-extra.patch deleted file mode 100644 index a396a848f14..00000000000 --- a/pkgs/applications/science/misc/root/ROOT-8728-extra.patch +++ /dev/null @@ -1,175 +0,0 @@ -diff --git a/core/metacling/src/TCling.cxx b/core/metacling/src/TCling.cxx -index d71cb74..076facb 100644 ---- a/core/metacling/src/TCling.cxx -+++ b/core/metacling/src/TCling.cxx -@@ -756,7 +756,7 @@ int TCling_GenerateDictionary(const std::vector &classes, - gSystem->PrependPathName(dirbase, header); - dir = gSystem->DirName(dir); - } -- fileContent += TString("#include \"") + header + "\"\n"; -+ fileContent += (TString("#include \"") + header + "\"\n").Data(); - } - } - for (it = fwdDecls.begin(); it != fwdDecls.end(); ++it) { -@@ -1061,7 +1061,7 @@ TCling::TCling(const char *name, const char *title) - ROOT::TMetaUtils::SetPathsForRelocatability(clingArgsStorage); - - // Add -I early so ASTReader can find the headers. -- std::string interpInclude(TROOT::GetEtcDir()); -+ std::string interpInclude(TROOT::GetEtcDir().Data()); - clingArgsStorage.push_back("-I" + interpInclude); - - // Add include path to etc/cling. FIXME: This is a short term solution. The -@@ -1070,7 +1070,7 @@ TCling::TCling(const char *name, const char *title) - clingArgsStorage.push_back("-I" + interpInclude + "/cling"); - - // Add the root include directory and etc/ to list searched by default. -- clingArgsStorage.push_back(std::string("-I" + TROOT::GetIncludeDir())); -+ clingArgsStorage.push_back(std::string(("-I" + TROOT::GetIncludeDir()).Data())); - - // Add the current path to the include path - // TCling::AddIncludePath("."); -diff --git a/hist/hist/src/TFormula.cxx b/hist/hist/src/TFormula.cxx -index abf3929..e7dad98 100644 ---- a/hist/hist/src/TFormula.cxx -+++ b/hist/hist/src/TFormula.cxx -@@ -1677,7 +1677,7 @@ void TFormula::ProcessFormula(TString &formula) - if(fun.fName.Contains("::")) // add support for nested namespaces - { - // look for last occurence of "::" -- std::string name(fun.fName); -+ std::string name(fun.fName.Data()); - size_t index = name.rfind("::"); - assert(index != std::string::npos); - TString className = fun.fName(0,fun.fName(0,index).Length()); -@@ -1869,7 +1869,7 @@ void TFormula::ProcessFormula(TString &formula) - - // save copy of inputFormula in a std::strig for the unordered map - // and also formula is same as FClingInput typically and it will be modified -- std::string inputFormula = std::string(formula); -+ std::string inputFormula = std::string(formula.Data()); - - - // valid input formula - try to put into Cling -diff --git a/main/src/nbmain.cxx b/main/src/nbmain.cxx -index 55d4f2f..8490149 100644 ---- a/main/src/nbmain.cxx -+++ b/main/src/nbmain.cxx -@@ -173,9 +173,9 @@ static bool CreateStamp(string dest) - - int main() - { -- string rootbin(TROOT::GetBinDir()); -- string rootlib(TROOT::GetLibDir()); -- string rootetc(TROOT::GetEtcDir()); -+ string rootbin(TROOT::GetBinDir().Data()); -+ string rootlib(TROOT::GetLibDir().Data()); -+ string rootetc(TROOT::GetEtcDir().Data()); - - // If needed, install ROOT notebook files in the user's home directory - #ifdef WIN32 -diff --git a/math/minuit/src/TMinuitMinimizer.cxx b/math/minuit/src/TMinuitMinimizer.cxx -index 4e2082a..18215c0 100644 ---- a/math/minuit/src/TMinuitMinimizer.cxx -+++ b/math/minuit/src/TMinuitMinimizer.cxx -@@ -454,7 +454,7 @@ std::string TMinuitMinimizer::VariableName(unsigned int ivar) const { - // return the variable name - if (!CheckMinuitInstance()) return std::string(); - if (!CheckVarIndex(ivar)) return std::string(); -- return std::string(fMinuit->fCpnam[ivar]); -+ return std::string(fMinuit->fCpnam[ivar].Data()); - } - - int TMinuitMinimizer::VariableIndex(const std::string & ) const { -diff --git a/tmva/tmva/src/Factory.cxx b/tmva/tmva/src/Factory.cxx -index 36060ef..a1bbe34 100644 ---- a/tmva/tmva/src/Factory.cxx -+++ b/tmva/tmva/src/Factory.cxx -@@ -390,7 +390,7 @@ TMVA::MethodBase* TMVA::Factory::BookMethod( TMVA::DataLoader *loader, TString t - // initialize methods - IMethod* im; - if (!boostNum) { -- im = ClassifierFactory::Instance().Create( std::string(theMethodName), -+ im = ClassifierFactory::Instance().Create( std::string(theMethodName.Data()), - fJobName, - methodTitle, - loader->DefaultDataSetInfo(), -@@ -933,7 +933,7 @@ void TMVA::Factory::TrainAllMethods() - - // recreate - m = dynamic_cast( ClassifierFactory::Instance() -- .Create( std::string(Types::Instance().GetMethodName(methodType)), -+ .Create( std::string(Types::Instance().GetMethodName(methodType).Data()), - dataSetInfo, weightfile ) ); - if( m->GetMethodType() == Types::kCategory ){ - MethodCategory *methCat = (dynamic_cast(m)); -diff --git a/tmva/tmva/src/MethodBoost.cxx b/tmva/tmva/src/MethodBoost.cxx -index 1349e5d..2125ab3 100644 ---- a/tmva/tmva/src/MethodBoost.cxx -+++ b/tmva/tmva/src/MethodBoost.cxx -@@ -389,7 +389,7 @@ void TMVA::MethodBoost::Train() - // the first classifier shows the option string output, the rest not - if (fCurrentMethodIdx>0) TMVA::MsgLogger::InhibitOutput(); - -- IMethod* method = ClassifierFactory::Instance().Create(std::string(fBoostedMethodName), -+ IMethod* method = ClassifierFactory::Instance().Create(std::string(fBoostedMethodName.Data()), - GetJobName(), - Form("%s_B%04i", fBoostedMethodTitle.Data(),fCurrentMethodIdx), - DataInfo(), -diff --git a/tmva/tmva/src/MethodCategory.cxx b/tmva/tmva/src/MethodCategory.cxx -index c2cbe80..d278cca 100644 ---- a/tmva/tmva/src/MethodCategory.cxx -+++ b/tmva/tmva/src/MethodCategory.cxx -@@ -147,7 +147,7 @@ TMVA::IMethod* TMVA::MethodCategory::AddMethod( const TCut& theCut, - const TString& theTitle, - const TString& theOptions ) - { -- std::string addedMethodName = std::string(Types::Instance().GetMethodName(theMethod)); -+ std::string addedMethodName = std::string(Types::Instance().GetMethodName(theMethod).Data()); - - Log() << kINFO << "Adding sub-classifier: " << addedMethodName << "::" << theTitle << Endl; - -diff --git a/tmva/tmva/src/MethodCompositeBase.cxx b/tmva/tmva/src/MethodCompositeBase.cxx -index 98fa5da..96bd9a3 100644 ---- a/tmva/tmva/src/MethodCompositeBase.cxx -+++ b/tmva/tmva/src/MethodCompositeBase.cxx -@@ -194,7 +194,7 @@ void TMVA::MethodCompositeBase::ReadWeightsFromXML( void* wghtnode ) - ((TMVA::MethodBoost*)this)->BookMethod( Types::Instance().GetMethodType( methodTypeName), methodName, optionString ); - } - fMethods.push_back(ClassifierFactory::Instance().Create( -- std::string(methodTypeName),jobName, methodName,DataInfo(),optionString)); -+ std::string(methodTypeName.Data()),jobName, methodName,DataInfo(),optionString)); - - fMethodWeight.push_back(methodWeight); - MethodBase* meth = dynamic_cast(fMethods.back()); -@@ -259,7 +259,7 @@ void TMVA::MethodCompositeBase::ReadWeightsFromStream( std::istream& istr ) - ((TMVA::MethodBoost*)this)->BookMethod( Types::Instance().GetMethodType( methodName), methodTitle, optionString ); - } - else methodTitle=Form("%s (%04i)",GetMethodName().Data(),fCurrentMethodIdx); -- fMethods.push_back(ClassifierFactory::Instance().Create( std::string(methodName), jobName, -+ fMethods.push_back(ClassifierFactory::Instance().Create( std::string(methodName.Data()), jobName, - methodTitle,DataInfo(), optionString) ); - fMethodWeight.push_back( methodWeight ); - if(MethodBase* m = dynamic_cast(fMethods.back()) ) -diff --git a/tmva/tmva/src/Reader.cxx b/tmva/tmva/src/Reader.cxx -index 94a8b28..0b67867 100644 ---- a/tmva/tmva/src/Reader.cxx -+++ b/tmva/tmva/src/Reader.cxx -@@ -401,7 +401,7 @@ TMVA::IMethod* TMVA::Reader::BookMVA( const TString& methodTag, const TString& w - - TMVA::IMethod* TMVA::Reader::BookMVA( TMVA::Types::EMVA methodType, const TString& weightfile ) - { -- IMethod* im = ClassifierFactory::Instance().Create(std::string(Types::Instance().GetMethodName( methodType )), -+ IMethod* im = ClassifierFactory::Instance().Create(std::string(Types::Instance().GetMethodName( methodType ).Data()), - DataInfo(), weightfile ); - - MethodBase *method = (dynamic_cast(im)); -@@ -440,7 +440,7 @@ TMVA::IMethod* TMVA::Reader::BookMVA( TMVA::Types::EMVA methodType, const char* - #if ROOT_VERSION_CODE >= ROOT_VERSION(5,26,00) - - // books MVA method from weightfile -- IMethod* im = ClassifierFactory::Instance().Create(std::string(Types::Instance().GetMethodName( methodType )), -+ IMethod* im = ClassifierFactory::Instance().Create(std::string(Types::Instance().GetMethodName( methodType ).Data()), - DataInfo(), "" ); - - MethodBase *method = (dynamic_cast(im)); diff --git a/pkgs/applications/science/misc/root/default.nix b/pkgs/applications/science/misc/root/default.nix index ac04321ae0c..676395d03d5 100644 --- a/pkgs/applications/science/misc/root/default.nix +++ b/pkgs/applications/science/misc/root/default.nix @@ -1,30 +1,24 @@ { stdenv, fetchurl, fetchpatch, cmake, pcre, pkgconfig, python2 -, libX11, libXpm, libXft, libXext, mesa, zlib, libxml2, lzma, gsl +, libX11, libXpm, libXft, libXext, mesa, zlib, libxml2, lz4, lzma, gsl, xxHash , Cocoa, OpenGL, noSplash ? false }: stdenv.mkDerivation rec { name = "root-${version}"; - version = "6.10.04"; + version = "6.10.08"; src = fetchurl { url = "https://root.cern.ch/download/root_v${version}.source.tar.gz"; - sha256 = "0nwg4bw02v6vahm2rwfaj7fzp3ffhjg5jk7h20il4246swhxw6s6"; + sha256 = "12mddl6pqwwc9nr4jqzp6h1jm4zycazd3v88dz306m1nmk97dlic"; }; nativeBuildInputs = [ pkgconfig ]; - buildInputs = [ cmake pcre python2 zlib libxml2 lzma gsl ] + buildInputs = [ cmake pcre python2 zlib libxml2 lz4 lzma gsl xxHash ] ++ stdenv.lib.optionals (!stdenv.isDarwin) [ libX11 libXpm libXft libXext mesa ] ++ stdenv.lib.optionals (stdenv.isDarwin) [ Cocoa OpenGL ] ; patches = [ ./sw_vers.patch - - # this prevents thisroot.sh from setting $p, which interferes with stdenv setup - ./thisroot.patch - - # https://sft.its.cern.ch/jira/browse/ROOT-8728 - ./ROOT-8728-extra.patch ]; preConfigure = '' diff --git a/pkgs/applications/science/misc/root/thisroot.patch b/pkgs/applications/science/misc/root/thisroot.patch deleted file mode 100644 index 57cd5838e64..00000000000 --- a/pkgs/applications/science/misc/root/thisroot.patch +++ /dev/null @@ -1,15 +0,0 @@ -diff --git a/config/thisroot.sh b/config/thisroot.sh -index 85dee20..532cb28 100644 ---- a/config/thisroot.sh -+++ b/config/thisroot.sh -@@ -15,8 +15,8 @@ drop_from_path() - return 1 - fi - -- p=$1 -- drop=$2 -+ local p=$1 -+ local drop=$2 - - newpath=`echo $p | sed -e "s;:${drop}:;:;g" \ - -e "s;:${drop};;g" \ From 68ed8f685b35b80c7caf1c5296526beb1e977552 Mon Sep 17 00:00:00 2001 From: Vincent Laporte Date: Thu, 19 Oct 2017 21:09:20 +0000 Subject: [PATCH 35/43] ocamlPackages.camomile: 0.8.5 -> 0.8.6 --- .../ocaml-modules/camomile/0.8.5.nix | 30 ++++++++++++++ .../ocaml-modules/camomile/default.nix | 41 +++++++++---------- pkgs/top-level/ocaml-packages.nix | 5 ++- 3 files changed, 53 insertions(+), 23 deletions(-) create mode 100644 pkgs/development/ocaml-modules/camomile/0.8.5.nix diff --git a/pkgs/development/ocaml-modules/camomile/0.8.5.nix b/pkgs/development/ocaml-modules/camomile/0.8.5.nix new file mode 100644 index 00000000000..48517036dc6 --- /dev/null +++ b/pkgs/development/ocaml-modules/camomile/0.8.5.nix @@ -0,0 +1,30 @@ +{stdenv, fetchurl, fetchpatch, ocaml, findlib, camlp4}: + +stdenv.mkDerivation rec { + name = "camomile-${version}"; + version = "0.8.5"; + + src = fetchurl { + url = https://github.com/yoriyuki/Camomile/releases/download/rel-0.8.5/camomile-0.8.5.tar.bz2; + sha256 = "003ikpvpaliy5hblhckfmln34zqz0mk3y2m1fqvbjngh3h2np045"; + }; + + patches = [ (fetchpatch { + url = https://raw.githubusercontent.com/ocaml/opam-repository/master/packages/camomile/camomile.0.8.5/files/4.05-typing-fix.patch; + sha256 = "167279lia6qx62mdcyc5rjsi4gf4yi52wn9mhgd9y1v3754z7fwb"; + })]; + + buildInputs = [ocaml findlib camlp4]; + + createFindlibDestdir = true; + + meta = { + homepage = https://github.com/yoriyuki/Camomile/tree/master/Camomile; + description = "A comprehensive Unicode library for OCaml"; + license = stdenv.lib.licenses.lgpl21; + platforms = ocaml.meta.platforms or []; + maintainers = [ + stdenv.lib.maintainers.z77z + ]; + }; +} diff --git a/pkgs/development/ocaml-modules/camomile/default.nix b/pkgs/development/ocaml-modules/camomile/default.nix index 48517036dc6..897a3ff6036 100644 --- a/pkgs/development/ocaml-modules/camomile/default.nix +++ b/pkgs/development/ocaml-modules/camomile/default.nix @@ -1,30 +1,27 @@ -{stdenv, fetchurl, fetchpatch, ocaml, findlib, camlp4}: +{ stdenv, fetchFromGitHub, ocaml, findlib, jbuilder, cppo }: stdenv.mkDerivation rec { - name = "camomile-${version}"; - version = "0.8.5"; + version = "0.8.6"; + name = "ocaml${ocaml.version}-camomile-${version}"; - src = fetchurl { - url = https://github.com/yoriyuki/Camomile/releases/download/rel-0.8.5/camomile-0.8.5.tar.bz2; - sha256 = "003ikpvpaliy5hblhckfmln34zqz0mk3y2m1fqvbjngh3h2np045"; - }; + src = fetchFromGitHub { + owner = "yoriyuki"; + repo = "camomile"; + rev = "rel-${version}"; + sha256 = "1jq1xhaikczk6lbvas7c35aa04q0kjaqd8m54c4jivpj80yvg4x9"; + }; - patches = [ (fetchpatch { - url = https://raw.githubusercontent.com/ocaml/opam-repository/master/packages/camomile/camomile.0.8.5/files/4.05-typing-fix.patch; - sha256 = "167279lia6qx62mdcyc5rjsi4gf4yi52wn9mhgd9y1v3754z7fwb"; - })]; + buildInputs = [ ocaml findlib jbuilder cppo ]; - buildInputs = [ocaml findlib camlp4]; + configurePhase = "ocaml configure.ml --share $out/share/camomile"; - createFindlibDestdir = true; + inherit (jbuilder) installPhase; - meta = { - homepage = https://github.com/yoriyuki/Camomile/tree/master/Camomile; - description = "A comprehensive Unicode library for OCaml"; - license = stdenv.lib.licenses.lgpl21; - platforms = ocaml.meta.platforms or []; - maintainers = [ - stdenv.lib.maintainers.z77z - ]; - }; + meta = { + inherit (ocaml.meta) platforms; + inherit (src.meta) homepage; + maintainers = [ stdenv.lib.maintainers.vbgl ]; + license = stdenv.lib.licenses.lgpl21; + description = "A Unicode library for OCaml"; + }; } diff --git a/pkgs/top-level/ocaml-packages.nix b/pkgs/top-level/ocaml-packages.nix index c27cb1bcdfd..43c249e7b1d 100644 --- a/pkgs/top-level/ocaml-packages.nix +++ b/pkgs/top-level/ocaml-packages.nix @@ -98,7 +98,10 @@ let camlzip = callPackage ../development/ocaml-modules/camlzip { }; camomile_0_8_2 = callPackage ../development/ocaml-modules/camomile/0.8.2.nix { }; - camomile = callPackage ../development/ocaml-modules/camomile { }; + camomile = + if lib.versionOlder "4.03" ocaml.version + then callPackage ../development/ocaml-modules/camomile { } + else callPackage ../development/ocaml-modules/camomile/0.8.5.nix { }; camlimages_4_0 = if lib.versionOlder "4.02" ocaml.version From 26b7a68596e251be51d63fa9b8b06a5fc36b9f41 Mon Sep 17 00:00:00 2001 From: Frederik Rietdijk Date: Fri, 20 Oct 2017 10:12:28 +0200 Subject: [PATCH 36/43] bitcoinarmory: use buildPythonApplication because mkPythonDerivation shouldn't be used directly anymore. --- pkgs/applications/misc/bitcoinarmory/default.nix | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/pkgs/applications/misc/bitcoinarmory/default.nix b/pkgs/applications/misc/bitcoinarmory/default.nix index f4547c69dc4..a9d32d4b252 100644 --- a/pkgs/applications/misc/bitcoinarmory/default.nix +++ b/pkgs/applications/misc/bitcoinarmory/default.nix @@ -7,9 +7,9 @@ let version = "0.96.1"; sitePackages = pythonPackages.python.sitePackages; - inherit (pythonPackages) mkPythonDerivation pyqt4 psutil twisted; + inherit (pythonPackages) buildPythonApplication pyqt4 psutil twisted; -in mkPythonDerivation { +in buildPythonApplication { name = "bitcoinarmory-${version}"; @@ -21,6 +21,8 @@ in mkPythonDerivation { sha256 = "0pjk5qx16n3kvs9py62666qkwp2awkgd87by4karbj7vk6p1l14h"; fetchSubmodules = true; }; + format = "other"; + # FIXME bitcoind doesn't die on shutdown. Need some sort of patch to fix that. #patches = [ ./shutdown-fix.patch ]; From cc2e11b8c9d1f2b99c2f511da0507b17626a655e Mon Sep 17 00:00:00 2001 From: Ignat Loskutov Date: Fri, 20 Oct 2017 13:30:32 +0300 Subject: [PATCH 37/43] scala: 2.12.3 -> 2.12.4 --- pkgs/development/compilers/scala/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/development/compilers/scala/default.nix b/pkgs/development/compilers/scala/default.nix index d4d4a0f31bc..7622fbb9d18 100644 --- a/pkgs/development/compilers/scala/default.nix +++ b/pkgs/development/compilers/scala/default.nix @@ -1,11 +1,11 @@ { stdenv, fetchurl, makeWrapper, jre, gnugrep, coreutils }: stdenv.mkDerivation rec { - name = "scala-2.12.3"; + name = "scala-2.12.4"; src = fetchurl { url = "http://www.scala-lang.org/files/archive/${name}.tgz"; - sha256 = "133w4r2214ci7r4sg2yyk9lhn62ldm4ad0d89drwrvgvffvnly9b"; + sha256 = "089a54qj8psh4jxqbrrwk5zahw13fyqq24l87s3031xa675a0m4m"; }; propagatedBuildInputs = [ jre ] ; From 05ac929444bf8c5a1f365b662fc85d1f6e9b1482 Mon Sep 17 00:00:00 2001 From: Ignat Loskutov Date: Fri, 20 Oct 2017 13:51:00 +0300 Subject: [PATCH 38/43] scalafmt: fix platforms --- pkgs/development/tools/scalafmt/default.nix | 1 - 1 file changed, 1 deletion(-) diff --git a/pkgs/development/tools/scalafmt/default.nix b/pkgs/development/tools/scalafmt/default.nix index dc7f96ea8a0..391c653b98a 100644 --- a/pkgs/development/tools/scalafmt/default.nix +++ b/pkgs/development/tools/scalafmt/default.nix @@ -30,7 +30,6 @@ stdenv.mkDerivation rec { description = "Opinionated code formatter for Scala"; homepage = http://scalafmt.org; license = licenses.asl20; - platforms = platforms.linux; maintainers = [ maintainers.markus1189 ]; }; } From eba08858cce77b9fd68bbcc0fbfe09e1da652b4e Mon Sep 17 00:00:00 2001 From: Joachim Fasting Date: Fri, 20 Oct 2017 15:07:46 +0200 Subject: [PATCH 39/43] tor-browser-bundle-bin: 7.0.6 -> 7.0.7 --- .../networking/browsers/tor-browser-bundle-bin/default.nix | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pkgs/applications/networking/browsers/tor-browser-bundle-bin/default.nix b/pkgs/applications/networking/browsers/tor-browser-bundle-bin/default.nix index c9c67c01599..053ba1fca84 100644 --- a/pkgs/applications/networking/browsers/tor-browser-bundle-bin/default.nix +++ b/pkgs/applications/networking/browsers/tor-browser-bundle-bin/default.nix @@ -98,7 +98,7 @@ let fteLibPath = makeLibraryPath [ stdenv.cc.cc gmp ]; # Upstream source - version = "7.0.6"; + version = "7.0.7"; lang = "en-US"; @@ -108,7 +108,7 @@ let "https://github.com/TheTorProject/gettorbrowser/releases/download/v${version}/tor-browser-linux64-${version}_${lang}.tar.xz" "https://dist.torproject.org/torbrowser/${version}/tor-browser-linux64-${version}_${lang}.tar.xz" ]; - sha256 = "11z3r0577p78ifi9lk4lrh9wb46k77wy77g5p9l8il02760bgq6m"; + sha256 = "1848j28majbb61r080g6dw0lmh7hbp515iidyjdrpgcwhazzg06j"; }; "i686-linux" = fetchurl { @@ -116,7 +116,7 @@ let "https://github.com/TheTorProject/gettorbrowser/releases/download/v${version}/tor-browser-linux32-${version}_${lang}.tar.xz" "https://dist.torproject.org/torbrowser/${version}/tor-browser-linux32-${version}_${lang}.tar.xz" ]; - sha256 = "1r8v5w66clmm76kzpkf0f5jcxs76whb5xrl20rkirp79fybqn4hx"; + sha256 = "08wvpymmyg16ifz23awnjy0pbva8xh1fdx2i8c1n18x3k12d5r7h"; }; }; in From a09d626053ac400da6f7965f577b18de4633d1e8 Mon Sep 17 00:00:00 2001 From: Joachim Fasting Date: Fri, 20 Oct 2017 15:24:20 +0200 Subject: [PATCH 40/43] tor-browser-bundle-bin: support installing extensions Closes https://github.com/NixOS/nixpkgs/issues/30443 --- .../browsers/tor-browser-bundle-bin/default.nix | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/pkgs/applications/networking/browsers/tor-browser-bundle-bin/default.nix b/pkgs/applications/networking/browsers/tor-browser-bundle-bin/default.nix index 053ba1fca84..56cab9de5d0 100644 --- a/pkgs/applications/networking/browsers/tor-browser-bundle-bin/default.nix +++ b/pkgs/applications/networking/browsers/tor-browser-bundle-bin/default.nix @@ -246,6 +246,11 @@ stdenv.mkDerivation rec { # having to synchronize between local state and store. mv TorBrowser/Data/Browser/profile.default/preferences/extension-overrides.js defaults/pref/torbrowser.js + # Preload extensions by moving into the runtime instead of storing under the + # user's profile directory. + mv "$TBB_IN_STORE/TorBrowser/Data/Browser/profile.default/extensions/"* \ + "$TBB_IN_STORE/browser/extensions" + # Hard-code paths to geoip data files. TBB resolves the geoip files # relative to torrc-defaults_path but if we do not hard-code them # here, these paths end up being written to the torrc in the user's @@ -301,10 +306,6 @@ stdenv.mkDerivation rec { # easily generated by firefox at startup. rm -f "\$HOME/TorBrowser/Data/Browser/profile.default"/{compatibility.ini,extensions.ini,extensions.json} - # Ensure that we're always using the up-to-date extensions. - ln -snf "$TBB_IN_STORE/TorBrowser/Data/Browser/profile.default/extensions" \ - "\$HOME/TorBrowser/Data/Browser/profile.default/extensions" - ${optionalString pulseaudioSupport '' # Figure out some envvars for pulseaudio : "\''${XDG_RUNTIME_DIR:=/run/user/\$(id -u)}" From ebcccaf7544457a2cce2f08a404d6ccb565b7acd Mon Sep 17 00:00:00 2001 From: Thomas Tuegel Date: Thu, 19 Oct 2017 18:22:03 -0500 Subject: [PATCH 41/43] plasma-workspace: enable Wayland session support --- .../services/x11/desktop-managers/plasma5.nix | 2 +- .../plasma-5/plasma-workspace/default.nix | 56 +- .../plasma-workspace/plasma-workspace.patch | 1191 +++++++++++++++++ .../plasma-workspace/qml-import-path.patch | 52 - .../desktops/plasma-5/plasma-workspace/series | 1 - 5 files changed, 1235 insertions(+), 67 deletions(-) create mode 100644 pkgs/desktops/plasma-5/plasma-workspace/plasma-workspace.patch delete mode 100644 pkgs/desktops/plasma-5/plasma-workspace/qml-import-path.patch delete mode 100644 pkgs/desktops/plasma-5/plasma-workspace/series diff --git a/nixos/modules/services/x11/desktop-managers/plasma5.nix b/nixos/modules/services/x11/desktop-managers/plasma5.nix index d7e72c4a7ae..b9498b1627f 100644 --- a/nixos/modules/services/x11/desktop-managers/plasma5.nix +++ b/nixos/modules/services/x11/desktop-managers/plasma5.nix @@ -47,7 +47,7 @@ in ${getBin config.hardware.pulseaudio.package}/bin/pactl load-module module-device-manager "do_routing=1" ''} - exec "${plasma5.startkde}" + exec "${getBin plasma5.plasma-workspace}/bin/startkde" ''; }; diff --git a/pkgs/desktops/plasma-5/plasma-workspace/default.nix b/pkgs/desktops/plasma-5/plasma-workspace/default.nix index b28a1e87fb6..6fc6ef6d9e1 100644 --- a/pkgs/desktops/plasma-5/plasma-workspace/default.nix +++ b/pkgs/desktops/plasma-5/plasma-workspace/default.nix @@ -1,19 +1,23 @@ { - mkDerivation, lib, copyPathsToStore, + mkDerivation, lib, extra-cmake-modules, kdoctools, - isocodes, libdbusmenu, libSM, libXcursor, libXtst, pam, wayland, + coreutils, dbus, gnugrep, gnused, isocodes, libdbusmenu, libSM, libXcursor, + libXtst, pam, wayland, xmessage, xprop, xrdb, xsetroot, baloo, kactivities, kcmutils, kconfig, kcrash, kdbusaddons, kdeclarative, - kdelibs4support, kdesu, kglobalaccel, kidletime, kjsembed, knewstuff, + kdelibs4support, kdesu, kglobalaccel, kidletime, kinit, kjsembed, knewstuff, knotifyconfig, kpackage, krunner, kscreenlocker, ktexteditor, ktextwidgets, kwallet, kwayland, kwin, kxmlrpcclient, libkscreen, libksysguard, networkmanager-qt, phonon, plasma-framework, prison, solid, - qtgraphicaleffects, qtquickcontrols, qtquickcontrols2, qtscript, qtx11extras, + qtgraphicaleffects, qtquickcontrols, qtquickcontrols2, qtscript, qttools, + qtwayland, qtx11extras, }: +let inherit (lib) getBin getLib; in + mkDerivation { name = "plasma-workspace"; @@ -27,21 +31,47 @@ mkDerivation { kwallet kwayland kwin kxmlrpcclient libkscreen libksysguard networkmanager-qt phonon plasma-framework prison solid - qtgraphicaleffects qtquickcontrols qtquickcontrols2 qtscript qtx11extras + qtgraphicaleffects qtquickcontrols qtquickcontrols2 qtscript qtwayland qtx11extras ]; outputs = [ "out" "dev" "bin" ]; - patches = copyPathsToStore (lib.readPathsFromFile ./. ./series); + cmakeFlags = [ + "-DNIXPKGS_XMESSAGE=${getBin xmessage}/bin/xmessage" + "-DNIXPKGS_MKDIR=${getBin coreutils}/bin/mkdir" + "-DNIXPKGS_XRDB=${getBin xrdb}/bin/xrdb" + "-DNIXPKGS_QTPATHS=${getBin qttools}/bin/qtpaths" + "-DNIXPKGS_XSETROOT=${getBin xsetroot}/bin/xsetroot" + "-DNIXPKGS_XPROP=${getBin xprop}/bin/xprop" + "-DNIXPKGS_ID=${getBin coreutils}/bin/id" + "-DNIXPKGS_DBUS_UPDATE_ACTIVATION_ENVIRONMENT=${getBin dbus}/bin/dbus-update-activation-environment" + "-DNIXPKGS_START_KDEINIT_WRAPPER=${getLib kinit}/lib/libexec/kf5/start_kdeinit_wrapper" + "-DNIXPKGS_QDBUS=${getBin qttools}/bin/qdbus" + "-DNIXPKGS_KWRAPPER5=${getBin kinit}/bin/kwrapper5" + "-DNIXPKGS_KREADCONFIG5=${getBin kconfig}/bin/kreadconfig5" + "-DNIXPKGS_GREP=${getBin gnugrep}/bin/grep" + "-DNIXPKGS_KDEINIT5_SHUTDOWN=${getBin kinit}/bin/kdeinit5_shutdown" + "-DNIXPKGS_SED=${getBin gnused}/bin/sed" + ]; - postPatch = '' - substituteInPlace startkde/kstartupconfig/kstartupconfig.cpp \ - --replace kdostartupconfig5 ''${!outputBin}/bin/kdostartupconfig5 + # To regenerate ./plasma-workspace.patch, + # + # > git clone https://github.com/ttuegel/plasma-workspace + # > cd plasma-workspace + # > git checkout nixpkgs/$x.$y # where $x.$y.$z == $version + # ... make some commits ... + # > git diff v$x.$y.$z + # + # Add upstream patches to the list below. For new patchs, particularly if not + # submitted upstream, please make a pull request and add it to + # ./plasma-workspace.patch. + patches = [ ./plasma-workspace.patch ]; + + preConfigure = '' + NIX_CFLAGS_COMPILE+=" -DNIXPKGS_KDOSTARTUPCONFIG5=\"''${!outputBin}/bin/kdostartupconfig5\"" + cmakeFlags+=" -DNIXPKGS_STARTPLASMA=''${!outputBin}/lib/libexec/startplasma" ''; postInstall = '' - rm "''${!outputBin}/bin/startkde" - rm "''${!outputBin}/bin/startplasmacompositor" - rm "''${!outputLib}/lib/libexec/startplasma" - rm -r "''${!outputBin}/share/wayland-sessions" + moveToOutput lib/libexec/startplasma ''${!outputBin} ''; } diff --git a/pkgs/desktops/plasma-5/plasma-workspace/plasma-workspace.patch b/pkgs/desktops/plasma-5/plasma-workspace/plasma-workspace.patch new file mode 100644 index 00000000000..1f4b83cf83b --- /dev/null +++ b/pkgs/desktops/plasma-5/plasma-workspace/plasma-workspace.patch @@ -0,0 +1,1191 @@ +diff --git a/applets/batterymonitor/package/contents/ui/BatteryItem.qml b/applets/batterymonitor/package/contents/ui/BatteryItem.qml +index 7e2d9758..40a5797b 100644 +--- a/applets/batterymonitor/package/contents/ui/BatteryItem.qml ++++ b/applets/batterymonitor/package/contents/ui/BatteryItem.qml +@@ -26,7 +26,7 @@ import org.kde.plasma.components 2.0 as PlasmaComponents + import org.kde.plasma.extras 2.0 as PlasmaExtras + import org.kde.plasma.workspace.components 2.0 + import org.kde.kcoreaddons 1.0 as KCoreAddons +-import "logic.js" as Logic ++import "../code/logic.js" as Logic + + Item { + id: batteryItem +diff --git a/applets/batterymonitor/package/contents/ui/batterymonitor.qml b/applets/batterymonitor/package/contents/ui/batterymonitor.qml +index ae6d5919..c2f99c86 100644 +--- a/applets/batterymonitor/package/contents/ui/batterymonitor.qml ++++ b/applets/batterymonitor/package/contents/ui/batterymonitor.qml +@@ -25,7 +25,7 @@ import org.kde.plasma.plasmoid 2.0 + import org.kde.plasma.core 2.0 as PlasmaCore + import org.kde.kcoreaddons 1.0 as KCoreAddons + import org.kde.kquickcontrolsaddons 2.0 +-import "logic.js" as Logic ++import "../code/logic.js" as Logic + + Item { + id: batterymonitor +diff --git a/applets/lock_logout/contents/ui/lockout.qml b/applets/lock_logout/contents/ui/lockout.qml +index 80e7e53b..0083cf01 100644 +--- a/applets/lock_logout/contents/ui/lockout.qml ++++ b/applets/lock_logout/contents/ui/lockout.qml +@@ -23,7 +23,7 @@ import org.kde.plasma.plasmoid 2.0 + import org.kde.plasma.core 2.0 as PlasmaCore + import org.kde.plasma.components 2.0 + import org.kde.kquickcontrolsaddons 2.0 +-import "data.js" as Data ++import "../code/data.js" as Data + + Flow { + id: lockout +diff --git a/applets/notifications/package/contents/ui/main.qml b/applets/notifications/package/contents/ui/main.qml +index acdda88f..989de8ab 100644 +--- a/applets/notifications/package/contents/ui/main.qml ++++ b/applets/notifications/package/contents/ui/main.qml +@@ -28,7 +28,7 @@ import org.kde.plasma.extras 2.0 as PlasmaExtras + + import org.kde.plasma.private.notifications 1.0 + +-import "uiproperties.js" as UiProperties ++import "../code/uiproperties.js" as UiProperties + + MouseEventListener { + id: notificationsApplet +diff --git a/krunner/dbus/org.kde.krunner.service.in b/krunner/dbus/org.kde.krunner.service.in +index 85715214..294eab08 100644 +--- a/krunner/dbus/org.kde.krunner.service.in ++++ b/krunner/dbus/org.kde.krunner.service.in +@@ -1,4 +1,4 @@ + [D-BUS Service] + Name=org.kde.krunner +-Exec=@CMAKE_INSTALL_PREFIX@/bin/krunner ++Exec=@CMAKE_INSTALL_FULL_BINDIR@/krunner + +diff --git a/kuiserver/org.kde.kuiserver.service.in b/kuiserver/org.kde.kuiserver.service.in +index 7a86d07f..5b3030cc 100644 +--- a/kuiserver/org.kde.kuiserver.service.in ++++ b/kuiserver/org.kde.kuiserver.service.in +@@ -1,3 +1,3 @@ + [D-BUS Service] + Name=org.kde.kuiserver +-Exec=@CMAKE_INSTALL_PREFIX@/bin/kuiserver5 ++Exec=@CMAKE_INSTALL_FULL_BINDIR@/kuiserver5 +diff --git a/startkde/CMakeLists.txt b/startkde/CMakeLists.txt +index fe29f57a..247db953 100644 +--- a/startkde/CMakeLists.txt ++++ b/startkde/CMakeLists.txt +@@ -3,11 +3,6 @@ add_subdirectory(kstartupconfig) + add_subdirectory(ksyncdbusenv) + add_subdirectory(waitforname) + +-#FIXME: reconsider, looks fishy +-if(NOT CMAKE_INSTALL_PREFIX STREQUAL "/usr") +- set(EXPORT_XCURSOR_PATH "XCURSOR_PATH=${CMAKE_INSTALL_PREFIX}/share/icons:$XCURSOR_PATH\":~/.icons:/usr/share/icons:/usr/share/pixmaps:/usr/X11R6/lib/X11/icons\"; export XCURSOR_PATH") +-endif() +- + configure_file(startkde.cmake ${CMAKE_CURRENT_BINARY_DIR}/startkde @ONLY) + configure_file(startplasmacompositor.cmake ${CMAKE_CURRENT_BINARY_DIR}/startplasmacompositor @ONLY) + configure_file(startplasma.cmake ${CMAKE_CURRENT_BINARY_DIR}/startplasma @ONLY) +diff --git a/startkde/kstartupconfig/kstartupconfig.cpp b/startkde/kstartupconfig/kstartupconfig.cpp +index c9927855..bd506ce2 100644 +--- a/startkde/kstartupconfig/kstartupconfig.cpp ++++ b/startkde/kstartupconfig/kstartupconfig.cpp +@@ -147,5 +147,5 @@ int main() + fclose( keys ); + fclose( config ); + doit: +- return system( "kdostartupconfig5" ); ++ return system( NIXPKGS_KDOSTARTUPCONFIG5 ); + } +diff --git a/startkde/startkde.cmake b/startkde/startkde.cmake +index e9fa0bee..79e50a96 100644 +--- a/startkde/startkde.cmake ++++ b/startkde/startkde.cmake +@@ -1,22 +1,31 @@ + #!/bin/sh + # +-# DEFAULT Plasma STARTUP SCRIPT ( @PROJECT_VERSION@ ) ++# NIXPKGS KDE STARTUP SCRIPT ( @PROJECT_VERSION@ ) + # + ++if test "x$1" = x--failsafe; then ++ KDE_FAILSAFE=1 # General failsafe flag ++ KWIN_COMPOSE=N # Disable KWin's compositing ++ QT_XCB_FORCE_SOFTWARE_OPENGL=1 ++ export KWIN_COMPOSE KDE_FAILSAFE QT_XCB_FORCE_SOFTWARE_OPENGL ++fi ++ + # When the X server dies we get a HUP signal from xinit. We must ignore it + # because we still need to do some cleanup. + trap 'echo GOT SIGHUP' HUP + +-# Check if a Plasma session already is running and whether it's possible to connect to X +-kcheckrunning ++# we have to unset this for Darwin since it will screw up KDE's dynamic-loading ++unset DYLD_FORCE_FLAT_NAMESPACE ++ ++# Check if a KDE session already is running and whether it's possible to connect to X ++@CMAKE_INSTALL_FULL_BINDIR@/kcheckrunning + kcheckrunning_result=$? +-if test $kcheckrunning_result -eq 0 ; then +- echo "Plasma seems to be already running on this display." +- xmessage -geometry 500x100 "Plasma seems to be already running on this display." > /dev/null 2>/dev/null +- exit 1 +-elif test $kcheckrunning_result -eq 2 ; then +- echo "\$DISPLAY is not set or cannot connect to the X server." +- exit 1 ++if [ $kcheckrunning_result -eq 0 ]; then ++ echo "KDE seems to be already running on this display." ++ exit 1 ++elif [ $kcheckrunning_result -eq 2 ]; then ++ echo "\$DISPLAY is not set or cannot connect to the X server." ++ exit 1 + fi + + # Boot sequence: +@@ -33,59 +42,132 @@ fi + # + # * Then ksmserver is started which takes control of the rest of the startup sequence + +-# We need to create config folder so we can write startupconfigkeys +-if [ ${XDG_CONFIG_HOME} ]; then +- configDir=$XDG_CONFIG_HOME; +-else +- configDir=${HOME}/.config; #this is the default, http://standards.freedesktop.org/basedir-spec/basedir-spec-latest.html ++export XDG_CONFIG_HOME="${XDG_CONFIG_HOME:-$HOME/.config}" ++@NIXPKGS_MKDIR@ -p "$XDG_CONFIG_HOME" ++ ++# The KDE icon cache is supposed to update itself ++# automatically, but it uses the timestamp on the icon ++# theme directory as a trigger. Since in Nix the ++# timestamp is always the same, this doesn't work. So as ++# a workaround, nuke the icon cache on login. This isn't ++# perfect, since it may require logging out after ++# installing new applications to update the cache. ++# See http://lists-archives.org/kde-devel/26175-what-when-will-icon-cache-refresh.html ++rm -fv $HOME/.cache/icon-cache.kcache ++ ++# Qt writes a weird ‘libraryPath’ line to ++# ~/.config/Trolltech.conf that causes the KDE plugin ++# paths of previous KDE invocations to be searched. ++# Obviously using mismatching KDE libraries is potentially ++# disastrous, so here we nuke references to the Nix store ++# in Trolltech.conf. A better solution would be to stop ++# Qt from doing this wackiness in the first place. ++if [ -e $XDG_CONFIG_HOME/Trolltech.conf ]; then ++ @NIXPKGS_SED@ -e '/nix\\store\|nix\/store/ d' -i $XDG_CONFIG_HOME/Trolltech.conf + fi + +-mkdir -p $configDir ++@NIXPKGS_KBUILDSYCOCA5@ ++ ++# Set the default GTK 2 theme ++gtkrc2="$HOME/.gtkrc-2.0" ++breeze_gtkrc2="/run/current-system/sw/share/themes/Breeze/gtk-2.0/gtkrc" ++if ! [ -e "$gtkrc2" ] && [ -e "$breeze_gtkrc2" ]; then ++ cat >"$gtkrc2" <"$gtk3_settings" <"$kcminputrc" <$configDir/startupconfigkeys <"$XDG_CONFIG_HOME/startupconfigkeys" <$plasmalocalerc <"$plasmalocalerc" <$kdeglobalsfile <"$kdeglobalsfile" <&2 + exit 1 + fi +-[ -r $configDir/startupconfig ] && . $configDir/startupconfig ++if [ -r "$XDG_CONFIG_HOME/startupconfig" ]; then ++ . "$XDG_CONFIG_HOME/startupconfig" ++fi + + if [ "$kdeglobals_kscreen_screenscalefactors" ]; then + export QT_SCREEN_SCALE_FACTORS="$kdeglobals_kscreen_screenscalefactors" +@@ -94,26 +176,33 @@ fi + #otherwise apps that manually opt in for high DPI get auto scaled by the developer AND manually scaled by us + export QT_AUTO_SCREEN_SCALE_FACTOR=0 + ++#Set the QtQuickControls style to our own: for QtQuickControls1 ++#it will fall back to Desktop, while it will use our own org.kde.desktop ++#for QtQuickControlsStyle and Kirigami ++export QT_QUICK_CONTROLS_STYLE=org.kde.desktop ++ ++XCURSOR_PATH=~/.icons ++IFS=":" read -r -a xdgDirs <<< "$XDG_DATA_DIRS" ++for xdgDir in "${xdgDirs[@]}"; do ++ XCURSOR_PATH="$XCURSOR_PATH:$xdgDir/icons" ++done ++export XCURSOR_PATH ++ + # XCursor mouse theme needs to be applied here to work even for kded or ksmserver + if test -n "$kcminputrc_mouse_cursortheme" -o -n "$kcminputrc_mouse_cursorsize" ; then +- @EXPORT_XCURSOR_PATH@ +- + kapplymousetheme "$kcminputrc_mouse_cursortheme" "$kcminputrc_mouse_cursorsize" +- if test $? -eq 10; then +- XCURSOR_THEME=breeze_cursors +- export XCURSOR_THEME +- elif test -n "$kcminputrc_mouse_cursortheme"; then +- XCURSOR_THEME="$kcminputrc_mouse_cursortheme" +- export XCURSOR_THEME ++ if [ $? -eq 10 ]; then ++ export XCURSOR_THEME=breeze_cursors ++ elif [ -n "$kcminputrc_mouse_cursortheme" ]; then ++ export XCURSOR_THEME="$kcminputrc_mouse_cursortheme" + fi +- if test -n "$kcminputrc_mouse_cursorsize"; then +- XCURSOR_SIZE="$kcminputrc_mouse_cursorsize" +- export XCURSOR_SIZE ++ if [ -n "$kcminputrc_mouse_cursorsize" ]; then ++ export XCURSOR_SIZE="$kcminputrc_mouse_cursorsize" + fi + fi + +-if test "$kcmfonts_general_forcefontdpi" -ne 0; then +- xrdb -quiet -merge -nocpp </plasma-workspace/env/*.sh +-# (where correspond to the system and user's configuration +-# directories, as identified by Qt's qtpaths, e.g. $HOME/.config +-# and /etc/xdg/ on Linux) +-# +-# This is where you can define environment variables that will be available to +-# all KDE programs, so this is where you can run agents using e.g. eval `ssh-agent` +-# or eval `gpg-agent --daemon`. +-# Note: if you do that, you should also put "ssh-agent -k" as a shutdown script +-# +-# (see end of this file). +-# For anything else (that doesn't set env vars, or that needs a window manager), +-# better use the Autostart folder. +- +-scriptpath=`qtpaths --locate-dirs GenericConfigLocation plasma-workspace | tr ':' '\n'` +- +-# Add /env/ to the directory to locate the scripts to be sourced +-for prefix in `echo $scriptpath`; do +- for file in "$prefix"/env/*.sh; do +- test -r "$file" && . "$file" || true +- done +-done +- +-# Activate the kde font directories. +-# +-# There are 4 directories that may be used for supplying fonts for KDE. +-# +-# There are two system directories. These belong to the administrator. +-# There are two user directories, where the user may add her own fonts. +-# +-# The 'override' versions are for fonts that should come first in the list, +-# i.e. if you have a font in your 'override' directory, it will be used in +-# preference to any other. +-# +-# The preference order looks like this: +-# user override, system override, X, user, system +-# +-# Where X is the original font database that was set up before this script +-# runs. +- +-usr_odir=$HOME/.fonts/kde-override +-usr_fdir=$HOME/.fonts +- +-if test -n "$KDEDIRS"; then +- kdedirs_first=`echo "$KDEDIRS"|sed -e 's/:.*//'` +- sys_odir=$kdedirs_first/share/fonts/override +- sys_fdir=$kdedirs_first/share/fonts +-else +- sys_odir=$KDEDIR/share/fonts/override +- sys_fdir=$KDEDIR/share/fonts +-fi +- +-# We run mkfontdir on the user's font dirs (if we have permission) to pick +-# up any new fonts they may have installed. If mkfontdir fails, we still +-# add the user's dirs to the font path, as they might simply have been made +-# read-only by the administrator, for whatever reason. +- +-test -d "$sys_odir" && xset +fp "$sys_odir" +-test -d "$usr_odir" && (mkfontdir "$usr_odir" ; xset +fp "$usr_odir") +-test -d "$usr_fdir" && (mkfontdir "$usr_fdir" ; xset fp+ "$usr_fdir") +-test -d "$sys_fdir" && xset fp+ "$sys_fdir" +- +-# Ask X11 to rebuild its font list. +-xset fp rehash +- + # Set a left cursor instead of the standard X11 "X" cursor, since I've heard + # from some users that they're confused and don't know what to do. This is + # especially necessary on slow machines, where starting KDE takes one or two +@@ -208,28 +232,10 @@ xset fp rehash + # If the user has overwritten fonts, the cursor font may be different now + # so don't move this up. + # +-xsetroot -cursor_name left_ptr +- +-# Get Ghostscript to look into user's KDE fonts dir for additional Fontmap +-if test -n "$GS_LIB" ; then +- GS_LIB=$usr_fdir:$GS_LIB +- export GS_LIB +-else +- GS_LIB=$usr_fdir +- export GS_LIB +-fi ++@NIXPKGS_XSETROOT@ -cursor_name left_ptr + + echo 'startkde: Starting up...' 1>&2 + +-# Make sure that the KDE prefix is first in XDG_DATA_DIRS and that it's set at all. +-# The spec allows XDG_DATA_DIRS to be not set, but X session startup scripts tend +-# to set it to a list of paths *not* including the KDE prefix if it's not /usr or +-# /usr/local. +-if test -z "$XDG_DATA_DIRS"; then +- XDG_DATA_DIRS="@CMAKE_INSTALL_PREFIX@/@SHARE_INSTALL_PREFIX@:/usr/share:/usr/local/share" +-fi +-export XDG_DATA_DIRS +- + # Mark that full KDE session is running (e.g. Konqueror preloading works only + # with full KDE running). The KDE_FULL_SESSION property can be detected by + # any X client connected to the same X session, even if not launched +@@ -254,44 +260,65 @@ export XDG_DATA_DIRS + # + KDE_FULL_SESSION=true + export KDE_FULL_SESSION +-xprop -root -f KDE_FULL_SESSION 8t -set KDE_FULL_SESSION true ++@NIXPKGS_XPROP@ -root -f KDE_FULL_SESSION 8t -set KDE_FULL_SESSION true + + KDE_SESSION_VERSION=5 + export KDE_SESSION_VERSION +-xprop -root -f KDE_SESSION_VERSION 32c -set KDE_SESSION_VERSION 5 ++@NIXPKGS_XPROP@ -root -f KDE_SESSION_VERSION 32c -set KDE_SESSION_VERSION 5 + +-KDE_SESSION_UID=`id -ru` ++KDE_SESSION_UID=$(@NIXPKGS_ID@ -ru) + export KDE_SESSION_UID + + XDG_CURRENT_DESKTOP=KDE + export XDG_CURRENT_DESKTOP + ++# Enforce xcb QPA. Helps switching between Wayland and X sessions. ++export QT_QPA_PLATFORM=xcb ++ ++# Source scripts found in /plasma-workspace/env/*.sh ++# (where correspond to the system and user's configuration ++# directories, as identified by Qt's qtpaths, e.g. $HOME/.config ++# and /etc/xdg/ on Linux) ++# ++# This is where you can define environment variables that will be available to ++# all KDE programs, so this is where you can run agents using e.g. eval `ssh-agent` ++# or eval `gpg-agent --daemon`. ++# Note: if you do that, you should also put "ssh-agent -k" as a shutdown script ++# ++# (see end of this file). ++# For anything else (that doesn't set env vars, or that needs a window manager), ++# better use the Autostart folder. ++ ++IFS=":" read -r -a scriptpath <<< $(@NIXPKGS_QTPATHS@ --paths GenericConfigLocation) ++# Add /env/ to the directory to locate the scripts to be sourced ++for prefix in "${scriptpath[@]}"; do ++ for file in "$prefix"/plasma-workspace/env/*.sh; do ++ if [ -r "$file" ]; then ++ . "$file" ++ fi ++ done ++done ++ + # At this point all environment variables are set, let's send it to the DBus session server to update the activation environment +-if which dbus-update-activation-environment >/dev/null 2>/dev/null ; then +- dbus-update-activation-environment --systemd --all +-else +- @CMAKE_INSTALL_FULL_LIBEXECDIR@/ksyncdbusenv +-fi +-if test $? -ne 0; then ++ ++if ! @NIXPKGS_DBUS_UPDATE_ACTIVATION_ENVIRONMENT@ --systemd --all; then + # Startup error + echo 'startkde: Could not sync environment to dbus.' 1>&2 + test -n "$ksplash_pid" && kill "$ksplash_pid" 2>/dev/null +- xmessage -geometry 500x100 "Could not sync environment to dbus." + exit 1 + fi + + # We set LD_BIND_NOW to increase the efficiency of kdeinit. + # kdeinit unsets this variable before loading applications. +-LD_BIND_NOW=true @CMAKE_INSTALL_FULL_LIBEXECDIR_KF5@/start_kdeinit_wrapper --kded +kcminit_startup ++LD_BIND_NOW=true @NIXPKGS_START_KDEINIT_WRAPPER@ --kded +kcminit_startup + if test $? -ne 0; then + # Startup error + echo 'startkde: Could not start kdeinit5. Check your installation.' 1>&2 + test -n "$ksplash_pid" && kill "$ksplash_pid" 2>/dev/null +- xmessage -geometry 500x100 "Could not start kdeinit5. Check your installation." + exit 1 + fi + +-qdbus org.kde.KSplash /KSplash org.kde.KSplash.setStage kinit & ++@NIXPKGS_QDBUS@ org.kde.KSplash /KSplash org.kde.KSplash.setStage kinit & + + # finally, give the session control to the session manager + # see kdebase/ksmserver for the description of the rest of the startup sequence +@@ -303,34 +330,37 @@ qdbus org.kde.KSplash /KSplash org.kde.KSplash.setStage kinit & + # We only check for 255 which means that the ksmserver process could not be + # started, any problems thereafter, e.g. ksmserver failing to initialize, + # will remain undetected. +-test -n "$KDEWM" && KDEWM="--windowmanager $KDEWM" ++if [ -n "$KDEWM" ]; then ++ KDEWM="--windowmanager $KDEWM" ++fi + # If the session should be locked from the start (locked autologin), + # lock now and do the rest of the KDE startup underneath the locker. + KSMSERVEROPTIONS="" +-test -n "$dl" && KSMSERVEROPTIONS=" --lockscreen" +-kwrapper5 @CMAKE_INSTALL_FULL_BINDIR@/ksmserver $KDEWM $KSMSERVEROPTIONS ++if [ -n "$dl" ]; then ++ KSMSERVEROPTIONS=" --lockscreen" ++fi ++@NIXPKGS_KWRAPPER5@ @CMAKE_INSTALL_FULL_BINDIR@/ksmserver $KDEWM $KSMSERVEROPTIONS + if test $? -eq 255; then + # Startup error + echo 'startkde: Could not start ksmserver. Check your installation.' 1>&2 + test -n "$ksplash_pid" && kill "$ksplash_pid" 2>/dev/null +- xmessage -geometry 500x100 "Could not start ksmserver. Check your installation." + fi + + #Anything after here is logout/shutdown + +-wait_drkonqi=`kreadconfig5 --file startkderc --group WaitForDrKonqi --key Enabled --default true` ++wait_drkonqi=$(@NIXPKGS_KREADCONFIG5@ --file startkderc --group WaitForDrKonqi --key Enabled --default true) + +-if test x"$wait_drkonqi"x = x"true"x ; then ++if [ x"$wait_drkonqi"x = x"true"x ]; then + # wait for remaining drkonqi instances with timeout (in seconds) +- wait_drkonqi_timeout=`kreadconfig5 --file startkderc --group WaitForDrKonqi --key Timeout --default 900` ++ wait_drkonqi_timeout=$(@NIXPKGS_KREADCONFIG5@ --file startkderc --group WaitForDrKonqi --key Timeout --default 900) + wait_drkonqi_counter=0 +- while qdbus | grep "^[^w]*org.kde.drkonqi" > /dev/null ; do ++ while @NIXPKGS_QDBUS@ | @NIXPKGS_GREP@ -q "^[^w]*org.kde.drkonqi" ; do + sleep 5 + wait_drkonqi_counter=$((wait_drkonqi_counter+5)) +- if test "$wait_drkonqi_counter" -ge "$wait_drkonqi_timeout" ; then ++ if [ "$wait_drkonqi_counter" -ge "$wait_drkonqi_timeout" ]; then + # ask remaining drkonqis to die in a graceful way +- qdbus | grep 'org.kde.drkonqi-' | while read address ; do +- qdbus "$address" "/MainApplication" "quit" ++ @NIXPKGS_QDBUS@ | @NIXPKGS_GREP@ 'org.kde.drkonqi-' | while read address ; do ++ @NIXPKGS_QDBUS@ "$address" "/MainApplication" "quit" + done + break + fi +@@ -339,15 +369,17 @@ fi + + echo 'startkde: Shutting down...' 1>&2 + # just in case +-test -n "$ksplash_pid" && kill "$ksplash_pid" 2>/dev/null ++if [ -n "$ksplash_pid" ]; then ++ kill "$ksplash_pid" 2>/dev/null ++fi + + # Clean up +-kdeinit5_shutdown ++@NIXPKGS_KDEINIT5_SHUTDOWN@ + + unset KDE_FULL_SESSION +-xprop -root -remove KDE_FULL_SESSION ++@NIXPKGS_XPROP@ -root -remove KDE_FULL_SESSION + unset KDE_SESSION_VERSION +-xprop -root -remove KDE_SESSION_VERSION ++@NIXPKGS_XPROP@ -root -remove KDE_SESSION_VERSION + unset KDE_SESSION_UID + + echo 'startkde: Done.' 1>&2 +diff --git a/startkde/startplasma.cmake b/startkde/startplasma.cmake +index fd232bdf..e1c8fff6 100644 +--- a/startkde/startplasma.cmake ++++ b/startkde/startplasma.cmake +@@ -1,6 +1,6 @@ + #!/bin/sh + # +-# DEFAULT Plasma STARTUP SCRIPT ( @PROJECT_VERSION@ ) ++# NIXPKGS Plasma STARTUP SCRIPT ( @PROJECT_VERSION@ ) + # + + # Boot sequence: +@@ -17,17 +17,13 @@ + # + # * Then ksmserver is started which takes control of the rest of the startup sequence + +-# We need to create config folder so we can write startupconfigkeys +-if [ ${XDG_CONFIG_HOME} ]; then +- configDir=$XDG_CONFIG_HOME; +-else +- configDir=${HOME}/.config; #this is the default, http://standards.freedesktop.org/basedir-spec/basedir-spec-latest.html ++export XDG_CONFIG_HOME="${XDG_CONFIG_HOME:-$HOME/.config}" ++if [ -r "$XDG_CONFIG_HOME/startupconfig" ]; then ++ . "$XDG_CONFIG_HOME/startupconfig" + fi + +-[ -r $configDir/startupconfig ] && . $configDir/startupconfig +- +-if test "$kcmfonts_general_forcefontdpi" -ne 0; then +- xrdb -quiet -merge -nocpp <&2 + + # export our session variables to the Xwayland server +-xprop -root -f KDE_FULL_SESSION 8t -set KDE_FULL_SESSION true +-xprop -root -f KDE_SESSION_VERSION 32c -set KDE_SESSION_VERSION 5 ++@NIXPKGS_XPROP@ -root -f KDE_FULL_SESSION 8t -set KDE_FULL_SESSION true ++@NIXPKGS_XPROP@ -root -f KDE_SESSION_VERSION 32c -set KDE_SESSION_VERSION 5 + + # We set LD_BIND_NOW to increase the efficiency of kdeinit. + # kdeinit unsets this variable before loading applications. +-LD_BIND_NOW=true @CMAKE_INSTALL_FULL_LIBEXECDIR_KF5@/start_kdeinit_wrapper --kded +kcminit_startup ++LD_BIND_NOW=true @NIXPKGS_START_KDEINIT_WRAPPER@ --kded +kcminit_startup + if test $? -ne 0; then + # Startup error + echo 'startplasma: Could not start kdeinit5. Check your installation.' 1>&2 + test -n "$ksplash_pid" && kill "$ksplash_pid" 2>/dev/null +- xmessage -geometry 500x100 "Could not start kdeinit5. Check your installation." + exit 1 + fi + +-qdbus org.kde.KSplash /KSplash org.kde.KSplash.setStage kinit ++@NIXPKGS_QDBUS@ org.kde.KSplash /KSplash org.kde.KSplash.setStage kinit + + # finally, give the session control to the session manager + # see kdebase/ksmserver for the description of the rest of the startup sequence +@@ -145,27 +89,26 @@ qdbus org.kde.KSplash /KSplash org.kde.KSplash.setStage kinit + # If the session should be locked from the start (locked autologin), + # lock now and do the rest of the KDE startup underneath the locker. + KSMSERVEROPTIONS=" --no-lockscreen" +-kwrapper5 @CMAKE_INSTALL_FULL_BINDIR@/ksmserver $KDEWM $KSMSERVEROPTIONS ++@NIXPKGS_KWRAPPER5@ @CMAKE_INSTALL_FULL_BINDIR@/ksmserver $KDEWM $KSMSERVEROPTIONS + if test $? -eq 255; then + # Startup error + echo 'startplasma: Could not start ksmserver. Check your installation.' 1>&2 + test -n "$ksplash_pid" && kill "$ksplash_pid" 2>/dev/null +- xmessage -geometry 500x100 "Could not start ksmserver. Check your installation." + fi + +-wait_drkonqi=`kreadconfig5 --file startkderc --group WaitForDrKonqi --key Enabled --default true` ++wait_drkonqi=$(@NIXPKGS_KREADCONFIG5@ --file startkderc --group WaitForDrKonqi --key Enabled --default true) + +-if test x"$wait_drkonqi"x = x"true"x ; then ++if [ x"$wait_drkonqi"x = x"true"x ]; then + # wait for remaining drkonqi instances with timeout (in seconds) +- wait_drkonqi_timeout=`kreadconfig5 --file startkderc --group WaitForDrKonqi --key Timeout --default 900` ++ wait_drkonqi_timeout=$(@NIXPKGS_KREADCONFIG5@ --file startkderc --group WaitForDrKonqi --key Timeout --default 900) + wait_drkonqi_counter=0 +- while qdbus | grep "^[^w]*org.kde.drkonqi" > /dev/null ; do ++ while @NIXPKGS_QDBUS@ | @NIXPKGS_GREP@ -q "^[^w]*org.kde.drkonqi" ; do + sleep 5 + wait_drkonqi_counter=$((wait_drkonqi_counter+5)) +- if test "$wait_drkonqi_counter" -ge "$wait_drkonqi_timeout" ; then ++ if [ "$wait_drkonqi_counter" -ge "$wait_drkonqi_timeout" ]; then + # ask remaining drkonqis to die in a graceful way +- qdbus | grep 'org.kde.drkonqi-' | while read address ; do +- qdbus "$address" "/MainApplication" "quit" ++ @NIXPKGS_QDBUS@ | @NIXPKGS_GREP@ 'org.kde.drkonqi-' | while read address ; do ++ @NIXPKGS_QDBUS@ "$address" "/MainApplication" "quit" + done + break + fi +@@ -174,15 +117,17 @@ fi + + echo 'startplasma: Shutting down...' 1>&2 + # just in case +-test -n "$ksplash_pid" && kill "$ksplash_pid" 2>/dev/null ++if [ -n "$ksplash_pid" ]; then ++ kill "$ksplash_pid" 2>/dev/null ++fi + + # Clean up +-kdeinit5_shutdown ++@NIXPKGS_KDEINIT5_SHUTDOWN@ + + unset KDE_FULL_SESSION +-xprop -root -remove KDE_FULL_SESSION ++@NIXPKGS_XPROP@ -root -remove KDE_FULL_SESSION + unset KDE_SESSION_VERSION +-xprop -root -remove KDE_SESSION_VERSION ++@NIXPKGS_XPROP@ -root -remove KDE_SESSION_VERSION + unset KDE_SESSION_UID + + echo 'startplasma: Done.' 1>&2 +diff --git a/startkde/startplasmacompositor.cmake b/startkde/startplasmacompositor.cmake +index 417a87d4..3f62745a 100644 +--- a/startkde/startplasmacompositor.cmake ++++ b/startkde/startplasmacompositor.cmake +@@ -1,173 +1,171 @@ + #!/bin/sh + # +-# DEFAULT Plasma STARTUP SCRIPT ( @PROJECT_VERSION@ ) ++# NIXPKGS Plasma STARTUP SCRIPT ( @PROJECT_VERSION@ ) + # + +-# in case we have been started with full pathname spec without being in PATH +-bindir=`echo "$0" | sed -n 's,^\(/.*\)/[^/][^/]*$,\1,p'` +-if [ -n "$bindir" ]; then +- qbindir=`qtpaths --binaries-dir` +- qdbus=$qbindir/qdbus +- case $PATH in +- $bindir|$bindir:*|*:$bindir|*:$bindir:*) ;; +- *) PATH=$bindir:$PATH; export PATH;; +- esac +-else +- qdbus=qdbus ++# we have to unset this for Darwin since it will screw up KDE's dynamic-loading ++unset DYLD_FORCE_FLAT_NAMESPACE ++ ++export XDG_CONFIG_HOME="${XDG_CONFIG_HOME:-$HOME/.config}" ++@NIXPKGS_MKDIR@ -p "$XDG_CONFIG_HOME" ++ ++# The KDE icon cache is supposed to update itself ++# automatically, but it uses the timestamp on the icon ++# theme directory as a trigger. Since in Nix the ++# timestamp is always the same, this doesn't work. So as ++# a workaround, nuke the icon cache on login. This isn't ++# perfect, since it may require logging out after ++# installing new applications to update the cache. ++# See http://lists-archives.org/kde-devel/26175-what-when-will-icon-cache-refresh.html ++rm -fv $HOME/.cache/icon-cache.kcache ++ ++# Qt writes a weird ‘libraryPath’ line to ++# ~/.config/Trolltech.conf that causes the KDE plugin ++# paths of previous KDE invocations to be searched. ++# Obviously using mismatching KDE libraries is potentially ++# disastrous, so here we nuke references to the Nix store ++# in Trolltech.conf. A better solution would be to stop ++# Qt from doing this wackiness in the first place. ++if [ -e $XDG_CONFIG_HOME/Trolltech.conf ]; then ++ @NIXPKGS_SED@ -e '/nix\\store\|nix\/store/ d' -i $XDG_CONFIG_HOME/Trolltech.conf + fi + +-# We need to create config folder so we can write startupconfigkeys +-if [ ${XDG_CONFIG_HOME} ]; then +- configDir=$XDG_CONFIG_HOME; +-else +- configDir=${HOME}/.config; #this is the default, http://standards.freedesktop.org/basedir-spec/basedir-spec-latest.html ++@NIXPKGS_KBUILDSYCOCA5@ ++ ++# Set the default GTK 2 theme ++gtkrc2="$HOME/.gtkrc-2.0" ++breeze_gtkrc2="/run/current-system/sw/share/themes/Breeze/gtk-2.0/gtkrc" ++if ! [ -e "$gtkrc2" ] && [ -e "$breeze_gtkrc2" ]; then ++ cat >"$gtkrc2" <"$gtk3_settings" <"$kcminputrc" <$configDir/startupconfigkeys <"$XDG_CONFIG_HOME/startupconfigkeys" <$plasmalocalerc <"$plasmalocalerc" <$kdeglobalsfile <"$kdeglobalsfile" </plasma-workspace/env/*.sh +-# (where correspond to the system and user's configuration +-# directories, as identified by Qt's qtpaths, e.g. $HOME/.config +-# and /etc/xdg/ on Linux) +-# +-# This is where you can define environment variables that will be available to +-# all KDE programs, so this is where you can run agents using e.g. eval `ssh-agent` +-# or eval `gpg-agent --daemon`. +-# Note: if you do that, you should also put "ssh-agent -k" as a shutdown script +-# +-# (see end of this file). +-# For anything else (that doesn't set env vars, or that needs a window manager), +-# better use the Autostart folder. +- +-# TODO: Use GenericConfigLocation once we depend on Qt 5.4 +-scriptpath=`qtpaths --paths ConfigLocation | tr ':' '\n' | sed 's,$,/plasma-workspace,g'` +- +-# Add /env/ to the directory to locate the scripts to be sourced +-for prefix in `echo $scriptpath`; do +- for file in "$prefix"/env/*.sh; do +- test -r "$file" && . "$file" +- done +-done +- + echo 'startplasmacompositor: Starting up...' 1>&2 + +-# Make sure that the KDE prefix is first in XDG_DATA_DIRS and that it's set at all. +-# The spec allows XDG_DATA_DIRS to be not set, but X session startup scripts tend +-# to set it to a list of paths *not* including the KDE prefix if it's not /usr or +-# /usr/local. +-if test -z "$XDG_DATA_DIRS"; then +-XDG_DATA_DIRS="@KDE_INSTALL_FULL_DATADIR@:/usr/share:/usr/local/share" +-fi +-export XDG_DATA_DIRS +- + # Make sure that D-Bus is running +-if $qdbus >/dev/null 2>/dev/null; then +- : # ok +-else ++if ! @NIXPKGS_QDBUS@ >/dev/null 2>/dev/null; then + echo 'startplasmacompositor: Could not start D-Bus. Can you call qdbus?' 1>&2 + test -n "$ksplash_pid" && kill "$ksplash_pid" 2>/dev/null + exit 1 +@@ -202,7 +200,7 @@ export KDE_FULL_SESSION + KDE_SESSION_VERSION=5 + export KDE_SESSION_VERSION + +-KDE_SESSION_UID=`id -ru` ++KDE_SESSION_UID=$(@NIXPKGS_ID@ -ru) + export KDE_SESSION_UID + + XDG_CURRENT_DESKTOP=KDE +@@ -212,26 +210,47 @@ export XDG_CURRENT_DESKTOP + QT_QPA_PLATFORM=wayland + export QT_QPA_PLATFORM + ++# Source scripts found in /plasma-workspace/env/*.sh ++# (where correspond to the system and user's configuration ++# directories, as identified by Qt's qtpaths, e.g. $HOME/.config ++# and /etc/xdg/ on Linux) ++# ++# This is where you can define environment variables that will be available to ++# all KDE programs, so this is where you can run agents using e.g. eval `ssh-agent` ++# or eval `gpg-agent --daemon`. ++# Note: if you do that, you should also put "ssh-agent -k" as a shutdown script ++# ++# (see end of this file). ++# For anything else (that doesn't set env vars, or that needs a window manager), ++# better use the Autostart folder. ++ ++IFS=":" read -r -a scriptpath <<< $(@NIXPKGS_QTPATHS@ --paths GenericConfigLocation) ++# Add /env/ to the directory to locate the scripts to be sourced ++for prefix in "${scriptpath[@]}"; do ++ for file in "$prefix"/plasma-workspace/env/*.sh; do ++ if [ -r "$file" ]; then ++ . "$file" ++ fi ++ done ++done ++ + # At this point all environment variables are set, let's send it to the DBus session server to update the activation environment +-if which dbus-update-activation-environment >/dev/null 2>/dev/null ; then +- dbus-update-activation-environment --systemd --all +-else +- @CMAKE_INSTALL_FULL_LIBEXECDIR@/ksyncdbusenv +-fi +-if test $? -ne 0; then +- # Startup error +- echo 'startplasmacompositor: Could not sync environment to dbus.' 1>&2 +- exit 1 ++if ! @NIXPKGS_DBUS_UPDATE_ACTIVATION_ENVIRONMENT@ --systemd --all; then ++ # Startup error ++ echo 'startkde: Could not sync environment to dbus.' 1>&2 ++ test -n "$ksplash_pid" && kill "$ksplash_pid" 2>/dev/null ++ echo 'startplasmacompositor: Could not sync environment to dbus.' 1>&2 ++ exit 1 + fi + +-@KWIN_WAYLAND_BIN_PATH@ --xwayland --libinput --exit-with-session=@CMAKE_INSTALL_FULL_LIBEXECDIR@/startplasma ++@KWIN_WAYLAND_BIN_PATH@ --xwayland --libinput --exit-with-session=@NIXPKGS_STARTPLASMA@ + + echo 'startplasmacompositor: Shutting down...' 1>&2 + + unset KDE_FULL_SESSION +-xprop -root -remove KDE_FULL_SESSION ++@NIXPKGS_XPROP@ -root -remove KDE_FULL_SESSION + unset KDE_SESSION_VERSION +-xprop -root -remove KDE_SESSION_VERSION ++@NIXPKGS_XPROP@ -root -remove KDE_SESSION_VERSION + unset KDE_SESSION_UID + + echo 'startplasmacompositor: Done.' 1>&2 +diff --git a/startkde/waitforname/org.kde.plasma.Notifications.service.in b/startkde/waitforname/org.kde.plasma.Notifications.service.in +index 0a51b84b..f48b5d8a 100644 +--- a/startkde/waitforname/org.kde.plasma.Notifications.service.in ++++ b/startkde/waitforname/org.kde.plasma.Notifications.service.in +@@ -1,3 +1,3 @@ + [D-BUS Service] + Name=org.freedesktop.Notifications +-Exec=@CMAKE_INSTALL_PREFIX@/bin/plasma_waitforname org.freedesktop.Notifications ++Exec=@CMAKE_INSTALL_FULL_BINDIR@/plasma_waitforname org.freedesktop.Notifications diff --git a/pkgs/desktops/plasma-5/plasma-workspace/qml-import-path.patch b/pkgs/desktops/plasma-5/plasma-workspace/qml-import-path.patch deleted file mode 100644 index 3b3d318d3bb..00000000000 --- a/pkgs/desktops/plasma-5/plasma-workspace/qml-import-path.patch +++ /dev/null @@ -1,52 +0,0 @@ -Index: plasma-workspace-5.6.3/applets/batterymonitor/package/contents/ui/BatteryItem.qml -=================================================================== ---- plasma-workspace-5.6.3.orig/applets/batterymonitor/package/contents/ui/BatteryItem.qml -+++ plasma-workspace-5.6.3/applets/batterymonitor/package/contents/ui/BatteryItem.qml -@@ -26,7 +26,7 @@ import org.kde.plasma.components 2.0 as - import org.kde.plasma.extras 2.0 as PlasmaExtras - import org.kde.plasma.workspace.components 2.0 - import org.kde.kcoreaddons 1.0 as KCoreAddons --import "logic.js" as Logic -+import "../code/logic.js" as Logic - - Item { - id: batteryItem -Index: plasma-workspace-5.6.3/applets/batterymonitor/package/contents/ui/batterymonitor.qml -=================================================================== ---- plasma-workspace-5.6.3.orig/applets/batterymonitor/package/contents/ui/batterymonitor.qml -+++ plasma-workspace-5.6.3/applets/batterymonitor/package/contents/ui/batterymonitor.qml -@@ -25,7 +25,7 @@ import org.kde.plasma.plasmoid 2.0 - import org.kde.plasma.core 2.0 as PlasmaCore - import org.kde.kcoreaddons 1.0 as KCoreAddons - import org.kde.kquickcontrolsaddons 2.0 --import "logic.js" as Logic -+import "../code/logic.js" as Logic - - Item { - id: batterymonitor -Index: plasma-workspace-5.6.3/applets/lock_logout/contents/ui/lockout.qml -=================================================================== ---- plasma-workspace-5.6.3.orig/applets/lock_logout/contents/ui/lockout.qml -+++ plasma-workspace-5.6.3/applets/lock_logout/contents/ui/lockout.qml -@@ -23,7 +23,7 @@ import org.kde.plasma.plasmoid 2.0 - import org.kde.plasma.core 2.0 as PlasmaCore - import org.kde.plasma.components 2.0 - import org.kde.kquickcontrolsaddons 2.0 --import "data.js" as Data -+import "../code/data.js" as Data - - Flow { - id: lockout -Index: plasma-workspace-5.6.3/applets/notifications/package/contents/ui/main.qml -=================================================================== ---- plasma-workspace-5.6.3.orig/applets/notifications/package/contents/ui/main.qml -+++ plasma-workspace-5.6.3/applets/notifications/package/contents/ui/main.qml -@@ -28,7 +28,7 @@ import org.kde.plasma.extras 2.0 as Plas - - import org.kde.plasma.private.notifications 1.0 - --import "uiproperties.js" as UiProperties -+import "../code/uiproperties.js" as UiProperties - - MouseEventListener { - id: notificationsApplet diff --git a/pkgs/desktops/plasma-5/plasma-workspace/series b/pkgs/desktops/plasma-5/plasma-workspace/series deleted file mode 100644 index b9081298bd6..00000000000 --- a/pkgs/desktops/plasma-5/plasma-workspace/series +++ /dev/null @@ -1 +0,0 @@ -qml-import-path.patch From 0cd1b028174fe250c071c735be231db881fe964f Mon Sep 17 00:00:00 2001 From: Thomas Tuegel Date: Fri, 20 Oct 2017 09:16:12 -0500 Subject: [PATCH 42/43] plasma-5: remove `startkde` We no longer have a separate `startkde` script; instead we patch the script which comes with `plasma-workspace`. The primary reason to do this is that we have not been keeping up with the minor bugfixes that the upstream script receives. A secondary reason is: now that we support Wayland, we don't really want to have a separate package for each session script. --- pkgs/desktops/plasma-5/default.nix | 1 - pkgs/desktops/plasma-5/startkde/default.nix | 41 --- pkgs/desktops/plasma-5/startkde/startkde.sh | 384 -------------------- 3 files changed, 426 deletions(-) delete mode 100644 pkgs/desktops/plasma-5/startkde/default.nix delete mode 100755 pkgs/desktops/plasma-5/startkde/startkde.sh diff --git a/pkgs/desktops/plasma-5/default.nix b/pkgs/desktops/plasma-5/default.nix index a9b3f178132..a828ba0fe7b 100644 --- a/pkgs/desktops/plasma-5/default.nix +++ b/pkgs/desktops/plasma-5/default.nix @@ -139,7 +139,6 @@ let polkit-kde-agent = callPackage ./polkit-kde-agent.nix {}; powerdevil = callPackage ./powerdevil.nix {}; sddm-kcm = callPackage ./sddm-kcm.nix {}; - startkde = callPackage ./startkde {}; systemsettings = callPackage ./systemsettings.nix {}; }; in diff --git a/pkgs/desktops/plasma-5/startkde/default.nix b/pkgs/desktops/plasma-5/startkde/default.nix deleted file mode 100644 index 3b04c037073..00000000000 --- a/pkgs/desktops/plasma-5/startkde/default.nix +++ /dev/null @@ -1,41 +0,0 @@ -{ - stdenv, lib, runCommand, substituteAll, dbus, gnugrep, gnused, kconfig, - kinit, kservice, plasma-desktop, plasma-workspace, xmessage, xprop, xrdb, - xsetroot, qttools, -}: - -let - - inherit (lib) getBin getLib; - - script = substituteAll { - src = ./startkde.sh; - inherit (stdenv) shell; - kbuildsycoca5 = "${getBin kservice}/bin/kbuildsycoca5"; - sed = "${getBin gnused}/bin/sed"; - kcheckrunning = "${getBin plasma-workspace}/bin/kcheckrunning"; - xmessage = "${getBin xmessage}/bin/xmessage"; - kstartupconfig5 = "${getBin plasma-workspace}/bin/kstartupconfig5"; - kapplymousetheme = "${getBin plasma-desktop}/bin/kapplymousetheme"; - xsetroot = "${getBin xsetroot}/bin/xsetroot"; - xrdb = "${getBin xrdb}/bin/xrdb"; - ksplashqml = "${getBin plasma-workspace}/bin/ksplashqml"; - qdbus = "${getBin qttools}/bin/qdbus"; - xprop = "${getBin xprop}/bin/xprop"; - qtpaths = "${getBin qttools}/bin/qtpaths"; - dbus_update_activation_environment = "${getBin dbus}/bin/dbus-update-activation-environment"; - start_kdeinit_wrapper = "${getLib kinit}/lib/libexec/kf5/start_kdeinit_wrapper"; - kwrapper5 = "${getBin kinit}/bin/kwrapper5"; - ksmserver = "${getBin plasma-workspace}/bin/ksmserver"; - kreadconfig5 = "${getBin kconfig}/bin/kreadconfig5"; - kdeinit5_shutdown = "${getBin kinit}/bin/kdeinit5_shutdown"; - }; - -in - -runCommand "startkde.sh" -{ preferLocalBuild = true; allowSubstitutes = false; } -'' - cp ${script} $out - chmod +x $out -'' diff --git a/pkgs/desktops/plasma-5/startkde/startkde.sh b/pkgs/desktops/plasma-5/startkde/startkde.sh deleted file mode 100755 index f8b4f4844e2..00000000000 --- a/pkgs/desktops/plasma-5/startkde/startkde.sh +++ /dev/null @@ -1,384 +0,0 @@ -#!@shell@ - -@kbuildsycoca5@ - -# Set the default GTK 2 theme -if ! [ -e $HOME/.gtkrc-2.0 ] \ - && [ -e /run/current-system/sw/share/themes/Breeze/gtk-2.0/gtkrc ]; then - cat >$HOME/.gtkrc-2.0 <$HOME/.config/gtk-3.0/settings.ini <$configDir/kcminputrc <$configDir/startupconfigkeys <$plasmalocalerc <$kdeglobalsfile <&2 - -# Make sure that D-Bus is running -if @qdbus@ >/dev/null 2>/dev/null; then - : # ok -else - echo 'startkde: Could not start D-Bus. Can you call qdbus?' 1>&2 - test -n "$ksplash_pid" && kill "$ksplash_pid" 2>/dev/null - @xmessage@ -geometry 500x100 "Could not start D-Bus. Can you call qdbus?" - exit 1 -fi - -# Mark that full KDE session is running (e.g. Konqueror preloading works only -# with full KDE running). The KDE_FULL_SESSION property can be detected by -# any X client connected to the same X session, even if not launched -# directly from the KDE session but e.g. using "ssh -X", kdesu. $KDE_FULL_SESSION -# however guarantees that the application is launched in the same environment -# like the KDE session and that e.g. KDE utilities/libraries are available. -# KDE_FULL_SESSION property is also only available since KDE 3.5.5. -# The matching tests are: -# For $KDE_FULL_SESSION: -# if test -n "$KDE_FULL_SESSION"; then ... whatever -# For KDE_FULL_SESSION property: -# xprop -root | grep "^KDE_FULL_SESSION" >/dev/null 2>/dev/null -# if test $? -eq 0; then ... whatever -# -# Additionally there is (since KDE 3.5.7) $KDE_SESSION_UID with the uid -# of the user running the KDE session. It should be rarely needed (e.g. -# after sudo to prevent desktop-wide functionality in the new user's kded). -# -# Since KDE4 there is also KDE_SESSION_VERSION, containing the major version number. -# Note that this didn't exist in KDE3, which can be detected by its absense and -# the presence of KDE_FULL_SESSION. -# -KDE_FULL_SESSION=true -export KDE_FULL_SESSION -@xprop@ -root -f KDE_FULL_SESSION 8t -set KDE_FULL_SESSION true - -KDE_SESSION_VERSION=5 -export KDE_SESSION_VERSION -@xprop@ -root -f KDE_SESSION_VERSION 32c -set KDE_SESSION_VERSION 5 - -KDE_SESSION_UID=$(id -ru) -export KDE_SESSION_UID - -XDG_CURRENT_DESKTOP=KDE -export XDG_CURRENT_DESKTOP - -# Source scripts found in /plasma-workspace/env/*.sh -# (where correspond to the system and user's configuration -# directories, as identified by Qt's qtpaths, e.g. $HOME/.config -# and /etc/xdg/ on Linux) -# -# This is where you can define environment variables that will be available to -# all KDE programs, so this is where you can run agents using e.g. eval `ssh-agent` -# or eval `gpg-agent --daemon`. -# Note: if you do that, you should also put "ssh-agent -k" as a shutdown script -# -# (see end of this file). -# For anything else (that doesn't set env vars, or that needs a window manager), -# better use the Autostart folder. - -IFS=":" read -r -a scriptpath <<< $(@qtpaths@ --paths GenericConfigLocation) -# Add /env/ to the directory to locate the scripts to be sourced -for prefix in "${scriptpath[@]}"; do - for file in "$prefix"/plasma-workspace/env/*.sh; do - test -r "$file" && . "$file" || true - done -done - -# At this point all environment variables are set, let's send it to the DBus session server to update the activation environment -@dbus_update_activation_environment@ --systemd --all -if test $? -ne 0; then - # Startup error - echo 'startkde: Could not sync environment to dbus.' 1>&2 - test -n "$ksplash_pid" && kill "$ksplash_pid" 2>/dev/null - @xmessage@ -geometry 500x100 "Could not sync environment to dbus." - exit 1 -fi - -# We set LD_BIND_NOW to increase the efficiency of kdeinit. -# kdeinit unsets this variable before loading applications. -LD_BIND_NOW=true @start_kdeinit_wrapper@ --kded +kcminit_startup -if test $? -ne 0; then - # Startup error - echo 'startkde: Could not start kdeinit5. Check your installation.' 1>&2 - test -n "$ksplash_pid" && kill "$ksplash_pid" 2>/dev/null - @xmessage@ -geometry 500x100 "Could not start kdeinit5. Check your installation." - exit 1 -fi - -@qdbus@ org.kde.KSplash /KSplash org.kde.KSplash.setStage kinit - -# finally, give the session control to the session manager -# see kdebase/ksmserver for the description of the rest of the startup sequence -# if the KDEWM environment variable has been set, then it will be used as KDE's -# window manager instead of kwin. -# if KDEWM is not set, ksmserver will ensure kwin is started. -# kwrapper5 is used to reduce startup time and memory usage -# kwrapper5 does not return useful error codes such as the exit code of ksmserver. -# We only check for 255 which means that the ksmserver process could not be -# started, any problems thereafter, e.g. ksmserver failing to initialize, -# will remain undetected. -test -n "$KDEWM" && KDEWM="--windowmanager $KDEWM" -# If the session should be locked from the start (locked autologin), -# lock now and do the rest of the KDE startup underneath the locker. -KSMSERVEROPTIONS="" -test -n "$dl" && KSMSERVEROPTIONS=" --lockscreen" -@kwrapper5@ @ksmserver@ $KDEWM $KSMSERVEROPTIONS -if test $? -eq 255; then - # Startup error - echo 'startkde: Could not start ksmserver. Check your installation.' 1>&2 - test -n "$ksplash_pid" && kill "$ksplash_pid" 2>/dev/null - @xmessage@ -geometry 500x100 "Could not start ksmserver. Check your installation." -fi - -wait_drkonqi=$(@kreadconfig5@ --file startkderc --group WaitForDrKonqi --key Enabled --default true) - -if test x"$wait_drkonqi"x = x"true"x ; then - # wait for remaining drkonqi instances with timeout (in seconds) - wait_drkonqi_timeout=$(kreadconfig5 --file startkderc --group WaitForDrKonqi --key Timeout --default 900) - wait_drkonqi_counter=0 - while qdbus | grep "^[^w]*org.kde.drkonqi" > /dev/null ; do - sleep 5 - wait_drkonqi_counter=$((wait_drkonqi_counter+5)) - if test "$wait_drkonqi_counter" -ge "$wait_drkonqi_timeout" ; then - # ask remaining drkonqis to die in a graceful way - @qdbus@ | grep 'org.kde.drkonqi-' | while read address ; do - @qdbus@ "$address" "/MainApplication" "quit" - done - break - fi - done -fi - -echo 'startkde: Shutting down...' 1>&2 -# just in case -test -n "$ksplash_pid" && kill "$ksplash_pid" 2>/dev/null - -# Clean up -@kdeinit5_shutdown@ - -unset KDE_FULL_SESSION -@xprop@ -root -remove KDE_FULL_SESSION -unset KDE_SESSION_VERSION -@xprop@ -root -remove KDE_SESSION_VERSION -unset KDE_SESSION_UID - -echo 'startkde: Done.' 1>&2 From e40233e13695dc11c7ee67df6c751ff81a2e173b Mon Sep 17 00:00:00 2001 From: Michael Weiss Date: Thu, 19 Oct 2017 14:54:59 +0200 Subject: [PATCH 43/43] scons: 2.5.1 -> 3.0.0 "SCons release 3.0.0 now available from the download page at SourceForge. This release should be used instead of 2.5.1. This release fixes several issues. TThis will be the first release to support Python versions earlier than 2.7 as well as 3.5+." "NOTE: This is a major release. You should expect that some targets may rebuild when upgrading. Significant changes in some python action signatures. Also switching between PY 2.7 and PY 3.5, 3.6 will cause rebuilds." --- .../tools/build-managers/scons/common.nix | 32 +++++++++++++++++++ .../tools/build-managers/scons/default.nix | 32 +++++-------------- .../build-managers/scons/default.upstream | 10 ------ .../scons/print-statements.patch | 13 ++++++++ pkgs/top-level/all-packages.nix | 4 ++- 5 files changed, 56 insertions(+), 35 deletions(-) create mode 100644 pkgs/development/tools/build-managers/scons/common.nix delete mode 100644 pkgs/development/tools/build-managers/scons/default.upstream create mode 100644 pkgs/development/tools/build-managers/scons/print-statements.patch diff --git a/pkgs/development/tools/build-managers/scons/common.nix b/pkgs/development/tools/build-managers/scons/common.nix new file mode 100644 index 00000000000..de36925368d --- /dev/null +++ b/pkgs/development/tools/build-managers/scons/common.nix @@ -0,0 +1,32 @@ +{ version, sha256 }: + +{ stdenv, fetchurl, fetchpatch, python2Packages }: + +let name = "scons"; +in python2Packages.buildPythonApplication { + name = "${name}-${version}"; + + src = fetchurl { + url = "mirror://sourceforge/scons/${name}-${version}.tar.gz"; + inherit sha256; + }; + + # Fix a regression in 3.0.0 (causes build errors for some packages) + patches = stdenv.lib.optional (version == "3.0.0") ./print-statements.patch; + + meta = with stdenv.lib; { + homepage = http://scons.org/; + description = "An improved, cross-platform substitute for Make"; + license = licenses.mit; + longDescription = '' + SCons is an Open Source software construction tool. Think of + SCons as an improved, cross-platform substitute for the classic + Make utility with integrated functionality similar to + autoconf/automake and compiler caches such as ccache. In short, + SCons is an easier, more reliable and faster way to build + software. + ''; + platforms = platforms.all; + maintainers = [ primeos ]; + }; +} diff --git a/pkgs/development/tools/build-managers/scons/default.nix b/pkgs/development/tools/build-managers/scons/default.nix index 1b2a8220361..8e40777815c 100644 --- a/pkgs/development/tools/build-managers/scons/default.nix +++ b/pkgs/development/tools/build-managers/scons/default.nix @@ -1,30 +1,14 @@ -{stdenv, fetchurl, python2Packages}: +{ callPackage, stdenv }: let - name = "scons"; - version = "2.5.1"; -in python2Packages.buildPythonApplication { - name = "${name}-${version}"; - - src = fetchurl { - url = "mirror://sourceforge/scons/${name}-${version}.tar.gz"; + mkScons = args: callPackage (import ./common.nix args) { }; +in { + scons_2_5_1 = mkScons { + version = "2.5.1"; sha256 = "1wji1z9jdkhnmm99apx6fhld9cs52rr56aigniyrcsmlwy52298b"; }; - # No tests - doCheck = false; - - meta = { - homepage = http://scons.org/; - description = "An improved, cross-platform substitute for Make"; - license = stdenv.lib.licenses.mit; - longDescription = '' - SCons is an Open Source software construction tool. Think of - SCons as an improved, cross-platform substitute for the classic - Make utility with integrated functionality similar to - autoconf/automake and compiler caches such as ccache. In short, - SCons is an easier, more reliable and faster way to build - software. - ''; - platforms = stdenv.lib.platforms.all; + scons_3_0_0 = mkScons { + version = "3.0.0"; + sha256 = "05jjykllk4icnq6gfrkgkbc4ggxm7983q6r33mrhpilqbd02ylqg"; }; } diff --git a/pkgs/development/tools/build-managers/scons/default.upstream b/pkgs/development/tools/build-managers/scons/default.upstream deleted file mode 100644 index f9dae2818c8..00000000000 --- a/pkgs/development/tools/build-managers/scons/default.upstream +++ /dev/null @@ -1,10 +0,0 @@ -url http://sourceforge.net/projects/scons/files/scons/ -SF_version_dir -version_link '[.]tar[.]gz/download$' -SF_redirect -ensure_hash - -do_overwrite() { - set_var_value version "$CURRENT_VERSION" - set_var_value sha256 "$CURRENT_HASH" -} diff --git a/pkgs/development/tools/build-managers/scons/print-statements.patch b/pkgs/development/tools/build-managers/scons/print-statements.patch new file mode 100644 index 00000000000..a963bf78aba --- /dev/null +++ b/pkgs/development/tools/build-managers/scons/print-statements.patch @@ -0,0 +1,13 @@ +diff --git a/src/engine/SCons/Script/SConscript.py b/src/engine/SCons/Script/SConscript.py +index 558e28f9..8fea9c4d 100644 +--- src/engine/SCons/Script/SConscript.py ++++ src/engine/SCons/Script/SConscript.py +@@ -5,8 +5,6 @@ + + """ + +-from __future__ import print_function +- + # + # __COPYRIGHT__ + # diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 2ced90b2d0f..1b362df2e59 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -7536,7 +7536,9 @@ with pkgs; selendroid = callPackage ../development/tools/selenium/selendroid { }; - scons = callPackage ../development/tools/build-managers/scons { }; + sconsPackages = callPackage ../development/tools/build-managers/scons { }; + scons = sconsPackages.scons_3_0_0; + scons_2_5_1 = sconsPackages.scons_2_5_1; sbt = callPackage ../development/tools/build-managers/sbt { }; sbt-with-scala-native = callPackage ../development/tools/build-managers/sbt/scala-native.nix { };