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

annalee a04ddbe3 ee9c2b7c

+2505 -881
+14
maintainers/maintainer-list.nix
··· 10842 githubId = 77865363; 10843 name = "Leonid Belyaev"; 10844 }; 10845 leshainc = { 10846 email = "leshainc@fomalhaut.me"; 10847 github = "LeshaInc"; ··· 16588 keys = [{ 16589 fingerprint = "1401 1B63 393D 16C1 AA9C C521 8526 B757 4A53 6236"; 16590 }]; 16591 }; 16592 rossabaker = { 16593 name = "Ross A. Baker";
··· 10842 githubId = 77865363; 10843 name = "Leonid Belyaev"; 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 + }; 10854 leshainc = { 10855 email = "leshainc@fomalhaut.me"; 10856 github = "LeshaInc"; ··· 16597 keys = [{ 16598 fingerprint = "1401 1B63 393D 16C1 AA9C C521 8526 B757 4A53 6236"; 16599 }]; 16600 + }; 16601 + rosehobgoblin = { 16602 + name = "J. L. Bowden"; 16603 + github = "rosehobgoblin"; 16604 + githubId = 84164410; 16605 }; 16606 rossabaker = { 16607 name = "Ross A. Baker";
+6
nixos/doc/manual/release-notes/rl-2405.section.md
··· 78 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 81 - [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 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. 83 84 - [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
··· 78 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 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 + 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). 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). 89 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). 91
+7
nixos/lib/make-disk-image.nix
··· 609 ''} 610 611 # Set up core system link, bootloader (sd-boot, GRUB, uboot, etc.), etc. 612 NIXOS_INSTALL_BOOTLOADER=1 nixos-enter --root $mountPoint -- /nix/var/nix/profiles/system/bin/switch-to-configuration boot 613 614 # The above scripts will generate a random machine-id and we don't want to bake a single ID into all our images
··· 609 ''} 610 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 619 NIXOS_INSTALL_BOOTLOADER=1 nixos-enter --root $mountPoint -- /nix/var/nix/profiles/system/bin/switch-to-configuration boot 620 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 let 6 im = config.i18n.inputMethod; 7 cfg = im.fcitx5; 8 - fcitx5Package = pkgs.fcitx5-with-addons.override { inherit (cfg) addons; }; 9 settingsFormat = pkgs.formats.ini { }; 10 in 11 { ··· 25 description = lib.mdDoc '' 26 Use the Wayland input method frontend. 27 See [Using Fcitx 5 on Wayland](https://fcitx-im.org/wiki/Using_Fcitx_5_on_Wayland). 28 ''; 29 }; 30 quickPhrase = mkOption {
··· 5 let 6 im = config.i18n.inputMethod; 7 cfg = im.fcitx5; 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; }; 12 settingsFormat = pkgs.formats.ini { }; 13 in 14 { ··· 28 description = lib.mdDoc '' 29 Use the Wayland input method frontend. 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. 39 ''; 40 }; 41 quickPhrase = mkOption {
+5 -1
nixos/modules/misc/nixpkgs.nix
··· 208 example = { system = "x86_64-linux"; }; 209 # Make sure that the final value has all fields for sake of other modules 210 # referring to this. 211 - apply = lib.systems.elaborate; 212 defaultText = literalExpression 213 ''config.nixpkgs.hostPlatform''; 214 description = lib.mdDoc ''
··· 208 example = { system = "x86_64-linux"; }; 209 # Make sure that the final value has all fields for sake of other modules 210 # referring to this. 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; 216 defaultText = literalExpression 217 ''config.nixpkgs.hostPlatform''; 218 description = lib.mdDoc ''
+6
nixos/modules/misc/nixpkgs/test.nix
··· 12 nixpkgs.hostPlatform = "aarch64-linux"; 13 nixpkgs.buildPlatform = "aarch64-darwin"; 14 }; 15 ambiguous = { 16 _file = "ambiguous.nix"; 17 nixpkgs.hostPlatform = "aarch64-linux"; ··· 81 assert withHost._module.args.pkgs.stdenv.buildPlatform.system == "aarch64-linux"; 82 assert withHostAndBuild._module.args.pkgs.stdenv.hostPlatform.system == "aarch64-linux"; 83 assert withHostAndBuild._module.args.pkgs.stdenv.buildPlatform.system == "aarch64-darwin"; 84 assert builtins.trace (lib.head (getErrors ambiguous)) 85 getErrors ambiguous == 86 [''
··· 12 nixpkgs.hostPlatform = "aarch64-linux"; 13 nixpkgs.buildPlatform = "aarch64-darwin"; 14 }; 15 + withSameHostAndBuild = eval { 16 + nixpkgs.hostPlatform = "aarch64-linux"; 17 + nixpkgs.buildPlatform = "aarch64-linux"; 18 + }; 19 ambiguous = { 20 _file = "ambiguous.nix"; 21 nixpkgs.hostPlatform = "aarch64-linux"; ··· 85 assert withHost._module.args.pkgs.stdenv.buildPlatform.system == "aarch64-linux"; 86 assert withHostAndBuild._module.args.pkgs.stdenv.hostPlatform.system == "aarch64-linux"; 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; 90 assert builtins.trace (lib.head (getErrors ambiguous)) 91 getErrors ambiguous == 92 [''
+2
nixos/modules/module-list.nix
··· 585 ./services/home-automation/govee2mqtt.nix 586 ./services/home-automation/home-assistant.nix 587 ./services/home-automation/homeassistant-satellite.nix 588 ./services/home-automation/zigbee2mqtt.nix 589 ./services/home-automation/zwave-js.nix 590 ./services/logging/SystemdJournal2Gelf.nix ··· 786 ./services/misc/tiddlywiki.nix 787 ./services/misc/tp-auto-kbbl.nix 788 ./services/misc/tuxclocker.nix 789 ./services/misc/tzupdate.nix 790 ./services/misc/uhub.nix 791 ./services/misc/weechat.nix
··· 585 ./services/home-automation/govee2mqtt.nix 586 ./services/home-automation/home-assistant.nix 587 ./services/home-automation/homeassistant-satellite.nix 588 + ./services/home-automation/matter-server.nix 589 ./services/home-automation/zigbee2mqtt.nix 590 ./services/home-automation/zwave-js.nix 591 ./services/logging/SystemdJournal2Gelf.nix ··· 787 ./services/misc/tiddlywiki.nix 788 ./services/misc/tp-auto-kbbl.nix 789 ./services/misc/tuxclocker.nix 790 + ./services/misc/transfer-sh.nix 791 ./services/misc/tzupdate.nix 792 ./services/misc/uhub.nix 793 ./services/misc/weechat.nix
+2 -2
nixos/modules/security/pam.nix
··· 1465 ''; 1466 } 1467 { 1468 - assertion = config.security.pam.zfs.enable -> (config.boot.zfs.enabled || config.boot.zfs.enableUnstable); 1469 message = '' 1470 - `security.pam.zfs.enable` requires enabling ZFS (`boot.zfs.enabled` or `boot.zfs.enableUnstable`). 1471 ''; 1472 } 1473 {
··· 1465 ''; 1466 } 1467 { 1468 + assertion = config.security.pam.zfs.enable -> config.boot.zfs.enabled; 1469 message = '' 1470 + `security.pam.zfs.enable` requires enabling ZFS (`boot.zfs.enabled`). 1471 ''; 1472 } 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 default = []; 67 example = ["--ssh"]; 68 }; 69 }; 70 71 config = mkIf cfg.enable { ··· 80 ] ++ lib.optional config.networking.resolvconf.enable config.networking.resolvconf.package; 81 serviceConfig.Environment = [ 82 "PORT=${toString cfg.port}" 83 - ''"FLAGS=--tun ${lib.escapeShellArg cfg.interfaceName}"'' 84 ] ++ (lib.optionals (cfg.permitCertUid != null) [ 85 "TS_PERMIT_CERT_UID=${cfg.permitCertUid}" 86 ]);
··· 66 default = []; 67 example = ["--ssh"]; 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 + }; 76 }; 77 78 config = mkIf cfg.enable { ··· 87 ] ++ lib.optional config.networking.resolvconf.enable config.networking.resolvconf.package; 88 serviceConfig.Environment = [ 89 "PORT=${toString cfg.port}" 90 + ''"FLAGS=--tun ${lib.escapeShellArg cfg.interfaceName} ${lib.concatStringsSep " " cfg.extraDaemonFlags}"'' 91 ] ++ (lib.optionals (cfg.permitCertUid != null) [ 92 "TS_PERMIT_CERT_UID=${cfg.permitCertUid}" 93 ]);
+1 -1
nixos/modules/system/boot/systemd.nix
··· 97 98 # Maintaining state across reboots. 99 "systemd-random-seed.service" 100 "systemd-backlight@.service" 101 "systemd-rfkill.service" 102 "systemd-rfkill.socket" ··· 667 668 # Don't bother with certain units in containers. 669 systemd.services.systemd-remount-fs.unitConfig.ConditionVirtualization = "!container"; 670 - systemd.services.systemd-random-seed.unitConfig.ConditionVirtualization = "!container"; 671 672 # Increase numeric PID range (set directly instead of copying a one-line file from systemd) 673 # https://github.com/systemd/systemd/pull/12226
··· 97 98 # Maintaining state across reboots. 99 "systemd-random-seed.service" 100 + "systemd-boot-random-seed.service" 101 "systemd-backlight@.service" 102 "systemd-rfkill.service" 103 "systemd-rfkill.socket" ··· 668 669 # Don't bother with certain units in containers. 670 systemd.services.systemd-remount-fs.unitConfig.ConditionVirtualization = "!container"; 671 672 # Increase numeric PID range (set directly instead of copying a one-line file from systemd) 673 # https://github.com/systemd/systemd/pull/12226
+4 -16
nixos/modules/tasks/filesystems/zfs.nix
··· 211 212 imports = [ 213 (mkRemovedOptionModule [ "boot" "zfs" "enableLegacyCrypto" ] "The corresponding package was removed from nixpkgs.") 214 ]; 215 216 ###### interface ··· 219 boot.zfs = { 220 package = mkOption { 221 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."; 225 }; 226 227 modulePackage = mkOption { ··· 237 default = inInitrd || inSystem; 238 defaultText = literalMD "`true` if ZFS filesystem support is enabled"; 239 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 }; 254 255 allowHibernation = mkOption {
··· 211 212 imports = [ 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;`") 215 ]; 216 217 ###### interface ··· 220 boot.zfs = { 221 package = mkOption { 222 type = types.package; 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."; 226 }; 227 228 modulePackage = mkOption { ··· 238 default = inInitrd || inSystem; 239 defaultText = literalMD "`true` if ZFS filesystem support is enabled"; 240 description = lib.mdDoc "True if ZFS filesystem support is enabled"; 241 }; 242 243 allowHibernation = mkOption {
+2
nixos/tests/all-tests.nix
··· 512 mastodon = discoverTests (import ./web-apps/mastodon { inherit handleTestOn; }); 513 pixelfed = discoverTests (import ./web-apps/pixelfed { inherit handleTestOn; }); 514 mate = handleTest ./mate.nix {}; 515 matomo = handleTest ./matomo.nix {}; 516 matrix-appservice-irc = handleTest ./matrix/appservice-irc.nix {}; 517 matrix-conduit = handleTest ./matrix/conduit.nix {}; ··· 916 tor = handleTest ./tor.nix {}; 917 traefik = handleTestOn ["aarch64-linux" "x86_64-linux"] ./traefik.nix {}; 918 trafficserver = handleTest ./trafficserver.nix {}; 919 transmission = handleTest ./transmission.nix { transmission = pkgs.transmission; }; 920 transmission_4 = handleTest ./transmission.nix { transmission = pkgs.transmission_4; }; 921 # tracee requires bpf
··· 512 mastodon = discoverTests (import ./web-apps/mastodon { inherit handleTestOn; }); 513 pixelfed = discoverTests (import ./web-apps/pixelfed { inherit handleTestOn; }); 514 mate = handleTest ./mate.nix {}; 515 + matter-server = handleTest ./matter-server.nix {}; 516 matomo = handleTest ./matomo.nix {}; 517 matrix-appservice-irc = handleTest ./matrix/appservice-irc.nix {}; 518 matrix-conduit = handleTest ./matrix/conduit.nix {}; ··· 917 tor = handleTest ./tor.nix {}; 918 traefik = handleTestOn ["aarch64-linux" "x86_64-linux"] ./traefik.nix {}; 919 trafficserver = handleTest ./trafficserver.nix {}; 920 + transfer-sh = handleTest ./transfer-sh.nix {}; 921 transmission = handleTest ./transmission.nix { transmission = pkgs.transmission; }; 922 transmission_4 = handleTest ./transmission.nix { transmission = pkgs.transmission_4; }; 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 os.environ['NIX_DISK_IMAGE'] = tmp_disk_image.name 70 71 machine.succeed("findmnt --kernel --source ${rootFsDevice} --target /") 72 ''; 73 }
··· 69 os.environ['NIX_DISK_IMAGE'] = tmp_disk_image.name 70 71 machine.succeed("findmnt --kernel --source ${rootFsDevice} --target /") 72 + 73 + # Make sure systemd boot didn't clobber this 74 + machine.succeed("[ ! -e /homeless-shelter ]") 75 ''; 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 8 let 9 10 - makeZfsTest = name: 11 { kernelPackages 12 , enableSystemdStage1 ? false 13 , zfsPackage 14 , extraTest ? "" 15 }: 16 makeTest { 17 - name = "zfs-" + name; 18 meta = with pkgs.lib.maintainers; { 19 maintainers = [ elvishjerricco ]; 20 }; ··· 192 in { 193 194 # maintainer: @raitobezarius 195 - series_2_1 = makeZfsTest "2.1-series" { 196 zfsPackage = pkgs.zfs_2_1; 197 kernelPackages = pkgs.linuxPackages; 198 }; 199 200 - stable = makeZfsTest "stable" { 201 - zfsPackage = pkgs.zfsStable; 202 kernelPackages = pkgs.linuxPackages; 203 }; 204 205 - unstable = makeZfsTest "unstable" rec { 206 - zfsPackage = pkgs.zfsUnstable; 207 kernelPackages = zfsPackage.latestCompatibleLinuxPackages; 208 }; 209 210 - unstableWithSystemdStage1 = makeZfsTest "unstable" rec { 211 - zfsPackage = pkgs.zfsUnstable; 212 kernelPackages = zfsPackage.latestCompatibleLinuxPackages; 213 enableSystemdStage1 = true; 214 };
··· 7 8 let 9 10 + makeZfsTest = 11 { kernelPackages 12 , enableSystemdStage1 ? false 13 , zfsPackage 14 , extraTest ? "" 15 }: 16 makeTest { 17 + name = zfsPackage.kernelModuleAttribute; 18 meta = with pkgs.lib.maintainers; { 19 maintainers = [ elvishjerricco ]; 20 }; ··· 192 in { 193 194 # maintainer: @raitobezarius 195 + series_2_1 = makeZfsTest { 196 zfsPackage = pkgs.zfs_2_1; 197 kernelPackages = pkgs.linuxPackages; 198 }; 199 200 + series_2_2 = makeZfsTest { 201 + zfsPackage = pkgs.zfs_2_2; 202 kernelPackages = pkgs.linuxPackages; 203 }; 204 205 + unstable = makeZfsTest rec { 206 + zfsPackage = pkgs.zfs_unstable; 207 kernelPackages = zfsPackage.latestCompatibleLinuxPackages; 208 }; 209 210 + unstableWithSystemdStage1 = makeZfsTest rec { 211 + zfsPackage = pkgs.zfs_unstable; 212 kernelPackages = zfsPackage.latestCompatibleLinuxPackages; 213 enableSystemdStage1 = true; 214 };
+2 -2
pkgs/applications/audio/monkeys-audio/default.nix
··· 5 }: 6 7 stdenv.mkDerivation (finalAttrs: { 8 - version = "10.49"; 9 pname = "monkeys-audio"; 10 11 src = fetchzip { 12 url = "https://monkeysaudio.com/files/MAC_${ 13 builtins.concatStringsSep "" (lib.strings.splitString "." finalAttrs.version)}_SDK.zip"; 14 - hash = "sha256-OhTqBFNwmReMT1U11CIB7XCTohiILdd2nDFp+9nfObs="; 15 stripRoot = false; 16 }; 17 nativeBuildInputs = [
··· 5 }: 6 7 stdenv.mkDerivation (finalAttrs: { 8 + version = "10.52"; 9 pname = "monkeys-audio"; 10 11 src = fetchzip { 12 url = "https://monkeysaudio.com/files/MAC_${ 13 builtins.concatStringsSep "" (lib.strings.splitString "." finalAttrs.version)}_SDK.zip"; 14 + hash = "sha256-n+bQzvuCTt7dnqkPO592KKZeShmMlbp/KAXK0F2dlTg="; 15 stripRoot = false; 16 }; 17 nativeBuildInputs = [
+14 -14
pkgs/applications/audio/ptcollab/default.nix pkgs/by-name/pt/ptcollab/package.nix
··· 1 - { mkDerivation 2 , lib 3 - , stdenv 4 , fetchFromGitHub 5 , nix-update-script 6 , libvorbis 7 , pkg-config 8 - , qmake 9 - , qtbase 10 - , qttools 11 - , qtmultimedia 12 , rtmidi 13 }: 14 15 - mkDerivation rec { 16 pname = "ptcollab"; 17 - version = "0.6.4.7"; 18 19 src = fetchFromGitHub { 20 owner = "yuxshao"; 21 repo = "ptcollab"; 22 - rev = "v${version}"; 23 - hash = "sha256-KYNov/HbKM2d8VVO8iyWA3XWFDE9iWeKkRCNC1xlPNw="; 24 }; 25 26 nativeBuildInputs = [ 27 pkg-config 28 qmake 29 qttools 30 - ]; 31 32 buildInputs = [ 33 libvorbis 34 qtbase 35 qtmultimedia 36 - rtmidi 37 - ]; 38 39 postInstall = lib.optionalString stdenv.hostPlatform.isDarwin '' 40 # Move appbundles to Applications before wrapping happens ··· 54 meta = with lib; { 55 description = "Experimental pxtone editor where you can collaborate with friends"; 56 homepage = "https://yuxshao.github.io/ptcollab/"; 57 license = licenses.mit; 58 maintainers = with maintainers; [ OPNA2608 ]; 59 platforms = platforms.all; 60 }; 61 - }
··· 1 + { stdenv 2 , lib 3 , fetchFromGitHub 4 , nix-update-script 5 + , libsForQt5 6 , libvorbis 7 , pkg-config 8 , rtmidi 9 }: 10 11 + stdenv.mkDerivation (finalAttrs: { 12 pname = "ptcollab"; 13 + version = "0.6.4.8"; 14 15 src = fetchFromGitHub { 16 owner = "yuxshao"; 17 repo = "ptcollab"; 18 + rev = "v${finalAttrs.version}"; 19 + hash = "sha256-9u2K79QJRfYKL66e1lsRrQMEqmKTWbK+ucal3/u4rP4="; 20 }; 21 22 nativeBuildInputs = [ 23 pkg-config 24 + ] ++ (with libsForQt5; [ 25 qmake 26 qttools 27 + wrapQtAppsHook 28 + ]); 29 30 buildInputs = [ 31 libvorbis 32 + rtmidi 33 + ] ++ (with libsForQt5; [ 34 qtbase 35 qtmultimedia 36 + ]); 37 38 postInstall = lib.optionalString stdenv.hostPlatform.isDarwin '' 39 # Move appbundles to Applications before wrapping happens ··· 53 meta = with lib; { 54 description = "Experimental pxtone editor where you can collaborate with friends"; 55 homepage = "https://yuxshao.github.io/ptcollab/"; 56 + changelog = "https://github.com/yuxshao/ptcollab/releases/tag/v${finalAttrs.version}"; 57 license = licenses.mit; 58 maintainers = with maintainers; [ OPNA2608 ]; 59 platforms = platforms.all; 60 }; 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 23 rustPlatform.buildRustPackage rec { 24 pname = "oculante"; 25 - version = "0.8.11"; 26 27 src = fetchFromGitHub { 28 owner = "woelper"; 29 repo = "oculante"; 30 rev = version; 31 - hash = "sha256-5nOXt2c7byO+JdVXADu2TyO4vtLyg8UBWerPFMGHcso="; 32 }; 33 34 - cargoHash = "sha256-l1JYZxwvNnaff1PYPXniHmfNMG2Um5aPKTYuh/LCHoE="; 35 36 nativeBuildInputs = [ 37 cmake
··· 22 23 rustPlatform.buildRustPackage rec { 24 pname = "oculante"; 25 + version = "0.8.13"; 26 27 src = fetchFromGitHub { 28 owner = "woelper"; 29 repo = "oculante"; 30 rev = version; 31 + hash = "sha256-RbRvV3OkRZXc0n7qGzqbBtbU81wFc+/Ohg9pbVqdsw4="; 32 }; 33 34 + cargoHash = "sha256-qt4bHCHpiP6yOce9hquVVlLFF906ADwhss4xAP9E0fA="; 35 36 nativeBuildInputs = [ 37 cmake
+2 -2
pkgs/applications/graphics/upscayl/default.nix
··· 4 lib, 5 }: let 6 pname = "upscayl"; 7 - version = "2.9.9"; 8 9 src = fetchurl { 10 url = "https://github.com/upscayl/upscayl/releases/download/v${version}/upscayl-${version}-linux.AppImage"; 11 - hash = "sha256-EoTFvlLsXQYZldXfEHhP3/bHygm+NdeDsf+p138mM8w"; 12 }; 13 14 appimageContents = appimageTools.extractType2 {
··· 4 lib, 5 }: let 6 pname = "upscayl"; 7 + version = "2.10.0"; 8 9 src = fetchurl { 10 url = "https://github.com/upscayl/upscayl/releases/download/v${version}/upscayl-${version}-linux.AppImage"; 11 + hash = "sha256-nRYNYNHIkbvvQZd1zRDCCsCadgRgV/yn9WfaKjt44O8="; 12 }; 13 14 appimageContents = appimageTools.extractType2 {
+2 -2
pkgs/applications/misc/calibre/default.nix
··· 32 33 stdenv.mkDerivation (finalAttrs: { 34 pname = "calibre"; 35 - version = "7.5.1"; 36 37 src = fetchurl { 38 url = "https://download.calibre-ebook.com/${finalAttrs.version}/calibre-${finalAttrs.version}.tar.xz"; 39 - hash = "sha256-pGo9fWyeX5hpw5YOV05tWy/0YxHShStKN96LMPnqIiA="; 40 }; 41 42 patches = [
··· 32 33 stdenv.mkDerivation (finalAttrs: { 34 pname = "calibre"; 35 + version = "7.6.0"; 36 37 src = fetchurl { 38 url = "https://download.calibre-ebook.com/${finalAttrs.version}/calibre-${finalAttrs.version}.tar.xz"; 39 + hash = "sha256-fD2kTwH692x6Nm93NrUQvmbcXiX9hHBpo4wvUvBqLAM="; 40 }; 41 42 patches = [
+2 -2
pkgs/applications/misc/logseq/default.nix
··· 14 15 in { 16 pname = "logseq"; 17 - version = "0.10.6"; 18 19 src = fetchurl { 20 url = "https://github.com/logseq/logseq/releases/download/${version}/logseq-linux-x64-${version}.AppImage"; 21 - hash = "sha256-OUQh+6HRnzxw8Nn/OkU+DkjPKWKpMN0xchD1vPU3KV8="; 22 name = "${pname}-${version}.AppImage"; 23 }; 24
··· 14 15 in { 16 pname = "logseq"; 17 + version = "0.10.7"; 18 19 src = fetchurl { 20 url = "https://github.com/logseq/logseq/releases/download/${version}/logseq-linux-x64-${version}.AppImage"; 21 + hash = "sha256-EC83D7tSpoDV6h363yIdX9IrTfoMd4b0hTVdW1T0pXg="; 22 name = "${pname}-${version}.AppImage"; 23 }; 24
+3 -3
pkgs/applications/misc/ttdl/default.nix
··· 5 6 rustPlatform.buildRustPackage rec { 7 pname = "ttdl"; 8 - version = "4.2.0"; 9 10 src = fetchFromGitHub { 11 owner = "VladimirMarkelov"; 12 repo = "ttdl"; 13 rev = "v${version}"; 14 - sha256 = "sha256-5OYOF8SvjPn/gZf/utcpv1zVvVbB1HeB1mkMiJtBjOQ="; 15 }; 16 17 - cargoHash = "sha256-MLypY7Dbr1/4hJ2UYmNOVp0nNWrq3DDTEidgkL0X0AU="; 18 19 meta = with lib; { 20 description = "A CLI tool to manage todo lists in todo.txt format";
··· 5 6 rustPlatform.buildRustPackage rec { 7 pname = "ttdl"; 8 + version = "4.2.1"; 9 10 src = fetchFromGitHub { 11 owner = "VladimirMarkelov"; 12 repo = "ttdl"; 13 rev = "v${version}"; 14 + sha256 = "sha256-fspqUzF3QqFpd16J1dbcNMdqjcR3PIiRu/s+VB4KgwQ="; 15 }; 16 17 + cargoHash = "sha256-dvzm9lbVGGM4t6KZcHSlqwo55jssxi8HyFREMaj5I0Q="; 18 19 meta = with lib; { 20 description = "A CLI tool to manage todo lists in todo.txt format";
+2 -2
pkgs/applications/misc/wofi/default.nix
··· 11 }: 12 stdenv.mkDerivation rec { 13 pname = "wofi"; 14 - version = "1.4"; 15 16 src = fetchFromSourcehut { 17 repo = pname; 18 owner = "~scoopta"; 19 rev = "v${version}"; 20 - sha256 = "sha256-zzBD1OPPlOjAUaJOlMf6k1tSai1w1ZvOwy2sSOWI7AM="; 21 vc = "hg"; 22 }; 23
··· 11 }: 12 stdenv.mkDerivation rec { 13 pname = "wofi"; 14 + version = "1.4.1"; 15 16 src = fetchFromSourcehut { 17 repo = pname; 18 owner = "~scoopta"; 19 rev = "v${version}"; 20 + sha256 = "sha256-aedoUhVfk8ljmQ23YxVmGZ00dPpRftW2dnRAgXmtV/w="; 21 vc = "hg"; 22 }; 23
+2 -2
pkgs/applications/networking/cluster/atmos/default.nix
··· 2 3 buildGoModule rec { 4 pname = "atmos"; 5 - version = "1.64.1"; 6 7 src = fetchFromGitHub { 8 owner = "cloudposse"; 9 repo = pname; 10 rev = "v${version}"; 11 - sha256 = "sha256-QHXBvZThLi5Gnpc7fmitkvl3JU1i/g2jz8c6U4//6mU="; 12 }; 13 14 vendorHash = "sha256-i7m9YXPlWqHtvC4Df7v5bLWt2tqeT933t2+Xit5RQxg=";
··· 2 3 buildGoModule rec { 4 pname = "atmos"; 5 + version = "1.64.3"; 6 7 src = fetchFromGitHub { 8 owner = "cloudposse"; 9 repo = pname; 10 rev = "v${version}"; 11 + sha256 = "sha256-Z27wFAWstsQliDiYl93yY9LDeVcGEWcrmggGJI60hxk="; 12 }; 13 14 vendorHash = "sha256-i7m9YXPlWqHtvC4Df7v5bLWt2tqeT933t2+Xit5RQxg=";
+3 -3
pkgs/applications/networking/cluster/werf/default.nix
··· 10 11 buildGoModule rec { 12 pname = "werf"; 13 - version = "1.2.294"; 14 15 src = fetchFromGitHub { 16 owner = "werf"; 17 repo = "werf"; 18 rev = "v${version}"; 19 - hash = "sha256-A/Do2UepwV8lmT8qWir7CKR8/YeVKOEoJjvVfj9+wt0="; 20 }; 21 22 - vendorHash = "sha256-Fb9drtVITjka83Y8+YSa9fqSBv7O4muMGqV4w3K7+Dg="; 23 24 proxyVendor = true; 25
··· 10 11 buildGoModule rec { 12 pname = "werf"; 13 + version = "1.2.295"; 14 15 src = fetchFromGitHub { 16 owner = "werf"; 17 repo = "werf"; 18 rev = "v${version}"; 19 + hash = "sha256-oQDP2Tsxj4c5X2pfj4i+hfnsdjUBYcyF2p61OY04Ozg="; 20 }; 21 22 + vendorHash = "sha256-6q13vMxu0iQgaXS+Z6V0jjSIhxMscw6sLANzK07gAlI="; 23 24 proxyVendor = true; 25
+2 -2
pkgs/applications/science/physics/nnpdf/default.nix
··· 15 16 stdenv.mkDerivation rec { 17 pname = "nnpdf"; 18 - version = "4.0.8"; 19 20 src = fetchFromGitHub { 21 owner = "NNPDF"; 22 repo = pname; 23 rev = version; 24 - hash = "sha256-hGCA2K/fD6UZa9WD42IDmZV1oxNgjFaXkjOZKGgGSBg="; 25 }; 26 27 postPatch = ''
··· 15 16 stdenv.mkDerivation rec { 17 pname = "nnpdf"; 18 + version = "4.0.9"; 19 20 src = fetchFromGitHub { 21 owner = "NNPDF"; 22 repo = pname; 23 rev = version; 24 + hash = "sha256-PyhkHlOlzKfDxUX91NkeZWjdEzFR4PW0Yh5Yz6ZA27g="; 25 }; 26 27 postPatch = ''
+9 -7
pkgs/applications/window-managers/hyprwm/hyprland/default.nix
··· 9 , cairo 10 , git 11 , hyprland-protocols 12 , jq 13 , libGL 14 , libdrm ··· 31 , debug ? false 32 , enableXWayland ? true 33 , legacyRenderer ? false 34 - , withSystemd ? true 35 , wrapRuntimeDeps ? true 36 # deprecated flags 37 , nvidiaPatches ? false ··· 43 assert lib.assertMsg (!hidpiXWayland) "The option `hidpiXWayland` has been removed. Please refer https://wiki.hyprland.org/Configuring/XWayland"; 44 stdenv.mkDerivation (finalAttrs: { 45 pname = "hyprland" + lib.optionalString debug "-debug"; 46 - version = "0.35.0"; 47 48 src = fetchFromGitHub { 49 owner = "hyprwm"; 50 repo = finalAttrs.pname; 51 rev = "v${finalAttrs.version}"; 52 - hash = "sha256-dU5m6Cd4+WQZal2ICDVf1kww/dNzo1YUWRxWeCctEig="; 53 }; 54 55 patches = [ ··· 92 cairo 93 git 94 hyprland-protocols 95 libGL 96 libdrm 97 libinput ··· 116 117 mesonAutoFeatures = "disabled"; 118 119 - mesonFlags = builtins.concatLists [ 120 - (lib.optional enableXWayland "-Dxwayland=enabled") 121 - (lib.optional legacyRenderer "-Dlegacy_renderer=enabled") 122 - (lib.optional withSystemd "-Dsystemd=enabled") 123 ]; 124 125 postInstall = ''
··· 9 , cairo 10 , git 11 , hyprland-protocols 12 + , hyprlang 13 , jq 14 , libGL 15 , libdrm ··· 32 , debug ? false 33 , enableXWayland ? true 34 , legacyRenderer ? false 35 + , withSystemd ? lib.meta.availableOn stdenv.hostPlatform systemd 36 , wrapRuntimeDeps ? true 37 # deprecated flags 38 , nvidiaPatches ? false ··· 44 assert lib.assertMsg (!hidpiXWayland) "The option `hidpiXWayland` has been removed. Please refer https://wiki.hyprland.org/Configuring/XWayland"; 45 stdenv.mkDerivation (finalAttrs: { 46 pname = "hyprland" + lib.optionalString debug "-debug"; 47 + version = "0.36.0"; 48 49 src = fetchFromGitHub { 50 owner = "hyprwm"; 51 repo = finalAttrs.pname; 52 rev = "v${finalAttrs.version}"; 53 + hash = "sha256-oZe4k6jtO/0govmERGcbeyvE9EfTvXY5bnyIs6AsL9U="; 54 }; 55 56 patches = [ ··· 93 cairo 94 git 95 hyprland-protocols 96 + hyprlang 97 libGL 98 libdrm 99 libinput ··· 118 119 mesonAutoFeatures = "disabled"; 120 121 + mesonFlags = [ 122 + (lib.mesonEnable "xwayland" enableXWayland) 123 + (lib.mesonEnable "legacy_renderer" legacyRenderer) 124 + (lib.mesonEnable "systemd" withSystemd) 125 ]; 126 127 postInstall = ''
+8 -9
pkgs/applications/window-managers/hyprwm/hyprland/plugins.nix
··· 5 , hyprland 6 }: 7 let 8 - mkHyprlandPlugin = 9 args@{ pluginName, ... }: 10 stdenv.mkDerivation (args // { 11 pname = "${pluginName}"; ··· 14 ++ hyprland.buildInputs 15 ++ (args.buildInputs or [ ]); 16 meta = args.meta // { 17 - description = (args.meta.description or ""); 18 - longDescription = (args.meta.lonqDescription or "") + 19 "\n\nPlugins can be installed via a plugin entry in the Hyprland NixOS or Home Manager options."; 20 }; 21 }); 22 23 plugins = { 24 hy3 = { fetchFromGitHub, cmake, hyprland }: 25 - mkHyprlandPlugin rec { 26 pluginName = "hy3"; 27 - version = "0.35.0"; 28 29 src = fetchFromGitHub { 30 owner = "outfoxxed"; 31 repo = "hy3"; 32 - rev = "hl${version}"; 33 - hash = "sha256-lFe7Lf0K5ePTh4gflnvBohOGH4ayGDtNkbg/XtoNqRo="; 34 }; 35 36 nativeBuildInputs = [ cmake ]; ··· 47 }; 48 }; 49 in 50 - lib.mapAttrs (name: plugin: callPackage plugin { }) plugins 51 -
··· 5 , hyprland 6 }: 7 let 8 + mkHyprlandPlugin = hyprland: 9 args@{ pluginName, ... }: 10 stdenv.mkDerivation (args // { 11 pname = "${pluginName}"; ··· 14 ++ hyprland.buildInputs 15 ++ (args.buildInputs or [ ]); 16 meta = args.meta // { 17 + description = args.meta.description or ""; 18 + longDescription = (args.meta.longDescription or "") + 19 "\n\nPlugins can be installed via a plugin entry in the Hyprland NixOS or Home Manager options."; 20 }; 21 }); 22 23 plugins = { 24 hy3 = { fetchFromGitHub, cmake, hyprland }: 25 + mkHyprlandPlugin hyprland rec { 26 pluginName = "hy3"; 27 + version = "unstable-2024-02-23"; 28 29 src = fetchFromGitHub { 30 owner = "outfoxxed"; 31 repo = "hy3"; 32 + rev = "029a2001361d2a4cbbe7447968dee5d1b1880298"; 33 + hash = "sha256-8LKCXwNU6wA8o6O7s9T2sLWbYNHaI1tYU4YMjHkNLZQ="; 34 }; 35 36 nativeBuildInputs = [ cmake ]; ··· 47 }; 48 }; 49 in 50 + (lib.mapAttrs (name: plugin: callPackage plugin { }) plugins) // { inherit mkHyprlandPlugin; }
+2 -2
pkgs/applications/window-managers/hyprwm/hyprland/wlroots.nix
··· 9 domain = "gitlab.freedesktop.org"; 10 owner = "wlroots"; 11 repo = "wlroots"; 12 - rev = "00b869c1a96f300a8f25da95d624524895e0ddf2"; 13 - hash = "sha256-5HUTG0p+nCJv3cn73AmFHRZdfRV5AD5N43g8xAePSKM="; 14 }; 15 16 patches = [ ]; # don't inherit old.patches
··· 9 domain = "gitlab.freedesktop.org"; 10 owner = "wlroots"; 11 repo = "wlroots"; 12 + rev = "0cb091f1a2d345f37d2ee445f4ffd04f7f4ec9e5"; 13 + hash = "sha256-Mz6hCtommq7RQfcPnxLINigO4RYSNt23HeJHC6mVmWI="; 14 }; 15 16 patches = [ ]; # don't inherit old.patches
+80
pkgs/by-name/README.md
··· 118 ``` 119 120 See [here](../../.github/workflows/check-by-name.yml) for more info.
··· 118 ``` 119 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 34 stdenv.mkDerivation (finalAttrs: { 35 pname = "apt"; 36 - version = "2.7.12"; 37 38 src = fetchurl { 39 url = "mirror://debian/pool/main/a/apt/apt_${finalAttrs.version}.tar.xz"; 40 - hash = "sha256-5G0Wa1/Ih8LZvKet1+DM2lR7lit2LhJyoIwEJrqpnK8="; 41 }; 42 43 # cycle detection; lib can't be split
··· 33 34 stdenv.mkDerivation (finalAttrs: { 35 pname = "apt"; 36 + version = "2.7.13"; 37 38 src = fetchurl { 39 url = "mirror://debian/pool/main/a/apt/apt_${finalAttrs.version}.tar.xz"; 40 + hash = "sha256-xCq1XpHXvuX8v3/4w1hHFMusqgNl8JHn5gT3+Ek8fjU="; 41 }; 42 43 # cycle detection; lib can't be split
+5 -5
pkgs/by-name/co/codeium/package.nix
··· 13 }.${system} or throwSystem; 14 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="; 20 }.${system} or throwSystem; 21 22 bin = "$out/bin/codeium_language_server"; ··· 24 in 25 stdenv.mkDerivation (finalAttrs: { 26 pname = "codeium"; 27 - version = "1.6.39"; 28 src = fetchurl { 29 name = "${finalAttrs.pname}-${finalAttrs.version}.gz"; 30 url = "https://github.com/Exafunction/codeium/releases/download/language-server-v${finalAttrs.version}/language_server_${plat}.gz";
··· 13 }.${system} or throwSystem; 14 15 hash = { 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 }.${system} or throwSystem; 21 22 bin = "$out/bin/codeium_language_server"; ··· 24 in 25 stdenv.mkDerivation (finalAttrs: { 26 pname = "codeium"; 27 + version = "1.8.0"; 28 src = fetchurl { 29 name = "${finalAttrs.pname}-${finalAttrs.version}.gz"; 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 , fsverity-utils 17 , nix-update-script 18 , testers 19 20 , fuseSupport ? lib.meta.availableOn stdenv.hostPlatform fuse3 21 , enableValgrindCheck ? false ··· 23 }: 24 stdenv.mkDerivation (finalAttrs: { 25 pname = "composefs"; 26 - version = "1.0.2"; 27 28 src = fetchFromGitHub { 29 owner = "containers"; 30 repo = "composefs"; 31 rev = "v${finalAttrs.version}"; 32 - hash = "sha256-ViZkmuLFV5DN1nqWKGl+yaqhYUEOztZ1zGpxjr1U/dw="; 33 }; 34 35 strictDeps = true; ··· 69 70 passthru = { 71 updateScript = nix-update-script { }; 72 - tests.pkg-config = testers.testMetaPkgConfig finalAttrs.finalPackage; 73 }; 74 75 meta = {
··· 16 , fsverity-utils 17 , nix-update-script 18 , testers 19 + , nixosTests 20 21 , fuseSupport ? lib.meta.availableOn stdenv.hostPlatform fuse3 22 , enableValgrindCheck ? false ··· 24 }: 25 stdenv.mkDerivation (finalAttrs: { 26 pname = "composefs"; 27 + version = "1.0.3"; 28 29 src = fetchFromGitHub { 30 owner = "containers"; 31 repo = "composefs"; 32 rev = "v${finalAttrs.version}"; 33 + hash = "sha256-YmredtZZKMjzJW/kxiTUmdgO/1iPIKzJsuJz8DeEdGM="; 34 }; 35 36 strictDeps = true; ··· 70 71 passthru = { 72 updateScript = nix-update-script { }; 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 + }; 78 }; 79 80 meta = {
+3 -3
pkgs/by-name/ek/eksctl/package.nix
··· 6 7 buildGoModule rec { 8 pname = "eksctl"; 9 - version = "0.172.0"; 10 11 src = fetchFromGitHub { 12 owner = "weaveworks"; 13 repo = pname; 14 rev = version; 15 - hash = "sha256-DzbCtTXeoERV9ceUsZ+srATIyviJp+oNyB7EE/iHe6g="; 16 }; 17 18 - vendorHash = "sha256-P+T+ynSkG3KEmJsrzJusCPBD1ClaVK/VIHD+2xkGswQ="; 19 20 doCheck = false; 21
··· 6 7 buildGoModule rec { 8 pname = "eksctl"; 9 + version = "0.173.0"; 10 11 src = fetchFromGitHub { 12 owner = "weaveworks"; 13 repo = pname; 14 rev = version; 15 + hash = "sha256-PVBt+AoYd8fMYHzBpgQ261TGlkmyooN7UKX9ooXaRYA="; 16 }; 17 18 + vendorHash = "sha256-5bHZt+Oze7JiaY0dKjoMNDdU6wzMphgZ3W3NveRKGy0="; 19 20 doCheck = false; 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 11 buildGoModule rec { 12 pname = "hugo"; 13 - version = "0.123.4"; 14 15 src = fetchFromGitHub { 16 owner = "gohugoio"; 17 repo = "hugo"; 18 rev = "refs/tags/v${version}"; 19 - hash = "sha256-AJ/uK2eunQgsCcXR8FcQ9TVvMXs56J0gpfXRQCX78qY="; 20 }; 21 22 - vendorHash = "sha256-6qNICaj+P0VRl/crbiucZ7CpBG1vwFURkvOdaH6WidU="; 23 24 doCheck = false; 25
··· 10 11 buildGoModule rec { 12 pname = "hugo"; 13 + version = "0.123.6"; 14 15 src = fetchFromGitHub { 16 owner = "gohugoio"; 17 repo = "hugo"; 18 rev = "refs/tags/v${version}"; 19 + hash = "sha256-gLow1AcUROid6skLDdaJ9E3mPi99KPoOO/ZFdLBineU="; 20 }; 21 22 + vendorHash = "sha256-V7YRrC+6fOIjXOu7E0kIOZZt++4oFLPhmHeWmOVU3Xw="; 23 24 doCheck = false; 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 , fetchFromGitHub 4 , cmake 5 , pkg-config 6 }: 7 8 stdenv.mkDerivation (finalAttrs: { ··· 30 "-DENABLE_X11=ON" 31 "-DINSTALL_EXAMPLE_CODE=OFF" 32 "-DBUILD_TOOLS=OFF" 33 ]; 34 35 meta = with lib; {
··· 3 , fetchFromGitHub 4 , cmake 5 , pkg-config 6 + , substituteAll 7 + , addDriverRunpath 8 }: 9 10 stdenv.mkDerivation (finalAttrs: { ··· 32 "-DENABLE_X11=ON" 33 "-DINSTALL_EXAMPLE_CODE=OFF" 34 "-DBUILD_TOOLS=OFF" 35 + ]; 36 + 37 + patches = [ 38 + (substituteAll { 39 + src = ./opengl-driver-lib.patch; 40 + inherit (addDriverRunpath) driverLink; 41 + }) 42 ]; 43 44 meta = with lib; {
+2 -2
pkgs/by-name/li/live555/package.nix
··· 9 10 stdenv.mkDerivation (finalAttrs: { 11 pname = "live555"; 12 - version = "2023.11.30"; 13 14 src = fetchurl { 15 urls = [ ··· 18 "https://download.videolan.org/contrib/live555/live.${finalAttrs.version}.tar.gz" 19 "mirror://sourceforge/slackbuildsdirectlinks/live.${finalAttrs.version}.tar.gz" 20 ]; 21 - hash = "sha256-xue+9YtdAM2XkzAY6dU2PZ3n6bvPwlULIHqBqc8wuSU="; 22 }; 23 24 patches = [
··· 9 10 stdenv.mkDerivation (finalAttrs: { 11 pname = "live555"; 12 + version = "2024.02.23"; 13 14 src = fetchurl { 15 urls = [ ··· 18 "https://download.videolan.org/contrib/live555/live.${finalAttrs.version}.tar.gz" 19 "mirror://sourceforge/slackbuildsdirectlinks/live.${finalAttrs.version}.tar.gz" 20 ]; 21 + hash = "sha256-85JWXfsPAvocX5PiKXw9Xkd4zm2akzxMeETsZ3xm2wg="; 22 }; 23 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 pname = "nixfmt"; 9 version = "0.5.0"; 10 src = fetchzip { 11 - url = "https://github.com/piegamesde/nixfmt/archive/d6930fd0c62c4d7ec9e4a814adc3d2f590d96271.tar.gz"; 12 - sha256 = "1ijrdzdwricv4asmy296j7gzvhambv96nlxi3qrxb4lj1by6a34m"; 13 }; 14 isLibrary = true; 15 isExecutable = true;
··· 8 pname = "nixfmt"; 9 version = "0.5.0"; 10 src = fetchzip { 11 + url = "https://github.com/piegamesde/nixfmt/archive/2b5ee820690bae64cb4003e46917ae43541e3e0b.tar.gz"; 12 + sha256 = "1i1jbc1q4gd7fpilwy6s3a583yl5l8d8rlmipygj61mpclg9ihqg"; 13 }; 14 isLibrary = true; 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 14 stdenv.mkDerivation rec { 15 pname = "rsgain"; 16 - version = "3.4"; 17 18 src = fetchFromGitHub { 19 owner = "complexlogic"; 20 repo = "rsgain"; 21 rev = "v${version}"; 22 - sha256 = "sha256-AiNjsrwTF6emcwXo2TPMbs8mLavGS7NsvytAppMGKfY="; 23 }; 24 25 cmakeFlags = ["-DCMAKE_BUILD_TYPE='Release'"];
··· 13 14 stdenv.mkDerivation rec { 15 pname = "rsgain"; 16 + version = "3.5"; 17 18 src = fetchFromGitHub { 19 owner = "complexlogic"; 20 repo = "rsgain"; 21 rev = "v${version}"; 22 + sha256 = "sha256-qIRtdgfGDNbZk9TQ3GC3lYetRqjOk8QPhAb4MuFuN0U="; 23 }; 24 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 3 stdenv.mkDerivation (finalAttrs: { 4 pname = "tippecanoe"; 5 - version = "2.46.0"; 6 7 src = fetchFromGitHub { 8 owner = "felt"; 9 repo = "tippecanoe"; 10 rev = finalAttrs.version; 11 - hash = "sha256-UsQb90DKK05JByF3rh6kcvSaugEemU2Gg4c/owImNVs="; 12 }; 13 14 buildInputs = [ sqlite zlib ]; ··· 32 license = licenses.bsd2; 33 maintainers = with maintainers; [ sikmir ]; 34 platforms = platforms.unix; 35 }; 36 })
··· 2 3 stdenv.mkDerivation (finalAttrs: { 4 pname = "tippecanoe"; 5 + version = "2.47.0"; 6 7 src = fetchFromGitHub { 8 owner = "felt"; 9 repo = "tippecanoe"; 10 rev = finalAttrs.version; 11 + hash = "sha256-tkecrbrkwYJU0eZMzU+7rJGAn+S/vnh/rw5co0x1m5M="; 12 }; 13 14 buildInputs = [ sqlite zlib ]; ··· 32 license = licenses.bsd2; 33 maintainers = with maintainers; [ sikmir ]; 34 platforms = platforms.unix; 35 + mainProgram = "tippecanoe"; 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 13 stdenv.mkDerivation (finalAttrs: { 14 pname = "waycheck"; 15 - version = "1.1.0"; 16 17 src = fetchFromGitLab { 18 domain = "gitlab.freedesktop.org"; 19 owner = "serebit"; 20 repo = "waycheck"; 21 rev = "v${finalAttrs.version}"; 22 - hash = "sha256-y8fuy2ed2yPRiqusMZBD7mzFBDavmdByBzEaI6P5byk="; 23 }; 24 25 nativeBuildInputs = [
··· 12 13 stdenv.mkDerivation (finalAttrs: { 14 pname = "waycheck"; 15 + version = "1.1.1"; 16 17 src = fetchFromGitLab { 18 domain = "gitlab.freedesktop.org"; 19 owner = "serebit"; 20 repo = "waycheck"; 21 rev = "v${finalAttrs.version}"; 22 + hash = "sha256-kwkdTMA15oJHz9AXEkBGeuzYdEUpNuv/xnhzoKOHCE4="; 23 }; 24 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 sha256 = "189gjqzdz10xh3ybiy4ch1r98bsmkcb4hpnrmggd4y2g5kqnyx4y"; 25 }; 26 27 - "2.4.0" = { 28 - sha256 = "sha256-g9i3TwjSJUxZuXkLwfZp4JCZRXuIRyDs7L9F9LRtF3Y="; 29 - }; 30 "2.4.1" = { 31 sha256 = "sha256-2k+UhvrUE9OversbCSaTJf20v/fnuI8hld3udDJjz34="; 32 }; 33 }; 34 # Collection of pre-built SBCL binaries for platforms that need them for ··· 96 ); 97 buildInputs = lib.optionals coreCompression [ zstd ]; 98 99 - patches = [ 100 ./search-for-binaries-in-PATH.patch 101 - ] ++ lib.optionals (version == "2.4.0") [ 102 - ./fix-2.4.0-aarch64-darwin.patch 103 ]; 104 105 # I don’t know why these are failing (on ofBorg), and I’d rather just disable
··· 24 sha256 = "189gjqzdz10xh3ybiy4ch1r98bsmkcb4hpnrmggd4y2g5kqnyx4y"; 25 }; 26 27 "2.4.1" = { 28 sha256 = "sha256-2k+UhvrUE9OversbCSaTJf20v/fnuI8hld3udDJjz34="; 29 + }; 30 + "2.4.2" = { 31 + sha256 = "sha256-/APLUtEqr+h1nmMoRQogG73fibFwcaToPznoC0Pd7w8="; 32 }; 33 }; 34 # Collection of pre-built SBCL binaries for platforms that need them for ··· 96 ); 97 buildInputs = lib.optionals coreCompression [ zstd ]; 98 99 + patches = lib.optionals (lib.versionOlder self.version "2.4.2") [ 100 + # Fixed in 2.4.2 101 ./search-for-binaries-in-PATH.patch 102 ]; 103 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 9 stdenv.mkDerivation rec { 10 pname = "cgal"; 11 - version = "5.5.3"; 12 13 src = fetchurl { 14 url = "https://github.com/CGAL/cgal/releases/download/v${version}/CGAL-${version}.tar.xz"; 15 - hash = "sha256-CgT2YmkyVjKLBbq/q7XjpbfbL1pY1S48Ug350IKN3XM="; 16 }; 17 18 # note: optional component libCGAL_ImageIO would need zlib and opengl;
··· 8 9 stdenv.mkDerivation rec { 10 pname = "cgal"; 11 + version = "5.6.1"; 12 13 src = fetchurl { 14 url = "https://github.com/CGAL/cgal/releases/download/v${version}/CGAL-${version}.tar.xz"; 15 + hash = "sha256-zbFefuMeBmNYnTEHp5mIo3t7FxnfPSTyBYVF0bzdWDc="; 16 }; 17 18 # note: optional component libCGAL_ImageIO would need zlib and opengl;
+2 -2
pkgs/development/libraries/audio/vamp-plugin-sdk/default.nix
··· 8 version = "2.10"; 9 10 src = fetchFromGitHub { 11 - owner = "c4dm"; 12 repo = "vamp-plugin-sdk"; 13 rev = "vamp-plugin-sdk-v${version}"; 14 - sha256 = "1lhmskcyk7qqfikmasiw7wjry74gc8g5q6a3j1iya84yd7ll0cz6"; 15 }; 16 17 nativeBuildInputs = [ pkg-config ];
··· 8 version = "2.10"; 9 10 src = fetchFromGitHub { 11 + owner = "vamp-plugins"; 12 repo = "vamp-plugin-sdk"; 13 rev = "vamp-plugin-sdk-v${version}"; 14 + hash = "sha256-5jNA6WmeIOVjkEMZXB5ijxyfJT88alVndBif6dnUFdI="; 15 }; 16 17 nativeBuildInputs = [ pkg-config ];
+2 -2
pkgs/development/libraries/libime/default.nix
··· 29 in 30 stdenv.mkDerivation rec { 31 pname = "libime"; 32 - version = "1.1.5"; 33 34 src = fetchFromGitHub { 35 owner = "fcitx"; 36 repo = "libime"; 37 rev = version; 38 - hash = "sha256-AvlQOpjrHSifUtWSTft2bywlWhwka26VcqqReqAlcv8="; 39 fetchSubmodules = true; 40 }; 41
··· 29 in 30 stdenv.mkDerivation rec { 31 pname = "libime"; 32 + version = "1.1.6"; 33 34 src = fetchFromGitHub { 35 owner = "fcitx"; 36 repo = "libime"; 37 rev = version; 38 + hash = "sha256-PhzJtAGmSkMeXMSe2uR/JKHKlZtL0e3tPDZVoRCvAis="; 39 fetchSubmodules = true; 40 }; 41
+2 -2
pkgs/development/libraries/nng/default.nix
··· 2 3 stdenv.mkDerivation rec { 4 pname = "nng"; 5 - version = "1.7.2"; 6 7 src = fetchFromGitHub { 8 owner = "nanomsg"; 9 repo = "nng"; 10 rev = "v${version}"; 11 - hash = "sha256-CG6Gw/Qrbi96koF2VxKMYPMPT2Zj9U97vNk2JdrfRro="; 12 }; 13 14 nativeBuildInputs = [ cmake ninja ]
··· 2 3 stdenv.mkDerivation rec { 4 pname = "nng"; 5 + version = "1.7.3"; 6 7 src = fetchFromGitHub { 8 owner = "nanomsg"; 9 repo = "nng"; 10 rev = "v${version}"; 11 + hash = "sha256-oP7hO3wCXNPW7877wK+HpGsw7j+U0q4i8aTRVi1v0r0="; 12 }; 13 14 nativeBuildInputs = [ cmake ninja ]
+2 -2
pkgs/development/libraries/xcb-imdkit/default.nix
··· 10 11 stdenv.mkDerivation rec { 12 pname = "xcb-imdkit"; 13 - version = "1.0.6"; 14 15 src = fetchFromGitHub { 16 owner = "fcitx"; 17 repo = "xcb-imdkit"; 18 rev = version; 19 - sha256 = "sha256-1+x4KE2xh6KWbdCBlPxDvHvcKUEj4hiW4fEPCeYfTwc="; 20 }; 21 22 nativeBuildInputs = [
··· 10 11 stdenv.mkDerivation rec { 12 pname = "xcb-imdkit"; 13 + version = "1.0.7"; 14 15 src = fetchFromGitHub { 16 owner = "fcitx"; 17 repo = "xcb-imdkit"; 18 rev = version; 19 + sha256 = "sha256-trfKWCMIuYV0XyCcIsNP8LCTc0MYotXvslRvp76YnKU="; 20 }; 21 22 nativeBuildInputs = [
+9 -1
pkgs/development/libraries/zlog/default.nix
··· 1 - { lib, stdenv, fetchFromGitHub }: 2 3 stdenv.mkDerivation rec { 4 version = "1.2.17"; ··· 10 rev = version; 11 sha256 = "sha256-ckpDMRLxObpl8N539DC5u2bPpmD7jM+KugurUfta6tg="; 12 }; 13 14 makeFlags = [ "PREFIX=${placeholder "out"}" ]; 15
··· 1 + { lib, stdenv, fetchFromGitHub, fetchpatch }: 2 3 stdenv.mkDerivation rec { 4 version = "1.2.17"; ··· 10 rev = version; 11 sha256 = "sha256-ckpDMRLxObpl8N539DC5u2bPpmD7jM+KugurUfta6tg="; 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 + ]; 21 22 makeFlags = [ "PREFIX=${placeholder "out"}" ]; 23
+114 -46
pkgs/development/php-packages/psalm/composer.lock
··· 1192 }, 1193 { 1194 "name": "symfony/console", 1195 - "version": "v7.0.3", 1196 "source": { 1197 "type": "git", 1198 "url": "https://github.com/symfony/console.git", 1199 - "reference": "c5010d50f1ee4b25cfa0201d9915cf1b14071456" 1200 }, 1201 "dist": { 1202 "type": "zip", 1203 - "url": "https://api.github.com/repos/symfony/console/zipball/c5010d50f1ee4b25cfa0201d9915cf1b14071456", 1204 - "reference": "c5010d50f1ee4b25cfa0201d9915cf1b14071456", 1205 "shasum": "" 1206 }, 1207 "require": { 1208 - "php": ">=8.2", 1209 "symfony/polyfill-mbstring": "~1.0", 1210 "symfony/service-contracts": "^2.5|^3", 1211 - "symfony/string": "^6.4|^7.0" 1212 }, 1213 "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" 1219 }, 1220 "provide": { 1221 "psr/log-implementation": "1.0|2.0|3.0" 1222 }, 1223 "require-dev": { 1224 "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", 1228 "symfony/http-foundation": "^6.4|^7.0", 1229 "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" 1235 }, 1236 "type": "library", 1237 "autoload": { ··· 1265 "terminal" 1266 ], 1267 "support": { 1268 - "source": "https://github.com/symfony/console/tree/v7.0.3" 1269 }, 1270 "funding": [ 1271 { ··· 1281 "type": "tidelift" 1282 } 1283 ], 1284 - "time": "2024-01-23T15:02:46+00:00" 1285 }, 1286 { 1287 "name": "symfony/filesystem", 1288 - "version": "v7.0.3", 1289 "source": { 1290 "type": "git", 1291 "url": "https://github.com/symfony/filesystem.git", 1292 - "reference": "2890e3a825bc0c0558526c04499c13f83e1b6b12" 1293 }, 1294 "dist": { 1295 "type": "zip", 1296 - "url": "https://api.github.com/repos/symfony/filesystem/zipball/2890e3a825bc0c0558526c04499c13f83e1b6b12", 1297 - "reference": "2890e3a825bc0c0558526c04499c13f83e1b6b12", 1298 "shasum": "" 1299 }, 1300 "require": { 1301 - "php": ">=8.2", 1302 "symfony/polyfill-ctype": "~1.8", 1303 "symfony/polyfill-mbstring": "~1.8" 1304 }, ··· 1328 "description": "Provides basic utilities for the filesystem", 1329 "homepage": "https://symfony.com", 1330 "support": { 1331 - "source": "https://github.com/symfony/filesystem/tree/v7.0.3" 1332 }, 1333 "funding": [ 1334 { ··· 1344 "type": "tidelift" 1345 } 1346 ], 1347 - "time": "2024-01-23T15:02:46+00:00" 1348 }, 1349 { 1350 "name": "symfony/polyfill-ctype", ··· 1748 }, 1749 { 1750 "name": "symfony/string", 1751 - "version": "v7.0.3", 1752 "source": { 1753 "type": "git", 1754 "url": "https://github.com/symfony/string.git", 1755 - "reference": "524aac4a280b90a4420d8d6a040718d0586505ac" 1756 }, 1757 "dist": { 1758 "type": "zip", 1759 - "url": "https://api.github.com/repos/symfony/string/zipball/524aac4a280b90a4420d8d6a040718d0586505ac", 1760 - "reference": "524aac4a280b90a4420d8d6a040718d0586505ac", 1761 "shasum": "" 1762 }, 1763 "require": { 1764 - "php": ">=8.2", 1765 "symfony/polyfill-ctype": "~1.8", 1766 "symfony/polyfill-intl-grapheme": "~1.0", 1767 "symfony/polyfill-intl-normalizer": "~1.0", ··· 1771 "symfony/translation-contracts": "<2.5" 1772 }, 1773 "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", 1777 "symfony/translation-contracts": "^2.5|^3.0", 1778 - "symfony/var-exporter": "^6.4|^7.0" 1779 }, 1780 "type": "library", 1781 "autoload": { ··· 1814 "utf8" 1815 ], 1816 "support": { 1817 - "source": "https://github.com/symfony/string/tree/v7.0.3" 1818 }, 1819 "funding": [ 1820 { ··· 1830 "type": "tidelift" 1831 } 1832 ], 1833 - "time": "2024-01-29T15:41:16+00:00" 1834 }, 1835 { 1836 "name": "webmozart/assert", ··· 4448 }, 4449 { 4450 "name": "symfony/process", 4451 - "version": "v7.0.3", 4452 "source": { 4453 "type": "git", 4454 "url": "https://github.com/symfony/process.git", 4455 - "reference": "937a195147e0c27b2759ade834169ed006d0bc74" 4456 }, 4457 "dist": { 4458 "type": "zip", 4459 - "url": "https://api.github.com/repos/symfony/process/zipball/937a195147e0c27b2759ade834169ed006d0bc74", 4460 - "reference": "937a195147e0c27b2759ade834169ed006d0bc74", 4461 "shasum": "" 4462 }, 4463 "require": { 4464 - "php": ">=8.2" 4465 }, 4466 "type": "library", 4467 "autoload": { ··· 4489 "description": "Executes commands in sub-processes", 4490 "homepage": "https://symfony.com", 4491 "support": { 4492 - "source": "https://github.com/symfony/process/tree/v7.0.3" 4493 }, 4494 "funding": [ 4495 { ··· 4505 "type": "tidelift" 4506 } 4507 ], 4508 - "time": "2024-01-23T15:02:46+00:00" 4509 }, 4510 { 4511 "name": "theseer/tokenizer",
··· 1192 }, 1193 { 1194 "name": "symfony/console", 1195 + "version": "v6.4.4", 1196 "source": { 1197 "type": "git", 1198 "url": "https://github.com/symfony/console.git", 1199 + "reference": "0d9e4eb5ad413075624378f474c4167ea202de78" 1200 }, 1201 "dist": { 1202 "type": "zip", 1203 + "url": "https://api.github.com/repos/symfony/console/zipball/0d9e4eb5ad413075624378f474c4167ea202de78", 1204 + "reference": "0d9e4eb5ad413075624378f474c4167ea202de78", 1205 "shasum": "" 1206 }, 1207 "require": { 1208 + "php": ">=8.1", 1209 + "symfony/deprecation-contracts": "^2.5|^3", 1210 "symfony/polyfill-mbstring": "~1.0", 1211 "symfony/service-contracts": "^2.5|^3", 1212 + "symfony/string": "^5.4|^6.0|^7.0" 1213 }, 1214 "conflict": { 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" 1220 }, 1221 "provide": { 1222 "psr/log-implementation": "1.0|2.0|3.0" 1223 }, 1224 "require-dev": { 1225 "psr/log": "^1|^2|^3", 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", 1229 "symfony/http-foundation": "^6.4|^7.0", 1230 "symfony/http-kernel": "^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" 1236 }, 1237 "type": "library", 1238 "autoload": { ··· 1266 "terminal" 1267 ], 1268 "support": { 1269 + "source": "https://github.com/symfony/console/tree/v6.4.4" 1270 }, 1271 "funding": [ 1272 { ··· 1282 "type": "tidelift" 1283 } 1284 ], 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" 1353 }, 1354 { 1355 "name": "symfony/filesystem", 1356 + "version": "v6.4.3", 1357 "source": { 1358 "type": "git", 1359 "url": "https://github.com/symfony/filesystem.git", 1360 + "reference": "7f3b1755eb49297a0827a7575d5d2b2fd11cc9fb" 1361 }, 1362 "dist": { 1363 "type": "zip", 1364 + "url": "https://api.github.com/repos/symfony/filesystem/zipball/7f3b1755eb49297a0827a7575d5d2b2fd11cc9fb", 1365 + "reference": "7f3b1755eb49297a0827a7575d5d2b2fd11cc9fb", 1366 "shasum": "" 1367 }, 1368 "require": { 1369 + "php": ">=8.1", 1370 "symfony/polyfill-ctype": "~1.8", 1371 "symfony/polyfill-mbstring": "~1.8" 1372 }, ··· 1396 "description": "Provides basic utilities for the filesystem", 1397 "homepage": "https://symfony.com", 1398 "support": { 1399 + "source": "https://github.com/symfony/filesystem/tree/v6.4.3" 1400 }, 1401 "funding": [ 1402 { ··· 1412 "type": "tidelift" 1413 } 1414 ], 1415 + "time": "2024-01-23T14:51:35+00:00" 1416 }, 1417 { 1418 "name": "symfony/polyfill-ctype", ··· 1816 }, 1817 { 1818 "name": "symfony/string", 1819 + "version": "v6.4.4", 1820 "source": { 1821 "type": "git", 1822 "url": "https://github.com/symfony/string.git", 1823 + "reference": "4e465a95bdc32f49cf4c7f07f751b843bbd6dcd9" 1824 }, 1825 "dist": { 1826 "type": "zip", 1827 + "url": "https://api.github.com/repos/symfony/string/zipball/4e465a95bdc32f49cf4c7f07f751b843bbd6dcd9", 1828 + "reference": "4e465a95bdc32f49cf4c7f07f751b843bbd6dcd9", 1829 "shasum": "" 1830 }, 1831 "require": { 1832 + "php": ">=8.1", 1833 "symfony/polyfill-ctype": "~1.8", 1834 "symfony/polyfill-intl-grapheme": "~1.0", 1835 "symfony/polyfill-intl-normalizer": "~1.0", ··· 1839 "symfony/translation-contracts": "<2.5" 1840 }, 1841 "require-dev": { 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", 1845 "symfony/translation-contracts": "^2.5|^3.0", 1846 + "symfony/var-exporter": "^5.4|^6.0|^7.0" 1847 }, 1848 "type": "library", 1849 "autoload": { ··· 1882 "utf8" 1883 ], 1884 "support": { 1885 + "source": "https://github.com/symfony/string/tree/v6.4.4" 1886 }, 1887 "funding": [ 1888 { ··· 1898 "type": "tidelift" 1899 } 1900 ], 1901 + "time": "2024-02-01T13:16:41+00:00" 1902 }, 1903 { 1904 "name": "webmozart/assert", ··· 4516 }, 4517 { 4518 "name": "symfony/process", 4519 + "version": "v6.4.4", 4520 "source": { 4521 "type": "git", 4522 "url": "https://github.com/symfony/process.git", 4523 + "reference": "710e27879e9be3395de2b98da3f52a946039f297" 4524 }, 4525 "dist": { 4526 "type": "zip", 4527 + "url": "https://api.github.com/repos/symfony/process/zipball/710e27879e9be3395de2b98da3f52a946039f297", 4528 + "reference": "710e27879e9be3395de2b98da3f52a946039f297", 4529 "shasum": "" 4530 }, 4531 "require": { 4532 + "php": ">=8.1" 4533 }, 4534 "type": "library", 4535 "autoload": { ··· 4557 "description": "Executes commands in sub-processes", 4558 "homepage": "https://symfony.com", 4559 "support": { 4560 + "source": "https://github.com/symfony/process/tree/v6.4.4" 4561 }, 4562 "funding": [ 4563 { ··· 4573 "type": "tidelift" 4574 } 4575 ], 4576 + "time": "2024-02-20T12:31:00+00:00" 4577 }, 4578 { 4579 "name": "theseer/tokenizer",
+1 -1
pkgs/development/php-packages/psalm/default.nix
··· 17 # Missing `composer.lock` from the repository. 18 # Issue open at https://github.com/vimeo/psalm/issues/10446 19 composerLock = ./composer.lock; 20 - vendorHash = "sha256-URPyV1V/8BP8fbJqyYLf+XKG786hY2BbAzUphzPyPCs="; 21 22 meta = { 23 changelog = "https://github.com/vimeo/psalm/releases/tag/${finalAttrs.version}";
··· 17 # Missing `composer.lock` from the repository. 18 # Issue open at https://github.com/vimeo/psalm/issues/10446 19 composerLock = ./composer.lock; 20 + vendorHash = "sha256-AgvAaHcCYosS3yRrp9EFdqTjg6NzQRCr8ELSza9DvZ8="; 21 22 meta = { 23 changelog = "https://github.com/vimeo/psalm/releases/tag/${finalAttrs.version}";
+2 -2
pkgs/development/python-modules/aioairzone-cloud/default.nix
··· 8 9 buildPythonPackage rec { 10 pname = "aioairzone-cloud"; 11 - version = "0.3.8"; 12 pyproject = true; 13 14 disabled = pythonOlder "3.7"; ··· 17 owner = "Noltari"; 18 repo = "aioairzone-cloud"; 19 rev = "refs/tags/${version}"; 20 - hash = "sha256-h9WUHehTXg73qqpw+sMxoQMzOV+io2GvjwXlr4gF2ns="; 21 }; 22 23 nativeBuildInputs = [
··· 8 9 buildPythonPackage rec { 10 pname = "aioairzone-cloud"; 11 + version = "0.4.5"; 12 pyproject = true; 13 14 disabled = pythonOlder "3.7"; ··· 17 owner = "Noltari"; 18 repo = "aioairzone-cloud"; 19 rev = "refs/tags/${version}"; 20 + hash = "sha256-G+tzA4VEdpRFVouj8Uv7BJLgSTOO5eKkNntVL1bIzXY="; 21 }; 22 23 nativeBuildInputs = [
+2 -2
pkgs/development/python-modules/aioautomower/default.nix
··· 14 15 buildPythonPackage rec { 16 pname = "aioautomower"; 17 - version = "2024.2.9"; 18 pyproject = true; 19 20 disabled = pythonOlder "3.11"; ··· 23 owner = "Thomas55555"; 24 repo = "aioautomower"; 25 rev = "refs/tags/${version}"; 26 - hash = "sha256-vjg7y+9E4R1Q7h+ao/ttuRbvui4u5hESR8tImWSO04U="; 27 }; 28 29 postPatch = ''
··· 14 15 buildPythonPackage rec { 16 pname = "aioautomower"; 17 + version = "2024.2.10"; 18 pyproject = true; 19 20 disabled = pythonOlder "3.11"; ··· 23 owner = "Thomas55555"; 24 repo = "aioautomower"; 25 rev = "refs/tags/${version}"; 26 + hash = "sha256-NRcLyuU5FFIKJALUrx5iVSihzgO6ljqaqlhbs+y2E4Q="; 27 }; 28 29 postPatch = ''
+2 -2
pkgs/development/python-modules/aiomysensors/default.nix
··· 15 16 buildPythonPackage rec { 17 pname = "aiomysensors"; 18 - version = "0.3.12"; 19 pyproject = true; 20 21 disabled = pythonOlder "3.9"; ··· 24 owner = "MartinHjelmare"; 25 repo = "aiomysensors"; 26 rev = "refs/tags/v${version}"; 27 - hash = "sha256-9M5WuBoezbZr7OwJaM0m2CqibziJVwqANGOhiJrqfxA="; 28 }; 29 30 postPatch = ''
··· 15 16 buildPythonPackage rec { 17 pname = "aiomysensors"; 18 + version = "0.3.13"; 19 pyproject = true; 20 21 disabled = pythonOlder "3.9"; ··· 24 owner = "MartinHjelmare"; 25 repo = "aiomysensors"; 26 rev = "refs/tags/v${version}"; 27 + hash = "sha256-2i2QodEWOZ/nih6ap5ovWuKxILB5arusnqOiOlb4xWM="; 28 }; 29 30 postPatch = ''
+3 -6
pkgs/development/python-modules/aiounittest/default.nix
··· 3 , fetchFromGitHub 4 , pythonAtLeast 5 , setuptools 6 - , nose 7 , coverage 8 , wrapt 9 }: ··· 12 pname = "aiounittest"; 13 version = "1.4.2"; 14 pyproject = true; 15 - 16 - # requires the imp module 17 - disabled = pythonAtLeast "3.12"; 18 19 src = fetchFromGitHub { 20 owner = "kwarunek"; ··· 32 ]; 33 34 nativeCheckInputs = [ 35 - nose 36 coverage 37 ]; 38 39 checkPhase = '' 40 - nosetests 41 ''; 42 43 pythonImportsCheck = [ "aiounittest" ];
··· 3 , fetchFromGitHub 4 , pythonAtLeast 5 , setuptools 6 + , pynose 7 , coverage 8 , wrapt 9 }: ··· 12 pname = "aiounittest"; 13 version = "1.4.2"; 14 pyproject = true; 15 16 src = fetchFromGitHub { 17 owner = "kwarunek"; ··· 29 ]; 30 31 nativeCheckInputs = [ 32 + pynose 33 coverage 34 ]; 35 36 checkPhase = '' 37 + nosetests -e test_specific_test 38 ''; 39 40 pythonImportsCheck = [ "aiounittest" ];
+2 -2
pkgs/development/python-modules/boto3-stubs/default.nix
··· 365 366 buildPythonPackage rec { 367 pname = "boto3-stubs"; 368 - version = "1.34.52"; 369 pyproject = true; 370 371 disabled = pythonOlder "3.7"; 372 373 src = fetchPypi { 374 inherit pname version; 375 - hash = "sha256-gjxBBZ+DbWh32qocvSD4E8jxp4uf3ykLwLhTEn4Se6M="; 376 }; 377 378 nativeBuildInputs = [
··· 365 366 buildPythonPackage rec { 367 pname = "boto3-stubs"; 368 + version = "1.34.53"; 369 pyproject = true; 370 371 disabled = pythonOlder "3.7"; 372 373 src = fetchPypi { 374 inherit pname version; 375 + hash = "sha256-/zGbNI+nsNbkD2hTeClyZvk5A4wG0E4JGKpazy5TLCw="; 376 }; 377 378 nativeBuildInputs = [
+2 -2
pkgs/development/python-modules/botocore-stubs/default.nix
··· 9 10 buildPythonPackage rec { 11 pname = "botocore-stubs"; 12 - version = "1.34.52"; 13 format = "pyproject"; 14 15 disabled = pythonOlder "3.7"; ··· 17 src = fetchPypi { 18 pname = "botocore_stubs"; 19 inherit version; 20 - hash = "sha256-pRtsofyprNqp6AQS83FTaQ//rX7SJ3Q8xTCAmSDSoAk="; 21 }; 22 23 nativeBuildInputs = [
··· 9 10 buildPythonPackage rec { 11 pname = "botocore-stubs"; 12 + version = "1.34.53"; 13 format = "pyproject"; 14 15 disabled = pythonOlder "3.7"; ··· 17 src = fetchPypi { 18 pname = "botocore_stubs"; 19 inherit version; 20 + hash = "sha256-41fme2SpxtfeEOdmzSxmWJJkJXRG26bl7hwt/Ltjvlw="; 21 }; 22 23 nativeBuildInputs = [
+2 -2
pkgs/development/python-modules/cyclonedx-python-lib/default.nix
··· 23 24 buildPythonPackage rec { 25 pname = "cyclonedx-python-lib"; 26 - version = "6.4.1"; 27 pyproject = true; 28 29 disabled = pythonOlder "3.9"; ··· 32 owner = "CycloneDX"; 33 repo = "cyclonedx-python-lib"; 34 rev = "refs/tags/v${version}"; 35 - hash = "sha256-IhiH1Vk/Wf6cTxijxE1erkQozY+vOVd5pu6tAVUoDJM="; 36 }; 37 38 nativeBuildInputs = [
··· 23 24 buildPythonPackage rec { 25 pname = "cyclonedx-python-lib"; 26 + version = "6.4.2"; 27 pyproject = true; 28 29 disabled = pythonOlder "3.9"; ··· 32 owner = "CycloneDX"; 33 repo = "cyclonedx-python-lib"; 34 rev = "refs/tags/v${version}"; 35 + hash = "sha256-uDppmYJiQt2Yix5vaWYqMDbPcHOEPz2pBK11lUZ54fI="; 36 }; 37 38 nativeBuildInputs = [
+4
pkgs/development/python-modules/fairseq/default.nix
··· 96 disabledTests = [ 97 # this test requires xformers 98 "test_xformers_single_forward_parity" 99 # this test requires iopath 100 "test_file_io_async" 101 # these tests require network access ··· 105 "test_waitk_checkpoint" 106 "test_sotasty_es_en_600m_checkpoint" 107 "test_librispeech_s2t_conformer_s_checkpoint" 108 ]; 109 110 disabledTestPaths = [ ··· 117 homepage = "https://github.com/pytorch/fairseq"; 118 license = licenses.mit; 119 platforms = platforms.linux; 120 maintainers = with maintainers; [ happysalada ]; 121 }; 122 }
··· 96 disabledTests = [ 97 # this test requires xformers 98 "test_xformers_single_forward_parity" 99 + "test_mask_for_xformers" 100 # this test requires iopath 101 "test_file_io_async" 102 # these tests require network access ··· 106 "test_waitk_checkpoint" 107 "test_sotasty_es_en_600m_checkpoint" 108 "test_librispeech_s2t_conformer_s_checkpoint" 109 + # TODO research failure 110 + "test_multilingual_translation_latent_depth" 111 ]; 112 113 disabledTestPaths = [ ··· 120 homepage = "https://github.com/pytorch/fairseq"; 121 license = licenses.mit; 122 platforms = platforms.linux; 123 + hydraPlatforms = []; 124 maintainers = with maintainers; [ happysalada ]; 125 }; 126 }
+2 -2
pkgs/development/python-modules/huggingface-hub/default.nix
··· 14 15 buildPythonPackage rec { 16 pname = "huggingface-hub"; 17 - version = "0.21.2"; 18 pyproject = true; 19 20 disabled = pythonOlder "3.8"; ··· 23 owner = "huggingface"; 24 repo = "huggingface_hub"; 25 rev = "refs/tags/v${version}"; 26 - hash = "sha256-0Nr6qs9rzuBQo8SGuQ2Ai2Q+E+Gs4DT/AMrYf7dYM/E="; 27 }; 28 29 nativeBuildInputs = [
··· 14 15 buildPythonPackage rec { 16 pname = "huggingface-hub"; 17 + version = "0.21.3"; 18 pyproject = true; 19 20 disabled = pythonOlder "3.8"; ··· 23 owner = "huggingface"; 24 repo = "huggingface_hub"; 25 rev = "refs/tags/v${version}"; 26 + hash = "sha256-DtKb/mR01vifclDalZiZV4/A4XpTKBcT9bCiLZkRCZY="; 27 }; 28 29 nativeBuildInputs = [
+8 -7
pkgs/development/python-modules/jaxtyping/default.nix
··· 3 , pythonOlder 4 , fetchFromGitHub 5 , hatchling 6 , numpy 7 , typeguard 8 , typing-extensions ··· 19 let 20 self = buildPythonPackage rec { 21 pname = "jaxtyping"; 22 - version = "0.2.25"; 23 pyproject = true; 24 25 disabled = pythonOlder "3.9"; ··· 28 owner = "google"; 29 repo = "jaxtyping"; 30 rev = "refs/tags/v${version}"; 31 - hash = "sha256-+JqpI5xrM7o73LG6oMix88Jr5aptmWYjJQcqUNo7icg="; 32 }; 33 34 - postPatch = '' 35 - substituteInPlace pyproject.toml \ 36 - --replace "typeguard>=2.13.3,<3" "typeguard" 37 - ''; 38 - 39 nativeBuildInputs = [ 40 hatchling 41 ]; 42 43 propagatedBuildInputs = [ 44 numpy 45 typeguard 46 typing-extensions 47 ]; 48 49 nativeCheckInputs = [
··· 3 , pythonOlder 4 , fetchFromGitHub 5 , hatchling 6 + , pythonRelaxDepsHook 7 , numpy 8 , typeguard 9 , typing-extensions ··· 20 let 21 self = buildPythonPackage rec { 22 pname = "jaxtyping"; 23 + version = "0.2.26"; 24 pyproject = true; 25 26 disabled = pythonOlder "3.9"; ··· 29 owner = "google"; 30 repo = "jaxtyping"; 31 rev = "refs/tags/v${version}"; 32 + hash = "sha256-2QDTRNH2/9FPU5xrQx7yZRHwEWqj0PUNzcCuKwY4yNg="; 33 }; 34 35 nativeBuildInputs = [ 36 hatchling 37 + pythonRelaxDepsHook 38 ]; 39 40 propagatedBuildInputs = [ 41 numpy 42 typeguard 43 typing-extensions 44 + ]; 45 + 46 + pythonRelaxDeps = [ 47 + "typeguard" 48 ]; 49 50 nativeCheckInputs = [
+4
pkgs/development/python-modules/mmengine/default.nix
··· 69 disabledTestPaths = [ 70 # AttributeError 71 "tests/test_fileio/test_backends/test_petrel_backend.py" 72 ]; 73 74 disabledTests = [
··· 69 disabledTestPaths = [ 70 # AttributeError 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" 76 ]; 77 78 disabledTests = [
+2 -2
pkgs/development/python-modules/openai/default.nix
··· 26 27 buildPythonPackage rec { 28 pname = "openai"; 29 - version = "1.13.2"; 30 pyproject = true; 31 32 disabled = pythonOlder "3.7.1"; ··· 35 owner = "openai"; 36 repo = "openai-python"; 37 rev = "refs/tags/v${version}"; 38 - hash = "sha256-3otPmMVV/Wx7k/oec5c1r6GcZGzhMSKifJB8S5nBSZw="; 39 }; 40 41 nativeBuildInputs = [
··· 26 27 buildPythonPackage rec { 28 pname = "openai"; 29 + version = "1.13.3"; 30 pyproject = true; 31 32 disabled = pythonOlder "3.7.1"; ··· 35 owner = "openai"; 36 repo = "openai-python"; 37 rev = "refs/tags/v${version}"; 38 + hash = "sha256-8SHXUrPLZ7lgvB0jqZlcvKq5Zv2d2UqXjJpgiBpR8P8="; 39 }; 40 41 nativeBuildInputs = [
+2 -2
pkgs/development/python-modules/py-serializable/default.nix
··· 11 12 buildPythonPackage rec { 13 pname = "py-serializable"; 14 - version = "1.0.1"; 15 pyproject = true; 16 17 disabled = pythonOlder "3.8"; ··· 20 owner = "madpah"; 21 repo = "serializable"; 22 rev = "refs/tags/v${version}"; 23 - hash = "sha256-OsgFzT5qGyszO4jFYWIAgGY41s0ZBEMwCbWZeY189h4="; 24 }; 25 26 nativeBuildInputs = [
··· 11 12 buildPythonPackage rec { 13 pname = "py-serializable"; 14 + version = "1.0.2"; 15 pyproject = true; 16 17 disabled = pythonOlder "3.8"; ··· 20 owner = "madpah"; 21 repo = "serializable"; 22 rev = "refs/tags/v${version}"; 23 + hash = "sha256-RhipoPTewPaYwspTnywLr5FvFVUaFixfRQk6aUMvB4w="; 24 }; 25 26 nativeBuildInputs = [
+2 -2
pkgs/development/python-modules/pyctr/default.nix
··· 7 8 buildPythonPackage rec { 9 pname = "pyctr"; 10 - version = "0.7.4"; 11 format = "setuptools"; 12 13 disabled = pythonOlder "3.7"; 14 15 src = fetchPypi { 16 inherit pname version; 17 - hash = "sha256-1nPP+rz/8BiFHu3nGcHuqCPwyyR55LUhoBprHFTudWQ="; 18 }; 19 20 propagatedBuildInputs = [
··· 7 8 buildPythonPackage rec { 9 pname = "pyctr"; 10 + version = "0.7.5"; 11 format = "setuptools"; 12 13 disabled = pythonOlder "3.7"; 14 15 src = fetchPypi { 16 inherit pname version; 17 + hash = "sha256-fiDJWcypFabnUoS313f56ypDuDrLASHrkk0Em8bymmw="; 18 }; 19 20 propagatedBuildInputs = [
+2 -2
pkgs/development/python-modules/pyoverkiz/default.nix
··· 16 17 buildPythonPackage rec { 18 pname = "pyoverkiz"; 19 - version = "1.13.7"; 20 format = "pyproject"; 21 22 disabled = pythonOlder "3.7"; ··· 25 owner = "iMicknl"; 26 repo = "python-overkiz-api"; 27 rev = "refs/tags/v${version}"; 28 - hash = "sha256-wH4LCfjnxAwub/BCe27osyJVUZSOMDjjxItv0aEa8Ic="; 29 }; 30 31 postPatch = ''
··· 16 17 buildPythonPackage rec { 18 pname = "pyoverkiz"; 19 + version = "1.13.8"; 20 format = "pyproject"; 21 22 disabled = pythonOlder "3.7"; ··· 25 owner = "iMicknl"; 26 repo = "python-overkiz-api"; 27 rev = "refs/tags/v${version}"; 28 + hash = "sha256-tvS7aPfBTs75Rq1WGslWDMv1pOTVt7MtwpXPRJtqbuk="; 29 }; 30 31 postPatch = ''
+2 -2
pkgs/development/python-modules/python-heatclient/default.nix
··· 21 22 buildPythonPackage rec { 23 pname = "python-heatclient"; 24 - version = "3.4.0"; 25 format = "setuptools"; 26 27 disabled = pythonOlder "3.8"; 28 29 src = fetchPypi { 30 inherit pname version; 31 - hash = "sha256-ggfhDJW2qn0o4Wi5cdPsEpoHb9miZbr4Ba8mgLkStvI="; 32 }; 33 34 propagatedBuildInputs = [
··· 21 22 buildPythonPackage rec { 23 pname = "python-heatclient"; 24 + version = "3.5.0"; 25 format = "setuptools"; 26 27 disabled = pythonOlder "3.8"; 28 29 src = fetchPypi { 30 inherit pname version; 31 + hash = "sha256-B1F40HYHFF91mkxwySR/kqCvlwLLtBgqwUvw2byOc9g="; 32 }; 33 34 propagatedBuildInputs = [
+2 -2
pkgs/development/python-modules/python-ironicclient/default.nix
··· 20 21 buildPythonPackage rec { 22 pname = "python-ironicclient"; 23 - version = "5.4.0"; 24 format = "setuptools"; 25 26 src = fetchPypi { 27 inherit pname version; 28 - hash = "sha256-Q9yGuYf9TS7RCo9aV1hnNSrHoll7AOUiSpzRYxi+JXU="; 29 }; 30 31 propagatedBuildInputs = [
··· 20 21 buildPythonPackage rec { 22 pname = "python-ironicclient"; 23 + version = "5.5.0"; 24 format = "setuptools"; 25 26 src = fetchPypi { 27 inherit pname version; 28 + hash = "sha256-JlO487QSPsBJZqPYRhsQYFA7noIN2q/stH4eZXAFLnY="; 29 }; 30 31 propagatedBuildInputs = [
+32
pkgs/development/python-modules/python-matter-server/default.nix
··· 2 , buildPythonPackage 3 , fetchFromGitHub 4 , pythonOlder 5 6 # build 7 , setuptools ··· 28 , pytestCheckHook 29 }: 30 31 buildPythonPackage rec { 32 pname = "python-matter-server"; 33 version = "5.7.0b2"; ··· 41 rev = "refs/tags/${version}"; 42 hash = "sha256-fMtvVizHeAzLdou0U1tqbmQATIBLK4w9I7EwMlzB8QA="; 43 }; 44 45 postPatch = '' 46 substituteInPlace pyproject.toml \
··· 2 , buildPythonPackage 3 , fetchFromGitHub 4 , pythonOlder 5 + , stdenvNoCC 6 + , substituteAll 7 8 # build 9 , setuptools ··· 30 , pytestCheckHook 31 }: 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 + 56 buildPythonPackage rec { 57 pname = "python-matter-server"; 58 version = "5.7.0b2"; ··· 66 rev = "refs/tags/${version}"; 67 hash = "sha256-fMtvVizHeAzLdou0U1tqbmQATIBLK4w9I7EwMlzB8QA="; 68 }; 69 + 70 + patches = [ 71 + (substituteAll { 72 + src = ./link-paa-root-certs.patch; 73 + paacerts = paaCerts; 74 + }) 75 + ]; 76 77 postPatch = '' 78 substituteInPlace pyproject.toml \
+2 -2
pkgs/development/python-modules/python-novaclient/default.nix
··· 17 18 buildPythonPackage rec { 19 pname = "python-novaclient"; 20 - version = "18.4.0"; 21 format = "setuptools"; 22 23 disabled = pythonOlder "3.8"; 24 25 src = fetchPypi { 26 inherit pname version; 27 - hash = "sha256-a2tq4sEescEI469V6qchGw/JGZk1oimmuj4N5RTBK1A="; 28 }; 29 30 propagatedBuildInputs = [
··· 17 18 buildPythonPackage rec { 19 pname = "python-novaclient"; 20 + version = "18.5.0"; 21 format = "setuptools"; 22 23 disabled = pythonOlder "3.8"; 24 25 src = fetchPypi { 26 inherit pname version; 27 + hash = "sha256-4j7kQMDI6uK1OvqIHTCsrsBof8660kY5HsKblsVDA40="; 28 }; 29 30 propagatedBuildInputs = [
+2 -2
pkgs/development/python-modules/python-swiftclient/default.nix
··· 12 13 buildPythonPackage rec { 14 pname = "python-swiftclient"; 15 - version = "4.4.0"; 16 format = "setuptools"; 17 18 disabled = pythonOlder "3.6"; 19 20 src = fetchPypi { 21 inherit pname version; 22 - hash = "sha256-p32Xqw5AEsZ4cy5XW9/u0oKzSJuRdegsRqR6yEke7oQ="; 23 }; 24 25 # remove duplicate script that will be created by setuptools from the
··· 12 13 buildPythonPackage rec { 14 pname = "python-swiftclient"; 15 + version = "4.5.0"; 16 format = "setuptools"; 17 18 disabled = pythonOlder "3.6"; 19 20 src = fetchPypi { 21 inherit pname version; 22 + hash = "sha256-8qCIflo5KXq8BDJRrj+QiRTOFEei+NLcpWcWGGCBQr0="; 23 }; 24 25 # remove duplicate script that will be created by setuptools from the
+10 -11
pkgs/development/python-modules/remotezip/default.nix
··· 1 { lib 2 , buildPythonPackage 3 , fetchFromGitHub 4 , requests 5 , tabulate 6 , pytestCheckHook 7 , requests-mock 8 }: 9 10 - buildPythonPackage { 11 pname = "remotezip"; 12 - version = "0.12.2"; 13 - format = "setuptools"; 14 15 src = fetchFromGitHub { 16 owner = "gtsystem"; 17 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="; 22 }; 23 24 propagatedBuildInputs = [ 25 requests 26 - tabulate 27 ]; 28 29 nativeCheckInputs = [ 30 pytestCheckHook 31 - ]; 32 - 33 - checkInputs = [ 34 requests-mock 35 ]; 36
··· 1 { lib 2 , buildPythonPackage 3 , fetchFromGitHub 4 + , setuptools 5 , requests 6 , tabulate 7 , pytestCheckHook 8 , requests-mock 9 }: 10 11 + buildPythonPackage rec { 12 pname = "remotezip"; 13 + version = "0.12.3"; 14 + pyproject = true; 15 16 src = fetchFromGitHub { 17 owner = "gtsystem"; 18 repo = "python-remotezip"; 19 + rev = "refs/tags/v${version}"; 20 + hash = "sha256-TNEM7Dm4iH4Z/P/PAqjJppbn1CKmyi9Xpq/sU9O8uxg="; 21 }; 22 23 + nativeBuildInputs = [ 24 + setuptools 25 + ]; 26 + 27 propagatedBuildInputs = [ 28 requests 29 ]; 30 31 nativeCheckInputs = [ 32 pytestCheckHook 33 requests-mock 34 ]; 35
+2 -2
pkgs/development/python-modules/spyder-kernels/default.nix
··· 14 15 buildPythonPackage rec { 16 pname = "spyder-kernels"; 17 - version = "2.5.0"; 18 format = "setuptools"; 19 20 disabled = pythonOlder "3.7"; 21 22 src = fetchPypi { 23 inherit pname version; 24 - hash = "sha256-M2hCbARFfgIRiE6SdPpH61ViUrpMBz3ydeg8Zd97oqE="; 25 }; 26 27 propagatedBuildInputs = [
··· 14 15 buildPythonPackage rec { 16 pname = "spyder-kernels"; 17 + version = "2.5.1"; 18 format = "setuptools"; 19 20 disabled = pythonOlder "3.7"; 21 22 src = fetchPypi { 23 inherit pname version; 24 + hash = "sha256-BQQqP5eyXxfN+o11AR/Xmq8CdSM0ip3/8PWiC92wubA="; 25 }; 26 27 propagatedBuildInputs = [
+2 -2
pkgs/development/python-modules/tencentcloud-sdk-python/default.nix
··· 9 10 buildPythonPackage rec { 11 pname = "tencentcloud-sdk-python"; 12 - version = "3.0.1094"; 13 pyproject = true; 14 15 disabled = pythonOlder "3.9"; ··· 18 owner = "TencentCloud"; 19 repo = "tencentcloud-sdk-python"; 20 rev = "refs/tags/${version}"; 21 - hash = "sha256-h2p9auD8bTDbagAmjsmV06Z75I93LB6h+/ZYyt17ow0="; 22 }; 23 24 nativeBuildInputs = [
··· 9 10 buildPythonPackage rec { 11 pname = "tencentcloud-sdk-python"; 12 + version = "3.0.1098"; 13 pyproject = true; 14 15 disabled = pythonOlder "3.9"; ··· 18 owner = "TencentCloud"; 19 repo = "tencentcloud-sdk-python"; 20 rev = "refs/tags/${version}"; 21 + hash = "sha256-5BG5WizkBP/KYHS00v949uQgiCChR3DWW0MnMXRBDAs="; 22 }; 23 24 nativeBuildInputs = [
+15 -7
pkgs/development/python-modules/textnets/default.nix
··· 1 { lib 2 , buildPythonPackage 3 , cairocffi 4 - , cython 5 , fetchPypi 6 , igraph 7 , leidenalg ··· 9 , poetry-core 10 , pytestCheckHook 11 , pythonOlder 12 , scipy 13 , setuptools 14 , spacy ··· 21 22 buildPythonPackage rec { 23 pname = "textnets"; 24 - version = "0.9.3"; 25 format = "pyproject"; 26 27 disabled = pythonOlder "3.8"; 28 29 src = fetchPypi { 30 inherit pname version; 31 - hash = "sha256-fx2S43IqpSMsfJow26jB/D27dyUFQ1PlXP1rbUIZPPQ="; 32 }; 33 34 nativeBuildInputs = [ 35 - cython 36 poetry-core 37 setuptools 38 ]; 39 40 propagatedBuildInputs = [ 41 cairocffi 42 igraph ··· 59 "textnets" 60 ]; 61 62 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" 66 ]; 67 68 meta = with lib; {
··· 1 { lib 2 , buildPythonPackage 3 , cairocffi 4 + , cython_3 5 , fetchPypi 6 , igraph 7 , leidenalg ··· 9 , poetry-core 10 , pytestCheckHook 11 , pythonOlder 12 + , pythonRelaxDepsHook 13 , scipy 14 , setuptools 15 , spacy ··· 22 23 buildPythonPackage rec { 24 pname = "textnets"; 25 + version = "0.9.4"; 26 format = "pyproject"; 27 28 disabled = pythonOlder "3.8"; 29 30 src = fetchPypi { 31 inherit pname version; 32 + hash = "sha256-4154ytzo1QpwhKA1BkVMss9fNIkysnClW/yfSVlX33M="; 33 }; 34 35 nativeBuildInputs = [ 36 + pythonRelaxDepsHook 37 + cython_3 38 poetry-core 39 setuptools 40 ]; 41 42 + pythonRelaxDeps = [ "igraph" "leidenalg" ]; 43 + 44 propagatedBuildInputs = [ 45 cairocffi 46 igraph ··· 63 "textnets" 64 ]; 65 66 + # Enables the package to find the cythonized .so files during testing. See #255262 67 + preCheck = '' 68 + rm -r textnets 69 + ''; 70 + 71 disabledTests = [ 72 + # Test fails: Throws a UserWarning asking the user to install `textnets[fca]`. 73 + "test_context" 74 ]; 75 76 meta = with lib; {
+2 -2
pkgs/development/python-modules/transformers/default.nix
··· 53 54 buildPythonPackage rec { 55 pname = "transformers"; 56 - version = "4.38.1"; 57 format = "setuptools"; 58 59 disabled = pythonOlder "3.8"; ··· 62 owner = "huggingface"; 63 repo = "transformers"; 64 rev = "refs/tags/v${version}"; 65 - hash = "sha256-92WmvSFZYCCG4qJprPT7clYa7ePuvyaCvxni/spDhSw="; 66 }; 67 68 propagatedBuildInputs = [
··· 53 54 buildPythonPackage rec { 55 pname = "transformers"; 56 + version = "4.38.2"; 57 format = "setuptools"; 58 59 disabled = pythonOlder "3.8"; ··· 62 owner = "huggingface"; 63 repo = "transformers"; 64 rev = "refs/tags/v${version}"; 65 + hash = "sha256-/rt2XHN46NcFwlM9MOygVvpQkfPVu2eCNybYmSj711M="; 66 }; 67 68 propagatedBuildInputs = [
+2 -2
pkgs/development/python-modules/types-awscrt/default.nix
··· 7 8 buildPythonPackage rec { 9 pname = "types-awscrt"; 10 - version = "0.20.4"; 11 pyproject = true; 12 13 disabled = pythonOlder "3.7"; ··· 15 src = fetchPypi { 16 pname = "types_awscrt"; 17 inherit version; 18 - hash = "sha256-ECRVcMcoXpSTYrSucQxUvyhdZKJ0U9QnYkd7zuXNd6M="; 19 }; 20 21 nativeBuildInputs = [
··· 7 8 buildPythonPackage rec { 9 pname = "types-awscrt"; 10 + version = "0.20.5"; 11 pyproject = true; 12 13 disabled = pythonOlder "3.7"; ··· 15 src = fetchPypi { 16 pname = "types_awscrt"; 17 inherit version; 18 + hash = "sha256-YYEbv03pUkiTn5J2pDS+k9K5X2zP6KqU5WmZ6XeM/MI="; 19 }; 20 21 nativeBuildInputs = [
+2 -2
pkgs/development/python-modules/types-pyopenssl/default.nix
··· 6 7 buildPythonPackage rec { 8 pname = "types-pyopenssl"; 9 - version = "24.0.0.20240130"; 10 format = "setuptools"; 11 12 src = fetchPypi { 13 pname = "types-pyOpenSSL"; 14 inherit version; 15 - hash = "sha256-yBLlwcNSSfde9ZNXCLKpl9Yqv5dFviIuX5S5WVRyqyU="; 16 }; 17 18 propagatedBuildInputs = [
··· 6 7 buildPythonPackage rec { 8 pname = "types-pyopenssl"; 9 + version = "24.0.0.20240228"; 10 format = "setuptools"; 11 12 src = fetchPypi { 13 pname = "types-pyOpenSSL"; 14 inherit version; 15 + hash = "sha256-zZkHF9iqN0PvDnPg9GLmS1TZDDBCSSMtSP7OTw98PGo="; 16 }; 17 18 propagatedBuildInputs = [
+8 -9
pkgs/development/python-modules/uncertainties/default.nix
··· 1 - { lib, fetchPypi, buildPythonPackage 2 - , nose, numpy, future 3 - , pythonOlder 4 }: 5 6 buildPythonPackage rec { ··· 14 }; 15 16 propagatedBuildInputs = [ future ]; 17 - 18 - # uses removed lib2to3.tests 19 - doCheck = pythonOlder "3.12"; 20 - 21 - nativeCheckInputs = [ nose numpy ]; 22 23 checkPhase = '' 24 - nosetests -sv 25 ''; 26 27 meta = with lib; {
··· 1 + { lib 2 + , buildPythonPackage 3 + , fetchPypi 4 + , future 5 + , numpy 6 + , pynose 7 }: 8 9 buildPythonPackage rec { ··· 17 }; 18 19 propagatedBuildInputs = [ future ]; 20 + nativeCheckInputs = [ pynose numpy ]; 21 22 checkPhase = '' 23 + nosetests -sve test_1to2 24 ''; 25 26 meta = with lib; {
+2 -2
pkgs/development/python-modules/weconnect/default.nix
··· 12 13 buildPythonPackage rec { 14 pname = "weconnect"; 15 - version = "0.60.1"; 16 pyproject = true; 17 18 disabled = pythonOlder "3.8"; ··· 21 owner = "tillsteinbach"; 22 repo = "WeConnect-python"; 23 rev = "refs/tags/v${version}"; 24 - hash = "sha256-hvV4pbCyzAbi3bKXClzpiyhp+4qnuIj5pViUe7pEq64="; 25 }; 26 27 postPatch = ''
··· 12 13 buildPythonPackage rec { 14 pname = "weconnect"; 15 + version = "0.60.2"; 16 pyproject = true; 17 18 disabled = pythonOlder "3.8"; ··· 21 owner = "tillsteinbach"; 22 repo = "WeConnect-python"; 23 rev = "refs/tags/v${version}"; 24 + hash = "sha256-VM4qCe+VMnfKXioUHTjOeBSniwpq44fvbN1k1jG6puk="; 25 }; 26 27 postPatch = ''
+2 -2
pkgs/development/r-modules/default.nix
··· 405 rjags = [ pkgs.jags ]; 406 rJava = with pkgs; [ zlib bzip2.dev icu xz.dev pcre.dev jdk libzip ]; 407 Rlibeemd = [ pkgs.gsl ]; 408 - rmatio = [ pkgs.zlib.dev ]; 409 Rmpfr = with pkgs; [ gmp mpfr.dev ]; 410 Rmpi = [ pkgs.mpi ]; 411 RMySQL = with pkgs; [ zlib libmysqlclient openssl.dev ]; ··· 946 cargoDeps = pkgs.rustPlatform.fetchCargoTarball { 947 src = attrs.src; 948 sourceRoot = "gifski/src/myrustlib"; 949 - hash = "sha256-vBrTQ+5JZA8554Aasbqw7mbaOfJNQjrOpG00IXAcamI="; 950 }; 951 952 cargoRoot = "src/myrustlib";
··· 405 rjags = [ pkgs.jags ]; 406 rJava = with pkgs; [ zlib bzip2.dev icu xz.dev pcre.dev jdk libzip ]; 407 Rlibeemd = [ pkgs.gsl ]; 408 + rmatio = [ pkgs.zlib.dev pkgs.pkg-config ]; 409 Rmpfr = with pkgs; [ gmp mpfr.dev ]; 410 Rmpi = [ pkgs.mpi ]; 411 RMySQL = with pkgs; [ zlib libmysqlclient openssl.dev ]; ··· 946 cargoDeps = pkgs.rustPlatform.fetchCargoTarball { 947 src = attrs.src; 948 sourceRoot = "gifski/src/myrustlib"; 949 + hash = "sha256-e6nuiQU22GiO2I+bu0muyICGrdkCLSZUDHDz2mM2hz0="; 950 }; 951 952 cargoRoot = "src/myrustlib";
+3 -3
pkgs/development/tools/analysis/snyk/default.nix
··· 2 3 buildNpmPackage rec { 4 pname = "snyk"; 5 - version = "1.1280.1"; 6 7 src = fetchFromGitHub { 8 owner = "snyk"; 9 repo = "cli"; 10 rev = "v${version}"; 11 - hash = "sha256-bwEekB/jifSRktblvq98C3t2xSTTPn4NOftQs/T090U="; 12 }; 13 14 - npmDepsHash = "sha256-TtWc+Zy6yMHbDdsw5rVKK+RiCZ8ZuXyU+SfcPRgToiA="; 15 16 postPatch = '' 17 substituteInPlace package.json --replace '"version": "1.0.0-monorepo"' '"version": "${version}"'
··· 2 3 buildNpmPackage rec { 4 pname = "snyk"; 5 + version = "1.1281.0"; 6 7 src = fetchFromGitHub { 8 owner = "snyk"; 9 repo = "cli"; 10 rev = "v${version}"; 11 + hash = "sha256-QxmYArH9HRq2vkGzfhWlCPLS++UiwdzAStUQxhGF85Q="; 12 }; 13 14 + npmDepsHash = "sha256-JxX4r1I/F3PEzg9rLfFNEIa4Q8jwuUWC6krH1oSoc8s="; 15 16 postPatch = '' 17 substituteInPlace package.json --replace '"version": "1.0.0-monorepo"' '"version": "${version}"'
+9
pkgs/development/tools/build-managers/apache-maven/build-package.nix
··· 13 , mvnFetchExtraArgs ? { } 14 , mvnDepsParameters ? "" 15 , manualMvnArtifacts ? [ ] 16 , mvnParameters ? "" 17 , ... 18 } @args: ··· 38 do 39 echo "downloading manual $artifactId" 40 mvn dependency:get -Dartifact="$artifactId" -Dmaven.repo.local=$out/.m2 41 done 42 '' + lib.optionalString (!buildOffline) '' 43 mvn package -Dmaven.repo.local=$out/.m2 ${mvnParameters}
··· 13 , mvnFetchExtraArgs ? { } 14 , mvnDepsParameters ? "" 15 , manualMvnArtifacts ? [ ] 16 + , manualMvnSources ? [ ] 17 , mvnParameters ? "" 18 , ... 19 } @args: ··· 39 do 40 echo "downloading manual $artifactId" 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 50 done 51 '' + lib.optionalString (!buildOffline) '' 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 3 rustPlatform.buildRustPackage rec { 4 pname = "mdsh"; 5 - version = "0.7.0"; 6 7 src = fetchFromGitHub { 8 owner = "zimbatm"; 9 repo = "mdsh"; 10 rev = "v${version}"; 11 - hash = "sha256-Y8ss/aw01zpgM6Z6fCGshP21kcdSOTVG/VqL8H3tlls="; 12 }; 13 14 - cargoSha256 = "sha256-8o4gN6mqUU+o80IqlAYAD5qpZBSQ/FY5HoNbpwzTm0A="; 15 16 meta = with lib; { 17 description = "Markdown shell pre-processor";
··· 2 3 rustPlatform.buildRustPackage rec { 4 pname = "mdsh"; 5 + version = "0.8.0"; 6 7 src = fetchFromGitHub { 8 owner = "zimbatm"; 9 repo = "mdsh"; 10 rev = "v${version}"; 11 + hash = "sha256-ammLbKEKXDSuZMr4DwPpcRSkKh7BzNC+4ZRCqTNNCQk="; 12 }; 13 14 + cargoHash = "sha256-wLHMccxk3ceZyGK27t5Kyal48yj9dQNgmEHjH9hR9Pc="; 15 16 meta = with lib; { 17 description = "Markdown shell pre-processor";
+2 -2
pkgs/development/tools/language-servers/ruff-lsp/default.nix
··· 16 17 buildPythonPackage rec { 18 pname = "ruff-lsp"; 19 - version = "0.0.52"; 20 pyproject = true; 21 disabled = pythonOlder "3.7"; 22 ··· 24 owner = "astral-sh"; 25 repo = "ruff-lsp"; 26 rev = "refs/tags/v${version}"; 27 - hash = "sha256-T18c0vKy/RUWiDjX2oScVxgVIhlj7t3M/+IoKsQ0N4w="; 28 }; 29 30 postPatch = ''
··· 16 17 buildPythonPackage rec { 18 pname = "ruff-lsp"; 19 + version = "0.0.53"; 20 pyproject = true; 21 disabled = pythonOlder "3.7"; 22 ··· 24 owner = "astral-sh"; 25 repo = "ruff-lsp"; 26 rev = "refs/tags/v${version}"; 27 + hash = "sha256-gtMqIsgGCzSBo5D4+Ne8tUloDV9+MufYkN96yr7XVd4="; 28 }; 29 30 postPatch = ''
+3 -3
pkgs/development/tools/misc/act/default.nix
··· 5 6 buildGoModule rec { 7 pname = "act"; 8 - version = "0.2.59"; 9 10 src = fetchFromGitHub { 11 owner = "nektos"; 12 repo = pname; 13 rev = "refs/tags/v${version}"; 14 - hash = "sha256-Y8g+eVZ0c0YPVL8E/JAqD6EheQX6sBHpw1tT88BkbtI="; 15 }; 16 17 - vendorHash = "sha256-0Sjj9+YJcIkigvJOXxtDVcUylZmVY/Xv/IYpEBN46Is="; 18 19 doCheck = false; 20
··· 5 6 buildGoModule rec { 7 pname = "act"; 8 + version = "0.2.60"; 9 10 src = fetchFromGitHub { 11 owner = "nektos"; 12 repo = pname; 13 rev = "refs/tags/v${version}"; 14 + hash = "sha256-FFSnxxqKAFYPuX4NJahiBS65Goj6se2U5WdPiKpNXDo="; 15 }; 16 17 + vendorHash = "sha256-FLomnHVhpvbM+O3OGwjXfrtTVbegnzry8Sl+4a3uw08="; 18 19 doCheck = false; 20
+2 -2
pkgs/development/tools/misc/devspace/default.nix
··· 7 8 buildGoModule rec { 9 pname = "devspace"; 10 - version = "6.3.11"; 11 12 src = fetchFromGitHub { 13 owner = "devspace-sh"; 14 repo = "devspace"; 15 rev = "v${version}"; 16 - hash = "sha256-g+M34y7GTbQ8FyO4BieNYgo68ZE5x3hyXiMJrx6Nqug="; 17 }; 18 19 vendorHash = null;
··· 7 8 buildGoModule rec { 9 pname = "devspace"; 10 + version = "6.3.12"; 11 12 src = fetchFromGitHub { 13 owner = "devspace-sh"; 14 repo = "devspace"; 15 rev = "v${version}"; 16 + hash = "sha256-tnkMXB0BWavSZF3HEdvtCE42zgcHNRGI5CdK3RDvv9c="; 17 }; 18 19 vendorHash = null;
+2 -2
pkgs/development/tools/misc/kool/default.nix
··· 7 8 buildGoModule rec { 9 pname = "kool"; 10 - version = "3.1.0"; 11 12 src = fetchFromGitHub { 13 owner = "kool-dev"; 14 repo = "kool"; 15 rev = version; 16 - hash = "sha256-apecHILrtvzD1bAOuyhSokDqBB2UgCavQXOw4dQSPwc="; 17 }; 18 19 vendorHash = "sha256-PmS96KVhe9TDmtYBx2hROLCbGMQ0OY3MN405dUmxPzk=";
··· 7 8 buildGoModule rec { 9 pname = "kool"; 10 + version = "3.2.0"; 11 12 src = fetchFromGitHub { 13 owner = "kool-dev"; 14 repo = "kool"; 15 rev = version; 16 + hash = "sha256-oMPzDU5MNIgxg7E2lgvgXEfO4W+VrFlLThOC9OEqhWo="; 17 }; 18 19 vendorHash = "sha256-PmS96KVhe9TDmtYBx2hROLCbGMQ0OY3MN405dUmxPzk=";
+2 -2
pkgs/development/tools/mold/default.nix
··· 23 24 stdenv.mkDerivation rec { 25 pname = "mold"; 26 - version = "2.4.0"; 27 28 src = fetchFromGitHub { 29 owner = "rui314"; 30 repo = "mold"; 31 rev = "v${version}"; 32 - hash = "sha256-ufqTbY59AI1MrY/vrsDg5a4WEVz9IFTdgl1GHMw9HGc="; 33 }; 34 35 nativeBuildInputs = [
··· 23 24 stdenv.mkDerivation rec { 25 pname = "mold"; 26 + version = "2.4.1"; 27 28 src = fetchFromGitHub { 29 owner = "rui314"; 30 repo = "mold"; 31 rev = "v${version}"; 32 + hash = "sha256-wwlpYAWP8sAsEkTq0w3s2jAWGayW3v9QcaVRKWHTlGE="; 33 }; 34 35 nativeBuildInputs = [
+2 -2
pkgs/development/tools/oh-my-posh/default.nix
··· 6 7 buildGoModule rec { 8 pname = "oh-my-posh"; 9 - version = "19.11.4"; 10 11 src = fetchFromGitHub { 12 owner = "jandedobbeleer"; 13 repo = pname; 14 rev = "refs/tags/v${version}"; 15 - hash = "sha256-xViCmfLhvRWi02hFIxKZ+5mrvoSaHRXFj4iLHtVS3uo="; 16 }; 17 18 vendorHash = "sha256-OkcwcQfI1CeKIQaaS/Bd1Hct2yebp0TB98lsGAVRWqk=";
··· 6 7 buildGoModule rec { 8 pname = "oh-my-posh"; 9 + version = "19.11.6"; 10 11 src = fetchFromGitHub { 12 owner = "jandedobbeleer"; 13 repo = pname; 14 rev = "refs/tags/v${version}"; 15 + hash = "sha256-wo8ngZ/rWugYESc1/0WjOa8Zs6aEfXv7VJ7fqqbmSCE="; 16 }; 17 18 vendorHash = "sha256-OkcwcQfI1CeKIQaaS/Bd1Hct2yebp0TB98lsGAVRWqk=";
+2 -2
pkgs/development/tools/open-policy-agent/default.nix
··· 11 12 buildGoModule rec { 13 pname = "open-policy-agent"; 14 - version = "0.61.0"; 15 16 src = fetchFromGitHub { 17 owner = "open-policy-agent"; 18 repo = "opa"; 19 rev = "v${version}"; 20 - hash = "sha256-d0/S9XP/W6Mhs1b9IBzm7kerb6SJ7UzsYS0DnTDVfvY="; 21 }; 22 23 vendorHash = null;
··· 11 12 buildGoModule rec { 13 pname = "open-policy-agent"; 14 + version = "0.62.0"; 15 16 src = fetchFromGitHub { 17 owner = "open-policy-agent"; 18 repo = "opa"; 19 rev = "v${version}"; 20 + hash = "sha256-Afaa6ykGyZQGjzSDYuJ954LF0IOzRDG8rV9hgXVT7YE="; 21 }; 22 23 vendorHash = null;
+2 -2
pkgs/development/tools/pip-audit/default.nix
··· 5 6 python3.pkgs.buildPythonApplication rec { 7 pname = "pip-audit"; 8 - version = "2.7.1"; 9 format = "pyproject"; 10 11 src = fetchFromGitHub { 12 owner = "trailofbits"; 13 repo = pname; 14 rev = "refs/tags/v${version}"; 15 - hash = "sha256-3OqF4xgRWzX4m4WW2B+cUuHJpNzf2L033ZXwGH0K4b0="; 16 }; 17 18 nativeBuildInputs = with python3.pkgs; [
··· 5 6 python3.pkgs.buildPythonApplication rec { 7 pname = "pip-audit"; 8 + version = "2.7.2"; 9 format = "pyproject"; 10 11 src = fetchFromGitHub { 12 owner = "trailofbits"; 13 repo = pname; 14 rev = "refs/tags/v${version}"; 15 + hash = "sha256-IlIPLuHGmnmt6FgX+Psw+f6XpkuhP+BZ+e4k4DV8e/U="; 16 }; 17 18 nativeBuildInputs = with python3.pkgs; [
+3 -3
pkgs/development/tools/rain/default.nix
··· 7 8 buildGoModule rec { 9 pname = "rain"; 10 - version = "1.7.5"; 11 12 src = fetchFromGitHub { 13 owner = "aws-cloudformation"; 14 repo = pname; 15 rev = "v${version}"; 16 - sha256 = "sha256-UAh84LM7QbIdxuPGN+lsbjVLd+hk8NXqwDxcRv5FAdY="; 17 }; 18 19 - vendorHash = "sha256-kd820Qe/0gN34VnX9Ge4BLeI3yySunJNjOVJXBe/M58="; 20 21 subPackages = [ "cmd/rain" ]; 22
··· 7 8 buildGoModule rec { 9 pname = "rain"; 10 + version = "1.8.0"; 11 12 src = fetchFromGitHub { 13 owner = "aws-cloudformation"; 14 repo = pname; 15 rev = "v${version}"; 16 + sha256 = "sha256-kU+eNw27jv+yhBIR09zVRedZM5WSIMU68jCkIDWvhgw="; 17 }; 18 19 + vendorHash = "sha256-Ea83gPSq7lReS2KXejY9JlDDEncqS1ouVyIEKbn+VAw="; 20 21 subPackages = [ "cmd/rain" ]; 22
+3 -3
pkgs/development/tools/rust/cargo-chef/default.nix
··· 2 3 rustPlatform.buildRustPackage rec { 4 pname = "cargo-chef"; 5 - version = "0.1.64"; 6 7 src = fetchCrate { 8 inherit pname version; 9 - sha256 = "sha256-TjmtL/0rr/rJPdWSjL6zD3H49Qhg6YE7irS1xjyc3OA="; 10 }; 11 12 - cargoHash = "sha256-1SZZva0b7/0FGqZO4RL5gMnpG+xZwKqLU1Fgv54ewNM="; 13 14 meta = with lib; { 15 description = "A cargo-subcommand to speed up Rust Docker builds using Docker layer caching";
··· 2 3 rustPlatform.buildRustPackage rec { 4 pname = "cargo-chef"; 5 + version = "0.1.65"; 6 7 src = fetchCrate { 8 inherit pname version; 9 + sha256 = "sha256-3G2mgQDSj+IL6gqdhr3Sov9FHwLA6B+MRazLNF+zKZk="; 10 }; 11 12 + cargoHash = "sha256-hWkUvUFYAOqRkoU52bKzEmvNaqASfWLlnWtIuFLMDc8="; 13 14 meta = with lib; { 15 description = "A cargo-subcommand to speed up Rust Docker builds using Docker layer caching";
+2 -2
pkgs/development/tools/upbound/default.nix
··· 2 3 buildGoModule rec { 4 pname = "upbound"; 5 - version = "0.24.1"; 6 7 src = fetchFromGitHub { 8 owner = pname; 9 repo = "up"; 10 rev = "v${version}"; 11 - sha256 = "sha256-1WSkNL1XpgnkWeL4tDiOxoKX6N5LYepD3DU0109pWC4="; 12 }; 13 14 vendorHash = "sha256-jHVwI5fQbS/FhRptRXtNezG1djaZKHJgpPJfuEH/zO0=";
··· 2 3 buildGoModule rec { 4 pname = "upbound"; 5 + version = "0.24.2"; 6 7 src = fetchFromGitHub { 8 owner = pname; 9 repo = "up"; 10 rev = "v${version}"; 11 + sha256 = "sha256-MDpe5CM5pgbrdVozh1yXiALLd8BkhrtNjL/su2JubcE="; 12 }; 13 14 vendorHash = "sha256-jHVwI5fQbS/FhRptRXtNezG1djaZKHJgpPJfuEH/zO0=";
+2 -2
pkgs/development/web/twitter-bootstrap/default.nix
··· 6 7 stdenv.mkDerivation (finalAttrs: { 8 pname = "bootstrap"; 9 - version = "5.3.2"; 10 11 src = fetchurl { 12 url = "https://github.com/twbs/bootstrap/releases/download/v${finalAttrs.version}/bootstrap-${finalAttrs.version}-dist.zip"; 13 - hash = "sha256-hUlReGqLkaBeQ9DyIATFyddhdeFv1vUNeTnnsBhMPgk="; 14 }; 15 16 nativeBuildInputs = [ unzip ];
··· 6 7 stdenv.mkDerivation (finalAttrs: { 8 pname = "bootstrap"; 9 + version = "5.3.3"; 10 11 src = fetchurl { 12 url = "https://github.com/twbs/bootstrap/releases/download/v${finalAttrs.version}/bootstrap-${finalAttrs.version}-dist.zip"; 13 + hash = "sha256-WwokWrhFiVFmjSn9FJ/GyOY8Z2l378I4IqIjwIJF3ho="; 14 }; 15 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 { 2 mkKdeDerivation, 3 qttools, 4 accounts-qt, 5 kaccounts-integration, 6 shared-mime-info, 7 xz, 8 }: 9 mkKdeDerivation { 10 pname = "akonadi"; 11 12 - # FIXME(later): investigate nixpkgs patches 13 14 extraNativeBuildInputs = [qttools shared-mime-info]; 15 - extraBuildInputs = [kaccounts-integration accounts-qt xz]; 16 }
··· 1 { 2 + lib, 3 mkKdeDerivation, 4 qttools, 5 accounts-qt, 6 kaccounts-integration, 7 shared-mime-info, 8 xz, 9 + mariadb, 10 }: 11 mkKdeDerivation { 12 pname = "akonadi"; 13 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 + ]; 22 23 extraNativeBuildInputs = [qttools shared-mime-info]; 24 + extraBuildInputs = [kaccounts-integration accounts-qt xz mariadb]; 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}: 2 mkKdeDerivation { 3 pname = "oxygen"; 4 - # FIXME(qt5) 5 - meta.broken = true; 6 }
··· 1 + { 2 + mkKdeDerivation, 3 + qtbase, 4 + libsForQt5, 5 + }: 6 mkKdeDerivation { 7 pname = "oxygen"; 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 + ''; 51 }
+2 -2
pkgs/os-specific/linux/intel-cmt-cat/default.nix
··· 1 { lib, stdenv, fetchFromGitHub }: 2 3 stdenv.mkDerivation rec { 4 - version = "23.11"; 5 pname = "intel-cmt-cat"; 6 7 src = fetchFromGitHub { 8 owner = "intel"; 9 repo = "intel-cmt-cat"; 10 rev = "v${version}"; 11 - sha256 = "sha256-/OSU/7QR8NAjcAIo+unVQfORvCH5VpjfRn5sIrCxwbE="; 12 }; 13 14 enableParallelBuilding = true;
··· 1 { lib, stdenv, fetchFromGitHub }: 2 3 stdenv.mkDerivation rec { 4 + version = "23.11.1"; 5 pname = "intel-cmt-cat"; 6 7 src = fetchFromGitHub { 8 owner = "intel"; 9 repo = "intel-cmt-cat"; 10 rev = "v${version}"; 11 + sha256 = "sha256-cBsbXua3uOqzElkLcLrOnNXXukGn5zRF8ytWa9VzGdE="; 12 }; 13 14 enableParallelBuilding = true;
+14 -14
pkgs/os-specific/linux/kernel/kernels-org.json
··· 4 "hash": "sha256:03ci53snbv917ccyjdm3xzl2fwijq5da7nkg05dpwb99wrzp8fkd" 5 }, 6 "6.1": { 7 - "version": "6.1.79", 8 - "hash": "sha256:16xkd0hcslqlcf55d4ivzhf1fkhfs5yy0m9arbax8pmm5yi9r97s" 9 }, 10 "5.15": { 11 - "version": "5.15.149", 12 - "hash": "sha256:1c01fnaghj55mkgsgddznq1zq4mswsa05rz00kmh1d3y6sd8115x" 13 }, 14 "5.10": { 15 - "version": "5.10.210", 16 - "hash": "sha256:0vggj3a71awc1w803cdzrnkn88rxr7l1xh9mmdcw9hzxj1d3r9jf" 17 }, 18 "5.4": { 19 - "version": "5.4.269", 20 - "hash": "sha256:1kqqm4hpif3jy2ycnb0dfjgzyn18vqhm1i5q7d7rkisks33bwm7z" 21 }, 22 "4.19": { 23 - "version": "4.19.307", 24 - "hash": "sha256:0lp3fc7sqy48vpcl2g0n1bz7i1hp9k0nlz3i1xfh9l056ihzzvl3" 25 }, 26 "6.6": { 27 - "version": "6.6.18", 28 - "hash": "sha256:07cv97l5jiakmmv35n0ganvqfr0590b02f3qb617qkx1zg2xhhsf" 29 }, 30 "6.7": { 31 - "version": "6.7.6", 32 - "hash": "sha256:1lrp7pwnxnqyy8c2l4n4nz997039gbnssrfm8ss8kl3h2c7fr2g4" 33 } 34 }
··· 4 "hash": "sha256:03ci53snbv917ccyjdm3xzl2fwijq5da7nkg05dpwb99wrzp8fkd" 5 }, 6 "6.1": { 7 + "version": "6.1.80", 8 + "hash": "sha256:0wdnyy7m9kfkl98id0gm6jzp4aa0hfy6gfkb4k4cg1wbpfpcm3jn" 9 }, 10 "5.15": { 11 + "version": "5.15.150", 12 + "hash": "sha256:1m74cwsbjwlamxh8vdg2y9jjzk0h7a40adml2p2wszwf8lmmj1gf" 13 }, 14 "5.10": { 15 + "version": "5.10.211", 16 + "hash": "sha256:1cir36s369fl6s46x16xnjg0wdlnkipsp2zhz11m9d3z205hly1s" 17 }, 18 "5.4": { 19 + "version": "5.4.270", 20 + "hash": "sha256:0svnkpivv5w9b2yyg0z607b84f591d401gxvr8s7kmzdxadhcjqs" 21 }, 22 "4.19": { 23 + "version": "4.19.308", 24 + "hash": "sha256:1j81zdx75m48rvqacw4xlcb13vkvlx0pfq4kdfxrsdfl7wfcwl9a" 25 }, 26 "6.6": { 27 + "version": "6.6.19", 28 + "hash": "sha256:16hk8y3pw40hahhpnpxjwhprq6hlblavr45pglpb3d62f9mpwqxm" 29 }, 30 "6.7": { 31 + "version": "6.7.7", 32 + "hash": "sha256:1n8lgf814mfslca51pm3nh4icvv1lb5w5l1sxdkf5nqdax28nsr5" 33 } 34 }
+3 -3
pkgs/os-specific/linux/kernel/linux-rt-6.1.nix
··· 6 , ... } @ args: 7 8 let 9 - version = "6.1.77-rt24"; # updated by ./update-rt.sh 10 branch = lib.versions.majorMinor version; 11 kversion = builtins.elemAt (lib.splitString "-" version) 0; 12 in buildLinux (args // { ··· 18 19 src = fetchurl { 20 url = "mirror://kernel/linux/kernel/v6.x/linux-${kversion}.tar.xz"; 21 - sha256 = "07grng6rrgpy6c3465hwqhn3gcdam1c8rwya30vgpk8nfxbfqm1v"; 22 }; 23 24 kernelPatches = let rt-patch = { 25 name = "rt"; 26 patch = fetchurl { 27 url = "mirror://kernel/linux/kernel/projects/rt/${branch}/older/patch-${version}.patch.xz"; 28 - sha256 = "194fdr89020igfdcfwdrfrl3rn51aannadr5x4yhd7p4cma0iq0a"; 29 }; 30 }; in [ rt-patch ] ++ kernelPatches; 31
··· 6 , ... } @ args: 7 8 let 9 + version = "6.1.79-rt25"; # updated by ./update-rt.sh 10 branch = lib.versions.majorMinor version; 11 kversion = builtins.elemAt (lib.splitString "-" version) 0; 12 in buildLinux (args // { ··· 18 19 src = fetchurl { 20 url = "mirror://kernel/linux/kernel/v6.x/linux-${kversion}.tar.xz"; 21 + sha256 = "16xkd0hcslqlcf55d4ivzhf1fkhfs5yy0m9arbax8pmm5yi9r97s"; 22 }; 23 24 kernelPatches = let rt-patch = { 25 name = "rt"; 26 patch = fetchurl { 27 url = "mirror://kernel/linux/kernel/projects/rt/${branch}/older/patch-${version}.patch.xz"; 28 + sha256 = "1q851lhbdcxipzxzqkyp6wv4g437kgf8yj24n2x4rkbny9vgz220"; 29 }; 30 }; in [ rt-patch ] ++ kernelPatches; 31
+3 -3
pkgs/os-specific/linux/kernel/linux-rt-6.6.nix
··· 6 , ... } @ args: 7 8 let 9 - version = "6.6.15-rt22"; # updated by ./update-rt.sh 10 branch = lib.versions.majorMinor version; 11 kversion = builtins.elemAt (lib.splitString "-" version) 0; 12 in buildLinux (args // { ··· 18 19 src = fetchurl { 20 url = "mirror://kernel/linux/kernel/v6.x/linux-${kversion}.tar.xz"; 21 - sha256 = "1ajzby6isqji1xlp660m4qj2i2xs003vsjp1jspziwl7hrzhqadb"; 22 }; 23 24 kernelPatches = let rt-patch = { 25 name = "rt"; 26 patch = fetchurl { 27 url = "mirror://kernel/linux/kernel/projects/rt/${branch}/older/patch-${version}.patch.xz"; 28 - sha256 = "0dr4lb6f95vj8vzhlvy353dk6k694f1s6qfxr10m48hzyyqyaxdy"; 29 }; 30 }; in [ rt-patch ] ++ kernelPatches; 31
··· 6 , ... } @ args: 7 8 let 9 + version = "6.6.18-rt23"; # updated by ./update-rt.sh 10 branch = lib.versions.majorMinor version; 11 kversion = builtins.elemAt (lib.splitString "-" version) 0; 12 in buildLinux (args // { ··· 18 19 src = fetchurl { 20 url = "mirror://kernel/linux/kernel/v6.x/linux-${kversion}.tar.xz"; 21 + sha256 = "07cv97l5jiakmmv35n0ganvqfr0590b02f3qb617qkx1zg2xhhsf"; 22 }; 23 24 kernelPatches = let rt-patch = { 25 name = "rt"; 26 patch = fetchurl { 27 url = "mirror://kernel/linux/kernel/projects/rt/${branch}/older/patch-${version}.patch.xz"; 28 + sha256 = "03950miwqscgnxa5x8mdx5vyyfv8hjk0g8v24b65vl48sfh8nnv8"; 29 }; 30 }; in [ rt-patch ] ++ kernelPatches; 31
+7 -9
pkgs/os-specific/linux/nvidia-x11/default.nix
··· 68 # Vulkan developer beta driver 69 # See here for more information: https://developer.nvidia.com/vulkan-driver 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="; 78 url = "https://developer.nvidia.com/downloads/vulkan-beta-${lib.concatStrings (lib.splitVersion version)}-linux"; 79 - 80 - patches = [ rcu_patch ]; 81 }; 82 83 # data center driver compatible with current default cudaPackages
··· 68 # Vulkan developer beta driver 69 # See here for more information: https://developer.nvidia.com/vulkan-driver 70 vulkan_beta = generic rec { 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 url = "https://developer.nvidia.com/downloads/vulkan-beta-${lib.concatStrings (lib.splitVersion version)}-linux"; 79 }; 80 81 # data center driver compatible with current default cudaPackages
+2 -2
pkgs/os-specific/linux/zfs/generic.nix
··· 234 235 inherit maintainers; 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. 239 broken = buildKernel && (kernelCompatible != null) && !kernelCompatible; 240 }; 241 };
··· 234 235 inherit maintainers; 236 mainProgram = "zfs"; 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 broken = buildKernel && (kernelCompatible != null) && !kernelCompatible; 240 }; 241 };
+2 -2
pkgs/os-specific/linux/zfs/stable.nix pkgs/os-specific/linux/zfs/2_2.nix
··· 12 callPackage ./generic.nix args { 13 # You have to ensure that in `pkgs/top-level/linux-kernels.nix` 14 # this attribute is the correct one for this package. 15 - kernelModuleAttribute = "zfs"; 16 # check the release notes for compatible kernels 17 kernelCompatible = kernel.kernelOlder "6.8"; 18 ··· 23 24 tests = [ 25 nixosTests.zfs.installer 26 - nixosTests.zfs.stable 27 ]; 28 29 hash = "sha256-Bzkow15OitUUQ+mTYhCXgTrQl+ao/B4feleHY/rSSjg=";
··· 12 callPackage ./generic.nix args { 13 # You have to ensure that in `pkgs/top-level/linux-kernels.nix` 14 # this attribute is the correct one for this package. 15 + kernelModuleAttribute = "zfs_2_2"; 16 # check the release notes for compatible kernels 17 kernelCompatible = kernel.kernelOlder "6.8"; 18 ··· 23 24 tests = [ 25 nixosTests.zfs.installer 26 + nixosTests.zfs.series_2_2 27 ]; 28 29 hash = "sha256-Bzkow15OitUUQ+mTYhCXgTrQl+ao/B4feleHY/rSSjg=";
+1 -1
pkgs/os-specific/linux/zfs/unstable.nix
··· 12 callPackage ./generic.nix args { 13 # You have to ensure that in `pkgs/top-level/linux-kernels.nix` 14 # this attribute is the correct one for this package. 15 - kernelModuleAttribute = "zfsUnstable"; 16 # check the release notes for compatible kernels 17 kernelCompatible = kernel.kernelOlder "6.9"; 18
··· 12 callPackage ./generic.nix args { 13 # You have to ensure that in `pkgs/top-level/linux-kernels.nix` 14 # this attribute is the correct one for this package. 15 + kernelModuleAttribute = "zfs_unstable"; 16 # check the release notes for compatible kernels 17 kernelCompatible = kernel.kernelOlder "6.9"; 18
+2 -2
pkgs/servers/gortr/default.nix
··· 5 6 buildGoModule rec { 7 pname = "gortr"; 8 - version = "0.14.8"; 9 10 src = fetchFromGitHub { 11 owner = "cloudflare"; 12 repo = pname; 13 rev = "v${version}"; 14 - sha256 = "sha256-3aZf5HINoFIJrN+196kk1lt2S+fN9DlQakwGnkMU5U8="; 15 }; 16 17 vendorHash = null;
··· 5 6 buildGoModule rec { 7 pname = "gortr"; 8 + version = "0.15.0"; 9 10 src = fetchFromGitHub { 11 owner = "cloudflare"; 12 repo = pname; 13 rev = "v${version}"; 14 + sha256 = "sha256-W6+zCLPcORGcRJF0F6/LRPap4SNVn/oKGs21T4nSNO0="; 15 }; 16 17 vendorHash = null;
+2 -2
pkgs/servers/nextcloud/default.nix
··· 55 }; 56 57 nextcloud28 = generic { 58 - version = "28.0.2"; 59 - hash = "sha256-3jTWuvPszqz90TjoVSDNheHSzmeY2f+keKwX6x76HQg="; 60 packages = nextcloud28Packages; 61 }; 62
··· 55 }; 56 57 nextcloud28 = generic { 58 + version = "28.0.3"; 59 + hash = "sha256-ntQTwN4W9bAzzu/8ypnA1h/GmNvrjbhRrJrfnu+VGQY="; 60 packages = nextcloud28Packages; 61 }; 62
+2 -2
pkgs/servers/sickbeard/sickgear.nix
··· 4 pythonEnv = python3.withPackages(ps: with ps; [ cheetah3 lxml ]); 5 in stdenv.mkDerivation rec { 6 pname = "sickgear"; 7 - version = "3.30.10"; 8 9 src = fetchFromGitHub { 10 owner = "SickGear"; 11 repo = "SickGear"; 12 rev = "release_${version}"; 13 - hash = "sha256-pTcetcZ62rHMcnplteTJQkuEIQrPUKdX+cSV5V4ZqA4="; 14 }; 15 16 patches = [
··· 4 pythonEnv = python3.withPackages(ps: with ps; [ cheetah3 lxml ]); 5 in stdenv.mkDerivation rec { 6 pname = "sickgear"; 7 + version = "3.30.11"; 8 9 src = fetchFromGitHub { 10 owner = "SickGear"; 11 repo = "SickGear"; 12 rev = "release_${version}"; 13 + hash = "sha256-o5JEjKv/7TN+BCmjxVZeOcHm5FDPMg4zM6GUeO9uZUo="; 14 }; 15 16 patches = [
+2 -2
pkgs/servers/sql/rqlite/default.nix
··· 5 6 buildGoModule rec { 7 pname = "rqlite"; 8 - version = "8.21.3"; 9 10 src = fetchFromGitHub { 11 owner = "rqlite"; 12 repo = pname; 13 rev = "v${version}"; 14 - sha256 = "sha256-YnCa0gv+loI+PeQHZWar7GpEhqvQo1AwIj5LGTol3k0="; 15 }; 16 17 vendorHash = "sha256-onR4n6ok6y9APRwGjBoMISbidGDVw19D48TkogRp1uM=";
··· 5 6 buildGoModule rec { 7 pname = "rqlite"; 8 + version = "8.22.1"; 9 10 src = fetchFromGitHub { 11 owner = "rqlite"; 12 repo = pname; 13 rev = "v${version}"; 14 + sha256 = "sha256-g5W+rHD4gUS82E+wFLQ3VTSwIWQUogwTutwPTtf+IdM="; 15 }; 16 17 vendorHash = "sha256-onR4n6ok6y9APRwGjBoMISbidGDVw19D48TkogRp1uM=";
+2 -2
pkgs/shells/fish/plugins/forgit.nix
··· 2 3 buildFishPlugin rec { 4 pname = "forgit"; 5 - version = "24.02.0"; 6 7 src = fetchFromGitHub { 8 owner = "wfxr"; 9 repo = "forgit"; 10 rev = version; 11 - hash = "sha256-DoOtrnEJwSxkCZtsVek+3w9RZH7j7LTvdleBC88xyfI="; 12 }; 13 14 postInstall = ''
··· 2 3 buildFishPlugin rec { 4 pname = "forgit"; 5 + version = "24.03.0"; 6 7 src = fetchFromGitHub { 8 owner = "wfxr"; 9 repo = "forgit"; 10 rev = version; 11 + hash = "sha256-E8zL5HPUHhb3V03yTIF6IQ83bmqrrRt0KHxYbmtzCQ4="; 12 }; 13 14 postInstall = ''
+37
pkgs/test/nixpkgs-check-by-name/Cargo.lock
··· 299 "itertools", 300 "lazy_static", 301 "regex", 302 "rnix", 303 "rowan", 304 "serde", 305 "serde_json", 306 "temp-env", 307 "tempfile", 308 ] 309 310 [[package]] ··· 393 checksum = "e5ea92a5b6195c6ef2a0295ea818b312502c6fc94dde986c5553242e18fd4ce2" 394 395 [[package]] 396 name = "rnix" 397 version = "0.11.0" 398 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 483 checksum = "942b4a808e05215192e39f4ab80813e599068285906cc91aa64f923db842bd5a" 484 485 [[package]] 486 name = "strsim" 487 version = "0.10.0" 488 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 528 checksum = "f18aa187839b2bdb1ad2fa35ead8c4c2976b64e4363c386d45ac0f7ee85c9233" 529 530 [[package]] 531 name = "unicode-ident" 532 version = "1.0.11" 533 source = "registry+https://github.com/rust-lang/crates.io-index" 534 checksum = "301abaae475aa91687eb82514b328ab47a211a533026cb25fc3e519b86adfc3c" 535 536 [[package]] 537 name = "utf8parse"
··· 299 "itertools", 300 "lazy_static", 301 "regex", 302 + "relative-path", 303 "rnix", 304 "rowan", 305 "serde", 306 "serde_json", 307 "temp-env", 308 "tempfile", 309 + "textwrap", 310 ] 311 312 [[package]] ··· 395 checksum = "e5ea92a5b6195c6ef2a0295ea818b312502c6fc94dde986c5553242e18fd4ce2" 396 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]] 404 name = "rnix" 405 version = "0.11.0" 406 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 491 checksum = "942b4a808e05215192e39f4ab80813e599068285906cc91aa64f923db842bd5a" 492 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]] 500 name = "strsim" 501 version = "0.10.0" 502 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 542 checksum = "f18aa187839b2bdb1ad2fa35ead8c4c2976b64e4363c386d45ac0f7ee85c9233" 543 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]] 556 name = "unicode-ident" 557 version = "1.0.11" 558 source = "registry+https://github.com/rust-lang/crates.io-index" 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" 572 573 [[package]] 574 name = "utf8parse"
+3 -1
pkgs/test/nixpkgs-check-by-name/Cargo.toml
··· 15 colored = "2.0.4" 16 itertools = "0.11.0" 17 rowan = "0.15.11" 18 19 [dev-dependencies] 20 temp-env = "0.3.5" 21 - indoc = "2.0.4"
··· 15 colored = "2.0.4" 16 itertools = "0.11.0" 17 rowan = "0.15.11" 18 + indoc = "2.0.4" 19 + relative-path = "1.9.2" 20 + textwrap = "0.16.1" 21 22 [dev-dependencies] 23 temp-env = "0.3.5"
+137 -52
pkgs/test/nixpkgs-check-by-name/src/eval.rs
··· 1 use crate::nixpkgs_problem::NixpkgsProblem; 2 use crate::ratchet; 3 use crate::structure; 4 use crate::utils; 5 use crate::validation::ResultIteratorExt as _; 6 use crate::validation::{self, Validation::Success}; 7 use crate::NixFileStore; 8 use std::path::Path; 9 10 use anyhow::Context; ··· 51 pub column: usize, 52 } 53 54 #[derive(Deserialize)] 55 pub enum AttributeVariant { 56 /// The attribute is not an attribute set, we're limited in the amount of information we can get ··· 163 Attribute::NonByName(non_by_name_attribute) => handle_non_by_name_attribute( 164 nixpkgs_path, 165 nix_file_store, 166 non_by_name_attribute, 167 )?, 168 Attribute::ByName(by_name_attribute) => by_name( ··· 195 use ByNameAttribute::*; 196 197 let relative_package_file = structure::relative_file_for_package(attribute_name); 198 - let absolute_package_file = nixpkgs_path.join(&relative_package_file); 199 200 // At this point we know that `pkgs/by-name/fo/foo/package.nix` has to exists. 201 // This match decides whether the attribute `foo` is defined accordingly ··· 276 // We should expect manual definitions to have a location, otherwise we can't 277 // enforce the expected format 278 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>`, 281 // 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 - )?; 293 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 - } 326 } else { 327 // If manual definitions don't have a location, it's likely `mapAttrs`'d 328 // over, e.g. if it's defined in aliases.nix. ··· 350 ) 351 } 352 353 /// Handles the evaluation result for an attribute _not_ in `pkgs/by-name`, 354 /// turning it into a validation result. 355 fn handle_non_by_name_attribute( 356 nixpkgs_path: &Path, 357 nix_file_store: &mut NixFileStore, 358 non_by_name_attribute: NonByNameAttribute, 359 ) -> validation::Result<ratchet::Package> { 360 use ratchet::RatchetState::*; ··· 405 location: Some(location), 406 }) = non_by_name_attribute { 407 408 - // Parse the Nix file in the location and figure out whether it's an 409 - // attribute definition of the form `= callPackage <arg1> <arg2>`, 410 // returning the arguments if so. 411 - let optional_syntactic_call_package = nix_file_store 412 - .get(&location.file)? 413 .call_package_argument_info_at( 414 location.line, 415 location.column, ··· 417 // strips the absolute Nixpkgs path from it, such that 418 // syntactic_call_package.relative_path is relative to Nixpkgs 419 nixpkgs_path 420 - )?; 421 422 // At this point, we completed two different checks for whether it's a 423 // `callPackage` ··· 453 _ => { 454 // Otherwise, the path is outside `pkgs/by-name`, which means it can be 455 // migrated 456 - Loose(syntactic_call_package) 457 } 458 } 459 }
··· 1 + use crate::nix_file::CallPackageArgumentInfo; 2 use crate::nixpkgs_problem::NixpkgsProblem; 3 use crate::ratchet; 4 + use crate::ratchet::RatchetState::Loose; 5 + use crate::ratchet::RatchetState::Tight; 6 use crate::structure; 7 use crate::utils; 8 use crate::validation::ResultIteratorExt as _; 9 use crate::validation::{self, Validation::Success}; 10 use crate::NixFileStore; 11 + use relative_path::RelativePathBuf; 12 use std::path::Path; 13 14 use anyhow::Context; ··· 55 pub column: usize, 56 } 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 + 72 #[derive(Deserialize)] 73 pub enum AttributeVariant { 74 /// The attribute is not an attribute set, we're limited in the amount of information we can get ··· 181 Attribute::NonByName(non_by_name_attribute) => handle_non_by_name_attribute( 182 nixpkgs_path, 183 nix_file_store, 184 + &attribute_name, 185 non_by_name_attribute, 186 )?, 187 Attribute::ByName(by_name_attribute) => by_name( ··· 214 use ByNameAttribute::*; 215 216 let relative_package_file = structure::relative_file_for_package(attribute_name); 217 218 // At this point we know that `pkgs/by-name/fo/foo/package.nix` has to exists. 219 // This match decides whether the attribute `foo` is defined accordingly ··· 294 // We should expect manual definitions to have a location, otherwise we can't 295 // enforce the expected format 296 if let Some(location) = location { 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>`, 306 // returning the arguments if so. 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 + })?; 312 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 + ) 322 } else { 323 // If manual definitions don't have a location, it's likely `mapAttrs`'d 324 // over, e.g. if it's defined in aliases.nix. ··· 346 ) 347 } 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 + 428 /// Handles the evaluation result for an attribute _not_ in `pkgs/by-name`, 429 /// turning it into a validation result. 430 fn handle_non_by_name_attribute( 431 nixpkgs_path: &Path, 432 nix_file_store: &mut NixFileStore, 433 + attribute_name: &str, 434 non_by_name_attribute: NonByNameAttribute, 435 ) -> validation::Result<ratchet::Package> { 436 use ratchet::RatchetState::*; ··· 481 location: Some(location), 482 }) = non_by_name_attribute { 483 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>`, 493 // returning the arguments if so. 494 + let (optional_syntactic_call_package, _definition) = nix_file 495 .call_package_argument_info_at( 496 location.line, 497 location.column, ··· 499 // strips the absolute Nixpkgs path from it, such that 500 // syntactic_call_package.relative_path is relative to Nixpkgs 501 nixpkgs_path 502 + ) 503 + .with_context(|| { 504 + format!("Failed to get the definition info for attribute {attribute_name}") 505 + })?; 506 507 // At this point, we completed two different checks for whether it's a 508 // `callPackage` ··· 538 _ => { 539 // Otherwise, the path is outside `pkgs/by-name`, which means it can be 540 // migrated 541 + Loose((syntactic_call_package, relative_location_file)) 542 } 543 } 544 }
+68 -41
pkgs/test/nixpkgs-check-by-name/src/main.rs
··· 1 use crate::nix_file::NixFileStore; 2 mod eval; 3 mod nix_file; 4 mod nixpkgs_problem; ··· 17 use std::io; 18 use std::path::{Path, PathBuf}; 19 use std::process::ExitCode; 20 21 /// Program to check the validity of pkgs/by-name 22 /// ··· 46 47 fn main() -> ExitCode { 48 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 - } 58 Err(e) => { 59 eprintln!("{} {:#}", "I/O error: ".yellow(), e); 60 ExitCode::from(2) ··· 77 /// - `Ok(false)` if there are problems, all of which will be written to `error_writer`. 78 /// - `Ok(true)` if there are no problems 79 pub fn process<W: io::Write>( 80 - base_nixpkgs: &Path, 81 - main_nixpkgs: &Path, 82 keep_nix_path: bool, 83 error_writer: &mut W, 84 ) -> 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 - })?; 99 100 - match check_result { 101 - Failure(errors) => { 102 for error in errors { 103 writeln!(error_writer, "{}", error.to_string().red())? 104 } 105 Ok(false) 106 } 107 - Success(()) => Ok(true), 108 } 109 } 110 ··· 113 /// This does not include ratchet checks, see ../README.md#ratchet-checks 114 /// Instead a `ratchet::Nixpkgs` value is returned, whose `compare` method allows performing the 115 /// ratchet check against another result. 116 - pub fn check_nixpkgs<W: io::Write>( 117 nixpkgs_path: &Path, 118 keep_nix_path: bool, 119 - error_writer: &mut W, 120 ) -> validation::Result<ratchet::Nixpkgs> { 121 let mut nix_file_store = NixFileStore::default(); 122 ··· 129 })?; 130 131 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 - )?; 137 Success(ratchet::Nixpkgs::default()) 138 } else { 139 check_structure(&nixpkgs_path, &mut nix_file_store)?.result_map(|package_names| ··· 163 continue; 164 } 165 166 - let expected_errors = 167 - fs::read_to_string(path.join("expected")).unwrap_or(String::new()); 168 169 test_nixpkgs(&name, &path, &expected_errors)?; 170 } ··· 201 test_nixpkgs( 202 "case_sensitive", 203 &path, 204 - "pkgs/by-name/fo: Duplicate case-sensitive package directories \"foO\" and \"foo\".\n", 205 )?; 206 207 Ok(()) ··· 225 let tmpdir = temp_root.path().join("symlinked"); 226 227 temp_env::with_var("TMPDIR", Some(&tmpdir), || { 228 - test_nixpkgs("symlinked_tmpdir", Path::new("tests/success"), "") 229 }) 230 } 231 ··· 240 // We don't want coloring to mess up the tests 241 let writer = temp_env::with_var("NO_COLOR", Some("1"), || -> anyhow::Result<_> { 242 let mut writer = vec![]; 243 - process(base_nixpkgs, &path, true, &mut writer) 244 .with_context(|| format!("Failed test case {name}"))?; 245 Ok(writer) 246 })?; ··· 249 250 if actual_errors != expected_errors { 251 panic!( 252 - "Failed test case {name}, expected these errors:\n\n{}\n\nbut got these:\n\n{}", 253 expected_errors, actual_errors 254 ); 255 }
··· 1 use crate::nix_file::NixFileStore; 2 + use std::panic; 3 mod eval; 4 mod nix_file; 5 mod nixpkgs_problem; ··· 18 use std::io; 19 use std::path::{Path, PathBuf}; 20 use std::process::ExitCode; 21 + use std::thread; 22 23 /// Program to check the validity of pkgs/by-name 24 /// ··· 48 49 fn main() -> ExitCode { 50 let args = Args::parse(); 51 + match process(args.base, args.nixpkgs, false, &mut io::stderr()) { 52 + Ok(true) => ExitCode::SUCCESS, 53 + Ok(false) => ExitCode::from(1), 54 Err(e) => { 55 eprintln!("{} {:#}", "I/O error: ".yellow(), e); 56 ExitCode::from(2) ··· 73 /// - `Ok(false)` if there are problems, all of which will be written to `error_writer`. 74 /// - `Ok(true)` if there are no problems 75 pub fn process<W: io::Write>( 76 + base_nixpkgs: PathBuf, 77 + main_nixpkgs: PathBuf, 78 keep_nix_path: bool, 79 error_writer: &mut W, 80 ) -> anyhow::Result<bool> { 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 + }; 89 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)) => { 108 for error in errors { 109 writeln!(error_writer, "{}", error.to_string().red())? 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 + )?; 117 Ok(false) 118 } 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 + } 136 } 137 } 138 ··· 141 /// This does not include ratchet checks, see ../README.md#ratchet-checks 142 /// Instead a `ratchet::Nixpkgs` value is returned, whose `compare` method allows performing the 143 /// ratchet check against another result. 144 + pub fn check_nixpkgs( 145 nixpkgs_path: &Path, 146 keep_nix_path: bool, 147 ) -> validation::Result<ratchet::Nixpkgs> { 148 let mut nix_file_store = NixFileStore::default(); 149 ··· 156 })?; 157 158 if !nixpkgs_path.join(utils::BASE_SUBPATH).exists() { 159 + // No pkgs/by-name directory, always valid 160 Success(ratchet::Nixpkgs::default()) 161 } else { 162 check_structure(&nixpkgs_path, &mut nix_file_store)?.result_map(|package_names| ··· 186 continue; 187 } 188 189 + let expected_errors = fs::read_to_string(path.join("expected")) 190 + .expect("No expected file for test {name}"); 191 192 test_nixpkgs(&name, &path, &expected_errors)?; 193 } ··· 224 test_nixpkgs( 225 "case_sensitive", 226 &path, 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", 228 )?; 229 230 Ok(()) ··· 248 let tmpdir = temp_root.path().join("symlinked"); 249 250 temp_env::with_var("TMPDIR", Some(&tmpdir), || { 251 + test_nixpkgs( 252 + "symlinked_tmpdir", 253 + Path::new("tests/success"), 254 + "Validated successfully\n", 255 + ) 256 }) 257 } 258 ··· 267 // We don't want coloring to mess up the tests 268 let writer = temp_env::with_var("NO_COLOR", Some("1"), || -> anyhow::Result<_> { 269 let mut writer = vec![]; 270 + process(base_nixpkgs.to_owned(), path.to_owned(), true, &mut writer) 271 .with_context(|| format!("Failed test case {name}"))?; 272 Ok(writer) 273 })?; ··· 276 277 if actual_errors != expected_errors { 278 panic!( 279 + "Failed test case {name}, expected these errors:\n=======\n{}\n=======\nbut got these:\n=======\n{}\n=======", 280 expected_errors, actual_errors 281 ); 282 }
+78 -33
pkgs/test/nixpkgs-check-by-name/src/nix_file.rs
··· 2 3 use crate::utils::LineIndex; 4 use anyhow::Context; 5 use rnix::ast; 6 use rnix::ast::Expr; 7 use rnix::ast::HasEntry; 8 - use rnix::SyntaxKind; 9 use rowan::ast::AstNode; 10 use rowan::TextSize; 11 use rowan::TokenAtOffset; ··· 79 #[derive(Debug, PartialEq)] 80 pub struct CallPackageArgumentInfo { 81 /// The relative path of the first argument, or `None` if it's not a path. 82 - pub relative_path: Option<PathBuf>, 83 /// Whether the second argument is an empty attribute set 84 pub empty_arg: bool, 85 } ··· 87 impl NixFile { 88 /// Returns information about callPackage arguments for an attribute at a specific line/column 89 /// index. 90 - /// If the location is not of the form `<attr> = callPackage <arg1> <arg2>;`, `None` is 91 - /// returned. 92 /// This function only returns `Err` for problems that can't be caused by the Nix contents, 93 /// but rather problems in this programs code itself. 94 /// ··· 109 /// 110 /// You'll get back 111 /// ```rust 112 - /// Some(CallPackageArgumentInfo { path = Some("default.nix"), empty_arg: true }) 113 /// ``` 114 /// 115 /// Note that this also returns the same for `pythonPackages.callPackage`. It doesn't make an ··· 119 line: usize, 120 column: usize, 121 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 } 128 129 // Internal function mainly to make it independently testable ··· 131 &self, 132 line: usize, 133 column: usize, 134 - ) -> anyhow::Result<Option<ast::AttrpathValue>> { 135 let index = self.line_index.fromlinecolumn(line, column); 136 137 let token_at_offset = self ··· 158 ) 159 }; 160 161 // node looks like "foo" 162 let Some(attrpath_node) = node.parent() else { 163 anyhow::bail!( ··· 166 ) 167 }; 168 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); 172 } 173 // attrpath_node looks like "foo.bar" 174 let Some(attrpath_value_node) = attrpath_node.parent() else { 175 anyhow::bail!( ··· 189 // unwrap is fine because we confirmed that we can cast with the above check. 190 // We could avoid this `unwrap` for a `clone`, since `cast` consumes the argument, 191 // but we still need it for the error message when the cast fails. 192 - Ok(Some(ast::AttrpathValue::cast(attrpath_value_node).unwrap())) 193 } 194 195 // Internal function mainly to make attrpath_value_at independently testable ··· 338 /// The path is outside the given absolute path 339 Outside, 340 /// The path is within the given absolute path. 341 - /// The `PathBuf` is the relative path under the given absolute path. 342 - Within(PathBuf), 343 } 344 345 impl NixFile { ··· 371 // Check if it's within relative_to 372 match resolved.strip_prefix(relative_to) { 373 Err(_prefix_error) => ResolvedPath::Outside, 374 - Ok(suffix) => ResolvedPath::Within(suffix.to_path_buf()), 375 } 376 } 377 } ··· 408 /**/quuux/**/=/**/5/**/;/*E*/ 409 410 inherit toInherit; 411 } 412 "#}; 413 ··· 417 418 // These are builtins.unsafeGetAttrPos locations for the attributes 419 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), 427 ]; 428 429 for (line, column, expected_result) in cases { 430 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); 434 } 435 436 Ok(()) ··· 466 ( 467 6, 468 Some(CallPackageArgumentInfo { 469 - relative_path: Some(PathBuf::from("file.nix")), 470 empty_arg: true, 471 }), 472 ), 473 ( 474 7, 475 Some(CallPackageArgumentInfo { 476 - relative_path: Some(PathBuf::from("file.nix")), 477 empty_arg: true, 478 }), 479 ), ··· 487 ( 488 9, 489 Some(CallPackageArgumentInfo { 490 - relative_path: Some(PathBuf::from("file.nix")), 491 empty_arg: false, 492 }), 493 ), ··· 501 ]; 502 503 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); 506 } 507 508 Ok(())
··· 2 3 use crate::utils::LineIndex; 4 use anyhow::Context; 5 + use itertools::Either::{self, Left, Right}; 6 + use relative_path::RelativePathBuf; 7 use rnix::ast; 8 use rnix::ast::Expr; 9 use rnix::ast::HasEntry; 10 use rowan::ast::AstNode; 11 use rowan::TextSize; 12 use rowan::TokenAtOffset; ··· 80 #[derive(Debug, PartialEq)] 81 pub struct CallPackageArgumentInfo { 82 /// The relative path of the first argument, or `None` if it's not a path. 83 + pub relative_path: Option<RelativePathBuf>, 84 /// Whether the second argument is an empty attribute set 85 pub empty_arg: bool, 86 } ··· 88 impl NixFile { 89 /// Returns information about callPackage arguments for an attribute at a specific line/column 90 /// index. 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 + /// 94 /// This function only returns `Err` for problems that can't be caused by the Nix contents, 95 /// but rather problems in this programs code itself. 96 /// ··· 111 /// 112 /// You'll get back 113 /// ```rust 114 + /// Ok(( 115 + /// Some(CallPackageArgumentInfo { path = Some("default.nix"), empty_arg: true }), 116 + /// "foo = self.callPackage ./default.nix { };", 117 + /// )) 118 /// ``` 119 /// 120 /// Note that this also returns the same for `pythonPackages.callPackage`. It doesn't make an ··· 124 line: usize, 125 column: usize, 126 relative_to: &Path, 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 + }) 137 } 138 139 // Internal function mainly to make it independently testable ··· 141 &self, 142 line: usize, 143 column: usize, 144 + ) -> anyhow::Result<Either<String, ast::AttrpathValue>> { 145 let index = self.line_index.fromlinecolumn(line, column); 146 147 let token_at_offset = self ··· 168 ) 169 }; 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 + 187 // node looks like "foo" 188 let Some(attrpath_node) = node.parent() else { 189 anyhow::bail!( ··· 192 ) 193 }; 194 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 + ) 201 } 202 + 203 // attrpath_node looks like "foo.bar" 204 let Some(attrpath_value_node) = attrpath_node.parent() else { 205 anyhow::bail!( ··· 219 // unwrap is fine because we confirmed that we can cast with the above check. 220 // We could avoid this `unwrap` for a `clone`, since `cast` consumes the argument, 221 // but we still need it for the error message when the cast fails. 222 + Ok(Right( 223 + ast::AttrpathValue::cast(attrpath_value_node).unwrap(), 224 + )) 225 } 226 227 // Internal function mainly to make attrpath_value_at independently testable ··· 370 /// The path is outside the given absolute path 371 Outside, 372 /// The path is within the given absolute path. 373 + /// The `RelativePathBuf` is the relative path under the given absolute path. 374 + Within(RelativePathBuf), 375 } 376 377 impl NixFile { ··· 403 // Check if it's within relative_to 404 match resolved.strip_prefix(relative_to) { 405 Err(_prefix_error) => ResolvedPath::Outside, 406 + Ok(suffix) => ResolvedPath::Within( 407 + RelativePathBuf::from_path(suffix).expect("a relative path"), 408 + ), 409 } 410 } 411 } ··· 442 /**/quuux/**/=/**/5/**/;/*E*/ 443 444 inherit toInherit; 445 + inherit (toInherit) toInherit; 446 } 447 "#}; 448 ··· 452 453 // These are builtins.unsafeGetAttrPos locations for the attributes 454 let cases = [ 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;")), 463 ]; 464 465 for (line, column, expected_result) in cases { 466 let actual_result = nix_file 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 + ); 477 } 478 479 Ok(()) ··· 509 ( 510 6, 511 Some(CallPackageArgumentInfo { 512 + relative_path: Some(RelativePathBuf::from("file.nix")), 513 empty_arg: true, 514 }), 515 ), 516 ( 517 7, 518 Some(CallPackageArgumentInfo { 519 + relative_path: Some(RelativePathBuf::from("file.nix")), 520 empty_arg: true, 521 }), 522 ), ··· 530 ( 531 9, 532 Some(CallPackageArgumentInfo { 533 + relative_path: Some(RelativePathBuf::from("file.nix")), 534 empty_arg: false, 535 }), 536 ), ··· 544 ]; 545 546 for (line, expected_result) in cases { 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}"); 551 } 552 553 Ok(())
+261 -109
pkgs/test/nixpkgs-check-by-name/src/nixpkgs_problem.rs
··· 1 use crate::structure; 2 use crate::utils::PACKAGE_NIX_FILENAME; 3 use std::ffi::OsString; 4 use std::fmt; 5 - use std::io; 6 - use std::path::PathBuf; 7 8 /// Any problem that can occur when checking Nixpkgs 9 pub enum NixpkgsProblem { 10 ShardNonDir { 11 - relative_shard_path: PathBuf, 12 }, 13 InvalidShardName { 14 - relative_shard_path: PathBuf, 15 shard_name: String, 16 }, 17 PackageNonDir { 18 - relative_package_dir: PathBuf, 19 }, 20 CaseSensitiveDuplicate { 21 - relative_shard_path: PathBuf, 22 first: OsString, 23 second: OsString, 24 }, 25 InvalidPackageName { 26 - relative_package_dir: PathBuf, 27 package_name: String, 28 }, 29 IncorrectShard { 30 - relative_package_dir: PathBuf, 31 - correct_relative_package_dir: PathBuf, 32 }, 33 PackageNixNonExistent { 34 - relative_package_dir: PathBuf, 35 }, 36 PackageNixDir { 37 - relative_package_dir: PathBuf, 38 }, 39 UndefinedAttr { 40 - relative_package_file: PathBuf, 41 package_name: String, 42 }, 43 - WrongCallPackage { 44 - relative_package_file: PathBuf, 45 package_name: String, 46 }, 47 NonDerivation { 48 - relative_package_file: PathBuf, 49 package_name: String, 50 }, 51 OutsideSymlink { 52 - relative_package_dir: PathBuf, 53 - subpath: PathBuf, 54 }, 55 UnresolvableSymlink { 56 - relative_package_dir: PathBuf, 57 - subpath: PathBuf, 58 - io_error: io::Error, 59 }, 60 PathInterpolation { 61 - relative_package_dir: PathBuf, 62 - subpath: PathBuf, 63 line: usize, 64 text: String, 65 }, 66 SearchPath { 67 - relative_package_dir: PathBuf, 68 - subpath: PathBuf, 69 line: usize, 70 text: String, 71 }, 72 OutsidePathReference { 73 - relative_package_dir: PathBuf, 74 - subpath: PathBuf, 75 line: usize, 76 text: String, 77 }, 78 UnresolvablePathReference { 79 - relative_package_dir: PathBuf, 80 - subpath: PathBuf, 81 line: usize, 82 text: String, 83 - io_error: io::Error, 84 }, 85 - MovedOutOfByName { 86 package_name: String, 87 - call_package_path: Option<PathBuf>, 88 - empty_arg: bool, 89 }, 90 - NewPackageNotUsingByName { 91 package_name: String, 92 - call_package_path: Option<PathBuf>, 93 - empty_arg: bool, 94 }, 95 InternalCallPackageUsed { 96 attr_name: String, ··· 106 NixpkgsProblem::ShardNonDir { relative_shard_path } => 107 write!( 108 f, 109 - "{}: This is a file, but it should be a directory.", 110 - relative_shard_path.display(), 111 ), 112 NixpkgsProblem::InvalidShardName { relative_shard_path, shard_name } => 113 write!( 114 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() 117 ), 118 NixpkgsProblem::PackageNonDir { relative_package_dir } => 119 write!( 120 f, 121 - "{}: This path is a file, but it should be a directory.", 122 - relative_package_dir.display(), 123 ), 124 NixpkgsProblem::CaseSensitiveDuplicate { relative_shard_path, first, second } => 125 write!( 126 f, 127 - "{}: Duplicate case-sensitive package directories {first:?} and {second:?}.", 128 - relative_shard_path.display(), 129 ), 130 NixpkgsProblem::InvalidPackageName { relative_package_dir, package_name } => 131 write!( 132 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(), 135 ), 136 NixpkgsProblem::IncorrectShard { relative_package_dir, correct_relative_package_dir } => 137 write!( 138 f, 139 - "{}: Incorrect directory location, should be {} instead.", 140 - relative_package_dir.display(), 141 - correct_relative_package_dir.display(), 142 ), 143 NixpkgsProblem::PackageNixNonExistent { relative_package_dir } => 144 write!( 145 f, 146 - "{}: Missing required \"{PACKAGE_NIX_FILENAME}\" file.", 147 - relative_package_dir.display(), 148 ), 149 NixpkgsProblem::PackageNixDir { relative_package_dir } => 150 write!( 151 f, 152 - "{}: \"{PACKAGE_NIX_FILENAME}\" must be a file.", 153 - relative_package_dir.display(), 154 ), 155 NixpkgsProblem::UndefinedAttr { relative_package_file, package_name } => 156 write!( 157 f, 158 - "pkgs.{package_name}: This attribute is not defined but it should be defined automatically as {}", 159 - relative_package_file.display() 160 ), 161 - NixpkgsProblem::WrongCallPackage { relative_package_file, package_name } => 162 - write!( 163 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 - ), 167 NixpkgsProblem::NonDerivation { relative_package_file, package_name } => 168 write!( 169 f, 170 - "pkgs.{package_name}: This attribute defined by {} is not a derivation", 171 - relative_package_file.display() 172 ), 173 NixpkgsProblem::OutsideSymlink { relative_package_dir, subpath } => 174 write!( 175 f, 176 - "{}: Path {} is a symlink pointing to a path outside the directory of that package.", 177 - relative_package_dir.display(), 178 - subpath.display(), 179 ), 180 NixpkgsProblem::UnresolvableSymlink { relative_package_dir, subpath, io_error } => 181 write!( 182 f, 183 - "{}: Path {} is a symlink which cannot be resolved: {io_error}.", 184 - relative_package_dir.display(), 185 - subpath.display(), 186 ), 187 NixpkgsProblem::PathInterpolation { relative_package_dir, subpath, line, text } => 188 write!( 189 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 194 ), 195 NixpkgsProblem::SearchPath { relative_package_dir, subpath, line, text } => 196 write!( 197 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 202 ), 203 NixpkgsProblem::OutsidePathReference { relative_package_dir, subpath, line, text } => 204 write!( 205 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, 210 ), 211 NixpkgsProblem::UnresolvablePathReference { relative_package_dir, subpath, line, text, io_error } => 212 write!( 213 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, 218 ), 219 - NixpkgsProblem::MovedOutOfByName { package_name, call_package_path, empty_arg } => { 220 let call_package_arg = 221 if let Some(path) = &call_package_path { 222 - format!("./{}", path.display()) 223 } else { 224 "...".into() 225 }; 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 - } 241 }, 242 - NixpkgsProblem::NewPackageNotUsingByName { package_name, call_package_path, empty_arg } => { 243 let call_package_arg = 244 if let Some(path) = &call_package_path { 245 - format!("./{}", path.display()) 246 } else { 247 "...".into() 248 }; 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." 252 } else { 253 - "Since the second `callPackage` argument is not `{ }`, the manual `callPackage` (e.g. in `pkgs/top-level/all-packages.nix`) is still needed." 254 }; 255 - write!( 256 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(), 259 ) 260 }, 261 NixpkgsProblem::InternalCallPackageUsed { attr_name } => ··· 271 } 272 } 273 }
··· 1 use crate::structure; 2 use crate::utils::PACKAGE_NIX_FILENAME; 3 + use indoc::writedoc; 4 + use relative_path::RelativePath; 5 + use relative_path::RelativePathBuf; 6 use std::ffi::OsString; 7 use std::fmt; 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)] 13 pub enum NixpkgsProblem { 14 ShardNonDir { 15 + relative_shard_path: RelativePathBuf, 16 }, 17 InvalidShardName { 18 + relative_shard_path: RelativePathBuf, 19 shard_name: String, 20 }, 21 PackageNonDir { 22 + relative_package_dir: RelativePathBuf, 23 }, 24 CaseSensitiveDuplicate { 25 + relative_shard_path: RelativePathBuf, 26 first: OsString, 27 second: OsString, 28 }, 29 InvalidPackageName { 30 + relative_package_dir: RelativePathBuf, 31 package_name: String, 32 }, 33 IncorrectShard { 34 + relative_package_dir: RelativePathBuf, 35 + correct_relative_package_dir: RelativePathBuf, 36 }, 37 PackageNixNonExistent { 38 + relative_package_dir: RelativePathBuf, 39 }, 40 PackageNixDir { 41 + relative_package_dir: RelativePathBuf, 42 }, 43 UndefinedAttr { 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 { 69 package_name: String, 70 + file: RelativePathBuf, 71 + line: usize, 72 + actual_path: RelativePathBuf, 73 + expected_path: RelativePathBuf, 74 }, 75 + NonSyntacticCallPackage { 76 package_name: String, 77 + file: RelativePathBuf, 78 + line: usize, 79 + column: usize, 80 + definition: String, 81 }, 82 NonDerivation { 83 + relative_package_file: RelativePathBuf, 84 package_name: String, 85 }, 86 OutsideSymlink { 87 + relative_package_dir: RelativePathBuf, 88 + subpath: RelativePathBuf, 89 }, 90 UnresolvableSymlink { 91 + relative_package_dir: RelativePathBuf, 92 + subpath: RelativePathBuf, 93 + io_error: String, 94 }, 95 PathInterpolation { 96 + relative_package_dir: RelativePathBuf, 97 + subpath: RelativePathBuf, 98 line: usize, 99 text: String, 100 }, 101 SearchPath { 102 + relative_package_dir: RelativePathBuf, 103 + subpath: RelativePathBuf, 104 line: usize, 105 text: String, 106 }, 107 OutsidePathReference { 108 + relative_package_dir: RelativePathBuf, 109 + subpath: RelativePathBuf, 110 line: usize, 111 text: String, 112 }, 113 UnresolvablePathReference { 114 + relative_package_dir: RelativePathBuf, 115 + subpath: RelativePathBuf, 116 line: usize, 117 text: String, 118 + io_error: String, 119 + }, 120 + MovedOutOfByNameEmptyArg { 121 + package_name: String, 122 + call_package_path: Option<RelativePathBuf>, 123 + file: RelativePathBuf, 124 }, 125 + MovedOutOfByNameNonEmptyArg { 126 + package_name: String, 127 + call_package_path: Option<RelativePathBuf>, 128 + file: RelativePathBuf, 129 + }, 130 + NewPackageNotUsingByNameEmptyArg { 131 package_name: String, 132 + call_package_path: Option<RelativePathBuf>, 133 + file: RelativePathBuf, 134 }, 135 + NewPackageNotUsingByNameNonEmptyArg { 136 package_name: String, 137 + call_package_path: Option<RelativePathBuf>, 138 + file: RelativePathBuf, 139 }, 140 InternalCallPackageUsed { 141 attr_name: String, ··· 151 NixpkgsProblem::ShardNonDir { relative_shard_path } => 152 write!( 153 f, 154 + "{relative_shard_path}: This is a file, but it should be a directory.", 155 ), 156 NixpkgsProblem::InvalidShardName { relative_shard_path, shard_name } => 157 write!( 158 f, 159 + "{relative_shard_path}: Invalid directory name \"{shard_name}\", must be at most 2 ASCII characters consisting of a-z, 0-9, \"-\" or \"_\".", 160 ), 161 NixpkgsProblem::PackageNonDir { relative_package_dir } => 162 write!( 163 f, 164 + "{relative_package_dir}: This path is a file, but it should be a directory.", 165 ), 166 NixpkgsProblem::CaseSensitiveDuplicate { relative_shard_path, first, second } => 167 write!( 168 f, 169 + "{relative_shard_path}: Duplicate case-sensitive package directories {first:?} and {second:?}.", 170 ), 171 NixpkgsProblem::InvalidPackageName { relative_package_dir, package_name } => 172 write!( 173 f, 174 + "{relative_package_dir}: Invalid package directory name \"{package_name}\", must be ASCII characters consisting of a-z, A-Z, 0-9, \"-\" or \"_\".", 175 ), 176 NixpkgsProblem::IncorrectShard { relative_package_dir, correct_relative_package_dir } => 177 write!( 178 f, 179 + "{relative_package_dir}: Incorrect directory location, should be {correct_relative_package_dir} instead.", 180 ), 181 NixpkgsProblem::PackageNixNonExistent { relative_package_dir } => 182 write!( 183 f, 184 + "{relative_package_dir}: Missing required \"{PACKAGE_NIX_FILENAME}\" file.", 185 ), 186 NixpkgsProblem::PackageNixDir { relative_package_dir } => 187 write!( 188 f, 189 + "{relative_package_dir}: \"{PACKAGE_NIX_FILENAME}\" must be a file.", 190 ), 191 NixpkgsProblem::UndefinedAttr { relative_package_file, package_name } => 192 write!( 193 f, 194 + "pkgs.{package_name}: This attribute is not defined but it should be defined automatically as {relative_package_file}", 195 ), 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!( 201 f, 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 + } 283 NixpkgsProblem::NonDerivation { relative_package_file, package_name } => 284 write!( 285 f, 286 + "pkgs.{package_name}: This attribute defined by {relative_package_file} is not a derivation", 287 ), 288 NixpkgsProblem::OutsideSymlink { relative_package_dir, subpath } => 289 write!( 290 f, 291 + "{relative_package_dir}: Path {subpath} is a symlink pointing to a path outside the directory of that package.", 292 ), 293 NixpkgsProblem::UnresolvableSymlink { relative_package_dir, subpath, io_error } => 294 write!( 295 f, 296 + "{relative_package_dir}: Path {subpath} is a symlink which cannot be resolved: {io_error}.", 297 ), 298 NixpkgsProblem::PathInterpolation { relative_package_dir, subpath, line, text } => 299 write!( 300 f, 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.", 302 ), 303 NixpkgsProblem::SearchPath { relative_package_dir, subpath, line, text } => 304 write!( 305 f, 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.", 307 ), 308 NixpkgsProblem::OutsidePathReference { relative_package_dir, subpath, line, text } => 309 write!( 310 f, 311 + "{relative_package_dir}: File {subpath} at line {line} contains the path expression \"{text}\" which may point outside the directory of that package.", 312 ), 313 NixpkgsProblem::UnresolvablePathReference { relative_package_dir, subpath, line, text, io_error } => 314 write!( 315 f, 316 + "{relative_package_dir}: File {subpath} at line {line} contains the path expression \"{text}\" which cannot be resolved: {io_error}.", 317 ), 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 } => { 335 let call_package_arg = 336 if let Some(path) = &call_package_path { 337 + format!("./{}", path) 338 } else { 339 "...".into() 340 }; 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 + ) 351 }, 352 + NixpkgsProblem::NewPackageNotUsingByNameEmptyArg { package_name, call_package_path, file } => { 353 let call_package_arg = 354 if let Some(path) = &call_package_path { 355 + format!("./{}", path) 356 } else { 357 "...".into() 358 }; 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) 374 } else { 375 + "...".into() 376 }; 377 + let relative_package_file = structure::relative_file_for_package(package_name); 378 + writedoc!( 379 f, 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 + ", 386 ) 387 }, 388 NixpkgsProblem::InternalCallPackageUsed { attr_name } => ··· 398 } 399 } 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 5 use crate::nix_file::CallPackageArgumentInfo; 6 use crate::nixpkgs_problem::NixpkgsProblem; 7 - use crate::structure; 8 use crate::validation::{self, Validation, Validation::Success}; 9 use std::collections::HashMap; 10 11 /// The ratchet value for the entirety of Nixpkgs. ··· 127 pub enum ManualDefinition {} 128 129 impl ToNixpkgsProblem for ManualDefinition { 130 - type ToContext = (); 131 132 fn to_nixpkgs_problem( 133 - name: &str, 134 _optional_from: Option<()>, 135 - _to: &Self::ToContext, 136 ) -> NixpkgsProblem { 137 - NixpkgsProblem::WrongCallPackage { 138 - relative_package_file: structure::relative_file_for_package(name), 139 - package_name: name.to_owned(), 140 - } 141 } 142 } 143 ··· 149 pub enum UsesByName {} 150 151 impl ToNixpkgsProblem for UsesByName { 152 - type ToContext = CallPackageArgumentInfo; 153 154 fn to_nixpkgs_problem( 155 name: &str, 156 optional_from: Option<()>, 157 - to: &Self::ToContext, 158 ) -> NixpkgsProblem { 159 if let Some(()) = optional_from { 160 - NixpkgsProblem::MovedOutOfByName { 161 package_name: name.to_owned(), 162 call_package_path: to.relative_path.clone(), 163 - empty_arg: to.empty_arg, 164 } 165 } else { 166 - NixpkgsProblem::NewPackageNotUsingByName { 167 package_name: name.to_owned(), 168 call_package_path: to.relative_path.clone(), 169 - empty_arg: to.empty_arg, 170 } 171 } 172 }
··· 4 5 use crate::nix_file::CallPackageArgumentInfo; 6 use crate::nixpkgs_problem::NixpkgsProblem; 7 use crate::validation::{self, Validation, Validation::Success}; 8 + use relative_path::RelativePathBuf; 9 use std::collections::HashMap; 10 11 /// The ratchet value for the entirety of Nixpkgs. ··· 127 pub enum ManualDefinition {} 128 129 impl ToNixpkgsProblem for ManualDefinition { 130 + type ToContext = NixpkgsProblem; 131 132 fn to_nixpkgs_problem( 133 + _name: &str, 134 _optional_from: Option<()>, 135 + to: &Self::ToContext, 136 ) -> NixpkgsProblem { 137 + (*to).clone() 138 } 139 } 140 ··· 146 pub enum UsesByName {} 147 148 impl ToNixpkgsProblem for UsesByName { 149 + type ToContext = (CallPackageArgumentInfo, RelativePathBuf); 150 151 fn to_nixpkgs_problem( 152 name: &str, 153 optional_from: Option<()>, 154 + (to, file): &Self::ToContext, 155 ) -> NixpkgsProblem { 156 if let Some(()) = optional_from { 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 { 172 package_name: name.to_owned(), 173 call_package_path: to.relative_path.clone(), 174 + file: file.to_owned(), 175 } 176 } else { 177 + NixpkgsProblem::NewPackageNotUsingByNameNonEmptyArg { 178 package_name: name.to_owned(), 179 call_package_path: to.relative_path.clone(), 180 + file: file.to_owned(), 181 } 182 } 183 }
+29 -27
pkgs/test/nixpkgs-check-by-name/src/references.rs
··· 2 use crate::utils; 3 use crate::validation::{self, ResultIteratorExt, Validation::Success}; 4 use crate::NixFileStore; 5 6 use anyhow::Context; 7 use rowan::ast::AstNode; ··· 12 /// Both symlinks and Nix path expressions are checked. 13 pub fn check_references( 14 nix_file_store: &mut NixFileStore, 15 - relative_package_dir: &Path, 16 absolute_package_dir: &Path, 17 ) -> validation::Result<()> { 18 // The first subpath to check is the package directory itself, which we can represent as an 19 // empty path, since the absolute package directory gets prepended to this. 20 // We don't use `./.` to keep the error messages cleaner 21 // (there's no canonicalisation going on underneath) 22 - let subpath = Path::new(""); 23 check_path( 24 nix_file_store, 25 relative_package_dir, ··· 29 .with_context(|| { 30 format!( 31 "While checking the references in package directory {}", 32 - relative_package_dir.display() 33 ) 34 }) 35 } ··· 41 /// The absolute package directory gets prepended before doing anything with it though. 42 fn check_path( 43 nix_file_store: &mut NixFileStore, 44 - relative_package_dir: &Path, 45 absolute_package_dir: &Path, 46 - subpath: &Path, 47 ) -> validation::Result<()> { 48 - let path = absolute_package_dir.join(subpath); 49 50 Ok(if path.is_symlink() { 51 // Check whether the symlink resolves to outside the package directory ··· 55 // entire directory recursively anyways 56 if let Err(_prefix_error) = target.strip_prefix(absolute_package_dir) { 57 NixpkgsProblem::OutsideSymlink { 58 - relative_package_dir: relative_package_dir.to_path_buf(), 59 - subpath: subpath.to_path_buf(), 60 } 61 .into() 62 } else { ··· 64 } 65 } 66 Err(io_error) => NixpkgsProblem::UnresolvableSymlink { 67 - relative_package_dir: relative_package_dir.to_path_buf(), 68 - subpath: subpath.to_path_buf(), 69 - io_error, 70 } 71 .into(), 72 } ··· 80 nix_file_store, 81 relative_package_dir, 82 absolute_package_dir, 83 - &subpath.join(entry.file_name()), 84 ) 85 }) 86 .collect_vec() 87 - .with_context(|| format!("Error while recursing into {}", subpath.display()))?, 88 ) 89 } else if path.is_file() { 90 // Only check Nix files ··· 96 absolute_package_dir, 97 subpath, 98 ) 99 - .with_context(|| format!("Error while checking Nix file {}", subpath.display()))? 100 } else { 101 Success(()) 102 } ··· 105 } 106 } else { 107 // This should never happen, git doesn't support other file types 108 - anyhow::bail!("Unsupported file type for path {}", subpath.display()); 109 }) 110 } 111 ··· 113 /// directory 114 fn check_nix_file( 115 nix_file_store: &mut NixFileStore, 116 - relative_package_dir: &Path, 117 absolute_package_dir: &Path, 118 - subpath: &Path, 119 ) -> validation::Result<()> { 120 - let path = absolute_package_dir.join(subpath); 121 122 let nix_file = nix_file_store.get(&path)?; 123 ··· 135 136 match nix_file.static_resolve_path(path, absolute_package_dir) { 137 ResolvedPath::Interpolated => NixpkgsProblem::PathInterpolation { 138 - relative_package_dir: relative_package_dir.to_path_buf(), 139 - subpath: subpath.to_path_buf(), 140 line, 141 text, 142 } 143 .into(), 144 ResolvedPath::SearchPath => NixpkgsProblem::SearchPath { 145 - relative_package_dir: relative_package_dir.to_path_buf(), 146 - subpath: subpath.to_path_buf(), 147 line, 148 text, 149 } 150 .into(), 151 ResolvedPath::Outside => NixpkgsProblem::OutsidePathReference { 152 - relative_package_dir: relative_package_dir.to_path_buf(), 153 - subpath: subpath.to_path_buf(), 154 line, 155 text, 156 } 157 .into(), 158 ResolvedPath::Unresolvable(e) => NixpkgsProblem::UnresolvablePathReference { 159 - relative_package_dir: relative_package_dir.to_path_buf(), 160 - subpath: subpath.to_path_buf(), 161 line, 162 text, 163 - io_error: e, 164 } 165 .into(), 166 ResolvedPath::Within(..) => {
··· 2 use crate::utils; 3 use crate::validation::{self, ResultIteratorExt, Validation::Success}; 4 use crate::NixFileStore; 5 + use relative_path::RelativePath; 6 7 use anyhow::Context; 8 use rowan::ast::AstNode; ··· 13 /// Both symlinks and Nix path expressions are checked. 14 pub fn check_references( 15 nix_file_store: &mut NixFileStore, 16 + relative_package_dir: &RelativePath, 17 absolute_package_dir: &Path, 18 ) -> validation::Result<()> { 19 // The first subpath to check is the package directory itself, which we can represent as an 20 // empty path, since the absolute package directory gets prepended to this. 21 // We don't use `./.` to keep the error messages cleaner 22 // (there's no canonicalisation going on underneath) 23 + let subpath = RelativePath::new(""); 24 check_path( 25 nix_file_store, 26 relative_package_dir, ··· 30 .with_context(|| { 31 format!( 32 "While checking the references in package directory {}", 33 + relative_package_dir 34 ) 35 }) 36 } ··· 42 /// The absolute package directory gets prepended before doing anything with it though. 43 fn check_path( 44 nix_file_store: &mut NixFileStore, 45 + relative_package_dir: &RelativePath, 46 absolute_package_dir: &Path, 47 + subpath: &RelativePath, 48 ) -> validation::Result<()> { 49 + let path = subpath.to_path(absolute_package_dir); 50 51 Ok(if path.is_symlink() { 52 // Check whether the symlink resolves to outside the package directory ··· 56 // entire directory recursively anyways 57 if let Err(_prefix_error) = target.strip_prefix(absolute_package_dir) { 58 NixpkgsProblem::OutsideSymlink { 59 + relative_package_dir: relative_package_dir.to_owned(), 60 + subpath: subpath.to_owned(), 61 } 62 .into() 63 } else { ··· 65 } 66 } 67 Err(io_error) => NixpkgsProblem::UnresolvableSymlink { 68 + relative_package_dir: relative_package_dir.to_owned(), 69 + subpath: subpath.to_owned(), 70 + io_error: io_error.to_string(), 71 } 72 .into(), 73 } ··· 81 nix_file_store, 82 relative_package_dir, 83 absolute_package_dir, 84 + // TODO: The relative_path crate doesn't seem to support OsStr 85 + &subpath.join(entry.file_name().to_string_lossy().to_string()), 86 ) 87 }) 88 .collect_vec() 89 + .with_context(|| format!("Error while recursing into {}", subpath))?, 90 ) 91 } else if path.is_file() { 92 // Only check Nix files ··· 98 absolute_package_dir, 99 subpath, 100 ) 101 + .with_context(|| format!("Error while checking Nix file {}", subpath))? 102 } else { 103 Success(()) 104 } ··· 107 } 108 } else { 109 // This should never happen, git doesn't support other file types 110 + anyhow::bail!("Unsupported file type for path {}", subpath); 111 }) 112 } 113 ··· 115 /// directory 116 fn check_nix_file( 117 nix_file_store: &mut NixFileStore, 118 + relative_package_dir: &RelativePath, 119 absolute_package_dir: &Path, 120 + subpath: &RelativePath, 121 ) -> validation::Result<()> { 122 + let path = subpath.to_path(absolute_package_dir); 123 124 let nix_file = nix_file_store.get(&path)?; 125 ··· 137 138 match nix_file.static_resolve_path(path, absolute_package_dir) { 139 ResolvedPath::Interpolated => NixpkgsProblem::PathInterpolation { 140 + relative_package_dir: relative_package_dir.to_owned(), 141 + subpath: subpath.to_owned(), 142 line, 143 text, 144 } 145 .into(), 146 ResolvedPath::SearchPath => NixpkgsProblem::SearchPath { 147 + relative_package_dir: relative_package_dir.to_owned(), 148 + subpath: subpath.to_owned(), 149 line, 150 text, 151 } 152 .into(), 153 ResolvedPath::Outside => NixpkgsProblem::OutsidePathReference { 154 + relative_package_dir: relative_package_dir.to_owned(), 155 + subpath: subpath.to_owned(), 156 line, 157 text, 158 } 159 .into(), 160 ResolvedPath::Unresolvable(e) => NixpkgsProblem::UnresolvablePathReference { 161 + relative_package_dir: relative_package_dir.to_owned(), 162 + subpath: subpath.to_owned(), 163 line, 164 text, 165 + io_error: e.to_string(), 166 } 167 .into(), 168 ResolvedPath::Within(..) => {
+9 -7
pkgs/test/nixpkgs-check-by-name/src/structure.rs
··· 7 use itertools::concat; 8 use lazy_static::lazy_static; 9 use regex::Regex; 10 use std::fs::DirEntry; 11 - use std::path::{Path, PathBuf}; 12 13 lazy_static! { 14 static ref SHARD_NAME_REGEX: Regex = Regex::new(r"^[a-z0-9_-]{1,2}$").unwrap(); ··· 21 package_name.to_lowercase().chars().take(2).collect() 22 } 23 24 - pub fn relative_dir_for_shard(shard_name: &str) -> PathBuf { 25 - PathBuf::from(format!("{BASE_SUBPATH}/{shard_name}")) 26 } 27 28 - pub fn relative_dir_for_package(package_name: &str) -> PathBuf { 29 relative_dir_for_shard(&shard_for_package(package_name)).join(package_name) 30 } 31 32 - pub fn relative_file_for_package(package_name: &str) -> PathBuf { 33 relative_dir_for_package(package_name).join(PACKAGE_NIX_FILENAME) 34 } 35 ··· 120 ) -> validation::Result<String> { 121 let package_path = package_entry.path(); 122 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 125 Ok(if !package_path.is_dir() { 126 NixpkgsProblem::PackageNonDir { ··· 174 let result = result.and(references::check_references( 175 nix_file_store, 176 &relative_package_dir, 177 - &path.join(&relative_package_dir), 178 )?); 179 180 result.map(|_| package_name.clone())
··· 7 use itertools::concat; 8 use lazy_static::lazy_static; 9 use regex::Regex; 10 + use relative_path::RelativePathBuf; 11 use std::fs::DirEntry; 12 + use std::path::Path; 13 14 lazy_static! { 15 static ref SHARD_NAME_REGEX: Regex = Regex::new(r"^[a-z0-9_-]{1,2}$").unwrap(); ··· 22 package_name.to_lowercase().chars().take(2).collect() 23 } 24 25 + pub fn relative_dir_for_shard(shard_name: &str) -> RelativePathBuf { 26 + RelativePathBuf::from(format!("{BASE_SUBPATH}/{shard_name}")) 27 } 28 29 + pub fn relative_dir_for_package(package_name: &str) -> RelativePathBuf { 30 relative_dir_for_shard(&shard_for_package(package_name)).join(package_name) 31 } 32 33 + pub fn relative_file_for_package(package_name: &str) -> RelativePathBuf { 34 relative_dir_for_package(package_name).join(PACKAGE_NIX_FILENAME) 35 } 36 ··· 121 ) -> validation::Result<String> { 122 let package_path = package_entry.path(); 123 let package_name = package_entry.file_name().to_string_lossy().into_owned(); 124 + let relative_package_dir = 125 + RelativePathBuf::from(format!("{BASE_SUBPATH}/{shard_name}/{package_name}")); 126 127 Ok(if !package_path.is_dir() { 128 NixpkgsProblem::PackageNonDir { ··· 176 let result = result.and(references::check_references( 177 nix_file_store, 178 &relative_package_dir, 179 + &relative_package_dir.to_path(path), 180 )?); 181 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 pkgs.foo: This attribute is not defined but it should be defined automatically as pkgs/by-name/fo/foo/package.nix
··· 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 pkgs/by-name/aa/FOO: Incorrect directory location, should be pkgs/by-name/fo/FOO instead.
··· 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 pkgs.foo: This attribute is defined using `_internalCallByNamePackageFile`, which is an internal function not intended for manual use.
··· 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 pkgs/by-name/fo/fo@: Invalid package directory name "fo@", must be ASCII characters consisting of a-z, A-Z, 0-9, "-" or "_".
··· 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 pkgs/by-name/A: Invalid directory name "A", must be at most 2 ASCII characters consisting of a-z, 0-9, "-" or "_".
··· 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 pkgs/by-name/fo/foo: Missing required "package.nix" file.
··· 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 lib = import <test-nixpkgs/lib>; 29 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 - }; 38 39 baseDirectory = root + "/pkgs/by-name"; 40
··· 28 lib = import <test-nixpkgs/lib>; 29 30 # The base fixed-point function to populate the resulting attribute set 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 + }; 47 48 baseDirectory = root + "/pkgs/by-name"; 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 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 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 pkgs/by-name/fo/foo: Missing required "package.nix" file.
··· 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 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 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 pkgs.nonDerivation: This attribute defined by pkgs/by-name/no/nonDerivation/package.nix is not a derivation
··· 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 pkgs.nonDerivation: This attribute defined by pkgs/by-name/no/nonDerivation/package.nix is not a derivation
··· 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 pkgs/by-name/fo/foo: This path is a file, but it should be a directory.
··· 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 pkgs/by-name/fo/foo: "package.nix" must be a file.
··· 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 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).
··· 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 pkgs/by-name/aa/aa: File package.nix at line 2 contains the path expression "../." which may point outside the directory of that package.
··· 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 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.
··· 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 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.
··· 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 pkgs/by-name/fo: This is a file, but it should be a directory.
··· 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 pkgs.foo: Cannot determine the location of this attribute using `builtins.unsafeGetAttrPos`.
··· 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 3 buildGoModule rec { 4 pname = "fioctl"; 5 - version = "0.40"; 6 7 src = fetchFromGitHub { 8 owner = "foundriesio"; 9 repo = "fioctl"; 10 rev = "v${version}"; 11 - sha256 = "sha256-G1CHm5z2D7l3NDmUMhubJsrXYUHb6FJ70EsYQShhsDE="; 12 }; 13 14 - vendorHash = "sha256-j0tdFvOEp9VGx8OCfUruCzwVSB8thcenpvVNn7Rf0dA="; 15 16 ldflags = [ 17 "-s" "-w"
··· 2 3 buildGoModule rec { 4 pname = "fioctl"; 5 + version = "0.41"; 6 7 src = fetchFromGitHub { 8 owner = "foundriesio"; 9 repo = "fioctl"; 10 rev = "v${version}"; 11 + sha256 = "sha256-N+bLW1Gf0lr5FKgd1lr84HVrhdjB+npaeS3nzYXoVl0="; 12 }; 13 14 + vendorHash = "sha256-cu1TwCWdDQi2ZR96SvEeH/LIP7sZOVZoly3VczKZfRw="; 15 16 ldflags = [ 17 "-s" "-w"
+2
pkgs/tools/archivers/7zz/default.nix
··· 99 100 nativeBuildInputs = lib.optionals useUasm [ uasm ]; 101 102 enableParallelBuilding = true; 103 104 preBuild = "cd CPP/7zip/Bundles/Alone2";
··· 99 100 nativeBuildInputs = lib.optionals useUasm [ uasm ]; 101 102 + setupHook = ./setup-hook.sh; 103 + 104 enableParallelBuilding = true; 105 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 "sqlite" 71 ]; 72 73 passthru.tests = nixosTests.garage; 74 75 meta = { ··· 89 # we have to keep all the numbers in the version to handle major/minor/patch level. 90 # for <1.0. 91 92 - garage_0_8_5 = generic { 93 - version = "0.8.5"; 94 - sha256 = "sha256-YRxkjETSmI1dcHP9qTPLcOMqXx9B2uplVR3bBjJWn3I="; 95 - cargoSha256 = "sha256-VOcymlvqqQRdT1MFzRcMuD+Xo3fc3XTuRA12tW7ZjdI="; 96 broken = stdenv.isDarwin; 97 }; 98 99 - garage_0_8 = garage_0_8_5; 100 101 - garage_0_9_1 = generic { 102 - version = "0.9.1"; 103 - sha256 = "sha256-AXLaifVmZU4j5D/wKn/0TzhjHZBzZW1+tMyhsAo2eBU="; 104 - cargoSha256 = "sha256-4/+OsM73TroBB1TGqare2xASO5KhqVyNkkss0Y0JZXg="; 105 }; 106 107 - garage_0_9 = garage_0_9_1; 108 109 garage = garage_0_9; 110 }
··· 70 "sqlite" 71 ]; 72 73 + disabledTests = [ 74 + # Upstream told us this test is flakey. 75 + "k2v::poll::test_poll_item" 76 + ]; 77 + 78 passthru.tests = nixosTests.garage; 79 80 meta = { ··· 94 # we have to keep all the numbers in the version to handle major/minor/patch level. 95 # for <1.0. 96 97 + garage_0_8_6 = generic { 98 + version = "0.8.6"; 99 + sha256 = "sha256-N0AOcwpuBHwTZtHcz6a2d9GOimHevhohEOzVkIt0RDE="; 100 + cargoSha256 = "sha256-e72FQKL77CZOi/pa+hE7PCyc1+HSJgEsKGgWlfVw51k="; 101 broken = stdenv.isDarwin; 102 }; 103 104 + garage_0_8 = garage_0_8_6; 105 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; 111 }; 112 113 + garage_0_9 = garage_0_9_2; 114 115 garage = garage_0_9; 116 }
+2 -2
pkgs/tools/filesystems/mergerfs/default.nix
··· 2 3 stdenv.mkDerivation rec { 4 pname = "mergerfs"; 5 - version = "2.40.1"; 6 7 src = fetchFromGitHub { 8 owner = "trapexit"; 9 repo = pname; 10 rev = version; 11 - sha256 = "sha256-EeAgDkm8WyD9OCM8/tHydp/slDGPwCAljeOrUCIWAqQ="; 12 }; 13 14 nativeBuildInputs = [
··· 2 3 stdenv.mkDerivation rec { 4 pname = "mergerfs"; 5 + version = "2.40.2"; 6 7 src = fetchFromGitHub { 8 owner = "trapexit"; 9 repo = pname; 10 rev = version; 11 + sha256 = "sha256-3DfSGuTtM+h0IdtsIhLVXQxX5/Tj9G5Qcha3DWmyyq4="; 12 }; 13 14 nativeBuildInputs = [
+2 -2
pkgs/tools/inputmethods/fcitx5/default.nix
··· 44 in 45 stdenv.mkDerivation rec { 46 pname = "fcitx5"; 47 - version = "5.1.7"; 48 49 src = fetchFromGitHub { 50 owner = "fcitx"; 51 repo = pname; 52 rev = version; 53 - hash = "sha256-XI4E+fWDIYDiYBv6HezytaZmhzv4NUaNam1T5Fyx+LI="; 54 }; 55 56 prePatch = ''
··· 44 in 45 stdenv.mkDerivation rec { 46 pname = "fcitx5"; 47 + version = "5.1.8"; 48 49 src = fetchFromGitHub { 50 owner = "fcitx"; 51 repo = pname; 52 rev = version; 53 + hash = "sha256-MeknggrpOzpkT1EXZCftIrlevuMEEHM5d8vszKRp+DI="; 54 }; 55 56 prePatch = ''
+11 -4
pkgs/tools/inputmethods/fcitx5/fcitx5-chinese-addons.nix
··· 1 { lib 2 - , mkDerivation 3 , fetchurl 4 , fetchFromGitHub 5 , cmake ··· 13 , opencc 14 , curl 15 , fmt 16 , luaSupport ? true 17 }: 18 ··· 29 }; 30 in 31 32 - mkDerivation rec { 33 pname = "fcitx5-chinese-addons"; 34 - version = "5.1.3"; 35 36 src = fetchFromGitHub { 37 owner = "fcitx"; 38 repo = pname; 39 rev = version; 40 - sha256 = "sha256-z+udRjvAZbnu6EcvvdaFVCr0OKLxFBJbgoYpH9QjrDI="; 41 }; 42 43 nativeBuildInputs = [ ··· 61 qtwebengine 62 fmt 63 ] ++ lib.optional luaSupport fcitx5-lua; 64 65 meta = with lib; { 66 description = "Addons related to Chinese, including IME previous bundled inside fcitx4";
··· 1 { lib 2 + , stdenv 3 , fetchurl 4 , fetchFromGitHub 5 , cmake ··· 13 , opencc 14 , curl 15 , fmt 16 + , qtbase 17 , luaSupport ? true 18 }: 19 ··· 30 }; 31 in 32 33 + stdenv.mkDerivation rec { 34 pname = "fcitx5-chinese-addons"; 35 + version = "5.1.4"; 36 37 src = fetchFromGitHub { 38 owner = "fcitx"; 39 repo = pname; 40 rev = version; 41 + sha256 = "sha256-OqVoXZ8SIO8KRs3ehxul9Ug4sV47cxVCbLCBh6/8EoE="; 42 }; 43 44 nativeBuildInputs = [ ··· 62 qtwebengine 63 fmt 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; 71 72 meta = with lib; { 73 description = "Addons related to Chinese, including IME previous bundled inside fcitx4";
+40 -19
pkgs/tools/inputmethods/fcitx5/fcitx5-configtool.nix
··· 1 { lib 2 - , mkDerivation 3 , fetchFromGitHub 4 , cmake 5 , extra-cmake-modules 6 , fcitx5 7 , fcitx5-qt 8 - , qtx11extras 9 - , qtquickcontrols2 10 , kwidgetsaddons 11 , kdeclarative 12 - , kirigami2 13 , isocodes 14 , xkeyboardconfig 15 , libxkbfile 16 - , libXdmcp 17 - , plasma5Packages 18 - , plasma-framework 19 , kcmSupport ? true 20 }: 21 22 - mkDerivation rec { 23 pname = "fcitx5-configtool"; 24 - version = "5.1.3"; 25 26 src = fetchFromGitHub { 27 owner = "fcitx"; 28 repo = pname; 29 rev = version; 30 - sha256 = "sha256-IwGlhIeON0SenW738p07LWZAzVDMtxOSMuUIAgfmTEg="; 31 }; 32 33 cmakeFlags = [ 34 - "-DKDE_INSTALL_USE_QT_SYS_PATHS=ON" 35 ]; 36 37 nativeBuildInputs = [ 38 cmake 39 extra-cmake-modules 40 ]; 41 42 buildInputs = [ 43 fcitx5 44 fcitx5-qt 45 - qtx11extras 46 - qtquickcontrols2 47 - kirigami2 48 isocodes 49 xkeyboardconfig 50 libxkbfile 51 - libXdmcp 52 - ] ++ lib.optionals kcmSupport [ 53 kdeclarative 54 - kwidgetsaddons 55 - plasma5Packages.kiconthemes 56 plasma-framework 57 - ]; 58 59 meta = with lib; { 60 description = "Configuration Tool for Fcitx5";
··· 1 { lib 2 + , stdenv 3 , fetchFromGitHub 4 , cmake 5 , extra-cmake-modules 6 + , pkg-config 7 , fcitx5 8 , fcitx5-qt 9 + , qtbase 10 + , qtsvg 11 + , qtwayland 12 + , qtdeclarative 13 + , qtx11extras ? null 14 + , kitemviews 15 , kwidgetsaddons 16 + , qtquickcontrols2 ? null 17 + , kcoreaddons 18 , kdeclarative 19 + , kirigami ? null 20 + , kirigami2 ? null 21 , isocodes 22 , xkeyboardconfig 23 , libxkbfile 24 + , libplasma ? null 25 + , plasma-framework ? null 26 + , wrapQtAppsHook 27 , kcmSupport ? true 28 }: 29 30 + stdenv.mkDerivation rec { 31 pname = "fcitx5-configtool"; 32 + version = "5.1.4"; 33 34 src = fetchFromGitHub { 35 owner = "fcitx"; 36 repo = pname; 37 rev = version; 38 + sha256 = "sha256-jYO1jdiuDjt6e98qhwMpTQTnGxoIYWMKkORGJbmk3mk="; 39 }; 40 41 cmakeFlags = [ 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")) 45 ]; 46 47 nativeBuildInputs = [ 48 cmake 49 extra-cmake-modules 50 + pkg-config 51 + wrapQtAppsHook 52 ]; 53 54 buildInputs = [ 55 fcitx5 56 fcitx5-qt 57 + qtbase 58 + qtsvg 59 + qtwayland 60 + kitemviews 61 + kwidgetsaddons 62 isocodes 63 xkeyboardconfig 64 libxkbfile 65 + ] ++ lib.optionals (lib.versions.major qtbase.version == "5") [ 66 + qtx11extras 67 + ] ++ lib.optionals kcmSupport ([ 68 + qtdeclarative 69 + kcoreaddons 70 kdeclarative 71 + ] ++ lib.optionals (lib.versions.major qtbase.version == "5") [ 72 + qtquickcontrols2 73 plasma-framework 74 + kirigami2 75 + ] ++ lib.optionals (lib.versions.major qtbase.version == "6") [ 76 + libplasma 77 + kirigami 78 + ]); 79 80 meta = with lib; { 81 description = "Configuration Tool for Fcitx5";
+2 -2
pkgs/tools/inputmethods/fcitx5/fcitx5-gtk.nix
··· 26 27 stdenv.mkDerivation rec { 28 pname = "fcitx5-gtk"; 29 - version = "5.1.1"; 30 31 src = fetchFromGitHub { 32 owner = "fcitx"; 33 repo = pname; 34 rev = version; 35 - sha256 = "sha256-Ex24cHTsYsZjP8o+vrCdgGogk1UotWpd8xaLZAqzgaQ="; 36 }; 37 38 outputs = [ "out" "dev" ];
··· 26 27 stdenv.mkDerivation rec { 28 pname = "fcitx5-gtk"; 29 + version = "5.1.2"; 30 31 src = fetchFromGitHub { 32 owner = "fcitx"; 33 repo = pname; 34 rev = version; 35 + sha256 = "sha256-iNqY/VORDEPR4rc0LjVgcojZlMcT+LBdrdOwBkC5Vkk="; 36 }; 37 38 outputs = [ "out" "dev" ];
+2 -2
pkgs/tools/inputmethods/fcitx5/fcitx5-hangul.nix
··· 11 12 stdenv.mkDerivation rec { 13 pname = "fcitx5-hangul"; 14 - version = "5.1.1"; 15 16 src = fetchFromGitHub { 17 owner = "fcitx"; 18 repo = pname; 19 rev = version; 20 - sha256 = "sha256-3gkZh+ZzgTdpTbQe92gxJlG0x6Yhl7LfMiFEq5mb92o="; 21 }; 22 23 nativeBuildInputs = [
··· 11 12 stdenv.mkDerivation rec { 13 pname = "fcitx5-hangul"; 14 + version = "5.1.2"; 15 16 src = fetchFromGitHub { 17 owner = "fcitx"; 18 repo = pname; 19 rev = version; 20 + sha256 = "sha256-S5TGjb5vD0rk7V88b4yRziszLrwO1pgVFWuEGMp48oY="; 21 }; 22 23 nativeBuildInputs = [
+1 -1
pkgs/tools/inputmethods/fcitx5/fcitx5-qt.nix
··· 18 19 src = fetchFromGitHub { 20 owner = "fcitx"; 21 - repo = pname; 22 rev = version; 23 sha256 = "sha256-bVH2US/uEZGERslnAh/fyUbzR9fK1UfG4J+mOmrIE8Y="; 24 };
··· 18 19 src = fetchFromGitHub { 20 owner = "fcitx"; 21 + repo = "fcitx5-qt"; 22 rev = version; 23 sha256 = "sha256-bVH2US/uEZGERslnAh/fyUbzR9fK1UfG4J+mOmrIE8Y="; 24 };
+2 -2
pkgs/tools/inputmethods/fcitx5/fcitx5-rime.nix
··· 14 15 stdenv.mkDerivation rec { 16 pname = "fcitx5-rime"; 17 - version = "5.1.4"; 18 19 src = fetchurl { 20 url = "https://download.fcitx-im.org/fcitx5/${pname}/${pname}-${version}.tar.xz"; 21 - hash = "sha256-tbCIWenH5brJUVIsmOiw/E/uIXAWwK1yangIVlkeOAs="; 22 }; 23 24 cmakeFlags = [
··· 14 15 stdenv.mkDerivation rec { 16 pname = "fcitx5-rime"; 17 + version = "5.1.5"; 18 19 src = fetchurl { 20 url = "https://download.fcitx-im.org/fcitx5/${pname}/${pname}-${version}.tar.xz"; 21 + hash = "sha256-/eVgF5kgf1gmbkOInoGbmH/eH0vO2xj3X6k+wzeEssM="; 22 }; 23 24 cmakeFlags = [
+7 -5
pkgs/tools/inputmethods/fcitx5/fcitx5-skk.nix
··· 10 , libskk 11 , qtbase 12 , skk-dicts 13 - , wrapQtAppsHook 14 , enableQt ? false 15 }: 16 17 stdenv.mkDerivation rec { 18 pname = "fcitx5-skk"; 19 - version = "5.1.1"; 20 21 src = fetchFromGitHub { 22 owner = "fcitx"; 23 repo = pname; 24 rev = version; 25 - sha256 = "sha256-a+ZsuFEan61U0oOuhrTFoK5J4Vd0jj463jQ8Mk7TdbA="; 26 }; 27 28 nativeBuildInputs = [ ··· 30 extra-cmake-modules 31 gettext 32 pkg-config 33 - ] ++ lib.optional enableQt wrapQtAppsHook; 34 35 buildInputs = [ 36 fcitx5 ··· 41 ]; 42 43 cmakeFlags = [ 44 - "-DENABLE_QT=${toString enableQt}" 45 "-DSKK_DEFAULT_PATH=${skk-dicts}/share/SKK-JISYO.L" 46 ]; 47 48 meta = with lib; { 49 description = "Input method engine for Fcitx5, which uses libskk as its backend";
··· 10 , libskk 11 , qtbase 12 , skk-dicts 13 , enableQt ? false 14 }: 15 16 stdenv.mkDerivation rec { 17 pname = "fcitx5-skk"; 18 + version = "5.1.2"; 19 20 src = fetchFromGitHub { 21 owner = "fcitx"; 22 repo = pname; 23 rev = version; 24 + sha256 = "sha256-vg79zJ/ZoUjCKU11krDUjO0rAyZxDMsBnHqJ/I6NTTA="; 25 }; 26 27 nativeBuildInputs = [ ··· 29 extra-cmake-modules 30 gettext 31 pkg-config 32 + ]; 33 34 buildInputs = [ 35 fcitx5 ··· 40 ]; 41 42 cmakeFlags = [ 43 + (lib.cmakeBool "ENABLE_QT" enableQt) 44 + (lib.cmakeBool "USE_QT6" (lib.versions.major qtbase.version == "6")) 45 "-DSKK_DEFAULT_PATH=${skk-dicts}/share/SKK-JISYO.L" 46 ]; 47 + 48 + dontWrapQtApps = true; 49 50 meta = with lib; { 51 description = "Input method engine for Fcitx5, which uses libskk as its backend";
+2 -2
pkgs/tools/inputmethods/fcitx5/fcitx5-table-extra.nix
··· 10 11 stdenv.mkDerivation rec { 12 pname = "fcitx5-table-extra"; 13 - version = "5.1.3"; 14 15 src = fetchFromGitHub { 16 owner = "fcitx"; 17 repo = pname; 18 rev = version; 19 - hash = "sha256-w4JFZvYFL3fHrDgZqYND2bl3lT9/O1GXgfOwR7WyzWY="; 20 }; 21 22 nativeBuildInputs = [
··· 10 11 stdenv.mkDerivation rec { 12 pname = "fcitx5-table-extra"; 13 + version = "5.1.4"; 14 15 src = fetchFromGitHub { 16 owner = "fcitx"; 17 repo = pname; 18 rev = version; 19 + hash = "sha256-Lb8CYFQl48arJEn9gemZ7imD/gdKjN+7Wnm21/0/Sko="; 20 }; 21 22 nativeBuildInputs = [
+2 -2
pkgs/tools/inputmethods/fcitx5/fcitx5-table-other.nix
··· 10 11 stdenv.mkDerivation rec { 12 pname = "fcitx5-table-other"; 13 - version = "5.1.0"; 14 15 src = fetchFromGitHub { 16 owner = "fcitx"; 17 repo = pname; 18 rev = version; 19 - sha256 = "sha256-ymHAKaPmQckxM/XHoDOVSzEWpyQGb7zVG21CDwNfyjg="; 20 }; 21 22 nativeBuildInputs = [
··· 10 11 stdenv.mkDerivation rec { 12 pname = "fcitx5-table-other"; 13 + version = "5.1.1"; 14 15 src = fetchFromGitHub { 16 owner = "fcitx"; 17 repo = pname; 18 rev = version; 19 + sha256 = "sha256-G34hPEdcdi5agWiFEgUHWD18ozOgBCaoS6HMAklUcO4="; 20 }; 21 22 nativeBuildInputs = [
+19 -5
pkgs/tools/inputmethods/fcitx5/fcitx5-unikey.nix
··· 6 , fcitx5 7 , fcitx5-qt 8 , gettext 9 - , wrapQtAppsHook 10 }: 11 12 stdenv.mkDerivation rec { 13 pname = "fcitx5-unikey"; 14 - version = "5.1.2"; 15 16 src = fetchFromGitHub { 17 owner = "fcitx"; 18 repo = "fcitx5-unikey"; 19 rev = version; 20 - sha256 = "sha256-tLooADS8HojS9i178i5FJVqZtKrTXlzOBPlE9K49Tjc="; 21 }; 22 23 - nativeBuildInputs = [ cmake extra-cmake-modules wrapQtAppsHook ]; 24 25 - buildInputs = [ fcitx5 fcitx5-qt gettext ]; 26 27 meta = with lib; { 28 description = "Unikey engine support for Fcitx5";
··· 6 , fcitx5 7 , fcitx5-qt 8 , gettext 9 + , qtbase 10 }: 11 12 stdenv.mkDerivation rec { 13 pname = "fcitx5-unikey"; 14 + version = "5.1.3"; 15 16 src = fetchFromGitHub { 17 owner = "fcitx"; 18 repo = "fcitx5-unikey"; 19 rev = version; 20 + sha256 = "sha256-wrsA0gSexOZgsJunozt49GyP9R3Xe2Aci7Q8p3zAM9Q="; 21 }; 22 23 + nativeBuildInputs = [ 24 + cmake 25 + extra-cmake-modules 26 + ]; 27 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; 40 41 meta = with lib; { 42 description = "Unikey engine support for Fcitx5";
+2 -2
pkgs/tools/misc/diffoscope/default.nix
··· 79 # Note: when upgrading this package, please run the list-missing-tools.sh script as described below! 80 python3.pkgs.buildPythonApplication rec { 81 pname = "diffoscope"; 82 - version = "257"; 83 84 src = fetchurl { 85 url = "https://diffoscope.org/archive/diffoscope-${version}.tar.bz2"; 86 - hash = "sha256-Fejp4i0uzsK9+9JBVPsE1AdDwshtRlxpxPfJdqRQQH4="; 87 }; 88 89 outputs = [
··· 79 # Note: when upgrading this package, please run the list-missing-tools.sh script as described below! 80 python3.pkgs.buildPythonApplication rec { 81 pname = "diffoscope"; 82 + version = "259"; 83 84 src = fetchurl { 85 url = "https://diffoscope.org/archive/diffoscope-${version}.tar.bz2"; 86 + hash = "sha256-WYgFWM6HKFt3xVcRNytQPWOf3ZpH1cG7Cghhu/AES80="; 87 }; 88 89 outputs = [
+3 -3
pkgs/tools/misc/direnv/default.nix
··· 2 3 buildGoModule rec { 4 pname = "direnv"; 5 - version = "2.33.0"; 6 7 src = fetchFromGitHub { 8 owner = "direnv"; 9 repo = "direnv"; 10 rev = "v${version}"; 11 - sha256 = "sha256-/xOqJ3dr+3S502rXHVBcHhgBCctoMYnWpfLqgrxIoN8="; 12 }; 13 14 - vendorHash = "sha256-QGPcNgA/iiGt0CdFs2kR3zLL5/SWulSyyf/pW212JpU="; 15 16 # we have no bash at the moment for windows 17 BASH_PATH =
··· 2 3 buildGoModule rec { 4 pname = "direnv"; 5 + version = "2.34.0"; 6 7 src = fetchFromGitHub { 8 owner = "direnv"; 9 repo = "direnv"; 10 rev = "v${version}"; 11 + sha256 = "sha256-EvzqLS/FiWrbIXDkp0L/T8QNKnRGuQkbMWajI3X3BDw="; 12 }; 13 14 + vendorHash = "sha256-FfKvLPv+jUT5s2qQ7QlzBMArI+acj7nhpE8FGMPpp5E="; 15 16 # we have no bash at the moment for windows 17 BASH_PATH =
+4 -2
pkgs/tools/misc/mmv/default.nix
··· 3 4 stdenv.mkDerivation rec { 5 pname = "mmv"; 6 - version = "2.5.1"; 7 8 src = fetchFromGitHub { 9 owner = "rrthomas"; 10 repo = "mmv"; 11 rev = "v${version}"; 12 - sha256 = "sha256-01MJjYVPfDaRkzitqKXTJZHbkkZTEaFoyYZEEMizHp0="; 13 fetchSubmodules = true; 14 }; 15 ··· 19 20 nativeBuildInputs = [ gengetopt m4 git gnupg perl autoconf automake help2man pkg-config ]; 21 buildInputs = [ boehmgc ]; 22 23 env = lib.optionalAttrs stdenv.cc.isClang { 24 NIX_CFLAGS_COMPILE = toString [ 25 "-Wno-error=implicit-function-declaration" 26 "-Wno-error=implicit-int" 27 ]; 28 }; 29
··· 3 4 stdenv.mkDerivation rec { 5 pname = "mmv"; 6 + version = "2.6"; 7 8 src = fetchFromGitHub { 9 owner = "rrthomas"; 10 repo = "mmv"; 11 rev = "v${version}"; 12 + sha256 = "sha256-hYSTENSmkJP5rAemDyTzbzMKFrWYcMpsJDRWq43etTM="; 13 fetchSubmodules = true; 14 }; 15 ··· 19 20 nativeBuildInputs = [ gengetopt m4 git gnupg perl autoconf automake help2man pkg-config ]; 21 buildInputs = [ boehmgc ]; 22 + enableParallelBuilding = true; 23 24 env = lib.optionalAttrs stdenv.cc.isClang { 25 NIX_CFLAGS_COMPILE = toString [ 26 "-Wno-error=implicit-function-declaration" 27 "-Wno-error=implicit-int" 28 + "-Wno-error=int-conversion" 29 ]; 30 }; 31
+3 -3
pkgs/tools/misc/wasm-tools/default.nix
··· 5 6 rustPlatform.buildRustPackage rec { 7 pname = "wasm-tools"; 8 - version = "1.200.0"; 9 10 src = fetchFromGitHub { 11 owner = "bytecodealliance"; 12 repo = pname; 13 rev = "v${version}"; 14 - hash = "sha256-GuN70HiCmqBRwcosXqzT8sl5SRCTttOPIRl6pxaQiec="; 15 fetchSubmodules = true; 16 }; 17 18 # Disable cargo-auditable until https://github.com/rust-secure-code/cargo-auditable/issues/124 is solved. 19 auditable = false; 20 - cargoHash = "sha256-T9p1PvgiAZrj82ABx7KX2InZACQ/ff7N0zPKGTCTBPk="; 21 cargoBuildFlags = [ "--package" "wasm-tools" ]; 22 cargoTestFlags = [ "--all" ]; 23
··· 5 6 rustPlatform.buildRustPackage rec { 7 pname = "wasm-tools"; 8 + version = "1.201.0"; 9 10 src = fetchFromGitHub { 11 owner = "bytecodealliance"; 12 repo = pname; 13 rev = "v${version}"; 14 + hash = "sha256-L3wo6a9rxqZ8Rjz8nejbfdTgQclFFp2ShdP6QECbrmg="; 15 fetchSubmodules = true; 16 }; 17 18 # Disable cargo-auditable until https://github.com/rust-secure-code/cargo-auditable/issues/124 is solved. 19 auditable = false; 20 + cargoHash = "sha256-XzU43bcoRGHhVmpkcKvdRH9UybjTkQWH8RKBqsM/31M="; 21 cargoBuildFlags = [ "--package" "wasm-tools" ]; 22 cargoTestFlags = [ "--all" ]; 23
+9 -4
pkgs/tools/security/asnmap/default.nix
··· 5 6 buildGoModule rec { 7 pname = "asnmap"; 8 - version = "1.0.6"; 9 10 src = fetchFromGitHub { 11 owner = "projectdiscovery"; 12 - repo = pname; 13 rev = "refs/tags/v${version}"; 14 - hash = "sha256-uX7mf1y30JngRI4UJYzghk2F4DZh9OQAjgkkNRbAgwc="; 15 }; 16 17 - vendorHash = "sha256-co18Q8nfRjJyDfpmJ1YSJ275DJRJHn2AR3jF8WionNY="; 18 19 # Tests require network access 20 doCheck = false;
··· 5 6 buildGoModule rec { 7 pname = "asnmap"; 8 + version = "1.1.0"; 9 10 src = fetchFromGitHub { 11 owner = "projectdiscovery"; 12 + repo = "asnmap"; 13 rev = "refs/tags/v${version}"; 14 + hash = "sha256-Of4IVra6kMHY9btWcF9grM/r3lTWFP/geeT309Seasw="; 15 }; 16 17 + vendorHash = "sha256-RDv8vkBI3miyeNAbhUsMpuZCYRUZ0ATfXYHxaTgTVfA="; 18 + 19 + ldflags = [ 20 + "-w" 21 + "-s" 22 + ]; 23 24 # Tests require network access 25 doCheck = false;
+7 -6
pkgs/tools/security/cfripper/default.nix
··· 12 }; 13 in python.pkgs.buildPythonApplication rec { 14 pname = "cfripper"; 15 - version = "1.15.4"; 16 pyproject = true; 17 18 src = fetchFromGitHub { 19 owner = "Skyscanner"; 20 repo = "cfripper"; 21 rev = "refs/tags/v${version}"; 22 - hash = "sha256-heVFum+Eaofd9L0dNHqD9GgHP+ckGwJi+NfeFci+ESc="; 23 }; 24 25 - postPatch = '' 26 - substituteInPlace setup.py \ 27 - --replace "pluggy~=0.13.1" "pluggy" \ 28 - ''; 29 30 nativeBuildInputs = with python.pkgs; [ 31 setuptools 32 ]; 33 34 propagatedBuildInputs = with python.pkgs; [
··· 12 }; 13 in python.pkgs.buildPythonApplication rec { 14 pname = "cfripper"; 15 + version = "1.15.5"; 16 pyproject = true; 17 18 src = fetchFromGitHub { 19 owner = "Skyscanner"; 20 repo = "cfripper"; 21 rev = "refs/tags/v${version}"; 22 + hash = "sha256-kT6cWVeP2mKKef/fBfzZWnkJsWqJp2X9uIkndR+gwoY="; 23 }; 24 25 + pythonRelaxDeps = [ 26 + "pluggy" 27 + ]; 28 29 nativeBuildInputs = with python.pkgs; [ 30 + pythonRelaxDepsHook 31 setuptools 32 + setuptools-scm 33 ]; 34 35 propagatedBuildInputs = with python.pkgs; [
+2 -2
pkgs/tools/security/exploitdb/default.nix
··· 6 7 stdenv.mkDerivation rec { 8 pname = "exploitdb"; 9 - version = "2024-02-27"; 10 11 src = fetchFromGitLab { 12 owner = "exploit-database"; 13 repo = pname; 14 rev = "refs/tags/${version}"; 15 - hash = "sha256-bFCh1kNm7D71PoRoSHdm1qYGGNvYnEb9cLbZerVy5vw="; 16 }; 17 18 nativeBuildInputs = [
··· 6 7 stdenv.mkDerivation rec { 8 pname = "exploitdb"; 9 + version = "2024-03-01"; 10 11 src = fetchFromGitLab { 12 owner = "exploit-database"; 13 repo = pname; 14 rev = "refs/tags/${version}"; 15 + hash = "sha256-6kBirGsaDfUgp/NiUa17SE+Cq8dmH9v3uuBooFMnMM0="; 16 }; 17 18 nativeBuildInputs = [
+2 -2
pkgs/tools/security/gotestwaf/default.nix
··· 7 8 buildGoModule rec { 9 pname = "gotestwaf"; 10 - version = "0.4.12"; 11 12 src = fetchFromGitHub { 13 owner = "wallarm"; 14 repo = "gotestwaf"; 15 rev = "refs/tags/v${version}"; 16 - hash = "sha256-av6N6RQ+9iW+xG1FpmFjBHL1leU4P0IPiqf7kvJxm6M="; 17 }; 18 19 vendorHash = null;
··· 7 8 buildGoModule rec { 9 pname = "gotestwaf"; 10 + version = "0.4.13"; 11 12 src = fetchFromGitHub { 13 owner = "wallarm"; 14 repo = "gotestwaf"; 15 rev = "refs/tags/v${version}"; 16 + hash = "sha256-juqxturQzGOlRTw7EEuRoEmwLtBdJJpbBzCKFxmL5m8="; 17 }; 18 19 vendorHash = null;
+17 -8
pkgs/tools/security/knockpy/default.nix
··· 5 6 python3.pkgs.buildPythonApplication rec { 7 pname = "knockpy"; 8 - version = "6.1.0"; 9 - format = "setuptools"; 10 11 src = fetchFromGitHub { 12 owner = "guelfoweb"; 13 repo = "knock"; 14 rev = "refs/tags/${version}"; 15 - hash = "sha256-O4tXq4pDzuTBEGAls2I9bfBRdHssF4rFBec4OtfUx6A="; 16 }; 17 18 propagatedBuildInputs = with python3.pkgs; [ 19 beautifulsoup4 20 - colorama 21 - matplotlib 22 - networkx 23 - pyqt5 24 requests 25 ]; 26 27 # Project has no tests 28 doCheck = false; 29 30 pythonImportsCheck = [ 31 - "knockpy" 32 ]; 33 34 meta = with lib; {
··· 5 6 python3.pkgs.buildPythonApplication rec { 7 pname = "knockpy"; 8 + version = "7.0.0"; 9 + pyproject = true; 10 11 src = fetchFromGitHub { 12 owner = "guelfoweb"; 13 repo = "knock"; 14 rev = "refs/tags/${version}"; 15 + hash = "sha256-Xtv7K19OBS2iHFFoSasNcy9VLL15eQ8AD79wAEhxCHk="; 16 }; 17 18 + pythonRelaxDeps = [ 19 + "beautifulsoup4" 20 + "tqdm" 21 + ]; 22 + 23 + nativeBuildInputs = with python3.pkgs; [ 24 + pythonRelaxDepsHook 25 + setuptools 26 + ]; 27 + 28 propagatedBuildInputs = with python3.pkgs; [ 29 beautifulsoup4 30 + dnspython 31 + pyopenssl 32 requests 33 + tqdm 34 ]; 35 36 # Project has no tests 37 doCheck = false; 38 39 pythonImportsCheck = [ 40 + "knock" 41 ]; 42 43 meta = with lib; {
+3 -3
pkgs/tools/security/kube-bench/default.nix
··· 2 3 buildGoModule rec { 4 pname = "kube-bench"; 5 - version = "0.7.1"; 6 7 src = fetchFromGitHub { 8 owner = "aquasecurity"; 9 repo = pname; 10 rev = "refs/tags/v${version}"; 11 - hash = "sha256-EsUjGc7IIu5PK9KaODlQSfmm8jpjuBXvGZPNjSc1824="; 12 }; 13 14 - vendorHash = "sha256-i4k7eworPUvLUustr5U53qizHqUVw8yqGjdPQT6UIf4="; 15 16 nativeBuildInputs = [ installShellFiles ]; 17
··· 2 3 buildGoModule rec { 4 pname = "kube-bench"; 5 + version = "0.7.2"; 6 7 src = fetchFromGitHub { 8 owner = "aquasecurity"; 9 repo = pname; 10 rev = "refs/tags/v${version}"; 11 + hash = "sha256-e8iB66fXc8lKwFEZlkk4qbsgExKUrf5WpEVCOiHiZUg="; 12 }; 13 14 + vendorHash = "sha256-8DWjuweGCx2yxocm1GvcP+O3QYWYUdOFKmu6neQfWI4="; 15 16 nativeBuildInputs = [ installShellFiles ]; 17
+2 -2
pkgs/tools/security/ldeep/default.nix
··· 5 6 python3.pkgs.buildPythonApplication rec { 7 pname = "ldeep"; 8 - version = "1.0.52"; 9 pyproject = true; 10 11 src = fetchFromGitHub { 12 owner = "franc-pentest"; 13 repo = "ldeep"; 14 rev = "refs/tags/${version}"; 15 - hash = "sha256-I51vz3zF1J3223hcO3cdfsNBfpq/UolDxUEXyqx3dLI="; 16 }; 17 18 pythonRelaxDeps = [
··· 5 6 python3.pkgs.buildPythonApplication rec { 7 pname = "ldeep"; 8 + version = "1.0.53"; 9 pyproject = true; 10 11 src = fetchFromGitHub { 12 owner = "franc-pentest"; 13 repo = "ldeep"; 14 rev = "refs/tags/${version}"; 15 + hash = "sha256-67jVpzvdjEcjFmTRE2YjPr4AO1iN+PakwoKcjvimt8g="; 16 }; 17 18 pythonRelaxDeps = [
+2 -2
pkgs/tools/system/bfs/default.nix
··· 2 3 stdenv.mkDerivation rec { 4 pname = "bfs"; 5 - version = "3.1.1"; 6 7 src = fetchFromGitHub { 8 repo = "bfs"; 9 owner = "tavianator"; 10 rev = version; 11 - hash = "sha256-lsVfsNVjFX38YaYVBJWEst3c3RhUCbK2ycteqZZUM3M="; 12 }; 13 14 buildInputs = [ oniguruma ] ++ lib.optionals stdenv.isLinux [ libcap acl liburing ];
··· 2 3 stdenv.mkDerivation rec { 4 pname = "bfs"; 5 + version = "3.1.2"; 6 7 src = fetchFromGitHub { 8 repo = "bfs"; 9 owner = "tavianator"; 10 rev = version; 11 + hash = "sha256-xq29KzONDkq+KeABl8rpu0vr50KKFw/UKPFDXcAMNoo="; 12 }; 13 14 buildInputs = [ oniguruma ] ++ lib.optionals stdenv.isLinux [ libcap acl liburing ];
+3 -3
pkgs/tools/text/scraper/default.nix
··· 2 3 rustPlatform.buildRustPackage rec { 4 pname = "scraper"; 5 - version = "0.18.1"; 6 7 src = fetchCrate { 8 inherit pname version; 9 - hash = "sha256-fnX2v7VxVFgn9UT1+qWBvN+oDDI2DbK6UFKmby5aB5c="; 10 }; 11 12 - cargoHash = "sha256-HeT3U4H/OM/91BdXTvZq+gpmOnt/P4wTlqc2dl4erlQ="; 13 14 nativeBuildInputs = [ installShellFiles ]; 15
··· 2 3 rustPlatform.buildRustPackage rec { 4 pname = "scraper"; 5 + version = "0.19.0"; 6 7 src = fetchCrate { 8 inherit pname version; 9 + hash = "sha256-HfZ8zyjghTXIyIYS+MaGF5OdMLJv6NIjQswdn/tvQbU="; 10 }; 11 12 + cargoHash = "sha256-py8VVciNJ36/aSTlTH+Bx36yrh/8AuzB9XNNv/PrFak="; 13 14 nativeBuildInputs = [ installShellFiles ]; 15
+2 -2
pkgs/tools/virtualization/cloud-init/default.nix
··· 17 18 python3.pkgs.buildPythonApplication rec { 19 pname = "cloud-init"; 20 - version = "23.4.3"; 21 namePrefix = ""; 22 23 src = fetchFromGitHub { 24 owner = "canonical"; 25 repo = "cloud-init"; 26 rev = "refs/tags/${version}"; 27 - hash = "sha256-oYZr0Zvo6hn9sWtgSAGgfK2stHO247f0WUbzIIWUP18="; 28 }; 29 30 patches = [
··· 17 18 python3.pkgs.buildPythonApplication rec { 19 pname = "cloud-init"; 20 + version = "23.4.4"; 21 namePrefix = ""; 22 23 src = fetchFromGitHub { 24 owner = "canonical"; 25 repo = "cloud-init"; 26 rev = "refs/tags/${version}"; 27 + hash = "sha256-imA3C2895W4vbBT9TsELT1H9QfNIxntNQLsniv+/FGg="; 28 }; 29 30 patches = [
+4 -1
pkgs/tools/virtualization/distrobuilder/default.nix
··· 51 ''; 52 53 passthru = { 54 - tests.incus = nixosTests.incus.container; 55 56 generator = callPackage ./generator.nix { inherit src version; }; 57 };
··· 51 ''; 52 53 passthru = { 54 + tests = { 55 + incus-old-init = nixosTests.incus.container-old-init; 56 + incus-new-init = nixosTests.incus.container-new-init; 57 + }; 58 59 generator = callPackage ./generator.nix { inherit src version; }; 60 };
+8
pkgs/top-level/aliases.nix
··· 321 fcitx-engines = throw "fcitx-engines is deprecated, please use fcitx5 instead."; # Added 2023-03-13 322 fcitx-configtool = throw "fcitx-configtool is deprecated, please use fcitx5 instead."; # Added 2023-03-13 323 324 ### G ### 325 326 g4py = python3Packages.geant4; # Added 2020-06-06 ··· 1217 ### Z ### 1218 1219 zabbix40 = throw "'zabbix40' has been removed as it has reached end of life"; # Added 2024-01-07 1220 zinc = zincsearch; # Added 2023-05-28 1221 zkg = throw "'zkg' has been replaced by 'zeek'"; 1222 zq = zed.overrideAttrs (old: { meta = old.meta // { mainProgram = "zq"; }; }); # Added 2023-02-06
··· 321 fcitx-engines = throw "fcitx-engines is deprecated, please use fcitx5 instead."; # Added 2023-03-13 322 fcitx-configtool = throw "fcitx-configtool is deprecated, please use fcitx5 instead."; # Added 2023-03-13 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 + 330 ### G ### 331 332 g4py = python3Packages.geant4; # Added 2020-06-06 ··· 1223 ### Z ### 1224 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 1228 zinc = zincsearch; # Added 2023-05-28 1229 zkg = throw "'zkg' has been replaced by 'zeek'"; 1230 zq = zed.overrideAttrs (old: { meta = old.meta // { mainProgram = "zq"; }; }); # Added 2023-02-06
+28 -38
pkgs/top-level/all-packages.nix
··· 8042 8043 chewing-editor = libsForQt5.callPackage ../applications/misc/chewing-editor { }; 8044 8045 - fcitx5 = libsForQt5.callPackage ../tools/inputmethods/fcitx5 { }; 8046 - 8047 - fcitx5-with-addons = callPackage ../tools/inputmethods/fcitx5/with-addons.nix { }; 8048 8049 fcitx5-bamboo = callPackage ../tools/inputmethods/fcitx5/fcitx5-bamboo.nix { }; 8050 8051 - fcitx5-chinese-addons = libsForQt5.callPackage ../tools/inputmethods/fcitx5/fcitx5-chinese-addons.nix { }; 8052 - 8053 fcitx5-mozc = libsForQt5.callPackage ../tools/inputmethods/fcitx5/fcitx5-mozc.nix { 8054 abseil-cpp = abseil-cpp.override { 8055 cxxStandard = "17"; 8056 }; 8057 }; 8058 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 { }; 8068 8069 fcitx5-anthy = callPackage ../tools/inputmethods/fcitx5/fcitx5-anthy.nix { }; 8070 ··· 8417 }) 8418 garage 8419 garage_0_8 garage_0_9 8420 - garage_0_8_5 garage_0_9_1; 8421 8422 garmintools = callPackage ../development/libraries/garmintools { }; 8423 ··· 10746 mb2md = callPackage ../tools/text/mb2md { }; 10747 10748 mbuffer = callPackage ../tools/misc/mbuffer { }; 10749 - 10750 - mdsh = callPackage ../development/tools/documentation/mdsh { }; 10751 10752 mecab = 10753 let ··· 24414 qt6 = recurseIntoAttrs (callPackage ../development/libraries/qt-6 { }); 24415 24416 qt6Packages = recurseIntoAttrs (import ./qt6-packages.nix { 24417 - inherit lib __splicedPackages makeScopeWithSplicing' generateSplicesForMkScope pkgsHostTarget; 24418 stdenv = if stdenv.isDarwin then darwin.apple_sdk_11_0.stdenv else stdenv; 24419 }); 24420 ··· 25792 }; 25793 25794 # Steel Bank Common Lisp 25795 - sbcl_2_4_0 = wrapLisp { 25796 - pkg = callPackage ../development/compilers/sbcl { version = "2.4.0"; }; 25797 faslExt = "fasl"; 25798 flags = [ "--dynamic-space-size" "3000" ]; 25799 }; 25800 - sbcl_2_4_1 = wrapLisp { 25801 - pkg = callPackage ../development/compilers/sbcl { version = "2.4.1"; }; 25802 faslExt = "fasl"; 25803 flags = [ "--dynamic-space-size" "3000" ]; 25804 }; 25805 - sbcl = sbcl_2_4_1; 25806 25807 sbclPackages = recurseIntoAttrs sbcl.pkgs; 25808 ··· 28695 28696 zenmonitor = callPackage ../os-specific/linux/zenmonitor { }; 28697 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; 28708 28709 ### DATA 28710 ··· 30255 inherit (darwin.apple_sdk.frameworks) Cocoa CoreAudio Foundation; 30256 }; 30257 30258 - ptcollab = libsForQt5.callPackage ../applications/audio/ptcollab { }; 30259 30260 schismtracker = callPackage ../applications/audio/schismtracker { 30261 inherit (darwin.apple_sdk.frameworks) Cocoa; ··· 35175 35176 spotify-player = callPackage ../applications/audio/spotify-player { }; 35177 35178 - spotifywm = callPackage ../applications/audio/spotifywm { }; 35179 - 35180 psst = callPackage ../applications/audio/psst { }; 35181 35182 squeezelite = darwin.apple_sdk_11_0.callPackage ../applications/audio/squeezelite { ··· 37089 lbreakouthd = callPackage ../games/lgames/lbreakouthd { }; 37090 37091 lpairs2 = callPackage ../games/lgames/lpairs2 { }; 37092 - 37093 - ltris = callPackage ../games/lgames/ltris { }; 37094 37095 maelstrom = callPackage ../games/maelstrom { }; 37096
··· 8042 8043 chewing-editor = libsForQt5.callPackage ../applications/misc/chewing-editor { }; 8044 8045 + fcitx5 = callPackage ../tools/inputmethods/fcitx5 { }; 8046 8047 fcitx5-bamboo = callPackage ../tools/inputmethods/fcitx5/fcitx5-bamboo.nix { }; 8048 8049 fcitx5-mozc = libsForQt5.callPackage ../tools/inputmethods/fcitx5/fcitx5-mozc.nix { 8050 abseil-cpp = abseil-cpp.override { 8051 cxxStandard = "17"; 8052 }; 8053 }; 8054 8055 + fcitx5-skk = qt6Packages.callPackage ../tools/inputmethods/fcitx5/fcitx5-skk.nix { }; 8056 8057 fcitx5-anthy = callPackage ../tools/inputmethods/fcitx5/fcitx5-anthy.nix { }; 8058 ··· 8405 }) 8406 garage 8407 garage_0_8 garage_0_9 8408 + garage_0_8_6 garage_0_9_2; 8409 8410 garmintools = callPackage ../development/libraries/garmintools { }; 8411 ··· 10734 mb2md = callPackage ../tools/text/mb2md { }; 10735 10736 mbuffer = callPackage ../tools/misc/mbuffer { }; 10737 10738 mecab = 10739 let ··· 24400 qt6 = recurseIntoAttrs (callPackage ../development/libraries/qt-6 { }); 24401 24402 qt6Packages = recurseIntoAttrs (import ./qt6-packages.nix { 24403 + inherit lib __splicedPackages makeScopeWithSplicing' generateSplicesForMkScope pkgsHostTarget kdePackages; 24404 stdenv = if stdenv.isDarwin then darwin.apple_sdk_11_0.stdenv else stdenv; 24405 }); 24406 ··· 25778 }; 25779 25780 # Steel Bank Common Lisp 25781 + sbcl_2_4_1 = wrapLisp { 25782 + pkg = callPackage ../development/compilers/sbcl { version = "2.4.1"; }; 25783 faslExt = "fasl"; 25784 flags = [ "--dynamic-space-size" "3000" ]; 25785 }; 25786 + sbcl_2_4_2 = wrapLisp { 25787 + pkg = callPackage ../development/compilers/sbcl { version = "2.4.2"; }; 25788 faslExt = "fasl"; 25789 flags = [ "--dynamic-space-size" "3000" ]; 25790 }; 25791 + sbcl = sbcl_2_4_2; 25792 25793 sbclPackages = recurseIntoAttrs sbcl.pkgs; 25794 ··· 28681 28682 zenmonitor = callPackage ../os-specific/linux/zenmonitor { }; 28683 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; 28700 28701 ### DATA 28702 ··· 30247 inherit (darwin.apple_sdk.frameworks) Cocoa CoreAudio Foundation; 30248 }; 30249 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 + }; 30253 30254 schismtracker = callPackage ../applications/audio/schismtracker { 30255 inherit (darwin.apple_sdk.frameworks) Cocoa; ··· 35169 35170 spotify-player = callPackage ../applications/audio/spotify-player { }; 35171 35172 psst = callPackage ../applications/audio/psst { }; 35173 35174 squeezelite = darwin.apple_sdk_11_0.callPackage ../applications/audio/squeezelite { ··· 37081 lbreakouthd = callPackage ../games/lgames/lbreakouthd { }; 37082 37083 lpairs2 = callPackage ../games/lgames/lpairs2 { }; 37084 37085 maelstrom = callPackage ../games/maelstrom { }; 37086
+3 -3
pkgs/top-level/linux-kernels.nix
··· 559 configFile = "kernel"; 560 inherit pkgs kernel; 561 }; 562 - zfsStable = callPackage ../os-specific/linux/zfs/stable.nix { 563 configFile = "kernel"; 564 inherit pkgs kernel; 565 }; 566 - zfsUnstable = callPackage ../os-specific/linux/zfs/unstable.nix { 567 configFile = "kernel"; 568 inherit pkgs kernel; 569 }; 570 - zfs = zfsStable; 571 572 can-isotp = callPackage ../os-specific/linux/can-isotp { }; 573
··· 559 configFile = "kernel"; 560 inherit pkgs kernel; 561 }; 562 + zfs_2_2 = callPackage ../os-specific/linux/zfs/2_2.nix { 563 configFile = "kernel"; 564 inherit pkgs kernel; 565 }; 566 + zfs_unstable = callPackage ../os-specific/linux/zfs/unstable.nix { 567 configFile = "kernel"; 568 inherit pkgs kernel; 569 }; 570 + zfs = zfs_2_2; 571 572 can-isotp = callPackage ../os-specific/linux/can-isotp { }; 573
+10
pkgs/top-level/qt5-packages.nix
··· 100 101 fcitx5-qt = callPackage ../tools/inputmethods/fcitx5/fcitx5-qt.nix { }; 102 103 futuresql = callPackage ../development/libraries/futuresql { }; 104 105 qgpgme = callPackage ../development/libraries/gpgme { };
··· 100 101 fcitx5-qt = callPackage ../tools/inputmethods/fcitx5/fcitx5-qt.nix { }; 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 + 113 futuresql = callPackage ../development/libraries/futuresql { }; 114 115 qgpgme = callPackage ../development/libraries/gpgme { };
+11
pkgs/top-level/qt6-packages.nix
··· 10 , generateSplicesForMkScope 11 , stdenv 12 , pkgsHostTarget 13 }: 14 15 let ··· 32 accounts-qt = callPackage ../development/libraries/accounts-qt { }; 33 appstream-qt = callPackage ../development/libraries/appstream/qt.nix { }; 34 35 fcitx5-qt = callPackage ../tools/inputmethods/fcitx5/fcitx5-qt.nix { }; 36 37 kdsoap = callPackage ../development/libraries/kdsoap { }; 38
··· 10 , generateSplicesForMkScope 11 , stdenv 12 , pkgsHostTarget 13 + , kdePackages 14 }: 15 16 let ··· 33 accounts-qt = callPackage ../development/libraries/accounts-qt { }; 34 appstream-qt = callPackage ../development/libraries/appstream/qt.nix { }; 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 + 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 { }; 47 48 kdsoap = callPackage ../development/libraries/kdsoap { }; 49