diff --git a/maintainers/maintainer-list.nix b/maintainers/maintainer-list.nix
index de9446fdeb0c..e168e7913842 100644
--- a/maintainers/maintainer-list.nix
+++ b/maintainers/maintainer-list.nix
@@ -11047,6 +11047,11 @@
githubId = 207392575;
name = "Isaac Kabel";
};
+ ikci = {
+ github = "ikcii";
+ githubId = 48479629;
+ name = "ikci";
+ };
ikervagyok = {
email = "ikervagyok@gmail.com";
github = "ikervagyok";
diff --git a/maintainers/team-list.nix b/maintainers/team-list.nix
index e5f2f6402293..99146e827f81 100644
--- a/maintainers/team-list.nix
+++ b/maintainers/team-list.nix
@@ -141,6 +141,16 @@ with lib.maintainers;
enableFeatureFreezePing = true;
};
+ cockpit = {
+ members = [
+ alexandru0-dev
+ andre4ik3
+ lucasew
+ ];
+ scope = "Maintain Cockpit and official plugins by the Cockpit project.";
+ shortName = "Cockpit";
+ };
+
coq = {
members = [
cohencyril
diff --git a/nixos/modules/services/hardware/nvidia-container-toolkit/default.nix b/nixos/modules/services/hardware/nvidia-container-toolkit/default.nix
index 965ba4e4be3b..475a5122fd4e 100644
--- a/nixos/modules/services/hardware/nvidia-container-toolkit/default.nix
+++ b/nixos/modules/services/hardware/nvidia-container-toolkit/default.nix
@@ -151,6 +151,17 @@
};
config = lib.mkMerge [
+ (lib.mkIf (config.virtualisation.docker.enableNvidia || config.virtualisation.podman.enableNvidia) {
+ hardware.nvidia-container-toolkit.enable = lib.mkDefault true;
+
+ warnings = lib.mkIf (!config.hardware.nvidia-container-toolkit.enable) [
+ ''
+ `virtualisation.docker.enableNvidia` or `virtualisation.podman.enableNvidia` is enabled,
+ but `hardware.nvidia-container-toolkit.enable` is disabled. The nvidia-container-toolkit
+ module is required for GPU support in containers.
+ ''
+ ];
+ })
(lib.mkIf config.virtualisation.docker.enableNvidia {
environment.etc."nvidia-container-runtime/config.toml".text = ''
disable-require = true
@@ -162,7 +173,7 @@
no-cgroups = false
path = "${lib.getExe' pkgs.libnvidia-container "nvidia-container-cli"}"
[nvidia-container-runtime]
- mode = "auto"
+ mode = "cdi"
runtimes = ["docker-runc", "runc", "crun"]
[nvidia-container-runtime-hook]
path = "${lib.getOutput "tools" config.hardware.nvidia-container-toolkit.package}/bin/nvidia-container-runtime-hook"
diff --git a/nixos/modules/services/monitoring/cockpit.nix b/nixos/modules/services/monitoring/cockpit.nix
index 8a7192f635eb..a349e2b22611 100644
--- a/nixos/modules/services/monitoring/cockpit.nix
+++ b/nixos/modules/services/monitoring/cockpit.nix
@@ -15,6 +15,33 @@ let
mkPackageOption
;
settingsFormat = pkgs.formats.ini { };
+
+ pathPkgs = [ cfg.package ] ++ cfg.plugins;
+
+ resourcesEnv = pkgs.buildEnv {
+ name = "cockpit-plugins";
+ paths = pathPkgs;
+ pathsToLink = [ "/share/cockpit" ];
+ };
+
+ depsEnv = pkgs.buildEnv {
+ name = "cockpit-plugins-env";
+ paths = lib.concatMap (p: p.passthru.cockpitPath or [ ]) pathPkgs;
+ pathsToLink = [
+ "/bin"
+ "/share"
+ "/lib"
+ ];
+ };
+
+ share = pkgs.buildEnv {
+ name = "cockpit-share";
+ paths = [
+ resourcesEnv
+ depsEnv
+ ];
+ pathsToLink = [ "/share" ];
+ };
in
{
options = {
@@ -100,22 +127,11 @@ in
};
# Add plugins in discoverable folder
- "cockpit/share/cockpit".source = "${
- pkgs.buildEnv {
- name = "cockpit-plugins";
- paths = cfg.plugins ++ [ cfg.package ];
- pathsToLink = [ "/share/cockpit" ];
- }
- }/share/cockpit";
+ "cockpit/share".source = "${share}/share";
# Add plugins dependencies
- "cockpit/bin".source = "${
- pkgs.buildEnv {
- name = "cockpit-path";
- paths = lib.concatMap (p: p.passthru.cockpitPath or [ ]) cfg.plugins;
- pathsToLink = [ "/bin" ];
- }
- }/bin";
+ "cockpit/bin".source = "${depsEnv}/bin";
+ "cockpit/lib".source = "${depsEnv}/lib";
};
security.pam.services.cockpit = {
diff --git a/nixos/modules/services/web-apps/ifm.nix b/nixos/modules/services/web-apps/ifm.nix
index 2b081a137f6d..ca49b0f5219c 100644
--- a/nixos/modules/services/web-apps/ifm.nix
+++ b/nixos/modules/services/web-apps/ifm.nix
@@ -53,6 +53,7 @@ in
description = "Improved file manager, a single-file web based filemanager";
after = [ "network-online.target" ];
+ wants = [ "network-online.target" ];
wantedBy = [ "multi-user.target" ];
environment = {
diff --git a/nixos/tests/ft2-clone.nix b/nixos/tests/ft2-clone.nix
index c4f1475ad710..faea0d30aa50 100644
--- a/nixos/tests/ft2-clone.nix
+++ b/nixos/tests/ft2-clone.nix
@@ -11,6 +11,13 @@
imports = [
./common/x11.nix
];
+
+ boot.kernelModules = [ "snd-dummy" ];
+ services.pulseaudio = {
+ enable = true;
+ systemWide = true;
+ };
+ services.pipewire.enable = false;
environment.systemPackages = [ pkgs.ft2-clone ];
};
@@ -18,8 +25,6 @@
testScript = ''
machine.wait_for_x()
- # Add a dummy sound card, or the program won't start
- machine.execute("modprobe snd-dummy")
machine.execute("ft2-clone >&2 &")
diff --git a/nixos/tests/ifm.nix b/nixos/tests/ifm.nix
index 228f0a06c121..0ef0b76cb1d3 100644
--- a/nixos/tests/ifm.nix
+++ b/nixos/tests/ifm.nix
@@ -7,30 +7,42 @@
};
nodes = {
- server = rec {
- services.ifm = {
- enable = true;
- port = 9001;
- dataDir = "/data";
- };
+ server =
+ { config, ... }:
+ {
+ services.ifm = {
+ enable = true;
+ port = 9001;
+ dataDir = "/data";
+ };
- system.activationScripts.ifm-setup-dir = ''
- mkdir -p ${services.ifm.dataDir}
- chmod u+w,g+w,o+w ${services.ifm.dataDir}
- '';
- };
+ systemd.tmpfiles.settings = {
+ ifm-data-dir = {
+ ${config.services.ifm.dataDir}.d = {
+ mode = "0777";
+ user = "root";
+ group = "root";
+ };
+ };
+ };
+ };
};
- testScript = ''
- start_all()
- server.wait_for_unit("ifm.service")
- server.wait_for_open_port(9001)
- server.succeed("curl --fail http://localhost:9001")
+ testScript =
+ # python
+ ''
+ start_all()
+ server.wait_for_unit("ifm.service")
+ server.wait_for_open_port(9001)
+ server.succeed("curl --fail http://localhost:9001")
- server.succeed("echo \"testfile\" > testfile && shasum testfile >> checksums")
- server.succeed("curl --fail http://localhost:9001 -X POST -F \"api=upload\" -F \"dir=\" -F \"file=@testfile\" | grep \"OK\"");
- server.succeed("rm testfile")
- server.succeed("curl --fail http://localhost:9001 -X POST -F \"api=download\" -F \"filename=testfile\" -F \"dir=\" --output testfile");
- server.succeed("shasum testfile >> checksums && shasum --check checksums")
- '';
+ server.succeed('echo "testfile" > testfile')
+ server.succeed("shasum testfile | tee checksums")
+
+ server.succeed('curl --fail http://localhost:9001 -X POST -F "api=upload" -F "dir=" -F "file=@testfile" | grep "OK"');
+ server.succeed("rm testfile")
+
+ server.succeed('curl --fail http://localhost:9001 -X POST -F "api=download" -F "filename=testfile" -F "dir=" --output testfile');
+ server.succeed("shasum --check checksums")
+ '';
}
diff --git a/nixos/tests/pt2-clone.nix b/nixos/tests/pt2-clone.nix
index 160431175f8d..de48f93e1ed5 100644
--- a/nixos/tests/pt2-clone.nix
+++ b/nixos/tests/pt2-clone.nix
@@ -12,7 +12,12 @@
./common/x11.nix
];
- services.xserver.enable = true;
+ boot.kernelModules = [ "snd-dummy" ];
+ services.pulseaudio = {
+ enable = true;
+ systemWide = true;
+ };
+ services.pipewire.enable = false;
environment.systemPackages = [ pkgs.pt2-clone ];
};
@@ -20,16 +25,13 @@
testScript = ''
machine.wait_for_x()
- # Add a dummy sound card, or the program won't start
- machine.execute("modprobe snd-dummy")
machine.execute("pt2-clone >&2 &")
machine.wait_for_window(r"ProTracker")
machine.sleep(5)
# One of the few words that actually get recognized
- if "LENGTH" not in machine.get_screen_text():
- raise Exception("Program did not start successfully")
+ machine.wait_for_text("LENGTH")
machine.screenshot("screen")
'';
}
diff --git a/nixos/tests/sfxr-qt.nix b/nixos/tests/sfxr-qt.nix
index f62eeacafbd5..764911610ed7 100644
--- a/nixos/tests/sfxr-qt.nix
+++ b/nixos/tests/sfxr-qt.nix
@@ -5,7 +5,7 @@
maintainers = [ fgaz ];
};
- machine =
+ nodes.machine =
{ config, pkgs, ... }:
{
imports = [
@@ -13,6 +13,12 @@
];
services.xserver.enable = true;
+ boot.kernelModules = [ "snd-dummy" ];
+ services.pulseaudio = {
+ enable = true;
+ systemWide = true;
+ };
+ services.pipewire.enable = false;
environment.systemPackages = [ pkgs.sfxr-qt ];
};
diff --git a/pkgs/applications/networking/browsers/chromium/common.nix b/pkgs/applications/networking/browsers/chromium/common.nix
index c5e68763ef58..6b64fa1b6686 100644
--- a/pkgs/applications/networking/browsers/chromium/common.nix
+++ b/pkgs/applications/networking/browsers/chromium/common.nix
@@ -497,14 +497,9 @@ let
# Started failing to apply with M142, but this is no longer needed anyway.
./patches/chromium-126-llvm-17.patch
]
- ++ lib.optionals (!chromiumVersionAtLeast "140") [
+ ++ lib.optionals (versionRange "140" "141") [
# Partial revert of https://github.com/chromium/chromium/commit/3687976b0c6d36cf4157419a24a39f6770098d61
# allowing us to use our rustc and our clang.
- ./patches/chromium-129-rust.patch
- ]
- ++ lib.optionals (versionRange "140" "141") [
- # Rebased variant of the patch above due to
- # https://chromium-review.googlesource.com/c/chromium/src/+/6665907
./patches/chromium-140-rust.patch
]
++ lib.optionals (chromiumVersionAtLeast "141") [
@@ -535,7 +530,7 @@ let
# exact version or even running a newer version.
./patches/chromium-136-nodejs-assert-minimal-version-instead-of-exact-match.patch
]
- ++ lib.optionals (chromiumVersionAtLeast "138") [
+ ++ [
(fetchpatch {
# Unbreak building with Rust 1.89+ which introduced
# a new mismatched_lifetime_syntaxes lint.
@@ -548,33 +543,6 @@ let
hash = "sha256-xf1Jq5v3InXkiVH0uT7+h1HPwZse5MDcHKuJNjSLR6k=";
})
]
- ++ lib.optionals (!chromiumVersionAtLeast "138") [
- # Rebased variant of the patch above for
- # electron 35 (M134) and 36 (M136)
- ./patches/chromium-134-rust-1.86-mismatched_lifetime_syntaxes.patch
- ]
- ++ lib.optionals (versionRange "141" "142") [
- (fetchpatch {
- # Fix "invalid application of 'sizeof' to an incomplete type 'blink::CSSStyleSheet'"
- # by reverting https://chromium-review.googlesource.com/c/chromium/src/+/6892157
- name = "chromium-141-Revert-Remove-unnecessary-include-in-tree_scope.h.patch";
- url = "https://chromium.googlesource.com/chromium/src/+/0fc0e71aa1ca0419fae6d14255025543980d2cba^!?format=TEXT";
- decode = "base64 -d";
- revert = true;
- hash = "sha256-pnEus2NHpNWZ6ZSXLgdTn+it7oy1MPZPbD8SOAKLWbw=";
- })
- ]
- ++ lib.optionals (chromiumVersionAtLeast "142" && lib.versionOlder rustcVersion "1.90") [
- (fetchpatch {
- # Fix "ld.lld: error: undefined symbol: __rustc::__rust_alloc_error_handler_should_panic'"
- # with Rust < 1.90 by reverting https://chromium-review.googlesource.com/c/chromium/src/+/6935385
- name = "chromium-142-Revert-rust-Remove-the-old-__rust_alloc_error_handler_should_panic-symbol.patch";
- url = "https://chromium.googlesource.com/chromium/src/+/e33287758f2234d6aabfc5d4e011c4e81e3a47cf^!?format=TEXT";
- decode = "base64 -d";
- revert = true;
- hash = "sha256-0vRDz7wwGCsqm38fVvkLLzOOtEtd8CnqyjDLgGofh/o=";
- })
- ]
++ lib.optionals (versionRange "142" "143") [
(fetchpatch {
# Fix https://issues.chromium.org/issues/450752866 by backporting
@@ -585,28 +553,6 @@ let
hash = "sha256-0ueOCHYheSFHRFzEat3TDhnU3Avf0TcNBBBpTkz+saw=";
})
]
- ++ lib.optionals (chromiumVersionAtLeast "142" && lib.versionOlder rustcVersion "1.91") [
- # Fix the following error when compiling CrabbyAvif with Rust < 1.91 due to
- # https://github.com/rust-lang/rust/pull/142681 by reverting
- # https://github.com/webmproject/CrabbyAvif/pull/663 and
- # https://github.com/webmproject/CrabbyAvif/pull/654 and
- # https://chromium-review.googlesource.com/c/chromium/src/+/6960510
- #
- # error: cannot find attribute `sanitize` in this scope
- # --> ../../third_party/crabbyavif/src/src/capi/io.rs:210:41
- # |
- # 210 | #[cfg_attr(feature = "disable_cfi", sanitize(cfi = "off"))]
- # | ^^^^^^^^
- #
- ./patches/chromium-142-crabbyavif-rust-no_sanitize.patch
- (fetchpatch {
- name = "chromium-142-crabbyavif-Revert-Enable-disable_cfi-feature.patch";
- url = "https://chromium.googlesource.com/chromium/src/+/9415f40bc6f853547f791e633be638c71368ce56^!?format=TEXT";
- decode = "base64 -d";
- revert = true;
- hash = "sha256-bYcJqPMbE7hMvhZVnzqHok1crUAdqrzqxr+4IHNzAtg=";
- })
- ]
++ lib.optionals (chromiumVersionAtLeast "144") [
# Patch rustc_nightly_capability to eval to false instead of true.
# https://chromium-review.googlesource.com/c/chromium/src/+/7022369
@@ -640,9 +586,7 @@ let
/* Generated by lastchange.py, do not edit.*/
#ifndef SKIA_EXT_SKIA_COMMIT_HASH_H_
#define SKIA_EXT_SKIA_COMMIT_HASH_H_
- #define SKIA_COMMIT_HASH "${upstream-info.DEPS."src/third_party/skia".rev}${
- lib.optionalString (!chromiumVersionAtLeast "142") "-"
- }"
+ #define SKIA_COMMIT_HASH "${upstream-info.DEPS."src/third_party/skia".rev}"
#endif // SKIA_EXT_SKIA_COMMIT_HASH_H_
EOF
@@ -650,7 +594,7 @@ let
mkdir -p third_party/jdk/current/bin
''
- + lib.optionalString (!isElectron && chromiumVersionAtLeast "142") ''
+ + lib.optionalString (!isElectron) ''
cat << EOF > gpu/webgpu/dawn_commit_hash.h
/* Generated by lastchange.py, do not edit.*/
#ifndef GPU_WEBGPU_DAWN_COMMIT_HASH_H_
@@ -815,11 +759,6 @@ let
use_gio = true;
use_cups = cupsSupport;
}
- // lib.optionalAttrs (!chromiumVersionAtLeast "139") {
- # Feature overrides:
- # Native Client support was deprecated in 2020 and support will end in June 2021:
- enable_nacl = false;
- }
// lib.optionalAttrs (packageName == "chromium") {
# Enabling the Widevine here doesn't affect whether we can redistribute the chromium package.
# Widevine in this drv is a bit more complex than just that. See Widevine patch somewhere above.
diff --git a/pkgs/applications/networking/browsers/chromium/patches/chromium-129-rust.patch b/pkgs/applications/networking/browsers/chromium/patches/chromium-129-rust.patch
deleted file mode 100644
index 1fe0c7f87324..000000000000
--- a/pkgs/applications/networking/browsers/chromium/patches/chromium-129-rust.patch
+++ /dev/null
@@ -1,21 +0,0 @@
-diff --git a/build/config/compiler/BUILD.gn b/build/config/compiler/BUILD.gn
-index 45086d6838cac..81132ad8ecb31 100644
---- a/build/config/compiler/BUILD.gn
-+++ b/build/config/compiler/BUILD.gn
-@@ -1727,16 +1727,6 @@ config("runtime_library") {
- configs += [ "//build/config/c++:runtime_library" ]
- }
-
-- # Rust and C++ both provide intrinsics for LLVM to call for math operations. We
-- # want to use the C++ intrinsics, not the ones in the Rust compiler_builtins
-- # library. The Rust symbols are marked as weak, so that they can be replaced by
-- # the C++ symbols. This config ensures the C++ symbols exist and are strong in
-- # order to cause that replacement to occur by explicitly linking in clang's
-- # compiler-rt library.
-- if (is_clang && !is_nacl && !is_cronet_build) {
-- configs += [ "//build/config/clang:compiler_builtins" ]
-- }
--
- # TODO(crbug.com/40570904): Come up with a better name for is POSIX + Fuchsia
- # configuration.
- if (is_posix || is_fuchsia) {
diff --git a/pkgs/applications/networking/browsers/chromium/patches/chromium-142-crabbyavif-rust-no_sanitize.patch b/pkgs/applications/networking/browsers/chromium/patches/chromium-142-crabbyavif-rust-no_sanitize.patch
deleted file mode 100644
index 0dd08dbb41b9..000000000000
--- a/pkgs/applications/networking/browsers/chromium/patches/chromium-142-crabbyavif-rust-no_sanitize.patch
+++ /dev/null
@@ -1,48 +0,0 @@
-diff --git a/third_party/crabbyavif/src/src/capi/io.rs b/third_party/crabbyavif/src/src/capi/io.rs
-index e7994ce3129c4d7f46553f527bf8f10376ff9ed8..60a3c13b788a560e9669db013e3b8e88e5f9947b 100644
---- a/third_party/crabbyavif/src/src/capi/io.rs
-+++ b/third_party/crabbyavif/src/src/capi/io.rs
-@@ -207,7 +207,7 @@ impl Drop for avifIOWrapper {
- }
-
- impl crate::decoder::IO for avifIOWrapper {
-- #[cfg_attr(feature = "disable_cfi", sanitize(cfi = "off"))]
-+ #[cfg_attr(feature = "disable_cfi", no_sanitize(cfi))]
- fn read(&mut self, offset: u64, size: usize) -> AvifResult<&[u8]> {
- // SAFETY: Calling into a C function.
- let res = unsafe {
-diff --git a/third_party/crabbyavif/src/src/lib.rs b/third_party/crabbyavif/src/src/lib.rs
-index 90fa41188905a8aaf7b74594937b3a335ceed18d..a05f0a5e8b6cbffbf6e1a0f5fefc8a1e1480273f 100644
---- a/third_party/crabbyavif/src/src/lib.rs
-+++ b/third_party/crabbyavif/src/src/lib.rs
-@@ -13,7 +13,7 @@
- // limitations under the License.
-
- #![deny(unsafe_op_in_unsafe_fn)]
--#![cfg_attr(feature = "disable_cfi", feature(sanitize))]
-+#![cfg_attr(feature = "disable_cfi", feature(no_sanitize))]
-
- #[macro_use]
- mod internal_utils;
-diff --git a/third_party/crabbyavif/src/src/reformat/libyuv.rs b/third_party/crabbyavif/src/src/reformat/libyuv.rs
-index 9df874ccf7b6a943c6dcebe495ce15b7a7e9cd66..3f68c16f2b2e8e22b3edfd0dcedbb95fe34887f9 100644
---- a/third_party/crabbyavif/src/src/reformat/libyuv.rs
-+++ b/third_party/crabbyavif/src/src/reformat/libyuv.rs
-@@ -372,7 +372,7 @@ fn find_conversion_function(
- // Returns Ok(Some(false)) if only YUV was converted and alpha
- // needs to be imported separately.
- // Returns Ok(None) if the conversion is not implemented.
--#[cfg_attr(feature = "disable_cfi", sanitize(cfi = "off"))]
-+#[cfg_attr(feature = "disable_cfi", no_sanitize(cfi))]
- pub(crate) fn yuv_to_rgb(image: &image::Image, rgb: &mut rgb::Image) -> AvifResult