Merge master into staging-next

This commit is contained in:
nixpkgs-ci[bot]
2026-05-27 07:28:15 +00:00
committed by GitHub
35 changed files with 450 additions and 267 deletions
+3
View File
@@ -527,3 +527,6 @@ pkgs/by-name/wa/warp-terminal/ @emilytrau @imadnyc @FlameFlag @johnrtitor
# Radicle
/pkgs/build-support/fetchradicle/ @NixOS/radicle
/pkgs/build-support/fetchradiclepatch/ @NixOS/radicle
# Zellij plugins
/pkgs/by-name/ze/zellij/plugins/ @PerchunPak
+2
View File
@@ -197,6 +197,8 @@
- `python3Packages.pikepdf` no longer builds with mupdf support by default, which may be nice in Jupyter and iPython. Build with `withMupdf = true` if this is required.
- `olive-editor` has been dropped as upstream development ceased and no longer builds.
- `python3Packages.django-mdeditor` has been removed, as it was unmaintained upstream and the latest release was vulnerable to a [critical security vulnerability](https://github.com/NixOS/nixpkgs/issues/515462).
- `vicinae` has been updated to v0.20. This includes, among several other breaking changes, a complete overhaul of the configuration system. For update instructions, see the [upstream configuration documentation](https://docs.vicinae.com/config#migration-from-v0-16-x-to-v0-17-x).
+6 -1
View File
@@ -2,7 +2,12 @@
{
name = "containers";
meta.maintainers = with pkgs.lib.maintainers; [ jfly ];
# https://github.com/NixOS/infra/issues/987
# Relies upon /dev/net/tun, which is currently disabled in hydra due to
# security concerns [0].
# There is a PR [1] that will remove the requirement on /dev/net/tun. When/if
# that lands, we can run this test in hydra.
# [0]: https://github.com/NixOS/infra/issues/987#issuecomment-4261612652
# [1]: https://github.com/NixOS/nixpkgs/pull/512268
meta.hydraPlatforms = [ ];
nodes = {
@@ -51,8 +51,6 @@ in
maintainers = [
lib.maintainers.kmein
];
# https://github.com/NixOS/infra/issues/987
hydraPlatforms = [ ];
};
containers = {
@@ -35,6 +35,18 @@ let
env.EMACS_INCLUDE_DIR = "${emacs}/include";
dontSetZigDefaultFlags = true;
doCheck = true;
zigCheckFlags = [
"-Dcpu=baseline"
# See https://github.com/ghostty-org/ghostty/blob/main/PACKAGING.md#build-options
"-Doptimize=ReleaseFast"
];
zigBuildFlags = finalAttrs.zigCheckFlags;
postConfigure = ''
cp -rLT ${finalAttrs.deps} "$ZIG_GLOBAL_CACHE_DIR/p"
chmod -R u+w "$ZIG_GLOBAL_CACHE_DIR/p"
@@ -1058,11 +1058,11 @@
"vendorHash": null
},
"oracle_oci": {
"hash": "sha256-+/7ie5SBYMQ+fEvnrFvVRHnEJ6DGtcjKNzBpsYKItP0=",
"hash": "sha256-AFQV9frUBb8OutvJ0UM5bhMh9IownwQ37iGE1fPmps4=",
"homepage": "https://registry.terraform.io/providers/oracle/oci",
"owner": "oracle",
"repo": "terraform-provider-oci",
"rev": "v8.14.0",
"rev": "v8.15.0",
"spdx": "MPL-2.0",
"vendorHash": null
},
+2 -2
View File
@@ -17,13 +17,13 @@
stdenv.mkDerivation (finalAttrs: {
pname = "brainflow";
version = "5.22.1";
version = "5.22.2";
src = fetchFromGitHub {
owner = "brainflow-dev";
repo = "brainflow";
tag = finalAttrs.version;
hash = "sha256-z2EoWjQfDY8eSP+YMZtY9Um7iwoGTi+9ZGJOEZozPoo=";
hash = "sha256-TOBttlEl7fPiGH+cGEuxozT4S1Jr/X6mKMiMtNU0NXA=";
};
patches = [ ];
+3 -3
View File
@@ -21,13 +21,13 @@
buildNpmPackage rec {
pname = "bruno";
version = "3.3.0";
version = "3.4.2";
src = fetchFromGitHub {
owner = "usebruno";
repo = "bruno";
tag = "v${version}";
hash = "sha256-YVZPXrYfOFd9lUdZ0rwWnbSDO91Bn1vZyO3AwnE2pZE=";
hash = "sha256-eDLHXOKhQBdRWZ9QGAVk4nky8vywYFAjUXCskFTunUo=";
postFetch = ''
${lib.getExe npm-lockfile-fix} $out/package-lock.json
@@ -36,7 +36,7 @@ buildNpmPackage rec {
nodejs = nodejs_22;
npmDepsHash = "sha256-IH2AVyHwMZuyZOUsAP7qoxm5Em32hk90Tp7uvSE9bIE=";
npmDepsHash = "sha256-+wr86nNT9cT7Qy0gUfkFq0xFQaaWCrDTc1tg7A80pk4=";
npmFlags = [ "--legacy-peer-deps" ];
nativeBuildInputs = [
+3 -3
View File
@@ -6,14 +6,14 @@
rustPlatform.buildRustPackage (finalAttrs: {
pname = "cargo-tally";
version = "1.0.73";
version = "1.0.74";
src = fetchCrate {
inherit (finalAttrs) pname version;
hash = "sha256-aYVo/mI4YoohwxXoIL9vpuPN526sPnQMV1PnUqJEO2U=";
hash = "sha256-JZtELsvxOx6FFQ+l8fbhPnR8Tt+sQWV4fGsoS8ue4QY=";
};
cargoHash = "sha256-+TIYJn0BvFBmhVkldOTtAvQv5Uj5sLsJ4OGNH3ic8lU=";
cargoHash = "sha256-Vn5OSJNpwE3rjs+tYX784o1Khrcf4f21dvb8Yn/c9bY=";
meta = {
description = "Graph the number of crates that depend on your crate over time";
+4 -4
View File
@@ -19,16 +19,16 @@
}:
rustPlatform.buildRustPackage (finalAttrs: {
pname = "cosmic-reader";
version = "0-unstable-2026-05-12";
version = "0-unstable-2026-05-20";
src = fetchFromGitHub {
owner = "pop-os";
repo = "cosmic-reader";
rev = "0dde6aed2c51b16e48d2756ceeb0c92620442418";
hash = "sha256-Is6SRWn7BbsT6GRsmPMDxQNzdGxSMXKM3hNVMV2NM7c=";
rev = "c29b3e82c0827133b24dcdb43e1f28a1c7df37a1";
hash = "sha256-YsRXWSf2l8RfIEXKxvJtYWxhma8N2Y+0/HZwhs7d5k8=";
};
cargoHash = "sha256-p0dg5RNXkzbi+/RB5k+jr34RNOp+Irahj0BiFUddfnk=";
cargoHash = "sha256-P9ZC7721MjC/h7sbf7x91WGfMbT4tA46HrYhDgCeiWE=";
separateDebugInfo = true;
__structuredAttrs = true;
+3 -11
View File
@@ -2,7 +2,6 @@
lib,
stdenv,
fetchFromGitHub,
fetchpatch,
makeWrapper,
libaio,
pkg-config,
@@ -17,23 +16,15 @@
stdenv.mkDerivation (finalAttrs: {
pname = "fio";
version = "3.41";
version = "3.42";
src = fetchFromGitHub {
owner = "axboe";
repo = "fio";
tag = "fio-${finalAttrs.version}";
hash = "sha256-m4JskjSc/KHjID+6j/hbhnGzehPxMxA3m2Iyn49bJDU=";
hash = "sha256-v2A2mY0Lvoje632761urfR7h1KHVcGnVDaKOMjexqis=";
};
patches = [
# https://github.com/axboe/fio/pull/2029
(fetchpatch {
url = "https://github.com/axboe/fio/commit/ccce76d2850d6e52da3d7986c950af068fbfe0fd.patch";
hash = "sha256-0jN3q1vTiU6YkdXrcTAOzqRqgu8sW8AWO4KkANi0XKo=";
})
];
buildInputs = [
cunit
python3
@@ -89,6 +80,7 @@ stdenv.mkDerivation (finalAttrs: {
'';
meta = {
changelog = "https://github.com/axboe/fio/releases/tag/${finalAttrs.src.tag}";
description = "Flexible IO Tester - an IO benchmark tool";
homepage = "https://git.kernel.dk/cgit/fio/";
license = lib.licenses.gpl2Plus;
@@ -6,13 +6,13 @@
}:
stdenv.mkDerivation (finalAttrs: {
pname = "arrowcloud-theme";
version = "20260424";
version = "20260525";
src = fetchFromGitHub {
owner = "Arrow-Cloud";
repo = "theme";
tag = "v${finalAttrs.version}";
hash = "sha256-Sdl32MARZnPYKN21xoWu8sa6E/lUloMiRrjpWfkXefc=";
hash = "sha256-HrvDJ5bxVDge6SvUjFwBjy15H9sUHeKiwCX9biPw338=";
};
postInstall = ''
@@ -6,13 +6,13 @@
}:
stdenv.mkDerivation (finalAttrs: {
pname = "itg3encore";
version = "0-unstable-2026-05-18";
version = "0-unstable-2026-05-26";
src = fetchFromGitHub {
owner = "DarkBahamut162";
repo = "itg3encore";
rev = "dbecf5a8a55b41aead224fa21cfdd00d5914b5cf";
hash = "sha256-c026xUb7CA+1h8CfzE2/BOh0scEkG2ZbanVS4FiO0KI=";
rev = "7cb2d0f4c1e36964b041380f9361598b568a0bd5";
hash = "sha256-W9pJ48tiKre+G5xHd9JKHroZecOgkE7E9dRMTp0JoZQ=";
};
postInstall = ''
+4 -4
View File
@@ -25,16 +25,16 @@ let
in
rustPlatform.buildRustPackage (finalAttrs: {
pname = "motrix-next";
version = "3.8.10";
version = "3.9.0";
src = fetchFromGitHub {
owner = "AnInsomniacy";
repo = "motrix-next";
tag = "v${finalAttrs.version}";
hash = "sha256-gDRxeQBw2l04zHbt8SVl49FzUEo3gaDWvY0cUofrL50=";
hash = "sha256-qeI9lXykd1LxX/x7Ls5I7wxJGwsd5X/XOryin6V9zsc=";
};
cargoHash = "sha256-vLcbFlxKHio58i6nNXdpPLdj8ISEo5vdQ1uTqPhx6xA=";
cargoHash = "sha256-nRBDVxHGm5PzfV1GycsIPaUg+A0igKwr6MS9LMZjaOE=";
pnpmDeps = fetchPnpmDeps {
inherit (finalAttrs)
@@ -43,7 +43,7 @@ rustPlatform.buildRustPackage (finalAttrs: {
src
;
inherit pnpm;
hash = "sha256-BjBC7w2I5VCP59H7TqsIpDLvsfOhGVkfUPmvfzyndaI=";
hash = "sha256-6+any7Ptq0KTPoXS4V+wOt+7hyxtOMi4P6xZzj4cAaI=";
fetcherVersion = 3;
};
+2 -2
View File
@@ -14,7 +14,7 @@
nix-update-script,
}:
let
version = "2";
version = "3";
in
python3Packages.buildPythonApplication {
pname = "nucleus";
@@ -25,7 +25,7 @@ python3Packages.buildPythonApplication {
owner = "lo-vely";
repo = "nucleus";
tag = "v${version}";
hash = "sha256-VBKeHKmNYB2P3x+C7HOzXHjkuUqR6GWoHihAXxhV0wY=";
hash = "sha256-0IuFKOadweGYvflCN2c1hvW+X4GzvqG8ZRhPzuVSBr8=";
};
nativeBuildInputs = [
@@ -1,21 +0,0 @@
diff --git a/ext/KDDockWidgets/CMakeLists.txt b/ext/KDDockWidgets/CMakeLists.txt
index 608a2491..d0edc399 100644
--- a/ext/KDDockWidgets/CMakeLists.txt
+++ b/ext/KDDockWidgets/CMakeLists.txt
@@ -160,8 +160,16 @@
include(KDQtInstallPaths) #to set QT_INSTALL_FOO variables
set(${PROJECT_NAME}_DEPS "widgets")
+if(Qt6Core_VERSION VERSION_GREATER_EQUAL "6.10.0")
+ set(QT_NO_PRIVATE_MODULE_WARNING ON)
+ find_package(Qt6 ${QT_MIN_VERSION} NO_MODULE REQUIRED COMPONENTS WidgetsPrivate)
+endif()
if(${PROJECT_NAME}_QTQUICK)
find_package(Qt${Qt_VERSION_MAJOR} NO_MODULE REQUIRED COMPONENTS Quick QuickControls2)
+ if(Qt6Core_VERSION VERSION_GREATER_EQUAL "6.10.0")
+ set(QT_NO_PRIVATE_MODULE_WARNING ON)
+ find_package(Qt6 ${QT_MIN_VERSION} NO_MODULE REQUIRED COMPONENTS QuickPrivate)
+ endif()
add_definitions(-DKDDOCKWIDGETS_QTQUICK)
set(${PROJECT_NAME}_DEPS "${${PROJECT_NAME}_DEPS} quick quickcontrols2")
else()
-104
View File
@@ -1,104 +0,0 @@
{
lib,
stdenv,
fetchFromGitHub,
fetchpatch,
pkg-config,
which,
frei0r,
opencolorio,
ffmpeg_6,
cmake,
openimageio,
openexr,
portaudio,
imath,
qt6,
fmt_10,
}:
let
# https://github.com/olive-editor/olive/issues/2284
# we patch support for 2.3+, but 2.5 fails
openimageio' = (openimageio.override { fmt = fmt_10; }).overrideAttrs (old: rec {
version = "2.4.15.0";
src = (
old.src.override {
tag = "v${version}";
hash = "sha256-I2/JPmUBDb0bw7qbSZcAkYHB2q2Uo7En7ZurMwWhg/M=";
}
);
# robin-map headers require c++17
cmakeFlags = (old.cmakeFlags or [ ]) ++ [ (lib.cmakeFeature "CMAKE_CXX_STANDARD" "17") ];
});
in
stdenv.mkDerivation {
pname = "olive-editor";
version = "0.1.2-unstable-2023-06-12";
src = fetchFromGitHub {
fetchSubmodules = true;
owner = "olive-editor";
repo = "olive";
rev = "2036fffffd0e24b7458e724b9084ae99c9507c64";
hash = "sha256-qee9/WTvTy5jWLowvZJOwAjrqznRhJR+u9dYsnCN/Qs=";
};
cmakeFlags = [
"-DBUILD_QT6=1"
];
patches = [
(fetchpatch {
# Taken from https://github.com/olive-editor/olive/pull/2294.
name = "olive-editor-openimageio-2.3-compat.patch";
url = "https://github.com/olive-editor/olive/commit/311eeb72944f93f873d1cd1784ee2bf423e1e7c2.patch";
hash = "sha256-lswWn4DbXGH1qPvPla0jSgUJQXuqU7LQGHIPoXAE8ag=";
})
# Fix build of `kddockwidgets` with qt6-6.10, adapted from:
# https://github.com/KDAB/KDDockWidgets/pull/615
# https://github.com/KDAB/KDDockWidgets/commit/f2b50fff29bd4b49acdfed3ed8fc42eb0a502032
./olive-editor-kddockwidgets-fix-build-with-qt-6_10.patch
];
# https://github.com/olive-editor/olive/issues/2200
postPatch = ''
substituteInPlace ./app/node/project/serializer/serializer230220.cpp \
--replace 'QStringRef' 'QStringView'
'';
nativeBuildInputs = [
pkg-config
which
cmake
qt6.wrapQtAppsHook
];
buildInputs = [
ffmpeg_6
frei0r
opencolorio
openimageio'
imath
openexr
portaudio
qt6.qtwayland
qt6.qtmultimedia
qt6.qttools
];
meta = {
description = "Professional open-source NLE video editor";
homepage = "https://www.olivevideoeditor.org/";
downloadPage = "https://www.olivevideoeditor.org/download.php";
license = lib.licenses.gpl3;
maintainers = with lib.maintainers; [ balsoft ];
platforms = lib.platforms.unix;
# never built on aarch64-darwin since first introduction in nixpkgs
broken = stdenv.hostPlatform.isDarwin && stdenv.hostPlatform.isAarch64;
mainProgram = "olive-editor";
};
}
+2 -2
View File
@@ -14,7 +14,7 @@
nix-update-script,
}:
let
version = "1.5.2";
version = "1.5.3";
in
python3Packages.buildPythonApplication {
pname = "poliedros";
@@ -25,7 +25,7 @@ python3Packages.buildPythonApplication {
owner = "kriptolix";
repo = "Poliedros";
tag = "v${version}";
hash = "sha256-1xrXR0kY4zq2cafhVgPvWcJD7pEEiZX7tW1/T3Mfe+A=";
hash = "sha256-PZKmxy9Pc0bPCXUmSZL2ETuJbmN3pebMwak3fRuj9AU=";
};
nativeBuildInputs = [
+2 -2
View File
@@ -28,11 +28,11 @@
stdenv.mkDerivation (finalAttrs: {
pname = "reqable";
version = "3.1.1";
version = "3.1.2";
src = fetchurl {
url = "https://github.com/reqable/reqable-app/releases/download/${finalAttrs.version}/reqable-app-linux-x86_64.deb";
hash = "sha256-AGOooC4H4NQ4CsuRsIg3oHh9LEfZL9KRdQGETe7uJm4=";
hash = "sha256-cz9bTFR5WUQNb0ImEe0qShcrRWfv4mcpdBQ3p7RFKeQ=";
};
nativeBuildInputs = [
+3 -3
View File
@@ -9,7 +9,7 @@
buildGoModule (finalAttrs: {
pname = "supabase-cli";
version = "2.100.1";
version = "2.101.0";
__structuredAttrs = true;
@@ -17,13 +17,13 @@ buildGoModule (finalAttrs: {
owner = "supabase";
repo = "cli";
tag = "v${finalAttrs.version}";
hash = "sha256-vCaPZXf4I2f9kJDBDsZcl1q8PIM35NxwuLTeq1aastw=";
hash = "sha256-bsABVdMrRjr0Ndc6q0KgwRwr5PfLZOXMm9rr7RlTf38=";
};
# Supabase is in the process of porting the CLI to TS, for now we continue with the Go cli.
sourceRoot = "${finalAttrs.src.name}/apps/cli-go";
vendorHash = "sha256-MebmiEFfWozJV/zEQyRtjmd9eR2nG3ZXcpyY6lEEQgI=";
vendorHash = "sha256-FMRq2t28Wbxi//eWarjdLauaVz1iIZA2OuF03Y1QOFY=";
ldflags = [
"-s"
+1 -1
View File
@@ -15,7 +15,7 @@ rustPlatform.buildRustPackage (finalAttrs: {
owner = "jrmoulton";
repo = "tmux-sessionizer";
rev = "v${finalAttrs.version}";
hash = "sha256-tJ8aKajSWc62BZ8hb3u+OQtlu04z8Ala5nAK5H4Byp4=";
hash = "sha256-pRf381gxyf4leoEfSZKb5foVYYdVEsxuaTU27mbd46o=";
};
cargoHash = "sha256-AJqlzLr6MDFfPssSFMxslxFFuPVxoQGcuG7sZeu+8pg=";
+3 -3
View File
@@ -11,16 +11,16 @@
rustPlatform.buildRustPackage (finalAttrs: {
pname = "worktrunk";
version = "0.50.0";
version = "0.53.0";
src = fetchFromGitHub {
owner = "max-sixty";
repo = "worktrunk";
tag = "v${finalAttrs.version}";
hash = "sha256-ZCcrTXVVbB61r2tMTFwN3x5+C1i6T/wn28dviGr5rtM=";
hash = "sha256-1qWVELd9+XINjnzNNKeeCR9CxX/0DJVV6TS2cI0KhP4=";
};
cargoHash = "sha256-GTWoOaDjXS1Lu2JuWw1A/RYbPreivLYuhHhoWj4bFHM=";
cargoHash = "sha256-sT9zOGhvsV3QKfRA2wtP4OnWitjxhL0B4guMBdkciE8=";
cargoBuildFlags = [ "--package=worktrunk" ];
+2 -2
View File
@@ -36,13 +36,13 @@
stdenv.mkDerivation (finalAttrs: {
pname = "xemu";
version = "0.8.134";
version = "0.8.135";
src = fetchFromGitHub {
owner = "xemu-project";
repo = "xemu";
tag = "v${finalAttrs.version}";
hash = "sha256-BWOLKa7B1GURG4Zfo65ZQrr54nRaRHYibKv71j6gtiY=";
hash = "sha256-IyOv+OdPHrQxOkYSFDGcf4b051+dTzvAgIm1W9DGhOs=";
nativeBuildInputs = [
git
+27 -88
View File
@@ -1,96 +1,35 @@
{
lib,
stdenv,
rustPlatform,
fetchFromGitHub,
mandown,
installShellFiles,
pkg-config,
curl,
openssl,
writableTmpDirAsHomeHook,
versionCheckHook,
callPackage,
makeBinaryWrapper,
stdenvNoCC,
nix-update-script,
extraPackages ? [ ],
}:
rustPlatform.buildRustPackage (finalAttrs: {
let
unwrapped = callPackage ./unwrapped.nix { };
in
stdenvNoCC.mkDerivation {
inherit (unwrapped) version meta;
pname = "zellij";
version = "0.44.3";
__structuredAttrs = true;
strictDeps = true;
src = fetchFromGitHub {
owner = "zellij-org";
repo = "zellij";
tag = "v${finalAttrs.version}";
hash = "sha256-r8GAOiau4CZPVotFmsBQJOvEu+t0Bu9UCYAOs18i3Kg=";
src = unwrapped;
dontUnpack = true;
nativeBuildInputs = [ makeBinaryWrapper ];
buildPhase = ''
cp -rs --no-preserve=mode "$src" "$out"
wrapProgram "$out/bin/zellij" \
--prefix PATH : '${lib.makeBinPath extraPackages}'
'';
passthru = unwrapped.passthru or { } // {
inherit unwrapped;
updateScript = nix-update-script { attrPath = "zellij.unwrapped"; };
};
# Remove the `vendored_curl` feature in order to link against the libcurl from nixpkgs instead of
# the vendored one
postPatch = ''
substituteInPlace Cargo.toml \
--replace-fail ', "vendored_curl"' ""
'';
cargoHash = "sha256-966FpfSsF9I10SrYe3+YNsfM2kLLv+gd0/Aw8vLp4Lk=";
env.OPENSSL_NO_VENDOR = 1;
nativeBuildInputs = [
mandown
installShellFiles
pkg-config
(lib.getDev curl)
];
buildInputs = [
curl
openssl
];
nativeCheckInputs = [
writableTmpDirAsHomeHook
];
nativeInstallCheckInputs = [
versionCheckHook
];
doInstallCheck = true;
# Ensure that we don't vendor curl, but instead link against the libcurl from nixpkgs
installCheckPhase = lib.optionalString (stdenv.hostPlatform.libc == "glibc") ''
runHook preInstallCheck
ldd "$out/bin/zellij" | grep libcurl.so
runHook postInstallCheck
'';
postInstall = ''
mandown docs/MANPAGE.md > zellij.1
installManPage zellij.1
''
+ lib.optionalString (stdenv.buildPlatform.canExecute stdenv.hostPlatform) ''
installShellCompletion --cmd $pname \
--bash <($out/bin/zellij setup --generate-completion bash) \
--fish <($out/bin/zellij setup --generate-completion fish) \
--zsh <($out/bin/zellij setup --generate-completion zsh)
'';
passthru.updateScript = nix-update-script { };
meta = {
description = "Terminal workspace with batteries included";
homepage = "https://zellij.dev/";
changelog = "https://github.com/zellij-org/zellij/blob/v${finalAttrs.version}/CHANGELOG.md";
license = with lib.licenses; [ mit ];
maintainers = with lib.maintainers; [
therealansh
_0x4A6F
abbe
matthiasbeyer
ryan4yin
];
mainProgram = "zellij";
};
})
}
+83
View File
@@ -0,0 +1,83 @@
# Zellij plugins
Zellij offers a Webassembly / WASI plugin system, allowing plugin developers to
develop plugins in many different languages. Currently, nixpkgs focuses only on
Rust plugins (the majority of them).
Most of the plugins were generated using `nix-init` on [awesome-zellij].
Excluded plugins from that list (should be packaged later anyway):
- [bar-theme-config](https://github.com/allisonhere/zellij-bar-theme-config): not a plugin, but a separate application
- [fzf-zellij](https://github.com/k-kuroguro/fzf-zellij): [closed source](https://github.com/k-kuroguro/fzf-zellij/issues/1)
- [gitpod-zellij](https://github.com/ona-samples/gitpod.zellij): not a plugin, but a separate application?
- [opencode-zellij-namer](https://github.com/24601/opencode-zellij-namer): written in TypeScript, not Rust
- [theme-configurator](https://rosmur.github.io/zellij-theme-configurator/): not a plugin, but a separate application
- [yazelix](https://github.com/luccahuguet/yazelix): written in Nushell
- [zeco](https://github.com/julianbuettner/zeco): not a plugin, but a separate application?
- [zellij-load](https://github.com/Christian-Prather/zellij-load): has daemon, so that needs to be packaged too
- [zellij-vscode-toolkit](https://github.com/atoolz/zellij-vscode-toolkit): not a plugin, but a VSCode plugin
- [zellix](https://github.com/EmeraldPandaTurtle/zellix): written in Nushell
- [zj-quit](https://github.com/cristiand391/zj-quit): archived
- [zj-status-bar](https://github.com/cristiand391/zj-status-bar): archived
- [zrw](https://github.com/ivoronin/zrw): written in Go
Contributions are welcome!
[awesome-zellij]: https://github.com/zellij-org/awesome-zellij/blob/95fce2c02a2dcca33e4972eed3eba64d516693c9/README.md
## Specifying runtime dependencies
Runtime dependencies are packages, that will be used by the plugin inside
a Zellij session. Those are specified in `passthru.runtimeDeps` attribute from
`pkgsBuildBuild` attrset.
Since we compile all plugins on WASI, everything that the plugin gets as
derivation arguments are also get compiled for WASI. However, `coreutils` is
not available on WASI and so is the vast majority of packages. This is why
runtime dependencies need to be specified from `pkgsBuildBuild` attrs set
(which points to the user's system).
```nix
# assume we build the plugin on a x86_64-linux machine
{
lib,
fetchFromGitHub,
rustPlatform,
# these will be compiled for WASI, not x86_64-linux!
just,
bacon,
# but pkgsBuildBuild points to x86_64-linux
pkgsBuildBuild,
}:
rustPlatform.buildRustPackage (finalAttrs: {
pname = "jbz";
version = "0.39.0";
src = fetchFromGitHub {
owner = "nim65s";
repo = "jbz";
tag = "v${finalAttrs.version}";
hash = "sha256-3n3Bv3YDb1+MYJTTAmMkIgGY7kX9IVUoDNV4c/n0Ydo=";
};
cargoHash = "sha256-U+P2LlhmXwaZy2a2eigrg545HTuV1T01jZfUOEUQ5+w=";
# this is the only way how to specify dependencies
passthru.runtimeDeps = with pkgsBuildBuild; [
bacon
just
];
meta = {
description = "Display your Just commands wrapped in Bacon";
homepage = "https://github.com/nim65s/jbz";
changelog = "https://github.com/nim65s/jbz/releases/tag/${finalAttrs.src.tag}";
license = lib.licenses.mit;
maintainers = with lib.maintainers; [ PerchunPak ];
};
})
```
If you are wondering why `pkgsBuildBuild` is named like that, refer to
[the docs on cross-compilation](https://nixos.org/manual/nixpkgs/unstable/#possible-dependency-types).
@@ -0,0 +1,53 @@
{
lib,
callPackage,
nix-update-script,
stdenvNoCC,
zellij,
}:
let
# wrapper for changing the output path from directory to single file
# from /nix/store/...-zsm-static-wasm32-unknown-wasi-0.4.1/bin/zsm.wasm
# to /nix/store/...-zellij-plugin-zsm-0.4.1.wasm
wrapper =
attrName: pkg:
assert lib.assertMsg (
!((lib.hasAttr "runtimeDeps" pkg) && (!lib.hasAttr "runtimeDeps" pkg.passthru))
) "Plugin ${pkg.pname} has specified `runtimeDeps` instead of `passthru.runtimeDeps`";
stdenvNoCC.mkDerivation (finalAttrs: {
inherit (pkg)
pname
version
;
name = "zellij-plugin-${finalAttrs.pname}-${finalAttrs.version}.wasm";
src = pkg;
dontUnpack = true;
buildPhase = ''
resultFile=$(find "$src" -name '*.wasm')
if [ $(echo "$resultFile" | wc -l) -ne 1 ]; then
echo "The unwrapped plugin ($src) contains more than one WASM file"
echo "$resultFile"
exit 1
fi
# there should probably be `ln -s` here, but it produces a permission error for me
cp "$resultFile" "$out"
'';
passthru = pkg.passthru or { } // {
unwrapped = pkg;
updateScript = pkg.passthru.updateScript or nix-update-script {
attrPath = "zellijPlugins.${attrName}.unwrapped";
};
};
meta = pkg.meta // {
maintainers = pkg.meta.maintainers or [ ] ++ [ lib.maintainers.PerchunPak ];
platforms = pkg.meta.platforms or zellij.platforms;
};
});
rustPlugins = lib.mapAttrs wrapper (callPackage ./rust { });
in
rustPlugins // { inherit wrapper; }
@@ -0,0 +1,25 @@
{ pkgsCross, lib }:
let
root = ./.;
pkgs' = pkgsCross.wasi32;
call = name: override (pkgs'.callPackage (root + "/${name}") { });
override =
pkg:
pkg.overrideAttrs (old: {
# these hacks are needed until https://github.com/NixOS/nixpkgs/pull/463720#pullrequestreview-3841639011 is resolved
nativeBuildInputs = old.nativeBuildInputs or [ ] ++ [ pkgs'.lld ];
env = old.env or { } // {
RUSTFLAGS = old.env.RUSTFLAGS or "" + " -C linker=wasm-ld";
};
meta = old.meta or { } // {
platforms = old.meta.platforms or lib.platforms.linux;
};
});
in
lib.pipe root [
builtins.readDir
(lib.filterAttrs (name: _: name != "default.nix" && name != "README.md"))
(lib.mapAttrs' (name: _: lib.nameValuePair (lib.removeSuffix ".nix" name) (call name)))
]
@@ -0,0 +1,32 @@
{
lib,
fetchFromGitHub,
rustPlatform,
pkgsBuildBuild,
}:
rustPlatform.buildRustPackage (finalAttrs: {
pname = "jbz";
version = "0.39.0";
src = fetchFromGitHub {
owner = "nim65s";
repo = "jbz";
tag = "v${finalAttrs.version}";
hash = "sha256-3n3Bv3YDb1+MYJTTAmMkIgGY7kX9IVUoDNV4c/n0Ydo=";
};
cargoHash = "sha256-U+P2LlhmXwaZy2a2eigrg545HTuV1T01jZfUOEUQ5+w=";
passthru.runtimeDeps = with pkgsBuildBuild; [
bacon
just
];
meta = {
description = "Display your Just commands wrapped in Bacon";
homepage = "https://github.com/nim65s/jbz";
changelog = "https://github.com/nim65s/jbz/releases/tag/${finalAttrs.src.tag}";
license = lib.licenses.mit;
maintainers = with lib.maintainers; [ PerchunPak ];
};
})
@@ -0,0 +1,26 @@
{
lib,
rustPlatform,
fetchFromGitHub,
}:
rustPlatform.buildRustPackage (finalAttrs: {
pname = "vim-zellij-navigator";
version = "0.3.0";
src = fetchFromGitHub {
owner = "hiasr";
repo = "vim-zellij-navigator";
tag = finalAttrs.version;
hash = "sha256-1zzY1Z8ZpiNTdFW+gKRYaRR+oCzMnbJA2szY0k24bGg=";
};
cargoHash = "sha256-AbfgDhQEbm5qULw2HHxG5EMCYdML4VhHxJaAqP2g3u0=";
meta = {
description = "Seamless navigation between Zellij panes and Vim splits";
homepage = "https://github.com/hiasr/vim-zellij-navigator";
changelog = "https://github.com/hiasr/vim-zellij-navigator/releases/tag/${finalAttrs.src.tag}";
license = lib.licenses.mit;
maintainers = with lib.maintainers; [ PerchunPak ];
};
})
@@ -0,0 +1,12 @@
{ callPackage }:
# zjstatus and zjframes are contained in the same repository, but as different crates
let
zjstatus = callPackage ./zjstatus.nix { _binaryName = "zjframes"; };
in
zjstatus.overrideAttrs (old: {
pname = "zjframes";
meta = old.meta // {
description = "Toggle Zellij pane frames based on different conditions";
};
})
@@ -0,0 +1,30 @@
{
lib,
fetchFromGitHub,
rustPlatform,
_binaryName ? "zjstatus", # passed to `cargo build --bin`
}:
rustPlatform.buildRustPackage (finalAttrs: {
pname = "zjstatus";
version = "0.23.0";
src = fetchFromGitHub {
owner = "dj95";
repo = "zjstatus";
tag = "v${finalAttrs.version}";
hash = "sha256-sjMs63OaRhwCrl46v1A+K2EJdqnw63Pc7BMnHqiU790=";
};
cargoHash = "sha256-jg7EpcA3o/Qdb1eIspZQI3TX3+7gc3YX+FB4l4FZX44=";
cargoBuildFlags = [ "--bin=${_binaryName}" ];
meta = {
description = "Configurable statusbar plugin for Zellij";
homepage = "https://github.com/dj95/zjstatus";
changelog = "https://github.com/dj95/zjstatus/releases/tag/${finalAttrs.src.tag}";
license = lib.licenses.mit;
maintainers = with lib.maintainers; [ PerchunPak ];
};
})
+93
View File
@@ -0,0 +1,93 @@
{
lib,
stdenv,
rustPlatform,
fetchFromGitHub,
mandown,
installShellFiles,
pkg-config,
curl,
openssl,
writableTmpDirAsHomeHook,
versionCheckHook,
}:
rustPlatform.buildRustPackage (finalAttrs: {
pname = "zellij-unwrapped";
version = "0.44.3";
__structuredAttrs = true;
src = fetchFromGitHub {
owner = "zellij-org";
repo = "zellij";
tag = "v${finalAttrs.version}";
hash = "sha256-r8GAOiau4CZPVotFmsBQJOvEu+t0Bu9UCYAOs18i3Kg=";
};
# Remove the `vendored_curl` feature in order to link against the libcurl from nixpkgs instead of
# the vendored one
postPatch = ''
substituteInPlace Cargo.toml \
--replace-fail ', "vendored_curl"' ""
'';
cargoHash = "sha256-966FpfSsF9I10SrYe3+YNsfM2kLLv+gd0/Aw8vLp4Lk=";
env.OPENSSL_NO_VENDOR = 1;
nativeBuildInputs = [
mandown
installShellFiles
pkg-config
(lib.getDev curl)
];
buildInputs = [
curl
openssl
];
nativeCheckInputs = [
writableTmpDirAsHomeHook
];
nativeInstallCheckInputs = [
versionCheckHook
];
doInstallCheck = true;
# Ensure that we don't vendor curl, but instead link against the libcurl from nixpkgs
installCheckPhase = lib.optionalString (stdenv.hostPlatform.libc == "glibc") ''
runHook preInstallCheck
ldd "$out/bin/zellij" | grep libcurl.so
runHook postInstallCheck
'';
postInstall = ''
mandown docs/MANPAGE.md > zellij.1
installManPage zellij.1
''
+ lib.optionalString (stdenv.buildPlatform.canExecute stdenv.hostPlatform) ''
installShellCompletion --cmd zellij \
--bash <($out/bin/zellij setup --generate-completion bash) \
--fish <($out/bin/zellij setup --generate-completion fish) \
--zsh <($out/bin/zellij setup --generate-completion zsh)
'';
meta = {
description = "Terminal workspace with batteries included";
homepage = "https://zellij.dev/";
changelog = "https://github.com/zellij-org/zellij/blob/v${finalAttrs.version}/CHANGELOG.md";
license = with lib.licenses; [ mit ];
maintainers = with lib.maintainers; [
therealansh
_0x4A6F
abbe
matthiasbeyer
ryan4yin
];
mainProgram = "zellij";
};
})
@@ -39,14 +39,14 @@ let
in
buildPythonPackage (finalAttrs: {
pname = "libretranslate";
version = "1.9.5";
version = "1.9.6";
pyproject = true;
src = fetchFromGitHub {
owner = "LibreTranslate";
repo = "LibreTranslate";
tag = "v${finalAttrs.version}";
hash = "sha256-VcMo1GX+ituQOW8Dpt0ABJG5fsJbFuxAPmi59Byg5ww=";
hash = "sha256-AIjbwx2WoynN/ExGNQ2fhHxjEM/2LIvgydaA7ylU0D8=";
};
build-system = [
+1
View File
@@ -1595,6 +1595,7 @@ mapAliases {
oguri = throw "'oguri' has been removed from nixpkgs because the upstream repository was archived. Please see https://github.com/vilhalmer/oguri#notice-unmaintained for upstream's suggested replacements."; # Added 2026-05-04
oil = throw "'oil' has been renamed to/replaced by 'oils-for-unix'"; # Converted to throw 2025-10-27
olaris-server = throw "'olaris-server' has been removed as it failed to build since 2024"; # Added 2026-01-15
olive-editor = throw "'olive-editor' has been removed as it is unmaintained upstream and broken"; # Added 2026-05-22
oneDNN = onednn; # Added 2026-02-08
oneDNN_2 = onednn_2; # Added 2026-02-08
onevpl-intel-gpu = throw "'onevpl-intel-gpu' has been renamed to/replaced by 'vpl-gpu-rt'"; # Converted to throw 2025-10-27
+2
View File
@@ -3467,6 +3467,8 @@ with pkgs;
nvidiaSupport = true;
};
zellijPlugins = recurseIntoAttrs (callPackage ../by-name/ze/zellij/plugins { });
zstd = callPackage ../tools/compression/zstd {
cmake = buildPackages.cmakeMinimal;
};