Merge remote-tracking branch 'origin/master' into staging-next

K900 b5531da4 ff43d515

Changed files
+205 -67
ci
maintainers
nixos
modules
services
security
x11
desktop-managers
pkgs
by-name
ba
bazel-gazelle
ca
camunda-modeler
cl
claude-code
clj-kondo
e-
e-imzo
fa
fabric-installer
gi
git-unroll
go
go-ethereum
gr
grandorgue
jd
jdt-language-server
re
rewaita
sn
st
storm
xj
xjobs
yt
yt-dlp
zs
zsh-prezto
development
compilers
rust
libraries
qtpbfimageplugin
python-modules
pylance
tools
wasmedge
-10
ci/github-script/check-cherry-picks.md
···
-
This report is automatically generated by the `PR / Check / cherry-pick` CI workflow.
-
-
Some of the commits in this PR require the author's and reviewer's attention.
-
-
Please follow the [backporting guidelines](https://github.com/NixOS/nixpkgs/blob/master/CONTRIBUTING.md#how-to-backport-pull-requests) and cherry-pick with the `-x` flag.
-
This requires changes to the unstable `master` and `staging` branches first, before backporting them.
-
-
Occasionally, it is not possible to cherry-pick exactly the same patch.
-
This most frequently happens when resolving merge conflicts or when updating minor versions of packages which have already advanced to the next major on unstable.
-
If you need to merge this PR despite the warnings, please [dismiss](https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/reviewing-changes-in-pull-requests/dismissing-a-pull-request-review) this review shortly before merging.
+42 -8
ci/github-script/commits.js
···
pull_number
async function extract({ sha, commit }) {
+
const noCherryPick = Array.from(
+
commit.message.matchAll(/^Not-cherry-picked-because: (.*)$/g)
+
).at(0)
+
+
if (noCherryPick)
+
return {
+
sha,
+
commit,
+
severity: 'important',
+
message: `${sha} is not a cherry-pick, because: ${noCherryPick[1]}. Please review this commit manually.`,
+
type: 'no-cherry-pick',
+
}
+
// Using the last line with "cherry" + hash, because a chained backport
// can result in multiple of those lines. Only the last one counts.
-
const match = Array.from(
+
const cherry = Array.from(
commit.message.matchAll(/cherry.*([0-9a-f]{40})/g),
).at(-1)
-
if (!match)
+
if (!cherry)
return {
sha,
commit,
severity: 'warning',
message: `Couldn't locate original commit hash in message of ${sha}.`,
+
type: 'no-commit-hash',
}
-
const original_sha = match[1]
+
const original_sha = cherry[1]
let branches
try {
···
colored_diff,
severity: 'warning',
message: `Difference between ${sha} and original ${original_sha} may warrant inspection.`,
+
type: 'diff',
}
}
···
if (results.some(({ severity }) => severity == 'error'))
process.exitCode = 1
-
core.summary.addRaw(
-
await readFile(join(__dirname, 'check-cherry-picks.md'), 'utf-8'),
-
true,
-
)
+
core.summary.addRaw('This report is automatically generated by the `PR / Check / cherry-pick` CI workflow.', true)
+
core.summary.addEOL()
+
core.summary.addRaw("Some of the commits in this PR require the author's and reviewer's attention.", true)
+
core.summary.addEOL()
+
+
if (results.some(({ type }) => type === 'no-commit-hash')) {
+
core.summary.addRaw('Please follow the [backporting guidelines](https://github.com/NixOS/nixpkgs/blob/master/CONTRIBUTING.md#how-to-backport-pull-requests) and cherry-pick with the `-x` flag.', true)
+
core.summary.addRaw('This requires changes to the unstable `master` and `staging` branches first, before backporting them.', true)
+
core.summary.addEOL()
+
core.summary.addRaw('Occasionally, commits are not cherry-picked at all, for example when updating minor versions of packages which have already advanced to the next major on unstable.', true)
+
core.summary.addRaw('These commits can optionally be marked with a `Not-cherry-picked-because: <reason>` footer.', true)
+
core.summary.addEOL()
+
}
+
+
if (results.some(({ type }) => type === 'diff')) {
+
core.summary.addRaw('Sometimes it is not possible to cherry-pick exactly the same patch.', true)
+
core.summary.addRaw('This most frequently happens when resolving merge conflicts.', true)
+
core.summary.addRaw('The range-diff will help to review the resolution of conflicts.', true)
+
core.summary.addEOL()
+
}
+
+
core.summary.addRaw('If you need to merge this PR despite the warnings, please [dismiss](https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/reviewing-changes-in-pull-requests/dismissing-a-pull-request-review) this review shortly before merging.', true)
+
results.forEach(({ severity, message, diff }) => {
if (severity == 'info') return
···
// Whether this is intended or just an implementation detail is unclear.
core.summary.addRaw('<blockquote>')
core.summary.addRaw(
-
`\n\n[!${severity == 'warning' ? 'WARNING' : 'CAUTION'}]`,
+
`\n\n[!${({ important: 'IMPORTANT', warning: 'WARNING', error: 'CAUTION' })[severity]}]`,
true,
)
core.summary.addRaw(`${message}`, true)
+12
maintainers/maintainer-list.nix
···
githubId = 31864305;
name = "William Hai";
};
+
bahrom04 = {
+
name = "Baxrom Raxmatov";
+
email = "magdiyevbahrom@gmail.com";
+
github = "bahrom04";
+
githubId = 116780481;
+
};
baileylu = {
name = "Luke Bailey";
email = "baileylu@tcd.ie";
···
github = "bellackn";
githubId = 32039602;
keys = [ { fingerprint = "2B46 58FF 887A 8366 F88B BE92 CF83 0BB3 B973 9A6A"; } ];
+
};
+
bemeritus = {
+
name = "Shohrux Rasulov";
+
email = "bemerituss@gmail.com";
+
github = "bemeritus";
+
githubId = 175357618;
};
ben9986 = {
name = "Ben Carmichael";
+10
maintainers/team-list.nix
···
shortName = "coqui-ai TTS";
};
+
uzinfocom = {
+
members = [
+
orzklv
+
bahrom04
+
bemeritus
+
];
+
scope = "Maintain Uzbek Linux state & community packages and modules.";
+
shortName = "Uzinfocom Open Source";
+
};
+
windows = {
members = [
RossSmyth
+1 -1
nixos/modules/services/security/e-imzo.nix
···
};
};
-
meta.maintainers = with lib.maintainers; [ orzklv ];
+
meta.maintainers = lib.teams.uzinfocom.members;
}
+11 -3
nixos/modules/services/x11/desktop-managers/enlightenment.nix
···
{
config,
+
lib,
pkgs,
-
lib,
+
utils,
...
}:
···
e = pkgs.enlightenment;
xcfg = config.services.xserver;
cfg = xcfg.desktopManager.enlightenment;
+
GST_PLUGIN_PATH = lib.makeSearchPathOutput "lib" "lib/gstreamer-1.0" [
pkgs.gst_all_1.gst-plugins-base
pkgs.gst_all_1.gst-plugins-good
···
description = "Enable the Enlightenment desktop environment.";
};
+
environment.enlightenment.excludePackages = mkOption {
+
default = [ ];
+
example = literalExpression "[ pkgs.enlightenment.ephoto ]";
+
type = types.listOf types.package;
+
description = "Which packages Enlightenment should exclude from the default environment";
+
};
};
config = mkIf cfg.enable {
-
environment.systemPackages = with pkgs; [
+
environment.systemPackages = utils.removePackagesByName (with pkgs; [
enlightenment.econnman
enlightenment.efl
enlightenment.enlightenment
···
enlightenment.rage
enlightenment.terminology
xorg.xcursorthemes
-
];
+
]) config.environment.enlightenment.excludePackages;
environment.pathsToLink = [
"/etc/enlightenment"
+2 -2
pkgs/by-name/ba/bazel-gazelle/package.nix
···
buildGoModule rec {
pname = "bazel-gazelle";
-
version = "0.44.0";
+
version = "0.45.0";
src = fetchFromGitHub {
owner = "bazelbuild";
repo = "bazel-gazelle";
rev = "v${version}";
-
hash = "sha256-vkGLzrseERxl0LygFm1zCC7kK7j+pHpTbG2fy4fLztw=";
+
hash = "sha256-ulfZPb3MRIOVt8M6XVuuGKmgOgcglJcWsscj2BiMTpY=";
};
vendorHash = null;
+2 -2
pkgs/by-name/ca/camunda-modeler/package.nix
···
stdenvNoCC.mkDerivation rec {
pname = "camunda-modeler";
-
version = "5.37.0";
+
version = "5.38.0";
src = fetchurl {
url = "https://github.com/camunda/camunda-modeler/releases/download/v${version}/camunda-modeler-${version}-linux-x64.tar.gz";
-
hash = "sha256-YcMe+YBxNYZ9bQzdixckbN5qrCqtaplWCw88i9GAcSA=";
+
hash = "sha256-KiRAsRzIeUc8akizH6zgKCyG55vrYhfWGw572etGgWg=";
};
sourceRoot = "camunda-modeler-${version}-linux-x64";
+4 -4
pkgs/by-name/cl/claude-code/package-lock.json
···
"packages": {
"": {
"dependencies": {
-
"@anthropic-ai/claude-code": "^1.0.80"
+
"@anthropic-ai/claude-code": "^1.0.81"
}
},
"node_modules/@anthropic-ai/claude-code": {
-
"version": "1.0.80",
-
"resolved": "https://registry.npmjs.org/@anthropic-ai/claude-code/-/claude-code-1.0.80.tgz",
-
"integrity": "sha512-OpJb8LZBYuQ21lmT71c65NwUKGtQiva8dyKmCIPWnRIXHDaZ/31zzpDqcxgONUKUiZrnHqoMXwEwWyPyhD0+dA==",
+
"version": "1.0.81",
+
"resolved": "https://registry.npmjs.org/@anthropic-ai/claude-code/-/claude-code-1.0.81.tgz",
+
"integrity": "sha512-kiRgAhQ2vuodkHDAZjuR0aaNchl9SZLq0QF46JKsOw0Ik1eyEN0tdsF++AV//Ub1j4iS1fGIrU10uE7aqFfKYw==",
"license": "SEE LICENSE IN README.md",
"bin": {
"claude": "cli.js"
+3 -3
pkgs/by-name/cl/claude-code/package.nix
···
buildNpmPackage rec {
pname = "claude-code";
-
version = "1.0.80";
+
version = "1.0.81";
nodejs = nodejs_20; # required for sandboxed Nix builds on Darwin
src = fetchzip {
url = "https://registry.npmjs.org/@anthropic-ai/claude-code/-/claude-code-${version}.tgz";
-
hash = "sha256-o7fG0LnTR7fGxq4VP5393tcQZi0JtPOF8Gb2cUAsevA=";
+
hash = "sha256-MTugT72wrsUHQHUYx6HZPoE4kt1krYOhfNSSoOc/GjI=";
};
-
npmDepsHash = "sha256-9eVpQfcdiLyL6LWcBuVrd6XHQC5caZS9m8sNy9kaRyQ=";
+
npmDepsHash = "sha256-1GBwoximrwJX5F7lp5KUXtt6uPABta8FBbYYoJ2Y7x8=";
postPatch = ''
cp ${./package-lock.json} package-lock.json
+2 -2
pkgs/by-name/cl/clj-kondo/package.nix
···
buildGraalvmNativeImage (finalAttrs: {
pname = "clj-kondo";
-
version = "2025.07.26";
+
version = "2025.07.28";
src = fetchurl {
url = "https://github.com/clj-kondo/clj-kondo/releases/download/v${finalAttrs.version}/clj-kondo-${finalAttrs.version}-standalone.jar";
-
sha256 = "sha256-jo8iY8vEtrGTQTV98y89i2OLWW4M3u6hsXZebd7cnUw=";
+
sha256 = "sha256-ioKRFkm+zBAAM7oyR4F6rTHEhViuRNuMXcr1xwnjcms=";
};
extraNativeImageBuildArgs = [
+1 -1
pkgs/by-name/e-/e-imzo/package.nix
···
homepage = "https://e-imzo.soliq.uz";
license = lib.licenses.unfree;
sourceProvenance = with lib.sourceTypes; [ binaryBytecode ];
-
maintainers = with lib.maintainers; [ orzklv ];
+
teams = [ lib.teams.uzinfocom ];
};
})
+2 -2
pkgs/by-name/fa/fabric-installer/package.nix
···
stdenv.mkDerivation rec {
pname = "fabric-installer";
-
version = "1.0.3";
+
version = "1.1.0";
src = fetchurl {
url = "https://maven.fabricmc.net/net/fabricmc/fabric-installer/${version}/fabric-installer-${version}.jar";
-
sha256 = "sha256-OKqCqx74KbeqPyFD/Mk7unBqjhiDW+cx0P3yMdJ0sH8=";
+
sha256 = "sha256-wgxAfVyksRmq6XhH6y+7HTTJKWm2R/u7HeL9NsoAc44=";
};
dontUnpack = true;
+3 -3
pkgs/by-name/gi/git-unroll/package.nix
···
stdenv.mkDerivation (finalAttrs: {
pname = "git-unroll";
-
version = "0-unstable-2024-11-04";
+
version = "0-unstable-2025-08-14";
src = fetchFromGitea {
domain = "codeberg.org";
owner = "gm6k";
repo = "git-unroll";
-
rev = "9243bb8a6a9f6875e21a5c64320b66f7fdaf9b3f";
-
hash = "sha256-1MjbB1EVgmU0HlUibrKOkjmxQ8wseocSJENiAqyHcjU=";
+
rev = "a66aad56af0440e1d6e807518af298264861b2c7";
+
hash = "sha256-Mpc2p+W8PqQ6Os9AJJJwvL00a4cjFKBUTBG5bF+IzL4=";
};
postPatch = ''
+3 -3
pkgs/by-name/go/go-ethereum/package.nix
···
in
buildGoModule rec {
pname = "go-ethereum";
-
version = "1.16.1";
+
version = "1.16.2";
src = fetchFromGitHub {
owner = "ethereum";
repo = "go-ethereum";
rev = "v${version}";
-
hash = "sha256-lsjs/bZhCwfp8OfTES1GDXayjDcg0R8+L0Z3pZ9/Mvs=";
+
hash = "sha256-12bmK9OYYIDBeN52dQElnDaOcWOzwvjpAZmzHH8IHvw=";
};
proxyVendor = true;
-
vendorHash = "sha256-Ggng6EDd5qRqcSbdycfivO8yiQcMOCSZt229JZcOlVs=";
+
vendorHash = "sha256-i1PhF1DFdt2X4faxe5+iYsPIyco0Xb6stOzaCy6JIto=";
doCheck = false;
+2 -2
pkgs/by-name/gr/grandorgue/package.nix
···
stdenv.mkDerivation rec {
pname = "grandorgue";
-
version = "3.15.4-1";
+
version = "3.16.0-1";
src = fetchFromGitHub {
owner = "GrandOrgue";
repo = "grandorgue";
tag = version;
fetchSubmodules = true;
-
hash = "sha256-9H7YpTtv9Y36Nc0WCyRy/ohpOQ3WVUd9gMahnGhANRc=";
+
hash = "sha256-O+gtyf85E/2hV3E4nc489j2EukRRQ49pPaCSB0j68C8=";
};
patches = [ ./darwin-fixes.patch ];
+3 -3
pkgs/by-name/jd/jdt-language-server/package.nix
···
}:
let
-
timestamp = "202506271502";
+
timestamp = "202507311558";
in
stdenv.mkDerivation (finalAttrs: {
pname = "jdt-language-server";
-
version = "1.48.0";
+
version = "1.49.0";
src = fetchurl {
url = "https://download.eclipse.org/jdtls/milestones/${finalAttrs.version}/jdt-language-server-${finalAttrs.version}-${timestamp}.tar.gz";
-
hash = "sha256-sKf6EkDiyvEpbVnqcJxSXUpjH779pJ5xguB+AMHeYsk=";
+
hash = "sha256-o/n7WSH1Jz0Pj+Q2WzY/utG9wuhpkdsxSbLXbxJlvNc=";
};
sourceRoot = ".";
+78
pkgs/by-name/re/rewaita/package.nix
···
+
{
+
lib,
+
python3Packages,
+
fetchFromGitHub,
+
ninja,
+
meson,
+
pkg-config,
+
wrapGAppsHook4,
+
glib,
+
gtk4,
+
desktop-file-utils,
+
appstream-glib,
+
blueprint-compiler,
+
libadwaita,
+
nix-update-script,
+
}:
+
let
+
version = "1.0.1";
+
in
+
python3Packages.buildPythonApplication {
+
pname = "rewaita";
+
inherit version;
+
pyproject = false;
+
+
src = fetchFromGitHub {
+
owner = "SwordPuffin";
+
repo = "Rewaita";
+
tag = "v${version}";
+
hash = "sha256-adSXq+DFw3IQxNuUkP1FcKlIh9h4Zb0tJKswYs3S92E=";
+
};
+
+
# Prevent the app from copying the RO flag of files from /nix/store
+
postPatch = ''
+
substituteInPlace src/interface_to_shell_theme.py \
+
--replace-fail 'shutil.copy2' 'shutil.copyfile'
+
+
substituteInPlace src/window.py \
+
--replace-fail 'shutil.copy' 'shutil.copyfile'
+
'';
+
+
strictDeps = true;
+
+
nativeBuildInputs = [
+
meson
+
ninja
+
pkg-config
+
wrapGAppsHook4
+
glib
+
gtk4
+
desktop-file-utils
+
appstream-glib
+
blueprint-compiler
+
];
+
+
dependencies = with python3Packages; [
+
pygobject3
+
];
+
+
buildInputs = [
+
libadwaita
+
gtk4
+
];
+
+
dontWrapGApps = true;
+
makeWrapperArgs = [ "\${gappsWrapperArgs[@]}" ];
+
+
passthru.updateScript = nix-update-script { };
+
+
meta = {
+
description = "Bring color to Adwaita";
+
homepage = "https://github.com/SwordPuffin/Rewaita";
+
changelog = "https://github.com/SwordPuffin/Rewaita/releases/tag/v${version}";
+
license = lib.licenses.gpl3Plus;
+
mainProgram = "rewaita";
+
platforms = lib.platforms.linux;
+
maintainers = [ lib.maintainers.awwpotato ];
+
};
+
}
+2 -2
pkgs/by-name/sn/snd/package.nix
···
stdenv.mkDerivation rec {
pname = "snd";
-
version = "25.5";
+
version = "25.6";
src = fetchurl {
url = "mirror://sourceforge/snd/snd-${version}.tar.gz";
-
hash = "sha256-IVGaHcsZGEPRk04UdjlYfDRYLHAEzeyhx2HWV3Ks2Bo=";
+
hash = "sha256-Q7JjLpGwGb36b0gWH6qKcM2mEzPYFq4eiY7/cYW+VIQ=";
};
nativeBuildInputs = [
+2 -2
pkgs/by-name/st/storm/package.nix
···
stdenv.mkDerivation (finalAttrs: {
pname = "apache-storm";
-
version = "2.8.1";
+
version = "2.8.2";
name = "${finalAttrs.pname}-${finalAttrs.version}";
src = fetchurl {
url = "mirror://apache/storm/${finalAttrs.name}/${finalAttrs.name}.tar.gz";
-
hash = "sha256-YIHVIlYknR5ZeoZxykshjWXSwYxaZxD7pR9WMKNvAaE=";
+
hash = "sha256-gG2ZruU2Ua5EmVbXYP9DivtPCNwisjhk1SgZXCciPFs=";
};
nativeBuildInputs = [
+2 -2
pkgs/by-name/xj/xjobs/package.nix
···
stdenv.mkDerivation (finalAttrs: {
pname = "xjobs";
-
version = "20250209";
+
version = "20250529";
src = fetchurl {
url = "mirror://sourceforge//xjobs/files/xjobs-${finalAttrs.version}.tgz";
-
hash = "sha256-I7Vu7NunJEE4ioLap+GPnqIG2jfzSx6Wj2dOQmb9vuk=";
+
hash = "sha256-HR7kqx9N5fn8JMKFK0ierAwrCFlkqKo2S/mxQW9UE44=";
};
postPatch = lib.optionalString stdenv.hostPlatform.isDarwin ''
+7 -2
pkgs/by-name/yt/yt-dlp/package.nix
···
# The websites yt-dlp deals with are a very moving target. That means that
# downloads break constantly. Because of that, updates should always be backported
# to the latest stable release.
-
version = "2025.07.21";
+
version = "2025.08.11";
pyproject = true;
src = fetchFromGitHub {
owner = "yt-dlp";
repo = "yt-dlp";
tag = version;
-
hash = "sha256-VNUkCdrzbOwD+iD9BZUQFJlWXRc0tWJAvLnVKNZNPhQ=";
+
hash = "sha256-j7x844MPPFdXYTJiiMnru3CE79A/6JdfJDdh8it9KsU=";
};
+
+
postPatch = ''
+
substituteInPlace yt_dlp/version.py \
+
--replace-fail "UPDATE_HINT = None" 'UPDATE_HINT = "Nixpkgs/NixOS likely already contain an updated version.\n To get it run nix-channel --update or nix flake update in your config directory."'
+
'';
build-system = with python3Packages; [ hatchling ];
+3 -3
pkgs/by-name/zs/zsh-prezto/package.nix
···
stdenv.mkDerivation {
pname = "zsh-prezto";
-
version = "0-unstable-2025-01-10";
+
version = "0-unstable-2025-07-30";
src = fetchFromGitHub {
owner = "sorin-ionescu";
repo = "prezto";
-
rev = "6e564503f1c5e6ddba2bcf5d9065e5872ca207d2";
-
sha256 = "hYuYjSQtt00pU3eqrzN8Crk40NEtCCj1G6XUL89F4xU=";
+
rev = "af383940911fc3192beb6e0fd2566c52bd1ea9ba";
+
sha256 = "UWDOT6ezJ1LepULU2fqDru/sFcuUh41eP3C9ay8x888=";
fetchSubmodules = true;
};
+1
pkgs/development/compilers/rust/rustc.nix
···
python ./x.py --keep-stage=0 --stage=1 install library/std
mkdir -v $out/bin $doc $man
ln -s ${rustc.unwrapped}/bin/{rustc,rustdoc} $out/bin
+
ln -s ${rustc.unwrapped}/libexec $out
rm -rf -v $out/lib/rustlib/{manifest-rust-std-,}${stdenv.hostPlatform.rust.rustcTargetSpec}
ln -s ${rustc.unwrapped}/lib/rustlib/{manifest-rust-std-,}${stdenv.hostPlatform.rust.rustcTargetSpec} $out/lib/rustlib/
echo rust-std-${stdenv.hostPlatform.rust.rustcTargetSpec} >> $out/lib/rustlib/components
+2 -2
pkgs/development/libraries/qtpbfimageplugin/default.nix
···
stdenv.mkDerivation rec {
pname = "qtpbfimageplugin";
-
version = "4.4";
+
version = "4.5";
src = fetchFromGitHub {
owner = "tumic0";
repo = "QtPBFImagePlugin";
tag = version;
-
hash = "sha256-WcqhYDfirMfNtUJBvhZ1559NnJun9OuhhVg6o8IcVGQ=";
+
hash = "sha256-uhlm2ELRsWwm2V87ANKT9LdhUdlbfu1I8K98npryq2I=";
};
nativeBuildInputs = [
+3 -3
pkgs/development/python-modules/pylance/default.nix
···
buildPythonPackage rec {
pname = "pylance";
-
version = "0.32.1";
+
version = "0.33.0";
pyproject = true;
src = fetchFromGitHub {
owner = "lancedb";
repo = "lance";
tag = "v${version}";
-
hash = "sha256-P40m8ak0A2l4zGAYcbvXGidQpIT3+ayERbleWcVuLbE=";
+
hash = "sha256-Oi30laXR58A219B40797jW8wjIhgzPxa/cMYlDIGVVw=";
};
sourceRoot = "${src.name}/python";
···
src
sourceRoot
;
-
hash = "sha256-rCaLREl2LSfpu0vwa1Vx2rQ7phWsGz58RTjo6yfHKLU=";
+
hash = "sha256-i9jr4XfbmEdnj9J0sL/HNkFEF6bz7+jsiOdjKvypIsw=";
};
nativeBuildInputs = [
+2 -2
pkgs/development/tools/wasmedge/default.nix
···
in
llvmPackages.stdenv.mkDerivation (finalAttrs: {
pname = "wasmedge";
-
version = "0.14.1";
+
version = "0.15.0";
src = fetchFromGitHub {
owner = "WasmEdge";
repo = "WasmEdge";
rev = finalAttrs.version;
-
sha256 = "sha256-70vvQGYcer3dosb1ulWO1F4xFwKwfo35l/TFSFa5idM=";
+
sha256 = "sha256-P4syb8v3EY/tHwG8FOvR+kgMew/nwG+pG2weN6172go=";
};
nativeBuildInputs = [