···6465### Intel {#sec-gpu-accel-opencl-intel}
6667-[Intel Gen8 and later
68-GPUs](https://en.wikipedia.org/wiki/List_of_Intel_graphics_processing_units#Gen8)
69-are supported by the Intel NEO OpenCL runtime that is provided by the
70-intel-compute-runtime package. The proprietary Intel OpenCL runtime, in
71-the intel-ocl package, is an alternative for Gen7 GPUs.
7273-The intel-compute-runtime or intel-ocl package can be added to
74[](#opt-hardware.graphics.extraPackages)
75-to enable OpenCL support. For example, for Gen8 and later GPUs, the following
76configuration can be used:
7778```nix
···6465### Intel {#sec-gpu-accel-opencl-intel}
6667+[Intel Gen12 and later GPUs](https://en.wikipedia.org/wiki/List_of_Intel_graphics_processing_units#Gen12)
68+are supported by the Intel NEO OpenCL runtime that is provided by the `intel-compute-runtime` package.
69+The previous generations (8,9 and 11), have been moved to the `intel-compute-runtime-legacy1` package.
70+The proprietary Intel OpenCL runtime, in the `intel-ocl` package, is an alternative for Gen7 GPUs.
07172+Both `intel-compute-runtime` packages, as well as the `intel-ocl` package can be added to
73[](#opt-hardware.graphics.extraPackages)
74+to enable OpenCL support. For example, for Gen12 and later GPUs, the following
75configuration can be used:
7677```nix
+3
nixos/doc/manual/release-notes/rl-2411.section.md
···236- The `intel` driver for the X server (`services.xserver.videoDrives = [ "intel" ]`) is no longer functional due to incompatibilities with the latest Mesa version.
237 All users are strongly encouraged to switch to the generic `modesetting` driver (the default one) whenever possible, for more information see the manual chapter on [Intel Graphics](#sec-x11--graphics-cards-intel) and issue [#342763](https://github.com/NixOS/nixpkgs/issues/342763).
238000239- The `(buildPythonPackage { ... }).override` and `(buildPythonPackage { ... }).overrideDerivation` attributes is now deprecated and removed in favour of `overridePythonAttrs` and `lib.overrideDerivation`.
240 This change does not affect the override interface of most Python packages, as [`<pkg>.override`](https://nixos.org/manual/nixpkgs/unstable/#sec-pkg-override) provided by `callPackage` shadows such a locally-defined `override` attribute.
241 The `<pkg>.overrideDerivation` attribute of Python packages called with `callPackage` will also remain available after this change.
···236- The `intel` driver for the X server (`services.xserver.videoDrives = [ "intel" ]`) is no longer functional due to incompatibilities with the latest Mesa version.
237 All users are strongly encouraged to switch to the generic `modesetting` driver (the default one) whenever possible, for more information see the manual chapter on [Intel Graphics](#sec-x11--graphics-cards-intel) and issue [#342763](https://github.com/NixOS/nixpkgs/issues/342763).
238239+- The `intel-compute-runtime` package dropped support for older GPUs, and only supports 12th Gen and newer from now on.
240+ Intel GPUs from Gen 8,9 and 11 need to use the `intel-compute-runtime-legacy1` package in `hardware.graphics.extraPackages`.
241+242- The `(buildPythonPackage { ... }).override` and `(buildPythonPackage { ... }).overrideDerivation` attributes is now deprecated and removed in favour of `overridePythonAttrs` and `lib.overrideDerivation`.
243 This change does not affect the override interface of most Python packages, as [`<pkg>.override`](https://nixos.org/manual/nixpkgs/unstable/#sec-pkg-override) provided by `callPackage` shadows such a locally-defined `override` attribute.
244 The `<pkg>.overrideDerivation` attribute of Python packages called with `callPackage` will also remain available after this change.
···58 serviceConfig = {
59 ExecStart = (
60 lib.concatStringsSep " " [
00000000061 "${cfg.package}/bin/matter-server"
62 "--port"
63 (toString cfg.port)
···68 "--log-level"
69 "${cfg.logLevel}"
70 "${lib.escapeShellArgs cfg.extraArgs}"
071 ]
72 );
73 # Start with a clean root filesystem, and allowlist what the container
74 # is permitted to access.
75- TemporaryFileSystem = "/";
00076 # Allowlist /nix/store (to allow the binary to find its dependencies)
77 # and dbus.
78- ReadOnlyPaths = "/nix/store /run/dbus";
79 # Let systemd manage `/var/lib/matter-server` for us inside the
80 # ephemeral TemporaryFileSystem.
81 StateDirectory = storageDir;
82- # `python-matter-server` writes to /data even when a storage-path is
83- # specified. This bind-mount points /data at the systemd-managed
84- # /var/lib/matter-server, so all files get dropped into the state
85- # directory.
86- BindPaths = "${storagePath}:/data";
8788 # Hardening bits
89 AmbientCapabilities = "";
···58 serviceConfig = {
59 ExecStart = (
60 lib.concatStringsSep " " [
61+ # `python-matter-server` writes to /data even when a storage-path
62+ # is specified. This symlinks /data at the systemd-managed
63+ # /var/lib/matter-server, so all files get dropped into the state
64+ # directory.
65+ "${pkgs.bash}/bin/sh"
66+ "-c"
67+ "'"
68+ "${pkgs.coreutils}/bin/ln -s %S/matter-server/ %t/matter-server/root/data"
69+ "&&"
70 "${cfg.package}/bin/matter-server"
71 "--port"
72 (toString cfg.port)
···77 "--log-level"
78 "${cfg.logLevel}"
79 "${lib.escapeShellArgs cfg.extraArgs}"
80+ "'"
81 ]
82 );
83 # Start with a clean root filesystem, and allowlist what the container
84 # is permitted to access.
85+ # See https://discourse.nixos.org/t/hardening-systemd-services/17147/14.
86+ RuntimeDirectory = [ "matter-server/root" ];
87+ RootDirectory = "%t/matter-server/root";
88+89 # Allowlist /nix/store (to allow the binary to find its dependencies)
90 # and dbus.
91+ BindReadOnlyPaths = "/nix/store /run/dbus";
92 # Let systemd manage `/var/lib/matter-server` for us inside the
93 # ephemeral TemporaryFileSystem.
94 StateDirectory = storageDir;
000009596 # Hardening bits
97 AmbientCapabilities = "";
+19-17
nixos/tests/matter-server.nix
···8 {
9 name = "matter-server";
10 meta.maintainers = with lib.maintainers; [ leonm1 ];
01112 nodes = {
13 machine =
···2223 testScript = # python
24 ''
000025 start_all()
2627- machine.wait_for_unit("matter-server.service")
28- machine.wait_for_open_port(1234)
2930- with subtest("Check websocket server initialized"):
31- output = machine.succeed("echo \"\" | ${pkgs.websocat}/bin/websocat ws://localhost:1234/ws")
32- machine.log(output)
33-34- assert '"sdk_version": "${chipVersion}"' in output, (
35- 'CHIP version \"${chipVersion}\" not present in websocket message'
36- )
3738- assert '"fabric_id": 1' in output, (
39- "fabric_id not propagated to server"
40- )
4142- with subtest("Check storage directory is created"):
43- machine.succeed("ls /var/lib/matter-server/chip.json")
4445- with subtest("Check systemd hardening"):
46- _, output = machine.execute("systemd-analyze security matter-server.service | grep -v '✓'")
47- machine.log(output)
48 '';
49 }
50)
···8 {
9 name = "matter-server";
10 meta.maintainers = with lib.maintainers; [ leonm1 ];
11+ meta.timeout = 120; # Timeout after two minutes
1213 nodes = {
14 machine =
···2324 testScript = # python
25 ''
26+ @polling_condition
27+ def matter_server_running():
28+ machine.succeed("systemctl status matter-server")
29+30 start_all()
3132+ machine.wait_for_unit("matter-server.service", timeout=20)
33+ machine.wait_for_open_port(1234, timeout=20)
3435+ with matter_server_running: # type: ignore[union-attr]
36+ with subtest("Check websocket server initialized"):
37+ output = machine.succeed("echo \"\" | ${pkgs.websocat}/bin/websocat ws://localhost:1234/ws")
38+ machine.log(output)
0003940+ assert '"fabric_id": 1' in output, (
41+ "fabric_id not propagated to server"
42+ )
4344+ with subtest("Check storage directory is created"):
45+ machine.succeed("ls /var/lib/matter-server/chip.json")
4647+ with subtest("Check systemd hardening"):
48+ _, output = machine.execute("systemd-analyze security matter-server.service | grep -v '✓'")
49+ machine.log(output)
50 '';
51 }
52)
···190 rm data/theme/gnome-shell-{light,dark}.css
191 '';
1920000000193 postInstall = ''
194 # Pull in WebP and JXL support for gnome-backgrounds.
195 # In postInstall to run before gappsWrapperArgsHook.
···190 rm data/theme/gnome-shell-{light,dark}.css
191 '';
192193+ preInstall = ''
194+ # gnome-shell contains GSettings schema overrides for Mutter.
195+ schemadir="$out/share/glib-2.0/schemas"
196+ mkdir -p "$schemadir"
197+ cp "${glib.getSchemaPath mutter}/org.gnome.mutter.gschema.xml" "$schemadir"
198+ '';
199+200 postInstall = ''
201 # Pull in WebP and JXL support for gnome-backgrounds.
202 # In postInstall to run before gappsWrapperArgsHook.
···80 };
8182 meta = with lib; {
83- description = "Intel Graphics Compute Runtime for OpenCL with support for Gen8, Gen9 and Gen11 GPUs.d";
84 mainProgram = "ocloc";
85 homepage = "https://github.com/intel/compute-runtime";
86 changelog = "https://github.com/intel/compute-runtime/releases/tag/${version}";
···80 };
8182 meta = with lib; {
83+ description = "Intel Graphics Compute Runtime oneAPI Level Zero and OpenCL with support for Gen8, Gen9 and Gen11 GPUs";
84 mainProgram = "ocloc";
85 homepage = "https://github.com/intel/compute-runtime";
86 changelog = "https://github.com/intel/compute-runtime/releases/tag/${version}";
+1-1
pkgs/by-name/in/intel-compute-runtime/package.nix
···70 '';
7172 meta = with lib; {
73- description = "Intel Graphics Compute Runtime for OpenCL. Replaces Beignet for Gen8 (Broadwell) and beyond";
74 mainProgram = "ocloc";
75 homepage = "https://github.com/intel/compute-runtime";
76 changelog = "https://github.com/intel/compute-runtime/releases/tag/${version}";
···70 '';
7172 meta = with lib; {
73+ description = "Intel Graphics Compute Runtime oneAPI Level Zero and OpenCL, supporting 12th Gen and newer";
74 mainProgram = "ocloc";
75 homepage = "https://github.com/intel/compute-runtime";
76 changelog = "https://github.com/intel/compute-runtime/releases/tag/${version}";
+15-4
pkgs/by-name/in/interactive-html-bom/package.nix
···1{
2 fetchFromGitHub,
3- kicad-small,
4 lib,
05 python3Packages,
06}:
78python3Packages.buildPythonApplication rec {
···22 dependencies = [
23 python3Packages.jsonschema
24 python3Packages.wxpython
25- kicad-small
26 ];
2728- # has no tests
29- doCheck = false;
00000000003031 meta = {
32 description = "Interactive HTML BOM generation for KiCad, EasyEDA, Eagle, Fusion360 and Allegro PCB designer";
···3 lib,
4 fetchurl,
5 makeWrapper,
06 makeDesktopItem,
7 copyDesktopItems,
8 jre,
···23 # We cache potentially unstable upstream input (.tar.gz file) via https://web.archive.org - this is a common procedure in Nixpkgs.
24 #
25 # - Open https://tigerjython.ch/en/products/download and identify the new version string for "TigerJython IDE for Linux"
26- version = "2.39";
2728- # - and copy download link (most likely https://tigerjython.ch/user/pages/download/TigerJython.tar.gz) to clipboard.
29 # - Open http://web.archive.org and paste download link from clipboard into "Save Page Now" field and hit the "Save Page" button.
30 # - Unselect "Save Error Pages" and hit "Save Page" again.
31 # - Wait for the archive link to be generated and copy it to the url field - adjust hash accordingly.
32 src = fetchurl {
33- url = "http://web.archive.org/web/20240119124245/https://tigerjython.ch/user/pages/download/TigerJython.tar.gz";
34- hash = "sha256-PdoAOjr19aLmXYrLtMCq/tZ2Fqq7pINTuhFyMMiC0yM=";
35 };
3637 nativeBuildInputs = [
···57 dontConfigure = true;
58 dontBuild = true;
59000000000060 installPhase = ''
61 runHook preInstall
6263 export CUSTOM_LIBS=$out/share/java
64 export JAR=$CUSTOM_LIBS/tigerjython2.jar
65- export EXAMPLES_DIR=$CUSTOM_LIBS/Examples
006667 install -Dm444 bin/tigerjython2.jar $JAR
68- install -Dm444 bin/Lib/* --target-directory=$CUSTOM_LIBS
69 install -Dm444 bin/TestSamples/* --target-directory=$EXAMPLES_DIR
007071 makeWrapper ${jre}/bin/java $out/bin/tigerjython \
72 --add-flags "-Duser.dir=$CUSTOM_LIBS/" \
···3 lib,
4 fetchurl,
5 makeWrapper,
6+ writeText,
7 makeDesktopItem,
8 copyDesktopItems,
9 jre,
···24 # We cache potentially unstable upstream input (.tar.gz file) via https://web.archive.org - this is a common procedure in Nixpkgs.
25 #
26 # - Open https://tigerjython.ch/en/products/download and identify the new version string for "TigerJython IDE for Linux"
27+ version = "2.40";
2829+ # - and copy download link (most likely https://tjgroup.ch/user/pages/download/TigerJython.tar.gz) to clipboard.
30 # - Open http://web.archive.org and paste download link from clipboard into "Save Page Now" field and hit the "Save Page" button.
31 # - Unselect "Save Error Pages" and hit "Save Page" again.
32 # - Wait for the archive link to be generated and copy it to the url field - adjust hash accordingly.
33 src = fetchurl {
34+ url = "http://web.archive.org/web/20250104142121/https://tjgroup.ch/download/TigerJython.tar.gz";
35+ hash = "sha256-V/POFftRs/jjgNaHOrKcW2AdlQY2yjO+xiwJi63oECo=";
36 };
3738 nativeBuildInputs = [
···58 dontConfigure = true;
59 dontBuild = true;
6061+ # https://tobiaskohn.ch/jython/faq.html
62+ # Q: Can I install TigerJython for multiple users?
63+ # A: Yes, create a config file.
64+ # This file must be named tigerjython2.cfg and located
65+ # in the same folder as tigerjython2.jar
66+ tjconfig = writeText "tjconfig" ''
67+ configfile = sys.userpath + ".tjython.cfg"
68+ jython.cachedir = sys.userpath + ".jython.cache"
69+ '';
70+71 installPhase = ''
72 runHook preInstall
7374 export CUSTOM_LIBS=$out/share/java
75 export JAR=$CUSTOM_LIBS/tigerjython2.jar
76+ export CFG=$CUSTOM_LIBS/tigerjython2.cfg
77+ export ADDITIONAL_LIBS_DIR=$CUSTOM_LIBS/Lib
78+ export EXAMPLES_DIR=$CUSTOM_LIBS/TestSamples
7980 install -Dm444 bin/tigerjython2.jar $JAR
81+ install -Dm444 bin/Lib/* --target-directory=$ADDITIONAL_LIBS_DIR
82 install -Dm444 bin/TestSamples/* --target-directory=$EXAMPLES_DIR
83+84+ install -Dm444 $tjconfig $CFG
8586 makeWrapper ${jre}/bin/java $out/bin/tigerjython \
87 --add-flags "-Duser.dir=$CUSTOM_LIBS/" \
···1920buildPythonPackage rec {
21 pname = "ipyparallel";
22- version = "9.0.0";
23 pyproject = true;
2425 disabled = pythonOlder "3.8";
2627 src = fetchPypi {
28 inherit pname version;
29- hash = "sha256-cGAcuvmhadNQ/+IsgtW73+bf5MTfAoNtmZDpxVm1vLY=";
30 };
3132 # We do not need the jupyterlab build dependency, because we do not need to
···1920buildPythonPackage rec {
21 pname = "ipyparallel";
22+ version = "9.0.1";
23 pyproject = true;
2425 disabled = pythonOlder "3.8";
2627 src = fetchPypi {
28 inherit pname version;
29+ hash = "sha256-LlksrSIAxalPu/9jm/825uyRIvNLNrL8a01njZ6Y8pw=";
30 };
3132 # We do not need the jupyterlab build dependency, because we do not need to