diff --git a/maintainers/maintainer-list.nix b/maintainers/maintainer-list.nix index 6cb738e8b39e..2b5db0ef9971 100644 --- a/maintainers/maintainer-list.nix +++ b/maintainers/maintainer-list.nix @@ -3444,12 +3444,6 @@ githubId = 20448408; keys = [ { fingerprint = "D446 E58D 87A0 31C7 EC15 88D7 B461 2924 45C6 E696"; } ]; }; - berce = { - email = "bert.moens@gmail.com"; - github = "berce"; - githubId = 10439709; - name = "Bert Moens"; - }; bergey = { email = "bergey@teallabs.org"; github = "bergey"; @@ -4445,12 +4439,6 @@ githubId = 54632731; name = "Cameron Dugan"; }; - cameronfyfe = { - email = "cameron.j.fyfe@gmail.com"; - github = "cameronfyfe"; - githubId = 21013281; - name = "Cameron Fyfe"; - }; cameronnemo = { email = "cnemo@tutanota.com"; github = "CameronNemo"; @@ -18478,13 +18466,6 @@ github = "mohe2015"; githubId = 13287984; }; - momeemt = { - name = "Mutsuha Asada"; - email = "me@momee.mt"; - github = "momeemt"; - githubId = 43488453; - keys = [ { fingerprint = "D94F EA9F 5B08 F6A1 7B8F EB8B ACB5 4F0C BC6A A7C6"; } ]; - }; monaaraj = { name = "Mon Aaraj"; email = "owo69uwu69@gmail.com"; @@ -28968,6 +28949,14 @@ githubId = 110242808; name = "Vasilii Pustovoit"; }; + vavakado = { + email = "xor@vavakado.xyz"; + github = "vavakado"; + githubId = 80159210; + name = "Vladimir Rubin"; + matrix = "@vavakado:imagisphe.re"; + keys = [ { fingerprint = "A054 0374 CD37 2C71 FE6D E0CF CAB7 4472 7F36 B524"; } ]; + }; vbgl = { email = "Vincent.Laporte@gmail.com"; github = "vbgl"; diff --git a/nixos/doc/manual/release-notes/rl-2611.section.md b/nixos/doc/manual/release-notes/rl-2611.section.md index 5e4bea763284..a36490122096 100644 --- a/nixos/doc/manual/release-notes/rl-2611.section.md +++ b/nixos/doc/manual/release-notes/rl-2611.section.md @@ -30,6 +30,8 @@ - Python 2 has been removed from the top-level package set, as it is long past end-of-life. The `python2`, `python27`, `python2Full`, `python27Full`, `python2Packages`, and `python27Packages` attributes, along with the legacy `python`, `pythonFull`, and `pythonPackages` aliases, now throw an error directing you to `python3`. The `isPy2` and `isPy27` package flags have been removed accordingly. The only remaining Python 2 interpreter is vendored inside the `resholve` package for its `oil` dependency and is not exposed for general use. +- `security.polkit.enablePkexecWrapper` has been introduced, making the `pkexec` setuid wrapper opt-in. + - `systemd.user.extraConfig` has been removed in favor of the structured [](#opt-systemd.user.settings.Manager) option. Use `systemd.user.settings.Manager` to set any `systemd-user.conf(5)` option directly. For example, replace `systemd.user.extraConfig = "DefaultTimeoutStartSec=60";` with `systemd.user.settings.Manager.DefaultTimeoutStartSec = 60;`. - `services.timesyncd.extraConfig` has been removed in favor of the structured [](#opt-services.timesyncd.settings.Time) option. Use `services.timesyncd.settings.Time` to set any `timesyncd.conf(5)` option directly. For example, replace `services.timesyncd.extraConfig = "PollIntervalMaxSec=180";` with `services.timesyncd.settings.Time.PollIntervalMaxSec = 180;`. diff --git a/nixos/modules/config/fonts/fontconfig.nix b/nixos/modules/config/fonts/fontconfig.nix index 62214cacc101..16b22841ac14 100644 --- a/nixos/modules/config/fonts/fontconfig.nix +++ b/nixos/modules/config/fonts/fontconfig.nix @@ -127,6 +127,38 @@ let ''; + # user defined font aliases + # priority 53 + aliases = + let + mkFontBlock = + key: fonts: + lib.optionalString ((builtins.length fonts) > 0) '' + <${key}> + ${lib.concatMapStrings (font: "${font}") fonts} + + ''; + + mkAliasBlock = family: opts: '' + + ${family} + ${mkFontBlock "prefer" opts.prefer} + ${mkFontBlock "accept" opts.accept} + ${mkFontBlock "default" opts.default} + + ''; + in + pkgs.writeText "fc-53-user-aliases.conf" '' + + + + + + ${lib.concatStrings (lib.mapAttrsToList mkAliasBlock cfg.aliases)} + + + ''; + # bitmap font options # priority 53 rejectBitmaps = pkgs.writeText "fc-53-no-bitmaps.conf" '' @@ -245,6 +277,9 @@ let # 53-no-bitmaps.conf ln -s ${rejectBitmaps} $dst/53-no-bitmaps.conf + # 53-user-aliases.conf + ln -s ${aliases} $dst/53-user-aliases.conf + ${lib.optionalString (!cfg.allowType1) '' # 53-nixos-reject-type1.conf ln -s ${rejectType1} $dst/53-nixos-reject-type1.conf @@ -522,6 +557,69 @@ in description = "Use embedded bitmaps in fonts like Calibri."; }; + aliases = lib.mkOption { + type = lib.types.attrsOf ( + lib.types.submodule { + options = { + binding = lib.mkOption { + type = lib.types.enum [ + "same" + "weak" + "strong" + ]; + default = "same"; + description = '' + Binding precedence for this font family. See + fontconfig "Font Matching" section for details. + ''; + }; + + prefer = lib.mkOption { + type = lib.types.listOf lib.types.str; + default = [ ]; + description = '' + Fonts whose glyphs are chosen preferentially prior + to fonts which match the alias family. + ''; + }; + + accept = lib.mkOption { + type = lib.types.listOf lib.types.str; + default = [ ]; + description = '' + Fonts that are chosen if none of the preferred + fonts, nor the alias family could provide the + desired glyph. + ''; + }; + + default = lib.mkOption { + type = lib.types.listOf lib.types.str; + default = [ ]; + description = '' + Last chance fallback fonts which are chosen by + default if none of the other options could + provide the desired glyph. + ''; + }; + }; + } + ); + default = { }; + example = lib.literalExpression '' + { + # use FreeSans for Greek symbols missing in Helvetica + "Helvetica" = { + default = [ "FreeSans" ]; + }; + }; + ''; + description = '' + Font aliases that can substitute preferential fonts, + or specify custom fallback fonts. + ''; + }; + }; }; @@ -557,6 +655,9 @@ in # 52-nixos-default-fonts.conf r ${defaultFontsConf}, + # 53-user-aliases.conf + r ${aliases}, + # 53-no-bitmaps.conf r ${rejectBitmaps}, diff --git a/nixos/modules/installer/cd-dvd/installation-cd-graphical-calamares.nix b/nixos/modules/installer/cd-dvd/installation-cd-graphical-calamares.nix index 097a4eca51d5..59e050fe2846 100644 --- a/nixos/modules/installer/cd-dvd/installation-cd-graphical-calamares.nix +++ b/nixos/modules/installer/cd-dvd/installation-cd-graphical-calamares.nix @@ -11,6 +11,9 @@ in { imports = [ ./installation-cd-graphical-base.nix ]; + # required for calamares + security.polkit.enablePkexecWrapper = true; + # required for kpmcore to work correctly programs.partition-manager.enable = true; diff --git a/nixos/modules/installer/tools/tools.nix b/nixos/modules/installer/tools/tools.nix index 8fd268ee0d2d..23a0bebe388c 100644 --- a/nixos/modules/installer/tools/tools.nix +++ b/nixos/modules/installer/tools/tools.nix @@ -330,7 +330,7 @@ in ''; config = lib.mkIf config.system.tools.nixos-rebuild.enableRun0Elevation { - security.polkit.enable = lib.mkDefault true; + security.run0.enable = lib.mkDefault true; environment.systemPackages = [ pkgs.polkit-stdin-agent ]; }; } diff --git a/nixos/modules/programs/gamemode.nix b/nixos/modules/programs/gamemode.nix index 834ae6f54a1d..3e568f9a68aa 100644 --- a/nixos/modules/programs/gamemode.nix +++ b/nixos/modules/programs/gamemode.nix @@ -60,7 +60,10 @@ in }; security = { - polkit.enable = true; + polkit = { + enable = true; + enablePkexecWrapper = lib.mkDefault true; + }; wrappers = lib.mkIf cfg.enableRenice { gamemoded = { owner = "root"; diff --git a/nixos/modules/programs/throne.nix b/nixos/modules/programs/throne.nix index 2023055892dd..a64178c77757 100644 --- a/nixos/modules/programs/throne.nix +++ b/nixos/modules/programs/throne.nix @@ -64,32 +64,36 @@ in # 3. Put ThroneCore into a systemd service, and let polkit check service name. # This is the most secure and convenient way but requires heavy modification # to Throne source code. Would be good to let upstream support that eventually. - security.polkit.extraConfig = - lib.mkIf (cfg.tunMode.enable && (!cfg.tunMode.setuid) && config.services.resolved.enable) - '' - polkit.addRule(function(action, subject) { - const allowedActionIds = [ - "org.freedesktop.resolve1.revert", - "org.freedesktop.resolve1.set-domains", - "org.freedesktop.resolve1.set-default-route", - "org.freedesktop.resolve1.set-dns-servers" - ]; + security.polkit = { + enable = true; + enablePkexecWrapper = lib.mkDefault true; + extraConfig = + lib.mkIf (cfg.tunMode.enable && (!cfg.tunMode.setuid) && config.services.resolved.enable) + '' + polkit.addRule(function(action, subject) { + const allowedActionIds = [ + "org.freedesktop.resolve1.revert", + "org.freedesktop.resolve1.set-domains", + "org.freedesktop.resolve1.set-default-route", + "org.freedesktop.resolve1.set-dns-servers" + ]; - if (allowedActionIds.indexOf(action.id) !== -1) { - try { - var parentPid = polkit.spawn(["${lib.getExe' pkgs.procps "ps"}", "-o", "ppid=", subject.pid]).trim(); - var parentCap = polkit.spawn(["${lib.getExe' pkgs.libcap "getpcaps"}", parentPid]).trim(); - if (parentCap.includes("cap_net_admin") && parentCap.includes("cap_net_raw")) { - return polkit.Result.YES; - } else { + if (allowedActionIds.indexOf(action.id) !== -1) { + try { + var parentPid = polkit.spawn(["${lib.getExe' pkgs.procps "ps"}", "-o", "ppid=", subject.pid]).trim(); + var parentCap = polkit.spawn(["${lib.getExe' pkgs.libcap "getpcaps"}", parentPid]).trim(); + if (parentCap.includes("cap_net_admin") && parentCap.includes("cap_net_raw")) { + return polkit.Result.YES; + } else { + return polkit.Result.NOT_HANDLED; + } + } catch (e) { return polkit.Result.NOT_HANDLED; } - } catch (e) { - return polkit.Result.NOT_HANDLED; } - } - }) - ''; + }) + ''; + }; }; meta.maintainers = with lib.maintainers; [ aleksana ]; diff --git a/nixos/modules/security/polkit.nix b/nixos/modules/security/polkit.nix index c2bbe706529f..6ea840d4ccf3 100644 --- a/nixos/modules/security/polkit.nix +++ b/nixos/modules/security/polkit.nix @@ -6,27 +6,52 @@ }: let - cfg = config.security.polkit; + inherit (lib) + mkEnableOption + mkOption + mkIf + mkPackageOption + mkRemovedOptionModule + types + ; + cfg = config.security.polkit; in { + imports = [ + (mkRemovedOptionModule [ "security" "polkit" "debug" ] "Use security.polkit.extraArgs instead") + ]; - options = { + options.security.polkit = { + enable = mkEnableOption "polkit"; - security.polkit.enable = lib.mkEnableOption "polkit"; + enablePkexecWrapper = mkEnableOption "the setuid pkexec wrapper"; - security.polkit.package = lib.mkPackageOption pkgs "polkit" { }; + package = mkPackageOption pkgs "polkit" { }; - security.polkit.debug = lib.mkEnableOption "debug logs from polkit. This is required in order to see log messages from rule definitions"; + extraArgs = mkOption { + type = types.listOf types.str; + default = [ + "--no-debug" + "--log-level=notice" + ]; + description = '' + List of arguments to pass to the polkitd executable. - security.polkit.extraConfig = lib.mkOption { - type = lib.types.lines; + ::: {.note} + To see debug logs you need to negate the default `--no-debug` setting. + ::: + ''; + }; + + extraConfig = mkOption { + type = types.lines; default = ""; example = '' /* Log authorization checks. */ polkit.addRule(function(action, subject) { - // Make sure to set { security.polkit.debug = true; } in configuration.nix + // Make sure to negate --no-debug in services.polkit.extraArgs: { security.polkit.extraArgs = [ "--log-level=notice" ]; } polkit.log("user " + subject.user + " is attempting action " + action.id + " from PID " + subject.pid); }); @@ -41,8 +66,8 @@ in ''; }; - security.polkit.adminIdentities = lib.mkOption { - type = lib.types.listOf lib.types.str; + adminIdentities = mkOption { + type = with types; listOf str; default = [ "unix-group:wheel" ]; example = [ "unix-user:alice" @@ -58,25 +83,34 @@ in }; - config = lib.mkIf cfg.enable { + config = mkIf cfg.enable { environment.systemPackages = [ cfg.package.bin cfg.package.out ]; + services.dbus.packages = [ cfg.package.out ]; + systemd.packages = [ cfg.package.out ]; - systemd.services.polkit.serviceConfig.ExecStart = [ - "" - "${cfg.package.out}/lib/polkit-1/polkitd ${lib.optionalString (!cfg.debug) "--no-debug"}" - ]; - - systemd.services.polkit.restartTriggers = [ config.system.path ]; - systemd.services.polkit.reloadTriggers = [ - config.environment.etc."polkit-1/rules.d/10-nixos.rules".source - ]; - systemd.services.polkit.stopIfChanged = false; + systemd.services.polkit = { + restartTriggers = [ config.system.path ]; + reloadTriggers = [ + config.environment.etc."polkit-1/rules.d/10-nixos.rules".source + ]; + serviceConfig.ExecStart = [ + # nuke default ExecStart + "" + # provide our own instead + (toString ( + [ + "${lib.getLib cfg.package}/lib/polkit-1/polkitd" + ] + ++ cfg.extraArgs + )) + ]; + }; systemd.sockets."polkit-agent-helper".wantedBy = [ "sockets.target" ]; @@ -89,7 +123,7 @@ in # The upstream unit uses PrivateDevices=yes and ProtectHome=yes, # which prevents PAM modules from accessing hardware (e.g. FIDO # tokens via /dev/hidraw*) or reading key files from home directories. - (lib.mkIf config.security.pam.u2f.enable { + (mkIf config.security.pam.u2f.enable { # Override upstream PrivateDevices=yes to allow access to /dev/hidraw* PrivateDevices = false; DeviceAllow = [ @@ -100,7 +134,7 @@ in # ~/.config/Yubico/u2f_keys (the default key file location) ProtectHome = "read-only"; }) - (lib.mkIf config.security.pam.zfs.enable { + (mkIf config.security.pam.zfs.enable { PrivateDevices = false; DeviceAllow = [ "/dev/zfs rw" @@ -120,23 +154,16 @@ in ${cfg.extraConfig} ''; # TODO: validation on compilation (at least against typos) - services.dbus.packages = [ cfg.package.out ]; - security.pam.services.polkit-1 = { }; security.wrappers.pkexec = { + enable = cfg.enablePkexecWrapper; setuid = true; owner = "root"; group = "root"; - source = "${cfg.package.bin}/bin/pkexec"; + source = lib.getExe' cfg.package "pkexec"; }; - systemd.tmpfiles.rules = [ - # Probably no more needed, clean up - "R /var/lib/polkit-1" - "R /var/lib/PolicyKit" - ]; - users.users.polkituser = { description = "PolKit daemon"; uid = config.ids.uids.polkituser; diff --git a/nixos/modules/security/run0.nix b/nixos/modules/security/run0.nix index 22296a76c95e..6aa7f9ad3155 100644 --- a/nixos/modules/security/run0.nix +++ b/nixos/modules/security/run0.nix @@ -6,6 +6,13 @@ }: let + inherit (lib) + mkEnableOption + mkIf + mkMerge + mkOption + ; + cfg = config.security.run0; sudoAlias = pkgs.writeShellScriptBin "sudo" '' @@ -18,7 +25,9 @@ let in { options.security.run0 = { - wheelNeedsPassword = lib.mkOption { + enable = mkEnableOption "support for run0"; + + wheelNeedsPassword = mkOption { type = lib.types.bool; default = true; description = '' @@ -27,26 +36,45 @@ in ''; }; - enableSudoAlias = lib.mkEnableOption "make {command}`sudo` an alias to {command}`run0`."; + enableSudoAlias = mkEnableOption "make {command}`sudo` an alias to {command}`run0`."; }; - config = { - assertions = [ - { - assertion = - cfg.enableSudoAlias -> (!config.security.sudo.enable && !config.security.sudo-rs.enable); - message = "`security.run0.enableSudoAlias` cannot be enabled if `security.sudo` or `security.sudo-rs` are enabled."; - } - ]; - - security.polkit.extraConfig = lib.mkIf (!cfg.wheelNeedsPassword) '' - polkit.addRule(function(action, subject) { - if (action.id == "org.freedesktop.systemd1.manage-units" && subject.isInGroup("wheel")) { - return polkit.Result.YES; + config = mkMerge [ + { + # Late introduction of the enable toggle, this should help during migration. + # TODO: Remove after 26.11 release + assertions = [ + { + assertion = !cfg.wheelNeedsPassword -> cfg.enable; + message = "`security.run0.enable` is currently disabled, but is required for the `security.run0.wheelNeedsPassword` option to take effect"; } - }); - ''; + { + assertion = cfg.enableSudoAlias -> cfg.enable; + message = "`security.run0.enableSudoAlias` depends on `security.run0.enable`, which is disabled."; + } + ]; + } + (mkIf cfg.enable { + assertions = [ + { + assertion = + cfg.enableSudoAlias -> (!config.security.sudo.enable && !config.security.sudo-rs.enable); + message = "`security.run0.enableSudoAlias` cannot be enabled if `security.sudo` or `security.sudo-rs` are enabled."; + } + ]; - environment.systemPackages = lib.optional cfg.enableSudoAlias sudoAlias; - }; + security.polkit = { + enable = true; + extraConfig = mkIf (!cfg.wheelNeedsPassword) '' + polkit.addRule(function(action, subject) { + if (action.id == "org.freedesktop.systemd1.manage-units" && subject.isInGroup("wheel")) { + return polkit.Result.YES; + } + }); + ''; + }; + + environment.systemPackages = lib.optional cfg.enableSudoAlias sudoAlias; + }) + ]; } diff --git a/nixos/modules/services/audio/music-assistant.nix b/nixos/modules/services/audio/music-assistant.nix index a2a383bce8cd..6ff098a67723 100644 --- a/nixos/modules/services/audio/music-assistant.nix +++ b/nixos/modules/services/audio/music-assistant.nix @@ -83,7 +83,18 @@ in lib.optional cfg.enable 8097 # Music Assistant stream port ++ lib.optional (lib.elem "airplay" cfg.providers) 7000 ++ lib.optional (lib.elem "sendspin" cfg.providers) 8927 - ++ lib.optional (lib.elem "snapcast" cfg.providers) 1780; + ++ lib.optional (lib.elem "snapcast" cfg.providers) 1780 + ++ lib.optionals (lib.elem "squeezelite" cfg.providers) [ + # https://lyrion.org/reference/slimproto-protocol/ + 3483 # Slimproto control + # https://lyrion.org/reference/cli/using-the-cli/ + 9000 # Slimproto JSON-RPC + 9090 # Slimproto CLI + ]; + allowedUDPPorts = lib.optionals (lib.elem "squeezelite" cfg.providers) [ + # https://lyrion.org/reference/slimproto-protocol/ + 3483 # Slimproto discovery + ]; # The information published by Apple 1 seem to not apply to libraop. # The closest we could find that represents the port range being used as observed by tcpdump is the ephemeral port range. # 1: https://support.apple.com/en-us/103229#:~:text=49152%E2%80%93-,65535,-TCP%2C%20UDP diff --git a/nixos/modules/services/desktop-managers/budgie.nix b/nixos/modules/services/desktop-managers/budgie.nix index 29bdb469d7f1..807d6b019b72 100644 --- a/nixos/modules/services/desktop-managers/budgie.nix +++ b/nixos/modules/services/desktop-managers/budgie.nix @@ -243,6 +243,8 @@ in # Required by Budgie's Polkit Dialog. security.polkit.enable = mkDefault true; + # Required by Budige's Control Center and Desktop + security.polkit.enablePkexecWrapper = mkDefault true; # Required by Budgie Panel plugins and/or Budgie Control Center panels. networking.networkmanager.enable = mkDefault true; # for BCC's Network panel. diff --git a/nixos/modules/services/desktop-managers/cosmic.nix b/nixos/modules/services/desktop-managers/cosmic.nix index c780a5164922..3d367f01defe 100644 --- a/nixos/modules/services/desktop-managers/cosmic.nix +++ b/nixos/modules/services/desktop-managers/cosmic.nix @@ -146,7 +146,10 @@ in environment.sessionVariables.X11_EXTRA_RULES_XML = "${config.services.xserver.xkb.dir}/rules/base.extras.xml"; programs.dconf.enable = true; programs.dconf.packages = [ pkgs.cosmic-session ]; - security.polkit.enable = true; + security.polkit = { + enable = true; + enablePkexecWrapper = lib.mkDefault true; + }; security.rtkit.enable = true; services.accounts-daemon.enable = true; services.displayManager.sessionPackages = [ pkgs.cosmic-session ]; diff --git a/nixos/modules/services/desktop-managers/gnome.nix b/nixos/modules/services/desktop-managers/gnome.nix index 3747a491098f..1d850f1f26e5 100644 --- a/nixos/modules/services/desktop-managers/gnome.nix +++ b/nixos/modules/services/desktop-managers/gnome.nix @@ -325,7 +325,11 @@ in i18n.inputMethod.enable = mkDefault true; i18n.inputMethod.type = mkDefault "ibus"; programs.dconf.enable = true; - security.polkit.enable = true; + security.polkit = { + enable = true; + # Required by gnome-initial-setup, gnome-system-monitor, gvfs for admin:// + enablePkexecWrapper = lib.mkDefault true; + }; security.rtkit.enable = mkDefault true; services.accounts-daemon.enable = true; services.dleyna.enable = mkDefault true; diff --git a/nixos/modules/services/desktops/gnome/gnome-remote-desktop.nix b/nixos/modules/services/desktops/gnome/gnome-remote-desktop.nix index 958fbb546dc3..eaa9399862a4 100644 --- a/nixos/modules/services/desktops/gnome/gnome-remote-desktop.nix +++ b/nixos/modules/services/desktops/gnome/gnome-remote-desktop.nix @@ -22,6 +22,10 @@ config = lib.mkIf config.services.gnome.gnome-remote-desktop.enable { services.pipewire.enable = true; services.dbus.packages = [ pkgs.gnome-remote-desktop ]; + security.polkit = { + enable = true; + enablePkexecWrapper = lib.mkDefault true; + }; environment.systemPackages = [ pkgs.gnome-remote-desktop ]; diff --git a/nixos/modules/services/hardware/tuned.nix b/nixos/modules/services/hardware/tuned.nix index 65a857f4fde8..f399dc55c306 100644 --- a/nixos/modules/services/hardware/tuned.nix +++ b/nixos/modules/services/hardware/tuned.nix @@ -246,7 +246,10 @@ in systemPackages = [ cfg.package ]; }; - security.polkit.enable = lib.mkDefault true; + security.polkit = { + enable = lib.mkDefault true; + enablePkexecWrapper = lib.mkDefault true; + }; services = { dbus.packages = [ cfg.package ]; diff --git a/nixos/modules/services/networking/xrdp.nix b/nixos/modules/services/networking/xrdp.nix index a1e9f9c23d80..8938293fee28 100644 --- a/nixos/modules/services/networking/xrdp.nix +++ b/nixos/modules/services/networking/xrdp.nix @@ -19,7 +19,7 @@ let cat > $out/startwm.sh < 0x050000) + QCoreApplication::setAttribute(Qt::AA_UseHighDpiPixmaps); + #endif ++ // Ensure the app-id ('makemkv') is set, so that GNOME can show ++ // the correct icon in the dash. ++ QGuiApplication::setDesktopFileName("makemkv"); + + CApClient::ITransport* p_trans = NULL; + diff --git a/pkgs/by-name/ma/makemkv/package.nix b/pkgs/by-name/ma/makemkv/package.nix index 6d4ffd64d016..71993f3e84f4 100644 --- a/pkgs/by-name/ma/makemkv/package.nix +++ b/pkgs/by-name/ma/makemkv/package.nix @@ -43,7 +43,12 @@ stdenv.mkDerivation ( srcs = lib.attrValues finalAttrs.passthru.srcs; sourceRoot = "makemkv-oss-${version}"; - patches = [ ./r13y.patch ]; + patches = [ + ./r13y.patch + # This patch is sourced from NonGuix, licensed GPLv3: + # https://gitlab.com/nonguix/nonguix/-/blob/2d1f3691546f007c7cd96ae87e4e970fed789182/nongnu/packages/patches/makemkv-app-id.patch + ./app-id.patch + ]; enableParallelBuilding = true; nativeBuildInputs = [ diff --git a/pkgs/by-name/mi/microsoft-edge/package.nix b/pkgs/by-name/mi/microsoft-edge/package.nix index bb30db2dfd79..0e696a287faa 100644 --- a/pkgs/by-name/mi/microsoft-edge/package.nix +++ b/pkgs/by-name/mi/microsoft-edge/package.nix @@ -164,11 +164,11 @@ let in stdenvNoCC.mkDerivation (finalAttrs: { pname = "microsoft-edge"; - version = "149.0.4022.52"; + version = "149.0.4022.69"; src = fetchurl { url = "https://packages.microsoft.com/repos/edge/pool/main/m/microsoft-edge-stable/microsoft-edge-stable_${finalAttrs.version}-1_amd64.deb"; - hash = "sha256-3lFhfxkS80P59dk00lpBp+8IIFUvSEJVGGTfAghxw4g="; + hash = "sha256-0Ur+0KKJQ7VTr7IMax5BIgwSf6jNhr0Aiz+So7Hj/OE="; }; # With strictDeps on, some shebangs were not being patched correctly diff --git a/pkgs/by-name/mi/mitra/package.nix b/pkgs/by-name/mi/mitra/package.nix index 0e147c1981dd..b0bc0ac14843 100644 --- a/pkgs/by-name/mi/mitra/package.nix +++ b/pkgs/by-name/mi/mitra/package.nix @@ -8,16 +8,16 @@ rustPlatform.buildRustPackage (finalAttrs: { pname = "mitra"; - version = "4.17.0"; + version = "5.0.0"; src = fetchFromCodeberg { owner = "silverpill"; repo = "mitra"; rev = "v${finalAttrs.version}"; - hash = "sha256-ysV0r0K+2ivnDg/GuqwK5HWa4/jQtopXqS9g/9wWrOw="; + hash = "sha256-Chn3SONSg6yhwwHcry/cO2L7/ihEco35gpRlMlQVXz8="; }; - cargoHash = "sha256-RDMLfg+KsvfXDjsCzCn53kebBRN8/6er/LsS/BzoeU0="; + cargoHash = "sha256-0lXwOphoUQqe1O0KbAOl98ZbMKyG8ZZOl7NhXYwSvvQ="; # require running database doCheck = false; diff --git a/pkgs/by-name/mq/mqtt-explorer/package.nix b/pkgs/by-name/mq/mqtt-explorer/package.nix index 1f09774684f6..8471ece5d4a7 100644 --- a/pkgs/by-name/mq/mqtt-explorer/package.nix +++ b/pkgs/by-name/mq/mqtt-explorer/package.nix @@ -56,12 +56,6 @@ stdenv.mkDerivation rec { env.ELECTRON_SKIP_BINARY_DOWNLOAD = "1"; - # disable code signing on macos - # https://github.com/electron-userland/electron-builder/blob/77f977435c99247d5db395895618b150f5006e8f/docs/code-signing.md#how-to-disable-code-signing-during-the-build-process-on-macos - postConfigure = lib.optionalString stdenv.hostPlatform.isDarwin '' - export CSC_IDENTITY_AUTO_DISCOVERY=false - ''; - configurePhase = '' runHook preConfigure @@ -100,7 +94,9 @@ stdenv.mkDerivation rec { yarn --offline run electron-builder --dir \ -c.electronDist="$electron_dist" \ - -c.electronVersion=${electron.version} + -c.electronVersion=${electron.version} \ + -c.mac.identity=null + # ^ disable code signing on macos runHook postBuild ''; diff --git a/pkgs/by-name/ms/msedgedriver/package.nix b/pkgs/by-name/ms/msedgedriver/package.nix index 053d4e347fac..5a7bac587d47 100644 --- a/pkgs/by-name/ms/msedgedriver/package.nix +++ b/pkgs/by-name/ms/msedgedriver/package.nix @@ -11,11 +11,11 @@ stdenvNoCC.mkDerivation (finalAttrs: { pname = "msedgedriver"; - version = "149.0.4022.52"; + version = "149.0.4022.69"; src = fetchzip { url = "https://msedgedriver.microsoft.com/${finalAttrs.version}/edgedriver_linux64.zip"; - hash = "sha256-GLPkBOlXDTpjYrrc9odDeHXXZ8vLPiw06v1bIN1zOpo="; + hash = "sha256-BtyQD+zkZWv5GhnxJOg4BkVLrCdBZr7KN1bvXyvp4B8="; stripRoot = false; }; diff --git a/pkgs/by-name/ni/nixos-firewall-tool/package.nix b/pkgs/by-name/ni/nixos-firewall-tool/package.nix index f0245905a902..08cf7b138c8a 100644 --- a/pkgs/by-name/ni/nixos-firewall-tool/package.nix +++ b/pkgs/by-name/ni/nixos-firewall-tool/package.nix @@ -7,8 +7,8 @@ }: stdenvNoCC.mkDerivation { - name = "nixos-firewall-tool"; - + pname = "nixos-firewall-tool"; + version = lib.trivial.release; src = builtins.filterSource (name: _: !(lib.hasSuffix ".nix" name)) ./.; strictDeps = true; diff --git a/pkgs/by-name/ni/nixtamal/package.nix b/pkgs/by-name/ni/nixtamal/package.nix index e9f4193375a0..cb79390c8a10 100644 --- a/pkgs/by-name/ni/nixtamal/package.nix +++ b/pkgs/by-name/ni/nixtamal/package.nix @@ -20,7 +20,7 @@ ocamlPackages.buildDunePackage (finalAttrs: { pname = "nixtamal"; - version = "1.5.4"; + version = "1.6.0"; release_year = 2026; minimalOCamlVersion = "5.3"; @@ -29,7 +29,7 @@ ocamlPackages.buildDunePackage (finalAttrs: { url = "https://darcs.toastal.in.th/nixtamal/stable/"; mirrors = [ "https://smeder.ee/~toastal/nixtamal.darcs" ]; rev = finalAttrs.version; - hash = "sha256-ST90m0SF3dyGOV3Q43bJ9bGuznP0WIkQsIJXUNFNPOs="; + hash = "sha256-OOAulI6ZJGbbUMi68jnJQ+cJpZVQYL5F5HUfdOZ3wEs="; }; nativeBuildInputs = [ diff --git a/pkgs/by-name/oc/oci-cli/package.nix b/pkgs/by-name/oc/oci-cli/package.nix index d2c874b0f29b..c114c75ba567 100644 --- a/pkgs/by-name/oc/oci-cli/package.nix +++ b/pkgs/by-name/oc/oci-cli/package.nix @@ -31,14 +31,14 @@ in py.pkgs.buildPythonApplication (finalAttrs: { pname = "oci-cli"; - version = "3.85.0"; + version = "3.86.0"; pyproject = true; src = fetchFromGitHub { owner = "oracle"; repo = "oci-cli"; tag = "v${finalAttrs.version}"; - hash = "sha256-10KIrd6ZI56YiqNzmo/f5jUEp5YZF5JUN6NPzbgnq9w="; + hash = "sha256-bdHhM7ah1dnQYOK8TXheSqSbFZn3WgMfsfQtAT24wBM="; }; nativeBuildInputs = [ installShellFiles ]; diff --git a/pkgs/by-name/oe/oelint-adv/package.nix b/pkgs/by-name/oe/oelint-adv/package.nix index 68215db4413c..60997d1a6a5a 100644 --- a/pkgs/by-name/oe/oelint-adv/package.nix +++ b/pkgs/by-name/oe/oelint-adv/package.nix @@ -7,14 +7,14 @@ python3Packages.buildPythonApplication (finalAttrs: { pname = "oelint-adv"; - version = "9.8.2"; + version = "9.8.4"; pyproject = true; src = fetchFromGitHub { owner = "priv-kweihmann"; repo = "oelint-adv"; tag = finalAttrs.version; - hash = "sha256-mZleG+NAVqjeJ66SlYYvF90XwJ4H1wlsMOQRBdH1qhM="; + hash = "sha256-bQFjf+BAmJKsjcjZcTc34+4bcSq4hgSBKgHRcYA1ai0="; }; postPatch = '' diff --git a/pkgs/by-name/op/opencode-desktop/package.nix b/pkgs/by-name/op/opencode-desktop/package.nix index 2af9b61a87bb..87b15e49ed0d 100644 --- a/pkgs/by-name/op/opencode-desktop/package.nix +++ b/pkgs/by-name/op/opencode-desktop/package.nix @@ -54,12 +54,6 @@ stdenvNoCC.mkDerivation (finalAttrs: { OPENCODE_CHANNEL = "prod"; MODELS_DEV_API_JSON = "${models-dev}/dist/_api.json"; OPENCODE_DISABLE_MODELS_FETCH = true; - } - # Disable code signing on macOS. Public build hosts don't have Apple Developer - # certificates, so electron-builder's `security find-identity` spawns produce - # EPERM inside the nix sandbox. - // lib.optionalAttrs stdenvNoCC.hostPlatform.isDarwin { - CSC_IDENTITY_AUTO_DISCOVERY = "false"; }; postPatch = '' diff --git a/pkgs/by-name/or/orca/package.nix b/pkgs/by-name/or/orca/package.nix index 6cb77c9b2ed0..41769c769272 100644 --- a/pkgs/by-name/or/orca/package.nix +++ b/pkgs/by-name/or/orca/package.nix @@ -128,7 +128,6 @@ python3.pkgs.buildPythonApplication (finalAttrs: { Needs `services.gnome.at-spi2-core.enable = true;` in `configuration.nix`. ''; - maintainers = with lib.maintainers; [ berce ]; teams = [ lib.teams.gnome ]; license = lib.licenses.lgpl21; platforms = lib.platforms.linux; diff --git a/pkgs/by-name/pj/pj/package.nix b/pkgs/by-name/pj/pj/package.nix index 5b48a60c27bc..42f65a474e6e 100644 --- a/pkgs/by-name/pj/pj/package.nix +++ b/pkgs/by-name/pj/pj/package.nix @@ -8,13 +8,13 @@ buildGoModule (finalAttrs: { pname = "pj"; - version = "1.13.0"; + version = "1.14.0"; src = fetchFromGitHub { owner = "josephschmitt"; repo = "pj"; tag = "v${finalAttrs.version}"; - hash = "sha256-T09puEftbgvtXKcywJcXHfI+UTKGjyFaPMr7LEHDIUQ="; + hash = "sha256-i6BYNKizpEE3OffkOuAShFow21sMMHPyCK5RMguXCCQ="; }; vendorHash = "sha256-rya2afSV9Y1hmUZU0wyR9NETBl3TXD/OTHv0zvVl8v8="; diff --git a/pkgs/by-name/pl/plausible/package.nix b/pkgs/by-name/pl/plausible/package.nix index 9bfa3cdf652d..3afdb2a5040c 100644 --- a/pkgs/by-name/pl/plausible/package.nix +++ b/pkgs/by-name/pl/plausible/package.nix @@ -9,23 +9,23 @@ runCommand, nixosTests, npm-lockfile-fix, + cmake, nix-update-script, brotli, - tailwindcss_3, esbuild, buildPackages, }: let pname = "plausible"; - version = "3.0.1"; + version = "3.2.1"; mixEnv = "ce"; src = fetchFromGitHub { owner = "plausible"; repo = "analytics"; rev = "v${version}"; - hash = "sha256-DQIRsqkH2zgIkb3yezuJEKJ99PS031GJ+bDAeHMLNUY="; + hash = "sha256-2roIj0s2cybYdGmmJSPJ5Rc1gNunxlYew9JR5xxMv+k="; postFetch = '' ${lib.getExe npm-lockfile-fix} $out/assets/package-lock.json sed -ie ' @@ -47,7 +47,7 @@ let pname = "${pname}-assets"; inherit version; src = "${src}/assets"; - npmDepsHash = "sha256-hPbKEC8DE/gb483COG/ZbTuEP8Y44Fs7ppHMpXphCjg="; + npmDepsHash = "sha256-grYxPRzpu3pcv3lyTQxx0RDhmgFhsOKZoYbzd701xjA="; dontNpmBuild = true; installPhase = '' runHook preInstall @@ -60,7 +60,7 @@ let pname = "${pname}-tracker"; inherit version; src = "${src}/tracker"; - npmDepsHash = "sha256-kfqJVUw3xnMT0sOkc5O42CwBxPQXiYnOQ5WpdZwzxfE"; + npmDepsHash = "sha256-hrsvQXvbcfRDUc1qinyUJ7Oh4yMM1e+UEdYudjYyJxk="; dontNpmBuild = true; installPhase = '' runHook preInstall @@ -69,6 +69,18 @@ let ''; }; + # lazy_html (new dep since 3.1.0) builds a NIF against lexbor + # its Makefile clones lexbor at build time (which sandbox forbids) + # pre-seed commit in lazy_html's mix.exs so the clone target is skipped + # and force a build in preBuild below + lexborCommit = "244b84956a6dc7eec293781d051354f351274c46"; + lexborSrc = fetchFromGitHub { + owner = "lexbor"; + repo = "lexbor"; + rev = lexborCommit; + hash = "sha256-Oup/lGU8a9Dqfho4Llg39t9Y9n4xfUmGk0772OkpnLQ="; + }; + mixFodDeps = beamPackages.fetchMixDeps { inherit pname @@ -76,7 +88,7 @@ let src mixEnv ; - hash = "sha256-caCbuMEDsLcxm8xehWEJiaTfgl435crBfnQFQpzGsLY"; + hash = "sha256-fm/elkCNpu5sduBxly06i/z30Y9BMtt+qthXmLuvlUc="; }; mjmlNif = rustPlatform.buildRustPackage { @@ -84,7 +96,7 @@ let version = ""; src = "${mixFodDeps}/mjml/native/mjml_nif"; - cargoHash = "sha256-zDWOik65PWAMpIDDcG+DibprPVW/k+Q83+fjFI5vWaY="; + cargoHash = "sha256-a8xSRdFtMYF0n2rl7A5ZgHoaunUJLVJwHvrkc9uyZKo="; doCheck = false; env = { @@ -109,7 +121,13 @@ let file=''${lib##*/} base=''${file%.*} ln -s "$lib" $out/mjml/priv/native/$base.so + # mjml >= 4.0 loads through RustlerPrecompiled (expects NIF name w/o lib prefix) + ln -s "$lib" $out/mjml/priv/native/''${base#lib}.so done + + mkdir -p $out/lazy_html/_build/c/third_party/lexbor + cp -r --no-preserve=mode ${lexborSrc} \ + $out/lazy_html/_build/c/third_party/lexbor/${lexborCommit} ''; beamPackages = beam27Packages.extend (self: super: { elixir = elixir_1_18; }); @@ -126,10 +144,22 @@ beamPackages.mixRelease rec { nativeBuildInputs = [ nodejs brotli + cmake ]; + dontUseCmakeConfigure = true; + mixFodDeps = patchedMixFodDeps; + # deps are compiled in mixRelease configurePhase + # so the force_build switch must be in place before then + # preBuild would be too late + preConfigure = '' + cat >> config/config.exs <= 3.1.0 needs tailwind v4 cat >> config/config.exs <=0.04.14,<0.05' 'Unidecode>=0.04.14' - ''; - - patches = [ - ./slugify_filename_test.patch # fixes broken test by new unidecode - ]; - - propagatedBuildInputs = [ - unidecode - regex - ]; - - nativeCheckInputs = [ unittestCheckHook ]; - - meta = { - homepage = "https://github.com/dimka665/awesome-slugify"; - description = "Python flexible slugify function"; - license = lib.licenses.gpl3; - platforms = lib.platforms.all; - maintainers = [ ]; - }; -} diff --git a/pkgs/development/python-modules/awesome-slugify/slugify_filename_test.patch b/pkgs/development/python-modules/awesome-slugify/slugify_filename_test.patch deleted file mode 100644 index 3283d76eae05..000000000000 --- a/pkgs/development/python-modules/awesome-slugify/slugify_filename_test.patch +++ /dev/null @@ -1,13 +0,0 @@ -diff --git i/slugify/tests.py w/slugify/tests.py -index 4c9fa1c..3e14328 100644 ---- i/slugify/tests.py -+++ w/slugify/tests.py -@@ -57,7 +57,7 @@ class PredefinedSlugifyTestCase(unittest.TestCase): - self.assertEqual(slugify_url('The Über article'), 'uber-article') - - def test_slugify_filename(self): -- self.assertEqual(slugify_filename(u'Дrаft №2.txt'), u'Draft_2.txt') -+ self.assertEqual(slugify_filename(u'Дrаft №2.txt'), u'Draft_No._2.txt') - - - class ToLowerTestCase(unittest.TestCase): diff --git a/pkgs/development/python-modules/bch/default.nix b/pkgs/development/python-modules/bch/default.nix index c2f529fddee3..c947beafd19b 100644 --- a/pkgs/development/python-modules/bch/default.nix +++ b/pkgs/development/python-modules/bch/default.nix @@ -2,25 +2,30 @@ lib, buildPythonPackage, fetchFromGitHub, + setuptools, click, click-log, paho-mqtt, pyaml, }: -buildPythonPackage rec { +buildPythonPackage (finalAttrs: { pname = "bch"; version = "1.2.1"; - format = "setuptools"; + pyproject = true; + + __structuredAttrs = true; src = fetchFromGitHub { owner = "hardwario"; repo = "bch-control-tool"; - rev = "v${version}"; - sha256 = "/C+NbJ0RrWZ/scv/FiRBTh4h7u0xS4mHVDWQ0WwmlEY="; + tag = "v${finalAttrs.version}"; + hash = "sha256-/C+NbJ0RrWZ/scv/FiRBTh4h7u0xS4mHVDWQ0WwmlEY="; }; - propagatedBuildInputs = [ + build-system = [ setuptools ]; + + dependencies = [ click click-log paho-mqtt @@ -28,8 +33,8 @@ buildPythonPackage rec { ]; postPatch = '' - sed -ri 's/@@VERSION@@/${version}/g' \ - bch/cli.py setup.py + substituteInPlace bch/cli.py setup.py \ + --replace-fail "@@VERSION@@" "${finalAttrs.version}" ''; pythonImportsCheck = [ "bch" ]; @@ -42,4 +47,4 @@ buildPythonPackage rec { license = lib.licenses.mit; maintainers = with lib.maintainers; [ cynerd ]; }; -} +}) diff --git a/pkgs/development/python-modules/cartopy/default.nix b/pkgs/development/python-modules/cartopy/default.nix index 2c82eae651f0..b747f7f171f1 100644 --- a/pkgs/development/python-modules/cartopy/default.nix +++ b/pkgs/development/python-modules/cartopy/default.nix @@ -1,39 +1,57 @@ { lib, buildPythonPackage, + fetchFromGitHub, + + # build-system cython, - fetchPypi, - fontconfig, - gdal, + setuptools-scm, + + # nativeBuildInputs geos, + proj, + + # dependencies matplotlib, numpy, - owslib, - pillow, - proj, pyproj, pyshp, + shapely, + + # optional-dependencies + # ows + owslib, + pillow, + # plotting + gdal, + scipy, + + # tests + fontconfig, pytest-mpl, pytestCheckHook, - scipy, - setuptools-scm, - shapely, + writableTmpDirAsHomeHook, }: -buildPythonPackage rec { +buildPythonPackage (finalAttrs: { pname = "cartopy"; version = "0.25.0"; pyproject = true; + __structuredAttrs = true; - src = fetchPypi { - inherit pname version; - hash = "sha256-VfGjkOXz8HWyIcfZH7ECWK2XjbeGx5MOugbrRdKHU/4="; + src = fetchFromGitHub { + owner = "SciTools"; + repo = "cartopy"; + tag = "v${finalAttrs.version}"; + hash = "sha256-qnsr8IgqgqQDyGslYBvpAr/+ccsUPOiA2yGOXge3nUw="; }; - build-system = [ setuptools-scm ]; + build-system = [ + cython + setuptools-scm + ]; nativeBuildInputs = [ - cython geos # for geos-config proj ]; @@ -66,12 +84,12 @@ buildPythonPackage rec { nativeCheckInputs = [ pytest-mpl pytestCheckHook + writableTmpDirAsHomeHook ] - ++ lib.concatAttrValues optional-dependencies; + ++ lib.concatAttrValues finalAttrs.passthru.optional-dependencies; preCheck = '' export FONTCONFIG_FILE=${fontconfig.out}/etc/fonts/fonts.conf - export HOME=$TMPDIR ''; pytestFlags = [ @@ -85,16 +103,41 @@ buildPythonPackage rec { ]; disabledTests = [ + # Numerical errors. Example: + # AssertionError: Arrays are not almost equal to 4 decimals + "test_LatitudeFormatter_mercator" + "test_cursor_values" + "test_default" + "test_extents" + "test_geoaxes_no_subslice" + "test_geoaxes_set_boundary_clipping" + "test_get_extent" + "test_gridliner_labels_zoom" + "test_infinite_loop_bounds" + "test_invalid_xy_domain_corner" + "test_invalid_y_domain" + "test_osgb_vals" + "test_pcolormesh_datalim" + "test_plot_after_contour_doesnt_shrink" + "test_sweep" + "test_tiny_point_between_boundary_points" + "test_transform_point" + "test_with_transform" + + # Failed: Error: Image files did not match. + "test_background_img" "test_gridliner_constrained_adjust_datalim" - "test_gridliner_labels_bbox_style" + "test_imshow" + "test_pil_Image" + "test_stock_img" ]; meta = { description = "Process geospatial data to create maps and perform analyses"; homepage = "https://scitools.org.uk/cartopy/docs/latest/"; - changelog = "https://github.com/SciTools/cartopy/releases/tag/v${version}"; + changelog = "https://github.com/SciTools/cartopy/releases/tag/${finalAttrs.src.tag}"; license = lib.licenses.lgpl3Plus; maintainers = [ ]; mainProgram = "feature_download"; }; -} +}) diff --git a/pkgs/development/python-modules/curl-cffi/default.nix b/pkgs/development/python-modules/curl-cffi/default.nix index 228e8037b203..1d328148d6e7 100644 --- a/pkgs/development/python-modules/curl-cffi/default.nix +++ b/pkgs/development/python-modules/curl-cffi/default.nix @@ -17,6 +17,7 @@ pytest-trio, pytestCheckHook, python-multipart, + rich, trustme, uvicorn, websockets, @@ -46,6 +47,7 @@ buildPythonPackage rec { dependencies = [ cffi certifi + rich ]; pythonImportsCheck = [ "curl_cffi" ]; diff --git a/pkgs/development/python-modules/e3nn/default.nix b/pkgs/development/python-modules/e3nn/default.nix new file mode 100644 index 000000000000..4382881a2302 --- /dev/null +++ b/pkgs/development/python-modules/e3nn/default.nix @@ -0,0 +1,78 @@ +{ + lib, + stdenv, + buildPythonPackage, + fetchFromGitHub, + + # build-system + setuptools, + setuptools-scm, + + # dependencies + opt-einsum-fx, + scipy, + sympy, + torch, + + # tests + pytestCheckHook, + llvmPackages, +}: + +buildPythonPackage (finalAttrs: { + pname = "e3nn"; + version = "0.6.0"; + pyproject = true; + __structuredAttrs = true; + + src = fetchFromGitHub { + owner = "e3nn"; + repo = "e3nn"; + tag = finalAttrs.version; + hash = "sha256-gGl0DiLU8w0jqGWA/ZzvkxdZdZCvtXqtmEEZ2dIwZ2o="; + }; + + build-system = [ + setuptools + setuptools-scm + ]; + + dependencies = [ + opt-einsum-fx + scipy + sympy + torch + ]; + + pythonImportsCheck = [ "e3nn" ]; + + nativeCheckInputs = [ + pytestCheckHook + ]; + + disabledTests = [ + # RuntimeError: torch.compile does not support compiling torch.jit.script or + # torch.jit.freeze models directly + "test_identity" + ] + ++ lib.optionals stdenv.hostPlatform.isDarwin [ + # symbol not found in flat namespace '___kmpc_barrier' + "test_activation" + "test_input_weights_jit" + "test_variance" + ]; + + propagatedBuildInputs = lib.optionals stdenv.hostPlatform.isDarwin [ + # Otherwise, torch will fail to include `omp.h`: + # torch._inductor.exc.InductorError: CppCompileError: C++ compile error OpenMP support not found + llvmPackages.openmp + ]; + + meta = { + description = "Modular framework for neural networks with Euclidean symmetry"; + homepage = "https://github.com/e3nn/e3nn"; + changelog = "https://github.com/e3nn/e3nn/releases/tag/${finalAttrs.src.tag}"; + license = lib.licenses.mit; + maintainers = with lib.maintainers; [ GaetanLepage ]; + }; +}) diff --git a/pkgs/development/python-modules/ghidra-bridge/default.nix b/pkgs/development/python-modules/ghidra-bridge/default.nix deleted file mode 100644 index 2c50519da9bd..000000000000 --- a/pkgs/development/python-modules/ghidra-bridge/default.nix +++ /dev/null @@ -1,43 +0,0 @@ -{ - lib, - buildPythonPackage, - fetchFromGitHub, - jfx-bridge, - setuptools, -}: - -buildPythonPackage rec { - pname = "ghidra-bridge"; - version = "1.0.0"; - pyproject = true; - - src = fetchFromGitHub { - owner = "justfoxing"; - repo = "ghidra_bridge"; - tag = version; - hash = "sha256-VcAl1tamsuHvZRtBP0+DCl2A9d7E6aoj2AbJhEcBNMM="; - }; - - patches = [ ./no-invoke-git.patch ]; - - postPatch = '' - substituteInPlace ./setup.py --subst-var-by version ${version} - ''; - - build-system = [ setuptools ]; - - dependencies = [ jfx-bridge ]; - - # Tests require a running server instance - doCheck = false; - - pythonImportsCheck = [ "ghidra_bridge" ]; - - meta = { - description = "Python bridge to Ghidra's Python scripting"; - homepage = "https://github.com/justfoxing/ghidra_bridge"; - changelog = "https://github.com/justfoxing/ghidra_bridge/releases/tag/${src.tag}"; - license = lib.licenses.mit; - maintainers = with lib.maintainers; [ scoder12 ]; - }; -} diff --git a/pkgs/development/python-modules/ghidra-bridge/no-invoke-git.patch b/pkgs/development/python-modules/ghidra-bridge/no-invoke-git.patch deleted file mode 100644 index f82ebccde6ea..000000000000 --- a/pkgs/development/python-modules/ghidra-bridge/no-invoke-git.patch +++ /dev/null @@ -1,13 +0,0 @@ -diff --git a/setup.py b/setup.py -index 9a2abe0..75ce109 100644 ---- a/setup.py -+++ b/setup.py -@@ -6,7 +6,7 @@ with open("README.md", "r") as fh: - - # determine the version, then write it out into the bridge.py file - version = ( -- subprocess.check_output("git describe --tags", shell=True).decode("utf-8").strip() -+ "@version@" - ) - # check if this is a non-tag release and remark it as a dev release - if "-" in version: diff --git a/pkgs/development/python-modules/iplotx/default.nix b/pkgs/development/python-modules/iplotx/default.nix index 3f098ef33d2b..8f0ca468ca46 100644 --- a/pkgs/development/python-modules/iplotx/default.nix +++ b/pkgs/development/python-modules/iplotx/default.nix @@ -14,14 +14,14 @@ buildPythonPackage (finalAttrs: { pname = "iplotx"; - version = "1.6.0"; + version = "1.7.1"; pyproject = true; src = fetchFromGitHub { owner = "fabilab"; repo = "iplotx"; tag = finalAttrs.version; - hash = "sha256-pTSY7eEYKwBSDttxZqauGCofYK5SFaxjJLXYBwSr3ew="; + hash = "sha256-vLYjTYdt3ctaUwnzV73vNWu2uKpER92SH8uqeLR/G7M="; }; build-system = [ hatchling ]; diff --git a/pkgs/development/python-modules/jaxtyping/default.nix b/pkgs/development/python-modules/jaxtyping/default.nix index e388ba7b5260..19df15b2aa7b 100644 --- a/pkgs/development/python-modules/jaxtyping/default.nix +++ b/pkgs/development/python-modules/jaxtyping/default.nix @@ -27,7 +27,7 @@ buildPythonPackage (finalAttrs: { pname = "jaxtyping"; - version = "0.3.10"; + version = "0.3.11"; pyproject = true; __structuredAttrs = true; @@ -35,7 +35,7 @@ buildPythonPackage (finalAttrs: { owner = "patrick-kidger"; repo = "jaxtyping"; tag = "v${finalAttrs.version}"; - hash = "sha256-7HhStNjVKjnPfXiuXDLsvwH1efSGSMqRuCWeOtpcidw="; + hash = "sha256-oC8n4YiV39EjRm8vYDFrUVJmEPeH814q7uIKdmpqnJk="; }; build-system = [ hatchling ]; diff --git a/pkgs/development/python-modules/jfx-bridge/default.nix b/pkgs/development/python-modules/jfx-bridge/default.nix deleted file mode 100644 index 2c261be4b96a..000000000000 --- a/pkgs/development/python-modules/jfx-bridge/default.nix +++ /dev/null @@ -1,52 +0,0 @@ -{ - lib, - buildPythonPackage, - fetchFromGitHub, - pytestCheckHook, - python, - setuptools, -}: - -buildPythonPackage rec { - pname = "jfx-bridge"; - version = "1.0.0"; - pyproject = true; - - src = fetchFromGitHub { - owner = "justfoxing"; - repo = "jfx_bridge"; - tag = version; - hash = "sha256-fpUrKNGqTpthhTfohCbwO1GBDAP/YnLWeapVhZftldg="; - }; - - patches = [ ./no-invoke-git.patch ]; - - postPatch = '' - substituteInPlace ./setup.py --subst-var-by version ${version} - ''; - - build-system = [ setuptools ]; - - nativeCheckInputs = [ pytestCheckHook ]; - - preCheck = '' - ${python.interpreter} test_bridge_server.py & - ''; - - disabledTests = [ - # known to cause timeout with newer python (acknowledged in test comment) - "test_nonreturn_marker_local" - # the mechanisms that hook into the python import machinery seem broken on newer python - "TestBridgeHookImport" - ]; - - pythonImportsCheck = [ "jfx_bridge" ]; - - meta = { - description = "Base Python RPC bridge used for ghidra_bridge"; - homepage = "https://github.com/justfoxing/jfx_bridge"; - changelog = "https://github.com/justfoxing/jfx_bridge/releases/tag/${src.tag}"; - license = lib.licenses.mit; - maintainers = with lib.maintainers; [ scoder12 ]; - }; -} diff --git a/pkgs/development/python-modules/jfx-bridge/no-invoke-git.patch b/pkgs/development/python-modules/jfx-bridge/no-invoke-git.patch deleted file mode 100644 index 2c1f53ca2d6c..000000000000 --- a/pkgs/development/python-modules/jfx-bridge/no-invoke-git.patch +++ /dev/null @@ -1,13 +0,0 @@ -diff --git a/setup.py b/setup.py -index 079cb01..c5e71b8 100644 ---- a/setup.py -+++ b/setup.py -@@ -6,7 +6,7 @@ with open("README.md", "r") as fh: - long_description = fh.read() - - # determine the version, then write it out into the bridge.py file --version = subprocess.check_output("git describe --tags", shell=True).decode("utf-8").strip() -+version = "@version@" - # check if this is a non-tag release and remark it as a dev release - if "-" in version: - ver, commits, hash = version.split("-") diff --git a/pkgs/development/python-modules/junitparser/default.nix b/pkgs/development/python-modules/junitparser/default.nix index 6e8471c8a02c..d476d86775a9 100644 --- a/pkgs/development/python-modules/junitparser/default.nix +++ b/pkgs/development/python-modules/junitparser/default.nix @@ -10,14 +10,14 @@ buildPythonPackage rec { pname = "junitparser"; - version = "4.0.2"; + version = "5.0.0"; pyproject = true; src = fetchFromGitHub { owner = "weiwei"; repo = "junitparser"; tag = version; - hash = "sha256-+81n5xW9SEE+NZbYKxXu6xupoq4/haUZokVardh43iM="; + hash = "sha256-I/bQQPT6b6PTZ9bIlWCQmN/gUWnVIO42xtJh/g7L79A="; }; build-system = [ setuptools ]; diff --git a/pkgs/development/python-modules/kserve/default.nix b/pkgs/development/python-modules/kserve/default.nix index e0503d4b0f23..ecfb16deb689 100644 --- a/pkgs/development/python-modules/kserve/default.nix +++ b/pkgs/development/python-modules/kserve/default.nix @@ -24,6 +24,7 @@ prometheus-client, protobuf, psutil, + pyasn1, pydantic, python-dateutil, python-multipart, @@ -59,7 +60,7 @@ buildPythonPackage (finalAttrs: { pname = "kserve"; - version = "0.18.0"; + version = "0.19.0"; pyproject = true; __structuredAttrs = true; @@ -67,7 +68,7 @@ buildPythonPackage (finalAttrs: { owner = "kserve"; repo = "kserve"; tag = "v${finalAttrs.version}"; - hash = "sha256-qmv6DzYA/c/uGS4LNTdn3PnzhtLrhprF6r9ccngsUTU="; + hash = "sha256-i8eFdXwNLPTdEj2MnNAMbefxQGkMLHNwZXxg8+zv6v0="; }; sourceRoot = "${finalAttrs.src.name}/python/kserve"; @@ -106,6 +107,7 @@ buildPythonPackage (finalAttrs: { prometheus-client protobuf psutil + pyasn1 pydantic python-dateutil python-multipart diff --git a/pkgs/development/python-modules/libbs/default.nix b/pkgs/development/python-modules/libbs/default.nix index cf4a3b03e00b..dc7b832bb670 100644 --- a/pkgs/development/python-modules/libbs/default.nix +++ b/pkgs/development/python-modules/libbs/default.nix @@ -3,15 +3,13 @@ buildPythonPackage, fetchFromGitHub, filelock, - ghidra-bridge, - jfx-bridge, networkx, platformdirs, ply, prompt-toolkit, psutil, pycparser, - pyhidra, + pyghidra, pytestCheckHook, setuptools, toml, @@ -28,7 +26,7 @@ let hash = "sha256-P7+BTJgdC9W8cC/7xQduFYllF+0ds1dSlm59/BFvZ2g="; }; in -buildPythonPackage rec { +buildPythonPackage (finalAttrs: { pname = "libbs"; version = "3.3.0"; pyproject = true; @@ -36,7 +34,7 @@ buildPythonPackage rec { src = fetchFromGitHub { owner = "binsync"; repo = "libbs"; - tag = "v${version}"; + tag = "v${finalAttrs.version}"; hash = "sha256-Xe47JZPkbROHFlqc2o/htqvZWjknsv5KekJBqXA44O4="; }; @@ -44,15 +42,13 @@ buildPythonPackage rec { dependencies = [ filelock - ghidra-bridge - jfx-bridge networkx platformdirs ply prompt-toolkit psutil pycparser - pyhidra + pyghidra toml tqdm ]; @@ -81,8 +77,8 @@ buildPythonPackage rec { meta = { description = "Library for writing plugins in any decompiler: includes API lifting, common data formatting, and GUI abstraction"; homepage = "https://github.com/binsync/libbs"; - changelog = "https://github.com/binsync/libbs/releases/tag/${src.tag}"; + changelog = "https://github.com/binsync/libbs/releases/tag/${finalAttrs.src.tag}"; license = lib.licenses.bsd2; maintainers = with lib.maintainers; [ scoder12 ]; }; -} +}) diff --git a/pkgs/development/python-modules/low-index/default.nix b/pkgs/development/python-modules/low-index/default.nix index c753e78d2ff5..6bd1711c40ee 100644 --- a/pkgs/development/python-modules/low-index/default.nix +++ b/pkgs/development/python-modules/low-index/default.nix @@ -4,18 +4,19 @@ buildPythonPackage, fetchFromGitHub, setuptools, + nix-update-script, }: buildPythonPackage rec { pname = "low-index"; - version = "1.2.1"; + version = "1.3"; pyproject = true; src = fetchFromGitHub { owner = "3-manifolds"; repo = "low_index"; tag = "v${version}_as_released"; - hash = "sha256-T8hzC9ulikQ1pUdbXgjuKAX5oMJEycPvXWv74rCkQGY="; + hash = "sha256-m3p05bqu70pMOsb9drW1B6+N893eBSZBFTNNS23OY6w="; }; build-system = [ setuptools ]; @@ -28,6 +29,13 @@ buildPythonPackage rec { runHook postCheck ''; + passthru.updateScript = nix-update-script { + extraArgs = [ + "--version-regex" + "v(.*)_as_released" + ]; + }; + meta = { description = "Enumerates low index subgroups of a finitely presented group"; changelog = "https://github.com/3-manifolds/low_index/releases/tag/${src.tag}"; diff --git a/pkgs/development/python-modules/mace-torch/default.nix b/pkgs/development/python-modules/mace-torch/default.nix new file mode 100644 index 000000000000..3c8b486f643b --- /dev/null +++ b/pkgs/development/python-modules/mace-torch/default.nix @@ -0,0 +1,138 @@ +{ + lib, + stdenv, + buildPythonPackage, + fetchFromGitHub, + + # build-system + setuptools, + + # dependencies + ase, + configargparse, + e3nn, + gitpython, + h5py, + lmdb, + matplotlib, + matscipy, + numpy, + opt-einsum, + orjson, + pandas, + prettytable, + python-hostlist, + pyyaml, + torch, + torch-ema, + torchmetrics, + tqdm, + + # tests + pytestCheckHook, + writableTmpDirAsHomeHook, +}: + +buildPythonPackage (finalAttrs: { + pname = "mace-torch"; + version = "0.3.16"; + pyproject = true; + __structuredAttrs = true; + + src = fetchFromGitHub { + owner = "acesuit"; + repo = "mace"; + tag = "v${finalAttrs.version}"; + hash = "sha256-sJ/3c7kPe99vkliixUMqqQi2OiL3CCUdlcgpDZ/PUHA="; + }; + + build-system = [ + setuptools + ]; + + pythonRelaxDeps = [ + "e3nn" + ]; + dependencies = [ + ase + configargparse + e3nn + gitpython + h5py + lmdb + matplotlib + matscipy + numpy + opt-einsum + orjson + pandas + prettytable + python-hostlist + pyyaml + torch + torch-ema + torchmetrics + tqdm + ]; + + pythonImportsCheck = [ "mace" ]; + + nativeCheckInputs = [ + pytestCheckHook + writableTmpDirAsHomeHook + ]; + + disabledTests = [ + # _pickle.PickleError: ScriptFunction cannot be pickled + "test_run_eval_fail_with_wrong_model" + + # ValueError: too many values to unpack (expected 2) + "test_mace_mp" + + # AssertionError (tensors not close) + "test_run_train_dipole" + "test_run_train_dipole_polar" + + # RuntimeError: Model download failed and no local model found + "test_calculator_descriptor" + "test_compile_foundation" + "test_extract_config" + "test_finite_difference_hessian" + "test_foundations" + "test_initial_metrics_replay_head_mh0" + "test_initial_metrics_replay_head_mh1" + "test_initial_metrics_replay_head_omol" + "test_mace_mh_1_elements_subset_reproduces_energy_forces" + "test_mace_mp_energies" + "test_mace_mp_stresses" + "test_mace_off" + "test_mace_omol_elements_subset_reproduces_energy_forces" + "test_multi_reference" + "test_multihead_finetuning_different_formats" + "test_multihead_finetuning_does_not_modify_default_keyspec" + "test_potential_energy_and_hessian" + "test_remove_pt_head_omol_multihead" + "test_run_train_foundation" + "test_run_train_foundation_elements" + "test_run_train_foundation_elements_multihead" + "test_run_train_foundation_multihead" + "test_run_train_foundation_multihead_json" + "test_run_train_foundation_multihead_pseudolabeling" + "test_run_train_freeze" + "test_run_train_mh_foundation" + "test_run_train_soft_freeze" + ] + ++ lib.optionals stdenv.hostPlatform.isDarwin [ + # symbol not found in flat namespace '___kmpc_barrier' + "test_mace" + "test_mace_compile_stress" + ]; + + meta = { + description = "Fast and accurate machine learning interatomic potentials with higher order equivariant message passing"; + homepage = "https://github.com/acesuit/mace"; + changelog = "https://github.com/acesuit/mace/releases/tag/${finalAttrs.src.tag}"; + license = lib.licenses.mit; + maintainers = with lib.maintainers; [ GaetanLepage ]; + }; +}) diff --git a/pkgs/development/python-modules/matscipy/default.nix b/pkgs/development/python-modules/matscipy/default.nix new file mode 100644 index 000000000000..9183f200e54d --- /dev/null +++ b/pkgs/development/python-modules/matscipy/default.nix @@ -0,0 +1,186 @@ +{ + lib, + stdenv, + buildPythonPackage, + fetchFromGitHub, + pythonAtLeast, + + fetchpatch, + + # build-system + meson-python, + ninja, + numpy, + + # dependencies + ase, + packaging, + scipy, + + # optional-dependencies + # cli: + argcomplete, + # dislocation: + atomman, + nglview, + ovito, + # docs: + jupytext, + myst-nb, + numpydoc, + pydata-sphinx-theme, + sphinx, + sphinx-copybutton, + sphinx-rtd-theme, + sphinxcontrib-spelling, + + # tests + pytest-subtests, + pytest-timeout, + pytest-xdist, + sympy, + + # tests + pytestCheckHook, +}: + +buildPythonPackage (finalAttrs: { + pname = "matscipy"; + version = "1.2.0"; + pyproject = true; + __structuredAttrs = true; + + src = fetchFromGitHub { + owner = "libAtoms"; + repo = "matscipy"; + tag = "v${finalAttrs.version}"; + hash = "sha256-XmY13B5S8tXYiUaec9gL6e0E3bSnbaMteHHiX2ij2sw="; + }; + + patches = [ + # API: Fix compatibility with ASE 3.27.0 + # https://github.com/libAtoms/matscipy/pull/301 + (fetchpatch { + url = "https://github.com/libAtoms/matscipy/commit/6a91a4646e30796abe51ef3efa4b479d4471aae0.patch"; + hash = "sha256-PH9I+7+nN6fSkugVbxPCs3LqjhP/fQ5NZjiNQ7F70YU="; + }) + (fetchpatch { + url = "https://github.com/libAtoms/matscipy/commit/f6478347bbceeab8ec177042b6ed1243e742d55f.patch"; + hash = "sha256-DKk+1TlP+OngcmycsCIE+7s2h/7wa7Gxv9APbuIAoZg="; + }) + ]; + + postPatch = + # Otherwise the script fails as it can't resolve the version with git + '' + substituteInPlace discover_version.py \ + --replace-fail \ + "version = get_version_from_git()" \ + "version = '${finalAttrs.version}'" + '' + # Failed: [pytest] section in setup.cfg files is no longer supported, change to [tool:pytest] instead. + + '' + substituteInPlace setup.cfg \ + --replace-fail \ + "[pytest]" \ + "[tool:pytest]" + ''; + + build-system = [ + # meson + meson-python + ninja + numpy + ]; + + dependencies = [ + ase + numpy + packaging + scipy + ]; + + optional-dependencies = { + cli = [ + argcomplete + ]; + dislocation = [ + atomman + nglview + ovito + ]; + docs = [ + jupytext + # matscipy + myst-nb + numpydoc + pydata-sphinx-theme + sphinx + sphinx-copybutton + sphinx-rtd-theme + sphinxcontrib-spelling + ]; + }; + + pythonImportsCheck = [ "matscipy" ]; + + nativeCheckInputs = [ + pytest-subtests + pytest-timeout + pytest-xdist + pytestCheckHook + sympy + ]; + + preCheck = '' + rm -rf matscipy + ''; + + disabledTestPaths = [ + # The CLI tests look for the source scripts under `../matscipy/cli` relative to the test + # directory, which we remove in `preCheck` so that tests run against the installed package. + "tests/test_electrochemistry_cli.py" + ] + ++ lib.optionals (pythonAtLeast "3.14") [ + # ValueError: cannot resize an array that may be referenced by another object + "tests/manybody/test_newmb.py" + "tests/test_neighbours.py" + ]; + + disabledTests = [ + # Numerical assertion failure + "test_birch_constants" + + # numpy 2 / ase 3.28 incompatibilities in matscipy 1.2.0 + # `ase.phonons` finite-difference reference no longer matches + "test_hessian_monoatomic" + "test_hessian_amorphous_alloy" + "test_hessian_crystalline_alloy" + + # TypeError: only 0-dimensional arrays can be converted to Python scalars + "test_eam_read_write" + + # AttributeError: 'Log' object has no attribute 'close' + "test_logger" + "test_usage" + ] + ++ lib.optionals (stdenv.hostPlatform.isLinux && stdenv.hostPlatform.isAarch64) [ + # AssertionError: assert np.False (numerical precision) + "test_fixed_line_atoms" + ] + ++ lib.optionals (pythonAtLeast "3.14") [ + # ValueError: cannot resize an array that may be referenced by another object + "test_harmonic_bond" + "test_read_molecules_from_atoms" + "test_read_molecules_from_lammps_data" + "test_read_write_lammps_data" + ]; + + meta = { + description = "Materials science with Python at the atomic-scale"; + homepage = "https://github.com/libAtoms/matscipy"; + changelog = "https://github.com/libAtoms/matscipy/blob/${finalAttrs.src.tag}/ChangeLog.md"; + license = lib.licenses.lgpl21Only; + maintainers = with lib.maintainers; [ GaetanLepage ]; + }; +}) diff --git a/pkgs/development/python-modules/matter-ble-proxy/default.nix b/pkgs/development/python-modules/matter-ble-proxy/default.nix index e683b6a5860a..c155dedf829d 100644 --- a/pkgs/development/python-modules/matter-ble-proxy/default.nix +++ b/pkgs/development/python-modules/matter-ble-proxy/default.nix @@ -13,7 +13,7 @@ buildPythonPackage (finalAttrs: { pname = "matter-ble-proxy"; - version = "0.8.0"; + version = "1.0.0"; pyproject = true; disabled = pythonOlder "3.12"; @@ -22,7 +22,7 @@ buildPythonPackage (finalAttrs: { owner = "matter-js"; repo = "matterjs-server"; tag = "v${finalAttrs.version}"; - hash = "sha256-AjCfPovhYKUeU4Xrsh6uL0pPG+ja0n+efFTbwre83m4="; + hash = "sha256-c/jhQfenRgE0qHisGM1TOtqWjDy/RcwGa04RE0FzR/U="; }; sourceRoot = "${finalAttrs.src.name}/python_ble_proxy"; diff --git a/pkgs/development/python-modules/openslide/default.nix b/pkgs/development/python-modules/openslide/default.nix index 663c1d30df26..72a60b005b7d 100644 --- a/pkgs/development/python-modules/openslide/default.nix +++ b/pkgs/development/python-modules/openslide/default.nix @@ -10,14 +10,14 @@ buildPythonPackage rec { pname = "openslide"; - version = "1.4.3"; + version = "1.4.6"; pyproject = true; src = fetchFromGitHub { owner = "openslide"; repo = "openslide-python"; tag = "v${version}"; - hash = "sha256-v8JrZdDwZPtnWYOmvJXbq22k6/MQqMzWweD86Eof0e4="; + hash = "sha256-uo1jcfxbx9v9vNQGnzAhO4N/QKQycMh5y4ICWstnZA0="; }; postPatch = '' diff --git a/pkgs/development/python-modules/opt-einsum-fx/default.nix b/pkgs/development/python-modules/opt-einsum-fx/default.nix new file mode 100644 index 000000000000..d183970cc557 --- /dev/null +++ b/pkgs/development/python-modules/opt-einsum-fx/default.nix @@ -0,0 +1,52 @@ +{ + lib, + buildPythonPackage, + fetchFromGitHub, + + # build-system + setuptools, + + # dependencies + opt-einsum, + torch, + + # tests + pytestCheckHook, +}: + +buildPythonPackage (finalAttrs: { + pname = "opt-einsum-fx"; + version = "0.1.4"; + pyproject = true; + __structuredAttrs = true; + + src = fetchFromGitHub { + owner = "Linux-cpp-lisp"; + repo = "opt_einsum_fx"; + tag = "v${finalAttrs.version}"; + hash = "sha256-HamDghqmdX4Q+4zXQvCly588p3TaYFCSnzgEKLVMXSo="; + }; + + build-system = [ + setuptools + ]; + + dependencies = [ + opt-einsum + torch + ]; + + pythonImportsCheck = [ "opt_einsum_fx" ]; + + nativeCheckInputs = [ + pytestCheckHook + ]; + + meta = { + description = "Einsum optimization using opt_einsum and PyTorch FX graph rewriting"; + homepage = "https://github.com/Linux-cpp-lisp/opt_einsum_fx"; + changelog = "https://github.com/Linux-cpp-lisp/opt_einsum_fx/blob/${finalAttrs.src.tag}/CHANGELOG.md"; + license = lib.licenses.mit; + maintainers = with lib.maintainers; [ GaetanLepage ]; + }; +}) diff --git a/pkgs/development/python-modules/pinecone-plugin-assistant/default.nix b/pkgs/development/python-modules/pinecone-plugin-assistant/default.nix index e21032893ab7..9c3e3999bf11 100644 --- a/pkgs/development/python-modules/pinecone-plugin-assistant/default.nix +++ b/pkgs/development/python-modules/pinecone-plugin-assistant/default.nix @@ -8,14 +8,14 @@ buildPythonPackage rec { pname = "pinecone-plugin-assistant"; - version = "3.0.2"; + version = "3.0.3"; pyproject = true; src = fetchPypi { pname = "pinecone_plugin_assistant"; inherit version; - hash = "sha256-BBY68oKteJW1gauJ+FDtE55N3OpyAQyt+kxXN1nVyJY="; + hash = "sha256-U/VI7eYKldef9I14ZaPQr9Zlztnnd1gnLmK6DGxjvSY="; }; build-system = [ diff --git a/pkgs/development/python-modules/portion/default.nix b/pkgs/development/python-modules/portion/default.nix index 7cbe2884f387..effffd8f60bd 100644 --- a/pkgs/development/python-modules/portion/default.nix +++ b/pkgs/development/python-modules/portion/default.nix @@ -2,21 +2,29 @@ lib, buildPythonPackage, fetchFromGitHub, + + # build-system hatchling, + + # dependencies sortedcontainers, + + # tests + pytest-benchmark, pytestCheckHook, }: -buildPythonPackage rec { +buildPythonPackage (finalAttrs: { pname = "portion"; - version = "2.6.1"; + version = "2.6.2"; pyproject = true; + __structuredAttrs = true; src = fetchFromGitHub { owner = "AlexandreDecan"; repo = "portion"; - tag = version; - hash = "sha256-K4mZn8Fm96ZBBdLTMfM9f1GKDdIrRwDRzk6ObaXSFG4="; + tag = finalAttrs.version; + hash = "sha256-ns9kUoSufegx0I3ag/KVl68ZviEIRx+zPA+BSWq3k80="; }; build-system = [ hatchling ]; @@ -25,13 +33,16 @@ buildPythonPackage rec { pythonImportsCheck = [ "portion" ]; - nativeCheckInputs = [ pytestCheckHook ]; + nativeCheckInputs = [ + pytest-benchmark + pytestCheckHook + ]; meta = { - description = "Portion, a Python library providing data structure and operations for intervals"; + description = "Python library providing data structure and operations for intervals"; homepage = "https://github.com/AlexandreDecan/portion"; - changelog = "https://github.com/AlexandreDecan/portion/blob/${src.rev}/CHANGELOG.md"; + changelog = "https://github.com/AlexandreDecan/portion/blob/${finalAttrs.src.tag}/CHANGELOG.md"; license = lib.licenses.lgpl3; maintainers = with lib.maintainers; [ GaetanLepage ]; }; -} +}) diff --git a/pkgs/development/python-modules/protego/default.nix b/pkgs/development/python-modules/protego/default.nix index a732efb982ac..4da1b264cb29 100644 --- a/pkgs/development/python-modules/protego/default.nix +++ b/pkgs/development/python-modules/protego/default.nix @@ -8,14 +8,14 @@ buildPythonPackage (finalAttrs: { pname = "protego"; - version = "0.6.0"; + version = "0.6.1"; pyproject = true; src = fetchFromGitHub { owner = "scrapy"; repo = "protego"; tag = finalAttrs.version; - hash = "sha256-qyOY35gNFojewFMFVT58k1s5uM4j9IZzEURnPh+3htE="; + hash = "sha256-Me+bSJnHHJH0ryPoSS7EN2Px5FNElCWQzvKrmWll4mQ="; }; build-system = [ hatchling ]; diff --git a/pkgs/development/python-modules/pydroplet/default.nix b/pkgs/development/python-modules/pydroplet/default.nix index e31c9ab1f77e..a263d417eb9d 100644 --- a/pkgs/development/python-modules/pydroplet/default.nix +++ b/pkgs/development/python-modules/pydroplet/default.nix @@ -10,14 +10,14 @@ buildPythonPackage rec { pname = "pydroplet"; - version = "2.3.4"; + version = "2.4.0"; pyproject = true; src = fetchFromGitHub { owner = "Hydrific"; repo = "pydroplet"; tag = "v${version}"; - hash = "sha256-cVftXG7sKDpGRRb2jLlFxgCH2+rA6hLYTUqWL1kvh+E="; + hash = "sha256-XLosly9Zyvp3Mfvj0mPORYJBNBkt8JPjlHuvHinZ39w="; }; build-system = [ setuptools ]; diff --git a/pkgs/development/python-modules/pyghmi/default.nix b/pkgs/development/python-modules/pyghmi/default.nix index 31d8a4fce4c3..f48c56f9ff99 100644 --- a/pkgs/development/python-modules/pyghmi/default.nix +++ b/pkgs/development/python-modules/pyghmi/default.nix @@ -13,12 +13,12 @@ buildPythonPackage rec { pname = "pyghmi"; - version = "1.6.16"; + version = "1.6.17"; pyproject = true; src = fetchPypi { inherit pname version; - hash = "sha256-VqMQ54Mx9fkq3UAbzEApzm0LuRKEGXQARf8HGH7yZ6U="; + hash = "sha256-+MkEYEzmT5744sVCEVQxb+cfAIed7m+nPndYpF5r/h0="; }; build-system = [ diff --git a/pkgs/development/python-modules/pygit2/default.nix b/pkgs/development/python-modules/pygit2/default.nix index 0d793e367bf8..ca497efe8206 100644 --- a/pkgs/development/python-modules/pygit2/default.nix +++ b/pkgs/development/python-modules/pygit2/default.nix @@ -15,12 +15,12 @@ buildPythonPackage rec { pname = "pygit2"; - version = "1.19.1"; + version = "1.19.3"; pyproject = true; src = fetchPypi { inherit pname version; - hash = "sha256-MWX3hKrlajCaJ9jurnkj1T2i6PYJQwjH9bQo3uySXPk="; + hash = "sha256-pUPm1Ou0OCVWSTV1jcI053ABb+1nO4Q3DUaulYBViDE="; }; preConfigure = lib.optionalString stdenv.hostPlatform.isDarwin '' diff --git a/pkgs/development/python-modules/pyhidra/default.nix b/pkgs/development/python-modules/pyhidra/default.nix deleted file mode 100644 index 0afc76e3e63c..000000000000 --- a/pkgs/development/python-modules/pyhidra/default.nix +++ /dev/null @@ -1,57 +0,0 @@ -{ - lib, - buildPythonPackage, - fetchFromGitHub, - jpype1, - pytest-datadir, - pytestCheckHook, - setuptools, -}: - -buildPythonPackage rec { - pname = "pyhidra"; - version = "1.3.0"; - pyproject = true; - - src = fetchFromGitHub { - owner = "dod-cyber-crime-center"; - repo = "pyhidra"; - tag = version; - hash = "sha256-8xouU+S7Apy1ySIlvOLPerTApqKy/MNdl9vuBdt+9Vk="; - }; - - build-system = [ setuptools ]; - - dependencies = [ jpype1 ]; - - nativeCheckInputs = [ - pytest-datadir - pytestCheckHook - ]; - - pythonImportsCheck = [ "pyhidra" ]; - - disabledTests = [ - # Tests require a running Ghidra instance - "test_invalid_jpype_keyword_arg" - "test_invalid_vm_arg_succeed" - "test_run_script" - "test_open_program" - "test_no_compiler" - "test_no_language_with_compiler" - "test_loader" - "test_invalid_loader_type" - "test_no_project" - "test_no_program" - "test_import_script" - "test_import_ghidra_base_java_packages" - ]; - - meta = { - description = "Provides direct access to the Ghidra API within a native CPython interpreter using jpype"; - homepage = "https://github.com/dod-cyber-crime-center/pyhidra"; - changelog = "https://github.com/dod-cyber-crime-center/pyhidra/blob/${src.tag}/CHANGELOG.md"; - license = lib.licenses.mit; - maintainers = with lib.maintainers; [ scoder12 ]; - }; -} diff --git a/pkgs/development/python-modules/pytest-subtests/default.nix b/pkgs/development/python-modules/pytest-subtests/default.nix new file mode 100644 index 000000000000..d4b98e40e5c3 --- /dev/null +++ b/pkgs/development/python-modules/pytest-subtests/default.nix @@ -0,0 +1,52 @@ +{ + lib, + buildPythonPackage, + fetchFromGitHub, + + # build-system + setuptools, + setuptools-scm, + + # dependencies + attrs, + pytest, +}: + +buildPythonPackage (finalAttrs: { + pname = "pytest-subtests"; + version = "0.15.0"; + pyproject = true; + __structuredAttrs = true; + + src = fetchFromGitHub { + owner = "pytest-dev"; + repo = "pytest-subtests"; + tag = "v${finalAttrs.version}"; + hash = "sha256-KJbTxhheEkvH/Xnje45dSb57526bVoi8N6GSKfUfCYA="; + }; + + build-system = [ + setuptools + setuptools-scm + ]; + + dependencies = [ + attrs + pytest + ]; + + pythonImportsCheck = [ "pytest_subtests" ]; + + # The self-tests assert on exact pytest terminal output. pytest 9 ships its + # own bundled subtests support and changed how subtest failures are reported, + # so these output-matching tests no longer match. The plugin itself works. + doCheck = false; + + meta = { + description = "Unittest subTest() support and subtests fixture"; + homepage = "https://github.com/pytest-dev/pytest-subtests"; + changelog = "https://github.com/pytest-dev/pytest-subtests/blob/${finalAttrs.src.tag}/CHANGELOG.rst"; + license = lib.licenses.mit; + maintainers = with lib.maintainers; [ GaetanLepage ]; + }; +}) diff --git a/pkgs/development/python-modules/python-hostlist/default.nix b/pkgs/development/python-modules/python-hostlist/default.nix new file mode 100644 index 000000000000..3de14c209422 --- /dev/null +++ b/pkgs/development/python-modules/python-hostlist/default.nix @@ -0,0 +1,39 @@ +{ + lib, + buildPythonPackage, + fetchurl, + + # build-system + setuptools, + + # tests + pytestCheckHook, +}: +buildPythonPackage (finalAttrs: { + pname = "python-hostlist"; + version = "2.3.0"; + pyproject = true; + __structuredAttrs = true; + + src = fetchurl { + url = "https://www.nsc.liu.se/~kent/python-hostlist/python_hostlist-${finalAttrs.version}.tar.gz"; + hash = "sha256-4aCxjlJaX8pXPLmGJ5nxGz8r07p67HDE7Ni5U0G7ceo="; + }; + + build-system = [ + setuptools + ]; + + pythonImportsCheck = [ "hostlist" ]; + + nativeCheckInputs = [ + pytestCheckHook + ]; + + meta = { + description = "Python module for hostlist handling"; + homepage = "https://www.nsc.liu.se/~kent/python-hostlist/"; + license = lib.licenses.gpl3Plus; + maintainers = with lib.maintainers; [ GaetanLepage ]; + }; +}) diff --git a/pkgs/development/python-modules/qemu-qmp/default.nix b/pkgs/development/python-modules/qemu-qmp/default.nix index d4acf9e0a058..5d0e925fbc58 100644 --- a/pkgs/development/python-modules/qemu-qmp/default.nix +++ b/pkgs/development/python-modules/qemu-qmp/default.nix @@ -8,14 +8,14 @@ buildPythonPackage rec { pname = "qemu-qmp"; - version = "0.0.5"; + version = "0.0.6"; pyproject = true; src = fetchFromGitLab { owner = "qemu-project"; repo = "python-qemu-qmp"; tag = "v${version}"; - hash = "sha256-Mpay8JIau3cuUDxtEVn78prilr+YncmtbVX5LkBDrvk="; + hash = "sha256-iuYiYjUfAxXzG7w7s8I2l5oXROyTjswn++vYs9lauGA="; }; build-system = [ diff --git a/pkgs/development/python-modules/sunpy/default.nix b/pkgs/development/python-modules/sunpy/default.nix index b28502734bd4..be52a3357bf8 100644 --- a/pkgs/development/python-modules/sunpy/default.nix +++ b/pkgs/development/python-modules/sunpy/default.nix @@ -60,14 +60,15 @@ buildPythonPackage (finalAttrs: { pname = "sunpy"; - version = "7.1.0"; + version = "7.1.2"; pyproject = true; + __structuredAttrs = true; src = fetchFromGitHub { owner = "sunpy"; repo = "sunpy"; tag = "v${finalAttrs.version}"; - hash = "sha256-FeKmg3dZfbbjt1lDliF4uXf8PvM3J5HWtYqKRriJ4l0="; + hash = "sha256-saq3vYJMKogXSBxKn/tqlSnE96K10EM27femC+Qx0Gw="; }; build-system = [ @@ -179,6 +180,10 @@ buildPythonPackage (finalAttrs: { "test_main_submodule_map" "test_tai_seconds" "test_utime" + + # AssertionError: assert 2 == 1 + # where 2 = len(WarningsChecker(record=True)) + "test_sunpy_warnings_logging" ]; disabledTestPaths = [ diff --git a/pkgs/development/python-modules/torch-ema/default.nix b/pkgs/development/python-modules/torch-ema/default.nix new file mode 100644 index 000000000000..a81ee06f9a19 --- /dev/null +++ b/pkgs/development/python-modules/torch-ema/default.nix @@ -0,0 +1,58 @@ +{ + lib, + stdenv, + buildPythonPackage, + fetchFromGitHub, + + # build-system + setuptools, + + # dependencies + torch, + + # tests + pytestCheckHook, +}: + +buildPythonPackage (finalAttrs: { + pname = "torch-ema"; + version = "0.3.0"; + pyproject = true; + __structuredAttrs = true; + + src = fetchFromGitHub { + owner = "fadel"; + repo = "pytorch_ema"; + tag = "v${finalAttrs.version}"; + hash = "sha256-OOF5Lb3HEIBXc1WXoUp7y44pheDc5oX/7L1vTrwNS2o="; + }; + + build-system = [ + setuptools + ]; + + dependencies = [ + torch + ]; + + pythonImportsCheck = [ "torch_ema" ]; + + nativeCheckInputs = [ + pytestCheckHook + ]; + + disabledTests = lib.optionals (stdenv.hostPlatform.isLinux && stdenv.hostPlatform.isAarch64) [ + # aarch64-linux fails cpuinfo test, because /sys/devices/system/cpu/ does not exist in the sandbox: + # RuntimeError: Failed to initialize cpuinfo! + "test_state_dict_types" + "test_to" + ]; + + meta = { + description = "Tiny PyTorch library for maintaining a moving average of a collection of parameters"; + homepage = "https://github.com/fadel/pytorch_ema"; + changelog = "https://github.com/fadel/pytorch_ema/blob/${finalAttrs.src.tag}/CHANGELOG.md"; + license = lib.licenses.mit; + maintainers = with lib.maintainers; [ GaetanLepage ]; + }; +}) diff --git a/pkgs/development/python-modules/torchao/default.nix b/pkgs/development/python-modules/torchao/default.nix index 3edd4c19fe7e..ae20677483af 100644 --- a/pkgs/development/python-modules/torchao/default.nix +++ b/pkgs/development/python-modules/torchao/default.nix @@ -325,6 +325,7 @@ buildPythonPackage (finalAttrs: { # TypeError: Trying to convert Float8_e4m3fn to the MPS backend but it does not have support for that dtype. "test/quantization/quantize_/workflows/float8/test_float8_tensor.py" + "test/test_low_bit_optim.py::TestOptim::test_subclass_appearance_dtype_subclass2_device_mps" # AssertionError: Torch not compiled with CUDA enabled "test/integration/test_integration.py" diff --git a/pkgs/development/python-modules/torchrl/default.nix b/pkgs/development/python-modules/torchrl/default.nix index 7a8f43834926..43db2040c220 100644 --- a/pkgs/development/python-modules/torchrl/default.nix +++ b/pkgs/development/python-modules/torchrl/default.nix @@ -83,7 +83,7 @@ buildPythonPackage (finalAttrs: { owner = "pytorch"; repo = "rl"; tag = "v${finalAttrs.version}"; - hash = "sha256-S0jfngqmRQwIVGHM72KUnp/TlR2js+QLRpsX6abiv84="; + hash = "sha256-xnQLwOofHwdRvrOMNJpAEiOT7BEfxoPmrcxw2H3CTvI="; }; postPatch = '' diff --git a/pkgs/development/python-modules/vsts/default.nix b/pkgs/development/python-modules/vsts/default.nix index e77ab7456ca0..7696690c699a 100644 --- a/pkgs/development/python-modules/vsts/default.nix +++ b/pkgs/development/python-modules/vsts/default.nix @@ -3,23 +3,28 @@ lib, python, fetchPypi, + setuptools, msrest, }: -buildPythonPackage rec { - version = "0.1.25"; - format = "setuptools"; +buildPythonPackage (finalAttrs: { pname = "vsts"; + version = "0.1.25"; + pyproject = true; + + __structuredAttrs = true; src = fetchPypi { - inherit pname version; - sha256 = "15sgwqa72ynpahj101r2kc15s3dnsafg5gqx0sz3hnqz29h925ys"; + inherit (finalAttrs) pname version; + hash = "sha256-2heRYBIfWzi+Bh2/8pzStg1dApsiBxAkVNd6cRTmT5c="; }; - propagatedBuildInputs = [ msrest ]; + build-system = [ setuptools ]; + + dependencies = [ msrest ]; postPatch = '' - substituteInPlace setup.py --replace "msrest>=0.6.0,<0.7.0" "msrest" + substituteInPlace setup.py --replace-fail "msrest>=0.6.0,<0.7.0" "msrest" ''; # Tests are highly impure @@ -27,10 +32,12 @@ buildPythonPackage rec { ${python.interpreter} -c 'import vsts.version; print(vsts.version.VERSION)' ''; + pythonImportsCheck = [ "vsts" ]; + meta = { description = "Python APIs for interacting with and managing Azure DevOps"; homepage = "https://github.com/microsoft/azure-devops-python-api"; license = lib.licenses.mit; maintainers = [ ]; }; -} +}) diff --git a/pkgs/development/python-modules/ydiff/default.nix b/pkgs/development/python-modules/ydiff/default.nix index 3e5fc98c2614..d778a8a9804d 100644 --- a/pkgs/development/python-modules/ydiff/default.nix +++ b/pkgs/development/python-modules/ydiff/default.nix @@ -2,6 +2,7 @@ lib, buildPythonPackage, fetchFromGitHub, + setuptools, pygments, gitMinimal, mercurial, @@ -10,15 +11,17 @@ less, }: -buildPythonPackage rec { +buildPythonPackage (finalAttrs: { pname = "ydiff"; version = "1.5"; - format = "setuptools"; + pyproject = true; + + __structuredAttrs = true; src = fetchFromGitHub { owner = "ymattw"; repo = "ydiff"; - tag = version; + tag = finalAttrs.version; hash = "sha256-9a7M6+CqGRvO1yainImN2RQVH3XMxE9PTLXJGKekXLg="; }; @@ -36,6 +39,8 @@ buildPythonPackage rec { patchShebangs tests/*.sh ''; + build-system = [ setuptools ]; + nativeCheckInputs = [ pygments ]; checkPhase = '' @@ -44,6 +49,8 @@ buildPythonPackage rec { runHook postCheck ''; + pythonImportsCheck = [ "ydiff" ]; + meta = { description = "View colored, incremental diff in workspace or from stdin with side by side and auto pager support (Was \"cdiff\")"; mainProgram = "ydiff"; @@ -60,4 +67,4 @@ buildPythonPackage rec { despsyched ]; }; -} +}) diff --git a/pkgs/development/python-modules/yubico/default.nix b/pkgs/development/python-modules/yubico/default.nix index 23b9cba70d28..9d2ff41859aa 100644 --- a/pkgs/development/python-modules/yubico/default.nix +++ b/pkgs/development/python-modules/yubico/default.nix @@ -2,21 +2,26 @@ lib, buildPythonPackage, fetchPypi, + setuptools, pytestCheckHook, pyusb, }: -buildPythonPackage rec { +buildPythonPackage (finalAttrs: { pname = "python-yubico"; version = "1.3.3"; - format = "setuptools"; + pyproject = true; + + __structuredAttrs = true; src = fetchPypi { - inherit pname version; + inherit (finalAttrs) pname version; hash = "sha256-2EZkJ6pZIqxdS36cZbaTEIQnz1N9ZT1oyyEsBxPo5vU="; }; - propagatedBuildInputs = [ pyusb ]; + build-system = [ setuptools ]; + + dependencies = [ pyusb ]; checkInputs = [ pytestCheckHook ]; pythonImportsCheck = [ "yubico" ]; @@ -31,4 +36,4 @@ buildPythonPackage rec { license = lib.licenses.bsd2; maintainers = with lib.maintainers; [ s1341 ]; }; -} +}) diff --git a/pkgs/development/python-modules/zigpy-cc/default.nix b/pkgs/development/python-modules/zigpy-cc/default.nix index 51f8b9c3958a..36b41b0e6ff8 100644 --- a/pkgs/development/python-modules/zigpy-cc/default.nix +++ b/pkgs/development/python-modules/zigpy-cc/default.nix @@ -3,16 +3,19 @@ asynctest, buildPythonPackage, fetchFromGitHub, + setuptools, pyserial-asyncio, pytest-asyncio, pytestCheckHook, zigpy, }: -buildPythonPackage rec { +buildPythonPackage (finalAttrs: { pname = "zigpy-cc"; version = "0.5.2"; - format = "setuptools"; + pyproject = true; + + __structuredAttrs = true; # https://github.com/Martiusweb/asynctest/issues/152 # broken by upstream python bug with asynctest and @@ -21,11 +24,13 @@ buildPythonPackage rec { src = fetchFromGitHub { owner = "zigpy"; repo = "zigpy-cc"; - rev = version; - sha256 = "U3S8tQ3zPlexZDt5GvCd+rOv7CBVeXJJM1NGe7nRl2o="; + tag = finalAttrs.version; + hash = "sha256-U3S8tQ3zPlexZDt5GvCd+rOv7CBVeXJJM1NGe7nRl2o="; }; - propagatedBuildInputs = [ + build-system = [ setuptools ]; + + dependencies = [ pyserial-asyncio zigpy ]; @@ -55,4 +60,4 @@ buildPythonPackage rec { maintainers = with lib.maintainers; [ mvnetbiz ]; platforms = lib.platforms.linux; }; -} +}) diff --git a/pkgs/os-specific/linux/kernel/common-config.nix b/pkgs/os-specific/linux/kernel/common-config.nix index f89fa487bfe2..91bea44bf1a7 100644 --- a/pkgs/os-specific/linux/kernel/common-config.nix +++ b/pkgs/os-specific/linux/kernel/common-config.nix @@ -1420,13 +1420,10 @@ let DRM_AMDGPU_USERPTR = yes; # We want to prefer PREEMPT_LAZY when available, and fall back on PREEMPT_VOLUNTARY. - # It just so happens that kconfig asks for PREEMPT_LAZY first, so doing it like this - # does what we want. - # FIXME: This is stupid and bad. - # See: https://github.com/torvalds/linux/commit/7dadeaa6e851e7d67733f3e24fc53ee107781d0f + # The version cutoff is arbitrary, the real cutoff is somewhere around 6.13 depending on target. PREEMPT = no; - PREEMPT_LAZY = option yes; - PREEMPT_VOLUNTARY = option yes; + PREEMPT_LAZY = whenAtLeast "6.18" yes; + PREEMPT_VOLUNTARY = whenOlder "6.18" yes; X86_AMD_PLATFORM_DEVICE = lib.mkIf stdenv.hostPlatform.isx86 yes; X86_PLATFORM_DRIVERS_DELL = lib.mkIf stdenv.hostPlatform.isx86 (whenAtLeast "5.12" yes); diff --git a/pkgs/os-specific/linux/kernel/generate-config.pl b/pkgs/os-specific/linux/kernel/generate-config.pl index 57d3ab739cb6..18d1f2150562 100644 --- a/pkgs/os-specific/linux/kernel/generate-config.pl +++ b/pkgs/os-specific/linux/kernel/generate-config.pl @@ -100,7 +100,13 @@ sub runConfig { elsif ($line =~ /choice\[(.*)\]: ###$/) { my $answer = ""; foreach my $name (keys %choices) { - $answer = $choices{$name} if ($answers{$name} || "") eq "y"; + if (($answers{$name} || "") eq "y") { + if ($answer eq "") { + $answer = $choices{$name}; + } else { + die "conflicting answers!" + } + } } print STDERR "CHOICE: $1, ANSWER: $answer\n" if $debug; print OUT "$answer\n" if $1 =~ /-/; diff --git a/pkgs/os-specific/linux/kernel/kernels-org.json b/pkgs/os-specific/linux/kernel/kernels-org.json index a44bc74bacac..43db58a4181e 100644 --- a/pkgs/os-specific/linux/kernel/kernels-org.json +++ b/pkgs/os-specific/linux/kernel/kernels-org.json @@ -38,5 +38,10 @@ "version": "7.0.12", "hash": "sha256:1nk5lans9qg1avmmcwyadfps43d3hyjz9a5gjyvsc77w3sjckvap", "lts": false + }, + "7.1": { + "version": "7.1", + "hash": "sha256:18344l5fv3hgsqjrjr3dgg96lll7f294qq11lg40sydygxwl87v9", + "lts": false } } diff --git a/pkgs/tools/networking/iroh/default.nix b/pkgs/tools/networking/iroh/default.nix index 8c12e79e4def..df44ce53c60b 100644 --- a/pkgs/tools/networking/iroh/default.nix +++ b/pkgs/tools/networking/iroh/default.nix @@ -45,7 +45,6 @@ let ]; maintainers = with lib.maintainers; [ andreashgk - cameronfyfe ]; mainProgram = name; }; diff --git a/pkgs/top-level/aliases.nix b/pkgs/top-level/aliases.nix index fdcfe380b116..dac97a477fa5 100644 --- a/pkgs/top-level/aliases.nix +++ b/pkgs/top-level/aliases.nix @@ -1277,6 +1277,7 @@ mapAliases { linux_6_18 = linuxKernel.kernels.linux_6_18; linux_6_19 = linuxKernel.kernels.linux_6_19; linux_7_0 = linuxKernel.kernels.linux_7_0; + linux_7_1 = linuxKernel.kernels.linux_7_1; linux_ham = throw "linux_ham has been removed in favour of the standard kernel packages"; # Added 2025-06-24 linux_hardened = throw "linux_hardened has been removed due to lack of maintenance"; # Added 2026-03-18 linux_latest-libre = throw "linux_latest_libre has been removed due to lack of maintenance"; # Added 2025-10-01 @@ -1312,6 +1313,7 @@ mapAliases { linuxPackages_6_18 = linuxKernel.packages.linux_6_18; linuxPackages_6_19 = linuxKernel.packages.linux_6_19; linuxPackages_7_0 = linuxKernel.packages.linux_7_0; + linuxPackages_7_1 = linuxKernel.packages.linux_7_1; linuxPackages_ham = throw "linux_ham has been removed in favour of the standard kernel packages"; # Added 2025-06-24 linuxPackages_hardened = throw "linuxPackages_hardened has been removed due to lack of maintenance"; # Added 2026-03-18 linuxPackages_latest-libre = throw "linux_latest_libre has been removed due to lack of maintenance"; # Added 2025-10-01 diff --git a/pkgs/top-level/linux-kernels.nix b/pkgs/top-level/linux-kernels.nix index ddf456a49931..ccd896e616ee 100644 --- a/pkgs/top-level/linux-kernels.nix +++ b/pkgs/top-level/linux-kernels.nix @@ -100,6 +100,14 @@ in ]; }; + linux_7_1 = callPackage ../os-specific/linux/kernel/mainline.nix { + branch = "7.1"; + kernelPatches = [ + kernelPatches.bridge_stp_helper + kernelPatches.request_key_helper + ]; + }; + linux_testing = let testing = callPackage ../os-specific/linux/kernel/mainline.nix { @@ -667,6 +675,7 @@ in linux_6_12 = recurseIntoAttrs (packagesFor kernels.linux_6_12); linux_6_18 = recurseIntoAttrs (packagesFor kernels.linux_6_18); linux_7_0 = recurseIntoAttrs (packagesFor kernels.linux_7_0); + linux_7_1 = recurseIntoAttrs (packagesFor kernels.linux_7_1); } // lib.optionalAttrs config.allowAliases { linux_4_19 = throw "linux 4.19 was removed because it will reach its end of life within 24.11"; # Added 2024-09-21 @@ -735,7 +744,7 @@ in packageAliases = { linux_default = packages.linux_6_18; # Update this when adding the newest kernel major version! - linux_latest = packages.linux_7_0; + linux_latest = packages.linux_7_1; } // lib.optionalAttrs config.allowAliases { linux_mptcp = throw "'linux_mptcp' has been moved to https://github.com/teto/mptcp-flake"; diff --git a/pkgs/top-level/python-aliases.nix b/pkgs/top-level/python-aliases.nix index a7d277f88617..4d57652c4e26 100644 --- a/pkgs/top-level/python-aliases.nix +++ b/pkgs/top-level/python-aliases.nix @@ -102,6 +102,7 @@ mapAliases { audio-metadata = throw "'audio-metadata' has been removed as it's unmaintained since 2020"; # Added 2026-03-12 autotrash = throw "'autotrash' has been renamed to/replaced by 'super.pkgs.autotrash'"; # Converted to throw 2025-10-29 av_13 = throw "'av_13' has been renamed to/replaced by 'av'"; # Added 2026-02-01 + awesome-slugify = throw "'awesome-slugify' has been removed as it was unmaintained upstream"; # Added 2026-06-14 Babel = throw "'Babel' has been renamed to/replaced by 'babel'"; # Converted to throw 2025-10-29 backports-functools-lru-cache = throw "'backports-functools-lru-cache' has been removed from nixpkgs as it was not longer used in python2"; # Added 2026-01-14 backports_shutil_get_terminal_size = throw "'backports_shutil_get_terminal_size' has been renamed to/replaced by 'backports-shutil-get-terminal-size'"; # Converted to throw 2025-10-29 @@ -242,6 +243,7 @@ mapAliases { fvs = throw "'fvs' has been removed due to being unused"; # Added 2026-05-23 garminconnect-ha = throw "'garminconnect-ha' has been renamed to/replaced by 'garminconnect'"; # Converted to throw 2025-10-29 GeoIP = throw "'GeoIP' has been renamed to/replaced by 'geoip'"; # Converted to throw 2025-10-29 + ghidra-bridge = throw "'ghidra-bridge' has been removed as it was unmaintained upstream"; # Added 2026-04-05 github3_py = throw "'github3_py' has been renamed to/replaced by 'github3-py'"; # Converted to throw 2025-10-29 GitPython = throw "'GitPython' has been renamed to/replaced by 'gitpython'"; # Converted to throw 2025-10-29 google_api_python_client = throw "'google_api_python_client' has been renamed to/replaced by 'google-api-python-client'"; # Converted to throw 2025-10-29 @@ -286,6 +288,7 @@ mapAliases { jaraco_stream = throw "'jaraco_stream' has been renamed to/replaced by 'jaraco-stream'"; # Converted to throw 2025-10-29 jaraco_text = throw "'jaraco_text' has been renamed to/replaced by 'jaraco-text'"; # Converted to throw 2025-10-29 JayDeBeApi = throw "'JayDeBeApi' has been renamed to/replaced by 'jaydebeapi'"; # Converted to throw 2025-10-29 + jfx-bridge = throw "'jfx-bridge' has been removed as it was unmaintained upstream"; # Added 2026-04-05 jinja2_pluralize = throw "'jinja2_pluralize' has been renamed to/replaced by 'jinja2-pluralize'"; # Converted to throw 2025-10-29 jinja2_time = throw "'jinja2_time' has been renamed to/replaced by 'jinja2-time'"; # Converted to throw 2025-10-29 JPype1 = throw "'JPype1' has been renamed to/replaced by 'jpype1'"; # Converted to throw 2025-10-29 @@ -437,6 +440,7 @@ mapAliases { pygls_2 = pygls; # added 2026-01-05 pygtk = throw "pygtk has been removed because it was not supported by python3"; # Added 2026-01-14 pyheif = throw "pyheif has been removed due to lack of upstream maintenance and breakage. Use `pillow-heif` instead."; # added 2025-09-17 + pyhidra = throw "'pyhidra' has been removed as it was incorporated into upstream and renamed 'pyghidra'"; # Added 2026-04-21 pyhiveapi = throw "'pyhiveapi' has been renamed to/replaced by 'pyhive-integration'"; # Converted to throw 2025-10-29 pyialarmxr = throw "'pyialarmxr' has been renamed to/replaced by 'pyialarmxr-homeassistant'"; # Converted to throw 2025-10-29 PyICU = throw "'PyICU' has been renamed to/replaced by 'pyicu'"; # Converted to throw 2025-10-29 diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix index cb255c8fb62c..11071cbaf5cc 100644 --- a/pkgs/top-level/python-packages.nix +++ b/pkgs/top-level/python-packages.nix @@ -1343,8 +1343,6 @@ self: super: with self; { awacs = callPackage ../development/python-modules/awacs { }; - awesome-slugify = callPackage ../development/python-modules/awesome-slugify { }; - awesomeversion = callPackage ../development/python-modules/awesomeversion { }; awkward = callPackage ../development/python-modules/awkward { }; @@ -4905,6 +4903,8 @@ self: super: with self; { e3-testsuite = callPackage ../development/python-modules/e3-testsuite { }; + e3nn = callPackage ../development/python-modules/e3nn { }; + eagle100 = callPackage ../development/python-modules/eagle100 { }; earn-e-p1 = callPackage ../development/python-modules/earn-e-p1 { }; @@ -6354,8 +6354,6 @@ self: super: with self; { ghdiff = callPackage ../development/python-modules/ghdiff { }; - ghidra-bridge = callPackage ../development/python-modules/ghidra-bridge { }; - ghmap = callPackage ../development/python-modules/ghmap { }; ghome-foyer-api = callPackage ../development/python-modules/ghome-foyer-api { }; @@ -8043,8 +8041,6 @@ self: super: with self; { jenkinsapi = callPackage ../development/python-modules/jenkinsapi { }; - jfx-bridge = callPackage ../development/python-modules/jfx-bridge { }; - jh2 = callPackage ../development/python-modules/jh2 { }; jianpu-ly = callPackage ../development/python-modules/jianpu-ly { }; @@ -9576,6 +9572,8 @@ self: super: with self; { macaddress = callPackage ../development/python-modules/macaddress { }; + mace-torch = callPackage ../development/python-modules/mace-torch { }; + macfsevents = callPackage ../development/python-modules/macfsevents { }; macholib = callPackage ../development/python-modules/macholib { }; @@ -9750,6 +9748,8 @@ self: super: with self; { matrix-nio = callPackage ../development/python-modules/matrix-nio { }; + matscipy = callPackage ../development/python-modules/matscipy { }; + matter-ble-proxy = callPackage ../development/python-modules/matter-ble-proxy { }; matter-python-client = callPackage ../development/python-modules/matter-python-client { }; @@ -12052,6 +12052,8 @@ self: super: with self; { opt-einsum = callPackage ../development/python-modules/opt-einsum { }; + opt-einsum-fx = callPackage ../development/python-modules/opt-einsum-fx { }; + optax = callPackage ../development/python-modules/optax { }; optiland = callPackage ../development/python-modules/optiland { }; @@ -14254,8 +14256,6 @@ self: super: with self; { pyhibp = callPackage ../development/python-modules/pyhibp { }; - pyhidra = callPackage ../development/python-modules/pyhidra { }; - pyhik = callPackage ../development/python-modules/pyhik { }; pyhive-integration = callPackage ../development/python-modules/pyhive-integration { }; @@ -15793,6 +15793,8 @@ self: super: with self; { pytest-subtesthack = callPackage ../development/python-modules/pytest-subtesthack { }; + pytest-subtests = callPackage ../development/python-modules/pytest-subtests { }; + pytest-sugar = callPackage ../development/python-modules/pytest-sugar { }; pytest-tap = callPackage ../development/python-modules/pytest-tap { }; @@ -16021,6 +16023,8 @@ self: super: with self; { python-homewizard-energy = callPackage ../development/python-modules/python-homewizard-energy { }; + python-hostlist = callPackage ../development/python-modules/python-hostlist { }; + python-hosts = callPackage ../development/python-modules/python-hosts { }; python-hpilo = callPackage ../development/python-modules/python-hpilo { }; @@ -19905,6 +19909,8 @@ self: super: with self; { torch-einops-utils = callPackage ../development/python-modules/torch-einops-utils { }; + torch-ema = callPackage ../development/python-modules/torch-ema { }; + torch-geometric = callPackage ../development/python-modules/torch-geometric { }; torch-memory-saver = callPackage ../development/python-modules/torch-memory-saver { };