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}
+ ${key}>
+ '';
+
+ 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 { };