diff --git a/nixos/modules/services/network-filesystems/rsyncd.nix b/nixos/modules/services/network-filesystems/rsyncd.nix index 9f1263ddff56..edac86eb0e30 100644 --- a/nixos/modules/services/network-filesystems/rsyncd.nix +++ b/nixos/modules/services/network-filesystems/rsyncd.nix @@ -46,6 +46,13 @@ in { ''; }; + socketActivated = mkOption { + default = false; + type = types.bool; + description = + "If enabled Rsync will be socket-activated rather than run persistently."; + }; + }; }; @@ -63,12 +70,55 @@ in { services.rsyncd.settings.global.port = toString cfg.port; - systemd.services.rsyncd = { - description = "Rsync daemon"; - wantedBy = [ "multi-user.target" ]; - serviceConfig.ExecStart = - "${pkgs.rsync}/bin/rsync --daemon --no-detach --config=${configFile}"; + systemd = let + serviceConfigSecurity = { + ProtectSystem = "full"; + PrivateDevices = "on"; + NoNewPrivileges = "on"; + }; + in { + services.rsync = { + enable = !cfg.socketActivated; + aliases = [ "rsyncd" ]; + + description = "fast remote file copy program daemon"; + after = [ "network.target" ]; + documentation = [ "man:rsync(1)" "man:rsyncd.conf(5)" ]; + + serviceConfig = serviceConfigSecurity // { + ExecStart = + "${pkgs.rsync}/bin/rsync --daemon --no-detach --config=${configFile}"; + RestartSec = 1; + }; + + wantedBy = [ "multi-user.target" ]; + }; + + services."rsync@" = { + description = "fast remote file copy program daemon"; + after = [ "network.target" ]; + + serviceConfig = serviceConfigSecurity // { + ExecStart = "${pkgs.rsync}/bin/rsync --daemon --config=${configFile}"; + StandardInput = "socket"; + StandardOutput = "inherit"; + StandardError = "journal"; + }; + }; + + sockets.rsync = { + enable = cfg.socketActivated; + + description = "socket for fast remote file copy program daemon"; + conflicts = [ "rsync.service" ]; + + listenStreams = [ (toString cfg.port) ]; + socketConfig.Accept = true; + + wantedBy = [ "sockets.target" ]; + }; }; + }; meta.maintainers = with lib.maintainers; [ ehmry ]; diff --git a/nixos/tests/rsyncd.nix b/nixos/tests/rsyncd.nix index 3639320f645d..44464e42f28d 100644 --- a/nixos/tests/rsyncd.nix +++ b/nixos/tests/rsyncd.nix @@ -2,24 +2,35 @@ import ./make-test-python.nix ({ pkgs, ... }: { name = "rsyncd"; meta.maintainers = with pkgs.lib.maintainers; [ ehmry ]; - nodes.machine.services.rsyncd = { - enable = true; - settings = { - global = { - "reverse lookup" = false; - "forward lookup" = false; + nodes = let + mkNode = socketActivated: + { config, ... }: { + networking.firewall.allowedTCPPorts = [ config.services.rsyncd.port ]; + services.rsyncd = { + enable = true; + inherit socketActivated; + settings = { + global = { + "reverse lookup" = false; + "forward lookup" = false; + }; + tmp = { + path = "/nix/store"; + comment = "test module"; + }; + }; + }; }; - tmp = { - path = "/nix/store"; - comment = "test module"; - }; - - }; + in { + a = mkNode false; + b = mkNode true; }; testScript = '' start_all() - machine.wait_for_unit("rsyncd") - machine.succeed("rsync localhost::") + a.wait_for_unit("rsync") + b.wait_for_unit("sockets.target") + b.succeed("rsync a::") + a.succeed("rsync b::") ''; }) diff --git a/pkgs/applications/audio/callaudiod/default.nix b/pkgs/applications/audio/callaudiod/default.nix new file mode 100644 index 000000000000..d742961939f6 --- /dev/null +++ b/pkgs/applications/audio/callaudiod/default.nix @@ -0,0 +1,43 @@ +{ lib +, stdenv +, fetchFromGitLab +, meson +, ninja +, pkg-config +, glib +, alsaLib +, libpulseaudio +}: + +stdenv.mkDerivation rec { + pname = "callaudiod"; + version = "0.0.4"; + + src = fetchFromGitLab { + domain = "gitlab.com"; + owner = "mobian1"; + repo = pname; + rev = version; + sha256 = "07k7xp5a9c4d4lq7amaj6cg6b3gsd77x9wvf7nzcf4vpaph4yiyj"; + }; + + nativeBuildInputs = [ + meson + ninja + pkg-config + ]; + + buildInputs = [ + alsaLib + libpulseaudio + glib + ]; + + meta = with lib; { + description = "Daemon for dealing with audio routing during phone calls"; + homepage = "https://gitlab.com/mobian1/callaudiod"; + license = licenses.gpl3Plus; + maintainers = with maintainers; [ pacman99 ]; + platforms = platforms.linux; + }; +} diff --git a/pkgs/applications/misc/feedbackd/default.nix b/pkgs/applications/misc/feedbackd/default.nix new file mode 100644 index 000000000000..34119c2006d4 --- /dev/null +++ b/pkgs/applications/misc/feedbackd/default.nix @@ -0,0 +1,52 @@ +{ lib +, stdenv +, fetchFromGitLab +, meson +, ninja +, pkg-config +, wrapGAppsHook +, glib +, gsound +, libgudev +, json-glib +, vala +, gobject-introspection +}: + +stdenv.mkDerivation rec { + pname = "feedbackd-unstable"; + version = "2021-01-25"; + + src = fetchFromGitLab { + domain = "source.puri.sm"; + owner = "Librem5"; + repo = "feedbackd"; + rev = "v0.0.0+git${builtins.replaceStrings ["-"] [""] version}"; + sha256 = "184ag10sfzrka533inv6f38x6z769kq5jj56vdkcm65j5h786w5v"; + }; + + nativeBuildInputs = [ + meson + ninja + pkg-config + wrapGAppsHook + vala + gobject-introspection + ]; + + buildInputs = [ + glib + gsound + libgudev + json-glib + ]; + + meta = with lib; { + description = "A daemon to provide haptic (and later more) feedback on events"; + homepage = "https://source.puri.sm/Librem5/feedbackd"; + license = licenses.gpl3Plus; + maintainers = with maintainers; [ pacman99 ]; + platforms = platforms.linux; + }; +} + diff --git a/pkgs/applications/misc/pdfpc/default.nix b/pkgs/applications/misc/pdfpc/default.nix index 6430b894b7b5..84ba3ced8fc7 100644 --- a/pkgs/applications/misc/pdfpc/default.nix +++ b/pkgs/applications/misc/pdfpc/default.nix @@ -38,7 +38,7 @@ stdenv.mkDerivation rec { meta = with lib; { description = "A presenter console with multi-monitor support for PDF files"; homepage = "https://pdfpc.github.io/"; - license = licenses.gpl2Plus; + license = licenses.gpl3Plus; maintainers = with maintainers; [ pSub ]; platforms = platforms.unix; }; diff --git a/pkgs/applications/networking/calls/default.nix b/pkgs/applications/networking/calls/default.nix index e6d4845761a5..01797397f4ef 100644 --- a/pkgs/applications/networking/calls/default.nix +++ b/pkgs/applications/networking/calls/default.nix @@ -1,13 +1,17 @@ -{ lib, stdenv +{ lib +, stdenv , fetchFromGitLab , meson , ninja +, cmake , pkg-config -, libhandy_0 +, libhandy , modemmanager , gtk3 , gom , gsound +, feedbackd +, callaudiod , evolution-data-server , folks , desktop-file-utils @@ -22,14 +26,14 @@ stdenv.mkDerivation rec { pname = "calls"; - version = "0.1.5"; + version = "0.2.0"; src = fetchFromGitLab { domain = "source.puri.sm"; owner = "Librem5"; - repo = "calls"; + repo = pname; rev = "v${version}"; - sha256 = "1wqkczl1fn4d2py00fsb6kh05avmc7c49gi49j3592fqsvi87j18"; + sha256 = "1qmjdhnr95dawccw1ss8hc3lk0cypj86xg2amjq7avzn86ryd76l"; }; nativeBuildInputs = [ @@ -38,16 +42,19 @@ stdenv.mkDerivation rec { pkg-config desktop-file-utils vala + cmake wrapGAppsHook ]; buildInputs = [ modemmanager - libhandy_0 + libhandy evolution-data-server folks gom gsound + feedbackd + callaudiod gtk3 libpeas ]; diff --git a/pkgs/applications/video/obs-studio/obs-gstreamer.nix b/pkgs/applications/video/obs-studio/obs-gstreamer.nix new file mode 100644 index 000000000000..e32ec7575b2d --- /dev/null +++ b/pkgs/applications/video/obs-studio/obs-gstreamer.nix @@ -0,0 +1,44 @@ +{ lib +, stdenv +, fetchFromGitHub +, gst_all_1 +, pkg-config +, meson +, ninja +, obs-studio +}: + +stdenv.mkDerivation rec { + pname = "obs-gstreamer"; + version = "0.2.1"; + + src = fetchFromGitHub { + owner = "fzwoch"; + repo = "obs-gstreamer"; + rev = "v${version}"; + sha256 = "1fdpwr8br8x9cnrhr3j4f0l81df26n3bj2ibi3cg96rl86054nid"; + }; + + nativeBuildInputs = [ pkg-config meson ninja ]; + buildInputs = [ gst_all_1.gstreamermm obs-studio ]; + + # obs-studio expects the shared object to be located in bin/32bit or bin/64bit + # https://github.com/obsproject/obs-studio/blob/d60c736cb0ec0491013293c8a483d3a6573165cb/libobs/obs-nix.c#L48 + postInstall = let + pluginPath = { + i686-linux = "bin/32bit"; + x86_64-linux = "bin/64bit"; + }.${stdenv.targetPlatform.system} or (throw "Unsupported system: ${stdenv.targetPlatform.system}"); + in '' + mkdir -p $out/share/obs/obs-plugins/obs-gstreamer/${pluginPath} + ln -s $out/lib/obs-plugins/obs-gstreamer.so $out/share/obs/obs-plugins/obs-gstreamer/${pluginPath} + ''; + + meta = with lib; { + description = "An OBS Studio source, encoder and video filter plugin to use GStreamer elements/pipelines in OBS Studio"; + homepage = "https://github.com/fswoch/obs-gstreamer"; + maintainers = with maintainers; [ ahuzik ]; + license = licenses.gpl2Plus; + platforms = [ "x86_64-linux" "i686-linux" ]; + }; +} diff --git a/pkgs/development/compilers/flutter/default.nix b/pkgs/development/compilers/flutter/default.nix index 3eea7f596b6b..8572040cb0cd 100644 --- a/pkgs/development/compilers/flutter/default.nix +++ b/pkgs/development/compilers/flutter/default.nix @@ -1,40 +1,24 @@ -{ callPackage, dart }: +{ callPackage, fetchurl, dart }: + let - dart_stable = dart.override { version = "2.10.0"; }; - dart_beta = dart.override { version = "2.10.0"; }; - dart_dev = dart.override { version = "2.11.0-161.0.dev"; }; mkFlutter = opts: callPackage (import ./flutter.nix opts) { }; getPatches = dir: let files = builtins.attrNames (builtins.readDir dir); in map (f: dir + ("/" + f)) files; + version = "1.22.5"; + channel = "stable"; + filename = "flutter_linux_${version}-${channel}.tar.xz"; in { mkFlutter = mkFlutter; stable = mkFlutter rec { + inherit dart version; pname = "flutter"; - channel = "stable"; - version = "1.22.0"; - filename = "flutter_linux_${version}-${channel}.tar.xz"; - sha256Hash = "0ryrx458ss8ryhmspcfrhjvad2pl46bxh1qk5vzwzhxiqdc79vm8"; - patches = getPatches ./patches/stable; - dart = dart_stable; - }; - beta = mkFlutter rec { - pname = "flutter"; - channel = "beta"; - version = "1.22.0-12.3.pre"; - filename = "flutter_linux_${version}-${channel}.tar.xz"; - sha256Hash = "1axzz137z4lgpa09h7bjf52i6dij6a9wmjbha1182db23r09plzh"; - patches = getPatches ./patches/stable; - dart = dart_beta; - }; - dev = mkFlutter rec { - pname = "flutter"; - channel = "dev"; - version = "1.23.0-7.0.pre"; - filename = "flutter_linux_${version}-${channel}.tar.xz"; - sha256Hash = "166qb4qbv051bc71yj7c0vrkamhvzz3fp3mz318qzm947mydwjj5"; - patches = getPatches ./patches/dev; - dart = dart_dev; + patches = getPatches ./patches; + src = fetchurl { + url = "https://storage.googleapis.com/flutter_infra/releases/${channel}/linux/${filename}"; + sha256 = "1dv5kczcj9npf7xxlanmpc9ijnxa3ap46521cxn14c0i3y9295ja"; + }; + depsSha256 = "0d7vhk6axgqajy2d9ia9lc6awcnz6cc3n04r7hnh7bx4hb0jv0l1"; }; } diff --git a/pkgs/development/compilers/flutter/flutter.nix b/pkgs/development/compilers/flutter/flutter.nix index a7ec87322507..e3fcf77e391c 100644 --- a/pkgs/development/compilers/flutter/flutter.nix +++ b/pkgs/development/compilers/flutter/flutter.nix @@ -1,10 +1,9 @@ -{ channel -, pname +{ pname , version -, sha256Hash , patches , dart -, filename ? "flutter_linux_${version}-${channel}.tar.xz" +, src +, depsSha256 }: { bash @@ -13,7 +12,8 @@ , coreutils , git , runCommand -, lib, stdenv +, stdenv +, lib , fetchurl , alsaLib , dbus @@ -30,21 +30,20 @@ , nspr , nss , systemd +, callPackage }: let - drvName = "flutter-${channel}-${version}"; + repository = callPackage ./repository.nix { + inherit src pname version dart depsSha256; + }; + drvName = "flutter-${version}"; + flutter = stdenv.mkDerivation { name = "${drvName}-unwrapped"; - src = fetchurl { - url = - "https://storage.googleapis.com/flutter_infra/releases/${channel}/linux/${filename}"; - sha256 = sha256Hash; - }; + buildInputs = [ git repository ]; - buildInputs = [ git ]; - - inherit patches; + inherit src patches; postPatch = '' patchShebangs --build ./bin/ @@ -52,25 +51,25 @@ let ''; buildPhase = '' - FLUTTER_ROOT=$(pwd) - FLUTTER_TOOLS_DIR="$FLUTTER_ROOT/packages/flutter_tools" - SNAPSHOT_PATH="$FLUTTER_ROOT/bin/cache/flutter_tools.snapshot" - STAMP_PATH="$FLUTTER_ROOT/bin/cache/flutter_tools.stamp" - SCRIPT_PATH="$FLUTTER_TOOLS_DIR/bin/flutter_tools.dart" - DART_SDK_PATH="${dart}" + export FLUTTER_ROOT="$(pwd)" + export FLUTTER_TOOLS_DIR="$FLUTTER_ROOT/packages/flutter_tools" + export SCRIPT_PATH="$FLUTTER_TOOLS_DIR/bin/flutter_tools.dart" - HOME=../.. # required for pub upgrade --offline, ~/.pub-cache - # path is relative otherwise it's replaced by /build/flutter + mkdir -p "$out/bin/cache" + export SNAPSHOT_PATH="$out/bin/cache/flutter_tools.snapshot" + export STAMP_PATH="$out/bin/cache/flutter_tools.stamp" - (cd "$FLUTTER_TOOLS_DIR" && ${dart}/bin/pub upgrade --offline) + export DART_SDK_PATH="${dart}" + export PUB_CACHE="${repository}" + + pushd "$FLUTTER_TOOLS_DIR" + ${dart}/bin/pub get --offline + popd local revision="$(cd "$FLUTTER_ROOT"; git rev-parse HEAD)" ${dart}/bin/dart --snapshot="$SNAPSHOT_PATH" --packages="$FLUTTER_TOOLS_DIR/.packages" "$SCRIPT_PATH" echo "$revision" > "$STAMP_PATH" echo -n "${version}" > version - - rm -rf bin/cache/{artifacts,dart-sdk,downloads} - rm -f bin/cache/*.stamp ''; installPhase = '' @@ -146,7 +145,7 @@ runCommand drvName homepage = "https://flutter.dev"; license = licenses.bsd3; platforms = [ "x86_64-linux" ]; - maintainers = with maintainers; [ babariviere ericdallo ]; + maintainers = with maintainers; [ babariviere ericdallo thiagokokada ]; }; } '' mkdir -p $out/bin diff --git a/pkgs/development/compilers/flutter/patches/dev/disable-auto-update.patch b/pkgs/development/compilers/flutter/patches/dev/disable-auto-update.patch deleted file mode 100644 index f9ac00d1d323..000000000000 --- a/pkgs/development/compilers/flutter/patches/dev/disable-auto-update.patch +++ /dev/null @@ -1,31 +0,0 @@ -diff --git a/bin/internal/shared.sh b/bin/internal/shared.sh -index 22efe87443..c6954575c5 100644 ---- a/bin/internal/shared.sh -+++ b/bin/internal/shared.sh -@@ -212,8 +212,6 @@ function shared::execute() { - # FLUTTER_TOOL_ARGS="--enable-asserts $FLUTTER_TOOL_ARGS" - # FLUTTER_TOOL_ARGS="$FLUTTER_TOOL_ARGS --observe=65432" - -- upgrade_flutter 7< "$PROG_NAME" -- - BIN_NAME="$(basename "$PROG_NAME")" - case "$BIN_NAME" in - flutter*) -diff --git a/packages/flutter_tools/lib/src/runner/flutter_command_runner.dart b/packages/flutter_tools/lib/src/runner/flutter_command_runner.dart -index fb1616ba96..b973b3fd58 100644 ---- a/packages/flutter_tools/lib/src/runner/flutter_command_runner.dart -+++ b/packages/flutter_tools/lib/src/runner/flutter_command_runner.dart -@@ -291,13 +291,6 @@ class FlutterCommandRunner extends CommandRunner { - globals.flutterUsage.suppressAnalytics = true; - } - -- try { -- await globals.flutterVersion.ensureVersionFile(); -- } on FileSystemException catch (e) { -- globals.printError('Failed to write the version file to the artifact cache: "$e".'); -- globals.printError('Please ensure you have permissions in the artifact cache directory.'); -- throwToolExit('Failed to write the version file'); -- } - final bool machineFlag = topLevelResults['machine'] as bool; - if (topLevelResults.command?.name != 'upgrade' && topLevelResults['version-check'] as bool && !machineFlag) { - await globals.flutterVersion.checkFlutterVersionFreshness(); diff --git a/pkgs/development/compilers/flutter/patches/dev/move-cache.patch b/pkgs/development/compilers/flutter/patches/dev/move-cache.patch deleted file mode 100644 index eb6ff5cf582e..000000000000 --- a/pkgs/development/compilers/flutter/patches/dev/move-cache.patch +++ /dev/null @@ -1,64 +0,0 @@ -diff --git a/dev/devicelab/lib/framework/runner.dart b/dev/devicelab/lib/framework/runner.dart -index a059a8e992..b664a7070c 100644 ---- a/dev/devicelab/lib/framework/runner.dart -+++ b/dev/devicelab/lib/framework/runner.dart -@@ -137,7 +137,7 @@ Future cleanupSystem() async { - print('\nTelling Gradle to shut down (JAVA_HOME=$javaHome)'); - final String gradlewBinaryName = Platform.isWindows ? 'gradlew.bat' : 'gradlew'; - final Directory tempDir = Directory.systemTemp.createTempSync('flutter_devicelab_shutdown_gradle.'); -- recursiveCopy(Directory(path.join(flutterDirectory.path, 'bin', 'cache', 'artifacts', 'gradle_wrapper')), tempDir); -+ recursiveCopy(Directory(path.join(globals.fsUtils.homeDirPath, '.cache', 'flutter', 'artifacts', 'gradle_wrapper')), tempDir); - copy(File(path.join(path.join(flutterDirectory.path, 'packages', 'flutter_tools'), 'templates', 'app', 'android.tmpl', 'gradle', 'wrapper', 'gradle-wrapper.properties')), Directory(path.join(tempDir.path, 'gradle', 'wrapper'))); - if (!Platform.isWindows) { - await exec( -diff --git a/packages/flutter_tools/lib/src/asset.dart b/packages/flutter_tools/lib/src/asset.dart -index 36714c5fb4..c0cc049ee1 100644 ---- a/packages/flutter_tools/lib/src/asset.dart -+++ b/packages/flutter_tools/lib/src/asset.dart -@@ -6,6 +6,7 @@ import 'package:meta/meta.dart'; - import 'package:package_config/package_config.dart'; - import 'package:yaml/yaml.dart'; - -+import 'base/common.dart'; - import 'base/context.dart'; - import 'base/file_system.dart'; - import 'base/utils.dart'; -@@ -397,7 +398,7 @@ List<_Asset> _getMaterialAssets(String fontSet) { - for (final Map font in (family['fonts'] as List).cast>()) { - final Uri entryUri = globals.fs.path.toUri(font['asset'] as String); - result.add(_Asset( -- baseDir: globals.fs.path.join(Cache.flutterRoot, 'bin', 'cache', 'artifacts', 'material_fonts'), -+ baseDir: globals.fs.path.join(globals.fsUtils.homeDirPath, '.cache', 'flutter', 'artifacts', 'material_fonts'), - relativeUri: Uri(path: entryUri.pathSegments.last), - entryUri: entryUri, - package: null, -diff --git a/packages/flutter_tools/lib/src/cache.dart b/packages/flutter_tools/lib/src/cache.dart -index aaca036d78..43ff428f8d 100644 ---- a/packages/flutter_tools/lib/src/cache.dart -+++ b/packages/flutter_tools/lib/src/cache.dart -@@ -226,8 +226,15 @@ class Cache { - return; - } - assert(_lock == null); -+ -+ final Directory dir = globals.fs.directory(globals.fs.path.join(globals.fsUtils.homeDirPath, '.cache', 'flutter')); -+ if (!dir.existsSync()) { -+ dir.createSync(recursive: true); -+ globals.os.chmod(dir, '755'); -+ } -+ - final File lockFile = -- globals.fs.file(globals.fs.path.join(flutterRoot, 'bin', 'cache', 'lockfile')); -+ globals.fs.file(globals.fs.path.join(globals.fsUtils.homeDirPath, '.cache', 'flutter', 'lockfile')); - try { - _lock = lockFile.openSync(mode: FileMode.write); - } on FileSystemException catch (e) { -@@ -330,7 +337,7 @@ class Cache { - if (_rootOverride != null) { - return _fileSystem.directory(_fileSystem.path.join(_rootOverride.path, 'bin', 'cache')); - } else { -- return _fileSystem.directory(_fileSystem.path.join(flutterRoot, 'bin', 'cache')); -+ return _fileSystem.directory(_fileSystem.path.join(globals.fsUtils.homeDirPath, '.cache', 'flutter')); - } - } - diff --git a/pkgs/development/compilers/flutter/patches/stable/disable-auto-update.patch b/pkgs/development/compilers/flutter/patches/disable-auto-update.patch similarity index 100% rename from pkgs/development/compilers/flutter/patches/stable/disable-auto-update.patch rename to pkgs/development/compilers/flutter/patches/disable-auto-update.patch diff --git a/pkgs/development/compilers/flutter/patches/stable/move-cache.patch b/pkgs/development/compilers/flutter/patches/move-cache.patch similarity index 100% rename from pkgs/development/compilers/flutter/patches/stable/move-cache.patch rename to pkgs/development/compilers/flutter/patches/move-cache.patch diff --git a/pkgs/development/compilers/flutter/repository.nix b/pkgs/development/compilers/flutter/repository.nix new file mode 100644 index 000000000000..0f8de0a912f1 --- /dev/null +++ b/pkgs/development/compilers/flutter/repository.nix @@ -0,0 +1,24 @@ +{ lib, stdenv, dart, fetchurl, src, pname, version, depsSha256 }: + +stdenv.mkDerivation { + inherit src version; + + pname = "${pname}-deps"; + buildInputs = [ dart ]; + + buildPhase = '' + export PUB_CACHE="$out" + export FLUTTER_ROOT="$(pwd)" + export FLUTTER_TOOLS_DIR="$FLUTTER_ROOT/packages/flutter_tools" + + pushd "$FLUTTER_TOOLS_DIR" + ${dart}/bin/pub get + ''; + + dontInstall = true; + dontFixup = true; + + outputHashAlgo = "sha256"; + outputHashMode = "recursive"; + outputHash = depsSha256; +} diff --git a/pkgs/development/coq-modules/corn/default.nix b/pkgs/development/coq-modules/corn/default.nix index 9f2316f3177d..6910f487c64e 100644 --- a/pkgs/development/coq-modules/corn/default.nix +++ b/pkgs/development/coq-modules/corn/default.nix @@ -3,8 +3,14 @@ with lib; mkCoqDerivation rec { pname = "corn"; inherit version; - defaultVersion = if versions.range "8.6" "8.9" coq.coq-version then "8.8.1" else null; - release."8.8.1".sha256 = "0gh32j0f18vv5lmf6nb87nr5450w6ai06rhrnvlx2wwi79gv10wp"; + defaultVersion = switch coq.coq-version [ + { case = "8.6"; out = "8.8.1"; } + { case = (versions.range "8.7" "8.12"); out = "8.12.0"; } + ] null; + release = { + "8.8.1".sha256 = "0gh32j0f18vv5lmf6nb87nr5450w6ai06rhrnvlx2wwi79gv10wp"; + "8.12.0".sha256 = "0b92vhyzn1j6cs84z2182fn82hxxj0bqq7hk6cs4awwb3vc7dkhi"; + }; preConfigure = "patchShebangs ./configure.sh"; configureScript = "./configure.sh"; diff --git a/pkgs/development/interpreters/dart/default.nix b/pkgs/development/interpreters/dart/default.nix index 7fa59a18c5f1..5fb180201b96 100644 --- a/pkgs/development/interpreters/dart/default.nix +++ b/pkgs/development/interpreters/dart/default.nix @@ -1,89 +1,42 @@ -{ lib, stdenv, fetchurl, unzip, version ? "2.7.2" }: - -let - - sources = let - +{ stdenv +, lib +, fetchurl +, unzip +, version ? "2.10.5" +, sources ? + let base = "https://storage.googleapis.com/dart-archive/channels"; - stable_version = "stable"; - dev_version = "dev"; x86_64 = "x64"; i686 = "ia32"; aarch64 = "arm64"; + # Make sure that if the user overrides version parameter they're + # also need to override sources, to avoid mistakes + version = "2.10.5"; + in + { + "${version}-x86_64-darwin" = fetchurl { + url = "${base}/stable/release/${version}/sdk/dartsdk-macos-${x86_64}-release.zip"; + sha256 = "1vb2m25w6v901id9syan9q69fa60sxxd7qpyzq21fn5dpah0g99i"; + }; + "${version}-x86_64-linux" = fetchurl { + url = "${base}/stable/release/${version}/sdk/dartsdk-linux-${x86_64}-release.zip"; + sha256 = "1mb6m3vxjya1dz47mdna23c2015n3bz8dvz8fwggq6k3zp0a4dsh"; + }; + "${version}-i686-linux" = fetchurl { + url = "${base}/stable/release/${version}/sdk/dartsdk-linux-${i686}-release.zip"; + sha256 = "10g4qrwvmabrdg4i8y0wq9g7whqcpkdfp05yilflg70ybplrscf7"; + }; + "${version}-aarch64-linux" = fetchurl { + url = "${base}/stable/release/${version}/sdk/dartsdk-linux-${aarch64}-release.zip"; + sha256 = "0js83wy496swcwia144fhxk872irb5nr6i8558hxabkdrpv1bky5"; + }; + } +}: - in { - "1.24.3-x86_64-darwin" = fetchurl { - url = "${base}/${stable_version}/release/${version}/sdk/dartsdk-macos-${x86_64}-release.zip"; - sha256 = "1n4cq4jrms4j0yl54b3w14agcgy8dbipv5788jziwk8q06a8c69l"; - }; - "1.24.3-x86_64-linux" = fetchurl { - url = "${base}/${stable_version}/release/${version}/sdk/dartsdk-linux-${x86_64}-release.zip"; - sha256 = "16sm02wbkj328ni0z1z4n4msi12lb8ijxzmbbfamvg766mycj8z3"; - }; - "1.24.3-i686-linux" = fetchurl { - url = "${base}/${stable_version}/release/${version}/sdk/dartsdk-linux-${i686}-release.zip"; - sha256 = "0a559mfpb0zfd49zdcpld95h2g1lmcjwwsqf69hd9rw6j67qyyyn"; - }; - "1.24.3-aarch64-linux" = fetchurl { - url = "${base}/${stable_version}/release/${version}/sdk/dartsdk-linux-${aarch64}-release.zip"; - sha256 = "1p5bn04gr91chcszgmw5ng8mlzgwsrdr2v7k7ppwr1slkx97fsrh"; - }; - "2.7.2-x86_64-darwin" = fetchurl { - url = "${base}/${stable_version}/release/${version}/sdk/dartsdk-macos-${x86_64}-release.zip"; - sha256 = "111zl075qdk2zd4d4mmfkn30jmzsri9nq3nspnmc2l245gdq34jj"; - }; - "2.7.2-x86_64-linux" = fetchurl { - url = "${base}/${stable_version}/release/${version}/sdk/dartsdk-linux-${x86_64}-release.zip"; - sha256 = "0vvsgda1smqdjn35yiq9pxx8f5haxb4hqnspcsfs6sn5c36k854v"; - }; - "2.7.2-i686-linux" = fetchurl { - url = "${base}/${stable_version}/release/${version}/sdk/dartsdk-linux-${i686}-release.zip"; - sha256 = "0dj01d2wwrp3cc5x73vs6fzhs6db60gkbjlrw3w9j04wcx69i38m"; - }; - "2.7.2-aarch64-linux" = fetchurl { - url = "${base}/${stable_version}/release/${version}/sdk/dartsdk-linux-${aarch64}-release.zip"; - sha256 = "1p66fkdh1kv0ypmadmg67c3y3li3aaf1lahqh2g6r6qrzbh5da2p"; - }; - "2.10.0-x86_64-darwin" = fetchurl { - url = "${base}/${stable_version}/release/${version}/sdk/dartsdk-macos-${x86_64}-release.zip"; - sha256 = "1n4qgsax5wi7krgvvs0dy7fz39nlykiw8gr0gdacc85hgyhqg09j"; - }; - "2.10.0-x86_64-linux" = fetchurl { - url = "${base}/${stable_version}/release/${version}/sdk/dartsdk-linux-${x86_64}-release.zip"; - sha256 = "0dncmsfbwcn3ygflhp83i6z4bvc02fbpaq1vzdzw8xdk3sbynchb"; - }; - "2.9.0-4.0.dev-x86_64-darwin" = fetchurl { - url = "${base}/${dev_version}/release/${version}/sdk/dartsdk-macos-${x86_64}-release.zip"; - sha256 = "0gj91pbvqrxsvxaj742cllqha2z65867gggzq9hq5139vkkpfj9s"; - }; - "2.9.0-4.0.dev-x86_64-linux" = fetchurl { - url = "${base}/${dev_version}/release/${version}/sdk/dartsdk-linux-${x86_64}-release.zip"; - sha256 = "16d9842fb3qbc0hy0zmimav9zndfkq96glgykj20xssc88qpjk2r"; - }; - "2.9.0-4.0.dev-i686-linux" = fetchurl { - url = "${base}/${dev_version}/release/${version}/sdk/dartsdk-linux-${i686}-release.zip"; - sha256 = "105wgyxmi491c7qw0z3zhn4lv52h80ngyz4ch9dyj0sq8nndz2rc"; - }; - "2.9.0-4.0.dev-aarch64-linux" = fetchurl { - url = "${base}/${dev_version}/release/${version}/sdk/dartsdk-linux-${aarch64}-release.zip"; - sha256 = "1x6mlmc4hccmx42k7srhma18faxpxvghjwqahna80508rdpljwgc"; - }; - "2.11.0-161.0.dev-x86_64-darwin" = fetchurl { - url = "${base}/${dev_version}/release/${version}/sdk/dartsdk-macos-${x86_64}-release.zip"; - sha256 = "0mlwxp7jkkjafxkc4vqlgwl62y0hk1arhfrvc9hpm9dv98g3bdjj"; - }; - "2.11.0-161.0.dev-x86_64-linux" = fetchurl { - url = "${base}/${dev_version}/release/${version}/sdk/dartsdk-linux-${x86_64}-release.zip"; - sha256 = "05difz4w2fyh2yq5p5pkrqk59jqljlxhc1i6lmy5kihh6z69r12i"; - }; - }; - -in - -with lib; +assert version != null && version != ""; +assert sources != null && (builtins.isAttrs sources); stdenv.mkDerivation { - pname = "dart"; inherit version; @@ -100,13 +53,13 @@ stdenv.mkDerivation { find $out/bin -executable -type f -exec patchelf --set-interpreter $(cat $NIX_CC/nix-support/dynamic-linker) {} \; ''; - libPath = makeLibraryPath [ stdenv.cc.cc ]; + libPath = lib.makeLibraryPath [ stdenv.cc.cc ]; dontStrip = true; - meta = { + meta = with lib; { homepage = "https://www.dartlang.org/"; - maintainers = with maintainers; [ grburst ]; + maintainers = with maintainers; [ grburst thiagokokada ]; description = "Scalable programming language, with robust libraries and runtimes, for building web, server, and mobile apps"; longDescription = '' Dart is a class-based, single inheritance, object-oriented language diff --git a/pkgs/development/libraries/libcommuni/default.nix b/pkgs/development/libraries/libcommuni/default.nix index 47360e11bc5e..0b0cc325a356 100644 --- a/pkgs/development/libraries/libcommuni/default.nix +++ b/pkgs/development/libraries/libcommuni/default.nix @@ -4,13 +4,13 @@ stdenv.mkDerivation rec { pname = "libcommuni"; - version = "3.5.0"; + version = "3.6.0"; src = fetchFromGitHub { owner = "communi"; repo = "libcommuni"; rev = "v${version}"; - sha256 = "15crqc7a4kwrfbxs121rpdysw0694hh7dr290gg7pm61akvnrqcm"; + sha256 = "sha256-ABvrMoOVSycbQ8iRDzi7zkFnuSgHMMBgm9cDUWlD4uc="; }; buildInputs = [ qtbase qtdeclarative ]; diff --git a/pkgs/development/ocaml-modules/curly/default.nix b/pkgs/development/ocaml-modules/curly/default.nix index 491b2844ef1d..1c48b509c414 100644 --- a/pkgs/development/ocaml-modules/curly/default.nix +++ b/pkgs/development/ocaml-modules/curly/default.nix @@ -26,5 +26,12 @@ buildDunePackage rec { substituteInPlace src/curly.ml \ --replace "exe=\"curl\"" "exe=\"${curl}/bin/curl\"" ''; + + meta = with lib; { + description = "Curly is a brain dead wrapper around the curl command line utility"; + homepage = "https://github.com/rgrinberg/curly"; + license = licenses.isc; + maintainers = [ maintainers.sternenseemann ]; + }; } diff --git a/pkgs/development/python-modules/google-cloud-iam/default.nix b/pkgs/development/python-modules/google-cloud-iam/default.nix index f96940f4e67f..243c2b86c1ee 100644 --- a/pkgs/development/python-modules/google-cloud-iam/default.nix +++ b/pkgs/development/python-modules/google-cloud-iam/default.nix @@ -12,11 +12,11 @@ buildPythonPackage rec { pname = "google-cloud-iam"; - version = "2.0.0"; + version = "2.1.0"; src = fetchPypi { inherit pname version; - sha256 = "1zxsx5avs8njiyw32zvsx2yblmmiwxy771x334hbgmy0aqms4lak"; + sha256 = "d34604508e3e87b9161ccd5ff29474867ac91ffb8d29e1a2fc9ff0e26d934b73"; }; propagatedBuildInputs = [ google-api-core libcst proto-plus ]; diff --git a/pkgs/development/python-modules/pytest-order/default.nix b/pkgs/development/python-modules/pytest-order/default.nix new file mode 100644 index 000000000000..b07be1178c63 --- /dev/null +++ b/pkgs/development/python-modules/pytest-order/default.nix @@ -0,0 +1,35 @@ +{ buildPythonPackage +, fetchPypi +, lib +, pytest +, pytest-xdist +, pytest-dependency +, pytest-mock +, pytestCheckHook +}: + +buildPythonPackage rec { + pname = "pytest-order"; + version = "0.9.4"; + + src = fetchPypi { + inherit pname version; + sha256 = "0b7i8z6rywnkb3skyg8bnfqgkjrwvkn64b4q07wfl1q7x65ksd26"; + }; + + propagatedBuildInputs = [ pytest ]; + + checkInputs = [ + pytestCheckHook + pytest-xdist + pytest-dependency + pytest-mock + ]; + + meta = { + description = "Pytest plugin that allows you to customize the order in which your tests are run"; + homepage = "https://github.com/mrbean-bremen/pytest-order"; + license = lib.licenses.mit; + maintainers = [ lib.maintainers.jacg ]; + }; +} diff --git a/pkgs/development/tools/analysis/brakeman/default.nix b/pkgs/development/tools/analysis/brakeman/default.nix index de351524f39b..3ac6b34f9488 100644 --- a/pkgs/development/tools/analysis/brakeman/default.nix +++ b/pkgs/development/tools/analysis/brakeman/default.nix @@ -4,13 +4,13 @@ buildRubyGem rec { inherit ruby; name = "${gemName}-${version}"; gemName = "brakeman"; - version = "4.8.0"; - source.sha256 = "0xy28pq4x1i7xns5af9k8fx35sqffz2lg94fgbsi9zhi877b7srg"; + version = "5.0.0"; + source.sha256 = "0k1ynqsr9b0vnxqb7d5hbdk4q1i98zjzdnx4y1ylikz4rmkizf91"; meta = with lib; { description = "Static analysis security scanner for Ruby on Rails"; homepage = "https://brakemanscanner.org/"; - changelog = "https://github.com/presidentbeef/brakeman/releases/tag/v${version}"; + changelog = "https://github.com/presidentbeef/brakeman/blob/v${version}/CHANGES.md"; license = [ licenses.unfreeRedistributable ]; platforms = ruby.meta.platforms; maintainers = [ maintainers.marsam ]; diff --git a/pkgs/development/tools/heroku/default.nix b/pkgs/development/tools/heroku/default.nix index e1aee1e28ca7..81c059d2939f 100644 --- a/pkgs/development/tools/heroku/default.nix +++ b/pkgs/development/tools/heroku/default.nix @@ -2,11 +2,11 @@ stdenv.mkDerivation rec { pname = "heroku"; - version = "7.45.0"; + version = "7.47.11"; src = fetchurl { url = "https://cli-assets.heroku.com/heroku-v${version}/heroku-v${version}.tar.xz"; - sha256 = "0yxwy7ldi4r7r03a9ay7ikawfwa11x7lvldjskm7nl4a1g4i3jqi"; + sha256 = "1inf2radpkd9jndap91cw0wbb2qmi71i287vyydl492372cf3cs2"; }; nativeBuildInputs = [ makeWrapper ]; diff --git a/pkgs/games/trackballs/default.nix b/pkgs/games/trackballs/default.nix index 4c7d2ba6956e..8ebeab4b260b 100644 --- a/pkgs/games/trackballs/default.nix +++ b/pkgs/games/trackballs/default.nix @@ -18,6 +18,7 @@ stdenv.mkDerivation rec { homepage = "https://trackballs.github.io/"; description = "3D Marble Madness clone"; platforms = platforms.linux; - license = licenses.gpl2; + # Music is licensed under Ethymonics Free Music License. + license = licenses.gpl2Plus; }; } diff --git a/pkgs/os-specific/linux/nvidia-x11/default.nix b/pkgs/os-specific/linux/nvidia-x11/default.nix index 004858964a71..50b724870d86 100644 --- a/pkgs/os-specific/linux/nvidia-x11/default.nix +++ b/pkgs/os-specific/linux/nvidia-x11/default.nix @@ -22,10 +22,10 @@ rec { # Policy: use the highest stable version as the default (on our master). stable = if stdenv.hostPlatform.system == "x86_64-linux" then generic { - version = "460.32.03"; - sha256_64bit = "0qb0f8djys55b7qgvpbwafw5lkwvmcslqz3i2kr3jm354gy248ag"; - settingsSha256 = "0mfkw0s4gy1dx671cp1kbpkpkf9c4271w5dz0ykiacz22simi83l"; - persistencedSha256 = "1zrnmwlwqg3pgy1jvldy9iv994wr823rl7vjr1kqnngdmn7bflxl"; + version = "460.39"; + sha256_64bit = "0zx3v4xas9z18yv1z3irp626h8kvcg8aw344sqpacfh1g106dw0b"; + settingsSha256 = "15fa6lmfmgg02gya47ynx5d7cqsb73w4rbg4ly7lc1pnwl5f9qhm"; + persistencedSha256 = "1dj3w03fa1i32c9c7w9392bg3nr2dk8mm4qm0wv12cv587zml0gx"; } else legacy_390; diff --git a/pkgs/tools/admin/nomachine-client/default.nix b/pkgs/tools/admin/nomachine-client/default.nix index 6727a8978788..c419c7e834a2 100644 --- a/pkgs/tools/admin/nomachine-client/default.nix +++ b/pkgs/tools/admin/nomachine-client/default.nix @@ -1,10 +1,10 @@ { lib, stdenv, file, fetchurl, makeWrapper, autoPatchelfHook, jsoncpp, libpulseaudio }: let - versionMajor = "6.12"; - versionMinor = "3"; - versionBuild_x86_64 = "7"; - versionBuild_i686 = "8"; + versionMajor = "7.0"; + versionMinor = "211"; + versionBuild_x86_64 = "4"; + versionBuild_i686 = "4"; in stdenv.mkDerivation rec { pname = "nomachine-client"; @@ -13,23 +13,18 @@ in src = if stdenv.hostPlatform.system == "x86_64-linux" then fetchurl { - urls = [ - "https://download.nomachine.com/download/${versionMajor}/Linux/nomachine_${version}_${versionBuild_x86_64}_x86_64.tar.gz" - "https://web.archive.org/web/https://download.nomachine.com/download/${versionMajor}/Linux/nomachine_${version}_${versionBuild_x86_64}_x86_64.tar.gz" - ]; - sha256 = "1dqsqwxbd77g6gc0hvjmmg4flm3vwwv5y98m8d9wxyybp37vkmgd"; + url = "https://download.nomachine.com/download/${versionMajor}/Linux/nomachine_${version}_${versionBuild_x86_64}_x86_64.tar.gz"; + sha256 = "06habqsl5gp13sym519r3qp188qwqqfw8p48wcs4zj3kcri6fjz0"; } else if stdenv.hostPlatform.system == "i686-linux" then fetchurl { - urls = [ - "https://download.nomachine.com/download/${versionMajor}/Linux/nomachine_${version}_${versionBuild_i686}_i686.tar.gz" - "https://web.archive.org/web/https://download.nomachine.com/download/${versionMajor}/Linux/nomachine_${version}_${versionBuild_i686}_i686.tar.gz" - ]; - sha256 = "1q14hxjy66s5cpq19rshscsm679csb6p16c5p2agh5zd64cr4am6"; + url = "https://download.nomachine.com/download/${versionMajor}/Linux/nomachine_${version}_${versionBuild_i686}_i686.tar.gz"; + sha256 = "1y4lr95mwilwr7gqsxqvygq4w3dcp4cjh8m06wdi3avwdzrjkgj9"; } else throw "NoMachine client is not supported on ${stdenv.hostPlatform.system}"; + # nxusb-legacy is only needed for kernel versions < 3 postUnpack = '' mv $(find . -type f -name nxclient.tar.gz) . mv $(find . -type f -name nxplayer.tar.gz) . @@ -37,6 +32,8 @@ in tar xf nxclient.tar.gz tar xf nxplayer.tar.gz rm $(find . -maxdepth 1 -type f) + rm -r NX/share/src/nxusb-legacy + rm NX/bin/nxusbd-legacy NX/lib/libnxusb-legacy.so ''; nativeBuildInputs = [ file makeWrapper autoPatchelfHook ]; @@ -85,8 +82,8 @@ in description = "NoMachine remote desktop client (nxplayer)"; homepage = "https://www.nomachine.com/"; license = { - fullName = "NoMachine 6 End-User License Agreement"; - url = "https://www.nomachine.com/licensing-6"; + fullName = "NoMachine 7 End-User License Agreement"; + url = "https://www.nomachine.com/licensing-7"; free = false; }; maintainers = with maintainers; [ talyz ]; diff --git a/pkgs/tools/misc/arp-scan/default.nix b/pkgs/tools/misc/arp-scan/default.nix index f4786a57bd75..e25543b5145a 100644 --- a/pkgs/tools/misc/arp-scan/default.nix +++ b/pkgs/tools/misc/arp-scan/default.nix @@ -35,7 +35,7 @@ stdenv.mkDerivation rec { ''; homepage = "http://www.nta-monitor.com/wiki/index.php/Arp-scan_Documentation"; license = licenses.gpl3; - platforms = platforms.linux; - maintainers = with maintainers; [ bjornfor mikoim ]; + platforms = platforms.linux ++ platforms.darwin; + maintainers = with maintainers; [ bjornfor mikoim r-burns ]; }; } diff --git a/pkgs/top-level/aliases.nix b/pkgs/top-level/aliases.nix index 21ef7acf4b0b..95a063331b27 100644 --- a/pkgs/top-level/aliases.nix +++ b/pkgs/top-level/aliases.nix @@ -117,6 +117,9 @@ mapAliases ({ cv = progress; # added 2015-09-06 d1x_rebirth = dxx-rebirth; # added 2018-04-25 d2x_rebirth = dxx-rebirth; # added 2018-04-25 + dart_dev = throw "Non-stable versions of Dart have been removed."; # added 2020-01-15 + dart_old = throw "Non-stable versions of Dart have been removed."; # added 2020-01-15 + dart_stable = dart; # added 2020-01-15 dat = nodePackages.dat; dbvisualizer = throw "dbvisualizer has been removed from nixpkgs, as it's unmaintained"; # added 2020-09-20 dbus_daemon = dbus.daemon; # added 2018-04-25 @@ -174,6 +177,8 @@ mapAliases ({ fish-foreign-env = throw "fish-foreign-env has been replaced with fishPlugins.foreign-env"; # added 2020-12-29, modified 2021-01-10 flameGraph = flamegraph; # added 2018-04-25 flink_1_5 = throw "flink_1_5 was removed, use flink instead"; # added 2021-01-25 + flutter-beta = throw "Non-stable versions of Flutter have been removed. You can use flutterPackages.mkFlutter to generate a package for other Flutter versions."; # added 2020-01-15 + flutter-dev = throw "Non-stable versions of Flutter have been removed. You can use flutterPackages.mkFlutter to generate a package for other Flutter versions."; # added 2020-01-15 flvtool2 = throw "flvtool2 has been removed."; # added 2020-11-03 foldingathome = fahclient; # added 2020-09-03 font-awesome-ttf = font-awesome; # 2018-02-25 diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index d0a944975e74..25f63ad0ed79 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -1111,6 +1111,8 @@ in bunny = callPackage ../tools/package-management/bunny { }; + callaudiod = callPackage ../applications/audio/callaudiod { }; + calls = callPackage ../applications/networking/calls { }; inherit (nodePackages) castnow; @@ -9597,8 +9599,6 @@ in flutterPackages = recurseIntoAttrs (callPackage ../development/compilers/flutter { }); flutter = flutterPackages.stable; - flutter-beta = flutterPackages.beta; - flutter-dev = flutterPackages.dev; fpc = callPackage ../development/compilers/fpc { }; @@ -21790,6 +21790,8 @@ in fdr = libsForQt5.callPackage ../applications/science/programming/fdr { }; + feedbackd = callPackage ../applications/misc/feedbackd { }; + fehlstart = callPackage ../applications/misc/fehlstart { }; fetchmail = callPackage ../applications/misc/fetchmail { }; @@ -23912,6 +23914,8 @@ in obs-wlrobs = callPackage ../applications/video/obs-studio/wlrobs.nix { }; + obs-gstreamer = callPackage ../applications/video/obs-studio/obs-gstreamer.nix { }; + obs-move-transition = callPackage ../applications/video/obs-studio/obs-move-transition.nix { }; obs-v4l2sink = libsForQt5.callPackage ../applications/video/obs-studio/v4l2sink.nix { }; @@ -29490,9 +29494,6 @@ in spdlog = spdlog_1; dart = callPackage ../development/interpreters/dart { }; - dart_old = dart.override { version = "1.24.3"; }; - dart_stable = dart.override { version = "2.7.2"; }; - dart_dev = dart.override { version = "2.9.0-4.0.dev"; }; httrack = callPackage ../tools/backup/httrack { }; diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix index 30802297181a..31451222e22e 100644 --- a/pkgs/top-level/python-packages.nix +++ b/pkgs/top-level/python-packages.nix @@ -6087,6 +6087,8 @@ in { pytest-openfiles = callPackage ../development/python-modules/pytest-openfiles { }; + pytest-order = callPackage ../development/python-modules/pytest-order { }; + pytest-ordering = callPackage ../development/python-modules/pytest-ordering { }; pytest-pep257 = callPackage ../development/python-modules/pytest-pep257 { };