diff --git a/doc/languages-frameworks/dotnet.section.md b/doc/languages-frameworks/dotnet.section.md index 9bf96f3198a1..f2a5efd05db6 100644 --- a/doc/languages-frameworks/dotnet.section.md +++ b/doc/languages-frameworks/dotnet.section.md @@ -77,9 +77,13 @@ To package Dotnet applications, you can use `buildDotnetModule`. This has simila * `runtimeDeps` is used to wrap libraries into `LD_LIBRARY_PATH`. This is how dotnet usually handles runtime dependencies. * `buildType` is used to change the type of build. Possible values are `Release`, `Debug`, etc. By default, this is set to `Release`. * `dotnet-sdk` is useful in cases where you need to change what dotnet SDK is being used. -* `dotnet-runtime` is useful in cases where you need to change what dotnet runtime is being used. +* `dotnet-runtime` is useful in cases where you need to change what dotnet runtime is being used. This can be either a regular dotnet runtime, or an aspnetcore. +* `dotnet-test-sdk` is useful in cases where unit tests expect a different dotnet SDK. By default, this is set to the `dotnet-sdk` attribute. +* `testProjectFile` is useful in cases where the regular project file does not contain the unit tests. By default, this is set to the `projectFile` attribute. +* `disabledTests` is used to disable running specific unit tests. This gets passed as: `dotnet test --filter "FullyQualifiedName!={}"`, to ensure compatibility with all unit test frameworks. * `dotnetRestoreFlags` can be used to pass flags to `dotnet restore`. * `dotnetBuildFlags` can be used to pass flags to `dotnet build`. +* `dotnetTestFlags` can be used to pass flags to `dotnet test`. * `dotnetInstallFlags` can be used to pass flags to `dotnet install`. * `dotnetFlags` can be used to pass flags to all of the above phases. diff --git a/lib/modules.nix b/lib/modules.nix index 46ae3f136310..d9b4000e56bd 100644 --- a/lib/modules.nix +++ b/lib/modules.nix @@ -52,15 +52,39 @@ in rec { - /* Evaluate a set of modules. The result is a set of two - attributes: ‘options’: the nested set of all option declarations, - and ‘config’: the nested set of all option values. + /* + Evaluate a set of modules. The result is a set with the attributes: + + ‘options’: The nested set of all option declarations, + + ‘config’: The nested set of all option values. + + ‘type’: A module system type representing the module set as a submodule, + to be extended by configuration from the containing module set. + + ‘extendModules’: A function similar to ‘evalModules’ but building on top + of the module set. Its arguments, ‘modules’ and ‘specialArgs’ are + added to the existing values. + + Using ‘extendModules’ a few times has no performance impact as long + as you only reference the final ‘options’ and ‘config’. + If you do reference multiple ‘config’ (or ‘options’) from before and + after ‘extendModules’, performance is the same as with multiple + ‘evalModules’ invocations, because the new modules' ability to + override existing configuration fundamentally requires a new + fixpoint to be constructed. + + ‘_module’: A portion of the configuration tree which is elided from + ‘config’. It contains some values that are mostly internal to the + module system implementation. + !!! Please think twice before adding to this argument list! The more that is specified here instead of in the modules themselves the harder it is to transparently move a set of modules to be a submodule of another config (as the proper arguments need to be replicated at each call to evalModules) and the less declarative the module set is. */ - evalModules = { modules + evalModules = evalModulesArgs@ + { modules , prefix ? [] , # This should only be used for special arguments that need to be evaluated # when resolving module structure (like in imports). For everything else, @@ -120,7 +144,9 @@ rec { }; config = { - _module.args = args; + _module.args = { + inherit extendModules; + } // args; }; }; @@ -183,10 +209,28 @@ rec { else throw baseMsg else null; - result = builtins.seq checkUnmatched { - inherit options; - config = removeAttrs config [ "_module" ]; - inherit (config) _module; + checked = builtins.seq checkUnmatched; + + extendModules = extendArgs@{ + modules ? [], + specialArgs ? {}, + prefix ? [], + }: + evalModules (evalModulesArgs // { + modules = evalModulesArgs.modules ++ modules; + specialArgs = evalModulesArgs.specialArgs or {} // specialArgs; + prefix = extendArgs.prefix or evalModulesArgs.prefix; + }); + + type = lib.types.submoduleWith { + inherit modules specialArgs; + }; + + result = { + options = checked options; + config = checked (removeAttrs config [ "_module" ]); + _module = checked (config._module); + inherit extendModules type; }; in result; diff --git a/lib/options.nix b/lib/options.nix index b3164181312e..5d52f065af08 100644 --- a/lib/options.nix +++ b/lib/options.nix @@ -74,7 +74,7 @@ rec { apply ? null, # Whether the option is for NixOS developers only. internal ? null, - # Whether the option shows up in the manual. + # Whether the option shows up in the manual. Default: true. Use false to hide the option and any sub-options from submodules. Use "shallow" to hide only sub-options. visible ? null, # Whether the option can be set only once readOnly ? null, @@ -180,7 +180,10 @@ rec { description = opt.description or (lib.warn "Option `${name}' has no description." "This option has no description."); declarations = filter (x: x != unknownModule) opt.declarations; internal = opt.internal or false; - visible = opt.visible or true; + visible = + if (opt?visible && opt.visible == "shallow") + then true + else opt.visible or true; readOnly = opt.readOnly or false; type = opt.type.description or null; } @@ -192,8 +195,9 @@ rec { subOptions = let ss = opt.type.getSubOptions opt.loc; in if ss != {} then optionAttrSetToDocList' opt.loc ss else []; + subOptionsVisible = docOption.visible && opt.visible or null != "shallow"; in - [ docOption ] ++ optionals docOption.visible subOptions) (collect isOption options); + [ docOption ] ++ optionals subOptionsVisible subOptions) (collect isOption options); /* This function recursively removes all derivation attributes from diff --git a/lib/tests/modules.sh b/lib/tests/modules.sh index b51db91f6b07..49fc8bcbafc4 100755 --- a/lib/tests/modules.sh +++ b/lib/tests/modules.sh @@ -179,6 +179,13 @@ checkConfigOutput "true" config.submodule.outer ./declare-submoduleWith-modules. # which evaluates all the modules defined by the type) checkConfigOutput "submodule" options.submodule.type.description ./declare-submoduleWith-modules.nix +## submodules can be declared using (evalModules {...}).type +checkConfigOutput "true" config.submodule.inner ./declare-submodule-via-evalModules.nix +checkConfigOutput "true" config.submodule.outer ./declare-submodule-via-evalModules.nix +# Should also be able to evaluate the type name (which evaluates freeformType, +# which evaluates all the modules defined by the type) +checkConfigOutput "submodule" options.submodule.type.description ./declare-submodule-via-evalModules.nix + ## Paths should be allowed as values and work as expected checkConfigOutput "true" config.submodule.enable ./declare-submoduleWith-path.nix diff --git a/lib/tests/modules/declare-submodule-via-evalModules.nix b/lib/tests/modules/declare-submodule-via-evalModules.nix new file mode 100644 index 000000000000..2841c64a073d --- /dev/null +++ b/lib/tests/modules/declare-submodule-via-evalModules.nix @@ -0,0 +1,28 @@ +{ lib, ... }: { + options.submodule = lib.mkOption { + inherit (lib.evalModules { + modules = [ + { + options.inner = lib.mkOption { + type = lib.types.bool; + default = false; + }; + } + ]; + }) type; + default = {}; + }; + + config.submodule = lib.mkMerge [ + ({ lib, ... }: { + options.outer = lib.mkOption { + type = lib.types.bool; + default = false; + }; + }) + { + inner = true; + outer = true; + } + ]; +} diff --git a/lib/types.nix b/lib/types.nix index c2532065d7ea..244cbb6b5354 100644 --- a/lib/types.nix +++ b/lib/types.nix @@ -505,17 +505,36 @@ rec { then setFunctionArgs (args: unify (value args)) (functionArgs value) else unify (if shorthandOnlyDefinesConfig then { config = value; } else value); - allModules = defs: modules ++ imap1 (n: { value, file }: + allModules = defs: imap1 (n: { value, file }: if isAttrs value || isFunction value then # Annotate the value with the location of its definition for better error messages coerce (lib.modules.unifyModuleSyntax file "${toString file}-${toString n}") value else value ) defs; - freeformType = (evalModules { - inherit modules specialArgs; - args.name = "‹name›"; - })._module.freeformType; + base = evalModules { + inherit specialArgs; + modules = [{ + # This is a work-around for the fact that some sub-modules, + # such as the one included in an attribute set, expects an "args" + # attribute to be given to the sub-module. As the option + # evaluation does not have any specific attribute name yet, we + # provide a default for the documentation and the freeform type. + # + # This is necessary as some option declaration might use the + # "name" attribute given as argument of the submodule and use it + # as the default of option declarations. + # + # We use lookalike unicode single angle quotation marks because + # of the docbook transformation the options receive. In all uses + # > and < wouldn't be encoded correctly so the encoded values + # would be used, and use of `<` and `>` would break the XML document. + # It shouldn't cause an issue since this is cosmetic for the manual. + _module.args.name = lib.mkOptionDefault "‹name›"; + }] ++ modules; + }; + + freeformType = base._module.freeformType; in mkOptionType rec { @@ -523,32 +542,13 @@ rec { description = freeformType.description or name; check = x: isAttrs x || isFunction x || path.check x; merge = loc: defs: - (evalModules { - modules = allModules defs; - inherit specialArgs; - args.name = last loc; + (base.extendModules { + modules = [ { _module.args.name = last loc; } ] ++ allModules defs; prefix = loc; }).config; emptyValue = { value = {}; }; - getSubOptions = prefix: (evalModules - { inherit modules prefix specialArgs; - # This is a work-around due to the fact that some sub-modules, - # such as the one included in an attribute set, expects a "args" - # attribute to be given to the sub-module. As the option - # evaluation does not have any specific attribute name, we - # provide a default one for the documentation. - # - # This is mandatory as some option declaration might use the - # "name" attribute given as argument of the submodule and use it - # as the default of option declarations. - # - # Using lookalike unicode single angle quotation marks because - # of the docbook transformation the options receive. In all uses - # > and < wouldn't be encoded correctly so the encoded values - # would be used, and use of `<` and `>` would break the XML document. - # It shouldn't cause an issue since this is cosmetic for the manual. - args.name = "‹name›"; - }).options // optionalAttrs (freeformType != null) { + getSubOptions = prefix: (base.extendModules + { inherit prefix; }).options // optionalAttrs (freeformType != null) { # Expose the sub options of the freeform type. Note that the option # discovery doesn't care about the attribute name used here, so this # is just to avoid conflicts with potential options from the submodule diff --git a/nixos/lib/eval-config.nix b/nixos/lib/eval-config.nix index 15429a7160c5..69e0a2afdba3 100644 --- a/nixos/lib/eval-config.nix +++ b/nixos/lib/eval-config.nix @@ -61,7 +61,7 @@ in rec { args = extraArgs; specialArgs = { modulesPath = builtins.toString ../modules; } // specialArgs; - }) config options _module; + }) config options _module type; # These are the extra arguments passed to every module. In # particular, Nixpkgs is passed through the "pkgs" argument. diff --git a/nixos/tests/kernel-generic.nix b/nixos/tests/kernel-generic.nix index 192dc810d7ad..3fdd3995b7aa 100644 --- a/nixos/tests/kernel-generic.nix +++ b/nixos/tests/kernel-generic.nix @@ -23,22 +23,14 @@ let assert "${linuxPackages.kernel.modDirVersion}" in machine.succeed("uname -a") ''; }) args); - kernels = { - inherit (pkgs) - linuxPackages_4_4 - linuxPackages_4_9 - linuxPackages_4_14 - linuxPackages_4_19 - linuxPackages_5_4 - linuxPackages_5_10 - linuxPackages_5_14 + kernels = pkgs.linuxKernel.vanillaPackages // { + inherit (pkgs.linuxKernel.packages) + linux_4_14_hardened + linux_4_19_hardened + linux_5_4_hardened + linux_5_10_hardened - linuxPackages_4_14_hardened - linuxPackages_4_19_hardened - linuxPackages_5_4_hardened - linuxPackages_5_10_hardened - - linuxPackages_testing; + linux_testing; }; in mapAttrs (_: lP: testsForLinuxPackages lP) kernels // { diff --git a/pkgs/applications/audio/plexamp/default.nix b/pkgs/applications/audio/plexamp/default.nix index c542517797e7..33df06e77e4c 100644 --- a/pkgs/applications/audio/plexamp/default.nix +++ b/pkgs/applications/audio/plexamp/default.nix @@ -3,7 +3,6 @@ let pname = "plexamp"; version = "3.7.1"; - name = "${pname}-${version}"; src = fetchurl { url = "https://plexamp.plex.tv/plexamp.plex.tv/desktop/Plexamp-${version}.AppImage"; @@ -12,16 +11,16 @@ let }; appimageContents = appimageTools.extractType2 { - inherit name src; + inherit pname version src; }; in appimageTools.wrapType2 { - inherit name src; + inherit pname version src; multiPkgs = null; # no 32bit needed extraPkgs = pkgs: appimageTools.defaultFhsEnvArgs.multiPkgs pkgs ++ [ pkgs.bash ]; extraInstallCommands = '' - ln -s $out/bin/${name} $out/bin/${pname} + ln -s $out/bin/${pname}-${version} $out/bin/${pname} install -m 444 -D ${appimageContents}/plexamp.desktop $out/share/applications/plexamp.desktop install -m 444 -D ${appimageContents}/plexamp.png \ $out/share/icons/hicolor/512x512/apps/plexamp.png diff --git a/pkgs/applications/graphics/monado/default.nix b/pkgs/applications/graphics/monado/default.nix index fe5f99de121f..219613ad0ce5 100644 --- a/pkgs/applications/graphics/monado/default.nix +++ b/pkgs/applications/graphics/monado/default.nix @@ -1,6 +1,7 @@ { lib , stdenv , fetchFromGitLab +, fetchpatch , writeText , cmake , doxygen @@ -54,6 +55,15 @@ stdenv.mkDerivation rec { sha256 = "07zxs96i3prjqww1f68496cl2xxqaidx32lpfyy0pn5am4c297zc"; }; + patches = [ + # https://github.com/NixOS/nixpkgs/issues/137245 + # Fix warning after Vulkan 1.2.174 VK_NULL_HANDLE change + (fetchpatch { + url = "https://gitlab.freedesktop.org/monado/monado/-/commit/c47775a95d8e139a2f234063793eb6726f830510.patch"; + sha256 = "093ymvi9ifpk4vyjcwhhci9cnscxwbv5f80xdbppcqa0j92nmkmp"; + }) + ]; + nativeBuildInputs = [ cmake doxygen diff --git a/pkgs/applications/graphics/weylus/default.nix b/pkgs/applications/graphics/weylus/default.nix index d3eef3400739..f2cdfa2990e9 100644 --- a/pkgs/applications/graphics/weylus/default.nix +++ b/pkgs/applications/graphics/weylus/default.nix @@ -14,11 +14,11 @@ stdenv.mkDerivation rec { pname = "weylus"; - version = "0.11.3"; + version = "0.11.4"; src = fetchzip { url = "https://github.com/H-M-H/Weylus/releases/download/v${version}/linux.zip"; - sha256 = "sha256-1nEdn3KKCMWIzYv4ryqTxtQvR9eln9IX1Z4Y6/vuo7o="; + sha256 = "sha256-EW3TdI4F4d4X/BeSqI05QtS77ym1U5jdswFfNtSFyFk="; stripRoot = false; }; diff --git a/pkgs/applications/misc/logseq/default.nix b/pkgs/applications/misc/logseq/default.nix index 7e34ec0a36d9..4fb05b25c063 100644 --- a/pkgs/applications/misc/logseq/default.nix +++ b/pkgs/applications/misc/logseq/default.nix @@ -2,11 +2,11 @@ stdenv.mkDerivation rec { pname = "logseq"; - version = "0.4.2"; + version = "0.4.5"; src = fetchurl { url = "https://github.com/logseq/logseq/releases/download/${version}/logseq-linux-x64-${version}.AppImage"; - sha256 = "BEDScQtGfkp74Gx3RKK8ItNQ9JD8AJkl1zdS/gZqyXk="; + sha256 = "EMybZH3heUWeCP74KdFr6zJY1R3hePo6RssbJXrkd9g="; name = "${pname}-${version}.AppImage"; }; diff --git a/pkgs/applications/networking/instant-messengers/pidgin/default.nix b/pkgs/applications/networking/instant-messengers/pidgin/default.nix index 341d9e1d840c..a7ea5bee3089 100644 --- a/pkgs/applications/networking/instant-messengers/pidgin/default.nix +++ b/pkgs/applications/networking/instant-messengers/pidgin/default.nix @@ -10,6 +10,7 @@ , gnutls ? null , libgcrypt ? null , plugins, symlinkJoin +, cacert }: # FIXME: clean the mess around choosing the SSL library (nss by default) @@ -59,6 +60,7 @@ let unwrapped = stdenv.mkDerivation rec { "--with-nss-includes=${nss.dev}/include/nss" "--with-nss-libs=${nss.out}/lib" "--with-ncurses-headers=${ncurses.dev}/include" + "--with-system-ssl-certs=${cacert}/etc/ssl/certs" "--disable-meanwhile" "--disable-nm" "--disable-tcl" diff --git a/pkgs/applications/networking/mailreaders/neomutt/default.nix b/pkgs/applications/networking/mailreaders/neomutt/default.nix index 5eeec874deeb..6d5ab96b4edc 100644 --- a/pkgs/applications/networking/mailreaders/neomutt/default.nix +++ b/pkgs/applications/networking/mailreaders/neomutt/default.nix @@ -1,17 +1,18 @@ { lib, stdenv, fetchFromGitHub, gettext, makeWrapper, tcl, which , ncurses, perl , cyrus_sasl, gss, gpgme, libkrb5, libidn, libxml2, notmuch, openssl , lmdb, libxslt, docbook_xsl, docbook_xml_dtd_42, w3m, mailcap, sqlite, zlib +, fetchpatch }: stdenv.mkDerivation rec { - version = "20211022"; + version = "20211029"; pname = "neomutt"; src = fetchFromGitHub { owner = "neomutt"; repo = "neomutt"; rev = version; - sha256 = "sha256-gPMbl+g9tU7YmT3uJoJozCdDBb/4eFyVyvHdREK1Ss0="; + sha256 = "sha256-haPDZorAfKuIEMiBCXJRMALAYnurQyjmCSOnj9IsoKk="; }; buildInputs = [ @@ -24,6 +25,15 @@ stdenv.mkDerivation rec { docbook_xsl docbook_xml_dtd_42 gettext libxml2 libxslt.bin makeWrapper tcl which zlib w3m ]; + patches = [ + # Remove on next update, see + # https://github.com/NixOS/nixpkgs/pull/143641#issuecomment-954991746 for context. + (fetchpatch { + url = "https://github.com/neomutt/neomutt/commit/4242a31313e0b600693215c01047bbda8a6dd25a.patch"; + sha256 = "sha256-fcuNeBkPjqln5QA9VFcfXCQD/VrUoSEMSxQ//Xj+yxY="; + }) + ]; + enableParallelBuilding = true; postPatch = '' diff --git a/pkgs/build-support/build-dotnet-module/default.nix b/pkgs/build-support/build-dotnet-module/default.nix index b6330b90775c..6a7b70e070b0 100644 --- a/pkgs/build-support/build-dotnet-module/default.nix +++ b/pkgs/build-support/build-dotnet-module/default.nix @@ -2,6 +2,7 @@ { name ? "${args.pname}-${args.version}" , enableParallelBuilding ? true +, doCheck ? false # Flags to pass to `makeWrapper`. This is done to avoid double wrapping. , makeWrapperArgs ? [] @@ -9,6 +10,8 @@ , dotnetRestoreFlags ? [] # Flags to pass to `dotnet build`. , dotnetBuildFlags ? [] +# Flags to pass to `dotnet test`, if running tests is enabled. +, dotnetTestFlags ? [] # Flags to pass to `dotnet install`. , dotnetInstallFlags ? [] # Flags to pass to dotnet in all phases. @@ -27,12 +30,20 @@ # These get wrapped into `LD_LIBRARY_PATH`. , runtimeDeps ? [] +# Tests to disable. This gets passed to `dotnet test --filter "FullyQualifiedName!={}"`, to ensure compatibility with all frameworks. +# See https://docs.microsoft.com/en-us/dotnet/core/tools/dotnet-test#filter-option-details for more details. +, disabledTests ? [] +# The project file to run unit tests against. This is usually the regular project file, but sometimes it needs to be manually set. +, testProjectFile ? projectFile + # The type of build to perform. This is passed to `dotnet` with the `--configuration` flag. Possible values are `Release`, `Debug`, etc. , buildType ? "Release" # The dotnet SDK to use. , dotnet-sdk ? dotnetCorePackages.sdk_5_0 # The dotnet runtime to use. , dotnet-runtime ? dotnetCorePackages.runtime_5_0 +# The dotnet SDK to run tests against. This can differentiate from the SDK compiled against. +, dotnet-test-sdk ? dotnet-sdk , ... } @ args: assert projectFile == null -> throw "Defining the `projectFile` attribute is required. This is usually an `.csproj`, or `.sln` file."; @@ -119,6 +130,23 @@ let runHook postBuild ''; + checkPhase = args.checkPhase or '' + runHook preCheck + + ${lib.getBin dotnet-test-sdk}/bin/dotnet test "$testProjectFile" \ + -maxcpucount:${if enableParallelBuilding then "$NIX_BUILD_CORES" else "1"} \ + -p:ContinuousIntegrationBuild=true \ + -p:Deterministic=true \ + --configuration "$buildType" \ + --no-build \ + --logger "console;verbosity=normal" \ + ${lib.optionalString (disabledTests != []) "--filter \"FullyQualifiedName!=${lib.concatStringsSep "|FullyQualifiedName!=" disabledTests}\""} \ + "''${dotnetTestFlags[@]}" \ + "''${dotnetFlags[@]}" + + runHook postCheck + ''; + installPhase = args.installPhase or '' runHook preInstall diff --git a/pkgs/development/python-modules/ibis/default.nix b/pkgs/development/python-modules/ibis/default.nix index 2d4a19107ce6..a58fb34080a5 100644 --- a/pkgs/development/python-modules/ibis/default.nix +++ b/pkgs/development/python-modules/ibis/default.nix @@ -2,29 +2,35 @@ , buildPythonPackage , fetchFromGitHub , python -, isPy27 +, pythonOlder }: buildPythonPackage rec { pname = "ibis"; - version = "1.6.0"; - disabled = isPy27; + version = "3.2.0"; + format = "setuptools"; + + disabled = pythonOlder "3.8"; src = fetchFromGitHub { owner = "dmulholl"; repo = pname; rev = version; - sha256 = "0xqhk397gzanvj2znwcgy4n5l1lc9r310smxkhjbm1xwvawpixx0"; + sha256 = "sha256-EPz9zHnxR75WoRaiHKJNiCRWFwU1TBpC4uHz62jUOqM="; }; checkPhase = '' ${python.interpreter} test_ibis.py ''; + pythonImportsCheck = [ + "ibis" + ]; + meta = with lib; { - description = "A lightweight template engine"; + description = "Lightweight template engine"; homepage = "https://github.com/dmulholland/ibis"; license = licenses.publicDomain; - maintainers = [ maintainers.costrouc ]; + maintainers = with maintainers; [ costrouc ]; }; } diff --git a/pkgs/development/python-modules/icmplib/default.nix b/pkgs/development/python-modules/icmplib/default.nix index 9d1ccab3d9a4..82033321f882 100644 --- a/pkgs/development/python-modules/icmplib/default.nix +++ b/pkgs/development/python-modules/icmplib/default.nix @@ -8,14 +8,14 @@ buildPythonPackage rec { pname = "icmplib"; - version = "3.0.1"; + version = "3.0.2"; disabled = pythonOlder "3.7"; src = fetchFromGitHub { owner = "ValentinBELYN"; repo = pname; rev = "v${version}"; - sha256 = "sha256-avCy/s54JOeHf6py4sPDV+QC2oq2AU6A6J2YOnrQsm0="; + sha256 = "sha256-4aq89Nw55OL7JQx3Ra6Ppp5yKLdS6Lc0YA8UJxVhz84="; }; propagatedBuildInputs = [ diff --git a/pkgs/os-specific/linux/bcc/default.nix b/pkgs/os-specific/linux/bcc/default.nix index 221f38faa879..5ed8f496fc9c 100644 --- a/pkgs/os-specific/linux/bcc/default.nix +++ b/pkgs/os-specific/linux/bcc/default.nix @@ -1,12 +1,12 @@ { lib, stdenv, fetchFromGitHub , makeWrapper, cmake, llvmPackages, kernel , flex, bison, elfutils, python, luajit, netperf, iperf, libelf -, systemtap, bash, libbpf +, systemtap, bash }: python.pkgs.buildPythonApplication rec { pname = "bcc"; - version = "0.20.0"; + version = "0.22.0"; disabled = !stdenv.isLinux; @@ -14,7 +14,8 @@ python.pkgs.buildPythonApplication rec { owner = "iovisor"; repo = "bcc"; rev = "v${version}"; - sha256 = "1xnpz2zv445dp5h0160drv6xlvrnwfj23ngc4dp3clcd59jh1baq"; + sha256 = "sha256-7FQz02APzjCjxCaw+e3H2GWz+UKsH0Dzgk9LoDgwDpU="; + fetchSubmodules = true; }; format = "other"; @@ -22,7 +23,6 @@ python.pkgs.buildPythonApplication rec { llvm llvm.dev libclang kernel elfutils luajit netperf iperf systemtap.stapBuild flex bash - libbpf ]; patches = [ @@ -41,7 +41,6 @@ python.pkgs.buildPythonApplication rec { "-DREVISION=${version}" "-DENABLE_USDT=ON" "-DENABLE_CPP_API=ON" - "-DCMAKE_USE_LIBBPF_PACKAGE=ON" ]; postPatch = '' diff --git a/pkgs/os-specific/linux/kernel/linux-5.15.nix b/pkgs/os-specific/linux/kernel/linux-5.15.nix new file mode 100644 index 000000000000..739a31f635c6 --- /dev/null +++ b/pkgs/os-specific/linux/kernel/linux-5.15.nix @@ -0,0 +1,18 @@ +{ lib, buildPackages, fetchurl, perl, buildLinux, nixosTests, modDirVersionArg ? null, ... } @ args: + +with lib; + +buildLinux (args // rec { + version = "5.15"; + + # modDirVersion needs to be x.y.z, will automatically add .0 if needed + modDirVersion = if (modDirVersionArg == null) then concatStringsSep "." (take 3 (splitVersion "${version}.0")) else modDirVersionArg; + + # branchVersion needs to be x.y + extraMeta.branch = versions.majorMinor version; + + src = fetchurl { + url = "mirror://kernel/linux/kernel/v5.x/linux-${version}.tar.xz"; + sha256 = "sha256-V7LPaZGRDjtnobNJACLooGdLaWXHTBLaHpnRONGZHug="; + }; +} // (args.argsOverride or { })) diff --git a/pkgs/os-specific/linux/nvidia-x11/default.nix b/pkgs/os-specific/linux/nvidia-x11/default.nix index 160a4cf6648f..268a0b09c261 100644 --- a/pkgs/os-specific/linux/nvidia-x11/default.nix +++ b/pkgs/os-specific/linux/nvidia-x11/default.nix @@ -45,6 +45,14 @@ rec { url = "https://developer.nvidia.com/vulkan-beta-${lib.concatStrings (lib.splitString "." version)}-linux"; }; + # Last one supporting Kepler architecture + legacy_470 = generic { + version = "470.82.00"; + sha256_64bit = "sha256:0i35frgil917ig1s2qsgqww58h66gabnxz3q39vcl3rlwb0pmgfh"; + settingsSha256 = "sha256:1kacgifzqqi2zjq62m404w99iv168j5a4xg7xbfnll62vzx7yr5j"; + persistencedSha256 = "sha256:06qsjp0n872b37wvhnwaddn1nrwn668zskmkcmpx33bv1940apsk"; + }; + # Last one supporting x86 legacy_390 = generic { version = "390.143"; diff --git a/pkgs/tools/games/opentracker/default.nix b/pkgs/tools/games/opentracker/default.nix index a191a90b17ba..d774fcb8f1f0 100644 --- a/pkgs/tools/games/opentracker/default.nix +++ b/pkgs/tools/games/opentracker/default.nix @@ -25,10 +25,14 @@ buildDotnetModule rec { }; dotnet-runtime = dotnetCorePackages.runtime_3_1; - projectFile = "OpenTracker.sln"; nugetDeps = ./deps.nix; + + projectFile = "OpenTracker.sln"; executables = [ "OpenTracker" ]; + doCheck = true; + dotnet-test-sdk = dotnetCorePackages.sdk_3_1; + nativeBuildInputs = [ autoPatchelfHook wrapGAppsHook diff --git a/pkgs/tools/networking/sniffglue/default.nix b/pkgs/tools/networking/sniffglue/default.nix index 502ab323e8e2..48ffb550c205 100644 --- a/pkgs/tools/networking/sniffglue/default.nix +++ b/pkgs/tools/networking/sniffglue/default.nix @@ -2,16 +2,16 @@ rustPlatform.buildRustPackage rec { pname = "sniffglue"; - version = "0.13.1"; + version = "0.14.0"; src = fetchFromGitHub { owner = "kpcyrd"; repo = pname; rev = "v${version}"; - sha256 = "sha256-P8ubw523sw1O6Gpruy1Wa/Y0I3qJgvMdT53wBBoEGhE="; + sha256 = "sha256-s+2YzfSy7+o0VZZ4j/Cfd6F5GvBytthmDJqrPw+7SU0="; }; - cargoSha256 = "sha256-+Wh+/C9LvYppCghv11e8NKNhiMy0SV4S3nEWA6b1hQk="; + cargoSha256 = "sha256-4G1OGY7/vE8NKBFeuOZzqyZ0DQN4hy/HBO9qrEtBYlM="; nativeBuildInputs = [ pkg-config ]; diff --git a/pkgs/tools/security/sedutil/default.nix b/pkgs/tools/security/sedutil/default.nix index 6ed4a23af1dd..cb0e367fa2cc 100644 --- a/pkgs/tools/security/sedutil/default.nix +++ b/pkgs/tools/security/sedutil/default.nix @@ -1,28 +1,34 @@ -{ lib, stdenv, fetchFromGitHub, autoreconfHook }: +{ lib +, stdenv +, fetchFromGitHub +, autoreconfHook +}: stdenv.mkDerivation rec { pname = "sedutil"; - version = "1.15.1"; + version = "1.20.0"; src = fetchFromGitHub { - owner = "Drive-Trust-Alliance"; - repo = "sedutil"; - rev = version; - sha256 = "0zg5v27vbrzzl2vqzks91zj48z30qgcshkqkm1g8ycnhi145l0mf"; + owner = "Drive-Trust-Alliance"; + repo = "sedutil"; + rev = version; + sha256 = "sha256-NG/7aqe48ShHWW5hW8axYWV4+zX0dBE7Wy9q58l0S3E="; }; postPatch = '' patchShebangs . ''; - nativeBuildInputs = [ autoreconfHook ]; + nativeBuildInputs = [ + autoreconfHook + ]; enableParallelBuilding = true; meta = with lib; { description = "DTA sedutil Self encrypting drive software"; - homepage = "https://www.drivetrust.com"; - license = licenses.gpl3; - platforms = platforms.linux; + homepage = "https://www.drivetrust.com"; + license = licenses.gpl3Plus; + platforms = platforms.linux; }; } diff --git a/pkgs/tools/text/crowdin-cli/default.nix b/pkgs/tools/text/crowdin-cli/default.nix index f5c489681e93..36b359365d54 100644 --- a/pkgs/tools/text/crowdin-cli/default.nix +++ b/pkgs/tools/text/crowdin-cli/default.nix @@ -12,11 +12,11 @@ stdenv.mkDerivation rec { pname = "crowdin-cli"; - version = "3.7.0"; + version = "3.7.1"; src = fetchurl { url = "https://github.com/crowdin/${pname}/releases/download/${version}/${pname}.zip"; - sha256 = "sha256-2TQL5k2ndckFjOOXNz7clVpwPUMStR4xgd1P+qUhNC8="; + sha256 = "sha256-WoDFBV1Nid1y57MIrTFMOB2yqHRUrvhp974Dz5agar0="; }; nativeBuildInputs = [ installShellFiles makeWrapper unzip ]; diff --git a/pkgs/top-level/linux-kernels.nix b/pkgs/top-level/linux-kernels.nix index c5bda0b37142..14d809e6948f 100644 --- a/pkgs/top-level/linux-kernels.nix +++ b/pkgs/top-level/linux-kernels.nix @@ -174,6 +174,13 @@ in { ]; }; + linux_5_15 = callPackage ../os-specific/linux/kernel/linux-5.15.nix { + kernelPatches = [ + kernelPatches.bridge_stp_helper + kernelPatches.request_key_helper + ]; + }; + linux_testing = callPackage ../os-specific/linux/kernel/linux-testing.nix { kernelPatches = [ kernelPatches.bridge_stp_helper @@ -320,6 +327,7 @@ in { nvidia_x11_legacy340 = nvidiaPackages.legacy_340; nvidia_x11_legacy390 = nvidiaPackages.legacy_390; + nvidia_x11_legacy470 = nvidiaPackages.legacy_470; nvidia_x11_beta = nvidiaPackages.beta; nvidia_x11_vulkan_beta = nvidiaPackages.vulkan_beta; nvidia_x11 = nvidiaPackages.stable; @@ -467,6 +475,7 @@ in { linux_5_4 = recurseIntoAttrs (packagesFor kernels.linux_5_4); linux_5_10 = recurseIntoAttrs (packagesFor kernels.linux_5_10); linux_5_14 = recurseIntoAttrs (packagesFor kernels.linux_5_14); + linux_5_15 = recurseIntoAttrs (packagesFor kernels.linux_5_15); }; rtPackages = { @@ -512,7 +521,7 @@ in { packageAliases = { linux_default = packages.linux_5_10; # Update this when adding the newest kernel major version! - linux_latest = packages.linux_5_14; + linux_latest = packages.linux_5_15; linux_mptcp = packages.linux_mptcp_95; linux_rt_default = packages.linux_rt_5_4; linux_rt_latest = packages.linux_rt_5_11;