Merge staging-next into staging

Changed files
+127 -56
nixos
doc
manual
release-notes
modules
services
desktop-managers
networking
tests
pkgs
by-name
hy
hyprutils
ir
irust
ko
komodo
nc
pi
si
sing-box
wa
warp-terminal
ya
yazi
plugins
lazygit
mediainfo
mount
restore
kde
plasma
kwayland-integration
+3
nixos/doc/manual/release-notes/rl-2511.section.md
···
- The non-LTS Forgejo package (`forgejo`) has been updated to 12.0.0. This release contains breaking changes, see the [release blog post](https://forgejo.org/2025-07-release-v12-0/)
for all the details and how to ensure smooth upgrades.
- The Pocket ID module ([`services.pocket-id`][#opt-services.pocket-id.enable]) and package (`pocket-id`) has been updated to 1.0.0. Some environment variables have been changed or removed, see the [migration guide](https://pocket-id.org/docs/setup/migrate-to-v1/).
- The `zigbee2mqtt` package was updated to version 2.x, which contains breaking changes. See the [discussion](https://github.com/Koenkk/zigbee2mqtt/discussions/24198) for further information.
···
- The non-LTS Forgejo package (`forgejo`) has been updated to 12.0.0. This release contains breaking changes, see the [release blog post](https://forgejo.org/2025-07-release-v12-0/)
for all the details and how to ensure smooth upgrades.
+
- `sing-box` has been updated to 1.12.3, which includes a number of breaking changes, old configurations may need updating or they will cause the tool to fail to run.
+
See the [change log](https://sing-box.sagernet.org/changelog/#1123) for details and [migration](https://sing-box.sagernet.org/migration/#1120) for how to update old configurations.
+
- The Pocket ID module ([`services.pocket-id`][#opt-services.pocket-id.enable]) and package (`pocket-id`) has been updated to 1.0.0. Some environment variables have been changed or removed, see the [migration guide](https://pocket-id.org/docs/setup/migrate-to-v1/).
- The `zigbee2mqtt` package was updated to version 2.x, which contains breaking changes. See the [discussion](https://github.com/Koenkk/zigbee2mqtt/discussions/24198) for further information.
+1 -1
nixos/modules/services/desktop-managers/plasma6.nix
···
++ lib.optionals config.services.desktopManager.plasma6.enableQt5Integration [
breeze.qt5
plasma-integration.qt5
-
pkgs.plasma5Packages.kwayland-integration
(
# Only symlink the KIO plugins, so we don't accidentally pull any services
# like KCMs or kcookiejar
···
++ lib.optionals config.services.desktopManager.plasma6.enableQt5Integration [
breeze.qt5
plasma-integration.qt5
+
kwayland-integration
(
# Only symlink the KIO plugins, so we don't accidentally pull any services
# like KCMs or kcookiejar
+25 -3
nixos/modules/services/networking/sing-box.nix
···
{
meta = {
-
maintainers = with lib.maintainers; [ nickcao ];
};
options = {
···
}
];
systemd.packages = [ cfg.package ];
systemd.services.sing-box = {
-
preStart = utils.genJqSecretsReplacementSnippet cfg.settings "/run/sing-box/config.json";
serviceConfig = {
StateDirectory = "sing-box";
StateDirectoryMode = "0700";
RuntimeDirectory = "sing-box";
RuntimeDirectoryMode = "0700";
ExecStart = [
""
"${lib.getExe cfg.package} -D \${STATE_DIRECTORY} -C \${RUNTIME_DIRECTORY} run"
···
};
wantedBy = [ "multi-user.target" ];
};
};
-
}
···
{
meta = {
+
maintainers = with lib.maintainers; [
+
nickcao
+
prince213
+
];
};
options = {
···
}
];
+
# for polkit rules
+
environment.systemPackages = [ cfg.package ];
+
services.dbus.packages = [ cfg.package ];
systemd.packages = [ cfg.package ];
systemd.services.sing-box = {
serviceConfig = {
+
User = "sing-box";
+
Group = "sing-box";
StateDirectory = "sing-box";
StateDirectoryMode = "0700";
RuntimeDirectory = "sing-box";
RuntimeDirectoryMode = "0700";
+
ExecStartPre =
+
let
+
script = pkgs.writeShellScript "sing-box-pre-start" ''
+
${utils.genJqSecretsReplacementSnippet cfg.settings "/run/sing-box/config.json"}
+
chown --reference=/run/sing-box /run/sing-box/config.json
+
'';
+
in
+
"+${script}";
ExecStart = [
""
"${lib.getExe cfg.package} -D \${STATE_DIRECTORY} -C \${RUNTIME_DIRECTORY} run"
···
};
wantedBy = [ "multi-user.target" ];
};
+
+
users = {
+
users.sing-box = {
+
isSystemUser = true;
+
group = "sing-box";
+
};
+
groups.sing-box = { };
+
};
};
}
+21 -12
nixos/tests/sing-box.nix
···
name = "sing-box";
meta = {
-
maintainers = with lib.maintainers; [ nickcao ];
};
nodes = {
···
dns = {
final = "dns:default";
independent_cache = true;
-
fakeip = {
-
enabled = true;
-
inet4_range = "198.18.0.0/16";
-
};
servers = [
{
-
detour = "outbound:direct";
tag = "dns:default";
-
address = hosts."${target_host}";
}
{
tag = "dns:fakeip";
-
address = "fakeip";
}
-
];
-
rules = [
{
-
outbound = [ "any" ];
-
server = "dns:default";
}
{
query_type = [
"A"
···
}
];
route = {
default_interface = "eth1";
final = "outbound:direct";
rules = [
···
}
];
};
};
};
};
···
name = "sing-box";
meta = {
+
maintainers = with lib.maintainers; [
+
nickcao
+
prince213
+
];
};
nodes = {
···
dns = {
final = "dns:default";
independent_cache = true;
servers = [
{
+
type = "udp";
tag = "dns:default";
+
server = hosts."${target_host}";
}
{
+
type = "fakeip";
tag = "dns:fakeip";
+
inet4_range = "198.18.0.0/16";
}
{
+
type = "resolved";
+
tag = "dns:resolved";
+
service = "service:resolved";
+
accept_default_resolvers = true;
}
+
];
+
rules = [
{
query_type = [
"A"
···
}
];
route = {
+
default_domain_resolver = "dns:default";
default_interface = "eth1";
final = "outbound:direct";
rules = [
···
}
];
};
+
services = [
+
{
+
type = "resolved";
+
tag = "service:resolved";
+
}
+
];
};
};
};
+2 -2
pkgs/by-name/hy/hyprutils/package.nix
···
stdenv.mkDerivation (finalAttrs: {
pname = "hyprutils";
-
version = "0.8.2";
src = fetchFromGitHub {
owner = "hyprwm";
repo = "hyprutils";
tag = "v${finalAttrs.version}";
-
hash = "sha256-W0xgXsaqGa/5/7IBzKNhf0+23MqGPymYYfqT7ECqeTE=";
};
nativeBuildInputs = [
···
stdenv.mkDerivation (finalAttrs: {
pname = "hyprutils";
+
version = "0.8.3";
src = fetchFromGitHub {
owner = "hyprwm";
repo = "hyprutils";
tag = "v${finalAttrs.version}";
+
hash = "sha256-PosTxeL39YrLvCX5MqqPA6NNWQ4T5ea5K55nmN7ju9Q=";
};
nativeBuildInputs = [
+3 -3
pkgs/by-name/ir/irust/package.nix
···
rustPlatform.buildRustPackage rec {
pname = "irust";
-
version = "1.76.0";
src = fetchFromGitHub {
owner = "sigmaSd";
repo = "IRust";
rev = "irust@${version}";
-
hash = "sha256-VCuXqOE4XQvfXxpDe8kSrTkiBAa4eU5m5Xv85+NZuFE=";
};
-
cargoHash = "sha256-I1IiyMvJXccIqRnmL9IWMQT/uyGUN/knn6RXTM8YN60=";
nativeBuildInputs = [ makeWrapper ];
···
rustPlatform.buildRustPackage rec {
pname = "irust";
+
version = "1.76.1";
src = fetchFromGitHub {
owner = "sigmaSd";
repo = "IRust";
rev = "irust@${version}";
+
hash = "sha256-rNPB+POWDT6DKoqowHFmojNluFWjd+lXzYYsc9I6ebU=";
};
+
cargoHash = "sha256-OGK5CzDuA1sWmZgh2OCQBiTvGLdTjMALFnPXM5pYZo4=";
nativeBuildInputs = [ makeWrapper ];
+3 -3
pkgs/by-name/ko/komodo/package.nix
···
rustPlatform.buildRustPackage rec {
pname = "komodo";
-
version = "1.18.4";
src = fetchFromGitHub {
owner = "moghtech";
repo = "komodo";
tag = "v${version}";
-
hash = "sha256-allGKoeI3mlMWbF9WsDbX/4eGdBT/eoF71uAk5iK0e4=";
};
-
cargoHash = "sha256-nlCGrPlH+AZNz7BYDcoU0WBHBft4DnO4WfqGD5wVLmQ=";
# disable for check. document generation is fail
# > error: doctest failed, to rerun pass `-p komodo_client --doc`
···
rustPlatform.buildRustPackage rec {
pname = "komodo";
+
version = "1.19.0";
src = fetchFromGitHub {
owner = "moghtech";
repo = "komodo";
tag = "v${version}";
+
hash = "sha256-KwxR5LKd82KAOxM8YTWbovTXR4eA/O49BmWemsNF1Yw=";
};
+
cargoHash = "sha256-NkAkGM2FqYdSMmRZVJ4ryJR3vabLSj3OEyuL+8mopIY=";
# disable for check. document generation is fail
# > error: doctest failed, to rerun pass `-p komodo_client --doc`
+2 -2
pkgs/by-name/nc/ncdu/package.nix
···
stdenv.mkDerivation (finalAttrs: {
pname = "ncdu";
-
version = "2.9";
src = fetchurl {
url = "https://dev.yorhel.nl/download/ncdu-${finalAttrs.version}.tar.gz";
-
hash = "sha256-dfCsO85PwBLoGYtyUY21F56QMHmFjvzgi5EtXcxwlNM=";
};
nativeBuildInputs = [
···
stdenv.mkDerivation (finalAttrs: {
pname = "ncdu";
+
version = "2.9.1";
src = fetchurl {
url = "https://dev.yorhel.nl/download/ncdu-${finalAttrs.version}.tar.gz";
+
hash = "sha256-v9EJThQA7onP1ZIA6rlA8CXM3AwjgGcQXJhKPEhXv34=";
};
nativeBuildInputs = [
+3 -3
pkgs/by-name/pi/pixi/package.nix
···
rustPlatform.buildRustPackage (finalAttrs: {
pname = "pixi";
-
version = "0.52.0";
src = fetchFromGitHub {
owner = "prefix-dev";
repo = "pixi";
tag = "v${finalAttrs.version}";
-
hash = "sha256-zmFoIoyTYq/xqPNBuy90aK/Ao1DGx+3Jb1zzatNY7+Q=";
};
-
cargoHash = "sha256-FWjZiBMSUFBIi+Sx5FTp2UZa12b+pmtx1eqVETHQWEQ=";
nativeBuildInputs = [
pkg-config
···
rustPlatform.buildRustPackage (finalAttrs: {
pname = "pixi";
+
version = "0.53.0";
src = fetchFromGitHub {
owner = "prefix-dev";
repo = "pixi";
tag = "v${finalAttrs.version}";
+
hash = "sha256-cWoepvnolVyUyDlYakxQLNkOOP9ZbBwe5EaWbYTz+Gs=";
};
+
cargoHash = "sha256-3Sd+EjpSYbexmnUAwLps/Hrj7anpyurbzZlVs2hZk4E=";
nativeBuildInputs = [
pkg-config
+7 -5
pkgs/by-name/si/sing-box/package.nix
···
buildGoModule (finalAttrs: {
pname = "sing-box";
-
version = "1.11.15";
src = fetchFromGitHub {
owner = "SagerNet";
repo = "sing-box";
tag = "v${finalAttrs.version}";
-
hash = "sha256-uqPV3PGk3hFpV1B8+htBG9x58RVWew0sBDUItpxyv8Q=";
};
-
vendorHash = "sha256-qZlnY0MxB4/ttgjuAroTfqGWqGRea549EyIjSxPAlOI=";
tags = [
"with_quic"
"with_dhcp"
"with_wireguard"
-
"with_ech"
"with_utls"
-
"with_reality_server"
"with_acme"
"with_clash_api"
"with_gvisor"
];
subPackages = [
···
--replace-fail "/usr/bin/sing-box" "$out/bin/sing-box" \
--replace-fail "/bin/kill" "${coreutils}/bin/kill"
install -Dm444 -t "$out/lib/systemd/system/" release/config/sing-box{,@}.service
'';
passthru = {
···
buildGoModule (finalAttrs: {
pname = "sing-box";
+
version = "1.12.3";
src = fetchFromGitHub {
owner = "SagerNet";
repo = "sing-box";
tag = "v${finalAttrs.version}";
+
hash = "sha256-OHhCC+tSDZRSDN9i3L6NtwgarBKHv+KGNyPhHttqo4g=";
};
+
vendorHash = "sha256-Y/UP2rbee4WSctelk9QddMXciucz5dNLOLDDWtEFfLU=";
tags = [
"with_quic"
"with_dhcp"
"with_wireguard"
"with_utls"
"with_acme"
"with_clash_api"
"with_gvisor"
+
"with_tailscale"
];
subPackages = [
···
--replace-fail "/usr/bin/sing-box" "$out/bin/sing-box" \
--replace-fail "/bin/kill" "${coreutils}/bin/kill"
install -Dm444 -t "$out/lib/systemd/system/" release/config/sing-box{,@}.service
+
+
install -Dm444 release/config/sing-box.rules $out/share/polkit-1/rules.d/sing-box.rules
+
install -Dm444 release/config/sing-box-split-dns.xml $out/share/dbus-1/system.d/sing-box-split-dns.conf
'';
passthru = {
+6 -6
pkgs/by-name/wa/warp-terminal/versions.json
···
{
"darwin": {
-
"hash": "sha256-wO3xE8cSSMaYVc6eoswDcR3acBzWwB/BHbins8ciM4Y=",
-
"version": "0.2025.08.06.08.12.stable_02"
},
"linux_x86_64": {
-
"hash": "sha256-/Nhy0fyslK8h5zzhwlDJT+6nhNmdBowj/jGOTCunX4w=",
-
"version": "0.2025.08.06.08.12.stable_02"
},
"linux_aarch64": {
-
"hash": "sha256-Jqm2aUg11nrIZUofcLDYZ7BQtaSPx7KrrM91i0bc+ig=",
-
"version": "0.2025.08.06.08.12.stable_02"
}
}
···
{
"darwin": {
+
"hash": "sha256-B9Qhh+1vvisdpE9XYQRbJ87Ilo4Qmy9Uvd7Zn4+TLxg=",
+
"version": "0.2025.08.13.08.12.stable_02"
},
"linux_x86_64": {
+
"hash": "sha256-x87HElhBSrh00LiCcKX9AnWiROVN4SEZTqu7D1R72LI=",
+
"version": "0.2025.08.13.08.12.stable_02"
},
"linux_aarch64": {
+
"hash": "sha256-+lv8dpx5fi12rhG258zSj0att/vTi7DidKCYlUCIbvo=",
+
"version": "0.2025.08.13.08.12.stable_02"
}
}
+3 -3
pkgs/by-name/ya/yazi/plugins/lazygit/default.nix
···
}:
mkYaziPlugin {
pname = "lazygit.yazi";
-
version = "0-unstable-2025-03-31";
src = fetchFromGitHub {
owner = "Lil-Dank";
repo = "lazygit.yazi";
-
rev = "7a08a0988c2b7481d3f267f3bdc58080e6047e7d";
-
hash = "sha256-OJJPgpSaUHYz8a9opVLCds+VZsK1B6T+pSRJyVgYNy8=";
};
meta = {
···
}:
mkYaziPlugin {
pname = "lazygit.yazi";
+
version = "0-unstable-2025-08-06";
src = fetchFromGitHub {
owner = "Lil-Dank";
repo = "lazygit.yazi";
+
rev = "8f37dc5795f165021098b17d797c7b8f510aeca9";
+
hash = "sha256-rR7SMTtQYrvQjhkzulDaNH/LAA77UnXkcZ50WwBX2Uw=";
};
meta = {
+3 -3
pkgs/by-name/ya/yazi/plugins/mediainfo/default.nix
···
}:
mkYaziPlugin {
pname = "mediainfo.yazi";
-
version = "25.5.31-unstable-2025-07-19";
src = fetchFromGitHub {
owner = "boydaihungst";
repo = "mediainfo.yazi";
-
rev = "f89605ce7ca33181ee6770e641d80ec4673093e0";
-
hash = "sha256-NloChkZWKo9JL636d+G7vgEY/HX24udngYftw/Ydzk4=";
};
meta = {
···
}:
mkYaziPlugin {
pname = "mediainfo.yazi";
+
version = "25.5.31-unstable-2025-08-06";
src = fetchFromGitHub {
owner = "boydaihungst";
repo = "mediainfo.yazi";
+
rev = "0e2ae47cfb2b7c7a32d714c753b1cebbaa75d127";
+
hash = "sha256-CHigaujMHd1BuYyyxzI5B4ZYQhuH2YZptVVJToq39sY=";
};
meta = {
+3 -3
pkgs/by-name/ya/yazi/plugins/mount/default.nix
···
}:
mkYaziPlugin {
pname = "mount.yazi";
-
version = "25.5.31-unstable-2025-07-02";
src = fetchFromGitHub {
owner = "yazi-rs";
repo = "plugins";
-
rev = "e5f00e2716fd177b0ca0d313f1a6e64f01c12760";
-
hash = "sha256-DLcmzCmITybWrYuBpTyswtoGUimpagkyeVUWmbKjarY=";
};
meta = {
···
}:
mkYaziPlugin {
pname = "mount.yazi";
+
version = "25.5.31-unstable-2025-08-11";
src = fetchFromGitHub {
owner = "yazi-rs";
repo = "plugins";
+
rev = "e95c7b384e7b0a9793fe1471f0f8f7810ef2a7ed";
+
hash = "sha256-TUS+yXxBOt6tL/zz10k4ezot8IgVg0/2BbS8wPs9KcE=";
};
meta = {
+3 -3
pkgs/by-name/ya/yazi/plugins/restore/default.nix
···
}:
mkYaziPlugin {
pname = "restore.yazi";
-
version = "25.5.31-unstable-2025-07-11";
src = fetchFromGitHub {
owner = "boydaihungst";
repo = "restore.yazi";
-
rev = "84f1921806c49b7b20af26cbe57cb4fd286142e2";
-
hash = "sha256-pEQZ/2Z4XVYlfzqtCz51bIgE9KzkDF/qyX8vThhlWGI=";
};
meta = {
···
}:
mkYaziPlugin {
pname = "restore.yazi";
+
version = "25.5.31-unstable-2025-08-12";
src = fetchFromGitHub {
owner = "boydaihungst";
repo = "restore.yazi";
+
rev = "2a2ba2fbaee72f88054a43723becf66c3cfb892e";
+
hash = "sha256-FqvQuKNH3jjXQ/7N7MsUsOoh9DTreZTjpdQ4lrr2iLk=";
};
meta = {
+39 -4
pkgs/kde/plasma/kwayland-integration/default.nix
···
-
{ mkKdeDerivation }:
-
mkKdeDerivation {
pname = "kwayland-integration";
-
# FIXME(qt5)
-
meta.broken = true;
}
···
+
{
+
stdenv,
+
sources,
+
+
cmake,
+
pkg-config,
+
libsForQt5,
+
wayland-scanner,
+
+
plasma-wayland-protocols,
+
wayland,
+
wayland-protocols,
+
}:
+
# not mkKdeDerivation because this is Qt5 land
+
stdenv.mkDerivation rec {
pname = "kwayland-integration";
+
inherit (sources.${pname}) version;
+
+
src = sources.${pname};
+
+
nativeBuildInputs = [
+
cmake
+
pkg-config
+
libsForQt5.extra-cmake-modules
+
];
+
+
buildInputs = [
+
libsForQt5.qtbase
+
libsForQt5.qtwayland
+
+
libsForQt5.kwayland
+
libsForQt5.kwindowsystem
+
+
plasma-wayland-protocols
+
wayland
+
wayland-protocols
+
wayland-scanner
+
];
+
+
dontWrapQtApps = true;
}