Merge master into staging-next

authored by

github-actions[bot] and committed by
GitHub
69a8c9e2 1c50878b

+294 -127
+43
nixos/doc/manual/development/developing-the-test-driver.chapter.md
··· 1 + 2 + # Developing the NixOS Test Driver {#chap-developing-the-test-driver} 3 + 4 + The NixOS test framework is a project of its own. 5 + 6 + It consists of roughly the following components: 7 + 8 + - `nixos/lib/test-driver`: The Python framework that sets up the test and runs the [`testScript`](#test-opt-testScript) 9 + - `nixos/lib/testing`: The Nix code responsible for the wiring, written using the (NixOS) Module System. 10 + 11 + These components are exposed publicly through: 12 + 13 + - `nixos/lib/default.nix`: The public interface that exposes the `nixos/lib/testing` entrypoint. 14 + - `flake.nix`: Exposes the `lib.nixos`, including the public test interface. 15 + 16 + Beyond the test driver itself, its integration into NixOS and Nixpkgs is important. 17 + 18 + - `pkgs/top-level/all-packages.nix`: Defines the `nixosTests` attribute, used 19 + by the package `tests` attributes and OfBorg. 20 + - `nixos/release.nix`: Defines the `tests` attribute built by Hydra, independently, but analogous to `nixosTests` 21 + - `nixos/release-combined.nix`: Defines which tests are channel blockers. 22 + 23 + Finally, we have legacy entrypoints that users should move away from, but are cared for on a best effort basis. 24 + These include `pkgs.nixosTest`, `testing-python.nix` and `make-test-python.nix`. 25 + 26 + ## Testing changes to the test framework {#sec-test-the-test-framework} 27 + 28 + When making significant changes to the test framework, we run the tests on Hydra, to avoid disrupting the larger NixOS project. 29 + 30 + For this, we use the `python-test-refactoring` branch in the `NixOS/nixpkgs` repository, and its [corresponding Hydra jobset](https://hydra.nixos.org/jobset/nixos/python-test-refactoring). 31 + This branch is used as a pointer, and not as a feature branch. 32 + 33 + 1. Rebase the PR onto a recent, good evaluation of `nixos-unstable` 34 + 2. Create a baseline evaluation by force-pushing this revision of `nixos-unstable` to `python-test-refactoring`. 35 + 3. Note the evaluation number (we'll call it `<previous>`) 36 + 4. Push the PR to `python-test-refactoring` and evaluate the PR on Hydra 37 + 5. Create a comparison URL by navigating to the latest build of the PR and adding to the URL `?compare=<previous>`. This is not necessary for the evaluation that comes right after the baseline. 38 + 39 + Review the removed tests and newly failed tests using the constructed URL; otherwise you will accidentally compare iterations of the PR instead of changes to the PR base. 40 + 41 + As we currently have some flaky tests, newly failing tests are expected, but should be reviewed to make sure that 42 + - The number of failures did not increase significantly. 43 + - All failures that do occur can reasonably be assumed to fail for a different reason than the changes.
+1
nixos/doc/manual/development/development.md
··· 10 10 what-happens-during-a-system-switch.chapter.md 11 11 writing-documentation.chapter.md 12 12 nixos-tests.chapter.md 13 + developing-the-test-driver.chapter.md 13 14 testing-installer.chapter.md 14 15 ```
+1 -1
nixos/lib/testing/meta.nix
··· 22 22 }; 23 23 timeout = lib.mkOption { 24 24 type = types.nullOr types.int; 25 - default = null; # NOTE: null values are filtered out by `meta`. 25 + default = 3600; # 1 hour 26 26 description = mdDoc '' 27 27 The [{option}`test`](#test-opt-test)'s [`meta.timeout`](https://nixos.org/manual/nixpkgs/stable/#var-meta-timeout) in seconds. 28 28 '';
+21 -65
nixos/modules/services/hardware/kanata.nix
··· 8 8 keyboard = { 9 9 options = { 10 10 devices = mkOption { 11 - type = types.addCheck (types.listOf types.str) 12 - (devices: (length devices) > 0); 11 + type = types.listOf types.str; 13 12 example = [ "/dev/input/by-id/usb-0000_0000-event-kbd" ]; 14 - # TODO replace note with tip, which has not been implemented yet in 15 - # nixos/lib/make-options-doc/mergeJSON.py 16 - description = mdDoc '' 17 - Paths to keyboard devices. 18 - 19 - ::: {.note} 20 - To avoid unnecessary triggers of the service unit, unplug devices in 21 - the order of the list. 22 - ::: 23 - ''; 13 + description = mdDoc "Paths to keyboard devices."; 24 14 }; 25 15 config = mkOption { 26 16 type = types.lines; ··· 44 34 cap (tap-hold 100 100 caps lctl)) 45 35 ''; 46 36 description = mdDoc '' 47 - Configuration other than `defcfg`. See [example config 48 - files](https://github.com/jtroo/kanata) for more information. 37 + Configuration other than `defcfg`. 38 + 39 + See [example config files](https://github.com/jtroo/kanata) 40 + for more information. 49 41 ''; 50 42 }; 51 43 extraDefCfg = mkOption { ··· 53 45 default = ""; 54 46 example = "danger-enable-cmd yes"; 55 47 description = mdDoc '' 56 - Configuration of `defcfg` other than `linux-dev`. See [example 57 - config files](https://github.com/jtroo/kanata) for more information. 48 + Configuration of `defcfg` other than `linux-dev` (generated 49 + from the devices option) and 50 + `linux-continue-if-no-devs-found` (hardcoded to be yes). 51 + 52 + See [example config files](https://github.com/jtroo/kanata) 53 + for more information. 58 54 ''; 59 55 }; 60 56 extraArgs = mkOption { ··· 67 63 default = null; 68 64 example = 6666; 69 65 description = mdDoc '' 70 - Port to run the notification server on. `null` will not run the 71 - server. 66 + Port to run the TCP server on. `null` will not run the server. 72 67 ''; 73 68 }; 74 69 }; ··· 76 71 77 72 mkName = name: "kanata-${name}"; 78 73 79 - mkDevices = devices: concatStringsSep ":" devices; 74 + mkDevices = devices: 75 + optionalString ((length devices) > 0) "linux-dev ${concatStringsSep ":" devices}"; 80 76 81 77 mkConfig = name: keyboard: pkgs.writeText "${mkName name}-config.kdb" '' 82 78 (defcfg 83 79 ${keyboard.extraDefCfg} 84 - linux-dev ${mkDevices keyboard.devices}) 80 + ${mkDevices keyboard.devices} 81 + linux-continue-if-no-devs-found yes) 85 82 86 83 ${keyboard.config} 87 84 ''; 88 85 89 86 mkService = name: keyboard: nameValuePair (mkName name) { 90 - description = "kanata for ${mkDevices keyboard.devices}"; 91 - 92 - # Because path units are used to activate service units, which 93 - # will start the old stopped services during "nixos-rebuild 94 - # switch", stopIfChanged here is a workaround to make sure new 95 - # services are running after "nixos-rebuild switch". 96 - stopIfChanged = false; 97 - 87 + wantedBy = [ "multi-user.target" ]; 98 88 serviceConfig = { 99 89 ExecStart = '' 100 - ${cfg.package}/bin/kanata \ 90 + ${getExe cfg.package} \ 101 91 --cfg ${mkConfig name keyboard} \ 102 92 --symlink-path ''${RUNTIME_DIRECTORY}/${name} \ 103 93 ${optionalString (keyboard.port != null) "--port ${toString keyboard.port}"} \ ··· 146 136 UMask = "0077"; 147 137 }; 148 138 }; 149 - 150 - mkPathName = i: name: "${mkName name}-${toString i}"; 151 - 152 - mkPath = name: n: i: device: 153 - nameValuePair (mkPathName i name) { 154 - description = 155 - "${toString (i+1)}/${toString n} kanata trigger for ${name}, watching ${device}"; 156 - wantedBy = optional (i == 0) "multi-user.target"; 157 - pathConfig = { 158 - PathExists = device; 159 - # (ab)use systemd.path to construct a trigger chain so that the 160 - # service unit is only started when all paths exist 161 - # however, manual of systemd.path says Unit's suffix is not ".path" 162 - Unit = 163 - if (i + 1) == n 164 - then "${mkName name}.service" 165 - else "${mkPathName (i + 1) name}.path"; 166 - }; 167 - unitConfig.StopPropagatedFrom = optional (i > 0) "${mkName name}.service"; 168 - }; 169 - 170 - mkPaths = name: keyboard: 171 - let 172 - n = length keyboard.devices; 173 - in 174 - imap0 (mkPath name n) keyboard.devices 175 - ; 176 139 in 177 140 { 178 141 options.services.kanata = { 179 - enable = mkEnableOption (lib.mdDoc "kanata"); 142 + enable = mkEnableOption (mdDoc "kanata"); 180 143 package = mkOption { 181 144 type = types.package; 182 145 default = pkgs.kanata; ··· 201 164 config = mkIf cfg.enable { 202 165 hardware.uinput.enable = true; 203 166 204 - systemd = { 205 - paths = trivial.pipe cfg.keyboards [ 206 - (mapAttrsToList mkPaths) 207 - concatLists 208 - listToAttrs 209 - ]; 210 - services = mapAttrs' mkService cfg.keyboards; 211 - }; 167 + systemd.services = mapAttrs' mkService cfg.keyboards; 212 168 }; 213 169 214 170 meta.maintainers = with maintainers; [ linj ];
+44 -7
nixos/modules/services/mail/maddy.nix
··· 223 223 ''; 224 224 }; 225 225 226 + ensureAccounts = mkOption { 227 + type = types.listOf types.str; 228 + default = []; 229 + description = lib.mdDoc '' 230 + List of IMAP accounts which get automatically created. Note that for 231 + a complete setup, user credentials for these accounts are required too 232 + and can be created using the command `maddyctl creds`. 233 + This option does not delete accounts which are not (anymore) listed. 234 + ''; 235 + example = [ 236 + "user1@localhost" 237 + "user2@localhost" 238 + ]; 239 + }; 240 + 226 241 }; 227 242 }; 228 243 229 244 config = mkIf cfg.enable { 230 245 231 246 systemd = { 247 + 232 248 packages = [ pkgs.maddy ]; 233 - services.maddy = { 234 - serviceConfig = { 235 - User = cfg.user; 236 - Group = cfg.group; 237 - StateDirectory = [ "maddy" ]; 249 + services = { 250 + maddy = { 251 + serviceConfig = { 252 + User = cfg.user; 253 + Group = cfg.group; 254 + StateDirectory = [ "maddy" ]; 255 + }; 256 + restartTriggers = [ config.environment.etc."maddy/maddy.conf".source ]; 257 + wantedBy = [ "multi-user.target" ]; 258 + }; 259 + maddy-ensure-accounts = { 260 + script = '' 261 + ${optionalString (cfg.ensureAccounts != []) '' 262 + ${concatMapStrings (account: '' 263 + if ! ${pkgs.maddy}/bin/maddyctl imap-acct list | grep "${account}"; then 264 + ${pkgs.maddy}/bin/maddyctl imap-acct create ${account} 265 + fi 266 + '') cfg.ensureAccounts} 267 + ''} 268 + ''; 269 + serviceConfig = { 270 + Type = "oneshot"; 271 + User= "maddy"; 272 + }; 273 + after = [ "maddy.service" ]; 274 + wantedBy = [ "multi-user.target" ]; 238 275 }; 239 - restartTriggers = [ config.environment.etc."maddy/maddy.conf".source ]; 240 - wantedBy = [ "multi-user.target" ]; 276 + 241 277 }; 278 + 242 279 }; 243 280 244 281 environment.etc."maddy/maddy.conf" = {
+1 -1
nixos/modules/virtualisation/docker.nix
··· 163 163 ###### implementation 164 164 165 165 config = mkIf cfg.enable (mkMerge [{ 166 - boot.kernelModules = [ "bridge" "veth" ]; 166 + boot.kernelModules = [ "bridge" "veth" "br_netfilter" "xt_nat" ]; 167 167 boot.kernel.sysctl = { 168 168 "net.ipv4.conf.all.forwarding" = mkOverride 98 true; 169 169 "net.ipv4.conf.default.forwarding" = mkOverride 98 true;
+1 -1
nixos/tests/maddy.nix
··· 9 9 hostname = "server"; 10 10 primaryDomain = "server"; 11 11 openFirewall = true; 12 + ensureAccounts = [ "postmaster@server" ]; 12 13 }; 13 14 }; 14 15 ··· 50 51 server.wait_for_open_port(587) 51 52 52 53 server.succeed("maddyctl creds create --password test postmaster@server") 53 - server.succeed("maddyctl imap-acct create postmaster@server") 54 54 55 55 client.succeed("send-testmail") 56 56 client.succeed("test-imap")
+1 -1
nixos/tests/pass-secret-service.nix
··· 1 1 import ./make-test-python.nix ({ pkgs, lib, ... }: { 2 2 name = "pass-secret-service"; 3 - meta.maintainers = with lib; [ aidalgol ]; 3 + meta.maintainers = [ lib.maintainers.aidalgol ]; 4 4 5 5 nodes.machine = { nodes, pkgs, ... }: 6 6 {
+4 -4
nixos/tests/quake3.nix
··· 1 - import ./make-test-python.nix ({ pkgs, ...} : 1 + import ./make-test-python.nix ({ pkgs, lib, ...} : 2 2 3 3 let 4 4 ··· 11 11 }; 12 12 13 13 # Only allow the demo data to be used (only if it's unfreeRedistributable). 14 - unfreePredicate = pkg: with pkgs.lib; let 14 + unfreePredicate = pkg: with lib; let 15 15 allowPackageNames = [ "quake3-demodata" "quake3-pointrelease" ]; 16 - allowLicenses = [ pkgs.lib.licenses.unfreeRedistributable ]; 16 + allowLicenses = [ lib.licenses.unfreeRedistributable ]; 17 17 in elem pkg.pname allowPackageNames && 18 18 elem (pkg.meta.license or null) allowLicenses; 19 19 ··· 31 31 32 32 rec { 33 33 name = "quake3"; 34 - meta = with pkgs.stdenv.lib.maintainers; { 34 + meta = with lib.maintainers; { 35 35 maintainers = [ domenkozar eelco ]; 36 36 }; 37 37
+1 -1
pkgs/applications/misc/protonup-qt/default.nix
··· 28 28 sourceProvenance = with sourceTypes; [ binaryNativeCode ]; 29 29 mainProgram = "protonup-qt"; 30 30 platforms = [ "x86_64-linux" ]; 31 - maintainers = with maintainers; [ ]; 31 + maintainers = with maintainers; [ michaelBelsanti ]; 32 32 }; 33 33 }
+13 -13
pkgs/applications/networking/cluster/nomad/default.nix
··· 1 1 { lib 2 2 , buildGoModule 3 - , buildGo119Module 3 + , buildGo120Module 4 4 , fetchFromGitHub 5 5 , nixosTests 6 6 }: ··· 47 47 nomad = nomad_1_4; 48 48 49 49 nomad_1_2 = generic { 50 - buildGoModule = buildGo119Module; 51 - version = "1.2.15"; 52 - sha256 = "sha256-p9yRjSapQAhuHv+slUmYI25bUb1N1A7LBiJOdk1++iI="; 53 - vendorSha256 = "sha256-6d3tE337zVAIkzQzAnV2Ya5xwwhuzmKgtPUJcJ9HRto="; 50 + buildGoModule = buildGo120Module; 51 + version = "1.2.16"; 52 + sha256 = "sha256-fhfUpcG91EgIzJ4mCS7geyIJyTSHS2e8t4yYiI3PqpQ="; 53 + vendorSha256 = "sha256-kwCDsGFw+25Mimgt/cTK/Z2H7Qh5n4rjr3kIBvjcPL8="; 54 54 }; 55 55 56 56 nomad_1_3 = generic { 57 - buildGoModule = buildGo119Module; 58 - version = "1.3.8"; 59 - sha256 = "sha256-hUmDWgGV8HAXew8SpcbhaiaF9VfBN5mk1W7t5lhnZ9I="; 60 - vendorSha256 = "sha256-IfYobyDFriOldJnNfRK0QVKBfttoZZ1iOkt4cBQxd00="; 57 + buildGoModule = buildGo120Module; 58 + version = "1.3.9"; 59 + sha256 = "sha256-xfoIzLDG/OfqAPQqeLvQZ11uESWFNyOyLP6Imi+S96w="; 60 + vendorSha256 = "sha256-kW0goicoM1lM1NEHPTfozg2EKR1daf33UxT/mVabyfY="; 61 61 }; 62 62 63 63 nomad_1_4 = generic { 64 - buildGoModule = buildGo119Module; 65 - version = "1.4.3"; 66 - sha256 = "sha256-GQVfrn9VlzfdIj73W3hBpHcevsXZcb6Uj808HUCZUUg="; 67 - vendorSha256 = "sha256-JQRpsQhq5r/QcgFwtnptmvnjBEhdCFrXFrTKkJioL3A="; 64 + buildGoModule = buildGo120Module; 65 + version = "1.4.4"; 66 + sha256 = "sha256-mAimuWolTJ3lMY/ArnLZFu+GZv9ADdGsriXsTcEgdYc="; 67 + vendorSha256 = "sha256-QtP7pzsIBd2S79AUcbOeVG71Mb5qK706rq5DkT41VqM="; 68 68 passthru.tests.nomad = nixosTests.nomad; 69 69 }; 70 70 }
+1 -1
pkgs/development/beam-modules/fetch-mix-deps.nix
··· 45 45 46 46 installPhase = attrs.installPhase or '' 47 47 runHook preInstall 48 - mix deps.get ''${mixEnv:+--only $mixEnv} 48 + mix deps.get ''${MIX_ENV:+--only $MIX_ENV} 49 49 find "$TEMPDIR/deps" -path '*/.git/*' -a ! -name HEAD -exec rm -rf {} + 50 50 cp -r --no-preserve=mode,ownership,timestamps $TEMPDIR/deps $out 51 51 runHook postInstall
+2 -4
pkgs/development/libraries/libdisplay-info/default.nix
··· 25 25 26 26 buildInputs = [ hwdata ]; 27 27 28 - prePatch = '' 29 - substituteInPlace meson.build \ 30 - --replace "find_program('tool/gen-search-table.py')" "find_program('python3')" \ 31 - --replace "gen_search_table," "gen_search_table, '$src/tool/gen-search-table.py'," 28 + postPatch = '' 29 + patchShebangs tool/gen-search-table.py 32 30 ''; 33 31 34 32 meta = with lib; {
+2 -2
pkgs/development/python-modules/griffe/default.nix
··· 12 12 13 13 buildPythonPackage rec { 14 14 pname = "griffe"; 15 - version = "0.25.4"; 15 + version = "0.25.5"; 16 16 format = "pyproject"; 17 17 18 18 disabled = pythonOlder "3.7"; ··· 21 21 owner = "mkdocstrings"; 22 22 repo = pname; 23 23 rev = "refs/tags/${version}"; 24 - hash = "sha256-AZZhwHtVhdHkztzr/Hdi63VC5CjK2Vz8h8zizmSUdNY="; 24 + hash = "sha256-0+n5v93ERcQDKNtXxSZYfCUMTRzcbtQEXl023KSxfrE="; 25 25 }; 26 26 27 27 postPatch = ''
+3 -2
pkgs/development/python-modules/pydeconz/default.nix
··· 12 12 13 13 buildPythonPackage rec { 14 14 pname = "pydeconz"; 15 - version = "106"; 15 + version = "107"; 16 16 format = "setuptools"; 17 17 18 18 disabled = pythonOlder "3.9"; ··· 21 21 owner = "Kane610"; 22 22 repo = "deconz"; 23 23 rev = "refs/tags/v${version}"; 24 - hash = "sha256-13of5ohz/hezlmGvSNqCu9QoOPKdPPtrhQHbxmG2/Do="; 24 + hash = "sha256-5NR+N2UoWvzD/y1kP08qOS2djMsLIwLDuaIBmt0AV/s="; 25 25 }; 26 26 27 27 propagatedBuildInputs = [ ··· 43 43 meta = with lib; { 44 44 description = "Python library wrapping the Deconz REST API"; 45 45 homepage = "https://github.com/Kane610/deconz"; 46 + changelog = "https://github.com/Kane610/deconz/releases/tag/v${version}"; 46 47 license = with licenses; [ mit ]; 47 48 maintainers = with maintainers; [ fab ]; 48 49 };
+2 -2
pkgs/development/python-modules/pyfido/default.nix
··· 6 6 7 7 buildPythonPackage rec { 8 8 pname = "pyfido"; 9 - version = "2.1.1"; 9 + version = "2.1.2"; 10 10 11 11 src = fetchPypi { 12 12 inherit pname version; 13 - sha256 = "0b28bhyhscaw7dbc92dxswann05x8mz92cagyawdfm8jnc67gq4b"; 13 + sha256 = "sha256-hh2g46GVCkiMHElEP6McY8FdzGNzZV7pgA5DQhodP20="; 14 14 }; 15 15 16 16 propagatedBuildInputs = [ aiohttp ];
+2 -2
pkgs/development/python-modules/python-ipmi/default.nix
··· 10 10 11 11 buildPythonPackage rec { 12 12 pname = "python-ipmi"; 13 - version = "0.5.3"; 13 + version = "0.5.4"; 14 14 disabled = pythonOlder "3.6"; 15 15 16 16 src = fetchFromGitHub { 17 17 owner = "kontron"; 18 18 repo = pname; 19 19 rev = version; 20 - sha256 = "sha256-Y8HJ7MXYHJRUWPTcw8p+GGSFswuRI7u+/bIaJpKy7lY="; 20 + sha256 = "sha256-IXEq3d1nXGEndciQw2MJ1Abc0vmEYez+k6aWGSWEzWA="; 21 21 }; 22 22 23 23 propagatedBuildInputs = [
+2 -2
pkgs/development/python-modules/python-ironicclient/default.nix
··· 20 20 21 21 buildPythonPackage rec { 22 22 pname = "python-ironicclient"; 23 - version = "5.0.1"; 23 + version = "5.1.0"; 24 24 25 25 src = fetchPypi { 26 26 inherit pname version; 27 - sha256 = "sha256-7RawbJ5O5KCruD499fOkuFcouBzp3f7aEUnE37wJqmM="; 27 + sha256 = "sha256-yYmzZuwZSasN6g6Bosivexe5oOy3dP+l/cD5TkXC87g="; 28 28 }; 29 29 30 30 propagatedBuildInputs = [
+2 -2
pkgs/development/python-modules/slack-sdk/default.nix
··· 21 21 22 22 buildPythonPackage rec { 23 23 pname = "slack-sdk"; 24 - version = "3.19.5"; 24 + version = "3.20.0"; 25 25 format = "setuptools"; 26 26 27 27 disabled = pythonOlder "3.6"; ··· 30 30 owner = "slackapi"; 31 31 repo = "python-slack-sdk"; 32 32 rev = "refs/tags/v${version}"; 33 - hash = "sha256-/DVcnfHjvmRreHSlZbzxz6pbqytEUdqbaGbQVxIW4Qk="; 33 + hash = "sha256-NlUmoOlRV7h7d553uX2tAWi2aWCAqpHflSUrdZxlaws="; 34 34 }; 35 35 36 36 propagatedBuildInputs = [
+1 -1
pkgs/development/python-modules/wandb/default.nix
··· 104 104 # Set BOKEH_CDN_VERSION to stop bokeh throwing an exception in tests 105 105 preCheck = '' 106 106 export HOME=$(mktemp -d) 107 - export BOKEH_CDN_VERSION=3.0.3 107 + export BOKEH_CDN_VERSION=${bokeh.version} 108 108 ''; 109 109 110 110 pythonRelaxDeps = [ "protobuf" ];
+3 -3
pkgs/development/python-modules/weconnect-mqtt/default.nix
··· 10 10 11 11 buildPythonPackage rec { 12 12 pname = "weconnect-mqtt"; 13 - version = "0.41.1"; 13 + version = "0.42.0"; 14 14 format = "setuptools"; 15 15 16 - disabled = pythonOlder "3.7"; 16 + disabled = pythonOlder "3.8"; 17 17 18 18 src = fetchFromGitHub { 19 19 owner = "tillsteinbach"; 20 20 repo = "WeConnect-mqtt"; 21 21 rev = "refs/tags/v${version}"; 22 - hash = "sha256-RYxfz5uBWV1HLbcIK1N/glJv2w0nfPLBPyM2b7HuDIY="; 22 + hash = "sha256-jxfV2RDyGLugnPae+uNtg/GBsWbKCSbKxuHll10guhU="; 23 23 }; 24 24 25 25 propagatedBuildInputs = [
+4 -4
pkgs/development/python-modules/weconnect/default.nix
··· 12 12 13 13 buildPythonPackage rec { 14 14 pname = "weconnect"; 15 - version = "0.50.1"; 15 + version = "0.52.0"; 16 16 format = "setuptools"; 17 17 18 - disabled = pythonOlder "3.7"; 18 + disabled = pythonOlder "3.8"; 19 19 20 20 src = fetchFromGitHub { 21 21 owner = "tillsteinbach"; 22 22 repo = "WeConnect-python"; 23 23 rev = "refs/tags/v${version}"; 24 - hash = "sha256-KYGNtUJXpY1UrRbUxr71EHxLCR6WixTAk+ybkfqB3Ps="; 24 + hash = "sha256-SfdN/em4NrzNeItcaVuyOcUxmE50n5/jjmY4I5hfpQI="; 25 25 }; 26 26 27 27 propagatedBuildInputs = [ ··· 48 48 --replace "setup_requires=SETUP_REQUIRED," "setup_requires=[]," \ 49 49 --replace "tests_require=TEST_REQUIRED," "tests_require=[]," 50 50 substituteInPlace image_extra_requirements.txt \ 51 - --replace "pillow~=9.3.0" "pillow" 51 + --replace "pillow~=9.4.0" "pillow" 52 52 substituteInPlace pytest.ini \ 53 53 --replace "--cov=weconnect --cov-config=.coveragerc --cov-report html" "" \ 54 54 --replace "pytest-cov" ""
+5 -4
pkgs/development/python-modules/z3c-checkversions/default.nix
··· 9 9 10 10 buildPythonPackage rec { 11 11 pname = "z3c-checkversions"; 12 - version = "1.2"; 12 + version = "2.0"; 13 13 14 14 src = fetchPypi { 15 15 inherit version; 16 16 pname = "z3c.checkversions"; 17 - sha256 = "94c7ab0810ee6fdb66a4689b48e537b57e2dbee277cb1de2ece7a7f4d8c83001"; 17 + hash = "sha256-rn4kl8Pn6YNqbE+VD6L8rVBQHkQqXSD47ZIy77+ashE="; 18 18 }; 19 19 20 20 propagatedBuildInputs = [ zc-buildout ]; 21 + 21 22 nativeCheckInputs = [ zope_testrunner ]; 22 - doCheck = !python.pkgs.isPy27; 23 + 23 24 checkPhase = '' 24 25 ${python.interpreter} -m zope.testrunner --test-path=src [] 25 26 ''; 26 27 27 28 meta = with lib; { 28 - broken = (stdenv.isLinux && stdenv.isAarch64) || stdenv.isDarwin; 29 29 homepage = "https://github.com/zopefoundation/z3c.checkversions"; 30 + changelog = "https://github.com/zopefoundation/z3c.checkversions/blob/${version}/CHANGES.rst"; 30 31 description = "Find newer package versions on PyPI"; 31 32 license = licenses.zpl21; 32 33 };
+1 -1
pkgs/development/tools/ansi/default.nix
··· 15 15 description = "Quickly get ANSI escape sequences"; 16 16 longDescription = '' 17 17 CLI utility called "ansi" to quickly get ANSI escape sequences. Supports 18 - the colors and styles, such as bold or italic."; 18 + the colors and styles, such as bold or italic. 19 19 ''; 20 20 homepage = "https://github.com/phip1611/ansi-escape-sequences-cli"; 21 21 license = with licenses; [ mit ];
+3 -3
pkgs/servers/plex/raw.nix
··· 12 12 # server, and the FHS userenv and corresponding NixOS module should 13 13 # automatically pick up the changes. 14 14 stdenv.mkDerivation rec { 15 - version = "1.30.2.6563-3d4dc0cce"; 15 + version = "1.31.0.6654-02189b09f"; 16 16 pname = "plexmediaserver"; 17 17 18 18 # Fetch the source 19 19 src = if stdenv.hostPlatform.system == "aarch64-linux" then fetchurl { 20 20 url = "https://downloads.plex.tv/plex-media-server-new/${version}/debian/plexmediaserver_${version}_arm64.deb"; 21 - sha256 = "0sz6xc484flh1cnlrvwin7x34bl118yy2mwj034f8p9ngiy5hrkw"; 21 + sha256 = "sha256-ttkvYD+ALxfZpQutI1VyTbmQi/7hmvZ+YMUv3lskeWU="; 22 22 } else fetchurl { 23 23 url = "https://downloads.plex.tv/plex-media-server-new/${version}/debian/plexmediaserver_${version}_amd64.deb"; 24 - sha256 = "0ymxfy3s9nygv9syiy2bdwmjfqg8m4i5n8c37z1ib6393iwj8mgi"; 24 + sha256 = "sha256-TTEcyIBFiuJTNHeJ9wu+4o2ol72oCvM9FdDPC83J3Mc="; 25 25 }; 26 26 27 27 outputs = [ "out" "basedb" ];
+35
pkgs/tools/X11/paperview/default.nix
··· 1 + { lib 2 + , stdenv 3 + , fetchFromGitHub 4 + , libX11 5 + , SDL2 6 + }: 7 + 8 + stdenv.mkDerivation rec { 9 + pname = "paperview"; 10 + version = "unstable-2020-09-22"; 11 + 12 + src = fetchFromGitHub { 13 + owner = "glouw"; 14 + repo = "paperview"; 15 + rev = "40162fb76566fec8163c338c169c2fcd9df6ef42"; 16 + hash = "sha256-rvf89vMIT274+Hva+N4KFu1iT2XE6fq5Bi4kOQg2M0g="; 17 + }; 18 + 19 + buildInputs = [ 20 + SDL2 21 + libX11 22 + ]; 23 + 24 + makeFlags = [ 25 + "PREFIX=${placeholder "out"}" 26 + ]; 27 + 28 + meta = with lib; { 29 + description = "A high performance X11 animated wallpaper setter"; 30 + homepage = "https://github.com/glouw/paperview"; 31 + platforms = platforms.linux; 32 + license = with licenses; [ mit ]; 33 + maintainers = with maintainers; [ _3JlOy-PYCCKUi ]; 34 + }; 35 + }
+91
pkgs/tools/misc/turbo/default.nix
··· 1 + { lib 2 + , fetchFromGitHub 3 + , buildGoModule 4 + , git 5 + , nodejs 6 + , protobuf 7 + , protoc-gen-go 8 + , protoc-gen-go-grpc 9 + , rustPlatform 10 + , pkg-config 11 + , openssl 12 + , extra-cmake-modules 13 + , fontconfig 14 + , go 15 + }: 16 + let 17 + version = "1.7.0"; 18 + src = fetchFromGitHub { 19 + owner = "vercel"; 20 + repo = "turbo"; 21 + rev = "v${version}"; 22 + sha256 = "YTuEv2S3jNV2o7HJML+P6OMazgwgRhUPnd/zaTWfDWs="; 23 + }; 24 + 25 + go-turbo = buildGoModule rec { 26 + inherit src version; 27 + pname = "go-turbo"; 28 + modRoot = "cli"; 29 + 30 + vendorSha256 = "Kx/CLFv23h2TmGe8Jwu+S3QcONfqeHk2fCW1na75c0s="; 31 + 32 + nativeBuildInputs = [ 33 + git 34 + nodejs 35 + protobuf 36 + protoc-gen-go 37 + protoc-gen-go-grpc 38 + ]; 39 + 40 + preBuild = '' 41 + make compile-protos 42 + ''; 43 + 44 + preCheck = '' 45 + # Some tests try to run mkdir $HOME 46 + HOME=$TMP 47 + 48 + # Test_getTraversePath requires that source is a git repo 49 + # pwd: /build/source/cli 50 + pushd .. 51 + git config --global init.defaultBranch main 52 + git init 53 + popd 54 + ''; 55 + 56 + }; 57 + in 58 + rustPlatform.buildRustPackage rec { 59 + pname = "turbo"; 60 + inherit src version; 61 + cargoBuildFlags = [ 62 + "--package" 63 + "turbo" 64 + ]; 65 + RELEASE_TURBO_CLI = "true"; 66 + 67 + cargoSha256 = "ENw6NU3Fedd+OJEEWgL8A54aowNqjn3iv7rxlr+/4ZE="; 68 + RUSTC_BOOTSTRAP = 1; 69 + nativeBuildInputs = [ 70 + pkg-config 71 + extra-cmake-modules 72 + ]; 73 + buildInputs = [ 74 + openssl 75 + fontconfig 76 + ]; 77 + 78 + postInstall = '' 79 + ln -s ${go-turbo}/bin/turbo $out/bin/go-turbo 80 + ''; 81 + 82 + # Browser tests time out with chromium and google-chrome 83 + doCheck = false; 84 + 85 + meta = with lib; { 86 + description = "High-performance build system for JavaScript and TypeScript codebases"; 87 + homepage = "https://turbo.build/"; 88 + maintainers = with maintainers; [ dlip ]; 89 + license = licenses.mpl20; 90 + }; 91 + }
+4
pkgs/top-level/all-packages.nix
··· 1536 1536 1537 1537 ocs-url = libsForQt5.callPackage ../tools/misc/ocs-url { }; 1538 1538 1539 + paperview = callPackage ../tools/X11/paperview { }; 1540 + 1539 1541 pferd = callPackage ../tools/misc/pferd {}; 1540 1542 1541 1543 proycon-wayout = callPackage ../tools/wayland/proycon-wayout {}; ··· 12803 12805 }; 12804 12806 12805 12807 tuptime = callPackage ../tools/system/tuptime { }; 12808 + 12809 + turbo = callPackage ../tools/misc/turbo { }; 12806 12810 12807 12811 turses = callPackage ../applications/networking/instant-messengers/turses { }; 12808 12812