diff --git a/maintainers/maintainer-list.nix b/maintainers/maintainer-list.nix index f07b99ed6efa..1d87bbb89e3d 100644 --- a/maintainers/maintainer-list.nix +++ b/maintainers/maintainer-list.nix @@ -18345,6 +18345,12 @@ githubId = 15896005; name = "Vladyslav Burzakovskyy"; }; + mrsmoer = { + email = "mrsmoer@protonmail.com"; + github = "MrSmoer"; + githubId = 66489839; + name = "MrSmör"; + }; MrSom3body = { email = "nix@sndh.dev"; matrix = "@mrsom3body:matrix.org"; diff --git a/nixos/modules/programs/tsm-client.nix b/nixos/modules/programs/tsm-client.nix index 8765c809fd1a..142fd9256045 100644 --- a/nixos/modules/programs/tsm-client.nix +++ b/nixos/modules/programs/tsm-client.nix @@ -71,7 +71,7 @@ let { freeformType = attrsOf (either scalarType (listOf scalarType)); # Client system-options file directives are explained here: - # https://www.ibm.com/docs/en/storage-protect/8.1.27?topic=commands-processing-options + # https://www.ibm.com/docs/en/storage-protect/8.2.1?topic=utilities-processing-options options.servername = mkOption { type = servernameType; default = name; diff --git a/nixos/modules/services/backup/tsm.nix b/nixos/modules/services/backup/tsm.nix index 7322f6175064..d2c9afd55f84 100644 --- a/nixos/modules/services/backup/tsm.nix +++ b/nixos/modules/services/backup/tsm.nix @@ -89,7 +89,7 @@ in environment.HOME = "/var/lib/tsm-backup"; serviceConfig = { # for exit status description see - # https://www.ibm.com/docs/en/storage-protect/8.1.27?topic=clients-client-return-codes + # https://www.ibm.com/docs/en/storage-protect/8.2.1?topic=clients-client-return-codes SuccessExitStatus = "4 8"; # The `-se` option must come after the command. # The `-optfile` option suppresses a `dsm.opt`-not-found warning. diff --git a/nixos/tests/tsm-client-gui.nix b/nixos/tests/tsm-client-gui.nix index 7e3dbb6f116a..953fb91b6336 100644 --- a/nixos/tests/tsm-client-gui.nix +++ b/nixos/tests/tsm-client-gui.nix @@ -51,7 +51,6 @@ # "Connection Information" dialog box machine.wait_for_window("Connection Information") machine.wait_for_text("SOME-NODE") - machine.wait_for_text("${pkgs.tsm-client.passthru.unwrapped.version}") machine.shutdown() ''; diff --git a/pkgs/by-name/es/esphome/package.nix b/pkgs/by-name/es/esphome/package.nix index 50add263db9a..99dc2e99f781 100644 --- a/pkgs/by-name/es/esphome/package.nix +++ b/pkgs/by-name/es/esphome/package.nix @@ -33,14 +33,14 @@ let in python.pkgs.buildPythonApplication rec { pname = "esphome"; - version = "2026.3.2"; + version = "2026.3.3"; pyproject = true; src = fetchFromGitHub { owner = "esphome"; repo = "esphome"; tag = version; - hash = "sha256-0v9K2zXIfp5Ka/DJarnVB4kmhgXh95Yvzm8Ts72eCZE="; + hash = "sha256-yMPHz6IZIGM4oJw1wspEL3lIIiPv4WZALUJ7J1UWukY="; }; patches = [ diff --git a/pkgs/by-name/me/me3/package.nix b/pkgs/by-name/me/me3/package.nix new file mode 100644 index 000000000000..5cb05222d9bc --- /dev/null +++ b/pkgs/by-name/me/me3/package.nix @@ -0,0 +1,103 @@ +{ + fetchFromGitHub, + lib, + makeWrapper, + pkgsCross, + replaceVars, + rustPlatform, + steam, + symlinkJoin, +}: + +let + version = "0.11.0"; + + # me3 creates a pipe under /tmp needed by the compat tool subprocess + steam-run = + (steam.override { + privateTmp = false; + }).run-free; + + src = fetchFromGitHub { + owner = "garyttierney"; + repo = "me3"; + tag = "v${version}"; + sha256 = "sha256-XyeMVPGzNF2syipLz9HPtUg7lhxcEq434FnRH3Ax+HM="; + }; + + cargoHash = "sha256-T1HeYe9FUC5oy/SDeEd6vV4D9YIGIXMkbzf43gRNyt8="; + + me3-cli = rustPlatform.buildRustPackage (final: { + inherit cargoHash version src; + pname = "me3-cli"; + + # Wrap the compat tool subprocess to support proton's pressure vessel + patches = [ + (replaceVars ./steam-run.patch { + steamRun = lib.getExe steam-run; + }) + ]; + + cargoBuildFlags = [ + "--package" + "me3-cli" + ]; + + cargoTestFlags = final.cargoBuildFlags; + + postInstall = '' + install -Dm444 distribution/linux/me3-launch.desktop \ + $out/share/applications/me3-launch.desktop + install -Dm444 distribution/linux/me3.xml \ + $out/share/mime/packages/me3.xml + install -Dm444 distribution/assets/me3.png \ + $out/share/icons/hicolor/128x128/apps/me3.png + ''; + }); + + me3-windows = pkgsCross.mingwW64.rustPlatform.buildRustPackage (final: { + inherit cargoHash version src; + pname = "me3-windows"; + + CARGO_TARGET_X86_64_PC_WINDOWS_GNU_RUSTFLAGS = "-Clink-arg=-lmcfgthread"; + RUSTC_BOOTSTRAP = 1; + + cargoBuildFlags = [ + "--package" + "me3-launcher" + "--package" + "me3-mod-host" + ]; + + cargoTestFlags = final.cargoBuildFlags; + + # Remove useless libme3_mod_host.dll.a + postInstall = '' + rm -r $out/lib + ''; + }); +in +symlinkJoin { + inherit version; + name = "me3"; + + paths = [ + me3-cli + me3-windows + ]; + + nativeBuildInputs = [ makeWrapper ]; + + postBuild = '' + wrapProgram $out/bin/me3 \ + --set WINEPATH $out/bin \ + --add-flags "--windows-binaries-dir $out/bin" + ''; + + meta = { + description = "Framework for modding and instrumenting games."; + homepage = "https://github.com/garyttierney/me3"; + license = lib.licenses.mit; + maintainers = [ lib.maintainers.icedborn ]; + }; +} diff --git a/pkgs/by-name/me/me3/steam-run.patch b/pkgs/by-name/me/me3/steam-run.patch new file mode 100644 index 000000000000..d9586417afd1 --- /dev/null +++ b/pkgs/by-name/me/me3/steam-run.patch @@ -0,0 +1,17 @@ +--- a/crates/cli/src/commands/launch/strategy/compat_tool.rs ++++ b/crates/cli/src/commands/launch/strategy/compat_tool.rs +@@ -260,10 +260,10 @@ + tool = parent_tool; + } + +- let mut command = Command::new( +- args.pop_front() +- .ok_or_eyre("Compat Tool produced invalid command")?, +- ); ++ let program = args.pop_front() ++ .ok_or_eyre("Compat Tool produced invalid command")?; ++ let mut command = Command::new("@steamRun@"); ++ command.arg(program); + command.args(args); + command.arg(exe); + command.arg("--"); diff --git a/pkgs/by-name/ob/oboete/package.nix b/pkgs/by-name/ob/oboete/package.nix index 088dd0f2f246..bf72e698461b 100644 --- a/pkgs/by-name/ob/oboete/package.nix +++ b/pkgs/by-name/ob/oboete/package.nix @@ -11,16 +11,18 @@ rustPlatform.buildRustPackage (finalAttrs: { pname = "oboete"; - version = "0.2.3"; + version = "0.2.4"; + + strictDeps = true; src = fetchFromGitHub { owner = "mariinkys"; repo = "oboete"; tag = finalAttrs.version; - hash = "sha256-Ydl6gVlE/6dN/qp348wc626TSG8FIBv2U7H/FVahrOs="; + hash = "sha256-QP0ZK6E3rz9WCvglJek8S25O8X5b8iyPAk7eph4lqMg="; }; - cargoHash = "sha256-R8y0UpSY8K5yMZK719eXb+R9ABllpRV/QoAcISV138w="; + cargoHash = "sha256-ZEve4uKhbcps8FFRGizA6tedz2aH0j4gKTi3HauxpFE="; nativeBuildInputs = [ libcosmicAppHook @@ -48,7 +50,7 @@ rustPlatform.buildRustPackage (finalAttrs: { meta = { description = "Simple flashcards application for the COSMIC™ desktop written in Rust"; homepage = "https://github.com/mariinkys/oboete"; - changelog = "https://github.com/mariinkys/oboete/releases/tag/${finalAttrs.version}"; + changelog = "https://github.com/mariinkys/oboete/releases/tag/${finalAttrs.src.tag}"; license = lib.licenses.gpl3Only; maintainers = with lib.maintainers; [ GaetanLepage diff --git a/pkgs/by-name/ts/tsm-client/package.nix b/pkgs/by-name/ts/tsm-client/package.nix index 25cc4b8cdf18..c8ea3e004466 100644 --- a/pkgs/by-name/ts/tsm-client/package.nix +++ b/pkgs/by-name/ts/tsm-client/package.nix @@ -6,6 +6,8 @@ fetchurl, autoPatchelfHook, rpmextract, + brotli, + libnghttp2, libxcrypt-legacy, zlib, lvm2, # LVM image backup and restore functions (optional) @@ -44,7 +46,7 @@ # point to this derivations `/dsmi_dir` directory symlink. # Other environment variables might be necessary, # depending on local configuration or usage; see: -# https://www.ibm.com/docs/en/storage-protect/8.1.27?topic=solaris-set-api-environment-variables +# https://www.ibm.com/docs/en/storage-protect/8.2.1?topic=solaris-set-api-environment-variables let @@ -91,10 +93,10 @@ let unwrapped = stdenv.mkDerivation (finalAttrs: { pname = "tsm-client-unwrapped"; - version = "8.1.27.1"; + version = "8.2.1.0"; src = fetchurl { url = mkSrcUrl finalAttrs.version; - hash = "sha512-s7arnrbZoNvU3NX53coD8ugw7+cJQswWX0qctVZqWcSHN0FgexXYmRq3kt90KfjShMjcOGAHJhqCKKmukbIYjg=="; + hash = "sha512-Hlm4sk78I/+hVKwGsSDpwIihMqMeAlLtu4H/DLo2NVNMQnixZTYRch69hAR1PNaSS7qz8/oiI51AYTc6+JYdtA=="; }; inherit meta passthru; @@ -103,6 +105,8 @@ let rpmextract ]; buildInputs = [ + brotli + libnghttp2 libxcrypt-legacy stdenv.cc.cc zlib diff --git a/pkgs/development/python-modules/django/6.nix b/pkgs/development/python-modules/django/6.nix index 67c1fad2798a..e4c49a9fb19f 100644 --- a/pkgs/development/python-modules/django/6.nix +++ b/pkgs/development/python-modules/django/6.nix @@ -42,7 +42,7 @@ buildPythonPackage (finalAttrs: { pname = "django"; - version = "6.0.3"; + version = "6.0.4"; pyproject = true; disabled = pythonOlder "3.12"; @@ -51,7 +51,7 @@ buildPythonPackage (finalAttrs: { owner = "django"; repo = "django"; tag = finalAttrs.version; - hash = "sha256-FXaK9e2/grRH0c4r/t+Sm9uyYHlSUx6S0klnYTW/8KQ="; + hash = "sha256-zm++A7gZji4W4BAB1XXtqlXKjUMBbYmaEz9RGhx3RkI="; }; patches = [ diff --git a/pkgs/development/python-modules/libdebug/default.nix b/pkgs/development/python-modules/libdebug/default.nix new file mode 100644 index 000000000000..20b54dde82a8 --- /dev/null +++ b/pkgs/development/python-modules/libdebug/default.nix @@ -0,0 +1,71 @@ +{ + lib, + buildPythonPackage, + cmake, + elfutils, + fetchFromGitHub, + libdwarf, + libiberty, + nanobind, + ninja, + pkg-config, + prompt-toolkit, + psutil, + pyelftools, + requests, + scikit-build-core, + typing-extensions, + writableTmpDirAsHomeHook, + zlib, + zstd, +}: + +buildPythonPackage (finalAttrs: { + pname = "libdebug"; + version = "0.9.0"; + + src = fetchFromGitHub { + owner = "libdebug"; + repo = "libdebug"; + tag = finalAttrs.version; + + hash = "sha256-J0ETzqAGufsZyW+XDhJCKwX1rrmDBwlAicvBb1AAiIQ="; + }; + + dontUseCmakeConfigure = true; + pyproject = true; + build-system = [ scikit-build-core ]; + + buildInputs = [ + libdwarf + elfutils + zstd + libiberty + zlib + ]; + + dependencies = [ + psutil + pyelftools + requests + prompt-toolkit + nanobind + typing-extensions + ]; + + nativeBuildInputs = [ + pkg-config + cmake + ninja + ]; + + nativeCheckInputs = [ writableTmpDirAsHomeHook ]; + + pythonImportsCheck = [ "libdebug" ]; + meta = { + homepage = "https://github.com/libdebug/libdebug"; + description = "Programmatic debugging of userland Linux binaries"; + maintainers = with lib.maintainers; [ mrsmoer ]; + license = lib.licenses.mit; + }; +}) diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix index 8a21ae262dab..9a90dce9d576 100644 --- a/pkgs/top-level/python-packages.nix +++ b/pkgs/top-level/python-packages.nix @@ -8676,6 +8676,8 @@ self: super: with self; { libcst = callPackage ../development/python-modules/libcst { }; + libdebug = callPackage ../development/python-modules/libdebug { inherit (pkgs) zstd; }; + libdnf = lib.pipe pkgs.libdnf [ toPythonModule (