Merge remote-tracking branch 'upstream/master' into sn-remove

annalee a04ddbe3 ee9c2b7c

+2505 -881
+14
maintainers/maintainer-list.nix
··· 10842 10842 githubId = 77865363; 10843 10843 name = "Leonid Belyaev"; 10844 10844 }; 10845 + leonm1 = { 10846 + github = "leonm1"; 10847 + githubId = 32306579; 10848 + keys = [{ 10849 + fingerprint = "C12D F14B DC9D 64E1 44C3 4D8A 755C DA4E 5923 416A"; 10850 + }]; 10851 + matrix = "@mattleon:matrix.org"; 10852 + name = "Matt Leon"; 10853 + }; 10845 10854 leshainc = { 10846 10855 email = "leshainc@fomalhaut.me"; 10847 10856 github = "LeshaInc"; ··· 16588 16597 keys = [{ 16589 16598 fingerprint = "1401 1B63 393D 16C1 AA9C C521 8526 B757 4A53 6236"; 16590 16599 }]; 16600 + }; 16601 + rosehobgoblin = { 16602 + name = "J. L. Bowden"; 16603 + github = "rosehobgoblin"; 16604 + githubId = 84164410; 16591 16605 }; 16592 16606 rossabaker = { 16593 16607 name = "Ross A. Baker";
+6
nixos/doc/manual/release-notes/rl-2405.section.md
··· 78 78 79 79 - [hebbot](https://github.com/haecker-felix/hebbot), a Matrix bot to generate "This Week in X" like blog posts. Available as [services.hebbot](#opt-services.hebbot.enable). 80 80 81 + - [Python Matter Server](https://github.com/home-assistant-libs/python-matter-server), a 82 + Matter Controller Server exposing websocket connections for use with other services, notably Home Assistant. 83 + Available as [services.matter-server](#opt-services.matter-server.enable) 84 + 81 85 - [Anki Sync Server](https://docs.ankiweb.net/sync-server.html), the official sync server built into recent versions of Anki. Available as [services.anki-sync-server](#opt-services.anki-sync-server.enable). 82 86 The pre-existing [services.ankisyncd](#opt-services.ankisyncd.enable) has been marked deprecated and will be dropped after 24.05 due to lack of maintenance of the anki-sync-server softwares. 87 + 88 + - [transfer-sh](https://github.com/dutchcoders/transfer.sh), a tool that supports easy and fast file sharing from the command-line. Available as [services.transfer-sh](#opt-services.transfer-sh.enable). 83 89 84 90 - [Suwayomi Server](https://github.com/Suwayomi/Suwayomi-Server), a free and open source manga reader server that runs extensions built for [Tachiyomi](https://tachiyomi.org). Available as [services.suwayomi-server](#opt-services.suwayomi-server.enable). 85 91
+7
nixos/lib/make-disk-image.nix
··· 609 609 ''} 610 610 611 611 # Set up core system link, bootloader (sd-boot, GRUB, uboot, etc.), etc. 612 + 613 + # NOTE: systemd-boot-builder.py calls nix-env --list-generations which 614 + # clobbers $HOME/.nix-defexpr/channels/nixos This would cause a folder 615 + # /homeless-shelter to show up in the final image which in turn breaks 616 + # nix builds in the target image if sandboxing is turned off (through 617 + # __noChroot for example). 618 + export HOME=$TMPDIR 612 619 NIXOS_INSTALL_BOOTLOADER=1 nixos-enter --root $mountPoint -- /nix/var/nix/profiles/system/bin/switch-to-configuration boot 613 620 614 621 # The above scripts will generate a random machine-id and we don't want to bake a single ID into all our images
+12 -1
nixos/modules/i18n/input-method/fcitx5.nix
··· 5 5 let 6 6 im = config.i18n.inputMethod; 7 7 cfg = im.fcitx5; 8 - fcitx5Package = pkgs.fcitx5-with-addons.override { inherit (cfg) addons; }; 8 + fcitx5Package = 9 + if cfg.plasma6Support 10 + then pkgs.qt6Packages.fcitx5-with-addons.override { inherit (cfg) addons; } 11 + else pkgs.libsForQt5.fcitx5-with-addons.override { inherit (cfg) addons; }; 9 12 settingsFormat = pkgs.formats.ini { }; 10 13 in 11 14 { ··· 25 28 description = lib.mdDoc '' 26 29 Use the Wayland input method frontend. 27 30 See [Using Fcitx 5 on Wayland](https://fcitx-im.org/wiki/Using_Fcitx_5_on_Wayland). 31 + ''; 32 + }; 33 + plasma6Support = mkOption { 34 + type = types.bool; 35 + default = false; 36 + description = lib.mdDoc '' 37 + Use qt6 versions of fcitx5 packages. 38 + Required for configuring fcitx5 in KDE System Settings. 28 39 ''; 29 40 }; 30 41 quickPhrase = mkOption {
+5 -1
nixos/modules/misc/nixpkgs.nix
··· 208 208 example = { system = "x86_64-linux"; }; 209 209 # Make sure that the final value has all fields for sake of other modules 210 210 # referring to this. 211 - apply = lib.systems.elaborate; 211 + apply = inputBuildPlatform: 212 + let elaborated = lib.systems.elaborate inputBuildPlatform; 213 + in if lib.systems.equals elaborated cfg.hostPlatform 214 + then cfg.hostPlatform # make identical, so that `==` equality works; see https://github.com/NixOS/nixpkgs/issues/278001 215 + else elaborated; 212 216 defaultText = literalExpression 213 217 ''config.nixpkgs.hostPlatform''; 214 218 description = lib.mdDoc ''
+6
nixos/modules/misc/nixpkgs/test.nix
··· 12 12 nixpkgs.hostPlatform = "aarch64-linux"; 13 13 nixpkgs.buildPlatform = "aarch64-darwin"; 14 14 }; 15 + withSameHostAndBuild = eval { 16 + nixpkgs.hostPlatform = "aarch64-linux"; 17 + nixpkgs.buildPlatform = "aarch64-linux"; 18 + }; 15 19 ambiguous = { 16 20 _file = "ambiguous.nix"; 17 21 nixpkgs.hostPlatform = "aarch64-linux"; ··· 81 85 assert withHost._module.args.pkgs.stdenv.buildPlatform.system == "aarch64-linux"; 82 86 assert withHostAndBuild._module.args.pkgs.stdenv.hostPlatform.system == "aarch64-linux"; 83 87 assert withHostAndBuild._module.args.pkgs.stdenv.buildPlatform.system == "aarch64-darwin"; 88 + assert withSameHostAndBuild.config.nixpkgs.buildPlatform == withSameHostAndBuild.config.nixpkgs.hostPlatform; 89 + assert withSameHostAndBuild._module.args.pkgs.stdenv.buildPlatform == withSameHostAndBuild._module.args.pkgs.stdenv.hostPlatform; 84 90 assert builtins.trace (lib.head (getErrors ambiguous)) 85 91 getErrors ambiguous == 86 92 [''
+2
nixos/modules/module-list.nix
··· 585 585 ./services/home-automation/govee2mqtt.nix 586 586 ./services/home-automation/home-assistant.nix 587 587 ./services/home-automation/homeassistant-satellite.nix 588 + ./services/home-automation/matter-server.nix 588 589 ./services/home-automation/zigbee2mqtt.nix 589 590 ./services/home-automation/zwave-js.nix 590 591 ./services/logging/SystemdJournal2Gelf.nix ··· 786 787 ./services/misc/tiddlywiki.nix 787 788 ./services/misc/tp-auto-kbbl.nix 788 789 ./services/misc/tuxclocker.nix 790 + ./services/misc/transfer-sh.nix 789 791 ./services/misc/tzupdate.nix 790 792 ./services/misc/uhub.nix 791 793 ./services/misc/weechat.nix
+2 -2
nixos/modules/security/pam.nix
··· 1465 1465 ''; 1466 1466 } 1467 1467 { 1468 - assertion = config.security.pam.zfs.enable -> (config.boot.zfs.enabled || config.boot.zfs.enableUnstable); 1468 + assertion = config.security.pam.zfs.enable -> config.boot.zfs.enabled; 1469 1469 message = '' 1470 - `security.pam.zfs.enable` requires enabling ZFS (`boot.zfs.enabled` or `boot.zfs.enableUnstable`). 1470 + `security.pam.zfs.enable` requires enabling ZFS (`boot.zfs.enabled`). 1471 1471 ''; 1472 1472 } 1473 1473 {
+125
nixos/modules/services/home-automation/matter-server.nix
··· 1 + { lib 2 + , pkgs 3 + , config 4 + , ... 5 + }: 6 + 7 + with lib; 8 + 9 + let 10 + cfg = config.services.matter-server; 11 + storageDir = "matter-server"; 12 + storagePath = "/var/lib/${storageDir}"; 13 + vendorId = "4939"; # home-assistant vendor ID 14 + in 15 + 16 + { 17 + meta.maintainers = with lib.maintainers; [ leonm1 ]; 18 + 19 + options.services.matter-server = with types; { 20 + enable = mkEnableOption (lib.mdDoc "Matter-server"); 21 + 22 + package = mkPackageOptionMD pkgs "python-matter-server" { }; 23 + 24 + port = mkOption { 25 + type = types.port; 26 + default = 5580; 27 + description = "Port to expose the matter-server service on."; 28 + }; 29 + 30 + logLevel = mkOption { 31 + type = types.enum [ "critical" "error" "warning" "info" "debug" ]; 32 + default = "info"; 33 + description = "Verbosity of logs from the matter-server"; 34 + }; 35 + 36 + extraArgs = mkOption { 37 + type = listOf str; 38 + default = []; 39 + description = '' 40 + Extra arguments to pass to the matter-server executable. 41 + See https://github.com/home-assistant-libs/python-matter-server?tab=readme-ov-file#running-the-development-server for options. 42 + ''; 43 + }; 44 + }; 45 + 46 + config = mkIf cfg.enable { 47 + systemd.services.matter-server = { 48 + after = [ "network-online.target" ]; 49 + before = [ "home-assistant.service" ]; 50 + wants = [ "network-online.target" ]; 51 + wantedBy = [ "multi-user.target" ]; 52 + description = "Matter Server"; 53 + environment.HOME = storagePath; 54 + serviceConfig = { 55 + ExecStart = (concatStringsSep " " [ 56 + "${cfg.package}/bin/matter-server" 57 + "--port" (toString cfg.port) 58 + "--vendorid" vendorId 59 + "--storage-path" storagePath 60 + "--log-level" "${cfg.logLevel}" 61 + "${escapeShellArgs cfg.extraArgs}" 62 + ]); 63 + # Start with a clean root filesystem, and allowlist what the container 64 + # is permitted to access. 65 + TemporaryFileSystem = "/"; 66 + # Allowlist /nix/store (to allow the binary to find its dependencies) 67 + # and dbus. 68 + ReadOnlyPaths = "/nix/store /run/dbus"; 69 + # Let systemd manage `/var/lib/matter-server` for us inside the 70 + # ephemeral TemporaryFileSystem. 71 + StateDirectory = storageDir; 72 + # `python-matter-server` writes to /data even when a storage-path is 73 + # specified. This bind-mount points /data at the systemd-managed 74 + # /var/lib/matter-server, so all files get dropped into the state 75 + # directory. 76 + BindPaths = "${storagePath}:/data"; 77 + 78 + # Hardening bits 79 + AmbientCapabilities = ""; 80 + CapabilityBoundingSet = ""; 81 + DevicePolicy = "closed"; 82 + DynamicUser = true; 83 + LockPersonality = true; 84 + MemoryDenyWriteExecute = true; 85 + NoNewPrivileges = true; 86 + PrivateDevices = true; 87 + PrivateTmp = true; 88 + PrivateUsers = true; 89 + ProcSubset = "pid"; 90 + ProtectClock = true; 91 + ProtectControlGroups = true; 92 + ProtectHome = true; 93 + ProtectHostname = true; 94 + ProtectKernelLogs = true; 95 + ProtectKernelModules = true; 96 + ProtectKernelTunables = true; 97 + ProtectProc = "invisible"; 98 + RestrictAddressFamilies = [ 99 + "AF_INET" 100 + "AF_INET6" 101 + "AF_NETLINK" 102 + ]; 103 + RestrictNamespaces = true; 104 + RestrictRealtime = true; 105 + RestrictSUIDSGID = true; 106 + SystemCallFilter = concatStringsSep " " [ 107 + "~" # Blocklist 108 + "@clock" 109 + "@cpu-emulation" 110 + "@debug" 111 + "@module" 112 + "@mount" 113 + "@obsolete" 114 + "@privileged" 115 + "@raw-io" 116 + "@reboot" 117 + "@resources" 118 + "@swap" 119 + ]; 120 + UMask = "0077"; 121 + }; 122 + }; 123 + }; 124 + } 125 +
+102
nixos/modules/services/misc/transfer-sh.nix
··· 1 + { config, lib, pkgs, ... }: 2 + 3 + let 4 + cfg = config.services.transfer-sh; 5 + inherit (lib) 6 + mkDefault mkEnableOption mkPackageOption mkIf mkOption 7 + types mapAttrs isBool getExe boolToString mdDoc optionalAttrs; 8 + in 9 + { 10 + options.services.transfer-sh = { 11 + enable = mkEnableOption (mdDoc "Easy and fast file sharing from the command-line"); 12 + 13 + package = mkPackageOption pkgs "transfer-sh" { }; 14 + 15 + settings = mkOption { 16 + type = types.submodule { freeformType = with types; attrsOf (oneOf [ bool int str ]); }; 17 + default = { }; 18 + example = { 19 + LISTENER = ":8080"; 20 + BASEDIR = "/var/lib/transfer.sh"; 21 + TLS_LISTENER_ONLY = false; 22 + }; 23 + description = mdDoc '' 24 + Additional configuration for transfer-sh, see 25 + <https://github.com/dutchcoders/transfer.sh#usage-1> 26 + for supported values. 27 + 28 + For secrets use secretFile option instead. 29 + ''; 30 + }; 31 + 32 + provider = mkOption { 33 + type = types.enum [ "local" "s3" "storj" "gdrive" ]; 34 + default = "local"; 35 + description = mdDoc "Storage providers to use"; 36 + }; 37 + 38 + secretFile = mkOption { 39 + type = types.nullOr types.path; 40 + default = null; 41 + example = "/run/secrets/transfer-sh.env"; 42 + description = mdDoc '' 43 + Path to file containing environment variables. 44 + Useful for passing down secrets. 45 + Some variables that can be considered secrets are: 46 + - AWS_ACCESS_KEY 47 + - AWS_ACCESS_KEY 48 + - TLS_PRIVATE_KEY 49 + - HTTP_AUTH_HTPASSWD 50 + ''; 51 + }; 52 + }; 53 + 54 + config = 55 + let 56 + localProvider = (cfg.provider == "local"); 57 + stateDirectory = "/var/lib/transfer.sh"; 58 + in 59 + mkIf cfg.enable 60 + { 61 + services.transfer-sh.settings = { 62 + LISTENER = mkDefault ":8080"; 63 + } // optionalAttrs localProvider { 64 + BASEDIR = mkDefault stateDirectory; 65 + }; 66 + 67 + systemd.services.transfer-sh = { 68 + after = [ "network.target" ]; 69 + wantedBy = [ "multi-user.target" ]; 70 + environment = mapAttrs (_: v: if isBool v then boolToString v else toString v) cfg.settings; 71 + serviceConfig = { 72 + CapabilityBoundingSet = [ "CAP_NET_BIND_SERVICE" ]; 73 + DevicePolicy = "closed"; 74 + DynamicUser = true; 75 + ExecStart = "${getExe cfg.package} --provider ${cfg.provider}"; 76 + LockPersonality = true; 77 + MemoryDenyWriteExecute = true; 78 + PrivateDevices = true; 79 + PrivateUsers = true; 80 + ProtectClock = true; 81 + ProtectControlGroups = true; 82 + ProtectHostname = true; 83 + ProtectKernelLogs = true; 84 + ProtectKernelModules = true; 85 + ProtectKernelTunables = true; 86 + ProtectProc = "invisible"; 87 + RestrictAddressFamilies = [ "AF_INET" "AF_INET6" ]; 88 + RestrictNamespaces = true; 89 + RestrictRealtime = true; 90 + SystemCallArchitectures = [ "native" ]; 91 + SystemCallFilter = [ "@system-service" ]; 92 + StateDirectory = baseNameOf stateDirectory; 93 + } // optionalAttrs (cfg.secretFile != null) { 94 + EnvironmentFile = cfg.secretFile; 95 + } // optionalAttrs localProvider { 96 + ReadWritePaths = cfg.settings.BASEDIR; 97 + }; 98 + }; 99 + }; 100 + 101 + meta.maintainers = with lib.maintainers; [ ocfox ]; 102 + }
+8 -1
nixos/modules/services/networking/tailscale.nix
··· 66 66 default = []; 67 67 example = ["--ssh"]; 68 68 }; 69 + 70 + extraDaemonFlags = mkOption { 71 + description = lib.mdDoc "Extra flags to pass to {command}`tailscaled`."; 72 + type = types.listOf types.str; 73 + default = []; 74 + example = ["--no-logs-no-support"]; 75 + }; 69 76 }; 70 77 71 78 config = mkIf cfg.enable { ··· 80 87 ] ++ lib.optional config.networking.resolvconf.enable config.networking.resolvconf.package; 81 88 serviceConfig.Environment = [ 82 89 "PORT=${toString cfg.port}" 83 - ''"FLAGS=--tun ${lib.escapeShellArg cfg.interfaceName}"'' 90 + ''"FLAGS=--tun ${lib.escapeShellArg cfg.interfaceName} ${lib.concatStringsSep " " cfg.extraDaemonFlags}"'' 84 91 ] ++ (lib.optionals (cfg.permitCertUid != null) [ 85 92 "TS_PERMIT_CERT_UID=${cfg.permitCertUid}" 86 93 ]);
+1 -1
nixos/modules/system/boot/systemd.nix
··· 97 97 98 98 # Maintaining state across reboots. 99 99 "systemd-random-seed.service" 100 + "systemd-boot-random-seed.service" 100 101 "systemd-backlight@.service" 101 102 "systemd-rfkill.service" 102 103 "systemd-rfkill.socket" ··· 667 668 668 669 # Don't bother with certain units in containers. 669 670 systemd.services.systemd-remount-fs.unitConfig.ConditionVirtualization = "!container"; 670 - systemd.services.systemd-random-seed.unitConfig.ConditionVirtualization = "!container"; 671 671 672 672 # Increase numeric PID range (set directly instead of copying a one-line file from systemd) 673 673 # https://github.com/systemd/systemd/pull/12226
+4 -16
nixos/modules/tasks/filesystems/zfs.nix
··· 211 211 212 212 imports = [ 213 213 (mkRemovedOptionModule [ "boot" "zfs" "enableLegacyCrypto" ] "The corresponding package was removed from nixpkgs.") 214 + (mkRemovedOptionModule [ "boot" "zfs" "enableUnstable" ] "Instead set `boot.zfs.package = pkgs.zfs_unstable;`") 214 215 ]; 215 216 216 217 ###### interface ··· 219 220 boot.zfs = { 220 221 package = mkOption { 221 222 type = types.package; 222 - default = if cfgZfs.enableUnstable then pkgs.zfsUnstable else pkgs.zfs; 223 - defaultText = literalExpression "if zfsUnstable is enabled then pkgs.zfsUnstable else pkgs.zfs"; 224 - description = lib.mdDoc "Configured ZFS userland tools package, use `pkgs.zfsUnstable` if you want to track the latest staging ZFS branch."; 223 + default = pkgs.zfs; 224 + defaultText = literalExpression "pkgs.zfs"; 225 + description = lib.mdDoc "Configured ZFS userland tools package, use `pkgs.zfs_unstable` if you want to track the latest staging ZFS branch."; 225 226 }; 226 227 227 228 modulePackage = mkOption { ··· 237 238 default = inInitrd || inSystem; 238 239 defaultText = literalMD "`true` if ZFS filesystem support is enabled"; 239 240 description = lib.mdDoc "True if ZFS filesystem support is enabled"; 240 - }; 241 - 242 - enableUnstable = mkOption { 243 - type = types.bool; 244 - default = false; 245 - description = lib.mdDoc '' 246 - Use the unstable zfs package. This might be an option, if the latest 247 - kernel is not yet supported by a published release of ZFS. Enabling 248 - this option will install a development version of ZFS on Linux. The 249 - version will have already passed an extensive test suite, but it is 250 - more likely to hit an undiscovered bug compared to running a released 251 - version of ZFS on Linux. 252 - ''; 253 241 }; 254 242 255 243 allowHibernation = mkOption {
+2
nixos/tests/all-tests.nix
··· 512 512 mastodon = discoverTests (import ./web-apps/mastodon { inherit handleTestOn; }); 513 513 pixelfed = discoverTests (import ./web-apps/pixelfed { inherit handleTestOn; }); 514 514 mate = handleTest ./mate.nix {}; 515 + matter-server = handleTest ./matter-server.nix {}; 515 516 matomo = handleTest ./matomo.nix {}; 516 517 matrix-appservice-irc = handleTest ./matrix/appservice-irc.nix {}; 517 518 matrix-conduit = handleTest ./matrix/conduit.nix {}; ··· 916 917 tor = handleTest ./tor.nix {}; 917 918 traefik = handleTestOn ["aarch64-linux" "x86_64-linux"] ./traefik.nix {}; 918 919 trafficserver = handleTest ./trafficserver.nix {}; 920 + transfer-sh = handleTest ./transfer-sh.nix {}; 919 921 transmission = handleTest ./transmission.nix { transmission = pkgs.transmission; }; 920 922 transmission_4 = handleTest ./transmission.nix { transmission = pkgs.transmission_4; }; 921 923 # tracee requires bpf
+45
nixos/tests/matter-server.nix
··· 1 + import ./make-test-python.nix ({ pkgs, lib, ...} : 2 + 3 + let 4 + chipVersion = pkgs.python311Packages.home-assistant-chip-core.version; 5 + in 6 + 7 + { 8 + name = "matter-server"; 9 + meta.maintainers = with lib.maintainers; [ leonm1 ]; 10 + 11 + nodes = { 12 + machine = { config, ... }: { 13 + services.matter-server = { 14 + enable = true; 15 + port = 1234; 16 + }; 17 + }; 18 + }; 19 + 20 + testScript = /* python */ '' 21 + start_all() 22 + 23 + machine.wait_for_unit("matter-server.service") 24 + machine.wait_for_open_port(1234) 25 + 26 + with subtest("Check websocket server initialized"): 27 + output = machine.succeed("echo \"\" | ${pkgs.websocat}/bin/websocat ws://localhost:1234/ws") 28 + machine.log(output) 29 + 30 + assert '"sdk_version": "${chipVersion}"' in output, ( 31 + 'CHIP version \"${chipVersion}\" not present in websocket message' 32 + ) 33 + 34 + assert '"fabric_id": 1' in output, ( 35 + "fabric_id not propagated to server" 36 + ) 37 + 38 + with subtest("Check storage directory is created"): 39 + machine.succeed("ls /var/lib/matter-server/chip.json") 40 + 41 + with subtest("Check systemd hardening"): 42 + _, output = machine.execute("systemd-analyze security matter-server.service | grep -v '✓'") 43 + machine.log(output) 44 + ''; 45 + })
+3
nixos/tests/qemu-vm-external-disk-image.nix
··· 69 69 os.environ['NIX_DISK_IMAGE'] = tmp_disk_image.name 70 70 71 71 machine.succeed("findmnt --kernel --source ${rootFsDevice} --target /") 72 + 73 + # Make sure systemd boot didn't clobber this 74 + machine.succeed("[ ! -e /homeless-shelter ]") 72 75 ''; 73 76 }
+20
nixos/tests/transfer-sh.nix
··· 1 + import ./make-test-python.nix ({ pkgs, lib, ... }: { 2 + name = "transfer-sh"; 3 + 4 + meta = { 5 + maintainers = with lib.maintainers; [ ocfox ]; 6 + }; 7 + 8 + nodes.machine = { pkgs, ... }: { 9 + services.transfer-sh = { 10 + enable = true; 11 + settings.LISTENER = ":1234"; 12 + }; 13 + }; 14 + 15 + testScript = '' 16 + machine.wait_for_unit("transfer-sh.service") 17 + machine.wait_for_open_port(1234) 18 + machine.succeed("curl --fail http://localhost:1234/") 19 + ''; 20 + })
+9 -9
nixos/tests/zfs.nix
··· 7 7 8 8 let 9 9 10 - makeZfsTest = name: 10 + makeZfsTest = 11 11 { kernelPackages 12 12 , enableSystemdStage1 ? false 13 13 , zfsPackage 14 14 , extraTest ? "" 15 15 }: 16 16 makeTest { 17 - name = "zfs-" + name; 17 + name = zfsPackage.kernelModuleAttribute; 18 18 meta = with pkgs.lib.maintainers; { 19 19 maintainers = [ elvishjerricco ]; 20 20 }; ··· 192 192 in { 193 193 194 194 # maintainer: @raitobezarius 195 - series_2_1 = makeZfsTest "2.1-series" { 195 + series_2_1 = makeZfsTest { 196 196 zfsPackage = pkgs.zfs_2_1; 197 197 kernelPackages = pkgs.linuxPackages; 198 198 }; 199 199 200 - stable = makeZfsTest "stable" { 201 - zfsPackage = pkgs.zfsStable; 200 + series_2_2 = makeZfsTest { 201 + zfsPackage = pkgs.zfs_2_2; 202 202 kernelPackages = pkgs.linuxPackages; 203 203 }; 204 204 205 - unstable = makeZfsTest "unstable" rec { 206 - zfsPackage = pkgs.zfsUnstable; 205 + unstable = makeZfsTest rec { 206 + zfsPackage = pkgs.zfs_unstable; 207 207 kernelPackages = zfsPackage.latestCompatibleLinuxPackages; 208 208 }; 209 209 210 - unstableWithSystemdStage1 = makeZfsTest "unstable" rec { 211 - zfsPackage = pkgs.zfsUnstable; 210 + unstableWithSystemdStage1 = makeZfsTest rec { 211 + zfsPackage = pkgs.zfs_unstable; 212 212 kernelPackages = zfsPackage.latestCompatibleLinuxPackages; 213 213 enableSystemdStage1 = true; 214 214 };
+2 -2
pkgs/applications/audio/monkeys-audio/default.nix
··· 5 5 }: 6 6 7 7 stdenv.mkDerivation (finalAttrs: { 8 - version = "10.49"; 8 + version = "10.52"; 9 9 pname = "monkeys-audio"; 10 10 11 11 src = fetchzip { 12 12 url = "https://monkeysaudio.com/files/MAC_${ 13 13 builtins.concatStringsSep "" (lib.strings.splitString "." finalAttrs.version)}_SDK.zip"; 14 - hash = "sha256-OhTqBFNwmReMT1U11CIB7XCTohiILdd2nDFp+9nfObs="; 14 + hash = "sha256-n+bQzvuCTt7dnqkPO592KKZeShmMlbp/KAXK0F2dlTg="; 15 15 stripRoot = false; 16 16 }; 17 17 nativeBuildInputs = [
+14 -14
pkgs/applications/audio/ptcollab/default.nix pkgs/by-name/pt/ptcollab/package.nix
··· 1 - { mkDerivation 1 + { stdenv 2 2 , lib 3 - , stdenv 4 3 , fetchFromGitHub 5 4 , nix-update-script 5 + , libsForQt5 6 6 , libvorbis 7 7 , pkg-config 8 - , qmake 9 - , qtbase 10 - , qttools 11 - , qtmultimedia 12 8 , rtmidi 13 9 }: 14 10 15 - mkDerivation rec { 11 + stdenv.mkDerivation (finalAttrs: { 16 12 pname = "ptcollab"; 17 - version = "0.6.4.7"; 13 + version = "0.6.4.8"; 18 14 19 15 src = fetchFromGitHub { 20 16 owner = "yuxshao"; 21 17 repo = "ptcollab"; 22 - rev = "v${version}"; 23 - hash = "sha256-KYNov/HbKM2d8VVO8iyWA3XWFDE9iWeKkRCNC1xlPNw="; 18 + rev = "v${finalAttrs.version}"; 19 + hash = "sha256-9u2K79QJRfYKL66e1lsRrQMEqmKTWbK+ucal3/u4rP4="; 24 20 }; 25 21 26 22 nativeBuildInputs = [ 27 23 pkg-config 24 + ] ++ (with libsForQt5; [ 28 25 qmake 29 26 qttools 30 - ]; 27 + wrapQtAppsHook 28 + ]); 31 29 32 30 buildInputs = [ 33 31 libvorbis 32 + rtmidi 33 + ] ++ (with libsForQt5; [ 34 34 qtbase 35 35 qtmultimedia 36 - rtmidi 37 - ]; 36 + ]); 38 37 39 38 postInstall = lib.optionalString stdenv.hostPlatform.isDarwin '' 40 39 # Move appbundles to Applications before wrapping happens ··· 54 53 meta = with lib; { 55 54 description = "Experimental pxtone editor where you can collaborate with friends"; 56 55 homepage = "https://yuxshao.github.io/ptcollab/"; 56 + changelog = "https://github.com/yuxshao/ptcollab/releases/tag/v${finalAttrs.version}"; 57 57 license = licenses.mit; 58 58 maintainers = with maintainers; [ OPNA2608 ]; 59 59 platforms = platforms.all; 60 60 }; 61 - } 61 + })
-39
pkgs/applications/audio/spotifywm/default.nix
··· 1 - { lib, stdenv, fetchFromGitHub, spotify, xorg, makeWrapper }: 2 - stdenv.mkDerivation { 3 - pname = "spotifywm-unstable"; 4 - version = "2022-10-26"; 5 - 6 - src = fetchFromGitHub { 7 - owner = "dasJ"; 8 - repo = "spotifywm"; 9 - rev = "8624f539549973c124ed18753881045968881745"; 10 - sha256 = "sha256-AsXqcoqUXUFxTG+G+31lm45gjP6qGohEnUSUtKypew0="; 11 - }; 12 - 13 - nativeBuildInputs = [ makeWrapper ]; 14 - 15 - buildInputs = [ xorg.libX11 ]; 16 - 17 - installPhase = '' 18 - runHook preInstall 19 - 20 - mkdir -p $out/{bin,lib} 21 - install -Dm644 spotifywm.so $out/lib/ 22 - ln -sf ${spotify}/bin/spotify $out/bin/spotify 23 - 24 - # wrap spotify to use spotifywm.so 25 - wrapProgram $out/bin/spotify --set LD_PRELOAD "$out/lib/spotifywm.so" 26 - # backwards compatibility for people who are using the "spotifywm" binary 27 - ln -sf $out/bin/spotify $out/bin/spotifywm 28 - 29 - runHook postInstall 30 - ''; 31 - 32 - meta = with lib; { 33 - homepage = "https://github.com/dasJ/spotifywm"; 34 - description = "Wrapper around Spotify that correctly sets class name before opening the window"; 35 - license = licenses.mit; 36 - platforms = platforms.linux; 37 - maintainers = with maintainers; [ jqueiroz the-argus ]; 38 - }; 39 - }
+3 -3
pkgs/applications/graphics/oculante/default.nix
··· 22 22 23 23 rustPlatform.buildRustPackage rec { 24 24 pname = "oculante"; 25 - version = "0.8.11"; 25 + version = "0.8.13"; 26 26 27 27 src = fetchFromGitHub { 28 28 owner = "woelper"; 29 29 repo = "oculante"; 30 30 rev = version; 31 - hash = "sha256-5nOXt2c7byO+JdVXADu2TyO4vtLyg8UBWerPFMGHcso="; 31 + hash = "sha256-RbRvV3OkRZXc0n7qGzqbBtbU81wFc+/Ohg9pbVqdsw4="; 32 32 }; 33 33 34 - cargoHash = "sha256-l1JYZxwvNnaff1PYPXniHmfNMG2Um5aPKTYuh/LCHoE="; 34 + cargoHash = "sha256-qt4bHCHpiP6yOce9hquVVlLFF906ADwhss4xAP9E0fA="; 35 35 36 36 nativeBuildInputs = [ 37 37 cmake
+2 -2
pkgs/applications/graphics/upscayl/default.nix
··· 4 4 lib, 5 5 }: let 6 6 pname = "upscayl"; 7 - version = "2.9.9"; 7 + version = "2.10.0"; 8 8 9 9 src = fetchurl { 10 10 url = "https://github.com/upscayl/upscayl/releases/download/v${version}/upscayl-${version}-linux.AppImage"; 11 - hash = "sha256-EoTFvlLsXQYZldXfEHhP3/bHygm+NdeDsf+p138mM8w"; 11 + hash = "sha256-nRYNYNHIkbvvQZd1zRDCCsCadgRgV/yn9WfaKjt44O8="; 12 12 }; 13 13 14 14 appimageContents = appimageTools.extractType2 {
+2 -2
pkgs/applications/misc/calibre/default.nix
··· 32 32 33 33 stdenv.mkDerivation (finalAttrs: { 34 34 pname = "calibre"; 35 - version = "7.5.1"; 35 + version = "7.6.0"; 36 36 37 37 src = fetchurl { 38 38 url = "https://download.calibre-ebook.com/${finalAttrs.version}/calibre-${finalAttrs.version}.tar.xz"; 39 - hash = "sha256-pGo9fWyeX5hpw5YOV05tWy/0YxHShStKN96LMPnqIiA="; 39 + hash = "sha256-fD2kTwH692x6Nm93NrUQvmbcXiX9hHBpo4wvUvBqLAM="; 40 40 }; 41 41 42 42 patches = [
+2 -2
pkgs/applications/misc/logseq/default.nix
··· 14 14 15 15 in { 16 16 pname = "logseq"; 17 - version = "0.10.6"; 17 + version = "0.10.7"; 18 18 19 19 src = fetchurl { 20 20 url = "https://github.com/logseq/logseq/releases/download/${version}/logseq-linux-x64-${version}.AppImage"; 21 - hash = "sha256-OUQh+6HRnzxw8Nn/OkU+DkjPKWKpMN0xchD1vPU3KV8="; 21 + hash = "sha256-EC83D7tSpoDV6h363yIdX9IrTfoMd4b0hTVdW1T0pXg="; 22 22 name = "${pname}-${version}.AppImage"; 23 23 }; 24 24
+3 -3
pkgs/applications/misc/ttdl/default.nix
··· 5 5 6 6 rustPlatform.buildRustPackage rec { 7 7 pname = "ttdl"; 8 - version = "4.2.0"; 8 + version = "4.2.1"; 9 9 10 10 src = fetchFromGitHub { 11 11 owner = "VladimirMarkelov"; 12 12 repo = "ttdl"; 13 13 rev = "v${version}"; 14 - sha256 = "sha256-5OYOF8SvjPn/gZf/utcpv1zVvVbB1HeB1mkMiJtBjOQ="; 14 + sha256 = "sha256-fspqUzF3QqFpd16J1dbcNMdqjcR3PIiRu/s+VB4KgwQ="; 15 15 }; 16 16 17 - cargoHash = "sha256-MLypY7Dbr1/4hJ2UYmNOVp0nNWrq3DDTEidgkL0X0AU="; 17 + cargoHash = "sha256-dvzm9lbVGGM4t6KZcHSlqwo55jssxi8HyFREMaj5I0Q="; 18 18 19 19 meta = with lib; { 20 20 description = "A CLI tool to manage todo lists in todo.txt format";
+2 -2
pkgs/applications/misc/wofi/default.nix
··· 11 11 }: 12 12 stdenv.mkDerivation rec { 13 13 pname = "wofi"; 14 - version = "1.4"; 14 + version = "1.4.1"; 15 15 16 16 src = fetchFromSourcehut { 17 17 repo = pname; 18 18 owner = "~scoopta"; 19 19 rev = "v${version}"; 20 - sha256 = "sha256-zzBD1OPPlOjAUaJOlMf6k1tSai1w1ZvOwy2sSOWI7AM="; 20 + sha256 = "sha256-aedoUhVfk8ljmQ23YxVmGZ00dPpRftW2dnRAgXmtV/w="; 21 21 vc = "hg"; 22 22 }; 23 23
+2 -2
pkgs/applications/networking/cluster/atmos/default.nix
··· 2 2 3 3 buildGoModule rec { 4 4 pname = "atmos"; 5 - version = "1.64.1"; 5 + version = "1.64.3"; 6 6 7 7 src = fetchFromGitHub { 8 8 owner = "cloudposse"; 9 9 repo = pname; 10 10 rev = "v${version}"; 11 - sha256 = "sha256-QHXBvZThLi5Gnpc7fmitkvl3JU1i/g2jz8c6U4//6mU="; 11 + sha256 = "sha256-Z27wFAWstsQliDiYl93yY9LDeVcGEWcrmggGJI60hxk="; 12 12 }; 13 13 14 14 vendorHash = "sha256-i7m9YXPlWqHtvC4Df7v5bLWt2tqeT933t2+Xit5RQxg=";
+3 -3
pkgs/applications/networking/cluster/werf/default.nix
··· 10 10 11 11 buildGoModule rec { 12 12 pname = "werf"; 13 - version = "1.2.294"; 13 + version = "1.2.295"; 14 14 15 15 src = fetchFromGitHub { 16 16 owner = "werf"; 17 17 repo = "werf"; 18 18 rev = "v${version}"; 19 - hash = "sha256-A/Do2UepwV8lmT8qWir7CKR8/YeVKOEoJjvVfj9+wt0="; 19 + hash = "sha256-oQDP2Tsxj4c5X2pfj4i+hfnsdjUBYcyF2p61OY04Ozg="; 20 20 }; 21 21 22 - vendorHash = "sha256-Fb9drtVITjka83Y8+YSa9fqSBv7O4muMGqV4w3K7+Dg="; 22 + vendorHash = "sha256-6q13vMxu0iQgaXS+Z6V0jjSIhxMscw6sLANzK07gAlI="; 23 23 24 24 proxyVendor = true; 25 25
+2 -2
pkgs/applications/science/physics/nnpdf/default.nix
··· 15 15 16 16 stdenv.mkDerivation rec { 17 17 pname = "nnpdf"; 18 - version = "4.0.8"; 18 + version = "4.0.9"; 19 19 20 20 src = fetchFromGitHub { 21 21 owner = "NNPDF"; 22 22 repo = pname; 23 23 rev = version; 24 - hash = "sha256-hGCA2K/fD6UZa9WD42IDmZV1oxNgjFaXkjOZKGgGSBg="; 24 + hash = "sha256-PyhkHlOlzKfDxUX91NkeZWjdEzFR4PW0Yh5Yz6ZA27g="; 25 25 }; 26 26 27 27 postPatch = ''
+9 -7
pkgs/applications/window-managers/hyprwm/hyprland/default.nix
··· 9 9 , cairo 10 10 , git 11 11 , hyprland-protocols 12 + , hyprlang 12 13 , jq 13 14 , libGL 14 15 , libdrm ··· 31 32 , debug ? false 32 33 , enableXWayland ? true 33 34 , legacyRenderer ? false 34 - , withSystemd ? true 35 + , withSystemd ? lib.meta.availableOn stdenv.hostPlatform systemd 35 36 , wrapRuntimeDeps ? true 36 37 # deprecated flags 37 38 , nvidiaPatches ? false ··· 43 44 assert lib.assertMsg (!hidpiXWayland) "The option `hidpiXWayland` has been removed. Please refer https://wiki.hyprland.org/Configuring/XWayland"; 44 45 stdenv.mkDerivation (finalAttrs: { 45 46 pname = "hyprland" + lib.optionalString debug "-debug"; 46 - version = "0.35.0"; 47 + version = "0.36.0"; 47 48 48 49 src = fetchFromGitHub { 49 50 owner = "hyprwm"; 50 51 repo = finalAttrs.pname; 51 52 rev = "v${finalAttrs.version}"; 52 - hash = "sha256-dU5m6Cd4+WQZal2ICDVf1kww/dNzo1YUWRxWeCctEig="; 53 + hash = "sha256-oZe4k6jtO/0govmERGcbeyvE9EfTvXY5bnyIs6AsL9U="; 53 54 }; 54 55 55 56 patches = [ ··· 92 93 cairo 93 94 git 94 95 hyprland-protocols 96 + hyprlang 95 97 libGL 96 98 libdrm 97 99 libinput ··· 116 118 117 119 mesonAutoFeatures = "disabled"; 118 120 119 - mesonFlags = builtins.concatLists [ 120 - (lib.optional enableXWayland "-Dxwayland=enabled") 121 - (lib.optional legacyRenderer "-Dlegacy_renderer=enabled") 122 - (lib.optional withSystemd "-Dsystemd=enabled") 121 + mesonFlags = [ 122 + (lib.mesonEnable "xwayland" enableXWayland) 123 + (lib.mesonEnable "legacy_renderer" legacyRenderer) 124 + (lib.mesonEnable "systemd" withSystemd) 123 125 ]; 124 126 125 127 postInstall = ''
+8 -9
pkgs/applications/window-managers/hyprwm/hyprland/plugins.nix
··· 5 5 , hyprland 6 6 }: 7 7 let 8 - mkHyprlandPlugin = 8 + mkHyprlandPlugin = hyprland: 9 9 args@{ pluginName, ... }: 10 10 stdenv.mkDerivation (args // { 11 11 pname = "${pluginName}"; ··· 14 14 ++ hyprland.buildInputs 15 15 ++ (args.buildInputs or [ ]); 16 16 meta = args.meta // { 17 - description = (args.meta.description or ""); 18 - longDescription = (args.meta.lonqDescription or "") + 17 + description = args.meta.description or ""; 18 + longDescription = (args.meta.longDescription or "") + 19 19 "\n\nPlugins can be installed via a plugin entry in the Hyprland NixOS or Home Manager options."; 20 20 }; 21 21 }); 22 22 23 23 plugins = { 24 24 hy3 = { fetchFromGitHub, cmake, hyprland }: 25 - mkHyprlandPlugin rec { 25 + mkHyprlandPlugin hyprland rec { 26 26 pluginName = "hy3"; 27 - version = "0.35.0"; 27 + version = "unstable-2024-02-23"; 28 28 29 29 src = fetchFromGitHub { 30 30 owner = "outfoxxed"; 31 31 repo = "hy3"; 32 - rev = "hl${version}"; 33 - hash = "sha256-lFe7Lf0K5ePTh4gflnvBohOGH4ayGDtNkbg/XtoNqRo="; 32 + rev = "029a2001361d2a4cbbe7447968dee5d1b1880298"; 33 + hash = "sha256-8LKCXwNU6wA8o6O7s9T2sLWbYNHaI1tYU4YMjHkNLZQ="; 34 34 }; 35 35 36 36 nativeBuildInputs = [ cmake ]; ··· 47 47 }; 48 48 }; 49 49 in 50 - lib.mapAttrs (name: plugin: callPackage plugin { }) plugins 51 - 50 + (lib.mapAttrs (name: plugin: callPackage plugin { }) plugins) // { inherit mkHyprlandPlugin; }
+2 -2
pkgs/applications/window-managers/hyprwm/hyprland/wlroots.nix
··· 9 9 domain = "gitlab.freedesktop.org"; 10 10 owner = "wlroots"; 11 11 repo = "wlroots"; 12 - rev = "00b869c1a96f300a8f25da95d624524895e0ddf2"; 13 - hash = "sha256-5HUTG0p+nCJv3cn73AmFHRZdfRV5AD5N43g8xAePSKM="; 12 + rev = "0cb091f1a2d345f37d2ee445f4ffd04f7f4ec9e5"; 13 + hash = "sha256-Mz6hCtommq7RQfcPnxLINigO4RYSNt23HeJHC6mVmWI="; 14 14 }; 15 15 16 16 patches = [ ]; # don't inherit old.patches
+80
pkgs/by-name/README.md
··· 118 118 ``` 119 119 120 120 See [here](../../.github/workflows/check-by-name.yml) for more info. 121 + 122 + ## Recommendation for new packages with multiple versions 123 + 124 + These checks of the `pkgs/by-name` structure can cause problems in combination: 125 + 1. New top-level packages using `callPackage` must be defined via `pkgs/by-name`. 126 + 2. Packages in `pkgs/by-name` cannot refer to files outside their own directory. 127 + 128 + This means that outside `pkgs/by-name`, multiple already-present top-level packages can refer to some common file. 129 + If you open a PR to another instance of such a package, CI will fail check 1, 130 + but if you try to move the package to `pkgs/by-name`, it will fail check 2. 131 + 132 + This is often the case for packages with multiple versions, such as 133 + 134 + ```nix 135 + foo_1 = callPackage ../tools/foo/1.nix { }; 136 + foo_2 = callPackage ../tools/foo/2.nix { }; 137 + ``` 138 + 139 + The best way to resolve this is to not use `callPackage` directly, such that check 1 doesn't trigger. 140 + This can be done by using `inherit` on a local package set: 141 + ```nix 142 + inherit 143 + ({ 144 + foo_1 = callPackage ../tools/foo/1.nix { }; 145 + foo_2 = callPackage ../tools/foo/2.nix { }; 146 + }) 147 + foo_1 148 + foo_2 149 + ; 150 + ``` 151 + 152 + While this may seem pointless, this can in fact help with future package set refactorings, 153 + because it establishes a clear connection between related attributes. 154 + 155 + ### Further possible refactorings 156 + 157 + This is not required, but the above solution also allows refactoring the definitions into a separate file: 158 + 159 + ```nix 160 + inherit (import ../tools/foo pkgs) 161 + foo_1 foo_2; 162 + ``` 163 + 164 + ```nix 165 + # pkgs/tools/foo/default.nix 166 + pkgs: { 167 + foo_1 = callPackage ./1.nix { }; 168 + foo_2 = callPackage ./2.nix { }; 169 + } 170 + ``` 171 + 172 + Alternatively using [`callPackages`](https://nixos.org/manual/nixpkgs/unstable/#function-library-lib.customisation.callPackagesWith) 173 + if `callPackage` isn't used underneath and you want the same `.override` arguments for all attributes: 174 + 175 + ```nix 176 + inherit (callPackages ../tools/foo { }) 177 + foo_1 foo_2; 178 + ``` 179 + 180 + ```nix 181 + # pkgs/tools/foo/default.nix 182 + { 183 + stdenv 184 + }: { 185 + foo_1 = stdenv.mkDerivation { /* ... */ }; 186 + foo_2 = stdenv.mkDerivation { /* ... */ }; 187 + } 188 + ``` 189 + 190 + ### Exposing the package set 191 + 192 + This is not required, but the above solution also allows exposing the package set as an attribute: 193 + 194 + ```nix 195 + foo-versions = import ../tools/foo pkgs; 196 + # Or using callPackages 197 + # foo-versions = callPackages ../tools/foo { }; 198 + 199 + inherit (foo-versions) foo_1 foo_2; 200 + ```
+2 -2
pkgs/by-name/ap/apt/package.nix
··· 33 33 34 34 stdenv.mkDerivation (finalAttrs: { 35 35 pname = "apt"; 36 - version = "2.7.12"; 36 + version = "2.7.13"; 37 37 38 38 src = fetchurl { 39 39 url = "mirror://debian/pool/main/a/apt/apt_${finalAttrs.version}.tar.xz"; 40 - hash = "sha256-5G0Wa1/Ih8LZvKet1+DM2lR7lit2LhJyoIwEJrqpnK8="; 40 + hash = "sha256-xCq1XpHXvuX8v3/4w1hHFMusqgNl8JHn5gT3+Ek8fjU="; 41 41 }; 42 42 43 43 # cycle detection; lib can't be split
+5 -5
pkgs/by-name/co/codeium/package.nix
··· 13 13 }.${system} or throwSystem; 14 14 15 15 hash = { 16 - x86_64-linux = "sha256-3B1TEToovw4C8rLsJv0Y3OPg8ZjMZ3Y29IzIs9Wm6II="; 17 - aarch64-linux = "sha256-kD0yMHoJejKpK1cX/OPQLjPB8cXBp/aXy66YDxXINRw="; 18 - x86_64-darwin = "sha256-DxyxR1t4UrqTn/ORrDiOryWCQ1L0DWXmlh2Hnm7kMS4="; 19 - aarch64-darwin = "sha256-Ckbg/bZxeMpt2xtrLhJXo9DJTLluuWPVdGRRwiO1ZY8="; 16 + x86_64-linux = "sha256-+SdAippxuJ0LvT+w6xSvTpzCv5EPjxXJKH4mcmnxu9Y="; 17 + aarch64-linux = "sha256-cX+P0WcT+0oYDAcUJJ0+SRWPQCdv4rhrBf5BdPrF1Hg="; 18 + x86_64-darwin = "sha256-eQjwViY5OsFzFtKkjLbrQgGNVBBpNNJjlfu8t/F37hI="; 19 + aarch64-darwin = "sha256-xfB81SLuVa1wKcIGJZFxjdCSPmPXg0vYXtkCftiXBtU="; 20 20 }.${system} or throwSystem; 21 21 22 22 bin = "$out/bin/codeium_language_server"; ··· 24 24 in 25 25 stdenv.mkDerivation (finalAttrs: { 26 26 pname = "codeium"; 27 - version = "1.6.39"; 27 + version = "1.8.0"; 28 28 src = fetchurl { 29 29 name = "${finalAttrs.pname}-${finalAttrs.version}.gz"; 30 30 url = "https://github.com/Exafunction/codeium/releases/download/language-server-v${finalAttrs.version}/language_server_${plat}.gz";
+8 -3
pkgs/by-name/co/composefs/package.nix
··· 16 16 , fsverity-utils 17 17 , nix-update-script 18 18 , testers 19 + , nixosTests 19 20 20 21 , fuseSupport ? lib.meta.availableOn stdenv.hostPlatform fuse3 21 22 , enableValgrindCheck ? false ··· 23 24 }: 24 25 stdenv.mkDerivation (finalAttrs: { 25 26 pname = "composefs"; 26 - version = "1.0.2"; 27 + version = "1.0.3"; 27 28 28 29 src = fetchFromGitHub { 29 30 owner = "containers"; 30 31 repo = "composefs"; 31 32 rev = "v${finalAttrs.version}"; 32 - hash = "sha256-ViZkmuLFV5DN1nqWKGl+yaqhYUEOztZ1zGpxjr1U/dw="; 33 + hash = "sha256-YmredtZZKMjzJW/kxiTUmdgO/1iPIKzJsuJz8DeEdGM="; 33 34 }; 34 35 35 36 strictDeps = true; ··· 69 70 70 71 passthru = { 71 72 updateScript = nix-update-script { }; 72 - tests.pkg-config = testers.testMetaPkgConfig finalAttrs.finalPackage; 73 + tests = { 74 + # Broken on aarch64 unrelated to this package: https://github.com/NixOS/nixpkgs/issues/291398 75 + inherit (nixosTests) activation-etc-overlay-immutable activation-etc-overlay-mutable; 76 + pkg-config = testers.testMetaPkgConfig finalAttrs.finalPackage; 77 + }; 73 78 }; 74 79 75 80 meta = {
+3 -3
pkgs/by-name/ek/eksctl/package.nix
··· 6 6 7 7 buildGoModule rec { 8 8 pname = "eksctl"; 9 - version = "0.172.0"; 9 + version = "0.173.0"; 10 10 11 11 src = fetchFromGitHub { 12 12 owner = "weaveworks"; 13 13 repo = pname; 14 14 rev = version; 15 - hash = "sha256-DzbCtTXeoERV9ceUsZ+srATIyviJp+oNyB7EE/iHe6g="; 15 + hash = "sha256-PVBt+AoYd8fMYHzBpgQ261TGlkmyooN7UKX9ooXaRYA="; 16 16 }; 17 17 18 - vendorHash = "sha256-P+T+ynSkG3KEmJsrzJusCPBD1ClaVK/VIHD+2xkGswQ="; 18 + vendorHash = "sha256-5bHZt+Oze7JiaY0dKjoMNDdU6wzMphgZ3W3NveRKGy0="; 19 19 20 20 doCheck = false; 21 21
+34
pkgs/by-name/fc/fcitx5-rose-pine/package.nix
··· 1 + { stdenvNoCC 2 + , fetchFromGitHub 3 + , lib 4 + }: 5 + 6 + stdenvNoCC.mkDerivation { 7 + pname = "fcitx5-rose-pine"; 8 + version = "0-unstable-2024-03-01"; 9 + 10 + src = fetchFromGitHub { 11 + owner = "rose-pine"; 12 + repo = "fcitx5"; 13 + rev = "148de09929c2e2f948376bb23bc25d72006403bc"; 14 + hash = "sha256-SpQ5ylHSDF5KCwKttAlXgrte3GA1cCCy/0OKNT1a3D8="; 15 + }; 16 + 17 + installPhase = '' 18 + runHook preInstall 19 + 20 + mkdir -pv $out/share/fcitx5/themes/ 21 + cp -rv rose-pine* $out/share/fcitx5/themes/ 22 + 23 + runHook postInstall 24 + ''; 25 + 26 + 27 + meta = { 28 + description = "Fcitx5 themes based on Rosé Pine"; 29 + homepage = "https://github.com/rose-pine/fcitx5"; 30 + maintainers = with lib.maintainers; [ rosehobgoblin ]; 31 + platforms = lib.platforms.all; 32 + license = lib.licenses.unfree; 33 + }; 34 + }
+3 -3
pkgs/by-name/hu/hugo/package.nix
··· 10 10 11 11 buildGoModule rec { 12 12 pname = "hugo"; 13 - version = "0.123.4"; 13 + version = "0.123.6"; 14 14 15 15 src = fetchFromGitHub { 16 16 owner = "gohugoio"; 17 17 repo = "hugo"; 18 18 rev = "refs/tags/v${version}"; 19 - hash = "sha256-AJ/uK2eunQgsCcXR8FcQ9TVvMXs56J0gpfXRQCX78qY="; 19 + hash = "sha256-gLow1AcUROid6skLDdaJ9E3mPi99KPoOO/ZFdLBineU="; 20 20 }; 21 21 22 - vendorHash = "sha256-6qNICaj+P0VRl/crbiucZ7CpBG1vwFURkvOdaH6WidU="; 22 + vendorHash = "sha256-V7YRrC+6fOIjXOu7E0kIOZZt++4oFLPhmHeWmOVU3Xw="; 23 23 24 24 doCheck = false; 25 25
+19
pkgs/by-name/li/libvpl/opengl-driver-lib.patch
··· 1 + --- a/libvpl/src/mfx_dispatcher_vpl_loader.cpp 2 + +++ b/libvpl/src/mfx_dispatcher_vpl_loader.cpp 3 + @@ -548,6 +548,16 @@ mfxStatus LoaderCtxVPL::BuildListOfCandidateLibs() { 4 + it++; 5 + } 6 + 7 + + // fourth priority 8 + + searchDirList.clear(); 9 + + searchDirList.push_back("@driverLink@/lib"); 10 + + it = searchDirList.begin(); 11 + + while (it != searchDirList.end()) { 12 + + STRING_TYPE nextDir = (*it); 13 + + sts = SearchDirForLibs(nextDir, m_libInfoList, LIB_PRIORITY_05); 14 + + it++; 15 + + } 16 + + 17 + // lowest priority: legacy MSDK installation 18 + searchDirList.clear(); 19 + GetSearchPathsLegacy(searchDirList);
+9
pkgs/by-name/li/libvpl/package.nix
··· 3 3 , fetchFromGitHub 4 4 , cmake 5 5 , pkg-config 6 + , substituteAll 7 + , addDriverRunpath 6 8 }: 7 9 8 10 stdenv.mkDerivation (finalAttrs: { ··· 30 32 "-DENABLE_X11=ON" 31 33 "-DINSTALL_EXAMPLE_CODE=OFF" 32 34 "-DBUILD_TOOLS=OFF" 35 + ]; 36 + 37 + patches = [ 38 + (substituteAll { 39 + src = ./opengl-driver-lib.patch; 40 + inherit (addDriverRunpath) driverLink; 41 + }) 33 42 ]; 34 43 35 44 meta = with lib; {
+2 -2
pkgs/by-name/li/live555/package.nix
··· 9 9 10 10 stdenv.mkDerivation (finalAttrs: { 11 11 pname = "live555"; 12 - version = "2023.11.30"; 12 + version = "2024.02.23"; 13 13 14 14 src = fetchurl { 15 15 urls = [ ··· 18 18 "https://download.videolan.org/contrib/live555/live.${finalAttrs.version}.tar.gz" 19 19 "mirror://sourceforge/slackbuildsdirectlinks/live.${finalAttrs.version}.tar.gz" 20 20 ]; 21 - hash = "sha256-xue+9YtdAM2XkzAY6dU2PZ3n6bvPwlULIHqBqc8wuSU="; 21 + hash = "sha256-85JWXfsPAvocX5PiKXw9Xkd4zm2akzxMeETsZ3xm2wg="; 22 22 }; 23 23 24 24 patches = [
+40
pkgs/by-name/lt/ltris/package.nix
··· 1 + { lib 2 + , SDL 3 + , SDL_mixer 4 + , directoryListingUpdater 5 + , fetchurl 6 + , stdenv 7 + }: 8 + 9 + stdenv.mkDerivation (finalAttrs: { 10 + pname = "lgames-ltris"; 11 + version = "1.2.8"; 12 + 13 + src = fetchurl { 14 + url = "mirror://sourceforge/lgames/ltris-${finalAttrs.version}.tar.gz"; 15 + hash = "sha256-2e5haaU2pqkBk82qiF/3HQgSBVPHP09UwW+TQqpGUqA="; 16 + }; 17 + 18 + buildInputs = [ 19 + SDL 20 + SDL_mixer 21 + ]; 22 + 23 + hardeningDisable = [ "format" ]; 24 + 25 + passthru.updateScript = directoryListingUpdater { 26 + inherit (finalAttrs) pname version; 27 + url = "https://lgames.sourceforge.io/LTris/"; 28 + extraRegex = "(?!.*-win(32|64)).*"; 29 + }; 30 + 31 + meta = { 32 + homepage = "https://lgames.sourceforge.io/LTris/"; 33 + description = "Tetris clone from the LGames series"; 34 + license = with lib.licenses; [ gpl2Plus ]; 35 + mainProgram = "ltris"; 36 + maintainers = with lib.maintainers; [ AndersonTorres ]; 37 + inherit (SDL.meta) platforms; 38 + broken = stdenv.isDarwin; 39 + }; 40 + })
+1 -1
pkgs/by-name/ni/nixfmt-rfc-style/date.txt
··· 1 - 2024-01-31 1 + 2024-03-01
+2 -2
pkgs/by-name/ni/nixfmt-rfc-style/generated-package.nix
··· 8 8 pname = "nixfmt"; 9 9 version = "0.5.0"; 10 10 src = fetchzip { 11 - url = "https://github.com/piegamesde/nixfmt/archive/d6930fd0c62c4d7ec9e4a814adc3d2f590d96271.tar.gz"; 12 - sha256 = "1ijrdzdwricv4asmy296j7gzvhambv96nlxi3qrxb4lj1by6a34m"; 11 + url = "https://github.com/piegamesde/nixfmt/archive/2b5ee820690bae64cb4003e46917ae43541e3e0b.tar.gz"; 12 + sha256 = "1i1jbc1q4gd7fpilwy6s3a583yl5l8d8rlmipygj61mpclg9ihqg"; 13 13 }; 14 14 isLibrary = true; 15 15 isExecutable = true;
+70
pkgs/by-name/op/opengist/package.nix
··· 1 + { lib, buildGoModule, buildNpmPackage, fetchFromGitHub, moreutils, jq, git }: 2 + let 3 + # finalAttrs when 🥺 (buildGoModule does not support them) 4 + # https://github.com/NixOS/nixpkgs/issues/273815 5 + version = "1.6.1"; 6 + src = fetchFromGitHub { 7 + owner = "thomiceli"; 8 + repo = "opengist"; 9 + rev = "v${version}"; 10 + hash = "sha256-rJ8oiH08kSSFNgPHKGo68Oi1i3L1SEJyHuzoxKMOZME="; 11 + }; 12 + 13 + frontend = buildNpmPackage { 14 + pname = "opengist-frontend"; 15 + inherit version src; 16 + 17 + nativeBuildInputs = [ moreutils jq ]; 18 + 19 + # npm complains of "invalid package". shrug. we can give it a version. 20 + preBuild = '' 21 + jq '.version = "${version}"' package.json | sponge package.json 22 + ''; 23 + 24 + # copy pasta from the Makefile upstream, seems to be a workaround of sass 25 + # issues, unsure why it is not done in vite: 26 + # https://github.com/thomiceli/opengist/blob/05eccfa8e728335514a40476cd8116cfd1ca61dd/Makefile#L16-L19 27 + postBuild = '' 28 + EMBED=1 npx postcss 'public/assets/embed-*.css' -c public/postcss.config.js --replace 29 + ''; 30 + 31 + installPhase = '' 32 + mkdir -p $out 33 + cp -R public $out 34 + ''; 35 + 36 + npmDepsHash = "sha256-Sy321tIQOOrypk+EOGGixEzrPdhA9U8Hak+DOS+d00A="; 37 + }; 38 + in 39 + buildGoModule { 40 + pname = "opengist"; 41 + inherit version src; 42 + vendorHash = "sha256-IorqXJKzUTUL5zfKRipZaJtRlwVOmTwolJXFG/34Ais="; 43 + tags = [ 44 + "fs_embed" 45 + ]; 46 + 47 + # required for tests 48 + nativeCheckInputs = [ 49 + git 50 + ]; 51 + 52 + # required for tests to not try to write into $HOME and fail 53 + preCheck = '' 54 + export OG_OPENGIST_HOME=$(mktemp -d) 55 + ''; 56 + 57 + postPatch = '' 58 + cp -R ${frontend}/public/{manifest.json,assets} public/ 59 + ''; 60 + 61 + passthru.frontend = frontend; 62 + 63 + meta = { 64 + description = "Self-hosted pastebin powered by Git"; 65 + homepage = "https://github.com/thomiceli/opengist"; 66 + license = lib.licenses.agpl3Only; 67 + maintainers = with lib.maintainers; [ lf- ]; 68 + platforms = lib.platforms.unix; 69 + }; 70 + }
+2 -2
pkgs/by-name/rs/rsgain/package.nix
··· 13 13 14 14 stdenv.mkDerivation rec { 15 15 pname = "rsgain"; 16 - version = "3.4"; 16 + version = "3.5"; 17 17 18 18 src = fetchFromGitHub { 19 19 owner = "complexlogic"; 20 20 repo = "rsgain"; 21 21 rev = "v${version}"; 22 - sha256 = "sha256-AiNjsrwTF6emcwXo2TPMbs8mLavGS7NsvytAppMGKfY="; 22 + sha256 = "sha256-qIRtdgfGDNbZk9TQ3GC3lYetRqjOk8QPhAb4MuFuN0U="; 23 23 }; 24 24 25 25 cmakeFlags = ["-DCMAKE_BUILD_TYPE='Release'"];
+51
pkgs/by-name/sp/spotifywm/package.nix
··· 1 + { 2 + lib, 3 + stdenv, 4 + fetchFromGitHub, 5 + libX11, 6 + lndir, 7 + makeBinaryWrapper, 8 + spotify, 9 + }: 10 + stdenv.mkDerivation { 11 + pname = "spotifywm"; 12 + version = "0-unstable-2022-10-25"; 13 + 14 + src = fetchFromGitHub { 15 + owner = "dasJ"; 16 + repo = "spotifywm"; 17 + rev = "8624f539549973c124ed18753881045968881745"; 18 + hash = "sha256-AsXqcoqUXUFxTG+G+31lm45gjP6qGohEnUSUtKypew0="; 19 + }; 20 + 21 + nativeBuildInputs = [ 22 + makeBinaryWrapper 23 + lndir 24 + ]; 25 + 26 + buildInputs = [ libX11 ]; 27 + 28 + installPhase = '' 29 + runHook preInstall 30 + 31 + mkdir -p $out 32 + 33 + lndir -silent ${spotify} $out 34 + 35 + install -Dm644 spotifywm.so $out/lib/spotifywm.so 36 + 37 + wrapProgram $out/bin/spotify \ 38 + --suffix LD_PRELOAD : "$out/lib/spotifywm.so" 39 + 40 + runHook postInstall 41 + ''; 42 + 43 + meta = { 44 + homepage = "https://github.com/dasJ/spotifywm"; 45 + description = "Wrapper around Spotify that correctly sets class name before opening the window"; 46 + license = lib.licenses.mit; 47 + platforms = lib.platforms.linux; 48 + maintainers = with lib.maintainers; [ jqueiroz the-argus ]; 49 + mainProgram = "spotify"; 50 + }; 51 + }
+3 -2
pkgs/by-name/ti/tippecanoe/package.nix
··· 2 2 3 3 stdenv.mkDerivation (finalAttrs: { 4 4 pname = "tippecanoe"; 5 - version = "2.46.0"; 5 + version = "2.47.0"; 6 6 7 7 src = fetchFromGitHub { 8 8 owner = "felt"; 9 9 repo = "tippecanoe"; 10 10 rev = finalAttrs.version; 11 - hash = "sha256-UsQb90DKK05JByF3rh6kcvSaugEemU2Gg4c/owImNVs="; 11 + hash = "sha256-tkecrbrkwYJU0eZMzU+7rJGAn+S/vnh/rw5co0x1m5M="; 12 12 }; 13 13 14 14 buildInputs = [ sqlite zlib ]; ··· 32 32 license = licenses.bsd2; 33 33 maintainers = with maintainers; [ sikmir ]; 34 34 platforms = platforms.unix; 35 + mainProgram = "tippecanoe"; 35 36 }; 36 37 })
+36
pkgs/by-name/tr/transfer-sh/package.nix
··· 1 + { lib 2 + , fetchFromGitHub 3 + , buildGoModule 4 + , nix-update-script 5 + , nixosTests 6 + }: 7 + 8 + buildGoModule rec { 9 + pname = "transfer-sh"; 10 + version = "1.6.1"; 11 + 12 + src = fetchFromGitHub { 13 + owner = "dutchcoders"; 14 + repo = "transfer.sh"; 15 + rev = "v${version}"; 16 + hash = "sha256-V8E6RwzxKB6KeGPer5074e7y6XHn3ZD24PQMwTxw5lQ="; 17 + }; 18 + 19 + vendorHash = "sha256-C8ZfUIGT9HiQQiJ2hk18uwGaQzNCIKp/Jiz6ePZkgDQ="; 20 + 21 + passthru = { 22 + tests = { 23 + inherit (nixosTests) transfer-sh; 24 + }; 25 + updateScript = nix-update-script { }; 26 + }; 27 + 28 + meta = with lib; { 29 + description = "Easy and fast file sharing and pastebin server with access from the command-line"; 30 + homepage = "https://github.com/dutchcoders/transfer.sh"; 31 + changelog = "https://github.com/dutchcoders/transfer.sh/releases"; 32 + mainProgram = "transfer.sh"; 33 + license = licenses.mit; 34 + maintainers = with maintainers; [ ocfox pinpox ]; 35 + }; 36 + }
+2 -2
pkgs/by-name/wa/waycheck/package.nix
··· 12 12 13 13 stdenv.mkDerivation (finalAttrs: { 14 14 pname = "waycheck"; 15 - version = "1.1.0"; 15 + version = "1.1.1"; 16 16 17 17 src = fetchFromGitLab { 18 18 domain = "gitlab.freedesktop.org"; 19 19 owner = "serebit"; 20 20 repo = "waycheck"; 21 21 rev = "v${finalAttrs.version}"; 22 - hash = "sha256-y8fuy2ed2yPRiqusMZBD7mzFBDavmdByBzEaI6P5byk="; 22 + hash = "sha256-kwkdTMA15oJHz9AXEkBGeuzYdEUpNuv/xnhzoKOHCE4="; 23 23 }; 24 24 25 25 nativeBuildInputs = [
+40
pkgs/by-name/ya/yamlscript/package.nix
··· 1 + { lib, buildGraalvmNativeImage, fetchurl }: 2 + 3 + buildGraalvmNativeImage rec { 4 + pname = "yamlscript"; 5 + version = "0.1.38"; 6 + 7 + src = fetchurl { 8 + url = "https://github.com/yaml/yamlscript/releases/download/${version}/yamlscript.cli-${version}-standalone.jar"; 9 + hash = "sha256-cdRMmeJTlkEmF4jbElrXgobSU+VIvh/k9Lr9WkOSTl8="; 10 + }; 11 + 12 + executable = "ys"; 13 + 14 + extraNativeImageBuildArgs = [ 15 + "--native-image-info" 16 + "--no-fallback" 17 + "--initialize-at-build-time" 18 + "--enable-preview" 19 + "-H:+ReportExceptionStackTraces" 20 + "-H:IncludeResources=SCI_VERSION" 21 + "-H:Log=registerResource:" 22 + "-J-Dclojure.spec.skip-macros=true" 23 + "-J-Dclojure.compiler.direct-linking=true" 24 + ]; 25 + 26 + doInstallCheck = true; 27 + 28 + installCheckPhase = '' 29 + $out/bin/ys -e 'say: (+ 1 2)' | fgrep 3 30 + ''; 31 + 32 + meta = with lib; { 33 + description = "Programming in YAML"; 34 + homepage = "https://github.com/yaml/yamlscript"; 35 + sourceProvenance = with sourceTypes; [ binaryBytecode ]; 36 + license = licenses.mit; 37 + mainProgram = "ys"; 38 + maintainers = with maintainers; [ sgo ]; 39 + }; 40 + }
+5 -6
pkgs/development/compilers/sbcl/default.nix
··· 24 24 sha256 = "189gjqzdz10xh3ybiy4ch1r98bsmkcb4hpnrmggd4y2g5kqnyx4y"; 25 25 }; 26 26 27 - "2.4.0" = { 28 - sha256 = "sha256-g9i3TwjSJUxZuXkLwfZp4JCZRXuIRyDs7L9F9LRtF3Y="; 29 - }; 30 27 "2.4.1" = { 31 28 sha256 = "sha256-2k+UhvrUE9OversbCSaTJf20v/fnuI8hld3udDJjz34="; 29 + }; 30 + "2.4.2" = { 31 + sha256 = "sha256-/APLUtEqr+h1nmMoRQogG73fibFwcaToPznoC0Pd7w8="; 32 32 }; 33 33 }; 34 34 # Collection of pre-built SBCL binaries for platforms that need them for ··· 96 96 ); 97 97 buildInputs = lib.optionals coreCompression [ zstd ]; 98 98 99 - patches = [ 99 + patches = lib.optionals (lib.versionOlder self.version "2.4.2") [ 100 + # Fixed in 2.4.2 100 101 ./search-for-binaries-in-PATH.patch 101 - ] ++ lib.optionals (version == "2.4.0") [ 102 - ./fix-2.4.0-aarch64-darwin.patch 103 102 ]; 104 103 105 104 # I don’t know why these are failing (on ofBorg), and I’d rather just disable
+2 -2
pkgs/development/libraries/CGAL/default.nix
··· 8 8 9 9 stdenv.mkDerivation rec { 10 10 pname = "cgal"; 11 - version = "5.5.3"; 11 + version = "5.6.1"; 12 12 13 13 src = fetchurl { 14 14 url = "https://github.com/CGAL/cgal/releases/download/v${version}/CGAL-${version}.tar.xz"; 15 - hash = "sha256-CgT2YmkyVjKLBbq/q7XjpbfbL1pY1S48Ug350IKN3XM="; 15 + hash = "sha256-zbFefuMeBmNYnTEHp5mIo3t7FxnfPSTyBYVF0bzdWDc="; 16 16 }; 17 17 18 18 # note: optional component libCGAL_ImageIO would need zlib and opengl;
+2 -2
pkgs/development/libraries/audio/vamp-plugin-sdk/default.nix
··· 8 8 version = "2.10"; 9 9 10 10 src = fetchFromGitHub { 11 - owner = "c4dm"; 11 + owner = "vamp-plugins"; 12 12 repo = "vamp-plugin-sdk"; 13 13 rev = "vamp-plugin-sdk-v${version}"; 14 - sha256 = "1lhmskcyk7qqfikmasiw7wjry74gc8g5q6a3j1iya84yd7ll0cz6"; 14 + hash = "sha256-5jNA6WmeIOVjkEMZXB5ijxyfJT88alVndBif6dnUFdI="; 15 15 }; 16 16 17 17 nativeBuildInputs = [ pkg-config ];
+2 -2
pkgs/development/libraries/libime/default.nix
··· 29 29 in 30 30 stdenv.mkDerivation rec { 31 31 pname = "libime"; 32 - version = "1.1.5"; 32 + version = "1.1.6"; 33 33 34 34 src = fetchFromGitHub { 35 35 owner = "fcitx"; 36 36 repo = "libime"; 37 37 rev = version; 38 - hash = "sha256-AvlQOpjrHSifUtWSTft2bywlWhwka26VcqqReqAlcv8="; 38 + hash = "sha256-PhzJtAGmSkMeXMSe2uR/JKHKlZtL0e3tPDZVoRCvAis="; 39 39 fetchSubmodules = true; 40 40 }; 41 41
+2 -2
pkgs/development/libraries/nng/default.nix
··· 2 2 3 3 stdenv.mkDerivation rec { 4 4 pname = "nng"; 5 - version = "1.7.2"; 5 + version = "1.7.3"; 6 6 7 7 src = fetchFromGitHub { 8 8 owner = "nanomsg"; 9 9 repo = "nng"; 10 10 rev = "v${version}"; 11 - hash = "sha256-CG6Gw/Qrbi96koF2VxKMYPMPT2Zj9U97vNk2JdrfRro="; 11 + hash = "sha256-oP7hO3wCXNPW7877wK+HpGsw7j+U0q4i8aTRVi1v0r0="; 12 12 }; 13 13 14 14 nativeBuildInputs = [ cmake ninja ]
+2 -2
pkgs/development/libraries/xcb-imdkit/default.nix
··· 10 10 11 11 stdenv.mkDerivation rec { 12 12 pname = "xcb-imdkit"; 13 - version = "1.0.6"; 13 + version = "1.0.7"; 14 14 15 15 src = fetchFromGitHub { 16 16 owner = "fcitx"; 17 17 repo = "xcb-imdkit"; 18 18 rev = version; 19 - sha256 = "sha256-1+x4KE2xh6KWbdCBlPxDvHvcKUEj4hiW4fEPCeYfTwc="; 19 + sha256 = "sha256-trfKWCMIuYV0XyCcIsNP8LCTc0MYotXvslRvp76YnKU="; 20 20 }; 21 21 22 22 nativeBuildInputs = [
+9 -1
pkgs/development/libraries/zlog/default.nix
··· 1 - { lib, stdenv, fetchFromGitHub }: 1 + { lib, stdenv, fetchFromGitHub, fetchpatch }: 2 2 3 3 stdenv.mkDerivation rec { 4 4 version = "1.2.17"; ··· 10 10 rev = version; 11 11 sha256 = "sha256-ckpDMRLxObpl8N539DC5u2bPpmD7jM+KugurUfta6tg="; 12 12 }; 13 + 14 + patches = [ 15 + (fetchpatch { 16 + name = "CVE-2024-22857.patch"; 17 + url = "https://github.com/HardySimpson/zlog/commit/c47f781a9f1e9604f5201e27d046d925d0d48ac4.patch"; 18 + hash = "sha256-3FAAHJ2R/OpNpErWXptjEh0x370/jzvK2VhuUuyaOjE="; 19 + }) 20 + ]; 13 21 14 22 makeFlags = [ "PREFIX=${placeholder "out"}" ]; 15 23
+114 -46
pkgs/development/php-packages/psalm/composer.lock
··· 1192 1192 }, 1193 1193 { 1194 1194 "name": "symfony/console", 1195 - "version": "v7.0.3", 1195 + "version": "v6.4.4", 1196 1196 "source": { 1197 1197 "type": "git", 1198 1198 "url": "https://github.com/symfony/console.git", 1199 - "reference": "c5010d50f1ee4b25cfa0201d9915cf1b14071456" 1199 + "reference": "0d9e4eb5ad413075624378f474c4167ea202de78" 1200 1200 }, 1201 1201 "dist": { 1202 1202 "type": "zip", 1203 - "url": "https://api.github.com/repos/symfony/console/zipball/c5010d50f1ee4b25cfa0201d9915cf1b14071456", 1204 - "reference": "c5010d50f1ee4b25cfa0201d9915cf1b14071456", 1203 + "url": "https://api.github.com/repos/symfony/console/zipball/0d9e4eb5ad413075624378f474c4167ea202de78", 1204 + "reference": "0d9e4eb5ad413075624378f474c4167ea202de78", 1205 1205 "shasum": "" 1206 1206 }, 1207 1207 "require": { 1208 - "php": ">=8.2", 1208 + "php": ">=8.1", 1209 + "symfony/deprecation-contracts": "^2.5|^3", 1209 1210 "symfony/polyfill-mbstring": "~1.0", 1210 1211 "symfony/service-contracts": "^2.5|^3", 1211 - "symfony/string": "^6.4|^7.0" 1212 + "symfony/string": "^5.4|^6.0|^7.0" 1212 1213 }, 1213 1214 "conflict": { 1214 - "symfony/dependency-injection": "<6.4", 1215 - "symfony/dotenv": "<6.4", 1216 - "symfony/event-dispatcher": "<6.4", 1217 - "symfony/lock": "<6.4", 1218 - "symfony/process": "<6.4" 1215 + "symfony/dependency-injection": "<5.4", 1216 + "symfony/dotenv": "<5.4", 1217 + "symfony/event-dispatcher": "<5.4", 1218 + "symfony/lock": "<5.4", 1219 + "symfony/process": "<5.4" 1219 1220 }, 1220 1221 "provide": { 1221 1222 "psr/log-implementation": "1.0|2.0|3.0" 1222 1223 }, 1223 1224 "require-dev": { 1224 1225 "psr/log": "^1|^2|^3", 1225 - "symfony/config": "^6.4|^7.0", 1226 - "symfony/dependency-injection": "^6.4|^7.0", 1227 - "symfony/event-dispatcher": "^6.4|^7.0", 1226 + "symfony/config": "^5.4|^6.0|^7.0", 1227 + "symfony/dependency-injection": "^5.4|^6.0|^7.0", 1228 + "symfony/event-dispatcher": "^5.4|^6.0|^7.0", 1228 1229 "symfony/http-foundation": "^6.4|^7.0", 1229 1230 "symfony/http-kernel": "^6.4|^7.0", 1230 - "symfony/lock": "^6.4|^7.0", 1231 - "symfony/messenger": "^6.4|^7.0", 1232 - "symfony/process": "^6.4|^7.0", 1233 - "symfony/stopwatch": "^6.4|^7.0", 1234 - "symfony/var-dumper": "^6.4|^7.0" 1231 + "symfony/lock": "^5.4|^6.0|^7.0", 1232 + "symfony/messenger": "^5.4|^6.0|^7.0", 1233 + "symfony/process": "^5.4|^6.0|^7.0", 1234 + "symfony/stopwatch": "^5.4|^6.0|^7.0", 1235 + "symfony/var-dumper": "^5.4|^6.0|^7.0" 1235 1236 }, 1236 1237 "type": "library", 1237 1238 "autoload": { ··· 1265 1266 "terminal" 1266 1267 ], 1267 1268 "support": { 1268 - "source": "https://github.com/symfony/console/tree/v7.0.3" 1269 + "source": "https://github.com/symfony/console/tree/v6.4.4" 1269 1270 }, 1270 1271 "funding": [ 1271 1272 { ··· 1281 1282 "type": "tidelift" 1282 1283 } 1283 1284 ], 1284 - "time": "2024-01-23T15:02:46+00:00" 1285 + "time": "2024-02-22T20:27:10+00:00" 1286 + }, 1287 + { 1288 + "name": "symfony/deprecation-contracts", 1289 + "version": "v3.4.0", 1290 + "source": { 1291 + "type": "git", 1292 + "url": "https://github.com/symfony/deprecation-contracts.git", 1293 + "reference": "7c3aff79d10325257a001fcf92d991f24fc967cf" 1294 + }, 1295 + "dist": { 1296 + "type": "zip", 1297 + "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/7c3aff79d10325257a001fcf92d991f24fc967cf", 1298 + "reference": "7c3aff79d10325257a001fcf92d991f24fc967cf", 1299 + "shasum": "" 1300 + }, 1301 + "require": { 1302 + "php": ">=8.1" 1303 + }, 1304 + "type": "library", 1305 + "extra": { 1306 + "branch-alias": { 1307 + "dev-main": "3.4-dev" 1308 + }, 1309 + "thanks": { 1310 + "name": "symfony/contracts", 1311 + "url": "https://github.com/symfony/contracts" 1312 + } 1313 + }, 1314 + "autoload": { 1315 + "files": [ 1316 + "function.php" 1317 + ] 1318 + }, 1319 + "notification-url": "https://packagist.org/downloads/", 1320 + "license": [ 1321 + "MIT" 1322 + ], 1323 + "authors": [ 1324 + { 1325 + "name": "Nicolas Grekas", 1326 + "email": "p@tchwork.com" 1327 + }, 1328 + { 1329 + "name": "Symfony Community", 1330 + "homepage": "https://symfony.com/contributors" 1331 + } 1332 + ], 1333 + "description": "A generic function and convention to trigger deprecation notices", 1334 + "homepage": "https://symfony.com", 1335 + "support": { 1336 + "source": "https://github.com/symfony/deprecation-contracts/tree/v3.4.0" 1337 + }, 1338 + "funding": [ 1339 + { 1340 + "url": "https://symfony.com/sponsor", 1341 + "type": "custom" 1342 + }, 1343 + { 1344 + "url": "https://github.com/fabpot", 1345 + "type": "github" 1346 + }, 1347 + { 1348 + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 1349 + "type": "tidelift" 1350 + } 1351 + ], 1352 + "time": "2023-05-23T14:45:45+00:00" 1285 1353 }, 1286 1354 { 1287 1355 "name": "symfony/filesystem", 1288 - "version": "v7.0.3", 1356 + "version": "v6.4.3", 1289 1357 "source": { 1290 1358 "type": "git", 1291 1359 "url": "https://github.com/symfony/filesystem.git", 1292 - "reference": "2890e3a825bc0c0558526c04499c13f83e1b6b12" 1360 + "reference": "7f3b1755eb49297a0827a7575d5d2b2fd11cc9fb" 1293 1361 }, 1294 1362 "dist": { 1295 1363 "type": "zip", 1296 - "url": "https://api.github.com/repos/symfony/filesystem/zipball/2890e3a825bc0c0558526c04499c13f83e1b6b12", 1297 - "reference": "2890e3a825bc0c0558526c04499c13f83e1b6b12", 1364 + "url": "https://api.github.com/repos/symfony/filesystem/zipball/7f3b1755eb49297a0827a7575d5d2b2fd11cc9fb", 1365 + "reference": "7f3b1755eb49297a0827a7575d5d2b2fd11cc9fb", 1298 1366 "shasum": "" 1299 1367 }, 1300 1368 "require": { 1301 - "php": ">=8.2", 1369 + "php": ">=8.1", 1302 1370 "symfony/polyfill-ctype": "~1.8", 1303 1371 "symfony/polyfill-mbstring": "~1.8" 1304 1372 }, ··· 1328 1396 "description": "Provides basic utilities for the filesystem", 1329 1397 "homepage": "https://symfony.com", 1330 1398 "support": { 1331 - "source": "https://github.com/symfony/filesystem/tree/v7.0.3" 1399 + "source": "https://github.com/symfony/filesystem/tree/v6.4.3" 1332 1400 }, 1333 1401 "funding": [ 1334 1402 { ··· 1344 1412 "type": "tidelift" 1345 1413 } 1346 1414 ], 1347 - "time": "2024-01-23T15:02:46+00:00" 1415 + "time": "2024-01-23T14:51:35+00:00" 1348 1416 }, 1349 1417 { 1350 1418 "name": "symfony/polyfill-ctype", ··· 1748 1816 }, 1749 1817 { 1750 1818 "name": "symfony/string", 1751 - "version": "v7.0.3", 1819 + "version": "v6.4.4", 1752 1820 "source": { 1753 1821 "type": "git", 1754 1822 "url": "https://github.com/symfony/string.git", 1755 - "reference": "524aac4a280b90a4420d8d6a040718d0586505ac" 1823 + "reference": "4e465a95bdc32f49cf4c7f07f751b843bbd6dcd9" 1756 1824 }, 1757 1825 "dist": { 1758 1826 "type": "zip", 1759 - "url": "https://api.github.com/repos/symfony/string/zipball/524aac4a280b90a4420d8d6a040718d0586505ac", 1760 - "reference": "524aac4a280b90a4420d8d6a040718d0586505ac", 1827 + "url": "https://api.github.com/repos/symfony/string/zipball/4e465a95bdc32f49cf4c7f07f751b843bbd6dcd9", 1828 + "reference": "4e465a95bdc32f49cf4c7f07f751b843bbd6dcd9", 1761 1829 "shasum": "" 1762 1830 }, 1763 1831 "require": { 1764 - "php": ">=8.2", 1832 + "php": ">=8.1", 1765 1833 "symfony/polyfill-ctype": "~1.8", 1766 1834 "symfony/polyfill-intl-grapheme": "~1.0", 1767 1835 "symfony/polyfill-intl-normalizer": "~1.0", ··· 1771 1839 "symfony/translation-contracts": "<2.5" 1772 1840 }, 1773 1841 "require-dev": { 1774 - "symfony/error-handler": "^6.4|^7.0", 1775 - "symfony/http-client": "^6.4|^7.0", 1776 - "symfony/intl": "^6.4|^7.0", 1842 + "symfony/error-handler": "^5.4|^6.0|^7.0", 1843 + "symfony/http-client": "^5.4|^6.0|^7.0", 1844 + "symfony/intl": "^6.2|^7.0", 1777 1845 "symfony/translation-contracts": "^2.5|^3.0", 1778 - "symfony/var-exporter": "^6.4|^7.0" 1846 + "symfony/var-exporter": "^5.4|^6.0|^7.0" 1779 1847 }, 1780 1848 "type": "library", 1781 1849 "autoload": { ··· 1814 1882 "utf8" 1815 1883 ], 1816 1884 "support": { 1817 - "source": "https://github.com/symfony/string/tree/v7.0.3" 1885 + "source": "https://github.com/symfony/string/tree/v6.4.4" 1818 1886 }, 1819 1887 "funding": [ 1820 1888 { ··· 1830 1898 "type": "tidelift" 1831 1899 } 1832 1900 ], 1833 - "time": "2024-01-29T15:41:16+00:00" 1901 + "time": "2024-02-01T13:16:41+00:00" 1834 1902 }, 1835 1903 { 1836 1904 "name": "webmozart/assert", ··· 4448 4516 }, 4449 4517 { 4450 4518 "name": "symfony/process", 4451 - "version": "v7.0.3", 4519 + "version": "v6.4.4", 4452 4520 "source": { 4453 4521 "type": "git", 4454 4522 "url": "https://github.com/symfony/process.git", 4455 - "reference": "937a195147e0c27b2759ade834169ed006d0bc74" 4523 + "reference": "710e27879e9be3395de2b98da3f52a946039f297" 4456 4524 }, 4457 4525 "dist": { 4458 4526 "type": "zip", 4459 - "url": "https://api.github.com/repos/symfony/process/zipball/937a195147e0c27b2759ade834169ed006d0bc74", 4460 - "reference": "937a195147e0c27b2759ade834169ed006d0bc74", 4527 + "url": "https://api.github.com/repos/symfony/process/zipball/710e27879e9be3395de2b98da3f52a946039f297", 4528 + "reference": "710e27879e9be3395de2b98da3f52a946039f297", 4461 4529 "shasum": "" 4462 4530 }, 4463 4531 "require": { 4464 - "php": ">=8.2" 4532 + "php": ">=8.1" 4465 4533 }, 4466 4534 "type": "library", 4467 4535 "autoload": { ··· 4489 4557 "description": "Executes commands in sub-processes", 4490 4558 "homepage": "https://symfony.com", 4491 4559 "support": { 4492 - "source": "https://github.com/symfony/process/tree/v7.0.3" 4560 + "source": "https://github.com/symfony/process/tree/v6.4.4" 4493 4561 }, 4494 4562 "funding": [ 4495 4563 { ··· 4505 4573 "type": "tidelift" 4506 4574 } 4507 4575 ], 4508 - "time": "2024-01-23T15:02:46+00:00" 4576 + "time": "2024-02-20T12:31:00+00:00" 4509 4577 }, 4510 4578 { 4511 4579 "name": "theseer/tokenizer",
+1 -1
pkgs/development/php-packages/psalm/default.nix
··· 17 17 # Missing `composer.lock` from the repository. 18 18 # Issue open at https://github.com/vimeo/psalm/issues/10446 19 19 composerLock = ./composer.lock; 20 - vendorHash = "sha256-URPyV1V/8BP8fbJqyYLf+XKG786hY2BbAzUphzPyPCs="; 20 + vendorHash = "sha256-AgvAaHcCYosS3yRrp9EFdqTjg6NzQRCr8ELSza9DvZ8="; 21 21 22 22 meta = { 23 23 changelog = "https://github.com/vimeo/psalm/releases/tag/${finalAttrs.version}";
+2 -2
pkgs/development/python-modules/aioairzone-cloud/default.nix
··· 8 8 9 9 buildPythonPackage rec { 10 10 pname = "aioairzone-cloud"; 11 - version = "0.3.8"; 11 + version = "0.4.5"; 12 12 pyproject = true; 13 13 14 14 disabled = pythonOlder "3.7"; ··· 17 17 owner = "Noltari"; 18 18 repo = "aioairzone-cloud"; 19 19 rev = "refs/tags/${version}"; 20 - hash = "sha256-h9WUHehTXg73qqpw+sMxoQMzOV+io2GvjwXlr4gF2ns="; 20 + hash = "sha256-G+tzA4VEdpRFVouj8Uv7BJLgSTOO5eKkNntVL1bIzXY="; 21 21 }; 22 22 23 23 nativeBuildInputs = [
+2 -2
pkgs/development/python-modules/aioautomower/default.nix
··· 14 14 15 15 buildPythonPackage rec { 16 16 pname = "aioautomower"; 17 - version = "2024.2.9"; 17 + version = "2024.2.10"; 18 18 pyproject = true; 19 19 20 20 disabled = pythonOlder "3.11"; ··· 23 23 owner = "Thomas55555"; 24 24 repo = "aioautomower"; 25 25 rev = "refs/tags/${version}"; 26 - hash = "sha256-vjg7y+9E4R1Q7h+ao/ttuRbvui4u5hESR8tImWSO04U="; 26 + hash = "sha256-NRcLyuU5FFIKJALUrx5iVSihzgO6ljqaqlhbs+y2E4Q="; 27 27 }; 28 28 29 29 postPatch = ''
+2 -2
pkgs/development/python-modules/aiomysensors/default.nix
··· 15 15 16 16 buildPythonPackage rec { 17 17 pname = "aiomysensors"; 18 - version = "0.3.12"; 18 + version = "0.3.13"; 19 19 pyproject = true; 20 20 21 21 disabled = pythonOlder "3.9"; ··· 24 24 owner = "MartinHjelmare"; 25 25 repo = "aiomysensors"; 26 26 rev = "refs/tags/v${version}"; 27 - hash = "sha256-9M5WuBoezbZr7OwJaM0m2CqibziJVwqANGOhiJrqfxA="; 27 + hash = "sha256-2i2QodEWOZ/nih6ap5ovWuKxILB5arusnqOiOlb4xWM="; 28 28 }; 29 29 30 30 postPatch = ''
+3 -6
pkgs/development/python-modules/aiounittest/default.nix
··· 3 3 , fetchFromGitHub 4 4 , pythonAtLeast 5 5 , setuptools 6 - , nose 6 + , pynose 7 7 , coverage 8 8 , wrapt 9 9 }: ··· 12 12 pname = "aiounittest"; 13 13 version = "1.4.2"; 14 14 pyproject = true; 15 - 16 - # requires the imp module 17 - disabled = pythonAtLeast "3.12"; 18 15 19 16 src = fetchFromGitHub { 20 17 owner = "kwarunek"; ··· 32 29 ]; 33 30 34 31 nativeCheckInputs = [ 35 - nose 32 + pynose 36 33 coverage 37 34 ]; 38 35 39 36 checkPhase = '' 40 - nosetests 37 + nosetests -e test_specific_test 41 38 ''; 42 39 43 40 pythonImportsCheck = [ "aiounittest" ];
+2 -2
pkgs/development/python-modules/boto3-stubs/default.nix
··· 365 365 366 366 buildPythonPackage rec { 367 367 pname = "boto3-stubs"; 368 - version = "1.34.52"; 368 + version = "1.34.53"; 369 369 pyproject = true; 370 370 371 371 disabled = pythonOlder "3.7"; 372 372 373 373 src = fetchPypi { 374 374 inherit pname version; 375 - hash = "sha256-gjxBBZ+DbWh32qocvSD4E8jxp4uf3ykLwLhTEn4Se6M="; 375 + hash = "sha256-/zGbNI+nsNbkD2hTeClyZvk5A4wG0E4JGKpazy5TLCw="; 376 376 }; 377 377 378 378 nativeBuildInputs = [
+2 -2
pkgs/development/python-modules/botocore-stubs/default.nix
··· 9 9 10 10 buildPythonPackage rec { 11 11 pname = "botocore-stubs"; 12 - version = "1.34.52"; 12 + version = "1.34.53"; 13 13 format = "pyproject"; 14 14 15 15 disabled = pythonOlder "3.7"; ··· 17 17 src = fetchPypi { 18 18 pname = "botocore_stubs"; 19 19 inherit version; 20 - hash = "sha256-pRtsofyprNqp6AQS83FTaQ//rX7SJ3Q8xTCAmSDSoAk="; 20 + hash = "sha256-41fme2SpxtfeEOdmzSxmWJJkJXRG26bl7hwt/Ltjvlw="; 21 21 }; 22 22 23 23 nativeBuildInputs = [
+2 -2
pkgs/development/python-modules/cyclonedx-python-lib/default.nix
··· 23 23 24 24 buildPythonPackage rec { 25 25 pname = "cyclonedx-python-lib"; 26 - version = "6.4.1"; 26 + version = "6.4.2"; 27 27 pyproject = true; 28 28 29 29 disabled = pythonOlder "3.9"; ··· 32 32 owner = "CycloneDX"; 33 33 repo = "cyclonedx-python-lib"; 34 34 rev = "refs/tags/v${version}"; 35 - hash = "sha256-IhiH1Vk/Wf6cTxijxE1erkQozY+vOVd5pu6tAVUoDJM="; 35 + hash = "sha256-uDppmYJiQt2Yix5vaWYqMDbPcHOEPz2pBK11lUZ54fI="; 36 36 }; 37 37 38 38 nativeBuildInputs = [
+4
pkgs/development/python-modules/fairseq/default.nix
··· 96 96 disabledTests = [ 97 97 # this test requires xformers 98 98 "test_xformers_single_forward_parity" 99 + "test_mask_for_xformers" 99 100 # this test requires iopath 100 101 "test_file_io_async" 101 102 # these tests require network access ··· 105 106 "test_waitk_checkpoint" 106 107 "test_sotasty_es_en_600m_checkpoint" 107 108 "test_librispeech_s2t_conformer_s_checkpoint" 109 + # TODO research failure 110 + "test_multilingual_translation_latent_depth" 108 111 ]; 109 112 110 113 disabledTestPaths = [ ··· 117 120 homepage = "https://github.com/pytorch/fairseq"; 118 121 license = licenses.mit; 119 122 platforms = platforms.linux; 123 + hydraPlatforms = []; 120 124 maintainers = with maintainers; [ happysalada ]; 121 125 }; 122 126 }
+2 -2
pkgs/development/python-modules/huggingface-hub/default.nix
··· 14 14 15 15 buildPythonPackage rec { 16 16 pname = "huggingface-hub"; 17 - version = "0.21.2"; 17 + version = "0.21.3"; 18 18 pyproject = true; 19 19 20 20 disabled = pythonOlder "3.8"; ··· 23 23 owner = "huggingface"; 24 24 repo = "huggingface_hub"; 25 25 rev = "refs/tags/v${version}"; 26 - hash = "sha256-0Nr6qs9rzuBQo8SGuQ2Ai2Q+E+Gs4DT/AMrYf7dYM/E="; 26 + hash = "sha256-DtKb/mR01vifclDalZiZV4/A4XpTKBcT9bCiLZkRCZY="; 27 27 }; 28 28 29 29 nativeBuildInputs = [
+8 -7
pkgs/development/python-modules/jaxtyping/default.nix
··· 3 3 , pythonOlder 4 4 , fetchFromGitHub 5 5 , hatchling 6 + , pythonRelaxDepsHook 6 7 , numpy 7 8 , typeguard 8 9 , typing-extensions ··· 19 20 let 20 21 self = buildPythonPackage rec { 21 22 pname = "jaxtyping"; 22 - version = "0.2.25"; 23 + version = "0.2.26"; 23 24 pyproject = true; 24 25 25 26 disabled = pythonOlder "3.9"; ··· 28 29 owner = "google"; 29 30 repo = "jaxtyping"; 30 31 rev = "refs/tags/v${version}"; 31 - hash = "sha256-+JqpI5xrM7o73LG6oMix88Jr5aptmWYjJQcqUNo7icg="; 32 + hash = "sha256-2QDTRNH2/9FPU5xrQx7yZRHwEWqj0PUNzcCuKwY4yNg="; 32 33 }; 33 34 34 - postPatch = '' 35 - substituteInPlace pyproject.toml \ 36 - --replace "typeguard>=2.13.3,<3" "typeguard" 37 - ''; 38 - 39 35 nativeBuildInputs = [ 40 36 hatchling 37 + pythonRelaxDepsHook 41 38 ]; 42 39 43 40 propagatedBuildInputs = [ 44 41 numpy 45 42 typeguard 46 43 typing-extensions 44 + ]; 45 + 46 + pythonRelaxDeps = [ 47 + "typeguard" 47 48 ]; 48 49 49 50 nativeCheckInputs = [
+4
pkgs/development/python-modules/mmengine/default.nix
··· 69 69 disabledTestPaths = [ 70 70 # AttributeError 71 71 "tests/test_fileio/test_backends/test_petrel_backend.py" 72 + # Freezes forever? 73 + "tests/test_runner/test_activation_checkpointing.py" 74 + # missing dependencies 75 + "tests/test_visualizer/test_vis_backend.py" 72 76 ]; 73 77 74 78 disabledTests = [
+2 -2
pkgs/development/python-modules/openai/default.nix
··· 26 26 27 27 buildPythonPackage rec { 28 28 pname = "openai"; 29 - version = "1.13.2"; 29 + version = "1.13.3"; 30 30 pyproject = true; 31 31 32 32 disabled = pythonOlder "3.7.1"; ··· 35 35 owner = "openai"; 36 36 repo = "openai-python"; 37 37 rev = "refs/tags/v${version}"; 38 - hash = "sha256-3otPmMVV/Wx7k/oec5c1r6GcZGzhMSKifJB8S5nBSZw="; 38 + hash = "sha256-8SHXUrPLZ7lgvB0jqZlcvKq5Zv2d2UqXjJpgiBpR8P8="; 39 39 }; 40 40 41 41 nativeBuildInputs = [
+2 -2
pkgs/development/python-modules/py-serializable/default.nix
··· 11 11 12 12 buildPythonPackage rec { 13 13 pname = "py-serializable"; 14 - version = "1.0.1"; 14 + version = "1.0.2"; 15 15 pyproject = true; 16 16 17 17 disabled = pythonOlder "3.8"; ··· 20 20 owner = "madpah"; 21 21 repo = "serializable"; 22 22 rev = "refs/tags/v${version}"; 23 - hash = "sha256-OsgFzT5qGyszO4jFYWIAgGY41s0ZBEMwCbWZeY189h4="; 23 + hash = "sha256-RhipoPTewPaYwspTnywLr5FvFVUaFixfRQk6aUMvB4w="; 24 24 }; 25 25 26 26 nativeBuildInputs = [
+2 -2
pkgs/development/python-modules/pyctr/default.nix
··· 7 7 8 8 buildPythonPackage rec { 9 9 pname = "pyctr"; 10 - version = "0.7.4"; 10 + version = "0.7.5"; 11 11 format = "setuptools"; 12 12 13 13 disabled = pythonOlder "3.7"; 14 14 15 15 src = fetchPypi { 16 16 inherit pname version; 17 - hash = "sha256-1nPP+rz/8BiFHu3nGcHuqCPwyyR55LUhoBprHFTudWQ="; 17 + hash = "sha256-fiDJWcypFabnUoS313f56ypDuDrLASHrkk0Em8bymmw="; 18 18 }; 19 19 20 20 propagatedBuildInputs = [
+2 -2
pkgs/development/python-modules/pyoverkiz/default.nix
··· 16 16 17 17 buildPythonPackage rec { 18 18 pname = "pyoverkiz"; 19 - version = "1.13.7"; 19 + version = "1.13.8"; 20 20 format = "pyproject"; 21 21 22 22 disabled = pythonOlder "3.7"; ··· 25 25 owner = "iMicknl"; 26 26 repo = "python-overkiz-api"; 27 27 rev = "refs/tags/v${version}"; 28 - hash = "sha256-wH4LCfjnxAwub/BCe27osyJVUZSOMDjjxItv0aEa8Ic="; 28 + hash = "sha256-tvS7aPfBTs75Rq1WGslWDMv1pOTVt7MtwpXPRJtqbuk="; 29 29 }; 30 30 31 31 postPatch = ''
+2 -2
pkgs/development/python-modules/python-heatclient/default.nix
··· 21 21 22 22 buildPythonPackage rec { 23 23 pname = "python-heatclient"; 24 - version = "3.4.0"; 24 + version = "3.5.0"; 25 25 format = "setuptools"; 26 26 27 27 disabled = pythonOlder "3.8"; 28 28 29 29 src = fetchPypi { 30 30 inherit pname version; 31 - hash = "sha256-ggfhDJW2qn0o4Wi5cdPsEpoHb9miZbr4Ba8mgLkStvI="; 31 + hash = "sha256-B1F40HYHFF91mkxwySR/kqCvlwLLtBgqwUvw2byOc9g="; 32 32 }; 33 33 34 34 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.4.0"; 23 + version = "5.5.0"; 24 24 format = "setuptools"; 25 25 26 26 src = fetchPypi { 27 27 inherit pname version; 28 - hash = "sha256-Q9yGuYf9TS7RCo9aV1hnNSrHoll7AOUiSpzRYxi+JXU="; 28 + hash = "sha256-JlO487QSPsBJZqPYRhsQYFA7noIN2q/stH4eZXAFLnY="; 29 29 }; 30 30 31 31 propagatedBuildInputs = [
+32
pkgs/development/python-modules/python-matter-server/default.nix
··· 2 2 , buildPythonPackage 3 3 , fetchFromGitHub 4 4 , pythonOlder 5 + , stdenvNoCC 6 + , substituteAll 5 7 6 8 # build 7 9 , setuptools ··· 28 30 , pytestCheckHook 29 31 }: 30 32 33 + let 34 + paaCerts = stdenvNoCC.mkDerivation rec { 35 + pname = "matter-server-paa-certificates"; 36 + version = "1.2.0.1"; 37 + 38 + src = fetchFromGitHub { 39 + owner = "project-chip"; 40 + repo = "connectedhomeip"; 41 + rev = "refs/tags/v${version}"; 42 + hash = "sha256-p3P0n5oKRasYz386K2bhN3QVfN6oFndFIUWLEUWB0ss="; 43 + }; 44 + 45 + installPhase = '' 46 + runHook preInstall 47 + 48 + mkdir -p $out 49 + cp $src/credentials/development/paa-root-certs/* $out/ 50 + 51 + runHook postInstall 52 + ''; 53 + }; 54 + in 55 + 31 56 buildPythonPackage rec { 32 57 pname = "python-matter-server"; 33 58 version = "5.7.0b2"; ··· 41 66 rev = "refs/tags/${version}"; 42 67 hash = "sha256-fMtvVizHeAzLdou0U1tqbmQATIBLK4w9I7EwMlzB8QA="; 43 68 }; 69 + 70 + patches = [ 71 + (substituteAll { 72 + src = ./link-paa-root-certs.patch; 73 + paacerts = paaCerts; 74 + }) 75 + ]; 44 76 45 77 postPatch = '' 46 78 substituteInPlace pyproject.toml \
+2 -2
pkgs/development/python-modules/python-novaclient/default.nix
··· 17 17 18 18 buildPythonPackage rec { 19 19 pname = "python-novaclient"; 20 - version = "18.4.0"; 20 + version = "18.5.0"; 21 21 format = "setuptools"; 22 22 23 23 disabled = pythonOlder "3.8"; 24 24 25 25 src = fetchPypi { 26 26 inherit pname version; 27 - hash = "sha256-a2tq4sEescEI469V6qchGw/JGZk1oimmuj4N5RTBK1A="; 27 + hash = "sha256-4j7kQMDI6uK1OvqIHTCsrsBof8660kY5HsKblsVDA40="; 28 28 }; 29 29 30 30 propagatedBuildInputs = [
+2 -2
pkgs/development/python-modules/python-swiftclient/default.nix
··· 12 12 13 13 buildPythonPackage rec { 14 14 pname = "python-swiftclient"; 15 - version = "4.4.0"; 15 + version = "4.5.0"; 16 16 format = "setuptools"; 17 17 18 18 disabled = pythonOlder "3.6"; 19 19 20 20 src = fetchPypi { 21 21 inherit pname version; 22 - hash = "sha256-p32Xqw5AEsZ4cy5XW9/u0oKzSJuRdegsRqR6yEke7oQ="; 22 + hash = "sha256-8qCIflo5KXq8BDJRrj+QiRTOFEei+NLcpWcWGGCBQr0="; 23 23 }; 24 24 25 25 # remove duplicate script that will be created by setuptools from the
+10 -11
pkgs/development/python-modules/remotezip/default.nix
··· 1 1 { lib 2 2 , buildPythonPackage 3 3 , fetchFromGitHub 4 + , setuptools 4 5 , requests 5 6 , tabulate 6 7 , pytestCheckHook 7 8 , requests-mock 8 9 }: 9 10 10 - buildPythonPackage { 11 + buildPythonPackage rec { 11 12 pname = "remotezip"; 12 - version = "0.12.2"; 13 - format = "setuptools"; 13 + version = "0.12.3"; 14 + pyproject = true; 14 15 15 16 src = fetchFromGitHub { 16 17 owner = "gtsystem"; 17 18 repo = "python-remotezip"; 18 - # upstream does not tag releases, determined with git blame 19 - # pypi archive lacks files for tests 20 - rev = "3723724d6d877d3166d52f4528ffa7bd5bf6627f"; 21 - hash = "sha256-iYxHW8RdLFrpjkcEvpfF/NWBnw7Dd5cx2ghpof2XFn4="; 19 + rev = "refs/tags/v${version}"; 20 + hash = "sha256-TNEM7Dm4iH4Z/P/PAqjJppbn1CKmyi9Xpq/sU9O8uxg="; 22 21 }; 23 22 23 + nativeBuildInputs = [ 24 + setuptools 25 + ]; 26 + 24 27 propagatedBuildInputs = [ 25 28 requests 26 - tabulate 27 29 ]; 28 30 29 31 nativeCheckInputs = [ 30 32 pytestCheckHook 31 - ]; 32 - 33 - checkInputs = [ 34 33 requests-mock 35 34 ]; 36 35
+2 -2
pkgs/development/python-modules/spyder-kernels/default.nix
··· 14 14 15 15 buildPythonPackage rec { 16 16 pname = "spyder-kernels"; 17 - version = "2.5.0"; 17 + version = "2.5.1"; 18 18 format = "setuptools"; 19 19 20 20 disabled = pythonOlder "3.7"; 21 21 22 22 src = fetchPypi { 23 23 inherit pname version; 24 - hash = "sha256-M2hCbARFfgIRiE6SdPpH61ViUrpMBz3ydeg8Zd97oqE="; 24 + hash = "sha256-BQQqP5eyXxfN+o11AR/Xmq8CdSM0ip3/8PWiC92wubA="; 25 25 }; 26 26 27 27 propagatedBuildInputs = [
+2 -2
pkgs/development/python-modules/tencentcloud-sdk-python/default.nix
··· 9 9 10 10 buildPythonPackage rec { 11 11 pname = "tencentcloud-sdk-python"; 12 - version = "3.0.1094"; 12 + version = "3.0.1098"; 13 13 pyproject = true; 14 14 15 15 disabled = pythonOlder "3.9"; ··· 18 18 owner = "TencentCloud"; 19 19 repo = "tencentcloud-sdk-python"; 20 20 rev = "refs/tags/${version}"; 21 - hash = "sha256-h2p9auD8bTDbagAmjsmV06Z75I93LB6h+/ZYyt17ow0="; 21 + hash = "sha256-5BG5WizkBP/KYHS00v949uQgiCChR3DWW0MnMXRBDAs="; 22 22 }; 23 23 24 24 nativeBuildInputs = [
+15 -7
pkgs/development/python-modules/textnets/default.nix
··· 1 1 { lib 2 2 , buildPythonPackage 3 3 , cairocffi 4 - , cython 4 + , cython_3 5 5 , fetchPypi 6 6 , igraph 7 7 , leidenalg ··· 9 9 , poetry-core 10 10 , pytestCheckHook 11 11 , pythonOlder 12 + , pythonRelaxDepsHook 12 13 , scipy 13 14 , setuptools 14 15 , spacy ··· 21 22 22 23 buildPythonPackage rec { 23 24 pname = "textnets"; 24 - version = "0.9.3"; 25 + version = "0.9.4"; 25 26 format = "pyproject"; 26 27 27 28 disabled = pythonOlder "3.8"; 28 29 29 30 src = fetchPypi { 30 31 inherit pname version; 31 - hash = "sha256-fx2S43IqpSMsfJow26jB/D27dyUFQ1PlXP1rbUIZPPQ="; 32 + hash = "sha256-4154ytzo1QpwhKA1BkVMss9fNIkysnClW/yfSVlX33M="; 32 33 }; 33 34 34 35 nativeBuildInputs = [ 35 - cython 36 + pythonRelaxDepsHook 37 + cython_3 36 38 poetry-core 37 39 setuptools 38 40 ]; 39 41 42 + pythonRelaxDeps = [ "igraph" "leidenalg" ]; 43 + 40 44 propagatedBuildInputs = [ 41 45 cairocffi 42 46 igraph ··· 59 63 "textnets" 60 64 ]; 61 65 66 + # Enables the package to find the cythonized .so files during testing. See #255262 67 + preCheck = '' 68 + rm -r textnets 69 + ''; 70 + 62 71 disabledTests = [ 63 - # Test fails: A warning is triggered because of a deprecation notice by pandas. 64 - # TODO: Try to re-enable it when pandas is updated to 2.1.1 65 - "test_corpus_czech" 72 + # Test fails: Throws a UserWarning asking the user to install `textnets[fca]`. 73 + "test_context" 66 74 ]; 67 75 68 76 meta = with lib; {
+2 -2
pkgs/development/python-modules/transformers/default.nix
··· 53 53 54 54 buildPythonPackage rec { 55 55 pname = "transformers"; 56 - version = "4.38.1"; 56 + version = "4.38.2"; 57 57 format = "setuptools"; 58 58 59 59 disabled = pythonOlder "3.8"; ··· 62 62 owner = "huggingface"; 63 63 repo = "transformers"; 64 64 rev = "refs/tags/v${version}"; 65 - hash = "sha256-92WmvSFZYCCG4qJprPT7clYa7ePuvyaCvxni/spDhSw="; 65 + hash = "sha256-/rt2XHN46NcFwlM9MOygVvpQkfPVu2eCNybYmSj711M="; 66 66 }; 67 67 68 68 propagatedBuildInputs = [
+2 -2
pkgs/development/python-modules/types-awscrt/default.nix
··· 7 7 8 8 buildPythonPackage rec { 9 9 pname = "types-awscrt"; 10 - version = "0.20.4"; 10 + version = "0.20.5"; 11 11 pyproject = true; 12 12 13 13 disabled = pythonOlder "3.7"; ··· 15 15 src = fetchPypi { 16 16 pname = "types_awscrt"; 17 17 inherit version; 18 - hash = "sha256-ECRVcMcoXpSTYrSucQxUvyhdZKJ0U9QnYkd7zuXNd6M="; 18 + hash = "sha256-YYEbv03pUkiTn5J2pDS+k9K5X2zP6KqU5WmZ6XeM/MI="; 19 19 }; 20 20 21 21 nativeBuildInputs = [
+2 -2
pkgs/development/python-modules/types-pyopenssl/default.nix
··· 6 6 7 7 buildPythonPackage rec { 8 8 pname = "types-pyopenssl"; 9 - version = "24.0.0.20240130"; 9 + version = "24.0.0.20240228"; 10 10 format = "setuptools"; 11 11 12 12 src = fetchPypi { 13 13 pname = "types-pyOpenSSL"; 14 14 inherit version; 15 - hash = "sha256-yBLlwcNSSfde9ZNXCLKpl9Yqv5dFviIuX5S5WVRyqyU="; 15 + hash = "sha256-zZkHF9iqN0PvDnPg9GLmS1TZDDBCSSMtSP7OTw98PGo="; 16 16 }; 17 17 18 18 propagatedBuildInputs = [
+8 -9
pkgs/development/python-modules/uncertainties/default.nix
··· 1 - { lib, fetchPypi, buildPythonPackage 2 - , nose, numpy, future 3 - , pythonOlder 1 + { lib 2 + , buildPythonPackage 3 + , fetchPypi 4 + , future 5 + , numpy 6 + , pynose 4 7 }: 5 8 6 9 buildPythonPackage rec { ··· 14 17 }; 15 18 16 19 propagatedBuildInputs = [ future ]; 17 - 18 - # uses removed lib2to3.tests 19 - doCheck = pythonOlder "3.12"; 20 - 21 - nativeCheckInputs = [ nose numpy ]; 20 + nativeCheckInputs = [ pynose numpy ]; 22 21 23 22 checkPhase = '' 24 - nosetests -sv 23 + nosetests -sve test_1to2 25 24 ''; 26 25 27 26 meta = with lib; {
+2 -2
pkgs/development/python-modules/weconnect/default.nix
··· 12 12 13 13 buildPythonPackage rec { 14 14 pname = "weconnect"; 15 - version = "0.60.1"; 15 + version = "0.60.2"; 16 16 pyproject = true; 17 17 18 18 disabled = pythonOlder "3.8"; ··· 21 21 owner = "tillsteinbach"; 22 22 repo = "WeConnect-python"; 23 23 rev = "refs/tags/v${version}"; 24 - hash = "sha256-hvV4pbCyzAbi3bKXClzpiyhp+4qnuIj5pViUe7pEq64="; 24 + hash = "sha256-VM4qCe+VMnfKXioUHTjOeBSniwpq44fvbN1k1jG6puk="; 25 25 }; 26 26 27 27 postPatch = ''
+2 -2
pkgs/development/r-modules/default.nix
··· 405 405 rjags = [ pkgs.jags ]; 406 406 rJava = with pkgs; [ zlib bzip2.dev icu xz.dev pcre.dev jdk libzip ]; 407 407 Rlibeemd = [ pkgs.gsl ]; 408 - rmatio = [ pkgs.zlib.dev ]; 408 + rmatio = [ pkgs.zlib.dev pkgs.pkg-config ]; 409 409 Rmpfr = with pkgs; [ gmp mpfr.dev ]; 410 410 Rmpi = [ pkgs.mpi ]; 411 411 RMySQL = with pkgs; [ zlib libmysqlclient openssl.dev ]; ··· 946 946 cargoDeps = pkgs.rustPlatform.fetchCargoTarball { 947 947 src = attrs.src; 948 948 sourceRoot = "gifski/src/myrustlib"; 949 - hash = "sha256-vBrTQ+5JZA8554Aasbqw7mbaOfJNQjrOpG00IXAcamI="; 949 + hash = "sha256-e6nuiQU22GiO2I+bu0muyICGrdkCLSZUDHDz2mM2hz0="; 950 950 }; 951 951 952 952 cargoRoot = "src/myrustlib";
+3 -3
pkgs/development/tools/analysis/snyk/default.nix
··· 2 2 3 3 buildNpmPackage rec { 4 4 pname = "snyk"; 5 - version = "1.1280.1"; 5 + version = "1.1281.0"; 6 6 7 7 src = fetchFromGitHub { 8 8 owner = "snyk"; 9 9 repo = "cli"; 10 10 rev = "v${version}"; 11 - hash = "sha256-bwEekB/jifSRktblvq98C3t2xSTTPn4NOftQs/T090U="; 11 + hash = "sha256-QxmYArH9HRq2vkGzfhWlCPLS++UiwdzAStUQxhGF85Q="; 12 12 }; 13 13 14 - npmDepsHash = "sha256-TtWc+Zy6yMHbDdsw5rVKK+RiCZ8ZuXyU+SfcPRgToiA="; 14 + npmDepsHash = "sha256-JxX4r1I/F3PEzg9rLfFNEIa4Q8jwuUWC6krH1oSoc8s="; 15 15 16 16 postPatch = '' 17 17 substituteInPlace package.json --replace '"version": "1.0.0-monorepo"' '"version": "${version}"'
+9
pkgs/development/tools/build-managers/apache-maven/build-package.nix
··· 13 13 , mvnFetchExtraArgs ? { } 14 14 , mvnDepsParameters ? "" 15 15 , manualMvnArtifacts ? [ ] 16 + , manualMvnSources ? [ ] 16 17 , mvnParameters ? "" 17 18 , ... 18 19 } @args: ··· 38 39 do 39 40 echo "downloading manual $artifactId" 40 41 mvn dependency:get -Dartifact="$artifactId" -Dmaven.repo.local=$out/.m2 42 + done 43 + 44 + for artifactId in ${builtins.toString manualMvnSources} 45 + do 46 + group=$(echo $artifactId | cut -d':' -f1) 47 + artifact=$(echo $artifactId | cut -d':' -f2) 48 + echo "downloading manual sources $artifactId" 49 + mvn dependency:sources -DincludeGroupIds="$group" -DincludeArtifactIds="$artifact" -Dmaven.repo.local=$out/.m2 41 50 done 42 51 '' + lib.optionalString (!buildOffline) '' 43 52 mvn package -Dmaven.repo.local=$out/.m2 ${mvnParameters}
+3 -3
pkgs/development/tools/documentation/mdsh/default.nix pkgs/by-name/md/mdsh/package.nix
··· 2 2 3 3 rustPlatform.buildRustPackage rec { 4 4 pname = "mdsh"; 5 - version = "0.7.0"; 5 + version = "0.8.0"; 6 6 7 7 src = fetchFromGitHub { 8 8 owner = "zimbatm"; 9 9 repo = "mdsh"; 10 10 rev = "v${version}"; 11 - hash = "sha256-Y8ss/aw01zpgM6Z6fCGshP21kcdSOTVG/VqL8H3tlls="; 11 + hash = "sha256-ammLbKEKXDSuZMr4DwPpcRSkKh7BzNC+4ZRCqTNNCQk="; 12 12 }; 13 13 14 - cargoSha256 = "sha256-8o4gN6mqUU+o80IqlAYAD5qpZBSQ/FY5HoNbpwzTm0A="; 14 + cargoHash = "sha256-wLHMccxk3ceZyGK27t5Kyal48yj9dQNgmEHjH9hR9Pc="; 15 15 16 16 meta = with lib; { 17 17 description = "Markdown shell pre-processor";
+2 -2
pkgs/development/tools/language-servers/ruff-lsp/default.nix
··· 16 16 17 17 buildPythonPackage rec { 18 18 pname = "ruff-lsp"; 19 - version = "0.0.52"; 19 + version = "0.0.53"; 20 20 pyproject = true; 21 21 disabled = pythonOlder "3.7"; 22 22 ··· 24 24 owner = "astral-sh"; 25 25 repo = "ruff-lsp"; 26 26 rev = "refs/tags/v${version}"; 27 - hash = "sha256-T18c0vKy/RUWiDjX2oScVxgVIhlj7t3M/+IoKsQ0N4w="; 27 + hash = "sha256-gtMqIsgGCzSBo5D4+Ne8tUloDV9+MufYkN96yr7XVd4="; 28 28 }; 29 29 30 30 postPatch = ''
+3 -3
pkgs/development/tools/misc/act/default.nix
··· 5 5 6 6 buildGoModule rec { 7 7 pname = "act"; 8 - version = "0.2.59"; 8 + version = "0.2.60"; 9 9 10 10 src = fetchFromGitHub { 11 11 owner = "nektos"; 12 12 repo = pname; 13 13 rev = "refs/tags/v${version}"; 14 - hash = "sha256-Y8g+eVZ0c0YPVL8E/JAqD6EheQX6sBHpw1tT88BkbtI="; 14 + hash = "sha256-FFSnxxqKAFYPuX4NJahiBS65Goj6se2U5WdPiKpNXDo="; 15 15 }; 16 16 17 - vendorHash = "sha256-0Sjj9+YJcIkigvJOXxtDVcUylZmVY/Xv/IYpEBN46Is="; 17 + vendorHash = "sha256-FLomnHVhpvbM+O3OGwjXfrtTVbegnzry8Sl+4a3uw08="; 18 18 19 19 doCheck = false; 20 20
+2 -2
pkgs/development/tools/misc/devspace/default.nix
··· 7 7 8 8 buildGoModule rec { 9 9 pname = "devspace"; 10 - version = "6.3.11"; 10 + version = "6.3.12"; 11 11 12 12 src = fetchFromGitHub { 13 13 owner = "devspace-sh"; 14 14 repo = "devspace"; 15 15 rev = "v${version}"; 16 - hash = "sha256-g+M34y7GTbQ8FyO4BieNYgo68ZE5x3hyXiMJrx6Nqug="; 16 + hash = "sha256-tnkMXB0BWavSZF3HEdvtCE42zgcHNRGI5CdK3RDvv9c="; 17 17 }; 18 18 19 19 vendorHash = null;
+2 -2
pkgs/development/tools/misc/kool/default.nix
··· 7 7 8 8 buildGoModule rec { 9 9 pname = "kool"; 10 - version = "3.1.0"; 10 + version = "3.2.0"; 11 11 12 12 src = fetchFromGitHub { 13 13 owner = "kool-dev"; 14 14 repo = "kool"; 15 15 rev = version; 16 - hash = "sha256-apecHILrtvzD1bAOuyhSokDqBB2UgCavQXOw4dQSPwc="; 16 + hash = "sha256-oMPzDU5MNIgxg7E2lgvgXEfO4W+VrFlLThOC9OEqhWo="; 17 17 }; 18 18 19 19 vendorHash = "sha256-PmS96KVhe9TDmtYBx2hROLCbGMQ0OY3MN405dUmxPzk=";
+2 -2
pkgs/development/tools/mold/default.nix
··· 23 23 24 24 stdenv.mkDerivation rec { 25 25 pname = "mold"; 26 - version = "2.4.0"; 26 + version = "2.4.1"; 27 27 28 28 src = fetchFromGitHub { 29 29 owner = "rui314"; 30 30 repo = "mold"; 31 31 rev = "v${version}"; 32 - hash = "sha256-ufqTbY59AI1MrY/vrsDg5a4WEVz9IFTdgl1GHMw9HGc="; 32 + hash = "sha256-wwlpYAWP8sAsEkTq0w3s2jAWGayW3v9QcaVRKWHTlGE="; 33 33 }; 34 34 35 35 nativeBuildInputs = [
+2 -2
pkgs/development/tools/oh-my-posh/default.nix
··· 6 6 7 7 buildGoModule rec { 8 8 pname = "oh-my-posh"; 9 - version = "19.11.4"; 9 + version = "19.11.6"; 10 10 11 11 src = fetchFromGitHub { 12 12 owner = "jandedobbeleer"; 13 13 repo = pname; 14 14 rev = "refs/tags/v${version}"; 15 - hash = "sha256-xViCmfLhvRWi02hFIxKZ+5mrvoSaHRXFj4iLHtVS3uo="; 15 + hash = "sha256-wo8ngZ/rWugYESc1/0WjOa8Zs6aEfXv7VJ7fqqbmSCE="; 16 16 }; 17 17 18 18 vendorHash = "sha256-OkcwcQfI1CeKIQaaS/Bd1Hct2yebp0TB98lsGAVRWqk=";
+2 -2
pkgs/development/tools/open-policy-agent/default.nix
··· 11 11 12 12 buildGoModule rec { 13 13 pname = "open-policy-agent"; 14 - version = "0.61.0"; 14 + version = "0.62.0"; 15 15 16 16 src = fetchFromGitHub { 17 17 owner = "open-policy-agent"; 18 18 repo = "opa"; 19 19 rev = "v${version}"; 20 - hash = "sha256-d0/S9XP/W6Mhs1b9IBzm7kerb6SJ7UzsYS0DnTDVfvY="; 20 + hash = "sha256-Afaa6ykGyZQGjzSDYuJ954LF0IOzRDG8rV9hgXVT7YE="; 21 21 }; 22 22 23 23 vendorHash = null;
+2 -2
pkgs/development/tools/pip-audit/default.nix
··· 5 5 6 6 python3.pkgs.buildPythonApplication rec { 7 7 pname = "pip-audit"; 8 - version = "2.7.1"; 8 + version = "2.7.2"; 9 9 format = "pyproject"; 10 10 11 11 src = fetchFromGitHub { 12 12 owner = "trailofbits"; 13 13 repo = pname; 14 14 rev = "refs/tags/v${version}"; 15 - hash = "sha256-3OqF4xgRWzX4m4WW2B+cUuHJpNzf2L033ZXwGH0K4b0="; 15 + hash = "sha256-IlIPLuHGmnmt6FgX+Psw+f6XpkuhP+BZ+e4k4DV8e/U="; 16 16 }; 17 17 18 18 nativeBuildInputs = with python3.pkgs; [
+3 -3
pkgs/development/tools/rain/default.nix
··· 7 7 8 8 buildGoModule rec { 9 9 pname = "rain"; 10 - version = "1.7.5"; 10 + version = "1.8.0"; 11 11 12 12 src = fetchFromGitHub { 13 13 owner = "aws-cloudformation"; 14 14 repo = pname; 15 15 rev = "v${version}"; 16 - sha256 = "sha256-UAh84LM7QbIdxuPGN+lsbjVLd+hk8NXqwDxcRv5FAdY="; 16 + sha256 = "sha256-kU+eNw27jv+yhBIR09zVRedZM5WSIMU68jCkIDWvhgw="; 17 17 }; 18 18 19 - vendorHash = "sha256-kd820Qe/0gN34VnX9Ge4BLeI3yySunJNjOVJXBe/M58="; 19 + vendorHash = "sha256-Ea83gPSq7lReS2KXejY9JlDDEncqS1ouVyIEKbn+VAw="; 20 20 21 21 subPackages = [ "cmd/rain" ]; 22 22
+3 -3
pkgs/development/tools/rust/cargo-chef/default.nix
··· 2 2 3 3 rustPlatform.buildRustPackage rec { 4 4 pname = "cargo-chef"; 5 - version = "0.1.64"; 5 + version = "0.1.65"; 6 6 7 7 src = fetchCrate { 8 8 inherit pname version; 9 - sha256 = "sha256-TjmtL/0rr/rJPdWSjL6zD3H49Qhg6YE7irS1xjyc3OA="; 9 + sha256 = "sha256-3G2mgQDSj+IL6gqdhr3Sov9FHwLA6B+MRazLNF+zKZk="; 10 10 }; 11 11 12 - cargoHash = "sha256-1SZZva0b7/0FGqZO4RL5gMnpG+xZwKqLU1Fgv54ewNM="; 12 + cargoHash = "sha256-hWkUvUFYAOqRkoU52bKzEmvNaqASfWLlnWtIuFLMDc8="; 13 13 14 14 meta = with lib; { 15 15 description = "A cargo-subcommand to speed up Rust Docker builds using Docker layer caching";
+2 -2
pkgs/development/tools/upbound/default.nix
··· 2 2 3 3 buildGoModule rec { 4 4 pname = "upbound"; 5 - version = "0.24.1"; 5 + version = "0.24.2"; 6 6 7 7 src = fetchFromGitHub { 8 8 owner = pname; 9 9 repo = "up"; 10 10 rev = "v${version}"; 11 - sha256 = "sha256-1WSkNL1XpgnkWeL4tDiOxoKX6N5LYepD3DU0109pWC4="; 11 + sha256 = "sha256-MDpe5CM5pgbrdVozh1yXiALLd8BkhrtNjL/su2JubcE="; 12 12 }; 13 13 14 14 vendorHash = "sha256-jHVwI5fQbS/FhRptRXtNezG1djaZKHJgpPJfuEH/zO0=";
+2 -2
pkgs/development/web/twitter-bootstrap/default.nix
··· 6 6 7 7 stdenv.mkDerivation (finalAttrs: { 8 8 pname = "bootstrap"; 9 - version = "5.3.2"; 9 + version = "5.3.3"; 10 10 11 11 src = fetchurl { 12 12 url = "https://github.com/twbs/bootstrap/releases/download/v${finalAttrs.version}/bootstrap-${finalAttrs.version}-dist.zip"; 13 - hash = "sha256-hUlReGqLkaBeQ9DyIATFyddhdeFv1vUNeTnnsBhMPgk="; 13 + hash = "sha256-WwokWrhFiVFmjSn9FJ/GyOY8Z2l378I4IqIjwIJF3ho="; 14 14 }; 15 15 16 16 nativeBuildInputs = [ unzip ];
-39
pkgs/games/lgames/ltris/default.nix
··· 1 - { lib 2 - , stdenv 3 - , fetchurl 4 - , SDL 5 - , SDL_mixer 6 - , directoryListingUpdater 7 - }: 8 - 9 - stdenv.mkDerivation rec { 10 - pname = "ltris"; 11 - version = "1.2.7"; 12 - 13 - src = fetchurl { 14 - url = "mirror://sourceforge/lgames/${pname}-${version}.tar.gz"; 15 - hash = "sha256-EpHGpkLQa57hU6wKLnhVosmD6DnGGPGilN8E2ClSXLA="; 16 - }; 17 - 18 - buildInputs = [ 19 - SDL 20 - SDL_mixer 21 - ]; 22 - 23 - hardeningDisable = [ "format" ]; 24 - 25 - passthru.updateScript = directoryListingUpdater { 26 - inherit pname version; 27 - url = "https://lgames.sourceforge.io/LTris/"; 28 - extraRegex = "(?!.*-win(32|64)).*"; 29 - }; 30 - 31 - meta = with lib; { 32 - homepage = "https://lgames.sourceforge.io/LTris/"; 33 - description = "Tetris clone from the LGames series"; 34 - license = licenses.gpl2Plus; 35 - maintainers = with maintainers; [ AndersonTorres ciil ]; 36 - inherit (SDL.meta) platforms; 37 - broken = stdenv.isDarwin; 38 - }; 39 - }
+11 -2
pkgs/kde/gear/akonadi/default.nix
··· 1 1 { 2 + lib, 2 3 mkKdeDerivation, 3 4 qttools, 4 5 accounts-qt, 5 6 kaccounts-integration, 6 7 shared-mime-info, 7 8 xz, 9 + mariadb, 8 10 }: 9 11 mkKdeDerivation { 10 12 pname = "akonadi"; 11 13 12 - # FIXME(later): investigate nixpkgs patches 14 + patches = [ 15 + # Always regenerate MySQL config, as the store paths don't have accurate timestamps 16 + ./ignore-mysql-config-timestamp.patch 17 + ]; 18 + 19 + extraCmakeFlags = [ 20 + "-DMYSQLD_SCRIPTS_PATH=${lib.getBin mariadb}/bin" 21 + ]; 13 22 14 23 extraNativeBuildInputs = [qttools shared-mime-info]; 15 - extraBuildInputs = [kaccounts-integration accounts-qt xz]; 24 + extraBuildInputs = [kaccounts-integration accounts-qt xz mariadb]; 16 25 }
+12
pkgs/kde/gear/akonadi/ignore-mysql-config-timestamp.patch
··· 1 + --- a/src/server/storage/dbconfigmysql.cpp 2 + +++ b/src/server/storage/dbconfigmysql.cpp 3 + @@ -241,8 +241,7 @@ bool DbConfigMysql::startInternalServer() 4 + bool confUpdate = false; 5 + QFile actualFile(actualConfig); 6 + // update conf only if either global (or local) is newer than actual 7 + - if ((QFileInfo(globalConfig).lastModified() > QFileInfo(actualFile).lastModified()) 8 + - || (QFileInfo(localConfig).lastModified() > QFileInfo(actualFile).lastModified())) { 9 + + if (true) { 10 + QFile globalFile(globalConfig); 11 + QFile localFile(localConfig); 12 + if (globalFile.open(QFile::ReadOnly) && actualFile.open(QFile::WriteOnly)) {
+48 -3
pkgs/kde/plasma/oxygen/default.nix
··· 1 - {mkKdeDerivation}: 1 + { 2 + mkKdeDerivation, 3 + qtbase, 4 + libsForQt5, 5 + }: 2 6 mkKdeDerivation { 3 7 pname = "oxygen"; 4 - # FIXME(qt5) 5 - meta.broken = true; 8 + 9 + outputs = ["out" "dev" "qt5"]; 10 + 11 + # We can't add qt5 stuff to dependencies or the hooks blow up, 12 + # so manually point everything to everything. Oof. 13 + extraCmakeFlags = [ 14 + "-DQt5_DIR=${libsForQt5.qtbase.dev}/lib/cmake/Qt5" 15 + "-DQt5Core_DIR=${libsForQt5.qtbase.dev}/lib/cmake/Qt5Core" 16 + "-DQt5DBus_DIR=${libsForQt5.qtbase.dev}/lib/cmake/Qt5DBus" 17 + "-DQt5Gui_DIR=${libsForQt5.qtbase.dev}/lib/cmake/Qt5Gui" 18 + "-DQt5Network_DIR=${libsForQt5.qtbase.dev}/lib/cmake/Qt5Network" 19 + "-DQt5Qml_DIR=${libsForQt5.qtdeclarative.dev}/lib/cmake/Qt5Qml" 20 + "-DQt5QmlModels_DIR=${libsForQt5.qtdeclarative.dev}/lib/cmake/Qt5QmlModels" 21 + "-DQt5Quick_DIR=${libsForQt5.qtdeclarative.dev}/lib/cmake/Qt5Quick" 22 + "-DQt5Widgets_DIR=${libsForQt5.qtbase.dev}/lib/cmake/Qt5Widgets" 23 + "-DQt5X11Extras_DIR=${libsForQt5.qtx11extras.dev}/lib/cmake/Qt5X11Extras" 24 + "-DQt5Xml_DIR=${libsForQt5.qtbase.dev}/lib/cmake/Qt5Xml" 25 + 26 + "-DKF5Auth_DIR=${libsForQt5.kauth.dev}/lib/cmake/KF5Auth" 27 + "-DKF5Codecs_DIR=${libsForQt5.kcodecs.dev}/lib/cmake/KF5Codecs" 28 + "-DKF5Config_DIR=${libsForQt5.kconfig.dev}/lib/cmake/KF5Config" 29 + "-DKF5ConfigWidgets_DIR=${libsForQt5.kconfigwidgets.dev}/lib/cmake/KF5ConfigWidgets" 30 + "-DKF5Completion_DIR=${libsForQt5.kcompletion.dev}/lib/cmake/KF5Completion" 31 + "-DKF5CoreAddons_DIR=${libsForQt5.kcoreaddons.dev}/lib/cmake/KF5CoreAddons" 32 + "-DKF5FrameworkIntegration_DIR=${libsForQt5.frameworkintegration.dev}/lib/cmake/KF5FrameworkIntegration" 33 + "-DKF5GuiAddons_DIR=${libsForQt5.kguiaddons.dev}/lib/cmake/KF5GuiAddons" 34 + "-DKF5IconThemes_DIR=${libsForQt5.kiconthemes.dev}/lib/cmake/KF5IconThemes" 35 + "-DKF5I18n_DIR=${libsForQt5.ki18n.dev}/lib/cmake/KF5I18n" 36 + "-DKF5Kirigami2_DIR=${libsForQt5.kirigami2.dev}/lib/cmake/KF5Kirigami2" 37 + "-DKF5Service_DIR=${libsForQt5.kservice.dev}/lib/cmake/KF5Service" 38 + "-DKF5WidgetsAddons_DIR=${libsForQt5.kwidgetsaddons.dev}/lib/cmake/KF5WidgetsAddons" 39 + "-DKF5WindowSystem_DIR=${libsForQt5.kwindowsystem.dev}/lib/cmake/KF5WindowSystem" 40 + ]; 41 + 42 + # Move Qt5 plugin to Qt5 plugin path 43 + postInstall = '' 44 + mkdir -p $qt5/${libsForQt5.qtbase.qtPluginPrefix}/styles 45 + mv $out/${qtbase.qtPluginPrefix}/styles/oxygen5.so $qt5/${libsForQt5.qtbase.qtPluginPrefix}/styles 46 + 47 + moveToOutput bin/oxygen-demo5 $qt5 48 + moveToOutput 'lib/liboxygenstyle5*' $qt5 49 + moveToOutput 'lib/liboxygenstyleconfig5*' $qt5 50 + ''; 6 51 }
+2 -2
pkgs/os-specific/linux/intel-cmt-cat/default.nix
··· 1 1 { lib, stdenv, fetchFromGitHub }: 2 2 3 3 stdenv.mkDerivation rec { 4 - version = "23.11"; 4 + version = "23.11.1"; 5 5 pname = "intel-cmt-cat"; 6 6 7 7 src = fetchFromGitHub { 8 8 owner = "intel"; 9 9 repo = "intel-cmt-cat"; 10 10 rev = "v${version}"; 11 - sha256 = "sha256-/OSU/7QR8NAjcAIo+unVQfORvCH5VpjfRn5sIrCxwbE="; 11 + sha256 = "sha256-cBsbXua3uOqzElkLcLrOnNXXukGn5zRF8ytWa9VzGdE="; 12 12 }; 13 13 14 14 enableParallelBuilding = true;
+14 -14
pkgs/os-specific/linux/kernel/kernels-org.json
··· 4 4 "hash": "sha256:03ci53snbv917ccyjdm3xzl2fwijq5da7nkg05dpwb99wrzp8fkd" 5 5 }, 6 6 "6.1": { 7 - "version": "6.1.79", 8 - "hash": "sha256:16xkd0hcslqlcf55d4ivzhf1fkhfs5yy0m9arbax8pmm5yi9r97s" 7 + "version": "6.1.80", 8 + "hash": "sha256:0wdnyy7m9kfkl98id0gm6jzp4aa0hfy6gfkb4k4cg1wbpfpcm3jn" 9 9 }, 10 10 "5.15": { 11 - "version": "5.15.149", 12 - "hash": "sha256:1c01fnaghj55mkgsgddznq1zq4mswsa05rz00kmh1d3y6sd8115x" 11 + "version": "5.15.150", 12 + "hash": "sha256:1m74cwsbjwlamxh8vdg2y9jjzk0h7a40adml2p2wszwf8lmmj1gf" 13 13 }, 14 14 "5.10": { 15 - "version": "5.10.210", 16 - "hash": "sha256:0vggj3a71awc1w803cdzrnkn88rxr7l1xh9mmdcw9hzxj1d3r9jf" 15 + "version": "5.10.211", 16 + "hash": "sha256:1cir36s369fl6s46x16xnjg0wdlnkipsp2zhz11m9d3z205hly1s" 17 17 }, 18 18 "5.4": { 19 - "version": "5.4.269", 20 - "hash": "sha256:1kqqm4hpif3jy2ycnb0dfjgzyn18vqhm1i5q7d7rkisks33bwm7z" 19 + "version": "5.4.270", 20 + "hash": "sha256:0svnkpivv5w9b2yyg0z607b84f591d401gxvr8s7kmzdxadhcjqs" 21 21 }, 22 22 "4.19": { 23 - "version": "4.19.307", 24 - "hash": "sha256:0lp3fc7sqy48vpcl2g0n1bz7i1hp9k0nlz3i1xfh9l056ihzzvl3" 23 + "version": "4.19.308", 24 + "hash": "sha256:1j81zdx75m48rvqacw4xlcb13vkvlx0pfq4kdfxrsdfl7wfcwl9a" 25 25 }, 26 26 "6.6": { 27 - "version": "6.6.18", 28 - "hash": "sha256:07cv97l5jiakmmv35n0ganvqfr0590b02f3qb617qkx1zg2xhhsf" 27 + "version": "6.6.19", 28 + "hash": "sha256:16hk8y3pw40hahhpnpxjwhprq6hlblavr45pglpb3d62f9mpwqxm" 29 29 }, 30 30 "6.7": { 31 - "version": "6.7.6", 32 - "hash": "sha256:1lrp7pwnxnqyy8c2l4n4nz997039gbnssrfm8ss8kl3h2c7fr2g4" 31 + "version": "6.7.7", 32 + "hash": "sha256:1n8lgf814mfslca51pm3nh4icvv1lb5w5l1sxdkf5nqdax28nsr5" 33 33 } 34 34 }
+3 -3
pkgs/os-specific/linux/kernel/linux-rt-6.1.nix
··· 6 6 , ... } @ args: 7 7 8 8 let 9 - version = "6.1.77-rt24"; # updated by ./update-rt.sh 9 + version = "6.1.79-rt25"; # updated by ./update-rt.sh 10 10 branch = lib.versions.majorMinor version; 11 11 kversion = builtins.elemAt (lib.splitString "-" version) 0; 12 12 in buildLinux (args // { ··· 18 18 19 19 src = fetchurl { 20 20 url = "mirror://kernel/linux/kernel/v6.x/linux-${kversion}.tar.xz"; 21 - sha256 = "07grng6rrgpy6c3465hwqhn3gcdam1c8rwya30vgpk8nfxbfqm1v"; 21 + sha256 = "16xkd0hcslqlcf55d4ivzhf1fkhfs5yy0m9arbax8pmm5yi9r97s"; 22 22 }; 23 23 24 24 kernelPatches = let rt-patch = { 25 25 name = "rt"; 26 26 patch = fetchurl { 27 27 url = "mirror://kernel/linux/kernel/projects/rt/${branch}/older/patch-${version}.patch.xz"; 28 - sha256 = "194fdr89020igfdcfwdrfrl3rn51aannadr5x4yhd7p4cma0iq0a"; 28 + sha256 = "1q851lhbdcxipzxzqkyp6wv4g437kgf8yj24n2x4rkbny9vgz220"; 29 29 }; 30 30 }; in [ rt-patch ] ++ kernelPatches; 31 31
+3 -3
pkgs/os-specific/linux/kernel/linux-rt-6.6.nix
··· 6 6 , ... } @ args: 7 7 8 8 let 9 - version = "6.6.15-rt22"; # updated by ./update-rt.sh 9 + version = "6.6.18-rt23"; # updated by ./update-rt.sh 10 10 branch = lib.versions.majorMinor version; 11 11 kversion = builtins.elemAt (lib.splitString "-" version) 0; 12 12 in buildLinux (args // { ··· 18 18 19 19 src = fetchurl { 20 20 url = "mirror://kernel/linux/kernel/v6.x/linux-${kversion}.tar.xz"; 21 - sha256 = "1ajzby6isqji1xlp660m4qj2i2xs003vsjp1jspziwl7hrzhqadb"; 21 + sha256 = "07cv97l5jiakmmv35n0ganvqfr0590b02f3qb617qkx1zg2xhhsf"; 22 22 }; 23 23 24 24 kernelPatches = let rt-patch = { 25 25 name = "rt"; 26 26 patch = fetchurl { 27 27 url = "mirror://kernel/linux/kernel/projects/rt/${branch}/older/patch-${version}.patch.xz"; 28 - sha256 = "0dr4lb6f95vj8vzhlvy353dk6k694f1s6qfxr10m48hzyyqyaxdy"; 28 + sha256 = "03950miwqscgnxa5x8mdx5vyyfv8hjk0g8v24b65vl48sfh8nnv8"; 29 29 }; 30 30 }; in [ rt-patch ] ++ kernelPatches; 31 31
+7 -9
pkgs/os-specific/linux/nvidia-x11/default.nix
··· 68 68 # Vulkan developer beta driver 69 69 # See here for more information: https://developer.nvidia.com/vulkan-driver 70 70 vulkan_beta = generic rec { 71 - version = "535.43.28"; 72 - persistencedVersion = "535.98"; 73 - settingsVersion = "535.98"; 74 - sha256_64bit = "sha256-ic7r3MPp65fdEwqDRyc0WiKonL5eF6KZUpfD/C3vYaU="; 75 - openSha256 = "sha256-a5iccyISHheOfTwpsrz6puqrVhgzYWFvNlykVG3+PVc="; 76 - settingsSha256 = "sha256-jCRfeB1w6/dA27gaz6t5/Qo7On0zbAPIi74LYLel34s="; 77 - persistencedSha256 = "sha256-WviDU6B50YG8dO64CGvU3xK8WFUX8nvvVYm/fuGyroM="; 71 + version = "550.40.53"; 72 + persistencedVersion = "550.54.14"; 73 + settingsVersion = "550.54.14"; 74 + sha256_64bit = "sha256-ZA5pb1xjzDyEBrf3UYHta4T9laCOCW7LHJwhcdjw6MA="; 75 + openSha256 = "sha256-p4FL0j9Ev4SJ3YcjfhFLxbMbc77dBblkrTYK50+OYqA="; 76 + settingsSha256 = "sha256-m2rNASJp0i0Ez2OuqL+JpgEF0Yd8sYVCyrOoo/ln2a4="; 77 + persistencedSha256 = "sha256-XaPN8jVTjdag9frLPgBtqvO/goB5zxeGzaTU0CdL6C4="; 78 78 url = "https://developer.nvidia.com/downloads/vulkan-beta-${lib.concatStrings (lib.splitVersion version)}-linux"; 79 - 80 - patches = [ rcu_patch ]; 81 79 }; 82 80 83 81 # data center driver compatible with current default cudaPackages
+2 -2
pkgs/os-specific/linux/zfs/generic.nix
··· 234 234 235 235 inherit maintainers; 236 236 mainProgram = "zfs"; 237 - # If your Linux kernel version is not yet supported by zfs, try zfsUnstable. 238 - # On NixOS set the option boot.zfs.enableUnstable. 237 + # If your Linux kernel version is not yet supported by zfs, try zfs_unstable. 238 + # On NixOS set the option `boot.zfs.package = pkgs.zfs_unstable`. 239 239 broken = buildKernel && (kernelCompatible != null) && !kernelCompatible; 240 240 }; 241 241 };
+2 -2
pkgs/os-specific/linux/zfs/stable.nix pkgs/os-specific/linux/zfs/2_2.nix
··· 12 12 callPackage ./generic.nix args { 13 13 # You have to ensure that in `pkgs/top-level/linux-kernels.nix` 14 14 # this attribute is the correct one for this package. 15 - kernelModuleAttribute = "zfs"; 15 + kernelModuleAttribute = "zfs_2_2"; 16 16 # check the release notes for compatible kernels 17 17 kernelCompatible = kernel.kernelOlder "6.8"; 18 18 ··· 23 23 24 24 tests = [ 25 25 nixosTests.zfs.installer 26 - nixosTests.zfs.stable 26 + nixosTests.zfs.series_2_2 27 27 ]; 28 28 29 29 hash = "sha256-Bzkow15OitUUQ+mTYhCXgTrQl+ao/B4feleHY/rSSjg=";
+1 -1
pkgs/os-specific/linux/zfs/unstable.nix
··· 12 12 callPackage ./generic.nix args { 13 13 # You have to ensure that in `pkgs/top-level/linux-kernels.nix` 14 14 # this attribute is the correct one for this package. 15 - kernelModuleAttribute = "zfsUnstable"; 15 + kernelModuleAttribute = "zfs_unstable"; 16 16 # check the release notes for compatible kernels 17 17 kernelCompatible = kernel.kernelOlder "6.9"; 18 18
+2 -2
pkgs/servers/gortr/default.nix
··· 5 5 6 6 buildGoModule rec { 7 7 pname = "gortr"; 8 - version = "0.14.8"; 8 + version = "0.15.0"; 9 9 10 10 src = fetchFromGitHub { 11 11 owner = "cloudflare"; 12 12 repo = pname; 13 13 rev = "v${version}"; 14 - sha256 = "sha256-3aZf5HINoFIJrN+196kk1lt2S+fN9DlQakwGnkMU5U8="; 14 + sha256 = "sha256-W6+zCLPcORGcRJF0F6/LRPap4SNVn/oKGs21T4nSNO0="; 15 15 }; 16 16 17 17 vendorHash = null;
+2 -2
pkgs/servers/nextcloud/default.nix
··· 55 55 }; 56 56 57 57 nextcloud28 = generic { 58 - version = "28.0.2"; 59 - hash = "sha256-3jTWuvPszqz90TjoVSDNheHSzmeY2f+keKwX6x76HQg="; 58 + version = "28.0.3"; 59 + hash = "sha256-ntQTwN4W9bAzzu/8ypnA1h/GmNvrjbhRrJrfnu+VGQY="; 60 60 packages = nextcloud28Packages; 61 61 }; 62 62
+2 -2
pkgs/servers/sickbeard/sickgear.nix
··· 4 4 pythonEnv = python3.withPackages(ps: with ps; [ cheetah3 lxml ]); 5 5 in stdenv.mkDerivation rec { 6 6 pname = "sickgear"; 7 - version = "3.30.10"; 7 + version = "3.30.11"; 8 8 9 9 src = fetchFromGitHub { 10 10 owner = "SickGear"; 11 11 repo = "SickGear"; 12 12 rev = "release_${version}"; 13 - hash = "sha256-pTcetcZ62rHMcnplteTJQkuEIQrPUKdX+cSV5V4ZqA4="; 13 + hash = "sha256-o5JEjKv/7TN+BCmjxVZeOcHm5FDPMg4zM6GUeO9uZUo="; 14 14 }; 15 15 16 16 patches = [
+2 -2
pkgs/servers/sql/rqlite/default.nix
··· 5 5 6 6 buildGoModule rec { 7 7 pname = "rqlite"; 8 - version = "8.21.3"; 8 + version = "8.22.1"; 9 9 10 10 src = fetchFromGitHub { 11 11 owner = "rqlite"; 12 12 repo = pname; 13 13 rev = "v${version}"; 14 - sha256 = "sha256-YnCa0gv+loI+PeQHZWar7GpEhqvQo1AwIj5LGTol3k0="; 14 + sha256 = "sha256-g5W+rHD4gUS82E+wFLQ3VTSwIWQUogwTutwPTtf+IdM="; 15 15 }; 16 16 17 17 vendorHash = "sha256-onR4n6ok6y9APRwGjBoMISbidGDVw19D48TkogRp1uM=";
+2 -2
pkgs/shells/fish/plugins/forgit.nix
··· 2 2 3 3 buildFishPlugin rec { 4 4 pname = "forgit"; 5 - version = "24.02.0"; 5 + version = "24.03.0"; 6 6 7 7 src = fetchFromGitHub { 8 8 owner = "wfxr"; 9 9 repo = "forgit"; 10 10 rev = version; 11 - hash = "sha256-DoOtrnEJwSxkCZtsVek+3w9RZH7j7LTvdleBC88xyfI="; 11 + hash = "sha256-E8zL5HPUHhb3V03yTIF6IQ83bmqrrRt0KHxYbmtzCQ4="; 12 12 }; 13 13 14 14 postInstall = ''
+37
pkgs/test/nixpkgs-check-by-name/Cargo.lock
··· 299 299 "itertools", 300 300 "lazy_static", 301 301 "regex", 302 + "relative-path", 302 303 "rnix", 303 304 "rowan", 304 305 "serde", 305 306 "serde_json", 306 307 "temp-env", 307 308 "tempfile", 309 + "textwrap", 308 310 ] 309 311 310 312 [[package]] ··· 393 395 checksum = "e5ea92a5b6195c6ef2a0295ea818b312502c6fc94dde986c5553242e18fd4ce2" 394 396 395 397 [[package]] 398 + name = "relative-path" 399 + version = "1.9.2" 400 + source = "registry+https://github.com/rust-lang/crates.io-index" 401 + checksum = "e898588f33fdd5b9420719948f9f2a32c922a246964576f71ba7f24f80610fbc" 402 + 403 + [[package]] 396 404 name = "rnix" 397 405 version = "0.11.0" 398 406 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 483 491 checksum = "942b4a808e05215192e39f4ab80813e599068285906cc91aa64f923db842bd5a" 484 492 485 493 [[package]] 494 + name = "smawk" 495 + version = "0.3.2" 496 + source = "registry+https://github.com/rust-lang/crates.io-index" 497 + checksum = "b7c388c1b5e93756d0c740965c41e8822f866621d41acbdf6336a6a168f8840c" 498 + 499 + [[package]] 486 500 name = "strsim" 487 501 version = "0.10.0" 488 502 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 528 542 checksum = "f18aa187839b2bdb1ad2fa35ead8c4c2976b64e4363c386d45ac0f7ee85c9233" 529 543 530 544 [[package]] 545 + name = "textwrap" 546 + version = "0.16.1" 547 + source = "registry+https://github.com/rust-lang/crates.io-index" 548 + checksum = "23d434d3f8967a09480fb04132ebe0a3e088c173e6d0ee7897abbdf4eab0f8b9" 549 + dependencies = [ 550 + "smawk", 551 + "unicode-linebreak", 552 + "unicode-width", 553 + ] 554 + 555 + [[package]] 531 556 name = "unicode-ident" 532 557 version = "1.0.11" 533 558 source = "registry+https://github.com/rust-lang/crates.io-index" 534 559 checksum = "301abaae475aa91687eb82514b328ab47a211a533026cb25fc3e519b86adfc3c" 560 + 561 + [[package]] 562 + name = "unicode-linebreak" 563 + version = "0.1.5" 564 + source = "registry+https://github.com/rust-lang/crates.io-index" 565 + checksum = "3b09c83c3c29d37506a3e260c08c03743a6bb66a9cd432c6934ab501a190571f" 566 + 567 + [[package]] 568 + name = "unicode-width" 569 + version = "0.1.11" 570 + source = "registry+https://github.com/rust-lang/crates.io-index" 571 + checksum = "e51733f11c9c4f72aa0c160008246859e340b00807569a0da0e7a1079b27ba85" 535 572 536 573 [[package]] 537 574 name = "utf8parse"
+3 -1
pkgs/test/nixpkgs-check-by-name/Cargo.toml
··· 15 15 colored = "2.0.4" 16 16 itertools = "0.11.0" 17 17 rowan = "0.15.11" 18 + indoc = "2.0.4" 19 + relative-path = "1.9.2" 20 + textwrap = "0.16.1" 18 21 19 22 [dev-dependencies] 20 23 temp-env = "0.3.5" 21 - indoc = "2.0.4"
+137 -52
pkgs/test/nixpkgs-check-by-name/src/eval.rs
··· 1 + use crate::nix_file::CallPackageArgumentInfo; 1 2 use crate::nixpkgs_problem::NixpkgsProblem; 2 3 use crate::ratchet; 4 + use crate::ratchet::RatchetState::Loose; 5 + use crate::ratchet::RatchetState::Tight; 3 6 use crate::structure; 4 7 use crate::utils; 5 8 use crate::validation::ResultIteratorExt as _; 6 9 use crate::validation::{self, Validation::Success}; 7 10 use crate::NixFileStore; 11 + use relative_path::RelativePathBuf; 8 12 use std::path::Path; 9 13 10 14 use anyhow::Context; ··· 51 55 pub column: usize, 52 56 } 53 57 58 + impl Location { 59 + // Returns the [file] field, but relative to Nixpkgs 60 + fn relative_file(&self, nixpkgs_path: &Path) -> anyhow::Result<RelativePathBuf> { 61 + let path = self.file.strip_prefix(nixpkgs_path).with_context(|| { 62 + format!( 63 + "The file ({}) is outside Nixpkgs ({})", 64 + self.file.display(), 65 + nixpkgs_path.display() 66 + ) 67 + })?; 68 + Ok(RelativePathBuf::from_path(path).expect("relative path")) 69 + } 70 + } 71 + 54 72 #[derive(Deserialize)] 55 73 pub enum AttributeVariant { 56 74 /// The attribute is not an attribute set, we're limited in the amount of information we can get ··· 163 181 Attribute::NonByName(non_by_name_attribute) => handle_non_by_name_attribute( 164 182 nixpkgs_path, 165 183 nix_file_store, 184 + &attribute_name, 166 185 non_by_name_attribute, 167 186 )?, 168 187 Attribute::ByName(by_name_attribute) => by_name( ··· 195 214 use ByNameAttribute::*; 196 215 197 216 let relative_package_file = structure::relative_file_for_package(attribute_name); 198 - let absolute_package_file = nixpkgs_path.join(&relative_package_file); 199 217 200 218 // At this point we know that `pkgs/by-name/fo/foo/package.nix` has to exists. 201 219 // This match decides whether the attribute `foo` is defined accordingly ··· 276 294 // We should expect manual definitions to have a location, otherwise we can't 277 295 // enforce the expected format 278 296 if let Some(location) = location { 279 - // Parse the Nix file in the location and figure out whether it's an 280 - // attribute definition of the form `= callPackage <arg1> <arg2>`, 297 + // Parse the Nix file in the location 298 + let nix_file = nix_file_store.get(&location.file)?; 299 + 300 + // The relative path of the Nix file, for error messages 301 + let relative_location_file = location.relative_file(nixpkgs_path).with_context(|| { 302 + format!("Failed to resolve the file where attribute {attribute_name} is defined") 303 + })?; 304 + 305 + // Figure out whether it's an attribute definition of the form `= callPackage <arg1> <arg2>`, 281 306 // returning the arguments if so. 282 - let optional_syntactic_call_package = nix_file_store 283 - .get(&location.file)? 284 - .call_package_argument_info_at( 285 - location.line, 286 - location.column, 287 - // We're passing `pkgs/by-name/fo/foo/package.nix` here, which causes 288 - // the function to verify that `<arg1>` is the same path, 289 - // making `syntactic_call_package.relative_path` end up as `""` 290 - // TODO: This is confusing and should be improved 291 - &absolute_package_file, 292 - )?; 307 + let (optional_syntactic_call_package, definition) = nix_file 308 + .call_package_argument_info_at(location.line, location.column, nixpkgs_path) 309 + .with_context(|| { 310 + format!("Failed to get the definition info for attribute {attribute_name}") 311 + })?; 293 312 294 - // At this point, we completed two different checks for whether it's a 295 - // `callPackage` 296 - match (is_semantic_call_package, optional_syntactic_call_package) { 297 - // Something like `<attr> = { ... }` 298 - // or a `pkgs.callPackage` but with the wrong file 299 - (false, None) 300 - // Something like `<attr> = pythonPackages.callPackage ./pkgs/by-name/...` 301 - | (false, Some(_)) 302 - // Something like `<attr> = bar` where `bar = pkgs.callPackage ...` 303 - // or a `callPackage` but with the wrong file 304 - | (true, None) => { 305 - // All of these are not of the expected form, so error out 306 - // TODO: Make error more specific, don't lump everything together 307 - NixpkgsProblem::WrongCallPackage { 308 - relative_package_file: relative_package_file.to_owned(), 309 - package_name: attribute_name.to_owned(), 310 - }.into() 311 - } 312 - // Something like `<attr> = pkgs.callPackage ./pkgs/by-name/...`, 313 - // with the correct file 314 - (true, Some(syntactic_call_package)) => { 315 - Success( 316 - // Manual definitions with empty arguments are not allowed 317 - // anymore 318 - if syntactic_call_package.empty_arg { 319 - Loose(()) 320 - } else { 321 - Tight 322 - } 323 - ) 324 - } 325 - } 313 + by_name_override( 314 + attribute_name, 315 + relative_package_file, 316 + is_semantic_call_package, 317 + optional_syntactic_call_package, 318 + definition, 319 + location, 320 + relative_location_file, 321 + ) 326 322 } else { 327 323 // If manual definitions don't have a location, it's likely `mapAttrs`'d 328 324 // over, e.g. if it's defined in aliases.nix. ··· 350 346 ) 351 347 } 352 348 349 + /// Handles the case for packages in `pkgs/by-name` that are manually overridden, e.g. in 350 + /// all-packages.nix 351 + fn by_name_override( 352 + attribute_name: &str, 353 + expected_package_file: RelativePathBuf, 354 + is_semantic_call_package: bool, 355 + optional_syntactic_call_package: Option<CallPackageArgumentInfo>, 356 + definition: String, 357 + location: Location, 358 + relative_location_file: RelativePathBuf, 359 + ) -> validation::Validation<ratchet::RatchetState<ratchet::ManualDefinition>> { 360 + // At this point, we completed two different checks for whether it's a 361 + // `callPackage` 362 + match (is_semantic_call_package, optional_syntactic_call_package) { 363 + // Something like `<attr> = foo` 364 + (_, None) => NixpkgsProblem::NonSyntacticCallPackage { 365 + package_name: attribute_name.to_owned(), 366 + file: relative_location_file, 367 + line: location.line, 368 + column: location.column, 369 + definition, 370 + } 371 + .into(), 372 + // Something like `<attr> = pythonPackages.callPackage ...` 373 + (false, Some(_)) => NixpkgsProblem::NonToplevelCallPackage { 374 + package_name: attribute_name.to_owned(), 375 + file: relative_location_file, 376 + line: location.line, 377 + column: location.column, 378 + definition, 379 + } 380 + .into(), 381 + // Something like `<attr> = pkgs.callPackage ...` 382 + (true, Some(syntactic_call_package)) => { 383 + if let Some(actual_package_file) = syntactic_call_package.relative_path { 384 + if actual_package_file != expected_package_file { 385 + // Wrong path 386 + NixpkgsProblem::WrongCallPackagePath { 387 + package_name: attribute_name.to_owned(), 388 + file: relative_location_file, 389 + line: location.line, 390 + actual_path: actual_package_file, 391 + expected_path: expected_package_file, 392 + } 393 + .into() 394 + } else { 395 + // Manual definitions with empty arguments are not allowed 396 + // anymore, but existing ones should continue to be allowed 397 + let manual_definition_ratchet = if syntactic_call_package.empty_arg { 398 + // This is the state to migrate away from 399 + Loose(NixpkgsProblem::EmptyArgument { 400 + package_name: attribute_name.to_owned(), 401 + file: relative_location_file, 402 + line: location.line, 403 + column: location.column, 404 + definition, 405 + }) 406 + } else { 407 + // This is the state to migrate to 408 + Tight 409 + }; 410 + 411 + Success(manual_definition_ratchet) 412 + } 413 + } else { 414 + // No path 415 + NixpkgsProblem::NonPath { 416 + package_name: attribute_name.to_owned(), 417 + file: relative_location_file, 418 + line: location.line, 419 + column: location.column, 420 + definition, 421 + } 422 + .into() 423 + } 424 + } 425 + } 426 + } 427 + 353 428 /// Handles the evaluation result for an attribute _not_ in `pkgs/by-name`, 354 429 /// turning it into a validation result. 355 430 fn handle_non_by_name_attribute( 356 431 nixpkgs_path: &Path, 357 432 nix_file_store: &mut NixFileStore, 433 + attribute_name: &str, 358 434 non_by_name_attribute: NonByNameAttribute, 359 435 ) -> validation::Result<ratchet::Package> { 360 436 use ratchet::RatchetState::*; ··· 405 481 location: Some(location), 406 482 }) = non_by_name_attribute { 407 483 408 - // Parse the Nix file in the location and figure out whether it's an 409 - // attribute definition of the form `= callPackage <arg1> <arg2>`, 484 + // Parse the Nix file in the location 485 + let nix_file = nix_file_store.get(&location.file)?; 486 + 487 + // The relative path of the Nix file, for error messages 488 + let relative_location_file = location.relative_file(nixpkgs_path).with_context(|| { 489 + format!("Failed to resolve the file where attribute {attribute_name} is defined") 490 + })?; 491 + 492 + // Figure out whether it's an attribute definition of the form `= callPackage <arg1> <arg2>`, 410 493 // returning the arguments if so. 411 - let optional_syntactic_call_package = nix_file_store 412 - .get(&location.file)? 494 + let (optional_syntactic_call_package, _definition) = nix_file 413 495 .call_package_argument_info_at( 414 496 location.line, 415 497 location.column, ··· 417 499 // strips the absolute Nixpkgs path from it, such that 418 500 // syntactic_call_package.relative_path is relative to Nixpkgs 419 501 nixpkgs_path 420 - )?; 502 + ) 503 + .with_context(|| { 504 + format!("Failed to get the definition info for attribute {attribute_name}") 505 + })?; 421 506 422 507 // At this point, we completed two different checks for whether it's a 423 508 // `callPackage` ··· 453 538 _ => { 454 539 // Otherwise, the path is outside `pkgs/by-name`, which means it can be 455 540 // migrated 456 - Loose(syntactic_call_package) 541 + Loose((syntactic_call_package, relative_location_file)) 457 542 } 458 543 } 459 544 }
+68 -41
pkgs/test/nixpkgs-check-by-name/src/main.rs
··· 1 1 use crate::nix_file::NixFileStore; 2 + use std::panic; 2 3 mod eval; 3 4 mod nix_file; 4 5 mod nixpkgs_problem; ··· 17 18 use std::io; 18 19 use std::path::{Path, PathBuf}; 19 20 use std::process::ExitCode; 21 + use std::thread; 20 22 21 23 /// Program to check the validity of pkgs/by-name 22 24 /// ··· 46 48 47 49 fn main() -> ExitCode { 48 50 let args = Args::parse(); 49 - match process(&args.base, &args.nixpkgs, false, &mut io::stderr()) { 50 - Ok(true) => { 51 - eprintln!("{}", "Validated successfully".green()); 52 - ExitCode::SUCCESS 53 - } 54 - Ok(false) => { 55 - eprintln!("{}", "Validation failed, see above errors".yellow()); 56 - ExitCode::from(1) 57 - } 51 + match process(args.base, args.nixpkgs, false, &mut io::stderr()) { 52 + Ok(true) => ExitCode::SUCCESS, 53 + Ok(false) => ExitCode::from(1), 58 54 Err(e) => { 59 55 eprintln!("{} {:#}", "I/O error: ".yellow(), e); 60 56 ExitCode::from(2) ··· 77 73 /// - `Ok(false)` if there are problems, all of which will be written to `error_writer`. 78 74 /// - `Ok(true)` if there are no problems 79 75 pub fn process<W: io::Write>( 80 - base_nixpkgs: &Path, 81 - main_nixpkgs: &Path, 76 + base_nixpkgs: PathBuf, 77 + main_nixpkgs: PathBuf, 82 78 keep_nix_path: bool, 83 79 error_writer: &mut W, 84 80 ) -> anyhow::Result<bool> { 85 - // Check the main Nixpkgs first 86 - let main_result = check_nixpkgs(main_nixpkgs, keep_nix_path, error_writer)?; 87 - let check_result = main_result.result_map(|nixpkgs_version| { 88 - // If the main Nixpkgs doesn't have any problems, run the ratchet checks against the base 89 - // Nixpkgs 90 - check_nixpkgs(base_nixpkgs, keep_nix_path, error_writer)?.result_map( 91 - |base_nixpkgs_version| { 92 - Ok(ratchet::Nixpkgs::compare( 93 - base_nixpkgs_version, 94 - nixpkgs_version, 95 - )) 96 - }, 97 - ) 98 - })?; 81 + // Very easy to parallelise this, since it's totally independent 82 + let base_thread = thread::spawn(move || check_nixpkgs(&base_nixpkgs, keep_nix_path)); 83 + let main_result = check_nixpkgs(&main_nixpkgs, keep_nix_path)?; 84 + 85 + let base_result = match base_thread.join() { 86 + Ok(res) => res?, 87 + Err(e) => panic::resume_unwind(e), 88 + }; 99 89 100 - match check_result { 101 - Failure(errors) => { 90 + match (base_result, main_result) { 91 + (Failure(_), Failure(errors)) => { 92 + // Base branch fails and the PR doesn't fix it and may also introduce additional problems 93 + for error in errors { 94 + writeln!(error_writer, "{}", error.to_string().red())? 95 + } 96 + writeln!(error_writer, "{}", "The base branch is broken and still has above problems with this PR, which need to be fixed first.\nConsider reverting the PR that introduced these problems in order to prevent more failures of unrelated PRs.".yellow())?; 97 + Ok(false) 98 + } 99 + (Failure(_), Success(_)) => { 100 + writeln!( 101 + error_writer, 102 + "{}", 103 + "The base branch is broken, but this PR fixes it. Nice job!".green() 104 + )?; 105 + Ok(true) 106 + } 107 + (Success(_), Failure(errors)) => { 102 108 for error in errors { 103 109 writeln!(error_writer, "{}", error.to_string().red())? 104 110 } 111 + writeln!( 112 + error_writer, 113 + "{}", 114 + "This PR introduces the problems listed above. Please fix them before merging, otherwise the base branch would break." 115 + .yellow() 116 + )?; 105 117 Ok(false) 106 118 } 107 - Success(()) => Ok(true), 119 + (Success(base), Success(main)) => { 120 + // Both base and main branch succeed, check ratchet state 121 + match ratchet::Nixpkgs::compare(base, main) { 122 + Failure(errors) => { 123 + for error in errors { 124 + writeln!(error_writer, "{}", error.to_string().red())? 125 + } 126 + writeln!(error_writer, "{}", "This PR introduces additional instances of discouraged patterns as listed above. Merging is discouraged but would not break the base branch.".yellow())?; 127 + 128 + Ok(false) 129 + } 130 + Success(()) => { 131 + writeln!(error_writer, "{}", "Validated successfully".green())?; 132 + Ok(true) 133 + } 134 + } 135 + } 108 136 } 109 137 } 110 138 ··· 113 141 /// This does not include ratchet checks, see ../README.md#ratchet-checks 114 142 /// Instead a `ratchet::Nixpkgs` value is returned, whose `compare` method allows performing the 115 143 /// ratchet check against another result. 116 - pub fn check_nixpkgs<W: io::Write>( 144 + pub fn check_nixpkgs( 117 145 nixpkgs_path: &Path, 118 146 keep_nix_path: bool, 119 - error_writer: &mut W, 120 147 ) -> validation::Result<ratchet::Nixpkgs> { 121 148 let mut nix_file_store = NixFileStore::default(); 122 149 ··· 129 156 })?; 130 157 131 158 if !nixpkgs_path.join(utils::BASE_SUBPATH).exists() { 132 - writeln!( 133 - error_writer, 134 - "Given Nixpkgs path does not contain a {} subdirectory, no check necessary.", 135 - utils::BASE_SUBPATH 136 - )?; 159 + // No pkgs/by-name directory, always valid 137 160 Success(ratchet::Nixpkgs::default()) 138 161 } else { 139 162 check_structure(&nixpkgs_path, &mut nix_file_store)?.result_map(|package_names| ··· 163 186 continue; 164 187 } 165 188 166 - let expected_errors = 167 - fs::read_to_string(path.join("expected")).unwrap_or(String::new()); 189 + let expected_errors = fs::read_to_string(path.join("expected")) 190 + .expect("No expected file for test {name}"); 168 191 169 192 test_nixpkgs(&name, &path, &expected_errors)?; 170 193 } ··· 201 224 test_nixpkgs( 202 225 "case_sensitive", 203 226 &path, 204 - "pkgs/by-name/fo: Duplicate case-sensitive package directories \"foO\" and \"foo\".\n", 227 + "pkgs/by-name/fo: Duplicate case-sensitive package directories \"foO\" and \"foo\".\nThis PR introduces the problems listed above. Please fix them before merging, otherwise the base branch would break.\n", 205 228 )?; 206 229 207 230 Ok(()) ··· 225 248 let tmpdir = temp_root.path().join("symlinked"); 226 249 227 250 temp_env::with_var("TMPDIR", Some(&tmpdir), || { 228 - test_nixpkgs("symlinked_tmpdir", Path::new("tests/success"), "") 251 + test_nixpkgs( 252 + "symlinked_tmpdir", 253 + Path::new("tests/success"), 254 + "Validated successfully\n", 255 + ) 229 256 }) 230 257 } 231 258 ··· 240 267 // We don't want coloring to mess up the tests 241 268 let writer = temp_env::with_var("NO_COLOR", Some("1"), || -> anyhow::Result<_> { 242 269 let mut writer = vec![]; 243 - process(base_nixpkgs, &path, true, &mut writer) 270 + process(base_nixpkgs.to_owned(), path.to_owned(), true, &mut writer) 244 271 .with_context(|| format!("Failed test case {name}"))?; 245 272 Ok(writer) 246 273 })?; ··· 249 276 250 277 if actual_errors != expected_errors { 251 278 panic!( 252 - "Failed test case {name}, expected these errors:\n\n{}\n\nbut got these:\n\n{}", 279 + "Failed test case {name}, expected these errors:\n=======\n{}\n=======\nbut got these:\n=======\n{}\n=======", 253 280 expected_errors, actual_errors 254 281 ); 255 282 }
+78 -33
pkgs/test/nixpkgs-check-by-name/src/nix_file.rs
··· 2 2 3 3 use crate::utils::LineIndex; 4 4 use anyhow::Context; 5 + use itertools::Either::{self, Left, Right}; 6 + use relative_path::RelativePathBuf; 5 7 use rnix::ast; 6 8 use rnix::ast::Expr; 7 9 use rnix::ast::HasEntry; 8 - use rnix::SyntaxKind; 9 10 use rowan::ast::AstNode; 10 11 use rowan::TextSize; 11 12 use rowan::TokenAtOffset; ··· 79 80 #[derive(Debug, PartialEq)] 80 81 pub struct CallPackageArgumentInfo { 81 82 /// The relative path of the first argument, or `None` if it's not a path. 82 - pub relative_path: Option<PathBuf>, 83 + pub relative_path: Option<RelativePathBuf>, 83 84 /// Whether the second argument is an empty attribute set 84 85 pub empty_arg: bool, 85 86 } ··· 87 88 impl NixFile { 88 89 /// Returns information about callPackage arguments for an attribute at a specific line/column 89 90 /// index. 90 - /// If the location is not of the form `<attr> = callPackage <arg1> <arg2>;`, `None` is 91 - /// returned. 91 + /// If the definition at the given location is not of the form `<attr> = callPackage <arg1> <arg2>;`, 92 + /// `Ok((None, String))` is returned, with `String` being the definition itself. 93 + /// 92 94 /// This function only returns `Err` for problems that can't be caused by the Nix contents, 93 95 /// but rather problems in this programs code itself. 94 96 /// ··· 109 111 /// 110 112 /// You'll get back 111 113 /// ```rust 112 - /// Some(CallPackageArgumentInfo { path = Some("default.nix"), empty_arg: true }) 114 + /// Ok(( 115 + /// Some(CallPackageArgumentInfo { path = Some("default.nix"), empty_arg: true }), 116 + /// "foo = self.callPackage ./default.nix { };", 117 + /// )) 113 118 /// ``` 114 119 /// 115 120 /// Note that this also returns the same for `pythonPackages.callPackage`. It doesn't make an ··· 119 124 line: usize, 120 125 column: usize, 121 126 relative_to: &Path, 122 - ) -> anyhow::Result<Option<CallPackageArgumentInfo>> { 123 - let Some(attrpath_value) = self.attrpath_value_at(line, column)? else { 124 - return Ok(None); 125 - }; 126 - self.attrpath_value_call_package_argument_info(attrpath_value, relative_to) 127 + ) -> anyhow::Result<(Option<CallPackageArgumentInfo>, String)> { 128 + Ok(match self.attrpath_value_at(line, column)? { 129 + Left(definition) => (None, definition), 130 + Right(attrpath_value) => { 131 + let definition = attrpath_value.to_string(); 132 + let attrpath_value = 133 + self.attrpath_value_call_package_argument_info(attrpath_value, relative_to)?; 134 + (attrpath_value, definition) 135 + } 136 + }) 127 137 } 128 138 129 139 // Internal function mainly to make it independently testable ··· 131 141 &self, 132 142 line: usize, 133 143 column: usize, 134 - ) -> anyhow::Result<Option<ast::AttrpathValue>> { 144 + ) -> anyhow::Result<Either<String, ast::AttrpathValue>> { 135 145 let index = self.line_index.fromlinecolumn(line, column); 136 146 137 147 let token_at_offset = self ··· 158 168 ) 159 169 }; 160 170 171 + if ast::Attr::can_cast(node.kind()) { 172 + // Something like `foo`, `"foo"` or `${"foo"}` 173 + } else if ast::Inherit::can_cast(node.kind()) { 174 + // Something like `inherit <attr>` or `inherit (<source>) <attr>` 175 + // This is the only other way how `builtins.unsafeGetAttrPos` can return 176 + // attribute positions, but we only look for ones like `<attr-path> = <value>`, so 177 + // ignore this 178 + return Ok(Left(node.to_string())); 179 + } else { 180 + // However, anything else is not expected and smells like a bug 181 + anyhow::bail!( 182 + "Node in {} is neither an attribute node nor an inherit node: {node:?}", 183 + self.path.display() 184 + ) 185 + } 186 + 161 187 // node looks like "foo" 162 188 let Some(attrpath_node) = node.parent() else { 163 189 anyhow::bail!( ··· 166 192 ) 167 193 }; 168 194 169 - if attrpath_node.kind() != SyntaxKind::NODE_ATTRPATH { 170 - // This can happen for e.g. `inherit foo`, so definitely not a syntactic `callPackage` 171 - return Ok(None); 195 + if !ast::Attrpath::can_cast(attrpath_node.kind()) { 196 + // We know that `node` is an attribute, its parent should be an attribute path 197 + anyhow::bail!( 198 + "In {}, attribute parent node is not an attribute path node: {attrpath_node:?}", 199 + self.path.display() 200 + ) 172 201 } 202 + 173 203 // attrpath_node looks like "foo.bar" 174 204 let Some(attrpath_value_node) = attrpath_node.parent() else { 175 205 anyhow::bail!( ··· 189 219 // unwrap is fine because we confirmed that we can cast with the above check. 190 220 // We could avoid this `unwrap` for a `clone`, since `cast` consumes the argument, 191 221 // but we still need it for the error message when the cast fails. 192 - Ok(Some(ast::AttrpathValue::cast(attrpath_value_node).unwrap())) 222 + Ok(Right( 223 + ast::AttrpathValue::cast(attrpath_value_node).unwrap(), 224 + )) 193 225 } 194 226 195 227 // Internal function mainly to make attrpath_value_at independently testable ··· 338 370 /// The path is outside the given absolute path 339 371 Outside, 340 372 /// The path is within the given absolute path. 341 - /// The `PathBuf` is the relative path under the given absolute path. 342 - Within(PathBuf), 373 + /// The `RelativePathBuf` is the relative path under the given absolute path. 374 + Within(RelativePathBuf), 343 375 } 344 376 345 377 impl NixFile { ··· 371 403 // Check if it's within relative_to 372 404 match resolved.strip_prefix(relative_to) { 373 405 Err(_prefix_error) => ResolvedPath::Outside, 374 - Ok(suffix) => ResolvedPath::Within(suffix.to_path_buf()), 406 + Ok(suffix) => ResolvedPath::Within( 407 + RelativePathBuf::from_path(suffix).expect("a relative path"), 408 + ), 375 409 } 376 410 } 377 411 } ··· 408 442 /**/quuux/**/=/**/5/**/;/*E*/ 409 443 410 444 inherit toInherit; 445 + inherit (toInherit) toInherit; 411 446 } 412 447 "#}; 413 448 ··· 417 452 418 453 // These are builtins.unsafeGetAttrPos locations for the attributes 419 454 let cases = [ 420 - (2, 3, Some("foo = 1;")), 421 - (3, 3, Some(r#""bar" = 2;"#)), 422 - (4, 3, Some(r#"${"baz"} = 3;"#)), 423 - (5, 3, Some(r#""${"qux"}" = 4;"#)), 424 - (8, 3, Some("quux\n # B\n =\n # C\n 5\n # D\n ;")), 425 - (17, 7, Some("quuux/**/=/**/5/**/;")), 426 - (19, 10, None), 455 + (2, 3, Right("foo = 1;")), 456 + (3, 3, Right(r#""bar" = 2;"#)), 457 + (4, 3, Right(r#"${"baz"} = 3;"#)), 458 + (5, 3, Right(r#""${"qux"}" = 4;"#)), 459 + (8, 3, Right("quux\n # B\n =\n # C\n 5\n # D\n ;")), 460 + (17, 7, Right("quuux/**/=/**/5/**/;")), 461 + (19, 10, Left("inherit toInherit;")), 462 + (20, 22, Left("inherit (toInherit) toInherit;")), 427 463 ]; 428 464 429 465 for (line, column, expected_result) in cases { 430 466 let actual_result = nix_file 431 - .attrpath_value_at(line, column)? 432 - .map(|node| node.to_string()); 433 - assert_eq!(actual_result.as_deref(), expected_result); 467 + .attrpath_value_at(line, column) 468 + .context(format!("line {line}, column {column}"))? 469 + .map_right(|node| node.to_string()); 470 + let owned_expected_result = expected_result 471 + .map(|x| x.to_string()) 472 + .map_left(|x| x.to_string()); 473 + assert_eq!( 474 + actual_result, owned_expected_result, 475 + "line {line}, column {column}" 476 + ); 434 477 } 435 478 436 479 Ok(()) ··· 466 509 ( 467 510 6, 468 511 Some(CallPackageArgumentInfo { 469 - relative_path: Some(PathBuf::from("file.nix")), 512 + relative_path: Some(RelativePathBuf::from("file.nix")), 470 513 empty_arg: true, 471 514 }), 472 515 ), 473 516 ( 474 517 7, 475 518 Some(CallPackageArgumentInfo { 476 - relative_path: Some(PathBuf::from("file.nix")), 519 + relative_path: Some(RelativePathBuf::from("file.nix")), 477 520 empty_arg: true, 478 521 }), 479 522 ), ··· 487 530 ( 488 531 9, 489 532 Some(CallPackageArgumentInfo { 490 - relative_path: Some(PathBuf::from("file.nix")), 533 + relative_path: Some(RelativePathBuf::from("file.nix")), 491 534 empty_arg: false, 492 535 }), 493 536 ), ··· 501 544 ]; 502 545 503 546 for (line, expected_result) in cases { 504 - let actual_result = nix_file.call_package_argument_info_at(line, 3, temp_dir.path())?; 505 - assert_eq!(actual_result, expected_result); 547 + let (actual_result, _definition) = nix_file 548 + .call_package_argument_info_at(line, 3, temp_dir.path()) 549 + .context(format!("line {line}"))?; 550 + assert_eq!(actual_result, expected_result, "line {line}"); 506 551 } 507 552 508 553 Ok(())
+261 -109
pkgs/test/nixpkgs-check-by-name/src/nixpkgs_problem.rs
··· 1 1 use crate::structure; 2 2 use crate::utils::PACKAGE_NIX_FILENAME; 3 + use indoc::writedoc; 4 + use relative_path::RelativePath; 5 + use relative_path::RelativePathBuf; 3 6 use std::ffi::OsString; 4 7 use std::fmt; 5 - use std::io; 6 - use std::path::PathBuf; 7 8 8 9 /// Any problem that can occur when checking Nixpkgs 10 + /// All paths are relative to Nixpkgs such that the error messages can't be influenced by Nixpkgs absolute 11 + /// location 12 + #[derive(Clone)] 9 13 pub enum NixpkgsProblem { 10 14 ShardNonDir { 11 - relative_shard_path: PathBuf, 15 + relative_shard_path: RelativePathBuf, 12 16 }, 13 17 InvalidShardName { 14 - relative_shard_path: PathBuf, 18 + relative_shard_path: RelativePathBuf, 15 19 shard_name: String, 16 20 }, 17 21 PackageNonDir { 18 - relative_package_dir: PathBuf, 22 + relative_package_dir: RelativePathBuf, 19 23 }, 20 24 CaseSensitiveDuplicate { 21 - relative_shard_path: PathBuf, 25 + relative_shard_path: RelativePathBuf, 22 26 first: OsString, 23 27 second: OsString, 24 28 }, 25 29 InvalidPackageName { 26 - relative_package_dir: PathBuf, 30 + relative_package_dir: RelativePathBuf, 27 31 package_name: String, 28 32 }, 29 33 IncorrectShard { 30 - relative_package_dir: PathBuf, 31 - correct_relative_package_dir: PathBuf, 34 + relative_package_dir: RelativePathBuf, 35 + correct_relative_package_dir: RelativePathBuf, 32 36 }, 33 37 PackageNixNonExistent { 34 - relative_package_dir: PathBuf, 38 + relative_package_dir: RelativePathBuf, 35 39 }, 36 40 PackageNixDir { 37 - relative_package_dir: PathBuf, 41 + relative_package_dir: RelativePathBuf, 38 42 }, 39 43 UndefinedAttr { 40 - relative_package_file: PathBuf, 44 + relative_package_file: RelativePathBuf, 45 + package_name: String, 46 + }, 47 + EmptyArgument { 48 + package_name: String, 49 + file: RelativePathBuf, 50 + line: usize, 51 + column: usize, 52 + definition: String, 53 + }, 54 + NonToplevelCallPackage { 55 + package_name: String, 56 + file: RelativePathBuf, 57 + line: usize, 58 + column: usize, 59 + definition: String, 60 + }, 61 + NonPath { 62 + package_name: String, 63 + file: RelativePathBuf, 64 + line: usize, 65 + column: usize, 66 + definition: String, 67 + }, 68 + WrongCallPackagePath { 41 69 package_name: String, 70 + file: RelativePathBuf, 71 + line: usize, 72 + actual_path: RelativePathBuf, 73 + expected_path: RelativePathBuf, 42 74 }, 43 - WrongCallPackage { 44 - relative_package_file: PathBuf, 75 + NonSyntacticCallPackage { 45 76 package_name: String, 77 + file: RelativePathBuf, 78 + line: usize, 79 + column: usize, 80 + definition: String, 46 81 }, 47 82 NonDerivation { 48 - relative_package_file: PathBuf, 83 + relative_package_file: RelativePathBuf, 49 84 package_name: String, 50 85 }, 51 86 OutsideSymlink { 52 - relative_package_dir: PathBuf, 53 - subpath: PathBuf, 87 + relative_package_dir: RelativePathBuf, 88 + subpath: RelativePathBuf, 54 89 }, 55 90 UnresolvableSymlink { 56 - relative_package_dir: PathBuf, 57 - subpath: PathBuf, 58 - io_error: io::Error, 91 + relative_package_dir: RelativePathBuf, 92 + subpath: RelativePathBuf, 93 + io_error: String, 59 94 }, 60 95 PathInterpolation { 61 - relative_package_dir: PathBuf, 62 - subpath: PathBuf, 96 + relative_package_dir: RelativePathBuf, 97 + subpath: RelativePathBuf, 63 98 line: usize, 64 99 text: String, 65 100 }, 66 101 SearchPath { 67 - relative_package_dir: PathBuf, 68 - subpath: PathBuf, 102 + relative_package_dir: RelativePathBuf, 103 + subpath: RelativePathBuf, 69 104 line: usize, 70 105 text: String, 71 106 }, 72 107 OutsidePathReference { 73 - relative_package_dir: PathBuf, 74 - subpath: PathBuf, 108 + relative_package_dir: RelativePathBuf, 109 + subpath: RelativePathBuf, 75 110 line: usize, 76 111 text: String, 77 112 }, 78 113 UnresolvablePathReference { 79 - relative_package_dir: PathBuf, 80 - subpath: PathBuf, 114 + relative_package_dir: RelativePathBuf, 115 + subpath: RelativePathBuf, 81 116 line: usize, 82 117 text: String, 83 - io_error: io::Error, 118 + io_error: String, 119 + }, 120 + MovedOutOfByNameEmptyArg { 121 + package_name: String, 122 + call_package_path: Option<RelativePathBuf>, 123 + file: RelativePathBuf, 84 124 }, 85 - MovedOutOfByName { 125 + MovedOutOfByNameNonEmptyArg { 126 + package_name: String, 127 + call_package_path: Option<RelativePathBuf>, 128 + file: RelativePathBuf, 129 + }, 130 + NewPackageNotUsingByNameEmptyArg { 86 131 package_name: String, 87 - call_package_path: Option<PathBuf>, 88 - empty_arg: bool, 132 + call_package_path: Option<RelativePathBuf>, 133 + file: RelativePathBuf, 89 134 }, 90 - NewPackageNotUsingByName { 135 + NewPackageNotUsingByNameNonEmptyArg { 91 136 package_name: String, 92 - call_package_path: Option<PathBuf>, 93 - empty_arg: bool, 137 + call_package_path: Option<RelativePathBuf>, 138 + file: RelativePathBuf, 94 139 }, 95 140 InternalCallPackageUsed { 96 141 attr_name: String, ··· 106 151 NixpkgsProblem::ShardNonDir { relative_shard_path } => 107 152 write!( 108 153 f, 109 - "{}: This is a file, but it should be a directory.", 110 - relative_shard_path.display(), 154 + "{relative_shard_path}: This is a file, but it should be a directory.", 111 155 ), 112 156 NixpkgsProblem::InvalidShardName { relative_shard_path, shard_name } => 113 157 write!( 114 158 f, 115 - "{}: Invalid directory name \"{shard_name}\", must be at most 2 ASCII characters consisting of a-z, 0-9, \"-\" or \"_\".", 116 - relative_shard_path.display() 159 + "{relative_shard_path}: Invalid directory name \"{shard_name}\", must be at most 2 ASCII characters consisting of a-z, 0-9, \"-\" or \"_\".", 117 160 ), 118 161 NixpkgsProblem::PackageNonDir { relative_package_dir } => 119 162 write!( 120 163 f, 121 - "{}: This path is a file, but it should be a directory.", 122 - relative_package_dir.display(), 164 + "{relative_package_dir}: This path is a file, but it should be a directory.", 123 165 ), 124 166 NixpkgsProblem::CaseSensitiveDuplicate { relative_shard_path, first, second } => 125 167 write!( 126 168 f, 127 - "{}: Duplicate case-sensitive package directories {first:?} and {second:?}.", 128 - relative_shard_path.display(), 169 + "{relative_shard_path}: Duplicate case-sensitive package directories {first:?} and {second:?}.", 129 170 ), 130 171 NixpkgsProblem::InvalidPackageName { relative_package_dir, package_name } => 131 172 write!( 132 173 f, 133 - "{}: Invalid package directory name \"{package_name}\", must be ASCII characters consisting of a-z, A-Z, 0-9, \"-\" or \"_\".", 134 - relative_package_dir.display(), 174 + "{relative_package_dir}: Invalid package directory name \"{package_name}\", must be ASCII characters consisting of a-z, A-Z, 0-9, \"-\" or \"_\".", 135 175 ), 136 176 NixpkgsProblem::IncorrectShard { relative_package_dir, correct_relative_package_dir } => 137 177 write!( 138 178 f, 139 - "{}: Incorrect directory location, should be {} instead.", 140 - relative_package_dir.display(), 141 - correct_relative_package_dir.display(), 179 + "{relative_package_dir}: Incorrect directory location, should be {correct_relative_package_dir} instead.", 142 180 ), 143 181 NixpkgsProblem::PackageNixNonExistent { relative_package_dir } => 144 182 write!( 145 183 f, 146 - "{}: Missing required \"{PACKAGE_NIX_FILENAME}\" file.", 147 - relative_package_dir.display(), 184 + "{relative_package_dir}: Missing required \"{PACKAGE_NIX_FILENAME}\" file.", 148 185 ), 149 186 NixpkgsProblem::PackageNixDir { relative_package_dir } => 150 187 write!( 151 188 f, 152 - "{}: \"{PACKAGE_NIX_FILENAME}\" must be a file.", 153 - relative_package_dir.display(), 189 + "{relative_package_dir}: \"{PACKAGE_NIX_FILENAME}\" must be a file.", 154 190 ), 155 191 NixpkgsProblem::UndefinedAttr { relative_package_file, package_name } => 156 192 write!( 157 193 f, 158 - "pkgs.{package_name}: This attribute is not defined but it should be defined automatically as {}", 159 - relative_package_file.display() 194 + "pkgs.{package_name}: This attribute is not defined but it should be defined automatically as {relative_package_file}", 160 195 ), 161 - NixpkgsProblem::WrongCallPackage { relative_package_file, package_name } => 162 - write!( 196 + NixpkgsProblem::EmptyArgument { package_name, file, line, column, definition } => { 197 + let relative_package_dir = structure::relative_dir_for_package(package_name); 198 + let relative_package_file = structure::relative_file_for_package(package_name); 199 + let indented_definition = indent_definition(*column, definition.clone()); 200 + writedoc!( 163 201 f, 164 - "pkgs.{package_name}: This attribute is manually defined (most likely in pkgs/top-level/all-packages.nix), which is only allowed if the definition is of the form `pkgs.callPackage {} {{ ... }}` with a non-empty second argument.", 165 - relative_package_file.display() 166 - ), 202 + " 203 + - Because {relative_package_dir} exists, the attribute `pkgs.{package_name}` must be defined like 204 + 205 + {package_name} = callPackage ./{relative_package_file} {{ /* ... */ }}; 206 + 207 + However, in this PR, the second argument is empty. See the definition in {file}:{line}: 208 + 209 + {indented_definition} 210 + 211 + Such a definition is provided automatically and therefore not necessary. Please remove it. 212 + ", 213 + ) 214 + } 215 + NixpkgsProblem::NonToplevelCallPackage { package_name, file, line, column, definition } => { 216 + let relative_package_dir = structure::relative_dir_for_package(package_name); 217 + let relative_package_file = structure::relative_file_for_package(package_name); 218 + let indented_definition = indent_definition(*column, definition.clone()); 219 + writedoc!( 220 + f, 221 + " 222 + - Because {relative_package_dir} exists, the attribute `pkgs.{package_name}` must be defined like 223 + 224 + {package_name} = callPackage ./{relative_package_file} {{ /* ... */ }}; 225 + 226 + However, in this PR, a different `callPackage` is used. See the definition in {file}:{line}: 227 + 228 + {indented_definition} 229 + ", 230 + ) 231 + } 232 + NixpkgsProblem::NonPath { package_name, file, line, column, definition } => { 233 + let relative_package_dir = structure::relative_dir_for_package(package_name); 234 + let relative_package_file = structure::relative_file_for_package(package_name); 235 + let indented_definition = indent_definition(*column, definition.clone()); 236 + writedoc!( 237 + f, 238 + " 239 + - Because {relative_package_dir} exists, the attribute `pkgs.{package_name}` must be defined like 240 + 241 + {package_name} = callPackage ./{relative_package_file} {{ /* ... */ }}; 242 + 243 + However, in this PR, the first `callPackage` argument is not a path. See the definition in {file}:{line}: 244 + 245 + {indented_definition} 246 + ", 247 + ) 248 + } 249 + NixpkgsProblem::WrongCallPackagePath { package_name, file, line, actual_path, expected_path } => { 250 + let relative_package_dir = structure::relative_dir_for_package(package_name); 251 + let expected_path_expr = create_path_expr(file, expected_path); 252 + let actual_path_expr = create_path_expr(file, actual_path); 253 + writedoc! { 254 + f, 255 + " 256 + - Because {relative_package_dir} exists, the attribute `pkgs.{package_name}` must be defined like 257 + 258 + {package_name} = callPackage {expected_path_expr} {{ /* ... */ }}; 259 + 260 + However, in this PR, the first `callPackage` argument is the wrong path. See the definition in {file}:{line}: 261 + 262 + {package_name} = callPackage {actual_path_expr} {{ /* ... */ }}; 263 + ", 264 + } 265 + } 266 + NixpkgsProblem::NonSyntacticCallPackage { package_name, file, line, column, definition } => { 267 + let relative_package_dir = structure::relative_dir_for_package(package_name); 268 + let relative_package_file = structure::relative_file_for_package(package_name); 269 + let indented_definition = indent_definition(*column, definition.clone()); 270 + writedoc!( 271 + f, 272 + " 273 + - Because {relative_package_dir} exists, the attribute `pkgs.{package_name}` must be defined like 274 + 275 + {package_name} = callPackage ./{relative_package_file} {{ /* ... */ }}; 276 + 277 + However, in this PR, it isn't defined that way. See the definition in {file}:{line} 278 + 279 + {indented_definition} 280 + ", 281 + ) 282 + } 167 283 NixpkgsProblem::NonDerivation { relative_package_file, package_name } => 168 284 write!( 169 285 f, 170 - "pkgs.{package_name}: This attribute defined by {} is not a derivation", 171 - relative_package_file.display() 286 + "pkgs.{package_name}: This attribute defined by {relative_package_file} is not a derivation", 172 287 ), 173 288 NixpkgsProblem::OutsideSymlink { relative_package_dir, subpath } => 174 289 write!( 175 290 f, 176 - "{}: Path {} is a symlink pointing to a path outside the directory of that package.", 177 - relative_package_dir.display(), 178 - subpath.display(), 291 + "{relative_package_dir}: Path {subpath} is a symlink pointing to a path outside the directory of that package.", 179 292 ), 180 293 NixpkgsProblem::UnresolvableSymlink { relative_package_dir, subpath, io_error } => 181 294 write!( 182 295 f, 183 - "{}: Path {} is a symlink which cannot be resolved: {io_error}.", 184 - relative_package_dir.display(), 185 - subpath.display(), 296 + "{relative_package_dir}: Path {subpath} is a symlink which cannot be resolved: {io_error}.", 186 297 ), 187 298 NixpkgsProblem::PathInterpolation { relative_package_dir, subpath, line, text } => 188 299 write!( 189 300 f, 190 - "{}: File {} at line {line} contains the path expression \"{}\", which is not yet supported and may point outside the directory of that package.", 191 - relative_package_dir.display(), 192 - subpath.display(), 193 - text 301 + "{relative_package_dir}: File {subpath} at line {line} contains the path expression \"{text}\", which is not yet supported and may point outside the directory of that package.", 194 302 ), 195 303 NixpkgsProblem::SearchPath { relative_package_dir, subpath, line, text } => 196 304 write!( 197 305 f, 198 - "{}: File {} at line {line} contains the nix search path expression \"{}\" which may point outside the directory of that package.", 199 - relative_package_dir.display(), 200 - subpath.display(), 201 - text 306 + "{relative_package_dir}: File {subpath} at line {line} contains the nix search path expression \"{text}\" which may point outside the directory of that package.", 202 307 ), 203 308 NixpkgsProblem::OutsidePathReference { relative_package_dir, subpath, line, text } => 204 309 write!( 205 310 f, 206 - "{}: File {} at line {line} contains the path expression \"{}\" which may point outside the directory of that package.", 207 - relative_package_dir.display(), 208 - subpath.display(), 209 - text, 311 + "{relative_package_dir}: File {subpath} at line {line} contains the path expression \"{text}\" which may point outside the directory of that package.", 210 312 ), 211 313 NixpkgsProblem::UnresolvablePathReference { relative_package_dir, subpath, line, text, io_error } => 212 314 write!( 213 315 f, 214 - "{}: File {} at line {line} contains the path expression \"{}\" which cannot be resolved: {io_error}.", 215 - relative_package_dir.display(), 216 - subpath.display(), 217 - text, 316 + "{relative_package_dir}: File {subpath} at line {line} contains the path expression \"{text}\" which cannot be resolved: {io_error}.", 218 317 ), 219 - NixpkgsProblem::MovedOutOfByName { package_name, call_package_path, empty_arg } => { 318 + NixpkgsProblem::MovedOutOfByNameEmptyArg { package_name, call_package_path, file } => { 319 + let call_package_arg = 320 + if let Some(path) = &call_package_path { 321 + format!("./{path}") 322 + } else { 323 + "...".into() 324 + }; 325 + let relative_package_file = structure::relative_file_for_package(package_name); 326 + writedoc!( 327 + f, 328 + " 329 + - Attribute `pkgs.{package_name}` was previously defined in {relative_package_file}, but is now manually defined as `callPackage {call_package_arg} {{ /* ... */ }}` in {file}. 330 + Please move the package back and remove the manual `callPackage`. 331 + ", 332 + ) 333 + }, 334 + NixpkgsProblem::MovedOutOfByNameNonEmptyArg { package_name, call_package_path, file } => { 220 335 let call_package_arg = 221 336 if let Some(path) = &call_package_path { 222 - format!("./{}", path.display()) 337 + format!("./{}", path) 223 338 } else { 224 339 "...".into() 225 340 }; 226 - if *empty_arg { 227 - write!( 228 - f, 229 - "pkgs.{package_name}: This top-level package was previously defined in {}, but is now manually defined as `callPackage {call_package_arg} {{ }}` (e.g. in `pkgs/top-level/all-packages.nix`). Please move the package back and remove the manual `callPackage`.", 230 - structure::relative_file_for_package(package_name).display(), 231 - ) 232 - } else { 233 - // This can happen if users mistakenly assume that for custom arguments, 234 - // pkgs/by-name can't be used. 235 - write!( 236 - f, 237 - "pkgs.{package_name}: This top-level package was previously defined in {}, but is now manually defined as `callPackage {call_package_arg} {{ ... }}` (e.g. in `pkgs/top-level/all-packages.nix`). While the manual `callPackage` is still needed, it's not necessary to move the package files.", 238 - structure::relative_file_for_package(package_name).display(), 239 - ) 240 - } 341 + let relative_package_file = structure::relative_file_for_package(package_name); 342 + // This can happen if users mistakenly assume that for custom arguments, 343 + // pkgs/by-name can't be used. 344 + writedoc!( 345 + f, 346 + " 347 + - Attribute `pkgs.{package_name}` was previously defined in {relative_package_file}, but is now manually defined as `callPackage {call_package_arg} {{ ... }}` in {file}. 348 + While the manual `callPackage` is still needed, it's not necessary to move the package files. 349 + ", 350 + ) 241 351 }, 242 - NixpkgsProblem::NewPackageNotUsingByName { package_name, call_package_path, empty_arg } => { 352 + NixpkgsProblem::NewPackageNotUsingByNameEmptyArg { package_name, call_package_path, file } => { 243 353 let call_package_arg = 244 354 if let Some(path) = &call_package_path { 245 - format!("./{}", path.display()) 355 + format!("./{}", path) 246 356 } else { 247 357 "...".into() 248 358 }; 249 - let extra = 250 - if *empty_arg { 251 - "Since the second `callPackage` argument is `{ }`, no manual `callPackage` (e.g. in `pkgs/top-level/all-packages.nix`) is needed anymore." 359 + let relative_package_file = structure::relative_file_for_package(package_name); 360 + writedoc!( 361 + f, 362 + " 363 + - Attribute `pkgs.{package_name}` is a new top-level package using `pkgs.callPackage {call_package_arg} {{ /* ... */ }}`. 364 + Please define it in {relative_package_file} instead. 365 + See `pkgs/by-name/README.md` for more details. 366 + Since the second `callPackage` argument is `{{ }}`, no manual `callPackage` in {file} is needed anymore. 367 + ", 368 + ) 369 + }, 370 + NixpkgsProblem::NewPackageNotUsingByNameNonEmptyArg { package_name, call_package_path, file } => { 371 + let call_package_arg = 372 + if let Some(path) = &call_package_path { 373 + format!("./{}", path) 252 374 } else { 253 - "Since the second `callPackage` argument is not `{ }`, the manual `callPackage` (e.g. in `pkgs/top-level/all-packages.nix`) is still needed." 375 + "...".into() 254 376 }; 255 - write!( 377 + let relative_package_file = structure::relative_file_for_package(package_name); 378 + writedoc!( 256 379 f, 257 - "pkgs.{package_name}: This is a new top-level package of the form `callPackage {call_package_arg} {{ }}`. Please define it in {} instead. See `pkgs/by-name/README.md` for more details. {extra}", 258 - structure::relative_file_for_package(package_name).display(), 380 + " 381 + - Attribute `pkgs.{package_name}` is a new top-level package using `pkgs.callPackage {call_package_arg} {{ /* ... */ }}`. 382 + Please define it in {relative_package_file} instead. 383 + See `pkgs/by-name/README.md` for more details. 384 + Since the second `callPackage` argument is not `{{ }}`, the manual `callPackage` in {file} is still needed. 385 + ", 259 386 ) 260 387 }, 261 388 NixpkgsProblem::InternalCallPackageUsed { attr_name } => ··· 271 398 } 272 399 } 273 400 } 401 + 402 + fn indent_definition(column: usize, definition: String) -> String { 403 + // The entire code should be indented 4 spaces 404 + textwrap::indent( 405 + // But first we want to strip the code's natural indentation 406 + &textwrap::dedent( 407 + // The definition _doesn't_ include the leading spaces, but we can 408 + // recover those from the column 409 + &format!("{}{definition}", " ".repeat(column - 1)), 410 + ), 411 + " ", 412 + ) 413 + } 414 + 415 + /// Creates a Nix path expression that when put into Nix file `from_file`, would point to the `to_file`. 416 + fn create_path_expr( 417 + from_file: impl AsRef<RelativePath>, 418 + to_file: impl AsRef<RelativePath>, 419 + ) -> String { 420 + // This `expect` calls should never trigger because we only call this function with files. 421 + // That's why we `expect` them! 422 + let from = from_file.as_ref().parent().expect("a parent for this path"); 423 + let rel = from.relative(to_file); 424 + format!("./{rel}") 425 + }
+25 -14
pkgs/test/nixpkgs-check-by-name/src/ratchet.rs
··· 4 4 5 5 use crate::nix_file::CallPackageArgumentInfo; 6 6 use crate::nixpkgs_problem::NixpkgsProblem; 7 - use crate::structure; 8 7 use crate::validation::{self, Validation, Validation::Success}; 8 + use relative_path::RelativePathBuf; 9 9 use std::collections::HashMap; 10 10 11 11 /// The ratchet value for the entirety of Nixpkgs. ··· 127 127 pub enum ManualDefinition {} 128 128 129 129 impl ToNixpkgsProblem for ManualDefinition { 130 - type ToContext = (); 130 + type ToContext = NixpkgsProblem; 131 131 132 132 fn to_nixpkgs_problem( 133 - name: &str, 133 + _name: &str, 134 134 _optional_from: Option<()>, 135 - _to: &Self::ToContext, 135 + to: &Self::ToContext, 136 136 ) -> NixpkgsProblem { 137 - NixpkgsProblem::WrongCallPackage { 138 - relative_package_file: structure::relative_file_for_package(name), 139 - package_name: name.to_owned(), 140 - } 137 + (*to).clone() 141 138 } 142 139 } 143 140 ··· 149 146 pub enum UsesByName {} 150 147 151 148 impl ToNixpkgsProblem for UsesByName { 152 - type ToContext = CallPackageArgumentInfo; 149 + type ToContext = (CallPackageArgumentInfo, RelativePathBuf); 153 150 154 151 fn to_nixpkgs_problem( 155 152 name: &str, 156 153 optional_from: Option<()>, 157 - to: &Self::ToContext, 154 + (to, file): &Self::ToContext, 158 155 ) -> NixpkgsProblem { 159 156 if let Some(()) = optional_from { 160 - NixpkgsProblem::MovedOutOfByName { 157 + if to.empty_arg { 158 + NixpkgsProblem::MovedOutOfByNameEmptyArg { 159 + package_name: name.to_owned(), 160 + call_package_path: to.relative_path.clone(), 161 + file: file.to_owned(), 162 + } 163 + } else { 164 + NixpkgsProblem::MovedOutOfByNameNonEmptyArg { 165 + package_name: name.to_owned(), 166 + call_package_path: to.relative_path.clone(), 167 + file: file.to_owned(), 168 + } 169 + } 170 + } else if to.empty_arg { 171 + NixpkgsProblem::NewPackageNotUsingByNameEmptyArg { 161 172 package_name: name.to_owned(), 162 173 call_package_path: to.relative_path.clone(), 163 - empty_arg: to.empty_arg, 174 + file: file.to_owned(), 164 175 } 165 176 } else { 166 - NixpkgsProblem::NewPackageNotUsingByName { 177 + NixpkgsProblem::NewPackageNotUsingByNameNonEmptyArg { 167 178 package_name: name.to_owned(), 168 179 call_package_path: to.relative_path.clone(), 169 - empty_arg: to.empty_arg, 180 + file: file.to_owned(), 170 181 } 171 182 } 172 183 }
+29 -27
pkgs/test/nixpkgs-check-by-name/src/references.rs
··· 2 2 use crate::utils; 3 3 use crate::validation::{self, ResultIteratorExt, Validation::Success}; 4 4 use crate::NixFileStore; 5 + use relative_path::RelativePath; 5 6 6 7 use anyhow::Context; 7 8 use rowan::ast::AstNode; ··· 12 13 /// Both symlinks and Nix path expressions are checked. 13 14 pub fn check_references( 14 15 nix_file_store: &mut NixFileStore, 15 - relative_package_dir: &Path, 16 + relative_package_dir: &RelativePath, 16 17 absolute_package_dir: &Path, 17 18 ) -> validation::Result<()> { 18 19 // The first subpath to check is the package directory itself, which we can represent as an 19 20 // empty path, since the absolute package directory gets prepended to this. 20 21 // We don't use `./.` to keep the error messages cleaner 21 22 // (there's no canonicalisation going on underneath) 22 - let subpath = Path::new(""); 23 + let subpath = RelativePath::new(""); 23 24 check_path( 24 25 nix_file_store, 25 26 relative_package_dir, ··· 29 30 .with_context(|| { 30 31 format!( 31 32 "While checking the references in package directory {}", 32 - relative_package_dir.display() 33 + relative_package_dir 33 34 ) 34 35 }) 35 36 } ··· 41 42 /// The absolute package directory gets prepended before doing anything with it though. 42 43 fn check_path( 43 44 nix_file_store: &mut NixFileStore, 44 - relative_package_dir: &Path, 45 + relative_package_dir: &RelativePath, 45 46 absolute_package_dir: &Path, 46 - subpath: &Path, 47 + subpath: &RelativePath, 47 48 ) -> validation::Result<()> { 48 - let path = absolute_package_dir.join(subpath); 49 + let path = subpath.to_path(absolute_package_dir); 49 50 50 51 Ok(if path.is_symlink() { 51 52 // Check whether the symlink resolves to outside the package directory ··· 55 56 // entire directory recursively anyways 56 57 if let Err(_prefix_error) = target.strip_prefix(absolute_package_dir) { 57 58 NixpkgsProblem::OutsideSymlink { 58 - relative_package_dir: relative_package_dir.to_path_buf(), 59 - subpath: subpath.to_path_buf(), 59 + relative_package_dir: relative_package_dir.to_owned(), 60 + subpath: subpath.to_owned(), 60 61 } 61 62 .into() 62 63 } else { ··· 64 65 } 65 66 } 66 67 Err(io_error) => NixpkgsProblem::UnresolvableSymlink { 67 - relative_package_dir: relative_package_dir.to_path_buf(), 68 - subpath: subpath.to_path_buf(), 69 - io_error, 68 + relative_package_dir: relative_package_dir.to_owned(), 69 + subpath: subpath.to_owned(), 70 + io_error: io_error.to_string(), 70 71 } 71 72 .into(), 72 73 } ··· 80 81 nix_file_store, 81 82 relative_package_dir, 82 83 absolute_package_dir, 83 - &subpath.join(entry.file_name()), 84 + // TODO: The relative_path crate doesn't seem to support OsStr 85 + &subpath.join(entry.file_name().to_string_lossy().to_string()), 84 86 ) 85 87 }) 86 88 .collect_vec() 87 - .with_context(|| format!("Error while recursing into {}", subpath.display()))?, 89 + .with_context(|| format!("Error while recursing into {}", subpath))?, 88 90 ) 89 91 } else if path.is_file() { 90 92 // Only check Nix files ··· 96 98 absolute_package_dir, 97 99 subpath, 98 100 ) 99 - .with_context(|| format!("Error while checking Nix file {}", subpath.display()))? 101 + .with_context(|| format!("Error while checking Nix file {}", subpath))? 100 102 } else { 101 103 Success(()) 102 104 } ··· 105 107 } 106 108 } else { 107 109 // This should never happen, git doesn't support other file types 108 - anyhow::bail!("Unsupported file type for path {}", subpath.display()); 110 + anyhow::bail!("Unsupported file type for path {}", subpath); 109 111 }) 110 112 } 111 113 ··· 113 115 /// directory 114 116 fn check_nix_file( 115 117 nix_file_store: &mut NixFileStore, 116 - relative_package_dir: &Path, 118 + relative_package_dir: &RelativePath, 117 119 absolute_package_dir: &Path, 118 - subpath: &Path, 120 + subpath: &RelativePath, 119 121 ) -> validation::Result<()> { 120 - let path = absolute_package_dir.join(subpath); 122 + let path = subpath.to_path(absolute_package_dir); 121 123 122 124 let nix_file = nix_file_store.get(&path)?; 123 125 ··· 135 137 136 138 match nix_file.static_resolve_path(path, absolute_package_dir) { 137 139 ResolvedPath::Interpolated => NixpkgsProblem::PathInterpolation { 138 - relative_package_dir: relative_package_dir.to_path_buf(), 139 - subpath: subpath.to_path_buf(), 140 + relative_package_dir: relative_package_dir.to_owned(), 141 + subpath: subpath.to_owned(), 140 142 line, 141 143 text, 142 144 } 143 145 .into(), 144 146 ResolvedPath::SearchPath => NixpkgsProblem::SearchPath { 145 - relative_package_dir: relative_package_dir.to_path_buf(), 146 - subpath: subpath.to_path_buf(), 147 + relative_package_dir: relative_package_dir.to_owned(), 148 + subpath: subpath.to_owned(), 147 149 line, 148 150 text, 149 151 } 150 152 .into(), 151 153 ResolvedPath::Outside => NixpkgsProblem::OutsidePathReference { 152 - relative_package_dir: relative_package_dir.to_path_buf(), 153 - subpath: subpath.to_path_buf(), 154 + relative_package_dir: relative_package_dir.to_owned(), 155 + subpath: subpath.to_owned(), 154 156 line, 155 157 text, 156 158 } 157 159 .into(), 158 160 ResolvedPath::Unresolvable(e) => NixpkgsProblem::UnresolvablePathReference { 159 - relative_package_dir: relative_package_dir.to_path_buf(), 160 - subpath: subpath.to_path_buf(), 161 + relative_package_dir: relative_package_dir.to_owned(), 162 + subpath: subpath.to_owned(), 161 163 line, 162 164 text, 163 - io_error: e, 165 + io_error: e.to_string(), 164 166 } 165 167 .into(), 166 168 ResolvedPath::Within(..) => {
+9 -7
pkgs/test/nixpkgs-check-by-name/src/structure.rs
··· 7 7 use itertools::concat; 8 8 use lazy_static::lazy_static; 9 9 use regex::Regex; 10 + use relative_path::RelativePathBuf; 10 11 use std::fs::DirEntry; 11 - use std::path::{Path, PathBuf}; 12 + use std::path::Path; 12 13 13 14 lazy_static! { 14 15 static ref SHARD_NAME_REGEX: Regex = Regex::new(r"^[a-z0-9_-]{1,2}$").unwrap(); ··· 21 22 package_name.to_lowercase().chars().take(2).collect() 22 23 } 23 24 24 - pub fn relative_dir_for_shard(shard_name: &str) -> PathBuf { 25 - PathBuf::from(format!("{BASE_SUBPATH}/{shard_name}")) 25 + pub fn relative_dir_for_shard(shard_name: &str) -> RelativePathBuf { 26 + RelativePathBuf::from(format!("{BASE_SUBPATH}/{shard_name}")) 26 27 } 27 28 28 - pub fn relative_dir_for_package(package_name: &str) -> PathBuf { 29 + pub fn relative_dir_for_package(package_name: &str) -> RelativePathBuf { 29 30 relative_dir_for_shard(&shard_for_package(package_name)).join(package_name) 30 31 } 31 32 32 - pub fn relative_file_for_package(package_name: &str) -> PathBuf { 33 + pub fn relative_file_for_package(package_name: &str) -> RelativePathBuf { 33 34 relative_dir_for_package(package_name).join(PACKAGE_NIX_FILENAME) 34 35 } 35 36 ··· 120 121 ) -> validation::Result<String> { 121 122 let package_path = package_entry.path(); 122 123 let package_name = package_entry.file_name().to_string_lossy().into_owned(); 123 - let relative_package_dir = PathBuf::from(format!("{BASE_SUBPATH}/{shard_name}/{package_name}")); 124 + let relative_package_dir = 125 + RelativePathBuf::from(format!("{BASE_SUBPATH}/{shard_name}/{package_name}")); 124 126 125 127 Ok(if !package_path.is_dir() { 126 128 NixpkgsProblem::PackageNonDir { ··· 174 176 let result = result.and(references::check_references( 175 177 nix_file_store, 176 178 &relative_package_dir, 177 - &path.join(&relative_package_dir), 179 + &relative_package_dir.to_path(path), 178 180 )?); 179 181 180 182 result.map(|_| package_name.clone())
+1
pkgs/test/nixpkgs-check-by-name/tests/aliases/expected
··· 1 + Validated successfully
+7
pkgs/test/nixpkgs-check-by-name/tests/alt-callPackage/all-packages.nix
··· 1 + self: super: { 2 + 3 + alt.callPackage = self.lib.callPackageWith {}; 4 + 5 + foo = self.alt.callPackage ({ }: self.someDrv) { }; 6 + 7 + }
+1
pkgs/test/nixpkgs-check-by-name/tests/alt-callPackage/default.nix
··· 1 + import <test-nixpkgs> { root = ./.; }
+9
pkgs/test/nixpkgs-check-by-name/tests/alt-callPackage/expected
··· 1 + - Because pkgs/by-name/fo/foo exists, the attribute `pkgs.foo` must be defined like 2 + 3 + foo = callPackage ./pkgs/by-name/fo/foo/package.nix { /* ... */ }; 4 + 5 + However, in this PR, a different `callPackage` is used. See the definition in all-packages.nix:5: 6 + 7 + foo = self.alt.callPackage ({ }: self.someDrv) { }; 8 + 9 + This PR introduces the problems listed above. Please fix them before merging, otherwise the base branch would break.
+1
pkgs/test/nixpkgs-check-by-name/tests/alt-callPackage/pkgs/by-name/fo/foo/package.nix
··· 1 + { someDrv }: someDrv
+1
pkgs/test/nixpkgs-check-by-name/tests/base-fixed/base/default.nix
··· 1 + import <test-nixpkgs> { root = ./.; }
pkgs/test/nixpkgs-check-by-name/tests/base-fixed/base/pkgs/by-name/foo

This is a binary file and will not be displayed.

+1
pkgs/test/nixpkgs-check-by-name/tests/base-fixed/default.nix
··· 1 + import <test-nixpkgs> { root = ./.; }
+1
pkgs/test/nixpkgs-check-by-name/tests/base-fixed/expected
··· 1 + The base branch is broken, but this PR fixes it. Nice job!
pkgs/test/nixpkgs-check-by-name/tests/base-fixed/pkgs/by-name/README.md

This is a binary file and will not be displayed.

+1
pkgs/test/nixpkgs-check-by-name/tests/base-still-broken/base/default.nix
··· 1 + import <test-nixpkgs> { root = ./.; }
pkgs/test/nixpkgs-check-by-name/tests/base-still-broken/base/pkgs/by-name/foo

This is a binary file and will not be displayed.

+1
pkgs/test/nixpkgs-check-by-name/tests/base-still-broken/default.nix
··· 1 + import <test-nixpkgs> { root = ./.; }
+3
pkgs/test/nixpkgs-check-by-name/tests/base-still-broken/expected
··· 1 + pkgs/by-name/bar: This is a file, but it should be a directory. 2 + The base branch is broken and still has above problems with this PR, which need to be fixed first. 3 + Consider reverting the PR that introduced these problems in order to prevent more failures of unrelated PRs.
pkgs/test/nixpkgs-check-by-name/tests/base-still-broken/pkgs/by-name/bar

This is a binary file and will not be displayed.

+1
pkgs/test/nixpkgs-check-by-name/tests/broken-autocall/expected
··· 1 1 pkgs.foo: This attribute is not defined but it should be defined automatically as pkgs/by-name/fo/foo/package.nix 2 + This PR introduces the problems listed above. Please fix them before merging, otherwise the base branch would break.
+1
pkgs/test/nixpkgs-check-by-name/tests/callPackage-syntax/expected
··· 1 + Validated successfully
+1
pkgs/test/nixpkgs-check-by-name/tests/empty-base/expected
··· 1 + Validated successfully
+1
pkgs/test/nixpkgs-check-by-name/tests/incorrect-shard/expected
··· 1 1 pkgs/by-name/aa/FOO: Incorrect directory location, should be pkgs/by-name/fo/FOO instead. 2 + This PR introduces the problems listed above. Please fix them before merging, otherwise the base branch would break.
+1
pkgs/test/nixpkgs-check-by-name/tests/internalCallPackage/expected
··· 1 1 pkgs.foo: This attribute is defined using `_internalCallByNamePackageFile`, which is an internal function not intended for manual use. 2 + This PR introduces the problems listed above. Please fix them before merging, otherwise the base branch would break.
+1
pkgs/test/nixpkgs-check-by-name/tests/invalid-package-name/expected
··· 1 1 pkgs/by-name/fo/fo@: Invalid package directory name "fo@", must be ASCII characters consisting of a-z, A-Z, 0-9, "-" or "_". 2 + This PR introduces the problems listed above. Please fix them before merging, otherwise the base branch would break.
+1
pkgs/test/nixpkgs-check-by-name/tests/invalid-shard-name/expected
··· 1 1 pkgs/by-name/A: Invalid directory name "A", must be at most 2 ASCII characters consisting of a-z, 0-9, "-" or "_". 2 + This PR introduces the problems listed above. Please fix them before merging, otherwise the base branch would break.
+21 -2
pkgs/test/nixpkgs-check-by-name/tests/manual-definition/expected
··· 1 - pkgs.noEval: This attribute is manually defined (most likely in pkgs/top-level/all-packages.nix), which is only allowed if the definition is of the form `pkgs.callPackage pkgs/by-name/no/noEval/package.nix { ... }` with a non-empty second argument. 2 - pkgs.onlyMove: This attribute is manually defined (most likely in pkgs/top-level/all-packages.nix), which is only allowed if the definition is of the form `pkgs.callPackage pkgs/by-name/on/onlyMove/package.nix { ... }` with a non-empty second argument. 1 + - Because pkgs/by-name/no/noEval exists, the attribute `pkgs.noEval` must be defined like 2 + 3 + noEval = callPackage ./pkgs/by-name/no/noEval/package.nix { /* ... */ }; 4 + 5 + However, in this PR, the second argument is empty. See the definition in all-packages.nix:9: 6 + 7 + noEval = self.callPackage ./pkgs/by-name/no/noEval/package.nix { }; 8 + 9 + Such a definition is provided automatically and therefore not necessary. Please remove it. 10 + 11 + - Because pkgs/by-name/on/onlyMove exists, the attribute `pkgs.onlyMove` must be defined like 12 + 13 + onlyMove = callPackage ./pkgs/by-name/on/onlyMove/package.nix { /* ... */ }; 14 + 15 + However, in this PR, the second argument is empty. See the definition in all-packages.nix:7: 16 + 17 + onlyMove = self.callPackage ./pkgs/by-name/on/onlyMove/package.nix { }; 18 + 19 + Such a definition is provided automatically and therefore not necessary. Please remove it. 20 + 21 + This PR introduces additional instances of discouraged patterns as listed above. Merging is discouraged but would not break the base branch.
+1
pkgs/test/nixpkgs-check-by-name/tests/missing-package-nix/expected
··· 1 1 pkgs/by-name/fo/foo: Missing required "package.nix" file. 2 + This PR introduces the problems listed above. Please fix them before merging, otherwise the base branch would break.
+16 -7
pkgs/test/nixpkgs-check-by-name/tests/mock-nixpkgs.nix
··· 28 28 lib = import <test-nixpkgs/lib>; 29 29 30 30 # The base fixed-point function to populate the resulting attribute set 31 - pkgsFun = self: { 32 - inherit lib; 33 - newScope = extra: lib.callPackageWith (self // extra); 34 - callPackage = self.newScope { }; 35 - callPackages = lib.callPackagesWith self; 36 - someDrv = { type = "derivation"; }; 37 - }; 31 + pkgsFun = 32 + self: { 33 + inherit lib; 34 + newScope = extra: lib.callPackageWith (self // extra); 35 + callPackage = self.newScope { }; 36 + callPackages = lib.callPackagesWith self; 37 + } 38 + # This mapAttrs is a very hacky workaround necessary because for all attributes defined in Nixpkgs, 39 + # the files that define them are verified to be within Nixpkgs. 40 + # This is usually a very safe assumption, but it fails in these tests for someDrv, 41 + # because it's technically defined outside the Nixpkgs directories of each test case. 42 + # By using `mapAttrs`, `builtins.unsafeGetAttrPos` just returns `null`, 43 + # which then doesn't trigger this check 44 + // lib.mapAttrs (name: value: value) { 45 + someDrv = { type = "derivation"; }; 46 + }; 38 47 39 48 baseDirectory = root + "/pkgs/by-name"; 40 49
+13 -4
pkgs/test/nixpkgs-check-by-name/tests/move-to-non-by-name/expected
··· 1 - pkgs.foo1: This top-level package was previously defined in pkgs/by-name/fo/foo1/package.nix, but is now manually defined as `callPackage ... { }` (e.g. in `pkgs/top-level/all-packages.nix`). Please move the package back and remove the manual `callPackage`. 2 - pkgs.foo2: This top-level package was previously defined in pkgs/by-name/fo/foo2/package.nix, but is now manually defined as `callPackage ./without-config.nix { }` (e.g. in `pkgs/top-level/all-packages.nix`). Please move the package back and remove the manual `callPackage`. 3 - pkgs.foo3: This top-level package was previously defined in pkgs/by-name/fo/foo3/package.nix, but is now manually defined as `callPackage ... { ... }` (e.g. in `pkgs/top-level/all-packages.nix`). While the manual `callPackage` is still needed, it's not necessary to move the package files. 4 - pkgs.foo4: This top-level package was previously defined in pkgs/by-name/fo/foo4/package.nix, but is now manually defined as `callPackage ./with-config.nix { ... }` (e.g. in `pkgs/top-level/all-packages.nix`). While the manual `callPackage` is still needed, it's not necessary to move the package files. 1 + - Attribute `pkgs.foo1` was previously defined in pkgs/by-name/fo/foo1/package.nix, but is now manually defined as `callPackage ... { /* ... */ }` in all-packages.nix. 2 + Please move the package back and remove the manual `callPackage`. 3 + 4 + - Attribute `pkgs.foo2` was previously defined in pkgs/by-name/fo/foo2/package.nix, but is now manually defined as `callPackage ./without-config.nix { /* ... */ }` in all-packages.nix. 5 + Please move the package back and remove the manual `callPackage`. 6 + 7 + - Attribute `pkgs.foo3` was previously defined in pkgs/by-name/fo/foo3/package.nix, but is now manually defined as `callPackage ... { ... }` in all-packages.nix. 8 + While the manual `callPackage` is still needed, it's not necessary to move the package files. 9 + 10 + - Attribute `pkgs.foo4` was previously defined in pkgs/by-name/fo/foo4/package.nix, but is now manually defined as `callPackage ./with-config.nix { ... }` in all-packages.nix. 11 + While the manual `callPackage` is still needed, it's not necessary to move the package files. 12 + 13 + This PR introduces additional instances of discouraged patterns as listed above. Merging is discouraged but would not break the base branch.
+1
pkgs/test/nixpkgs-check-by-name/tests/multiple-failures/expected
··· 11 11 pkgs/by-name/ba/foo: File package.nix at line 4 contains the nix search path expression "<nixpkgs>" which may point outside the directory of that package. 12 12 pkgs/by-name/ba/foo: File package.nix at line 5 contains the path expression "./${"test"}", which is not yet supported and may point outside the directory of that package. 13 13 pkgs/by-name/fo/foo: Missing required "package.nix" file. 14 + This PR introduces the problems listed above. Please fix them before merging, otherwise the base branch would break.
+21 -4
pkgs/test/nixpkgs-check-by-name/tests/new-package-non-by-name/expected
··· 1 - pkgs.new1: This is a new top-level package of the form `callPackage ... { }`. Please define it in pkgs/by-name/ne/new1/package.nix instead. See `pkgs/by-name/README.md` for more details. Since the second `callPackage` argument is `{ }`, no manual `callPackage` (e.g. in `pkgs/top-level/all-packages.nix`) is needed anymore. 2 - pkgs.new2: This is a new top-level package of the form `callPackage ./without-config.nix { }`. Please define it in pkgs/by-name/ne/new2/package.nix instead. See `pkgs/by-name/README.md` for more details. Since the second `callPackage` argument is `{ }`, no manual `callPackage` (e.g. in `pkgs/top-level/all-packages.nix`) is needed anymore. 3 - pkgs.new3: This is a new top-level package of the form `callPackage ... { }`. Please define it in pkgs/by-name/ne/new3/package.nix instead. See `pkgs/by-name/README.md` for more details. Since the second `callPackage` argument is not `{ }`, the manual `callPackage` (e.g. in `pkgs/top-level/all-packages.nix`) is still needed. 4 - pkgs.new4: This is a new top-level package of the form `callPackage ./with-config.nix { }`. Please define it in pkgs/by-name/ne/new4/package.nix instead. See `pkgs/by-name/README.md` for more details. Since the second `callPackage` argument is not `{ }`, the manual `callPackage` (e.g. in `pkgs/top-level/all-packages.nix`) is still needed. 1 + - Attribute `pkgs.new1` is a new top-level package using `pkgs.callPackage ... { /* ... */ }`. 2 + Please define it in pkgs/by-name/ne/new1/package.nix instead. 3 + See `pkgs/by-name/README.md` for more details. 4 + Since the second `callPackage` argument is `{ }`, no manual `callPackage` in all-packages.nix is needed anymore. 5 + 6 + - Attribute `pkgs.new2` is a new top-level package using `pkgs.callPackage ./without-config.nix { /* ... */ }`. 7 + Please define it in pkgs/by-name/ne/new2/package.nix instead. 8 + See `pkgs/by-name/README.md` for more details. 9 + Since the second `callPackage` argument is `{ }`, no manual `callPackage` in all-packages.nix is needed anymore. 10 + 11 + - Attribute `pkgs.new3` is a new top-level package using `pkgs.callPackage ... { /* ... */ }`. 12 + Please define it in pkgs/by-name/ne/new3/package.nix instead. 13 + See `pkgs/by-name/README.md` for more details. 14 + Since the second `callPackage` argument is not `{ }`, the manual `callPackage` in all-packages.nix is still needed. 15 + 16 + - Attribute `pkgs.new4` is a new top-level package using `pkgs.callPackage ./with-config.nix { /* ... */ }`. 17 + Please define it in pkgs/by-name/ne/new4/package.nix instead. 18 + See `pkgs/by-name/README.md` for more details. 19 + Since the second `callPackage` argument is not `{ }`, the manual `callPackage` in all-packages.nix is still needed. 20 + 21 + This PR introduces additional instances of discouraged patterns as listed above. Merging is discouraged but would not break the base branch.
+1 -1
pkgs/test/nixpkgs-check-by-name/tests/no-by-name/expected
··· 1 - Given Nixpkgs path does not contain a pkgs/by-name subdirectory, no check necessary. 1 + Validated successfully
+1
pkgs/test/nixpkgs-check-by-name/tests/no-eval/expected
··· 1 + Validated successfully
+1
pkgs/test/nixpkgs-check-by-name/tests/non-attrs/expected
··· 1 1 pkgs.nonDerivation: This attribute defined by pkgs/by-name/no/nonDerivation/package.nix is not a derivation 2 + This PR introduces the problems listed above. Please fix them before merging, otherwise the base branch would break.
+1
pkgs/test/nixpkgs-check-by-name/tests/non-derivation/expected
··· 1 1 pkgs.nonDerivation: This attribute defined by pkgs/by-name/no/nonDerivation/package.nix is not a derivation 2 + This PR introduces the problems listed above. Please fix them before merging, otherwise the base branch would break.
+9 -1
pkgs/test/nixpkgs-check-by-name/tests/non-syntactical-callPackage-by-name/expected
··· 1 - pkgs.foo: This attribute is manually defined (most likely in pkgs/top-level/all-packages.nix), which is only allowed if the definition is of the form `pkgs.callPackage pkgs/by-name/fo/foo/package.nix { ... }` with a non-empty second argument. 1 + - Because pkgs/by-name/fo/foo exists, the attribute `pkgs.foo` must be defined like 2 + 3 + foo = callPackage ./pkgs/by-name/fo/foo/package.nix { /* ... */ }; 4 + 5 + However, in this PR, it isn't defined that way. See the definition in all-packages.nix:4 6 + 7 + foo = self.bar; 8 + 9 + This PR introduces the problems listed above. Please fix them before merging, otherwise the base branch would break.
+1
pkgs/test/nixpkgs-check-by-name/tests/one-letter/expected
··· 1 + Validated successfully
+1
pkgs/test/nixpkgs-check-by-name/tests/only-callPackage-derivations/expected
··· 1 + Validated successfully
+9 -1
pkgs/test/nixpkgs-check-by-name/tests/override-different-file/expected
··· 1 - pkgs.nonDerivation: This attribute is manually defined (most likely in pkgs/top-level/all-packages.nix), which is only allowed if the definition is of the form `pkgs.callPackage pkgs/by-name/no/nonDerivation/package.nix { ... }` with a non-empty second argument. 1 + - Because pkgs/by-name/no/nonDerivation exists, the attribute `pkgs.nonDerivation` must be defined like 2 + 3 + nonDerivation = callPackage ./pkgs/by-name/no/nonDerivation/package.nix { /* ... */ }; 4 + 5 + However, in this PR, the first `callPackage` argument is the wrong path. See the definition in all-packages.nix:2: 6 + 7 + nonDerivation = callPackage ./someDrv.nix { /* ... */ }; 8 + 9 + This PR introduces the problems listed above. Please fix them before merging, otherwise the base branch would break.
+1
pkgs/test/nixpkgs-check-by-name/tests/override-empty-arg-gradual/expected
··· 1 + Validated successfully
+11 -1
pkgs/test/nixpkgs-check-by-name/tests/override-empty-arg/expected
··· 1 - pkgs.nonDerivation: This attribute is manually defined (most likely in pkgs/top-level/all-packages.nix), which is only allowed if the definition is of the form `pkgs.callPackage pkgs/by-name/no/nonDerivation/package.nix { ... }` with a non-empty second argument. 1 + - Because pkgs/by-name/no/nonDerivation exists, the attribute `pkgs.nonDerivation` must be defined like 2 + 3 + nonDerivation = callPackage ./pkgs/by-name/no/nonDerivation/package.nix { /* ... */ }; 4 + 5 + However, in this PR, the second argument is empty. See the definition in all-packages.nix:2: 6 + 7 + nonDerivation = self.callPackage ./pkgs/by-name/no/nonDerivation/package.nix { }; 8 + 9 + Such a definition is provided automatically and therefore not necessary. Please remove it. 10 + 11 + This PR introduces additional instances of discouraged patterns as listed above. Merging is discouraged but would not break the base branch.
+9 -1
pkgs/test/nixpkgs-check-by-name/tests/override-no-call-package/expected
··· 1 - pkgs.nonDerivation: This attribute is manually defined (most likely in pkgs/top-level/all-packages.nix), which is only allowed if the definition is of the form `pkgs.callPackage pkgs/by-name/no/nonDerivation/package.nix { ... }` with a non-empty second argument. 1 + - Because pkgs/by-name/no/nonDerivation exists, the attribute `pkgs.nonDerivation` must be defined like 2 + 3 + nonDerivation = callPackage ./pkgs/by-name/no/nonDerivation/package.nix { /* ... */ }; 4 + 5 + However, in this PR, it isn't defined that way. See the definition in all-packages.nix:2 6 + 7 + nonDerivation = self.someDrv; 8 + 9 + This PR introduces the problems listed above. Please fix them before merging, otherwise the base branch would break.
+9 -1
pkgs/test/nixpkgs-check-by-name/tests/override-no-file/expected
··· 1 - pkgs.nonDerivation: This attribute is manually defined (most likely in pkgs/top-level/all-packages.nix), which is only allowed if the definition is of the form `pkgs.callPackage pkgs/by-name/no/nonDerivation/package.nix { ... }` with a non-empty second argument. 1 + - Because pkgs/by-name/no/nonDerivation exists, the attribute `pkgs.nonDerivation` must be defined like 2 + 3 + nonDerivation = callPackage ./pkgs/by-name/no/nonDerivation/package.nix { /* ... */ }; 4 + 5 + However, in this PR, the first `callPackage` argument is not a path. See the definition in all-packages.nix:2: 6 + 7 + nonDerivation = self.callPackage ({ someDrv }: someDrv) { }; 8 + 9 + This PR introduces the problems listed above. Please fix them before merging, otherwise the base branch would break.
+5
pkgs/test/nixpkgs-check-by-name/tests/override-non-path/all-packages.nix
··· 1 + self: super: { 2 + 3 + foo = self.callPackage ({ someDrv, someFlag }: someDrv) { someFlag = true; }; 4 + 5 + }
+1
pkgs/test/nixpkgs-check-by-name/tests/override-non-path/default.nix
··· 1 + import <test-nixpkgs> { root = ./.; }
+9
pkgs/test/nixpkgs-check-by-name/tests/override-non-path/expected
··· 1 + - Because pkgs/by-name/fo/foo exists, the attribute `pkgs.foo` must be defined like 2 + 3 + foo = callPackage ./pkgs/by-name/fo/foo/package.nix { /* ... */ }; 4 + 5 + However, in this PR, the first `callPackage` argument is not a path. See the definition in all-packages.nix:3: 6 + 7 + foo = self.callPackage ({ someDrv, someFlag }: someDrv) { someFlag = true; }; 8 + 9 + This PR introduces the problems listed above. Please fix them before merging, otherwise the base branch would break.
+1
pkgs/test/nixpkgs-check-by-name/tests/override-non-path/pkgs/by-name/fo/foo/package.nix
··· 1 + { someDrv }: someDrv
+1
pkgs/test/nixpkgs-check-by-name/tests/override-success/expected
··· 1 + Validated successfully
+1
pkgs/test/nixpkgs-check-by-name/tests/package-dir-is-file/expected
··· 1 1 pkgs/by-name/fo/foo: This path is a file, but it should be a directory. 2 + This PR introduces the problems listed above. Please fix them before merging, otherwise the base branch would break.
+1
pkgs/test/nixpkgs-check-by-name/tests/package-nix-dir/expected
··· 1 1 pkgs/by-name/fo/foo: "package.nix" must be a file. 2 + This PR introduces the problems listed above. Please fix them before merging, otherwise the base branch would break.
+1
pkgs/test/nixpkgs-check-by-name/tests/package-variants/expected
··· 1 + Validated successfully
+1
pkgs/test/nixpkgs-check-by-name/tests/ref-absolute/expected
··· 1 1 pkgs/by-name/aa/aa: File package.nix at line 2 contains the path expression "/foo" which cannot be resolved: No such file or directory (os error 2). 2 + This PR introduces the problems listed above. Please fix them before merging, otherwise the base branch would break.
+1
pkgs/test/nixpkgs-check-by-name/tests/ref-escape/expected
··· 1 1 pkgs/by-name/aa/aa: File package.nix at line 2 contains the path expression "../." which may point outside the directory of that package. 2 + This PR introduces the problems listed above. Please fix them before merging, otherwise the base branch would break.
+1
pkgs/test/nixpkgs-check-by-name/tests/ref-nix-path/expected
··· 1 1 pkgs/by-name/aa/aa: File package.nix at line 2 contains the nix search path expression "<nixpkgs>" which may point outside the directory of that package. 2 + This PR introduces the problems listed above. Please fix them before merging, otherwise the base branch would break.
+1
pkgs/test/nixpkgs-check-by-name/tests/ref-path-subexpr/expected
··· 1 1 pkgs/by-name/aa/aa: File package.nix at line 2 contains the path expression "./${"test"}", which is not yet supported and may point outside the directory of that package. 2 + This PR introduces the problems listed above. Please fix them before merging, otherwise the base branch would break.
+1
pkgs/test/nixpkgs-check-by-name/tests/ref-success/expected
··· 1 + Validated successfully
+1
pkgs/test/nixpkgs-check-by-name/tests/shard-file/expected
··· 1 1 pkgs/by-name/fo: This is a file, but it should be a directory. 2 + This PR introduces the problems listed above. Please fix them before merging, otherwise the base branch would break.
+31 -4
pkgs/test/nixpkgs-check-by-name/tests/sorted-order/expected
··· 1 - pkgs.a: This attribute is manually defined (most likely in pkgs/top-level/all-packages.nix), which is only allowed if the definition is of the form `pkgs.callPackage pkgs/by-name/a/a/package.nix { ... }` with a non-empty second argument. 2 - pkgs.b: This is a new top-level package of the form `callPackage ... { }`. Please define it in pkgs/by-name/b/b/package.nix instead. See `pkgs/by-name/README.md` for more details. Since the second `callPackage` argument is `{ }`, no manual `callPackage` (e.g. in `pkgs/top-level/all-packages.nix`) is needed anymore. 3 - pkgs.c: This attribute is manually defined (most likely in pkgs/top-level/all-packages.nix), which is only allowed if the definition is of the form `pkgs.callPackage pkgs/by-name/c/c/package.nix { ... }` with a non-empty second argument. 4 - pkgs.d: This is a new top-level package of the form `callPackage ... { }`. Please define it in pkgs/by-name/d/d/package.nix instead. See `pkgs/by-name/README.md` for more details. Since the second `callPackage` argument is `{ }`, no manual `callPackage` (e.g. in `pkgs/top-level/all-packages.nix`) is needed anymore. 1 + - Because pkgs/by-name/a/a exists, the attribute `pkgs.a` must be defined like 2 + 3 + a = callPackage ./pkgs/by-name/a/a/package.nix { /* ... */ }; 4 + 5 + However, in this PR, the second argument is empty. See the definition in all-packages.nix:2: 6 + 7 + a = self.callPackage ./pkgs/by-name/a/a/package.nix { }; 8 + 9 + Such a definition is provided automatically and therefore not necessary. Please remove it. 10 + 11 + - Attribute `pkgs.b` is a new top-level package using `pkgs.callPackage ... { /* ... */ }`. 12 + Please define it in pkgs/by-name/b/b/package.nix instead. 13 + See `pkgs/by-name/README.md` for more details. 14 + Since the second `callPackage` argument is `{ }`, no manual `callPackage` in all-packages.nix is needed anymore. 15 + 16 + - Because pkgs/by-name/c/c exists, the attribute `pkgs.c` must be defined like 17 + 18 + c = callPackage ./pkgs/by-name/c/c/package.nix { /* ... */ }; 19 + 20 + However, in this PR, the second argument is empty. See the definition in all-packages.nix:4: 21 + 22 + c = self.callPackage ./pkgs/by-name/c/c/package.nix { }; 23 + 24 + Such a definition is provided automatically and therefore not necessary. Please remove it. 25 + 26 + - Attribute `pkgs.d` is a new top-level package using `pkgs.callPackage ... { /* ... */ }`. 27 + Please define it in pkgs/by-name/d/d/package.nix instead. 28 + See `pkgs/by-name/README.md` for more details. 29 + Since the second `callPackage` argument is `{ }`, no manual `callPackage` in all-packages.nix is needed anymore. 30 + 31 + This PR introduces additional instances of discouraged patterns as listed above. Merging is discouraged but would not break the base branch.
+1
pkgs/test/nixpkgs-check-by-name/tests/success/expected
··· 1 + Validated successfully
+1
pkgs/test/nixpkgs-check-by-name/tests/unknown-location/expected
··· 1 1 pkgs.foo: Cannot determine the location of this attribute using `builtins.unsafeGetAttrPos`. 2 + This PR introduces the problems listed above. Please fix them before merging, otherwise the base branch would break.
+1
pkgs/test/nixpkgs-check-by-name/tests/uppercase/expected
··· 1 + Validated successfully
+1
pkgs/test/nixpkgs-check-by-name/tests/with-readme/expected
··· 1 + Validated successfully
+3 -3
pkgs/tools/admin/fioctl/default.nix
··· 2 2 3 3 buildGoModule rec { 4 4 pname = "fioctl"; 5 - version = "0.40"; 5 + version = "0.41"; 6 6 7 7 src = fetchFromGitHub { 8 8 owner = "foundriesio"; 9 9 repo = "fioctl"; 10 10 rev = "v${version}"; 11 - sha256 = "sha256-G1CHm5z2D7l3NDmUMhubJsrXYUHb6FJ70EsYQShhsDE="; 11 + sha256 = "sha256-N+bLW1Gf0lr5FKgd1lr84HVrhdjB+npaeS3nzYXoVl0="; 12 12 }; 13 13 14 - vendorHash = "sha256-j0tdFvOEp9VGx8OCfUruCzwVSB8thcenpvVNn7Rf0dA="; 14 + vendorHash = "sha256-cu1TwCWdDQi2ZR96SvEeH/LIP7sZOVZoly3VczKZfRw="; 15 15 16 16 ldflags = [ 17 17 "-s" "-w"
+2
pkgs/tools/archivers/7zz/default.nix
··· 99 99 100 100 nativeBuildInputs = lib.optionals useUasm [ uasm ]; 101 101 102 + setupHook = ./setup-hook.sh; 103 + 102 104 enableParallelBuilding = true; 103 105 104 106 preBuild = "cd CPP/7zip/Bundles/Alone2";
+5
pkgs/tools/archivers/7zz/setup-hook.sh
··· 1 + unpackCmdHooks+=(_tryUnpackDmg) 2 + _tryUnpackDmg() { 3 + if ! [[ "$curSrc" =~ \.dmg$ ]]; then return 1; fi 4 + 7zz x "$curSrc" 5 + }
+16 -10
pkgs/tools/filesystems/garage/default.nix
··· 70 70 "sqlite" 71 71 ]; 72 72 73 + disabledTests = [ 74 + # Upstream told us this test is flakey. 75 + "k2v::poll::test_poll_item" 76 + ]; 77 + 73 78 passthru.tests = nixosTests.garage; 74 79 75 80 meta = { ··· 89 94 # we have to keep all the numbers in the version to handle major/minor/patch level. 90 95 # for <1.0. 91 96 92 - garage_0_8_5 = generic { 93 - version = "0.8.5"; 94 - sha256 = "sha256-YRxkjETSmI1dcHP9qTPLcOMqXx9B2uplVR3bBjJWn3I="; 95 - cargoSha256 = "sha256-VOcymlvqqQRdT1MFzRcMuD+Xo3fc3XTuRA12tW7ZjdI="; 97 + garage_0_8_6 = generic { 98 + version = "0.8.6"; 99 + sha256 = "sha256-N0AOcwpuBHwTZtHcz6a2d9GOimHevhohEOzVkIt0RDE="; 100 + cargoSha256 = "sha256-e72FQKL77CZOi/pa+hE7PCyc1+HSJgEsKGgWlfVw51k="; 96 101 broken = stdenv.isDarwin; 97 102 }; 98 103 99 - garage_0_8 = garage_0_8_5; 104 + garage_0_8 = garage_0_8_6; 100 105 101 - garage_0_9_1 = generic { 102 - version = "0.9.1"; 103 - sha256 = "sha256-AXLaifVmZU4j5D/wKn/0TzhjHZBzZW1+tMyhsAo2eBU="; 104 - cargoSha256 = "sha256-4/+OsM73TroBB1TGqare2xASO5KhqVyNkkss0Y0JZXg="; 106 + garage_0_9_2 = generic { 107 + version = "0.9.2"; 108 + sha256 = "sha256-6a400/wOZunVH+LAByd6BEA0gs56Rxyh+gvM4hUO4Y8="; 109 + cargoSha256 = "sha256-1p6bB2gMOCHDdILEwgoJ1EqvgGhLPcThNkwaz6NMZhQ="; 110 + broken = stdenv.isDarwin; 105 111 }; 106 112 107 - garage_0_9 = garage_0_9_1; 113 + garage_0_9 = garage_0_9_2; 108 114 109 115 garage = garage_0_9; 110 116 }
+2 -2
pkgs/tools/filesystems/mergerfs/default.nix
··· 2 2 3 3 stdenv.mkDerivation rec { 4 4 pname = "mergerfs"; 5 - version = "2.40.1"; 5 + version = "2.40.2"; 6 6 7 7 src = fetchFromGitHub { 8 8 owner = "trapexit"; 9 9 repo = pname; 10 10 rev = version; 11 - sha256 = "sha256-EeAgDkm8WyD9OCM8/tHydp/slDGPwCAljeOrUCIWAqQ="; 11 + sha256 = "sha256-3DfSGuTtM+h0IdtsIhLVXQxX5/Tj9G5Qcha3DWmyyq4="; 12 12 }; 13 13 14 14 nativeBuildInputs = [
+2 -2
pkgs/tools/inputmethods/fcitx5/default.nix
··· 44 44 in 45 45 stdenv.mkDerivation rec { 46 46 pname = "fcitx5"; 47 - version = "5.1.7"; 47 + version = "5.1.8"; 48 48 49 49 src = fetchFromGitHub { 50 50 owner = "fcitx"; 51 51 repo = pname; 52 52 rev = version; 53 - hash = "sha256-XI4E+fWDIYDiYBv6HezytaZmhzv4NUaNam1T5Fyx+LI="; 53 + hash = "sha256-MeknggrpOzpkT1EXZCftIrlevuMEEHM5d8vszKRp+DI="; 54 54 }; 55 55 56 56 prePatch = ''
+11 -4
pkgs/tools/inputmethods/fcitx5/fcitx5-chinese-addons.nix
··· 1 1 { lib 2 - , mkDerivation 2 + , stdenv 3 3 , fetchurl 4 4 , fetchFromGitHub 5 5 , cmake ··· 13 13 , opencc 14 14 , curl 15 15 , fmt 16 + , qtbase 16 17 , luaSupport ? true 17 18 }: 18 19 ··· 29 30 }; 30 31 in 31 32 32 - mkDerivation rec { 33 + stdenv.mkDerivation rec { 33 34 pname = "fcitx5-chinese-addons"; 34 - version = "5.1.3"; 35 + version = "5.1.4"; 35 36 36 37 src = fetchFromGitHub { 37 38 owner = "fcitx"; 38 39 repo = pname; 39 40 rev = version; 40 - sha256 = "sha256-z+udRjvAZbnu6EcvvdaFVCr0OKLxFBJbgoYpH9QjrDI="; 41 + sha256 = "sha256-OqVoXZ8SIO8KRs3ehxul9Ug4sV47cxVCbLCBh6/8EoE="; 41 42 }; 42 43 43 44 nativeBuildInputs = [ ··· 61 62 qtwebengine 62 63 fmt 63 64 ] ++ lib.optional luaSupport fcitx5-lua; 65 + 66 + cmakeFlags = [ 67 + (lib.cmakeBool "USE_QT6" (lib.versions.major qtbase.version == "6")) 68 + ]; 69 + 70 + dontWrapQtApps = true; 64 71 65 72 meta = with lib; { 66 73 description = "Addons related to Chinese, including IME previous bundled inside fcitx4";
+40 -19
pkgs/tools/inputmethods/fcitx5/fcitx5-configtool.nix
··· 1 1 { lib 2 - , mkDerivation 2 + , stdenv 3 3 , fetchFromGitHub 4 4 , cmake 5 5 , extra-cmake-modules 6 + , pkg-config 6 7 , fcitx5 7 8 , fcitx5-qt 8 - , qtx11extras 9 - , qtquickcontrols2 9 + , qtbase 10 + , qtsvg 11 + , qtwayland 12 + , qtdeclarative 13 + , qtx11extras ? null 14 + , kitemviews 10 15 , kwidgetsaddons 16 + , qtquickcontrols2 ? null 17 + , kcoreaddons 11 18 , kdeclarative 12 - , kirigami2 19 + , kirigami ? null 20 + , kirigami2 ? null 13 21 , isocodes 14 22 , xkeyboardconfig 15 23 , libxkbfile 16 - , libXdmcp 17 - , plasma5Packages 18 - , plasma-framework 24 + , libplasma ? null 25 + , plasma-framework ? null 26 + , wrapQtAppsHook 19 27 , kcmSupport ? true 20 28 }: 21 29 22 - mkDerivation rec { 30 + stdenv.mkDerivation rec { 23 31 pname = "fcitx5-configtool"; 24 - version = "5.1.3"; 32 + version = "5.1.4"; 25 33 26 34 src = fetchFromGitHub { 27 35 owner = "fcitx"; 28 36 repo = pname; 29 37 rev = version; 30 - sha256 = "sha256-IwGlhIeON0SenW738p07LWZAzVDMtxOSMuUIAgfmTEg="; 38 + sha256 = "sha256-jYO1jdiuDjt6e98qhwMpTQTnGxoIYWMKkORGJbmk3mk="; 31 39 }; 32 40 33 41 cmakeFlags = [ 34 - "-DKDE_INSTALL_USE_QT_SYS_PATHS=ON" 42 + (lib.cmakeBool "KDE_INSTALL_USE_QT_SYS_PATHS" true) 43 + (lib.cmakeBool "ENABLE_KCM" kcmSupport) 44 + (lib.cmakeBool "USE_QT6" (lib.versions.major qtbase.version == "6")) 35 45 ]; 36 46 37 47 nativeBuildInputs = [ 38 48 cmake 39 49 extra-cmake-modules 50 + pkg-config 51 + wrapQtAppsHook 40 52 ]; 41 53 42 54 buildInputs = [ 43 55 fcitx5 44 56 fcitx5-qt 45 - qtx11extras 46 - qtquickcontrols2 47 - kirigami2 57 + qtbase 58 + qtsvg 59 + qtwayland 60 + kitemviews 61 + kwidgetsaddons 48 62 isocodes 49 63 xkeyboardconfig 50 64 libxkbfile 51 - libXdmcp 52 - ] ++ lib.optionals kcmSupport [ 65 + ] ++ lib.optionals (lib.versions.major qtbase.version == "5") [ 66 + qtx11extras 67 + ] ++ lib.optionals kcmSupport ([ 68 + qtdeclarative 69 + kcoreaddons 53 70 kdeclarative 54 - kwidgetsaddons 55 - plasma5Packages.kiconthemes 71 + ] ++ lib.optionals (lib.versions.major qtbase.version == "5") [ 72 + qtquickcontrols2 56 73 plasma-framework 57 - ]; 74 + kirigami2 75 + ] ++ lib.optionals (lib.versions.major qtbase.version == "6") [ 76 + libplasma 77 + kirigami 78 + ]); 58 79 59 80 meta = with lib; { 60 81 description = "Configuration Tool for Fcitx5";
+2 -2
pkgs/tools/inputmethods/fcitx5/fcitx5-gtk.nix
··· 26 26 27 27 stdenv.mkDerivation rec { 28 28 pname = "fcitx5-gtk"; 29 - version = "5.1.1"; 29 + version = "5.1.2"; 30 30 31 31 src = fetchFromGitHub { 32 32 owner = "fcitx"; 33 33 repo = pname; 34 34 rev = version; 35 - sha256 = "sha256-Ex24cHTsYsZjP8o+vrCdgGogk1UotWpd8xaLZAqzgaQ="; 35 + sha256 = "sha256-iNqY/VORDEPR4rc0LjVgcojZlMcT+LBdrdOwBkC5Vkk="; 36 36 }; 37 37 38 38 outputs = [ "out" "dev" ];
+2 -2
pkgs/tools/inputmethods/fcitx5/fcitx5-hangul.nix
··· 11 11 12 12 stdenv.mkDerivation rec { 13 13 pname = "fcitx5-hangul"; 14 - version = "5.1.1"; 14 + version = "5.1.2"; 15 15 16 16 src = fetchFromGitHub { 17 17 owner = "fcitx"; 18 18 repo = pname; 19 19 rev = version; 20 - sha256 = "sha256-3gkZh+ZzgTdpTbQe92gxJlG0x6Yhl7LfMiFEq5mb92o="; 20 + sha256 = "sha256-S5TGjb5vD0rk7V88b4yRziszLrwO1pgVFWuEGMp48oY="; 21 21 }; 22 22 23 23 nativeBuildInputs = [
+1 -1
pkgs/tools/inputmethods/fcitx5/fcitx5-qt.nix
··· 18 18 19 19 src = fetchFromGitHub { 20 20 owner = "fcitx"; 21 - repo = pname; 21 + repo = "fcitx5-qt"; 22 22 rev = version; 23 23 sha256 = "sha256-bVH2US/uEZGERslnAh/fyUbzR9fK1UfG4J+mOmrIE8Y="; 24 24 };
+2 -2
pkgs/tools/inputmethods/fcitx5/fcitx5-rime.nix
··· 14 14 15 15 stdenv.mkDerivation rec { 16 16 pname = "fcitx5-rime"; 17 - version = "5.1.4"; 17 + version = "5.1.5"; 18 18 19 19 src = fetchurl { 20 20 url = "https://download.fcitx-im.org/fcitx5/${pname}/${pname}-${version}.tar.xz"; 21 - hash = "sha256-tbCIWenH5brJUVIsmOiw/E/uIXAWwK1yangIVlkeOAs="; 21 + hash = "sha256-/eVgF5kgf1gmbkOInoGbmH/eH0vO2xj3X6k+wzeEssM="; 22 22 }; 23 23 24 24 cmakeFlags = [
+7 -5
pkgs/tools/inputmethods/fcitx5/fcitx5-skk.nix
··· 10 10 , libskk 11 11 , qtbase 12 12 , skk-dicts 13 - , wrapQtAppsHook 14 13 , enableQt ? false 15 14 }: 16 15 17 16 stdenv.mkDerivation rec { 18 17 pname = "fcitx5-skk"; 19 - version = "5.1.1"; 18 + version = "5.1.2"; 20 19 21 20 src = fetchFromGitHub { 22 21 owner = "fcitx"; 23 22 repo = pname; 24 23 rev = version; 25 - sha256 = "sha256-a+ZsuFEan61U0oOuhrTFoK5J4Vd0jj463jQ8Mk7TdbA="; 24 + sha256 = "sha256-vg79zJ/ZoUjCKU11krDUjO0rAyZxDMsBnHqJ/I6NTTA="; 26 25 }; 27 26 28 27 nativeBuildInputs = [ ··· 30 29 extra-cmake-modules 31 30 gettext 32 31 pkg-config 33 - ] ++ lib.optional enableQt wrapQtAppsHook; 32 + ]; 34 33 35 34 buildInputs = [ 36 35 fcitx5 ··· 41 40 ]; 42 41 43 42 cmakeFlags = [ 44 - "-DENABLE_QT=${toString enableQt}" 43 + (lib.cmakeBool "ENABLE_QT" enableQt) 44 + (lib.cmakeBool "USE_QT6" (lib.versions.major qtbase.version == "6")) 45 45 "-DSKK_DEFAULT_PATH=${skk-dicts}/share/SKK-JISYO.L" 46 46 ]; 47 + 48 + dontWrapQtApps = true; 47 49 48 50 meta = with lib; { 49 51 description = "Input method engine for Fcitx5, which uses libskk as its backend";
+2 -2
pkgs/tools/inputmethods/fcitx5/fcitx5-table-extra.nix
··· 10 10 11 11 stdenv.mkDerivation rec { 12 12 pname = "fcitx5-table-extra"; 13 - version = "5.1.3"; 13 + version = "5.1.4"; 14 14 15 15 src = fetchFromGitHub { 16 16 owner = "fcitx"; 17 17 repo = pname; 18 18 rev = version; 19 - hash = "sha256-w4JFZvYFL3fHrDgZqYND2bl3lT9/O1GXgfOwR7WyzWY="; 19 + hash = "sha256-Lb8CYFQl48arJEn9gemZ7imD/gdKjN+7Wnm21/0/Sko="; 20 20 }; 21 21 22 22 nativeBuildInputs = [
+2 -2
pkgs/tools/inputmethods/fcitx5/fcitx5-table-other.nix
··· 10 10 11 11 stdenv.mkDerivation rec { 12 12 pname = "fcitx5-table-other"; 13 - version = "5.1.0"; 13 + version = "5.1.1"; 14 14 15 15 src = fetchFromGitHub { 16 16 owner = "fcitx"; 17 17 repo = pname; 18 18 rev = version; 19 - sha256 = "sha256-ymHAKaPmQckxM/XHoDOVSzEWpyQGb7zVG21CDwNfyjg="; 19 + sha256 = "sha256-G34hPEdcdi5agWiFEgUHWD18ozOgBCaoS6HMAklUcO4="; 20 20 }; 21 21 22 22 nativeBuildInputs = [
+19 -5
pkgs/tools/inputmethods/fcitx5/fcitx5-unikey.nix
··· 6 6 , fcitx5 7 7 , fcitx5-qt 8 8 , gettext 9 - , wrapQtAppsHook 9 + , qtbase 10 10 }: 11 11 12 12 stdenv.mkDerivation rec { 13 13 pname = "fcitx5-unikey"; 14 - version = "5.1.2"; 14 + version = "5.1.3"; 15 15 16 16 src = fetchFromGitHub { 17 17 owner = "fcitx"; 18 18 repo = "fcitx5-unikey"; 19 19 rev = version; 20 - sha256 = "sha256-tLooADS8HojS9i178i5FJVqZtKrTXlzOBPlE9K49Tjc="; 20 + sha256 = "sha256-wrsA0gSexOZgsJunozt49GyP9R3Xe2Aci7Q8p3zAM9Q="; 21 21 }; 22 22 23 - nativeBuildInputs = [ cmake extra-cmake-modules wrapQtAppsHook ]; 23 + nativeBuildInputs = [ 24 + cmake 25 + extra-cmake-modules 26 + ]; 24 27 25 - buildInputs = [ fcitx5 fcitx5-qt gettext ]; 28 + buildInputs = [ 29 + qtbase 30 + fcitx5 31 + fcitx5-qt 32 + gettext 33 + ]; 34 + 35 + cmakeFlags = [ 36 + (lib.cmakeBool "USE_QT6" (lib.versions.major qtbase.version == "6")) 37 + ]; 38 + 39 + dontWrapQtApps = true; 26 40 27 41 meta = with lib; { 28 42 description = "Unikey engine support for Fcitx5";
+2 -2
pkgs/tools/misc/diffoscope/default.nix
··· 79 79 # Note: when upgrading this package, please run the list-missing-tools.sh script as described below! 80 80 python3.pkgs.buildPythonApplication rec { 81 81 pname = "diffoscope"; 82 - version = "257"; 82 + version = "259"; 83 83 84 84 src = fetchurl { 85 85 url = "https://diffoscope.org/archive/diffoscope-${version}.tar.bz2"; 86 - hash = "sha256-Fejp4i0uzsK9+9JBVPsE1AdDwshtRlxpxPfJdqRQQH4="; 86 + hash = "sha256-WYgFWM6HKFt3xVcRNytQPWOf3ZpH1cG7Cghhu/AES80="; 87 87 }; 88 88 89 89 outputs = [
+3 -3
pkgs/tools/misc/direnv/default.nix
··· 2 2 3 3 buildGoModule rec { 4 4 pname = "direnv"; 5 - version = "2.33.0"; 5 + version = "2.34.0"; 6 6 7 7 src = fetchFromGitHub { 8 8 owner = "direnv"; 9 9 repo = "direnv"; 10 10 rev = "v${version}"; 11 - sha256 = "sha256-/xOqJ3dr+3S502rXHVBcHhgBCctoMYnWpfLqgrxIoN8="; 11 + sha256 = "sha256-EvzqLS/FiWrbIXDkp0L/T8QNKnRGuQkbMWajI3X3BDw="; 12 12 }; 13 13 14 - vendorHash = "sha256-QGPcNgA/iiGt0CdFs2kR3zLL5/SWulSyyf/pW212JpU="; 14 + vendorHash = "sha256-FfKvLPv+jUT5s2qQ7QlzBMArI+acj7nhpE8FGMPpp5E="; 15 15 16 16 # we have no bash at the moment for windows 17 17 BASH_PATH =
+4 -2
pkgs/tools/misc/mmv/default.nix
··· 3 3 4 4 stdenv.mkDerivation rec { 5 5 pname = "mmv"; 6 - version = "2.5.1"; 6 + version = "2.6"; 7 7 8 8 src = fetchFromGitHub { 9 9 owner = "rrthomas"; 10 10 repo = "mmv"; 11 11 rev = "v${version}"; 12 - sha256 = "sha256-01MJjYVPfDaRkzitqKXTJZHbkkZTEaFoyYZEEMizHp0="; 12 + sha256 = "sha256-hYSTENSmkJP5rAemDyTzbzMKFrWYcMpsJDRWq43etTM="; 13 13 fetchSubmodules = true; 14 14 }; 15 15 ··· 19 19 20 20 nativeBuildInputs = [ gengetopt m4 git gnupg perl autoconf automake help2man pkg-config ]; 21 21 buildInputs = [ boehmgc ]; 22 + enableParallelBuilding = true; 22 23 23 24 env = lib.optionalAttrs stdenv.cc.isClang { 24 25 NIX_CFLAGS_COMPILE = toString [ 25 26 "-Wno-error=implicit-function-declaration" 26 27 "-Wno-error=implicit-int" 28 + "-Wno-error=int-conversion" 27 29 ]; 28 30 }; 29 31
+3 -3
pkgs/tools/misc/wasm-tools/default.nix
··· 5 5 6 6 rustPlatform.buildRustPackage rec { 7 7 pname = "wasm-tools"; 8 - version = "1.200.0"; 8 + version = "1.201.0"; 9 9 10 10 src = fetchFromGitHub { 11 11 owner = "bytecodealliance"; 12 12 repo = pname; 13 13 rev = "v${version}"; 14 - hash = "sha256-GuN70HiCmqBRwcosXqzT8sl5SRCTttOPIRl6pxaQiec="; 14 + hash = "sha256-L3wo6a9rxqZ8Rjz8nejbfdTgQclFFp2ShdP6QECbrmg="; 15 15 fetchSubmodules = true; 16 16 }; 17 17 18 18 # Disable cargo-auditable until https://github.com/rust-secure-code/cargo-auditable/issues/124 is solved. 19 19 auditable = false; 20 - cargoHash = "sha256-T9p1PvgiAZrj82ABx7KX2InZACQ/ff7N0zPKGTCTBPk="; 20 + cargoHash = "sha256-XzU43bcoRGHhVmpkcKvdRH9UybjTkQWH8RKBqsM/31M="; 21 21 cargoBuildFlags = [ "--package" "wasm-tools" ]; 22 22 cargoTestFlags = [ "--all" ]; 23 23
+9 -4
pkgs/tools/security/asnmap/default.nix
··· 5 5 6 6 buildGoModule rec { 7 7 pname = "asnmap"; 8 - version = "1.0.6"; 8 + version = "1.1.0"; 9 9 10 10 src = fetchFromGitHub { 11 11 owner = "projectdiscovery"; 12 - repo = pname; 12 + repo = "asnmap"; 13 13 rev = "refs/tags/v${version}"; 14 - hash = "sha256-uX7mf1y30JngRI4UJYzghk2F4DZh9OQAjgkkNRbAgwc="; 14 + hash = "sha256-Of4IVra6kMHY9btWcF9grM/r3lTWFP/geeT309Seasw="; 15 15 }; 16 16 17 - vendorHash = "sha256-co18Q8nfRjJyDfpmJ1YSJ275DJRJHn2AR3jF8WionNY="; 17 + vendorHash = "sha256-RDv8vkBI3miyeNAbhUsMpuZCYRUZ0ATfXYHxaTgTVfA="; 18 + 19 + ldflags = [ 20 + "-w" 21 + "-s" 22 + ]; 18 23 19 24 # Tests require network access 20 25 doCheck = false;
+7 -6
pkgs/tools/security/cfripper/default.nix
··· 12 12 }; 13 13 in python.pkgs.buildPythonApplication rec { 14 14 pname = "cfripper"; 15 - version = "1.15.4"; 15 + version = "1.15.5"; 16 16 pyproject = true; 17 17 18 18 src = fetchFromGitHub { 19 19 owner = "Skyscanner"; 20 20 repo = "cfripper"; 21 21 rev = "refs/tags/v${version}"; 22 - hash = "sha256-heVFum+Eaofd9L0dNHqD9GgHP+ckGwJi+NfeFci+ESc="; 22 + hash = "sha256-kT6cWVeP2mKKef/fBfzZWnkJsWqJp2X9uIkndR+gwoY="; 23 23 }; 24 24 25 - postPatch = '' 26 - substituteInPlace setup.py \ 27 - --replace "pluggy~=0.13.1" "pluggy" \ 28 - ''; 25 + pythonRelaxDeps = [ 26 + "pluggy" 27 + ]; 29 28 30 29 nativeBuildInputs = with python.pkgs; [ 30 + pythonRelaxDepsHook 31 31 setuptools 32 + setuptools-scm 32 33 ]; 33 34 34 35 propagatedBuildInputs = with python.pkgs; [
+2 -2
pkgs/tools/security/exploitdb/default.nix
··· 6 6 7 7 stdenv.mkDerivation rec { 8 8 pname = "exploitdb"; 9 - version = "2024-02-27"; 9 + version = "2024-03-01"; 10 10 11 11 src = fetchFromGitLab { 12 12 owner = "exploit-database"; 13 13 repo = pname; 14 14 rev = "refs/tags/${version}"; 15 - hash = "sha256-bFCh1kNm7D71PoRoSHdm1qYGGNvYnEb9cLbZerVy5vw="; 15 + hash = "sha256-6kBirGsaDfUgp/NiUa17SE+Cq8dmH9v3uuBooFMnMM0="; 16 16 }; 17 17 18 18 nativeBuildInputs = [
+2 -2
pkgs/tools/security/gotestwaf/default.nix
··· 7 7 8 8 buildGoModule rec { 9 9 pname = "gotestwaf"; 10 - version = "0.4.12"; 10 + version = "0.4.13"; 11 11 12 12 src = fetchFromGitHub { 13 13 owner = "wallarm"; 14 14 repo = "gotestwaf"; 15 15 rev = "refs/tags/v${version}"; 16 - hash = "sha256-av6N6RQ+9iW+xG1FpmFjBHL1leU4P0IPiqf7kvJxm6M="; 16 + hash = "sha256-juqxturQzGOlRTw7EEuRoEmwLtBdJJpbBzCKFxmL5m8="; 17 17 }; 18 18 19 19 vendorHash = null;
+17 -8
pkgs/tools/security/knockpy/default.nix
··· 5 5 6 6 python3.pkgs.buildPythonApplication rec { 7 7 pname = "knockpy"; 8 - version = "6.1.0"; 9 - format = "setuptools"; 8 + version = "7.0.0"; 9 + pyproject = true; 10 10 11 11 src = fetchFromGitHub { 12 12 owner = "guelfoweb"; 13 13 repo = "knock"; 14 14 rev = "refs/tags/${version}"; 15 - hash = "sha256-O4tXq4pDzuTBEGAls2I9bfBRdHssF4rFBec4OtfUx6A="; 15 + hash = "sha256-Xtv7K19OBS2iHFFoSasNcy9VLL15eQ8AD79wAEhxCHk="; 16 16 }; 17 17 18 + pythonRelaxDeps = [ 19 + "beautifulsoup4" 20 + "tqdm" 21 + ]; 22 + 23 + nativeBuildInputs = with python3.pkgs; [ 24 + pythonRelaxDepsHook 25 + setuptools 26 + ]; 27 + 18 28 propagatedBuildInputs = with python3.pkgs; [ 19 29 beautifulsoup4 20 - colorama 21 - matplotlib 22 - networkx 23 - pyqt5 30 + dnspython 31 + pyopenssl 24 32 requests 33 + tqdm 25 34 ]; 26 35 27 36 # Project has no tests 28 37 doCheck = false; 29 38 30 39 pythonImportsCheck = [ 31 - "knockpy" 40 + "knock" 32 41 ]; 33 42 34 43 meta = with lib; {
+3 -3
pkgs/tools/security/kube-bench/default.nix
··· 2 2 3 3 buildGoModule rec { 4 4 pname = "kube-bench"; 5 - version = "0.7.1"; 5 + version = "0.7.2"; 6 6 7 7 src = fetchFromGitHub { 8 8 owner = "aquasecurity"; 9 9 repo = pname; 10 10 rev = "refs/tags/v${version}"; 11 - hash = "sha256-EsUjGc7IIu5PK9KaODlQSfmm8jpjuBXvGZPNjSc1824="; 11 + hash = "sha256-e8iB66fXc8lKwFEZlkk4qbsgExKUrf5WpEVCOiHiZUg="; 12 12 }; 13 13 14 - vendorHash = "sha256-i4k7eworPUvLUustr5U53qizHqUVw8yqGjdPQT6UIf4="; 14 + vendorHash = "sha256-8DWjuweGCx2yxocm1GvcP+O3QYWYUdOFKmu6neQfWI4="; 15 15 16 16 nativeBuildInputs = [ installShellFiles ]; 17 17
+2 -2
pkgs/tools/security/ldeep/default.nix
··· 5 5 6 6 python3.pkgs.buildPythonApplication rec { 7 7 pname = "ldeep"; 8 - version = "1.0.52"; 8 + version = "1.0.53"; 9 9 pyproject = true; 10 10 11 11 src = fetchFromGitHub { 12 12 owner = "franc-pentest"; 13 13 repo = "ldeep"; 14 14 rev = "refs/tags/${version}"; 15 - hash = "sha256-I51vz3zF1J3223hcO3cdfsNBfpq/UolDxUEXyqx3dLI="; 15 + hash = "sha256-67jVpzvdjEcjFmTRE2YjPr4AO1iN+PakwoKcjvimt8g="; 16 16 }; 17 17 18 18 pythonRelaxDeps = [
+2 -2
pkgs/tools/system/bfs/default.nix
··· 2 2 3 3 stdenv.mkDerivation rec { 4 4 pname = "bfs"; 5 - version = "3.1.1"; 5 + version = "3.1.2"; 6 6 7 7 src = fetchFromGitHub { 8 8 repo = "bfs"; 9 9 owner = "tavianator"; 10 10 rev = version; 11 - hash = "sha256-lsVfsNVjFX38YaYVBJWEst3c3RhUCbK2ycteqZZUM3M="; 11 + hash = "sha256-xq29KzONDkq+KeABl8rpu0vr50KKFw/UKPFDXcAMNoo="; 12 12 }; 13 13 14 14 buildInputs = [ oniguruma ] ++ lib.optionals stdenv.isLinux [ libcap acl liburing ];
+3 -3
pkgs/tools/text/scraper/default.nix
··· 2 2 3 3 rustPlatform.buildRustPackage rec { 4 4 pname = "scraper"; 5 - version = "0.18.1"; 5 + version = "0.19.0"; 6 6 7 7 src = fetchCrate { 8 8 inherit pname version; 9 - hash = "sha256-fnX2v7VxVFgn9UT1+qWBvN+oDDI2DbK6UFKmby5aB5c="; 9 + hash = "sha256-HfZ8zyjghTXIyIYS+MaGF5OdMLJv6NIjQswdn/tvQbU="; 10 10 }; 11 11 12 - cargoHash = "sha256-HeT3U4H/OM/91BdXTvZq+gpmOnt/P4wTlqc2dl4erlQ="; 12 + cargoHash = "sha256-py8VVciNJ36/aSTlTH+Bx36yrh/8AuzB9XNNv/PrFak="; 13 13 14 14 nativeBuildInputs = [ installShellFiles ]; 15 15
+2 -2
pkgs/tools/virtualization/cloud-init/default.nix
··· 17 17 18 18 python3.pkgs.buildPythonApplication rec { 19 19 pname = "cloud-init"; 20 - version = "23.4.3"; 20 + version = "23.4.4"; 21 21 namePrefix = ""; 22 22 23 23 src = fetchFromGitHub { 24 24 owner = "canonical"; 25 25 repo = "cloud-init"; 26 26 rev = "refs/tags/${version}"; 27 - hash = "sha256-oYZr0Zvo6hn9sWtgSAGgfK2stHO247f0WUbzIIWUP18="; 27 + hash = "sha256-imA3C2895W4vbBT9TsELT1H9QfNIxntNQLsniv+/FGg="; 28 28 }; 29 29 30 30 patches = [
+4 -1
pkgs/tools/virtualization/distrobuilder/default.nix
··· 51 51 ''; 52 52 53 53 passthru = { 54 - tests.incus = nixosTests.incus.container; 54 + tests = { 55 + incus-old-init = nixosTests.incus.container-old-init; 56 + incus-new-init = nixosTests.incus.container-new-init; 57 + }; 55 58 56 59 generator = callPackage ./generator.nix { inherit src version; }; 57 60 };
+8
pkgs/top-level/aliases.nix
··· 321 321 fcitx-engines = throw "fcitx-engines is deprecated, please use fcitx5 instead."; # Added 2023-03-13 322 322 fcitx-configtool = throw "fcitx-configtool is deprecated, please use fcitx5 instead."; # Added 2023-03-13 323 323 324 + fcitx5-chinese-addons = libsForQt5.fcitx5-chinese-addons; # Added 2024-03-01 325 + fcitx5-configtool = libsForQt5.fcitx5-configtool; # Added 2024-03-01 326 + fcitx5-skk-qt = libsForQt5.fcitx5-skk-qt; # Added 2024-03-01 327 + fcitx5-unikey = libsForQt5.fcitx5-unikey; # Added 2024-03-01 328 + fcitx5-with-addons = libsForQt5.fcitx5-with-addons; # Added 2024-03-01 329 + 324 330 ### G ### 325 331 326 332 g4py = python3Packages.geant4; # Added 2020-06-06 ··· 1217 1223 ### Z ### 1218 1224 1219 1225 zabbix40 = throw "'zabbix40' has been removed as it has reached end of life"; # Added 2024-01-07 1226 + zfsStable = zfs; # Added 2024-02-26 1227 + zfsUnstable = zfs_unstable; # Added 2024-02-26 1220 1228 zinc = zincsearch; # Added 2023-05-28 1221 1229 zkg = throw "'zkg' has been replaced by 'zeek'"; 1222 1230 zq = zed.overrideAttrs (old: { meta = old.meta // { mainProgram = "zq"; }; }); # Added 2023-02-06
+28 -38
pkgs/top-level/all-packages.nix
··· 8042 8042 8043 8043 chewing-editor = libsForQt5.callPackage ../applications/misc/chewing-editor { }; 8044 8044 8045 - fcitx5 = libsForQt5.callPackage ../tools/inputmethods/fcitx5 { }; 8046 - 8047 - fcitx5-with-addons = callPackage ../tools/inputmethods/fcitx5/with-addons.nix { }; 8045 + fcitx5 = callPackage ../tools/inputmethods/fcitx5 { }; 8048 8046 8049 8047 fcitx5-bamboo = callPackage ../tools/inputmethods/fcitx5/fcitx5-bamboo.nix { }; 8050 8048 8051 - fcitx5-chinese-addons = libsForQt5.callPackage ../tools/inputmethods/fcitx5/fcitx5-chinese-addons.nix { }; 8052 - 8053 8049 fcitx5-mozc = libsForQt5.callPackage ../tools/inputmethods/fcitx5/fcitx5-mozc.nix { 8054 8050 abseil-cpp = abseil-cpp.override { 8055 8051 cxxStandard = "17"; 8056 8052 }; 8057 8053 }; 8058 8054 8059 - fcitx5-skk = libsForQt5.callPackage ../tools/inputmethods/fcitx5/fcitx5-skk.nix { }; 8060 - 8061 - fcitx5-skk-qt = fcitx5-skk.override { 8062 - enableQt = true; 8063 - }; 8064 - 8065 - fcitx5-unikey = libsForQt5.callPackage ../tools/inputmethods/fcitx5/fcitx5-unikey.nix { }; 8066 - 8067 - fcitx5-configtool = libsForQt5.callPackage ../tools/inputmethods/fcitx5/fcitx5-configtool.nix { }; 8055 + fcitx5-skk = qt6Packages.callPackage ../tools/inputmethods/fcitx5/fcitx5-skk.nix { }; 8068 8056 8069 8057 fcitx5-anthy = callPackage ../tools/inputmethods/fcitx5/fcitx5-anthy.nix { }; 8070 8058 ··· 8417 8405 }) 8418 8406 garage 8419 8407 garage_0_8 garage_0_9 8420 - garage_0_8_5 garage_0_9_1; 8408 + garage_0_8_6 garage_0_9_2; 8421 8409 8422 8410 garmintools = callPackage ../development/libraries/garmintools { }; 8423 8411 ··· 10746 10734 mb2md = callPackage ../tools/text/mb2md { }; 10747 10735 10748 10736 mbuffer = callPackage ../tools/misc/mbuffer { }; 10749 - 10750 - mdsh = callPackage ../development/tools/documentation/mdsh { }; 10751 10737 10752 10738 mecab = 10753 10739 let ··· 24414 24400 qt6 = recurseIntoAttrs (callPackage ../development/libraries/qt-6 { }); 24415 24401 24416 24402 qt6Packages = recurseIntoAttrs (import ./qt6-packages.nix { 24417 - inherit lib __splicedPackages makeScopeWithSplicing' generateSplicesForMkScope pkgsHostTarget; 24403 + inherit lib __splicedPackages makeScopeWithSplicing' generateSplicesForMkScope pkgsHostTarget kdePackages; 24418 24404 stdenv = if stdenv.isDarwin then darwin.apple_sdk_11_0.stdenv else stdenv; 24419 24405 }); 24420 24406 ··· 25792 25778 }; 25793 25779 25794 25780 # Steel Bank Common Lisp 25795 - sbcl_2_4_0 = wrapLisp { 25796 - pkg = callPackage ../development/compilers/sbcl { version = "2.4.0"; }; 25781 + sbcl_2_4_1 = wrapLisp { 25782 + pkg = callPackage ../development/compilers/sbcl { version = "2.4.1"; }; 25797 25783 faslExt = "fasl"; 25798 25784 flags = [ "--dynamic-space-size" "3000" ]; 25799 25785 }; 25800 - sbcl_2_4_1 = wrapLisp { 25801 - pkg = callPackage ../development/compilers/sbcl { version = "2.4.1"; }; 25786 + sbcl_2_4_2 = wrapLisp { 25787 + pkg = callPackage ../development/compilers/sbcl { version = "2.4.2"; }; 25802 25788 faslExt = "fasl"; 25803 25789 flags = [ "--dynamic-space-size" "3000" ]; 25804 25790 }; 25805 - sbcl = sbcl_2_4_1; 25791 + sbcl = sbcl_2_4_2; 25806 25792 25807 25793 sbclPackages = recurseIntoAttrs sbcl.pkgs; 25808 25794 ··· 28695 28681 28696 28682 zenmonitor = callPackage ../os-specific/linux/zenmonitor { }; 28697 28683 28698 - zfs_2_1 = callPackage ../os-specific/linux/zfs/2_1.nix { 28699 - configFile = "user"; 28700 - }; 28701 - zfsStable = callPackage ../os-specific/linux/zfs/stable.nix { 28702 - configFile = "user"; 28703 - }; 28704 - zfsUnstable = callPackage ../os-specific/linux/zfs/unstable.nix { 28705 - configFile = "user"; 28706 - }; 28707 - zfs = zfsStable; 28684 + inherit 28685 + ({ 28686 + zfs_2_1 = callPackage ../os-specific/linux/zfs/2_1.nix { 28687 + configFile = "user"; 28688 + }; 28689 + zfs_2_2 = callPackage ../os-specific/linux/zfs/2_2.nix { 28690 + configFile = "user"; 28691 + }; 28692 + zfs_unstable = callPackage ../os-specific/linux/zfs/unstable.nix { 28693 + configFile = "user"; 28694 + }; 28695 + }) 28696 + zfs_2_1 28697 + zfs_2_2 28698 + zfs_unstable; 28699 + zfs = zfs_2_2; 28708 28700 28709 28701 ### DATA 28710 28702 ··· 30255 30247 inherit (darwin.apple_sdk.frameworks) Cocoa CoreAudio Foundation; 30256 30248 }; 30257 30249 30258 - ptcollab = libsForQt5.callPackage ../applications/audio/ptcollab { }; 30250 + ptcollab = callPackage ../by-name/pt/ptcollab/package.nix { 30251 + stdenv = if stdenv.hostPlatform.isDarwin then darwin.apple_sdk_11_0.stdenv else stdenv; 30252 + }; 30259 30253 30260 30254 schismtracker = callPackage ../applications/audio/schismtracker { 30261 30255 inherit (darwin.apple_sdk.frameworks) Cocoa; ··· 35175 35169 35176 35170 spotify-player = callPackage ../applications/audio/spotify-player { }; 35177 35171 35178 - spotifywm = callPackage ../applications/audio/spotifywm { }; 35179 - 35180 35172 psst = callPackage ../applications/audio/psst { }; 35181 35173 35182 35174 squeezelite = darwin.apple_sdk_11_0.callPackage ../applications/audio/squeezelite { ··· 37089 37081 lbreakouthd = callPackage ../games/lgames/lbreakouthd { }; 37090 37082 37091 37083 lpairs2 = callPackage ../games/lgames/lpairs2 { }; 37092 - 37093 - ltris = callPackage ../games/lgames/ltris { }; 37094 37084 37095 37085 maelstrom = callPackage ../games/maelstrom { }; 37096 37086
+3 -3
pkgs/top-level/linux-kernels.nix
··· 559 559 configFile = "kernel"; 560 560 inherit pkgs kernel; 561 561 }; 562 - zfsStable = callPackage ../os-specific/linux/zfs/stable.nix { 562 + zfs_2_2 = callPackage ../os-specific/linux/zfs/2_2.nix { 563 563 configFile = "kernel"; 564 564 inherit pkgs kernel; 565 565 }; 566 - zfsUnstable = callPackage ../os-specific/linux/zfs/unstable.nix { 566 + zfs_unstable = callPackage ../os-specific/linux/zfs/unstable.nix { 567 567 configFile = "kernel"; 568 568 inherit pkgs kernel; 569 569 }; 570 - zfs = zfsStable; 570 + zfs = zfs_2_2; 571 571 572 572 can-isotp = callPackage ../os-specific/linux/can-isotp { }; 573 573
+10
pkgs/top-level/qt5-packages.nix
··· 100 100 101 101 fcitx5-qt = callPackage ../tools/inputmethods/fcitx5/fcitx5-qt.nix { }; 102 102 103 + fcitx5-chinese-addons = callPackage ../tools/inputmethods/fcitx5/fcitx5-chinese-addons.nix { }; 104 + 105 + fcitx5-configtool = callPackage ../tools/inputmethods/fcitx5/fcitx5-configtool.nix { }; 106 + 107 + fcitx5-skk-qt = callPackage ../tools/inputmethods/fcitx5/fcitx5-skk.nix { enableQt = true; }; 108 + 109 + fcitx5-unikey = callPackage ../tools/inputmethods/fcitx5/fcitx5-unikey.nix { }; 110 + 111 + fcitx5-with-addons = callPackage ../tools/inputmethods/fcitx5/with-addons.nix { }; 112 + 103 113 futuresql = callPackage ../development/libraries/futuresql { }; 104 114 105 115 qgpgme = callPackage ../development/libraries/gpgme { };
+11
pkgs/top-level/qt6-packages.nix
··· 10 10 , generateSplicesForMkScope 11 11 , stdenv 12 12 , pkgsHostTarget 13 + , kdePackages 13 14 }: 14 15 15 16 let ··· 32 33 accounts-qt = callPackage ../development/libraries/accounts-qt { }; 33 34 appstream-qt = callPackage ../development/libraries/appstream/qt.nix { }; 34 35 36 + fcitx5-chinese-addons = callPackage ../tools/inputmethods/fcitx5/fcitx5-chinese-addons.nix { }; 37 + 38 + fcitx5-configtool = kdePackages.callPackage ../tools/inputmethods/fcitx5/fcitx5-configtool.nix { }; 39 + 35 40 fcitx5-qt = callPackage ../tools/inputmethods/fcitx5/fcitx5-qt.nix { }; 41 + 42 + fcitx5-skk-qt = callPackage ../tools/inputmethods/fcitx5/fcitx5-skk.nix { enableQt = true; }; 43 + 44 + fcitx5-unikey = callPackage ../tools/inputmethods/fcitx5/fcitx5-unikey.nix { }; 45 + 46 + fcitx5-with-addons = callPackage ../tools/inputmethods/fcitx5/with-addons.nix { }; 36 47 37 48 kdsoap = callPackage ../development/libraries/kdsoap { }; 38 49