From 465151cdb2355c845de03e538ea8f6862aa93396 Mon Sep 17 00:00:00 2001 From: Aaron Jheng Date: Wed, 21 Feb 2024 22:37:51 +0800 Subject: [PATCH 001/116] cue: 0.7.1 -> 0.8.0 --- pkgs/development/tools/cue/default.nix | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/pkgs/development/tools/cue/default.nix b/pkgs/development/tools/cue/default.nix index ad89197fcf64..ee9af03bb888 100644 --- a/pkgs/development/tools/cue/default.nix +++ b/pkgs/development/tools/cue/default.nix @@ -8,18 +8,18 @@ buildGoModule rec { pname = "cue"; - version = "0.7.1"; + version = "0.8.0"; src = fetchFromGitHub { owner = "cue-lang"; repo = "cue"; rev = "v${version}"; - hash = "sha256-x8DXAKrkqrZE6mxkIfjMhxZBnFbQnqWhmrvjrFjnQuc="; + hash = "sha256-7gn8/35rpbyzSP4ZM21ig6Wsq5Tp18x1Ex/IVb2iE7k="; }; - vendorHash = "sha256-Eq51sydt2eu3pSCRjepvxpU01T0vr0axx9XEk34db28="; + vendorHash = "sha256-0OZtKIDdEnQLnSj109EpGvaZvMIy7gPAZ+weHzYKGSg="; - subPackages = [ "cmd/cue" ]; + subPackages = [ "cmd/*" ]; nativeBuildInputs = [ installShellFiles ]; @@ -48,5 +48,6 @@ buildGoModule rec { homepage = "https://cuelang.org/"; license = lib.licenses.asl20; maintainers = with maintainers; [ aaronjheng ]; + mainProgram = "cue"; }; } From 08f76a1dc7bd016603c3d20b4f6fee77de629c1a Mon Sep 17 00:00:00 2001 From: Aaron Jheng Date: Sat, 16 Mar 2024 22:54:43 +0800 Subject: [PATCH 002/116] rm-improved: 0.13.0 -> 0.13.1 --- .../misc/rm-improved/Cargo.lock.patch | 262 ++++++++++++++++++ .../applications/misc/rm-improved/default.nix | 17 +- 2 files changed, 273 insertions(+), 6 deletions(-) create mode 100644 pkgs/applications/misc/rm-improved/Cargo.lock.patch diff --git a/pkgs/applications/misc/rm-improved/Cargo.lock.patch b/pkgs/applications/misc/rm-improved/Cargo.lock.patch new file mode 100644 index 000000000000..9905de7402c0 --- /dev/null +++ b/pkgs/applications/misc/rm-improved/Cargo.lock.patch @@ -0,0 +1,262 @@ +diff --git a/Cargo.lock b/Cargo.lock +index 975cb99..f49f6ec 100644 +--- a/Cargo.lock ++++ b/Cargo.lock +@@ -1,12 +1,29 @@ + # This file is automatically @generated by Cargo. + # It is not intended for manual editing. ++version = 3 ++ ++[[package]] ++name = "addr2line" ++version = "0.21.0" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "8a30b2e23b9e17a9f90641c7ab1549cd9b44f296d3ccbf309d2863cfe398a0cb" ++dependencies = [ ++ "gimli", ++] ++ ++[[package]] ++name = "adler" ++version = "1.0.2" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe" ++ + [[package]] + name = "ansi_term" +-version = "0.11.0" ++version = "0.12.1" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "ee49baf6cb617b853aa8d93bf420db2383fab46d314482ca2803b40d5fde979b" ++checksum = "d52a9bb7ec0cf484c551830a7ce27bd20d67eac647e1befb56b0be4ee39a55d2" + dependencies = [ +- "winapi 0.3.8", ++ "winapi 0.3.9", + ] + + [[package]] +@@ -17,54 +34,47 @@ checksum = "d9b39be18770d11421cdb1b9947a45dd3f37e93092cbf377614828a319d5fee8" + dependencies = [ + "hermit-abi", + "libc", +- "winapi 0.3.8", ++ "winapi 0.3.9", + ] + + [[package]] + name = "backtrace" +-version = "0.3.44" ++version = "0.3.69" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "e4036b9bf40f3cf16aba72a3d65e8a520fc4bafcdc7079aea8f848c58c5b5536" ++checksum = "2089b7e3f35b9dd2d0ed921ead4f6d318c27680d4a5bd167b3ee120edb105837" + dependencies = [ +- "backtrace-sys", ++ "addr2line", ++ "cc", + "cfg-if", + "libc", ++ "miniz_oxide", ++ "object", + "rustc-demangle", + ] + +-[[package]] +-name = "backtrace-sys" +-version = "0.1.32" +-source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "5d6575f128516de27e3ce99689419835fce9643a9b215a14d2b5b685be018491" +-dependencies = [ +- "cc", +- "libc", +-] +- + [[package]] + name = "bitflags" +-version = "1.2.1" ++version = "1.3.2" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "cf1de2fe8c75bc145a2f577add951f8134889b4795d47466a54a5c846d691693" ++checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" + + [[package]] + name = "cc" +-version = "1.0.50" ++version = "1.0.90" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "95e28fa049fda1c330bcf9d723be7663a899c4679724b34c81e9f5a326aab8cd" ++checksum = "8cd6604a82acf3039f1144f54b8eb34e91ffba622051189e71b781822d5ee1f5" + + [[package]] + name = "cfg-if" +-version = "0.1.10" ++version = "1.0.0" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "4785bdd1c96b2a846b2bd7cc02e86b6b3dbf14e7e53446c4f54c92a361040822" ++checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" + + [[package]] + name = "clap" +-version = "2.33.0" ++version = "2.34.0" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "5067f5bb2d80ef5d68b4c87db81601f0b75bca627bc2ef76b141d7b846a3c6d9" ++checksum = "a0610544180c38b88101fecf2dd634b174a62eef6946f84dfc6a7127512b381c" + dependencies = [ + "ansi_term", + "atty", +@@ -77,19 +87,25 @@ dependencies = [ + + [[package]] + name = "error-chain" +-version = "0.12.2" ++version = "0.12.4" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "d371106cc88ffdfb1eabd7111e432da544f16f3e2d7bf1dfe8bf575f1df045cd" ++checksum = "2d2f06b9cac1506ece98fe3231e3cc9c4410ec3d5b1f24ae1c8946f0742cdefc" + dependencies = [ + "backtrace", + "version_check", + ] + + [[package]] +-name = "hermit-abi" +-version = "0.1.8" ++name = "gimli" ++version = "0.28.1" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "1010591b26bbfe835e9faeabeb11866061cc7dcebffd56ad7d0942d0e61aefd8" ++checksum = "4271d37baee1b8c7e4b708028c57d816cf9d2434acb33a549475f78c181f6253" ++ ++[[package]] ++name = "hermit-abi" ++version = "0.1.19" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "62b467343b94ba476dcb2500d242dadbb39557df889310ac77c5d99100aaac33" + dependencies = [ + "libc", + ] +@@ -106,19 +122,37 @@ dependencies = [ + + [[package]] + name = "libc" +-version = "0.2.67" ++version = "0.2.153" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "eb147597cdf94ed43ab7a9038716637d2d1bf2bc571da995d0028dec06bd3018" ++checksum = "9c198f91728a82281a64e1f4f9eeb25d82cb32a5de251c6bd1b5154d63a8e7bd" + + [[package]] +-name = "redox_syscall" +-version = "0.1.56" ++name = "memchr" ++version = "2.7.1" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "2439c63f3f6139d1b57529d16bc3b8bb855230c8efcc5d3a896c8bea7c3b1e84" ++checksum = "523dc4f511e55ab87b694dc30d0f820d60906ef06413f93d4d7a1385599cc149" ++ ++[[package]] ++name = "miniz_oxide" ++version = "0.7.2" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "9d811f3e15f28568be3407c8e7fdb6514c1cda3cb30683f15b6a1a1dc4ea14a7" ++dependencies = [ ++ "adler", ++] ++ ++[[package]] ++name = "object" ++version = "0.32.2" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "a6a622008b6e321afc04970976f62ee297fdbaa6f95318ca343e3eebb9648441" ++dependencies = [ ++ "memchr", ++] + + [[package]] + name = "rm-improved" +-version = "0.13.0" ++version = "0.13.1" + dependencies = [ + "clap", + "error-chain", +@@ -128,9 +162,9 @@ dependencies = [ + + [[package]] + name = "rustc-demangle" +-version = "0.1.16" ++version = "0.1.23" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "4c691c0e608126e00913e33f0ccf3727d5fc84573623b8d65b2df340b5201783" ++checksum = "d626bb9dae77e28219937af045c257c28bfd3f69333c512553507f5f9798cb76" + + [[package]] + name = "same-file" +@@ -159,32 +193,32 @@ dependencies = [ + + [[package]] + name = "time" +-version = "0.1.42" ++version = "0.1.45" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "db8dcfca086c1143c9270ac42a2bbd8a7ee477b78ac8e45b19abfb0cbede4b6f" ++checksum = "1b797afad3f312d1c66a56d11d0316f916356d11bd158fbc6ca6389ff6bf805a" + dependencies = [ + "libc", +- "redox_syscall", +- "winapi 0.3.8", ++ "wasi", ++ "winapi 0.3.9", + ] + + [[package]] + name = "unicode-width" +-version = "0.1.7" ++version = "0.1.11" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "caaa9d531767d1ff2150b9332433f32a24622147e5ebb1f26409d5da67afd479" ++checksum = "e51733f11c9c4f72aa0c160008246859e340b00807569a0da0e7a1079b27ba85" + + [[package]] + name = "vec_map" +-version = "0.8.1" ++version = "0.8.2" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "05c78687fb1a80548ae3250346c3db86a80a7cdd77bda190189f2d0a0987c81a" ++checksum = "f1bddf1187be692e79c5ffeab891132dfb0f236ed36a43c7ed39f1165ee20191" + + [[package]] + name = "version_check" +-version = "0.9.1" ++version = "0.9.4" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "078775d0255232fb988e6fccf26ddc9d1ac274299aaedcedce21c6f72cc533ce" ++checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f" + + [[package]] + name = "walkdir" +@@ -197,6 +231,12 @@ dependencies = [ + "winapi 0.2.8", + ] + ++[[package]] ++name = "wasi" ++version = "0.10.0+wasi-snapshot-preview1" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "1a143597ca7c7793eff794def352d41792a93c481eb1042423ff7ff72ba2c31f" ++ + [[package]] + name = "winapi" + version = "0.2.8" +@@ -205,9 +245,9 @@ checksum = "167dc9d6949a9b857f3451275e911c3f44255842c1f7a76f33c55103a909087a" + + [[package]] + name = "winapi" +-version = "0.3.8" ++version = "0.3.9" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "8093091eeb260906a183e6ae1abdba2ef5ef2257a21801128899c3fc699229c6" ++checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" + dependencies = [ + "winapi-i686-pc-windows-gnu", + "winapi-x86_64-pc-windows-gnu", diff --git a/pkgs/applications/misc/rm-improved/default.nix b/pkgs/applications/misc/rm-improved/default.nix index be5fb6344494..38fcfd3a339b 100644 --- a/pkgs/applications/misc/rm-improved/default.nix +++ b/pkgs/applications/misc/rm-improved/default.nix @@ -2,22 +2,27 @@ rustPlatform.buildRustPackage rec { pname = "rm-improved"; - version = "0.13.0"; - - cargoSha256 = "0wgpr6gx9dpvf02xgvrdbyiqfz1k9vipnvriz3jg0cz7n1afqisj"; + version = "0.13.1"; src = fetchFromGitHub { owner = "nivekuil"; repo = "rip"; - rev = "0.13.0"; - sha256 = "0d065xia4mwdhxkiqfg7pic6scfzipzmsvvx7l6l97w62lzpiqx3"; + rev = version; + hash = "sha256-jbXmGPrb9PhmCSUFVcCqg8HjntS2mrYeNuaMsU+zIFI="; }; + cargoHash = "sha256-05ebuPa8N+hz5BnqAdOCL6dnBqVsB9VN4HxfwL99gK0="; + + cargoPatches = [ + # Cargo.lock out-of-date + ./Cargo.lock.patch + ]; + meta = with lib; { description = "Replacement for rm with focus on safety, ergonomics and performance"; homepage = "https://github.com/nivekuil/rip"; + license = licenses.gpl3Plus; maintainers = with maintainers; [ nils-degroot ]; mainProgram = "rip"; - license = licenses.gpl3Plus; }; } From 8759d4853fde8ba8c812267630166f54f027cac9 Mon Sep 17 00:00:00 2001 From: Aaron Jheng Date: Mon, 18 Mar 2024 11:45:18 +0800 Subject: [PATCH 003/116] gwyddion: remove broken python support --- pkgs/applications/science/chemistry/gwyddion/default.nix | 8 -------- 1 file changed, 8 deletions(-) diff --git a/pkgs/applications/science/chemistry/gwyddion/default.nix b/pkgs/applications/science/chemistry/gwyddion/default.nix index 7c1312f27f25..a4b1cd943e1b 100644 --- a/pkgs/applications/science/chemistry/gwyddion/default.nix +++ b/pkgs/applications/science/chemistry/gwyddion/default.nix @@ -1,5 +1,4 @@ { lib, stdenv, fetchurl, gtk2, pkg-config, fftw, file, - pythonSupport ? false, python2Packages, gnome2, openexrSupport ? true, openexr, libzipSupport ? true, libzip, @@ -15,10 +14,6 @@ openglSupport ? !stdenv.isDarwin, libGL }: -let - inherit (python2Packages) pygtk pygobject2 python; -in - stdenv.mkDerivation rec { pname = "gwyddion"; version = "2.65"; @@ -43,9 +38,6 @@ stdenv.mkDerivation rec { optional libuniqueSupport libunique ++ optional libzipSupport libzip; - propagatedBuildInputs = with lib; - optionals pythonSupport [ pygtk pygobject2 python gnome2.gtksourceview ]; - # This patch corrects problems with python support, but should apply cleanly # regardless of whether python support is enabled, and have no effects if # it is disabled. From 62232e8d7eab180c6c5a938e6ff10cce468869c2 Mon Sep 17 00:00:00 2001 From: Bu Kun <65808665+pokon548@users.noreply.github.com> Date: Wed, 6 Mar 2024 18:38:05 +0800 Subject: [PATCH 004/116] wechat-uos: init at 1.0.0.238 --- pkgs/by-name/we/wechat-uos/package.nix | 248 +++++++++++++++++++++++++ 1 file changed, 248 insertions(+) create mode 100644 pkgs/by-name/we/wechat-uos/package.nix diff --git a/pkgs/by-name/we/wechat-uos/package.nix b/pkgs/by-name/we/wechat-uos/package.nix new file mode 100644 index 000000000000..d151c022ed66 --- /dev/null +++ b/pkgs/by-name/we/wechat-uos/package.nix @@ -0,0 +1,248 @@ +{ stdenvNoCC +, stdenv +, lib +, fetchurl +, requireFile +, dpkg +, nss +, nspr +, xorg +, pango +, zlib +, atkmm +, libdrm +, libxkbcommon +, xcbutilwm +, xcbutilimage +, xcbutilkeysyms +, xcbutilrenderutil +, mesa +, alsa-lib +, wayland +, openssl_1_1 +, atk +, qt6 +, at-spi2-atk +, at-spi2-core +, dbus +, cups +, gtk3 +, libxml2 +, cairo +, freetype +, fontconfig +, vulkan-loader +, gdk-pixbuf +, libexif +, ffmpeg +, pulseaudio +, systemd +, libuuid +, expat +, bzip2 +, glib +, libva +, libGL +, libnotify +, buildFHSEnv +, writeShellScript +, /** + License for wechat-uos, packed in a gz archive named "license.tar.gz". + It should have the following files: + license.tar.gz + ├── etc + │ ├── lsb-release + │ └── os-release + └── var + ├── lib + │ └── uos-license + │ └── .license.json + └── uos + └── .license.key + */ + uosLicense ? requireFile { + name = "license.tar.gz"; + url = "https://www.uniontech.com"; + sha256 = "53760079c1a5b58f2fa3d5effe1ed35239590b288841d812229ef4e55b2dbd69"; + } +}: +let + wechat-uos-env = stdenvNoCC.mkDerivation { + meta.priority = 1; + name = "wechat-uos-env"; + buildCommand = '' + mkdir -p $out/etc + mkdir -p $out/lib/license + mkdir -p $out/usr/bin + mkdir -p $out/usr/share + mkdir -p $out/opt + mkdir -p $out/var + + ln -s ${wechat}/opt/* $out/opt/ + ln -s ${wechat}/usr/lib/wechat-uos/license/etc/os-release $out/etc/os-release + ln -s ${wechat}/usr/lib/wechat-uos/license/etc/lsb-release $out/etc/lsb-release + ln -s ${wechat}/usr/lib/wechat-uos/license/var/* $out/var/ + ln -s ${wechat}/usr/lib/wechat-uos/license/libuosdevicea.so $out/lib/license/ + ''; + preferLocalBuild = true; + }; + + wechat-uos-runtime = with xorg; [ + stdenv.cc.cc + stdenv.cc.libc + pango + zlib + xcbutilwm + xcbutilimage + xcbutilkeysyms + xcbutilrenderutil + libX11 + libXt + libXext + libSM + libICE + libxcb + libxkbcommon + libxshmfence + libXi + libXft + libXcursor + libXfixes + libXScrnSaver + libXcomposite + libXdamage + libXtst + libXrandr + libnotify + atk + atkmm + cairo + at-spi2-atk + at-spi2-core + alsa-lib + dbus + cups + gtk3 + gdk-pixbuf + libexif + ffmpeg + libva + freetype + fontconfig + libXrender + libuuid + expat + glib + nss + nspr + libGL + libxml2 + pango + libdrm + mesa + vulkan-loader + systemd + wayland + pulseaudio + qt6.qt5compat + openssl_1_1 + bzip2 + ]; + + wechat = stdenvNoCC.mkDerivation + rec { + pname = "wechat-uos"; + version = "1.0.0.238"; + + src = { + x86_64-linux = fetchurl { + url = "https://pro-store-packages.uniontech.com/appstore/pool/appstore/c/com.tencent.wechat/com.tencent.wechat_${version}_amd64.deb"; + hash = "sha256-NxAmZ526JaAzAjtAd9xScFnZBuwD6i2wX2/AEqtAyWs="; + }; + aarch64-linux = fetchurl { + url = "https://pro-store-packages.uniontech.com/appstore/pool/appstore/c/com.tencent.wechat/com.tencent.wechat_${version}_arm64.deb"; + hash = "sha256-3ru6KyBYXiuAlZuWhyyvtQCWbOJhGYzker3FS0788RE="; + }; + loongarch64-linux = fetchurl { + url = "https://pro-store-packages.uniontech.com/appstore/pool/appstore/c/com.tencent.wechat/com.tencent.wechat_${version}_loongarch64.deb"; + hash = "sha256-iuJeLMKD6v8J8iKw3+cyODN7PZQrLpi9p0//mkI0ujE="; + }; + }.${stdenv.system} or (throw "${pname}-${version}: ${stdenv.system} is unsupported."); + + # Don't blame about this. WeChat requires some binary from here to work properly + uosSrc = { + x86_64-linux = fetchurl { + url = "https://pro-store-packages.uniontech.com/appstore/pool/appstore/c/com.tencent.weixin/com.tencent.weixin_2.1.5_amd64.deb"; + hash = "sha256-vVN7w+oPXNTMJ/g1Rpw/AVLIytMXI+gLieNuddyyIYE="; + }; + aarch64-linux = fetchurl { + url = "https://pro-store-packages.uniontech.com/appstore/pool/appstore/c/com.tencent.weixin/com.tencent.weixin_2.1.5_arm64.deb"; + hash = "sha256-XvGFPYJlsYPqRyDycrBGzQdXn/5Da1AJP5LgRVY1pzI="; + }; + loongarch64-linux = fetchurl { + url = "https://pro-store-packages.uniontech.com/appstore/pool/appstore/c/com.tencent.weixin/com.tencent.weixin_2.1.5_loongarch64.deb"; + hash = "sha256-oa6rLE6QXMCPlbebto9Tv7xT3fFqYIlXL6WHpB2U35s="; + }; + }.${stdenv.system} or (throw "${pname}-${version}: ${stdenv.system} is unsupported."); + + inherit uosLicense; + + nativeBuildInputs = [ dpkg ]; + + unpackPhase = '' + runHook preUnpack + + dpkg -x $src ./wechat-uos + dpkg -x $uosSrc ./wechat-uos-old-source + + tar -xvf $uosLicense + + runHook postUnpack + ''; + + installPhase = '' + runHook preInstall + mkdir -p $out + + cp -r wechat-uos/* $out + + mkdir -pv $out/usr/lib/wechat-uos/license + cp -r license/* $out/usr/lib/wechat-uos/license + cp -r wechat-uos-old-source/usr/lib/license/libuosdevicea.so $out/usr/lib/wechat-uos/license/ + + runHook postInstall + ''; + + meta = with lib; { + description = "Messaging app"; + homepage = "https://weixin.qq.com/"; + license = licenses.unfree; + platforms = [ "x86_64-linux" "aarch64-linux" "loongarch64-linux" ]; + sourceProvenance = with sourceTypes; [ binaryNativeCode ]; + maintainers = with maintainers; [ pokon548 ]; + mainProgram = "wechat-uos"; + }; + }; +in +buildFHSEnv { + inherit (wechat) name meta; + runScript = writeShellScript "wechat-uos-launcher" '' + export QT_QPA_PLATFORM=xcb + export LD_LIBRARY_PATH=${lib.makeLibraryPath wechat-uos-runtime} + ${wechat.outPath}/opt/apps/com.tencent.wechat/files/wechat + ''; + extraInstallCommands = '' + mkdir -p $out/share/applications + mkdir -p $out/share/icons + cp -r ${wechat.outPath}/opt/apps/com.tencent.wechat/entries/applications/com.tencent.wechat.desktop $out/share/applications + cp -r ${wechat.outPath}/opt/apps/com.tencent.wechat/entries/icons/* $out/share/icons/ + + mv $out/bin/$name $out/bin/wechat-uos + + substituteInPlace $out/share/applications/com.tencent.wechat.desktop \ + --replace-quiet 'Exec=/usr/bin/wechat' "Exec=$out/bin/wechat-uos --" + ''; + targetPkgs = pkgs: [ wechat-uos-env ]; + + extraOutputsToInstall = [ "usr" "var/lib/uos" "var/uos" "etc" ]; +} From 9a05581e2cf80d656e00abc17bb65b42e1eb9fc1 Mon Sep 17 00:00:00 2001 From: Aaron Jheng Date: Thu, 21 Mar 2024 13:42:04 +0800 Subject: [PATCH 005/116] pixi: 0.15.2 -> 0.17.1 --- pkgs/by-name/pi/pixi/Cargo.lock | 6312 ++++++++++++++++++++++++++++++ pkgs/by-name/pi/pixi/package.nix | 23 +- 2 files changed, 6330 insertions(+), 5 deletions(-) create mode 100644 pkgs/by-name/pi/pixi/Cargo.lock diff --git a/pkgs/by-name/pi/pixi/Cargo.lock b/pkgs/by-name/pi/pixi/Cargo.lock new file mode 100644 index 000000000000..5ece5bcbca62 --- /dev/null +++ b/pkgs/by-name/pi/pixi/Cargo.lock @@ -0,0 +1,6312 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 3 + +[[package]] +name = "addr2line" +version = "0.21.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8a30b2e23b9e17a9f90641c7ab1549cd9b44f296d3ccbf309d2863cfe398a0cb" +dependencies = [ + "gimli", +] + +[[package]] +name = "adler" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe" + +[[package]] +name = "aes" +version = "0.7.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9e8b47f52ea9bae42228d07ec09eb676433d7c4ed1ebdf0f1d1c29ed446f1ab8" +dependencies = [ + "cfg-if", + "cipher", + "cpufeatures", + "opaque-debug", +] + +[[package]] +name = "ahash" +version = "0.7.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "891477e0c6a8957309ee5c45a6368af3ae14bb510732d2684ffa19af310920f9" +dependencies = [ + "getrandom", + "once_cell", + "version_check", +] + +[[package]] +name = "aho-corasick" +version = "1.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e60d3430d3a69478ad0993f19238d2df97c507009a52b3c10addcd7f6bcb916" +dependencies = [ + "memchr", +] + +[[package]] +name = "aliasable" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "250f629c0161ad8107cf89319e990051fae62832fd343083bea452d93e2205fd" + +[[package]] +name = "alloc-no-stdlib" +version = "2.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cc7bb162ec39d46ab1ca8c77bf72e890535becd1751bb45f64c597edb4c8c6b3" + +[[package]] +name = "alloc-stdlib" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94fb8275041c72129eb51b7d0322c29b8387a0386127718b096429201a5d6ece" +dependencies = [ + "alloc-no-stdlib", +] + +[[package]] +name = "android-tzdata" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e999941b234f3131b00bc13c22d06e8c5ff726d1b6318ac7eb276997bbb4fef0" + +[[package]] +name = "android_system_properties" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "819e7219dbd41043ac279b19830f2efc897156490d7fd6ea916720117ee66311" +dependencies = [ + "libc", +] + +[[package]] +name = "anstream" +version = "0.6.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d96bd03f33fe50a863e394ee9718a706f988b9079b20c3784fb726e7678b62fb" +dependencies = [ + "anstyle", + "anstyle-parse", + "anstyle-query", + "anstyle-wincon", + "colorchoice", + "utf8parse", +] + +[[package]] +name = "anstyle" +version = "1.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8901269c6307e8d93993578286ac0edf7f195079ffff5ebdeea6a59ffb7e36bc" + +[[package]] +name = "anstyle-parse" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c75ac65da39e5fe5ab759307499ddad880d724eed2f6ce5b5e8a26f4f387928c" +dependencies = [ + "utf8parse", +] + +[[package]] +name = "anstyle-query" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e28923312444cdd728e4738b3f9c9cac739500909bb3d3c94b43551b16517648" +dependencies = [ + "windows-sys 0.52.0", +] + +[[package]] +name = "anstyle-wincon" +version = "3.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1cd54b81ec8d6180e24654d0b371ad22fc3dd083b6ff8ba325b72e00c87660a7" +dependencies = [ + "anstyle", + "windows-sys 0.52.0", +] + +[[package]] +name = "anyhow" +version = "1.0.81" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0952808a6c2afd1aa8947271f3a60f1a6763c7b912d210184c5149b5cf147247" + +[[package]] +name = "assert_matches" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b34d609dfbaf33d6889b2b7106d3ca345eacad44200913df5ba02bfd31d2ba9" + +[[package]] +name = "async-broadcast" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7c48ccdbf6ca6b121e0f586cbc0e73ae440e56c67c30fa0873b4e110d9c26d2b" +dependencies = [ + "event-listener 2.5.3", + "futures-core", +] + +[[package]] +name = "async-channel" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f28243a43d821d11341ab73c80bed182dc015c514b951616cf79bd4af39af0c3" +dependencies = [ + "concurrent-queue", + "event-listener 5.2.0", + "event-listener-strategy 0.5.0", + "futures-core", + "pin-project-lite", +] + +[[package]] +name = "async-compression" +version = "0.4.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a116f46a969224200a0a97f29cfd4c50e7534e4b4826bd23ea2c3c533039c82c" +dependencies = [ + "brotli", + "bzip2", + "flate2", + "futures-core", + "futures-io", + "memchr", + "pin-project-lite", + "tokio", + "zstd", + "zstd-safe", +] + +[[package]] +name = "async-executor" +version = "1.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "17ae5ebefcc48e7452b4987947920dac9450be1110cadf34d1b8c116bdbaf97c" +dependencies = [ + "async-lock 3.3.0", + "async-task", + "concurrent-queue", + "fastrand 2.0.1", + "futures-lite 2.3.0", + "slab", +] + +[[package]] +name = "async-fs" +version = "1.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "279cf904654eeebfa37ac9bb1598880884924aab82e290aa65c9e77a0e142e06" +dependencies = [ + "async-lock 2.8.0", + "autocfg", + "blocking", + "futures-lite 1.13.0", +] + +[[package]] +name = "async-io" +version = "1.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0fc5b45d93ef0529756f812ca52e44c221b35341892d3dcc34132ac02f3dd2af" +dependencies = [ + "async-lock 2.8.0", + "autocfg", + "cfg-if", + "concurrent-queue", + "futures-lite 1.13.0", + "log", + "parking", + "polling 2.8.0", + "rustix 0.37.27", + "slab", + "socket2 0.4.10", + "waker-fn", +] + +[[package]] +name = "async-io" +version = "2.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dcccb0f599cfa2f8ace422d3555572f47424da5648a4382a9dd0310ff8210884" +dependencies = [ + "async-lock 3.3.0", + "cfg-if", + "concurrent-queue", + "futures-io", + "futures-lite 2.3.0", + "parking", + "polling 3.5.0", + "rustix 0.38.32", + "slab", + "tracing", + "windows-sys 0.52.0", +] + +[[package]] +name = "async-lock" +version = "2.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "287272293e9d8c41773cec55e365490fe034813a2f172f502d6ddcf75b2f582b" +dependencies = [ + "event-listener 2.5.3", +] + +[[package]] +name = "async-lock" +version = "3.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d034b430882f8381900d3fe6f0aaa3ad94f2cb4ac519b429692a1bc2dda4ae7b" +dependencies = [ + "event-listener 4.0.3", + "event-listener-strategy 0.4.0", + "pin-project-lite", +] + +[[package]] +name = "async-once-cell" +version = "0.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9338790e78aa95a416786ec8389546c4b6a1dfc3dc36071ed9518a9413a542eb" + +[[package]] +name = "async-process" +version = "1.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ea6438ba0a08d81529c69b36700fa2f95837bfe3e776ab39cde9c14d9149da88" +dependencies = [ + "async-io 1.13.0", + "async-lock 2.8.0", + "async-signal", + "blocking", + "cfg-if", + "event-listener 3.1.0", + "futures-lite 1.13.0", + "rustix 0.38.32", + "windows-sys 0.48.0", +] + +[[package]] +name = "async-recursion" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "30c5ef0ede93efbf733c1a727f3b6b5a1060bbedd5600183e66f6e4be4af0ec5" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.53", +] + +[[package]] +name = "async-signal" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9e47d90f65a225c4527103a8d747001fc56e375203592b25ad103e1ca13124c5" +dependencies = [ + "async-io 2.3.2", + "async-lock 2.8.0", + "atomic-waker", + "cfg-if", + "futures-core", + "futures-io", + "rustix 0.38.32", + "signal-hook-registry", + "slab", + "windows-sys 0.48.0", +] + +[[package]] +name = "async-task" +version = "4.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fbb36e985947064623dbd357f727af08ffd077f93d696782f3c56365fa2e2799" + +[[package]] +name = "async-trait" +version = "0.1.78" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "461abc97219de0eaaf81fe3ef974a540158f3d079c2ab200f891f1a2ef201e85" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.53", +] + +[[package]] +name = "async_http_range_reader" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cf8eeab30c68da4dc2c51f3afc4327ab06fe0f3f028ca423f7ca398c7ed8c5e7" +dependencies = [ + "bisection", + "futures", + "http-content-range", + "itertools", + "memmap2 0.9.4", + "reqwest", + "reqwest-middleware", + "thiserror", + "tokio", + "tokio-stream", + "tokio-util", + "tracing", +] + +[[package]] +name = "async_zip" +version = "0.0.16" +source = "git+https://github.com/charliermarsh/rs-async-zip?rev=d76801da0943de985254fc6255c0e476b57c5836#d76801da0943de985254fc6255c0e476b57c5836" +dependencies = [ + "async-compression", + "crc32fast", + "futures-lite 2.3.0", + "pin-project", + "thiserror", + "tokio", + "tokio-util", +] + +[[package]] +name = "atomic-waker" +version = "1.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1505bd5d3d116872e7271a6d4e16d81d0c8570876c8de68093a09ac269d8aac0" + +[[package]] +name = "autocfg" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" + +[[package]] +name = "backtrace" +version = "0.3.69" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2089b7e3f35b9dd2d0ed921ead4f6d318c27680d4a5bd167b3ee120edb105837" +dependencies = [ + "addr2line", + "cc", + "cfg-if", + "libc", + "miniz_oxide", + "object", + "rustc-demangle", +] + +[[package]] +name = "backtrace-ext" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "537beee3be4a18fb023b570f80e3ae28003db9167a751266b259926e25539d50" +dependencies = [ + "backtrace", +] + +[[package]] +name = "base64" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9e1b586273c5702936fe7b7d6896644d8be71e6314cfe09d3167c95f712589e8" + +[[package]] +name = "base64" +version = "0.21.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9d297deb1925b89f2ccc13d7635fa0714f12c87adce1c75356b39ca9b7178567" + +[[package]] +name = "bincode" +version = "1.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b1f45e9417d87227c7a56d22e471c6206462cba514c7590c09aff4cf6d1ddcad" +dependencies = [ + "serde", +] + +[[package]] +name = "bisection" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "021e079a1bab0ecce6cf4b4b74c0c37afa4a697136eb3b127875c84a8f04a8c3" + +[[package]] +name = "bitflags" +version = "1.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" + +[[package]] +name = "bitflags" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cf4b9d6a944f767f8e5e0db018570623c85f3d925ac718db4e06d0187adb21c1" + +[[package]] +name = "bitvec" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1bc2832c24239b0141d5674bb9174f9d68a8b5b3f2753311927c172ca46f7e9c" +dependencies = [ + "funty", + "radium", + "tap", + "wyz", +] + +[[package]] +name = "blake2" +version = "0.10.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "46502ad458c9a52b69d4d4d32775c788b7a1b85e8bc9d482d92250fc0e3f8efe" +dependencies = [ + "digest", +] + +[[package]] +name = "block-buffer" +version = "0.10.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71" +dependencies = [ + "generic-array", +] + +[[package]] +name = "block-modes" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2cb03d1bed155d89dce0f845b7899b18a9a163e148fd004e1c28421a783e2d8e" +dependencies = [ + "block-padding", + "cipher", +] + +[[package]] +name = "block-padding" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8d696c370c750c948ada61c69a0ee2cbbb9c50b1019ddb86d9317157a99c2cae" + +[[package]] +name = "blocking" +version = "1.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6a37913e8dc4ddcc604f0c6d3bf2887c995153af3611de9e23c352b44c1b9118" +dependencies = [ + "async-channel", + "async-lock 3.3.0", + "async-task", + "fastrand 2.0.1", + "futures-io", + "futures-lite 2.3.0", + "piper", + "tracing", +] + +[[package]] +name = "brotli" +version = "3.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d640d25bc63c50fb1f0b545ffd80207d2e10a4c965530809b40ba3386825c391" +dependencies = [ + "alloc-no-stdlib", + "alloc-stdlib", + "brotli-decompressor", +] + +[[package]] +name = "brotli-decompressor" +version = "2.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4e2e4afe60d7dd600fdd3de8d0f08c2b7ec039712e3b6137ff98b7004e82de4f" +dependencies = [ + "alloc-no-stdlib", + "alloc-stdlib", +] + +[[package]] +name = "bstr" +version = "1.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "05efc5cfd9110c8416e471df0e96702d58690178e206e61b7173706673c93706" +dependencies = [ + "memchr", + "serde", +] + +[[package]] +name = "bumpalo" +version = "3.15.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7ff69b9dd49fd426c69a0db9fc04dd934cdb6645ff000864d98f7e2af8830eaa" + +[[package]] +name = "bytecheck" +version = "0.6.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "23cdc57ce23ac53c931e88a43d06d070a6fd142f2617be5855eb75efc9beb1c2" +dependencies = [ + "bytecheck_derive", + "ptr_meta", + "simdutf8", +] + +[[package]] +name = "bytecheck_derive" +version = "0.6.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3db406d29fbcd95542e92559bed4d8ad92636d1ca8b3b72ede10b4bcc010e659" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "byteorder" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" + +[[package]] +name = "bytes" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a2bd12c1caf447e69cd4528f47f94d203fd2582878ecb9e9465484c4148a8223" + +[[package]] +name = "bzip2" +version = "0.4.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bdb116a6ef3f6c3698828873ad02c3014b3c85cadb88496095628e3ef1e347f8" +dependencies = [ + "bzip2-sys", + "libc", +] + +[[package]] +name = "bzip2-sys" +version = "0.1.11+1.0.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "736a955f3fa7875102d57c82b8cac37ec45224a07fd32d58f9f7a186b6cd4cdc" +dependencies = [ + "cc", + "libc", + "pkg-config", +] + +[[package]] +name = "cacache" +version = "12.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "142316461ed3a3dfcba10417317472da5bfd0461e4d276bf7c07b330766d9490" +dependencies = [ + "digest", + "either", + "futures", + "hex", + "libc", + "memmap2 0.5.10", + "miette 5.10.0", + "reflink-copy", + "serde", + "serde_derive", + "serde_json", + "sha1", + "sha2", + "ssri", + "tempfile", + "thiserror", + "tokio", + "tokio-stream", + "walkdir", +] + +[[package]] +name = "cache-key" +version = "0.0.1" +source = "git+https://github.com/astral-sh/uv?tag=0.1.16#9f1452cb72e1da912f0653e398ac4ecb81244a82" +dependencies = [ + "hex", + "seahash", + "url", +] + +[[package]] +name = "cache_control" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1bf2a5fb3207c12b5d208ebc145f967fea5cac41a021c37417ccc31ba40f39ee" + +[[package]] +name = "cachedir" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4703f3937077db8fa35bee3c8789343c1aec2585f0146f09d658d4ccc0e8d873" +dependencies = [ + "tempfile", +] + +[[package]] +name = "cargo-util" +version = "0.2.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "74862c3c6e53a1c1f8f0178f9d38ab41e49746cd3a7cafc239b3d0248fd4e342" +dependencies = [ + "anyhow", + "core-foundation", + "filetime", + "hex", + "ignore", + "jobserver", + "libc", + "miow", + "same-file", + "sha2", + "shell-escape", + "tempfile", + "tracing", + "walkdir", + "windows-sys 0.52.0", +] + +[[package]] +name = "cc" +version = "1.0.90" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8cd6604a82acf3039f1144f54b8eb34e91ffba622051189e71b781822d5ee1f5" +dependencies = [ + "jobserver", + "libc", +] + +[[package]] +name = "cfg-if" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" + +[[package]] +name = "cfg_aliases" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fd16c4719339c4530435d38e511904438d07cce7950afa3718a84ac36c10e89e" + +[[package]] +name = "charset" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "18e9079d1a12a2cc2bffb5db039c43661836ead4082120d5844f02555aca2d46" +dependencies = [ + "base64 0.13.1", + "encoding_rs", +] + +[[package]] +name = "chrono" +version = "0.4.35" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8eaf5903dcbc0a39312feb77df2ff4c76387d591b9fc7b04a238dcf8bb62639a" +dependencies = [ + "android-tzdata", + "iana-time-zone", + "js-sys", + "num-traits", + "serde", + "wasm-bindgen", + "windows-targets 0.52.4", +] + +[[package]] +name = "cipher" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7ee52072ec15386f770805afd189a01c8841be8696bed250fa2f13c4c0d6dfb7" +dependencies = [ + "generic-array", +] + +[[package]] +name = "clap" +version = "4.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "949626d00e063efc93b6dca932419ceb5432f99769911c0b995f7e884c778813" +dependencies = [ + "clap_builder", + "clap_derive", +] + +[[package]] +name = "clap-verbosity-flag" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bb9b20c0dd58e4c2e991c8d203bbeb76c11304d1011659686b5b644bc29aa478" +dependencies = [ + "clap", + "log", +] + +[[package]] +name = "clap_builder" +version = "4.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ae129e2e766ae0ec03484e609954119f123cc1fe650337e155d03b022f24f7b4" +dependencies = [ + "anstream", + "anstyle", + "clap_lex", + "strsim 0.11.0", + "terminal_size", +] + +[[package]] +name = "clap_complete" +version = "4.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "885e4d7d5af40bfb99ae6f9433e292feac98d452dcb3ec3d25dfe7552b77da8c" +dependencies = [ + "clap", +] + +[[package]] +name = "clap_derive" +version = "4.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "90239a040c80f5e14809ca132ddc4176ab33d5e17e49691793296e3fcb34d72f" +dependencies = [ + "heck 0.5.0", + "proc-macro2", + "quote", + "syn 2.0.53", +] + +[[package]] +name = "clap_lex" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "98cc8fbded0c607b7ba9dd60cd98df59af97e84d24e49c8557331cfc26d301ce" + +[[package]] +name = "colorchoice" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "acbf1af155f9b9ef647e42cdc158db4b64a1b61f743629225fde6f3e0be2a7c7" + +[[package]] +name = "concurrent-queue" +version = "2.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d16048cd947b08fa32c24458a22f5dc5e835264f689f4f5653210c69fd107363" +dependencies = [ + "crossbeam-utils", +] + +[[package]] +name = "configparser" +version = "3.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4ec6d3da8e550377a85339063af6e3735f4b1d9392108da4e083a1b3b9820288" + +[[package]] +name = "console" +version = "0.15.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0e1f83fc076bd6dd27517eacdf25fef6c4dfe5f1d7448bafaaf3a26f13b5e4eb" +dependencies = [ + "encode_unicode", + "lazy_static", + "libc", + "unicode-width", + "windows-sys 0.52.0", +] + +[[package]] +name = "core-foundation" +version = "0.9.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "91e195e091a93c46f7102ec7818a2aa394e1e1771c3ab4825963fa03e45afb8f" +dependencies = [ + "core-foundation-sys", + "libc", +] + +[[package]] +name = "core-foundation-sys" +version = "0.8.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "06ea2b9bc92be3c2baa9334a323ebca2d6f074ff852cd1d7b11064035cd3868f" + +[[package]] +name = "cpufeatures" +version = "0.2.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "53fe5e26ff1b7aef8bca9c6080520cfb8d9333c7568e1829cef191a9723e5504" +dependencies = [ + "libc", +] + +[[package]] +name = "crc32fast" +version = "1.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b3855a8a784b474f333699ef2bbca9db2c4a1f6d9088a90a2d25b1eb53111eaa" +dependencies = [ + "cfg-if", +] + +[[package]] +name = "crossbeam-channel" +version = "0.5.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ab3db02a9c5b5121e1e42fbdb1aeb65f5e02624cc58c43f2884c6ccac0b82f95" +dependencies = [ + "crossbeam-utils", +] + +[[package]] +name = "crossbeam-deque" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "613f8cc01fe9cf1a3eb3d7f488fd2fa8388403e97039e2f73692932e291a770d" +dependencies = [ + "crossbeam-epoch", + "crossbeam-utils", +] + +[[package]] +name = "crossbeam-epoch" +version = "0.9.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5b82ac4a3c2ca9c3460964f020e1402edd5753411d7737aa39c3714ad1b5420e" +dependencies = [ + "crossbeam-utils", +] + +[[package]] +name = "crossbeam-utils" +version = "0.8.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "248e3bacc7dc6baa3b21e405ee045c3047101a49145e7e9eca583ab4c2ca5345" + +[[package]] +name = "crypto-common" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3" +dependencies = [ + "generic-array", + "typenum", +] + +[[package]] +name = "csv" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ac574ff4d437a7b5ad237ef331c17ccca63c46479e5b5453eb8e10bb99a759fe" +dependencies = [ + "csv-core", + "itoa", + "ryu", + "serde", +] + +[[package]] +name = "csv-core" +version = "0.1.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5efa2b3d7902f4b634a20cae3c9c4e6209dc4779feb6863329607560143efa70" +dependencies = [ + "memchr", +] + +[[package]] +name = "darling" +version = "0.20.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "54e36fcd13ed84ffdfda6f5be89b31287cbb80c439841fe69e04841435464391" +dependencies = [ + "darling_core", + "darling_macro", +] + +[[package]] +name = "darling_core" +version = "0.20.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c2cf1c23a687a1feeb728783b993c4e1ad83d99f351801977dd809b48d0a70f" +dependencies = [ + "fnv", + "ident_case", + "proc-macro2", + "quote", + "strsim 0.10.0", + "syn 2.0.53", +] + +[[package]] +name = "darling_macro" +version = "0.20.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a668eda54683121533a393014d8692171709ff57a7d61f187b6e782719f8933f" +dependencies = [ + "darling_core", + "quote", + "syn 2.0.53", +] + +[[package]] +name = "dashmap" +version = "5.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "978747c1d849a7d2ee5e8adc0159961c48fb7e5db2f06af6723b80123bb53856" +dependencies = [ + "cfg-if", + "hashbrown 0.14.3", + "lock_api", + "once_cell", + "parking_lot_core 0.9.9", +] + +[[package]] +name = "data-encoding" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7e962a19be5cfc3f3bf6dd8f61eb50107f356ad6270fbb3ed41476571db78be5" + +[[package]] +name = "deno_task_shell" +version = "0.14.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "db60ddb0f58f5c32c2ea67784c233eeaf187285cc7b49733bc549088702a4552" +dependencies = [ + "anyhow", + "futures", + "glob", + "monch", + "os_pipe", + "path-dedot", + "tokio", + "tokio-util", +] + +[[package]] +name = "deranged" +version = "0.3.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b42b6fa04a440b495c8b04d0e71b707c585f83cb9cb28cf8cd0d976c315e31b4" +dependencies = [ + "powerfmt", + "serde", +] + +[[package]] +name = "derivative" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fcc3dd5e9e9c0b295d6e1e4d811fb6f157d5ffd784b8d202fc62eac8035a770b" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "dialoguer" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "658bce805d770f407bc62102fca7c2c64ceef2fbcb2b8bd19d2765ce093980de" +dependencies = [ + "console", + "shell-words", + "tempfile", + "thiserror", + "zeroize", +] + +[[package]] +name = "digest" +version = "0.10.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" +dependencies = [ + "block-buffer", + "crypto-common", + "subtle", +] + +[[package]] +name = "directories" +version = "5.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9a49173b84e034382284f27f1af4dcbbd231ffa358c0fe316541a7337f376a35" +dependencies = [ + "dirs-sys", +] + +[[package]] +name = "dirs" +version = "5.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "44c45a9d03d6676652bcb5e724c7e988de1acad23a711b5217ab9cbecbec2225" +dependencies = [ + "dirs-sys", +] + +[[package]] +name = "dirs-sys" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "520f05a5cbd335fae5a99ff7a6ab8627577660ee5cfd6a94a6a929b52ff0321c" +dependencies = [ + "libc", + "option-ext", + "redox_users", + "windows-sys 0.48.0", +] + +[[package]] +name = "distribution-filename" +version = "0.0.1" +source = "git+https://github.com/astral-sh/uv?tag=0.1.16#9f1452cb72e1da912f0653e398ac4ecb81244a82" +dependencies = [ + "pep440_rs", + "platform-tags", + "rkyv", + "serde", + "thiserror", + "url", + "uv-normalize", +] + +[[package]] +name = "distribution-types" +version = "0.0.1" +source = "git+https://github.com/astral-sh/uv?tag=0.1.16#9f1452cb72e1da912f0653e398ac4ecb81244a82" +dependencies = [ + "anyhow", + "cache-key", + "data-encoding", + "distribution-filename", + "fs-err", + "itertools", + "once_cell", + "pep440_rs", + "pep508_rs", + "platform-tags", + "pypi-types", + "rkyv", + "rustc-hash", + "serde", + "serde_json", + "sha2", + "thiserror", + "tracing", + "url", + "urlencoding", + "uv-auth", + "uv-fs", + "uv-git", + "uv-normalize", +] + +[[package]] +name = "drop_bomb" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9bda8e21c04aca2ae33ffc2fd8c23134f3cac46db123ba97bd9d3f3b8a4a85e1" + +[[package]] +name = "dunce" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "56ce8c6da7551ec6c462cbaf3bfbc75131ebbfa1c944aeaa9dab51ca1c5f0c3b" + +[[package]] +name = "either" +version = "1.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "11157ac094ffbdde99aa67b23417ebdd801842852b500e395a45a9c0aac03e4a" + +[[package]] +name = "elsa" +version = "1.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d98e71ae4df57d214182a2e5cb90230c0192c6ddfcaa05c36453d46a54713e10" +dependencies = [ + "stable_deref_trait", +] + +[[package]] +name = "encode_unicode" +version = "0.3.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a357d28ed41a50f9c765dbfe56cbc04a64e53e5fc58ba79fbc34c10ef3df831f" + +[[package]] +name = "encoding_rs" +version = "0.8.33" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7268b386296a025e474d5140678f75d6de9493ae55a5d709eeb9dd08149945e1" +dependencies = [ + "cfg-if", +] + +[[package]] +name = "enum_dispatch" +version = "0.3.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f33313078bb8d4d05a2733a94ac4c2d8a0df9a2b84424ebf4f33bfc224a890e" +dependencies = [ + "once_cell", + "proc-macro2", + "quote", + "syn 2.0.53", +] + +[[package]] +name = "enumflags2" +version = "0.7.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3278c9d5fb675e0a51dabcf4c0d355f692b064171535ba72361be1528a9d8e8d" +dependencies = [ + "enumflags2_derive", + "serde", +] + +[[package]] +name = "enumflags2_derive" +version = "0.7.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c785274071b1b420972453b306eeca06acf4633829db4223b58a2a8c5953bc4" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.53", +] + +[[package]] +name = "equivalent" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5" + +[[package]] +name = "erased-serde" +version = "0.4.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2b73807008a3c7f171cc40312f37d95ef0396e048b5848d775f54b1a4dd4a0d3" +dependencies = [ + "serde", +] + +[[package]] +name = "errno" +version = "0.3.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a258e46cdc063eb8519c00b9fc845fc47bcfca4130e2f08e88665ceda8474245" +dependencies = [ + "libc", + "windows-sys 0.52.0", +] + +[[package]] +name = "event-listener" +version = "2.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0206175f82b8d6bf6652ff7d71a1e27fd2e4efde587fd368662814d6ec1d9ce0" + +[[package]] +name = "event-listener" +version = "3.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d93877bcde0eb80ca09131a08d23f0a5c18a620b01db137dba666d18cd9b30c2" +dependencies = [ + "concurrent-queue", + "parking", + "pin-project-lite", +] + +[[package]] +name = "event-listener" +version = "4.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "67b215c49b2b248c855fb73579eb1f4f26c38ffdc12973e20e07b91d78d5646e" +dependencies = [ + "concurrent-queue", + "parking", + "pin-project-lite", +] + +[[package]] +name = "event-listener" +version = "5.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2b5fb89194fa3cad959b833185b3063ba881dbfc7030680b314250779fb4cc91" +dependencies = [ + "concurrent-queue", + "parking", + "pin-project-lite", +] + +[[package]] +name = "event-listener-strategy" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "958e4d70b6d5e81971bebec42271ec641e7ff4e170a6fa605f2b8a8b65cb97d3" +dependencies = [ + "event-listener 4.0.3", + "pin-project-lite", +] + +[[package]] +name = "event-listener-strategy" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "feedafcaa9b749175d5ac357452a9d41ea2911da598fde46ce1fe02c37751291" +dependencies = [ + "event-listener 5.2.0", + "pin-project-lite", +] + +[[package]] +name = "fastrand" +version = "1.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e51093e27b0797c359783294ca4f0a911c270184cb10f85783b118614a1501be" +dependencies = [ + "instant", +] + +[[package]] +name = "fastrand" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "25cbce373ec4653f1a01a31e8a5e5ec0c622dc27ff9c4e6606eefef5cbbed4a5" + +[[package]] +name = "filetime" +version = "0.2.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1ee447700ac8aa0b2f2bd7bc4462ad686ba06baa6727ac149a2d6277f0d240fd" +dependencies = [ + "cfg-if", + "libc", + "redox_syscall 0.4.1", + "windows-sys 0.52.0", +] + +[[package]] +name = "fixedbitset" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0ce7134b9999ecaf8bcd65542e436736ef32ddca1b3e06094cb6ec5755203b80" + +[[package]] +name = "flate2" +version = "1.0.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "46303f565772937ffe1d394a4fac6f411c6013172fadde9dcdb1e147a086940e" +dependencies = [ + "crc32fast", + "miniz_oxide", +] + +[[package]] +name = "fnv" +version = "1.0.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" + +[[package]] +name = "foreign-types" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f6f339eb8adc052cd2ca78910fda869aefa38d22d5cb648e6485e4d3fc06f3b1" +dependencies = [ + "foreign-types-shared", +] + +[[package]] +name = "foreign-types-shared" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b" + +[[package]] +name = "form_urlencoded" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e13624c2627564efccf4934284bdd98cbaa14e79b0b5a141218e507b3a823456" +dependencies = [ + "percent-encoding", +] + +[[package]] +name = "fs-err" +version = "2.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "88a41f105fe1d5b6b34b2055e3dc59bb79b46b48b2040b9e6c7b4b5de097aa41" +dependencies = [ + "autocfg", + "tokio", +] + +[[package]] +name = "fs2" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9564fc758e15025b46aa6643b1b77d047d1a56a1aea6e01002ac0c7026876213" +dependencies = [ + "libc", + "winapi", +] + +[[package]] +name = "fslock" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "04412b8935272e3a9bae6f48c7bfff74c2911f60525404edfdd28e49884c3bfb" +dependencies = [ + "libc", + "winapi", +] + +[[package]] +name = "funty" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6d5a32815ae3f33302d95fdcb2ce17862f8c65363dcfd29360480ba1001fc9c" + +[[package]] +name = "futures" +version = "0.3.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "645c6916888f6cb6350d2550b80fb63e734897a8498abe35cfb732b6487804b0" +dependencies = [ + "futures-channel", + "futures-core", + "futures-executor", + "futures-io", + "futures-sink", + "futures-task", + "futures-util", +] + +[[package]] +name = "futures-channel" +version = "0.3.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eac8f7d7865dcb88bd4373ab671c8cf4508703796caa2b1985a9ca867b3fcb78" +dependencies = [ + "futures-core", + "futures-sink", +] + +[[package]] +name = "futures-core" +version = "0.3.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dfc6580bb841c5a68e9ef15c77ccc837b40a7504914d52e47b8b0e9bbda25a1d" + +[[package]] +name = "futures-executor" +version = "0.3.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a576fc72ae164fca6b9db127eaa9a9dda0d61316034f33a0a0d4eda41f02b01d" +dependencies = [ + "futures-core", + "futures-task", + "futures-util", +] + +[[package]] +name = "futures-io" +version = "0.3.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a44623e20b9681a318efdd71c299b6b222ed6f231972bfe2f224ebad6311f0c1" + +[[package]] +name = "futures-lite" +version = "1.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "49a9d51ce47660b1e808d3c990b4709f2f415d928835a17dfd16991515c46bce" +dependencies = [ + "fastrand 1.9.0", + "futures-core", + "futures-io", + "memchr", + "parking", + "pin-project-lite", + "waker-fn", +] + +[[package]] +name = "futures-lite" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "52527eb5074e35e9339c6b4e8d12600c7128b68fb25dcb9fa9dec18f7c25f3a5" +dependencies = [ + "fastrand 2.0.1", + "futures-core", + "futures-io", + "parking", + "pin-project-lite", +] + +[[package]] +name = "futures-macro" +version = "0.3.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "87750cf4b7a4c0625b1529e4c543c2182106e4dedc60a2a6455e00d212c489ac" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.53", +] + +[[package]] +name = "futures-sink" +version = "0.3.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9fb8e00e87438d937621c1c6269e53f536c14d3fbd6a042bb24879e57d474fb5" + +[[package]] +name = "futures-task" +version = "0.3.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "38d84fa142264698cdce1a9f9172cf383a0c82de1bddcf3092901442c4097004" + +[[package]] +name = "futures-timer" +version = "3.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f288b0a4f20f9a56b5d1da57e2227c661b7b16168e2f72365f57b63326e29b24" + +[[package]] +name = "futures-util" +version = "0.3.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3d6401deb83407ab3da39eba7e33987a73c3df0c82b4bb5813ee871c19c41d48" +dependencies = [ + "futures-channel", + "futures-core", + "futures-io", + "futures-macro", + "futures-sink", + "futures-task", + "memchr", + "pin-project-lite", + "pin-utils", + "slab", +] + +[[package]] +name = "fxhash" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c31b6d751ae2c7f11320402d34e41349dd1016f8d5d45e48c4312bc8625af50c" +dependencies = [ + "byteorder", +] + +[[package]] +name = "generic-array" +version = "0.14.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" +dependencies = [ + "typenum", + "version_check", +] + +[[package]] +name = "getrandom" +version = "0.2.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "190092ea657667030ac6a35e305e62fc4dd69fd98ac98631e5d3a2b1575a12b5" +dependencies = [ + "cfg-if", + "js-sys", + "libc", + "wasi", + "wasm-bindgen", +] + +[[package]] +name = "gimli" +version = "0.28.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4271d37baee1b8c7e4b708028c57d816cf9d2434acb33a549475f78c181f6253" + +[[package]] +name = "git2" +version = "0.18.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "232e6a7bfe35766bf715e55a88b39a700596c0ccfd88cd3680b4cdb40d66ef70" +dependencies = [ + "bitflags 2.5.0", + "libc", + "libgit2-sys", + "log", + "openssl-probe", + "openssl-sys", + "url", +] + +[[package]] +name = "glob" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d2fabcfbdc87f4758337ca535fb41a6d701b65693ce38287d856d1674551ec9b" + +[[package]] +name = "globset" +version = "0.4.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "57da3b9b5b85bd66f31093f8c408b90a74431672542466497dcbdfdc02034be1" +dependencies = [ + "aho-corasick", + "bstr", + "log", + "regex-automata 0.4.6", + "regex-syntax 0.8.2", +] + +[[package]] +name = "goblin" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bb07a4ffed2093b118a525b1d8f5204ae274faed5604537caf7135d0f18d9887" +dependencies = [ + "log", + "plain", + "scroll", +] + +[[package]] +name = "h2" +version = "0.3.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4fbd2820c5e49886948654ab546d0688ff24530286bdcf8fca3cefb16d4618eb" +dependencies = [ + "bytes", + "fnv", + "futures-core", + "futures-sink", + "futures-util", + "http", + "indexmap 2.2.5", + "slab", + "tokio", + "tokio-util", + "tracing", +] + +[[package]] +name = "hashbrown" +version = "0.12.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" +dependencies = [ + "ahash", +] + +[[package]] +name = "hashbrown" +version = "0.14.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "290f1a1d9242c78d09ce40a5e87e7554ee637af1351968159f4952f028f75604" + +[[package]] +name = "heck" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8" + +[[package]] +name = "heck" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" + +[[package]] +name = "hermit-abi" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d231dfb89cfffdbc30e7fc41579ed6066ad03abda9e567ccafae602b97ec5024" + +[[package]] +name = "hex" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" +dependencies = [ + "serde", +] + +[[package]] +name = "hkdf" +version = "0.12.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7b5f8eb2ad728638ea2c7d47a21db23b7b58a72ed6a38256b8a1849f15fbbdf7" +dependencies = [ + "hmac", +] + +[[package]] +name = "hmac" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c49c37c09c17a53d937dfbb742eb3a961d65a994e6bcdcf37e7399d0cc8ab5e" +dependencies = [ + "digest", +] + +[[package]] +name = "home" +version = "0.5.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3d1354bf6b7235cb4a0576c2619fd4ed18183f689b12b006a0ee7329eeff9a5" +dependencies = [ + "windows-sys 0.52.0", +] + +[[package]] +name = "html-escape" +version = "0.2.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6d1ad449764d627e22bfd7cd5e8868264fc9236e07c752972b4080cd351cb476" +dependencies = [ + "utf8-width", +] + +[[package]] +name = "http" +version = "0.2.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "601cbb57e577e2f5ef5be8e7b83f0f63994f25aa94d673e54a92d5c516d101f1" +dependencies = [ + "bytes", + "fnv", + "itoa", +] + +[[package]] +name = "http-body" +version = "0.4.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7ceab25649e9960c0311ea418d17bee82c0dcec1bd053b5f9a66e265a693bed2" +dependencies = [ + "bytes", + "http", + "pin-project-lite", +] + +[[package]] +name = "http-cache" +version = "0.18.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5b5ab65432bbdfe8490dfde21d0366353a8d39f2bc24aca0146889f931b0b4b5" +dependencies = [ + "async-trait", + "bincode", + "cacache", + "http", + "http-cache-semantics", + "httpdate", + "serde", + "url", +] + +[[package]] +name = "http-cache-reqwest" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c8285341ce7e709c56a0f259ff1c789c70edfbaa88acd69d27e4d63980b92dc" +dependencies = [ + "anyhow", + "async-trait", + "http", + "http-cache", + "http-cache-semantics", + "reqwest", + "reqwest-middleware", + "serde", + "task-local-extensions", + "url", +] + +[[package]] +name = "http-cache-semantics" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7aec9f678bca3f4a15194b980f20ed9bfe0dd38e8d298c65c559a93dfbd6380a" +dependencies = [ + "http", + "http-serde", + "serde", + "time", +] + +[[package]] +name = "http-content-range" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9f0d1a8ef218a86416107794b34cc446958d9203556c312bb41eab4c924c1d2e" + +[[package]] +name = "http-serde" +version = "1.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6f560b665ad9f1572cfcaf034f7fb84338a7ce945216d64a90fd81f046a3caee" +dependencies = [ + "http", + "serde", +] + +[[package]] +name = "httparse" +version = "1.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d897f394bad6a705d5f4104762e116a75639e470d80901eed05a860a95cb1904" + +[[package]] +name = "httpdate" +version = "1.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "df3b46402a9d5adb4c86a0cf463f42e19994e3ee891101b1841f30a545cb49a9" + +[[package]] +name = "human_bytes" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "91f255a4535024abf7640cb288260811fc14794f62b063652ed349f9a6c2348e" + +[[package]] +name = "humansize" +version = "2.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6cb51c9a029ddc91b07a787f1d86b53ccfa49b0e86688c946ebe8d3555685dd7" +dependencies = [ + "libm", +] + +[[package]] +name = "humantime" +version = "2.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9a3a5bfb195931eeb336b2a7b4d761daec841b97f947d34394601737a7bba5e4" + +[[package]] +name = "hyper" +version = "0.14.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bf96e135eb83a2a8ddf766e426a841d8ddd7449d5f00d34ea02b41d2f19eef80" +dependencies = [ + "bytes", + "futures-channel", + "futures-core", + "futures-util", + "h2", + "http", + "http-body", + "httparse", + "httpdate", + "itoa", + "pin-project-lite", + "socket2 0.5.6", + "tokio", + "tower-service", + "tracing", + "want", +] + +[[package]] +name = "hyper-rustls" +version = "0.24.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec3efd23720e2049821a693cbc7e65ea87c72f1c58ff2f9522ff332b1491e590" +dependencies = [ + "futures-util", + "http", + "hyper", + "rustls", + "tokio", + "tokio-rustls", +] + +[[package]] +name = "hyper-tls" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d6183ddfa99b85da61a140bea0efc93fdf56ceaa041b37d553518030827f9905" +dependencies = [ + "bytes", + "hyper", + "native-tls", + "tokio", + "tokio-native-tls", +] + +[[package]] +name = "iana-time-zone" +version = "0.1.60" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e7ffbb5a1b541ea2561f8c41c087286cc091e21e556a4f09a8f6cbf17b69b141" +dependencies = [ + "android_system_properties", + "core-foundation-sys", + "iana-time-zone-haiku", + "js-sys", + "wasm-bindgen", + "windows-core 0.52.0", +] + +[[package]] +name = "iana-time-zone-haiku" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f31827a206f56af32e590ba56d5d2d085f558508192593743f16b2306495269f" +dependencies = [ + "cc", +] + +[[package]] +name = "ident_case" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39" + +[[package]] +name = "idna" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "634d9b1461af396cad843f47fdba5597a4f9e6ddd4bfb6ff5d85028c25cb12f6" +dependencies = [ + "unicode-bidi", + "unicode-normalization", +] + +[[package]] +name = "ignore" +version = "0.4.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b46810df39e66e925525d6e38ce1e7f6e1d208f72dc39757880fcb66e2c58af1" +dependencies = [ + "crossbeam-deque", + "globset", + "log", + "memchr", + "regex-automata 0.4.6", + "same-file", + "walkdir", + "winapi-util", +] + +[[package]] +name = "indexmap" +version = "1.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99" +dependencies = [ + "autocfg", + "hashbrown 0.12.3", + "serde", +] + +[[package]] +name = "indexmap" +version = "2.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7b0b929d511467233429c45a44ac1dcaa21ba0f5ba11e4879e6ed28ddb4f9df4" +dependencies = [ + "equivalent", + "hashbrown 0.14.3", + "serde", +] + +[[package]] +name = "indicatif" +version = "0.17.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "763a5a8f45087d6bcea4222e7b72c291a054edf80e4ef6efd2a4979878c7bea3" +dependencies = [ + "console", + "instant", + "number_prefix", + "portable-atomic", + "unicode-width", +] + +[[package]] +name = "indoc" +version = "2.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e186cfbae8084e513daff4240b4797e342f988cecda4fb6c939150f96315fd8" + +[[package]] +name = "insta" +version = "1.36.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0a7c22c4d34ef4788c351e971c52bfdfe7ea2766f8c5466bc175dd46e52ac22e" +dependencies = [ + "console", + "globset", + "lazy_static", + "linked-hash-map", + "serde", + "similar", + "walkdir", + "yaml-rust", +] + +[[package]] +name = "install-wheel-rs" +version = "0.0.1" +source = "git+https://github.com/astral-sh/uv?tag=0.1.16#9f1452cb72e1da912f0653e398ac4ecb81244a82" +dependencies = [ + "configparser", + "csv", + "data-encoding", + "distribution-filename", + "fs-err", + "mailparse", + "once_cell", + "pathdiff", + "pep440_rs", + "platform-host", + "platform-info", + "plist", + "pypi-types", + "reflink-copy", + "regex", + "rustc-hash", + "serde", + "serde_json", + "sha2", + "tempfile", + "thiserror", + "tracing", + "url", + "uv-fs", + "uv-normalize", + "walkdir", + "zip", +] + +[[package]] +name = "instant" +version = "0.1.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a5bbe824c507c5da5956355e86a746d82e0e1464f65d862cc5e71da70e94b2c" +dependencies = [ + "cfg-if", + "js-sys", + "wasm-bindgen", + "web-sys", +] + +[[package]] +name = "io-lifetimes" +version = "1.0.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eae7b9aee968036d54dce06cebaefd919e4472e753296daccd6d344e3e2df0c2" +dependencies = [ + "hermit-abi", + "libc", + "windows-sys 0.48.0", +] + +[[package]] +name = "ipnet" +version = "2.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f518f335dce6725a761382244631d86cf0ccb2863413590b31338feb467f9c3" + +[[package]] +name = "is_ci" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7655c9839580ee829dfacba1d1278c2b7883e50a277ff7541299489d6bdfdc45" + +[[package]] +name = "is_executable" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fa9acdc6d67b75e626ad644734e8bc6df893d9cd2a834129065d3dd6158ea9c8" +dependencies = [ + "winapi", +] + +[[package]] +name = "itertools" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba291022dbbd398a455acf126c1e341954079855bc60dfdda641363bd6922569" +dependencies = [ + "either", +] + +[[package]] +name = "itoa" +version = "1.0.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b1a46d1a171d865aa5f83f92695765caa047a9b4cbae2cbf37dbd613a793fd4c" + +[[package]] +name = "jobserver" +version = "0.1.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ab46a6e9526ddef3ae7f787c06f0f2600639ba80ea3eade3d8e670a2230f51d6" +dependencies = [ + "libc", +] + +[[package]] +name = "js-sys" +version = "0.3.69" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "29c15563dc2726973df627357ce0c9ddddbea194836909d655df6a75d2cf296d" +dependencies = [ + "wasm-bindgen", +] + +[[package]] +name = "json-patch" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "55ff1e1486799e3f64129f8ccad108b38290df9cd7015cd31bed17239f0789d6" +dependencies = [ + "serde", + "serde_json", + "thiserror", + "treediff", +] + +[[package]] +name = "junction" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ca39ef0d69b18e6a2fd14c2f0a1d593200f4a4ed949b240b5917ab51fac754cb" +dependencies = [ + "scopeguard", + "winapi", +] + +[[package]] +name = "keyring" +version = "2.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1be8bc4c6b6e9d85ecdad090fcf342a9216f53d747a537cc05e3452fd650ca46" +dependencies = [ + "byteorder", + "lazy_static", + "linux-keyutils", + "secret-service", + "security-framework", + "windows-sys 0.52.0", +] + +[[package]] +name = "lazy-regex" +version = "3.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5d12be4595afdf58bd19e4a9f4e24187da2a66700786ff660a418e9059937a4c" +dependencies = [ + "lazy-regex-proc_macros", + "once_cell", + "regex", +] + +[[package]] +name = "lazy-regex-proc_macros" +version = "3.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "44bcd58e6c97a7fcbaffcdc95728b393b8d98933bfadad49ed4097845b57ef0b" +dependencies = [ + "proc-macro2", + "quote", + "regex", + "syn 2.0.53", +] + +[[package]] +name = "lazy_static" +version = "1.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" + +[[package]] +name = "libc" +version = "0.2.153" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c198f91728a82281a64e1f4f9eeb25d82cb32a5de251c6bd1b5154d63a8e7bd" + +[[package]] +name = "libgit2-sys" +version = "0.16.2+1.7.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ee4126d8b4ee5c9d9ea891dd875cfdc1e9d0950437179104b183d7d8a74d24e8" +dependencies = [ + "cc", + "libc", + "libssh2-sys", + "libz-sys", + "openssl-sys", + "pkg-config", +] + +[[package]] +name = "libloading" +version = "0.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0c2a198fb6b0eada2a8df47933734e6d35d350665a33a3593d7164fa52c75c19" +dependencies = [ + "cfg-if", + "windows-targets 0.52.4", +] + +[[package]] +name = "libm" +version = "0.2.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4ec2a862134d2a7d32d7983ddcdd1c4923530833c9f2ea1a44fc5fa473989058" + +[[package]] +name = "libredox" +version = "0.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85c833ca1e66078851dba29046874e38f08b2c883700aa29a03ddd3b23814ee8" +dependencies = [ + "bitflags 2.5.0", + "libc", + "redox_syscall 0.4.1", +] + +[[package]] +name = "libssh2-sys" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2dc8a030b787e2119a731f1951d6a773e2280c660f8ec4b0f5e1505a386e71ee" +dependencies = [ + "cc", + "libc", + "libz-sys", + "openssl-sys", + "pkg-config", + "vcpkg", +] + +[[package]] +name = "libz-sys" +version = "1.1.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "037731f5d3aaa87a5675e895b63ddff1a87624bc29f77004ea829809654e48f6" +dependencies = [ + "cc", + "libc", + "pkg-config", + "vcpkg", +] + +[[package]] +name = "line-wrap" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f30344350a2a51da54c1d53be93fade8a237e545dbcc4bdbe635413f2117cab9" +dependencies = [ + "safemem", +] + +[[package]] +name = "linked-hash-map" +version = "0.5.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0717cef1bc8b636c6e1c1bbdefc09e6322da8a9321966e8928ef80d20f7f770f" + +[[package]] +name = "linux-keyutils" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "761e49ec5fd8a5a463f9b84e877c373d888935b71c6be78f3767fe2ae6bed18e" +dependencies = [ + "bitflags 2.5.0", + "libc", +] + +[[package]] +name = "linux-raw-sys" +version = "0.3.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ef53942eb7bf7ff43a617b3e2c1c4a5ecf5944a7c1bc12d7ee39bbb15e5c1519" + +[[package]] +name = "linux-raw-sys" +version = "0.4.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "01cda141df6706de531b6c46c3a33ecca755538219bd484262fa09410c13539c" + +[[package]] +name = "lock_api" +version = "0.4.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3c168f8615b12bc01f9c17e2eb0cc07dcae1940121185446edc3744920e8ef45" +dependencies = [ + "autocfg", + "scopeguard", +] + +[[package]] +name = "log" +version = "0.4.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "90ed8c1e510134f979dbc4f070f87d4313098b704861a105fe34231c70a3901c" + +[[package]] +name = "mailparse" +version = "0.14.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2d096594926cab442e054e047eb8c1402f7d5b2272573b97ba68aa40629f9757" +dependencies = [ + "charset", + "data-encoding", + "quoted_printable", +] + +[[package]] +name = "matchers" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8263075bb86c5a1b1427b5ae862e8889656f126e9f77c484496e8b47cf5c5558" +dependencies = [ + "regex-automata 0.1.10", +] + +[[package]] +name = "md-5" +version = "0.10.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d89e7ee0cfbedfc4da3340218492196241d89eefb6dab27de5df917a6d2e78cf" +dependencies = [ + "cfg-if", + "digest", +] + +[[package]] +name = "memchr" +version = "2.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "523dc4f511e55ab87b694dc30d0f820d60906ef06413f93d4d7a1385599cc149" + +[[package]] +name = "memmap2" +version = "0.5.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "83faa42c0a078c393f6b29d5db232d8be22776a891f8f56e5284faee4a20b327" +dependencies = [ + "libc", +] + +[[package]] +name = "memmap2" +version = "0.9.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fe751422e4a8caa417e13c3ea66452215d7d63e19e604f4980461212f3ae1322" +dependencies = [ + "libc", +] + +[[package]] +name = "memoffset" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5de893c32cde5f383baa4c04c5d6dbdd735cfd4a794b0debdb2bb1b421da5ff4" +dependencies = [ + "autocfg", +] + +[[package]] +name = "memoffset" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5a634b1c61a95585bd15607c6ab0c4e5b226e695ff2800ba0cdccddf208c406c" +dependencies = [ + "autocfg", +] + +[[package]] +name = "miette" +version = "5.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "59bb584eaeeab6bd0226ccf3509a69d7936d148cf3d036ad350abe35e8c6856e" +dependencies = [ + "miette-derive 5.10.0", + "once_cell", + "thiserror", + "unicode-width", +] + +[[package]] +name = "miette" +version = "7.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4edc8853320c2a0dab800fbda86253c8938f6ea88510dc92c5f1ed20e794afc1" +dependencies = [ + "backtrace", + "backtrace-ext", + "cfg-if", + "miette-derive 7.2.0", + "owo-colors", + "supports-color", + "supports-hyperlinks", + "supports-unicode", + "terminal_size", + "textwrap", + "thiserror", + "unicode-width", +] + +[[package]] +name = "miette-derive" +version = "5.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "49e7bc1560b95a3c4a25d03de42fe76ca718ab92d1a22a55b9b4cf67b3ae635c" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.53", +] + +[[package]] +name = "miette-derive" +version = "7.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dcf09caffaac8068c346b6df2a7fc27a177fd20b39421a39ce0a211bde679a6c" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.53", +] + +[[package]] +name = "mime" +version = "0.3.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" + +[[package]] +name = "mime_guess" +version = "2.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4192263c238a5f0d0c6bfd21f336a313a4ce1c450542449ca191bb657b4642ef" +dependencies = [ + "mime", + "unicase", +] + +[[package]] +name = "minijinja" +version = "1.0.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fe5b00f90b3542f74bb9aaaccd2627920c16367787de103883461365580e5481" +dependencies = [ + "serde", +] + +[[package]] +name = "minimal-lexical" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" + +[[package]] +name = "miniz_oxide" +version = "0.7.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9d811f3e15f28568be3407c8e7fdb6514c1cda3cb30683f15b6a1a1dc4ea14a7" +dependencies = [ + "adler", +] + +[[package]] +name = "mio" +version = "0.8.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a4a650543ca06a924e8b371db273b2756685faae30f8487da1b56505a8f78b0c" +dependencies = [ + "libc", + "wasi", + "windows-sys 0.48.0", +] + +[[package]] +name = "miow" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "359f76430b20a79f9e20e115b3428614e654f04fab314482fc0fda0ebd3c6044" +dependencies = [ + "windows-sys 0.48.0", +] + +[[package]] +name = "monch" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b52c1b33ff98142aecea13138bd399b68aa7ab5d9546c300988c345004001eea" + +[[package]] +name = "nanoid" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3ffa00dec017b5b1a8b7cf5e2c008bfda1aa7e0697ac1508b491fdf2622fb4d8" +dependencies = [ + "rand", +] + +[[package]] +name = "native-tls" +version = "0.2.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "07226173c32f2926027b63cce4bcd8076c3552846cbe7925f3aaffeac0a3b92e" +dependencies = [ + "lazy_static", + "libc", + "log", + "openssl", + "openssl-probe", + "openssl-sys", + "schannel", + "security-framework", + "security-framework-sys", + "tempfile", +] + +[[package]] +name = "netrc-rs" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ea2970fbbc8c785e8246234a7bd004ed66cd1ed1a35ec73669a92545e419b836" + +[[package]] +name = "nix" +version = "0.26.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "598beaf3cc6fdd9a5dfb1630c2800c7acd31df7aaf0f565796fba2b53ca1af1b" +dependencies = [ + "bitflags 1.3.2", + "cfg-if", + "libc", + "memoffset 0.7.1", +] + +[[package]] +name = "nix" +version = "0.28.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ab2156c4fce2f8df6c499cc1c763e4394b7482525bf2a9701c9d79d215f519e4" +dependencies = [ + "bitflags 2.5.0", + "cfg-if", + "cfg_aliases", + "libc", +] + +[[package]] +name = "nom" +version = "7.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d273983c5a657a70a3e8f2a01329822f3b8c8172b73826411a55751e404a0a4a" +dependencies = [ + "memchr", + "minimal-lexical", +] + +[[package]] +name = "ntapi" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e8a3895c6391c39d7fe7ebc444a87eb2991b2a0bc718fdabd071eec617fc68e4" +dependencies = [ + "winapi", +] + +[[package]] +name = "nu-ansi-term" +version = "0.46.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77a8165726e8236064dbb45459242600304b42a5ea24ee2948e18e023bf7ba84" +dependencies = [ + "overload", + "winapi", +] + +[[package]] +name = "num" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b05180d69e3da0e530ba2a1dae5110317e49e3b7f3d41be227dc5f92e49ee7af" +dependencies = [ + "num-bigint", + "num-complex", + "num-integer", + "num-iter", + "num-rational", + "num-traits", +] + +[[package]] +name = "num-bigint" +version = "0.4.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "608e7659b5c3d7cba262d894801b9ec9d00de989e8a82bd4bef91d08da45cdc0" +dependencies = [ + "autocfg", + "num-integer", + "num-traits", +] + +[[package]] +name = "num-complex" +version = "0.4.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "23c6602fda94a57c990fe0df199a035d83576b496aa29f4e634a8ac6004e68a6" +dependencies = [ + "num-traits", +] + +[[package]] +name = "num-conv" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "51d515d32fb182ee37cda2ccdcb92950d6a3c2893aa280e540671c2cd0f3b1d9" + +[[package]] +name = "num-integer" +version = "0.1.46" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7969661fd2958a5cb096e56c8e1ad0444ac2bbcd0061bd28660485a44879858f" +dependencies = [ + "num-traits", +] + +[[package]] +name = "num-iter" +version = "0.1.44" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d869c01cc0c455284163fd0092f1f93835385ccab5a98a0dcc497b2f8bf055a9" +dependencies = [ + "autocfg", + "num-integer", + "num-traits", +] + +[[package]] +name = "num-rational" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0638a1c9d0a3c0914158145bc76cff373a75a627e6ecbfb71cbe6f453a5a19b0" +dependencies = [ + "autocfg", + "num-bigint", + "num-integer", + "num-traits", +] + +[[package]] +name = "num-traits" +version = "0.2.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "da0df0e5185db44f69b44f26786fe401b6c293d1907744beaa7fa62b2e5a517a" +dependencies = [ + "autocfg", +] + +[[package]] +name = "num_cpus" +version = "1.16.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4161fcb6d602d4d2081af7c3a45852d875a03dd337a6bfdd6e06407b61342a43" +dependencies = [ + "hermit-abi", + "libc", +] + +[[package]] +name = "number_prefix" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "830b246a0e5f20af87141b25c173cd1b609bd7779a4617d6ec582abaf90870f3" + +[[package]] +name = "object" +version = "0.32.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a6a622008b6e321afc04970976f62ee297fdbaa6f95318ca343e3eebb9648441" +dependencies = [ + "memchr", +] + +[[package]] +name = "once-map" +version = "0.0.1" +source = "git+https://github.com/astral-sh/uv?tag=0.1.16#9f1452cb72e1da912f0653e398ac4ecb81244a82" +dependencies = [ + "dashmap", + "tokio", +] + +[[package]] +name = "once_cell" +version = "1.19.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92" + +[[package]] +name = "opaque-debug" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c08d65885ee38876c4f86fa503fb49d7b507c2b62552df7c70b2fce627e06381" + +[[package]] +name = "openssl" +version = "0.10.64" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "95a0481286a310808298130d22dd1fef0fa571e05a8f44ec801801e84b216b1f" +dependencies = [ + "bitflags 2.5.0", + "cfg-if", + "foreign-types", + "libc", + "once_cell", + "openssl-macros", + "openssl-sys", +] + +[[package]] +name = "openssl-macros" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.53", +] + +[[package]] +name = "openssl-probe" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf" + +[[package]] +name = "openssl-src" +version = "300.2.3+3.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5cff92b6f71555b61bb9315f7c64da3ca43d87531622120fea0195fc761b4843" +dependencies = [ + "cc", +] + +[[package]] +name = "openssl-sys" +version = "0.9.101" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dda2b0f344e78efc2facf7d195d098df0dd72151b26ab98da807afc26c198dff" +dependencies = [ + "cc", + "libc", + "openssl-src", + "pkg-config", + "vcpkg", +] + +[[package]] +name = "option-ext" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "04744f49eae99ab78e0d5c0b603ab218f515ea8cfe5a456d7629ad883a3b6e7d" + +[[package]] +name = "ordered-stream" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9aa2b01e1d916879f73a53d01d1d6cee68adbb31d6d9177a8cfce093cced1d50" +dependencies = [ + "futures-core", + "pin-project-lite", +] + +[[package]] +name = "os_pipe" +version = "1.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "57119c3b893986491ec9aa85056780d3a0f3cf4da7cc09dd3650dbd6c6738fb9" +dependencies = [ + "libc", + "windows-sys 0.52.0", +] + +[[package]] +name = "ouroboros" +version = "0.18.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "97b7be5a8a3462b752f4be3ff2b2bf2f7f1d00834902e46be2a4d68b87b0573c" +dependencies = [ + "aliasable", + "ouroboros_macro", + "static_assertions", +] + +[[package]] +name = "ouroboros_macro" +version = "0.18.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b645dcde5f119c2c454a92d0dfa271a2a3b205da92e4292a68ead4bdbfde1f33" +dependencies = [ + "heck 0.4.1", + "itertools", + "proc-macro2", + "proc-macro2-diagnostics", + "quote", + "syn 2.0.53", +] + +[[package]] +name = "overload" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b15813163c1d831bf4a13c3610c05c0d03b39feb07f7e09fa234dac9b15aaf39" + +[[package]] +name = "owo-colors" +version = "4.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "caff54706df99d2a78a5a4e3455ff45448d81ef1bb63c22cd14052ca0e993a3f" + +[[package]] +name = "parking" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bb813b8af86854136c6922af0598d719255ecb2179515e6e7730d468f05c9cae" + +[[package]] +name = "parking_lot" +version = "0.11.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7d17b78036a60663b797adeaee46f5c9dfebb86948d1255007a1d6be0271ff99" +dependencies = [ + "instant", + "lock_api", + "parking_lot_core 0.8.6", +] + +[[package]] +name = "parking_lot" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3742b2c103b9f06bc9fff0a37ff4912935851bee6d36f3c02bcc755bcfec228f" +dependencies = [ + "lock_api", + "parking_lot_core 0.9.9", +] + +[[package]] +name = "parking_lot_core" +version = "0.8.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "60a2cfe6f0ad2bfc16aefa463b497d5c7a5ecd44a23efa72aa342d90177356dc" +dependencies = [ + "cfg-if", + "instant", + "libc", + "redox_syscall 0.2.16", + "smallvec", + "winapi", +] + +[[package]] +name = "parking_lot_core" +version = "0.9.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4c42a9226546d68acdd9c0a280d17ce19bfe27a46bf68784e4066115788d008e" +dependencies = [ + "cfg-if", + "libc", + "redox_syscall 0.4.1", + "smallvec", + "windows-targets 0.48.5", +] + +[[package]] +name = "paste" +version = "1.0.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "de3145af08024dea9fa9914f381a17b8fc6034dfb00f3a84013f7ff43f29ed4c" + +[[package]] +name = "path-dedot" +version = "3.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "07ba0ad7e047712414213ff67533e6dd477af0a4e1d14fb52343e53d30ea9397" +dependencies = [ + "once_cell", +] + +[[package]] +name = "pathdiff" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8835116a5c179084a830efb3adc117ab007512b535bc1a21c991d3b32a6b44dd" + +[[package]] +name = "pep440_rs" +version = "0.5.0" +source = "git+https://github.com/astral-sh/uv?tag=0.1.16#9f1452cb72e1da912f0653e398ac4ecb81244a82" +dependencies = [ + "once_cell", + "pubgrub", + "rkyv", + "serde", + "unicode-width", + "unscanny", +] + +[[package]] +name = "pep508_rs" +version = "0.4.2" +source = "git+https://github.com/astral-sh/uv?tag=0.1.16#9f1452cb72e1da912f0653e398ac4ecb81244a82" +dependencies = [ + "derivative", + "once_cell", + "pep440_rs", + "regex", + "rkyv", + "serde", + "thiserror", + "unicode-width", + "url", + "uv-fs", + "uv-normalize", +] + +[[package]] +name = "percent-encoding" +version = "2.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e" + +[[package]] +name = "petgraph" +version = "0.6.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e1d3afd2628e69da2be385eb6f2fd57c8ac7977ceeff6dc166ff1657b0e386a9" +dependencies = [ + "fixedbitset", + "indexmap 2.2.5", +] + +[[package]] +name = "phf" +version = "0.11.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ade2d8b8f33c7333b51bcf0428d37e217e9f32192ae4772156f65063b8ce03dc" +dependencies = [ + "phf_macros", + "phf_shared", +] + +[[package]] +name = "phf_generator" +version = "0.11.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "48e4cc64c2ad9ebe670cb8fd69dd50ae301650392e81c05f9bfcb2d5bdbc24b0" +dependencies = [ + "phf_shared", + "rand", +] + +[[package]] +name = "phf_macros" +version = "0.11.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3444646e286606587e49f3bcf1679b8cef1dc2c5ecc29ddacaffc305180d464b" +dependencies = [ + "phf_generator", + "phf_shared", + "proc-macro2", + "quote", + "syn 2.0.53", + "unicase", +] + +[[package]] +name = "phf_shared" +version = "0.11.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "90fcb95eef784c2ac79119d1dd819e162b5da872ce6f3c3abe1e8ca1c082f72b" +dependencies = [ + "siphasher", + "unicase", +] + +[[package]] +name = "pin-project" +version = "1.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6bf43b791c5b9e34c3d182969b4abb522f9343702850a2e57f460d00d09b4b3" +dependencies = [ + "pin-project-internal", +] + +[[package]] +name = "pin-project-internal" +version = "1.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2f38a4412a78282e09a2cf38d195ea5420d15ba0602cb375210efbc877243965" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.53", +] + +[[package]] +name = "pin-project-lite" +version = "0.2.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8afb450f006bf6385ca15ef45d71d2288452bc3683ce2e2cacc0d18e4be60b58" + +[[package]] +name = "pin-utils" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" + +[[package]] +name = "piper" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "668d31b1c4eba19242f2088b2bf3316b82ca31082a8335764db4e083db7485d4" +dependencies = [ + "atomic-waker", + "fastrand 2.0.1", + "futures-io", +] + +[[package]] +name = "pixi" +version = "0.17.1" +dependencies = [ + "assert_matches", + "async-once-cell", + "cfg-if", + "chrono", + "clap", + "clap-verbosity-flag", + "clap_complete", + "console", + "crossbeam-channel", + "deno_task_shell", + "dialoguer", + "dirs", + "distribution-filename", + "distribution-types", + "dunce", + "flate2", + "futures", + "http-cache-reqwest", + "human_bytes", + "humantime", + "ignore", + "indexmap 2.2.5", + "indicatif", + "insta", + "install-wheel-rs", + "is_executable", + "itertools", + "lazy_static", + "libc", + "miette 7.2.0", + "minijinja", + "nix 0.28.0", + "once_cell", + "pep440_rs", + "pep508_rs", + "platform-host", + "platform-tags", + "pypi-types", + "rattler", + "rattler_conda_types", + "rattler_digest", + "rattler_lock", + "rattler_networking", + "rattler_repodata_gateway", + "rattler_shell", + "rattler_solve", + "rattler_virtual_packages", + "regex", + "reqwest", + "reqwest-middleware", + "reqwest-retry 0.4.0", + "rstest", + "self-replace", + "serde", + "serde-untagged", + "serde_json", + "serde_with", + "serde_yaml", + "serial_test", + "shlex", + "signal-hook", + "spdx", + "strsim 0.11.0", + "tabwriter", + "tar", + "tempfile", + "thiserror", + "tokio", + "tokio-util", + "toml", + "toml_edit 0.22.8", + "tracing", + "tracing-subscriber", + "url", + "uv-cache", + "uv-client", + "uv-dispatch", + "uv-distribution", + "uv-installer", + "uv-interpreter", + "uv-normalize", + "uv-resolver", + "uv-traits", + "xxhash-rust", + "zip", +] + +[[package]] +name = "pkg-config" +version = "0.3.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d231b230927b5e4ad203db57bbcbee2802f6bce620b1e4a9024a07d94e2907ec" + +[[package]] +name = "plain" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b4596b6d070b27117e987119b4dac604f3c58cfb0b191112e24771b2faeac1a6" + +[[package]] +name = "platform-host" +version = "0.0.1" +source = "git+https://github.com/astral-sh/uv?tag=0.1.16#9f1452cb72e1da912f0653e398ac4ecb81244a82" +dependencies = [ + "fs-err", + "goblin", + "once_cell", + "platform-info", + "plist", + "regex", + "serde", + "target-lexicon", + "thiserror", + "tracing", +] + +[[package]] +name = "platform-info" +version = "2.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d6259c4860e53bf665016f1b2f46a8859cadfa717581dc9d597ae4069de6300f" +dependencies = [ + "libc", + "winapi", +] + +[[package]] +name = "platform-tags" +version = "0.0.1" +source = "git+https://github.com/astral-sh/uv?tag=0.1.16#9f1452cb72e1da912f0653e398ac4ecb81244a82" +dependencies = [ + "platform-host", + "rustc-hash", + "thiserror", +] + +[[package]] +name = "plist" +version = "1.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e5699cc8a63d1aa2b1ee8e12b9ad70ac790d65788cd36101fa37f87ea46c4cef" +dependencies = [ + "base64 0.21.7", + "indexmap 2.2.5", + "line-wrap", + "quick-xml", + "serde", + "time", +] + +[[package]] +name = "polling" +version = "2.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4b2d323e8ca7996b3e23126511a523f7e62924d93ecd5ae73b333815b0eb3dce" +dependencies = [ + "autocfg", + "bitflags 1.3.2", + "cfg-if", + "concurrent-queue", + "libc", + "log", + "pin-project-lite", + "windows-sys 0.48.0", +] + +[[package]] +name = "polling" +version = "3.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "24f040dee2588b4963afb4e420540439d126f73fdacf4a9c486a96d840bac3c9" +dependencies = [ + "cfg-if", + "concurrent-queue", + "pin-project-lite", + "rustix 0.38.32", + "tracing", + "windows-sys 0.52.0", +] + +[[package]] +name = "portable-atomic" +version = "1.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7170ef9988bc169ba16dd36a7fa041e5c4cbeb6a35b76d4c03daded371eae7c0" + +[[package]] +name = "powerfmt" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391" + +[[package]] +name = "ppv-lite86" +version = "0.2.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de" + +[[package]] +name = "priority-queue" +version = "1.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a0bda9164fe05bc9225752d54aae413343c36f684380005398a6a8fde95fe785" +dependencies = [ + "autocfg", + "indexmap 1.9.3", +] + +[[package]] +name = "proc-macro-crate" +version = "1.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f4c021e1093a56626774e81216a4ce732a735e5bad4868a03f3ed65ca0c3919" +dependencies = [ + "once_cell", + "toml_edit 0.19.15", +] + +[[package]] +name = "proc-macro2" +version = "1.0.79" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e835ff2298f5721608eb1a980ecaee1aef2c132bf95ecc026a11b7bf3c01c02e" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "proc-macro2-diagnostics" +version = "0.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "af066a9c399a26e020ada66a034357a868728e72cd426f3adcd35f80d88d88c8" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.53", + "version_check", + "yansi", +] + +[[package]] +name = "ptr_meta" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0738ccf7ea06b608c10564b31debd4f5bc5e197fc8bfe088f68ae5ce81e7a4f1" +dependencies = [ + "ptr_meta_derive", +] + +[[package]] +name = "ptr_meta_derive" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "16b845dbfca988fa33db069c0e230574d15a3088f147a87b64c7589eb662c9ac" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "pubgrub" +version = "0.2.1" +source = "git+https://github.com/zanieb/pubgrub?rev=332f02b0e436ca8449c7ef5e15b992dd5f35908b#332f02b0e436ca8449c7ef5e15b992dd5f35908b" +dependencies = [ + "indexmap 2.2.5", + "log", + "priority-queue", + "rustc-hash", + "thiserror", +] + +[[package]] +name = "purl" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d153044e55fb5c0a6f0f0f974c3335d15a842263ba4b208d2656120fe530a5ab" +dependencies = [ + "hex", + "percent-encoding", + "phf", + "serde", + "smartstring", + "thiserror", + "unicase", +] + +[[package]] +name = "pypi-types" +version = "0.0.1" +source = "git+https://github.com/astral-sh/uv?tag=0.1.16#9f1452cb72e1da912f0653e398ac4ecb81244a82" +dependencies = [ + "chrono", + "mailparse", + "once_cell", + "pep440_rs", + "pep508_rs", + "regex", + "rkyv", + "serde", + "thiserror", + "tracing", + "url", + "uv-normalize", +] + +[[package]] +name = "pyproject-toml" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3b80f889b6d413c3f8963a2c7db03f95dd6e1d85e1074137cb2013ea2faa8898" +dependencies = [ + "indexmap 2.2.5", + "pep440_rs", + "pep508_rs", + "serde", + "toml", +] + +[[package]] +name = "quick-xml" +version = "0.31.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1004a344b30a54e2ee58d66a71b32d2db2feb0a31f9a2d302bf0536f15de2a33" +dependencies = [ + "memchr", +] + +[[package]] +name = "quote" +version = "1.0.35" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "291ec9ab5efd934aaf503a6466c5d5251535d108ee747472c3977cc5acc868ef" +dependencies = [ + "proc-macro2", +] + +[[package]] +name = "quoted_printable" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "79ec282e887b434b68c18fe5c121d38e72a5cf35119b59e54ec5b992ea9c8eb0" + +[[package]] +name = "radium" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc33ff2d4973d518d823d61aa239014831e521c75da58e3df4840d3f47749d09" + +[[package]] +name = "rand" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" +dependencies = [ + "libc", + "rand_chacha", + "rand_core", +] + +[[package]] +name = "rand_chacha" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" +dependencies = [ + "ppv-lite86", + "rand_core", +] + +[[package]] +name = "rand_core" +version = "0.6.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" +dependencies = [ + "getrandom", +] + +[[package]] +name = "rattler" +version = "0.19.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a6fbcaa02a723f289c6ca6a23b923dfc7172d5686428e519e5c5667d21b602b2" +dependencies = [ + "anyhow", + "async-compression", + "bytes", + "chrono", + "clap", + "digest", + "dirs", + "drop_bomb", + "fs-err", + "futures", + "fxhash", + "hex", + "indexmap 2.2.5", + "itertools", + "memchr", + "memmap2 0.9.4", + "nom", + "once_cell", + "pin-project-lite", + "rattler_conda_types", + "rattler_digest", + "rattler_networking", + "rattler_package_streaming", + "reflink-copy", + "regex", + "reqwest", + "reqwest-middleware", + "serde", + "serde_json", + "serde_with", + "smallvec", + "tempfile", + "thiserror", + "tokio", + "tokio-stream", + "tokio-util", + "tracing", + "url", + "uuid", +] + +[[package]] +name = "rattler_conda_types" +version = "0.20.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "33f37815d9f04d8a286cfb4147cae9fcd1db9711f0d34bba7c610e1704da125f" +dependencies = [ + "chrono", + "fxhash", + "glob", + "hex", + "indexmap 2.2.5", + "itertools", + "lazy-regex", + "nom", + "purl", + "rattler_digest", + "rattler_macros", + "regex", + "serde", + "serde_json", + "serde_repr", + "serde_with", + "serde_yaml", + "smallvec", + "strum", + "thiserror", + "tracing", + "url", +] + +[[package]] +name = "rattler_digest" +version = "0.19.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1a15f14fa0e0fdf3fbacabd21d66a3d6b15af5c7c0cda2e0e29bd6605dec4569" +dependencies = [ + "blake2", + "digest", + "hex", + "md-5", + "serde", + "serde_with", + "sha2", + "tokio", +] + +[[package]] +name = "rattler_lock" +version = "0.20.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3c8c0a1ed2bef78da6df4625193b93940d172565c99cfe2647d795db136c5b8b" +dependencies = [ + "chrono", + "fxhash", + "indexmap 2.2.5", + "itertools", + "pep440_rs", + "pep508_rs", + "purl", + "rattler_conda_types", + "rattler_digest", + "serde", + "serde-json-python-formatter", + "serde_json", + "serde_with", + "serde_yaml", + "thiserror", + "url", +] + +[[package]] +name = "rattler_macros" +version = "0.19.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c7f6c3aedd4fa6a50b41be9537c8abc7190ae24f1b0add0ab722275fa0ec8d6d" +dependencies = [ + "quote", + "syn 2.0.53", +] + +[[package]] +name = "rattler_networking" +version = "0.19.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "92f944900e1008d0760ccbd8a4989e32207728826fc1e2f7c2f639f917739bce" +dependencies = [ + "anyhow", + "async-trait", + "base64 0.21.7", + "chrono", + "dirs", + "fslock", + "getrandom", + "http", + "itertools", + "keyring", + "lazy_static", + "libc", + "netrc-rs", + "once_cell", + "reqwest", + "reqwest-middleware", + "retry-policies 0.3.0", + "serde", + "serde_json", + "task-local-extensions", + "thiserror", + "tracing", + "url", +] + +[[package]] +name = "rattler_package_streaming" +version = "0.20.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "78d226a0aa9317c35d244fc991e77552331007801a6b1a6d63a22325f870c709" +dependencies = [ + "bzip2", + "chrono", + "futures-util", + "itertools", + "num_cpus", + "rattler_conda_types", + "rattler_digest", + "rattler_networking", + "reqwest", + "reqwest-middleware", + "serde_json", + "tar", + "tempfile", + "thiserror", + "tokio", + "tokio-util", + "url", + "zip", + "zstd", +] + +[[package]] +name = "rattler_repodata_gateway" +version = "0.19.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b89b63a9fa257cefed44e3de10e95987bf29bfaeb376abd0b40ee33ff0d4a391" +dependencies = [ + "anyhow", + "async-compression", + "blake2", + "cache_control", + "chrono", + "futures", + "hex", + "humansize", + "humantime", + "itertools", + "json-patch", + "libc", + "md-5", + "memmap2 0.9.4", + "ouroboros", + "pin-project-lite", + "rattler_conda_types", + "rattler_digest", + "rattler_networking", + "reqwest", + "reqwest-middleware", + "serde", + "serde_json", + "serde_with", + "superslice", + "tempfile", + "thiserror", + "tokio", + "tokio-util", + "tracing", + "url", + "windows-sys 0.52.0", +] + +[[package]] +name = "rattler_shell" +version = "0.19.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4b7c92c8397fe02a27cb7cbbbc39a95246e2dd479e13455f0e402e290a475792" +dependencies = [ + "enum_dispatch", + "indexmap 2.2.5", + "itertools", + "rattler_conda_types", + "serde_json", + "shlex", + "sysinfo", + "tempfile", + "thiserror", + "tracing", +] + +[[package]] +name = "rattler_solve" +version = "0.20.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8eecfc2cc975fd3eb54753e3e894ee69a92d1cdb8ef73e99a4526704e72aa368" +dependencies = [ + "anyhow", + "chrono", + "futures", + "hex", + "itertools", + "rattler_conda_types", + "rattler_digest", + "resolvo", + "serde", + "tempfile", + "thiserror", + "tracing", + "url", +] + +[[package]] +name = "rattler_virtual_packages" +version = "0.19.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b916c2861f98dc500d1c0120e6db60560f4b5a8a5afe1b972d613b6ca24e103a" +dependencies = [ + "cfg-if", + "libloading", + "nom", + "once_cell", + "plist", + "rattler_conda_types", + "regex", + "serde", + "thiserror", + "tracing", +] + +[[package]] +name = "rayon" +version = "1.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e4963ed1bc86e4f3ee217022bd855b297cef07fb9eac5dfa1f788b220b49b3bd" +dependencies = [ + "either", + "rayon-core", +] + +[[package]] +name = "rayon-core" +version = "1.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1465873a3dfdaa8ae7cb14b4383657caab0b3e8a0aa9ae8e04b044854c8dfce2" +dependencies = [ + "crossbeam-deque", + "crossbeam-utils", +] + +[[package]] +name = "redox_syscall" +version = "0.2.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fb5a58c1855b4b6819d59012155603f0b22ad30cad752600aadfcb695265519a" +dependencies = [ + "bitflags 1.3.2", +] + +[[package]] +name = "redox_syscall" +version = "0.3.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "567664f262709473930a4bf9e51bf2ebf3348f2e748ccc50dea20646858f8f29" +dependencies = [ + "bitflags 1.3.2", +] + +[[package]] +name = "redox_syscall" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4722d768eff46b75989dd134e5c353f0d6296e5aaa3132e776cbdb56be7731aa" +dependencies = [ + "bitflags 1.3.2", +] + +[[package]] +name = "redox_users" +version = "0.4.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a18479200779601e498ada4e8c1e1f50e3ee19deb0259c25825a98b5603b2cb4" +dependencies = [ + "getrandom", + "libredox", + "thiserror", +] + +[[package]] +name = "reflink-copy" +version = "0.1.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "52b1349400e2ffd64a9fb5ed9008e33c0b8ef86bd5bae8f73080839c7082f1d5" +dependencies = [ + "cfg-if", + "rustix 0.38.32", + "windows 0.54.0", +] + +[[package]] +name = "regex" +version = "1.10.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b62dbe01f0b06f9d8dc7d49e05a0785f153b00b2c227856282f671e0318c9b15" +dependencies = [ + "aho-corasick", + "memchr", + "regex-automata 0.4.6", + "regex-syntax 0.8.2", +] + +[[package]] +name = "regex-automata" +version = "0.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c230d73fb8d8c1b9c0b3135c5142a8acee3a0558fb8db5cf1cb65f8d7862132" +dependencies = [ + "regex-syntax 0.6.29", +] + +[[package]] +name = "regex-automata" +version = "0.4.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "86b83b8b9847f9bf95ef68afb0b8e6cdb80f498442f5179a29fad448fcc1eaea" +dependencies = [ + "aho-corasick", + "memchr", + "regex-syntax 0.8.2", +] + +[[package]] +name = "regex-syntax" +version = "0.6.29" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f162c6dd7b008981e4d40210aca20b4bd0f9b60ca9271061b07f78537722f2e1" + +[[package]] +name = "regex-syntax" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c08c74e62047bb2de4ff487b251e4a92e24f48745648451635cec7d591162d9f" + +[[package]] +name = "relative-path" +version = "1.9.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e898588f33fdd5b9420719948f9f2a32c922a246964576f71ba7f24f80610fbc" + +[[package]] +name = "rend" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "71fe3824f5629716b1589be05dacd749f6aa084c87e00e016714a8cdfccc997c" +dependencies = [ + "bytecheck", +] + +[[package]] +name = "requirements-txt" +version = "0.0.1" +source = "git+https://github.com/astral-sh/uv?tag=0.1.16#9f1452cb72e1da912f0653e398ac4ecb81244a82" +dependencies = [ + "async-recursion", + "fs-err", + "once_cell", + "pep440_rs", + "pep508_rs", + "regex", + "serde", + "thiserror", + "tracing", + "unscanny", + "url", + "uv-client", + "uv-fs", + "uv-normalize", + "uv-warnings", +] + +[[package]] +name = "reqwest" +version = "0.11.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dd67538700a17451e7cba03ac727fb961abb7607553461627b97de0b89cf4a62" +dependencies = [ + "async-compression", + "base64 0.21.7", + "bytes", + "encoding_rs", + "futures-core", + "futures-util", + "h2", + "http", + "http-body", + "hyper", + "hyper-rustls", + "hyper-tls", + "ipnet", + "js-sys", + "log", + "mime", + "mime_guess", + "native-tls", + "once_cell", + "percent-encoding", + "pin-project-lite", + "rustls", + "rustls-native-certs", + "rustls-pemfile", + "serde", + "serde_json", + "serde_urlencoded", + "sync_wrapper", + "system-configuration", + "tokio", + "tokio-native-tls", + "tokio-rustls", + "tokio-util", + "tower-service", + "url", + "wasm-bindgen", + "wasm-bindgen-futures", + "wasm-streams", + "web-sys", + "webpki-roots", + "winreg", +] + +[[package]] +name = "reqwest-middleware" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5a735987236a8e238bf0296c7e351b999c188ccc11477f311b82b55c93984216" +dependencies = [ + "anyhow", + "async-trait", + "http", + "reqwest", + "serde", + "task-local-extensions", + "thiserror", +] + +[[package]] +name = "reqwest-netrc" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eca0c58cd4b2978f9697dea94302e772399f559cd175356eb631cb6daaa0b6db" +dependencies = [ + "reqwest-middleware", + "rust-netrc", +] + +[[package]] +name = "reqwest-retry" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9af20b65c2ee9746cc575acb6bd28a05ffc0d15e25c992a8f4462d8686aacb4f" +dependencies = [ + "anyhow", + "async-trait", + "chrono", + "futures", + "getrandom", + "http", + "hyper", + "parking_lot 0.11.2", + "reqwest", + "reqwest-middleware", + "retry-policies 0.2.1", + "task-local-extensions", + "tokio", + "tracing", + "wasm-timer", +] + +[[package]] +name = "reqwest-retry" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cadced6a67c5c2d1c819cc2d7e6ddf066f32b9b6a04f8866203ceeb44b79c37f" +dependencies = [ + "anyhow", + "async-trait", + "chrono", + "futures", + "getrandom", + "http", + "hyper", + "parking_lot 0.11.2", + "reqwest", + "reqwest-middleware", + "retry-policies 0.3.0", + "task-local-extensions", + "tokio", + "tracing", + "wasm-timer", +] + +[[package]] +name = "resolvo" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2016584c3fd9df0fd859a7dcbc7fafdc7fdd2d87b53a576e8e63e62fad140e33" +dependencies = [ + "bitvec", + "elsa", + "event-listener 5.2.0", + "futures", + "itertools", + "petgraph", + "tracing", +] + +[[package]] +name = "retry-policies" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "17dd00bff1d737c40dbcd47d4375281bf4c17933f9eef0a185fc7bacca23ecbd" +dependencies = [ + "anyhow", + "chrono", + "rand", +] + +[[package]] +name = "retry-policies" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "493b4243e32d6eedd29f9a398896e35c6943a123b55eec97dcaee98310d25810" +dependencies = [ + "anyhow", + "chrono", + "rand", +] + +[[package]] +name = "ring" +version = "0.17.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c17fa4cb658e3583423e915b9f3acc01cceaee1860e33d59ebae66adc3a2dc0d" +dependencies = [ + "cc", + "cfg-if", + "getrandom", + "libc", + "spin", + "untrusted", + "windows-sys 0.52.0", +] + +[[package]] +name = "rkyv" +version = "0.7.44" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5cba464629b3394fc4dbc6f940ff8f5b4ff5c7aef40f29166fd4ad12acbc99c0" +dependencies = [ + "bitvec", + "bytecheck", + "bytes", + "hashbrown 0.12.3", + "ptr_meta", + "rend", + "rkyv_derive", + "seahash", + "tinyvec", + "uuid", +] + +[[package]] +name = "rkyv_derive" +version = "0.7.44" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a7dddfff8de25e6f62b9d64e6e432bf1c6736c57d20323e15ee10435fbda7c65" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "rmp" +version = "0.8.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f9860a6cc38ed1da53456442089b4dfa35e7cedaa326df63017af88385e6b20" +dependencies = [ + "byteorder", + "num-traits", + "paste", +] + +[[package]] +name = "rmp-serde" +version = "1.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bffea85eea980d8a74453e5d02a8d93028f3c34725de143085a844ebe953258a" +dependencies = [ + "byteorder", + "rmp", + "serde", +] + +[[package]] +name = "rstest" +version = "0.18.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "97eeab2f3c0a199bc4be135c36c924b6590b88c377d416494288c14f2db30199" +dependencies = [ + "futures", + "futures-timer", + "rstest_macros", + "rustc_version", +] + +[[package]] +name = "rstest_macros" +version = "0.18.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d428f8247852f894ee1be110b375111b586d4fa431f6c46e64ba5a0dcccbe605" +dependencies = [ + "cfg-if", + "glob", + "proc-macro2", + "quote", + "regex", + "relative-path", + "rustc_version", + "syn 2.0.53", + "unicode-ident", +] + +[[package]] +name = "rust-netrc" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32662f97cbfdbad9d5f78f1338116f06871e7dae4fd37e9f59a0f57cf2044868" +dependencies = [ + "thiserror", +] + +[[package]] +name = "rustc-demangle" +version = "0.1.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d626bb9dae77e28219937af045c257c28bfd3f69333c512553507f5f9798cb76" + +[[package]] +name = "rustc-hash" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2" + +[[package]] +name = "rustc_version" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bfa0f585226d2e68097d4f95d113b15b83a82e819ab25717ec0590d9584ef366" +dependencies = [ + "semver", +] + +[[package]] +name = "rustix" +version = "0.37.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fea8ca367a3a01fe35e6943c400addf443c0f57670e6ec51196f71a4b8762dd2" +dependencies = [ + "bitflags 1.3.2", + "errno", + "io-lifetimes", + "libc", + "linux-raw-sys 0.3.8", + "windows-sys 0.48.0", +] + +[[package]] +name = "rustix" +version = "0.38.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "65e04861e65f21776e67888bfbea442b3642beaa0138fdb1dd7a84a52dffdb89" +dependencies = [ + "bitflags 2.5.0", + "errno", + "libc", + "linux-raw-sys 0.4.13", + "windows-sys 0.52.0", +] + +[[package]] +name = "rustls" +version = "0.21.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f9d5a6813c0759e4609cd494e8e725babae6a2ca7b62a5536a13daaec6fcb7ba" +dependencies = [ + "log", + "ring", + "rustls-webpki", + "sct", +] + +[[package]] +name = "rustls-native-certs" +version = "0.6.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a9aace74cb666635c918e9c12bc0d348266037aa8eb599b5cba565709a8dff00" +dependencies = [ + "openssl-probe", + "rustls-pemfile", + "schannel", + "security-framework", +] + +[[package]] +name = "rustls-pemfile" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1c74cae0a4cf6ccbbf5f359f08efdf8ee7e1dc532573bf0db71968cb56b1448c" +dependencies = [ + "base64 0.21.7", +] + +[[package]] +name = "rustls-webpki" +version = "0.101.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b6275d1ee7a1cd780b64aca7726599a1dbc893b1e64144529e55c3c2f745765" +dependencies = [ + "ring", + "untrusted", +] + +[[package]] +name = "rustversion" +version = "1.0.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7ffc183a10b4478d04cbbbfc96d0873219d962dd5accaff2ffbd4ceb7df837f4" + +[[package]] +name = "ryu" +version = "1.0.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e86697c916019a8588c99b5fac3cead74ec0b4b819707a682fd4d23fa0ce1ba1" + +[[package]] +name = "safemem" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ef703b7cb59335eae2eb93ceb664c0eb7ea6bf567079d843e09420219668e072" + +[[package]] +name = "same-file" +version = "1.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502" +dependencies = [ + "winapi-util", +] + +[[package]] +name = "schannel" +version = "0.1.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fbc91545643bcf3a0bbb6569265615222618bdf33ce4ffbbd13c4bbd4c093534" +dependencies = [ + "windows-sys 0.52.0", +] + +[[package]] +name = "scopeguard" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" + +[[package]] +name = "scroll" +version = "0.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6ab8598aa408498679922eff7fa985c25d58a90771bd6be794434c5277eab1a6" +dependencies = [ + "scroll_derive", +] + +[[package]] +name = "scroll_derive" +version = "0.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f81c2fde025af7e69b1d1420531c8a8811ca898919db177141a85313b1cb932" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.53", +] + +[[package]] +name = "sct" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "da046153aa2352493d6cb7da4b6e5c0c057d8a1d0a9aa8560baffdd945acd414" +dependencies = [ + "ring", + "untrusted", +] + +[[package]] +name = "seahash" +version = "4.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1c107b6f4780854c8b126e228ea8869f4d7b71260f962fefb57b996b8959ba6b" + +[[package]] +name = "secret-service" +version = "3.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5da1a5ad4d28c03536f82f77d9f36603f5e37d8869ac98f0a750d5b5686d8d95" +dependencies = [ + "aes", + "block-modes", + "futures-util", + "generic-array", + "hkdf", + "num", + "once_cell", + "rand", + "serde", + "sha2", + "zbus", +] + +[[package]] +name = "security-framework" +version = "2.9.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "05b64fb303737d99b81884b2c63433e9ae28abebe5eb5045dcdd175dc2ecf4de" +dependencies = [ + "bitflags 1.3.2", + "core-foundation", + "core-foundation-sys", + "libc", + "security-framework-sys", +] + +[[package]] +name = "security-framework-sys" +version = "2.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e932934257d3b408ed8f30db49d85ea163bfe74961f017f405b025af298f0c7a" +dependencies = [ + "core-foundation-sys", + "libc", +] + +[[package]] +name = "self-replace" +version = "1.3.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "525db198616b2bcd0f245daf7bfd8130222f7ee6af9ff9984c19a61bf1160c55" +dependencies = [ + "fastrand 1.9.0", + "tempfile", + "windows-sys 0.48.0", +] + +[[package]] +name = "semver" +version = "1.0.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "92d43fe69e652f3df9bdc2b85b2854a0825b86e4fb76bc44d945137d053639ca" + +[[package]] +name = "serde" +version = "1.0.197" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3fb1c873e1b9b056a4dc4c0c198b24c3ffa059243875552b2bd0933b1aee4ce2" +dependencies = [ + "serde_derive", +] + +[[package]] +name = "serde-json-python-formatter" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "db62ee54077c67a8cff258c919175f0b3cb78d2b6dcafb0d166ff98dcb21aa5d" +dependencies = [ + "serde_json", +] + +[[package]] +name = "serde-untagged" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6a160535368dfc353348e7eaa299156bd508c60c45a9249725f5f6d370d82a66" +dependencies = [ + "erased-serde", + "serde", +] + +[[package]] +name = "serde_derive" +version = "1.0.197" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7eb0b34b42edc17f6b7cac84a52a1c5f0e1bb2227e997ca9011ea3dd34e8610b" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.53", +] + +[[package]] +name = "serde_json" +version = "1.0.114" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c5f09b1bd632ef549eaa9f60a1f8de742bdbc698e6cee2095fc84dde5f549ae0" +dependencies = [ + "indexmap 2.2.5", + "itoa", + "ryu", + "serde", +] + +[[package]] +name = "serde_repr" +version = "0.1.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b2e6b945e9d3df726b65d6ee24060aff8e3533d431f677a9695db04eff9dfdb" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.53", +] + +[[package]] +name = "serde_spanned" +version = "0.6.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eb3622f419d1296904700073ea6cc23ad690adbd66f13ea683df73298736f0c1" +dependencies = [ + "serde", +] + +[[package]] +name = "serde_urlencoded" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3491c14715ca2294c4d6a88f15e84739788c1d030eed8c110436aafdaa2f3fd" +dependencies = [ + "form_urlencoded", + "itoa", + "ryu", + "serde", +] + +[[package]] +name = "serde_with" +version = "3.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ee80b0e361bbf88fd2f6e242ccd19cfda072cb0faa6ae694ecee08199938569a" +dependencies = [ + "base64 0.21.7", + "chrono", + "hex", + "indexmap 1.9.3", + "indexmap 2.2.5", + "serde", + "serde_derive", + "serde_json", + "serde_with_macros", + "time", +] + +[[package]] +name = "serde_with_macros" +version = "3.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6561dc161a9224638a31d876ccdfefbc1df91d3f3a8342eddb35f055d48c7655" +dependencies = [ + "darling", + "proc-macro2", + "quote", + "syn 2.0.53", +] + +[[package]] +name = "serde_yaml" +version = "0.9.33" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a0623d197252096520c6f2a5e1171ee436e5af99a5d7caa2891e55e61950e6d9" +dependencies = [ + "indexmap 2.2.5", + "itoa", + "ryu", + "serde", + "unsafe-libyaml", +] + +[[package]] +name = "serial_test" +version = "3.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "953ad9342b3aaca7cb43c45c097dd008d4907070394bd0751a0aa8817e5a018d" +dependencies = [ + "dashmap", + "futures", + "lazy_static", + "log", + "parking_lot 0.12.1", + "serial_test_derive", +] + +[[package]] +name = "serial_test_derive" +version = "3.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b93fb4adc70021ac1b47f7d45e8cc4169baaa7ea58483bc5b721d19a26202212" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.53", +] + +[[package]] +name = "sha-1" +version = "0.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f5058ada175748e33390e40e872bd0fe59a19f265d0158daa551c5a88a76009c" +dependencies = [ + "cfg-if", + "cpufeatures", + "digest", +] + +[[package]] +name = "sha1" +version = "0.10.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3bf829a2d51ab4a5ddf1352d8470c140cadc8301b2ae1789db023f01cedd6ba" +dependencies = [ + "cfg-if", + "cpufeatures", + "digest", +] + +[[package]] +name = "sha2" +version = "0.10.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "793db75ad2bcafc3ffa7c68b215fee268f537982cd901d132f89c6343f3a3dc8" +dependencies = [ + "cfg-if", + "cpufeatures", + "digest", +] + +[[package]] +name = "sharded-slab" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f40ca3c46823713e0d4209592e8d6e826aa57e928f09752619fc696c499637f6" +dependencies = [ + "lazy_static", +] + +[[package]] +name = "shell-escape" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "45bb67a18fa91266cc7807181f62f9178a6873bfad7dc788c42e6430db40184f" + +[[package]] +name = "shell-words" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "24188a676b6ae68c3b2cb3a01be17fbf7240ce009799bb56d5b1409051e78fde" + +[[package]] +name = "shlex" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" + +[[package]] +name = "signal-hook" +version = "0.3.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8621587d4798caf8eb44879d42e56b9a93ea5dcd315a6487c357130095b62801" +dependencies = [ + "libc", + "signal-hook-registry", +] + +[[package]] +name = "signal-hook-registry" +version = "1.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d8229b473baa5980ac72ef434c4415e70c4b5e71b423043adb4ba059f89c99a1" +dependencies = [ + "libc", +] + +[[package]] +name = "simdutf8" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f27f6278552951f1f2b8cf9da965d10969b2efdea95a6ec47987ab46edfe263a" + +[[package]] +name = "similar" +version = "2.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32fea41aca09ee824cc9724996433064c89f7777e60762749a4170a14abbfa21" + +[[package]] +name = "siphasher" +version = "0.3.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "38b58827f4464d87d377d175e90bf58eb00fd8716ff0a62f80356b5e61555d0d" + +[[package]] +name = "slab" +version = "0.4.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f92a496fb766b417c996b9c5e57daf2f7ad3b0bebe1ccfca4856390e3d3bb67" +dependencies = [ + "autocfg", +] + +[[package]] +name = "smallvec" +version = "1.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6ecd384b10a64542d77071bd64bd7b231f4ed5940fba55e98c3de13824cf3d7" +dependencies = [ + "serde", +] + +[[package]] +name = "smartstring" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3fb72c633efbaa2dd666986505016c32c3044395ceaf881518399d2f4127ee29" +dependencies = [ + "autocfg", + "static_assertions", + "version_check", +] + +[[package]] +name = "smawk" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b7c388c1b5e93756d0c740965c41e8822f866621d41acbdf6336a6a168f8840c" + +[[package]] +name = "socket2" +version = "0.4.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9f7916fc008ca5542385b89a3d3ce689953c143e9304a9bf8beec1de48994c0d" +dependencies = [ + "libc", + "winapi", +] + +[[package]] +name = "socket2" +version = "0.5.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "05ffd9c0a93b7543e062e759284fcf5f5e3b098501104bfbdde4d404db792871" +dependencies = [ + "libc", + "windows-sys 0.52.0", +] + +[[package]] +name = "spdx" +version = "0.10.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "29ef1a0fa1e39ac22972c8db23ff89aea700ab96aa87114e1fb55937a631a0c9" +dependencies = [ + "smallvec", +] + +[[package]] +name = "spin" +version = "0.9.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6980e8d7511241f8acf4aebddbb1ff938df5eebe98691418c4468d0b72a96a67" + +[[package]] +name = "ssri" +version = "9.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "da7a2b3c2bc9693bcb40870c4e9b5bf0d79f9cb46273321bf855ec513e919082" +dependencies = [ + "base64 0.21.7", + "digest", + "hex", + "miette 5.10.0", + "serde", + "sha-1", + "sha2", + "thiserror", + "xxhash-rust", +] + +[[package]] +name = "stable_deref_trait" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3" + +[[package]] +name = "static_assertions" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f" + +[[package]] +name = "strsim" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "73473c0e59e6d5812c5dfe2a064a6444949f089e20eec9a2e5506596494e4623" + +[[package]] +name = "strsim" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5ee073c9e4cd00e28217186dbe12796d692868f432bf2e97ee73bed0c56dfa01" + +[[package]] +name = "strum" +version = "0.26.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5d8cec3501a5194c432b2b7976db6b7d10ec95c253208b45f83f7136aa985e29" +dependencies = [ + "strum_macros", +] + +[[package]] +name = "strum_macros" +version = "0.26.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c6cf59daf282c0a494ba14fd21610a0325f9f90ec9d1231dea26bcb1d696c946" +dependencies = [ + "heck 0.4.1", + "proc-macro2", + "quote", + "rustversion", + "syn 2.0.53", +] + +[[package]] +name = "subtle" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "81cdd64d312baedb58e21336b31bc043b77e01cc99033ce76ef539f78e965ebc" + +[[package]] +name = "superslice" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ab16ced94dbd8a46c82fd81e3ed9a8727dac2977ea869d217bcc4ea1f122e81f" + +[[package]] +name = "supports-color" +version = "3.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9829b314621dfc575df4e409e79f9d6a66a3bd707ab73f23cb4aa3a854ac854f" +dependencies = [ + "is_ci", +] + +[[package]] +name = "supports-hyperlinks" +version = "3.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2c0a1e5168041f5f3ff68ff7d95dcb9c8749df29f6e7e89ada40dd4c9de404ee" + +[[package]] +name = "supports-unicode" +version = "3.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b7401a30af6cb5818bb64852270bb722533397edcfc7344954a38f420819ece2" + +[[package]] +name = "syn" +version = "1.0.109" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "syn" +version = "2.0.53" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7383cd0e49fff4b6b90ca5670bfd3e9d6a733b3f90c686605aa7eec8c4996032" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "sync_wrapper" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2047c6ded9c721764247e62cd3b03c09ffc529b2ba5b10ec482ae507a4a70160" + +[[package]] +name = "sysinfo" +version = "0.30.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0c385888ef380a852a16209afc8cfad22795dd8873d69c9a14d2e2088f118d18" +dependencies = [ + "cfg-if", + "core-foundation-sys", + "libc", + "ntapi", + "once_cell", + "rayon", + "windows 0.52.0", +] + +[[package]] +name = "system-configuration" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba3a3adc5c275d719af8cb4272ea1c4a6d668a777f37e115f6d11ddbc1c8e0e7" +dependencies = [ + "bitflags 1.3.2", + "core-foundation", + "system-configuration-sys", +] + +[[package]] +name = "system-configuration-sys" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a75fb188eb626b924683e3b95e3a48e63551fcfb51949de2f06a9d91dbee93c9" +dependencies = [ + "core-foundation-sys", + "libc", +] + +[[package]] +name = "tabwriter" +version = "1.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a327282c4f64f6dc37e3bba4c2b6842cc3a992f204fa58d917696a89f691e5f6" +dependencies = [ + "unicode-width", +] + +[[package]] +name = "tap" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "55937e1799185b12863d447f42597ed69d9928686b8d88a1df17376a097d8369" + +[[package]] +name = "tar" +version = "0.4.40" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b16afcea1f22891c49a00c751c7b63b2233284064f11a200fc624137c51e2ddb" +dependencies = [ + "filetime", + "libc", + "xattr", +] + +[[package]] +name = "target-lexicon" +version = "0.12.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e1fc403891a21bcfb7c37834ba66a547a8f402146eba7265b5a6d88059c9ff2f" + +[[package]] +name = "task-local-extensions" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba323866e5d033818e3240feeb9f7db2c4296674e4d9e16b97b7bf8f490434e8" +dependencies = [ + "pin-utils", +] + +[[package]] +name = "tempfile" +version = "3.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85b77fafb263dd9d05cbeac119526425676db3784113aa9295c88498cbf8bff1" +dependencies = [ + "cfg-if", + "fastrand 2.0.1", + "rustix 0.38.32", + "windows-sys 0.52.0", +] + +[[package]] +name = "terminal_size" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "21bebf2b7c9e0a515f6e0f8c51dc0f8e4696391e6f1ff30379559f8365fb0df7" +dependencies = [ + "rustix 0.38.32", + "windows-sys 0.48.0", +] + +[[package]] +name = "textwrap" +version = "0.16.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "23d434d3f8967a09480fb04132ebe0a3e088c173e6d0ee7897abbdf4eab0f8b9" +dependencies = [ + "smawk", + "unicode-linebreak", + "unicode-width", +] + +[[package]] +name = "thiserror" +version = "1.0.58" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "03468839009160513471e86a034bb2c5c0e4baae3b43f79ffc55c4a5427b3297" +dependencies = [ + "thiserror-impl", +] + +[[package]] +name = "thiserror-impl" +version = "1.0.58" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c61f3ba182994efc43764a46c018c347bc492c79f024e705f46567b418f6d4f7" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.53", +] + +[[package]] +name = "thread_local" +version = "1.1.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b9ef9bad013ada3808854ceac7b46812a6465ba368859a37e2100283d2d719c" +dependencies = [ + "cfg-if", + "once_cell", +] + +[[package]] +name = "time" +version = "0.3.34" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c8248b6521bb14bc45b4067159b9b6ad792e2d6d754d6c41fb50e29fefe38749" +dependencies = [ + "deranged", + "itoa", + "num-conv", + "powerfmt", + "serde", + "time-core", + "time-macros", +] + +[[package]] +name = "time-core" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ef927ca75afb808a4d64dd374f00a2adf8d0fcff8e7b184af886c3c87ec4a3f3" + +[[package]] +name = "time-macros" +version = "0.2.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7ba3a3ef41e6672a2f0f001392bb5dcd3ff0a9992d618ca761a11c3121547774" +dependencies = [ + "num-conv", + "time-core", +] + +[[package]] +name = "tinyvec" +version = "1.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "87cc5ceb3875bb20c2890005a4e226a4651264a5c75edb2421b52861a0a0cb50" +dependencies = [ + "tinyvec_macros", +] + +[[package]] +name = "tinyvec_macros" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" + +[[package]] +name = "tl" +version = "0.7.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b130bd8a58c163224b44e217b4239ca7b927d82bf6cc2fea1fc561d15056e3f7" + +[[package]] +name = "tokio" +version = "1.36.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "61285f6515fa018fb2d1e46eb21223fff441ee8db5d0f1435e8ab4f5cdb80931" +dependencies = [ + "backtrace", + "bytes", + "libc", + "mio", + "num_cpus", + "pin-project-lite", + "signal-hook-registry", + "socket2 0.5.6", + "tokio-macros", + "windows-sys 0.48.0", +] + +[[package]] +name = "tokio-macros" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5b8a1e28f2deaa14e508979454cb3a223b10b938b45af148bc0986de36f1923b" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.53", +] + +[[package]] +name = "tokio-native-tls" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bbae76ab933c85776efabc971569dd6119c580d8f5d448769dec1764bf796ef2" +dependencies = [ + "native-tls", + "tokio", +] + +[[package]] +name = "tokio-rustls" +version = "0.24.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c28327cf380ac148141087fbfb9de9d7bd4e84ab5d2c28fbc911d753de8a7081" +dependencies = [ + "rustls", + "tokio", +] + +[[package]] +name = "tokio-stream" +version = "0.1.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "267ac89e0bec6e691e5813911606935d77c476ff49024f98abcea3e7b15e37af" +dependencies = [ + "futures-core", + "pin-project-lite", + "tokio", + "tokio-util", +] + +[[package]] +name = "tokio-tar" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9d5714c010ca3e5c27114c1cdeb9d14641ace49874aa5626d7149e47aedace75" +dependencies = [ + "filetime", + "futures-core", + "libc", + "redox_syscall 0.3.5", + "tokio", + "tokio-stream", + "xattr", +] + +[[package]] +name = "tokio-util" +version = "0.7.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5419f34732d9eb6ee4c3578b7989078579b7f039cbbb9ca2c4da015749371e15" +dependencies = [ + "bytes", + "futures-core", + "futures-io", + "futures-sink", + "pin-project-lite", + "tokio", + "tracing", +] + +[[package]] +name = "toml" +version = "0.8.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e9dd1545e8208b4a5af1aa9bbd0b4cf7e9ea08fabc5d0a5c67fcaafa17433aa3" +dependencies = [ + "serde", + "serde_spanned", + "toml_datetime", + "toml_edit 0.22.8", +] + +[[package]] +name = "toml_datetime" +version = "0.6.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3550f4e9685620ac18a50ed434eb3aec30db8ba93b0287467bca5826ea25baf1" +dependencies = [ + "serde", +] + +[[package]] +name = "toml_edit" +version = "0.19.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1b5bb770da30e5cbfde35a2d7b9b8a2c4b8ef89548a7a6aeab5c9a576e3e7421" +dependencies = [ + "indexmap 2.2.5", + "toml_datetime", + "winnow 0.5.40", +] + +[[package]] +name = "toml_edit" +version = "0.22.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c12219811e0c1ba077867254e5ad62ee2c9c190b0d957110750ac0cda1ae96cd" +dependencies = [ + "indexmap 2.2.5", + "serde", + "serde_spanned", + "toml_datetime", + "winnow 0.6.5", +] + +[[package]] +name = "tower-service" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6bc1c9ce2b5135ac7f93c72918fc37feb872bdc6a5533a8b85eb4b86bfdae52" + +[[package]] +name = "tracing" +version = "0.1.40" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c3523ab5a71916ccf420eebdf5521fcef02141234bbc0b8a49f2fdc4544364ef" +dependencies = [ + "pin-project-lite", + "tracing-attributes", + "tracing-core", +] + +[[package]] +name = "tracing-attributes" +version = "0.1.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.53", +] + +[[package]] +name = "tracing-core" +version = "0.1.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c06d3da6113f116aaee68e4d601191614c9053067f9ab7f6edbcb161237daa54" +dependencies = [ + "once_cell", + "valuable", +] + +[[package]] +name = "tracing-log" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ee855f1f400bd0e5c02d150ae5de3840039a3f54b025156404e34c23c03f47c3" +dependencies = [ + "log", + "once_cell", + "tracing-core", +] + +[[package]] +name = "tracing-subscriber" +version = "0.3.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ad0f048c97dbd9faa9b7df56362b8ebcaa52adb06b498c050d2f4e32f90a7a8b" +dependencies = [ + "matchers", + "nu-ansi-term", + "once_cell", + "regex", + "sharded-slab", + "smallvec", + "thread_local", + "tracing", + "tracing-core", + "tracing-log", +] + +[[package]] +name = "treediff" +version = "4.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4d127780145176e2b5d16611cc25a900150e86e9fd79d3bde6ff3a37359c9cb5" +dependencies = [ + "serde_json", +] + +[[package]] +name = "try-lock" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b" + +[[package]] +name = "typenum" +version = "1.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825" + +[[package]] +name = "uds_windows" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "89daebc3e6fd160ac4aa9fc8b3bf71e1f74fbf92367ae71fb83a037e8bf164b9" +dependencies = [ + "memoffset 0.9.0", + "tempfile", + "winapi", +] + +[[package]] +name = "unicase" +version = "2.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f7d2d4dafb69621809a81864c9c1b864479e1235c0dd4e199924b9742439ed89" +dependencies = [ + "version_check", +] + +[[package]] +name = "unicode-bidi" +version = "0.3.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "08f95100a766bf4f8f28f90d77e0a5461bbdb219042e7679bebe79004fed8d75" + +[[package]] +name = "unicode-ident" +version = "1.0.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b" + +[[package]] +name = "unicode-linebreak" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3b09c83c3c29d37506a3e260c08c03743a6bb66a9cd432c6934ab501a190571f" + +[[package]] +name = "unicode-normalization" +version = "0.1.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a56d1686db2308d901306f92a263857ef59ea39678a5458e7cb17f01415101f5" +dependencies = [ + "tinyvec", +] + +[[package]] +name = "unicode-width" +version = "0.1.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e51733f11c9c4f72aa0c160008246859e340b00807569a0da0e7a1079b27ba85" + +[[package]] +name = "unsafe-libyaml" +version = "0.2.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "673aac59facbab8a9007c7f6108d11f63b603f7cabff99fabf650fea5c32b861" + +[[package]] +name = "unscanny" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e9df2af067a7953e9c3831320f35c1cc0600c30d44d9f7a12b01db1cd88d6b47" + +[[package]] +name = "untrusted" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1" + +[[package]] +name = "url" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "31e6302e3bb753d46e83516cae55ae196fc0c309407cf11ab35cc51a4c2a4633" +dependencies = [ + "form_urlencoded", + "idna", + "percent-encoding", + "serde", +] + +[[package]] +name = "urlencoding" +version = "2.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "daf8dba3b7eb870caf1ddeed7bc9d2a049f3cfdfae7cb521b087cc33ae4c49da" + +[[package]] +name = "utf8-width" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "86bd8d4e895da8537e5315b8254664e6b769c4ff3db18321b297a1e7004392e3" + +[[package]] +name = "utf8parse" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "711b9620af191e0cdc7468a8d14e709c3dcdb115b36f838e601583af800a370a" + +[[package]] +name = "uuid" +version = "1.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a183cf7feeba97b4dd1c0d46788634f6221d87fa961b305bed08c851829efcc0" +dependencies = [ + "getrandom", + "rand", +] + +[[package]] +name = "uv-auth" +version = "0.0.1" +source = "git+https://github.com/astral-sh/uv?tag=0.1.16#9f1452cb72e1da912f0653e398ac4ecb81244a82" +dependencies = [ + "tracing", + "url", +] + +[[package]] +name = "uv-build" +version = "0.0.1" +source = "git+https://github.com/astral-sh/uv?tag=0.1.16#9f1452cb72e1da912f0653e398ac4ecb81244a82" +dependencies = [ + "anyhow", + "distribution-types", + "fs-err", + "indoc", + "itertools", + "once_cell", + "pep508_rs", + "platform-host", + "pypi-types", + "pyproject-toml", + "regex", + "rustc-hash", + "serde", + "serde_json", + "tempfile", + "thiserror", + "tokio", + "toml", + "tracing", + "uv-extract", + "uv-fs", + "uv-interpreter", + "uv-traits", + "uv-virtualenv", +] + +[[package]] +name = "uv-cache" +version = "0.0.1" +source = "git+https://github.com/astral-sh/uv?tag=0.1.16#9f1452cb72e1da912f0653e398ac4ecb81244a82" +dependencies = [ + "cache-key", + "cachedir", + "directories", + "distribution-types", + "fs-err", + "nanoid", + "pypi-types", + "serde", + "tempfile", + "tracing", + "url", + "uv-fs", + "uv-normalize", + "walkdir", +] + +[[package]] +name = "uv-client" +version = "0.0.1" +source = "git+https://github.com/astral-sh/uv?tag=0.1.16#9f1452cb72e1da912f0653e398ac4ecb81244a82" +dependencies = [ + "anyhow", + "async-trait", + "async_http_range_reader", + "async_zip", + "cache-key", + "chrono", + "distribution-filename", + "distribution-types", + "fs-err", + "futures", + "html-escape", + "http", + "install-wheel-rs", + "pep440_rs", + "pep508_rs", + "platform-tags", + "pypi-types", + "reqwest", + "reqwest-middleware", + "reqwest-netrc", + "reqwest-retry 0.3.0", + "rkyv", + "rmp-serde", + "rustc-hash", + "serde", + "serde_json", + "sha2", + "task-local-extensions", + "tempfile", + "thiserror", + "tl", + "tokio", + "tokio-util", + "tracing", + "url", + "urlencoding", + "uv-auth", + "uv-cache", + "uv-fs", + "uv-normalize", + "uv-version", + "uv-warnings", +] + +[[package]] +name = "uv-dispatch" +version = "0.0.1" +source = "git+https://github.com/astral-sh/uv?tag=0.1.16#9f1452cb72e1da912f0653e398ac4ecb81244a82" +dependencies = [ + "anyhow", + "distribution-types", + "fs-err", + "futures", + "itertools", + "pep508_rs", + "platform-host", + "platform-tags", + "pypi-types", + "rustc-hash", + "tempfile", + "tokio", + "tracing", + "uv-build", + "uv-cache", + "uv-client", + "uv-distribution", + "uv-installer", + "uv-interpreter", + "uv-resolver", + "uv-traits", + "uv-virtualenv", +] + +[[package]] +name = "uv-distribution" +version = "0.0.1" +source = "git+https://github.com/astral-sh/uv?tag=0.1.16#9f1452cb72e1da912f0653e398ac4ecb81244a82" +dependencies = [ + "anyhow", + "cache-key", + "distribution-filename", + "distribution-types", + "fs-err", + "futures", + "install-wheel-rs", + "nanoid", + "pep440_rs", + "pep508_rs", + "platform-tags", + "pypi-types", + "reqwest", + "rmp-serde", + "rustc-hash", + "serde", + "tempfile", + "thiserror", + "tokio", + "tokio-util", + "tracing", + "url", + "uv-cache", + "uv-client", + "uv-extract", + "uv-fs", + "uv-git", + "uv-normalize", + "uv-traits", + "zip", +] + +[[package]] +name = "uv-extract" +version = "0.0.1" +source = "git+https://github.com/astral-sh/uv?tag=0.1.16#9f1452cb72e1da912f0653e398ac4ecb81244a82" +dependencies = [ + "async-compression", + "async_zip", + "flate2", + "fs-err", + "futures", + "rayon", + "rustc-hash", + "thiserror", + "tokio", + "tokio-tar", + "tokio-util", + "tracing", + "zip", +] + +[[package]] +name = "uv-fs" +version = "0.0.1" +source = "git+https://github.com/astral-sh/uv?tag=0.1.16#9f1452cb72e1da912f0653e398ac4ecb81244a82" +dependencies = [ + "dunce", + "fs-err", + "fs2", + "junction", + "tempfile", + "tracing", + "urlencoding", + "uv-warnings", +] + +[[package]] +name = "uv-git" +version = "0.0.1" +source = "git+https://github.com/astral-sh/uv?tag=0.1.16#9f1452cb72e1da912f0653e398ac4ecb81244a82" +dependencies = [ + "anyhow", + "base64 0.21.7", + "cache-key", + "cargo-util", + "fs-err", + "git2", + "glob", + "hex", + "hmac", + "home", + "once_cell", + "rand", + "reqwest", + "serde", + "sha1", + "tokio", + "tracing", + "url", + "uv-fs", +] + +[[package]] +name = "uv-installer" +version = "0.0.1" +source = "git+https://github.com/astral-sh/uv?tag=0.1.16#9f1452cb72e1da912f0653e398ac4ecb81244a82" +dependencies = [ + "anyhow", + "async-channel", + "distribution-filename", + "distribution-types", + "fs-err", + "futures", + "install-wheel-rs", + "once-map", + "pep440_rs", + "pep508_rs", + "platform-tags", + "pypi-types", + "pyproject-toml", + "rayon", + "requirements-txt", + "rustc-hash", + "serde", + "tempfile", + "thiserror", + "tokio", + "toml", + "tracing", + "url", + "uv-cache", + "uv-client", + "uv-distribution", + "uv-extract", + "uv-fs", + "uv-git", + "uv-interpreter", + "uv-normalize", + "uv-traits", + "uv-warnings", + "walkdir", +] + +[[package]] +name = "uv-interpreter" +version = "0.0.1" +source = "git+https://github.com/astral-sh/uv?tag=0.1.16#9f1452cb72e1da912f0653e398ac4ecb81244a82" +dependencies = [ + "cache-key", + "configparser", + "fs-err", + "install-wheel-rs", + "once_cell", + "pep440_rs", + "pep508_rs", + "platform-host", + "platform-tags", + "pypi-types", + "regex", + "rmp-serde", + "same-file", + "serde", + "serde_json", + "thiserror", + "tokio", + "tracing", + "uv-cache", + "uv-fs", + "which", + "winapi", +] + +[[package]] +name = "uv-normalize" +version = "0.0.1" +source = "git+https://github.com/astral-sh/uv?tag=0.1.16#9f1452cb72e1da912f0653e398ac4ecb81244a82" +dependencies = [ + "rkyv", + "serde", +] + +[[package]] +name = "uv-resolver" +version = "0.0.1" +source = "git+https://github.com/astral-sh/uv?tag=0.1.16#9f1452cb72e1da912f0653e398ac4ecb81244a82" +dependencies = [ + "anstream", + "anyhow", + "cache-key", + "chrono", + "dashmap", + "derivative", + "distribution-filename", + "distribution-types", + "either", + "fs-err", + "futures", + "indexmap 2.2.5", + "install-wheel-rs", + "itertools", + "once-map", + "once_cell", + "owo-colors", + "pep440_rs", + "pep508_rs", + "petgraph", + "platform-host", + "platform-tags", + "pubgrub", + "pypi-types", + "reqwest", + "rkyv", + "rustc-hash", + "serde_json", + "sha2", + "tempfile", + "thiserror", + "tokio", + "tokio-stream", + "tokio-util", + "tracing", + "url", + "uv-cache", + "uv-client", + "uv-distribution", + "uv-git", + "uv-interpreter", + "uv-normalize", + "uv-traits", + "uv-warnings", + "zip", +] + +[[package]] +name = "uv-traits" +version = "0.0.1" +source = "git+https://github.com/astral-sh/uv?tag=0.1.16#9f1452cb72e1da912f0653e398ac4ecb81244a82" +dependencies = [ + "anyhow", + "distribution-types", + "once-map", + "pep508_rs", + "serde", + "serde_json", + "tokio", + "uv-cache", + "uv-interpreter", + "uv-normalize", +] + +[[package]] +name = "uv-version" +version = "0.1.16" +source = "git+https://github.com/astral-sh/uv?tag=0.1.16#9f1452cb72e1da912f0653e398ac4ecb81244a82" + +[[package]] +name = "uv-virtualenv" +version = "0.0.4" +source = "git+https://github.com/astral-sh/uv?tag=0.1.16#9f1452cb72e1da912f0653e398ac4ecb81244a82" +dependencies = [ + "anstream", + "cachedir", + "directories", + "fs-err", + "pathdiff", + "platform-host", + "pypi-types", + "serde", + "serde_json", + "tempfile", + "thiserror", + "tracing", + "uv-cache", + "uv-fs", + "uv-interpreter", + "which", +] + +[[package]] +name = "uv-warnings" +version = "0.0.1" +source = "git+https://github.com/astral-sh/uv?tag=0.1.16#9f1452cb72e1da912f0653e398ac4ecb81244a82" +dependencies = [ + "anstream", + "once_cell", + "owo-colors", + "rustc-hash", +] + +[[package]] +name = "valuable" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "830b7e5d4d90034032940e4ace0d9a9a057e7a45cd94e6c007832e39edb82f6d" + +[[package]] +name = "vcpkg" +version = "0.2.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426" + +[[package]] +name = "version_check" +version = "0.9.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f" + +[[package]] +name = "waker-fn" +version = "1.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f3c4517f54858c779bbcbf228f4fca63d121bf85fbecb2dc578cdf4a39395690" + +[[package]] +name = "walkdir" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "29790946404f91d9c5d06f9874efddea1dc06c5efe94541a7d6863108e3a5e4b" +dependencies = [ + "same-file", + "winapi-util", +] + +[[package]] +name = "want" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bfa7760aed19e106de2c7c0b581b509f2f25d3dacaf737cb82ac61bc6d760b0e" +dependencies = [ + "try-lock", +] + +[[package]] +name = "wasi" +version = "0.11.0+wasi-snapshot-preview1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" + +[[package]] +name = "wasm-bindgen" +version = "0.2.92" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4be2531df63900aeb2bca0daaaddec08491ee64ceecbee5076636a3b026795a8" +dependencies = [ + "cfg-if", + "wasm-bindgen-macro", +] + +[[package]] +name = "wasm-bindgen-backend" +version = "0.2.92" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "614d787b966d3989fa7bb98a654e369c762374fd3213d212cfc0251257e747da" +dependencies = [ + "bumpalo", + "log", + "once_cell", + "proc-macro2", + "quote", + "syn 2.0.53", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-futures" +version = "0.4.42" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "76bc14366121efc8dbb487ab05bcc9d346b3b5ec0eaa76e46594cabbe51762c0" +dependencies = [ + "cfg-if", + "js-sys", + "wasm-bindgen", + "web-sys", +] + +[[package]] +name = "wasm-bindgen-macro" +version = "0.2.92" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a1f8823de937b71b9460c0c34e25f3da88250760bec0ebac694b49997550d726" +dependencies = [ + "quote", + "wasm-bindgen-macro-support", +] + +[[package]] +name = "wasm-bindgen-macro-support" +version = "0.2.92" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e94f17b526d0a461a191c78ea52bbce64071ed5c04c9ffe424dcb38f74171bb7" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.53", + "wasm-bindgen-backend", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-shared" +version = "0.2.92" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "af190c94f2773fdb3729c55b007a722abb5384da03bc0986df4c289bf5567e96" + +[[package]] +name = "wasm-streams" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b65dc4c90b63b118468cf747d8bf3566c1913ef60be765b5730ead9e0a3ba129" +dependencies = [ + "futures-util", + "js-sys", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", +] + +[[package]] +name = "wasm-timer" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "be0ecb0db480561e9a7642b5d3e4187c128914e58aa84330b9493e3eb68c5e7f" +dependencies = [ + "futures", + "js-sys", + "parking_lot 0.11.2", + "pin-utils", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", +] + +[[package]] +name = "web-sys" +version = "0.3.69" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77afa9a11836342370f4817622a2f0f418b134426d91a82dfb48f532d2ec13ef" +dependencies = [ + "js-sys", + "wasm-bindgen", +] + +[[package]] +name = "webpki-roots" +version = "0.25.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5f20c57d8d7db6d3b86154206ae5d8fba62dd39573114de97c2cb0578251f8e1" + +[[package]] +name = "which" +version = "6.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7fa5e0c10bf77f44aac573e498d1a82d5fbd5e91f6fc0a99e7be4b38e85e101c" +dependencies = [ + "either", + "home", + "once_cell", + "rustix 0.38.32", + "windows-sys 0.52.0", +] + +[[package]] +name = "winapi" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" +dependencies = [ + "winapi-i686-pc-windows-gnu", + "winapi-x86_64-pc-windows-gnu", +] + +[[package]] +name = "winapi-i686-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" + +[[package]] +name = "winapi-util" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f29e6f9198ba0d26b4c9f07dbe6f9ed633e1f3d5b8b414090084349e46a52596" +dependencies = [ + "winapi", +] + +[[package]] +name = "winapi-x86_64-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" + +[[package]] +name = "windows" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e48a53791691ab099e5e2ad123536d0fff50652600abaf43bbf952894110d0be" +dependencies = [ + "windows-core 0.52.0", + "windows-targets 0.52.4", +] + +[[package]] +name = "windows" +version = "0.54.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9252e5725dbed82865af151df558e754e4a3c2c30818359eb17465f1346a1b49" +dependencies = [ + "windows-core 0.54.0", + "windows-targets 0.52.4", +] + +[[package]] +name = "windows-core" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "33ab640c8d7e35bf8ba19b884ba838ceb4fba93a4e8c65a9059d08afcfc683d9" +dependencies = [ + "windows-targets 0.52.4", +] + +[[package]] +name = "windows-core" +version = "0.54.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "12661b9c89351d684a50a8a643ce5f608e20243b9fb84687800163429f161d65" +dependencies = [ + "windows-result", + "windows-targets 0.52.4", +] + +[[package]] +name = "windows-result" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cd19df78e5168dfb0aedc343d1d1b8d422ab2db6756d2dc3fef75035402a3f64" +dependencies = [ + "windows-targets 0.52.4", +] + +[[package]] +name = "windows-sys" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9" +dependencies = [ + "windows-targets 0.48.5", +] + +[[package]] +name = "windows-sys" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" +dependencies = [ + "windows-targets 0.52.4", +] + +[[package]] +name = "windows-targets" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c" +dependencies = [ + "windows_aarch64_gnullvm 0.48.5", + "windows_aarch64_msvc 0.48.5", + "windows_i686_gnu 0.48.5", + "windows_i686_msvc 0.48.5", + "windows_x86_64_gnu 0.48.5", + "windows_x86_64_gnullvm 0.48.5", + "windows_x86_64_msvc 0.48.5", +] + +[[package]] +name = "windows-targets" +version = "0.52.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7dd37b7e5ab9018759f893a1952c9420d060016fc19a472b4bb20d1bdd694d1b" +dependencies = [ + "windows_aarch64_gnullvm 0.52.4", + "windows_aarch64_msvc 0.52.4", + "windows_i686_gnu 0.52.4", + "windows_i686_msvc 0.52.4", + "windows_x86_64_gnu 0.52.4", + "windows_x86_64_gnullvm 0.52.4", + "windows_x86_64_msvc 0.52.4", +] + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.52.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bcf46cf4c365c6f2d1cc93ce535f2c8b244591df96ceee75d8e83deb70a9cac9" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.52.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "da9f259dd3bcf6990b55bffd094c4f7235817ba4ceebde8e6d11cd0c5633b675" + +[[package]] +name = "windows_i686_gnu" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" + +[[package]] +name = "windows_i686_gnu" +version = "0.52.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b474d8268f99e0995f25b9f095bc7434632601028cf86590aea5c8a5cb7801d3" + +[[package]] +name = "windows_i686_msvc" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" + +[[package]] +name = "windows_i686_msvc" +version = "0.52.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1515e9a29e5bed743cb4415a9ecf5dfca648ce85ee42e15873c3cd8610ff8e02" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.52.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5eee091590e89cc02ad514ffe3ead9eb6b660aedca2183455434b93546371a03" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.52.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77ca79f2451b49fa9e2af39f0747fe999fcda4f5e241b2898624dca97a1f2177" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.52.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32b752e52a2da0ddfbdbcc6fceadfeede4c939ed16d13e648833a61dfb611ed8" + +[[package]] +name = "winnow" +version = "0.5.40" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f593a95398737aeed53e489c785df13f3618e41dbcd6718c6addbf1395aa6876" +dependencies = [ + "memchr", +] + +[[package]] +name = "winnow" +version = "0.6.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dffa400e67ed5a4dd237983829e66475f0a4a26938c4b04c21baede6262215b8" +dependencies = [ + "memchr", +] + +[[package]] +name = "winreg" +version = "0.50.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "524e57b2c537c0f9b1e69f1965311ec12182b4122e45035b1508cd24d2adadb1" +dependencies = [ + "cfg-if", + "windows-sys 0.48.0", +] + +[[package]] +name = "wyz" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "05f360fc0b24296329c78fda852a1e9ae82de9cf7b27dae4b7f62f118f77b9ed" +dependencies = [ + "tap", +] + +[[package]] +name = "xattr" +version = "1.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8da84f1a25939b27f6820d92aed108f83ff920fdf11a7b19366c27c4cda81d4f" +dependencies = [ + "libc", + "linux-raw-sys 0.4.13", + "rustix 0.38.32", +] + +[[package]] +name = "xdg-home" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "21e5a325c3cb8398ad6cf859c1135b25dd29e186679cf2da7581d9679f63b38e" +dependencies = [ + "libc", + "winapi", +] + +[[package]] +name = "xxhash-rust" +version = "0.8.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "927da81e25be1e1a2901d59b81b37dd2efd1fc9c9345a55007f09bf5a2d3ee03" + +[[package]] +name = "yaml-rust" +version = "0.4.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "56c1936c4cc7a1c9ab21a1ebb602eb942ba868cbd44a99cb7cdc5892335e1c85" +dependencies = [ + "linked-hash-map", +] + +[[package]] +name = "yansi" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cfe53a6657fd280eaa890a3bc59152892ffa3e30101319d168b781ed6529b049" + +[[package]] +name = "zbus" +version = "3.15.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "675d170b632a6ad49804c8cf2105d7c31eddd3312555cffd4b740e08e97c25e6" +dependencies = [ + "async-broadcast", + "async-executor", + "async-fs", + "async-io 1.13.0", + "async-lock 2.8.0", + "async-process", + "async-recursion", + "async-task", + "async-trait", + "blocking", + "byteorder", + "derivative", + "enumflags2", + "event-listener 2.5.3", + "futures-core", + "futures-sink", + "futures-util", + "hex", + "nix 0.26.4", + "once_cell", + "ordered-stream", + "rand", + "serde", + "serde_repr", + "sha1", + "static_assertions", + "tracing", + "uds_windows", + "winapi", + "xdg-home", + "zbus_macros", + "zbus_names", + "zvariant", +] + +[[package]] +name = "zbus_macros" +version = "3.15.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7131497b0f887e8061b430c530240063d33bf9455fa34438f388a245da69e0a5" +dependencies = [ + "proc-macro-crate", + "proc-macro2", + "quote", + "regex", + "syn 1.0.109", + "zvariant_utils", +] + +[[package]] +name = "zbus_names" +version = "2.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "437d738d3750bed6ca9b8d423ccc7a8eb284f6b1d6d4e225a0e4e6258d864c8d" +dependencies = [ + "serde", + "static_assertions", + "zvariant", +] + +[[package]] +name = "zeroize" +version = "1.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "525b4ec142c6b68a2d10f01f7bbf6755599ca3f81ea53b8431b7dd348f5fdb2d" + +[[package]] +name = "zip" +version = "0.6.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "760394e246e4c28189f19d488c058bf16f564016aefac5d32bb1f3b51d5e9261" +dependencies = [ + "byteorder", + "crc32fast", + "crossbeam-utils", + "flate2", + "time", +] + +[[package]] +name = "zstd" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bffb3309596d527cfcba7dfc6ed6052f1d39dfbd7c867aa2e865e4a449c10110" +dependencies = [ + "zstd-safe", +] + +[[package]] +name = "zstd-safe" +version = "7.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "43747c7422e2924c11144d5229878b98180ef8b06cca4ab5af37afc8a8d8ea3e" +dependencies = [ + "zstd-sys", +] + +[[package]] +name = "zstd-sys" +version = "2.0.9+zstd.1.5.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9e16efa8a874a0481a574084d34cc26fdb3b99627480f785888deb6386506656" +dependencies = [ + "cc", + "pkg-config", +] + +[[package]] +name = "zvariant" +version = "3.15.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4eef2be88ba09b358d3b58aca6e41cd853631d44787f319a1383ca83424fb2db" +dependencies = [ + "byteorder", + "enumflags2", + "libc", + "serde", + "static_assertions", + "zvariant_derive", +] + +[[package]] +name = "zvariant_derive" +version = "3.15.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "37c24dc0bed72f5f90d1f8bb5b07228cbf63b3c6e9f82d82559d4bae666e7ed9" +dependencies = [ + "proc-macro-crate", + "proc-macro2", + "quote", + "syn 1.0.109", + "zvariant_utils", +] + +[[package]] +name = "zvariant_utils" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7234f0d811589db492d16893e3f21e8e2fd282e6d01b0cddee310322062cc200" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] diff --git a/pkgs/by-name/pi/pixi/package.nix b/pkgs/by-name/pi/pixi/package.nix index 2c7a1d8f207e..4f11547fae1f 100644 --- a/pkgs/by-name/pi/pixi/package.nix +++ b/pkgs/by-name/pi/pixi/package.nix @@ -3,6 +3,7 @@ , rustPlatform , fetchFromGitHub , pkg-config +, libgit2 , openssl , installShellFiles , darwin @@ -12,16 +13,23 @@ rustPlatform.buildRustPackage rec { pname = "pixi"; - version = "0.15.2"; + version = "0.17.1"; src = fetchFromGitHub { owner = "prefix-dev"; repo = "pixi"; rev = "v${version}"; - hash = "sha256-bh8Uu6Q2AND50Qzivc6k1Z8JWudkHC2i4YW1Hxa69SM="; + hash = "sha256-wYk77i/33J+VJeT+Bi3L8DJv9quP7VJkcq3voA6U/1s="; }; - cargoHash = "sha256-yMIcPwnuN7F2ZrOtJw8T+nxeSzLsYn+iC34bYeWpi/w="; + cargoLock = { + lockFile = ./Cargo.lock; + outputHashes = { + "async_zip-0.0.16" = "sha256-M94ceTCtyQc1AtPXYrVGplShQhItqZZa/x5qLiL+gs0="; + "cache-key-0.0.1" = "sha256-CvaYXtgd8eqzPNoXukjPwaoT/QOlUVKYNzD8Db6on9Q="; + "pubgrub-0.2.1" = "sha256-1teDXUkXPbL7LZAYrlm2w5CEyb8g0bDqNhg5Jn0/puc="; + }; + }; nativeBuildInputs = [ pkg-config @@ -29,12 +37,17 @@ rustPlatform.buildRustPackage rec { ]; buildInputs = [ + libgit2 openssl - ] - ++ lib.optionals stdenv.isDarwin ( + ] ++ lib.optionals stdenv.isDarwin ( with darwin.apple_sdk_11_0.frameworks; [ CoreFoundation IOKit SystemConfiguration Security ] ); + env = { + LIBGIT2_NO_VENDOR = 1; + OPENSSL_NO_VENDOR = 1; + }; + # There are some CI failures with Rattler. Tests on Aarch64 has been skipped. # See https://github.com/prefix-dev/pixi/pull/241. doCheck = !stdenv.isAarch64; From 2b075b0a2b5908b305acc099aa170ce0850e043c Mon Sep 17 00:00:00 2001 From: Weijia Wang <9713184+wegank@users.noreply.github.com> Date: Sat, 23 Mar 2024 22:07:57 +0100 Subject: [PATCH 006/116] gmsh: 4.11.1 -> 4.12.2 --- .../science/math/gmsh/default.nix | 19 ++----- .../science/math/gmsh/fix-python.patch | 53 +++---------------- 2 files changed, 11 insertions(+), 61 deletions(-) diff --git a/pkgs/applications/science/math/gmsh/default.nix b/pkgs/applications/science/math/gmsh/default.nix index 669d3a3ab8f1..57b20fe12d7c 100644 --- a/pkgs/applications/science/math/gmsh/default.nix +++ b/pkgs/applications/science/math/gmsh/default.nix @@ -1,4 +1,4 @@ -{ lib, stdenv, fetchurl, fetchpatch, cmake, blas, lapack, gfortran, gmm, fltk, libjpeg +{ lib, stdenv, fetchurl, cmake, blas, lapack, gfortran, gmm, fltk, libjpeg , zlib, libGL, libGLU, xorg, opencascade-occt , python ? null, enablePython ? false }: @@ -7,11 +7,11 @@ assert enablePython -> (python != null); stdenv.mkDerivation rec { pname = "gmsh"; - version = "4.11.1"; + version = "4.12.2"; src = fetchurl { url = "https://gmsh.info/src/gmsh-${version}-source.tgz"; - sha256 = "sha256-xf4bfL1AOIioFJKfL9D11p4nYAIioYx4bbW3boAFs2U="; + hash = "sha256-E+CdnKgQLlxAFx1u4VDGaHQrmMOmylf4N/e2Th4q9I8="; }; buildInputs = [ @@ -26,19 +26,6 @@ stdenv.mkDerivation rec { patches = [ ./fix-python.patch - - # Pull upstream fix git gcc-13: - # https://gitlab.onelab.info/gmsh/gmsh/-/issues/2416 - (fetchpatch { - name = "gcc-13-p1.patch"; - url = "https://gitlab.onelab.info/gmsh/gmsh/-/commit/fb81a9c9026700e078de947b4522cb39e543a86b.patch"; - hash = "sha256-1GInFqQZvOgflC3eQTjmZ9uBGFASRNCpCwDACN3yTQ4="; - }) - (fetchpatch { - name = "gcc-13-p2.patch"; - url = "https://gitlab.onelab.info/gmsh/gmsh/-/commit/aceb09c807b78ea26555f99fcb16c4f87c31fb5a.patch"; - hash = "sha256-6FI0hIvj8hglCvxoKV0GzT2/F/Wz+ddkxV/TLzzJBLU="; - }) ]; postPatch = '' diff --git a/pkgs/applications/science/math/gmsh/fix-python.patch b/pkgs/applications/science/math/gmsh/fix-python.patch index ac07c169c99b..41c5c3b8f976 100644 --- a/pkgs/applications/science/math/gmsh/fix-python.patch +++ b/pkgs/applications/science/math/gmsh/fix-python.patch @@ -1,50 +1,13 @@ diff --git a/api/gmsh.py b/api/gmsh.py -index 747acb203..02004da5d 100644 +index f525284..a225c85 100644 --- a/api/gmsh.py +++ b/api/gmsh.py -@@ -44,44 +44,7 @@ moduledir = os.path.dirname(os.path.realpath(__file__)) - parentdir1 = os.path.dirname(moduledir) - parentdir2 = os.path.dirname(parentdir1) +@@ -78,6 +78,8 @@ if not libpath: + else: + libpath = find_library("gmsh") --if platform.system() == "Windows": -- libname = "gmsh-4.11.dll" --elif platform.system() == "Darwin": -- libname = "libgmsh.4.11.dylib" --else: -- libname = "libgmsh.so.4.11" -- --# check if the library is in the same directory as the module... --libpath = os.path.join(moduledir, libname) -- --# ... or in the parent directory or its lib or Lib subdirectory --if not os.path.exists(libpath): -- libpath = os.path.join(parentdir1, libname) --if not os.path.exists(libpath): -- libpath = os.path.join(parentdir1, "lib", libname) --if not os.path.exists(libpath): -- libpath = os.path.join(parentdir1, "Lib", libname) -- --# ... or in the parent of the parent directory or its lib or Lib subdirectory --if not os.path.exists(libpath): -- libpath = os.path.join(parentdir2, libname) --if not os.path.exists(libpath): -- libpath = os.path.join(parentdir2, "lib", libname) --if not os.path.exists(libpath): -- libpath = os.path.join(parentdir2, "Lib", libname) -- --# if we couldn't find it, use ctype's find_library utility... --if not os.path.exists(libpath): -- if platform.system() == "Windows": -- libpath = find_library("gmsh-4.11") -- if not libpath: -- libpath = find_library("gmsh") -- else: -- libpath = find_library("gmsh") -- --# ... and print a warning if everything failed --if not os.path.exists(libpath): -- print("Warning: could not find Gmsh shared library " + libname) +libpath = "@LIBPATH@" - - lib = CDLL(libpath) - ++ + # ... and print a warning if everything failed + if not libpath: + print("Warning: could not find Gmsh shared library " + libname + From 4594fc201d192b94839597b66fd40bc8e0223cf1 Mon Sep 17 00:00:00 2001 From: "R. Ryantm" Date: Sun, 24 Mar 2024 22:57:37 +0000 Subject: [PATCH 007/116] python311Packages.asyncstdlib: 3.12.1 -> 3.12.2 --- pkgs/development/python-modules/asyncstdlib/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/development/python-modules/asyncstdlib/default.nix b/pkgs/development/python-modules/asyncstdlib/default.nix index 57306bd01a4d..3833c868f9c8 100644 --- a/pkgs/development/python-modules/asyncstdlib/default.nix +++ b/pkgs/development/python-modules/asyncstdlib/default.nix @@ -8,7 +8,7 @@ buildPythonPackage rec { pname = "asyncstdlib"; - version = "3.12.1"; + version = "3.12.2"; pyproject = true; disabled = pythonOlder "3.9"; @@ -17,7 +17,7 @@ buildPythonPackage rec { owner = "maxfischer2781"; repo = "asyncstdlib"; rev = "refs/tags/v${version}"; - hash = "sha256-F7jS2EHiq+gK4a6+wJ8CA2YvwR37PP3yvbsLp3uE8R8="; + hash = "sha256-5DQM8m3aeCZAXOi+Rm+iM409juBBYdZDNqBAbhyTm/M="; }; nativeBuildInputs = [ From 23392b616f0eab24943aade091a76d73c74b739d Mon Sep 17 00:00:00 2001 From: Mario Rodas Date: Tue, 26 Mar 2024 04:20:00 +0000 Subject: [PATCH 008/116] python311Packages.flask-restx: fix build on Darwin --- pkgs/development/python-modules/flask-restx/default.nix | 3 +++ 1 file changed, 3 insertions(+) diff --git a/pkgs/development/python-modules/flask-restx/default.nix b/pkgs/development/python-modules/flask-restx/default.nix index 106f6cc82165..e7f348c243f2 100644 --- a/pkgs/development/python-modules/flask-restx/default.nix +++ b/pkgs/development/python-modules/flask-restx/default.nix @@ -1,4 +1,5 @@ { lib +, stdenv , buildPythonPackage , fetchFromGitHub , pythonOlder @@ -58,6 +59,8 @@ buildPythonPackage rec { "--deselect=tests/test_inputs.py::URLTest::test_check" "--deselect=tests/test_inputs.py::EmailTest::test_valid_value_check" "--deselect=tests/test_logging.py::LoggingTest::test_override_app_level" + ] ++ lib.optionals stdenv.isDarwin [ + "--deselect=tests/test_inputs.py::EmailTest::test_invalid_values_check" ]; disabledTests = [ From c635984e73c4c50215da7188732888ad8cc7abb5 Mon Sep 17 00:00:00 2001 From: Tristan Ross Date: Sat, 16 Mar 2024 18:57:35 -0700 Subject: [PATCH 009/116] llvmPackages_18: init --- .../compilers/llvm/18/clang/default.nix | 139 ++++++ .../llvm/18/clang/gnu-install-dirs.patch | 98 ++++ .../compilers/llvm/18/clang/purity.patch | 25 + .../compiler-rt/X86-support-extension.patch | 21 + .../darwin-targetconditionals.patch | 71 +++ .../compilers/llvm/18/compiler-rt/default.nix | 159 +++++++ .../llvm/18/compiler-rt/normalize-var.patch | 16 + .../development/compilers/llvm/18/default.nix | 329 +++++++++++++ .../0001-darwin-10.12-mbstate_t-fix.patch | 31 ++ .../compilers/llvm/18/libcxx/default.nix | 142 ++++++ .../compilers/llvm/18/libunwind/default.nix | 63 +++ .../compilers/llvm/18/lld/default.nix | 53 +++ .../lldb/cpu_subtype_arm64e_replacement.patch | 12 + .../compilers/llvm/18/lldb/procfs.patch | 46 ++ .../compilers/llvm/18/llvm/default.nix | 432 ++++++++++++++++++ .../llvm/18/llvm/gnu-install-dirs-polly.patch | 13 + .../llvm/18/llvm/gnu-install-dirs.patch | 137 ++++++ ...-script-runner-set-dyld-library-path.patch | 12 + .../llvm-lit-cfg-add-libs-to-dylib-path.patch | 80 ++++ ...polly-lit-cfg-add-libs-to-dylib-path.patch | 24 + .../compilers/llvm/18/openmp/default.nix | 73 +++ .../llvm/18/openmp/fix-find-tool.patch | 17 + .../llvm/18/openmp/run-lit-directly.patch | 0 pkgs/top-level/all-packages.nix | 25 + 24 files changed, 2018 insertions(+) create mode 100644 pkgs/development/compilers/llvm/18/clang/default.nix create mode 100644 pkgs/development/compilers/llvm/18/clang/gnu-install-dirs.patch create mode 100644 pkgs/development/compilers/llvm/18/clang/purity.patch create mode 100644 pkgs/development/compilers/llvm/18/compiler-rt/X86-support-extension.patch create mode 100644 pkgs/development/compilers/llvm/18/compiler-rt/darwin-targetconditionals.patch create mode 100644 pkgs/development/compilers/llvm/18/compiler-rt/default.nix create mode 100644 pkgs/development/compilers/llvm/18/compiler-rt/normalize-var.patch create mode 100644 pkgs/development/compilers/llvm/18/default.nix create mode 100644 pkgs/development/compilers/llvm/18/libcxx/0001-darwin-10.12-mbstate_t-fix.patch create mode 100644 pkgs/development/compilers/llvm/18/libcxx/default.nix create mode 100644 pkgs/development/compilers/llvm/18/libunwind/default.nix create mode 100644 pkgs/development/compilers/llvm/18/lld/default.nix create mode 100644 pkgs/development/compilers/llvm/18/lldb/cpu_subtype_arm64e_replacement.patch create mode 100644 pkgs/development/compilers/llvm/18/lldb/procfs.patch create mode 100644 pkgs/development/compilers/llvm/18/llvm/default.nix create mode 100644 pkgs/development/compilers/llvm/18/llvm/gnu-install-dirs-polly.patch create mode 100644 pkgs/development/compilers/llvm/18/llvm/gnu-install-dirs.patch create mode 100644 pkgs/development/compilers/llvm/18/llvm/lit-shell-script-runner-set-dyld-library-path.patch create mode 100644 pkgs/development/compilers/llvm/18/llvm/llvm-lit-cfg-add-libs-to-dylib-path.patch create mode 100644 pkgs/development/compilers/llvm/18/llvm/polly-lit-cfg-add-libs-to-dylib-path.patch create mode 100644 pkgs/development/compilers/llvm/18/openmp/default.nix create mode 100644 pkgs/development/compilers/llvm/18/openmp/fix-find-tool.patch create mode 100644 pkgs/development/compilers/llvm/18/openmp/run-lit-directly.patch diff --git a/pkgs/development/compilers/llvm/18/clang/default.nix b/pkgs/development/compilers/llvm/18/clang/default.nix new file mode 100644 index 000000000000..1e777c6132e4 --- /dev/null +++ b/pkgs/development/compilers/llvm/18/clang/default.nix @@ -0,0 +1,139 @@ +{ lib, stdenv, llvm_meta +, monorepoSrc, runCommand +, substituteAll, cmake, ninja, libxml2, libllvm, version, python3 +, buildLlvmTools +, fixDarwinDylibNames +, enableManpages ? false +}: + +let + self = stdenv.mkDerivation (finalAttrs: rec { + pname = "clang"; + inherit version; + + src = runCommand "${pname}-src-${version}" {} '' + mkdir -p "$out" + cp -r ${monorepoSrc}/cmake "$out" + cp -r ${monorepoSrc}/${pname} "$out" + cp -r ${monorepoSrc}/clang-tools-extra "$out" + ''; + + sourceRoot = "${src.name}/${pname}"; + + nativeBuildInputs = [ cmake ninja python3 ] + ++ lib.optional (lib.versionAtLeast version "18" && enableManpages) python3.pkgs.myst-parser + ++ lib.optional enableManpages python3.pkgs.sphinx + ++ lib.optional stdenv.hostPlatform.isDarwin fixDarwinDylibNames; + + buildInputs = [ libxml2 libllvm ]; + + cmakeFlags = [ + "-DCLANG_INSTALL_PACKAGE_DIR=${placeholder "dev"}/lib/cmake/clang" + "-DCLANGD_BUILD_XPC=OFF" + "-DLLVM_ENABLE_RTTI=ON" + "-DLLVM_INCLUDE_TESTS=OFF" + ] ++ lib.optionals enableManpages [ + "-DCLANG_INCLUDE_DOCS=ON" + "-DLLVM_ENABLE_SPHINX=ON" + "-DSPHINX_OUTPUT_MAN=ON" + "-DSPHINX_OUTPUT_HTML=OFF" + "-DSPHINX_WARNINGS_AS_ERRORS=OFF" + ] ++ lib.optionals (!stdenv.buildPlatform.canExecute stdenv.hostPlatform) [ + "-DLLVM_TABLEGEN_EXE=${buildLlvmTools.llvm}/bin/llvm-tblgen" + "-DCLANG_TABLEGEN=${buildLlvmTools.libclang.dev}/bin/clang-tblgen" + # Added in LLVM15: + # `clang-tidy-confusable-chars-gen`: https://github.com/llvm/llvm-project/commit/c3574ef739fbfcc59d405985a3a4fa6f4619ecdb + # `clang-pseudo-gen`: https://github.com/llvm/llvm-project/commit/cd2292ef824591cc34cc299910a3098545c840c7 + "-DCLANG_TIDY_CONFUSABLE_CHARS_GEN=${buildLlvmTools.libclang.dev}/bin/clang-tidy-confusable-chars-gen" + "-DCLANG_PSEUDO_GEN=${buildLlvmTools.libclang.dev}/bin/clang-pseudo-gen" + ]; + + patches = [ + ./purity.patch + # https://reviews.llvm.org/D51899 + ./gnu-install-dirs.patch + ../../common/clang/add-nostdlibinc-flag.patch + (substituteAll { + src = ../../common/clang/clang-at-least-16-LLVMgold-path.patch; + libllvmLibdir = "${libllvm.lib}/lib"; + }) + ]; + + postPatch = '' + (cd tools && ln -s ../../clang-tools-extra extra) + '' + lib.optionalString stdenv.hostPlatform.isMusl '' + sed -i -e 's/lgcc_s/lgcc_eh/' lib/Driver/ToolChains/*.cpp + ''; + + outputs = [ "out" "lib" "dev" "python" ]; + + postInstall = '' + ln -sv $out/bin/clang $out/bin/cpp + + # Move libclang to 'lib' output + moveToOutput "lib/libclang.*" "$lib" + moveToOutput "lib/libclang-cpp.*" "$lib" + substituteInPlace $dev/lib/cmake/clang/ClangTargets-release.cmake \ + --replace "\''${_IMPORT_PREFIX}/lib/libclang." "$lib/lib/libclang." \ + --replace "\''${_IMPORT_PREFIX}/lib/libclang-cpp." "$lib/lib/libclang-cpp." + + mkdir -p $python/bin $python/share/clang/ + mv $out/bin/{git-clang-format,scan-view} $python/bin + if [ -e $out/bin/set-xcode-analyzer ]; then + mv $out/bin/set-xcode-analyzer $python/bin + fi + mv $out/share/clang/*.py $python/share/clang + rm $out/bin/c-index-test + patchShebangs $python/bin + + mkdir -p $dev/bin + cp bin/{clang-tblgen,clang-tidy-confusable-chars-gen,clang-pseudo-gen} $dev/bin + ''; + + passthru = { + inherit libllvm; + isClang = true; + hardeningUnsupportedFlags = [ + "fortify3" + ]; + hardeningUnsupportedFlagsByTargetPlatform = targetPlatform: + lib.optional (!(targetPlatform.isx86_64 || targetPlatform.isAarch64)) "zerocallusedregs" + ++ (finalAttrs.passthru.hardeningUnsupportedFlags or []); + }; + + meta = llvm_meta // { + homepage = "https://clang.llvm.org/"; + description = "A C language family frontend for LLVM"; + longDescription = '' + The Clang project provides a language front-end and tooling + infrastructure for languages in the C language family (C, C++, Objective + C/C++, OpenCL, CUDA, and RenderScript) for the LLVM project. + It aims to deliver amazingly fast compiles, extremely useful error and + warning messages and to provide a platform for building great source + level tools. The Clang Static Analyzer and clang-tidy are tools that + automatically find bugs in your code, and are great examples of the sort + of tools that can be built using the Clang frontend as a library to + parse C/C++ code. + ''; + mainProgram = "clang"; + }; + } // lib.optionalAttrs enableManpages { + pname = "clang-manpages"; + + ninjaFlags = [ "docs-clang-man" ]; + + installPhase = '' + mkdir -p $out/share/man/man1 + # Manually install clang manpage + cp docs/man/*.1 $out/share/man/man1/ + ''; + + outputs = [ "out" ]; + + doCheck = false; + + meta = llvm_meta // { + description = "man page for Clang ${version}"; + }; + }); +in self diff --git a/pkgs/development/compilers/llvm/18/clang/gnu-install-dirs.patch b/pkgs/development/compilers/llvm/18/clang/gnu-install-dirs.patch new file mode 100644 index 000000000000..9185f4b03b84 --- /dev/null +++ b/pkgs/development/compilers/llvm/18/clang/gnu-install-dirs.patch @@ -0,0 +1,98 @@ +diff --git a/CMakeLists.txt b/CMakeLists.txt +index f7936d72e088..a362fa49b534 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -31,7 +31,21 @@ if(CLANG_BUILT_STANDALONE) + find_package(LLVM REQUIRED HINTS "${LLVM_CMAKE_DIR}") + list(APPEND CMAKE_MODULE_PATH "${LLVM_DIR}") + +- # Turn into CACHE PATHs for overwritting ++ # We can't check LLVM_CONFIG here, because find_package(LLVM ...) also sets ++ # LLVM_CONFIG. ++ if (NOT LLVM_CONFIG_FOUND) ++ # Pull values from LLVMConfig.cmake. We can drop this once the llvm-config ++ # path is removed. ++ set(INCLUDE_DIRS ${LLVM_INCLUDE_DIRS}) ++ set(LLVM_OBJ_DIR "${LLVM_BINARY_DIR}") ++ # N.B. this is just a default value, the CACHE PATHs below can be overriden. ++ set(MAIN_SRC_DIR "${CMAKE_CURRENT_SOURCE_DIR}/../llvm") ++ set(TOOLS_BINARY_DIR "${LLVM_TOOLS_BINARY_DIR}") ++ set(LIBRARY_DIR "${LLVM_LIBRARY_DIR}") ++ else() ++ set(INCLUDE_DIRS "${LLVM_BINARY_DIR}/include" "${MAIN_INCLUDE_DIR}") ++ endif() ++ + set(LLVM_INCLUDE_DIRS ${LLVM_INCLUDE_DIRS} CACHE PATH "Path to llvm/include and any other header dirs needed") + set(LLVM_BINARY_DIR "${LLVM_BINARY_DIR}" CACHE PATH "Path to LLVM build tree") + set(LLVM_MAIN_SRC_DIR "${CMAKE_CURRENT_SOURCE_DIR}/../llvm" CACHE PATH "Path to LLVM source tree") +diff --git a/cmake/modules/AddClang.cmake b/cmake/modules/AddClang.cmake +index 75b0080f6715..c895b884cd27 100644 +--- a/cmake/modules/AddClang.cmake ++++ b/cmake/modules/AddClang.cmake +@@ -119,8 +119,8 @@ macro(add_clang_library name) + install(TARGETS ${lib} + COMPONENT ${lib} + ${export_to_clangtargets} +- LIBRARY DESTINATION lib${LLVM_LIBDIR_SUFFIX} +- ARCHIVE DESTINATION lib${LLVM_LIBDIR_SUFFIX} ++ LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}${LLVM_LIBDIR_SUFFIX}" ++ ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}${LLVM_LIBDIR_SUFFIX}" + RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}") + + if (NOT LLVM_ENABLE_IDE) +diff --git a/lib/Headers/CMakeLists.txt b/lib/Headers/CMakeLists.txt +index f2b0c5cddcbb..52f37fc368ce 100644 +--- a/lib/Headers/CMakeLists.txt ++++ b/lib/Headers/CMakeLists.txt +@@ -473,6 +473,7 @@ add_header_target("windows-resource-headers" ${windows_only_files}) + add_header_target("utility-resource-headers" ${utility_files}) + + get_clang_resource_dir(header_install_dir SUBDIR include) ++set(header_install_dir ${CMAKE_INSTALL_LIBDIR}${LLVM_LIBDIR_SUFFIX}/clang/${CLANG_VERSION_MAJOR}/include) + + ############################################################# + # Install rules for the catch-all clang-resource-headers target +diff --git a/tools/libclang/CMakeLists.txt b/tools/libclang/CMakeLists.txt +index 4f23065a2472..6a0f55991e24 100644 +--- a/tools/libclang/CMakeLists.txt ++++ b/tools/libclang/CMakeLists.txt +@@ -234,7 +234,7 @@ foreach(PythonVersion ${CLANG_PYTHON_BINDINGS_VERSIONS}) + COMPONENT + libclang-python-bindings + DESTINATION +- "lib${LLVM_LIBDIR_SUFFIX}/python${PythonVersion}/site-packages") ++ "${CMAKE_INSTALL_LIBDIR}${LLVM_LIBDIR_SUFFIX}/python${PythonVersion}/site-packages") + endforeach() + if(NOT LLVM_ENABLE_IDE) + add_custom_target(libclang-python-bindings) +diff --git a/tools/scan-build-py/CMakeLists.txt b/tools/scan-build-py/CMakeLists.txt +index 3aca22c0b0a8..3115353e3fe3 100644 +--- a/tools/scan-build-py/CMakeLists.txt ++++ b/tools/scan-build-py/CMakeLists.txt +@@ -88,7 +88,7 @@ foreach(lib ${LibScanbuild}) + DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/lib/libscanbuild/${lib}) + list(APPEND Depends ${CMAKE_BINARY_DIR}/lib/libscanbuild/${lib}) + install(FILES lib/libscanbuild/${lib} +- DESTINATION lib${CLANG_LIBDIR_SUFFIX}/libscanbuild ++ DESTINATION "${CMAKE_INSTALL_LIBDIR}/libscanbuild" + COMPONENT scan-build-py) + endforeach() + +@@ -106,7 +106,7 @@ foreach(resource ${LibScanbuildResources}) + DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/lib/libscanbuild/resources/${resource}) + list(APPEND Depends ${CMAKE_BINARY_DIR}/lib/libscanbuild/resources/${resource}) + install(FILES lib/libscanbuild/resources/${resource} +- DESTINATION lib${CLANG_LIBDIR_SUFFIX}/libscanbuild/resources ++ DESTINATION "${CMAKE_INSTALL_LIBDIR}/libscanbuild/resources" + COMPONENT scan-build-py) + endforeach() + +@@ -122,7 +122,7 @@ foreach(lib ${LibEar}) + DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/lib/libear/${lib}) + list(APPEND Depends ${CMAKE_BINARY_DIR}/lib/libear/${lib}) + install(FILES lib/libear/${lib} +- DESTINATION lib${CLANG_LIBDIR_SUFFIX}/libear ++ DESTINATION "${CMAKE_INSTALL_LIBDIR}/libear" + COMPONENT scan-build-py) + endforeach() + diff --git a/pkgs/development/compilers/llvm/18/clang/purity.patch b/pkgs/development/compilers/llvm/18/clang/purity.patch new file mode 100644 index 000000000000..5ce14a3479a0 --- /dev/null +++ b/pkgs/development/compilers/llvm/18/clang/purity.patch @@ -0,0 +1,25 @@ +From 4add81bba40dcec62c4ea4481be8e35ac53e89d8 Mon Sep 17 00:00:00 2001 +From: Will Dietz +Date: Thu, 18 May 2017 11:56:12 -0500 +Subject: [PATCH] "purity" patch for 5.0 + +--- + lib/Driver/ToolChains/Gnu.cpp | 3 --- + 1 file changed, 3 deletions(-) + +diff --git a/lib/Driver/ToolChains/Gnu.cpp b/lib/Driver/ToolChains/Gnu.cpp +index fe3c0191bb..c6a482bece 100644 +--- a/lib/Driver/ToolChains/Gnu.cpp ++++ b/lib/Driver/ToolChains/Gnu.cpp +@@ -446,9 +446,6 @@ void tools::gnutools::Linker::ConstructJob(Compilation &C, const JobAction &JA, + ToolChain.isPIEDefault(Args)); + if (IsPIE) + CmdArgs.push_back("-pie"); +- CmdArgs.push_back("-dynamic-linker"); +- CmdArgs.push_back(Args.MakeArgString(Twine(D.DyldPrefix) + +- ToolChain.getDynamicLinker(Args))); + } + } + +-- +2.11.0 diff --git a/pkgs/development/compilers/llvm/18/compiler-rt/X86-support-extension.patch b/pkgs/development/compilers/llvm/18/compiler-rt/X86-support-extension.patch new file mode 100644 index 000000000000..07013e5a6825 --- /dev/null +++ b/pkgs/development/compilers/llvm/18/compiler-rt/X86-support-extension.patch @@ -0,0 +1,21 @@ +diff --git a/lib/builtins/CMakeLists.txt b/lib/builtins/CMakeLists.txt +index 3a66dd9c3fb..7efc85d9f9f 100644 +--- a/lib/builtins/CMakeLists.txt ++++ b/lib/builtins/CMakeLists.txt +@@ -348,4 +348,8 @@ if (NOT MSVC) + ++ set(i486_SOURCES ${i386_SOURCES}) ++ set(i586_SOURCES ${i386_SOURCES}) ++ set(i686_SOURCES ${i386_SOURCES}) ++ + if (WIN32) + set(i386_SOURCES + ${i386_SOURCES} +@@ -723,6 +723,7 @@ else () + endif() + + foreach (arch ${BUILTIN_SUPPORTED_ARCH}) ++ message("arch: ${arch}") + if (CAN_TARGET_${arch}) + # For ARM archs, exclude any VFP builtins if VFP is not supported + if (${arch} MATCHES "^(arm|armhf|armv7|armv7s|armv7k|armv7m|armv7em)$") diff --git a/pkgs/development/compilers/llvm/18/compiler-rt/darwin-targetconditionals.patch b/pkgs/development/compilers/llvm/18/compiler-rt/darwin-targetconditionals.patch new file mode 100644 index 000000000000..425dc2af01e7 --- /dev/null +++ b/pkgs/development/compilers/llvm/18/compiler-rt/darwin-targetconditionals.patch @@ -0,0 +1,71 @@ +diff --git a/lib/sanitizer_common/sanitizer_mac.cpp b/lib/sanitizer_common/sanitizer_mac.cpp +--- a/lib/sanitizer_common/sanitizer_mac.cpp ++++ b/lib/sanitizer_common/sanitizer_mac.cpp +@@ -613,9 +613,15 @@ HandleSignalMode GetHandleSignalMode(int signum) { + // Offset example: + // XNU 17 -- macOS 10.13 -- iOS 11 -- tvOS 11 -- watchOS 4 + constexpr u16 GetOSMajorKernelOffset() { +- if (TARGET_OS_OSX) return 4; +- if (TARGET_OS_IOS || TARGET_OS_TV) return 6; +- if (TARGET_OS_WATCH) return 13; ++#if TARGET_OS_OSX ++ return 4; ++#endif ++#if TARGET_OS_IOS || TARGET_OS_TV ++ return 6; ++#endif ++#if TARGET_OS_WATCH ++ return 13; ++#endif + } + + using VersStr = char[64]; +@@ -627,13 +633,13 @@ static uptr ApproximateOSVersionViaKernelVersion(VersStr vers) { + u16 os_major = kernel_major - offset; + + const char *format = "%d.0"; +- if (TARGET_OS_OSX) { +- if (os_major >= 16) { // macOS 11+ +- os_major -= 5; +- } else { // macOS 10.15 and below +- format = "10.%d"; +- } ++#if TARGET_OS_OSX ++ if (os_major >= 16) { // macOS 11+ ++ os_major -= 5; ++ } else { // macOS 10.15 and below ++ format = "10.%d"; + } ++#endif + return internal_snprintf(vers, sizeof(VersStr), format, os_major); + } + +@@ -681,15 +687,14 @@ void ParseVersion(const char *vers, u16 *major, u16 *minor) { + // Aligned versions example: + // macOS 10.15 -- iOS 13 -- tvOS 13 -- watchOS 6 + static void MapToMacos(u16 *major, u16 *minor) { +- if (TARGET_OS_OSX) +- return; +- +- if (TARGET_OS_IOS || TARGET_OS_TV) ++#if !TARGET_OS_OSX ++#if TARGET_OS_IOS || TARGET_OS_TV + *major += 2; +- else if (TARGET_OS_WATCH) ++#elif TARGET_OS_WATCH + *major += 9; +- else ++#else + UNREACHABLE("unsupported platform"); ++#endif + + if (*major >= 16) { // macOS 11+ + *major -= 5; +@@ -697,6 +702,7 @@ static void MapToMacos(u16 *major, u16 *minor) { + *minor = *major; + *major = 10; + } ++#endif + } + + static MacosVersion GetMacosAlignedVersionInternal() { diff --git a/pkgs/development/compilers/llvm/18/compiler-rt/default.nix b/pkgs/development/compilers/llvm/18/compiler-rt/default.nix new file mode 100644 index 000000000000..5a0e3c2e52ce --- /dev/null +++ b/pkgs/development/compilers/llvm/18/compiler-rt/default.nix @@ -0,0 +1,159 @@ +{ lib, stdenv, llvm_meta, version +, monorepoSrc, runCommand +, cmake, ninja, python3, xcbuild, libllvm, linuxHeaders, libxcrypt +, doFakeLibgcc ? stdenv.hostPlatform.isFreeBSD +}: + +let + + useLLVM = stdenv.hostPlatform.useLLVM or false; + bareMetal = stdenv.hostPlatform.parsed.kernel.name == "none"; + haveLibc = stdenv.cc.libc != null; + isDarwinStatic = stdenv.hostPlatform.isDarwin && stdenv.hostPlatform.isStatic; + inherit (stdenv.hostPlatform) isMusl; + + baseName = "compiler-rt"; + + src = runCommand "${baseName}-src-${version}" {} '' + mkdir -p "$out" + cp -r ${monorepoSrc}/cmake "$out" + cp -r ${monorepoSrc}/${baseName} "$out" + ''; +in + +stdenv.mkDerivation { + pname = baseName + lib.optionalString (haveLibc) "-libc"; + inherit version; + + inherit src; + sourceRoot = "${src.name}/${baseName}"; + + nativeBuildInputs = [ cmake ninja python3 libllvm.dev ] + ++ lib.optional stdenv.isDarwin xcbuild.xcrun; + buildInputs = + lib.optional (stdenv.hostPlatform.isLinux && stdenv.hostPlatform.isRiscV) linuxHeaders; + + env.NIX_CFLAGS_COMPILE = toString ([ + "-DSCUDO_DEFAULT_OPTIONS=DeleteSizeMismatch=0:DeallocationTypeMismatch=0" + ] ++ lib.optionals (!haveLibc) [ + # The compiler got stricter about this, and there is a usellvm patch below + # which patches out the assert include causing an implicit definition of + # assert. It would be nicer to understand why compiler-rt thinks it should + # be able to #include in the first place; perhaps it's in the + # wrong, or perhaps there is a way to provide an assert.h. + "-Wno-error=implicit-function-declaration" + ]); + + cmakeFlags = [ + "-DCOMPILER_RT_DEFAULT_TARGET_ONLY=ON" + "-DCMAKE_C_COMPILER_TARGET=${stdenv.hostPlatform.config}" + "-DCMAKE_ASM_COMPILER_TARGET=${stdenv.hostPlatform.config}" + ] ++ lib.optionals (haveLibc && stdenv.hostPlatform.libc == "glibc") [ + "-DSANITIZER_COMMON_CFLAGS=-I${libxcrypt}/include" + ] ++ lib.optionals (useLLVM || bareMetal || isMusl || isDarwinStatic) [ + "-DCOMPILER_RT_BUILD_SANITIZERS=OFF" + "-DCOMPILER_RT_BUILD_XRAY=OFF" + "-DCOMPILER_RT_BUILD_LIBFUZZER=OFF" + "-DCOMPILER_RT_BUILD_MEMPROF=OFF" + "-DCOMPILER_RT_BUILD_ORC=OFF" # may be possible to build with musl if necessary + ] ++ lib.optionals (useLLVM || bareMetal) [ + "-DCOMPILER_RT_BUILD_PROFILE=OFF" + ] ++ lib.optionals ((useLLVM && !haveLibc) || bareMetal || isDarwinStatic ) [ + "-DCMAKE_CXX_COMPILER_WORKS=ON" + ] ++ lib.optionals ((useLLVM && !haveLibc) || bareMetal) [ + "-DCMAKE_C_COMPILER_WORKS=ON" + "-DCOMPILER_RT_BAREMETAL_BUILD=ON" + "-DCMAKE_SIZEOF_VOID_P=${toString (stdenv.hostPlatform.parsed.cpu.bits / 8)}" + ] ++ lib.optionals (useLLVM && !haveLibc) [ + "-DCMAKE_C_FLAGS=-nodefaultlibs" + ] ++ lib.optionals (useLLVM) [ + "-DCOMPILER_RT_BUILD_BUILTINS=ON" + #https://stackoverflow.com/questions/53633705/cmake-the-c-compiler-is-not-able-to-compile-a-simple-test-program + "-DCMAKE_TRY_COMPILE_TARGET_TYPE=STATIC_LIBRARY" + ] ++ lib.optionals (bareMetal) [ + "-DCOMPILER_RT_OS_DIR=baremetal" + ] ++ lib.optionals (stdenv.hostPlatform.isDarwin) [ + "-DCMAKE_LIPO=${lib.getBin stdenv.cc.bintools.bintools}/bin/${stdenv.cc.targetPrefix}lipo" + "-DDARWIN_macosx_OVERRIDE_SDK_VERSION=ON" + "-DDARWIN_osx_ARCHS=${stdenv.hostPlatform.darwinArch}" + "-DDARWIN_osx_BUILTIN_ARCHS=${stdenv.hostPlatform.darwinArch}" + + # `COMPILER_RT_DEFAULT_TARGET_ONLY` does not apply to Darwin: + # https://github.com/llvm/llvm-project/blob/27ef42bec80b6c010b7b3729ed0528619521a690/compiler-rt/cmake/base-config-ix.cmake#L153 + "-DCOMPILER_RT_ENABLE_IOS=OFF" + ]; + + outputs = [ "out" "dev" ]; + + patches = [ + ./X86-support-extension.patch # Add support for i486 i586 i686 by reusing i386 config + # ld-wrapper dislikes `-rpath-link //nix/store`, so we normalize away the + # extra `/`. + ./normalize-var.patch + # Prevent a compilation error on darwin + ./darwin-targetconditionals.patch + # See: https://github.com/NixOS/nixpkgs/pull/186575 + ../../common/compiler-rt/darwin-plistbuddy-workaround.patch + # See: https://github.com/NixOS/nixpkgs/pull/194634#discussion_r999829893 + # ../../common/compiler-rt/armv7l-15.patch + ]; + + # TSAN requires XPC on Darwin, which we have no public/free source files for. We can depend on the Apple frameworks + # to get it, but they're unfree. Since LLVM is rather central to the stdenv, we patch out TSAN support so that Hydra + # can build this. If we didn't do it, basically the entire nixpkgs on Darwin would have an unfree dependency and we'd + # get no binary cache for the entire platform. If you really find yourself wanting the TSAN, make this controllable by + # a flag and turn the flag off during the stdenv build. + postPatch = lib.optionalString (!stdenv.isDarwin) '' + substituteInPlace cmake/builtin-config-ix.cmake \ + --replace 'set(X86 i386)' 'set(X86 i386 i486 i586 i686)' + '' + lib.optionalString stdenv.isDarwin '' + substituteInPlace cmake/config-ix.cmake \ + --replace 'set(COMPILER_RT_HAS_TSAN TRUE)' 'set(COMPILER_RT_HAS_TSAN FALSE)' + '' + lib.optionalString (useLLVM && !haveLibc) '' + substituteInPlace lib/builtins/aarch64/sme-libc-routines.c \ + --replace "" "" + substituteInPlace lib/builtins/int_util.c \ + --replace "#include " "" + substituteInPlace lib/builtins/clear_cache.c \ + --replace "#include " "" + substituteInPlace lib/builtins/cpu_model${lib.optionalString (lib.versionAtLeast version "18") "/x86"}.c \ + --replace "#include " "" + ''; + + # Hack around weird upsream RPATH bug + postInstall = lib.optionalString (stdenv.hostPlatform.isDarwin) '' + ln -s "$out/lib"/*/* "$out/lib" + '' + lib.optionalString (useLLVM && stdenv.hostPlatform.isLinux) '' + ln -s $out/lib/*/clang_rt.crtbegin-*.o $out/lib/crtbegin.o + ln -s $out/lib/*/clang_rt.crtend-*.o $out/lib/crtend.o + # Note the history of crt{begin,end}S in previous versions of llvm in nixpkg: + # The presence of crtbegin_shared has been added and removed; it's possible + # people have added/removed it to get it working on their platforms. + # Try each in turn for now. + ln -s $out/lib/*/clang_rt.crtbegin-*.o $out/lib/crtbeginS.o + ln -s $out/lib/*/clang_rt.crtend-*.o $out/lib/crtendS.o + ln -s $out/lib/*/clang_rt.crtbegin_shared-*.o $out/lib/crtbeginS.o + ln -s $out/lib/*/clang_rt.crtend_shared-*.o $out/lib/crtendS.o + '' + lib.optionalString doFakeLibgcc '' + ln -s $out/lib/freebsd/libclang_rt.builtins-*.a $out/lib/libgcc.a + ''; + + meta = llvm_meta // { + homepage = "https://compiler-rt.llvm.org/"; + description = "Compiler runtime libraries"; + longDescription = '' + The compiler-rt project provides highly tuned implementations of the + low-level code generator support routines like "__fixunsdfdi" and other + calls generated when a target doesn't have a short sequence of native + instructions to implement a core IR operation. It also provides + implementations of run-time libraries for dynamic testing tools such as + AddressSanitizer, ThreadSanitizer, MemorySanitizer, and DataFlowSanitizer. + ''; + # "All of the code in the compiler-rt project is dual licensed under the MIT + # license and the UIUC License (a BSD-like license)": + license = with lib.licenses; [ mit ncsa ]; + # compiler-rt requires a Clang stdenv on 32-bit RISC-V: + # https://reviews.llvm.org/D43106#1019077 + broken = stdenv.hostPlatform.isRiscV32 && !stdenv.cc.isClang; + }; +} diff --git a/pkgs/development/compilers/llvm/18/compiler-rt/normalize-var.patch b/pkgs/development/compilers/llvm/18/compiler-rt/normalize-var.patch new file mode 100644 index 000000000000..2b25fd4a0744 --- /dev/null +++ b/pkgs/development/compilers/llvm/18/compiler-rt/normalize-var.patch @@ -0,0 +1,16 @@ +diff --git a/cmake/Modules/CompilerRTUtils.cmake b/cmake/Modules/CompilerRTUtils.cmake +index 4c85551d7766..297d7a47c54b 100644 +--- a/cmake/Modules/CompilerRTUtils.cmake ++++ b/cmake/Modules/CompilerRTUtils.cmake +@@ -328,8 +328,9 @@ macro(load_llvm_config) + endif() + endif() + +- set(LLVM_LIBRARY_OUTPUT_INTDIR +- ${LLVM_BINARY_DIR}/${CMAKE_CFG_INTDIR}/lib${LLVM_LIBDIR_SUFFIX}) ++ get_filename_component(LLVM_LIBRARY_OUTPUT_INTDIR ++ ${LLVM_BINARY_DIR}/${CMAKE_CFG_INTDIR}/lib${LLVM_LIBDIR_SUFFIX} ++ REALPATH) + + set(LLVM_MAIN_SRC_DIR "${LLVM_MAIN_SRC_DIR_DEFAULT}" CACHE PATH "Path to LLVM source tree") + message(STATUS "LLVM_MAIN_SRC_DIR: \"${LLVM_MAIN_SRC_DIR}\"") diff --git a/pkgs/development/compilers/llvm/18/default.nix b/pkgs/development/compilers/llvm/18/default.nix new file mode 100644 index 000000000000..dd3000c04259 --- /dev/null +++ b/pkgs/development/compilers/llvm/18/default.nix @@ -0,0 +1,329 @@ +{ lowPrio, newScope, pkgs, lib, stdenv, cmake, ninja +, preLibcCrossHeaders +, libxml2, python3, fetchFromGitHub, overrideCC, wrapCCWith, wrapBintoolsWith +, buildLlvmTools # tools, but from the previous stage, for cross +, targetLlvmLibraries # libraries, but from the next stage, for cross +, targetLlvm +# This is the default binutils, but with *this* version of LLD rather +# than the default LLVM verion's, if LLD is the choice. We use these for +# the `useLLVM` bootstrapping below. +, bootBintoolsNoLibc ? + if stdenv.targetPlatform.linker == "lld" + then null + else pkgs.bintoolsNoLibc +, bootBintools ? + if stdenv.targetPlatform.linker == "lld" + then null + else pkgs.bintools +, darwin +# LLVM release information; specify one of these but not both: +, gitRelease ? null + # i.e.: + # { + # version = /* i.e. "15.0.0" */; + # rev = /* commit SHA */; + # rev-version = /* human readable version; i.e. "unstable-2022-26-07" */; + # sha256 = /* checksum for this release, can omit if specifying your own `monorepoSrc` */; + # } +, officialRelease ? { version = "18.1.1"; sha256 = "sha256-qAPNvEpztJjPz+kr5KcZz4iUTErsD8iXLURKl3yZoC8="; } + # i.e.: + # { + # version = /* i.e. "15.0.0" */; + # candidate = /* optional; if specified, should be: "rcN" */ + # sha256 = /* checksum for this release, can omit if specifying your own `monorepoSrc` */; + # } +# By default, we'll try to fetch a release from `github:llvm/llvm-project` +# corresponding to the `gitRelease` or `officialRelease` specified. +# +# You can provide your own LLVM source by specifying this arg but then it's up +# to you to make sure that the LLVM repo given matches the release configuration +# specified. +, monorepoSrc ? null +}: + +assert let + int = a: if a then 1 else 0; + xor = a: b: ((builtins.bitXor (int a) (int b)) == 1); +in + lib.assertMsg + (xor + (gitRelease != null) + (officialRelease != null)) + ("must specify `gitRelease` or `officialRelease`" + + (lib.optionalString (gitRelease != null) " — not both")); +let + monorepoSrc' = monorepoSrc; +in let + inherit (import ../common/common-let.nix { inherit lib gitRelease officialRelease; }) releaseInfo; + + inherit (releaseInfo) release_version version; + + inherit (import ../common/common-let.nix { inherit lib fetchFromGitHub release_version gitRelease officialRelease monorepoSrc'; }) llvm_meta monorepoSrc; + + tools = lib.makeExtensible (tools: let + callPackage = newScope (tools // { inherit stdenv cmake ninja libxml2 python3 release_version version monorepoSrc buildLlvmTools; }); + major = lib.versions.major release_version; + mkExtraBuildCommands0 = cc: '' + rsrc="$out/resource-root" + mkdir "$rsrc" + ln -s "${cc.lib}/lib/clang/${major}/include" "$rsrc" + echo "-resource-dir=$rsrc" >> $out/nix-support/cc-cflags + ''; + mkExtraBuildCommands = cc: mkExtraBuildCommands0 cc + '' + ln -s "${targetLlvmLibraries.compiler-rt.out}/lib" "$rsrc/lib" + ln -s "${targetLlvmLibraries.compiler-rt.out}/share" "$rsrc/share" + ''; + + bintoolsNoLibc' = + if bootBintoolsNoLibc == null + then tools.bintoolsNoLibc + else bootBintoolsNoLibc; + bintools' = + if bootBintools == null + then tools.bintools + else bootBintools; + + in { + + libllvm = callPackage ./llvm { + inherit llvm_meta; + }; + + # `llvm` historically had the binaries. When choosing an output explicitly, + # we need to reintroduce `outputSpecified` to get the expected behavior e.g. of lib.get* + llvm = tools.libllvm; + + libclang = callPackage ./clang { + inherit llvm_meta; + }; + + clang-unwrapped = tools.libclang; + + llvm-manpages = lowPrio (tools.libllvm.override { + enableManpages = true; + python3 = pkgs.python3; # don't use python-boot + }); + + clang-manpages = lowPrio (tools.libclang.override { + enableManpages = true; + python3 = pkgs.python3; # don't use python-boot + }); + + lldb-manpages = lowPrio (tools.lldb.override { + enableManpages = true; + python3 = pkgs.python3; # don't use python-boot + }); + + # pick clang appropriate for package set we are targeting + clang = + /**/ if stdenv.targetPlatform.useLLVM or false then tools.clangUseLLVM + else if (pkgs.targetPackages.stdenv or stdenv).cc.isGNU then tools.libstdcxxClang + else tools.libcxxClang; + + libstdcxxClang = wrapCCWith rec { + cc = tools.clang-unwrapped; + # libstdcxx is taken from gcc in an ad-hoc way in cc-wrapper. + libcxx = null; + extraPackages = [ + targetLlvmLibraries.compiler-rt + ]; + extraBuildCommands = mkExtraBuildCommands cc; + }; + + libcxxClang = wrapCCWith rec { + cc = tools.clang-unwrapped; + libcxx = targetLlvmLibraries.libcxx; + extraPackages = [ + targetLlvmLibraries.compiler-rt + ]; + extraBuildCommands = mkExtraBuildCommands cc; + }; + + lld = callPackage ./lld { + inherit llvm_meta; + }; + + mlir = callPackage ../common/mlir { + inherit llvm_meta; + }; + + lldb = callPackage ../common/lldb.nix { + src = callPackage ({ runCommand }: runCommand "lldb-src-${version}" {} '' + mkdir -p "$out" + cp -r ${monorepoSrc}/cmake "$out" + cp -r ${monorepoSrc}/lldb "$out" + '') { }; + patches = + [ + # FIXME: do we need this? ./procfs.patch + ../common/lldb/gnu-install-dirs.patch + ] + # This is a stopgap solution if/until the macOS SDK used for x86_64 is + # updated. + # + # The older 10.12 SDK used on x86_64 as of this writing has a `mach/machine.h` + # header that does not define `CPU_SUBTYPE_ARM64E` so we replace the one use + # of this preprocessor symbol in `lldb` with its expansion. + # + # See here for some context: + # https://github.com/NixOS/nixpkgs/pull/194634#issuecomment-1272129132 + ++ lib.optional ( + stdenv.targetPlatform.isDarwin + && !stdenv.targetPlatform.isAarch64 + && (lib.versionOlder darwin.apple_sdk.sdk.version "11.0") + ) ./lldb/cpu_subtype_arm64e_replacement.patch; + inherit llvm_meta; + }; + + # Below, is the LLVM bootstrapping logic. It handles building a + # fully LLVM toolchain from scratch. No GCC toolchain should be + # pulled in. As a consequence, it is very quick to build different + # targets provided by LLVM and we can also build for what GCC + # doesn’t support like LLVM. Probably we should move to some other + # file. + + bintools-unwrapped = callPackage ../common/bintools.nix { }; + + bintoolsNoLibc = wrapBintoolsWith { + bintools = tools.bintools-unwrapped; + libc = preLibcCrossHeaders; + }; + + bintools = wrapBintoolsWith { + bintools = tools.bintools-unwrapped; + }; + + clangUseLLVM = wrapCCWith rec { + cc = tools.clang-unwrapped; + libcxx = targetLlvmLibraries.libcxx; + bintools = bintools'; + extraPackages = [ + targetLlvmLibraries.compiler-rt + ] ++ lib.optionals (!stdenv.targetPlatform.isWasm) [ + targetLlvmLibraries.libunwind + ]; + extraBuildCommands = mkExtraBuildCommands cc; + nixSupport.cc-cflags = + [ "-rtlib=compiler-rt" + "-Wno-unused-command-line-argument" + "-B${targetLlvmLibraries.compiler-rt}/lib" + ] + ++ lib.optional (!stdenv.targetPlatform.isWasm) "--unwindlib=libunwind" + ++ lib.optional + (!stdenv.targetPlatform.isWasm && stdenv.targetPlatform.useLLVM or false) + "-lunwind" + ++ lib.optional stdenv.targetPlatform.isWasm "-fno-exceptions"; + nixSupport.cc-ldflags = lib.optionals (!stdenv.targetPlatform.isWasm) [ "-L${targetLlvmLibraries.libunwind}/lib" ]; + }; + + clangNoLibcxx = wrapCCWith rec { + cc = tools.clang-unwrapped; + libcxx = null; + bintools = bintools'; + extraPackages = [ + targetLlvmLibraries.compiler-rt + ]; + extraBuildCommands = mkExtraBuildCommands cc; + nixSupport.cc-cflags = + [ + "-rtlib=compiler-rt" + "-B${targetLlvmLibraries.compiler-rt}/lib" + "-nostdlib++" + ] + ++ lib.optional stdenv.targetPlatform.isWasm "-fno-exceptions"; + }; + + clangNoLibc = wrapCCWith rec { + cc = tools.clang-unwrapped; + libcxx = null; + bintools = bintoolsNoLibc'; + extraPackages = [ + targetLlvmLibraries.compiler-rt + ]; + extraBuildCommands = mkExtraBuildCommands cc; + nixSupport.cc-cflags = + [ + "-rtlib=compiler-rt" + "-B${targetLlvmLibraries.compiler-rt}/lib" + ] + ++ lib.optional stdenv.targetPlatform.isWasm "-fno-exceptions"; + }; + + clangNoCompilerRt = wrapCCWith rec { + cc = tools.clang-unwrapped; + libcxx = null; + bintools = bintoolsNoLibc'; + extraPackages = [ ]; + extraBuildCommands = mkExtraBuildCommands0 cc; + nixSupport.cc-cflags = + [ + "-nostartfiles" + ] + ++ lib.optional stdenv.targetPlatform.isWasm "-fno-exceptions"; + }; + + clangNoCompilerRtWithLibc = wrapCCWith (rec { + cc = tools.clang-unwrapped; + libcxx = null; + bintools = bintools'; + extraPackages = [ ]; + extraBuildCommands = mkExtraBuildCommands0 cc; + } // lib.optionalAttrs stdenv.targetPlatform.isWasm { + nixSupport.cc-cflags = [ "-fno-exceptions" ]; + }); + + # Has to be in tools despite mostly being a library, + # because we use a native helper executable from a + # non-cross build in cross builds. + libclc = callPackage ../common/libclc.nix { + inherit buildLlvmTools; + }; + }); + + libraries = lib.makeExtensible (libraries: let + callPackage = newScope (libraries // buildLlvmTools // { inherit stdenv cmake ninja libxml2 python3 release_version version monorepoSrc; }); + in { + + compiler-rt-libc = callPackage ./compiler-rt { + inherit llvm_meta; + stdenv = if stdenv.hostPlatform.useLLVM or false || (stdenv.hostPlatform.isDarwin && stdenv.hostPlatform.isStatic) + then overrideCC stdenv buildLlvmTools.clangNoCompilerRtWithLibc + else stdenv; + }; + + compiler-rt-no-libc = callPackage ./compiler-rt { + inherit llvm_meta; + stdenv = if stdenv.hostPlatform.useLLVM or false + then overrideCC stdenv buildLlvmTools.clangNoCompilerRt + else stdenv; + }; + + # N.B. condition is safe because without useLLVM both are the same. + compiler-rt = if stdenv.hostPlatform.isAndroid || stdenv.hostPlatform.isDarwin + then libraries.compiler-rt-libc + else libraries.compiler-rt-no-libc; + + stdenv = overrideCC stdenv buildLlvmTools.clang; + + libcxxStdenv = overrideCC stdenv buildLlvmTools.libcxxClang; + + # `libcxx` requires a fairly modern C++ compiler, + # so: we use the clang from this LLVM package set instead of the regular + # stdenv's compiler. + libcxx = callPackage ./libcxx { + inherit llvm_meta; + stdenv = overrideCC stdenv buildLlvmTools.clangNoLibcxx; + }; + + libunwind = callPackage ./libunwind { + inherit llvm_meta; + stdenv = overrideCC stdenv buildLlvmTools.clangNoLibcxx; + }; + + openmp = callPackage ./openmp { + inherit llvm_meta targetLlvm; + }; + }); + noExtend = extensible: lib.attrsets.removeAttrs extensible [ "extend" ]; + +in { inherit tools libraries release_version; } // (noExtend libraries) // (noExtend tools) diff --git a/pkgs/development/compilers/llvm/18/libcxx/0001-darwin-10.12-mbstate_t-fix.patch b/pkgs/development/compilers/llvm/18/libcxx/0001-darwin-10.12-mbstate_t-fix.patch new file mode 100644 index 000000000000..29942f8ed03d --- /dev/null +++ b/pkgs/development/compilers/llvm/18/libcxx/0001-darwin-10.12-mbstate_t-fix.patch @@ -0,0 +1,31 @@ +From 9c1cb26c1dd3f92d1c1177e548107d2cd3c5e616 Mon Sep 17 00:00:00 2001 +From: annalee <150648636+a-n-n-a-l-e-e@users.noreply.github.com> +Date: Fri, 23 Feb 2024 22:58:58 +0000 +Subject: [PATCH] darwin 10.12 mbstate_t fix + +https://github.com/llvm/llvm-project/issues/64226 + +removes space from +https://github.com/macports/macports-ports/raw/acd8acb171f1658596ed1cf25da48d5b932e2d19/lang/llvm-17/files/0042-mbstate_t-not-defined.patch +so it applies cleanly +--- + libcxx/include/__mbstate_t.h | 3 +++ + 1 file changed, 3 insertions(+) + +diff --git a/libcxx/include/__mbstate_t.h b/libcxx/include/__mbstate_t.h +index bfa6d61..5f51112 100644 +--- a/libcxx/include/__mbstate_t.h ++++ b/libcxx/include/__mbstate_t.h +@@ -42,6 +42,9 @@ + #elif __has_include() + # include // works on most Unixes + #elif __has_include() ++# if __has_include() ++# include ++# endif + # include // works on Darwin + #elif !defined(_LIBCPP_HAS_NO_WIDE_CHARACTERS) && __has_include_next() + # include_next // fall back to the C standard provider of mbstate_t +-- +2.43.0 + diff --git a/pkgs/development/compilers/llvm/18/libcxx/default.nix b/pkgs/development/compilers/llvm/18/libcxx/default.nix new file mode 100644 index 000000000000..4e3404dbe194 --- /dev/null +++ b/pkgs/development/compilers/llvm/18/libcxx/default.nix @@ -0,0 +1,142 @@ +{ lib, stdenv, llvm_meta +, monorepoSrc, runCommand, fetchpatch +, cmake, lndir, ninja, python3, fixDarwinDylibNames, version +, cxxabi ? if stdenv.hostPlatform.isFreeBSD then libcxxrt else null +, libcxxrt, libunwind +, enableShared ? !stdenv.hostPlatform.isStatic +}: + +# external cxxabi is not supported on Darwin as the build will not link libcxx +# properly and not re-export the cxxabi symbols into libcxx +# https://github.com/NixOS/nixpkgs/issues/166205 +# https://github.com/NixOS/nixpkgs/issues/269548 +assert cxxabi == null || !stdenv.hostPlatform.isDarwin; +let + basename = "libcxx"; + cxxabiName = "lib${if cxxabi == null then "cxxabi" else cxxabi.libName}"; + runtimes = [ "libcxx" ] ++ lib.optional (cxxabi == null) "libcxxabi"; + + # Note: useLLVM is likely false for Darwin but true under pkgsLLVM + useLLVM = stdenv.hostPlatform.useLLVM or false; + + cxxabiCMakeFlags = lib.optionals (useLLVM && !stdenv.hostPlatform.isWasm) [ + "-DLIBCXXABI_USE_COMPILER_RT=ON" + "-DLIBCXXABI_USE_LLVM_UNWINDER=ON" + ] ++ lib.optionals (lib.versionAtLeast version "18" && !(useLLVM && !stdenv.hostPlatform.isWasm)) [ + "-DLIBCXXABI_USE_LLVM_UNWINDER=OFF" + ] ++ lib.optionals stdenv.hostPlatform.isWasm [ + "-DLIBCXXABI_ENABLE_THREADS=OFF" + "-DLIBCXXABI_ENABLE_EXCEPTIONS=OFF" + ] ++ lib.optionals (!enableShared) [ + "-DLIBCXXABI_ENABLE_SHARED=OFF" + ]; + + cxxCMakeFlags = [ + "-DLIBCXX_CXX_ABI=${cxxabiName}" + ] ++ lib.optionals (cxxabi != null) [ + "-DLIBCXX_CXX_ABI_INCLUDE_PATHS=${lib.getDev cxxabi}/include" + ] ++ lib.optionals (stdenv.hostPlatform.isMusl || stdenv.hostPlatform.isWasi) [ + "-DLIBCXX_HAS_MUSL_LIBC=1" + ] ++ lib.optionals (lib.versionAtLeast version "18" && !useLLVM && stdenv.hostPlatform.libc == "glibc" && !stdenv.hostPlatform.isStatic) [ + "-DLIBCXX_ADDITIONAL_LIBRARIES=gcc_s" + ] ++ lib.optionals useLLVM [ + "-DLIBCXX_USE_COMPILER_RT=ON" + # There's precedent for this in llvm-project/libcxx/cmake/caches. + # In a monorepo build you might do the following in the libcxxabi build: + # -DLLVM_ENABLE_PROJECTS=libcxxabi;libunwinder + # -DLIBCXXABI_STATICALLY_LINK_UNWINDER_IN_STATIC_LIBRARY=On + # libcxx appears to require unwind and doesn't pull it in via other means. + "-DLIBCXX_ADDITIONAL_LIBRARIES=unwind" + ] ++ lib.optionals stdenv.hostPlatform.isWasm [ + "-DLIBCXX_ENABLE_THREADS=OFF" + "-DLIBCXX_ENABLE_FILESYSTEM=OFF" + "-DLIBCXX_ENABLE_EXCEPTIONS=OFF" + ] ++ lib.optionals (!enableShared) [ + "-DLIBCXX_ENABLE_SHARED=OFF" + ]; + + cmakeFlags = [ + "-DLLVM_ENABLE_RUNTIMES=${lib.concatStringsSep ";" runtimes}" + ] ++ lib.optionals stdenv.hostPlatform.isWasm [ + "-DCMAKE_C_COMPILER_WORKS=ON" + "-DCMAKE_CXX_COMPILER_WORKS=ON" + "-DUNIX=ON" # Required otherwise libc++ fails to detect the correct linker + ] ++ cxxCMakeFlags + ++ lib.optionals (cxxabi == null) cxxabiCMakeFlags; + +in + +stdenv.mkDerivation rec { + pname = basename; + inherit version cmakeFlags; + + src = runCommand "${pname}-src-${version}" {} ('' + mkdir -p "$out/llvm" + cp -r ${monorepoSrc}/cmake "$out" + cp -r ${monorepoSrc}/libcxx "$out" + cp -r ${monorepoSrc}/llvm/cmake "$out/llvm" + cp -r ${monorepoSrc}/llvm/utils "$out/llvm" + cp -r ${monorepoSrc}/third-party "$out" + cp -r ${monorepoSrc}/runtimes "$out" + '' + lib.optionalString (cxxabi == null) '' + cp -r ${monorepoSrc}/libcxxabi "$out" + ''); + + outputs = [ "out" "dev" ]; + + patches = lib.optionals (stdenv.isDarwin && lib.versionOlder stdenv.hostPlatform.darwinMinVersion "10.13") [ + # https://github.com/llvm/llvm-project/issues/64226 + ./0001-darwin-10.12-mbstate_t-fix.patch + ] ++ lib.optionals (cxxabi == null && lib.versionAtLeast version "18") [ + # Allow building libcxxabi alone when using LLVM unwinder + (fetchpatch { + url = "https://github.com/llvm/llvm-project/commit/77610dd10454e87bb387040d2b51100a17ac5755.patch"; + revert = true; + hash = "sha256-jFbC3vBY3nKfjknJ7UzaPyoy0iSYdD3+jUmOFeOaVcA="; + }) + (fetchpatch { + url = "https://github.com/llvm/llvm-project/commit/48e5b5ea92674ded69b998cf35724d9012c0f57d.patch"; + revert = true; + hash = "sha256-WN63L4T3GxVozPZb6kx21AgNe4rwwSUOeeryIGsvQYY="; + }) + ]; + + postPatch = '' + cd runtimes + ''; + + preConfigure = lib.optionalString stdenv.hostPlatform.isMusl '' + patchShebangs utils/cat_files.py + ''; + + nativeBuildInputs = [ cmake ninja python3 ] + ++ lib.optional stdenv.isDarwin fixDarwinDylibNames + ++ lib.optional (cxxabi != null) lndir; + + buildInputs = [ cxxabi ] + ++ lib.optionals (useLLVM && !stdenv.hostPlatform.isWasm) [ libunwind ]; + + # libc++.so is a linker script which expands to multiple libraries, + # libc++.so.1 and libc++abi.so or the external cxxabi. ld-wrapper doesn't + # support linker scripts so the external cxxabi needs to be symlinked in + postInstall = lib.optionalString (cxxabi != null) '' + lndir ${lib.getDev cxxabi}/include ''${!outputDev}/include/c++/v1 + lndir ${lib.getLib cxxabi}/lib ''${!outputLib}/lib + ''; + + passthru = { + isLLVM = true; + }; + + meta = llvm_meta // { + homepage = "https://libcxx.llvm.org/"; + description = "C++ standard library"; + longDescription = '' + libc++ is an implementation of the C++ standard library, targeting C++11, + C++14 and above. + ''; + # "All of the code in libc++ is dual licensed under the MIT license and the + # UIUC License (a BSD-like license)": + license = with lib.licenses; [ mit ncsa ]; + }; +} diff --git a/pkgs/development/compilers/llvm/18/libunwind/default.nix b/pkgs/development/compilers/llvm/18/libunwind/default.nix new file mode 100644 index 000000000000..a3c8e2594f5a --- /dev/null +++ b/pkgs/development/compilers/llvm/18/libunwind/default.nix @@ -0,0 +1,63 @@ +{ lib, stdenv, llvm_meta, version +, monorepoSrc, runCommand +, cmake +, ninja +, python3 +, enableShared ? !stdenv.hostPlatform.isStatic +}: + +stdenv.mkDerivation rec { + pname = "libunwind"; + inherit version; + + # I am not so comfortable giving libc++ and friends the whole monorepo as + # requested, so I filter it to what is needed. + src = runCommand "${pname}-src-${version}" {} '' + mkdir -p "$out" + cp -r ${monorepoSrc}/cmake "$out" + cp -r ${monorepoSrc}/${pname} "$out" + mkdir -p "$out/libcxx" + cp -r ${monorepoSrc}/libcxx/cmake "$out/libcxx" + cp -r ${monorepoSrc}/libcxx/utils "$out/libcxx" + mkdir -p "$out/llvm" + cp -r ${monorepoSrc}/llvm/cmake "$out/llvm" + cp -r ${monorepoSrc}/llvm/utils "$out/llvm" + cp -r ${monorepoSrc}/runtimes "$out" + ''; + + sourceRoot = "${src.name}/runtimes"; + + prePatch = '' + cd ../${pname} + chmod -R u+w . + ''; + + postPatch = '' + cd ../runtimes + ''; + + postInstall = lib.optionalString (enableShared && !stdenv.hostPlatform.isDarwin) '' + # libcxxabi wants to link to libunwind_shared.so (?). + ln -s $out/lib/libunwind.so $out/lib/libunwind_shared.so + ''; + + outputs = [ "out" "dev" ]; + + nativeBuildInputs = [ cmake ninja python3 ]; + + cmakeFlags = [ + "-DLLVM_ENABLE_RUNTIMES=libunwind" + ] ++ lib.optional (!enableShared) "-DLIBUNWIND_ENABLE_SHARED=OFF"; + + meta = llvm_meta // { + # Details: https://github.com/llvm/llvm-project/blob/main/libunwind/docs/index.rst + homepage = "https://clang.llvm.org/docs/Toolchain.html#unwind-library"; + description = "LLVM's unwinder library"; + longDescription = '' + The unwind library provides a family of _Unwind_* functions implementing + the language-neutral stack unwinding portion of the Itanium C++ ABI (Level + I). It is a dependency of the C++ ABI library, and sometimes is a + dependency of other runtimes. + ''; + }; +} diff --git a/pkgs/development/compilers/llvm/18/lld/default.nix b/pkgs/development/compilers/llvm/18/lld/default.nix new file mode 100644 index 000000000000..775eb94701b1 --- /dev/null +++ b/pkgs/development/compilers/llvm/18/lld/default.nix @@ -0,0 +1,53 @@ +{ lib, stdenv, llvm_meta +, buildLlvmTools +, monorepoSrc, runCommand +, cmake +, ninja +, libxml2 +, libllvm +, version +}: + +stdenv.mkDerivation rec { + pname = "lld"; + inherit version; + + # Blank llvm dir just so relative path works + src = runCommand "${pname}-src-${version}" {} '' + mkdir -p "$out" + cp -r ${monorepoSrc}/cmake "$out" + cp -r ${monorepoSrc}/${pname} "$out" + mkdir -p "$out/libunwind" + cp -r ${monorepoSrc}/libunwind/include "$out/libunwind" + mkdir -p "$out/llvm" + ''; + + sourceRoot = "${src.name}/${pname}"; + + nativeBuildInputs = [ cmake ninja ]; + buildInputs = [ libllvm libxml2 ]; + + cmakeFlags = [ + "-DLLD_INSTALL_PACKAGE_DIR=${placeholder "dev"}/lib/cmake/lld" + ] ++ lib.optionals (stdenv.hostPlatform != stdenv.buildPlatform) [ + "-DLLVM_TABLEGEN_EXE=${buildLlvmTools.llvm}/bin/llvm-tblgen" + ]; + + # Musl's default stack size is too small for lld to be able to link Firefox. + LDFLAGS = lib.optionalString stdenv.hostPlatform.isMusl "-Wl,-z,stack-size=2097152"; + + outputs = [ "out" "lib" "dev" ]; + + meta = llvm_meta // { + homepage = "https://lld.llvm.org/"; + description = "The LLVM linker (unwrapped)"; + longDescription = '' + LLD is a linker from the LLVM project that is a drop-in replacement for + system linkers and runs much faster than them. It also provides features + that are useful for toolchain developers. + The linker supports ELF (Unix), PE/COFF (Windows), Mach-O (macOS), and + WebAssembly in descending order of completeness. Internally, LLD consists + of several different linkers. + ''; + }; +} diff --git a/pkgs/development/compilers/llvm/18/lldb/cpu_subtype_arm64e_replacement.patch b/pkgs/development/compilers/llvm/18/lldb/cpu_subtype_arm64e_replacement.patch new file mode 100644 index 000000000000..20d35c9f3ea9 --- /dev/null +++ b/pkgs/development/compilers/llvm/18/lldb/cpu_subtype_arm64e_replacement.patch @@ -0,0 +1,12 @@ +diff --git a/source/Host/macosx/objcxx/HostInfoMacOSX.mm b/source/Host/macosx/objcxx/HostInfoMacOSX.mm +--- a/source/Host/macosx/objcxx/HostInfoMacOSX.mm ++++ b/source/Host/macosx/objcxx/HostInfoMacOSX.mm +@@ -233,7 +233,7 @@ void HostInfoMacOSX::ComputeHostArchitectureSupport(ArchSpec &arch_32, + len = sizeof(is_64_bit_capable); + ::sysctlbyname("hw.cpu64bit_capable", &is_64_bit_capable, &len, NULL, 0); + +- if (cputype == CPU_TYPE_ARM64 && cpusubtype == CPU_SUBTYPE_ARM64E) { ++ if (cputype == CPU_TYPE_ARM64 && cpusubtype == ((cpu_subtype_t) 2)) { // CPU_SUBTYPE_ARM64E is not available in the macOS 10.12 headers + // The arm64e architecture is a preview. Pretend the host architecture + // is arm64. + cpusubtype = CPU_SUBTYPE_ARM64_ALL; diff --git a/pkgs/development/compilers/llvm/18/lldb/procfs.patch b/pkgs/development/compilers/llvm/18/lldb/procfs.patch new file mode 100644 index 000000000000..7b200e86505c --- /dev/null +++ b/pkgs/development/compilers/llvm/18/lldb/procfs.patch @@ -0,0 +1,46 @@ +--- a/source/Plugins/Process/Linux/Procfs.h ++++ b/source/Plugins/Process/Linux/Procfs.h +@@ -10,6 +10,13 @@ + // sys/procfs.h on Android/Linux for all supported architectures. + + #include ++#include ++ ++// on i686 preprocessor symbols with these register names are defined as ++// numeric constants; these symbols clash with identifier names used in ++// `llvm/Support/VirtualFileSystem.h` and `llvm/ADT/SmallVector.h` ++#undef FS ++#undef CS + + #include "lldb/lldb-types.h" + +@@ -17,23 +24,13 @@ + + #include + +-#ifdef __ANDROID__ +-#if defined(__arm64__) || defined(__aarch64__) +-typedef unsigned long elf_greg_t; +-typedef elf_greg_t +- elf_gregset_t[(sizeof(struct user_pt_regs) / sizeof(elf_greg_t))]; +-typedef struct user_fpsimd_state elf_fpregset_t; +-#ifndef NT_FPREGSET +-#define NT_FPREGSET NT_PRFPREG +-#endif // NT_FPREGSET +-#elif defined(__mips__) +-#ifndef NT_FPREGSET +-#define NT_FPREGSET NT_PRFPREG +-#endif // NT_FPREGSET +-#endif +-#else // __ANDROID__ ++#if !defined(__GLIBC__) && defined(__powerpc__) ++#define pt_regs musl_pt_regs ++#include ++#undef pt_regs ++#else + #include +-#endif // __ANDROID__ ++#endif + + namespace lldb_private { + namespace process_linux { diff --git a/pkgs/development/compilers/llvm/18/llvm/default.nix b/pkgs/development/compilers/llvm/18/llvm/default.nix new file mode 100644 index 000000000000..94b4d0116173 --- /dev/null +++ b/pkgs/development/compilers/llvm/18/llvm/default.nix @@ -0,0 +1,432 @@ +{ lib, stdenv, llvm_meta +, pkgsBuildBuild +, monorepoSrc +, runCommand +, cmake +, darwin +, ninja +, python3 +, python3Packages +, libffi +, enableGoldPlugin ? true +, libbfd +, libpfm +, libxml2 +, ncurses +, version +, release_version +, zlib +, which +, sysctl +, buildLlvmTools +, debugVersion ? false +, doCheck ? (!stdenv.isx86_32 /* TODO: why */) && (!stdenv.hostPlatform.isMusl) + && (stdenv.hostPlatform == stdenv.buildPlatform) +, enableManpages ? false +, enableSharedLibraries ? !stdenv.hostPlatform.isStatic +, enablePFM ? stdenv.isLinux /* PFM only supports Linux */ + # broken for Ampere eMAG 8180 (c2.large.arm on Packet) #56245 + # broken for the armv7l builder + && !stdenv.hostPlatform.isAarch +, enablePolly ? true +}: + +let + inherit (lib) optional optionals optionalString; + + # Used when creating a version-suffixed symlink of libLLVM.dylib + shortVersion = with lib; + concatStringsSep "." (take 1 (splitString "." release_version)); + + # Ordinarily we would just the `doCheck` and `checkDeps` functionality + # `mkDerivation` gives us to manage our test dependencies (instead of breaking + # out `doCheck` as a package level attribute). + # + # Unfortunately `lit` does not forward `$PYTHONPATH` to children processes, in + # particular the children it uses to do feature detection. + # + # This means that python deps we add to `checkDeps` (which the python + # interpreter is made aware of via `$PYTHONPATH` – populated by the python + # setup hook) are not picked up by `lit` which causes it to skip tests. + # + # Adding `python3.withPackages (ps: [ ... ])` to `checkDeps` also doesn't work + # because this package is shadowed in `$PATH` by the regular `python3` + # package. + # + # So, we "manually" assemble one python derivation for the package to depend + # on, taking into account whether checks are enabled or not: + python = if doCheck then + # Note that we _explicitly_ ask for a python interpreter for our host + # platform here; the splicing that would ordinarily take care of this for + # us does not seem to work once we use `withPackages`. + let + checkDeps = ps: with ps; [ psutil ]; + in pkgsBuildBuild.targetPackages.python3.withPackages checkDeps + else python3; + +in + +stdenv.mkDerivation (rec { + pname = "llvm"; + inherit version; + + src = runCommand "${pname}-src-${version}" {} ('' + mkdir -p "$out" + cp -r ${monorepoSrc}/cmake "$out" + cp -r ${monorepoSrc}/${pname} "$out" + cp -r ${monorepoSrc}/third-party "$out" + '' + lib.optionalString enablePolly '' + chmod u+w "$out/${pname}/tools" + cp -r ${monorepoSrc}/polly "$out/${pname}/tools" + ''); + + sourceRoot = "${src.name}/${pname}"; + + outputs = [ "out" "lib" "dev" "python" ]; + + nativeBuildInputs = [ cmake ninja python ] + ++ optionals enableManpages [ + # Note: we intentionally use `python3Packages` instead of `python3.pkgs`; + # splicing does *not* work with the latter. (TODO: fix) + python3Packages.sphinx + ] ++ optionals (lib.versionOlder version "18" && enableManpages) [ + python3Packages.recommonmark + ] ++ optionals (lib.versionAtLeast version "18" && enableManpages) [ + python3Packages.myst-parser + ]; + + buildInputs = [ libxml2 libffi ] + ++ optional enablePFM libpfm; # exegesis + + propagatedBuildInputs = [ ncurses zlib ]; + + nativeCheckInputs = [ + which + ] ++ lib.optional stdenv.isDarwin sysctl; + + patches = [ + ./gnu-install-dirs.patch + + # Running the tests involves invoking binaries (like `opt`) that depend on + # the LLVM dylibs and reference them by absolute install path (i.e. their + # nix store path). + # + # Because we have not yet run the install phase (we're running these tests + # as part of `checkPhase` instead of `installCheckPhase`) these absolute + # paths do not exist yet; to work around this we point the loader (`ld` on + # unix, `dyld` on macOS) at the `lib` directory which will later become this + # package's `lib` output. + # + # Previously we would just set `LD_LIBRARY_PATH` to include the build `lib` + # dir but: + # - this doesn't generalize well to other platforms; `lit` doesn't forward + # `DYLD_LIBRARY_PATH` (macOS): + # + https://github.com/llvm/llvm-project/blob/0d89963df354ee309c15f67dc47c8ab3cb5d0fb2/llvm/utils/lit/lit/TestingConfig.py#L26 + # - even if `lit` forwarded this env var, we actually cannot set + # `DYLD_LIBRARY_PATH` in the child processes `lit` launches because + # `DYLD_LIBRARY_PATH` (and `DYLD_FALLBACK_LIBRARY_PATH`) is cleared for + # "protected processes" (i.e. the python interpreter that runs `lit`): + # https://stackoverflow.com/a/35570229 + # - other LLVM subprojects deal with this issue by having their `lit` + # configuration set these env vars for us; it makes sense to do the same + # for LLVM: + # + https://github.com/llvm/llvm-project/blob/4c106cfdf7cf7eec861ad3983a3dd9a9e8f3a8ae/clang-tools-extra/test/Unit/lit.cfg.py#L22-L31 + # + # !!! TODO: look into upstreaming this patch + ./llvm-lit-cfg-add-libs-to-dylib-path.patch + + # `lit` has a mode where it executes run lines as a shell script which is + # constructs; this is problematic for macOS because it means that there's + # another process in between `lit` and the binaries being tested. As noted + # above, this means that `DYLD_LIBRARY_PATH` is cleared which means that our + # tests fail with dyld errors. + # + # To get around this we patch `lit` to reintroduce `DYLD_LIBRARY_PATH`, when + # present in the test configuration. + # + # It's not clear to me why this isn't an issue for LLVM developers running + # on macOS (nothing about this _seems_ nix specific).. + ./lit-shell-script-runner-set-dyld-library-path.patch + ] ++ lib.optionals enablePolly [ + ./gnu-install-dirs-polly.patch + + # Just like the `llvm-lit-cfg` patch, but for `polly`. + ./polly-lit-cfg-add-libs-to-dylib-path.patch + ]; + + postPatch = optionalString stdenv.isDarwin '' + substituteInPlace cmake/modules/AddLLVM.cmake \ + --replace 'set(_install_name_dir INSTALL_NAME_DIR "@rpath")' "set(_install_name_dir)" \ + --replace 'set(_install_rpath "@loader_path/../''${CMAKE_INSTALL_LIBDIR}''${LLVM_LIBDIR_SUFFIX}" ''${extra_libdir})' "" + + # As of LLVM 15, marked as XFAIL on arm64 macOS but lit doesn't seem to pick + # this up: https://github.com/llvm/llvm-project/blob/c344d97a125b18f8fed0a64aace73c49a870e079/llvm/test/MC/ELF/cfi-version.ll#L7 + rm test/MC/ELF/cfi-version.ll + + # This test tries to call `sw_vers` by absolute path (`/usr/bin/sw_vers`) + # and thus fails under the sandbox: + substituteInPlace unittests/TargetParser/Host.cpp \ + --replace '/usr/bin/sw_vers' "${(builtins.toString darwin.DarwinTools) + "/bin/sw_vers" }" + + # This test tries to call the intrinsics `@llvm.roundeven.f32` and + # `@llvm.roundeven.f64` which seem to (incorrectly?) lower to `roundevenf` + # and `roundeven` on macOS. + # + # However these functions are glibc specific so the test fails: + # - https://www.gnu.org/software/gnulib/manual/html_node/roundevenf.html + # - https://www.gnu.org/software/gnulib/manual/html_node/roundeven.html + # + substituteInPlace test/ExecutionEngine/Interpreter/intrinsics.ll \ + --replace "%roundeven32 = call float @llvm.roundeven.f32(float 0.000000e+00)" "" \ + --replace "%roundeven64 = call double @llvm.roundeven.f64(double 0.000000e+00)" "" + '' + optionalString (stdenv.isDarwin && stdenv.hostPlatform.isx86) '' + # This test fails on darwin x86_64 because `sw_vers` reports a different + # macOS version than what LLVM finds by reading + # `/System/Library/CoreServices/SystemVersion.plist` (which is passed into + # the sandbox on macOS). + # + # The `sw_vers` provided by nixpkgs reports the macOS version associated + # with the `CoreFoundation` framework with which it was built. Because + # nixpkgs pins the SDK for `aarch64-darwin` and `x86_64-darwin` what + # `sw_vers` reports is not guaranteed to match the macOS version of the host + # that's building this derivation. + # + # Astute readers will note that we only _patch_ this test on aarch64-darwin + # (to use the nixpkgs provided `sw_vers`) instead of disabling it outright. + # So why does this test pass on aarch64? + # + # Well, it seems that `sw_vers` on aarch64 actually links against the _host_ + # CoreFoundation framework instead of the nixpkgs provided one. + # + # Not entirely sure what the right fix is here. I'm assuming aarch64 + # `sw_vers` doesn't intentionally link against the host `CoreFoundation` + # (still digging into how this ends up happening, will follow up) but that + # aside I think the more pertinent question is: should we be patching LLVM's + # macOS version detection logic to use `sw_vers` instead of reading host + # paths? This *is* a way in which details about builder machines can creep + # into the artifacts that are produced, affecting reproducibility, but it's + # not clear to me when/where/for what this even gets used in LLVM. + # + # TODO(@rrbutani): fix/follow-up + substituteInPlace unittests/TargetParser/Host.cpp \ + --replace "getMacOSHostVersion" "DISABLED_getMacOSHostVersion" + + # This test fails with a `dysmutil` crash; have not yet dug into what's + # going on here (TODO(@rrbutani)). + rm test/tools/dsymutil/ARM/obfuscated.test + '' + '' + # FileSystem permissions tests fail with various special bits + substituteInPlace unittests/Support/CMakeLists.txt \ + --replace "Path.cpp" "" + rm unittests/Support/Path.cpp + substituteInPlace unittests/IR/CMakeLists.txt \ + --replace "PassBuilderCallbacksTest.cpp" "" + rm unittests/IR/PassBuilderCallbacksTest.cpp + rm test/tools/llvm-objcopy/ELF/mirror-permissions-unix.test + + # Fails in the presence of anti-virus software or other intrusion-detection software that + # modifies the atime when run. See #284056. + rm test/tools/llvm-objcopy/ELF/strip-preserve-atime.test + '' + optionalString stdenv.hostPlatform.isMusl '' + patch -p1 -i ${../../common/llvm/TLI-musl.patch} + substituteInPlace unittests/Support/CMakeLists.txt \ + --replace "add_subdirectory(DynamicLibrary)" "" + rm unittests/Support/DynamicLibrary/DynamicLibraryTest.cpp + # valgrind unhappy with musl or glibc, but fails w/musl only + rm test/CodeGen/AArch64/wineh4.mir + '' + optionalString stdenv.hostPlatform.isAarch32 '' + # skip failing X86 test cases on 32-bit ARM + rm test/DebugInfo/X86/convert-debugloc.ll + rm test/DebugInfo/X86/convert-inlined.ll + rm test/DebugInfo/X86/convert-linked.ll + rm test/tools/dsymutil/X86/op-convert.test + rm test/tools/gold/X86/split-dwarf.ll + rm test/tools/llvm-dwarfdump/X86/prettyprint_types.s + rm test/tools/llvm-dwarfdump/X86/simplified-template-names.s + rm test/CodeGen/RISCV/attributes.ll + rm test/CodeGen/RISCV/xtheadmempair.ll + '' + optionalString (stdenv.hostPlatform.system == "armv6l-linux") '' + # Seems to require certain floating point hardware (NEON?) + rm test/ExecutionEngine/frem.ll + '' + '' + patchShebangs test/BugPoint/compile-custom.ll.py + ''; + + preConfigure = '' + # Workaround for configure flags that need to have spaces + cmakeFlagsArray+=( + -DLLVM_LIT_ARGS="-svj''${NIX_BUILD_CORES} --no-progress-bar" + ) + ''; + + # Defensive check: some paths (that we make symlinks to) depend on the release + # version, for example: + # - https://github.com/llvm/llvm-project/blob/406bde9a15136254f2b10d9ef3a42033b3cb1b16/clang/lib/Headers/CMakeLists.txt#L185 + # + # So we want to sure that the version in the source matches the release + # version we were given. + # + # We do this check here, in the LLVM build, because it happens early. + postConfigure = let + v = lib.versions; + major = v.major release_version; + minor = v.minor release_version; + patch = v.patch release_version; + in '' + # $1: part, $2: expected + check_version() { + part="''${1^^}" + part="$(cat include/llvm/Config/llvm-config.h | grep "#define LLVM_VERSION_''${part} " | cut -d' ' -f3)" + + if [[ "$part" != "$2" ]]; then + echo >&2 \ + "mismatch in the $1 version! we have version ${release_version}" \ + "and expected the $1 version to be '$2'; the source has '$part' instead" + exit 3 + fi + } + + check_version major ${major} + check_version minor ${minor} + check_version patch ${patch} + ''; + + # E.g. mesa.drivers use the build-id as a cache key (see #93946): + LDFLAGS = optionalString (enableSharedLibraries && !stdenv.isDarwin) "-Wl,--build-id=sha1"; + + hardeningDisable = [ "trivialautovarinit" ]; + + cmakeBuildType = if debugVersion then "Debug" else "Release"; + + cmakeFlags = with stdenv; let + # These flags influence llvm-config's BuildVariables.inc in addition to the + # general build. We need to make sure these are also passed via + # CROSS_TOOLCHAIN_FLAGS_NATIVE when cross-compiling or llvm-config-native + # will return different results from the cross llvm-config. + # + # Some flags don't need to be repassed because LLVM already does so (like + # CMAKE_BUILD_TYPE), others are irrelevant to the result. + flagsForLlvmConfig = [ + "-DLLVM_INSTALL_PACKAGE_DIR=${placeholder "dev"}/lib/cmake/llvm" + "-DLLVM_ENABLE_RTTI=ON" + ] ++ optionals enableSharedLibraries [ + "-DLLVM_LINK_LLVM_DYLIB=ON" + ]; + in flagsForLlvmConfig ++ [ + "-DLLVM_INSTALL_UTILS=ON" # Needed by rustc + "-DLLVM_BUILD_TESTS=${if doCheck then "ON" else "OFF"}" + "-DLLVM_ENABLE_FFI=ON" + "-DLLVM_HOST_TRIPLE=${stdenv.hostPlatform.config}" + "-DLLVM_DEFAULT_TARGET_TRIPLE=${stdenv.hostPlatform.config}" + "-DLLVM_ENABLE_DUMP=ON" + ] ++ optionals stdenv.hostPlatform.isStatic [ + # Disables building of shared libs, -fPIC is still injected by cc-wrapper + "-DLLVM_ENABLE_PIC=OFF" + "-DLLVM_BUILD_STATIC=ON" + "-DLLVM_LINK_LLVM_DYLIB=off" + # libxml2 needs to be disabled because the LLVM build system ignores its .la + # file and doesn't link zlib as well. + # https://github.com/ClangBuiltLinux/tc-build/issues/150#issuecomment-845418812 + "-DLLVM_ENABLE_LIBXML2=OFF" + ] ++ optionals enableManpages [ + "-DLLVM_BUILD_DOCS=ON" + "-DLLVM_ENABLE_SPHINX=ON" + "-DSPHINX_OUTPUT_MAN=ON" + "-DSPHINX_OUTPUT_HTML=OFF" + "-DSPHINX_WARNINGS_AS_ERRORS=OFF" + ] ++ optionals enableGoldPlugin [ + "-DLLVM_BINUTILS_INCDIR=${libbfd.dev}/include" + ] ++ optionals isDarwin [ + "-DLLVM_ENABLE_LIBCXX=ON" + "-DCAN_TARGET_i386=false" + ] ++ optionals ((stdenv.hostPlatform != stdenv.buildPlatform) && !(stdenv.buildPlatform.canExecute stdenv.hostPlatform)) [ + "-DCMAKE_CROSSCOMPILING=True" + "-DLLVM_TABLEGEN=${buildLlvmTools.llvm}/bin/llvm-tblgen" + ( + let + nativeCC = pkgsBuildBuild.targetPackages.stdenv.cc; + nativeBintools = nativeCC.bintools.bintools; + nativeToolchainFlags = [ + "-DCMAKE_C_COMPILER=${nativeCC}/bin/${nativeCC.targetPrefix}cc" + "-DCMAKE_CXX_COMPILER=${nativeCC}/bin/${nativeCC.targetPrefix}c++" + "-DCMAKE_AR=${nativeBintools}/bin/${nativeBintools.targetPrefix}ar" + "-DCMAKE_STRIP=${nativeBintools}/bin/${nativeBintools.targetPrefix}strip" + "-DCMAKE_RANLIB=${nativeBintools}/bin/${nativeBintools.targetPrefix}ranlib" + ]; + # We need to repass the custom GNUInstallDirs values, otherwise CMake + # will choose them for us, leading to wrong results in llvm-config-native + nativeInstallFlags = [ + "-DCMAKE_INSTALL_PREFIX=${placeholder "out"}" + "-DCMAKE_INSTALL_BINDIR=${placeholder "out"}/bin" + "-DCMAKE_INSTALL_INCLUDEDIR=${placeholder "dev"}/include" + "-DCMAKE_INSTALL_LIBDIR=${placeholder "lib"}/lib" + "-DCMAKE_INSTALL_LIBEXECDIR=${placeholder "lib"}/libexec" + ]; + in "-DCROSS_TOOLCHAIN_FLAGS_NATIVE:list=" + + lib.concatStringsSep ";" (lib.concatLists [ + flagsForLlvmConfig + nativeToolchainFlags + nativeInstallFlags + ]) + ) + ]; + + postInstall = '' + mkdir -p $python/share + mv $out/share/opt-viewer $python/share/opt-viewer + moveToOutput "bin/llvm-config*" "$dev" + substituteInPlace "$dev/lib/cmake/llvm/LLVMExports-${if debugVersion then "debug" else "release"}.cmake" \ + --replace "\''${_IMPORT_PREFIX}/lib/lib" "$lib/lib/lib" \ + --replace "$out/bin/llvm-config" "$dev/bin/llvm-config" + substituteInPlace "$dev/lib/cmake/llvm/LLVMConfig.cmake" \ + --replace 'set(LLVM_BINARY_DIR "''${LLVM_INSTALL_PREFIX}")' 'set(LLVM_BINARY_DIR "'"$lib"'")' + '' + + optionalString (stdenv.buildPlatform != stdenv.hostPlatform) '' + cp NATIVE/bin/llvm-config $dev/bin/llvm-config-native + ''; + + inherit doCheck; + + checkTarget = "check-all"; + + # For the update script: + passthru.monorepoSrc = monorepoSrc; + + requiredSystemFeatures = [ "big-parallel" ]; + meta = llvm_meta // { + homepage = "https://llvm.org/"; + description = "A collection of modular and reusable compiler and toolchain technologies"; + longDescription = '' + The LLVM Project is a collection of modular and reusable compiler and + toolchain technologies. Despite its name, LLVM has little to do with + traditional virtual machines. The name "LLVM" itself is not an acronym; it + is the full name of the project. + LLVM began as a research project at the University of Illinois, with the + goal of providing a modern, SSA-based compilation strategy capable of + supporting both static and dynamic compilation of arbitrary programming + languages. Since then, LLVM has grown to be an umbrella project consisting + of a number of subprojects, many of which are being used in production by + a wide variety of commercial and open source projects as well as being + widely used in academic research. Code in the LLVM project is licensed + under the "Apache 2.0 License with LLVM exceptions". + ''; + }; +} // lib.optionalAttrs enableManpages { + pname = "llvm-manpages"; + + propagatedBuildInputs = []; + + ninjaFlags = [ "docs-llvm-man" ]; + installTargets = [ "install-docs-llvm-man" ]; + + postPatch = null; + postInstall = null; + + outputs = [ "out" ]; + + doCheck = false; + + meta = llvm_meta // { + description = "man pages for LLVM ${version}"; + }; +}) diff --git a/pkgs/development/compilers/llvm/18/llvm/gnu-install-dirs-polly.patch b/pkgs/development/compilers/llvm/18/llvm/gnu-install-dirs-polly.patch new file mode 100644 index 000000000000..6a359bdbefde --- /dev/null +++ b/pkgs/development/compilers/llvm/18/llvm/gnu-install-dirs-polly.patch @@ -0,0 +1,13 @@ +--- a/tools/polly/cmake/polly_macros.cmake 2024-03-15 17:36:20.550893344 -0700 ++++ b/tools/polly/cmake/polly_macros.cmake 2024-03-15 17:37:06.277332960 -0700 +@@ -45,8 +45,8 @@ + install(TARGETS ${name} + COMPONENT ${name} + EXPORT LLVMExports +- LIBRARY DESTINATION lib${LLVM_LIBDIR_SUFFIX} +- ARCHIVE DESTINATION lib${LLVM_LIBDIR_SUFFIX}) ++ LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}${LLVM_LIBDIR_SUFFIX} ++ ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}${LLVM_LIBDIR_SUFFIX}) + add_llvm_install_targets(install-${name} + COMPONENT ${name}) + endif() diff --git a/pkgs/development/compilers/llvm/18/llvm/gnu-install-dirs.patch b/pkgs/development/compilers/llvm/18/llvm/gnu-install-dirs.patch new file mode 100644 index 000000000000..e2122ebf603d --- /dev/null +++ b/pkgs/development/compilers/llvm/18/llvm/gnu-install-dirs.patch @@ -0,0 +1,137 @@ +diff --git a/CMakeLists.txt b/CMakeLists.txt +index 471817d68286..c51463304159 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -1010,7 +1010,7 @@ if (NOT TENSORFLOW_AOT_PATH STREQUAL "") + add_subdirectory(${TENSORFLOW_AOT_PATH}/xla_aot_runtime_src + ${CMAKE_ARCHIVE_OUTPUT_DIRECTORY}/tf_runtime) + install(TARGETS tf_xla_runtime EXPORT LLVMExports +- ARCHIVE DESTINATION lib${LLVM_LIBDIR_SUFFIX} COMPONENT tf_xla_runtime) ++ ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}${LLVM_LIBDIR_SUFFIX} COMPONENT tf_xla_runtime) + set_property(GLOBAL APPEND PROPERTY LLVM_EXPORTS tf_xla_runtime) + # Once we add more modules, we should handle this more automatically. + if (DEFINED LLVM_OVERRIDE_MODEL_HEADER_INLINERSIZEMODEL) +diff --git a/cmake/modules/AddLLVM.cmake b/cmake/modules/AddLLVM.cmake +index 230620c37027..dd16cab1835e 100644 +--- a/cmake/modules/AddLLVM.cmake ++++ b/cmake/modules/AddLLVM.cmake +@@ -876,8 +876,8 @@ macro(add_llvm_library name) + get_target_export_arg(${name} LLVM export_to_llvmexports ${umbrella}) + install(TARGETS ${name} + ${export_to_llvmexports} +- LIBRARY DESTINATION lib${LLVM_LIBDIR_SUFFIX} COMPONENT ${name} +- ARCHIVE DESTINATION lib${LLVM_LIBDIR_SUFFIX} COMPONENT ${name} ++ LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}${LLVM_LIBDIR_SUFFIX}" COMPONENT ${name} ++ ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}${LLVM_LIBDIR_SUFFIX}" COMPONENT ${name} + RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}" COMPONENT ${name}) + + if (NOT LLVM_ENABLE_IDE) +@@ -2069,7 +2069,7 @@ function(llvm_install_library_symlink name dest type) + set(LLVM_LINK_OR_COPY copy) + endif() + +- set(output_dir lib${LLVM_LIBDIR_SUFFIX}) ++ set(output_dir ${CMAKE_INSTALL_FULL_LIBDIR}${LLVM_LIBDIR_SUFFIX}) + if(WIN32 AND "${type}" STREQUAL "SHARED") + set(output_dir "${CMAKE_INSTALL_BINDIR}") + endif() +@@ -2344,16 +2344,37 @@ function(llvm_setup_rpath name) + + if (APPLE) + set(_install_name_dir INSTALL_NAME_DIR "@rpath") +- set(_install_rpath "@loader_path/../lib${LLVM_LIBDIR_SUFFIX}" ${extra_libdir}) ++ set(_install_rpath "@loader_path/../${CMAKE_INSTALL_LIBDIR}${LLVM_LIBDIR_SUFFIX}" ${extra_libdir}) + elseif(${CMAKE_SYSTEM_NAME} MATCHES "AIX" AND BUILD_SHARED_LIBS) + # $ORIGIN is not interpreted at link time by aix ld. + # Since BUILD_SHARED_LIBS is only recommended for use by developers, + # hardcode the rpath to build/install lib dir first in this mode. + # FIXME: update this when there is better solution. +- set(_install_rpath "${LLVM_LIBRARY_OUTPUT_INTDIR}" "${CMAKE_INSTALL_PREFIX}/lib${LLVM_LIBDIR_SUFFIX}" ${extra_libdir}) ++ set(_install_rpath "${LLVM_LIBRARY_OUTPUT_INTDIR}" "${CMAKE_INSTALL_FULL_LIBDIR}${LLVM_LIBDIR_SUFFIX}" ${extra_libdir}) + elseif(UNIX) +- set(_build_rpath "\$ORIGIN/../lib${LLVM_LIBDIR_SUFFIX}" ${extra_libdir}) +- set(_install_rpath "\$ORIGIN/../lib${LLVM_LIBDIR_SUFFIX}") ++ # Note that we add `extra_libdir` (aka `LLVM_LIBRARY_DIR` in our case) back ++ # to `_install_rpath` here. ++ # ++ # In nixpkgs we do not build and install LLVM alongside rdeps of LLVM (i.e. ++ # clang); instead LLVM is its own package and thus lands at its own nix ++ # store path. This makes it so that the default relative rpath (`../lib/`) ++ # does not point at the LLVM shared objects. ++ # ++ # More discussion here: ++ # - https://github.com/NixOS/nixpkgs/pull/235624#discussion_r1220150329 ++ # - https://reviews.llvm.org/D146918 (16.0.5+) ++ # ++ # Note that we leave `extra_libdir` in `_build_rpath`: without FHS there is ++ # no potential that this will result in us pulling in the "wrong" LLVM. ++ # Adding this to the build rpath means we aren't forced to use ++ # `installCheckPhase` instead of `checkPhase` (i.e. binaries in the build ++ # dir, pre-install, will have the right rpath for LLVM). ++ # ++ # As noted in the differential above, an alternative solution is to have ++ # all rdeps of nixpkgs' LLVM (that use the AddLLVM.cmake machinery) set ++ # `CMAKE_INSTALL_RPATH`. ++ set(_build_rpath "\$ORIGIN/../${CMAKE_INSTALL_LIBDIR}${LLVM_LIBDIR_SUFFIX}" ${extra_libdir}) ++ set(_install_rpath "\$ORIGIN/../${CMAKE_INSTALL_LIBDIR}${LLVM_LIBDIR_SUFFIX}" ${extra_libdir}) + if(${CMAKE_SYSTEM_NAME} MATCHES "(FreeBSD|DragonFly)") + set_property(TARGET ${name} APPEND_STRING PROPERTY + LINK_FLAGS " -Wl,-z,origin ") +diff --git a/cmake/modules/AddOCaml.cmake b/cmake/modules/AddOCaml.cmake +index 891c9e6d618c..8d963f3b0069 100644 +--- a/cmake/modules/AddOCaml.cmake ++++ b/cmake/modules/AddOCaml.cmake +@@ -147,9 +147,9 @@ function(add_ocaml_library name) + endforeach() + + if( APPLE ) +- set(ocaml_rpath "@executable_path/../../../lib${LLVM_LIBDIR_SUFFIX}") ++ set(ocaml_rpath "@executable_path/../../../${CMAKE_INSTALL_LIBDIR}${LLVM_LIBDIR_SUFFIX}") + elseif( UNIX ) +- set(ocaml_rpath "\\$ORIGIN/../../../lib${LLVM_LIBDIR_SUFFIX}") ++ set(ocaml_rpath "\\$ORIGIN/../../../${CMAKE_INSTALL_LIBDIR}${LLVM_LIBDIR_SUFFIX}") + endif() + list(APPEND ocaml_flags "-ldopt" "-Wl,-rpath,${ocaml_rpath}") + +diff --git a/cmake/modules/CMakeLists.txt b/cmake/modules/CMakeLists.txt +index d99af79aa38e..21e794224b99 100644 +--- a/cmake/modules/CMakeLists.txt ++++ b/cmake/modules/CMakeLists.txt +@@ -127,7 +127,7 @@ set(LLVM_CONFIG_INCLUDE_DIRS + ) + list(REMOVE_DUPLICATES LLVM_CONFIG_INCLUDE_DIRS) + +-extend_path(LLVM_CONFIG_LIBRARY_DIR "\${LLVM_INSTALL_PREFIX}" "lib\${LLVM_LIBDIR_SUFFIX}") ++extend_path(LLVM_CONFIG_LIBRARY_DIR "\${LLVM_INSTALL_PREFIX}" "${CMAKE_INSTALL_LIBDIR}\${LLVM_LIBDIR_SUFFIX}") + set(LLVM_CONFIG_LIBRARY_DIRS + "${LLVM_CONFIG_LIBRARY_DIR}" + # FIXME: Should there be other entries here? +diff --git a/tools/llvm-config/BuildVariables.inc.in b/tools/llvm-config/BuildVariables.inc.in +index 370005cd8d7d..7e790bc52111 100644 +--- a/tools/llvm-config/BuildVariables.inc.in ++++ b/tools/llvm-config/BuildVariables.inc.in +@@ -23,6 +23,7 @@ + #define LLVM_CXXFLAGS "@LLVM_CXXFLAGS@" + #define LLVM_BUILDMODE "@LLVM_BUILDMODE@" + #define LLVM_LIBDIR_SUFFIX "@LLVM_LIBDIR_SUFFIX@" ++#define LLVM_INSTALL_LIBDIR "@CMAKE_INSTALL_LIBDIR@" + #define LLVM_INSTALL_INCLUDEDIR "@CMAKE_INSTALL_INCLUDEDIR@" + #define LLVM_INSTALL_PACKAGE_DIR "@LLVM_INSTALL_PACKAGE_DIR@" + #define LLVM_TARGETS_BUILT "@LLVM_TARGETS_BUILT@" +diff --git a/tools/llvm-config/llvm-config.cpp b/tools/llvm-config/llvm-config.cpp +index e86eb2b44b10..f63e207e792e 100644 +--- a/tools/llvm-config/llvm-config.cpp ++++ b/tools/llvm-config/llvm-config.cpp +@@ -366,7 +366,11 @@ int main(int argc, char **argv) { + sys::fs::make_absolute(ActivePrefix, Path); + ActiveBinDir = std::string(Path.str()); + } +- ActiveLibDir = ActivePrefix + "/lib" + LLVM_LIBDIR_SUFFIX; ++ { ++ SmallString<256> Path(LLVM_INSTALL_LIBDIR LLVM_LIBDIR_SUFFIX); ++ sys::fs::make_absolute(ActivePrefix, Path); ++ ActiveLibDir = std::string(Path.str()); ++ } + { + SmallString<256> Path(LLVM_INSTALL_PACKAGE_DIR); + sys::fs::make_absolute(ActivePrefix, Path); diff --git a/pkgs/development/compilers/llvm/18/llvm/lit-shell-script-runner-set-dyld-library-path.patch b/pkgs/development/compilers/llvm/18/llvm/lit-shell-script-runner-set-dyld-library-path.patch new file mode 100644 index 000000000000..e4f049f4b177 --- /dev/null +++ b/pkgs/development/compilers/llvm/18/llvm/lit-shell-script-runner-set-dyld-library-path.patch @@ -0,0 +1,12 @@ +--- a/utils/lit/lit/TestRunner.py 2024-03-15 17:27:53.170780798 -0700 ++++ b/utils/lit/lit/TestRunner.py 2024-03-15 17:28:43.277447791 -0700 +@@ -1183,6 +1183,9 @@ + f.write("@echo on\n") + f.write("\n@if %ERRORLEVEL% NEQ 0 EXIT\n".join(commands)) + else: ++ if "DYLD_LIBRARY_PATH" in test.config.environment: ++ f.write(f'export DYLD_LIBRARY_PATH="{test.config.environment["DYLD_LIBRARY_PATH"]}"\n') ++ + for i, ln in enumerate(commands): + match = re.fullmatch(kPdbgRegex, ln) + if match: diff --git a/pkgs/development/compilers/llvm/18/llvm/llvm-lit-cfg-add-libs-to-dylib-path.patch b/pkgs/development/compilers/llvm/18/llvm/llvm-lit-cfg-add-libs-to-dylib-path.patch new file mode 100644 index 000000000000..d4ccb2ae9822 --- /dev/null +++ b/pkgs/development/compilers/llvm/18/llvm/llvm-lit-cfg-add-libs-to-dylib-path.patch @@ -0,0 +1,80 @@ +diff --git a/test/Unit/lit.cfg.py b/test/Unit/lit.cfg.py +index 81e8dc04acea..479ff95681e2 100644 +--- a/test/Unit/lit.cfg.py ++++ b/test/Unit/lit.cfg.py +@@ -3,6 +3,7 @@ + # Configuration file for the 'lit' test runner. + + import os ++import platform + import subprocess + + import lit.formats +@@ -55,3 +56,26 @@ if sys.platform in ["win32", "cygwin"] and os.path.isdir(config.shlibdir): + # Win32 may use %SYSTEMDRIVE% during file system shell operations, so propogate. + if sys.platform == "win32" and "SYSTEMDRIVE" in os.environ: + config.environment["SYSTEMDRIVE"] = os.environ["SYSTEMDRIVE"] ++ ++# Add the LLVM dynamic libs to the platform-specific loader search path env var: ++# ++# TODO: this is copied from `clang`'s `lit.cfg.py`; should unify.. ++def find_shlibpath_var(): ++ if platform.system() in ["Linux", "FreeBSD", "NetBSD", "OpenBSD", "SunOS"]: ++ yield "LD_LIBRARY_PATH" ++ elif platform.system() == "Darwin": ++ yield "DYLD_LIBRARY_PATH" ++ elif platform.system() == "Windows": ++ yield "PATH" ++ elif platform.system() == "AIX": ++ yield "LIBPATH" ++ ++for shlibpath_var in find_shlibpath_var(): ++ shlibpath = os.path.pathsep.join( ++ (config.shlibdir, ++ config.environment.get(shlibpath_var, ''))) ++ config.environment[shlibpath_var] = shlibpath ++ break ++else: ++ lit_config.warning("unable to inject shared library path on '{}'" ++ .format(platform.system())) +diff --git a/test/lit.cfg.py b/test/lit.cfg.py +index 75a38b4c5dad..856fc75c9d74 100644 +--- a/test/lit.cfg.py ++++ b/test/lit.cfg.py +@@ -42,6 +42,26 @@ llvm_config.with_environment("PATH", config.llvm_tools_dir, append_path=True) + llvm_config.with_system_environment( + ["HOME", "INCLUDE", "LIB", "TMP", "TEMP"]) + ++# Add the LLVM dynamic libs to the platform-specific loader search path env var: ++# ++# TODO: this is copied from `clang`'s `lit.cfg.py`; should unify.. ++def find_shlibpath_var(): ++ if platform.system() in ["Linux", "FreeBSD", "NetBSD", "OpenBSD", "SunOS"]: ++ yield "LD_LIBRARY_PATH" ++ elif platform.system() == "Darwin": ++ yield "DYLD_LIBRARY_PATH" ++ elif platform.system() == "Windows": ++ yield "PATH" ++ elif platform.system() == "AIX": ++ yield "LIBPATH" ++ ++for shlibpath_var in find_shlibpath_var(): ++ shlibpath = config.llvm_shlib_dir ++ llvm_config.with_environment(shlibpath_var, shlibpath, append_path = True) ++ break ++else: ++ lit_config.warning("unable to inject shared library path on '{}'" ++ .format(platform.system())) + + # Set up OCAMLPATH to include newly built OCaml libraries. + top_ocaml_lib = os.path.join(config.llvm_lib_dir, "ocaml") +@@ -318,7 +338,7 @@ def have_cxx_shared_library(): + + try: + readobj_cmd = subprocess.Popen( +- [readobj_exe, "--needed-libs", readobj_exe], stdout=subprocess.PIPE ++ [readobj_exe, "--needed-libs", readobj_exe], stdout=subprocess.PIPE, env=config.environment + ) + except OSError: + print("could not exec llvm-readobj") + diff --git a/pkgs/development/compilers/llvm/18/llvm/polly-lit-cfg-add-libs-to-dylib-path.patch b/pkgs/development/compilers/llvm/18/llvm/polly-lit-cfg-add-libs-to-dylib-path.patch new file mode 100644 index 000000000000..1354ad267314 --- /dev/null +++ b/pkgs/development/compilers/llvm/18/llvm/polly-lit-cfg-add-libs-to-dylib-path.patch @@ -0,0 +1,24 @@ +diff --git a/tools/polly/test/lit.cfg b/tools/polly/test/lit.cfg +index 41e3a589c61e..09f3b17498b0 100644 +--- a/tools/polly/test/lit.cfg ++++ b/tools/polly/test/lit.cfg +@@ -36,9 +36,17 @@ base_paths = [config.llvm_tools_dir, config.environment['PATH']] + path = os.path.pathsep.join(base_paths + config.extra_paths) + config.environment['PATH'] = path + ++# (Copied from polly/test/Unit/lit.cfg) ++if platform.system() == 'Darwin': ++ shlibpath_var = 'DYLD_LIBRARY_PATH' ++elif platform.system() == 'Windows': ++ shlibpath_var = 'PATH' ++else: ++ shlibpath_var = 'LD_LIBRARY_PATH' ++ + path = os.path.pathsep.join((config.llvm_libs_dir, +- config.environment.get('LD_LIBRARY_PATH',''))) +-config.environment['LD_LIBRARY_PATH'] = path ++ config.environment.get(shlibpath_var,''))) ++config.environment[shlibpath_var] = path + + llvm_config.use_default_substitutions() + diff --git a/pkgs/development/compilers/llvm/18/openmp/default.nix b/pkgs/development/compilers/llvm/18/openmp/default.nix new file mode 100644 index 000000000000..e1c3c2379af2 --- /dev/null +++ b/pkgs/development/compilers/llvm/18/openmp/default.nix @@ -0,0 +1,73 @@ +{ lib +, stdenv +, llvm_meta +, monorepoSrc +, runCommand +, cmake +, ninja +, llvm +, targetLlvm +, lit +, clang-unwrapped +, perl +, pkg-config +, xcbuild +, version +}: + +stdenv.mkDerivation rec { + pname = "openmp"; + inherit version; + + src = runCommand "${pname}-src-${version}" {} '' + mkdir -p "$out" + cp -r ${monorepoSrc}/cmake "$out" + cp -r ${monorepoSrc}/${pname} "$out" + ''; + + sourceRoot = "${src.name}/${pname}"; + + patches = [ + ./fix-find-tool.patch + ./run-lit-directly.patch + ]; + + outputs = [ "out" "dev" ]; + + nativeBuildInputs = [ cmake ninja perl pkg-config lit ]; + buildInputs = [ + (if stdenv.buildPlatform == stdenv.hostPlatform then llvm else targetLlvm) + ]; + + nativeCheckInputs = lib.optional stdenv.hostPlatform.isDarwin xcbuild.xcrun; + + # Unsup:Pass:XFail:Fail + # 26:267:16:8 + doCheck = false; + checkTarget = "check-openmp"; + + preCheck = '' + patchShebangs ../tools/archer/tests/deflake.bash + ''; + + cmakeFlags = [ + "-DCLANG_TOOL=${clang-unwrapped}/bin/clang" + "-DOPT_TOOL=${llvm}/bin/opt" + "-DLINK_TOOL=${llvm}/bin/llvm-link" + ]; + + meta = llvm_meta // { + homepage = "https://openmp.llvm.org/"; + description = "Support for the OpenMP language"; + longDescription = '' + The OpenMP subproject of LLVM contains the components required to build an + executable OpenMP program that are outside the compiler itself. + Contains the code for the runtime library against which code compiled by + "clang -fopenmp" must be linked before it can run and the library that + supports offload to target devices. + ''; + # "All of the code is dual licensed under the MIT license and the UIUC + # License (a BSD-like license)": + license = with lib.licenses; [ mit ncsa ]; + }; +} diff --git a/pkgs/development/compilers/llvm/18/openmp/fix-find-tool.patch b/pkgs/development/compilers/llvm/18/openmp/fix-find-tool.patch new file mode 100644 index 000000000000..b7f51196f7ba --- /dev/null +++ b/pkgs/development/compilers/llvm/18/openmp/fix-find-tool.patch @@ -0,0 +1,17 @@ +diff --git a/libomptarget/DeviceRTL/CMakeLists.txt b/libomptarget/DeviceRTL/CMakeLists.txt +index 630947abec7e..9f032dc7bd3f 100644 +--- a/libomptarget/DeviceRTL/CMakeLists.txt ++++ b/libomptarget/DeviceRTL/CMakeLists.txt +@@ -27,10 +27,10 @@ endif() + if (LLVM_DIR) + # Builds that use pre-installed LLVM have LLVM_DIR set. + # A standalone or LLVM_ENABLE_RUNTIMES=openmp build takes this route +- find_program(CLANG_TOOL clang PATHS ${LLVM_TOOLS_BINARY_DIR} NO_DEFAULT_PATH) ++ find_program(CLANG_TOOL clang PATHS ${LLVM_TOOLS_BINARY_DIR}) + find_program(PACKAGER_TOOL clang-offload-packager PATHS ${LLVM_TOOLS_BINARY_DIR} NO_DEFAULT_PATH) + find_program(LINK_TOOL llvm-link PATHS ${LLVM_TOOLS_BINARY_DIR} NO_DEFAULT_PATH) +- find_program(OPT_TOOL opt PATHS ${LLVM_TOOLS_BINARY_DIR} NO_DEFAULT_PATH) ++ find_program(OPT_TOOL opt PATHS ${LLVM_TOOLS_BINARY_DIR}) + if ((NOT CLANG_TOOL) OR (NOT LINK_TOOL) OR (NOT OPT_TOOL) OR (NOT PACKAGER_TOOL)) + libomptarget_say("Not building DeviceRTL. Missing clang: ${CLANG_TOOL}, llvm-link: ${LINK_TOOL}, opt: ${OPT_TOOL}, or clang-offload-packager: ${PACKAGER_TOOL}") + return() diff --git a/pkgs/development/compilers/llvm/18/openmp/run-lit-directly.patch b/pkgs/development/compilers/llvm/18/openmp/run-lit-directly.patch new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 31b97fc21e1c..8e60dd43db26 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -16532,6 +16532,31 @@ with pkgs; targetLlvm = targetPackages.llvmPackages_17.llvm or llvmPackages_17.llvm; })); + inherit + (rec { + llvmPackages_18 = recurseIntoAttrs (callPackage ../development/compilers/llvm/18 ({ + inherit (stdenvAdapters) overrideCC; + buildLlvmTools = buildPackages.llvmPackages_18.tools; + targetLlvmLibraries = targetPackages.llvmPackages_18.libraries or llvmPackages_18.libraries; + targetLlvm = targetPackages.llvmPackages_18.llvm or llvmPackages_18.llvm; + })); + + clang_18 = llvmPackages_18.clang; + lld_18 = llvmPackages_18.lld; + lldb_18 = llvmPackages_18.lldb; + llvm_18 = llvmPackages_18.llvm; + + clang-tools_18 = callPackage ../development/tools/clang-tools { + llvmPackages = llvmPackages_18; + }; + }) + llvmPackages_18 + clang_18 + lld_18 + lldb_18 + llvm_18 + clang-tools_18; + lorri = callPackage ../tools/misc/lorri { inherit (darwin.apple_sdk.frameworks) CoreServices Security; }; From b31090028095e93923ccb2d8cc616f79d9f5288b Mon Sep 17 00:00:00 2001 From: Fabian Affolter Date: Tue, 26 Mar 2024 10:54:21 +0100 Subject: [PATCH 010/116] python312Packages.kubernetes: add changelog to meta --- pkgs/development/python-modules/kubernetes/default.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/pkgs/development/python-modules/kubernetes/default.nix b/pkgs/development/python-modules/kubernetes/default.nix index bb3bd33e469e..569ce11033cb 100644 --- a/pkgs/development/python-modules/kubernetes/default.nix +++ b/pkgs/development/python-modules/kubernetes/default.nix @@ -67,6 +67,7 @@ buildPythonPackage rec { meta = with lib; { description = "Kubernetes Python client"; homepage = "https://github.com/kubernetes-client/python"; + changelog = "https://github.com/kubernetes-client/python/releases/tag/v${version}"; license = licenses.asl20; maintainers = with maintainers; [ lsix ]; }; From 4d403ea87ef517595567beb4ecbd47c447939f6e Mon Sep 17 00:00:00 2001 From: Fabian Affolter Date: Tue, 26 Mar 2024 11:06:41 +0100 Subject: [PATCH 011/116] python312Packages.kubernetes: refactor --- .../python-modules/kubernetes/default.nix | 38 ++++++++++++------- 1 file changed, 24 insertions(+), 14 deletions(-) diff --git a/pkgs/development/python-modules/kubernetes/default.nix b/pkgs/development/python-modules/kubernetes/default.nix index 569ce11033cb..2ed3307f26a3 100644 --- a/pkgs/development/python-modules/kubernetes/default.nix +++ b/pkgs/development/python-modules/kubernetes/default.nix @@ -1,14 +1,15 @@ { lib , stdenv -, buildPythonPackage -, fetchFromGitHub -, pythonOlder - -# propgatedBuildInputs , adal +, buildPythonPackage , certifi +, fetchFromGitHub , google-auth +, mock +, pytestCheckHook , python-dateutil +, pythonOlder +, pythonRelaxDepsHook , pyyaml , requests , requests-oauthlib @@ -16,16 +17,12 @@ , six , urllib3 , websocket-client - -# tests -, pytestCheckHook -, mock }: buildPythonPackage rec { pname = "kubernetes"; version = "28.1.0"; - format = "setuptools"; + pyproject = true; disabled = pythonOlder "3.6"; @@ -36,20 +33,33 @@ buildPythonPackage rec { hash = "sha256-NKrxv5a5gkgpNG7yViTKYBYnU249taWl6fkPJa7/Rzo="; }; - propagatedBuildInputs = [ - adal + pythonRelaxDeps = [ + "urllib3" + ]; + + build-system = [ + pythonRelaxDepsHook + setuptools + ]; + + dependencies = [ certifi google-auth python-dateutil pyyaml requests requests-oauthlib - setuptools six urllib3 websocket-client ]; + passthru.optional-dependencies = { + adal = [ + adal + ]; + }; + pythonImportsCheck = [ "kubernetes" ]; @@ -57,7 +67,7 @@ buildPythonPackage rec { nativeCheckInputs = [ mock pytestCheckHook - ]; + ] ++ lib.flatten (builtins.attrValues passthru.optional-dependencies); disabledTests = lib.optionals stdenv.isDarwin [ # AssertionError: != From 00532e60bfa21c45ce8aee94c60ddb9094dbb4f4 Mon Sep 17 00:00:00 2001 From: Fabian Affolter Date: Tue, 26 Mar 2024 11:06:58 +0100 Subject: [PATCH 012/116] python312Packages.kubernetes: fix test failure --- pkgs/development/python-modules/kubernetes/default.nix | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/pkgs/development/python-modules/kubernetes/default.nix b/pkgs/development/python-modules/kubernetes/default.nix index 2ed3307f26a3..7818871db1b7 100644 --- a/pkgs/development/python-modules/kubernetes/default.nix +++ b/pkgs/development/python-modules/kubernetes/default.nix @@ -33,6 +33,11 @@ buildPythonPackage rec { hash = "sha256-NKrxv5a5gkgpNG7yViTKYBYnU249taWl6fkPJa7/Rzo="; }; + postPatch = '' + substituteInPlace kubernetes/base/config/kube_config_test.py \ + --replace-fail "assertEquals" "assertEqual" + ''; + pythonRelaxDeps = [ "urllib3" ]; From f0887fa04002e9dcdb687c91588dea09fd645a6c Mon Sep 17 00:00:00 2001 From: Friedrich Altheide <11352905+FriedrichAltheide@users.noreply.github.com> Date: Wed, 14 Feb 2024 10:33:43 +0100 Subject: [PATCH 013/116] virtualbox: fix guest additions resize support - Build virtualbox guest additions from source and fix paths - Install VBoxDRMClient to support resizing - Support resizing on wayland and x11 - Adding multiple new options - clipboard - seamless - Removing x11 option - Support linux 6.8 --- .../services/x11/display-managers/xpra.nix | 1 - .../virtualisation/virtualbox-guest.nix | 116 ++++++---- .../virtualization/virtualbox/default.nix | 7 +- .../guest-additions-iso/default.nix | 30 +++ .../virtualbox/guest-additions/builder.nix | 133 +++++++++++ .../virtualbox/guest-additions/default.nix | 216 +++++++----------- .../guest-additions/no-legacy-xorg.patch | 45 ++++ .../guest-additions/strlcpy-1.patch | 29 +++ .../guest-additions/strlcpy-2.patch | 86 +++++++ .../virtualization/virtualbox/update.sh | 15 +- pkgs/top-level/linux-kernels.nix | 4 +- 11 files changed, 495 insertions(+), 187 deletions(-) create mode 100644 pkgs/applications/virtualization/virtualbox/guest-additions-iso/default.nix create mode 100644 pkgs/applications/virtualization/virtualbox/guest-additions/builder.nix create mode 100644 pkgs/applications/virtualization/virtualbox/guest-additions/no-legacy-xorg.patch create mode 100644 pkgs/applications/virtualization/virtualbox/guest-additions/strlcpy-1.patch create mode 100644 pkgs/applications/virtualization/virtualbox/guest-additions/strlcpy-2.patch diff --git a/nixos/modules/services/x11/display-managers/xpra.nix b/nixos/modules/services/x11/display-managers/xpra.nix index 0861530f21e8..3e7c6b01b3e9 100644 --- a/nixos/modules/services/x11/display-managers/xpra.nix +++ b/nixos/modules/services/x11/display-managers/xpra.nix @@ -251,7 +251,6 @@ in environment.systemPackages = [pkgs.xpra]; - virtualisation.virtualbox.guest.x11 = false; hardware.pulseaudio.enable = mkDefault cfg.pulseaudio; hardware.pulseaudio.systemWide = mkDefault cfg.pulseaudio; }; diff --git a/nixos/modules/virtualisation/virtualbox-guest.nix b/nixos/modules/virtualisation/virtualbox-guest.nix index 94f70c65436c..c2606968d3be 100644 --- a/nixos/modules/virtualisation/virtualbox-guest.nix +++ b/nixos/modules/virtualisation/virtualbox-guest.nix @@ -5,14 +5,32 @@ with lib; let - cfg = config.virtualisation.virtualbox.guest; kernel = config.boot.kernelPackages; + mkVirtualBoxUserService = serviceArgs: { + description = "VirtualBox Guest User Services ${serviceArgs}"; + + wantedBy = [ "graphical-session.target" ]; + partOf = [ "graphical-session.target" ]; + + # The graphical session may not be ready when starting the service + # Hence, check if the DISPLAY env var is set, otherwise fail, wait and retry again + startLimitBurst = 20; + + unitConfig.ConditionVirtualization = "oracle"; + + # Check if the display environment is ready, otherwise fail + preStart = "${pkgs.bash}/bin/bash -c \"if [ -z $DISPLAY ]; then exit 1; fi\""; + serviceConfig = { + ExecStart = "@${kernel.virtualboxGuestAdditions}/bin/VBoxClient --foreground ${serviceArgs}"; + # Wait after a failure, hoping that the display environment is ready after waiting + RestartSec = 2; + Restart = "always"; + }; + }; in - { - ###### interface options.virtualisation.virtualbox.guest = { @@ -22,32 +40,45 @@ in description = lib.mdDoc "Whether to enable the VirtualBox service and other guest additions."; }; - x11 = mkOption { + clipboard = mkOption { default = true; type = types.bool; - description = lib.mdDoc "Whether to enable x11 graphics"; + description = lib.mdDoc "Whether to enable clipboard support."; + }; + + seamless = mkOption { + default = true; + type = types.bool; + description = lib.mdDoc "Whether to enable seamless mode. When activated windows from the guest appear next to the windows of the host."; + }; + + draganddrop = mkOption { + default = true; + type = types.bool; + description = lib.mdDoc "Whether to enable drag and drop support."; }; }; ###### implementation - config = mkIf cfg.enable (mkMerge [{ - assertions = [{ - assertion = pkgs.stdenv.hostPlatform.isx86; - message = "Virtualbox not currently supported on ${pkgs.stdenv.hostPlatform.system}"; - }]; + config = mkIf cfg.enable (mkMerge [ + { + assertions = [{ + assertion = pkgs.stdenv.hostPlatform.isx86; + message = "Virtualbox not currently supported on ${pkgs.stdenv.hostPlatform.system}"; + }]; - environment.systemPackages = [ kernel.virtualboxGuestAdditions ]; + environment.systemPackages = [ kernel.virtualboxGuestAdditions ]; - boot.extraModulePackages = [ kernel.virtualboxGuestAdditions ]; + boot.extraModulePackages = [ kernel.virtualboxGuestAdditions ]; - boot.supportedFilesystems = [ "vboxsf" ]; - boot.initrd.supportedFilesystems = [ "vboxsf" ]; + boot.supportedFilesystems = [ "vboxsf" ]; + boot.initrd.supportedFilesystems = [ "vboxsf" ]; - users.groups.vboxsf.gid = config.ids.gids.vboxsf; + users.groups.vboxsf.gid = config.ids.gids.vboxsf; - systemd.services.virtualbox = - { description = "VirtualBox Guest Services"; + systemd.services.virtualbox = { + description = "VirtualBox Guest Services"; wantedBy = [ "multi-user.target" ]; requires = [ "dev-vboxguest.device" ]; @@ -58,36 +89,27 @@ in serviceConfig.ExecStart = "@${kernel.virtualboxGuestAdditions}/bin/VBoxService VBoxService --foreground"; }; - services.udev.extraRules = - '' - # /dev/vboxuser is necessary for VBoxClient to work. Maybe we - # should restrict this to logged-in users. - KERNEL=="vboxuser", OWNER="root", GROUP="root", MODE="0666" + services.udev.extraRules = + '' + # /dev/vboxuser is necessary for VBoxClient to work. Maybe we + # should restrict this to logged-in users. + KERNEL=="vboxuser", OWNER="root", GROUP="root", MODE="0666" - # Allow systemd dependencies on vboxguest. - SUBSYSTEM=="misc", KERNEL=="vboxguest", TAG+="systemd" - ''; - } (mkIf cfg.x11 { - services.xserver.videoDrivers = [ "vmware" "virtualbox" "modesetting" ]; - - services.xserver.config = - '' - Section "InputDevice" - Identifier "VBoxMouse" - Driver "vboxmouse" - EndSection - ''; - - services.xserver.serverLayoutSection = - '' - InputDevice "VBoxMouse" - ''; - - services.xserver.displayManager.sessionCommands = - '' - PATH=${makeBinPath [ pkgs.gnugrep pkgs.which pkgs.xorg.xorgserver.out ]}:$PATH \ - ${kernel.virtualboxGuestAdditions}/bin/VBoxClient-all - ''; - })]); + # Allow systemd dependencies on vboxguest. + SUBSYSTEM=="misc", KERNEL=="vboxguest", TAG+="systemd" + ''; + systemd.user.services.virtualboxClientVmsvga = mkVirtualBoxUserService "--vmsvga-session"; + } + ( + mkIf cfg.clipboard { + systemd.user.services.virtualboxClientClipboard = mkVirtualBoxUserService "--clipboard"; + } + ) + ( + mkIf cfg.seamless { + systemd.user.services.virtualboxClientSeamless = mkVirtualBoxUserService "--seamless"; + } + ) + ]); } diff --git a/pkgs/applications/virtualization/virtualbox/default.nix b/pkgs/applications/virtualization/virtualbox/default.nix index df2094c3b1fc..900dc054a0c2 100644 --- a/pkgs/applications/virtualization/virtualbox/default.nix +++ b/pkgs/applications/virtualization/virtualbox/default.nix @@ -1,4 +1,4 @@ -{ config, stdenv, fetchurl, fetchpatch, lib, acpica-tools, dev86, pam, libxslt, libxml2, wrapQtAppsHook +{ config, stdenv, fetchurl, fetchpatch, callPackage, lib, acpica-tools, dev86, pam, libxslt, libxml2, wrapQtAppsHook , libX11, xorgproto, libXext, libXcursor, libXmu, libIDL, SDL2, libcap, libGL, libGLU , libpng, glib, lvm2, libXrandr, libXinerama, libopus, libtpms, qtbase, qtx11extras , qttools, qtsvg, qtwayland, pkg-config, which, docbook_xsl, docbook_xml_dtd_43 @@ -35,6 +35,8 @@ let # The KVM build is not compatible to VirtualBox's kernel modules. So don't export # modsrc at all. withModsrc = !enableKvm; + + virtualboxGuestAdditionsIso = callPackage guest-additions-iso/default.nix { }; in stdenv.mkDerivation { pname = "virtualbox"; inherit version; @@ -249,7 +251,7 @@ in stdenv.mkDerivation { mkdir -p "$out/share/virtualbox" cp -rv src/VBox/Main/UnattendedTemplates "$out/share/virtualbox" - ln -s "${linuxPackages.virtualboxGuestAdditions.src}" "$out/share/virtualbox/VBoxGuestAdditions.iso" + ln -s "${virtualboxGuestAdditionsIso}/VBoxGuestAdditions_${version}.iso" "$out/share/virtualbox/VBoxGuestAdditions.iso" ''; preFixup = optionalString (!headless) '' @@ -262,7 +264,6 @@ in stdenv.mkDerivation { ''; passthru = { - inherit version; # for guest additions inherit extensionPack; # for inclusion in profile to prevent gc updateScript = ./update.sh; }; diff --git a/pkgs/applications/virtualization/virtualbox/guest-additions-iso/default.nix b/pkgs/applications/virtualization/virtualbox/guest-additions-iso/default.nix new file mode 100644 index 000000000000..d2f9bc62ba18 --- /dev/null +++ b/pkgs/applications/virtualization/virtualbox/guest-additions-iso/default.nix @@ -0,0 +1,30 @@ +{ stdenv, fetchurl, lib, virtualbox}: + +let + inherit (virtualbox) version; +in +stdenv.mkDerivation rec { + pname = "VirtualBox-GuestAdditions-iso"; + inherit version; + + src = fetchurl { + url = "http://download.virtualbox.org/virtualbox/${version}/VBoxGuestAdditions_${version}.iso"; + sha256 = "0efbcb9bf4722cb19292ae00eba29587432e918d3b1f70905deb70f7cf78e8ce"; + }; + + buildCommand = '' + mkdir -p $out + cp $src $out/ + ''; + + meta = { + description = "Guest additions ISO for VirtualBox"; + longDescription = '' + ISO containing various add-ons which improves guests inside VirtualBox. + ''; + sourceProvenance = with lib.sourceTypes; [ binaryNativeCode ]; + license = lib.licenses.gpl2; + maintainers = [ lib.maintainers.sander lib.maintainers.friedrichaltheide ]; + platforms = [ "i686-linux" "x86_64-linux" ]; + }; +} diff --git a/pkgs/applications/virtualization/virtualbox/guest-additions/builder.nix b/pkgs/applications/virtualization/virtualbox/guest-additions/builder.nix new file mode 100644 index 000000000000..298acba8439d --- /dev/null +++ b/pkgs/applications/virtualization/virtualbox/guest-additions/builder.nix @@ -0,0 +1,133 @@ +{ config, stdenv, kernel, fetchurl, lib, pam, libxslt +, libX11, libXext, libXcursor, libXmu +, glib, alsa-lib, libXrandr, dbus +, pkg-config, which, zlib, xorg +, yasm, patchelf, makeWrapper, makeself, nasm +, linuxHeaders, openssl, libpulseaudio}: + +with lib; + +let + buildType = "release"; + +in stdenv.mkDerivation (finalAttrs: { + pname = "VirtualBox-GuestAdditions-builder-${kernel.version}"; + version = "7.0.14"; + + src = fetchurl { + url = "https://download.virtualbox.org/virtualbox/${finalAttrs.version}/VirtualBox-${finalAttrs.version}.tar.bz2"; + sha256 = "45860d834804a24a163c1bb264a6b1cb802a5bc7ce7e01128072f8d6a4617ca9"; + }; + + env.NIX_CFLAGS_COMPILE = "-Wno-error=incompatible-pointer-types -Wno-error=implicit-function-declaration"; + + nativeBuildInputs = [ patchelf makeWrapper pkg-config which yasm ]; + buildInputs = kernel.moduleBuildDependencies ++ [ libxslt libX11 libXext libXcursor + glib nasm alsa-lib makeself pam libXmu libXrandr linuxHeaders openssl libpulseaudio xorg.xorgserver ]; + + KERN_DIR = "${kernel.dev}/lib/modules/${kernel.modDirVersion}/build"; + KERN_INCL = "${kernel.dev}/lib/modules/${kernel.modDirVersion}/source/include"; + + prePatch = '' + rm -r src/VBox/Additions/x11/x11include/ + rm -r src/libs/openssl-*/ + rm -r src/libs/curl-*/ + ''; + + patches = [ + ../gcc-13.patch + # https://www.virtualbox.org/changeset/100258/vbox + ./no-legacy-xorg.patch + # https://www.virtualbox.org/changeset/102989/vbox + ./strlcpy-1.patch + # https://www.virtualbox.org/changeset/102990/vbox + ./strlcpy-2.patch + ]; + + postPatch = '' + set -x + sed -e 's@MKISOFS --version@MKISOFS -version@' \ + -e 's@CXX_FLAGS="\(.*\)"@CXX_FLAGS="-std=c++17 \1"@' \ + -i configure + ls kBuild/bin/linux.x86/k* tools/linux.x86/bin/* | xargs -n 1 patchelf --set-interpreter ${stdenv.cc.libc}/lib/ld-linux.so.2 + ls kBuild/bin/linux.amd64/k* tools/linux.amd64/bin/* | xargs -n 1 patchelf --set-interpreter ${stdenv.cc.libc}/lib/ld-linux-x86-64.so.2 + + substituteInPlace ./include/VBox/dbus-calls.h --replace-fail libdbus-1.so.3 ${dbus.lib}/lib/libdbus-1.so.3 + + substituteInPlace ./src/VBox/Additions/common/VBoxGuest/lib/VBoxGuestR3LibDrmClient.cpp --replace-fail /usr/bin/VBoxDRMClient /run/current-system/sw/bin/VBoxDRMClient + substituteInPlace ./src/VBox/Additions/common/VBoxGuest/lib/VBoxGuestR3LibDrmClient.cpp --replace-fail /usr/bin/VBoxClient /run/current-system/sw/bin/VBoxClient + substituteInPlace ./src/VBox/Additions/x11/VBoxClient/display.cpp --replace-fail /usr/X11/bin/xrandr ${xorg.xrandr}/bin/xrandr + substituteInPlace ./src/VBox/Additions/x11/vboxvideo/Makefile.kmk --replace-fail /usr/include/xorg "${xorg.xorgserver.dev}/include/xorg " + ''; + + configurePhase = '' + NIX_CFLAGS_COMPILE=$(echo "$NIX_CFLAGS_COMPILE" | sed 's,\-isystem ${lib.getDev stdenv.cc.libc}/include,,g') + + cat >> LocalConfig.kmk < ./VBoxLinuxAdditions.run - chmod 755 ./VBoxLinuxAdditions.run - # An overflow leads the is-there-enough-space check to fail when there's too much space available, so fake how much space there is - sed -i 's/\$leftspace/16383/' VBoxLinuxAdditions.run - ./VBoxLinuxAdditions.run --noexec --keep - - # Unpack files - cd install - tar xfvj VBoxGuestAdditions-${if stdenv.hostPlatform.is32bit then "x86" else "amd64"}.tar.bz2 - ''; - - buildPhase = '' - # Build kernel modules. - cd src - find . -type f | xargs sed 's/depmod -a/true/' -i - cd vboxguest-${version} - # Run just make first. If we only did make install, we get symbol warnings during build. - make - cd ../.. - - # Change the interpreter for various binaries - for i in sbin/VBoxService bin/{VBoxClient,VBoxControl} other/mount.vboxsf; do - patchelf --set-interpreter ${stdenv.cc.bintools.dynamicLinker} $i - patchelf --set-rpath ${lib.makeLibraryPath [ stdenv.cc.cc stdenv.cc.libc zlib - xorg.libX11 xorg.libXt xorg.libXext xorg.libXmu xorg.libXfixes xorg.libXrandr xorg.libXcursor ]} $i - done - - for i in lib/VBoxOGL*.so - do - patchelf --set-rpath ${lib.makeLibraryPath [ "$out" - xorg.libXcomposite xorg.libXdamage xorg.libXext xorg.libXfixes ]} $i - done - - # FIXME: Virtualbox 4.3.22 moved VBoxClient-all (required by Guest Additions - # NixOS module) to 98vboxadd-xclient. For now, just work around it: - mv other/98vboxadd-xclient bin/VBoxClient-all - - # Remove references to /usr from various scripts and files - sed -i -e "s|/usr/bin|$out/bin|" other/vboxclient.desktop - sed -i -e "s|/usr/bin|$out/bin|" bin/VBoxClient-all - ''; - - installPhase = '' - # Install kernel modules. - cd src/vboxguest-${version} - make install INSTALL_MOD_PATH=$out KBUILD_EXTRA_SYMBOLS=$PWD/vboxsf/Module.symvers - cd ../.. - - # Install binaries - install -D -m 755 other/mount.vboxsf $out/bin/mount.vboxsf - install -D -m 755 sbin/VBoxService $out/bin/VBoxService - - mkdir -p $out/bin - install -m 755 bin/VBoxClient $out/bin - install -m 755 bin/VBoxControl $out/bin - install -m 755 bin/VBoxClient-all $out/bin - - wrapProgram $out/bin/VBoxClient-all \ - --prefix PATH : "${which}/bin" - - # Don't install VBoxOGL for now - # It seems to be broken upstream too, and fixing it is far down the priority list: - # https://www.virtualbox.org/pipermail/vbox-dev/2017-June/014561.html - # Additionally, 3d support seems to rely on VBoxOGL.so being symlinked from - # libGL.so (which we can't), and Oracle doesn't plan on supporting libglvnd - # either. (#18457) - ## Install OpenGL libraries - #mkdir -p $out/lib - #cp -v lib/VBoxOGL*.so $out/lib - #mkdir -p $out/lib/dri - #ln -s $out/lib/VBoxOGL.so $out/lib/dri/vboxvideo_dri.so - - # Install desktop file - mkdir -p $out/etc/xdg/autostart - cp -v other/vboxclient.desktop $out/etc/xdg/autostart - - # Install Xorg drivers - mkdir -p $out/lib/xorg/modules/{drivers,input} - install -m 644 other/vboxvideo_drv_${xserverABI}.so $out/lib/xorg/modules/drivers/vboxvideo_drv.so - ''; - - # Stripping breaks these binaries for some reason. - dontStrip = true; - - # Patch RUNPATH according to dlopenLibs (see the comment there). - postFixup = lib.concatMapStrings (library: '' - for i in $(grep -F ${lib.escapeShellArg library.name} -l -r $out/{lib,bin}); do - origRpath=$(patchelf --print-rpath "$i") - patchelf --set-rpath "$origRpath:${lib.makeLibraryPath [ library.pkg ]}" "$i" - done - '') dlopenLibs; - - meta = { - description = "Guest additions for VirtualBox"; - longDescription = '' - Various add-ons which makes NixOS work better as guest OS inside VirtualBox. - This add-on provides support for dynamic resizing of the X Display, shared - host/guest clipboard support and guest OpenGL support. + runHook postBuild ''; - sourceProvenance = with lib.sourceTypes; [ binaryNativeCode ]; - license = "GPL"; - maintainers = [ lib.maintainers.sander lib.maintainers.friedrichaltheide ]; - platforms = [ "i686-linux" "x86_64-linux" ]; - broken = stdenv.hostPlatform.is32bit && (kernel.kernelAtLeast "5.10"); - }; -} + + installPhase = '' + runHook preInstall + + # Install kernel modules. + cd src/vboxguest-${virtualBoxNixGuestAdditionsBuilder.version}_NixOS + make install INSTALL_MOD_PATH=$out KBUILD_EXTRA_SYMBOLS=$PWD/vboxsf/Module.symvers + cd ../.. + + # Install binaries + install -D -m 755 other/mount.vboxsf $out/bin/mount.vboxsf + install -D -m 755 sbin/VBoxService $out/bin/VBoxService + + mkdir -p $out/bin + install -m 755 bin/VBoxClient $out/bin + install -m 755 bin/VBoxControl $out/bin + install -m 755 bin/VBoxDRMClient $out/bin + + + # Don't install VBoxOGL for now + # It seems to be broken upstream too, and fixing it is far down the priority list: + # https://www.virtualbox.org/pipermail/vbox-dev/2017-June/014561.html + # Additionally, 3d support seems to rely on VBoxOGL.so being symlinked from + # libGL.so (which we can't), and Oracle doesn't plan on supporting libglvnd + # either. (#18457) + + runHook postInstall + ''; + + # Stripping breaks these binaries for some reason. + dontStrip = true; + + # Patch RUNPATH according to dlopenLibs (see the comment there). + postFixup = lib.concatMapStrings (library: '' + for i in $(grep -F ${lib.escapeShellArg library.name} -l -r $out/{lib,bin}); do + origRpath=$(patchelf --print-rpath "$i") + patchelf --set-rpath "$origRpath:${lib.makeLibraryPath [ library.pkg ]}" "$i" + done + '') dlopenLibs; + + meta = { + description = "Guest additions for VirtualBox"; + longDescription = '' + Various add-ons which makes NixOS work better as guest OS inside VirtualBox. + This add-on provides support for dynamic resizing of the virtual display, shared + host/guest clipboard support. + ''; + sourceProvenance = with lib.sourceTypes; [ fromSource ]; + license = licenses.gpl2; + maintainers = [ lib.maintainers.sander lib.maintainers.friedrichaltheide ]; + platforms = [ "i686-linux" "x86_64-linux" ]; + broken = stdenv.hostPlatform.is32bit && (kernel.kernelAtLeast "5.10"); + }; + } diff --git a/pkgs/applications/virtualization/virtualbox/guest-additions/no-legacy-xorg.patch b/pkgs/applications/virtualization/virtualbox/guest-additions/no-legacy-xorg.patch new file mode 100644 index 000000000000..911cf0f0d5f0 --- /dev/null +++ b/pkgs/applications/virtualization/virtualbox/guest-additions/no-legacy-xorg.patch @@ -0,0 +1,45 @@ +# https://www.virtualbox.org/changeset/100258/vbox +diff --git a/src/VBox/Additions/linux/Makefile.kmk b/src/VBox/Additions/linux/Makefile.kmk +index 0921b3fe619..de9e98b4989 100644 +--- a/src/VBox/Additions/linux/Makefile.kmk ++++ b/src/VBox/Additions/linux/Makefile.kmk +@@ -136,23 +136,29 @@ VBOX_LNX_ADD_STRIP_SBIN += \ + $(if $(VBOX_WITH_LIGHTDM_GREETER),vbox-greeter) + + VBOX_LNX_ADD_STRIP_MOD = \ +- vboxmouse_drv_70.so \ +- vboxmouse_drv_71.so \ +- vboxmouse_drv_13.so \ +- vboxmouse_drv_14.so \ +- vboxmouse_drv_15.so \ +- vboxmouse_drv_16.so \ +- $(addsuffix .so,$(filter-out %_32,$(filter vboxvideo_drv_%,$(DLLS)))) \ + $(if $(VBOX_WITH_PAM),pam_vbox.so,) \ + mount.vboxsf + ++ifndef VBOX_NO_LEGACY_XORG_X11 ++ VBOX_LNX_ADD_STRIP_MOD += \ ++ vboxmouse_drv_70.so \ ++ vboxmouse_drv_71.so \ ++ vboxmouse_drv_13.so \ ++ vboxmouse_drv_14.so \ ++ vboxmouse_drv_15.so \ ++ vboxmouse_drv_16.so \ ++ $(addsuffix .so,$(filter-out %_32,$(filter vboxvideo_drv_%,$(DLLS)))) ++endif ++ + VBOX_LNX_ADD_MOD = \ + 98vboxadd-xclient \ + x11config.sh + +-VBOX_LNX_ADD_STRIP_OBJ = \ +- vboxmouse_drv.o \ +- vboxvideo_drv.o ++ifndef VBOX_NO_LEGACY_XORG_X11 ++ VBOX_LNX_ADD_STRIP_OBJ = \ ++ vboxmouse_drv.o \ ++ vboxvideo_drv.o ++endif + + VBOX_LNX_ADD_INIT = \ + vboxadd \ diff --git a/pkgs/applications/virtualization/virtualbox/guest-additions/strlcpy-1.patch b/pkgs/applications/virtualization/virtualbox/guest-additions/strlcpy-1.patch new file mode 100644 index 000000000000..642f5864d208 --- /dev/null +++ b/pkgs/applications/virtualization/virtualbox/guest-additions/strlcpy-1.patch @@ -0,0 +1,29 @@ +# https://www.virtualbox.org/changeset/102989/vbox +--- a/include/iprt/string.h ++++ b/include/iprt/string.h +@@ -244,4 +244,26 @@ + #else /* !RT_OS_LINUX && !__KERNEL__ */ + # define RT_BCOPY_UNFORTIFIED(a_pDst, a_pSrc, a_cbToCopy) memcpy((a_pDst), (a_pSrc), (a_cbToCopy)) ++#endif /* !RT_OS_LINUX && !__KERNEL__ */ ++ ++/** @def RT_STRSCPY ++ * Copy string and NULL-terminate output buffer. ++ * ++ * This macro should mostly be used in Linux kernel code. This is ++ * the replacement for deprecated strlcpy. It was deprecated since 3.16.60 ++ * when strscpy was introduced as an alternative. Finally, strlcpy was ++ * completely removed from kernel code in 6.8.0. ++ * ++ * @param a_pDst Pointer to the destination string buffer. ++ * @param a_pSrc Pointer to the source NULL-terminated string buffer. ++ * @param a_cbToCopy Size of destination buffer.. ++ */ ++#if defined(RT_OS_LINUX) && defined(__KERNEL__) ++# if (RTLNX_VER_MIN(3,16,60)) ++# define RT_STRSCPY(a_pDst, a_pSrc, a_cbToCopy) strscpy((a_pDst), (a_pSrc), (a_cbToCopy)) ++# else /* < 3.16.60 */ ++# define RT_STRSCPY(a_pDst, a_pSrc, a_cbToCopy) strlcpy((a_pDst), (a_pSrc), (a_cbToCopy)) ++# endif ++#else /* !RT_OS_LINUX && !__KERNEL__ */ ++# define RT_STRSCPY(a_pDst, a_pSrc, a_cbToCopy) strscpy((a_pDst), (a_pSrc), (a_cbToCopy)) + #endif /* !RT_OS_LINUX && !__KERNEL__ */ diff --git a/pkgs/applications/virtualization/virtualbox/guest-additions/strlcpy-2.patch b/pkgs/applications/virtualization/virtualbox/guest-additions/strlcpy-2.patch new file mode 100644 index 000000000000..15e546f89e79 --- /dev/null +++ b/pkgs/applications/virtualization/virtualbox/guest-additions/strlcpy-2.patch @@ -0,0 +1,86 @@ +# https://www.virtualbox.org/changeset/102990/vbox +--- a/src/VBox/Additions/common/VBoxGuest/VBoxGuest-linux.c ++++ b/src/VBox/Additions/common/VBoxGuest/VBoxGuest-linux.c +@@ -1411,5 +1411,5 @@ + } + else if (pParam->name[0] != 'd') +- strlcpy(&g_szLogGrp[0], pszValue, sizeof(g_szLogGrp)); ++ RT_STRSCPY(&g_szLogGrp[0], pszValue, sizeof(g_szLogGrp)); + + return 0; +@@ -1437,5 +1437,5 @@ + } + else if (pParam->name[0] != 'd') +- strlcpy(&g_szLogFlags[0], pszValue, sizeof(g_szLogFlags)); ++ RT_STRSCPY(&g_szLogFlags[0], pszValue, sizeof(g_szLogFlags)); + return 0; + } +@@ -1462,5 +1462,5 @@ + } + else if (pParam->name[0] != 'd') +- strlcpy(&g_szLogDst[0], pszValue, sizeof(g_szLogDst)); ++ RT_STRSCPY(&g_szLogDst[0], pszValue, sizeof(g_szLogDst)); + return 0; + } + +# https://www.virtualbox.org/changeset/102990/vbox +--- a/src/VBox/Additions/linux/drm/vbox_drv.h ++++ b/src/VBox/Additions/linux/drm/vbox_drv.h +@@ -539,7 +539,5 @@ + void vbox_irq_fini(struct vbox_private *vbox); + void vbox_report_hotplug(struct vbox_private *vbox); +-#if RTLNX_VER_MAX(5,15,0) && !RTLNX_RHEL_MAJ_PREREQ(9,1) && !RTLNX_SUSE_MAJ_PREREQ(15,5) + irqreturn_t vbox_irq_handler(int irq, void *arg); +-#endif + + /* vbox_hgsmi.c */ + +# https://www.virtualbox.org/changeset/102990/vbox +--- a/src/VBox/Additions/linux/sharedfolders/regops.c ++++ b/src/VBox/Additions/linux/sharedfolders/regops.c +@@ -3506,5 +3506,5 @@ + + /** file_operations::mmap wrapper for logging purposes. */ +-extern int vbsf_reg_mmap(struct file *file, struct vm_area_struct *vma) ++static int vbsf_reg_mmap(struct file *file, struct vm_area_struct *vma) + { + int rc; +@@ -3787,5 +3787,5 @@ + + # if RTLNX_VER_MIN(5,19,0) || RTLNX_RHEL_RANGE(9,3, 9,99) +-int vbsf_write_begin(struct file *file, struct address_space *mapping, loff_t pos, ++static int vbsf_write_begin(struct file *file, struct address_space *mapping, loff_t pos, + unsigned len, struct page **pagep, void **fsdata) + { +@@ -3794,5 +3794,5 @@ + } + # else +-int vbsf_write_begin(struct file *file, struct address_space *mapping, loff_t pos, ++static int vbsf_write_begin(struct file *file, struct address_space *mapping, loff_t pos, + unsigned len, unsigned flags, struct page **pagep, void **fsdata) + { + +# https://www.virtualbox.org/changeset/102990/vbox +--- a/src/VBox/Additions/linux/sharedfolders/vfsmod.c ++++ b/src/VBox/Additions/linux/sharedfolders/vfsmod.c +@@ -1409,5 +1409,5 @@ + case Opt_iocharset: + case Opt_nls: +- strlcpy(info->nls_name, param->string, sizeof(info->nls_name)); ++ RT_STRSCPY(info->nls_name, param->string, sizeof(info->nls_name)); + break; + case Opt_uid: +@@ -1470,5 +1470,5 @@ + break; + case Opt_tag: +- strlcpy(info->szTag, param->string, sizeof(info->szTag)); ++ RT_STRSCPY(info->szTag, param->string, sizeof(info->szTag)); + break; + default: +@@ -1529,5 +1529,5 @@ + + /* fc->source (the shared folder name) is set after vbsf_init_fs_ctx() */ +- strlcpy(info->name, fc->source, sizeof(info->name)); ++ RT_STRSCPY(info->name, fc->source, sizeof(info->name)); + + # if RTLNX_VER_MAX(5,3,0) diff --git a/pkgs/applications/virtualization/virtualbox/update.sh b/pkgs/applications/virtualization/virtualbox/update.sh index fcd02ae8a27b..5269f85ee938 100755 --- a/pkgs/applications/virtualization/virtualbox/update.sh +++ b/pkgs/applications/virtualization/virtualbox/update.sh @@ -24,20 +24,25 @@ if [ ! "$oldVersion" = "$latestVersion" ]; then virtualBoxShaSum=$(fileShaSum "$shaSums" "VirtualBox-$latestVersion.tar.bz2") extpackShaSum=$(fileShaSum "$shaSums" "Oracle_VM_VirtualBox_Extension_Pack-$latestVersion.vbox-extpack") - guestAdditionsShaSum=$(fileShaSum "$shaSums" "*VBoxGuestAdditions_$latestVersion.iso") + guestAdditionsIsoShaSum=$(fileShaSum "$shaSums" "*VBoxGuestAdditions_$latestVersion.iso") virtualboxNixFile=$(nixFile ${attr}) extpackNixFile=$(nixFile ${attr}Extpack) - guestAdditionsNixFile=$(nixFile linuxPackages.${attr}GuestAdditions) + guestAdditionsIsoNixFile="pkgs/applications/virtualization/virtualbox/guest-additions-iso/default.nix" + virtualboxGuestAdditionsNixFile="pkgs/applications/virtualization/virtualbox/guest-additions/builder.nix" + virtualBoxOldShaSum=$(oldHash ${attr}Extpack) extpackOldShaSum=$(oldHash ${attr}Extpack) - guestAdditionsOldShaSum=$(oldHash linuxPackages.${attr}GuestAdditions.src) update-source-version $attr $latestVersion $virtualBoxShaSum sed -i -e 's|value = "'$extpackOldShaSum'"|value = "'$extpackShaSum'"|' $extpackNixFile - sed -i -e 's|sha256 = "'$guestAdditionsOldShaSum'"|sha256 = "'$guestAdditionsShaSum'"|' $guestAdditionsNixFile + sed -e "s/sha256 =.*;/sha256 = \"$guestAdditionsIsoShaSum\";/g" \ + -i $guestAdditionsIsoNixFile + sed -e "s/version =.*;/version = \"$latestVersion\";/g" \ + -e "s/sha256 =.*;/sha256 = \"$virtualBoxShaSum\";/g" \ + -i $virtualboxGuestAdditionsNixFile - git add $virtualboxNixFile $extpackNixFile $guestAdditionsNixFile + git add $virtualboxNixFile $extpackNixFile $guestAdditionsIsoNixFile $virtualboxGuestAdditionsNixFile git commit -m "$attr: ${oldVersion} -> ${latestVersion}" else echo "$attr is already up-to-date" diff --git a/pkgs/top-level/linux-kernels.nix b/pkgs/top-level/linux-kernels.nix index afcec5061a36..0cc1d0c0015d 100644 --- a/pkgs/top-level/linux-kernels.nix +++ b/pkgs/top-level/linux-kernels.nix @@ -543,9 +543,7 @@ in { virtualbox = pkgs.virtualboxHardened; }; - virtualboxGuestAdditions = callPackage ../applications/virtualization/virtualbox/guest-additions { - virtualbox = pkgs.virtualboxHardened; - }; + virtualboxGuestAdditions = callPackage ../applications/virtualization/virtualbox/guest-additions { }; vm-tools = callPackage ../os-specific/linux/vm-tools { }; From ac2313d03cab1429a1245ae957496f4c49f6c815 Mon Sep 17 00:00:00 2001 From: "R. Ryantm" Date: Tue, 26 Mar 2024 11:28:08 +0000 Subject: [PATCH 014/116] reptor: 0.13 -> 0.14 --- pkgs/development/python-modules/reptor/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/development/python-modules/reptor/default.nix b/pkgs/development/python-modules/reptor/default.nix index d31cbc667510..a7f35e964986 100644 --- a/pkgs/development/python-modules/reptor/default.nix +++ b/pkgs/development/python-modules/reptor/default.nix @@ -32,7 +32,7 @@ buildPythonPackage rec { pname = "reptor"; - version = "0.13"; + version = "0.14"; pyproject = true; disabled = pythonOlder "3.8"; @@ -41,7 +41,7 @@ buildPythonPackage rec { owner = "Syslifters"; repo = "reptor"; rev = "refs/tags/${version}"; - hash = "sha256-7jFS3GCaPeGBBxB++XTtIYh+m0uXTm5NHuLeIen0KYc="; + hash = "sha256-XZiFVIUyLVVr3ZraOAuXs+shl4vk3S8OJHNHV4p10YY="; }; pythonRelaxDeps = true; From 4e7e219a93572097e47c0e13fc2c728a8884ed64 Mon Sep 17 00:00:00 2001 From: "R. Ryantm" Date: Tue, 26 Mar 2024 15:36:46 +0000 Subject: [PATCH 015/116] python312Packages.karton-core: 5.3.3 -> 5.3.4 --- pkgs/development/python-modules/karton-core/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/development/python-modules/karton-core/default.nix b/pkgs/development/python-modules/karton-core/default.nix index 6746fd6eb710..f05f176f74aa 100644 --- a/pkgs/development/python-modules/karton-core/default.nix +++ b/pkgs/development/python-modules/karton-core/default.nix @@ -11,7 +11,7 @@ buildPythonPackage rec { pname = "karton-core"; - version = "5.3.3"; + version = "5.3.4"; pyproject = true; disabled = pythonOlder "3.7"; @@ -20,7 +20,7 @@ buildPythonPackage rec { owner = "CERT-Polska"; repo = "karton"; rev = "refs/tags/v${version}"; - hash = "sha256-RVHhMKoQAqsddziK/vWGynSL9mxMuccNEGzoJTx8KAA="; + hash = "sha256-q12S80GZFyh7zU6iMeCkyIesMK8qXtZ1B69w8H5LpOU="; }; nativeBuildInputs = [ From f8e4c8f9736e38359076ec9a7dfa0918999af231 Mon Sep 17 00:00:00 2001 From: "R. Ryantm" Date: Tue, 26 Mar 2024 15:36:48 +0000 Subject: [PATCH 016/116] python312Packages.pyleri: 1.4.2 -> 1.4.3 --- pkgs/development/python-modules/pyleri/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/development/python-modules/pyleri/default.nix b/pkgs/development/python-modules/pyleri/default.nix index 98c71d06f55a..64f33f21805e 100644 --- a/pkgs/development/python-modules/pyleri/default.nix +++ b/pkgs/development/python-modules/pyleri/default.nix @@ -7,7 +7,7 @@ buildPythonPackage rec { pname = "pyleri"; - version = "1.4.2"; + version = "1.4.3"; format = "setuptools"; disabled = pythonOlder "3.7"; @@ -16,7 +16,7 @@ buildPythonPackage rec { owner = "cesbit"; repo = "pyleri"; rev = "refs/tags/${version}"; - hash = "sha256-52Q2iTrXFNbDzXL0FM+Gypipvo5ciNqAtZa5sKOwQRc="; + hash = "sha256-4t+6wtYzJbmL0TB/OXr89uZ2s8DeGlUdWwHd4YPsCW0="; }; nativeCheckInputs = [ From 77d41ead1371b0d169f0c4bfa66000ce08ac9d37 Mon Sep 17 00:00:00 2001 From: "R. Ryantm" Date: Tue, 26 Mar 2024 15:37:05 +0000 Subject: [PATCH 017/116] python312Packages.microsoft-kiota-abstractions: 1.3.1 -> 1.3.2 --- .../python-modules/microsoft-kiota-abstractions/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/development/python-modules/microsoft-kiota-abstractions/default.nix b/pkgs/development/python-modules/microsoft-kiota-abstractions/default.nix index 1ffc27845241..3e3078ebf287 100644 --- a/pkgs/development/python-modules/microsoft-kiota-abstractions/default.nix +++ b/pkgs/development/python-modules/microsoft-kiota-abstractions/default.nix @@ -13,7 +13,7 @@ buildPythonPackage rec { pname = "microsoft-kiota-abstractions"; - version = "1.3.1"; + version = "1.3.2"; pyproject = true; disabled = pythonOlder "3.8"; @@ -22,7 +22,7 @@ buildPythonPackage rec { owner = "microsoft"; repo = "kiota-abstractions-python"; rev = "refs/tags/v${version}"; - hash = "sha256-AsJHKoA50JZBDQ7vob4lI0gEmfhRUELKtgq17tHegUY="; + hash = "sha256-n9Erm21slKm+zDblhSHA5Cwxkyrcyx0w09ua3bUc5XI="; }; nativeBuildInputs = [ From 7426aa704ccecd6f007466ca51e343714df2e487 Mon Sep 17 00:00:00 2001 From: Fabian Affolter Date: Tue, 26 Mar 2024 18:19:25 +0100 Subject: [PATCH 018/116] python312Packages.karton-core: refactor --- pkgs/development/python-modules/karton-core/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/development/python-modules/karton-core/default.nix b/pkgs/development/python-modules/karton-core/default.nix index f05f176f74aa..e9c0b9cb07c4 100644 --- a/pkgs/development/python-modules/karton-core/default.nix +++ b/pkgs/development/python-modules/karton-core/default.nix @@ -23,11 +23,11 @@ buildPythonPackage rec { hash = "sha256-q12S80GZFyh7zU6iMeCkyIesMK8qXtZ1B69w8H5LpOU="; }; - nativeBuildInputs = [ + build-system = [ setuptools ]; - propagatedBuildInputs = [ + dependencies = [ boto3 orjson redis From 9505dd8fc1fbb2521275773e68350df7f89ffb3b Mon Sep 17 00:00:00 2001 From: "R. Ryantm" Date: Tue, 26 Mar 2024 19:02:46 +0000 Subject: [PATCH 019/116] snyk: 1.1284.0 -> 1.1286.0 --- pkgs/development/tools/analysis/snyk/default.nix | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pkgs/development/tools/analysis/snyk/default.nix b/pkgs/development/tools/analysis/snyk/default.nix index 67f8516c49b9..9125d2a500a0 100644 --- a/pkgs/development/tools/analysis/snyk/default.nix +++ b/pkgs/development/tools/analysis/snyk/default.nix @@ -2,16 +2,16 @@ buildNpmPackage rec { pname = "snyk"; - version = "1.1284.0"; + version = "1.1286.0"; src = fetchFromGitHub { owner = "snyk"; repo = "cli"; rev = "v${version}"; - hash = "sha256-CM9172gSeWf+12e6tsro6O1NtiZqUAT0EsA6LAhZ+8s="; + hash = "sha256-tckifLV+HC7NqTeBtZI+VjZveeVbRS5+63vL8k8qE4s="; }; - npmDepsHash = "sha256-aode80HyGSyZoEiCdsnEPrVo8KSqTW0GxxsGdRyNdiQ="; + npmDepsHash = "sha256-deBtINc+P0NnCIb0jI0Mvn2zbWS6qLqCXL6nKSFGqOI="; postPatch = '' substituteInPlace package.json --replace '"version": "1.0.0-monorepo"' '"version": "${version}"' From 170bd916e063df08dfd81bb9c16f7d32158790a2 Mon Sep 17 00:00:00 2001 From: Aaron Jheng Date: Wed, 27 Mar 2024 09:44:45 +0800 Subject: [PATCH 020/116] mongosh: 2.2.1 -> 2.2.2 --- .../tools/mongosh/package-lock.json | 399 +++++++++--------- pkgs/development/tools/mongosh/source.json | 8 +- 2 files changed, 199 insertions(+), 208 deletions(-) diff --git a/pkgs/development/tools/mongosh/package-lock.json b/pkgs/development/tools/mongosh/package-lock.json index f0fae4c8e245..13dcac0bb514 100644 --- a/pkgs/development/tools/mongosh/package-lock.json +++ b/pkgs/development/tools/mongosh/package-lock.json @@ -1,15 +1,15 @@ { "name": "mongosh", - "version": "2.2.1", + "version": "2.2.2", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "mongosh", - "version": "2.2.1", + "version": "2.2.2", "license": "Apache-2.0", "dependencies": { - "@mongosh/cli-repl": "2.2.1" + "@mongosh/cli-repl": "2.2.2" }, "bin": { "mongosh": "bin/mongosh.js" @@ -122,22 +122,22 @@ "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" }, "node_modules/@aws-sdk/client-cognito-identity": { - "version": "3.535.0", - "resolved": "https://registry.npmmirror.com/@aws-sdk/client-cognito-identity/-/client-cognito-identity-3.535.0.tgz", - "integrity": "sha512-7n9WAXAQzDgdaNkZlgdX+dmCW30tCrq3NpPs/f1WFWcF6g+s06ULkuWywTU+usG6ZTuRtajFKy2oMkMv9Wor0g==", + "version": "3.540.0", + "resolved": "https://registry.npmmirror.com/@aws-sdk/client-cognito-identity/-/client-cognito-identity-3.540.0.tgz", + "integrity": "sha512-03vUaIKjvdcOmjDi8Fv9JgY+VQrt9QBpRkI8A1lrdPNgWqTEZXZi/zBsFRsxTe6hgsrZtxVnxLu6krSRILuqtw==", "dependencies": { "@aws-crypto/sha256-browser": "3.0.0", "@aws-crypto/sha256-js": "3.0.0", - "@aws-sdk/client-sts": "3.535.0", + "@aws-sdk/client-sts": "3.540.0", "@aws-sdk/core": "3.535.0", - "@aws-sdk/credential-provider-node": "3.535.0", + "@aws-sdk/credential-provider-node": "3.540.0", "@aws-sdk/middleware-host-header": "3.535.0", "@aws-sdk/middleware-logger": "3.535.0", "@aws-sdk/middleware-recursion-detection": "3.535.0", - "@aws-sdk/middleware-user-agent": "3.535.0", + "@aws-sdk/middleware-user-agent": "3.540.0", "@aws-sdk/region-config-resolver": "3.535.0", "@aws-sdk/types": "3.535.0", - "@aws-sdk/util-endpoints": "3.535.0", + "@aws-sdk/util-endpoints": "3.540.0", "@aws-sdk/util-user-agent-browser": "3.535.0", "@aws-sdk/util-user-agent-node": "3.535.0", "@smithy/config-resolver": "^2.2.0", @@ -172,9 +172,9 @@ } }, "node_modules/@aws-sdk/client-sso": { - "version": "3.535.0", - "resolved": "https://registry.npmmirror.com/@aws-sdk/client-sso/-/client-sso-3.535.0.tgz", - "integrity": "sha512-h9eQRdFnjDRVBnPJIKXuX7D+isSAioIfZPC4PQwsL5BscTRlk4c90DX0R0uk64YUtp7LZu8TNtrosFZ/1HtTrQ==", + "version": "3.540.0", + "resolved": "https://registry.npmmirror.com/@aws-sdk/client-sso/-/client-sso-3.540.0.tgz", + "integrity": "sha512-rrQZMuw4sxIo3eyAUUzPQRA336mPRnrAeSlSdVHBKZD8Fjvoy0lYry2vNhkPLpFZLso1J66KRyuIv4LzRR3v1Q==", "dependencies": { "@aws-crypto/sha256-browser": "3.0.0", "@aws-crypto/sha256-js": "3.0.0", @@ -182,10 +182,10 @@ "@aws-sdk/middleware-host-header": "3.535.0", "@aws-sdk/middleware-logger": "3.535.0", "@aws-sdk/middleware-recursion-detection": "3.535.0", - "@aws-sdk/middleware-user-agent": "3.535.0", + "@aws-sdk/middleware-user-agent": "3.540.0", "@aws-sdk/region-config-resolver": "3.535.0", "@aws-sdk/types": "3.535.0", - "@aws-sdk/util-endpoints": "3.535.0", + "@aws-sdk/util-endpoints": "3.540.0", "@aws-sdk/util-user-agent-browser": "3.535.0", "@aws-sdk/util-user-agent-node": "3.535.0", "@smithy/config-resolver": "^2.2.0", @@ -220,21 +220,21 @@ } }, "node_modules/@aws-sdk/client-sso-oidc": { - "version": "3.535.0", - "resolved": "https://registry.npmmirror.com/@aws-sdk/client-sso-oidc/-/client-sso-oidc-3.535.0.tgz", - "integrity": "sha512-M2cG4EQXDpAJQyq33ORIr6abmdX9p9zX0ssVy8XwFNB7lrgoIKxuVoGL+fX+XMgecl24x7ELz6b4QlILOevbCw==", + "version": "3.540.0", + "resolved": "https://registry.npmmirror.com/@aws-sdk/client-sso-oidc/-/client-sso-oidc-3.540.0.tgz", + "integrity": "sha512-LZYK0lBRQK8D8M3Sqc96XiXkAV2v70zhTtF6weyzEpgwxZMfSuFJjs0jFyhaeZBZbZv7BBghIdhJ5TPavNxGMQ==", "dependencies": { "@aws-crypto/sha256-browser": "3.0.0", "@aws-crypto/sha256-js": "3.0.0", - "@aws-sdk/client-sts": "3.535.0", + "@aws-sdk/client-sts": "3.540.0", "@aws-sdk/core": "3.535.0", "@aws-sdk/middleware-host-header": "3.535.0", "@aws-sdk/middleware-logger": "3.535.0", "@aws-sdk/middleware-recursion-detection": "3.535.0", - "@aws-sdk/middleware-user-agent": "3.535.0", + "@aws-sdk/middleware-user-agent": "3.540.0", "@aws-sdk/region-config-resolver": "3.535.0", "@aws-sdk/types": "3.535.0", - "@aws-sdk/util-endpoints": "3.535.0", + "@aws-sdk/util-endpoints": "3.540.0", "@aws-sdk/util-user-agent-browser": "3.535.0", "@aws-sdk/util-user-agent-node": "3.535.0", "@smithy/config-resolver": "^2.2.0", @@ -268,13 +268,13 @@ "node": ">=14.0.0" }, "peerDependencies": { - "@aws-sdk/credential-provider-node": "^3.535.0" + "@aws-sdk/credential-provider-node": "^3.540.0" } }, "node_modules/@aws-sdk/client-sts": { - "version": "3.535.0", - "resolved": "https://registry.npmmirror.com/@aws-sdk/client-sts/-/client-sts-3.535.0.tgz", - "integrity": "sha512-ii9OOm3TJwP3JmO1IVJXKWIShVKPl0VtdlgROc/SkDglO/kuAw9eDdlROgc+qbFl+gm6bBTguOVTUXt3tS3flw==", + "version": "3.540.0", + "resolved": "https://registry.npmmirror.com/@aws-sdk/client-sts/-/client-sts-3.540.0.tgz", + "integrity": "sha512-ITHUQxvpqfQX6obfpIi3KYGzZYfe/I5Ixjfxoi5lB7ISCtmxqObKB1fzD93wonkMJytJ7LUO8panZl/ojiJ1uw==", "dependencies": { "@aws-crypto/sha256-browser": "3.0.0", "@aws-crypto/sha256-js": "3.0.0", @@ -282,10 +282,10 @@ "@aws-sdk/middleware-host-header": "3.535.0", "@aws-sdk/middleware-logger": "3.535.0", "@aws-sdk/middleware-recursion-detection": "3.535.0", - "@aws-sdk/middleware-user-agent": "3.535.0", + "@aws-sdk/middleware-user-agent": "3.540.0", "@aws-sdk/region-config-resolver": "3.535.0", "@aws-sdk/types": "3.535.0", - "@aws-sdk/util-endpoints": "3.535.0", + "@aws-sdk/util-endpoints": "3.540.0", "@aws-sdk/util-user-agent-browser": "3.535.0", "@aws-sdk/util-user-agent-node": "3.535.0", "@smithy/config-resolver": "^2.2.0", @@ -319,7 +319,7 @@ "node": ">=14.0.0" }, "peerDependencies": { - "@aws-sdk/credential-provider-node": "^3.535.0" + "@aws-sdk/credential-provider-node": "^3.540.0" } }, "node_modules/@aws-sdk/core": { @@ -340,11 +340,11 @@ } }, "node_modules/@aws-sdk/credential-provider-cognito-identity": { - "version": "3.535.0", - "resolved": "https://registry.npmmirror.com/@aws-sdk/credential-provider-cognito-identity/-/credential-provider-cognito-identity-3.535.0.tgz", - "integrity": "sha512-Lc+RJTNzp22H31W/O7iSmCZUP+KYZMuzK8hKU4/RXo7D8t/cFLb4VpvvcCCa4UOZqdmxVqEhwc1oXyMkoszITQ==", + "version": "3.540.0", + "resolved": "https://registry.npmmirror.com/@aws-sdk/credential-provider-cognito-identity/-/credential-provider-cognito-identity-3.540.0.tgz", + "integrity": "sha512-XOTAIuVgticX+43GMpRbi5OHmJAhHfoHYsVGu0eRLhri1yFqUHXJgHUd51QQtlA8cFQN7JnFFM6sF5EDCPF49g==", "dependencies": { - "@aws-sdk/client-cognito-identity": "3.535.0", + "@aws-sdk/client-cognito-identity": "3.540.0", "@aws-sdk/types": "3.535.0", "@smithy/property-provider": "^2.2.0", "@smithy/types": "^2.12.0", @@ -388,15 +388,15 @@ } }, "node_modules/@aws-sdk/credential-provider-ini": { - "version": "3.535.0", - "resolved": "https://registry.npmmirror.com/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.535.0.tgz", - "integrity": "sha512-bm3XOYlyCjtAb8eeHXLrxqRxYVRw2Iqv9IufdJb4gM13TbNSYniUT1WKaHxGIZ5p+FuNlXVhvk1OpHFM13+gXA==", + "version": "3.540.0", + "resolved": "https://registry.npmmirror.com/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.540.0.tgz", + "integrity": "sha512-igN/RbsnulIBwqXbwsWmR3srqmtbPF1dm+JteGvUY31FW65fTVvWvSr945Y/cf1UbhPmIQXntlsqESqpkhTHwg==", "dependencies": { - "@aws-sdk/client-sts": "3.535.0", + "@aws-sdk/client-sts": "3.540.0", "@aws-sdk/credential-provider-env": "3.535.0", "@aws-sdk/credential-provider-process": "3.535.0", - "@aws-sdk/credential-provider-sso": "3.535.0", - "@aws-sdk/credential-provider-web-identity": "3.535.0", + "@aws-sdk/credential-provider-sso": "3.540.0", + "@aws-sdk/credential-provider-web-identity": "3.540.0", "@aws-sdk/types": "3.535.0", "@smithy/credential-provider-imds": "^2.3.0", "@smithy/property-provider": "^2.2.0", @@ -409,16 +409,16 @@ } }, "node_modules/@aws-sdk/credential-provider-node": { - "version": "3.535.0", - "resolved": "https://registry.npmmirror.com/@aws-sdk/credential-provider-node/-/credential-provider-node-3.535.0.tgz", - "integrity": "sha512-6JXp/EuL6euUkH5k4d+lQFF6gBwukrcCOWfNHCmq14mNJf/cqT3HAX1VMtWFRSK20am0IxfYQGccb0/nZykdKg==", + "version": "3.540.0", + "resolved": "https://registry.npmmirror.com/@aws-sdk/credential-provider-node/-/credential-provider-node-3.540.0.tgz", + "integrity": "sha512-HKQZJbLHlrHX9A0B1poiYNXIIQfy8whTjuosTCYKPDBhhUyVAQfxy/KG726j0v43IhaNPLgTGZCJve4hAsazSw==", "dependencies": { "@aws-sdk/credential-provider-env": "3.535.0", "@aws-sdk/credential-provider-http": "3.535.0", - "@aws-sdk/credential-provider-ini": "3.535.0", + "@aws-sdk/credential-provider-ini": "3.540.0", "@aws-sdk/credential-provider-process": "3.535.0", - "@aws-sdk/credential-provider-sso": "3.535.0", - "@aws-sdk/credential-provider-web-identity": "3.535.0", + "@aws-sdk/credential-provider-sso": "3.540.0", + "@aws-sdk/credential-provider-web-identity": "3.540.0", "@aws-sdk/types": "3.535.0", "@smithy/credential-provider-imds": "^2.3.0", "@smithy/property-provider": "^2.2.0", @@ -446,12 +446,12 @@ } }, "node_modules/@aws-sdk/credential-provider-sso": { - "version": "3.535.0", - "resolved": "https://registry.npmmirror.com/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.535.0.tgz", - "integrity": "sha512-2Dw0YIr8ETdFpq65CC4zK8ZIEbX78rXoNRZXUGNQW3oSKfL0tj8O8ErY6kg1IdEnYbGnEQ35q6luZ5GGNKLgDg==", + "version": "3.540.0", + "resolved": "https://registry.npmmirror.com/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.540.0.tgz", + "integrity": "sha512-tKkFqK227LF5ajc5EL6asXS32p3nkofpP8G7NRpU7zOEOQCg01KUc4JRX+ItI0T007CiN1J19yNoFqHLT/SqHg==", "dependencies": { - "@aws-sdk/client-sso": "3.535.0", - "@aws-sdk/token-providers": "3.535.0", + "@aws-sdk/client-sso": "3.540.0", + "@aws-sdk/token-providers": "3.540.0", "@aws-sdk/types": "3.535.0", "@smithy/property-provider": "^2.2.0", "@smithy/shared-ini-file-loader": "^2.4.0", @@ -463,11 +463,11 @@ } }, "node_modules/@aws-sdk/credential-provider-web-identity": { - "version": "3.535.0", - "resolved": "https://registry.npmmirror.com/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.535.0.tgz", - "integrity": "sha512-t2/JWrKY0H66A7JW7CqX06/DG2YkJddikt5ymdQvx/Q7dRMJ3d+o/vgjoKr7RvEx/pNruCeyM1599HCvwrVMrg==", + "version": "3.540.0", + "resolved": "https://registry.npmmirror.com/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.540.0.tgz", + "integrity": "sha512-OpDm9w3A168B44hSjpnvECP4rvnFzD86rN4VYdGADuCvEa5uEcdA/JuT5WclFPDqdWEmFBqS1pxBIJBf0g2Q9Q==", "dependencies": { - "@aws-sdk/client-sts": "3.535.0", + "@aws-sdk/client-sts": "3.540.0", "@aws-sdk/types": "3.535.0", "@smithy/property-provider": "^2.2.0", "@smithy/types": "^2.12.0", @@ -478,21 +478,21 @@ } }, "node_modules/@aws-sdk/credential-providers": { - "version": "3.535.0", - "resolved": "https://registry.npmmirror.com/@aws-sdk/credential-providers/-/credential-providers-3.535.0.tgz", - "integrity": "sha512-rC3TguTFbeua3EyTwGm84xeARKE1RO0oIWdtuTmSS5ZCPwllcePGkOVg7gQiPRc01Ebj816S/6P2QbvAfSUxqA==", + "version": "3.540.0", + "resolved": "https://registry.npmmirror.com/@aws-sdk/credential-providers/-/credential-providers-3.540.0.tgz", + "integrity": "sha512-tAmvqdZngCrER5/AAwTmDSjO05LGIshKL+lwcJr2OUV5jtQVzfbFrorf+b5dnI+3i8+zGcEAV9omra4XGrO9Kg==", "dependencies": { - "@aws-sdk/client-cognito-identity": "3.535.0", - "@aws-sdk/client-sso": "3.535.0", - "@aws-sdk/client-sts": "3.535.0", - "@aws-sdk/credential-provider-cognito-identity": "3.535.0", + "@aws-sdk/client-cognito-identity": "3.540.0", + "@aws-sdk/client-sso": "3.540.0", + "@aws-sdk/client-sts": "3.540.0", + "@aws-sdk/credential-provider-cognito-identity": "3.540.0", "@aws-sdk/credential-provider-env": "3.535.0", "@aws-sdk/credential-provider-http": "3.535.0", - "@aws-sdk/credential-provider-ini": "3.535.0", - "@aws-sdk/credential-provider-node": "3.535.0", + "@aws-sdk/credential-provider-ini": "3.540.0", + "@aws-sdk/credential-provider-node": "3.540.0", "@aws-sdk/credential-provider-process": "3.535.0", - "@aws-sdk/credential-provider-sso": "3.535.0", - "@aws-sdk/credential-provider-web-identity": "3.535.0", + "@aws-sdk/credential-provider-sso": "3.540.0", + "@aws-sdk/credential-provider-web-identity": "3.540.0", "@aws-sdk/types": "3.535.0", "@smithy/credential-provider-imds": "^2.3.0", "@smithy/property-provider": "^2.2.0", @@ -545,12 +545,12 @@ } }, "node_modules/@aws-sdk/middleware-user-agent": { - "version": "3.535.0", - "resolved": "https://registry.npmmirror.com/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.535.0.tgz", - "integrity": "sha512-Uvb2WJ+zdHdCOtsWVPI/M0BcfNrjOYsicDZWtaljucRJKLclY5gNWwD+RwIC+8b5TvfnVOlH+N5jhvpi5Impog==", + "version": "3.540.0", + "resolved": "https://registry.npmmirror.com/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.540.0.tgz", + "integrity": "sha512-8Rd6wPeXDnOYzWj1XCmOKcx/Q87L0K1/EHqOBocGjLVbN3gmRxBvpmR1pRTjf7IsWfnnzN5btqtcAkfDPYQUMQ==", "dependencies": { "@aws-sdk/types": "3.535.0", - "@aws-sdk/util-endpoints": "3.535.0", + "@aws-sdk/util-endpoints": "3.540.0", "@smithy/protocol-http": "^3.3.0", "@smithy/types": "^2.12.0", "tslib": "^2.6.2" @@ -576,11 +576,11 @@ } }, "node_modules/@aws-sdk/token-providers": { - "version": "3.535.0", - "resolved": "https://registry.npmmirror.com/@aws-sdk/token-providers/-/token-providers-3.535.0.tgz", - "integrity": "sha512-4g+l/B9h1H/SiDtFRosW3pMwc+3PTXljZit+5NUBcET2XqcdUyHmgj3lBdu+CJ9CHdIMggRalYMAFXnRFe3Psg==", + "version": "3.540.0", + "resolved": "https://registry.npmmirror.com/@aws-sdk/token-providers/-/token-providers-3.540.0.tgz", + "integrity": "sha512-9BvtiVEZe5Ev88Wa4ZIUbtT6BVcPwhxmVInQ6c12MYNb0WNL54BN6wLy/eknAfF05gpX2/NDU2pUDOyMPdm/+g==", "dependencies": { - "@aws-sdk/client-sso-oidc": "3.535.0", + "@aws-sdk/client-sso-oidc": "3.540.0", "@aws-sdk/types": "3.535.0", "@smithy/property-provider": "^2.2.0", "@smithy/shared-ini-file-loader": "^2.4.0", @@ -604,9 +604,9 @@ } }, "node_modules/@aws-sdk/util-endpoints": { - "version": "3.535.0", - "resolved": "https://registry.npmmirror.com/@aws-sdk/util-endpoints/-/util-endpoints-3.535.0.tgz", - "integrity": "sha512-c8TlaQsiPchOOmTTR6qvHCO2O7L7NJwlKWAoQJ2GqWDZuC5es/fyuF2rp1h+ZRrUVraUomS0YdGkAmaDC7hJQg==", + "version": "3.540.0", + "resolved": "https://registry.npmmirror.com/@aws-sdk/util-endpoints/-/util-endpoints-3.540.0.tgz", + "integrity": "sha512-1kMyQFAWx6f8alaI6UT65/5YW/7pDWAKAdNwL6vuJLea03KrZRX3PMoONOSJpAS5m3Ot7HlWZvf3wZDNTLELZw==", "dependencies": { "@aws-sdk/types": "3.535.0", "@smithy/types": "^2.12.0", @@ -690,12 +690,12 @@ } }, "node_modules/@babel/core": { - "version": "7.24.1", - "resolved": "https://registry.npmmirror.com/@babel/core/-/core-7.24.1.tgz", - "integrity": "sha512-F82udohVyIgGAY2VVj/g34TpFUG606rumIHjTfVbssPg2zTR7PuuEpZcX8JA6sgBfIYmJrFtWgPvHQuJamVqZQ==", + "version": "7.24.3", + "resolved": "https://registry.npmmirror.com/@babel/core/-/core-7.24.3.tgz", + "integrity": "sha512-5FcvN1JHw2sHJChotgx8Ek0lyuh4kCKelgMTTqhYJJtloNvUfpAFMeNQUtdlIaktwrSV9LtCdqwk48wL2wBacQ==", "dependencies": { "@ampproject/remapping": "^2.2.0", - "@babel/code-frame": "^7.24.1", + "@babel/code-frame": "^7.24.2", "@babel/generator": "^7.24.1", "@babel/helper-compilation-targets": "^7.23.6", "@babel/helper-module-transforms": "^7.23.3", @@ -791,9 +791,9 @@ } }, "node_modules/@babel/helper-module-imports": { - "version": "7.24.1", - "resolved": "https://registry.npmmirror.com/@babel/helper-module-imports/-/helper-module-imports-7.24.1.tgz", - "integrity": "sha512-HfEWzysMyOa7xI5uQHc/OcZf67/jc+xe/RZlznWQHhbb8Pg1SkRdbK4yEi61aY8wxQA7PkSfoojtLQP/Kpe3og==", + "version": "7.24.3", + "resolved": "https://registry.npmmirror.com/@babel/helper-module-imports/-/helper-module-imports-7.24.3.tgz", + "integrity": "sha512-viKb0F9f2s0BCS22QSF308z/+1YWKV/76mwt61NBzS5izMzDPwdq1pTrzf+Li3npBWX9KdQbkeCt1jSAM7lZqg==", "dependencies": { "@babel/types": "^7.24.0" }, @@ -1168,12 +1168,12 @@ } }, "node_modules/@mongosh/arg-parser": { - "version": "2.2.1", - "resolved": "https://registry.npmmirror.com/@mongosh/arg-parser/-/arg-parser-2.2.1.tgz", - "integrity": "sha512-qz/RDf0go1irs/c/B5ZjN1OwPNplm8cQJU8eB037NVg0jCuDn/V+ERw3cSkinYdN1iZgLDtE/l3rgmEvkxz9Yg==", + "version": "2.2.2", + "resolved": "https://registry.npmmirror.com/@mongosh/arg-parser/-/arg-parser-2.2.2.tgz", + "integrity": "sha512-jonJbUjRBmMTgd1y3loyG09GJoYRZW/heWCbRGq5K9Gc4QHYDKwWPS8yaGTaw168UaBkCoCsSySNRs9MI0wJWA==", "dependencies": { - "@mongosh/errors": "2.2.1", - "@mongosh/i18n": "2.2.1", + "@mongosh/errors": "2.2.2", + "@mongosh/i18n": "2.2.2", "mongodb-connection-string-url": "^3.0.0" }, "engines": { @@ -1181,9 +1181,9 @@ } }, "node_modules/@mongosh/async-rewriter2": { - "version": "2.2.1", - "resolved": "https://registry.npmmirror.com/@mongosh/async-rewriter2/-/async-rewriter2-2.2.1.tgz", - "integrity": "sha512-xlSoweQUlX5nwW2FTOssQPpoJGZX1gZhfkaZ8qoanUdUMGDN+FfwjhUxMf8vUlOP8s899PUqDktCfc4UYo31mQ==", + "version": "2.2.2", + "resolved": "https://registry.npmmirror.com/@mongosh/async-rewriter2/-/async-rewriter2-2.2.2.tgz", + "integrity": "sha512-9F/rVauIZlxMFtVzddW5fs2a8Sr5/54Bc4qoBbwUjkGkV/I62Zx2fwoUm/JUM8iwnJwmXbjA/z0aK7div1OOdg==", "dependencies": { "@babel/core": "^7.22.8", "@babel/plugin-transform-destructuring": "^7.22.5", @@ -1200,12 +1200,12 @@ } }, "node_modules/@mongosh/autocomplete": { - "version": "2.2.1", - "resolved": "https://registry.npmmirror.com/@mongosh/autocomplete/-/autocomplete-2.2.1.tgz", - "integrity": "sha512-M02TfYQvIXy7HWWXT36aEvZ/LfkurET4F1M7y4J9aVb5GL6j3pkSmubOjJNzwkt9vEIJlHFlJFQfPDgq5DWFUA==", + "version": "2.2.2", + "resolved": "https://registry.npmmirror.com/@mongosh/autocomplete/-/autocomplete-2.2.2.tgz", + "integrity": "sha512-S7awMS1OBQHXyjpU7QglzwuzcYbkb+emFA+ox7rAEGUFfjxnHT+TN69SiNO6Hm63ryq+2w/lXyuAnLzml8ZdTA==", "dependencies": { "@mongodb-js/mongodb-constants": "^0.8.10", - "@mongosh/shell-api": "2.2.1", + "@mongosh/shell-api": "2.2.2", "semver": "^7.5.4" }, "engines": { @@ -1213,25 +1213,25 @@ } }, "node_modules/@mongosh/cli-repl": { - "version": "2.2.1", - "resolved": "https://registry.npmmirror.com/@mongosh/cli-repl/-/cli-repl-2.2.1.tgz", - "integrity": "sha512-KrnRS5IzdIvWG46n274Ay2c9ZhiMJqJryExNjs00H56VjepGq2HY7hop3U9vY31eQ/s+xLjzChR9qNJ+2E9WwA==", + "version": "2.2.2", + "resolved": "https://registry.npmmirror.com/@mongosh/cli-repl/-/cli-repl-2.2.2.tgz", + "integrity": "sha512-dPzJ+PN+xFzJ+11iGSMwzeQRcm8i+gUicc+BH2Oj5Y6pw4/Zljuk7uycu6nf5MMqxgzVyozaHfEUocOox59+1g==", "dependencies": { - "@mongosh/arg-parser": "2.2.1", - "@mongosh/autocomplete": "2.2.1", - "@mongosh/editor": "2.2.1", - "@mongosh/errors": "2.2.1", - "@mongosh/history": "2.2.1", - "@mongosh/i18n": "2.2.1", - "@mongosh/import-node-fetch": "2.2.1", - "@mongosh/js-multiline-to-singleline": "2.2.1", - "@mongosh/logging": "2.2.1", - "@mongosh/service-provider-core": "2.2.1", - "@mongosh/service-provider-server": "2.2.1", - "@mongosh/shell-api": "2.2.1", - "@mongosh/shell-evaluator": "2.2.1", - "@mongosh/snippet-manager": "2.2.1", - "@mongosh/types": "2.2.1", + "@mongosh/arg-parser": "2.2.2", + "@mongosh/autocomplete": "2.2.2", + "@mongosh/editor": "2.2.2", + "@mongosh/errors": "2.2.2", + "@mongosh/history": "2.2.2", + "@mongosh/i18n": "2.2.2", + "@mongosh/import-node-fetch": "2.2.2", + "@mongosh/js-multiline-to-singleline": "2.2.2", + "@mongosh/logging": "2.2.2", + "@mongosh/service-provider-core": "2.2.2", + "@mongosh/service-provider-server": "2.2.2", + "@mongosh/shell-api": "2.2.2", + "@mongosh/shell-evaluator": "2.2.2", + "@mongosh/snippet-manager": "2.2.2", + "@mongosh/types": "2.2.2", "@segment/analytics-node": "^1.3.0", "ansi-escape-sequences": "^5.1.2", "askcharacter": "^1.0.0", @@ -1262,15 +1262,15 @@ } }, "node_modules/@mongosh/editor": { - "version": "2.2.1", - "resolved": "https://registry.npmmirror.com/@mongosh/editor/-/editor-2.2.1.tgz", - "integrity": "sha512-z0nxSIVvCiR+kG2md24diMNou/9NBQvhn5334OeGyNk6y3/EEp52VN9Grmk9HL70d1tfr0A8F7c3kUpwJ6Q3XQ==", + "version": "2.2.2", + "resolved": "https://registry.npmmirror.com/@mongosh/editor/-/editor-2.2.2.tgz", + "integrity": "sha512-loUUjTtUnzWo/LTRUrEdvENVTHXNS+ohhuKd65mbT/n5XciVamozYhuLuTTsrGUMbVpHeaPXquryIKLEOqgi6w==", "dependencies": { - "@mongosh/js-multiline-to-singleline": "2.2.1", - "@mongosh/service-provider-core": "2.2.1", - "@mongosh/shell-api": "2.2.1", - "@mongosh/shell-evaluator": "2.2.1", - "@mongosh/types": "2.2.1", + "@mongosh/js-multiline-to-singleline": "2.2.2", + "@mongosh/service-provider-core": "2.2.2", + "@mongosh/shell-api": "2.2.2", + "@mongosh/shell-evaluator": "2.2.2", + "@mongosh/types": "2.2.2", "js-beautify": "^1.14.0" }, "engines": { @@ -1278,17 +1278,17 @@ } }, "node_modules/@mongosh/errors": { - "version": "2.2.1", - "resolved": "https://registry.npmmirror.com/@mongosh/errors/-/errors-2.2.1.tgz", - "integrity": "sha512-pwBI8Bv1KWYUSBoY2gh48dzvabCH8WlWYfo3Kzci7DPVK1vOccZpzr4PZony6ajvJ0KUswGGSaRFVdS54lO9QA==", + "version": "2.2.2", + "resolved": "https://registry.npmmirror.com/@mongosh/errors/-/errors-2.2.2.tgz", + "integrity": "sha512-FA4xuRZrYiYl9MxNzwl1adXZqQGXDHrVZyrL8Qrz28mGpvhfaQCENkE11C3DOpT2G/bHIFfiCxsmKs3ko7rwXw==", "engines": { "node": ">=14.15.1" } }, "node_modules/@mongosh/history": { - "version": "2.2.1", - "resolved": "https://registry.npmmirror.com/@mongosh/history/-/history-2.2.1.tgz", - "integrity": "sha512-AfqtzjrfvJl0EwM3co4fTYGs12E76WUOfJbRejaBI1aLZZ7h36cjQjOG0bAckEuPYRw0sygkql5X0DLjZHDB/A==", + "version": "2.2.2", + "resolved": "https://registry.npmmirror.com/@mongosh/history/-/history-2.2.2.tgz", + "integrity": "sha512-llgGAt9ErtutDo5bQAYw+bpN0mOUHwh4rztIs0wT5vNplIkTxPOQMRXCYe1naXjyUV+2cFZN9aoNV1BuIH/9Gw==", "dependencies": { "mongodb-connection-string-url": "^3.0.0", "mongodb-redact": "^0.2.2" @@ -1298,21 +1298,20 @@ } }, "node_modules/@mongosh/i18n": { - "version": "2.2.1", - "resolved": "https://registry.npmmirror.com/@mongosh/i18n/-/i18n-2.2.1.tgz", - "integrity": "sha512-ZbWV4Sykz4WIsLLGq9MfKR5baNXo5caM2pdBFVF6fwJMOcR87meBFcQ3SkbI7ZKezrMaQi/o9l6o6amI0vr2Rg==", + "version": "2.2.2", + "resolved": "https://registry.npmmirror.com/@mongosh/i18n/-/i18n-2.2.2.tgz", + "integrity": "sha512-FHUbQ7W02uN0ZRM/5tW3v9H0khooJGoxh5i9RaKU1SD8MVeyVToWP5LMIRdD1VQqJhQrEo8lB9G6nOjkXBNrgw==", "dependencies": { - "@mongosh/errors": "2.2.1", - "mustache": "^4.0.0" + "@mongosh/errors": "2.2.2" }, "engines": { "node": ">=14.15.1" } }, "node_modules/@mongosh/import-node-fetch": { - "version": "2.2.1", - "resolved": "https://registry.npmmirror.com/@mongosh/import-node-fetch/-/import-node-fetch-2.2.1.tgz", - "integrity": "sha512-rN9BBe3Z/zhnNjTc4cBYpt4oDa+JS7Th5grg/rYurb6Bs8f68Rzn1BTDACix7jzzHM6pVtptuk+b2QXIb2sAlw==", + "version": "2.2.2", + "resolved": "https://registry.npmmirror.com/@mongosh/import-node-fetch/-/import-node-fetch-2.2.2.tgz", + "integrity": "sha512-jKLAj5uHGC0Znn/KYlkj18naeup0gJxAVz9wJ9qcw7Sjk+zFXix4FR7J4kFw4OvVRVli2+lrQJxqRNOWdSC9Pg==", "dependencies": { "node-fetch": "^3.3.2" }, @@ -1321,9 +1320,9 @@ } }, "node_modules/@mongosh/js-multiline-to-singleline": { - "version": "2.2.1", - "resolved": "https://registry.npmmirror.com/@mongosh/js-multiline-to-singleline/-/js-multiline-to-singleline-2.2.1.tgz", - "integrity": "sha512-e3F8ukzBfJibVaT22lqNdTKMW2UnOTGwEGmAgJC6MLElNjo+zR2z+OBWdLbuOdkY5nsXFDYB2IWgPYbKFiWu/A==", + "version": "2.2.2", + "resolved": "https://registry.npmmirror.com/@mongosh/js-multiline-to-singleline/-/js-multiline-to-singleline-2.2.2.tgz", + "integrity": "sha512-Bbjn2dkxuW1PETNZkPIE/vybNe1fiAAdY7Kp4zy+hExiPb0bxalJVhh91kX5tGllGtk4lhcXgNHVpQvn44+UCw==", "dependencies": { "@babel/core": "^7.16.12", "@babel/types": "^7.21.2" @@ -1333,14 +1332,14 @@ } }, "node_modules/@mongosh/logging": { - "version": "2.2.1", - "resolved": "https://registry.npmmirror.com/@mongosh/logging/-/logging-2.2.1.tgz", - "integrity": "sha512-2YYLnBvx5GI4zof0sQw8bqLULGf/hOsn8rNIhosfbHKNUPrCCyWlPnjeFD3npaAt7zffkI7Acpev6hWlEDuulA==", + "version": "2.2.2", + "resolved": "https://registry.npmmirror.com/@mongosh/logging/-/logging-2.2.2.tgz", + "integrity": "sha512-q7YtlypGHFxvrTXc62elQXoQjcpUzTcEpldAtB3LyJ/q4Tw09+Fu4ypgLwXQ+sdFodd0qpAsk/EXJL79mGVokA==", "dependencies": { "@mongodb-js/devtools-connect": "^2.6.0", - "@mongosh/errors": "2.2.1", - "@mongosh/history": "2.2.1", - "@mongosh/types": "2.2.1", + "@mongosh/errors": "2.2.2", + "@mongosh/history": "2.2.2", + "@mongosh/types": "2.2.2", "mongodb-log-writer": "^1.4.0", "mongodb-redact": "^0.2.2" }, @@ -1349,12 +1348,12 @@ } }, "node_modules/@mongosh/service-provider-core": { - "version": "2.2.1", - "resolved": "https://registry.npmmirror.com/@mongosh/service-provider-core/-/service-provider-core-2.2.1.tgz", - "integrity": "sha512-D+sGmdKjeuTln5vTDqgg3Yx6DfidNuS/8keM14VGafRpVV8CEBD0My8F3kHpimV9w7xZnrAMKBqczcL1ZcJeww==", + "version": "2.2.2", + "resolved": "https://registry.npmmirror.com/@mongosh/service-provider-core/-/service-provider-core-2.2.2.tgz", + "integrity": "sha512-6E8qCRmV0lmO/9rRF6/L9zWt4XWbZuQWrh+xo3aceGD4jaBat16yZ0bqO+HTId7CxdZnOD9MqAXoBqXAWi4o3A==", "dependencies": { "@aws-sdk/credential-providers": "^3.525.0", - "@mongosh/errors": "2.2.1", + "@mongosh/errors": "2.2.2", "bson": "^6.5.0", "mongodb": "^6.5.0", "mongodb-build-info": "^1.7.1" @@ -1367,15 +1366,15 @@ } }, "node_modules/@mongosh/service-provider-server": { - "version": "2.2.1", - "resolved": "https://registry.npmmirror.com/@mongosh/service-provider-server/-/service-provider-server-2.2.1.tgz", - "integrity": "sha512-dZ2YlTWANFnfwSjDNxpMbdbFDAqru2pMXoxIyPzEW3ISnathRfJjObiSO0+i56AoGPPG0lTFEdHAb0r9lPgxew==", + "version": "2.2.2", + "resolved": "https://registry.npmmirror.com/@mongosh/service-provider-server/-/service-provider-server-2.2.2.tgz", + "integrity": "sha512-Gaps3+FosBcVNW36KcLa6iQV0Ynbnq4Xw/0Eddd6IF2UZTrqyZDhl9pOicP5d1G6xjS833dlWy6cRSYki+rQIQ==", "dependencies": { "@mongodb-js/devtools-connect": "^2.6.0", "@mongodb-js/oidc-plugin": "^0.4.0", - "@mongosh/errors": "2.2.1", - "@mongosh/service-provider-core": "2.2.1", - "@mongosh/types": "2.2.1", + "@mongosh/errors": "2.2.2", + "@mongosh/service-provider-core": "2.2.2", + "@mongosh/types": "2.2.2", "@types/sinon-chai": "^3.2.4", "aws4": "^1.12.0", "mongodb": "^6.5.0", @@ -1391,15 +1390,15 @@ } }, "node_modules/@mongosh/shell-api": { - "version": "2.2.1", - "resolved": "https://registry.npmmirror.com/@mongosh/shell-api/-/shell-api-2.2.1.tgz", - "integrity": "sha512-v7SNBBYms8SoHgDdDqN+jkG6V9GlpEJe5pY7tpLwlrQJ7ioBc8SOidsmHviStYP4oMzhkWQMXWETayWO92Fn+g==", + "version": "2.2.2", + "resolved": "https://registry.npmmirror.com/@mongosh/shell-api/-/shell-api-2.2.2.tgz", + "integrity": "sha512-VzgYSzcA6uceo3moQXchgpnbiY/ZVCOKqiJxRufPP9ALWmxvii7qnmIL1NjLZzqqYdeJ5ZReRqX8WWMOSZvLSg==", "dependencies": { - "@mongosh/arg-parser": "2.2.1", - "@mongosh/errors": "2.2.1", - "@mongosh/history": "2.2.1", - "@mongosh/i18n": "2.2.1", - "@mongosh/service-provider-core": "2.2.1", + "@mongosh/arg-parser": "2.2.2", + "@mongosh/errors": "2.2.2", + "@mongosh/history": "2.2.2", + "@mongosh/i18n": "2.2.2", + "@mongosh/service-provider-core": "2.2.2", "mongodb-redact": "^0.2.2" }, "engines": { @@ -1407,27 +1406,27 @@ } }, "node_modules/@mongosh/shell-evaluator": { - "version": "2.2.1", - "resolved": "https://registry.npmmirror.com/@mongosh/shell-evaluator/-/shell-evaluator-2.2.1.tgz", - "integrity": "sha512-drs0wUGjMwsh5RCcTatuUE+xOcggASmMnRfJTrCF/qq/Zvt4Jdx2g0VYfU6QjwPU7X1xqRC+0efMo9ixEVIDVQ==", + "version": "2.2.2", + "resolved": "https://registry.npmmirror.com/@mongosh/shell-evaluator/-/shell-evaluator-2.2.2.tgz", + "integrity": "sha512-38AegwWGi/6U51JJQWW8y2yfs0Tbr75BZFF7HeLwqGnf4ASpNdB/bVAaRxz5x7v/GcIBmPNcyj7zjLrq2IP2Cg==", "dependencies": { - "@mongosh/async-rewriter2": "2.2.1", - "@mongosh/history": "2.2.1", - "@mongosh/shell-api": "2.2.1" + "@mongosh/async-rewriter2": "2.2.2", + "@mongosh/history": "2.2.2", + "@mongosh/shell-api": "2.2.2" }, "engines": { "node": ">=14.15.1" } }, "node_modules/@mongosh/snippet-manager": { - "version": "2.2.1", - "resolved": "https://registry.npmmirror.com/@mongosh/snippet-manager/-/snippet-manager-2.2.1.tgz", - "integrity": "sha512-jjDAjaPCdWQAmlbWhZ1Jso7D19oKaxuEl3avn6vkxMIQIMML4IWrNOHoqWkfx5Z3NPteyx4grVfPyzjvipi94g==", + "version": "2.2.2", + "resolved": "https://registry.npmmirror.com/@mongosh/snippet-manager/-/snippet-manager-2.2.2.tgz", + "integrity": "sha512-6ARX2s8XeieyLAh7ManT8e4f8CXj+copeMgNfgLR2KTsUVImHSaGk75rp1/haEed0NieHivPJnLjxdckhve3wA==", "dependencies": { - "@mongosh/errors": "2.2.1", - "@mongosh/import-node-fetch": "2.2.1", - "@mongosh/shell-api": "2.2.1", - "@mongosh/types": "2.2.1", + "@mongosh/errors": "2.2.2", + "@mongosh/import-node-fetch": "2.2.2", + "@mongosh/shell-api": "2.2.2", + "@mongosh/types": "2.2.2", "bson": "^6.5.0", "cross-spawn": "^7.0.3", "escape-string-regexp": "^4.0.0", @@ -1439,9 +1438,9 @@ } }, "node_modules/@mongosh/types": { - "version": "2.2.1", - "resolved": "https://registry.npmmirror.com/@mongosh/types/-/types-2.2.1.tgz", - "integrity": "sha512-lV1khTdJ8s3ldithGRa06nl4wlmKZm6eDnILPqW3QrZa0j6a2GBBe0GSUFo8kZkq4x3Y6SkT05ZHe1mnhh1gJQ==", + "version": "2.2.2", + "resolved": "https://registry.npmmirror.com/@mongosh/types/-/types-2.2.2.tgz", + "integrity": "sha512-nFJlltmiDXryIrsJUvYvoU69P38j5u0plOtsxjhi4zlghQVt9qgjycdAD5F8E2tlV+dKUvQD4vulU7lASQcrBg==", "dependencies": { "@mongodb-js/devtools-connect": "^2.6.0" }, @@ -2115,9 +2114,9 @@ } }, "node_modules/@types/chai": { - "version": "4.3.13", - "resolved": "https://registry.npmmirror.com/@types/chai/-/chai-4.3.13.tgz", - "integrity": "sha512-+LxQEbg4BDUf88utmhpUpTyYn1zHao443aGnXIAQak9ZMt9Rtsic0Oig0OS1xyIqdDXc5uMekoC6NaiUlkT/qA==" + "version": "4.3.14", + "resolved": "https://registry.npmmirror.com/@types/chai/-/chai-4.3.14.tgz", + "integrity": "sha512-Wj71sXE4Q4AkGdG9Tvq1u/fquNz9EdG4LIJMwVVII7ashjD/8cf8fyIfJAjRr6YcsXnSE8cOGQPq1gqeR8z+3w==" }, "node_modules/@types/sinon": { "version": "17.0.3", @@ -2508,9 +2507,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001599", - "resolved": "https://registry.npmmirror.com/caniuse-lite/-/caniuse-lite-1.0.30001599.tgz", - "integrity": "sha512-LRAQHZ4yT1+f9LemSMeqdMpMxZcc4RMWdj4tiFe3G8tNkWK+E58g+/tzotb5cU6TbcVJLr4fySiAW7XmxQvZQA==" + "version": "1.0.30001600", + "resolved": "https://registry.npmmirror.com/caniuse-lite/-/caniuse-lite-1.0.30001600.tgz", + "integrity": "sha512-+2S9/2JFhYmYaDpZvo0lKkfvuKIglrx68MwOBqMGHhQsNkLjB5xtc/TGoEPs+MxjSyN/72qer2g97nzR641mOQ==" }, "node_modules/chalk": { "version": "2.4.2", @@ -2596,9 +2595,9 @@ "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==" }, "node_modules/cookie": { - "version": "0.5.0", - "resolved": "https://registry.npmmirror.com/cookie/-/cookie-0.5.0.tgz", - "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==", + "version": "0.6.0", + "resolved": "https://registry.npmmirror.com/cookie/-/cookie-0.6.0.tgz", + "integrity": "sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==", "engines": { "node": ">= 0.6" } @@ -2775,9 +2774,9 @@ "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==" }, "node_modules/electron-to-chromium": { - "version": "1.4.711", - "resolved": "https://registry.npmmirror.com/electron-to-chromium/-/electron-to-chromium-1.4.711.tgz", - "integrity": "sha512-hRg81qzvUEibX2lDxnFlVCHACa+LtrCPIsWAxo161LDYIB3jauf57RGsMZV9mvGwE98yGH06icj3zBEoOkxd/w==" + "version": "1.4.717", + "resolved": "https://registry.npmmirror.com/electron-to-chromium/-/electron-to-chromium-1.4.717.tgz", + "integrity": "sha512-6Fmg8QkkumNOwuZ/5mIbMU9WI3H2fmn5ajcVya64I5Yr5CcNmO7vcLt0Y7c96DCiMO5/9G+4sI2r6eEvdg1F7A==" }, "node_modules/emoji-regex": { "version": "9.2.2", @@ -2959,16 +2958,16 @@ } }, "node_modules/express": { - "version": "4.18.3", - "resolved": "https://registry.npmmirror.com/express/-/express-4.18.3.tgz", - "integrity": "sha512-6VyCijWQ+9O7WuVMTRBTl+cjNNIzD5cY5mQ1WM8r/LEkI2u8EYpOotESNwzNlyCn3g+dmjKYI6BmNneSr/FSRw==", + "version": "4.19.2", + "resolved": "https://registry.npmmirror.com/express/-/express-4.19.2.tgz", + "integrity": "sha512-5T6nhjsT+EOMzuck8JjBHARTHfMht0POzlA60WV2pMD3gyXw2LZnZ+ueGdNxG+0calOJcWKbpFcuzLZ91YWq9Q==", "dependencies": { "accepts": "~1.3.8", "array-flatten": "1.1.1", "body-parser": "1.20.2", "content-disposition": "0.5.4", "content-type": "~1.0.4", - "cookie": "0.5.0", + "cookie": "0.6.0", "cookie-signature": "1.0.6", "debug": "2.6.9", "depd": "2.0.0", @@ -3898,14 +3897,6 @@ "resolved": "https://registry.npmmirror.com/ms/-/ms-2.1.2.tgz", "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" }, - "node_modules/mustache": { - "version": "4.2.0", - "resolved": "https://registry.npmmirror.com/mustache/-/mustache-4.2.0.tgz", - "integrity": "sha512-71ippSywq5Yb7/tVYyGbkBggbU8H3u5Rz56fH60jGFgr8uHwxs+aSKeqmluIVzM0m0kB7xQjKS6qPfd0b2ZoqQ==", - "bin": { - "mustache": "bin/mustache" - } - }, "node_modules/napi-build-utils": { "version": "1.0.2", "resolved": "https://registry.npmmirror.com/napi-build-utils/-/napi-build-utils-1.0.2.tgz", @@ -4805,9 +4796,9 @@ } }, "node_modules/tar": { - "version": "6.2.0", - "resolved": "https://registry.npmmirror.com/tar/-/tar-6.2.0.tgz", - "integrity": "sha512-/Wo7DcT0u5HUV486xg675HtjNd3BXZ6xDbzsCUZPt5iw8bTQ63bP0Raut3mvro9u+CUyq7YQd8Cx55fsZXxqLQ==", + "version": "6.2.1", + "resolved": "https://registry.npmmirror.com/tar/-/tar-6.2.1.tgz", + "integrity": "sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A==", "dependencies": { "chownr": "^2.0.0", "fs-minipass": "^2.0.0", diff --git a/pkgs/development/tools/mongosh/source.json b/pkgs/development/tools/mongosh/source.json index 8f771e9917ee..3a9d6a9a0ab1 100644 --- a/pkgs/development/tools/mongosh/source.json +++ b/pkgs/development/tools/mongosh/source.json @@ -1,6 +1,6 @@ { - "version": "2.2.1", - "integrity": "sha512-jqgOlNl5ZE/jasl6LIDZ8lKP658I+XFZh1e16eYo+c9UfL+NqRXwVJCRWKaZ/tph9Hc3dzCd9dKCN7OC0T50iQ==", - "filename": "mongosh-2.2.1.tgz", - "deps": "sha256-sZ2zSFi2tuYhjLHHrewNHcmSxwIHggL+wbHvEScK38Y=" + "version": "2.2.2", + "integrity": "sha512-IfPcqu5xPfNKGmrk+zprDhHkKzAeiyI4QjHbbmrVFiXFg6J2Dk7i25NvndNxOALRqxnQ/bWnfl1qrEZJmWerWQ==", + "filename": "mongosh-2.2.2.tgz", + "deps": "sha256-96EVcBanbCyNg18T3jgryhP2hA7Gmcmf2EiGfzIju28=" } From c9da94beffb66d14a0a9188038dd4d1514e1ec56 Mon Sep 17 00:00:00 2001 From: Yueh-Shun Li Date: Tue, 26 Mar 2024 19:22:33 +0800 Subject: [PATCH 021/116] buildGoModule: Deprecate vendorSha256 with throw Ignore vendorSha256 when vendorHash is specified. Throw when vendorHash isn't specified: - "buildGoModule: Expect vendorHash instead of vendorSha256" when vendorSha256 is specified. - "buildGoModule: vendorHash is missing" otherwise. `goModules.outputHashAlgo` is specified as null when vendorHash is not empty, "sha256" otherwise. Co-authored-by: zowoq <59103226+zowoq@users.noreply.github.com> --- .../doc/manual/release-notes/rl-2405.section.md | 2 ++ pkgs/build-support/go/module.nix | 16 ++++++++++------ 2 files changed, 12 insertions(+), 6 deletions(-) diff --git a/nixos/doc/manual/release-notes/rl-2405.section.md b/nixos/doc/manual/release-notes/rl-2405.section.md index 436bd5101233..3a30ab6f92ba 100644 --- a/nixos/doc/manual/release-notes/rl-2405.section.md +++ b/nixos/doc/manual/release-notes/rl-2405.section.md @@ -179,6 +179,8 @@ The pre-existing [services.ankisyncd](#opt-services.ankisyncd.enable) has been m "mysecret"` becomes `services.aria2.rpcSecretFile = "/path/to/secret_file"` where the file `secret_file` contains the string `mysecret`. +- `buildGoModule` now throws error when `vendorHash` is not specified. `vendorSha256`, deprecated in Nixpkgs 23.11, is now ignored and is no longer a `vendorHash` alias. + - Invidious has changed its default database username from `kemal` to `invidious`. Setups involving an externally provisioned database (i.e. `services.invidious.database.createLocally == false`) should adjust their configuration accordingly. The old `kemal` user will not be removed automatically even when the database is provisioned automatically.(https://github.com/NixOS/nixpkgs/pull/265857) - `writeReferencesToFile` is deprecated in favour of the new trivial build helper `writeClosure`. The latter accepts a list of paths and has an unambiguous name and cleaner implementation. diff --git a/pkgs/build-support/go/module.nix b/pkgs/build-support/go/module.nix index 153b675d48ae..ce569726297b 100644 --- a/pkgs/build-support/go/module.nix +++ b/pkgs/build-support/go/module.nix @@ -16,7 +16,12 @@ # # if vendorHash is null, then we won't fetch any dependencies and # rely on the vendor folder within the source. -, vendorHash ? args'.vendorSha256 or (throw "buildGoModule: vendorHash is missing") +, vendorHash ? throw ( + if args'?vendorSha256 then + "buildGoModule: Expect vendorHash instead of vendorSha256" + else + "buildGoModule: vendorHash is missing" + ) # Whether to delete the vendor folder supplied with the source. , deleteVendor ? false # Whether to fetch (go mod download) and proxy the vendor directory. @@ -49,7 +54,6 @@ }@args': assert goPackagePath != "" -> throw "`goPackagePath` is not needed with `buildGoModule`"; -assert (args' ? vendorHash && args' ? vendorSha256) -> throw "both `vendorHash` and `vendorSha256` set. only one can be set."; let args = removeAttrs args' [ "overrideModAttrs" "vendorSha256" "vendorHash" ]; @@ -145,7 +149,9 @@ let outputHashMode = "recursive"; outputHash = vendorHash; - outputHashAlgo = if args' ? vendorSha256 || vendorHash == "" then "sha256" else null; + # Handle empty vendorHash; avoid + # error: empty hash requires explicit hash algorithm + outputHashAlgo = if vendorHash == "" then "sha256" else null; }).overrideAttrs overrideModAttrs; package = stdenv.mkDerivation (args // { @@ -294,8 +300,7 @@ let disallowedReferences = lib.optional (!allowGoReference) go; - passthru = passthru // { inherit go goModules vendorHash; } - // lib.optionalAttrs (args' ? vendorSha256 ) { inherit (args') vendorSha256; }; + passthru = passthru // { inherit go goModules vendorHash; }; meta = { # Add default meta information @@ -303,7 +308,6 @@ let } // meta; }); in -lib.warnIf (args' ? vendorSha256) "`vendorSha256` is deprecated. Use `vendorHash` instead" lib.warnIf (buildFlags != "" || buildFlagsArray != "") "Use the `ldflags` and/or `tags` attributes instead of `buildFlags`/`buildFlagsArray`" lib.warnIf (builtins.elem "-buildid=" ldflags) "`-buildid=` is set by default as ldflag by buildGoModule" From 4409f04b235f02e80efbc5913d72b3438e14ec08 Mon Sep 17 00:00:00 2001 From: Fabian Affolter Date: Wed, 27 Mar 2024 09:32:18 +0100 Subject: [PATCH 022/116] snyk: refactor --- pkgs/development/tools/analysis/snyk/default.nix | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/pkgs/development/tools/analysis/snyk/default.nix b/pkgs/development/tools/analysis/snyk/default.nix index 9125d2a500a0..11ee2297e61d 100644 --- a/pkgs/development/tools/analysis/snyk/default.nix +++ b/pkgs/development/tools/analysis/snyk/default.nix @@ -1,4 +1,10 @@ -{ buildNpmPackage, fetchFromGitHub, lib, stdenv, testers, snyk }: +{ lib +, buildNpmPackage +, fetchFromGitHub +, stdenv +, testers +, snyk +}: buildNpmPackage rec { pname = "snyk"; @@ -7,14 +13,15 @@ buildNpmPackage rec { src = fetchFromGitHub { owner = "snyk"; repo = "cli"; - rev = "v${version}"; + rev = "refs/tags/v${version}"; hash = "sha256-tckifLV+HC7NqTeBtZI+VjZveeVbRS5+63vL8k8qE4s="; }; npmDepsHash = "sha256-deBtINc+P0NnCIb0jI0Mvn2zbWS6qLqCXL6nKSFGqOI="; postPatch = '' - substituteInPlace package.json --replace '"version": "1.0.0-monorepo"' '"version": "${version}"' + substituteInPlace package.json \ + --replace-fail '"version": "1.0.0-monorepo"' '"version": "${version}"' ''; env.NIX_CFLAGS_COMPILE = @@ -29,9 +36,10 @@ buildNpmPackage rec { meta = with lib; { description = "Scans and monitors projects for security vulnerabilities"; - mainProgram = "snyk"; homepage = "https://snyk.io"; + changelog = "https://github.com/snyk/cli/releases/tag/v${version}"; license = licenses.asl20; maintainers = with maintainers; [ ]; + mainProgram = "snyk"; }; } From 5a21935c78689b53b35f08732f3c4525df6b2403 Mon Sep 17 00:00:00 2001 From: Fabian Affolter Date: Wed, 27 Mar 2024 09:35:44 +0100 Subject: [PATCH 023/116] python311Packages.asyncstdlib: refactor --- pkgs/development/python-modules/asyncstdlib/default.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkgs/development/python-modules/asyncstdlib/default.nix b/pkgs/development/python-modules/asyncstdlib/default.nix index 3833c868f9c8..c31beceb1496 100644 --- a/pkgs/development/python-modules/asyncstdlib/default.nix +++ b/pkgs/development/python-modules/asyncstdlib/default.nix @@ -20,7 +20,7 @@ buildPythonPackage rec { hash = "sha256-5DQM8m3aeCZAXOi+Rm+iM409juBBYdZDNqBAbhyTm/M="; }; - nativeBuildInputs = [ + build-system = [ flit-core ]; From b212b74accc3d14c232b7dd3869bcef48d815d64 Mon Sep 17 00:00:00 2001 From: Fabian Affolter Date: Wed, 27 Mar 2024 09:08:05 +0100 Subject: [PATCH 024/116] python311Packages.llama-index-core: 0.10.23 -> 0.10.24 Diff: https://github.com/run-llama/llama_index/compare/refs/tags/v0.10.23...v0.10.24 Changelog: https://github.com/run-llama/llama_index/blob/0.10.24/CHANGELOG.md --- pkgs/development/python-modules/llama-index-core/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/development/python-modules/llama-index-core/default.nix b/pkgs/development/python-modules/llama-index-core/default.nix index 45b92fdae27b..259b672fab3e 100644 --- a/pkgs/development/python-modules/llama-index-core/default.nix +++ b/pkgs/development/python-modules/llama-index-core/default.nix @@ -30,7 +30,7 @@ buildPythonPackage rec { pname = "llama-index-core"; - version = "0.10.23"; + version = "0.10.24"; pyproject = true; disabled = pythonOlder "3.8"; @@ -39,7 +39,7 @@ buildPythonPackage rec { owner = "run-llama"; repo = "llama_index"; rev = "refs/tags/v${version}"; - hash = "sha256-koFdHpcMX4Qg+LLDcjHx4wYxHnrJaAqebpba0ejINzo="; + hash = "sha256-iag9alEnyOt+Hs8qTdRt3nn5fGHqztoOxilJXHWWnVw="; }; sourceRoot = "${src.name}/${pname}"; From 76c6e1555fc85fcee3d925ba88b1fbe38894a29a Mon Sep 17 00:00:00 2001 From: Fabian Affolter Date: Wed, 27 Mar 2024 09:38:46 +0100 Subject: [PATCH 025/116] python311Packages.llama-index-program-openai: relax llama-index-agent-openai --- .../python-modules/llama-index-program-openai/default.nix | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/pkgs/development/python-modules/llama-index-program-openai/default.nix b/pkgs/development/python-modules/llama-index-program-openai/default.nix index 12b2f6a7ac9e..6e851fcf9f88 100644 --- a/pkgs/development/python-modules/llama-index-program-openai/default.nix +++ b/pkgs/development/python-modules/llama-index-program-openai/default.nix @@ -6,6 +6,7 @@ , llama-index-llms-openai , poetry-core , pythonOlder +, pythonRelaxDepsHook }: buildPythonPackage rec { @@ -21,8 +22,13 @@ buildPythonPackage rec { hash = "sha256-Vz6Zot0WrTyvOCyKso0awQ6yVxvJSB2EptiYBq1qpdQ="; }; + pythonRelaxDeps = [ + "llama-index-agent-openai" + ]; + build-system = [ poetry-core + pythonRelaxDepsHook ]; dependencies = [ From 381fbde3efd2ffc2b885f89a18c737e3e9743a13 Mon Sep 17 00:00:00 2001 From: Fabian Affolter Date: Wed, 27 Mar 2024 09:45:17 +0100 Subject: [PATCH 026/116] python311Packages.llama-index-llms-openai: 0.1.12 -> 0.1.13 --- .../python-modules/llama-index-llms-openai/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/development/python-modules/llama-index-llms-openai/default.nix b/pkgs/development/python-modules/llama-index-llms-openai/default.nix index 8678e80272c1..24085ab77603 100644 --- a/pkgs/development/python-modules/llama-index-llms-openai/default.nix +++ b/pkgs/development/python-modules/llama-index-llms-openai/default.nix @@ -8,7 +8,7 @@ buildPythonPackage rec { pname = "llama-index-llms-openai"; - version = "0.1.12"; + version = "0.1.13"; pyproject = true; disabled = pythonOlder "3.8"; @@ -16,7 +16,7 @@ buildPythonPackage rec { src = fetchPypi { pname = "llama_index_llms_openai"; inherit version; - hash = "sha256-QAygCDlRvWaM6Lwkh1znC2NufbMosnxqUObRorCBueY="; + hash = "sha256-wP2TIlWsm/crawLDgR7rvzQxqnYDrqqzHIEVR/REsco="; }; build-system = [ From 92ebcf7d4da14fd08c7f597162408f046edc9d03 Mon Sep 17 00:00:00 2001 From: Fabian Affolter Date: Wed, 27 Mar 2024 09:49:47 +0100 Subject: [PATCH 027/116] python311Packages.llama-index-agent-openai: 0.10.22 -> 0.2.0 No longer use mono repo for the source as the release cycles don't match --- .../llama-index-agent-openai/default.nix | 34 ++++++++++++++----- 1 file changed, 26 insertions(+), 8 deletions(-) diff --git a/pkgs/development/python-modules/llama-index-agent-openai/default.nix b/pkgs/development/python-modules/llama-index-agent-openai/default.nix index 5663e9f11828..550b08375559 100644 --- a/pkgs/development/python-modules/llama-index-agent-openai/default.nix +++ b/pkgs/development/python-modules/llama-index-agent-openai/default.nix @@ -1,25 +1,36 @@ { lib , buildPythonPackage -, fetchFromGitHub +, fetchPypi , llama-index-core , llama-index-llms-openai , poetry-core +, pythonOlder +, pythonRelaxDepsHook }: buildPythonPackage rec { pname = "llama-index-agent-openai"; - - inherit (llama-index-core) version src meta; - + version = "0.2.0"; pyproject = true; - sourceRoot = "${src.name}/llama-index-integrations/agent/${pname}"; + disabled = pythonOlder "3.8"; - nativeBuildInputs = [ - poetry-core + src = fetchPypi { + pname = "llama_index_agent_openai"; + inherit version; + hash = "sha256-iDHuNk1TeBNAG6LK38JnAdPRrVODhQ9+fdytL1aNlO8="; + }; + + pythonRelaxDeps = [ + "llama-index-llms-openai" ]; - propagatedBuildInputs = [ + build-system = [ + poetry-core + pythonRelaxDepsHook + ]; + + dependencies = [ llama-index-core llama-index-llms-openai ]; @@ -27,4 +38,11 @@ buildPythonPackage rec { pythonImportsCheck = [ "llama_index.agent.openai" ]; + + meta = with lib; { + description = "LlamaIndex Agent Integration for OpenAI"; + homepage = "https://github.com/run-llama/llama_index/tree/main/llama-index-integrations/agent/llama-index-agent-openai"; + license = licenses.mit; + maintainers = with maintainers; [ fab ]; + }; } From a2ac9a5f605f377aea7b9728ecd751628c1f9bde Mon Sep 17 00:00:00 2001 From: Ivan Mincik Date: Wed, 27 Mar 2024 10:41:51 +0100 Subject: [PATCH 028/116] pdal: 2.7.0 -> 2.7.1 --- pkgs/development/libraries/pdal/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/development/libraries/pdal/default.nix b/pkgs/development/libraries/pdal/default.nix index 6f362967a2a2..86d976531cb3 100644 --- a/pkgs/development/libraries/pdal/default.nix +++ b/pkgs/development/libraries/pdal/default.nix @@ -27,13 +27,13 @@ stdenv.mkDerivation (finalAttrs: { pname = "pdal"; - version = "2.7.0"; + version = "2.7.1"; src = fetchFromGitHub { owner = "PDAL"; repo = "PDAL"; rev = finalAttrs.version; - sha256 = "sha256-knyDVUZH+X563UzKkvDpi08EcXU5s4+Jvya3Xprpt1A="; + sha256 = "sha256-JoHBxJ0hCWH7ZhmeJk4huT2k0AK5CzIV58NWCjWj5T0="; }; nativeBuildInputs = [ From a50a01003fd408574d11d987dcd934b7a091099b Mon Sep 17 00:00:00 2001 From: Fabian Affolter Date: Wed, 27 Mar 2024 10:50:46 +0100 Subject: [PATCH 029/116] ldeep: refactor --- pkgs/tools/security/ldeep/default.nix | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/pkgs/tools/security/ldeep/default.nix b/pkgs/tools/security/ldeep/default.nix index 92d5ff106b6c..0b3a2b47df4c 100644 --- a/pkgs/tools/security/ldeep/default.nix +++ b/pkgs/tools/security/ldeep/default.nix @@ -19,13 +19,13 @@ python3.pkgs.buildPythonApplication rec { "cryptography" ]; - nativeBuildInputs = with python3.pkgs; [ + build-system = with python3.pkgs; [ cython pythonRelaxDepsHook setuptools ]; - propagatedBuildInputs = with python3.pkgs; [ + dependencies = with python3.pkgs; [ commandparse cryptography dnspython @@ -39,7 +39,7 @@ python3.pkgs.buildPythonApplication rec { tqdm ]; - # no tests are present + # Project has no tests doCheck = false; pythonImportsCheck = [ @@ -48,10 +48,10 @@ python3.pkgs.buildPythonApplication rec { meta = with lib; { description = "In-depth LDAP enumeration utility"; - mainProgram = "ldeep"; homepage = "https://github.com/franc-pentest/ldeep"; changelog = "https://github.com/franc-pentest/ldeep/releases/tag/${version}"; license = with licenses; [ mit ]; maintainers = with maintainers; [ fab ]; + mainProgram = "ldeep"; }; } From b4efe534c95d8d35aec842c103c54cbb5256c58d Mon Sep 17 00:00:00 2001 From: Fabian Affolter Date: Wed, 27 Mar 2024 12:02:03 +0100 Subject: [PATCH 030/116] sipvicious: refactor - add dependencies - add manpages - use python3.pkgs --- pkgs/tools/security/sipvicious/default.nix | 34 +++++++++++++++++----- pkgs/top-level/all-packages.nix | 2 +- 2 files changed, 28 insertions(+), 8 deletions(-) diff --git a/pkgs/tools/security/sipvicious/default.nix b/pkgs/tools/security/sipvicious/default.nix index 1167d40e4327..8b0fa05cf0b5 100644 --- a/pkgs/tools/security/sipvicious/default.nix +++ b/pkgs/tools/security/sipvicious/default.nix @@ -1,26 +1,46 @@ { lib -, buildPythonApplication , fetchFromGitHub +, installShellFiles +, python3 }: -buildPythonApplication rec { +python3.pkgs.buildPythonApplication rec { pname = "sipvicious"; version = "0.3.4"; + pyproject = true; src = fetchFromGitHub { owner = "EnableSecurity"; - repo = pname; - rev = "v${version}"; - sha256 = "sha256-O8/9Vz/u8BoF1dfGceOJdzPPYLfkdBp2DkwA5WQ3dgo="; + repo = "sipvicious"; + rev = "refs/tags/v${version}"; + hash = "sha256-O8/9Vz/u8BoF1dfGceOJdzPPYLfkdBp2DkwA5WQ3dgo="; }; + build-system = [ + installShellFiles + ] ++ (with python3.pkgs; [ + setuptools + ]); + + dependencies = with python3.pkgs; [ + scapy + ]; + + postInstall = '' + installManPage man1/*.1 + ''; + # Project has no tests doCheck = false; - pythonImportsCheck = [ "sipvicious" ]; + + pythonImportsCheck = [ + "sipvicious" + ]; meta = with lib; { - description = " Set of tools to audit SIP based VoIP systems"; + description = "Set of tools to audit SIP based VoIP systems"; homepage = "https://github.com/EnableSecurity/sipvicious"; + changelog = "https://github.com/EnableSecurity/sipvicious/releases/tag/v${version}"; license = with licenses; [ gpl3Plus ]; maintainers = with maintainers; [ fab ]; }; diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 5d065c8cb599..b3dcff3b18a2 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -13125,7 +13125,7 @@ with pkgs; sipsak = callPackage ../tools/networking/sipsak { }; - sipvicious = python3Packages.callPackage ../tools/security/sipvicious { }; + sipvicious = callPackage ../tools/security/sipvicious { }; siril = callPackage ../applications/science/astronomy/siril { }; From 3875d6cab220a0052186ae54a2850fa50aa0502d Mon Sep 17 00:00:00 2001 From: "R. Ryantm" Date: Wed, 27 Mar 2024 11:45:28 +0000 Subject: [PATCH 031/116] dvc-with-remotes: 3.48.4 -> 3.49.0 --- pkgs/development/python-modules/dvc/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/development/python-modules/dvc/default.nix b/pkgs/development/python-modules/dvc/default.nix index 885e4915d1af..7df7da780d4f 100644 --- a/pkgs/development/python-modules/dvc/default.nix +++ b/pkgs/development/python-modules/dvc/default.nix @@ -57,7 +57,7 @@ buildPythonPackage rec { pname = "dvc"; - version = "3.48.4"; + version = "3.49.0"; pyproject = true; disabled = pythonOlder "3.8"; @@ -66,7 +66,7 @@ buildPythonPackage rec { owner = "iterative"; repo = "dvc"; rev = "refs/tags/${version}"; - hash = "sha256-vO+i0BU8mQuLfgb1rcGRmlb8gpHsRxgdwuJHRERA4Pw="; + hash = "sha256-Qu2+zTcTIPxLRZn1GB3Q6465kSEAuN+wessBVgxEdFU="; }; pythonRelaxDeps = [ From e141994dbb1a50027f41255adf6a7d9e2f16d9e7 Mon Sep 17 00:00:00 2001 From: Fabian Affolter Date: Wed, 27 Mar 2024 14:07:55 +0100 Subject: [PATCH 032/116] dvc: refactor --- pkgs/development/python-modules/dvc/default.nix | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/pkgs/development/python-modules/dvc/default.nix b/pkgs/development/python-modules/dvc/default.nix index 7df7da780d4f..72cb75d784c0 100644 --- a/pkgs/development/python-modules/dvc/default.nix +++ b/pkgs/development/python-modules/dvc/default.nix @@ -76,17 +76,17 @@ buildPythonPackage rec { postPatch = '' substituteInPlace dvc/analytics.py \ - --replace 'enabled = not os.getenv(DVC_NO_ANALYTICS)' 'enabled = False' + --replace-fail 'enabled = not os.getenv(DVC_NO_ANALYTICS)' 'enabled = False' substituteInPlace dvc/daemon.py \ --subst-var-by dvc "$out/bin/dcv" ''; - nativeBuildInputs = [ + build-system = [ pythonRelaxDepsHook setuptools-scm ]; - propagatedBuildInputs = [ + dependencies = [ appdirs colorama configobj @@ -166,10 +166,10 @@ buildPythonPackage rec { meta = with lib; { description = "Version Control System for Machine Learning Projects"; - mainProgram = "dvc"; homepage = "https://dvc.org"; changelog = "https://github.com/iterative/dvc/releases/tag/${version}"; license = licenses.asl20; maintainers = with maintainers; [ cmcdragonkai fab ]; + mainProgram = "dvc"; }; } From a3e9e6739bbc43577f8e4b4c94f1ba3d644c37f6 Mon Sep 17 00:00:00 2001 From: "R. Ryantm" Date: Wed, 27 Mar 2024 13:10:08 +0000 Subject: [PATCH 033/116] bitwarden-directory-connector-cli: 2023.10.0 -> 2024.3.1 --- .../security/bitwarden-directory-connector/default.nix | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pkgs/tools/security/bitwarden-directory-connector/default.nix b/pkgs/tools/security/bitwarden-directory-connector/default.nix index 7f46b444b2e9..7bc4d9a1fe83 100644 --- a/pkgs/tools/security/bitwarden-directory-connector/default.nix +++ b/pkgs/tools/security/bitwarden-directory-connector/default.nix @@ -13,14 +13,14 @@ let common = { name, npmBuildScript, installPhase }: buildNpmPackage rec { pname = name; - version = "2023.10.0"; + version = "2024.3.1"; nodejs = nodejs_18; src = fetchFromGitHub { owner = "bitwarden"; repo = "directory-connector"; rev = "v${version}"; - hash = "sha256-PlOtTh+rpTxAv8ajHBDHZuL7yeeLVpbAfKEDPQlejIg="; + hash = "sha256-NbyjL6x/Ij5waYlIDNKrg7fDT+co/EcdCW4ZBJ6KV34="; }; postPatch = '' @@ -32,7 +32,7 @@ let --replace-fail "AppImage" "dir" ''; - npmDepsHash = "sha256-jBAWWY12qeX2EDhUvT3TQpnQvYXRsIilRrXGpVzxYvw="; + npmDepsHash = "sha256-6WYNaF6z8OwWmi/Mv091LsuTUEUhWd8cDD11QKE8A5U="; env.ELECTRON_SKIP_BINARY_DOWNLOAD = "1"; From f97761e47b21761b4cce6a14183a385b19c4168d Mon Sep 17 00:00:00 2001 From: Fabian Affolter Date: Wed, 27 Mar 2024 14:23:52 +0100 Subject: [PATCH 034/116] badchars: refactor --- pkgs/tools/security/badchars/default.nix | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/pkgs/tools/security/badchars/default.nix b/pkgs/tools/security/badchars/default.nix index a6e5666c189f..4c4d566c9074 100644 --- a/pkgs/tools/security/badchars/default.nix +++ b/pkgs/tools/security/badchars/default.nix @@ -1,33 +1,41 @@ { lib , buildPythonApplication , fetchPypi +, python3 }: -buildPythonApplication rec { +python3.pkgs.buildPythonApplication rec { pname = "badchars"; version = "0.4.0"; + pyproject = true; src = fetchPypi { inherit pname version; - sha256 = "1xqki8qnfwl97d60xj69alyzwa1mnfbwki25j0vhvhb05varaxz2"; + hash = "sha256-4neV1S5gwQ03kEXEyZezNSj+PVXJyA5MO4lyZzGKE/c="; }; postPatch = '' - substituteInPlace setup.py --replace "argparse" "" + substituteInPlace setup.py \ + --replace-fail "argparse" "" ''; + build-system = with python3.pkgs; [ + setuptools + ]; + # no tests are available and it can't be imported (it's only a script, not a module) doCheck = false; meta = with lib; { description = "HEX badchar generator for different programming languages"; - mainProgram = "badchars"; longDescription = '' A HEX bad char generator to instruct encoders such as shikata-ga-nai to transform those to other chars. ''; homepage = "https://github.com/cytopia/badchars"; + changelog = "https://github.com/cytopia/badchars/releases/tag/${version}"; license = with licenses; [ mit ]; maintainers = with maintainers; [ fab ]; + mainProgram = "badchars"; }; } From cf1e9d2cf9a110a928b3285095cfc0c1485adf4c Mon Sep 17 00:00:00 2001 From: Christoph Hrdinka Date: Tue, 26 Mar 2024 12:51:43 +0100 Subject: [PATCH 035/116] qtpass: 1.3.2 -> 1.4.0 Changelog: https://github.com/IJHack/QtPass/releases/tag/v1.4.0 Closes #298915 --- pkgs/applications/misc/qtpass/default.nix | 29 +++++++---------------- 1 file changed, 9 insertions(+), 20 deletions(-) diff --git a/pkgs/applications/misc/qtpass/default.nix b/pkgs/applications/misc/qtpass/default.nix index 26807bc42a1c..ae26de760ee6 100644 --- a/pkgs/applications/misc/qtpass/default.nix +++ b/pkgs/applications/misc/qtpass/default.nix @@ -1,18 +1,17 @@ -{ lib, mkDerivation, fetchFromGitHub +{ fetchFromGitHub, lib, stdenv , git, gnupg, pass, pwgen, qrencode -, fetchpatch -, qtbase, qtsvg, qttools, qmake +, qtbase, qtsvg, qttools, qmake, wrapQtAppsHook }: -mkDerivation rec { +stdenv.mkDerivation rec { pname = "qtpass"; - version = "1.3.2"; + version = "1.4.0"; src = fetchFromGitHub { - owner = "IJHack"; - repo = "QtPass"; - rev = "v${version}"; - sha256 = "0748hjvhjrybi33ci3c8hcr74k9pdrf5jv8npf9hrsrmdyy1kr9x"; + owner = "IJHack"; + repo = "QtPass"; + rev = "v${version}"; + sha256 = "sha256-oKLLmsuXD2Hb2LQ4tcJP2gpR6eLaM/JzDhRcRSpUPYI="; }; postPatch = '' @@ -22,17 +21,7 @@ mkDerivation rec { buildInputs = [ git gnupg pass qtbase qtsvg ]; - nativeBuildInputs = [ qmake qttools ]; - - patches = [ - # Fix path to pass-otp plugin `/usr/lib/password-store/extensions/otp.bash` being hardcoded. - # TODO: Remove when https://github.com/IJHack/QtPass/pull/499 is merged and available. - (fetchpatch { - name = "qtpass-Dont-hardcode-pass-otp-usr-lib-path.patch"; - url = "https://github.com/IJHack/QtPass/commit/2ca9f0ec5a8d709c97a2433c5cd814040c82d4f3.patch"; - sha256 = "0ljlvqxvarrz2a4j71i66aflrxi84zirb6cg9kvygnvhvm1zbc7d"; - }) - ]; + nativeBuildInputs = [ qmake qttools wrapQtAppsHook ]; # HACK `propagatedSandboxProfile` does not appear to actually propagate the sandbox profile from `qt5.qtbase` sandboxProfile = toString qtbase.__propagatedSandboxProfile; From 57cfd14f85c9baadd0e89325bfcffc374785f805 Mon Sep 17 00:00:00 2001 From: "R. Ryantm" Date: Wed, 27 Mar 2024 16:11:33 +0000 Subject: [PATCH 036/116] python312Packages.aiounifi: 72 -> 73 --- pkgs/development/python-modules/aiounifi/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/development/python-modules/aiounifi/default.nix b/pkgs/development/python-modules/aiounifi/default.nix index 01879192a82d..4e3d883ee7da 100644 --- a/pkgs/development/python-modules/aiounifi/default.nix +++ b/pkgs/development/python-modules/aiounifi/default.nix @@ -15,7 +15,7 @@ buildPythonPackage rec { pname = "aiounifi"; - version = "72"; + version = "73"; pyproject = true; disabled = pythonOlder "3.11"; @@ -24,7 +24,7 @@ buildPythonPackage rec { owner = "Kane610"; repo = "aiounifi"; rev = "refs/tags/v${version}"; - hash = "sha256-PrFI5ncHW4r2Re1BIqRZlz8ns6d5p6y6PASCleSmyNc="; + hash = "sha256-xs3+2f/CNabdXm8g2V+sEIR5kQguxi3nMeJLb8TVrck="; }; postPatch = '' From 3922d07d15a2ec325b2e9b8bb3981d365f9240ac Mon Sep 17 00:00:00 2001 From: Fabian Affolter Date: Wed, 27 Mar 2024 17:32:08 +0100 Subject: [PATCH 037/116] python312Packages.aiounifi: refactor --- pkgs/development/python-modules/aiounifi/default.nix | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/pkgs/development/python-modules/aiounifi/default.nix b/pkgs/development/python-modules/aiounifi/default.nix index 4e3d883ee7da..ebb61463bf88 100644 --- a/pkgs/development/python-modules/aiounifi/default.nix +++ b/pkgs/development/python-modules/aiounifi/default.nix @@ -29,17 +29,17 @@ buildPythonPackage rec { postPatch = '' substituteInPlace pyproject.toml \ - --replace "setuptools==" "setuptools>=" \ - --replace "wheel==" "wheel>=" + --replace-fail "setuptools==" "setuptools>=" \ + --replace-fail "wheel==" "wheel>=" sed -i '/--cov=/d' pyproject.toml ''; - nativeBuildInputs = [ + build-system = [ setuptools ]; - propagatedBuildInputs = [ + dependencies = [ aiohttp orjson segno @@ -63,10 +63,10 @@ buildPythonPackage rec { meta = with lib; { description = "Python library for communicating with Unifi Controller API"; - mainProgram = "aiounifi"; homepage = "https://github.com/Kane610/aiounifi"; changelog = "https://github.com/Kane610/aiounifi/releases/tag/v${version}"; license = licenses.mit; maintainers = with maintainers; [ ]; + mainProgram = "aiounifi"; }; } From efbc4f3a01fc1cff72f8d826e089c54b406cf94d Mon Sep 17 00:00:00 2001 From: April Schleck Date: Tue, 26 Mar 2024 15:30:43 -0700 Subject: [PATCH 038/116] reshape: fix compilation on Darwin --- pkgs/development/tools/reshape/default.nix | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/pkgs/development/tools/reshape/default.nix b/pkgs/development/tools/reshape/default.nix index 82eeb6e7b0b6..d7c4701b9983 100644 --- a/pkgs/development/tools/reshape/default.nix +++ b/pkgs/development/tools/reshape/default.nix @@ -1,8 +1,10 @@ { lib , rustPlatform , fetchCrate +, darwin , postgresqlTestHook , postgresql +, stdenv }: rustPlatform.buildRustPackage rec { @@ -16,6 +18,9 @@ rustPlatform.buildRustPackage rec { cargoHash = "sha256-VTJ3FNhVLgxo/VVBhk1yF9UUktLXcbrEkYwoyoWFhXA="; + buildInputs = + lib.optionals stdenv.isDarwin [ darwin.apple_sdk.frameworks.SystemConfiguration ]; + nativeCheckInputs = [ postgresqlTestHook postgresql From 9eb85af9307a6aa14d74aabba2c0987d8b1472a9 Mon Sep 17 00:00:00 2001 From: Fabian Affolter Date: Wed, 27 Mar 2024 20:08:02 +0100 Subject: [PATCH 039/116] python312Packages.mscerts: 2024.2.28 -> 2024.3.27 Diff: https://github.com/ralphje/mscerts/compare/refs/tags/2024.2.28...2024.3.27 --- pkgs/development/python-modules/mscerts/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/development/python-modules/mscerts/default.nix b/pkgs/development/python-modules/mscerts/default.nix index 9dc16828c869..26949c606675 100644 --- a/pkgs/development/python-modules/mscerts/default.nix +++ b/pkgs/development/python-modules/mscerts/default.nix @@ -6,7 +6,7 @@ buildPythonPackage rec { pname = "mscerts"; - version = "2024.2.28"; + version = "2024.3.27"; format = "setuptools"; disabled = pythonOlder "3.7"; @@ -15,7 +15,7 @@ buildPythonPackage rec { owner = "ralphje"; repo = "mscerts"; rev = "refs/tags/${version}"; - hash = "sha256-ReUDpax4tvw4ZCH8zOipelIPtHi7BdgLHI/r3FNpo1c="; + hash = "sha256-Hucf3tToYm3P6ebKNlUs5V+X1B95u9P2UC1yOItZOhc="; }; # extras_require contains signify -> circular dependency From 99fc3b19ba48f12d47c83d6d5ec562e44eb13511 Mon Sep 17 00:00:00 2001 From: Fabian Affolter Date: Wed, 27 Mar 2024 20:10:14 +0100 Subject: [PATCH 040/116] python312Packages.mscerts: refactor --- pkgs/development/python-modules/mscerts/default.nix | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/pkgs/development/python-modules/mscerts/default.nix b/pkgs/development/python-modules/mscerts/default.nix index 26949c606675..6d7642c89470 100644 --- a/pkgs/development/python-modules/mscerts/default.nix +++ b/pkgs/development/python-modules/mscerts/default.nix @@ -2,12 +2,13 @@ , buildPythonPackage , fetchFromGitHub , pythonOlder +, setuptools }: buildPythonPackage rec { pname = "mscerts"; version = "2024.3.27"; - format = "setuptools"; + pyproject = true; disabled = pythonOlder "3.7"; @@ -18,6 +19,10 @@ buildPythonPackage rec { hash = "sha256-Hucf3tToYm3P6ebKNlUs5V+X1B95u9P2UC1yOItZOhc="; }; + build-system = [ + setuptools + ]; + # extras_require contains signify -> circular dependency # Module has no tests From 74bb9f3f170314160c68849c74971ea3c55395b2 Mon Sep 17 00:00:00 2001 From: "R. Ryantm" Date: Wed, 27 Mar 2024 20:10:11 +0000 Subject: [PATCH 041/116] bpftop: 0.3.0 -> 0.4.0 --- pkgs/by-name/bp/bpftop/package.nix | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pkgs/by-name/bp/bpftop/package.nix b/pkgs/by-name/bp/bpftop/package.nix index db954a57e069..cb965fd67a74 100644 --- a/pkgs/by-name/bp/bpftop/package.nix +++ b/pkgs/by-name/bp/bpftop/package.nix @@ -9,16 +9,16 @@ rustPlatform.buildRustPackage rec { pname = "bpftop"; - version = "0.3.0"; + version = "0.4.0"; src = fetchFromGitHub { owner = "Netflix"; repo = "bpftop"; rev = "v${version}"; - hash = "sha256-5MrfnKbrL8VoQBhtIcNmbkUfdjBXhTUW3d0GypvCuY8="; + hash = "sha256-N5sszFVU1nMS6QQENa9JcgFKSSWs07bWn6usvV/QmX4="; }; - cargoHash = "sha256-OjbsnhAY9KrGWgTDb3cxa1NIbdY2eaWlDXINC15Qk98="; + cargoHash = "sha256-yVNql4fSU1HhLKy8HYUbNnMnxgr/gPuqKol5O0ZDQlY="; buildInputs = [ elfutils From 03815d06e5c31a721d40236e36e31a4617cc9557 Mon Sep 17 00:00:00 2001 From: "R. Ryantm" Date: Wed, 27 Mar 2024 21:20:29 +0000 Subject: [PATCH 042/116] wio: unstable-2023-11-23 -> unstable-2024-03-23 --- pkgs/by-name/wi/wio/package.nix | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pkgs/by-name/wi/wio/package.nix b/pkgs/by-name/wi/wio/package.nix index e8378f2fc560..5a39e30ea3be 100644 --- a/pkgs/by-name/wi/wio/package.nix +++ b/pkgs/by-name/wi/wio/package.nix @@ -20,13 +20,13 @@ stdenv.mkDerivation (finalAttrs: { pname = "wio"; - version = "unstable-2023-11-23"; + version = "unstable-2024-03-23"; src = fetchFromGitHub { owner = "Rubo3"; repo = "wio"; - rev = "77c33b555589068350078d634a256a8fbb7ffe6b"; - hash = "sha256-Wff8RPHfmgPYJ3cO0h5onHtWIvOYDqLjvF1O4uODuCY="; + rev = "a68fbaf0011610d55db0413ebb7aca6ff79a8dc3"; + hash = "sha256-iQulldgYuz++ank2rOL92Ydj6IOiBtNEVEEcVOlhkMk="; }; nativeBuildInputs = [ From 432205b461bea68beadaca5b95665302614e2757 Mon Sep 17 00:00:00 2001 From: "R. Ryantm" Date: Wed, 27 Mar 2024 21:20:36 +0000 Subject: [PATCH 043/116] python312Packages.dirigera: 1.0.11 -> 1.0.12 --- pkgs/development/python-modules/dirigera/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/development/python-modules/dirigera/default.nix b/pkgs/development/python-modules/dirigera/default.nix index a2856ba209ea..6881e3ff71ea 100644 --- a/pkgs/development/python-modules/dirigera/default.nix +++ b/pkgs/development/python-modules/dirigera/default.nix @@ -11,7 +11,7 @@ buildPythonPackage rec { pname = "dirigera"; - version = "1.0.11"; + version = "1.0.12"; pyproject = true; disabled = pythonOlder "3.7"; @@ -20,7 +20,7 @@ buildPythonPackage rec { owner = "Leggin"; repo = "dirigera"; rev = "refs/tags/v${version}"; - hash = "sha256-kZlmfoGbvSv13+UqCE73ToLfrzzQ9AOxefRTxUvxMCg="; + hash = "sha256-e8kbMP5ih7MBozFbylLEBR9DrS894X4xZh62OLLSgFw="; }; nativeBuildInputs = [ From be5802015bb4e6cb7fb487f7e8bb3084f2ea9ce2 Mon Sep 17 00:00:00 2001 From: Sergei Trofimovich Date: Wed, 27 Mar 2024 21:31:52 +0000 Subject: [PATCH 044/116] btrfs-progs: 6.7.1 -> 6.8 Changes: https://github.com/kdave/btrfs-progs/releases/tag/v6.8 --- pkgs/tools/filesystems/btrfs-progs/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/tools/filesystems/btrfs-progs/default.nix b/pkgs/tools/filesystems/btrfs-progs/default.nix index 6f154f7aeeca..cd8bf05ab6df 100644 --- a/pkgs/tools/filesystems/btrfs-progs/default.nix +++ b/pkgs/tools/filesystems/btrfs-progs/default.nix @@ -10,11 +10,11 @@ stdenv.mkDerivation rec { pname = "btrfs-progs"; - version = "6.7.1"; + version = "6.8"; src = fetchurl { url = "mirror://kernel/linux/kernel/people/kdave/btrfs-progs/btrfs-progs-v${version}.tar.xz"; - hash = "sha256-JNx7l08KV7oOyoD5dEC4QN+oWw8cssAb39l2WaSAsgA="; + hash = "sha256-nCFkX+rBgmEeKLR3adX2E8ueLsq1js5gsQ5sVanq1XU="; }; nativeBuildInputs = [ From ddb5111771fcbb4c56cf377b927dc8f7d0cdd580 Mon Sep 17 00:00:00 2001 From: "R. Ryantm" Date: Wed, 27 Mar 2024 23:36:41 +0000 Subject: [PATCH 045/116] python311Packages.teslajsonpy: 3.10.1 -> 3.10.2 --- pkgs/development/python-modules/teslajsonpy/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/development/python-modules/teslajsonpy/default.nix b/pkgs/development/python-modules/teslajsonpy/default.nix index 0dbcd6bddc49..97f9a024371e 100644 --- a/pkgs/development/python-modules/teslajsonpy/default.nix +++ b/pkgs/development/python-modules/teslajsonpy/default.nix @@ -17,7 +17,7 @@ buildPythonPackage rec { pname = "teslajsonpy"; - version = "3.10.1"; + version = "3.10.2"; format = "pyproject"; disabled = pythonOlder "3.7"; @@ -26,7 +26,7 @@ buildPythonPackage rec { owner = "zabuldon"; repo = pname; rev = "refs/tags/v${version}"; - hash = "sha256-Eez8ktPhbWauFNsIuwoxMkGpI7hnYsBwStmU80IDFw4="; + hash = "sha256-M3/1J73C3gUqyZYsu10O6FnACKYVbGuMH+8Ns0s2Rwc="; }; nativeBuildInputs = [ From d65e36e5dbc197a0351cb715bc459837e16b88c8 Mon Sep 17 00:00:00 2001 From: "R. Ryantm" Date: Thu, 28 Mar 2024 02:37:43 +0000 Subject: [PATCH 046/116] php83Extensions.mongodb: 1.17.3 -> 1.18.0 --- pkgs/development/php-packages/mongodb/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/development/php-packages/mongodb/default.nix b/pkgs/development/php-packages/mongodb/default.nix index e3f79cee61f1..7e83041da136 100644 --- a/pkgs/development/php-packages/mongodb/default.nix +++ b/pkgs/development/php-packages/mongodb/default.nix @@ -15,13 +15,13 @@ buildPecl rec { pname = "mongodb"; - version = "1.17.3"; + version = "1.18.0"; src = fetchFromGitHub { owner = "mongodb"; repo = "mongo-php-driver"; rev = version; - hash = "sha256-5luaCrrnL7l9zhbxYUMSlID7Sx0MQhgFKgl8F6GkGsE="; + hash = "sha256-KrRWogmGMGaMRhU5D5xF5LTvJ6g9XSoDA5KfJxftvws="; fetchSubmodules = true; }; From aac3118ab56b878f5775b4302c70afc654de75ba Mon Sep 17 00:00:00 2001 From: Tristan Ross Date: Sun, 24 Mar 2024 09:59:15 -0700 Subject: [PATCH 047/116] llvmPackages_18: init --- .../llvm/18/clang/gnu-install-dirs.patch | 27 ------------------- .../compilers/llvm/18/compiler-rt/default.nix | 2 -- .../compilers/llvm/18/libcxx/default.nix | 22 ++++----------- .../compilers/llvm/18/libunwind/default.nix | 9 ------- .../compilers/llvm/18/lld/default.nix | 4 +++ .../llvm/18/lld/gnu-install-dirs.patch | 15 +++++++++++ .../compilers/llvm/18/llvm/default.nix | 7 +++++ .../llvm/18/llvm/gnu-install-dirs.patch | 10 +++---- 8 files changed, 36 insertions(+), 60 deletions(-) create mode 100644 pkgs/development/compilers/llvm/18/lld/gnu-install-dirs.patch diff --git a/pkgs/development/compilers/llvm/18/clang/gnu-install-dirs.patch b/pkgs/development/compilers/llvm/18/clang/gnu-install-dirs.patch index 9185f4b03b84..9517df973ad0 100644 --- a/pkgs/development/compilers/llvm/18/clang/gnu-install-dirs.patch +++ b/pkgs/development/compilers/llvm/18/clang/gnu-install-dirs.patch @@ -1,30 +1,3 @@ -diff --git a/CMakeLists.txt b/CMakeLists.txt -index f7936d72e088..a362fa49b534 100644 ---- a/CMakeLists.txt -+++ b/CMakeLists.txt -@@ -31,7 +31,21 @@ if(CLANG_BUILT_STANDALONE) - find_package(LLVM REQUIRED HINTS "${LLVM_CMAKE_DIR}") - list(APPEND CMAKE_MODULE_PATH "${LLVM_DIR}") - -- # Turn into CACHE PATHs for overwritting -+ # We can't check LLVM_CONFIG here, because find_package(LLVM ...) also sets -+ # LLVM_CONFIG. -+ if (NOT LLVM_CONFIG_FOUND) -+ # Pull values from LLVMConfig.cmake. We can drop this once the llvm-config -+ # path is removed. -+ set(INCLUDE_DIRS ${LLVM_INCLUDE_DIRS}) -+ set(LLVM_OBJ_DIR "${LLVM_BINARY_DIR}") -+ # N.B. this is just a default value, the CACHE PATHs below can be overriden. -+ set(MAIN_SRC_DIR "${CMAKE_CURRENT_SOURCE_DIR}/../llvm") -+ set(TOOLS_BINARY_DIR "${LLVM_TOOLS_BINARY_DIR}") -+ set(LIBRARY_DIR "${LLVM_LIBRARY_DIR}") -+ else() -+ set(INCLUDE_DIRS "${LLVM_BINARY_DIR}/include" "${MAIN_INCLUDE_DIR}") -+ endif() -+ - set(LLVM_INCLUDE_DIRS ${LLVM_INCLUDE_DIRS} CACHE PATH "Path to llvm/include and any other header dirs needed") - set(LLVM_BINARY_DIR "${LLVM_BINARY_DIR}" CACHE PATH "Path to LLVM build tree") - set(LLVM_MAIN_SRC_DIR "${CMAKE_CURRENT_SOURCE_DIR}/../llvm" CACHE PATH "Path to LLVM source tree") diff --git a/cmake/modules/AddClang.cmake b/cmake/modules/AddClang.cmake index 75b0080f6715..c895b884cd27 100644 --- a/cmake/modules/AddClang.cmake diff --git a/pkgs/development/compilers/llvm/18/compiler-rt/default.nix b/pkgs/development/compilers/llvm/18/compiler-rt/default.nix index 5a0e3c2e52ce..f51316beb570 100644 --- a/pkgs/development/compilers/llvm/18/compiler-rt/default.nix +++ b/pkgs/development/compilers/llvm/18/compiler-rt/default.nix @@ -90,8 +90,6 @@ stdenv.mkDerivation { # ld-wrapper dislikes `-rpath-link //nix/store`, so we normalize away the # extra `/`. ./normalize-var.patch - # Prevent a compilation error on darwin - ./darwin-targetconditionals.patch # See: https://github.com/NixOS/nixpkgs/pull/186575 ../../common/compiler-rt/darwin-plistbuddy-workaround.patch # See: https://github.com/NixOS/nixpkgs/pull/194634#discussion_r999829893 diff --git a/pkgs/development/compilers/llvm/18/libcxx/default.nix b/pkgs/development/compilers/llvm/18/libcxx/default.nix index 4e3404dbe194..d6c304c0b476 100644 --- a/pkgs/development/compilers/llvm/18/libcxx/default.nix +++ b/pkgs/development/compilers/llvm/18/libcxx/default.nix @@ -1,5 +1,5 @@ { lib, stdenv, llvm_meta -, monorepoSrc, runCommand, fetchpatch +, monorepoSrc, runCommand , cmake, lndir, ninja, python3, fixDarwinDylibNames, version , cxxabi ? if stdenv.hostPlatform.isFreeBSD then libcxxrt else null , libcxxrt, libunwind @@ -19,11 +19,11 @@ let # Note: useLLVM is likely false for Darwin but true under pkgsLLVM useLLVM = stdenv.hostPlatform.useLLVM or false; - cxxabiCMakeFlags = lib.optionals (useLLVM && !stdenv.hostPlatform.isWasm) [ - "-DLIBCXXABI_USE_COMPILER_RT=ON" - "-DLIBCXXABI_USE_LLVM_UNWINDER=ON" - ] ++ lib.optionals (lib.versionAtLeast version "18" && !(useLLVM && !stdenv.hostPlatform.isWasm)) [ + cxxabiCMakeFlags = [ "-DLIBCXXABI_USE_LLVM_UNWINDER=OFF" + ] ++ lib.optionals (useLLVM && !stdenv.hostPlatform.isWasm) [ + "-DLIBCXXABI_ADDITIONAL_LIBRARIES=unwind" + "-DLIBCXXABI_USE_COMPILER_RT=ON" ] ++ lib.optionals stdenv.hostPlatform.isWasm [ "-DLIBCXXABI_ENABLE_THREADS=OFF" "-DLIBCXXABI_ENABLE_EXCEPTIONS=OFF" @@ -87,18 +87,6 @@ stdenv.mkDerivation rec { patches = lib.optionals (stdenv.isDarwin && lib.versionOlder stdenv.hostPlatform.darwinMinVersion "10.13") [ # https://github.com/llvm/llvm-project/issues/64226 ./0001-darwin-10.12-mbstate_t-fix.patch - ] ++ lib.optionals (cxxabi == null && lib.versionAtLeast version "18") [ - # Allow building libcxxabi alone when using LLVM unwinder - (fetchpatch { - url = "https://github.com/llvm/llvm-project/commit/77610dd10454e87bb387040d2b51100a17ac5755.patch"; - revert = true; - hash = "sha256-jFbC3vBY3nKfjknJ7UzaPyoy0iSYdD3+jUmOFeOaVcA="; - }) - (fetchpatch { - url = "https://github.com/llvm/llvm-project/commit/48e5b5ea92674ded69b998cf35724d9012c0f57d.patch"; - revert = true; - hash = "sha256-WN63L4T3GxVozPZb6kx21AgNe4rwwSUOeeryIGsvQYY="; - }) ]; postPatch = '' diff --git a/pkgs/development/compilers/llvm/18/libunwind/default.nix b/pkgs/development/compilers/llvm/18/libunwind/default.nix index a3c8e2594f5a..e67823ffb85c 100644 --- a/pkgs/development/compilers/llvm/18/libunwind/default.nix +++ b/pkgs/development/compilers/llvm/18/libunwind/default.nix @@ -27,15 +27,6 @@ stdenv.mkDerivation rec { sourceRoot = "${src.name}/runtimes"; - prePatch = '' - cd ../${pname} - chmod -R u+w . - ''; - - postPatch = '' - cd ../runtimes - ''; - postInstall = lib.optionalString (enableShared && !stdenv.hostPlatform.isDarwin) '' # libcxxabi wants to link to libunwind_shared.so (?). ln -s $out/lib/libunwind.so $out/lib/libunwind_shared.so diff --git a/pkgs/development/compilers/llvm/18/lld/default.nix b/pkgs/development/compilers/llvm/18/lld/default.nix index 775eb94701b1..24ff0933dd1d 100644 --- a/pkgs/development/compilers/llvm/18/lld/default.nix +++ b/pkgs/development/compilers/llvm/18/lld/default.nix @@ -27,6 +27,10 @@ stdenv.mkDerivation rec { nativeBuildInputs = [ cmake ninja ]; buildInputs = [ libllvm libxml2 ]; + patches = [ + ./gnu-install-dirs.patch + ]; + cmakeFlags = [ "-DLLD_INSTALL_PACKAGE_DIR=${placeholder "dev"}/lib/cmake/lld" ] ++ lib.optionals (stdenv.hostPlatform != stdenv.buildPlatform) [ diff --git a/pkgs/development/compilers/llvm/18/lld/gnu-install-dirs.patch b/pkgs/development/compilers/llvm/18/lld/gnu-install-dirs.patch new file mode 100644 index 000000000000..6c73a240ab6d --- /dev/null +++ b/pkgs/development/compilers/llvm/18/lld/gnu-install-dirs.patch @@ -0,0 +1,15 @@ +diff --git a/cmake/modules/AddLLD.cmake b/cmake/modules/AddLLD.cmake +index d3924f7243d4..42a7cd62281c 100644 +--- a/cmake/modules/AddLLD.cmake ++++ b/cmake/modules/AddLLD.cmake +@@ -18,8 +18,8 @@ macro(add_lld_library name) + install(TARGETS ${name} + COMPONENT ${name} + ${export_to_lldtargets} +- LIBRARY DESTINATION lib${LLVM_LIBDIR_SUFFIX} +- ARCHIVE DESTINATION lib${LLVM_LIBDIR_SUFFIX} ++ LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}${LLVM_LIBDIR_SUFFIX}" ++ ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}${LLVM_LIBDIR_SUFFIX}" + RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}") + + if (${ARG_SHARED} AND NOT CMAKE_CONFIGURATION_TYPES) diff --git a/pkgs/development/compilers/llvm/18/llvm/default.nix b/pkgs/development/compilers/llvm/18/llvm/default.nix index 94b4d0116173..670171a707f9 100644 --- a/pkgs/development/compilers/llvm/18/llvm/default.nix +++ b/pkgs/development/compilers/llvm/18/llvm/default.nix @@ -179,6 +179,10 @@ stdenv.mkDerivation (rec { substituteInPlace test/ExecutionEngine/Interpreter/intrinsics.ll \ --replace "%roundeven32 = call float @llvm.roundeven.f32(float 0.000000e+00)" "" \ --replace "%roundeven64 = call double @llvm.roundeven.f64(double 0.000000e+00)" "" + + # fails when run in sandbox + substituteInPlace unittests/Support/VirtualFileSystemTest.cpp \ + --replace "PhysicalFileSystemWorkingDirFailure" "DISABLED_PhysicalFileSystemWorkingDirFailure" '' + optionalString (stdenv.isDarwin && stdenv.hostPlatform.isx86) '' # This test fails on darwin x86_64 because `sw_vers` reports a different # macOS version than what LLVM finds by reading @@ -381,6 +385,9 @@ stdenv.mkDerivation (rec { substituteInPlace "$dev/lib/cmake/llvm/LLVMConfig.cmake" \ --replace 'set(LLVM_BINARY_DIR "''${LLVM_INSTALL_PREFIX}")' 'set(LLVM_BINARY_DIR "'"$lib"'")' '' + + optionalString (stdenv.isDarwin && enableSharedLibraries) '' + ln -s $lib/lib/libLLVM.dylib $lib/lib/libLLVM-${release_version}.dylib + '' + optionalString (stdenv.buildPlatform != stdenv.hostPlatform) '' cp NATIVE/bin/llvm-config $dev/bin/llvm-config-native ''; diff --git a/pkgs/development/compilers/llvm/18/llvm/gnu-install-dirs.patch b/pkgs/development/compilers/llvm/18/llvm/gnu-install-dirs.patch index e2122ebf603d..8b89839490ba 100644 --- a/pkgs/development/compilers/llvm/18/llvm/gnu-install-dirs.patch +++ b/pkgs/development/compilers/llvm/18/llvm/gnu-install-dirs.patch @@ -40,7 +40,7 @@ index 230620c37027..dd16cab1835e 100644 if (APPLE) set(_install_name_dir INSTALL_NAME_DIR "@rpath") - set(_install_rpath "@loader_path/../lib${LLVM_LIBDIR_SUFFIX}" ${extra_libdir}) -+ set(_install_rpath "@loader_path/../${CMAKE_INSTALL_LIBDIR}${LLVM_LIBDIR_SUFFIX}" ${extra_libdir}) ++ set(_install_rpath ${extra_libdir}) elseif(${CMAKE_SYSTEM_NAME} MATCHES "AIX" AND BUILD_SHARED_LIBS) # $ORIGIN is not interpreted at link time by aix ld. # Since BUILD_SHARED_LIBS is only recommended for use by developers, @@ -72,8 +72,8 @@ index 230620c37027..dd16cab1835e 100644 + # As noted in the differential above, an alternative solution is to have + # all rdeps of nixpkgs' LLVM (that use the AddLLVM.cmake machinery) set + # `CMAKE_INSTALL_RPATH`. -+ set(_build_rpath "\$ORIGIN/../${CMAKE_INSTALL_LIBDIR}${LLVM_LIBDIR_SUFFIX}" ${extra_libdir}) -+ set(_install_rpath "\$ORIGIN/../${CMAKE_INSTALL_LIBDIR}${LLVM_LIBDIR_SUFFIX}" ${extra_libdir}) ++ set(_build_rpath "\$ORIGIN/../lib${LLVM_LIBDIR_SUFFIX}" ${extra_libdir}) ++ set(_install_rpath ${extra_libdir}) if(${CMAKE_SYSTEM_NAME} MATCHES "(FreeBSD|DragonFly)") set_property(TARGET ${name} APPEND_STRING PROPERTY LINK_FLAGS " -Wl,-z,origin ") @@ -86,10 +86,10 @@ index 891c9e6d618c..8d963f3b0069 100644 if( APPLE ) - set(ocaml_rpath "@executable_path/../../../lib${LLVM_LIBDIR_SUFFIX}") -+ set(ocaml_rpath "@executable_path/../../../${CMAKE_INSTALL_LIBDIR}${LLVM_LIBDIR_SUFFIX}") ++ set(ocaml_rpath ${LLVM_LIBRARY_DIR}) elseif( UNIX ) - set(ocaml_rpath "\\$ORIGIN/../../../lib${LLVM_LIBDIR_SUFFIX}") -+ set(ocaml_rpath "\\$ORIGIN/../../../${CMAKE_INSTALL_LIBDIR}${LLVM_LIBDIR_SUFFIX}") ++ set(ocaml_rpath ${LLVM_LIBRARY_DIR}) endif() list(APPEND ocaml_flags "-ldopt" "-Wl,-rpath,${ocaml_rpath}") From e2a9e8c41268764f7789a6d97d2a7baa0dad82e4 Mon Sep 17 00:00:00 2001 From: Tristan Ross Date: Sat, 16 Mar 2024 20:16:06 -0700 Subject: [PATCH 048/116] llvmPackages_git: update to 19.0.0-unstable-2024-03-16 --- .../compilers/llvm/git/clang/default.nix | 3 -- .../llvm/git/clang/gnu-install-dirs.patch | 29 +---------------- .../llvm/git/compiler-rt/default.nix | 5 ++- .../git/compiler-rt/gnu-install-dirs.patch | 20 ------------ .../compilers/llvm/git/default.nix | 11 +++++-- .../compilers/llvm/git/libcxx/default.nix | 22 +++---------- .../compilers/llvm/git/libunwind/default.nix | 9 ------ .../compilers/llvm/git/lld/default.nix | 6 ++-- .../llvm/git/lld/gnu-install-dirs.patch | 31 ------------------- .../compilers/llvm/git/llvm/default.nix | 5 ++- .../git/llvm/gnu-install-dirs-polly.patch | 12 ++----- .../llvm/git/llvm/gnu-install-dirs.patch | 10 +++--- ...-script-runner-set-dyld-library-path.patch | 17 ++++------ .../compilers/llvm/git/openmp/default.nix | 1 - .../llvm/git/openmp/gnu-install-dirs.patch | 22 ------------- 15 files changed, 37 insertions(+), 166 deletions(-) delete mode 100644 pkgs/development/compilers/llvm/git/compiler-rt/gnu-install-dirs.patch delete mode 100644 pkgs/development/compilers/llvm/git/openmp/gnu-install-dirs.patch diff --git a/pkgs/development/compilers/llvm/git/clang/default.nix b/pkgs/development/compilers/llvm/git/clang/default.nix index 01b33c540ca2..1e777c6132e4 100644 --- a/pkgs/development/compilers/llvm/git/clang/default.nix +++ b/pkgs/development/compilers/llvm/git/clang/default.nix @@ -70,9 +70,6 @@ let postInstall = '' ln -sv $out/bin/clang $out/bin/cpp - mkdir -p $lib/lib/clang - mv $lib/lib/${lib.versions.major version} $lib/lib/clang/${lib.versions.major version} - # Move libclang to 'lib' output moveToOutput "lib/libclang.*" "$lib" moveToOutput "lib/libclang-cpp.*" "$lib" diff --git a/pkgs/development/compilers/llvm/git/clang/gnu-install-dirs.patch b/pkgs/development/compilers/llvm/git/clang/gnu-install-dirs.patch index cc8737f35343..9517df973ad0 100644 --- a/pkgs/development/compilers/llvm/git/clang/gnu-install-dirs.patch +++ b/pkgs/development/compilers/llvm/git/clang/gnu-install-dirs.patch @@ -1,30 +1,3 @@ -diff --git a/CMakeLists.txt b/CMakeLists.txt -index f7936d72e088..a362fa49b534 100644 ---- a/CMakeLists.txt -+++ b/CMakeLists.txt -@@ -31,7 +31,21 @@ if(CLANG_BUILT_STANDALONE) - find_package(LLVM REQUIRED HINTS "${LLVM_CMAKE_DIR}") - list(APPEND CMAKE_MODULE_PATH "${LLVM_DIR}") - -- # Turn into CACHE PATHs for overwritting -+ # We can't check LLVM_CONFIG here, because find_package(LLVM ...) also sets -+ # LLVM_CONFIG. -+ if (NOT LLVM_CONFIG_FOUND) -+ # Pull values from LLVMConfig.cmake. We can drop this once the llvm-config -+ # path is removed. -+ set(INCLUDE_DIRS ${LLVM_INCLUDE_DIRS}) -+ set(LLVM_OBJ_DIR "${LLVM_BINARY_DIR}") -+ # N.B. this is just a default value, the CACHE PATHs below can be overriden. -+ set(MAIN_SRC_DIR "${CMAKE_CURRENT_SOURCE_DIR}/../llvm") -+ set(TOOLS_BINARY_DIR "${LLVM_TOOLS_BINARY_DIR}") -+ set(LIBRARY_DIR "${LLVM_LIBRARY_DIR}") -+ else() -+ set(INCLUDE_DIRS "${LLVM_BINARY_DIR}/include" "${MAIN_INCLUDE_DIR}") -+ endif() -+ - set(LLVM_INCLUDE_DIRS ${LLVM_INCLUDE_DIRS} CACHE PATH "Path to llvm/include and any other header dirs needed") - set(LLVM_BINARY_DIR "${LLVM_BINARY_DIR}" CACHE PATH "Path to LLVM build tree") - set(LLVM_MAIN_SRC_DIR "${CMAKE_CURRENT_SOURCE_DIR}/../llvm" CACHE PATH "Path to LLVM source tree") diff --git a/cmake/modules/AddClang.cmake b/cmake/modules/AddClang.cmake index 75b0080f6715..c895b884cd27 100644 --- a/cmake/modules/AddClang.cmake @@ -48,7 +21,7 @@ index f2b0c5cddcbb..52f37fc368ce 100644 add_header_target("utility-resource-headers" ${utility_files}) get_clang_resource_dir(header_install_dir SUBDIR include) -+set(header_install_dir ${CMAKE_INSTALL_LIBDIR}${LLVM_LIBDIR_SUFFIX}/${CLANG_VERSION_MAJOR}/include) ++set(header_install_dir ${CMAKE_INSTALL_LIBDIR}${LLVM_LIBDIR_SUFFIX}/clang/${CLANG_VERSION_MAJOR}/include) ############################################################# # Install rules for the catch-all clang-resource-headers target diff --git a/pkgs/development/compilers/llvm/git/compiler-rt/default.nix b/pkgs/development/compilers/llvm/git/compiler-rt/default.nix index 51f4e95ef2b5..f51316beb570 100644 --- a/pkgs/development/compilers/llvm/git/compiler-rt/default.nix +++ b/pkgs/development/compilers/llvm/git/compiler-rt/default.nix @@ -87,12 +87,9 @@ stdenv.mkDerivation { patches = [ ./X86-support-extension.patch # Add support for i486 i586 i686 by reusing i386 config - ./gnu-install-dirs.patch # ld-wrapper dislikes `-rpath-link //nix/store`, so we normalize away the # extra `/`. ./normalize-var.patch - # Prevent a compilation error on darwin - ./darwin-targetconditionals.patch # See: https://github.com/NixOS/nixpkgs/pull/186575 ../../common/compiler-rt/darwin-plistbuddy-workaround.patch # See: https://github.com/NixOS/nixpkgs/pull/194634#discussion_r999829893 @@ -111,6 +108,8 @@ stdenv.mkDerivation { substituteInPlace cmake/config-ix.cmake \ --replace 'set(COMPILER_RT_HAS_TSAN TRUE)' 'set(COMPILER_RT_HAS_TSAN FALSE)' '' + lib.optionalString (useLLVM && !haveLibc) '' + substituteInPlace lib/builtins/aarch64/sme-libc-routines.c \ + --replace "" "" substituteInPlace lib/builtins/int_util.c \ --replace "#include " "" substituteInPlace lib/builtins/clear_cache.c \ diff --git a/pkgs/development/compilers/llvm/git/compiler-rt/gnu-install-dirs.patch b/pkgs/development/compilers/llvm/git/compiler-rt/gnu-install-dirs.patch deleted file mode 100644 index f3b1f63a7d71..000000000000 --- a/pkgs/development/compilers/llvm/git/compiler-rt/gnu-install-dirs.patch +++ /dev/null @@ -1,20 +0,0 @@ -diff --git a/cmake/base-config-ix.cmake b/cmake/base-config-ix.cmake -index 8a6219568b3f..30ee68a47ccf 100644 ---- a/cmake/base-config-ix.cmake -+++ b/cmake/base-config-ix.cmake -@@ -100,13 +100,13 @@ endif() - if(LLVM_ENABLE_PER_TARGET_RUNTIME_DIR AND NOT APPLE) - set(COMPILER_RT_OUTPUT_LIBRARY_DIR - ${COMPILER_RT_OUTPUT_DIR}/lib) -- extend_path(default_install_path "${COMPILER_RT_INSTALL_PATH}" lib) -+ extend_path(default_install_path "${COMPILER_RT_INSTALL_PATH}" "${CMAKE_INSTALL_LIBDIR}") - set(COMPILER_RT_INSTALL_LIBRARY_DIR "${default_install_path}" CACHE PATH - "Path where built compiler-rt libraries should be installed.") - else(LLVM_ENABLE_PER_TARGET_RUNTIME_DIR AND NOT APPLE) - set(COMPILER_RT_OUTPUT_LIBRARY_DIR - ${COMPILER_RT_OUTPUT_DIR}/lib/${COMPILER_RT_OS_DIR}) -- extend_path(default_install_path "${COMPILER_RT_INSTALL_PATH}" "lib/${COMPILER_RT_OS_DIR}") -+ extend_path(default_install_path "${COMPILER_RT_INSTALL_PATH}" "${CMAKE_INSTALL_LIBDIR}/${COMPILER_RT_OS_DIR}") - set(COMPILER_RT_INSTALL_LIBRARY_DIR "${default_install_path}" CACHE PATH - "Path where built compiler-rt libraries should be installed.") - endif() diff --git a/pkgs/development/compilers/llvm/git/default.nix b/pkgs/development/compilers/llvm/git/default.nix index 6ebb2ea9fcc2..80cff85372d0 100644 --- a/pkgs/development/compilers/llvm/git/default.nix +++ b/pkgs/development/compilers/llvm/git/default.nix @@ -17,15 +17,20 @@ else pkgs.bintools , darwin # LLVM release information; specify one of these but not both: -, gitRelease ? null +, gitRelease ? { + version = "19.0.0-git"; + rev = "65058a8d732c3c41664a4dad1a1ae2a504d5c98e"; + rev-version = "19.0.0-unstable-2024-03-16"; + sha256 = "sha256-xV33kx/8OZ2KLtaz25RmudDrlIX7nScauTykf87jyTE="; +} # i.e.: # { # version = /* i.e. "15.0.0" */; # rev = /* commit SHA */; - # rev-version = /* human readable version; i.e. "unstable-2022-26-07" */; + # rev-version = /* human readable version; i.e. "15.0.0-unstable-2022-07-26" */; # sha256 = /* checksum for this release, can omit if specifying your own `monorepoSrc` */; # } -, officialRelease ? { version = "18.1.0-rc4"; sha256 = "sha256-fVpwewbjoPMPslIEZ+WAtaQ+YKc0XWGl8EbP/TbQb8o="; } +, officialRelease ? null # i.e.: # { # version = /* i.e. "15.0.0" */; diff --git a/pkgs/development/compilers/llvm/git/libcxx/default.nix b/pkgs/development/compilers/llvm/git/libcxx/default.nix index 4e3404dbe194..d6c304c0b476 100644 --- a/pkgs/development/compilers/llvm/git/libcxx/default.nix +++ b/pkgs/development/compilers/llvm/git/libcxx/default.nix @@ -1,5 +1,5 @@ { lib, stdenv, llvm_meta -, monorepoSrc, runCommand, fetchpatch +, monorepoSrc, runCommand , cmake, lndir, ninja, python3, fixDarwinDylibNames, version , cxxabi ? if stdenv.hostPlatform.isFreeBSD then libcxxrt else null , libcxxrt, libunwind @@ -19,11 +19,11 @@ let # Note: useLLVM is likely false for Darwin but true under pkgsLLVM useLLVM = stdenv.hostPlatform.useLLVM or false; - cxxabiCMakeFlags = lib.optionals (useLLVM && !stdenv.hostPlatform.isWasm) [ - "-DLIBCXXABI_USE_COMPILER_RT=ON" - "-DLIBCXXABI_USE_LLVM_UNWINDER=ON" - ] ++ lib.optionals (lib.versionAtLeast version "18" && !(useLLVM && !stdenv.hostPlatform.isWasm)) [ + cxxabiCMakeFlags = [ "-DLIBCXXABI_USE_LLVM_UNWINDER=OFF" + ] ++ lib.optionals (useLLVM && !stdenv.hostPlatform.isWasm) [ + "-DLIBCXXABI_ADDITIONAL_LIBRARIES=unwind" + "-DLIBCXXABI_USE_COMPILER_RT=ON" ] ++ lib.optionals stdenv.hostPlatform.isWasm [ "-DLIBCXXABI_ENABLE_THREADS=OFF" "-DLIBCXXABI_ENABLE_EXCEPTIONS=OFF" @@ -87,18 +87,6 @@ stdenv.mkDerivation rec { patches = lib.optionals (stdenv.isDarwin && lib.versionOlder stdenv.hostPlatform.darwinMinVersion "10.13") [ # https://github.com/llvm/llvm-project/issues/64226 ./0001-darwin-10.12-mbstate_t-fix.patch - ] ++ lib.optionals (cxxabi == null && lib.versionAtLeast version "18") [ - # Allow building libcxxabi alone when using LLVM unwinder - (fetchpatch { - url = "https://github.com/llvm/llvm-project/commit/77610dd10454e87bb387040d2b51100a17ac5755.patch"; - revert = true; - hash = "sha256-jFbC3vBY3nKfjknJ7UzaPyoy0iSYdD3+jUmOFeOaVcA="; - }) - (fetchpatch { - url = "https://github.com/llvm/llvm-project/commit/48e5b5ea92674ded69b998cf35724d9012c0f57d.patch"; - revert = true; - hash = "sha256-WN63L4T3GxVozPZb6kx21AgNe4rwwSUOeeryIGsvQYY="; - }) ]; postPatch = '' diff --git a/pkgs/development/compilers/llvm/git/libunwind/default.nix b/pkgs/development/compilers/llvm/git/libunwind/default.nix index a3c8e2594f5a..e67823ffb85c 100644 --- a/pkgs/development/compilers/llvm/git/libunwind/default.nix +++ b/pkgs/development/compilers/llvm/git/libunwind/default.nix @@ -27,15 +27,6 @@ stdenv.mkDerivation rec { sourceRoot = "${src.name}/runtimes"; - prePatch = '' - cd ../${pname} - chmod -R u+w . - ''; - - postPatch = '' - cd ../runtimes - ''; - postInstall = lib.optionalString (enableShared && !stdenv.hostPlatform.isDarwin) '' # libcxxabi wants to link to libunwind_shared.so (?). ln -s $out/lib/libunwind.so $out/lib/libunwind_shared.so diff --git a/pkgs/development/compilers/llvm/git/lld/default.nix b/pkgs/development/compilers/llvm/git/lld/default.nix index cc18aee76a44..24ff0933dd1d 100644 --- a/pkgs/development/compilers/llvm/git/lld/default.nix +++ b/pkgs/development/compilers/llvm/git/lld/default.nix @@ -24,13 +24,13 @@ stdenv.mkDerivation rec { sourceRoot = "${src.name}/${pname}"; + nativeBuildInputs = [ cmake ninja ]; + buildInputs = [ libllvm libxml2 ]; + patches = [ ./gnu-install-dirs.patch ]; - nativeBuildInputs = [ cmake ninja ]; - buildInputs = [ libllvm libxml2 ]; - cmakeFlags = [ "-DLLD_INSTALL_PACKAGE_DIR=${placeholder "dev"}/lib/cmake/lld" ] ++ lib.optionals (stdenv.hostPlatform != stdenv.buildPlatform) [ diff --git a/pkgs/development/compilers/llvm/git/lld/gnu-install-dirs.patch b/pkgs/development/compilers/llvm/git/lld/gnu-install-dirs.patch index 86e76f4a16d8..6c73a240ab6d 100644 --- a/pkgs/development/compilers/llvm/git/lld/gnu-install-dirs.patch +++ b/pkgs/development/compilers/llvm/git/lld/gnu-install-dirs.patch @@ -1,34 +1,3 @@ -diff --git a/CMakeLists.txt b/CMakeLists.txt -index 3d6225646fe6..9b5d0b15af13 100644 ---- a/CMakeLists.txt -+++ b/CMakeLists.txt -@@ -33,10 +33,22 @@ if(LLD_BUILT_STANDALONE) - find_package(LLVM REQUIRED HINTS "${LLVM_CMAKE_DIR}") - list(APPEND CMAKE_MODULE_PATH "${LLVM_DIR}") - -- # Turn into CACHE PATHs for overwriting -- set(LLVM_INCLUDE_DIRS ${LLVM_INCLUDE_DIRS} CACHE PATH "Path to llvm/include and any other header dirs needed") -- set(LLVM_BINARY_DIR "${LLVM_BINARY_DIR}" CACHE PATH "Path to LLVM build tree") -- set(LLVM_MAIN_SRC_DIR "${CMAKE_CURRENT_SOURCE_DIR}/../llvm" CACHE PATH "Path to LLVM source tree") -+ # We can't check LLVM_CONFIG here, because find_package(LLVM ...) also sets -+ # LLVM_CONFIG. -+ if (NOT LLVM_CONFIG_FOUND) -+ # Pull values from LLVMConfig.cmake. We can drop this once the llvm-config -+ # path is removed. -+ set(INCLUDE_DIRS ${LLVM_INCLUDE_DIRS}) -+ set(LLVM_OBJ_DIR "${LLVM_BINARY_DIR}") -+ # N.B. this is just a default value, the CACHE PATHs below can be overridden. -+ set(MAIN_SRC_DIR "${CMAKE_CURRENT_SOURCE_DIR}/../llvm") -+ else() -+ set(INCLUDE_DIRS "${LLVM_BINARY_DIR}/include" "${MAIN_INCLUDE_DIR}") -+ endif() -+ -+ set(LLVM_INCLUDE_DIRS ${INCLUDE_DIRS} CACHE PATH "Path to llvm/include and any other header dirs needed") -+ set(LLVM_BINARY_DIR "${LLVM_OBJ_ROOT}" CACHE PATH "Path to LLVM build tree") -+ set(LLVM_MAIN_SRC_DIR "${MAIN_SRC_DIR}" CACHE PATH "Path to LLVM source tree") - - find_program(LLVM_TABLEGEN_EXE "llvm-tblgen" ${LLVM_TOOLS_BINARY_DIR} - NO_DEFAULT_PATH) diff --git a/cmake/modules/AddLLD.cmake b/cmake/modules/AddLLD.cmake index d3924f7243d4..42a7cd62281c 100644 --- a/cmake/modules/AddLLD.cmake diff --git a/pkgs/development/compilers/llvm/git/llvm/default.nix b/pkgs/development/compilers/llvm/git/llvm/default.nix index b8715228ab1c..670171a707f9 100644 --- a/pkgs/development/compilers/llvm/git/llvm/default.nix +++ b/pkgs/development/compilers/llvm/git/llvm/default.nix @@ -179,6 +179,10 @@ stdenv.mkDerivation (rec { substituteInPlace test/ExecutionEngine/Interpreter/intrinsics.ll \ --replace "%roundeven32 = call float @llvm.roundeven.f32(float 0.000000e+00)" "" \ --replace "%roundeven64 = call double @llvm.roundeven.f64(double 0.000000e+00)" "" + + # fails when run in sandbox + substituteInPlace unittests/Support/VirtualFileSystemTest.cpp \ + --replace "PhysicalFileSystemWorkingDirFailure" "DISABLED_PhysicalFileSystemWorkingDirFailure" '' + optionalString (stdenv.isDarwin && stdenv.hostPlatform.isx86) '' # This test fails on darwin x86_64 because `sw_vers` reports a different # macOS version than what LLVM finds by reading @@ -382,7 +386,6 @@ stdenv.mkDerivation (rec { --replace 'set(LLVM_BINARY_DIR "''${LLVM_INSTALL_PREFIX}")' 'set(LLVM_BINARY_DIR "'"$lib"'")' '' + optionalString (stdenv.isDarwin && enableSharedLibraries) '' - ln -s $lib/lib/libLLVM.dylib $lib/lib/libLLVM-${shortVersion}.dylib ln -s $lib/lib/libLLVM.dylib $lib/lib/libLLVM-${release_version}.dylib '' + optionalString (stdenv.buildPlatform != stdenv.hostPlatform) '' diff --git a/pkgs/development/compilers/llvm/git/llvm/gnu-install-dirs-polly.patch b/pkgs/development/compilers/llvm/git/llvm/gnu-install-dirs-polly.patch index 442ebddad3f6..6a359bdbefde 100644 --- a/pkgs/development/compilers/llvm/git/llvm/gnu-install-dirs-polly.patch +++ b/pkgs/development/compilers/llvm/git/llvm/gnu-install-dirs-polly.patch @@ -1,12 +1,6 @@ -This is the one remaining Polly install dirs related change that hasn't made it -into upstream yet; previously this patch file also included: -https://reviews.llvm.org/D117541 - -diff --git a/tools/polly/cmake/polly_macros.cmake b/tools/polly/cmake/polly_macros.cmake -index 518a09b45a42..bd9d6f5542ad 100644 ---- a/tools/polly/cmake/polly_macros.cmake -+++ b/tools/polly/cmake/polly_macros.cmake -@@ -45,8 +45,8 @@ macro(add_polly_library name) +--- a/tools/polly/cmake/polly_macros.cmake 2024-03-15 17:36:20.550893344 -0700 ++++ b/tools/polly/cmake/polly_macros.cmake 2024-03-15 17:37:06.277332960 -0700 +@@ -45,8 +45,8 @@ install(TARGETS ${name} COMPONENT ${name} EXPORT LLVMExports diff --git a/pkgs/development/compilers/llvm/git/llvm/gnu-install-dirs.patch b/pkgs/development/compilers/llvm/git/llvm/gnu-install-dirs.patch index e2122ebf603d..8b89839490ba 100644 --- a/pkgs/development/compilers/llvm/git/llvm/gnu-install-dirs.patch +++ b/pkgs/development/compilers/llvm/git/llvm/gnu-install-dirs.patch @@ -40,7 +40,7 @@ index 230620c37027..dd16cab1835e 100644 if (APPLE) set(_install_name_dir INSTALL_NAME_DIR "@rpath") - set(_install_rpath "@loader_path/../lib${LLVM_LIBDIR_SUFFIX}" ${extra_libdir}) -+ set(_install_rpath "@loader_path/../${CMAKE_INSTALL_LIBDIR}${LLVM_LIBDIR_SUFFIX}" ${extra_libdir}) ++ set(_install_rpath ${extra_libdir}) elseif(${CMAKE_SYSTEM_NAME} MATCHES "AIX" AND BUILD_SHARED_LIBS) # $ORIGIN is not interpreted at link time by aix ld. # Since BUILD_SHARED_LIBS is only recommended for use by developers, @@ -72,8 +72,8 @@ index 230620c37027..dd16cab1835e 100644 + # As noted in the differential above, an alternative solution is to have + # all rdeps of nixpkgs' LLVM (that use the AddLLVM.cmake machinery) set + # `CMAKE_INSTALL_RPATH`. -+ set(_build_rpath "\$ORIGIN/../${CMAKE_INSTALL_LIBDIR}${LLVM_LIBDIR_SUFFIX}" ${extra_libdir}) -+ set(_install_rpath "\$ORIGIN/../${CMAKE_INSTALL_LIBDIR}${LLVM_LIBDIR_SUFFIX}" ${extra_libdir}) ++ set(_build_rpath "\$ORIGIN/../lib${LLVM_LIBDIR_SUFFIX}" ${extra_libdir}) ++ set(_install_rpath ${extra_libdir}) if(${CMAKE_SYSTEM_NAME} MATCHES "(FreeBSD|DragonFly)") set_property(TARGET ${name} APPEND_STRING PROPERTY LINK_FLAGS " -Wl,-z,origin ") @@ -86,10 +86,10 @@ index 891c9e6d618c..8d963f3b0069 100644 if( APPLE ) - set(ocaml_rpath "@executable_path/../../../lib${LLVM_LIBDIR_SUFFIX}") -+ set(ocaml_rpath "@executable_path/../../../${CMAKE_INSTALL_LIBDIR}${LLVM_LIBDIR_SUFFIX}") ++ set(ocaml_rpath ${LLVM_LIBRARY_DIR}) elseif( UNIX ) - set(ocaml_rpath "\\$ORIGIN/../../../lib${LLVM_LIBDIR_SUFFIX}") -+ set(ocaml_rpath "\\$ORIGIN/../../../${CMAKE_INSTALL_LIBDIR}${LLVM_LIBDIR_SUFFIX}") ++ set(ocaml_rpath ${LLVM_LIBRARY_DIR}) endif() list(APPEND ocaml_flags "-ldopt" "-Wl,-rpath,${ocaml_rpath}") diff --git a/pkgs/development/compilers/llvm/git/llvm/lit-shell-script-runner-set-dyld-library-path.patch b/pkgs/development/compilers/llvm/git/llvm/lit-shell-script-runner-set-dyld-library-path.patch index 82b7b21c55fb..e4f049f4b177 100644 --- a/pkgs/development/compilers/llvm/git/llvm/lit-shell-script-runner-set-dyld-library-path.patch +++ b/pkgs/development/compilers/llvm/git/llvm/lit-shell-script-runner-set-dyld-library-path.patch @@ -1,17 +1,12 @@ -diff --git a/utils/lit/lit/TestRunner.py b/utils/lit/lit/TestRunner.py -index 0242e0b75af3..d732011306f7 100644 ---- a/utils/lit/lit/TestRunner.py -+++ b/utils/lit/lit/TestRunner.py -@@ -1029,6 +1029,12 @@ def executeScript(test, litConfig, tmpBase, commands, cwd): - f.write('@echo off\n') - f.write('\n@if %ERRORLEVEL% NEQ 0 EXIT\n'.join(commands)) +--- a/utils/lit/lit/TestRunner.py 2024-03-15 17:27:53.170780798 -0700 ++++ b/utils/lit/lit/TestRunner.py 2024-03-15 17:28:43.277447791 -0700 +@@ -1183,6 +1183,9 @@ + f.write("@echo on\n") + f.write("\n@if %ERRORLEVEL% NEQ 0 EXIT\n".join(commands)) else: -+ # This env var is *purged* when invoking subprocesses so we have to -+ # manually set it from within the bash script in order for the commands -+ # in run lines to see this var: + if "DYLD_LIBRARY_PATH" in test.config.environment: + f.write(f'export DYLD_LIBRARY_PATH="{test.config.environment["DYLD_LIBRARY_PATH"]}"\n') + for i, ln in enumerate(commands): - match = re.match(kPdbgRegex, ln) + match = re.fullmatch(kPdbgRegex, ln) if match: diff --git a/pkgs/development/compilers/llvm/git/openmp/default.nix b/pkgs/development/compilers/llvm/git/openmp/default.nix index d51335436ad2..e1c3c2379af2 100644 --- a/pkgs/development/compilers/llvm/git/openmp/default.nix +++ b/pkgs/development/compilers/llvm/git/openmp/default.nix @@ -29,7 +29,6 @@ stdenv.mkDerivation rec { patches = [ ./fix-find-tool.patch - ./gnu-install-dirs.patch ./run-lit-directly.patch ]; diff --git a/pkgs/development/compilers/llvm/git/openmp/gnu-install-dirs.patch b/pkgs/development/compilers/llvm/git/openmp/gnu-install-dirs.patch deleted file mode 100644 index 0d0d4130c761..000000000000 --- a/pkgs/development/compilers/llvm/git/openmp/gnu-install-dirs.patch +++ /dev/null @@ -1,22 +0,0 @@ -diff --git a/CMakeLists.txt b/CMakeLists.txt -index b6ddbe90516d..311ab1d50e7f 100644 ---- a/CMakeLists.txt -+++ b/CMakeLists.txt -@@ -29,7 +29,7 @@ if (OPENMP_STANDALONE_BUILD) - set(OPENMP_LIBDIR_SUFFIX "" CACHE STRING - "Suffix of lib installation directory, e.g. 64 => lib64") - # Do not use OPENMP_LIBDIR_SUFFIX directly, use OPENMP_INSTALL_LIBDIR. -- set(OPENMP_INSTALL_LIBDIR "lib${OPENMP_LIBDIR_SUFFIX}" CACHE STRING -+ set(OPENMP_INSTALL_LIBDIR "${CMAKE_INSTALL_LIBDIR}${OPENMP_LIBDIR_SUFFIX}" CACHE STRING - "Path where built OpenMP libraries should be installed.") - - # Group test settings. -@@ -47,7 +47,7 @@ if (OPENMP_STANDALONE_BUILD) - else() - set(OPENMP_ENABLE_WERROR ${LLVM_ENABLE_WERROR}) - # If building in tree, we honor the same install suffix LLVM uses. -- set(OPENMP_INSTALL_LIBDIR "lib${LLVM_LIBDIR_SUFFIX}" CACHE STRING -+ set(OPENMP_INSTALL_LIBDIR "${CMAKE_INSTALL_LIBDIR}${LLVM_LIBDIR_SUFFIX}" CACHE STRING - "Path where built OpenMP libraries should be installed.") - - if (NOT MSVC) From c6c3e07cfc59e76546a7c27010a2de6704b3931d Mon Sep 17 00:00:00 2001 From: Tristan Ross Date: Tue, 19 Mar 2024 18:45:10 -0700 Subject: [PATCH 049/116] teams.llvm: add RossComputerGuy to team --- maintainers/team-list.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/maintainers/team-list.nix b/maintainers/team-list.nix index 0f481ed3eb9d..7a695f4fbc27 100644 --- a/maintainers/team-list.nix +++ b/maintainers/team-list.nix @@ -560,6 +560,7 @@ with lib.maintainers; { lovek323 qyliss raitobezarius + RossComputerGuy rrbutani sternenseemann ]; From 19280a7ce470e2cfd2418d90939c48d204425384 Mon Sep 17 00:00:00 2001 From: Lin Yinfeng Date: Sun, 11 Feb 2024 12:56:13 +0800 Subject: [PATCH 050/116] shim-unsigned: install all targets as data --- pkgs/tools/misc/shim/default.nix | 24 +++++++++++++----------- 1 file changed, 13 insertions(+), 11 deletions(-) diff --git a/pkgs/tools/misc/shim/default.nix b/pkgs/tools/misc/shim/default.nix index 0b8f6dbe5a9f..e4220cf5cc8e 100644 --- a/pkgs/tools/misc/shim/default.nix +++ b/pkgs/tools/misc/shim/default.nix @@ -6,9 +6,9 @@ let inherit (stdenv.hostPlatform) system; throwSystem = throw "Unsupported system: ${system}"; - target = { - x86_64-linux = "shimx64.efi"; - aarch64-linux = "shimaa64.efi"; + archSuffix = { + x86_64-linux = "x64"; + aarch64-linux = "aa64"; }.${system} or throwSystem; in stdenv.mkDerivation rec { pname = "shim"; @@ -28,19 +28,21 @@ in stdenv.mkDerivation rec { makeFlags = lib.optional (vendorCertFile != null) "VENDOR_CERT_FILE=${vendorCertFile}" - ++ lib.optional (defaultLoader != null) "DEFAULT_LOADER=${defaultLoader}" - ++ [ target ]; + ++ lib.optional (defaultLoader != null) "DEFAULT_LOADER=${defaultLoader}"; - installPhase = '' - mkdir -p $out/share/shim - install -m 644 ${target} $out/share/shim/ - ''; + installTargets = ["install-as-data"]; + installFlags = [ + "DATATARGETDIR=$(out)/share/shim" + ]; passthru = { - # Expose the target file name so that consumers + # Expose the arch suffix and target file names so that consumers # (e.g. infrastructure for signing this shim) don't need to # duplicate the logic from here - inherit target; + inherit archSuffix; + target = "shim${archSuffix}.efi"; + mokManagerTarget = "mm${archSuffix}.efi"; + fallbackTarget = "fb${archSuffix}.efi"; }; meta = with lib; { From 0a0e9ec3e91f0884601f93325582d6b09a3b7be4 Mon Sep 17 00:00:00 2001 From: "R. Ryantm" Date: Thu, 28 Mar 2024 03:01:59 +0000 Subject: [PATCH 051/116] python312Packages.awswrangler: 3.7.1 -> 3.7.2 --- pkgs/development/python-modules/awswrangler/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/development/python-modules/awswrangler/default.nix b/pkgs/development/python-modules/awswrangler/default.nix index 7cd356214d56..4fd372e8eb7a 100644 --- a/pkgs/development/python-modules/awswrangler/default.nix +++ b/pkgs/development/python-modules/awswrangler/default.nix @@ -25,7 +25,7 @@ buildPythonPackage rec { pname = "awswrangler"; - version = "3.7.1"; + version = "3.7.2"; format = "pyproject"; disabled = pythonOlder "3.8"; @@ -34,7 +34,7 @@ buildPythonPackage rec { owner = "aws"; repo = "aws-sdk-pandas"; rev = "refs/tags/${version}"; - hash = "sha256-6HocnnPG/Id+49NN3WqnSYEnsijA2r13WM2NJIxVwFs="; + hash = "sha256-1eb2oTiRNxA2XTpkScA5WJutN5P6FX96jC4Ra9VdonI="; }; nativeBuildInputs = [ From e86bae7be28bb19c67aabc6179dfffb5b2e3405a Mon Sep 17 00:00:00 2001 From: "R. Ryantm" Date: Thu, 28 Mar 2024 06:48:44 +0000 Subject: [PATCH 052/116] flarectl: 0.91.0 -> 0.92.0 --- pkgs/by-name/fl/flarectl/package.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/by-name/fl/flarectl/package.nix b/pkgs/by-name/fl/flarectl/package.nix index a907ce7ae5c7..e6497b05f91b 100644 --- a/pkgs/by-name/fl/flarectl/package.nix +++ b/pkgs/by-name/fl/flarectl/package.nix @@ -5,13 +5,13 @@ buildGoModule rec { pname = "flarectl"; - version = "0.91.0"; + version = "0.92.0"; src = fetchFromGitHub { owner = "cloudflare"; repo = "cloudflare-go"; rev = "v${version}"; - hash = "sha256-T9Xv7EDQfaGOIryvH8TVxrOcIrJWUEsnZ7PpU9Lmv3Y="; + hash = "sha256-nmDW8ALhyp5McnX86JN51kJSo0bUvwTsHnQkfKSxJMM="; }; vendorHash = "sha256-F1fwzzBg60E7B9iPV0gziGB3WE1tcZ/6nMpnEyTjV1g="; From 141c2c99efde97fd3507552c5ad1a20dd9b0b770 Mon Sep 17 00:00:00 2001 From: "R. Ryantm" Date: Thu, 28 Mar 2024 06:56:12 +0000 Subject: [PATCH 053/116] libretro.play: unstable-2024-03-21 -> unstable-2024-03-26 --- pkgs/applications/emulators/retroarch/hashes.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pkgs/applications/emulators/retroarch/hashes.json b/pkgs/applications/emulators/retroarch/hashes.json index 459109e9247b..4935c46bcc41 100644 --- a/pkgs/applications/emulators/retroarch/hashes.json +++ b/pkgs/applications/emulators/retroarch/hashes.json @@ -651,11 +651,11 @@ "src": { "owner": "jpd002", "repo": "Play-", - "rev": "6e9fa384d6e94f552ba56c3233b38770c41b46af", - "hash": "sha256-KplGpF0d821ms/UA0GVtDVgdFQR6Xbl844GVPUId77Q=", + "rev": "08db12cefaad02eaa5265283e3ad0b51eeb8a633", + "hash": "sha256-1wO/iBnyGnBx+vIlnqaihAVrth3shCvogEX9TC59GaY=", "fetchSubmodules": true }, - "version": "unstable-2024-03-21" + "version": "unstable-2024-03-26" }, "ppsspp": { "fetcher": "fetchFromGitHub", From 63a052eb57590c79a94372af7bc329e698dec5ba Mon Sep 17 00:00:00 2001 From: Paul Meyer <49727155+katexochen@users.noreply.github.com> Date: Sat, 30 Dec 2023 20:25:39 +0100 Subject: [PATCH 054/116] buildGoModule: warn if `-trimpath` or `-mod=` is used in GOFLAGS --- pkgs/build-support/go/module.nix | 10 ++++++++-- pkgs/build-support/go/package.nix | 7 +++++-- 2 files changed, 13 insertions(+), 4 deletions(-) diff --git a/pkgs/build-support/go/module.nix b/pkgs/build-support/go/module.nix index 153b675d48ae..7d2960f699dc 100644 --- a/pkgs/build-support/go/module.nix +++ b/pkgs/build-support/go/module.nix @@ -41,6 +41,8 @@ , ldflags ? [ ] +, GOFLAGS ? [ ] + # needed for buildFlags{,Array} warning , buildFlags ? "" , buildFlagsArray ? "" @@ -153,11 +155,13 @@ let inherit (go) GOOS GOARCH; - GOFLAGS = lib.optionals (!proxyVendor) [ "-mod=vendor" ] ++ lib.optionals (!allowGoReference) [ "-trimpath" ]; + GOFLAGS = GOFLAGS + ++ lib.optional (!proxyVendor) "-mod=vendor" + ++ lib.optional (!allowGoReference) "-trimpath"; inherit CGO_ENABLED enableParallelBuilding GO111MODULE GOTOOLCHAIN; # If not set to an explicit value, set the buildid empty for reproducibility. - ldflags = ldflags ++ lib.optionals (!lib.any (lib.hasPrefix "-buildid=") ldflags) [ "-buildid=" ]; + ldflags = ldflags ++ lib.optional (!lib.any (lib.hasPrefix "-buildid=") ldflags) "-buildid="; configurePhase = args.configurePhase or ('' runHook preConfigure @@ -307,4 +311,6 @@ lib.warnIf (args' ? vendorSha256) "`vendorSha256` is deprecated. Use `vendorHash lib.warnIf (buildFlags != "" || buildFlagsArray != "") "Use the `ldflags` and/or `tags` attributes instead of `buildFlags`/`buildFlagsArray`" lib.warnIf (builtins.elem "-buildid=" ldflags) "`-buildid=` is set by default as ldflag by buildGoModule" +lib.warnIf (builtins.elem "-trimpath" GOFLAGS) "`-trimpath` is added by default to GOFLAGS by buildGoModule when allowGoReference isn't set to true" +lib.warnIf (lib.any (lib.hasPrefix "-mod=") GOFLAGS) "use `proxyVendor` to control Go module/vendor behavior instead of setting `-mod=` in GOFLAGS" package diff --git a/pkgs/build-support/go/package.nix b/pkgs/build-support/go/package.nix index 8ca5ca0dca01..94a459c267f3 100644 --- a/pkgs/build-support/go/package.nix +++ b/pkgs/build-support/go/package.nix @@ -39,6 +39,8 @@ , ldflags ? [ ] +, GOFLAGS ? [ ] + # needed for buildFlags{,Array} warning , buildFlags ? "" , buildFlagsArray ? "" @@ -89,12 +91,12 @@ let GO111MODULE = "off"; GOTOOLCHAIN = "local"; - GOFLAGS = lib.optionals (!allowGoReference) [ "-trimpath" ]; + GOFLAGS = GOFLAGS ++ lib.optional (!allowGoReference) "-trimpath" ; GOARM = toString (lib.intersectLists [(stdenv.hostPlatform.parsed.cpu.version or "")] ["5" "6" "7"]); # If not set to an explicit value, set the buildid empty for reproducibility. - ldflags = ldflags ++ lib.optionals (!lib.any (lib.hasPrefix "-buildid=") ldflags) [ "-buildid=" ]; + ldflags = ldflags ++ lib.optional (!lib.any (lib.hasPrefix "-buildid=") ldflags) "-buildid="; configurePhase = args.configurePhase or ('' runHook preConfigure @@ -286,4 +288,5 @@ in lib.warnIf (buildFlags != "" || buildFlagsArray != "") "Use the `ldflags` and/or `tags` attributes instead of `buildFlags`/`buildFlagsArray`" lib.warnIf (builtins.elem "-buildid=" ldflags) "`-buildid=` is set by default as ldflag by buildGoModule" +lib.warnIf (builtins.elem "-trimpath" GOFLAGS) "`-trimpath` is added by default to GOFLAGS by buildGoModule when allowGoReference isn't set to true" package From fba7582947e1e36d013997885770e2eb19fb8776 Mon Sep 17 00:00:00 2001 From: Paul Meyer <49727155+katexochen@users.noreply.github.com> Date: Sat, 30 Dec 2023 20:27:34 +0100 Subject: [PATCH 055/116] treewide: remove explicit `-trimpath` from Go pkgs --- pkgs/by-name/gc/gcs/package.nix | 2 +- pkgs/by-name/gt/gtrash/package.nix | 1 - pkgs/by-name/up/uplosi/package.nix | 1 - pkgs/development/tools/language-servers/jq-lsp/default.nix | 2 +- pkgs/tools/security/slsa-verifier/default.nix | 2 -- pkgs/tools/video/go2rtc/default.nix | 4 ---- 6 files changed, 2 insertions(+), 10 deletions(-) diff --git a/pkgs/by-name/gc/gcs/package.nix b/pkgs/by-name/gc/gcs/package.nix index 406db2018624..1493836491af 100644 --- a/pkgs/by-name/gc/gcs/package.nix +++ b/pkgs/by-name/gc/gcs/package.nix @@ -56,7 +56,7 @@ buildGoModule rec { ]; # flags are based on https://github.com/richardwilkes/gcs/blob/master/build.sh - flags = [ "-a -trimpath" ]; + flags = [ "-a" ]; ldflags = [ "-s" "-w" "-X github.com/richardwilkes/toolbox/cmdline.AppVersion=${version}" ]; installPhase = '' diff --git a/pkgs/by-name/gt/gtrash/package.nix b/pkgs/by-name/gt/gtrash/package.nix index aee737aa83df..fb354bada06c 100644 --- a/pkgs/by-name/gt/gtrash/package.nix +++ b/pkgs/by-name/gt/gtrash/package.nix @@ -23,7 +23,6 @@ buildGoModule rec { doCheck = false; CGO_ENABLED = 0; - GOFLAGS = [ "-trimpath" ]; ldflags = [ "-s" "-w" diff --git a/pkgs/by-name/up/uplosi/package.nix b/pkgs/by-name/up/uplosi/package.nix index 57d7fab92ec7..101f29e85be9 100644 --- a/pkgs/by-name/up/uplosi/package.nix +++ b/pkgs/by-name/up/uplosi/package.nix @@ -18,7 +18,6 @@ buildGoModule rec { CGO_ENABLED = "0"; ldflags = [ "-s" "-w" "-X main.version=${version}" ]; - flags = [ "-trimpath" ]; nativeBuildInputs = [ installShellFiles ]; diff --git a/pkgs/development/tools/language-servers/jq-lsp/default.nix b/pkgs/development/tools/language-servers/jq-lsp/default.nix index 13f852790662..6952bea00d63 100644 --- a/pkgs/development/tools/language-servers/jq-lsp/default.nix +++ b/pkgs/development/tools/language-servers/jq-lsp/default.nix @@ -18,7 +18,7 @@ buildGoModule rec { # based on https://github.com/wader/jq-lsp/blob/master/.goreleaser.yml CGO_ENABLED = 0; - GOFLAGS = [ "-trimpath" ]; + ldflags = [ "-s" "-w" diff --git a/pkgs/tools/security/slsa-verifier/default.nix b/pkgs/tools/security/slsa-verifier/default.nix index 1ed192c732a1..d3dc65ba1523 100644 --- a/pkgs/tools/security/slsa-verifier/default.nix +++ b/pkgs/tools/security/slsa-verifier/default.nix @@ -17,8 +17,6 @@ buildGoModule rec { vendorHash = "sha256-rCGj2o59US2t/ckqXirEDgYn9dGvVSzMVcFEZosasBc="; CGO_ENABLED = 0; - GO111MODULE = "on"; - GOFLAGS = "-trimpath"; subPackages = [ "cli/slsa-verifier" ]; diff --git a/pkgs/tools/video/go2rtc/default.nix b/pkgs/tools/video/go2rtc/default.nix index 8ee378d6c264..12bb7f2b0b0f 100644 --- a/pkgs/tools/video/go2rtc/default.nix +++ b/pkgs/tools/video/go2rtc/default.nix @@ -16,10 +16,6 @@ buildGoModule rec { vendorHash = "sha256-KEW3ykEZvL6y1VacDIqtHW9B2RLHlHC29aqJjkEnRqQ="; - buildFlagArrays = [ - "-trimpath" - ]; - CGO_ENABLED = 0; ldflags = [ From 3179753c28f469c77d73f0184eff2bc2972f7ba9 Mon Sep 17 00:00:00 2001 From: "R. Ryantm" Date: Thu, 28 Mar 2024 07:06:01 +0000 Subject: [PATCH 056/116] libretro.picodrive: unstable-2024-01-23 -> unstable-2024-03-26 --- pkgs/applications/emulators/retroarch/hashes.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pkgs/applications/emulators/retroarch/hashes.json b/pkgs/applications/emulators/retroarch/hashes.json index 459109e9247b..2a40ecf742c1 100644 --- a/pkgs/applications/emulators/retroarch/hashes.json +++ b/pkgs/applications/emulators/retroarch/hashes.json @@ -640,11 +640,11 @@ "src": { "owner": "libretro", "repo": "picodrive", - "rev": "d907d65692a45e126d0c7d6685cc8792b52bc577", - "hash": "sha256-CJJcWVueg3dbBT4r6W1y8Qj7iRwH7PupvFp+CKEII7o=", + "rev": "ad93670449a28825d4b2cebf2eeff72cf03377a9", + "hash": "sha256-AGupXJVUkOt7XjXE1s5Y3SzZjZBAujaAAsR0CgxfKe0=", "fetchSubmodules": true }, - "version": "unstable-2024-01-23" + "version": "unstable-2024-03-26" }, "play": { "fetcher": "fetchFromGitHub", From 0df1dae88b5bb9542dff0ca92a1d026f49c7062b Mon Sep 17 00:00:00 2001 From: Artturin Date: Sun, 26 Nov 2023 00:44:30 +0200 Subject: [PATCH 057/116] llvm/update-git.py: fix Works after changing `git/default.nix` to use `gitRelease` instead of `officialRelease` Wont update the version attr ``` , gitRelease ? { version = "15.0.0"; rev = "a5640968f2f7485b2aa4919f5fa68fd8f23e2d1f"; rev-version = "unstable-2022-26-07"; sha256 = "1sh5xihdfdn2hp7ds3lkaq1bfrl4alj36gl1aidmhlw65p5rdvl7"; } ``` --- pkgs/development/compilers/llvm/update-git.py | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/pkgs/development/compilers/llvm/update-git.py b/pkgs/development/compilers/llvm/update-git.py index b5e900df502b..9be43e8e1afb 100755 --- a/pkgs/development/compilers/llvm/update-git.py +++ b/pkgs/development/compilers/llvm/update-git.py @@ -43,7 +43,7 @@ def get_current_revision(): """Get the current revision of llvmPackages_git.""" with open(DEFAULT_NIX) as f: for line in f: - rev = re.search(r'^ rev = "(.*)";', line) + rev = re.search(r'^ rev = "(.*)";', line) if rev: return rev.group(1) sys.exit(1) @@ -75,11 +75,11 @@ hash = nix_prefetch_url(f'https://github.com/llvm/llvm-project/archive/{commit[" print('Updating default.nix...') with fileinput.FileInput(DEFAULT_NIX, inplace=True) as f: for line in f: - if match := re.search(r'^ rev-version = "unstable-(.+)";', line): + if match := re.search(r'^ rev-version = "unstable-(.+)";', line): old_date = match.group(1) - result = re.sub(r'^ release_version = ".+";', f' release_version = "{release_version}";', line) - result = re.sub(r'^ rev = ".*";', f' rev = "{commit["sha"]}";', result) - result = re.sub(r'^ rev-version = ".+";', f' rev-version = "{version}";', result) + result = re.sub(r'^ version = ".+";', f' version = "{release_version}";', line) + result = re.sub(r'^ rev = ".*";', f' rev = "{commit["sha"]}";', result) + result = re.sub(r'^ rev-version = ".+";', f' rev-version = "{version}";', result) result = re.sub(r'^ sha256 = ".+";', f' sha256 = "{hash}";', result) print(result, end='') # Commit the result: From 81e43b9760a2b87e69f2bf4b4996cbb48749df38 Mon Sep 17 00:00:00 2001 From: "R. Ryantm" Date: Thu, 28 Mar 2024 07:19:11 +0000 Subject: [PATCH 058/116] python312Packages.google-cloud-pubsub: 2.20.3 -> 2.21.0 --- .../python-modules/google-cloud-pubsub/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/development/python-modules/google-cloud-pubsub/default.nix b/pkgs/development/python-modules/google-cloud-pubsub/default.nix index c4517465a55c..f69f56fb510d 100644 --- a/pkgs/development/python-modules/google-cloud-pubsub/default.nix +++ b/pkgs/development/python-modules/google-cloud-pubsub/default.nix @@ -17,14 +17,14 @@ buildPythonPackage rec { pname = "google-cloud-pubsub"; - version = "2.20.3"; + version = "2.21.0"; pyproject = true; disabled = pythonOlder "3.7"; src = fetchPypi { inherit pname version; - hash = "sha256-dq8PF5UJ5DHSu+P1H0JiVng9yVm49FjBNwyxnW974LE="; + hash = "sha256-lAF/C8moX6P02RPzEukwoP4hd1vWjd5cZm4vGxrd+BE="; }; build-system = [ From daa9cc539550121dc969e6ac09c2822aaebd60a0 Mon Sep 17 00:00:00 2001 From: "R. Ryantm" Date: Thu, 28 Mar 2024 07:21:31 +0000 Subject: [PATCH 059/116] libretro.beetle-psx-hw: unstable-2024-03-15 -> unstable-2024-03-22 --- pkgs/applications/emulators/retroarch/hashes.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pkgs/applications/emulators/retroarch/hashes.json b/pkgs/applications/emulators/retroarch/hashes.json index 459109e9247b..c47eb1642bcc 100644 --- a/pkgs/applications/emulators/retroarch/hashes.json +++ b/pkgs/applications/emulators/retroarch/hashes.json @@ -85,10 +85,10 @@ "src": { "owner": "libretro", "repo": "beetle-psx-libretro", - "rev": "77060aa536c81075371c79621c95772fef765868", - "hash": "sha256-IZXn3Yn1BndRCjKCzzzcWyMBFBzKAoQ732XK32FiYK4=" + "rev": "382e3ffce6880e89a8786f5c25a173f25d03df58", + "hash": "sha256-OeEAMRtZA/8ctRxSmnq4OR+5i6vDKSWITFnYiJdwac4=" }, - "version": "unstable-2024-03-15" + "version": "unstable-2024-03-22" }, "beetle-saturn": { "fetcher": "fetchFromGitHub", From d4942d45e4f0ac4e8e2a6b06658d0a9d8f79116d Mon Sep 17 00:00:00 2001 From: "R. Ryantm" Date: Thu, 28 Mar 2024 07:23:53 +0000 Subject: [PATCH 060/116] libretro.pcsx-rearmed: unstable-2024-03-21 -> unstable-2024-03-25 --- pkgs/applications/emulators/retroarch/hashes.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pkgs/applications/emulators/retroarch/hashes.json b/pkgs/applications/emulators/retroarch/hashes.json index 459109e9247b..220646d161f1 100644 --- a/pkgs/applications/emulators/retroarch/hashes.json +++ b/pkgs/applications/emulators/retroarch/hashes.json @@ -630,10 +630,10 @@ "src": { "owner": "libretro", "repo": "pcsx_rearmed", - "rev": "2b2ac30d6905b3434d822c223b36957aef96a857", - "hash": "sha256-jBs3ccKXGX0wumQkGeoNpbsRfWFx5lTufUE0NhEfCtk=" + "rev": "e2fb1389dc12376acb84e4993ed3b08760257252", + "hash": "sha256-h/Bjgyfp+8gx3VoxteJyXxI/z4ghyw/xdmwAGXidEkc=" }, - "version": "unstable-2024-03-21" + "version": "unstable-2024-03-25" }, "picodrive": { "fetcher": "fetchFromGitHub", From 9fe3cb318db086803d40307b4eda9a8d199ac122 Mon Sep 17 00:00:00 2001 From: "R. Ryantm" Date: Thu, 28 Mar 2024 07:30:14 +0000 Subject: [PATCH 061/116] libretro.beetle-pce-fast: unstable-2024-03-15 -> unstable-2024-03-22 --- pkgs/applications/emulators/retroarch/hashes.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pkgs/applications/emulators/retroarch/hashes.json b/pkgs/applications/emulators/retroarch/hashes.json index 459109e9247b..9c51ed0e5549 100644 --- a/pkgs/applications/emulators/retroarch/hashes.json +++ b/pkgs/applications/emulators/retroarch/hashes.json @@ -65,10 +65,10 @@ "src": { "owner": "libretro", "repo": "beetle-pce-fast-libretro", - "rev": "9bfba0eb494cd994087cc41e5204cc11484ceae0", - "hash": "sha256-NnI3Yh4vD5edI0rWbiU2XXYppzv5FvoZr52ikOcTUo4=" + "rev": "6210d0f8c262dcdaa5b76c28057cca6077f488fe", + "hash": "sha256-5qONcwTrawd6vMa7157lexFmuj9jdzSDVqt+KUvEm0I=" }, - "version": "unstable-2024-03-15" + "version": "unstable-2024-03-22" }, "beetle-pcfx": { "fetcher": "fetchFromGitHub", From 63ff59e61b3e6a02ab846cd63b83b20fc3e599ec Mon Sep 17 00:00:00 2001 From: "R. Ryantm" Date: Thu, 28 Mar 2024 07:33:57 +0000 Subject: [PATCH 062/116] python312Packages.pyenphase: 1.20.0 -> 1.20.1 --- pkgs/development/python-modules/pyenphase/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/development/python-modules/pyenphase/default.nix b/pkgs/development/python-modules/pyenphase/default.nix index 549d0b8e8263..b3e4863f2472 100644 --- a/pkgs/development/python-modules/pyenphase/default.nix +++ b/pkgs/development/python-modules/pyenphase/default.nix @@ -18,7 +18,7 @@ buildPythonPackage rec { pname = "pyenphase"; - version = "1.20.0"; + version = "1.20.1"; pyproject = true; disabled = pythonOlder "3.11"; @@ -27,7 +27,7 @@ buildPythonPackage rec { owner = "pyenphase"; repo = "pyenphase"; rev = "refs/tags/v${version}"; - hash = "sha256-/TyQ6oSA361at1VSr6dLefOOmbZP4otBgb/JDA2sNWo="; + hash = "sha256-Bxwd8qHsvq9BuBMSu5JI/Yk/KC5aQ7b7lnXuIoNQ6EI="; }; postPatch = '' From 8dc27b10854531fed934724768c7697e67e27852 Mon Sep 17 00:00:00 2001 From: Fabian Affolter Date: Thu, 28 Mar 2024 08:35:10 +0100 Subject: [PATCH 063/116] python312Packages.awswrangler: refactor --- pkgs/development/python-modules/awswrangler/default.nix | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pkgs/development/python-modules/awswrangler/default.nix b/pkgs/development/python-modules/awswrangler/default.nix index 4fd372e8eb7a..674b127fcae1 100644 --- a/pkgs/development/python-modules/awswrangler/default.nix +++ b/pkgs/development/python-modules/awswrangler/default.nix @@ -26,7 +26,7 @@ buildPythonPackage rec { pname = "awswrangler"; version = "3.7.2"; - format = "pyproject"; + pyproject = true; disabled = pythonOlder "3.8"; @@ -37,11 +37,11 @@ buildPythonPackage rec { hash = "sha256-1eb2oTiRNxA2XTpkScA5WJutN5P6FX96jC4Ra9VdonI="; }; - nativeBuildInputs = [ + build-system = [ poetry-core ]; - propagatedBuildInputs = [ + dependencies = [ boto3 gremlinpython jsonpath-ng From 32ba122a7a84d9015eff0173c0515a16f46ca5fa Mon Sep 17 00:00:00 2001 From: Fabian Affolter Date: Thu, 28 Mar 2024 08:37:37 +0100 Subject: [PATCH 064/116] cnspec: 10.8.4 -> 10.9.1 Diff: https://github.com/mondoohq/cnspec/compare/refs/tags/v10.8.4...v10.9.1 Changelog: https://github.com/mondoohq/cnspec/releases/tag/v10.9.1 --- pkgs/tools/security/cnspec/default.nix | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pkgs/tools/security/cnspec/default.nix b/pkgs/tools/security/cnspec/default.nix index b37f05e779cc..57d33623f0a2 100644 --- a/pkgs/tools/security/cnspec/default.nix +++ b/pkgs/tools/security/cnspec/default.nix @@ -5,18 +5,18 @@ buildGoModule rec { pname = "cnspec"; - version = "10.8.4"; + version = "10.9.1"; src = fetchFromGitHub { owner = "mondoohq"; repo = "cnspec"; rev = "refs/tags/v${version}"; - hash = "sha256-emY8y+OKk052o5LGhHMra7CTpbmS/U+5sjWIYR7DRsA="; + hash = "sha256-9NHzSgcUWRVhq4hqkq8xJ0FgTk9BBz2Zc0yuj72WL+c="; }; proxyVendor = true; - vendorHash = "sha256-W39Ccc5UU+K+W/h/R1vrB1lcJXKZs8gbfxmb99vGEfM="; + vendorHash = "sha256-bhpVAvoIriqA7QnYysqUfuAYbR9PoaPHgWCHlJLdgYY="; subPackages = [ "apps/cnspec" From 14c3a770df358fb80fb349ea13e5028a0b07d40e Mon Sep 17 00:00:00 2001 From: Fabian Affolter Date: Thu, 28 Mar 2024 08:38:20 +0100 Subject: [PATCH 065/116] python312Packages.dirigera: refactor --- pkgs/development/python-modules/dirigera/default.nix | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pkgs/development/python-modules/dirigera/default.nix b/pkgs/development/python-modules/dirigera/default.nix index 6881e3ff71ea..96c62ee20089 100644 --- a/pkgs/development/python-modules/dirigera/default.nix +++ b/pkgs/development/python-modules/dirigera/default.nix @@ -23,11 +23,11 @@ buildPythonPackage rec { hash = "sha256-e8kbMP5ih7MBozFbylLEBR9DrS894X4xZh62OLLSgFw="; }; - nativeBuildInputs = [ + build-system = [ setuptools ]; - propagatedBuildInputs = [ + dependencies = [ pydantic requests websocket-client @@ -43,10 +43,10 @@ buildPythonPackage rec { meta = with lib; { description = "Module for controlling the IKEA Dirigera Smart Home Hub"; - mainProgram = "generate-token"; homepage = "https://github.com/Leggin/dirigera"; changelog = "https://github.com/Leggin/dirigera/releases/tag/v${version}"; license = licenses.mit; maintainers = with maintainers; [ fab ]; + mainProgram = "generate-token"; }; } From b8daebef9a868b5771b62096fd31f2ad40e751ec Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kasper=20Ga=C5=82kowski?= Date: Thu, 28 Mar 2024 08:39:17 +0100 Subject: [PATCH 066/116] sbcl.pkgs.cephes: fix build The package could not be built because it was trying to write the DLL into $src. One way to fix that is to build the DLL beforehand. Perhaps "make" could be convinced to put its outputs elsewhere, then the build-with-compile-into-pwd could be swapped for just build-asdf-system. It would have to create $out during buildPhase. --- pkgs/development/lisp-modules/packages.nix | 8 +++++++ .../lisp-modules/patches/cephes-make.patch | 22 +++++++++++++++++++ 2 files changed, 30 insertions(+) create mode 100644 pkgs/development/lisp-modules/patches/cephes-make.patch diff --git a/pkgs/development/lisp-modules/packages.nix b/pkgs/development/lisp-modules/packages.nix index a752f713043f..49c787ea760a 100644 --- a/pkgs/development/lisp-modules/packages.nix +++ b/pkgs/development/lisp-modules/packages.nix @@ -243,6 +243,14 @@ let ''; }; + cephes = build-with-compile-into-pwd { + inherit (super.cephes) pname version src lispLibs; + patches = [ ./patches/cephes-make.patch ]; + postConfigure = '' + substituteAllInPlace cephes.asd + ''; + }; + clx-truetype = build-asdf-system { pname = "clx-truetype"; version = "20160825-git"; diff --git a/pkgs/development/lisp-modules/patches/cephes-make.patch b/pkgs/development/lisp-modules/patches/cephes-make.patch new file mode 100644 index 000000000000..b67b5f70ad3c --- /dev/null +++ b/pkgs/development/lisp-modules/patches/cephes-make.patch @@ -0,0 +1,22 @@ +--- a/cephes.asd ++++ b/cephes.asd +@@ -5,7 +5,7 @@ + (defclass makefile (source-file) ((type :initform "m"))) + (defmethod perform ((o load-op) (c makefile)) t) + (defmethod perform ((o compile-op) (c makefile)) +- (let* ((lib-dir (system-relative-pathname "cephes" "scipy-cephes")) ++ (let* ((lib-dir #P"@out@/scipy-cephes") + (lib (make-pathname :directory `(:relative ,(namestring lib-dir)) + :name "libmd" + :type #+darwin "dylib" #+(and unix (not darwin)) "so" #+(or windows win32) "dll")) +@@ -14,7 +14,7 @@ + (format *error-output* "Library ~S exists, skipping build" lib) + (format *error-output* "Building ~S~%" lib)) + (unless built +- (chdir (native-namestring lib-dir)) ++ (chdir "scipy-cephes") + (run-program "make" :output t)))) + + (defsystem "cephes" + +Diff finished. Thu Mar 28 08:13:30 2024 From c24a08353f4c7c05df2e3946ba0f62a05598691a Mon Sep 17 00:00:00 2001 From: Fabian Affolter Date: Thu, 28 Mar 2024 08:39:38 +0100 Subject: [PATCH 067/116] checkov: 3.2.47 -> 3.2.48 Diff: https://github.com/bridgecrewio/checkov/compare/refs/tags/3.2.47...3.2.48 Changelog: https://github.com/bridgecrewio/checkov/releases/tag/3.2.48 --- pkgs/development/tools/analysis/checkov/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/development/tools/analysis/checkov/default.nix b/pkgs/development/tools/analysis/checkov/default.nix index 6a457c6051ed..555c7ddf4307 100644 --- a/pkgs/development/tools/analysis/checkov/default.nix +++ b/pkgs/development/tools/analysis/checkov/default.nix @@ -5,14 +5,14 @@ python3.pkgs.buildPythonApplication rec { pname = "checkov"; - version = "3.2.47"; + version = "3.2.48"; pyproject = true; src = fetchFromGitHub { owner = "bridgecrewio"; repo = "checkov"; rev = "refs/tags/${version}"; - hash = "sha256-vwkTbHhgXaGeHrAkOM8gRDJ2VgbSmqt9Ia+qdOMxkko="; + hash = "sha256-B0wvUd94J+Q+ZuWitYMKYgOTSNGC4njPrUAhs1QPCuQ="; }; patches = [ From 6699cb2452e5f643dd62683a0badd28e549e1c47 Mon Sep 17 00:00:00 2001 From: Fabian Affolter Date: Thu, 28 Mar 2024 08:45:07 +0100 Subject: [PATCH 068/116] python311Packages.flask-restx: refactor --- .../python-modules/flask-restx/default.nix | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/pkgs/development/python-modules/flask-restx/default.nix b/pkgs/development/python-modules/flask-restx/default.nix index e7f348c243f2..1a9a27dc0315 100644 --- a/pkgs/development/python-modules/flask-restx/default.nix +++ b/pkgs/development/python-modules/flask-restx/default.nix @@ -17,24 +17,29 @@ , pytest-mock , pytest-benchmark , pytestCheckHook +, setuptools }: buildPythonPackage rec { pname = "flask-restx"; version = "1.3.0"; - format = "setuptools"; + pyproject = true; disabled = pythonOlder "3.8"; # Tests not included in PyPI tarball src = fetchFromGitHub { owner = "python-restx"; - repo = pname; + repo = "flask-restx"; rev = "refs/tags/${version}"; hash = "sha256-CBReP/u96fsr28lMV1BfLjjdBMXEvsD03wvsxkIcteI="; }; - propagatedBuildInputs = [ + build-system = [ + setuptools + ]; + + dependencies = [ aniso8601 flask importlib-resources From cb6a1bc179eb6340562d25c1d13b815eedb9c40c Mon Sep 17 00:00:00 2001 From: Fabian Affolter Date: Thu, 28 Mar 2024 08:56:15 +0100 Subject: [PATCH 069/116] python312Packages.microsoft-kiota-abstractions: refactor --- .../python-modules/microsoft-kiota-abstractions/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/development/python-modules/microsoft-kiota-abstractions/default.nix b/pkgs/development/python-modules/microsoft-kiota-abstractions/default.nix index 3e3078ebf287..61b8d7804f51 100644 --- a/pkgs/development/python-modules/microsoft-kiota-abstractions/default.nix +++ b/pkgs/development/python-modules/microsoft-kiota-abstractions/default.nix @@ -25,11 +25,11 @@ buildPythonPackage rec { hash = "sha256-n9Erm21slKm+zDblhSHA5Cwxkyrcyx0w09ua3bUc5XI="; }; - nativeBuildInputs = [ + build-system = [ flit-core ]; - propagatedBuildInputs = [ + dependencies = [ opentelemetry-api opentelemetry-sdk std-uritemplate From fb67096514e619ea9a943988601522e49b1b3458 Mon Sep 17 00:00:00 2001 From: Fabian Affolter Date: Thu, 28 Mar 2024 08:58:05 +0100 Subject: [PATCH 070/116] python311Pacakges.reptor: refactor --- pkgs/development/python-modules/reptor/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/development/python-modules/reptor/default.nix b/pkgs/development/python-modules/reptor/default.nix index a7f35e964986..013008581a53 100644 --- a/pkgs/development/python-modules/reptor/default.nix +++ b/pkgs/development/python-modules/reptor/default.nix @@ -46,12 +46,12 @@ buildPythonPackage rec { pythonRelaxDeps = true; - nativeBuildInputs = [ + build-system = [ pythonRelaxDepsHook setuptools ]; - propagatedBuildInputs = [ + dependencies = [ asgiref certifi charset-normalizer From 9f3532635a8add3abc1eb746f07b4573be088cb7 Mon Sep 17 00:00:00 2001 From: Fabian Affolter Date: Thu, 28 Mar 2024 09:07:27 +0100 Subject: [PATCH 071/116] python312Packages.deal: refactor --- .../python-modules/deal/default.nix | 57 ++++++++++--------- 1 file changed, 30 insertions(+), 27 deletions(-) diff --git a/pkgs/development/python-modules/deal/default.nix b/pkgs/development/python-modules/deal/default.nix index b24d8be44826..faaeda80bc8b 100644 --- a/pkgs/development/python-modules/deal/default.nix +++ b/pkgs/development/python-modules/deal/default.nix @@ -1,31 +1,31 @@ { lib +, astroid , buildPythonPackage -, pythonOlder +, deal-solver +, docstring-parser , fetchFromGitHub , flit-core -, astroid -, pytestCheckHook -, docstring-parser -, marshmallow -, sphinx , hypothesis -, vaa -, deal-solver +, marshmallow , pygments +, pytestCheckHook +, pythonOlder +, sphinx , typeguard , urllib3 -, flake8 +, vaa }: buildPythonPackage rec { pname = "deal"; version = "4.24.3"; - format = "pyproject"; + pyproject = true; + disabled = pythonOlder "3.7"; src = fetchFromGitHub { owner = "life4"; - repo = pname; + repo = "deal"; rev = "refs/tags/${version}"; hash = "sha256-QlM3d/jmg6v3L3D45+cgcCej71U1dl4uZ6sAYGGm3tU="; }; @@ -33,17 +33,17 @@ buildPythonPackage rec { postPatch = '' # don't do coverage substituteInPlace pyproject.toml \ - --replace "\"--cov-fail-under=100\"," "" \ - --replace "\"--cov=deal\"," "" \ - --replace "\"--cov-report=html\"," "" \ - --replace "\"--cov-report=term-missing:skip-covered\"," "" + --replace-fail '"--cov-fail-under=100",' "" \ + --replace-fail '"--cov=deal",' "" \ + --replace-fail '"--cov-report=html",' "" \ + --replace-fail '"--cov-report=term-missing:skip-covered",' "" ''; - nativeBuildInputs = [ + build-system = [ flit-core ]; - propagatedBuildInputs = [ + dependencies = [ astroid deal-solver pygments @@ -51,15 +51,13 @@ buildPythonPackage rec { ]; nativeCheckInputs = [ - pytestCheckHook - docstring-parser - marshmallow - sphinx hypothesis - vaa + marshmallow + pytestCheckHook + sphinx urllib3 - flake8 + vaa ]; pytestFlagsArray = [ @@ -67,7 +65,7 @@ buildPythonPackage rec { ]; disabledTests = [ - # needs internet access + # Tests need internet access "test_smoke_has" "test_pure_offline" "test_raises_doesnt_override_another_contract" @@ -84,25 +82,30 @@ buildPythonPackage rec { # assert errors "test_doctest" "test_no_violations" + "test_source_get_lambda_multiline_splitted_dec" ]; disabledTestPaths = [ - # needs internet access + # Test needs internet access "tests/test_runtime/test_offline.py" # depends on typeguard <4.0.0 for tests, but >=4.0.0 seems fine for runtime # https://github.com/life4/deal/blob/9be70fa1c5a0635880619b2cea83a9f6631eb236/pyproject.toml#L40 "tests/test_testing.py" ]; - pythonImportsCheck = [ "deal" ]; + pythonImportsCheck = [ + "deal" + ]; meta = with lib; { description = "Library for design by contract (DbC) and checking values, exceptions, and side-effects"; longDescription = '' In a nutshell, deal empowers you to write bug-free code. - By adding a few decorators to your code, you get for free tests, static analysis, formal verification, and much more + By adding a few decorators to your code, you get for free tests, static analysis, formal verification, + and much more. ''; homepage = "https://github.com/life4/deal"; + changelog = "https://github.com/life4/deal/releases/tag/${version}"; license = licenses.mit; maintainers = with maintainers; [ gador ]; }; From 94fb0e3542c6e0ca1fcef587d4437757cc0600ed Mon Sep 17 00:00:00 2001 From: Fabian Affolter Date: Thu, 28 Mar 2024 09:08:06 +0100 Subject: [PATCH 072/116] python312Packages.deal: 4.24.3 -> 4.24.4 Diff: https://github.com/life4/deal/compare/refs/tags/4.24.3...4.24.4 Changelog: https://github.com/life4/deal/releases/tag/4.24.4 --- pkgs/development/python-modules/deal/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/development/python-modules/deal/default.nix b/pkgs/development/python-modules/deal/default.nix index faaeda80bc8b..41d966c8f1e8 100644 --- a/pkgs/development/python-modules/deal/default.nix +++ b/pkgs/development/python-modules/deal/default.nix @@ -18,7 +18,7 @@ buildPythonPackage rec { pname = "deal"; - version = "4.24.3"; + version = "4.24.4"; pyproject = true; disabled = pythonOlder "3.7"; @@ -27,7 +27,7 @@ buildPythonPackage rec { owner = "life4"; repo = "deal"; rev = "refs/tags/${version}"; - hash = "sha256-QlM3d/jmg6v3L3D45+cgcCej71U1dl4uZ6sAYGGm3tU="; + hash = "sha256-4orpoYfPGSvquhg9w63uUe8QbBa2RUpxaEJ9uy28+fU="; }; postPatch = '' From f30569cbcf799b2f1ce3c5bbc1fd71d9eb187b6c Mon Sep 17 00:00:00 2001 From: Fabian Affolter Date: Thu, 28 Mar 2024 09:11:35 +0100 Subject: [PATCH 073/116] python312Packages.icontract: refactor --- .../python-modules/icontract/default.nix | 29 ++++++++++++++----- 1 file changed, 21 insertions(+), 8 deletions(-) diff --git a/pkgs/development/python-modules/icontract/default.nix b/pkgs/development/python-modules/icontract/default.nix index e525cf89cca2..f8b9fd589f18 100644 --- a/pkgs/development/python-modules/icontract/default.nix +++ b/pkgs/development/python-modules/icontract/default.nix @@ -1,26 +1,28 @@ { lib -, buildPythonPackage -, pythonOlder -, fetchFromGitHub , astor , asttokens , asyncstdlib +, buildPythonPackage , deal , dpcontracts +, fetchFromGitHub , numpy , pytestCheckHook +, pythonOlder +, setuptools , typing-extensions }: buildPythonPackage rec { pname = "icontract"; version = "2.6.6"; - format = "setuptools"; + pyproject = true; + disabled = pythonOlder "3.6"; src = fetchFromGitHub { owner = "Parquery"; - repo = pname; + repo = "icontract"; rev = "refs/tags/v${version}"; hash = "sha256-R5/FBfuTvXItfTlNZMSnO18Q+etnHbQyXFWpaOpOLes="; }; @@ -32,7 +34,11 @@ buildPythonPackage rec { export ICONTRACT_SLOW=1 ''; - propagatedBuildInputs = [ + build-system = [ + setuptools + ]; + + dependencies = [ asttokens typing-extensions ]; @@ -46,11 +52,16 @@ buildPythonPackage rec { pytestCheckHook ]; + disabledTests = [ + # AssertionError + "test_abstract_method_not_implemented" + ]; + disabledTestPaths = [ # mypy decorator checks don't pass. For some reason mypy # doesn't check the python file provided in the test. "tests/test_mypy_decorators.py" - # those tests seems to simply re-run some typeguard tests + # Those tests seems to simply re-run some typeguard tests "tests/test_typeguard.py" ]; @@ -59,7 +70,9 @@ buildPythonPackage rec { "-W" "ignore::RuntimeWarning" ]; - pythonImportsCheck = [ "icontract" ]; + pythonImportsCheck = [ + "icontract" + ]; meta = with lib; { description = "Provide design-by-contract with informative violation messages"; From a494ad489b36aa51f75384a1dfad1033b606d95d Mon Sep 17 00:00:00 2001 From: Fabian Affolter Date: Thu, 28 Mar 2024 09:15:09 +0100 Subject: [PATCH 074/116] python311Packages.boto3-stubs: 1.34.70 -> 1.34.72 --- pkgs/development/python-modules/boto3-stubs/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/development/python-modules/boto3-stubs/default.nix b/pkgs/development/python-modules/boto3-stubs/default.nix index e792f1e6bf93..a5e202469480 100644 --- a/pkgs/development/python-modules/boto3-stubs/default.nix +++ b/pkgs/development/python-modules/boto3-stubs/default.nix @@ -365,14 +365,14 @@ buildPythonPackage rec { pname = "boto3-stubs"; - version = "1.34.70"; + version = "1.34.72"; pyproject = true; disabled = pythonOlder "3.7"; src = fetchPypi { inherit pname version; - hash = "sha256-WlF4VNAeHKXYEX7NYP0Ehw9uuRAI+tZ13Wr/NinzF7U="; + hash = "sha256-eQPciiA763TWI3smauBk/1qbJ2B0r3UAt9tIVEZJWWo="; }; nativeBuildInputs = [ From 9308536fca7091b26ea8803f3e752ebfe537cf88 Mon Sep 17 00:00:00 2001 From: Fabian Affolter Date: Thu, 28 Mar 2024 09:17:54 +0100 Subject: [PATCH 075/116] python311Packages.teslajsonpy: refactor --- pkgs/development/python-modules/teslajsonpy/default.nix | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/pkgs/development/python-modules/teslajsonpy/default.nix b/pkgs/development/python-modules/teslajsonpy/default.nix index 97f9a024371e..ab2315c1d9c8 100644 --- a/pkgs/development/python-modules/teslajsonpy/default.nix +++ b/pkgs/development/python-modules/teslajsonpy/default.nix @@ -18,22 +18,22 @@ buildPythonPackage rec { pname = "teslajsonpy"; version = "3.10.2"; - format = "pyproject"; + pyproject = true; disabled = pythonOlder "3.7"; src = fetchFromGitHub { owner = "zabuldon"; - repo = pname; + repo = "teslajsonpy"; rev = "refs/tags/v${version}"; hash = "sha256-M3/1J73C3gUqyZYsu10O6FnACKYVbGuMH+8Ns0s2Rwc="; }; - nativeBuildInputs = [ + build-system = [ poetry-core ]; - propagatedBuildInputs = [ + dependencies = [ authcaptureproxy aiohttp backoff From 81d3a338f36a435af7d6fff5f87ca7800c3030be Mon Sep 17 00:00:00 2001 From: "R. Ryantm" Date: Thu, 28 Mar 2024 08:20:46 +0000 Subject: [PATCH 076/116] libretro.ppsspp: unstable-2024-03-21 -> unstable-2024-03-27 --- pkgs/applications/emulators/retroarch/hashes.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pkgs/applications/emulators/retroarch/hashes.json b/pkgs/applications/emulators/retroarch/hashes.json index 459109e9247b..62a83ee6efc6 100644 --- a/pkgs/applications/emulators/retroarch/hashes.json +++ b/pkgs/applications/emulators/retroarch/hashes.json @@ -662,11 +662,11 @@ "src": { "owner": "hrydgard", "repo": "ppsspp", - "rev": "cd85b4d5e8410dd9b5a9ee5c0e507abd0dc3ff29", - "hash": "sha256-a/Le2xFoLmRU8Q2WIegipt/kU49px20W7P6/zqQsspQ=", + "rev": "768174e19ca80bccadc067bd2c7adc0d35fb4602", + "hash": "sha256-V66SGvOAcw5lMOBID+qnsjuvKQkt1afl8wdiscKN3Us=", "fetchSubmodules": true }, - "version": "unstable-2024-03-21" + "version": "unstable-2024-03-27" }, "prboom": { "fetcher": "fetchFromGitHub", From e9a478256957db42b7f9a6ebfcb93ba18caa7a03 Mon Sep 17 00:00:00 2001 From: "R. Ryantm" Date: Thu, 28 Mar 2024 08:20:49 +0000 Subject: [PATCH 077/116] libretro.mame2003-plus: unstable-2024-03-21 -> unstable-2024-03-22 --- pkgs/applications/emulators/retroarch/hashes.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pkgs/applications/emulators/retroarch/hashes.json b/pkgs/applications/emulators/retroarch/hashes.json index 459109e9247b..2aaa551f5f91 100644 --- a/pkgs/applications/emulators/retroarch/hashes.json +++ b/pkgs/applications/emulators/retroarch/hashes.json @@ -438,10 +438,10 @@ "src": { "owner": "libretro", "repo": "mame2003-plus-libretro", - "rev": "8e60ed0217ff6206768d7bdc6313e86c4c852405", - "hash": "sha256-zq143CSDMSBQ/e7kntz63cTaKk552IKfCoRGmt5jYik=" + "rev": "ee777f235b99d652890dedbc94337094968869d4", + "hash": "sha256-nfoZRymtbAsXWvb8MKFHUwQr0xRk9kLRtgPC2G2iAVE=" }, - "version": "unstable-2024-03-21" + "version": "unstable-2024-03-22" }, "mame2010": { "fetcher": "fetchFromGitHub", From 121096bb0f07e13402e4f7051b9b638fe2b7e573 Mon Sep 17 00:00:00 2001 From: "R. Ryantm" Date: Thu, 28 Mar 2024 08:20:59 +0000 Subject: [PATCH 078/116] libretro.fbneo: unstable-2024-03-21 -> unstable-2024-03-27 --- pkgs/applications/emulators/retroarch/hashes.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pkgs/applications/emulators/retroarch/hashes.json b/pkgs/applications/emulators/retroarch/hashes.json index 459109e9247b..26cb9cde72ac 100644 --- a/pkgs/applications/emulators/retroarch/hashes.json +++ b/pkgs/applications/emulators/retroarch/hashes.json @@ -287,10 +287,10 @@ "src": { "owner": "libretro", "repo": "fbneo", - "rev": "b6c6d883df5e9e9a9a5d4b9f09e796702b08d177", - "hash": "sha256-dLDtcjp68caRwc3wLj80Oj7HA/SlW7/eswbY1n3aRAc=" + "rev": "fa70abd34f49d8c461165b65a4ad436a4245eb51", + "hash": "sha256-BaV+BY7jTw/6M4XmAAVSRQ9viftyaPZmG17TFgSFqOg=" }, - "version": "unstable-2024-03-21" + "version": "unstable-2024-03-27" }, "fceumm": { "fetcher": "fetchFromGitHub", From bc77c7a9730833c7668c92288c6af950e7270cb5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Janne=20He=C3=9F?= Date: Wed, 27 Mar 2024 17:33:27 +0100 Subject: [PATCH 079/116] treewide: Mark Nix blocks in markdown as Nix This should help us with highlighting and future formatting. --- doc/build-helpers/fetchers.chapter.md | 4 +-- doc/languages-frameworks/cuelang.section.md | 4 +-- doc/languages-frameworks/dotnet.section.md | 2 +- doc/languages-frameworks/lisp.section.md | 12 ++++----- .../pkg-config.section.md | 2 +- doc/languages-frameworks/python.section.md | 26 +++++++++---------- doc/languages-frameworks/rust.section.md | 4 +-- doc/languages-frameworks/swift.section.md | 2 +- doc/packages/darwin-builder.section.md | 4 +-- doc/stdenv/cross-compilation.chapter.md | 2 +- .../manual/release-notes/rl-2211.section.md | 2 +- .../manual/release-notes/rl-2311.section.md | 2 +- .../manual/release-notes/rl-2405.section.md | 2 +- nixos/modules/i18n/input-method/default.md | 14 +++++----- .../modules/programs/digitalbitbox/default.md | 8 +++--- nixos/modules/programs/plotinus.md | 2 +- nixos/modules/programs/zsh/oh-my-zsh.md | 8 +++--- nixos/modules/services/backup/borgbackup.md | 6 ++--- .../services/databases/foundationdb.md | 6 ++--- .../modules/services/databases/postgresql.md | 12 ++++----- .../modules/services/databases/tigerbeetle.md | 4 +-- nixos/modules/services/desktops/flatpak.md | 4 +-- nixos/modules/services/development/athens.md | 6 ++--- .../modules/services/development/blackfire.md | 2 +- .../modules/services/development/livebook.md | 4 +-- nixos/modules/services/editors/emacs.md | 10 +++---- nixos/modules/services/mail/mailman.md | 4 +-- nixos/modules/services/matrix/mjolnir.md | 4 +-- nixos/modules/services/matrix/synapse.md | 6 ++--- .../modules/services/misc/anki-sync-server.md | 6 ++--- nixos/modules/services/misc/gitlab.md | 4 +-- .../services/misc/sourcehut/default.md | 2 +- nixos/modules/services/misc/weechat.md | 4 +-- nixos/modules/services/monitoring/goss.md | 2 +- .../monitoring/prometheus/exporters.md | 8 +++--- .../network-filesystems/litestream/default.md | 2 +- nixos/modules/services/networking/pleroma.md | 6 ++--- nixos/modules/services/networking/prosody.md | 4 +-- .../modules/services/networking/yggdrasil.md | 6 ++--- .../services/web-apps/c2fmzq-server.md | 4 +-- nixos/modules/services/web-apps/discourse.md | 10 +++---- nixos/modules/services/web-apps/grocy.md | 6 ++--- nixos/modules/services/web-apps/jitsi-meet.md | 4 +-- nixos/modules/services/web-apps/keycloak.md | 2 +- nixos/modules/services/web-apps/nextcloud.md | 6 ++--- nixos/modules/services/web-apps/plausible.md | 2 +- nixos/modules/services/web-servers/garage.md | 2 +- .../services/x11/desktop-managers/gnome.md | 18 ++++++------- .../services/x11/desktop-managers/pantheon.md | 10 +++---- nixos/modules/system/boot/clevis.md | 4 +-- pkgs/README.md | 2 +- pkgs/servers/nextcloud/packages/README.md | 2 +- .../web-apps/wordpress/packages/README.md | 2 +- 53 files changed, 143 insertions(+), 143 deletions(-) diff --git a/doc/build-helpers/fetchers.chapter.md b/doc/build-helpers/fetchers.chapter.md index b326f189d50e..e8521861208f 100644 --- a/doc/build-helpers/fetchers.chapter.md +++ b/doc/build-helpers/fetchers.chapter.md @@ -243,7 +243,7 @@ This is a useful last-resort workaround for license restrictions that prohibit r If the requested file is present in the Nix store, the resulting derivation will not be built, because its expected output is already available. Otherwise, the builder will run, but fail with a message explaining to the user how to provide the file. The following code, for example: -``` +```nix requireFile { name = "jdk-${version}_linux-x64_bin.tar.gz"; url = "https://www.oracle.com/java/technologies/javase-jdk11-downloads.html"; @@ -270,7 +270,7 @@ It produces packages that cannot be built automatically. `fetchtorrent` expects two arguments. `url` which can either be a Magnet URI (Magnet Link) such as `magnet:?xt=urn:btih:dd8255ecdc7ca55fb0bbf81323d87062db1f6d1c` or an HTTP URL pointing to a `.torrent` file. It can also take a `config` argument which will craft a `settings.json` configuration file and give it to `transmission`, the underlying program that is performing the fetch. The available config options for `transmission` can be found [here](https://github.com/transmission/transmission/blob/main/docs/Editing-Configuration-Files.md#options) -``` +```nix { fetchtorrent }: fetchtorrent { diff --git a/doc/languages-frameworks/cuelang.section.md b/doc/languages-frameworks/cuelang.section.md index 86304208aa20..70329b15fd7d 100644 --- a/doc/languages-frameworks/cuelang.section.md +++ b/doc/languages-frameworks/cuelang.section.md @@ -26,7 +26,7 @@ Cuelang schemas are similar to JSON, here is a quick cheatsheet: Nixpkgs provides a `pkgs.writeCueValidator` helper, which will write a validation script based on the provided Cuelang schema. Here is an example: -``` +```nix pkgs.writeCueValidator (pkgs.writeText "schema.cue" '' #Def1: { @@ -42,7 +42,7 @@ pkgs.writeCueValidator `document` : match your input data against this fragment of structure or definition, e.g. you may use the same schema file but different documents based on the data you are validating. Another example, given the following `validator.nix` : -``` +```nix { pkgs ? import {} }: let genericValidator = version: diff --git a/doc/languages-frameworks/dotnet.section.md b/doc/languages-frameworks/dotnet.section.md index 7466c8cdc228..6a6c899a0897 100644 --- a/doc/languages-frameworks/dotnet.section.md +++ b/doc/languages-frameworks/dotnet.section.md @@ -236,7 +236,7 @@ the packages inside the `out` directory. $ nuget-to-nix out > deps.nix ``` Which `nuget-to-nix` will generate an output similar to below -``` +```nix { fetchNuGet }: [ (fetchNuGet { pname = "FosterFramework"; version = "0.1.15-alpha"; sha256 = "0pzsdfbsfx28xfqljcwy100xhbs6wyx0z1d5qxgmv3l60di9xkll"; }) (fetchNuGet { pname = "Microsoft.AspNetCore.App.Runtime.linux-x64"; version = "8.0.1"; sha256 = "1gjz379y61ag9whi78qxx09bwkwcznkx2mzypgycibxk61g11da1"; }) diff --git a/doc/languages-frameworks/lisp.section.md b/doc/languages-frameworks/lisp.section.md index 09193093b08f..f64942338f80 100644 --- a/doc/languages-frameworks/lisp.section.md +++ b/doc/languages-frameworks/lisp.section.md @@ -45,7 +45,7 @@ $ sbcl Also one can create a `pkgs.mkShell` environment in `shell.nix`/`flake.nix`: -``` +```nix let sbcl' = sbcl.withPackages (ps: [ ps.alexandria ]); in mkShell { @@ -55,7 +55,7 @@ in mkShell { Such a Lisp can be now used e.g. to compile your sources: -``` +```nix buildPhase = '' ${sbcl'}/bin/sbcl --load my-build-file.lisp '' @@ -173,7 +173,7 @@ into the package scope with `withOverrides`. A package defined outside Nixpkgs using `buildASDFSystem` can be woven into the Nixpkgs-provided scope like this: -``` +```nix let alexandria = sbcl.buildASDFSystem rec { pname = "alexandria"; @@ -199,7 +199,7 @@ new package with different parameters. Example of overriding `alexandria`: -``` +```nix sbcl.pkgs.alexandria.overrideLispAttrs (oldAttrs: rec { version = "1.4"; src = fetchFromGitLab { @@ -225,7 +225,7 @@ vice versa. To package slashy systems, use `overrideLispAttrs`, like so: -``` +```nix ecl.pkgs.alexandria.overrideLispAttrs (oldAttrs: { systems = oldAttrs.systems ++ [ "alexandria/tests" ]; lispLibs = oldAttrs.lispLibs ++ [ ecl.pkgs.rt ]; @@ -290,7 +290,7 @@ derivation. This example wraps CLISP: -``` +```nix wrapLisp { pkg = clisp; faslExt = "fas"; diff --git a/doc/languages-frameworks/pkg-config.section.md b/doc/languages-frameworks/pkg-config.section.md index 75cbdaeb6fe8..72b99b40a1f3 100644 --- a/doc/languages-frameworks/pkg-config.section.md +++ b/doc/languages-frameworks/pkg-config.section.md @@ -12,7 +12,7 @@ Additionally, the [`validatePkgConfig` setup hook](https://nixos.org/manual/nixp A good example of all these things is zlib: -``` +```nix { pkg-config, testers, ... }: stdenv.mkDerivation (finalAttrs: { diff --git a/doc/languages-frameworks/python.section.md b/doc/languages-frameworks/python.section.md index 049b395dcc25..174686d24c6c 100644 --- a/doc/languages-frameworks/python.section.md +++ b/doc/languages-frameworks/python.section.md @@ -1197,7 +1197,7 @@ a good indication that the package is not in a valid state. Pytest is the most common test runner for python repositories. A trivial test run would be: -``` +```nix nativeCheckInputs = [ pytest ]; checkPhase = '' runHook preCheck @@ -1213,7 +1213,7 @@ sandbox, and will generally need many tests to be disabled. To filter tests using pytest, one can do the following: -``` +```nix nativeCheckInputs = [ pytest ]; # avoid tests which need additional data or touch network checkPhase = '' @@ -1248,7 +1248,7 @@ when a package may need many items disabled to run the test suite. Using the example above, the analogous `pytestCheckHook` usage would be: -``` +```nix nativeCheckInputs = [ pytestCheckHook ]; @@ -1273,7 +1273,7 @@ Using the example above, the analogous `pytestCheckHook` usage would be: This is especially useful when tests need to be conditionally disabled, for example: -``` +```nix disabledTests = [ # touches network "download" @@ -1298,7 +1298,7 @@ all packages have test suites that can be run easily, and some have none at all. To help ensure the package still works, [`pythonImportsCheck`](#using-pythonimportscheck) can attempt to import the listed modules. -``` +```nix pythonImportsCheck = [ "requests" "urllib" @@ -1307,7 +1307,7 @@ the listed modules. roughly translates to: -``` +```nix postCheck = '' PYTHONPATH=$out/${python.sitePackages}:$PYTHONPATH python -c "import requests; import urllib" @@ -1342,7 +1342,7 @@ pkg3>=1.0,<=2.0 we can do: -``` +```nix nativeBuildInputs = [ pythonRelaxDepsHook ]; @@ -1365,7 +1365,7 @@ pkg3 Another option is to pass `true`, that will relax/remove all dependencies, for example: -``` +```nix nativeBuildInputs = [ pythonRelaxDepsHook ]; pythonRelaxDeps = true; ``` @@ -1392,7 +1392,7 @@ work with any of the [existing hooks](#setup-hooks). `unittestCheckHook` is a hook which will substitute the setuptools `test` command for a [`checkPhase`](#ssec-check-phase) which runs `python -m unittest discover`: -``` +```nix nativeCheckInputs = [ unittestCheckHook ]; @@ -1409,7 +1409,7 @@ using the popular Sphinx documentation generator. It is setup to automatically find common documentation source paths and render them using the default `html` style. -``` +```nix outputs = [ "out" "doc" @@ -1424,7 +1424,7 @@ The hook will automatically build and install the artifact into the `doc` output, if it exists. It also provides an automatic diversion for the artifacts of the `man` builder into the `man` target. -``` +```nix outputs = [ "out" "doc" @@ -1441,7 +1441,7 @@ for the artifacts of the `man` builder into the `man` target. Overwrite `sphinxRoot` when the hook is unable to find your documentation source root. -``` +```nix # Configure sphinxRoot for uncommon paths sphinxRoot = "weird/docs/path"; ``` @@ -1920,7 +1920,7 @@ The Python interpreters are by default not built with optimizations enabled, bec the builds are in that case not reproducible. To enable optimizations, override the interpreter of interest, e.g using -``` +```nix let pkgs = import ./. {}; mypython = pkgs.python3.override { diff --git a/doc/languages-frameworks/rust.section.md b/doc/languages-frameworks/rust.section.md index 274ee9ce9cc4..f978ac967d88 100644 --- a/doc/languages-frameworks/rust.section.md +++ b/doc/languages-frameworks/rust.section.md @@ -458,7 +458,7 @@ function does not require a hash (unless git dependencies are used) and fetches every dependency as a separate fixed-output derivation. `importCargoLock` can be used as follows: -``` +```nix cargoDeps = rustPlatform.importCargoLock { lockFile = ./Cargo.lock; }; @@ -468,7 +468,7 @@ If the `Cargo.lock` file includes git dependencies, then their output hashes need to be specified since they are not available through the lock file. For example: -``` +```nix cargoDeps = rustPlatform.importCargoLock { lockFile = ./Cargo.lock; outputHashes = { diff --git a/doc/languages-frameworks/swift.section.md b/doc/languages-frameworks/swift.section.md index 213d444f499f..67bcd6fbe741 100644 --- a/doc/languages-frameworks/swift.section.md +++ b/doc/languages-frameworks/swift.section.md @@ -147,7 +147,7 @@ them, we need to make them writable. A special function `swiftpmMakeMutable` is available to replace the symlink with a writable copy: -``` +```nix configurePhase = generated.configure ++ '' # Replace the dependency symlink with a writable copy. swiftpmMakeMutable swift-crypto diff --git a/doc/packages/darwin-builder.section.md b/doc/packages/darwin-builder.section.md index 3a547de53705..7225e630d5cc 100644 --- a/doc/packages/darwin-builder.section.md +++ b/doc/packages/darwin-builder.section.md @@ -81,7 +81,7 @@ $ sudo launchctl kickstart -k system/org.nixos.nix-daemon ## Example flake usage {#sec-darwin-builder-example-flake} -``` +```nix { inputs = { nixpkgs.url = "github:nixos/nixpkgs/nixpkgs-22.11-darwin"; @@ -153,7 +153,7 @@ you may use it to build a modified remote builder with additional storage or mem To do this, you just need to set the `virtualisation.darwin-builder.*` parameters as in the example below and rebuild. -``` +```nix darwin-builder = nixpkgs.lib.nixosSystem { system = linuxSystem; modules = [ diff --git a/doc/stdenv/cross-compilation.chapter.md b/doc/stdenv/cross-compilation.chapter.md index e659e1803807..7ccd94f6e20e 100644 --- a/doc/stdenv/cross-compilation.chapter.md +++ b/doc/stdenv/cross-compilation.chapter.md @@ -159,7 +159,7 @@ Add `mesonEmulatorHook` to `nativeBuildInputs` conditionally on if the target bi e.g. -``` +```nix nativeBuildInputs = [ meson ] ++ lib.optionals (!stdenv.buildPlatform.canExecute stdenv.hostPlatform) [ diff --git a/nixos/doc/manual/release-notes/rl-2211.section.md b/nixos/doc/manual/release-notes/rl-2211.section.md index 1c73d0c9790d..5ad16d15c3d9 100644 --- a/nixos/doc/manual/release-notes/rl-2211.section.md +++ b/nixos/doc/manual/release-notes/rl-2211.section.md @@ -254,7 +254,7 @@ In addition to numerous new and upgraded packages, this release includes the fol - `services.github-runner` and `services.github-runners.` gained the option `serviceOverrides` which allows overriding the systemd `serviceConfig`. If you have been overriding the systemd service configuration (i.e., by defining `systemd.services.github-runner.serviceConfig`), you have to use the `serviceOverrides` option now. Example: - ``` + ```nix services.github-runner.serviceOverrides.SupplementaryGroups = [ "docker" ]; diff --git a/nixos/doc/manual/release-notes/rl-2311.section.md b/nixos/doc/manual/release-notes/rl-2311.section.md index 1aef1828908f..eb6667b3fe8f 100644 --- a/nixos/doc/manual/release-notes/rl-2311.section.md +++ b/nixos/doc/manual/release-notes/rl-2311.section.md @@ -1228,7 +1228,7 @@ Make sure to also check the many updates in the [Nixpkgs library](#sec-release-2 - CoreDNS may be built with external plugins now. This may be done by overriding `externalPlugins` and `vendorHash` arguments like this: - ``` + ```nix services.coredns = { enable = true; package = pkgs.coredns.override { diff --git a/nixos/doc/manual/release-notes/rl-2405.section.md b/nixos/doc/manual/release-notes/rl-2405.section.md index 92702cce1896..0218621ae1c0 100644 --- a/nixos/doc/manual/release-notes/rl-2405.section.md +++ b/nixos/doc/manual/release-notes/rl-2405.section.md @@ -57,7 +57,7 @@ Use `services.pipewire.extraConfig` or `services.pipewire.configPackages` for Pi without perl). Previously, the NixOS activation depended on two perl scripts which can now be replaced via an opt-in mechanism. To make your system perlless, you can use the new perlless profile: - ``` + ```nix { modulesPath, ... }: { imports = [ "${modulesPath}/profiles/perlless.nix" ]; } diff --git a/nixos/modules/i18n/input-method/default.md b/nixos/modules/i18n/input-method/default.md index 42cb8a8d7b6a..3d56c97a1726 100644 --- a/nixos/modules/i18n/input-method/default.md +++ b/nixos/modules/i18n/input-method/default.md @@ -22,7 +22,7 @@ friendly input method user interface. The following snippet can be used to configure IBus: -``` +```nix i18n.inputMethod = { enabled = "ibus"; ibus.engines = with pkgs.ibus-engines; [ anthy hangul mozc ]; @@ -48,7 +48,7 @@ Available extra IBus engines are: methods, it must appear in the list of engines along with `table`. For example: - ``` + ```nix ibus.engines = with pkgs.ibus-engines; [ table table-others ]; ``` @@ -74,7 +74,7 @@ built-in Input Method Engine, Pinyin, QuWei and Table-based input methods. The following snippet can be used to configure Fcitx: -``` +```nix i18n.inputMethod = { enabled = "fcitx5"; fcitx5.addons = with pkgs; [ fcitx5-mozc fcitx5-hangul fcitx5-m17n ]; @@ -110,7 +110,7 @@ phonetic Korean characters (hangul) and pictographic Korean characters The following snippet can be used to configure Nabi: -``` +```nix i18n.inputMethod = { enabled = "nabi"; }; @@ -123,7 +123,7 @@ framework. Applications can use it through so-called bridges. The following snippet can be used to configure uim: -``` +```nix i18n.inputMethod = { enabled = "uim"; }; @@ -141,7 +141,7 @@ etc... The following snippet can be used to configure Hime: -``` +```nix i18n.inputMethod = { enabled = "hime"; }; @@ -153,7 +153,7 @@ Kime is Korean IME. it's built with Rust language and let you get simple, safe, The following snippet can be used to configure Kime: -``` +```nix i18n.inputMethod = { enabled = "kime"; }; diff --git a/nixos/modules/programs/digitalbitbox/default.md b/nixos/modules/programs/digitalbitbox/default.md index 9bca14e97ffe..c93d0f2b7f0a 100644 --- a/nixos/modules/programs/digitalbitbox/default.md +++ b/nixos/modules/programs/digitalbitbox/default.md @@ -4,7 +4,7 @@ Digital Bitbox is a hardware wallet and second-factor authenticator. The `digitalbitbox` programs module may be installed by setting `programs.digitalbitbox` to `true` in a manner similar to -``` +```nix programs.digitalbitbox.enable = true; ``` and bundles the `digitalbitbox` package (see [](#sec-digitalbitbox-package)), @@ -21,7 +21,7 @@ For more information, see . The binaries, `dbb-app` (a GUI tool) and `dbb-cli` (a CLI tool), are available through the `digitalbitbox` package which could be installed as follows: -``` +```nix environment.systemPackages = [ pkgs.digitalbitbox ]; @@ -31,13 +31,13 @@ environment.systemPackages = [ The digitalbitbox hardware package enables the udev rules for Digital Bitbox devices and may be installed as follows: -``` +```nix hardware.digitalbitbox.enable = true; ``` In order to alter the udev rules, one may provide different values for the `udevRule51` and `udevRule52` attributes by means of overriding as follows: -``` +```nix programs.digitalbitbox = { enable = true; package = pkgs.digitalbitbox.override { diff --git a/nixos/modules/programs/plotinus.md b/nixos/modules/programs/plotinus.md index fac3bbad1e08..b59d0d5c188b 100644 --- a/nixos/modules/programs/plotinus.md +++ b/nixos/modules/programs/plotinus.md @@ -12,6 +12,6 @@ palette provides a searchable list of of all menu items in the application. To enable Plotinus, add the following to your {file}`configuration.nix`: -``` +```nix programs.plotinus.enable = true; ``` diff --git a/nixos/modules/programs/zsh/oh-my-zsh.md b/nixos/modules/programs/zsh/oh-my-zsh.md index 6a310006edbf..7e4a41641eea 100644 --- a/nixos/modules/programs/zsh/oh-my-zsh.md +++ b/nixos/modules/programs/zsh/oh-my-zsh.md @@ -9,7 +9,7 @@ prompt themes. The module uses the `oh-my-zsh` package with all available features. The initial setup using Nix expressions is fairly similar to the configuration format of `oh-my-zsh`. -``` +```nix { programs.zsh.ohMyZsh = { enable = true; @@ -33,7 +33,7 @@ environment variable for this which points to a directory with additional scripts. The module can do this as well: -``` +```nix { programs.zsh.ohMyZsh.custom = "~/path/to/custom/scripts"; } @@ -48,7 +48,7 @@ which bundles completion scripts and a plugin for `oh-my-zsh`. Rather than using a single mutable path for `ZSH_CUSTOM`, it's also possible to generate this path from a list of Nix packages: -``` +```nix { pkgs, ... }: { programs.zsh.ohMyZsh.customPkgs = [ @@ -89,7 +89,7 @@ If third-party customizations (e.g. new themes) are supposed to be added to [upstream repo.](https://github.com/robbyrussell/oh-my-zsh/tree/91b771914bc7c43dd7c7a43b586c5de2c225ceb7/plugins) A derivation for `oh-my-zsh` may look like this: -``` +```nix { stdenv, fetchFromGitHub }: stdenv.mkDerivation rec { diff --git a/nixos/modules/services/backup/borgbackup.md b/nixos/modules/services/backup/borgbackup.md index 39141f6ec858..64d9e35720f1 100644 --- a/nixos/modules/services/backup/borgbackup.md +++ b/nixos/modules/services/backup/borgbackup.md @@ -21,7 +21,7 @@ A complete list of options for the Borgbase module may be found ## Basic usage for a local backup {#opt-services-backup-borgbackup-local-directory} A very basic configuration for backing up to a locally accessible directory is: -``` +```nix { opt.services.borgbackup.jobs = { { rootBackup = { @@ -59,7 +59,7 @@ ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAID78zmOyA+5uPG4Ot0hfAy+sLDPU1L4AiIoRYEIVbbQ/ ``` Add the following snippet to your NixOS configuration: -``` +```nix { services.borgbackup.repos = { my_borg_repo = { @@ -80,7 +80,7 @@ that you have stored a secret passphrasse in the file {file}`/run/keys/borgbackup_passphrase`, which should be only accessible by root -``` +```nix { services.borgbackup.jobs = { backupToLocalServer = { diff --git a/nixos/modules/services/databases/foundationdb.md b/nixos/modules/services/databases/foundationdb.md index 0815c139152f..af17c9f95999 100644 --- a/nixos/modules/services/databases/foundationdb.md +++ b/nixos/modules/services/databases/foundationdb.md @@ -15,7 +15,7 @@ key-value store. To enable FoundationDB, add the following to your {file}`configuration.nix`: -``` +```nix services.foundationdb.enable = true; services.foundationdb.package = pkgs.foundationdb71; # FoundationDB 7.1.x ``` @@ -109,7 +109,7 @@ default configuration. See below for more on scaling to increase this. FoundationDB stores all data for all server processes under {file}`/var/lib/foundationdb`. You can override this using {option}`services.foundationdb.dataDir`, e.g. -``` +```nix services.foundationdb.dataDir = "/data/fdb"; ``` @@ -265,7 +265,7 @@ directories. For example, to create backups in {command}`/opt/fdb-backups`, first set up the paths in the module options: -``` +```nix services.foundationdb.extraReadWritePaths = [ "/opt/fdb-backups" ]; ``` diff --git a/nixos/modules/services/databases/postgresql.md b/nixos/modules/services/databases/postgresql.md index 3ff1f00fa9cf..ce1f2856b019 100644 --- a/nixos/modules/services/databases/postgresql.md +++ b/nixos/modules/services/databases/postgresql.md @@ -15,7 +15,7 @@ PostgreSQL is an advanced, free relational database. ## Configuring {#module-services-postgres-configuring} To enable PostgreSQL, add the following to your {file}`configuration.nix`: -``` +```nix services.postgresql.enable = true; services.postgresql.package = pkgs.postgresql_15; ``` @@ -35,7 +35,7 @@ alice=> --> By default, PostgreSQL stores its databases in {file}`/var/lib/postgresql/$psqlSchema`. You can override this using [](#opt-services.postgresql.dataDir), e.g. -``` +```nix services.postgresql.dataDir = "/data/postgresql"; ``` @@ -174,7 +174,7 @@ $ nix-instantiate --eval -A postgresql_13.psqlSchema "13" ``` For an upgrade, a script like this can be used to simplify the process: -``` +```nix { config, pkgs, ... }: { environment.systemPackages = [ @@ -256,7 +256,7 @@ postgresql_15.pkgs.pg_partman postgresql_15.pkgs.pgroonga ``` To add plugins via NixOS configuration, set `services.postgresql.extraPlugins`: -``` +```nix services.postgresql.package = pkgs.postgresql_12; services.postgresql.extraPlugins = ps: with ps; [ pg_repack @@ -265,7 +265,7 @@ services.postgresql.extraPlugins = ps: with ps; [ ``` You can build custom PostgreSQL-with-plugins (to be used outside of NixOS) using function `.withPackages`. For example, creating a custom PostgreSQL package in an overlay can look like: -``` +```nix self: super: { postgresql_custom = self.postgresql_12.withPackages (ps: [ ps.pg_repack @@ -275,7 +275,7 @@ self: super: { ``` Here's a recipe on how to override a particular plugin through an overlay: -``` +```nix self: super: { postgresql_15 = super.postgresql_15// { pkgs = super.postgresql_15.pkgs // { diff --git a/nixos/modules/services/databases/tigerbeetle.md b/nixos/modules/services/databases/tigerbeetle.md index 47394d443059..ed05c982350d 100644 --- a/nixos/modules/services/databases/tigerbeetle.md +++ b/nixos/modules/services/databases/tigerbeetle.md @@ -7,7 +7,7 @@ TigerBeetle is a distributed financial accounting database designed for mission critical safety and performance. To enable TigerBeetle, add the following to your {file}`configuration.nix`: -``` +```nix services.tigerbeetle.enable = true; ``` @@ -20,7 +20,7 @@ By default, TigerBeetle will only listen on a local interface. To configure it to listen on a different interface (and to configure it to connect to other replicas, if you're creating more than one), you'll have to set the `addresses` option. Note that the TigerBeetle module won't open any firewall ports automatically, so if you configure it to listen on an external interface, you'll need to ensure that connections can reach it: -``` +```nix services.tigerbeetle = { enable = true; addresses = [ "0.0.0.0:3001" ]; diff --git a/nixos/modules/services/desktops/flatpak.md b/nixos/modules/services/desktops/flatpak.md index af71d85b5a15..57aa41b56224 100644 --- a/nixos/modules/services/desktops/flatpak.md +++ b/nixos/modules/services/desktops/flatpak.md @@ -8,7 +8,7 @@ Flatpak is a system for building, distributing, and running sandboxed desktop applications on Linux. To enable Flatpak, add the following to your {file}`configuration.nix`: -``` +```nix services.flatpak.enable = true; ``` @@ -16,7 +16,7 @@ For the sandboxed apps to work correctly, desktop integration portals need to be installed. If you run GNOME, this will be handled automatically for you; in other cases, you will need to add something like the following to your {file}`configuration.nix`: -``` +```nix xdg.portal.extraPortals = [ pkgs.xdg-desktop-portal-gtk ]; xdg.portal.config.common.default = "gtk"; ``` diff --git a/nixos/modules/services/development/athens.md b/nixos/modules/services/development/athens.md index 77663db509d5..142cc74b5d0d 100644 --- a/nixos/modules/services/development/athens.md +++ b/nixos/modules/services/development/athens.md @@ -18,7 +18,7 @@ A complete list of options for the Athens module may be found ## Basic usage for a caching proxy configuration {#opt-services-development-athens-caching-proxy} A very basic configuration for Athens that acts as a caching and forwarding HTTP proxy is: -``` +```nix { services.athens = { enable = true; @@ -28,7 +28,7 @@ A very basic configuration for Athens that acts as a caching and forwarding HTTP If you want to prevent Athens from writing to disk, you can instead configure it to cache modules only in memory: -``` +```nix { services.athens = { enable = true; @@ -39,7 +39,7 @@ If you want to prevent Athens from writing to disk, you can instead configure it To use the local proxy in Go builds, you can set the proxy as environment variable: -``` +```nix { environment.variables = { GOPROXY = "http://localhost:3000" diff --git a/nixos/modules/services/development/blackfire.md b/nixos/modules/services/development/blackfire.md index e2e7e4780c79..5a7fbe68f7d2 100644 --- a/nixos/modules/services/development/blackfire.md +++ b/nixos/modules/services/development/blackfire.md @@ -7,7 +7,7 @@ [Blackfire](https://blackfire.io) is a proprietary tool for profiling applications. There are several languages supported by the product but currently only PHP support is packaged in Nixpkgs. The back-end consists of a module that is loaded into the language runtime (called *probe*) and a service (*agent*) that the probe connects to and that sends the profiles to the server. To use it, you will need to enable the agent and the probe on your server. The exact method will depend on the way you use PHP but here is an example of NixOS configuration for PHP-FPM: -``` +```nix let php = pkgs.php.withExtensions ({ enabled, all }: enabled ++ (with all; [ blackfire diff --git a/nixos/modules/services/development/livebook.md b/nixos/modules/services/development/livebook.md index 5315f2c2755a..3a3d9584675b 100644 --- a/nixos/modules/services/development/livebook.md +++ b/nixos/modules/services/development/livebook.md @@ -9,7 +9,7 @@ Enabling the `livebook` service creates a user [`systemd`](https://www.freedesktop.org/wiki/Software/systemd/) unit which runs the server. -``` +```nix { ... }: { @@ -51,6 +51,6 @@ some features require additional packages. For example, the machine learning Kinos require `gcc` and `gnumake`. To add these, use `extraPackages`: -``` +```nix services.livebook.extraPackages = with pkgs; [ gcc gnumake ]; ``` diff --git a/nixos/modules/services/editors/emacs.md b/nixos/modules/services/editors/emacs.md index 02f47b098d86..9164ee2adcb5 100644 --- a/nixos/modules/services/editors/emacs.md +++ b/nixos/modules/services/editors/emacs.md @@ -178,7 +178,7 @@ file {file}`configuration.nix` to make it contain: ::: {.example #module-services-emacs-configuration-nix} ### Custom Emacs in `configuration.nix` -``` +```nix { environment.systemPackages = [ # [...] @@ -203,7 +203,7 @@ adding it to your {file}`~/.config/nixpkgs/config.nix` (see ::: {.example #module-services-emacs-config-nix} ### Custom Emacs in `~/.config/nixpkgs/config.nix` -``` +```nix { packageOverrides = super: let self = super.pkgs; in { myemacs = import ./emacs.nix { pkgs = self; }; @@ -228,7 +228,7 @@ only use {command}`emacsclient`), you can change your file ::: {.example #ex-emacsGtk3Nix} ### Custom Emacs build -``` +```nix { pkgs ? import {} }: let myEmacs = (pkgs.emacs.override { @@ -262,7 +262,7 @@ with the user's login session. To install and enable the {command}`systemd` user service for Emacs daemon, add the following to your {file}`configuration.nix`: -``` +```nix services.emacs.enable = true; ``` @@ -323,7 +323,7 @@ In general, {command}`systemd` user services are globally enabled by symlinks in {file}`/etc/systemd/user`. In the case where Emacs daemon is not wanted for all users, it is possible to install the service but not globally enable it: -``` +```nix services.emacs.enable = false; services.emacs.install = true; ``` diff --git a/nixos/modules/services/mail/mailman.md b/nixos/modules/services/mail/mailman.md index 55b61f8a2582..446aa1f921b6 100644 --- a/nixos/modules/services/mail/mailman.md +++ b/nixos/modules/services/mail/mailman.md @@ -9,7 +9,7 @@ an existing, securely configured Postfix setup, as it does not automatically con ## Basic usage with Postfix {#module-services-mailman-basic-usage} For a basic configuration with Postfix as the MTA, the following settings are suggested: -``` +```nix { config, ... }: { services.postfix = { enable = true; @@ -50,7 +50,7 @@ necessary, but outside the scope of the Mailman module. ## Using with other MTAs {#module-services-mailman-other-mtas} Mailman also supports other MTA, though with a little bit more configuration. For example, to use Mailman with Exim, you can use the following settings: -``` +```nix { config, ... }: { services = { mailman = { diff --git a/nixos/modules/services/matrix/mjolnir.md b/nixos/modules/services/matrix/mjolnir.md index f6994eeb8fa5..2594f05ce27b 100644 --- a/nixos/modules/services/matrix/mjolnir.md +++ b/nixos/modules/services/matrix/mjolnir.md @@ -46,7 +46,7 @@ autoconfigure a new Pantalaimon instance, which will connect to the homeserver set in [services.mjolnir.homeserverUrl](#opt-services.mjolnir.homeserverUrl) and Mjolnir itself will be configured to connect to the new Pantalaimon instance. -``` +```nix { services.mjolnir = { enable = true; @@ -78,7 +78,7 @@ uses across an entire homeserver. To use the Antispam Module, add `matrix-synapse-plugins.matrix-synapse-mjolnir-antispam` to the Synapse plugin list and enable the `mjolnir.Module` module. -``` +```nix { services.matrix-synapse = { plugins = with pkgs; [ diff --git a/nixos/modules/services/matrix/synapse.md b/nixos/modules/services/matrix/synapse.md index 9c9c025fc5f5..7f6587ce09df 100644 --- a/nixos/modules/services/matrix/synapse.md +++ b/nixos/modules/services/matrix/synapse.md @@ -23,7 +23,7 @@ synapse server for the `example.org` domain, served from the host `myhostname.example.org`. For more information, please refer to the [installation instructions of Synapse](https://element-hq.github.io/synapse/latest/setup/installation.html) . -``` +```nix { pkgs, lib, config, ... }: let fqdn = "${config.networking.hostName}.${config.networking.domain}"; @@ -158,7 +158,7 @@ in an additional file like this: by `matrix-synapse`. - Include the file like this in your configuration: - ``` + ```nix { services.matrix-synapse.extraConfigFiles = [ "/run/secrets/matrix-shared-secret" @@ -190,7 +190,7 @@ fill in the required connection details automatically when you enter your Matrix Identifier. See [Try Matrix Now!](https://matrix.org/docs/projects/try-matrix-now.html) for a list of existing clients and their supported featureset. -``` +```nix { services.nginx.virtualHosts."element.${fqdn}" = { enableACME = true; diff --git a/nixos/modules/services/misc/anki-sync-server.md b/nixos/modules/services/misc/anki-sync-server.md index 5d2b4da4d2fc..f58d3d8ad0da 100644 --- a/nixos/modules/services/misc/anki-sync-server.md +++ b/nixos/modules/services/misc/anki-sync-server.md @@ -16,7 +16,7 @@ unit which runs the sync server with an isolated user using the systemd `DynamicUser` option. This can be done by enabling the `anki-sync-server` service: -``` +```nix { ... }: { @@ -27,7 +27,7 @@ This can be done by enabling the `anki-sync-server` service: It is necessary to set at least one username-password pair under {option}`services.anki-sync-server.users`. For example -``` +```nix { services.anki-sync-server.users = [ { @@ -50,7 +50,7 @@ you want to expose the sync server directly to other computers (not recommended in most circumstances, because the sync server doesn't use HTTPS), then set the following options: -``` +```nix { services.anki-sync-server.host = "0.0.0.0"; services.anki-sync-server.openFirewall = true; diff --git a/nixos/modules/services/misc/gitlab.md b/nixos/modules/services/misc/gitlab.md index 916b23584ed0..ea1b95607c63 100644 --- a/nixos/modules/services/misc/gitlab.md +++ b/nixos/modules/services/misc/gitlab.md @@ -10,7 +10,7 @@ configure a webserver to proxy HTTP requests to the socket. For instance, the following configuration could be used to use nginx as frontend proxy: -``` +```nix services.nginx = { enable = true; recommendedGzipSettings = true; @@ -35,7 +35,7 @@ The default state dir is `/var/gitlab/state`. This is where all data like the repositories and uploads will be stored. A basic configuration with some custom settings could look like this: -``` +```nix services.gitlab = { enable = true; databasePasswordFile = "/var/keys/gitlab/db_password"; diff --git a/nixos/modules/services/misc/sourcehut/default.md b/nixos/modules/services/misc/sourcehut/default.md index 44d58aa0bef3..5f841833a954 100644 --- a/nixos/modules/services/misc/sourcehut/default.md +++ b/nixos/modules/services/misc/sourcehut/default.md @@ -12,7 +12,7 @@ This NixOS module also provides basic configuration integrating Sourcehut into l and `services.postgresql` services. A very basic configuration may look like this: -``` +```nix { pkgs, ... }: let fqdn = diff --git a/nixos/modules/services/misc/weechat.md b/nixos/modules/services/misc/weechat.md index 21f41be5b4a0..fb20ebe1e4db 100644 --- a/nixos/modules/services/misc/weechat.md +++ b/nixos/modules/services/misc/weechat.md @@ -12,7 +12,7 @@ unit which runs the chat client in a detached session. This can be done by enabling the `weechat` service: -``` +```nix { ... }: { @@ -30,7 +30,7 @@ allow your another user to attach to this session, the `screenrc` needs to be tweaked by adding [multiuser](https://www.gnu.org/software/screen/manual/html_node/Multiuser.html#Multiuser) support: -``` +```nix { programs.screen.screenrc = '' multiuser on diff --git a/nixos/modules/services/monitoring/goss.md b/nixos/modules/services/monitoring/goss.md index 1e636aa3bdf3..bf91d42011fa 100644 --- a/nixos/modules/services/monitoring/goss.md +++ b/nixos/modules/services/monitoring/goss.md @@ -7,7 +7,7 @@ for validating a server's configuration. A minimal configuration looks like this: -``` +```nix { services.goss = { enable = true; diff --git a/nixos/modules/services/monitoring/prometheus/exporters.md b/nixos/modules/services/monitoring/prometheus/exporters.md index 34fadecadc74..84de17789601 100644 --- a/nixos/modules/services/monitoring/prometheus/exporters.md +++ b/nixos/modules/services/monitoring/prometheus/exporters.md @@ -9,7 +9,7 @@ One of the most common exporters is the [node exporter](https://github.com/prometheus/node_exporter), it provides hardware and OS metrics from the host it's running on. The exporter could be configured as follows: -``` +```nix services.prometheus.exporters.node = { enable = true; port = 9100; @@ -35,7 +35,7 @@ configuration see `man configuration.nix` or search through the [available options](https://nixos.org/nixos/options.html#prometheus.exporters). Prometheus can now be configured to consume the metrics produced by the exporter: -``` +```nix services.prometheus = { # ... @@ -75,7 +75,7 @@ example: `nixos/modules/services/monitoring/prometheus/exporters/` directory, which will be called postfix.nix and contains all exporter specific options and configuration: - ``` + ```nix # nixpkgs/nixos/modules/services/prometheus/exporters/postfix.nix { config, lib, pkgs, options }: @@ -148,7 +148,7 @@ example: Should an exporter option change at some point, it is possible to add information about the change to the exporter definition similar to `nixpkgs/nixos/modules/rename.nix`: -``` +```nix { config, lib, pkgs, options }: with lib; diff --git a/nixos/modules/services/network-filesystems/litestream/default.md b/nixos/modules/services/network-filesystems/litestream/default.md index 8d8486507b77..626d69df84a5 100644 --- a/nixos/modules/services/network-filesystems/litestream/default.md +++ b/nixos/modules/services/network-filesystems/litestream/default.md @@ -8,7 +8,7 @@ replication tool for SQLite. Litestream service is managed by a dedicated user named `litestream` which needs permission to the database file. Here's an example config which gives required permissions to access [grafana database](#opt-services.grafana.settings.database.path): -``` +```nix { pkgs, ... }: { users.users.litestream.extraGroups = [ "grafana" ]; diff --git a/nixos/modules/services/networking/pleroma.md b/nixos/modules/services/networking/pleroma.md index 7c499e1c616c..4fb3996b70e8 100644 --- a/nixos/modules/services/networking/pleroma.md +++ b/nixos/modules/services/networking/pleroma.md @@ -17,7 +17,7 @@ The `config.exs` file can be further customized following the instructions on th ## Initializing the database {#module-services-pleroma-initialize-db} First, the Postgresql service must be enabled in the NixOS configuration -``` +```nix services.postgresql = { enable = true; package = pkgs.postgresql_13; @@ -38,7 +38,7 @@ $ sudo -u postgres psql -f setup.psql In this section we will enable the Pleroma service only locally, so its configurations can be improved incrementally. This is an example of configuration, where [](#opt-services.pleroma.configs) option contains the content of the file `config.exs`, generated [in the first section](#module-services-pleroma-generate-config), but with the secrets (database password, endpoint secret key, salts, etc.) removed. Removing secrets is important, because otherwise they will be stored publicly in the Nix store. -``` +```nix services.pleroma = { enable = true; secretConfigFile = "/var/lib/pleroma/secrets.exs"; @@ -121,7 +121,7 @@ $ pleroma_ctl user new --admin --moderator --password `): -``` +```nix /* ... */ { nextcloud17 = generic { diff --git a/nixos/modules/services/web-apps/plausible.md b/nixos/modules/services/web-apps/plausible.md index 1328ce69441a..d3673eabddd4 100644 --- a/nixos/modules/services/web-apps/plausible.md +++ b/nixos/modules/services/web-apps/plausible.md @@ -11,7 +11,7 @@ $ openssl rand -base64 64 ``` After that, `plausible` can be deployed like this: -``` +```nix { services.plausible = { enable = true; diff --git a/nixos/modules/services/web-servers/garage.md b/nixos/modules/services/web-servers/garage.md index 3a9b85ce0603..fbefd1914d87 100644 --- a/nixos/modules/services/web-servers/garage.md +++ b/nixos/modules/services/web-servers/garage.md @@ -80,7 +80,7 @@ If major-releases will be abandoned by upstream, we should check first if those in NixOS for a safe upgrade-path before removing those. In that case we should keep those packages, but mark them as insecure in an expression like this (in ``): -``` +```nix /* ... */ { garage_0_7_3 = generic { diff --git a/nixos/modules/services/x11/desktop-managers/gnome.md b/nixos/modules/services/x11/desktop-managers/gnome.md index aa36f66970ec..e0cfb03580db 100644 --- a/nixos/modules/services/x11/desktop-managers/gnome.md +++ b/nixos/modules/services/x11/desktop-managers/gnome.md @@ -8,7 +8,7 @@ All of the core apps, optional apps, games, and core developer tools from GNOME To enable the GNOME desktop use: -``` +```nix services.xserver.desktopManager.gnome.enable = true; services.xserver.displayManager.gdm.enable = true; ``` @@ -23,7 +23,7 @@ The default applications used in NixOS are very minimal, inspired by the default If you’d like to only use the GNOME desktop and not the apps, you can disable them with: -``` +```nix services.gnome.core-utilities.enable = false; ``` @@ -37,7 +37,7 @@ Note that this mechanism can only exclude core utilities, games and core develop It is also possible to disable many of the [core services](https://github.com/NixOS/nixpkgs/blob/b8ec4fd2a4edc4e30d02ba7b1a2cc1358f3db1d5/nixos/modules/services/x11/desktop-managers/gnome.nix#L329-L348). For example, if you do not need indexing files, you can disable Tracker with: -``` +```nix services.gnome.tracker-miners.enable = false; services.gnome.tracker.enable = false; ``` @@ -48,7 +48,7 @@ Note, however, that doing so is not supported and might break some applications. You can install all of the GNOME games with: -``` +```nix services.gnome.games.enable = true; ``` @@ -56,7 +56,7 @@ services.gnome.games.enable = true; You can install GNOME core developer tools with: -``` +```nix services.gnome.core-developer-tools.enable = true; ``` @@ -64,7 +64,7 @@ services.gnome.core-developer-tools.enable = true; GNOME Flashback provides a desktop environment based on the classic GNOME 2 architecture. You can enable the default GNOME Flashback session, which uses the Metacity window manager, with: -``` +```nix services.xserver.desktopManager.gnome.flashback.enableMetacity = true; ``` @@ -72,7 +72,7 @@ It is also possible to create custom sessions that replace Metacity with a diffe The following example uses `xmonad` window manager: -``` +```nix services.xserver.desktopManager.gnome.flashback.customSessions = [ { wmName = "xmonad"; @@ -104,7 +104,7 @@ Some packages that include Shell extensions, like `gnome.gpaste`, don’t have t You can install them like any other package: -``` +```nix environment.systemPackages = [ gnomeExtensions.dash-to-dock gnomeExtensions.gsconnect @@ -136,7 +136,7 @@ You can use `dconf-editor` tool to explore which GSettings you can set. ### Example {#sec-gnome-gsettings-overrides-example} -``` +```nix services.xserver.desktopManager.gnome = { extraGSettingsOverrides = '' # Change default background diff --git a/nixos/modules/services/x11/desktop-managers/pantheon.md b/nixos/modules/services/x11/desktop-managers/pantheon.md index 1c14ede84749..664bd7f31eeb 100644 --- a/nixos/modules/services/x11/desktop-managers/pantheon.md +++ b/nixos/modules/services/x11/desktop-managers/pantheon.md @@ -5,16 +5,16 @@ Pantheon is the desktop environment created for the elementary OS distribution. ## Enabling Pantheon {#sec-pantheon-enable} All of Pantheon is working in NixOS and the applications should be available, aside from a few [exceptions](https://github.com/NixOS/nixpkgs/issues/58161). To enable Pantheon, set -``` +```nix services.xserver.desktopManager.pantheon.enable = true; ``` This automatically enables LightDM and Pantheon's LightDM greeter. If you'd like to disable this, set -``` +```nix services.xserver.displayManager.lightdm.greeters.pantheon.enable = false; services.xserver.displayManager.lightdm.enable = false; ``` but please be aware using Pantheon without LightDM as a display manager will break screenlocking from the UI. The NixOS module for Pantheon installs all of Pantheon's default applications. If you'd like to not install Pantheon's apps, set -``` +```nix services.pantheon.apps.enable = false; ``` You can also use [](#opt-environment.pantheon.excludePackages) to remove any other app (like `elementary-mail`). @@ -29,7 +29,7 @@ Wingpanel and Switchboard work differently than they do in other distributions, to configure the programs with plugs or indicators. The difference in NixOS is both these programs are patched to load plugins from a directory that is the value of an environment variable. All of which is controlled in Nix. If you need to configure the particular packages manually you can override the packages like: -``` +```nix wingpanel-with-indicators.override { indicators = [ pkgs.some-special-indicator @@ -43,7 +43,7 @@ switchboard-with-plugs.override { }; ``` please note that, like how the NixOS options describe these as extra plugins, this would only add to the default plugins included with the programs. If for some reason you'd like to configure which plugins to use exactly, both packages have an argument for this: -``` +```nix wingpanel-with-indicators.override { useDefaultIndicators = false; indicators = specialListOfIndicators; diff --git a/nixos/modules/system/boot/clevis.md b/nixos/modules/system/boot/clevis.md index dcbf55de60a8..cdd5d12753da 100644 --- a/nixos/modules/system/boot/clevis.md +++ b/nixos/modules/system/boot/clevis.md @@ -39,12 +39,12 @@ For more complete documentation on how to generate a secret with clevis, see the In order to activate unattended decryption of a resource at boot, enable the `clevis` module: -``` +```nix boot.initrd.clevis.enable = true; ``` Then, specify the device you want to decrypt using a given clevis secret. Clevis will automatically try to decrypt the device at boot and will fallback to interactive unlocking if the decryption policy is not fulfilled. -``` +```nix boot.initrd.clevis.devices."/dev/nvme0n1p1".secretFile = ./nvme0n1p1.jwe; ``` diff --git a/pkgs/README.md b/pkgs/README.md index f8a79acdbd29..5fbc15765966 100644 --- a/pkgs/README.md +++ b/pkgs/README.md @@ -564,7 +564,7 @@ We use jbidwatcher as an example for a discontinued project here. For example in this case: - ``` + ```nix jbidwatcher = throw "jbidwatcher was discontinued in march 2021"; # added 2021-03-15 ``` diff --git a/pkgs/servers/nextcloud/packages/README.md b/pkgs/servers/nextcloud/packages/README.md index 469b80ef694d..093c8ffd47d0 100644 --- a/pkgs/servers/nextcloud/packages/README.md +++ b/pkgs/servers/nextcloud/packages/README.md @@ -24,7 +24,7 @@ After that you can commit and submit the changes. The apps will be available in the namespace `nextcloud25Packages.apps`. Using it together with the Nextcloud module could look like this: -``` +```nix services.nextcloud = { enable = true; package = pkgs.nextcloud25; diff --git a/pkgs/servers/web-apps/wordpress/packages/README.md b/pkgs/servers/web-apps/wordpress/packages/README.md index 6ca50e1d9c4a..735fe8ee32cf 100644 --- a/pkgs/servers/web-apps/wordpress/packages/README.md +++ b/pkgs/servers/web-apps/wordpress/packages/README.md @@ -29,7 +29,7 @@ After that you can commit and submit the changes. The plugins will be available in the namespace `wordpressPackages.plugins`. Using it together with the Wordpress module could look like this: -``` +```nix services.wordpress = { sites."blog.${config.networking.domain}" = { plugins = with pkgs.wordpressPackages.plugins; [ From fcc95ff8172cc68a0d2d52aa1e8ef2120d2904ec Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Janne=20He=C3=9F?= Date: Wed, 27 Mar 2024 19:10:27 +0100 Subject: [PATCH 080/116] treewide: Fix all Nix ASTs in all markdown files This allows for correct highlighting and maybe future automatic formatting. The AST was verified to work with nixfmt only. --- CONTRIBUTING.md | 104 ++--- doc/build-helpers/fetchers.chapter.md | 10 +- .../images/dockertools.section.md | 1 + .../special/checkpoint-build.section.md | 12 +- doc/build-helpers/testers.chapter.md | 54 +-- .../trivial-build-helpers.chapter.md | 34 +- doc/functions/nix-gitignore.section.md | 29 +- doc/hooks/breakpoint.section.md | 4 +- doc/hooks/installShellFiles.section.md | 32 +- doc/hooks/mpi-check-hook.section.md | 13 +- doc/languages-frameworks/agda.section.md | 5 +- doc/languages-frameworks/android.section.md | 26 +- doc/languages-frameworks/beam.section.md | 8 +- doc/languages-frameworks/bower.section.md | 14 +- doc/languages-frameworks/chicken.section.md | 6 +- doc/languages-frameworks/crystal.section.md | 6 +- doc/languages-frameworks/cuda.section.md | 18 +- doc/languages-frameworks/dhall.section.md | 10 +- doc/languages-frameworks/dotnet.section.md | 2 +- doc/languages-frameworks/gnome.section.md | 48 +-- doc/languages-frameworks/go.section.md | 78 ++-- doc/languages-frameworks/idris.section.md | 4 +- doc/languages-frameworks/java.section.md | 36 +- .../javascript.section.md | 70 ++-- doc/languages-frameworks/lisp.section.md | 8 +- doc/languages-frameworks/lua.section.md | 37 +- doc/languages-frameworks/maven.section.md | 2 +- doc/languages-frameworks/ocaml.section.md | 1 + doc/languages-frameworks/perl.section.md | 74 ++-- doc/languages-frameworks/php.section.md | 6 +- .../pkg-config.section.md | 4 +- doc/languages-frameworks/python.section.md | 90 +++-- doc/languages-frameworks/ruby.section.md | 2 + doc/languages-frameworks/rust.section.md | 66 ++-- doc/languages-frameworks/swift.section.md | 26 +- doc/languages-frameworks/vim.section.md | 16 +- doc/packages/darwin-builder.section.md | 3 + doc/packages/eclipse.section.md | 66 ++-- doc/packages/emacs.section.md | 13 +- doc/packages/steam.section.md | 2 +- doc/packages/urxvt.section.md | 4 +- doc/packages/weechat.section.md | 6 +- doc/stdenv/cross-compilation.chapter.md | 28 +- doc/stdenv/meta.chapter.md | 50 ++- doc/stdenv/multiple-output.chapter.md | 4 +- doc/stdenv/stdenv.chapter.md | 94 +++-- doc/using/configuration.chapter.md | 2 +- doc/using/overlays.chapter.md | 2 +- doc/using/overrides.chapter.md | 54 +-- maintainers/README.md | 8 +- .../administration/cleaning-store.chapter.md | 6 +- .../container-networking.section.md | 12 +- .../administration/control-groups.chapter.md | 8 +- .../declarative-containers.section.md | 28 +- .../administration/service-mgmt.chapter.md | 4 +- .../configuration/abstractions.section.md | 6 +- .../ad-hoc-network-config.section.md | 10 +- .../adding-custom-packages.section.md | 34 +- .../configuration/config-file.section.md | 60 +-- .../customizing-packages.section.md | 52 +-- .../declarative-packages.section.md | 4 +- .../configuration/file-systems.chapter.md | 10 +- .../manual/configuration/firewall.section.md | 18 +- .../manual/configuration/gpu-accel.chapter.md | 58 +-- .../configuration/ipv4-config.section.md | 20 +- .../configuration/ipv6-config.section.md | 28 +- .../configuration/kubernetes.chapter.md | 30 +- .../configuration/linux-kernel.chapter.md | 54 ++- .../luks-file-systems.section.md | 34 +- .../configuration/modularity.section.md | 10 +- .../configuration/network-manager.section.md | 16 +- .../manual/configuration/overlayfs.section.md | 28 +- .../manual/configuration/profiles.chapter.md | 8 +- .../renaming-interfaces.section.md | 20 +- nixos/doc/manual/configuration/ssh.section.md | 10 +- .../configuration/subversion.chapter.md | 51 +-- .../manual/configuration/user-mgmt.chapter.md | 28 +- .../manual/configuration/wayland.chapter.md | 6 +- .../manual/configuration/wireless.section.md | 40 +- .../manual/configuration/x-windows.chapter.md | 144 ++++--- .../doc/manual/configuration/xfce.chapter.md | 22 +- .../development/activation-script.section.md | 16 +- .../manual/development/assertions.section.md | 4 +- .../manual/development/etc-overlay.section.md | 8 +- .../development/meta-attributes.section.md | 4 +- .../non-switchable-systems.section.md | 2 +- .../option-declarations.section.md | 42 ++- .../manual/development/option-def.section.md | 78 ++-- .../development/option-types.section.md | 122 +++--- .../development/settings-options.section.md | 40 +- .../development/unit-handling.section.md | 12 +- .../development/writing-modules.chapter.md | 8 +- .../writing-nixos-tests.section.md | 16 +- ...lding-images-via-systemd-repart.chapter.md | 28 +- .../installation/changing-config.chapter.md | 4 +- .../installing-behind-a-proxy.section.md | 6 +- .../installing-from-other-distro.section.md | 18 +- .../installing-virtualbox-guest.section.md | 8 +- .../manual/installation/upgrading.chapter.md | 10 +- .../manual/release-notes/rl-1509.section.md | 8 +- .../manual/release-notes/rl-1703.section.md | 4 +- .../manual/release-notes/rl-2009.section.md | 34 +- .../manual/release-notes/rl-2205.section.md | 4 + .../manual/release-notes/rl-2211.section.md | 8 +- .../manual/release-notes/rl-2305.section.md | 64 ++-- .../manual/release-notes/rl-2311.section.md | 40 +- .../manual/release-notes/rl-2405.section.md | 3 +- nixos/modules/i18n/input-method/default.md | 56 +-- .../modules/programs/digitalbitbox/default.md | 28 +- nixos/modules/programs/plotinus.md | 4 +- nixos/modules/security/acme/default.md | 356 +++++++++--------- nixos/modules/services/audio/castopod.md | 20 +- nixos/modules/services/backup/borgbackup.md | 25 +- .../services/databases/foundationdb.md | 14 +- .../modules/services/databases/postgresql.md | 30 +- .../modules/services/databases/tigerbeetle.md | 4 + nixos/modules/services/desktops/flatpak.md | 4 + nixos/modules/services/development/athens.md | 2 +- .../modules/services/development/livebook.md | 4 +- nixos/modules/services/editors/emacs.md | 12 +- nixos/modules/services/matrix/maubot.md | 90 ++--- nixos/modules/services/misc/forgejo.md | 34 +- nixos/modules/services/misc/gitlab.md | 78 ++-- .../services/misc/sourcehut/default.md | 6 +- .../services/monitoring/certspotter.md | 48 +-- .../modules/services/monitoring/parsedmarc.md | 124 +++--- .../monitoring/prometheus/exporters.md | 6 +- .../services/networking/firefox-syncserver.md | 22 +- .../modules/services/networking/mosquitto.md | 73 ++-- nixos/modules/services/networking/netbird.md | 26 +- nixos/modules/services/networking/pleroma.md | 162 ++++---- nixos/modules/services/networking/prosody.md | 56 +-- nixos/modules/services/search/meilisearch.md | 4 +- nixos/modules/services/web-apps/akkoma.md | 268 +++++++------ nixos/modules/services/web-apps/discourse.md | 218 ++++++----- nixos/modules/services/web-apps/gotosocial.md | 52 +-- nixos/modules/services/web-apps/keycloak.md | 22 +- nixos/modules/services/web-apps/lemmy.md | 14 +- nixos/modules/services/web-apps/pict-rs.md | 4 +- .../services/web-apps/suwayomi-server.md | 2 +- .../services/x11/desktop-managers/gnome.md | 88 +++-- .../services/x11/desktop-managers/pantheon.md | 27 +- nixos/modules/system/boot/clevis.md | 8 +- pkgs/README.md | 68 ++-- pkgs/by-name/README.md | 18 +- pkgs/development/misc/resholve/README.md | 116 +++--- .../custom-components/README.md | 2 +- .../custom-lovelace-modules/README.md | 4 +- pkgs/servers/nextcloud/packages/README.md | 20 +- .../web-apps/wordpress/packages/README.md | 22 +- 150 files changed, 2896 insertions(+), 2087 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 115dd993ea62..699115d95378 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -557,7 +557,7 @@ Names of files and directories should be in lowercase, with dashes between words ```nix foo { - arg = ...; + arg = "..."; } ``` @@ -566,14 +566,14 @@ Names of files and directories should be in lowercase, with dashes between words ```nix foo { - arg = ...; + arg = "..."; } ``` Also fine is ```nix - foo { arg = ...; } + foo { arg = "..."; } ``` if it's a short call. @@ -581,41 +581,45 @@ Names of files and directories should be in lowercase, with dashes between words - In attribute sets or lists that span multiple lines, the attribute names or list elements should be aligned: ```nix - # A long list. - list = [ - elem1 - elem2 - elem3 - ]; + { + # A long list. + list = [ + elem1 + elem2 + elem3 + ]; - # A long attribute set. - attrs = { - attr1 = short_expr; - attr2 = - if true then big_expr else big_expr; - }; + # A long attribute set. + attrs = { + attr1 = short_expr; + attr2 = + if true then big_expr else big_expr; + }; - # Combined - listOfAttrs = [ - { - attr1 = 3; - attr2 = "fff"; - } - { - attr1 = 5; - attr2 = "ggg"; - } - ]; + # Combined + listOfAttrs = [ + { + attr1 = 3; + attr2 = "fff"; + } + { + attr1 = 5; + attr2 = "ggg"; + } + ]; + } ``` - Short lists or attribute sets can be written on one line: ```nix - # A short list. - list = [ elem1 elem2 elem3 ]; + { + # A short list. + list = [ elem1 elem2 elem3 ]; - # A short set. - attrs = { x = 1280; y = 1024; }; + # A short set. + attrs = { x = 1280; y = 1024; }; + } ``` - Breaking in the middle of a function argument can give hard-to-read code, like @@ -649,7 +653,7 @@ Names of files and directories should be in lowercase, with dashes between words ```nix { arg1, arg2 }: assert system == "i686-linux"; - stdenv.mkDerivation { ... + stdenv.mkDerivation { /* ... */ } ``` not @@ -657,41 +661,41 @@ Names of files and directories should be in lowercase, with dashes between words ```nix { arg1, arg2 }: assert system == "i686-linux"; - stdenv.mkDerivation { ... + stdenv.mkDerivation { /* ... */ } ``` - Function formal arguments are written as: ```nix - { arg1, arg2, arg3 }: + { arg1, arg2, arg3 }: { /* ... */ } ``` but if they don't fit on one line they're written as: ```nix { arg1, arg2, arg3 - , arg4, ... - , # Some comment... - argN - }: + , arg4 + # Some comment... + , argN + }: { } ``` - Functions should list their expected arguments as precisely as possible. That is, write ```nix - { stdenv, fetchurl, perl }: ... + { stdenv, fetchurl, perl }: "..." ``` instead of ```nix - args: with args; ... + args: with args; "..." ``` or ```nix - { stdenv, fetchurl, perl, ... }: ... + { stdenv, fetchurl, perl, ... }: "..." ``` For functions that are truly generic in the number of arguments (such as wrappers around `mkDerivation`) that have some required arguments, you should write them using an `@`-pattern: @@ -700,7 +704,7 @@ Names of files and directories should be in lowercase, with dashes between words { stdenv, doCoverageAnalysis ? false, ... } @ args: stdenv.mkDerivation (args // { - ... if doCoverageAnalysis then "bla" else "" ... + foo = if doCoverageAnalysis then "bla" else ""; }) ``` @@ -710,32 +714,40 @@ Names of files and directories should be in lowercase, with dashes between words args: args.stdenv.mkDerivation (args // { - ... if args ? doCoverageAnalysis && args.doCoverageAnalysis then "bla" else "" ... + foo = if args ? doCoverageAnalysis && args.doCoverageAnalysis then "bla" else ""; }) ``` - Unnecessary string conversions should be avoided. Do ```nix - rev = version; + { + rev = version; + } ``` instead of ```nix - rev = "${version}"; + { + rev = "${version}"; + } ``` - Building lists conditionally _should_ be done with `lib.optional(s)` instead of using `if cond then [ ... ] else null` or `if cond then [ ... ] else [ ]`. ```nix - buildInputs = lib.optional stdenv.isDarwin iconv; + { + buildInputs = lib.optional stdenv.isDarwin iconv; + } ``` instead of ```nix - buildInputs = if stdenv.isDarwin then [ iconv ] else null; + { + buildInputs = if stdenv.isDarwin then [ iconv ] else null; + } ``` As an exception, an explicit conditional expression with null can be used when fixing a important bug without triggering a mass rebuild. diff --git a/doc/build-helpers/fetchers.chapter.md b/doc/build-helpers/fetchers.chapter.md index e8521861208f..123585c6dd2d 100644 --- a/doc/build-helpers/fetchers.chapter.md +++ b/doc/build-helpers/fetchers.chapter.md @@ -30,7 +30,7 @@ For example, consider the following fetcher: fetchurl { url = "http://www.example.org/hello-1.0.tar.gz"; hash = "sha256-lTeyxzJNQeMdu1IVdovNMtgn77jRIhSybLdMbTkf2Ww="; -}; +} ``` A common mistake is to update a fetcher’s URL, or a version parameter, without updating the hash. @@ -39,7 +39,7 @@ A common mistake is to update a fetcher’s URL, or a version parameter, without fetchurl { url = "http://www.example.org/hello-1.1.tar.gz"; hash = "sha256-lTeyxzJNQeMdu1IVdovNMtgn77jRIhSybLdMbTkf2Ww="; -}; +} ``` **This will reuse the old contents**. @@ -49,7 +49,7 @@ Remember to invalidate the hash argument, in this case by setting the `hash` att fetchurl { url = "http://www.example.org/hello-1.1.tar.gz"; hash = ""; -}; +} ``` Use the resulting error message to determine the correct hash. @@ -123,7 +123,7 @@ Here is an example of `fetchDebianPatch` in action: buildPythonPackage rec { pname = "pysimplesoap"; version = "1.16.2"; - src = ...; + src = "..."; patches = [ (fetchDebianPatch { @@ -134,7 +134,7 @@ buildPythonPackage rec { }) ]; - ... + # ... } ``` diff --git a/doc/build-helpers/images/dockertools.section.md b/doc/build-helpers/images/dockertools.section.md index 001d5695290e..527e623e7898 100644 --- a/doc/build-helpers/images/dockertools.section.md +++ b/doc/build-helpers/images/dockertools.section.md @@ -1177,6 +1177,7 @@ dockerTools.buildImage { hello dockerTools.binSh ]; +} ``` After building the image and loading it in Docker, we can create a container based on it and enter a shell inside the container. diff --git a/doc/build-helpers/special/checkpoint-build.section.md b/doc/build-helpers/special/checkpoint-build.section.md index f60afe801ed4..a1ce5608f246 100644 --- a/doc/build-helpers/special/checkpoint-build.section.md +++ b/doc/build-helpers/special/checkpoint-build.section.md @@ -9,13 +9,17 @@ However, we can tell Nix explicitly what the previous build state was, by repres To change a normal derivation to a checkpoint based build, these steps must be taken: - apply `prepareCheckpointBuild` on the desired derivation, e.g. ```nix -checkpointArtifacts = (pkgs.checkpointBuildTools.prepareCheckpointBuild pkgs.virtualbox); +{ + checkpointArtifacts = (pkgs.checkpointBuildTools.prepareCheckpointBuild pkgs.virtualbox); +} ``` - change something you want in the sources of the package, e.g. use a source override: ```nix -changedVBox = pkgs.virtualbox.overrideAttrs (old: { - src = path/to/vbox/sources; -}); +{ + changedVBox = pkgs.virtualbox.overrideAttrs (old: { + src = path/to/vbox/sources; + }); +} ``` - use `mkCheckpointBuild changedVBox checkpointArtifacts` - enjoy shorter build times diff --git a/doc/build-helpers/testers.chapter.md b/doc/build-helpers/testers.chapter.md index 35f9290ecbfb..b734cbbbd4e2 100644 --- a/doc/build-helpers/testers.chapter.md +++ b/doc/build-helpers/testers.chapter.md @@ -14,11 +14,13 @@ If the `moduleNames` argument is omitted, `hasPkgConfigModules` will use `meta.p # Check that `pkg-config` modules are exposed using default values ```nix -passthru.tests.pkg-config = testers.hasPkgConfigModules { - package = finalAttrs.finalPackage; -}; +{ + passthru.tests.pkg-config = testers.hasPkgConfigModules { + package = finalAttrs.finalPackage; + }; -meta.pkgConfigModules = [ "libfoo" ]; + meta.pkgConfigModules = [ "libfoo" ]; +} ``` ::: @@ -28,10 +30,12 @@ meta.pkgConfigModules = [ "libfoo" ]; # Check that `pkg-config` modules are exposed using explicit module names ```nix -passthru.tests.pkg-config = testers.hasPkgConfigModules { - package = finalAttrs.finalPackage; - moduleNames = [ "libfoo" ]; -}; +{ + passthru.tests.pkg-config = testers.hasPkgConfigModules { + package = finalAttrs.finalPackage; + moduleNames = [ "libfoo" ]; + }; +} ``` ::: @@ -55,7 +59,9 @@ The default argument to the command is `--version`, and the version to be checke This example will run the command `hello --version`, and then check that the version of the `hello` package is in the output of the command. ```nix -passthru.tests.version = testers.testVersion { package = hello; }; +{ + passthru.tests.version = testers.testVersion { package = hello; }; +} ``` ::: @@ -70,13 +76,15 @@ This means that an output like "leetcode 0.4.21" would fail the tests, and an ou A common usage of the `version` attribute is to specify `version = "v${version}"`. ```nix -version = "0.4.2"; +{ + version = "0.4.2"; -passthru.tests.version = testers.testVersion { - package = leetcode-cli; - command = "leetcode -V"; - version = "leetcode ${version}"; -}; + passthru.tests.version = testers.testVersion { + package = leetcode-cli; + command = "leetcode -V"; + version = "leetcode ${version}"; + }; +} ``` ::: @@ -116,7 +124,7 @@ runCommand "example" { grep -F 'failing though' $failed/testBuildFailure.log [[ 3 = $(cat $failed/testBuildFailure.exit) ]] touch $out -''; +'' ``` ::: @@ -193,12 +201,14 @@ once to get a derivation hash, and again to produce the final fixed output deriv # Prevent nix from reusing the output of a fetcher ```nix -tests.fetchgit = testers.invalidateFetcherByDrvHash fetchgit { - name = "nix-source"; - url = "https://github.com/NixOS/nix"; - rev = "9d9dbe6ed05854e03811c361a3380e09183f4f4a"; - hash = "sha256-7DszvbCNTjpzGRmpIVAWXk20P0/XTrWZ79KSOGLrUWY="; -}; +{ + tests.fetchgit = testers.invalidateFetcherByDrvHash fetchgit { + name = "nix-source"; + url = "https://github.com/NixOS/nix"; + rev = "9d9dbe6ed05854e03811c361a3380e09183f4f4a"; + hash = "sha256-7DszvbCNTjpzGRmpIVAWXk20P0/XTrWZ79KSOGLrUWY="; + }; +} ``` ::: diff --git a/doc/build-helpers/trivial-build-helpers.chapter.md b/doc/build-helpers/trivial-build-helpers.chapter.md index c9985bda7923..4f2754903f9b 100644 --- a/doc/build-helpers/trivial-build-helpers.chapter.md +++ b/doc/build-helpers/trivial-build-helpers.chapter.md @@ -76,12 +76,14 @@ If you need to refer to the resulting files somewhere else in a Nix expression, For example, if the file destination is a directory: ```nix -my-file = writeTextFile { - name = "my-file"; - text = '' - Contents of File - ''; - destination = "/share/my-file"; +{ + my-file = writeTextFile { + name = "my-file"; + text = '' + Contents of File + ''; + destination = "/share/my-file"; + }; } ``` @@ -90,7 +92,7 @@ Remember to append "/share/my-file" to the resulting store path when using it el ```nix writeShellScript "evaluate-my-file.sh" '' cat ${my-file}/share/my-file -''; +'' ``` :::: @@ -287,7 +289,7 @@ writeTextFile { }; allowSubstitutes = true; preferLocalBuild = false; -}; +} ``` ::: @@ -351,7 +353,7 @@ Write the string `Contents of File` to `/nix/store/`: writeText "my-file" '' Contents of File - ''; + '' ``` ::: @@ -391,7 +393,7 @@ Write the string `Contents of File` to `/nix/store//share/my-file`: writeTextDir "share/my-file" '' Contents of File - ''; + '' ``` ::: @@ -433,7 +435,7 @@ Write the string `Contents of File` to `/nix/store/` and make the fi writeScript "my-file" '' Contents of File - ''; + '' ``` ::: @@ -475,7 +477,7 @@ The store path will include the the name, and it will be a directory. writeScriptBin "my-script" '' echo "hi" - ''; + '' ``` ::: @@ -519,7 +521,7 @@ This function is almost exactly like [](#trivial-builder-writeScript), except th writeShellScript "my-script" '' echo "hi" - ''; + '' ``` ::: @@ -562,7 +564,7 @@ This function is a combination of [](#trivial-builder-writeShellScript) and [](# writeShellScriptBin "my-script" '' echo "hi" - ''; + '' ``` ::: @@ -674,7 +676,7 @@ writeClosure [ (writeScriptBin "hi" ''${hello}/bin/hello'') ] produces an output path `/nix/store/-runtime-deps` containing -```nix +``` /nix/store/-hello-2.10 /nix/store/-hi /nix/store/-libidn2-2.3.0 @@ -700,7 +702,7 @@ writeDirectReferencesToFile (writeScriptBin "hi" ''${hello}/bin/hello'') produces an output path `/nix/store/-runtime-references` containing -```nix +``` /nix/store/-hello-2.10 ``` diff --git a/doc/functions/nix-gitignore.section.md b/doc/functions/nix-gitignore.section.md index 8eb4081d2878..8532ab68ac04 100644 --- a/doc/functions/nix-gitignore.section.md +++ b/doc/functions/nix-gitignore.section.md @@ -7,27 +7,30 @@ `pkgs.nix-gitignore` exports a number of functions, but you'll most likely need either `gitignoreSource` or `gitignoreSourcePure`. As their first argument, they both accept either 1. a file with gitignore lines or 2. a string with gitignore lines, or 3. a list of either of the two. They will be concatenated into a single big string. ```nix -{ pkgs ? import {} }: +{ pkgs ? import {} }: { - nix-gitignore.gitignoreSource [] ./source + src = nix-gitignore.gitignoreSource [] ./source; # Simplest version - nix-gitignore.gitignoreSource "supplemental-ignores\n" ./source + src = nix-gitignore.gitignoreSource "supplemental-ignores\n" ./source; # This one reads the ./source/.gitignore and concats the auxiliary ignores - nix-gitignore.gitignoreSourcePure "ignore-this\nignore-that\n" ./source + src = nix-gitignore.gitignoreSourcePure "ignore-this\nignore-that\n" ./source; # Use this string as gitignore, don't read ./source/.gitignore. - nix-gitignore.gitignoreSourcePure ["ignore-this\nignore-that\n", ~/.gitignore] ./source + src = nix-gitignore.gitignoreSourcePure ["ignore-this\nignore-that\n" ~/.gitignore] ./source; # It also accepts a list (of strings and paths) that will be concatenated # once the paths are turned to strings via readFile. +} ``` These functions are derived from the `Filter` functions by setting the first filter argument to `(_: _: true)`: ```nix -gitignoreSourcePure = gitignoreFilterSourcePure (_: _: true); -gitignoreSource = gitignoreFilterSource (_: _: true); +{ + gitignoreSourcePure = gitignoreFilterSourcePure (_: _: true); + gitignoreSource = gitignoreFilterSource (_: _: true); +} ``` Those filter functions accept the same arguments the `builtins.filterSource` function would pass to its filters, thus `fn: gitignoreFilterSourcePure fn ""` should be extensionally equivalent to `filterSource`. The file is blacklisted if it's blacklisted by either your filter or the gitignoreFilter. @@ -35,7 +38,9 @@ Those filter functions accept the same arguments the `builtins.filterSource` fun If you want to make your own filter from scratch, you may use ```nix -gitignoreFilter = ign: root: filterPattern (gitignoreToPatterns ign) root; +{ + gitignoreFilter = ign: root: filterPattern (gitignoreToPatterns ign) root; +} ``` ## gitignore files in subdirectories {#sec-pkgs-nix-gitignore-usage-recursive} @@ -43,7 +48,9 @@ gitignoreFilter = ign: root: filterPattern (gitignoreToPatterns ign) root; If you wish to use a filter that would search for .gitignore files in subdirectories, just like git does by default, use this function: ```nix -gitignoreFilterRecursiveSource = filter: patterns: root: -# OR -gitignoreRecursiveSource = gitignoreFilterSourcePure (_: _: true); +{ + # gitignoreFilterRecursiveSource = filter: patterns: root: + # OR + gitignoreRecursiveSource = gitignoreFilterSourcePure (_: _: true); +} ``` diff --git a/doc/hooks/breakpoint.section.md b/doc/hooks/breakpoint.section.md index 424a9424b55e..b7f1979586de 100644 --- a/doc/hooks/breakpoint.section.md +++ b/doc/hooks/breakpoint.section.md @@ -3,7 +3,9 @@ This hook will make a build pause instead of stopping when a failure happens. It prevents nix from cleaning up the build environment immediately and allows the user to attach to a build environment using the `cntr` command. Upon build error it will print instructions on how to use `cntr`, which can be used to enter the environment for debugging. Installing cntr and running the command will provide shell access to the build sandbox of failed build. At `/var/lib/cntr` the sandboxed filesystem is mounted. All commands and files of the system are still accessible within the shell. To execute commands from the sandbox use the cntr exec subcommand. `cntr` is only supported on Linux-based platforms. To use it first add `cntr` to your `environment.systemPackages` on NixOS or alternatively to the root user on non-NixOS systems. Then in the package that is supposed to be inspected, add `breakpointHook` to `nativeBuildInputs`. ```nix -nativeBuildInputs = [ breakpointHook ]; +{ + nativeBuildInputs = [ breakpointHook ]; +} ``` When a build failure happens there will be an instruction printed that shows how to attach with `cntr` to the build sandbox. diff --git a/doc/hooks/installShellFiles.section.md b/doc/hooks/installShellFiles.section.md index 2567098116dd..834c6a37df15 100644 --- a/doc/hooks/installShellFiles.section.md +++ b/doc/hooks/installShellFiles.section.md @@ -7,19 +7,21 @@ The `installManPage` function takes one or more paths to manpages to install. Th The `installShellCompletion` function takes one or more paths to shell completion files. By default it will autodetect the shell type from the completion file extension, but you may also specify it by passing one of `--bash`, `--fish`, or `--zsh`. These flags apply to all paths listed after them (up until another shell flag is given). Each path may also have a custom installation name provided by providing a flag `--name NAME` before the path. If this flag is not provided, zsh completions will be renamed automatically such that `foobar.zsh` becomes `_foobar`. A root name may be provided for all paths using the flag `--cmd NAME`; this synthesizes the appropriate name depending on the shell (e.g. `--cmd foo` will synthesize the name `foo.bash` for bash and `_foo` for zsh). The path may also be a fifo or named fd (such as produced by `<(cmd)`), in which case the shell and name must be provided. ```nix -nativeBuildInputs = [ installShellFiles ]; -postInstall = '' - installManPage doc/foobar.1 doc/barfoo.3 - # explicit behavior - installShellCompletion --bash --name foobar.bash share/completions.bash - installShellCompletion --fish --name foobar.fish share/completions.fish - installShellCompletion --zsh --name _foobar share/completions.zsh - # implicit behavior - installShellCompletion share/completions/foobar.{bash,fish,zsh} - # using named fd - installShellCompletion --cmd foobar \ - --bash <($out/bin/foobar --bash-completion) \ - --fish <($out/bin/foobar --fish-completion) \ - --zsh <($out/bin/foobar --zsh-completion) -''; +{ + nativeBuildInputs = [ installShellFiles ]; + postInstall = '' + installManPage doc/foobar.1 doc/barfoo.3 + # explicit behavior + installShellCompletion --bash --name foobar.bash share/completions.bash + installShellCompletion --fish --name foobar.fish share/completions.fish + installShellCompletion --zsh --name _foobar share/completions.zsh + # implicit behavior + installShellCompletion share/completions/foobar.{bash,fish,zsh} + # using named fd + installShellCompletion --cmd foobar \ + --bash <($out/bin/foobar --bash-completion) \ + --fish <($out/bin/foobar --fish-completion) \ + --zsh <($out/bin/foobar --zsh-completion) + ''; +} ``` diff --git a/doc/hooks/mpi-check-hook.section.md b/doc/hooks/mpi-check-hook.section.md index 586ee2cc7c2d..c182c4cc6195 100644 --- a/doc/hooks/mpi-check-hook.section.md +++ b/doc/hooks/mpi-check-hook.section.md @@ -12,13 +12,14 @@ Example: ```nix { mpiCheckPhaseHook, mpi, ... }: + { + # ... - ... - - nativeCheckInputs = [ - openssh - mpiCheckPhaseHook - ]; + nativeCheckInputs = [ + openssh + mpiCheckPhaseHook + ]; + } ``` diff --git a/doc/languages-frameworks/agda.section.md b/doc/languages-frameworks/agda.section.md index cb1f12eec234..51ef40267ef4 100644 --- a/doc/languages-frameworks/agda.section.md +++ b/doc/languages-frameworks/agda.section.md @@ -114,7 +114,7 @@ This can be overridden by a different version of `ghc` as follows: ```nix agda.withPackages { - pkgs = [ ... ]; + pkgs = [ /* ... */ ]; ghc = haskell.compiler.ghcHEAD; } ``` @@ -180,6 +180,7 @@ To add an Agda package to `nixpkgs`, the derivation should be written to `pkgs/d ```nix { mkDerivation, standard-library, fetchFromGitHub }: +{} ``` Note that the derivation function is called with `mkDerivation` set to `agdaPackages.mkDerivation`, therefore you @@ -193,7 +194,7 @@ mkDerivation { version = "1.5.0"; pname = "iowa-stdlib"; - src = ... + src = "..."; libraryFile = ""; libraryName = "IAL-1.3"; diff --git a/doc/languages-frameworks/android.section.md b/doc/languages-frameworks/android.section.md index 6f9717ca09cc..1c5687f8ebf1 100644 --- a/doc/languages-frameworks/android.section.md +++ b/doc/languages-frameworks/android.section.md @@ -104,18 +104,20 @@ pull from: repo.json to the Nix store based on the given repository XMLs. ```nix -repoXmls = { - packages = [ ./xml/repository2-1.xml ]; - images = [ - ./xml/android-sys-img2-1.xml - ./xml/android-tv-sys-img2-1.xml - ./xml/android-wear-sys-img2-1.xml - ./xml/android-wear-cn-sys-img2-1.xml - ./xml/google_apis-sys-img2-1.xml - ./xml/google_apis_playstore-sys-img2-1.xml - ]; - addons = [ ./xml/addon2-1.xml ]; -}; +{ + repoXmls = { + packages = [ ./xml/repository2-1.xml ]; + images = [ + ./xml/android-sys-img2-1.xml + ./xml/android-tv-sys-img2-1.xml + ./xml/android-wear-sys-img2-1.xml + ./xml/android-wear-cn-sys-img2-1.xml + ./xml/google_apis-sys-img2-1.xml + ./xml/google_apis_playstore-sys-img2-1.xml + ]; + addons = [ ./xml/addon2-1.xml ]; + }; +} ``` When building the above expression with: diff --git a/doc/languages-frameworks/beam.section.md b/doc/languages-frameworks/beam.section.md index 992149090c63..3653cdb337d1 100644 --- a/doc/languages-frameworks/beam.section.md +++ b/doc/languages-frameworks/beam.section.md @@ -117,6 +117,7 @@ If there are git dependencies. - From the mix_deps.nix file, remove the dependencies that had git versions and pass them as an override to the import function. ```nix +{ mixNixDeps = import ./mix.nix { inherit beamPackages lib; overrides = (final: prev: { @@ -138,8 +139,9 @@ If there are git dependencies. # you can re-use the same beamDeps argument as generated beamDeps = with final; [ prometheus ]; }; - }); -}; + }); + }; +} ``` You will need to run the build process once to fix the hash to correspond to your new git src. @@ -153,11 +155,13 @@ Practical steps - start with the following argument to mixRelease ```nix +{ mixFodDeps = fetchMixDeps { pname = "mix-deps-${pname}"; inherit src version; hash = lib.fakeHash; }; +} ``` The first build will complain about the hash value, you can replace with the suggested value after that. diff --git a/doc/languages-frameworks/bower.section.md b/doc/languages-frameworks/bower.section.md index fceb6aaccb6d..20c142dad5b9 100644 --- a/doc/languages-frameworks/bower.section.md +++ b/doc/languages-frameworks/bower.section.md @@ -28,7 +28,7 @@ buildEnv { name = "bower-env"; ignoreCollisions = true; paths = [ (fetchbower "angular" "1.5.3" "~1.5.0" "1749xb0firxdra4rzadm4q9x90v6pzkbd7xmcyjk6qfza09ykk9y") (fetchbower "bootstrap" "3.3.6" "~3.3.6" "1vvqlpbfcy0k5pncfjaiskj3y6scwifxygfqnw393sjfxiviwmbv") (fetchbower "jquery" "2.2.2" "1.9.1 - 2" "10sp5h98sqwk90y4k6hbdviwqzvzwqf47r3r51pakch5ii2y7js1") -]; +]; } ``` Using the `bower2nix` command line arguments, the output can be redirected to a file. A name like `bower-packages.nix` would be fine. @@ -42,11 +42,13 @@ The function is implemented in [pkgs/development/bower-modules/generic/default.n ### Example buildBowerComponents {#ex-buildBowerComponents} ```nix -bowerComponents = buildBowerComponents { - name = "my-web-app"; - generated = ./bower-packages.nix; # note 1 - src = myWebApp; # note 2 -}; +{ + bowerComponents = buildBowerComponents { + name = "my-web-app"; + generated = ./bower-packages.nix; # note 1 + src = myWebApp; # note 2 + }; +} ``` In ["buildBowerComponents" example](#ex-buildBowerComponents) the following arguments are of special significance to the function: diff --git a/doc/languages-frameworks/chicken.section.md b/doc/languages-frameworks/chicken.section.md index 72c2642a6478..975be5e71928 100644 --- a/doc/languages-frameworks/chicken.section.md +++ b/doc/languages-frameworks/chicken.section.md @@ -13,10 +13,12 @@ done in the typical Nix fashion. For example, to include support for [SRFI might write: ```nix +{ buildInputs = [ chicken chickenPackages.chickenEggs.srfi-189 ]; +} ``` Both `chicken` and its eggs have a setup hook which configures the environment @@ -67,12 +69,12 @@ let chickenEggs = super.chickenEggs.overrideScope' (eggself: eggsuper: { srfi-180 = eggsuper.srfi-180.overrideAttrs { # path to a local copy of srfi-180 - src = ... + src = "..."; }; }); }); in # Here, `myChickenPackages.chickenEggs.json-rpc`, which depends on `srfi-180` will use # the local copy of `srfi-180`. -# ... +"..." ``` diff --git a/doc/languages-frameworks/crystal.section.md b/doc/languages-frameworks/crystal.section.md index b97e75a58da1..9953f357048a 100644 --- a/doc/languages-frameworks/crystal.section.md +++ b/doc/languages-frameworks/crystal.section.md @@ -33,22 +33,26 @@ crystal.buildCrystalPackage rec { # Insert the path to your shards.nix file here shardsFile = ./shards.nix; - ... + # ... } ``` This won't build anything yet, because we haven't told it what files build. We can specify a mapping from binary names to source files with the `crystalBinaries` attribute. The project's compilation instructions should show this. For Mint, the binary is called "mint", which is compiled from the source file `src/mint.cr`, so we'll specify this as follows: ```nix +{ crystalBinaries.mint.src = "src/mint.cr"; # ... +} ``` Additionally you can override the default `crystal build` options (which are currently `--release --progress --no-debug --verbose`) with ```nix +{ crystalBinaries.mint.options = [ "--release" "--verbose" ]; +} ``` Depending on the project, you might need additional steps to get it to compile successfully. In Mint's case, we need to link against openssl, so in the end the Nix file looks as follows: diff --git a/doc/languages-frameworks/cuda.section.md b/doc/languages-frameworks/cuda.section.md index 09af824531a2..9791018c7f5f 100644 --- a/doc/languages-frameworks/cuda.section.md +++ b/doc/languages-frameworks/cuda.section.md @@ -16,24 +16,28 @@ To use one or more CUDA packages in an expression, give the expression a `cudaPa , cudaSupport ? config.cudaSupport , cudaPackages ? { } , ... -}: +}: {} ``` When using `callPackage`, you can choose to pass in a different variant, e.g. when a different version of the toolkit suffices ```nix -mypkg = callPackage { cudaPackages = cudaPackages_11_5; } +{ + mypkg = callPackage { cudaPackages = cudaPackages_11_5; }; +} ``` If another version of say `cudnn` or `cutensor` is needed, you can override the package set to make it the default. This guarantees you get a consistent package set. ```nix -mypkg = let - cudaPackages = cudaPackages_11_5.overrideScope (final: prev: { - cudnn = prev.cudnn_8_3; - }}); -in callPackage { inherit cudaPackages; }; +{ + mypkg = let + cudaPackages = cudaPackages_11_5.overrideScope (final: prev: { + cudnn = prev.cudnn_8_3; + }); + in callPackage { inherit cudaPackages; }; +} ``` The CUDA NVCC compiler requires flags to determine which hardware you diff --git a/doc/languages-frameworks/dhall.section.md b/doc/languages-frameworks/dhall.section.md index 83567ab17ace..8d85c9f1daf7 100644 --- a/doc/languages-frameworks/dhall.section.md +++ b/doc/languages-frameworks/dhall.section.md @@ -187,6 +187,7 @@ wish to specify `source = true` for all Dhall packages, then you can amend the Dhall overlay like this: ```nix +{ dhallOverrides = self: super: { # Enable source for all Dhall packages buildDhallPackage = @@ -194,6 +195,7 @@ Dhall overlay like this: true = self.callPackage ./true.nix { }; }; +} ``` … and now the Prelude will contain the fully decoded result of interpreting @@ -429,22 +431,26 @@ $ dhall-to-nixpkgs github https://github.com/dhall-lang/dhall-lang.git \ the Prelude globally for all packages, like this: ```nix +{ dhallOverrides = self: super: { true = self.callPackage ./true.nix { }; Prelude = self.callPackage ./Prelude.nix { }; }; +} ``` … or selectively overriding the Prelude dependency for just the `true` package, like this: ```nix +{ dhallOverrides = self: super: { true = self.callPackage ./true.nix { Prelude = self.callPackage ./Prelude.nix { }; }; }; +} ``` ## Overrides {#ssec-dhall-overrides} @@ -454,11 +460,13 @@ You can override any of the arguments to `buildDhallGitHubPackage` or For example, suppose we wanted to selectively enable `source = true` just for the Prelude. We can do that like this: ```nix +{ dhallOverrides = self: super: { Prelude = super.Prelude.overridePackage { source = true; }; - … + # ... }; +} ``` [semantic-integrity-checks]: https://docs.dhall-lang.org/tutorials/Language-Tour.html#installing-packages diff --git a/doc/languages-frameworks/dotnet.section.md b/doc/languages-frameworks/dotnet.section.md index 6a6c899a0897..a4e9d6cf9a6c 100644 --- a/doc/languages-frameworks/dotnet.section.md +++ b/doc/languages-frameworks/dotnet.section.md @@ -134,7 +134,7 @@ Here is an example `default.nix`, using some of the previously discussed argumen { lib, buildDotnetModule, dotnetCorePackages, ffmpeg }: let - referencedProject = import ../../bar { ... }; + referencedProject = import ../../bar { /* ... */ }; in buildDotnetModule rec { pname = "someDotnetApplication"; version = "0.1"; diff --git a/doc/languages-frameworks/gnome.section.md b/doc/languages-frameworks/gnome.section.md index 5208f1013cbd..6bf867b21abe 100644 --- a/doc/languages-frameworks/gnome.section.md +++ b/doc/languages-frameworks/gnome.section.md @@ -47,6 +47,7 @@ When an application uses icons, an icon theme should be available in `XDG_DATA_D In the rare case you need to use icons from dependencies (e.g. when an app forces an icon theme), you can use the following to pick them up: ```nix +{ buildInputs = [ pantheon.elementary-icon-theme ]; @@ -56,6 +57,7 @@ In the rare case you need to use icons from dependencies (e.g. when an app force --prefix XDG_DATA_DIRS : "$XDG_ICON_DIRS" ) ''; +} ``` To avoid costly file system access when locating icons, GTK, [as well as Qt](https://woboq.com/blog/qicon-reads-gtk-icon-cache-in-qt57.html), can rely on `icon-theme.cache` files from the themes' top-level directories. These files are generated using `gtk-update-icon-cache`, which is expected to be run whenever an icon is added or removed to an icon theme (typically an application icon into `hicolor` theme) and some programs do indeed run this after icon installation. However, since packages are installed into their own prefix by Nix, this would lead to conflicts. For that reason, `gtk3` provides a [setup hook](#ssec-gnome-hooks-gtk-drop-icon-theme-cache) that will clean the file from installation. Since most applications only ship their own icon that will be loaded on start-up, it should not affect them too much. On the other hand, icon themes are much larger and more widely used so we need to cache them. Because we recommend installing icon themes globally, we will generate the cache files from all packages in a profile using a NixOS module. You can enable the cache generation using `gtk.iconCache.enable` option if your desktop environment does not already do that. @@ -85,17 +87,19 @@ If your application uses [GStreamer](https://gstreamer.freedesktop.org/) or [Gri Given the requirements above, the package expression would become messy quickly: ```nix -preFixup = '' - for f in $(find $out/bin/ $out/libexec/ -type f -executable); do - wrapProgram "$f" \ - --prefix GIO_EXTRA_MODULES : "${getLib dconf}/lib/gio/modules" \ - --prefix XDG_DATA_DIRS : "$out/share" \ - --prefix XDG_DATA_DIRS : "$out/share/gsettings-schemas/${name}" \ - --prefix XDG_DATA_DIRS : "${gsettings-desktop-schemas}/share/gsettings-schemas/${gsettings-desktop-schemas.name}" \ - --prefix XDG_DATA_DIRS : "${hicolor-icon-theme}/share" \ - --prefix GI_TYPELIB_PATH : "${lib.makeSearchPath "lib/girepository-1.0" [ pango json-glib ]}" - done -''; +{ + preFixup = '' + for f in $(find $out/bin/ $out/libexec/ -type f -executable); do + wrapProgram "$f" \ + --prefix GIO_EXTRA_MODULES : "${getLib dconf}/lib/gio/modules" \ + --prefix XDG_DATA_DIRS : "$out/share" \ + --prefix XDG_DATA_DIRS : "$out/share/gsettings-schemas/${name}" \ + --prefix XDG_DATA_DIRS : "${gsettings-desktop-schemas}/share/gsettings-schemas/${gsettings-desktop-schemas.name}" \ + --prefix XDG_DATA_DIRS : "${hicolor-icon-theme}/share" \ + --prefix GI_TYPELIB_PATH : "${lib.makeSearchPath "lib/girepository-1.0" [ pango json-glib ]}" + done + ''; +} ``` Fortunately, there is [`wrapGAppsHook`]{#ssec-gnome-hooks-wrapgappshook}. It works in conjunction with other setup hooks that populate environment variables, and it will then wrap all executables in `bin` and `libexec` directories using said variables. @@ -121,14 +125,16 @@ For convenience, it also adds `dconf.lib` for a GIO module implementing a GSetti You can also pass additional arguments to `makeWrapper` using `gappsWrapperArgs` in `preFixup` hook: ```nix -preFixup = '' - gappsWrapperArgs+=( - # Thumbnailers - --prefix XDG_DATA_DIRS : "${gdk-pixbuf}/share" - --prefix XDG_DATA_DIRS : "${librsvg}/share" - --prefix XDG_DATA_DIRS : "${shared-mime-info}/share" - ) -''; +{ + preFixup = '' + gappsWrapperArgs+=( + # Thumbnailers + --prefix XDG_DATA_DIRS : "${gdk-pixbuf}/share" + --prefix XDG_DATA_DIRS : "${librsvg}/share" + --prefix XDG_DATA_DIRS : "${shared-mime-info}/share" + ) + ''; +} ``` ## Updating GNOME packages {#ssec-gnome-updating} @@ -159,7 +165,7 @@ python3.pkgs.buildPythonApplication { nativeBuildInputs = [ wrapGAppsHook gobject-introspection - ... + # ... ]; dontWrapGApps = true; @@ -181,7 +187,7 @@ mkDerivation { nativeBuildInputs = [ wrapGAppsHook qmake - ... + # ... ]; dontWrapGApps = true; diff --git a/doc/languages-frameworks/go.section.md b/doc/languages-frameworks/go.section.md index 369eb88d331f..6db0e73505d2 100644 --- a/doc/languages-frameworks/go.section.md +++ b/doc/languages-frameworks/go.section.md @@ -38,24 +38,26 @@ The `buildGoModule` function accepts the following parameters in addition to the The following is an example expression using `buildGoModule`: ```nix -pet = buildGoModule rec { - pname = "pet"; - version = "0.3.4"; +{ + pet = buildGoModule rec { + pname = "pet"; + version = "0.3.4"; - src = fetchFromGitHub { - owner = "knqyf263"; - repo = "pet"; - rev = "v${version}"; - hash = "sha256-Gjw1dRrgM8D3G7v6WIM2+50r4HmTXvx0Xxme2fH9TlQ="; - }; + src = fetchFromGitHub { + owner = "knqyf263"; + repo = "pet"; + rev = "v${version}"; + hash = "sha256-Gjw1dRrgM8D3G7v6WIM2+50r4HmTXvx0Xxme2fH9TlQ="; + }; - vendorHash = "sha256-ciBIR+a1oaYH+H1PcC8cD8ncfJczk1IiJ8iYNM+R6aA="; + vendorHash = "sha256-ciBIR+a1oaYH+H1PcC8cD8ncfJczk1IiJ8iYNM+R6aA="; - meta = { - description = "Simple command-line snippet manager, written in Go"; - homepage = "https://github.com/knqyf263/pet"; - license = lib.licenses.mit; - maintainers = with lib.maintainers; [ kalbasit ]; + meta = { + description = "Simple command-line snippet manager, written in Go"; + homepage = "https://github.com/knqyf263/pet"; + license = lib.licenses.mit; + maintainers = with lib.maintainers; [ kalbasit ]; + }; }; } ``` @@ -72,20 +74,22 @@ In the following is an example expression using `buildGoPackage`, the following - `goDeps` is where the Go dependencies of a Go program are listed as a list of package source identified by Go import path. It could be imported as a separate `deps.nix` file for readability. The dependency data structure is described below. ```nix -deis = buildGoPackage rec { - pname = "deis"; - version = "1.13.0"; +{ + deis = buildGoPackage rec { + pname = "deis"; + version = "1.13.0"; - goPackagePath = "github.com/deis/deis"; + goPackagePath = "github.com/deis/deis"; - src = fetchFromGitHub { - owner = "deis"; - repo = "deis"; - rev = "v${version}"; - hash = "sha256-XCPD4LNWtAd8uz7zyCLRfT8rzxycIUmTACjU03GnaeM="; + src = fetchFromGitHub { + owner = "deis"; + repo = "deis"; + rev = "v${version}"; + hash = "sha256-XCPD4LNWtAd8uz7zyCLRfT8rzxycIUmTACjU03GnaeM="; + }; + + goDeps = ./deps.nix; }; - - goDeps = ./deps.nix; } ``` @@ -153,10 +157,12 @@ A string list of flags to pass to the Go linker tool via the `-ldflags` argument The most common use case for this argument is to make the resulting executable aware of its own version by injecting the value of string variable using the `-X` flag. For example: ```nix +{ ldflags = [ "-X main.Version=${version}" "-X main.Commit=${version}" ]; +} ``` ### `tags` {#var-go-tags} @@ -164,16 +170,20 @@ The most common use case for this argument is to make the resulting executable a A string list of [Go build tags (also called build constraints)](https://pkg.go.dev/cmd/go#hdr-Build_constraints) that are passed via the `-tags` argument of `go build`. These constraints control whether Go files from the source should be included in the build. For example: ```nix +{ tags = [ "production" "sqlite" ]; +} ``` Tags can also be set conditionally: ```nix +{ tags = [ "production" ] ++ lib.optionals withSqlite [ "sqlite" ]; +} ``` ### `deleteVendor` {#var-go-deleteVendor} @@ -188,10 +198,12 @@ Many Go projects keep the main package in a `cmd` directory. Following example could be used to only build the example-cli and example-server binaries: ```nix -subPackages = [ - "cmd/example-cli" - "cmd/example-server" -]; +{ + subPackages = [ + "cmd/example-cli" + "cmd/example-server" + ]; +} ``` ### `excludedPackages` {#var-go-excludedPackages} @@ -213,10 +225,12 @@ on a per package level using build tags (`tags`). In case CGO is disabled, these When a Go program depends on C libraries, place those dependencies in `buildInputs`: ```nix +{ buildInputs = [ libvirt libxml2 ]; +} ``` `CGO_ENABLED` defaults to `1`. @@ -245,15 +259,18 @@ This is done with the [`-skip` or `-run`](https://pkg.go.dev/cmd/go#hdr-Testing_ For example, only a selection of tests could be run with: ```nix +{ # -run and -skip accept regular expressions checkFlags = [ "-run=^Test(Simple|Fast)$" ]; +} ``` If a larger amount of tests should be skipped, the following pattern can be used: ```nix +{ checkFlags = let # Skip tests that require network access @@ -264,6 +281,7 @@ If a larger amount of tests should be skipped, the following pattern can be used ]; in [ "-skip=^${builtins.concatStringsSep "$|^" skippedTests}$" ]; +} ``` To disable tests altogether, set `doCheck = false;`. diff --git a/doc/languages-frameworks/idris.section.md b/doc/languages-frameworks/idris.section.md index e30a849dd456..0fa828825749 100644 --- a/doc/languages-frameworks/idris.section.md +++ b/doc/languages-frameworks/idris.section.md @@ -134,9 +134,9 @@ For example you could set ```nix build-idris-package { - idrisBuildOptions = [ "--log" "1" "--verbose" ] + idrisBuildOptions = [ "--log" "1" "--verbose" ]; - ... + # ... } ``` diff --git a/doc/languages-frameworks/java.section.md b/doc/languages-frameworks/java.section.md index 0ce1442cca68..2c73d428cab3 100644 --- a/doc/languages-frameworks/java.section.md +++ b/doc/languages-frameworks/java.section.md @@ -7,7 +7,7 @@ stdenv.mkDerivation { pname = "..."; version = "..."; - src = fetchurl { ... }; + src = fetchurl { /* ... */ }; nativeBuildInputs = [ ant @@ -48,8 +48,10 @@ installs a JAR named `foo.jar` in its `share/java` directory, and another package declares the attribute ```nix -buildInputs = [ libfoo ]; -nativeBuildInputs = [ jdk ]; +{ + buildInputs = [ libfoo ]; + nativeBuildInputs = [ jdk ]; +} ``` then `CLASSPATH` will be set to @@ -62,13 +64,15 @@ If your Java package provides a program, you need to generate a wrapper script to run it using a JRE. You can use `makeWrapper` for this: ```nix -nativeBuildInputs = [ makeWrapper ]; +{ + nativeBuildInputs = [ makeWrapper ]; -installPhase = '' - mkdir -p $out/bin - makeWrapper ${jre}/bin/java $out/bin/foo \ - --add-flags "-cp $out/share/java/foo.jar org.foo.Main" -''; + installPhase = '' + mkdir -p $out/bin + makeWrapper ${jre}/bin/java $out/bin/foo \ + --add-flags "-cp $out/share/java/foo.jar org.foo.Main" + ''; +} ``` Since the introduction of the Java Platform Module System in Java 9, @@ -92,16 +96,18 @@ let something = (pkgs.something.override { jre = my_jre; }); other = (pkgs.other.override { jre = my_jre; }); in - ... + "..." ``` You can also specify what JDK your JRE should be based on, for example selecting a 'headless' build to avoid including a link to GTK+: ```nix -my_jre = pkgs.jre_minimal.override { - jdk = jdk11_headless; -}; +{ + my_jre = pkgs.jre_minimal.override { + jdk = jdk11_headless; + }; +} ``` Note all JDKs passthru `home`, so if your application requires @@ -116,7 +122,9 @@ It is possible to use a different Java compiler than `javac` from the OpenJDK. For instance, to use the GNU Java Compiler: ```nix -nativeBuildInputs = [ gcj ant ]; +{ + nativeBuildInputs = [ gcj ant ]; +} ``` Here, Ant will automatically use `gij` (the GNU Java Runtime) instead of diff --git a/doc/languages-frameworks/javascript.section.md b/doc/languages-frameworks/javascript.section.md index d553444d53b0..b0da08d022c0 100644 --- a/doc/languages-frameworks/javascript.section.md +++ b/doc/languages-frameworks/javascript.section.md @@ -76,11 +76,13 @@ Exceptions to this rule are: when you need to override a package.json. It's nice to use the one from the upstream source and do some explicit override. Here is an example: ```nix - patchedPackageJSON = final.runCommand "package.json" { } '' - ${jq}/bin/jq '.version = "0.4.0" | - .devDependencies."@jsdoc/cli" = "^0.2.5" - ${sonar-src}/package.json > $out - ''; + { + patchedPackageJSON = final.runCommand "package.json" { } '' + ${jq}/bin/jq '.version = "0.4.0" | + .devDependencies."@jsdoc/cli" = "^0.2.5" + ${sonar-src}/package.json > $out + ''; + } ``` You will still need to commit the modified version of the lock files, but at least the overrides are explicit for everyone to see. @@ -115,10 +117,12 @@ After you have identified the correct system, you need to override your package For example, `dat` requires `node-gyp-build`, so we override its expression in [pkgs/development/node-packages/overrides.nix](https://github.com/NixOS/nixpkgs/blob/master/pkgs/development/node-packages/overrides.nix): ```nix + { dat = prev.dat.override (oldAttrs: { buildInputs = [ final.node-gyp-build pkgs.libtool pkgs.autoconf pkgs.automake ]; meta = oldAttrs.meta // { broken = since "12"; }; }); + } ``` ### Adding and Updating Javascript packages in nixpkgs {#javascript-adding-or-updating-packages} @@ -315,10 +319,12 @@ You will need at least a `yarn.lock` file. If upstream does not have one you nee If the downloaded files contain the `package.json` and `yarn.lock` files they can be used like this: ```nix -offlineCache = fetchYarnDeps { - yarnLock = src + "/yarn.lock"; - hash = "...."; -}; +{ + offlineCache = fetchYarnDeps { + yarnLock = src + "/yarn.lock"; + hash = "...."; + }; +} ``` #### mkYarnPackage {#javascript-yarn2nix-mkYarnPackage} @@ -328,33 +334,41 @@ offlineCache = fetchYarnDeps { It's important to use the `--offline` flag. For example if you script is `"build": "something"` in `package.json` use: ```nix -buildPhase = '' - export HOME=$(mktemp -d) - yarn --offline build -''; +{ + buildPhase = '' + export HOME=$(mktemp -d) + yarn --offline build + ''; +} ``` The `distPhase` is packing the package's dependencies in a tarball using `yarn pack`. You can disable it using: ```nix -doDist = false; +{ + doDist = false; +} ``` The configure phase can sometimes fail because it makes many assumptions which may not always apply. One common override is: ```nix -configurePhase = '' - ln -s $node_modules node_modules -''; +{ + configurePhase = '' + ln -s $node_modules node_modules + ''; +} ``` or if you need a writeable node_modules directory: ```nix -configurePhase = '' - cp -r $node_modules node_modules - chmod +w node_modules -''; +{ + configurePhase = '' + cp -r $node_modules node_modules + chmod +w node_modules + ''; +} ``` #### mkYarnModules {#javascript-yarn2nix-mkYarnModules} @@ -394,12 +408,14 @@ mkYarnPackage rec { - Having trouble with `node-gyp`? Try adding these lines to the `yarnPreBuild` steps: ```nix - yarnPreBuild = '' - mkdir -p $HOME/.node-gyp/${nodejs.version} - echo 9 > $HOME/.node-gyp/${nodejs.version}/installVersion - ln -sfv ${nodejs}/include $HOME/.node-gyp/${nodejs.version} - export npm_config_nodedir=${nodejs} - ''; + { + yarnPreBuild = '' + mkdir -p $HOME/.node-gyp/${nodejs.version} + echo 9 > $HOME/.node-gyp/${nodejs.version}/installVersion + ln -sfv ${nodejs}/include $HOME/.node-gyp/${nodejs.version} + export npm_config_nodedir=${nodejs} + ''; + } ``` - The `echo 9` steps comes from this answer: diff --git a/doc/languages-frameworks/lisp.section.md b/doc/languages-frameworks/lisp.section.md index f64942338f80..73f20436c76f 100644 --- a/doc/languages-frameworks/lisp.section.md +++ b/doc/languages-frameworks/lisp.section.md @@ -56,9 +56,11 @@ in mkShell { Such a Lisp can be now used e.g. to compile your sources: ```nix -buildPhase = '' - ${sbcl'}/bin/sbcl --load my-build-file.lisp -'' +{ + buildPhase = '' + ${sbcl'}/bin/sbcl --load my-build-file.lisp + ''; +} ``` ## Importing packages from Quicklisp {#lisp-importing-packages-from-quicklisp} diff --git a/doc/languages-frameworks/lua.section.md b/doc/languages-frameworks/lua.section.md index a6577a56a436..db230cf944a5 100644 --- a/doc/languages-frameworks/lua.section.md +++ b/doc/languages-frameworks/lua.section.md @@ -87,6 +87,7 @@ final: prev: pname = "luarocks-nix"; src = /home/my_luarocks/repository; }); + }; }; luaPackages = lua.pkgs; @@ -154,7 +155,9 @@ You can develop your package as you usually would, just don't forget to wrap it within a `toLuaModule` call, for instance ```nix -mynewlib = toLuaModule ( stdenv.mkDerivation { ... }); +{ + mynewlib = toLuaModule ( stdenv.mkDerivation { /* ... */ }); +} ``` There is also the `buildLuaPackage` function that can be used when lua modules @@ -182,24 +185,26 @@ Each interpreter has the following attributes: The `buildLuarocksPackage` function is implemented in `pkgs/development/interpreters/lua-5/build-luarocks-package.nix` The following is an example: ```nix -luaposix = buildLuarocksPackage { - pname = "luaposix"; - version = "34.0.4-1"; +{ + luaposix = buildLuarocksPackage { + pname = "luaposix"; + version = "34.0.4-1"; - src = fetchurl { - url = "https://raw.githubusercontent.com/rocks-moonscript-org/moonrocks-mirror/master/luaposix-34.0.4-1.src.rock"; - hash = "sha256-4mLJG8n4m6y4Fqd0meUDfsOb9RHSR0qa/KD5KCwrNXs="; - }; - disabled = (luaOlder "5.1") || (luaAtLeast "5.4"); - propagatedBuildInputs = [ bit32 lua std_normalize ]; + src = fetchurl { + url = "https://raw.githubusercontent.com/rocks-moonscript-org/moonrocks-mirror/master/luaposix-34.0.4-1.src.rock"; + hash = "sha256-4mLJG8n4m6y4Fqd0meUDfsOb9RHSR0qa/KD5KCwrNXs="; + }; + disabled = (luaOlder "5.1") || (luaAtLeast "5.4"); + propagatedBuildInputs = [ bit32 lua std_normalize ]; - meta = { - homepage = "https://github.com/luaposix/luaposix/"; - description = "Lua bindings for POSIX"; - maintainers = with lib.maintainers; [ vyp lblasc ]; - license.fullName = "MIT/X11"; + meta = { + homepage = "https://github.com/luaposix/luaposix/"; + description = "Lua bindings for POSIX"; + maintainers = with lib.maintainers; [ vyp lblasc ]; + license.fullName = "MIT/X11"; + }; }; -}; +} ``` The `buildLuarocksPackage` delegates most tasks to luarocks: diff --git a/doc/languages-frameworks/maven.section.md b/doc/languages-frameworks/maven.section.md index 2ec419e010eb..e56beb102570 100644 --- a/doc/languages-frameworks/maven.section.md +++ b/doc/languages-frameworks/maven.section.md @@ -40,7 +40,7 @@ maven.buildMavenPackage rec { license = lib.licenses.gpl3Plus; maintainers = with lib.maintainers; [ majiir ]; }; -}: +} ``` This package calls `maven.buildMavenPackage` to do its work. The primary difference from `stdenv.mkDerivation` is the `mvnHash` variable, which is a hash of all of the Maven dependencies. diff --git a/doc/languages-frameworks/ocaml.section.md b/doc/languages-frameworks/ocaml.section.md index 4f3b6e0264f7..44f514e90a1b 100644 --- a/doc/languages-frameworks/ocaml.section.md +++ b/doc/languages-frameworks/ocaml.section.md @@ -92,6 +92,7 @@ buildDunePackage rec { license = lib.licenses.bsd3; maintainers = with lib.maintainers; [ sternenseemann ]; }; +} ``` Here is a second example, this time using a source archive generated with `dune-release`. It is a good idea to use this archive when it is available as it will usually contain substituted variables such as a `%%VERSION%%` field. This library does not depend on any other OCaml library and no tests are run after building it. diff --git a/doc/languages-frameworks/perl.section.md b/doc/languages-frameworks/perl.section.md index c188e228112c..4ef6d173a178 100644 --- a/doc/languages-frameworks/perl.section.md +++ b/doc/languages-frameworks/perl.section.md @@ -34,23 +34,27 @@ Nixpkgs provides a function `buildPerlPackage`, a generic package builder functi Perl packages from CPAN are defined in [pkgs/top-level/perl-packages.nix](https://github.com/NixOS/nixpkgs/blob/master/pkgs/top-level/perl-packages.nix) rather than `pkgs/all-packages.nix`. Most Perl packages are so straight-forward to build that they are defined here directly, rather than having a separate function for each package called from `perl-packages.nix`. However, more complicated packages should be put in a separate file, typically in `pkgs/development/perl-modules`. Here is an example of the former: ```nix -ClassC3 = buildPerlPackage rec { - pname = "Class-C3"; - version = "0.21"; - src = fetchurl { - url = "mirror://cpan/authors/id/F/FL/FLORA/${pname}-${version}.tar.gz"; - hash = "sha256-/5GE5xHT0uYGOQxroqj6LMU7CtKn2s6vMVoSXxL4iK4="; +{ + ClassC3 = buildPerlPackage rec { + pname = "Class-C3"; + version = "0.21"; + src = fetchurl { + url = "mirror://cpan/authors/id/F/FL/FLORA/${pname}-${version}.tar.gz"; + hash = "sha256-/5GE5xHT0uYGOQxroqj6LMU7CtKn2s6vMVoSXxL4iK4="; + }; }; -}; +} ``` Note the use of `mirror://cpan/`, and the `pname` and `version` in the URL definition to ensure that the `pname` attribute is consistent with the source that we’re actually downloading. Perl packages are made available in `all-packages.nix` through the variable `perlPackages`. For instance, if you have a package that needs `ClassC3`, you would typically write ```nix -foo = import ../path/to/foo.nix { - inherit stdenv fetchurl ...; - inherit (perlPackages) ClassC3; -}; +{ + foo = import ../path/to/foo.nix { + inherit stdenv fetchurl /* ... */; + inherit (perlPackages) ClassC3; + }; +} ``` in `all-packages.nix`. You can test building a Perl package as follows: @@ -91,17 +95,19 @@ buildPerlPackage rec { Dependencies on other Perl packages can be specified in the `buildInputs` and `propagatedBuildInputs` attributes. If something is exclusively a build-time dependency, use `buildInputs`; if it’s (also) a runtime dependency, use `propagatedBuildInputs`. For instance, this builds a Perl module that has runtime dependencies on a bunch of other modules: ```nix -ClassC3Componentised = buildPerlPackage rec { - pname = "Class-C3-Componentised"; - version = "1.0004"; - src = fetchurl { - url = "mirror://cpan/authors/id/A/AS/ASH/${pname}-${version}.tar.gz"; - hash = "sha256-ASO9rV/FzJYZ0BH572Fxm2ZrFLMZLFATJng1NuU4FHc="; +{ + ClassC3Componentised = buildPerlPackage rec { + pname = "Class-C3-Componentised"; + version = "1.0004"; + src = fetchurl { + url = "mirror://cpan/authors/id/A/AS/ASH/${pname}-${version}.tar.gz"; + hash = "sha256-ASO9rV/FzJYZ0BH572Fxm2ZrFLMZLFATJng1NuU4FHc="; + }; + propagatedBuildInputs = [ + ClassC3 ClassInspector TestException MROCompat + ]; }; - propagatedBuildInputs = [ - ClassC3 ClassInspector TestException MROCompat - ]; -}; +} ``` On Darwin, if a script has too many `-Idir` flags in its first line (its “shebang line”), it will not run. This can be worked around by calling the `shortenPerlShebang` function from the `postInstall` phase: @@ -109,20 +115,22 @@ On Darwin, if a script has too many `-Idir` flags in its first line (its “sheb ```nix { lib, stdenv, buildPerlPackage, fetchurl, shortenPerlShebang }: -ImageExifTool = buildPerlPackage { - pname = "Image-ExifTool"; - version = "12.50"; +{ + ImageExifTool = buildPerlPackage { + pname = "Image-ExifTool"; + version = "12.50"; - src = fetchurl { - url = "https://exiftool.org/${pname}-${version}.tar.gz"; - hash = "sha256-vOhB/FwQMC8PPvdnjDvxRpU6jAZcC6GMQfc0AH4uwKg="; + src = fetchurl { + url = "https://exiftool.org/${pname}-${version}.tar.gz"; + hash = "sha256-vOhB/FwQMC8PPvdnjDvxRpU6jAZcC6GMQfc0AH4uwKg="; + }; + + nativeBuildInputs = lib.optional stdenv.isDarwin shortenPerlShebang; + postInstall = lib.optionalString stdenv.isDarwin '' + shortenPerlShebang $out/bin/exiftool + ''; }; - - nativeBuildInputs = lib.optional stdenv.isDarwin shortenPerlShebang; - postInstall = lib.optionalString stdenv.isDarwin '' - shortenPerlShebang $out/bin/exiftool - ''; -}; +} ``` This will remove the `-I` flags from the shebang line, rewrite them in the `use lib` form, and put them on the next line instead. This function can be given any number of Perl scripts as arguments; it will modify them in-place. diff --git a/doc/languages-frameworks/php.section.md b/doc/languages-frameworks/php.section.md index 154d8174f9aa..c1493588a606 100644 --- a/doc/languages-frameworks/php.section.md +++ b/doc/languages-frameworks/php.section.md @@ -97,7 +97,7 @@ let myPhp = php.withExtensions ({ all, ... }: with all; [ imagick opcache ]); in { services.phpfpm.pools."foo".phpPackage = myPhp; -}; +} ``` ```nix @@ -108,7 +108,7 @@ let }; in { services.phpfpm.pools."foo".phpPackage = myPhp; -}; +} ``` #### Example usage with `nix-shell` {#ssec-php-user-guide-installing-with-extensions-nix-shell} @@ -149,7 +149,7 @@ php.override { extensions = prev.extensions // { mysqlnd = prev.extensions.mysqlnd.overrideAttrs (attrs: { patches = attrs.patches or [] ++ [ - … + # ... ]; }); }; diff --git a/doc/languages-frameworks/pkg-config.section.md b/doc/languages-frameworks/pkg-config.section.md index 72b99b40a1f3..e5a2b85b6576 100644 --- a/doc/languages-frameworks/pkg-config.section.md +++ b/doc/languages-frameworks/pkg-config.section.md @@ -16,14 +16,14 @@ A good example of all these things is zlib: { pkg-config, testers, ... }: stdenv.mkDerivation (finalAttrs: { - ... + /* ... */ nativeBuildInputs = [ pkg-config validatePkgConfig ]; passthru.tests.pkg-config = testers.testMetaPkgConfig finalAttrs.finalPackage; meta = { - ... + /* ... */ pkgConfigModules = [ "zlib" ]; }; }) diff --git a/doc/languages-frameworks/python.section.md b/doc/languages-frameworks/python.section.md index 174686d24c6c..04303d741d67 100644 --- a/doc/languages-frameworks/python.section.md +++ b/doc/languages-frameworks/python.section.md @@ -254,17 +254,19 @@ The next example shows a non trivial overriding of the `blas` implementation to be used through out all of the Python package set: ```nix -python3MyBlas = pkgs.python3.override { - packageOverrides = self: super: { - # We need toPythonModule for the package set to evaluate this - blas = super.toPythonModule(super.pkgs.blas.override { - blasProvider = super.pkgs.mkl; - }); - lapack = super.toPythonModule(super.pkgs.lapack.override { - lapackProvider = super.pkgs.mkl; - }); +{ + python3MyBlas = pkgs.python3.override { + packageOverrides = self: super: { + # We need toPythonModule for the package set to evaluate this + blas = super.toPythonModule(super.pkgs.blas.override { + blasProvider = super.pkgs.mkl; + }); + lapack = super.toPythonModule(super.pkgs.lapack.override { + lapackProvider = super.pkgs.mkl; + }); + }; }; -}; +} ``` This is particularly useful for numpy and scipy users who want to gain speed with other blas implementations. @@ -322,7 +324,9 @@ python3Packages.buildPythonApplication rec { This is then added to `all-packages.nix` just as any other application would be. ```nix -luigi = callPackage ../applications/networking/cluster/luigi { }; +{ + luigi = callPackage ../applications/networking/cluster/luigi { }; +} ``` Since the package is an application, a consumer doesn't need to care about @@ -342,7 +346,9 @@ the attribute in `python-packages.nix`, and the `toPythonApplication` shall be applied to the reference: ```nix -youtube-dl = with python3Packages; toPythonApplication youtube-dl; +{ + youtube-dl = with python3Packages; toPythonApplication youtube-dl; +} ``` #### `toPythonModule` function {#topythonmodule-function} @@ -354,10 +360,12 @@ bindings should be made available from `python-packages.nix`. The modifications. ```nix -opencv = toPythonModule (pkgs.opencv.override { - enablePython = true; - pythonPackages = self; -}); +{ + opencv = toPythonModule (pkgs.opencv.override { + enablePython = true; + pythonPackages = self; + }); +} ``` Do pay attention to passing in the right Python version! @@ -1198,6 +1206,7 @@ Pytest is the most common test runner for python repositories. A trivial test run would be: ```nix +{ nativeCheckInputs = [ pytest ]; checkPhase = '' runHook preCheck @@ -1206,6 +1215,7 @@ test run would be: runHook postCheck ''; +} ``` However, many repositories' test suites do not translate well to nix's build @@ -1214,6 +1224,7 @@ sandbox, and will generally need many tests to be disabled. To filter tests using pytest, one can do the following: ```nix +{ nativeCheckInputs = [ pytest ]; # avoid tests which need additional data or touch network checkPhase = '' @@ -1223,6 +1234,7 @@ To filter tests using pytest, one can do the following: runHook postCheck ''; +} ``` `--ignore` will tell pytest to ignore that file or directory from being @@ -1249,6 +1261,7 @@ when a package may need many items disabled to run the test suite. Using the example above, the analogous `pytestCheckHook` usage would be: ```nix +{ nativeCheckInputs = [ pytestCheckHook ]; @@ -1268,12 +1281,14 @@ Using the example above, the analogous `pytestCheckHook` usage would be: disabledTestPaths = [ "tests/test_failing.py" ]; +} ``` This is especially useful when tests need to be conditionally disabled, for example: ```nix +{ disabledTests = [ # touches network "download" @@ -1285,6 +1300,7 @@ for example: # can fail when building with other packages "socket" ]; +} ``` Trying to concatenate the related strings to disable tests in a regular @@ -1299,19 +1315,23 @@ To help ensure the package still works, [`pythonImportsCheck`](#using-pythonimpo the listed modules. ```nix +{ pythonImportsCheck = [ "requests" "urllib" ]; +} ``` roughly translates to: ```nix +{ postCheck = '' PYTHONPATH=$out/${python.sitePackages}:$PYTHONPATH python -c "import requests; import urllib" ''; +} ``` However, this is done in its own phase, and not dependent on whether [`doCheck = true;`](#var-stdenv-doCheck). @@ -1343,6 +1363,7 @@ pkg3>=1.0,<=2.0 we can do: ```nix +{ nativeBuildInputs = [ pythonRelaxDepsHook ]; @@ -1353,6 +1374,7 @@ we can do: pythonRemoveDeps = [ "pkg2" ]; +} ``` which would result in the following `requirements.txt` file: @@ -1366,8 +1388,10 @@ Another option is to pass `true`, that will relax/remove all dependencies, for example: ```nix +{ nativeBuildInputs = [ pythonRelaxDepsHook ]; pythonRelaxDeps = true; +} ``` which would result in the following `requirements.txt` file: @@ -1393,6 +1417,7 @@ work with any of the [existing hooks](#setup-hooks). `unittestCheckHook` is a hook which will substitute the setuptools `test` command for a [`checkPhase`](#ssec-check-phase) which runs `python -m unittest discover`: ```nix +{ nativeCheckInputs = [ unittestCheckHook ]; @@ -1400,6 +1425,7 @@ work with any of the [existing hooks](#setup-hooks). unittestFlagsArray = [ "-s" "tests" "-v" ]; +} ``` #### Using sphinxHook {#using-sphinxhook} @@ -1410,6 +1436,7 @@ It is setup to automatically find common documentation source paths and render them using the default `html` style. ```nix +{ outputs = [ "out" "doc" @@ -1418,6 +1445,7 @@ render them using the default `html` style. nativeBuildInputs = [ sphinxHook ]; +} ``` The hook will automatically build and install the artifact into the @@ -1425,6 +1453,7 @@ The hook will automatically build and install the artifact into the for the artifacts of the `man` builder into the `man` target. ```nix +{ outputs = [ "out" "doc" @@ -1436,14 +1465,17 @@ for the artifacts of the `man` builder into the `man` target. "singlehtml" "man" ]; +} ``` Overwrite `sphinxRoot` when the hook is unable to find your documentation source root. ```nix +{ # Configure sphinxRoot for uncommon paths sphinxRoot = "weird/docs/path"; +} ``` The hook is also available to packages outside the python ecosystem by @@ -1827,6 +1859,7 @@ folder and not downloaded again. If you need to change a package's attribute(s) from `configuration.nix` you could do: ```nix +{ nixpkgs.config.packageOverrides = super: { python3 = super.python3.override { packageOverrides = python-self: python-super: { @@ -1841,6 +1874,7 @@ If you need to change a package's attribute(s) from `configuration.nix` you coul }; }; }; +} ``` `python3Packages.twisted` is now globally overridden. @@ -1853,11 +1887,13 @@ To modify only a Python package set instead of a whole Python derivation, use this snippet: ```nix +{ myPythonPackages = python3Packages.override { overrides = self: super: { - twisted = ...; + twisted = "..."; }; - } + }; +} ``` ### How to override a Python package using overlays? {#how-to-override-a-python-package-using-overlays} @@ -1893,7 +1929,7 @@ final: prev: { ( python-final: python-prev: { foo = python-prev.foo.overridePythonAttrs (oldAttrs: { - ... + # ... }); } ) @@ -1938,17 +1974,21 @@ Some packages define optional dependencies for additional features. With `extras-require`, while PEP 621 calls these `optional-dependencies`. ```nix -optional-dependencies = { - complete = [ distributed ]; -}; +{ + optional-dependencies = { + complete = [ distributed ]; + }; +} ``` and letting the package requiring the extra add the list to its dependencies ```nix -dependencies = [ - ... -] ++ dask.optional-dependencies.complete; +{ + dependencies = [ + # ... + ] ++ dask.optional-dependencies.complete; +} ``` This method is using `passthru`, meaning that changing `optional-dependencies` of a package won't cause it to rebuild. diff --git a/doc/languages-frameworks/ruby.section.md b/doc/languages-frameworks/ruby.section.md index 9527395de58f..7dede6944a3d 100644 --- a/doc/languages-frameworks/ruby.section.md +++ b/doc/languages-frameworks/ruby.section.md @@ -124,11 +124,13 @@ mkShell { buildInputs = [ gems (lowPrio gems.wrappedRuby) ]; } Sometimes a Gemfile references other files. Such as `.ruby-version` or vendored gems. When copying the Gemfile to the nix store we need to copy those files alongside. This can be done using `extraConfigPaths`. For example: ```nix +{ gems = bundlerEnv { name = "gems-for-some-project"; gemdir = ./.; extraConfigPaths = [ "${./.}/.ruby-version" ]; }; +} ``` ### Gem-specific configurations and workarounds {#gem-specific-configurations-and-workarounds} diff --git a/doc/languages-frameworks/rust.section.md b/doc/languages-frameworks/rust.section.md index f978ac967d88..8a1007b7bb8a 100644 --- a/doc/languages-frameworks/rust.section.md +++ b/doc/languages-frameworks/rust.section.md @@ -3,10 +3,12 @@ To install the rust compiler and cargo put ```nix -environment.systemPackages = [ - rustc - cargo -]; +{ + environment.systemPackages = [ + rustc + cargo + ]; +} ``` into your `configuration.nix` or bring them into scope with `nix-shell -p rustc cargo`. @@ -51,7 +53,9 @@ preferred over `cargoSha256` which was used for traditional Nix SHA-256 hashes. For example: ```nix +{ cargoHash = "sha256-l1vL2ZdtDRxSGvP0X/l3nMw8+6WF67KPutJEzUROjg8="; +} ``` Exception: If the application has cargo `git` dependencies, the `cargoHash`/`cargoSha256` @@ -67,13 +71,17 @@ then be taken from the failed build. A fake hash can be used for `cargoHash` as follows: ```nix +{ cargoHash = lib.fakeHash; +} ``` For `cargoSha256` you can use: ```nix +{ cargoSha256 = lib.fakeSha256; +} ``` Per the instructions in the [Cargo Book](https://doc.rust-lang.org/cargo/guide/cargo-toml-vs-cargo-lock.html) @@ -162,9 +170,11 @@ doesn't add a `Cargo.lock` to your `src`, and a `Cargo.lock` is still required to build a rust package. A simple fix is to use: ```nix -postPatch = '' - ln -s ${./Cargo.lock} Cargo.lock -''; +{ + postPatch = '' + ln -s ${./Cargo.lock} Cargo.lock + ''; +} ``` The output hash of each dependency that uses a git source must be @@ -409,7 +419,7 @@ the `cargoPatches` attribute to update or add it. ```nix rustPlatform.buildRustPackage rec { - (...) + # ... cargoPatches = [ # a patch file to add/update Cargo.lock in the source code ./add-Cargo.lock.patch @@ -433,10 +443,12 @@ containing `Cargo.toml` and `Cargo.lock`, `fetchCargoTarball` can be used as follows: ```nix -cargoDeps = rustPlatform.fetchCargoTarball { - inherit src; - hash = "sha256-BoHIN/519Top1NUBjpB/oEMqi86Omt3zTQcXFWqrek0="; -}; +{ + cargoDeps = rustPlatform.fetchCargoTarball { + inherit src; + hash = "sha256-BoHIN/519Top1NUBjpB/oEMqi86Omt3zTQcXFWqrek0="; + }; +} ``` The `src` attribute is required, as well as a hash specified through @@ -459,9 +471,11 @@ and fetches every dependency as a separate fixed-output derivation. `importCargoLock` can be used as follows: ```nix -cargoDeps = rustPlatform.importCargoLock { - lockFile = ./Cargo.lock; -}; +{ + cargoDeps = rustPlatform.importCargoLock { + lockFile = ./Cargo.lock; + }; +} ``` If the `Cargo.lock` file includes git dependencies, then their output @@ -469,12 +483,14 @@ hashes need to be specified since they are not available through the lock file. For example: ```nix -cargoDeps = rustPlatform.importCargoLock { - lockFile = ./Cargo.lock; - outputHashes = { - "rand-0.8.3" = "0ya2hia3cn31qa8894s3av2s8j5bjwb6yq92k0jsnlx7jid0jwqa"; +{ + cargoDeps = rustPlatform.importCargoLock { + lockFile = ./Cargo.lock; + outputHashes = { + "rand-0.8.3" = "0ya2hia3cn31qa8894s3av2s8j5bjwb6yq92k0jsnlx7jid0jwqa"; + }; }; -}; +} ``` If you do not specify an output hash for a git dependency, building @@ -792,27 +808,27 @@ general. A number of other parameters can be overridden: - The version of `rustc` used to compile the crate: ```nix - (hello {}).override { rust = pkgs.rust; }; + (hello {}).override { rust = pkgs.rust; } ``` - Whether to build in release mode or debug mode (release mode by default): ```nix - (hello {}).override { release = false; }; + (hello {}).override { release = false; } ``` - Whether to print the commands sent to `rustc` when building (equivalent to `--verbose` in cargo: ```nix - (hello {}).override { verbose = false; }; + (hello {}).override { verbose = false; } ``` - Extra arguments to be passed to `rustc`: ```nix - (hello {}).override { extraRustcOpts = "-Z debuginfo=2"; }; + (hello {}).override { extraRustcOpts = "-Z debuginfo=2"; } ``` - Phases, just like in any other derivation, can be specified using @@ -828,7 +844,7 @@ general. A number of other parameters can be overridden: preConfigure = '' echo "pub const PATH=\"${hi.out}\";" >> src/path.rs" ''; - }; + } ``` ### Setting Up `nix-shell` {#setting-up-nix-shell} diff --git a/doc/languages-frameworks/swift.section.md b/doc/languages-frameworks/swift.section.md index 67bcd6fbe741..88d98deeb2dd 100644 --- a/doc/languages-frameworks/swift.section.md +++ b/doc/languages-frameworks/swift.section.md @@ -112,13 +112,17 @@ stdenv.mkDerivation rec { If you'd like to build a different configuration than `release`: ```nix -swiftpmBuildConfig = "debug"; +{ + swiftpmBuildConfig = "debug"; +} ``` It is also possible to provide additional flags to `swift build`: ```nix -swiftpmFlags = [ "--disable-dead-strip" ]; +{ + swiftpmFlags = [ "--disable-dead-strip" ]; +} ``` The default `buildPhase` already passes `-j` for parallel building. @@ -132,7 +136,9 @@ Including `swiftpm` in your `nativeBuildInputs` also provides a default `checkPhase`, but it must be enabled with: ```nix -doCheck = true; +{ + doCheck = true; +} ``` This essentially runs: `swift test -c release` @@ -148,12 +154,14 @@ A special function `swiftpmMakeMutable` is available to replace the symlink with a writable copy: ```nix -configurePhase = generated.configure ++ '' - # Replace the dependency symlink with a writable copy. - swiftpmMakeMutable swift-crypto - # Now apply a patch. - patch -p1 -d .build/checkouts/swift-crypto -i ${./some-fix.patch} -''; +{ + configurePhase = generated.configure ++ '' + # Replace the dependency symlink with a writable copy. + swiftpmMakeMutable swift-crypto + # Now apply a patch. + patch -p1 -d .build/checkouts/swift-crypto -i ${./some-fix.patch} + ''; +} ``` ## Considerations for custom build tools {#ssec-swift-considerations-for-custom-build-tools} diff --git a/doc/languages-frameworks/vim.section.md b/doc/languages-frameworks/vim.section.md index 1f3727f552c8..69031ccbd340 100644 --- a/doc/languages-frameworks/vim.section.md +++ b/doc/languages-frameworks/vim.section.md @@ -219,9 +219,11 @@ After running the updater, if nvim-treesitter received an update, also run [`nvi Some plugins require overrides in order to function properly. Overrides are placed in [overrides.nix](https://github.com/NixOS/nixpkgs/blob/master/pkgs/applications/editors/vim/plugins/overrides.nix). Overrides are most often required when a plugin requires some dependencies, or extra steps are required during the build process. For example `deoplete-fish` requires both `deoplete-nvim` and `vim-fish`, and so the following override was added: ```nix -deoplete-fish = super.deoplete-fish.overrideAttrs(old: { - dependencies = with super; [ deoplete-nvim vim-fish ]; -}); +{ + deoplete-fish = super.deoplete-fish.overrideAttrs(old: { + dependencies = with super; [ deoplete-nvim vim-fish ]; + }); +} ``` Sometimes plugins require an override that must be changed when the plugin is updated. This can cause issues when Vim plugins are auto-updated but the associated override isn't updated. For these plugins, the override should be written so that it specifies all information required to install the plugin, and running `./update.py` doesn't change the derivation for the plugin. Manually updating the override is required to update these types of plugins. An example of such a plugin is `LanguageClient-neovim`. @@ -264,8 +266,10 @@ pwntester/octo.nvim,, You can then reference the generated vim plugins via: ```nix -myVimPlugins = pkgs.vimPlugins.extend ( - (pkgs.callPackage ./generated.nix {}) -); +{ + myVimPlugins = pkgs.vimPlugins.extend ( + (pkgs.callPackage ./generated.nix {}) + ); +} ``` diff --git a/doc/packages/darwin-builder.section.md b/doc/packages/darwin-builder.section.md index 7225e630d5cc..ca8519c5bf5f 100644 --- a/doc/packages/darwin-builder.section.md +++ b/doc/packages/darwin-builder.section.md @@ -154,6 +154,7 @@ To do this, you just need to set the `virtualisation.darwin-builder.*` parameter in the example below and rebuild. ```nix + { darwin-builder = nixpkgs.lib.nixosSystem { system = linuxSystem; modules = [ @@ -166,6 +167,8 @@ in the example below and rebuild. virtualisation.darwin-builder.workingDirectory = "/var/lib/darwin-builder"; } ]; + }; + } ``` You may make any other changes to your VM in this attribute set. For example, diff --git a/doc/packages/eclipse.section.md b/doc/packages/eclipse.section.md index e19510e131a0..acf34b57571a 100644 --- a/doc/packages/eclipse.section.md +++ b/doc/packages/eclipse.section.md @@ -13,11 +13,13 @@ Once an Eclipse variant is installed, it can be run using the `eclipse` command, If you prefer to install plugins in a more declarative manner, then Nixpkgs also offer a number of Eclipse plugins that can be installed in an _Eclipse environment_. This type of environment is created using the function `eclipseWithPlugins` found inside the `nixpkgs.eclipses` attribute set. This function takes as argument `{ eclipse, plugins ? [], jvmArgs ? [] }` where `eclipse` is a one of the Eclipse packages described above, `plugins` is a list of plugin derivations, and `jvmArgs` is a list of arguments given to the JVM running the Eclipse. For example, say you wish to install the latest Eclipse Platform with the popular Eclipse Color Theme plugin and also allow Eclipse to use more RAM. You could then add: ```nix -packageOverrides = pkgs: { - myEclipse = with pkgs.eclipses; eclipseWithPlugins { - eclipse = eclipse-platform; - jvmArgs = [ "-Xmx2048m" ]; - plugins = [ plugins.color-theme ]; +{ + packageOverrides = pkgs: { + myEclipse = with pkgs.eclipses; eclipseWithPlugins { + eclipse = eclipse-platform; + jvmArgs = [ "-Xmx2048m" ]; + plugins = [ plugins.color-theme ]; + }; }; } ``` @@ -33,32 +35,34 @@ If there is a need to install plugins that are not available in Nixpkgs then it Expanding the previous example with two plugins using the above functions, we have: ```nix -packageOverrides = pkgs: { - myEclipse = with pkgs.eclipses; eclipseWithPlugins { - eclipse = eclipse-platform; - jvmArgs = [ "-Xmx2048m" ]; - plugins = [ - plugins.color-theme - (plugins.buildEclipsePlugin { - name = "myplugin1-1.0"; - srcFeature = fetchurl { - url = "http://…/features/myplugin1.jar"; - hash = "sha256-123…"; - }; - srcPlugin = fetchurl { - url = "http://…/plugins/myplugin1.jar"; - hash = "sha256-123…"; - }; - }); - (plugins.buildEclipseUpdateSite { - name = "myplugin2-1.0"; - src = fetchurl { - stripRoot = false; - url = "http://…/myplugin2.zip"; - hash = "sha256-123…"; - }; - }); - ]; +{ + packageOverrides = pkgs: { + myEclipse = with pkgs.eclipses; eclipseWithPlugins { + eclipse = eclipse-platform; + jvmArgs = [ "-Xmx2048m" ]; + plugins = [ + plugins.color-theme + (plugins.buildEclipsePlugin { + name = "myplugin1-1.0"; + srcFeature = fetchurl { + url = "http://…/features/myplugin1.jar"; + hash = "sha256-123…"; + }; + srcPlugin = fetchurl { + url = "http://…/plugins/myplugin1.jar"; + hash = "sha256-123…"; + }; + }) + (plugins.buildEclipseUpdateSite { + name = "myplugin2-1.0"; + src = fetchurl { + stripRoot = false; + url = "http://…/myplugin2.zip"; + hash = "sha256-123…"; + }; + }) + ]; + }; }; } ``` diff --git a/doc/packages/emacs.section.md b/doc/packages/emacs.section.md index c50c7815537d..2ced251f3e46 100644 --- a/doc/packages/emacs.section.md +++ b/doc/packages/emacs.section.md @@ -16,7 +16,7 @@ The Emacs package comes with some extra helpers to make it easier to configure. projectile use-package ])); - } + }; } ``` @@ -102,10 +102,12 @@ This provides a fairly full Emacs start file. It will load in addition to the us Sometimes `emacs.pkgs.withPackages` is not enough, as this package set has some priorities imposed on packages (with the lowest priority assigned to GNU-devel ELPA, and the highest for packages manually defined in `pkgs/applications/editors/emacs/elisp-packages/manual-packages`). But you can't control these priorities when some package is installed as a dependency. You can override it on a per-package-basis, providing all the required dependencies manually, but it's tedious and there is always a possibility that an unwanted dependency will sneak in through some other package. To completely override such a package, you can use `overrideScope`. ```nix -overrides = self: super: rec { - haskell-mode = self.melpaPackages.haskell-mode; - ... -}; +let + overrides = self: super: rec { + haskell-mode = self.melpaPackages.haskell-mode; + # ... + }; +in ((emacsPackagesFor emacs).overrideScope overrides).withPackages (p: with p; [ # here both these package will use haskell-mode of our own choice @@ -113,3 +115,4 @@ overrides = self: super: rec { dante ]) ``` +} diff --git a/doc/packages/steam.section.md b/doc/packages/steam.section.md index a1e88b0d9710..c9a09962f62d 100644 --- a/doc/packages/steam.section.md +++ b/doc/packages/steam.section.md @@ -51,7 +51,7 @@ Use `programs.steam.enable = true;` if you want to add steam to `systemPackages` you need to add: ```nix - steam.override { withJava = true; }; + steam.override { withJava = true; } ``` ## steam-run {#sec-steam-run} diff --git a/doc/packages/urxvt.section.md b/doc/packages/urxvt.section.md index 7aff0997dd2b..1d40c92ed73f 100644 --- a/doc/packages/urxvt.section.md +++ b/doc/packages/urxvt.section.md @@ -65,7 +65,9 @@ A plugin can be any kind of derivation, the only requirement is that it should a If the plugin is itself a Perl package that needs to be imported from other plugins or scripts, add the following passthrough: ```nix -passthru.perlPackages = [ "self" ]; +{ + passthru.perlPackages = [ "self" ]; +} ``` This will make the urxvt wrapper pick up the dependency and set up the Perl path accordingly. diff --git a/doc/packages/weechat.section.md b/doc/packages/weechat.section.md index 755b6e6ad1ea..295397f476b0 100644 --- a/doc/packages/weechat.section.md +++ b/doc/packages/weechat.section.md @@ -3,9 +3,9 @@ WeeChat can be configured to include your choice of plugins, reducing its closure size from the default configuration which includes all available plugins. To make use of this functionality, install an expression that overrides its configuration, such as: ```nix -weechat.override {configure = {availablePlugins, ...}: { +weechat.override {configure = ({availablePlugins, ...}: { plugins = with availablePlugins; [ python perl ]; - } + }); } ``` @@ -59,7 +59,7 @@ weechat.override { ]; init = '' /set plugins.var.python.jabber.key "val" - '': + ''; }; } ``` diff --git a/doc/stdenv/cross-compilation.chapter.md b/doc/stdenv/cross-compilation.chapter.md index 7ccd94f6e20e..76c931ba047a 100644 --- a/doc/stdenv/cross-compilation.chapter.md +++ b/doc/stdenv/cross-compilation.chapter.md @@ -15,7 +15,9 @@ Nixpkgs follows the [conventions of GNU autoconf](https://gcc.gnu.org/onlinedocs In Nixpkgs, these three platforms are defined as attribute sets under the names `buildPlatform`, `hostPlatform`, and `targetPlatform`. They are always defined as attributes in the standard environment. That means one can access them like: ```nix -{ stdenv, fooDep, barDep, ... }: ...stdenv.buildPlatform... +{ stdenv, fooDep, barDep, ... }: { + # ...stdenv.buildPlatform... +} ``` `buildPlatform` @@ -127,7 +129,9 @@ Some frequently encountered problems when packaging for cross-compilation should Many packages assume that an unprefixed binutils (`cc`/`ar`/`ld` etc.) is available, but Nix doesn't provide one. It only provides a prefixed one, just as it only does for all the other binutils programs. It may be necessary to patch the package to fix the build system to use a prefix. For instance, instead of `cc`, use `${stdenv.cc.targetPrefix}cc`. ```nix -makeFlags = [ "CC=${stdenv.cc.targetPrefix}cc" ]; +{ + makeFlags = [ "CC=${stdenv.cc.targetPrefix}cc" ]; +} ``` #### How do I avoid compiling a GCC cross-compiler from source? {#cross-qa-avoid-compiling-gcc-cross-compiler} @@ -142,7 +146,9 @@ $ nix-build '' -A pkgsCross.raspberryPi.hello Add the following to your `mkDerivation` invocation. ```nix -depsBuildBuild = [ buildPackages.stdenv.cc ]; +{ + depsBuildBuild = [ buildPackages.stdenv.cc ]; +} ``` #### My package’s testsuite needs to run host platform code. {#cross-testsuite-runs-host-code} @@ -150,7 +156,9 @@ depsBuildBuild = [ buildPackages.stdenv.cc ]; Add the following to your `mkDerivation` invocation. ```nix -doCheck = stdenv.buildPlatform.canExecute stdenv.hostPlatform; +{ + doCheck = stdenv.buildPlatform.canExecute stdenv.hostPlatform; +} ``` #### Package using Meson needs to run binaries for the host platform during build. {#cross-meson-runs-host-code} @@ -160,11 +168,13 @@ Add `mesonEmulatorHook` to `nativeBuildInputs` conditionally on if the target bi e.g. ```nix -nativeBuildInputs = [ - meson -] ++ lib.optionals (!stdenv.buildPlatform.canExecute stdenv.hostPlatform) [ - mesonEmulatorHook -]; +{ + nativeBuildInputs = [ + meson + ] ++ lib.optionals (!stdenv.buildPlatform.canExecute stdenv.hostPlatform) [ + mesonEmulatorHook + ]; +} ``` Example of an error which this fixes. diff --git a/doc/stdenv/meta.chapter.md b/doc/stdenv/meta.chapter.md index 4a3b04b8f6e4..7f57eda791ea 100644 --- a/doc/stdenv/meta.chapter.md +++ b/doc/stdenv/meta.chapter.md @@ -3,17 +3,19 @@ Nix packages can declare *meta-attributes* that contain information about a package such as a description, its homepage, its license, and so on. For instance, the GNU Hello package has a `meta` declaration like this: ```nix -meta = { - description = "A program that produces a familiar, friendly greeting"; - longDescription = '' - GNU Hello is a program that prints "Hello, world!" when you run it. - It is fully customizable. - ''; - homepage = "https://www.gnu.org/software/hello/manual/"; - license = lib.licenses.gpl3Plus; - maintainers = with lib.maintainers; [ eelco ]; - platforms = lib.platforms.all; -}; +{ + meta = { + description = "A program that produces a familiar, friendly greeting"; + longDescription = '' + GNU Hello is a program that prints "Hello, world!" when you run it. + It is fully customizable. + ''; + homepage = "https://www.gnu.org/software/hello/manual/"; + license = lib.licenses.gpl3Plus; + maintainers = with lib.maintainers; [ eelco ]; + platforms = lib.platforms.all; + }; +} ``` Meta-attributes are not passed to the builder of the package. Thus, a change to a meta-attribute doesn’t trigger a recompilation of the package. @@ -82,7 +84,9 @@ The *priority* of the package, used by `nix-env` to resolve file name conflicts The list of Nix platform types on which the package is supported. Hydra builds packages according to the platform specified. If no platform is specified, the package does not have prebuilt binaries. An example is: ```nix -meta.platforms = lib.platforms.linux; +{ + meta.platforms = lib.platforms.linux; +} ``` Attribute Set `lib.platforms` defines [various common lists](https://github.com/NixOS/nixpkgs/blob/master/lib/systems/doubles.nix) of platforms types. @@ -95,8 +99,10 @@ In general it is preferable to set `meta.platforms = lib.platforms.all` and then For example, a package which requires dynamic linking and cannot be linked statically could use this: ```nix -meta.platforms = lib.platforms.all; -meta.badPlatforms = [ lib.systems.inspect.patterns.isStatic ]; +{ + meta.platforms = lib.platforms.all; + meta.badPlatforms = [ lib.systems.inspect.patterns.isStatic ]; +} ``` The [`lib.meta.availableOn`](https://github.com/NixOS/nixpkgs/blob/b03ac42b0734da3e7be9bf8d94433a5195734b19/lib/meta.nix#L95-L106) function can be used to test whether or not a package is available (i.e. buildable) on a given platform. @@ -136,7 +142,7 @@ For more on how to write and run package tests, see [](#sec-package-tests). The NixOS tests are available as `nixosTests` in parameters of derivations. For instance, the OpenSMTPD derivation includes lines similar to: ```nix -{ /* ... */, nixosTests }: +{ /* ... , */ nixosTests }: { # ... passthru.tests = { @@ -194,8 +200,10 @@ To be effective, it must be presented directly to an evaluation process that han The list of Nix platform types for which the [Hydra](https://github.com/nixos/hydra) [instance at `hydra.nixos.org`](https://nixos.org/hydra) will build the package. (Hydra is the Nix-based continuous build system.) It defaults to the value of `meta.platforms`. Thus, the only reason to set `meta.hydraPlatforms` is if you want `hydra.nixos.org` to build the package on a subset of `meta.platforms`, or not at all, e.g. ```nix -meta.platforms = lib.platforms.linux; -meta.hydraPlatforms = []; +{ + meta.platforms = lib.platforms.linux; + meta.hydraPlatforms = []; +} ``` ### `broken` {#var-meta-broken} @@ -209,13 +217,17 @@ This means that `broken` can be used to express constraints, for example: - Does not cross compile ```nix - meta.broken = !(stdenv.buildPlatform.canExecute stdenv.hostPlatform) + { + meta.broken = !(stdenv.buildPlatform.canExecute stdenv.hostPlatform); + } ``` - Broken if all of a certain set of its dependencies are broken ```nix - meta.broken = lib.all (map (p: p.meta.broken) [ glibc musl ]) + { + meta.broken = lib.all (map (p: p.meta.broken) [ glibc musl ]); + } ``` This makes `broken` strictly more powerful than `meta.badPlatforms`. diff --git a/doc/stdenv/multiple-output.chapter.md b/doc/stdenv/multiple-output.chapter.md index 1ee063c0c2f4..5e86d2aa3d56 100644 --- a/doc/stdenv/multiple-output.chapter.md +++ b/doc/stdenv/multiple-output.chapter.md @@ -30,7 +30,9 @@ Here you find how to write a derivation that produces multiple outputs. In nixpkgs there is a framework supporting multiple-output derivations. It tries to cover most cases by default behavior. You can find the source separated in ``; it’s relatively well-readable. The whole machinery is triggered by defining the `outputs` attribute to contain the list of desired output names (strings). ```nix -outputs = [ "bin" "dev" "out" "doc" ]; +{ + outputs = [ "bin" "dev" "out" "doc" ]; +} ``` Often such a single line is enough. For each output an equally named environment variable is passed to the builder and contains the path in nix store for that output. Typically you also want to have the main `out` output, as it catches any files that didn’t get elsewhere. diff --git a/doc/stdenv/stdenv.chapter.md b/doc/stdenv/stdenv.chapter.md index a948c6757c4a..a1e27b7bdf7f 100644 --- a/doc/stdenv/stdenv.chapter.md +++ b/doc/stdenv/stdenv.chapter.md @@ -36,7 +36,7 @@ Many packages have dependencies that are not provided in the standard environmen stdenv.mkDerivation { pname = "libfoo"; version = "1.2.3"; - ... + # ... buildInputs = [libbar perl ncurses]; } ``` @@ -49,7 +49,7 @@ Often it is necessary to override or modify some aspect of the build. To make th stdenv.mkDerivation { pname = "fnord"; version = "4.5"; - ... + # ... buildPhase = '' gcc foo.c -o foo ''; @@ -70,7 +70,7 @@ While the standard environment provides a generic builder, you can still supply stdenv.mkDerivation { pname = "libfoo"; version = "1.2.3"; - ... + # ... builder = ./builder.sh; } ``` @@ -449,11 +449,13 @@ Unless set to `false`, some build systems with good support for parallel buildin This is an attribute set which can be filled with arbitrary values. For example: ```nix -passthru = { - foo = "bar"; - baz = { - value1 = 4; - value2 = 5; +{ + passthru = { + foo = "bar"; + baz = { + value1 = 4; + value2 = 5; + }; }; } ``` @@ -467,27 +469,33 @@ A script to be run by `maintainers/scripts/update.nix` when the package is match - []{#var-passthru-updateScript-command} an executable file, either on the file system: ```nix - passthru.updateScript = ./update.sh; + { + passthru.updateScript = ./update.sh; + } ``` or inside the expression itself: ```nix - passthru.updateScript = writeScript "update-zoom-us" '' - #!/usr/bin/env nix-shell - #!nix-shell -i bash -p curl pcre2 common-updater-scripts + { + passthru.updateScript = writeScript "update-zoom-us" '' + #!/usr/bin/env nix-shell + #!nix-shell -i bash -p curl pcre2 common-updater-scripts - set -eu -o pipefail + set -eu -o pipefail - version="$(curl -sI https://zoom.us/client/latest/zoom_x86_64.tar.xz | grep -Fi 'Location:' | pcre2grep -o1 '/(([0-9]\.?)+)/')" - update-source-version zoom-us "$version" - ''; + version="$(curl -sI https://zoom.us/client/latest/zoom_x86_64.tar.xz | grep -Fi 'Location:' | pcre2grep -o1 '/(([0-9]\.?)+)/')" + update-source-version zoom-us "$version" + ''; + } ``` - a list, a script followed by arguments to be passed to it: ```nix - passthru.updateScript = [ ../../update.sh pname "--requested-release=unstable" ]; + { + passthru.updateScript = [ ../../update.sh pname "--requested-release=unstable" ]; + } ``` - an attribute set containing: @@ -496,18 +504,22 @@ A script to be run by `maintainers/scripts/update.nix` when the package is match - [`supportedFeatures`]{#var-passthru-updateScript-set-supportedFeatures} (optional) – a list of the [extra features](#var-passthru-updateScript-supported-features) the script supports. ```nix - passthru.updateScript = { - command = [ ../../update.sh pname ]; - attrPath = pname; - supportedFeatures = [ … ]; - }; + { + passthru.updateScript = { + command = [ ../../update.sh pname ]; + attrPath = pname; + supportedFeatures = [ /* ... */ ]; + }; + } ``` ::: {.tip} A common pattern is to use the [`nix-update-script`](https://github.com/NixOS/nixpkgs/blob/master/pkgs/common-updater/nix-update.nix) attribute provided in Nixpkgs, which runs [`nix-update`](https://github.com/Mic92/nix-update): ```nix -passthru.updateScript = nix-update-script { }; +{ + passthru.updateScript = nix-update-script { }; +} ``` For simple packages, this is often enough, and will ensure that the package is updated automatically by [`nixpkgs-update`](https://ryantm.github.io/nixpkgs-update) when a new version is released. The [update bot](https://nix-community.org/update-bot) runs periodically to attempt to automatically update packages, and will run `passthru.updateScript` if set. While not strictly necessary if the project is listed on [Repology](https://repology.org), using `nix-update-script` allows the package to update via many more sources (e.g. GitHub releases). @@ -846,7 +858,9 @@ The file name of the Makefile. A list of strings passed as additional flags to `make`. These flags are also used by the default install and check phase. For setting make flags specific to the build phase, use `buildFlags` (see below). ```nix -makeFlags = [ "PREFIX=$(out)" ]; +{ + makeFlags = [ "PREFIX=$(out)" ]; +} ``` ::: {.note} @@ -858,9 +872,11 @@ The flags are quoted in bash, but environment variables can be specified by usin A shell array containing additional arguments passed to `make`. You must use this instead of `makeFlags` if the arguments contain spaces, e.g. ```nix -preBuild = '' - makeFlagsArray+=(CFLAGS="-O0 -g" LDFLAGS="-lfoo -lbar") -''; +{ + preBuild = '' + makeFlagsArray+=(CFLAGS="-O0 -g" LDFLAGS="-lfoo -lbar") + ''; +} ``` Note that shell arrays cannot be passed through environment variables, so you cannot set `makeFlagsArray` in a derivation attribute (because those are passed through environment variables): you have to define them in shell code. @@ -892,7 +908,9 @@ The check phase checks whether the package was built correctly by running its te Controls whether the check phase is executed. By default it is skipped, but if `doCheck` is set to true, the check phase is usually executed. Thus you should set ```nix -doCheck = true; +{ + doCheck = true; +} ``` in the derivation to enable checks. The exception is cross compilation. Cross compiled builds never run tests, no matter how `doCheck` is set, as the newly-built program won’t run on the platform used to build it. @@ -945,7 +963,9 @@ See the [build phase](#var-stdenv-makeFlags) for details. The make targets that perform the installation. Defaults to `install`. Example: ```nix -installTargets = "install-bin install-doc"; +{ + installTargets = "install-bin install-doc"; +} ``` ##### `installFlags` / `installFlagsArray` {#var-stdenv-installFlags} @@ -1024,7 +1044,7 @@ This example prevents all `*.rlib` files from being stripped: ```nix stdenv.mkDerivation { # ... - stripExclude = [ "*.rlib" ] + stripExclude = [ "*.rlib" ]; } ``` @@ -1033,7 +1053,7 @@ This example prevents files within certain paths from being stripped: ```nix stdenv.mkDerivation { # ... - stripExclude = [ "lib/modules/*/build/* ] + stripExclude = [ "lib/modules/*/build/*" ]; } ``` @@ -1134,7 +1154,9 @@ It is often better to add tests that are not part of the source distribution to Controls whether the installCheck phase is executed. By default it is skipped, but if `doInstallCheck` is set to true, the installCheck phase is usually executed. Thus you should set ```nix -doInstallCheck = true; +{ + doInstallCheck = true; +} ``` in the derivation to enable install checks. The exception is cross compilation. Cross compiled builds never run tests, no matter how `doInstallCheck` is set, as the newly-built program won’t run on the platform used to build it. @@ -1244,9 +1266,11 @@ To use this, add `removeReferencesTo` to `nativeBuildInputs`. As `remove-references-to` is an actual executable and not a shell function, it can be used with `find`. Example removing all references to the compiler in the output: ```nix -postInstall = '' - find "$out" -type f -exec remove-references-to -t ${stdenv.cc} '{}' + -''; +{ + postInstall = '' + find "$out" -type f -exec remove-references-to -t ${stdenv.cc} '{}' + + ''; +} ``` ### `substitute` \ \ \ {#fun-substitute} diff --git a/doc/using/configuration.chapter.md b/doc/using/configuration.chapter.md index 8d246b117b05..252d255de829 100644 --- a/doc/using/configuration.chapter.md +++ b/doc/using/configuration.chapter.md @@ -176,7 +176,7 @@ You can define a function called `packageOverrides` in your local `~/.config/nix ```nix { packageOverrides = pkgs: rec { - foo = pkgs.foo.override { ... }; + foo = pkgs.foo.override { /* ... */ }; }; } ``` diff --git a/doc/using/overlays.chapter.md b/doc/using/overlays.chapter.md index 1bec6586f28e..46200730f0b2 100644 --- a/doc/using/overlays.chapter.md +++ b/doc/using/overlays.chapter.md @@ -141,7 +141,7 @@ For BLAS/LAPACK switching to work correctly, all packages must depend on `blas` assert (!blas.isILP64) && (!lapack.isILP64); stdenv.mkDerivation { - ... + # ... } ``` diff --git a/doc/using/overrides.chapter.md b/doc/using/overrides.chapter.md index a1ef9afb0b69..8c6ed79076c2 100644 --- a/doc/using/overrides.chapter.md +++ b/doc/using/overrides.chapter.md @@ -13,13 +13,13 @@ It is used to override the arguments passed to a function. Example usages: ```nix -pkgs.foo.override { arg1 = val1; arg2 = val2; ... } +pkgs.foo.override { arg1 = val1; arg2 = val2; /* ... */ } ``` It's also possible to access the previous arguments. ```nix -pkgs.foo.override (previous: { arg1 = previous.arg1; ... }) +pkgs.foo.override (previous: { arg1 = previous.arg1; /* ... */ }) ``` @@ -27,13 +27,15 @@ pkgs.foo.override (previous: { arg1 = previous.arg1; ... }) ```nix import pkgs.path { overlays = [ (self: super: { foo = super.foo.override { barSupport = true ; }; - })]}; + })];} ``` ```nix -mypkg = pkgs.callPackage ./mypkg.nix { - mydep = pkgs.mydep.override { ... }; - } +{ + mypkg = pkgs.callPackage ./mypkg.nix { + mydep = pkgs.mydep.override { /* ... */ }; + }; +} ``` In the first example, `pkgs.foo` is the result of a function call with some default arguments, usually a derivation. Using `pkgs.foo.override` will call the same function with the given new arguments. @@ -45,9 +47,11 @@ The function `overrideAttrs` allows overriding the attribute set passed to a `st Example usages: ```nix -helloBar = pkgs.hello.overrideAttrs (finalAttrs: previousAttrs: { - pname = previousAttrs.pname + "-bar"; -}); +{ + helloBar = pkgs.hello.overrideAttrs (finalAttrs: previousAttrs: { + pname = previousAttrs.pname + "-bar"; + }); +} ``` In the above example, "-bar" is appended to the pname attribute, while all other attributes will be retained from the original `hello` package. @@ -61,9 +65,11 @@ If only a one-argument function is written, the argument has the meaning of `pre Function arguments can be omitted entirely if there is no need to access `previousAttrs` or `finalAttrs`. ```nix -helloWithDebug = pkgs.hello.overrideAttrs { - separateDebugInfo = true; -}; +{ + helloWithDebug = pkgs.hello.overrideAttrs { + separateDebugInfo = true; + }; +} ``` In the above example, the `separateDebugInfo` attribute is overridden to be true, thus building debug info for `helloWithDebug`. @@ -87,14 +93,16 @@ The function `overrideDerivation` creates a new derivation based on an existing Example usage: ```nix -mySed = pkgs.gnused.overrideDerivation (oldAttrs: { - name = "sed-4.2.2-pre"; - src = fetchurl { - url = "ftp://alpha.gnu.org/gnu/sed/sed-4.2.2-pre.tar.bz2"; - hash = "sha256-MxBJRcM2rYzQYwJ5XKxhXTQByvSg5jZc5cSHEZoB2IY="; - }; - patches = []; -}); +{ + mySed = pkgs.gnused.overrideDerivation (oldAttrs: { + name = "sed-4.2.2-pre"; + src = fetchurl { + url = "ftp://alpha.gnu.org/gnu/sed/sed-4.2.2-pre.tar.bz2"; + hash = "sha256-MxBJRcM2rYzQYwJ5XKxhXTQByvSg5jZc5cSHEZoB2IY="; + }; + patches = []; + }); +} ``` In the above example, the `name`, `src`, and `patches` of the derivation will be overridden, while all other attributes will be retained from the original derivation. @@ -112,8 +120,10 @@ The function `lib.makeOverridable` is used to make the result of a function easi Example usage: ```nix -f = { a, b }: { result = a+b; }; -c = lib.makeOverridable f { a = 1; b = 2; }; +{ + f = { a, b }: { result = a+b; }; + c = lib.makeOverridable f { a = 1; b = 2; }; +} ``` The variable `c` is the value of the `f` function applied with some default arguments. Hence the value of `c.result` is `3`, in this example. diff --git a/maintainers/README.md b/maintainers/README.md index f121ec756413..848cb9fed9b5 100644 --- a/maintainers/README.md +++ b/maintainers/README.md @@ -87,8 +87,8 @@ checks should be performed: keys = [{ fingerprint = "0000 0000 2A70 6423 0AED 3C11 F04F 7A19 AAA6 3AFE"; }]; - } - }; + }; + } ``` First receive their key from a keyserver: @@ -133,8 +133,8 @@ checks should be performed: name = "Example User"; github = "ghost"; githubId = 10137; - } - }; + }; + } ``` First, make sure that the listed GitHub handle matches the author of diff --git a/nixos/doc/manual/administration/cleaning-store.chapter.md b/nixos/doc/manual/administration/cleaning-store.chapter.md index c9140d0869c7..4f404882055a 100644 --- a/nixos/doc/manual/administration/cleaning-store.chapter.md +++ b/nixos/doc/manual/administration/cleaning-store.chapter.md @@ -21,8 +21,10 @@ You can tell NixOS in `configuration.nix` to run this unit automatically at certain points in time, for instance, every night at 03:15: ```nix -nix.gc.automatic = true; -nix.gc.dates = "03:15"; +{ + nix.gc.automatic = true; + nix.gc.dates = "03:15"; +} ``` The commands above do not remove garbage collector roots, such as old diff --git a/nixos/doc/manual/administration/container-networking.section.md b/nixos/doc/manual/administration/container-networking.section.md index 0873768376cc..723cf211d872 100644 --- a/nixos/doc/manual/administration/container-networking.section.md +++ b/nixos/doc/manual/administration/container-networking.section.md @@ -26,9 +26,11 @@ host to rewrite container traffic to use your external IP address. This can be accomplished using the following configuration on the host: ```nix -networking.nat.enable = true; -networking.nat.internalInterfaces = ["ve-+"]; -networking.nat.externalInterface = "eth0"; +{ + networking.nat.enable = true; + networking.nat.internalInterfaces = ["ve-+"]; + networking.nat.externalInterface = "eth0"; +} ``` where `eth0` should be replaced with the desired external interface. @@ -38,7 +40,9 @@ If you are using Network Manager, you need to explicitly prevent it from managing container interfaces: ```nix -networking.networkmanager.unmanaged = [ "interface-name:ve-*" ]; +{ + networking.networkmanager.unmanaged = [ "interface-name:ve-*" ]; +} ``` You may need to restart your system for the changes to take effect. diff --git a/nixos/doc/manual/administration/control-groups.chapter.md b/nixos/doc/manual/administration/control-groups.chapter.md index abe8dd80b5ab..8682236ca1a9 100644 --- a/nixos/doc/manual/administration/control-groups.chapter.md +++ b/nixos/doc/manual/administration/control-groups.chapter.md @@ -39,7 +39,9 @@ they were in the same cgroup, then the PostgreSQL process would get `configuration.nix`: ```nix -systemd.services.httpd.serviceConfig.CPUShares = 512; +{ + systemd.services.httpd.serviceConfig.CPUShares = 512; +} ``` By default, every cgroup has 1024 CPU shares, so this will halve the CPU @@ -52,7 +54,9 @@ limits can be specified in `configuration.nix`; for instance, to limit `httpd.service` to 512 MiB of RAM (excluding swap): ```nix -systemd.services.httpd.serviceConfig.MemoryLimit = "512M"; +{ + systemd.services.httpd.serviceConfig.MemoryLimit = "512M"; +} ``` The command `systemd-cgtop` shows a continuously updated list of all diff --git a/nixos/doc/manual/administration/declarative-containers.section.md b/nixos/doc/manual/administration/declarative-containers.section.md index eaa50d3c663d..f16fa8332b51 100644 --- a/nixos/doc/manual/administration/declarative-containers.section.md +++ b/nixos/doc/manual/administration/declarative-containers.section.md @@ -5,13 +5,15 @@ You can also specify containers and their configuration in the host's shall be a container named `database` running PostgreSQL: ```nix -containers.database = - { config = - { config, pkgs, ... }: - { services.postgresql.enable = true; - services.postgresql.package = pkgs.postgresql_14; - }; - }; +{ + containers.database = + { config = + { config, pkgs, ... }: + { services.postgresql.enable = true; + services.postgresql.package = pkgs.postgresql_14; + }; + }; +} ``` If you run `nixos-rebuild switch`, the container will be built. If the @@ -25,11 +27,13 @@ cannot change the network configuration. You can give a container its own network as follows: ```nix -containers.database = { - privateNetwork = true; - hostAddress = "192.168.100.10"; - localAddress = "192.168.100.11"; -}; +{ + containers.database = { + privateNetwork = true; + hostAddress = "192.168.100.10"; + localAddress = "192.168.100.11"; + }; +} ``` This gives the container a private virtual Ethernet interface with IP diff --git a/nixos/doc/manual/administration/service-mgmt.chapter.md b/nixos/doc/manual/administration/service-mgmt.chapter.md index bc9bdbe3708b..49e8d801fb80 100644 --- a/nixos/doc/manual/administration/service-mgmt.chapter.md +++ b/nixos/doc/manual/administration/service-mgmt.chapter.md @@ -82,7 +82,9 @@ In order to enable a systemd *system* service with provided upstream package, use (e.g): ```nix -systemd.packages = [ pkgs.packagekit ]; +{ + systemd.packages = [ pkgs.packagekit ]; +} ``` Usually NixOS modules written by the community do the above, plus take diff --git a/nixos/doc/manual/configuration/abstractions.section.md b/nixos/doc/manual/configuration/abstractions.section.md index bf26e4c51ed3..5bc44aa72245 100644 --- a/nixos/doc/manual/configuration/abstractions.section.md +++ b/nixos/doc/manual/configuration/abstractions.section.md @@ -47,9 +47,9 @@ You can write a `let` wherever an expression is allowed. Thus, you also could ha ```nix { services.httpd.virtualHosts = - let commonConfig = ...; in - { "blog.example.org" = (commonConfig // { ... }) - "wiki.example.org" = (commonConfig // { ... }) + let commonConfig = { /* ... */ }; in + { "blog.example.org" = (commonConfig // { /* ... */ }); + "wiki.example.org" = (commonConfig // { /* ... */ }); }; } ``` diff --git a/nixos/doc/manual/configuration/ad-hoc-network-config.section.md b/nixos/doc/manual/configuration/ad-hoc-network-config.section.md index 4478d77f361d..ecb06ad984a3 100644 --- a/nixos/doc/manual/configuration/ad-hoc-network-config.section.md +++ b/nixos/doc/manual/configuration/ad-hoc-network-config.section.md @@ -6,8 +6,10 @@ is useful for doing network configuration not covered by the existing NixOS modules. For instance, to statically configure an IPv6 address: ```nix -networking.localCommands = - '' - ip -6 addr add 2001:610:685:1::1/64 dev eth0 - ''; +{ + networking.localCommands = + '' + ip -6 addr add 2001:610:685:1::1/64 dev eth0 + ''; +} ``` diff --git a/nixos/doc/manual/configuration/adding-custom-packages.section.md b/nixos/doc/manual/configuration/adding-custom-packages.section.md index 2340723e07c6..f9a5221d6c93 100644 --- a/nixos/doc/manual/configuration/adding-custom-packages.section.md +++ b/nixos/doc/manual/configuration/adding-custom-packages.section.md @@ -23,7 +23,9 @@ Then you write and test the package as described in the Nixpkgs manual. Finally, you add it to [](#opt-environment.systemPackages), e.g. ```nix -environment.systemPackages = [ pkgs.my-package ]; +{ + environment.systemPackages = [ pkgs.my-package ]; +} ``` and you run `nixos-rebuild`, specifying your own Nixpkgs tree: @@ -38,24 +40,28 @@ tree. For instance, here is how you specify a build of the `configuration.nix`: ```nix -environment.systemPackages = - let - my-hello = with pkgs; stdenv.mkDerivation rec { - name = "hello-2.8"; - src = fetchurl { - url = "mirror://gnu/hello/${name}.tar.gz"; - hash = "sha256-5rd/gffPfa761Kn1tl3myunD8TuM+66oy1O7XqVGDXM="; +{ + environment.systemPackages = + let + my-hello = with pkgs; stdenv.mkDerivation rec { + name = "hello-2.8"; + src = fetchurl { + url = "mirror://gnu/hello/${name}.tar.gz"; + hash = "sha256-5rd/gffPfa761Kn1tl3myunD8TuM+66oy1O7XqVGDXM="; + }; }; - }; - in - [ my-hello ]; + in + [ my-hello ]; +} ``` Of course, you can also move the definition of `my-hello` into a separate Nix expression, e.g. ```nix -environment.systemPackages = [ (import ./my-hello.nix) ]; +{ + environment.systemPackages = [ (import ./my-hello.nix) ]; +} ``` where `my-hello.nix` contains: @@ -88,7 +94,9 @@ section](#module-services-flatpak). AppImages will not run "as-is" on NixOS. First you need to install `appimage-run`: add to `/etc/nixos/configuration.nix` ```nix -environment.systemPackages = [ pkgs.appimage-run ]; +{ + environment.systemPackages = [ pkgs.appimage-run ]; +} ``` Then instead of running the AppImage "as-is", run `appimage-run foo.appimage`. diff --git a/nixos/doc/manual/configuration/config-file.section.md b/nixos/doc/manual/configuration/config-file.section.md index b010026c5828..e213aae29ae3 100644 --- a/nixos/doc/manual/configuration/config-file.section.md +++ b/nixos/doc/manual/configuration/config-file.section.md @@ -5,7 +5,7 @@ The NixOS configuration file generally looks like this: ```nix { config, pkgs, ... }: -{ option definitions +{ /* option definitions */ } ``` @@ -80,7 +80,9 @@ Strings : Strings are enclosed in double quotes, e.g. ```nix - networking.hostName = "dexter"; + { + networking.hostName = "dexter"; + } ``` Special characters can be escaped by prefixing them with a backslash @@ -89,11 +91,13 @@ Strings Multi-line strings can be enclosed in *double single quotes*, e.g. ```nix - networking.extraHosts = - '' - 127.0.0.2 other-localhost - 10.0.0.1 server - ''; + { + networking.extraHosts = + '' + 127.0.0.2 other-localhost + 10.0.0.1 server + ''; + } ``` The main difference is that it strips from each line a number of @@ -108,8 +112,10 @@ Booleans : These can be `true` or `false`, e.g. ```nix - networking.firewall.enable = true; - networking.firewall.allowPing = false; + { + networking.firewall.enable = true; + networking.firewall.allowPing = false; + } ``` Integers @@ -117,7 +123,9 @@ Integers : For example, ```nix - boot.kernel.sysctl."net.ipv4.tcp_keepalive_time" = 60; + { + boot.kernel.sysctl."net.ipv4.tcp_keepalive_time" = 60; + } ``` (Note that here the attribute name `net.ipv4.tcp_keepalive_time` is @@ -132,11 +140,13 @@ Sets braces, as in the option definition ```nix - fileSystems."/boot" = - { device = "/dev/sda1"; - fsType = "ext4"; - options = [ "rw" "data=ordered" "relatime" ]; - }; + { + fileSystems."/boot" = + { device = "/dev/sda1"; + fsType = "ext4"; + options = [ "rw" "data=ordered" "relatime" ]; + }; + } ``` Lists @@ -145,13 +155,17 @@ Lists separated by whitespace, like this: ```nix - boot.kernelModules = [ "fuse" "kvm-intel" "coretemp" ]; + { + boot.kernelModules = [ "fuse" "kvm-intel" "coretemp" ]; + } ``` List elements can be any other type, e.g. sets: ```nix - swapDevices = [ { device = "/dev/disk/by-label/swap"; } ]; + { + swapDevices = [ { device = "/dev/disk/by-label/swap"; } ]; + } ``` Packages @@ -161,12 +175,14 @@ Packages argument `pkgs`. Typical uses: ```nix - environment.systemPackages = - [ pkgs.thunderbird - pkgs.emacs - ]; + { + environment.systemPackages = + [ pkgs.thunderbird + pkgs.emacs + ]; - services.postgresql.package = pkgs.postgresql_14; + services.postgresql.package = pkgs.postgresql_14; + } ``` The latter option definition changes the default PostgreSQL package diff --git a/nixos/doc/manual/configuration/customizing-packages.section.md b/nixos/doc/manual/configuration/customizing-packages.section.md index 76413b7d84fb..a524ef266eaf 100644 --- a/nixos/doc/manual/configuration/customizing-packages.section.md +++ b/nixos/doc/manual/configuration/customizing-packages.section.md @@ -16,18 +16,20 @@ Examples include: You can use them like this: ```nix -environment.systemPackages = with pkgs; [ - sl - (pass.withExtensions (subpkgs: with subpkgs; [ - pass-audit - pass-otp - pass-genphrase - ])) - (python3.withPackages (subpkgs: with subpkgs; [ - requests - ])) - cowsay -]; +{ + environment.systemPackages = with pkgs; [ + sl + (pass.withExtensions (subpkgs: with subpkgs; [ + pass-audit + pass-otp + pass-genphrase + ])) + (python3.withPackages (subpkgs: with subpkgs; [ + requests + ])) + cowsay + ]; +} ``` ::: @@ -38,7 +40,9 @@ dependency on GTK 2. If you want to build it against GTK 3, you can specify that as follows: ```nix -environment.systemPackages = [ (pkgs.emacs.override { gtk = pkgs.gtk3; }) ]; +{ + environment.systemPackages = [ (pkgs.emacs.override { gtk = pkgs.gtk3; }) ]; +} ``` The function `override` performs the call to the Nix function that @@ -58,12 +62,14 @@ of the package, such as the source code. For instance, if you want to override the source code of Emacs, you can say: ```nix -environment.systemPackages = [ - (pkgs.emacs.overrideAttrs (oldAttrs: { - name = "emacs-25.0-pre"; - src = /path/to/my/emacs/tree; - })) -]; +{ + environment.systemPackages = [ + (pkgs.emacs.overrideAttrs (oldAttrs: { + name = "emacs-25.0-pre"; + src = /path/to/my/emacs/tree; + })) + ]; +} ``` Here, `overrideAttrs` takes the Nix derivation specified by `pkgs.emacs` @@ -80,9 +86,11 @@ two instances of the package. If you want to have everything depend on your customised instance, you can apply a *global* override as follows: ```nix -nixpkgs.config.packageOverrides = pkgs: - { emacs = pkgs.emacs.override { gtk = pkgs.gtk3; }; - }; +{ + nixpkgs.config.packageOverrides = pkgs: + { emacs = pkgs.emacs.override { gtk = pkgs.gtk3; }; + }; +} ``` The effect of this definition is essentially equivalent to modifying the diff --git a/nixos/doc/manual/configuration/declarative-packages.section.md b/nixos/doc/manual/configuration/declarative-packages.section.md index 480e250da8c7..6cdd520dcf15 100644 --- a/nixos/doc/manual/configuration/declarative-packages.section.md +++ b/nixos/doc/manual/configuration/declarative-packages.section.md @@ -7,7 +7,9 @@ following line to `configuration.nix` enables the Mozilla Thunderbird email application: ```nix -environment.systemPackages = [ pkgs.thunderbird ]; +{ + environment.systemPackages = [ pkgs.thunderbird ]; +} ``` The effect of this specification is that the Thunderbird package from diff --git a/nixos/doc/manual/configuration/file-systems.chapter.md b/nixos/doc/manual/configuration/file-systems.chapter.md index 3dfdd20ac33e..4bdd9c60e327 100644 --- a/nixos/doc/manual/configuration/file-systems.chapter.md +++ b/nixos/doc/manual/configuration/file-systems.chapter.md @@ -6,10 +6,12 @@ Ext4 file system on device `/dev/disk/by-label/data` onto the mount point `/data`: ```nix -fileSystems."/data" = - { device = "/dev/disk/by-label/data"; - fsType = "ext4"; - }; +{ + fileSystems."/data" = + { device = "/dev/disk/by-label/data"; + fsType = "ext4"; + }; +} ``` This will create an entry in `/etc/fstab`, which will generate a diff --git a/nixos/doc/manual/configuration/firewall.section.md b/nixos/doc/manual/configuration/firewall.section.md index dbf0ffb9273e..9a71217944ee 100644 --- a/nixos/doc/manual/configuration/firewall.section.md +++ b/nixos/doc/manual/configuration/firewall.section.md @@ -5,14 +5,18 @@ and other unexpected packets. The firewall applies to both IPv4 and IPv6 traffic. It is enabled by default. It can be disabled as follows: ```nix -networking.firewall.enable = false; +{ + networking.firewall.enable = false; +} ``` If the firewall is enabled, you can open specific TCP ports to the outside world: ```nix -networking.firewall.allowedTCPPorts = [ 80 443 ]; +{ + networking.firewall.allowedTCPPorts = [ 80 443 ]; +} ``` Note that TCP port 22 (ssh) is opened automatically if the SSH daemon is @@ -22,10 +26,12 @@ enabled (`services.openssh.enable = true`). UDP ports can be opened through To open ranges of TCP ports: ```nix -networking.firewall.allowedTCPPortRanges = [ - { from = 4000; to = 4007; } - { from = 8000; to = 8010; } -]; +{ + networking.firewall.allowedTCPPortRanges = [ + { from = 4000; to = 4007; } + { from = 8000; to = 8010; } + ]; +} ``` Similarly, UDP port ranges can be opened through diff --git a/nixos/doc/manual/configuration/gpu-accel.chapter.md b/nixos/doc/manual/configuration/gpu-accel.chapter.md index aa63aec61669..3b98bdd97c68 100644 --- a/nixos/doc/manual/configuration/gpu-accel.chapter.md +++ b/nixos/doc/manual/configuration/gpu-accel.chapter.md @@ -55,9 +55,11 @@ supported through the rocmPackages.clr.icd package. Adding this package to enables OpenCL support: ```nix -hardware.opengl.extraPackages = [ - rocmPackages.clr.icd -]; +{ + hardware.opengl.extraPackages = [ + rocmPackages.clr.icd + ]; +} ``` ### Intel {#sec-gpu-accel-opencl-intel} @@ -74,9 +76,11 @@ to enable OpenCL support. For example, for Gen8 and later GPUs, the following configuration can be used: ```nix -hardware.opengl.extraPackages = [ - intel-compute-runtime -]; +{ + hardware.opengl.extraPackages = [ + intel-compute-runtime + ]; +} ``` ## Vulkan {#sec-gpu-accel-vulkan} @@ -141,20 +145,22 @@ makes amdvlk the default driver and hides radv and lavapipe from the device list A specific driver can be forced as follows: ```nix -hardware.opengl.extraPackages = [ - pkgs.amdvlk -]; +{ + hardware.opengl.extraPackages = [ + pkgs.amdvlk + ]; -# To enable Vulkan support for 32-bit applications, also add: -hardware.opengl.extraPackages32 = [ - pkgs.driversi686Linux.amdvlk -]; + # To enable Vulkan support for 32-bit applications, also add: + hardware.opengl.extraPackages32 = [ + pkgs.driversi686Linux.amdvlk + ]; -# Force radv -environment.variables.AMD_VULKAN_ICD = "RADV"; -# Or -environment.variables.VK_ICD_FILENAMES = - "/run/opengl-driver/share/vulkan/icd.d/radeon_icd.x86_64.json"; + # Force radv + environment.variables.AMD_VULKAN_ICD = "RADV"; + # Or + environment.variables.VK_ICD_FILENAMES = + "/run/opengl-driver/share/vulkan/icd.d/radeon_icd.x86_64.json"; +} ``` ## VA-API {#sec-gpu-accel-va-api} @@ -178,17 +184,21 @@ $ nix-shell -p libva-utils --run vainfo Modern Intel GPUs use the iHD driver, which can be installed with: ```nix -hardware.opengl.extraPackages = [ - intel-media-driver -]; +{ + hardware.opengl.extraPackages = [ + intel-media-driver + ]; +} ``` Older Intel GPUs use the i965 driver, which can be installed with: ```nix -hardware.opengl.extraPackages = [ - intel-vaapi-driver -]; +{ + hardware.opengl.extraPackages = [ + intel-vaapi-driver + ]; +} ``` ## Common issues {#sec-gpu-accel-common-issues} diff --git a/nixos/doc/manual/configuration/ipv4-config.section.md b/nixos/doc/manual/configuration/ipv4-config.section.md index c73024b856d7..0464f5389855 100644 --- a/nixos/doc/manual/configuration/ipv4-config.section.md +++ b/nixos/doc/manual/configuration/ipv4-config.section.md @@ -5,18 +5,22 @@ configure network interfaces. However, you can configure an interface manually as follows: ```nix -networking.interfaces.eth0.ipv4.addresses = [ { - address = "192.168.1.2"; - prefixLength = 24; -} ]; +{ + networking.interfaces.eth0.ipv4.addresses = [ { + address = "192.168.1.2"; + prefixLength = 24; + } ]; +} ``` Typically you'll also want to set a default gateway and set of name servers: ```nix -networking.defaultGateway = "192.168.1.1"; -networking.nameservers = [ "8.8.8.8" ]; +{ + networking.defaultGateway = "192.168.1.1"; + networking.nameservers = [ "8.8.8.8" ]; +} ``` ::: {.note} @@ -28,7 +32,9 @@ configuration is performed by `network-setup.service`. The host name is set using [](#opt-networking.hostName): ```nix -networking.hostName = "cartman"; +{ + networking.hostName = "cartman"; +} ``` The default host name is `nixos`. Set it to the empty string (`""`) to diff --git a/nixos/doc/manual/configuration/ipv6-config.section.md b/nixos/doc/manual/configuration/ipv6-config.section.md index ce66f53ed472..b4fe0d759b8a 100644 --- a/nixos/doc/manual/configuration/ipv6-config.section.md +++ b/nixos/doc/manual/configuration/ipv6-config.section.md @@ -9,34 +9,42 @@ may be overridden on a per-interface basis by IPv6 support globally by setting: ```nix -networking.enableIPv6 = false; +{ + networking.enableIPv6 = false; +} ``` You can disable IPv6 on a single interface using a normal sysctl (in this example, we use interface `eth0`): ```nix -boot.kernel.sysctl."net.ipv6.conf.eth0.disable_ipv6" = true; +{ + boot.kernel.sysctl."net.ipv6.conf.eth0.disable_ipv6" = true; +} ``` As with IPv4 networking interfaces are automatically configured via DHCPv6. You can configure an interface manually: ```nix -networking.interfaces.eth0.ipv6.addresses = [ { - address = "fe00:aa:bb:cc::2"; - prefixLength = 64; -} ]; +{ + networking.interfaces.eth0.ipv6.addresses = [ { + address = "fe00:aa:bb:cc::2"; + prefixLength = 64; + } ]; +} ``` For configuring a gateway, optionally with explicitly specified interface: ```nix -networking.defaultGateway6 = { - address = "fe00::1"; - interface = "enp0s3"; -}; +{ + networking.defaultGateway6 = { + address = "fe00::1"; + interface = "enp0s3"; + }; +} ``` See [](#sec-ipv4) for similar examples and additional information. diff --git a/nixos/doc/manual/configuration/kubernetes.chapter.md b/nixos/doc/manual/configuration/kubernetes.chapter.md index f39726090e43..fba40b648752 100644 --- a/nixos/doc/manual/configuration/kubernetes.chapter.md +++ b/nixos/doc/manual/configuration/kubernetes.chapter.md @@ -7,14 +7,16 @@ There are generally two ways of enabling Kubernetes on NixOS. One way is to enable and configure cluster components appropriately by hand: ```nix -services.kubernetes = { - apiserver.enable = true; - controllerManager.enable = true; - scheduler.enable = true; - addonManager.enable = true; - proxy.enable = true; - flannel.enable = true; -}; +{ + services.kubernetes = { + apiserver.enable = true; + controllerManager.enable = true; + scheduler.enable = true; + addonManager.enable = true; + proxy.enable = true; + flannel.enable = true; + }; +} ``` Another way is to assign cluster roles ("master" and/or "node") to @@ -22,20 +24,26 @@ the host. This enables apiserver, controllerManager, scheduler, addonManager, kube-proxy and etcd: ```nix -services.kubernetes.roles = [ "master" ]; +{ + services.kubernetes.roles = [ "master" ]; +} ``` While this will enable the kubelet and kube-proxy only: ```nix -services.kubernetes.roles = [ "node" ]; +{ + services.kubernetes.roles = [ "node" ]; +} ``` Assigning both the master and node roles is usable if you want a single node Kubernetes cluster for dev or testing purposes: ```nix -services.kubernetes.roles = [ "master" "node" ]; +{ + services.kubernetes.roles = [ "master" "node" ]; +} ``` Note: Assigning either role will also default both diff --git a/nixos/doc/manual/configuration/linux-kernel.chapter.md b/nixos/doc/manual/configuration/linux-kernel.chapter.md index 31d8d1a7d0cf..3bc97446f452 100644 --- a/nixos/doc/manual/configuration/linux-kernel.chapter.md +++ b/nixos/doc/manual/configuration/linux-kernel.chapter.md @@ -5,7 +5,9 @@ option `boot.kernelPackages`. For instance, this selects the Linux 3.10 kernel: ```nix -boot.kernelPackages = pkgs.linuxKernel.packages.linux_3_10; +{ + boot.kernelPackages = pkgs.linuxKernel.packages.linux_3_10; +} ``` Note that this not only replaces the kernel, but also packages that are @@ -40,13 +42,15 @@ If you want to change the kernel configuration, you can use the instance, to enable support for the kernel debugger KGDB: ```nix -nixpkgs.config.packageOverrides = pkgs: pkgs.lib.recursiveUpdate pkgs { - linuxKernel.kernels.linux_5_10 = pkgs.linuxKernel.kernels.linux_5_10.override { - extraConfig = '' - KGDB y - ''; +{ + nixpkgs.config.packageOverrides = pkgs: pkgs.lib.recursiveUpdate pkgs { + linuxKernel.kernels.linux_5_10 = pkgs.linuxKernel.kernels.linux_5_10.override { + extraConfig = '' + KGDB y + ''; + }; }; -}; +} ``` `extraConfig` takes a list of Linux kernel configuration options, one @@ -59,14 +63,18 @@ by `udev`. You can force a module to be loaded via [](#opt-boot.kernelModules), e.g. ```nix -boot.kernelModules = [ "fuse" "kvm-intel" "coretemp" ]; +{ + boot.kernelModules = [ "fuse" "kvm-intel" "coretemp" ]; +} ``` If the module is required early during the boot (e.g. to mount the root file system), you can use [](#opt-boot.initrd.kernelModules): ```nix -boot.initrd.kernelModules = [ "cifs" ]; +{ + boot.initrd.kernelModules = [ "cifs" ]; +} ``` This causes the specified modules and their dependencies to be added to @@ -76,7 +84,9 @@ Kernel runtime parameters can be set through [](#opt-boot.kernel.sysctl), e.g. ```nix -boot.kernel.sysctl."net.ipv4.tcp_keepalive_time" = 120; +{ + boot.kernel.sysctl."net.ipv4.tcp_keepalive_time" = 120; +} ``` sets the kernel's TCP keepalive time to 120 seconds. To see the @@ -89,7 +99,9 @@ Please refer to the Nixpkgs manual for the various ways of [building a custom ke To use your custom kernel package in your NixOS configuration, set ```nix -boot.kernelPackages = pkgs.linuxPackagesFor yourCustomKernel; +{ + boot.kernelPackages = pkgs.linuxPackagesFor yourCustomKernel; +} ``` ## Rust {#sec-linux-rust} @@ -99,15 +111,17 @@ default. For kernel versions 6.7 or newer, experimental Rust support can be enabled. In a NixOS configuration, set: ```nix -boot.kernelPatches = [ - { - name = "Rust Support"; - patch = null; - features = { - rust = true; - }; - } -]; +{ + boot.kernelPatches = [ + { + name = "Rust Support"; + patch = null; + features = { + rust = true; + }; + } + ]; +} ``` ## Developing kernel modules {#sec-linux-config-developing-modules} diff --git a/nixos/doc/manual/configuration/luks-file-systems.section.md b/nixos/doc/manual/configuration/luks-file-systems.section.md index 7615b95aef42..4d2f625073d4 100644 --- a/nixos/doc/manual/configuration/luks-file-systems.section.md +++ b/nixos/doc/manual/configuration/luks-file-systems.section.md @@ -29,15 +29,19 @@ system is automatically mounted at boot time as `/`, add the following to `configuration.nix`: ```nix -boot.initrd.luks.devices.crypted.device = "/dev/disk/by-uuid/3f6b0024-3a44-4fde-a43a-767b872abe5d"; -fileSystems."/".device = "/dev/mapper/crypted"; +{ + boot.initrd.luks.devices.crypted.device = "/dev/disk/by-uuid/3f6b0024-3a44-4fde-a43a-767b872abe5d"; + fileSystems."/".device = "/dev/mapper/crypted"; +} ``` Should grub be used as bootloader, and `/boot` is located on an encrypted partition, it is necessary to add the following grub option: ```nix -boot.loader.grub.enableCryptodisk = true; +{ + boot.loader.grub.enableCryptodisk = true; +} ``` ## FIDO2 {#sec-luks-file-systems-fido2} @@ -68,8 +72,10 @@ To ensure that this file system is decrypted using the FIDO2 compatible key, add the following to `configuration.nix`: ```nix -boot.initrd.luks.fido2Support = true; -boot.initrd.luks.devices."/dev/sda2".fido2.credential = "f1d00200108b9d6e849a8b388da457688e3dd653b4e53770012d8f28e5d3b269865038c346802f36f3da7278b13ad6a3bb6a1452e24ebeeaa24ba40eef559b1b287d2a2f80b7"; +{ + boot.initrd.luks.fido2Support = true; + boot.initrd.luks.devices."/dev/sda2".fido2.credential = "f1d00200108b9d6e849a8b388da457688e3dd653b4e53770012d8f28e5d3b269865038c346802f36f3da7278b13ad6a3bb6a1452e24ebeeaa24ba40eef559b1b287d2a2f80b7"; +} ``` You can also use the FIDO2 passwordless setup, but for security reasons, @@ -77,7 +83,9 @@ you might want to enable it only when your device is PIN protected, such as [Trezor](https://trezor.io/). ```nix -boot.initrd.luks.devices."/dev/sda2".fido2.passwordLess = true; +{ + boot.initrd.luks.devices."/dev/sda2".fido2.passwordLess = true; +} ``` ### systemd Stage 1 {#sec-luks-file-systems-fido2-systemd} @@ -88,13 +96,15 @@ unlocking the existing LUKS2 volume `root` using any enrolled FIDO2 compatible tokens. ```nix -boot.initrd = { - luks.devices.root = { - crypttabExtraOpts = [ "fido2-device=auto" ]; - device = "/dev/sda2"; +{ + boot.initrd = { + luks.devices.root = { + crypttabExtraOpts = [ "fido2-device=auto" ]; + device = "/dev/sda2"; + }; + systemd.enable = true; }; - systemd.enable = true; -}; +} ``` All tokens that should be used for unlocking the LUKS2-encrypted volume must diff --git a/nixos/doc/manual/configuration/modularity.section.md b/nixos/doc/manual/configuration/modularity.section.md index f4a566d66973..cb9f543797d2 100644 --- a/nixos/doc/manual/configuration/modularity.section.md +++ b/nixos/doc/manual/configuration/modularity.section.md @@ -16,7 +16,7 @@ including them from `configuration.nix`, e.g.: { imports = [ ./vpn.nix ./kde.nix ]; services.httpd.enable = true; environment.systemPackages = [ pkgs.emacs ]; - ... + # ... } ``` @@ -42,7 +42,9 @@ merged last, so for list-type options, it will appear at the end of the merged list. If you want it to appear first, you can use `mkBefore`: ```nix -boot.kernelModules = mkBefore [ "kvm-intel" ]; +{ + boot.kernelModules = mkBefore [ "kvm-intel" ]; +} ``` This causes the `kvm-intel` kernel module to be loaded before any other @@ -60,7 +62,9 @@ When that happens, it's possible to force one definition take precedence over the others: ```nix -services.httpd.adminAddr = pkgs.lib.mkForce "bob@example.org"; +{ + services.httpd.adminAddr = pkgs.lib.mkForce "bob@example.org"; +} ``` When using multiple modules, you may need to access configuration values diff --git a/nixos/doc/manual/configuration/network-manager.section.md b/nixos/doc/manual/configuration/network-manager.section.md index 4bda21d34a10..8e8dfabbf3cd 100644 --- a/nixos/doc/manual/configuration/network-manager.section.md +++ b/nixos/doc/manual/configuration/network-manager.section.md @@ -4,7 +4,9 @@ To facilitate network configuration, some desktop environments use NetworkManager. You can enable NetworkManager by setting: ```nix -networking.networkmanager.enable = true; +{ + networking.networkmanager.enable = true; +} ``` some desktop managers (e.g., GNOME) enable NetworkManager automatically @@ -14,7 +16,9 @@ All users that should have permission to change network settings must belong to the `networkmanager` group: ```nix -users.users.alice.extraGroups = [ "networkmanager" ]; +{ + users.users.alice.extraGroups = [ "networkmanager" ]; +} ``` NetworkManager is controlled using either `nmcli` or `nmtui` @@ -32,9 +36,11 @@ can be used together if desired. To do this you need to instruct NetworkManager to ignore those interfaces like: ```nix -networking.networkmanager.unmanaged = [ - "*" "except:type:wwan" "except:type:gsm" -]; +{ + networking.networkmanager.unmanaged = [ + "*" "except:type:wwan" "except:type:gsm" + ]; +} ``` Refer to the option description for the exact syntax and references to diff --git a/nixos/doc/manual/configuration/overlayfs.section.md b/nixos/doc/manual/configuration/overlayfs.section.md index 592fb7c2e6f7..7027a6f426d4 100644 --- a/nixos/doc/manual/configuration/overlayfs.section.md +++ b/nixos/doc/manual/configuration/overlayfs.section.md @@ -4,21 +4,23 @@ NixOS offers a convenient abstraction to create both read-only as well writable overlays. ```nix -fileSystems = { - "/writable-overlay" = { - overlay = { - lowerdir = [ writableOverlayLowerdir ]; - upperdir = "/.rw-writable-overlay/upper"; - workdir = "/.rw-writable-overlay/work"; +{ + fileSystems = { + "/writable-overlay" = { + overlay = { + lowerdir = [ writableOverlayLowerdir ]; + upperdir = "/.rw-writable-overlay/upper"; + workdir = "/.rw-writable-overlay/work"; + }; + # Mount the writable overlay in the initrd. + neededForBoot = true; }; - # Mount the writable overlay in the initrd. - neededForBoot = true; + "/readonly-overlay".overlay.lowerdir = [ + writableOverlayLowerdir + writableOverlayLowerdir2 + ]; }; - "/readonly-overlay".overlay.lowerdir = [ - writableOverlayLowerdir - writableOverlayLowerdir2 - ]; -}; +} ``` If `upperdir` and `workdir` are not null, they will be created before the diff --git a/nixos/doc/manual/configuration/profiles.chapter.md b/nixos/doc/manual/configuration/profiles.chapter.md index 9f6c11b0d59d..6161d48e353f 100644 --- a/nixos/doc/manual/configuration/profiles.chapter.md +++ b/nixos/doc/manual/configuration/profiles.chapter.md @@ -8,9 +8,11 @@ is to say, expected usage is to add them to the imports list of your `/etc/configuration.nix` as such: ```nix -imports = [ - -]; +{ + imports = [ + + ]; +} ``` Even if some of these profiles seem only useful in the context of diff --git a/nixos/doc/manual/configuration/renaming-interfaces.section.md b/nixos/doc/manual/configuration/renaming-interfaces.section.md index 5b515e9f82a0..4804e35f8a24 100644 --- a/nixos/doc/manual/configuration/renaming-interfaces.section.md +++ b/nixos/doc/manual/configuration/renaming-interfaces.section.md @@ -25,10 +25,12 @@ we assign the name `wan` to the interface with MAC address `52:54:00:12:01:01` using a netword link unit: ```nix -systemd.network.links."10-wan" = { - matchConfig.PermanentMACAddress = "52:54:00:12:01:01"; - linkConfig.Name = "wan"; -}; +{ + systemd.network.links."10-wan" = { + matchConfig.PermanentMACAddress = "52:54:00:12:01:01"; + linkConfig.Name = "wan"; + }; +} ``` Note that links are directly read by udev, *not networkd*, and will work @@ -37,10 +39,12 @@ even if networkd is disabled. Alternatively, we can use a plain old udev rule: ```nix -boot.initrd.services.udev.rules = '' - SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", \ - ATTR{address}=="52:54:00:12:01:01", KERNEL=="eth*", NAME="wan" -''; +{ + boot.initrd.services.udev.rules = '' + SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", \ + ATTR{address}=="52:54:00:12:01:01", KERNEL=="eth*", NAME="wan" + ''; +} ``` ::: {.warning} diff --git a/nixos/doc/manual/configuration/ssh.section.md b/nixos/doc/manual/configuration/ssh.section.md index 9e239a848178..8754e3d9ccaf 100644 --- a/nixos/doc/manual/configuration/ssh.section.md +++ b/nixos/doc/manual/configuration/ssh.section.md @@ -3,7 +3,9 @@ Secure shell (SSH) access to your machine can be enabled by setting: ```nix -services.openssh.enable = true; +{ + services.openssh.enable = true; +} ``` By default, root logins using a password are disallowed. They can be @@ -14,6 +16,8 @@ You can declaratively specify authorised RSA/DSA public keys for a user as follows: ```nix -users.users.alice.openssh.authorizedKeys.keys = - [ "ssh-dss AAAAB3NzaC1kc3MAAACBAPIkGWVEt4..." ]; +{ + users.users.alice.openssh.authorizedKeys.keys = + [ "ssh-dss AAAAB3NzaC1kc3MAAACBAPIkGWVEt4..." ]; +} ``` diff --git a/nixos/doc/manual/configuration/subversion.chapter.md b/nixos/doc/manual/configuration/subversion.chapter.md index ff870f5c40b9..2436138669fe 100644 --- a/nixos/doc/manual/configuration/subversion.chapter.md +++ b/nixos/doc/manual/configuration/subversion.chapter.md @@ -21,9 +21,11 @@ Apache HTTP, setting [](#opt-services.httpd.adminAddr) appropriately: ```nix -services.httpd.enable = true; -services.httpd.adminAddr = ...; -networking.firewall.allowedTCPPorts = [ 80 443 ]; +{ + services.httpd.enable = true; + services.httpd.adminAddr = "..."; + networking.firewall.allowedTCPPorts = [ 80 443 ]; +} ``` For a simple Subversion server with basic authentication, configure the @@ -34,25 +36,28 @@ the `.authz` file describing access permission, and `AuthUserFile` to the password file. ```nix -services.httpd.extraModules = [ - # note that order is *super* important here - { name = "dav_svn"; path = "${pkgs.apacheHttpdPackages.subversion}/modules/mod_dav_svn.so"; } - { name = "authz_svn"; path = "${pkgs.apacheHttpdPackages.subversion}/modules/mod_authz_svn.so"; } - ]; - services.httpd.virtualHosts = { - "svn" = { - hostName = HOSTNAME; - documentRoot = DOCUMENTROOT; - locations."/svn".extraConfig = '' - DAV svn - SVNParentPath REPO_PARENT - AuthzSVNAccessFile ACCESS_FILE - AuthName "SVN Repositories" - AuthType Basic - AuthUserFile PASSWORD_FILE - Require valid-user - ''; - } +{ + services.httpd.extraModules = [ + # note that order is *super* important here + { name = "dav_svn"; path = "${pkgs.apacheHttpdPackages.subversion}/modules/mod_dav_svn.so"; } + { name = "authz_svn"; path = "${pkgs.apacheHttpdPackages.subversion}/modules/mod_authz_svn.so"; } + ]; + services.httpd.virtualHosts = { + "svn" = { + hostName = HOSTNAME; + documentRoot = DOCUMENTROOT; + locations."/svn".extraConfig = '' + DAV svn + SVNParentPath REPO_PARENT + AuthzSVNAccessFile ACCESS_FILE + AuthName "SVN Repositories" + AuthType Basic + AuthUserFile PASSWORD_FILE + Require valid-user + ''; + }; + }; +} ``` The key `"svn"` is just a symbolic name identifying the virtual host. @@ -90,7 +95,7 @@ $ htpasswd -s PASSWORD_FILE USER_NAME The file describing access permissions `ACCESS_FILE` will look something like the following: -```nix +``` [/] * = r diff --git a/nixos/doc/manual/configuration/user-mgmt.chapter.md b/nixos/doc/manual/configuration/user-mgmt.chapter.md index 71d61ce4c641..7d83121d41e0 100644 --- a/nixos/doc/manual/configuration/user-mgmt.chapter.md +++ b/nixos/doc/manual/configuration/user-mgmt.chapter.md @@ -6,13 +6,15 @@ management. In the declarative style, users are specified in account named `alice` shall exist: ```nix -users.users.alice = { - isNormalUser = true; - home = "/home/alice"; - description = "Alice Foobar"; - extraGroups = [ "wheel" "networkmanager" ]; - openssh.authorizedKeys.keys = [ "ssh-dss AAAAB3Nza... alice@foobar" ]; -}; +{ + users.users.alice = { + isNormalUser = true; + home = "/home/alice"; + description = "Alice Foobar"; + extraGroups = [ "wheel" "networkmanager" ]; + openssh.authorizedKeys.keys = [ "ssh-dss AAAAB3Nza... alice@foobar" ]; + }; +} ``` Note that `alice` is a member of the `wheel` and `networkmanager` @@ -38,7 +40,9 @@ A user ID (uid) is assigned automatically. You can also specify a uid manually by adding ```nix -uid = 1000; +{ + uid = 1000; +} ``` to the user specification. @@ -47,7 +51,9 @@ Groups can be specified similarly. The following states that a group named `students` shall exist: ```nix -users.groups.students.gid = 1000; +{ + users.groups.students.gid = 1000; +} ``` As with users, the group ID (gid) is optional and will be assigned @@ -100,7 +106,9 @@ Instead of using a custom perl script to create users and groups, you can use systemd-sysusers: ```nix -systemd.sysusers.enable = true; +{ + systemd.sysusers.enable = true; +} ``` The primary benefit of this is to remove a dependency on perl. diff --git a/nixos/doc/manual/configuration/wayland.chapter.md b/nixos/doc/manual/configuration/wayland.chapter.md index 0f195bd66567..27c027d38514 100644 --- a/nixos/doc/manual/configuration/wayland.chapter.md +++ b/nixos/doc/manual/configuration/wayland.chapter.md @@ -9,7 +9,9 @@ a Wayland Compositor such as sway without separately enabling a Wayland server: ```nix +{ programs.sway.enable = true; +} ``` This installs the sway compositor along with some essential utilities. @@ -19,7 +21,9 @@ If you are using a wlroots-based compositor, like sway, and want to be able to share your screen, you might want to activate this option: ```nix -xdg.portal.wlr.enable = true; +{ + xdg.portal.wlr.enable = true; +} ``` and configure Pipewire using diff --git a/nixos/doc/manual/configuration/wireless.section.md b/nixos/doc/manual/configuration/wireless.section.md index 3299d2d7ecb8..df828698cf03 100644 --- a/nixos/doc/manual/configuration/wireless.section.md +++ b/nixos/doc/manual/configuration/wireless.section.md @@ -7,25 +7,29 @@ skip the rest of this section on wireless networks. NixOS will start wpa_supplicant for you if you enable this setting: ```nix -networking.wireless.enable = true; +{ + networking.wireless.enable = true; +} ``` NixOS lets you specify networks for wpa_supplicant declaratively: ```nix -networking.wireless.networks = { - echelon = { # SSID with no spaces or special characters - psk = "abcdefgh"; +{ + networking.wireless.networks = { + echelon = { # SSID with no spaces or special characters + psk = "abcdefgh"; + }; + "echelon's AP" = { # SSID with spaces and/or special characters + psk = "ijklmnop"; + }; + echelon = { # Hidden SSID + hidden = true; + psk = "qrstuvwx"; + }; + free.wifi = {}; # Public wireless network }; - "echelon's AP" = { # SSID with spaces and/or special characters - psk = "ijklmnop"; - }; - echelon = { # Hidden SSID - hidden = true; - psk = "qrstuvwx"; - }; - free.wifi = {}; # Public wireless network -}; +} ``` Be aware that keys will be written to the nix store in plaintext! When @@ -46,11 +50,13 @@ network={ ``` ```nix -networking.wireless.networks = { - echelon = { - pskRaw = "dca6d6ed41f4ab5a984c9f55f6f66d4efdc720ebf66959810f4329bb391c5435"; +{ + networking.wireless.networks = { + echelon = { + pskRaw = "dca6d6ed41f4ab5a984c9f55f6f66d4efdc720ebf66959810f4329bb391c5435"; + }; }; -}; +} ``` or you can use it to directly generate the `wpa_supplicant.conf`: diff --git a/nixos/doc/manual/configuration/x-windows.chapter.md b/nixos/doc/manual/configuration/x-windows.chapter.md index 0e8e38b83dcd..8162e38e9f5b 100644 --- a/nixos/doc/manual/configuration/x-windows.chapter.md +++ b/nixos/doc/manual/configuration/x-windows.chapter.md @@ -4,7 +4,9 @@ The X Window System (X11) provides the basis of NixOS' graphical user interface. It can be enabled as follows: ```nix -services.xserver.enable = true; +{ + services.xserver.enable = true; +} ``` The X server will automatically detect and use the appropriate video @@ -12,7 +14,9 @@ driver from a set of X.org drivers (such as `vesa` and `intel`). You can also specify a driver manually, e.g. ```nix -services.xserver.videoDrivers = [ "r128" ]; +{ + services.xserver.videoDrivers = [ "r128" ]; +} ``` to enable X.org's `xf86-video-r128` driver. @@ -22,15 +26,17 @@ Otherwise, you can only log into a plain undecorated `xterm` window. Thus you should pick one or more of the following lines: ```nix -services.xserver.desktopManager.plasma5.enable = true; -services.xserver.desktopManager.xfce.enable = true; -services.xserver.desktopManager.gnome.enable = true; -services.xserver.desktopManager.mate.enable = true; -services.xserver.windowManager.xmonad.enable = true; -services.xserver.windowManager.twm.enable = true; -services.xserver.windowManager.icewm.enable = true; -services.xserver.windowManager.i3.enable = true; -services.xserver.windowManager.herbstluftwm.enable = true; +{ + services.xserver.desktopManager.plasma5.enable = true; + services.xserver.desktopManager.xfce.enable = true; + services.xserver.desktopManager.gnome.enable = true; + services.xserver.desktopManager.mate.enable = true; + services.xserver.windowManager.xmonad.enable = true; + services.xserver.windowManager.twm.enable = true; + services.xserver.windowManager.icewm.enable = true; + services.xserver.windowManager.i3.enable = true; + services.xserver.windowManager.herbstluftwm.enable = true; +} ``` NixOS's default *display manager* (the program that provides a graphical @@ -38,22 +44,28 @@ login prompt and manages the X server) is LightDM. You can select an alternative one by picking one of the following lines: ```nix -services.xserver.displayManager.sddm.enable = true; -services.xserver.displayManager.gdm.enable = true; +{ + services.xserver.displayManager.sddm.enable = true; + services.xserver.displayManager.gdm.enable = true; +} ``` You can set the keyboard layout (and optionally the layout variant): ```nix -services.xserver.xkb.layout = "de"; -services.xserver.xkb.variant = "neo"; +{ + services.xserver.xkb.layout = "de"; + services.xserver.xkb.variant = "neo"; +} ``` The X server is started automatically at boot time. If you don't want this to happen, you can set: ```nix -services.xserver.autorun = false; +{ + services.xserver.autorun = false; +} ``` The X server can then be started manually: @@ -66,7 +78,9 @@ On 64-bit systems, if you want OpenGL for 32-bit programs such as in Wine, you should also set the following: ```nix -hardware.opengl.driSupport32Bit = true; +{ + hardware.opengl.driSupport32Bit = true; +} ``` ## Auto-login {#sec-x11-auto-login} @@ -84,16 +98,20 @@ desktop environment. If you wanted no desktop environment and i3 as your your window manager, you'd define: ```nix -services.xserver.displayManager.defaultSession = "none+i3"; +{ + services.xserver.displayManager.defaultSession = "none+i3"; +} ``` Every display manager in NixOS supports auto-login, here is an example using lightdm for a user `alice`: ```nix -services.xserver.displayManager.lightdm.enable = true; -services.xserver.displayManager.autoLogin.enable = true; -services.xserver.displayManager.autoLogin.user = "alice"; +{ + services.xserver.displayManager.lightdm.enable = true; + services.xserver.displayManager.autoLogin.enable = true; + services.xserver.displayManager.autoLogin.user = "alice"; +} ``` ## Intel Graphics drivers {#sec-x11--graphics-cards-intel} @@ -119,18 +137,22 @@ drivers. Use the option to set one. The recommended configuration for modern systems is: ```nix -services.xserver.videoDrivers = [ "modesetting" ]; +{ + services.xserver.videoDrivers = [ "modesetting" ]; +} ``` If you experience screen tearing no matter what, this configuration was reported to resolve the issue: ```nix -services.xserver.videoDrivers = [ "intel" ]; -services.xserver.deviceSection = '' - Option "DRI" "2" - Option "TearFree" "true" -''; +{ + services.xserver.videoDrivers = [ "intel" ]; + services.xserver.deviceSection = '' + Option "DRI" "2" + Option "TearFree" "true" + ''; +} ``` Note that this will likely downgrade the performance compared to @@ -143,15 +165,19 @@ better 3D performance than the X.org drivers. It is not enabled by default because it's not free software. You can enable it as follows: ```nix -services.xserver.videoDrivers = [ "nvidia" ]; +{ + services.xserver.videoDrivers = [ "nvidia" ]; +} ``` If you have an older card, you may have to use one of the legacy drivers: ```nix -hardware.nvidia.package = config.boot.kernelPackages.nvidiaPackages.legacy_470; -hardware.nvidia.package = config.boot.kernelPackages.nvidiaPackages.legacy_390; -hardware.nvidia.package = config.boot.kernelPackages.nvidiaPackages.legacy_340; +{ + hardware.nvidia.package = config.boot.kernelPackages.nvidiaPackages.legacy_470; + hardware.nvidia.package = config.boot.kernelPackages.nvidiaPackages.legacy_390; + hardware.nvidia.package = config.boot.kernelPackages.nvidiaPackages.legacy_340; +} ``` You may need to reboot after enabling this driver to prevent a clash @@ -166,7 +192,9 @@ performance. If you still want to use it anyway, you need to explicitly set: ```nix -services.xserver.videoDrivers = [ "amdgpu-pro" ]; +{ + services.xserver.videoDrivers = [ "amdgpu-pro" ]; +} ``` You will need to reboot after enabling this driver to prevent a clash @@ -178,14 +206,18 @@ Support for Synaptics touchpads (found in many laptops such as the Dell Latitude series) can be enabled as follows: ```nix -services.xserver.libinput.enable = true; +{ + services.xserver.libinput.enable = true; +} ``` The driver has many options (see [](#ch-options)). For instance, the following disables tap-to-click behavior: ```nix -services.xserver.libinput.touchpad.tapping = false; +{ + services.xserver.libinput.touchpad.tapping = false; +} ``` Note: the use of `services.xserver.synaptics` is deprecated since NixOS @@ -198,9 +230,11 @@ GTK themes can be installed either to user profile or system-wide (via GTK ones, you can use the following configuration: ```nix -qt.enable = true; -qt.platformTheme = "gtk2"; -qt.style = "gtk2"; +{ + qt.enable = true; + qt.platformTheme = "gtk2"; + qt.style = "gtk2"; +} ``` ## Custom XKB layouts {#custom-xkb-layouts} @@ -217,7 +251,7 @@ Create a file called `us-greek` with the following content (under a directory called `symbols`; it's an XKB peculiarity that will help with testing): -```nix +``` xkb_symbols "us-greek" { include "us(basic)" // includes the base US keys @@ -234,11 +268,13 @@ xkb_symbols "us-greek" A minimal layout specification must include the following: ```nix -services.xserver.xkb.extraLayouts.us-greek = { - description = "US layout with alt-gr greek"; - languages = [ "eng" ]; - symbolsFile = /yourpath/symbols/us-greek; -}; +{ + services.xserver.xkb.extraLayouts.us-greek = { + description = "US layout with alt-gr greek"; + languages = [ "eng" ]; + symbolsFile = /yourpath/symbols/us-greek; + }; +} ``` ::: {.note} @@ -275,7 +311,7 @@ Use the *xev* utility from `pkgs.xorg.xev` to find the codes of the keys of interest, then create a `media-key` file to hold the keycodes definitions -```nix +``` xkb_keycodes "media" { = 123; @@ -285,7 +321,7 @@ xkb_keycodes "media" Now use the newly define keycodes in `media-sym`: -```nix +``` xkb_symbols "media" { key.type = "ONE_LEVEL"; @@ -297,12 +333,14 @@ xkb_symbols "media" As before, to install the layout do ```nix -services.xserver.xkb.extraLayouts.media = { - description = "Multimedia keys remapping"; - languages = [ "eng" ]; - symbolsFile = /path/to/media-key; - keycodesFile = /path/to/media-sym; -}; +{ + services.xserver.xkb.extraLayouts.media = { + description = "Multimedia keys remapping"; + languages = [ "eng" ]; + symbolsFile = /path/to/media-key; + keycodesFile = /path/to/media-sym; + }; +} ``` ::: {.note} @@ -318,7 +356,9 @@ workaround, you can set the keymap using `setxkbmap` at the start of the session with: ```nix -services.xserver.displayManager.sessionCommands = "setxkbmap -keycodes media"; +{ + services.xserver.displayManager.sessionCommands = "setxkbmap -keycodes media"; +} ``` If you are manually starting the X server, you should set the argument diff --git a/nixos/doc/manual/configuration/xfce.chapter.md b/nixos/doc/manual/configuration/xfce.chapter.md index 9ec4a51d6e35..fcc9bcc45641 100644 --- a/nixos/doc/manual/configuration/xfce.chapter.md +++ b/nixos/doc/manual/configuration/xfce.chapter.md @@ -3,21 +3,25 @@ To enable the Xfce Desktop Environment, set ```nix -services.xserver.desktopManager.xfce.enable = true; -services.xserver.displayManager.defaultSession = "xfce"; +{ + services.xserver.desktopManager.xfce.enable = true; + services.xserver.displayManager.defaultSession = "xfce"; +} ``` Optionally, *picom* can be enabled for nice graphical effects, some example settings: ```nix -services.picom = { - enable = true; - fade = true; - inactiveOpacity = 0.9; - shadow = true; - fadeDelta = 4; -}; +{ + services.picom = { + enable = true; + fade = true; + inactiveOpacity = 0.9; + shadow = true; + fadeDelta = 4; + }; +} ``` Some Xfce programs are not installed automatically. To install them diff --git a/nixos/doc/manual/development/activation-script.section.md b/nixos/doc/manual/development/activation-script.section.md index cc317a6a01aa..f771c3524b79 100644 --- a/nixos/doc/manual/development/activation-script.section.md +++ b/nixos/doc/manual/development/activation-script.section.md @@ -17,13 +17,15 @@ activation script will take these dependencies into account and order the snippets accordingly. As a simple example: ```nix -system.activationScripts.my-activation-script = { - deps = [ "etc" ]; - # supportsDryActivation = true; - text = '' - echo "Hallo i bims" - ''; -}; +{ + system.activationScripts.my-activation-script = { + deps = [ "etc" ]; + # supportsDryActivation = true; + text = '' + echo "Hallo i bims" + ''; + }; +} ``` This example creates an activation script snippet that is run after the `etc` diff --git a/nixos/doc/manual/development/assertions.section.md b/nixos/doc/manual/development/assertions.section.md index cc6d81e56990..eb5158c90f98 100644 --- a/nixos/doc/manual/development/assertions.section.md +++ b/nixos/doc/manual/development/assertions.section.md @@ -18,7 +18,7 @@ This is an example of using `warnings`. This is known to cause some specific problems in certain situations. '' ] else []; - } + }; } ``` @@ -35,6 +35,6 @@ This example, extracted from the [`syslogd` module](https://github.com/NixOS/nix message = "rsyslogd conflicts with syslogd"; } ]; - } + }; } ``` diff --git a/nixos/doc/manual/development/etc-overlay.section.md b/nixos/doc/manual/development/etc-overlay.section.md index e6f6d8d4ca1e..d8588f508a26 100644 --- a/nixos/doc/manual/development/etc-overlay.section.md +++ b/nixos/doc/manual/development/etc-overlay.section.md @@ -9,7 +9,9 @@ Instead of using a custom perl script to activate `/etc`, you activate it via an overlay filesystem: ```nix -system.etc.overlay.enable = true; +{ + system.etc.overlay.enable = true; +} ``` Using an overlay has two benefits: @@ -22,7 +24,9 @@ upper layer). However, you can also mount `/etc` immutably (i.e. read-only) by setting: ```nix -system.etc.overlay.mutable = false; +{ + system.etc.overlay.mutable = false; +} ``` The overlay is atomically replaced during system switch. However, files that diff --git a/nixos/doc/manual/development/meta-attributes.section.md b/nixos/doc/manual/development/meta-attributes.section.md index 33b41fe74d29..b2ad23e58b94 100644 --- a/nixos/doc/manual/development/meta-attributes.section.md +++ b/nixos/doc/manual/development/meta-attributes.section.md @@ -14,11 +14,11 @@ file. { config, lib, pkgs, ... }: { options = { - ... + # ... }; config = { - ... + # ... }; meta = { diff --git a/nixos/doc/manual/development/non-switchable-systems.section.md b/nixos/doc/manual/development/non-switchable-systems.section.md index 87bb46c78909..a51e8233f30b 100644 --- a/nixos/doc/manual/development/non-switchable-systems.section.md +++ b/nixos/doc/manual/development/non-switchable-systems.section.md @@ -9,7 +9,7 @@ profile: ```nix { modulesPath, ... }: { - imports = [ "${modulesPath}/profiles/image-based-appliance.nix" ] + imports = [ "${modulesPath}/profiles/image-based-appliance.nix" ]; } ``` diff --git a/nixos/doc/manual/development/option-declarations.section.md b/nixos/doc/manual/development/option-declarations.section.md index 762070416187..ad5857b11a2e 100644 --- a/nixos/doc/manual/development/option-declarations.section.md +++ b/nixos/doc/manual/development/option-declarations.section.md @@ -6,14 +6,16 @@ hasn't been declared in any module. An option declaration generally looks like this: ```nix -options = { - name = mkOption { - type = type specification; - default = default value; - example = example value; - description = lib.mdDoc "Description for use in the NixOS manual."; +{ + options = { + name = mkOption { + type = type specification; + default = default value; + example = example value; + description = lib.mdDoc "Description for use in the NixOS manual."; + }; }; -}; +} ``` The attribute names within the `name` attribute path must be camel @@ -221,28 +223,34 @@ enforces that there can only be a single display manager enabled. ::: {#ex-option-declaration-eot-service .example} ### Extensible type placeholder in the service module ```nix -services.xserver.displayManager.enable = mkOption { - description = "Display manager to use"; - type = with types; nullOr (enum [ ]); -}; +{ + services.xserver.displayManager.enable = mkOption { + description = "Display manager to use"; + type = with types; nullOr (enum [ ]); + }; +} ``` ::: ::: {#ex-option-declaration-eot-backend-gdm .example} ### Extending `services.xserver.displayManager.enable` in the `gdm` module ```nix -services.xserver.displayManager.enable = mkOption { - type = with types; nullOr (enum [ "gdm" ]); -}; +{ + services.xserver.displayManager.enable = mkOption { + type = with types; nullOr (enum [ "gdm" ]); + }; +} ``` ::: ::: {#ex-option-declaration-eot-backend-sddm .example} ### Extending `services.xserver.displayManager.enable` in the `sddm` module ```nix -services.xserver.displayManager.enable = mkOption { - type = with types; nullOr (enum [ "sddm" ]); -}; +{ + services.xserver.displayManager.enable = mkOption { + type = with types; nullOr (enum [ "sddm" ]); + }; +} ``` ::: diff --git a/nixos/doc/manual/development/option-def.section.md b/nixos/doc/manual/development/option-def.section.md index 6a3dc26b99be..227f41d812ff 100644 --- a/nixos/doc/manual/development/option-def.section.md +++ b/nixos/doc/manual/development/option-def.section.md @@ -4,9 +4,11 @@ Option definitions are generally straight-forward bindings of values to option names, like ```nix -config = { - services.httpd.enable = true; -}; +{ + config = { + services.httpd.enable = true; + }; +} ``` However, sometimes you need to wrap an option definition or set of @@ -18,10 +20,12 @@ If a set of option definitions is conditional on the value of another option, you may need to use `mkIf`. Consider, for instance: ```nix -config = if config.services.httpd.enable then { - environment.systemPackages = [ ... ]; - ... -} else {}; +{ + config = if config.services.httpd.enable then { + environment.systemPackages = [ /* ... */ ]; + # ... + } else {}; +} ``` This definition will cause Nix to fail with an "infinite recursion" @@ -30,30 +34,36 @@ on the value being constructed here. After all, you could also write the clearly circular and contradictory: ```nix -config = if config.services.httpd.enable then { - services.httpd.enable = false; -} else { - services.httpd.enable = true; -}; +{ + config = if config.services.httpd.enable then { + services.httpd.enable = false; + } else { + services.httpd.enable = true; + }; +} ``` The solution is to write: ```nix -config = mkIf config.services.httpd.enable { - environment.systemPackages = [ ... ]; - ... -}; +{ + config = mkIf config.services.httpd.enable { + environment.systemPackages = [ /* ... */ ]; + # ... + }; +} ``` The special function `mkIf` causes the evaluation of the conditional to be "pushed down" into the individual definitions, as if you had written: ```nix -config = { - environment.systemPackages = if config.services.httpd.enable then [ ... ] else []; - ... -}; +{ + config = { + environment.systemPackages = if config.services.httpd.enable then [ /* ... */ ] else []; + # ... + }; +} ``` ## Setting Priorities {#sec-option-definitions-setting-priorities} @@ -65,7 +75,9 @@ priority 100 and option defaults have priority 1500. You can specify an explicit priority by using `mkOverride`, e.g. ```nix -services.openssh.enable = mkOverride 10 false; +{ + services.openssh.enable = mkOverride 10 false; +} ``` This definition causes all other definitions with priorities above 10 to @@ -80,7 +92,9 @@ The functions `mkBefore` and `mkAfter` are equal to `mkOrder 500` and `mkOrder 1 As an example, ```nix -hardware.firmware = mkBefore [ myFirmware ]; +{ + hardware.firmware = mkBefore [ myFirmware ]; +} ``` This definition ensures that `myFirmware` comes before other unordered @@ -97,13 +111,15 @@ they were declared in separate modules. This can be done using `mkMerge`: ```nix -config = mkMerge - [ # Unconditional stuff. - { environment.systemPackages = [ ... ]; - } - # Conditional stuff. - (mkIf config.services.bla.enable { - environment.systemPackages = [ ... ]; - }) - ]; +{ + config = mkMerge + [ # Unconditional stuff. + { environment.systemPackages = [ /* ... */ ]; + } + # Conditional stuff. + (mkIf config.services.bla.enable { + environment.systemPackages = [ /* ... */ ]; + }) + ]; +} ``` diff --git a/nixos/doc/manual/development/option-types.section.md b/nixos/doc/manual/development/option-types.section.md index 04edf99e70b0..243039b01673 100644 --- a/nixos/doc/manual/development/option-types.section.md +++ b/nixos/doc/manual/development/option-types.section.md @@ -374,19 +374,21 @@ if you want to allow users to leave it undefined. ::: {#ex-submodule-direct .example} ### Directly defined submodule ```nix -options.mod = mkOption { - description = "submodule example"; - type = with types; submodule { - options = { - foo = mkOption { - type = int; - }; - bar = mkOption { - type = str; +{ + options.mod = mkOption { + description = "submodule example"; + type = with types; submodule { + options = { + foo = mkOption { + type = int; + }; + bar = mkOption { + type = str; + }; }; }; }; -}; +} ``` ::: @@ -405,10 +407,12 @@ let }; }; in -options.mod = mkOption { - description = "submodule example"; - type = with types; submodule modOptions; -}; +{ + options.mod = mkOption { + description = "submodule example"; + type = with types; submodule modOptions; + }; +} ``` ::: @@ -421,29 +425,33 @@ multiple definitions of the submodule option set ::: {#ex-submodule-listof-declaration .example} ### Declaration of a list of submodules ```nix -options.mod = mkOption { - description = "submodule example"; - type = with types; listOf (submodule { - options = { - foo = mkOption { - type = int; +{ + options.mod = mkOption { + description = "submodule example"; + type = with types; listOf (submodule { + options = { + foo = mkOption { + type = int; + }; + bar = mkOption { + type = str; + }; }; - bar = mkOption { - type = str; - }; - }; - }); -}; + }); + }; +} ``` ::: ::: {#ex-submodule-listof-definition .example} ### Definition of a list of submodules ```nix -config.mod = [ - { foo = 1; bar = "one"; } - { foo = 2; bar = "two"; } -]; +{ + config.mod = [ + { foo = 1; bar = "one"; } + { foo = 2; bar = "two"; } + ]; +} ``` ::: @@ -455,27 +463,31 @@ multiple named definitions of the submodule option set ::: {#ex-submodule-attrsof-declaration .example} ### Declaration of attribute sets of submodules ```nix -options.mod = mkOption { - description = "submodule example"; - type = with types; attrsOf (submodule { - options = { - foo = mkOption { - type = int; +{ + options.mod = mkOption { + description = "submodule example"; + type = with types; attrsOf (submodule { + options = { + foo = mkOption { + type = int; + }; + bar = mkOption { + type = str; + }; }; - bar = mkOption { - type = str; - }; - }; - }); -}; + }); + }; +} ``` ::: ::: {#ex-submodule-attrsof-definition .example} ### Definition of attribute sets of submodules ```nix -config.mod.one = { foo = 1; bar = "one"; }; -config.mod.two = { foo = 2; bar = "two"; }; +{ + config.mod.one = { foo = 1; bar = "one"; }; + config.mod.two = { foo = 2; bar = "two"; }; +} ``` ::: @@ -495,10 +507,12 @@ Types are mainly characterized by their `check` and `merge` functions. ### Adding a type check ```nix - byte = mkOption { - description = "An integer between 0 and 255."; - type = types.addCheck types.int (x: x >= 0 && x <= 255); - }; + { + byte = mkOption { + description = "An integer between 0 and 255."; + type = types.addCheck types.int (x: x >= 0 && x <= 255); + }; + } ``` ::: @@ -506,12 +520,14 @@ Types are mainly characterized by their `check` and `merge` functions. ### Overriding a type check ```nix - nixThings = mkOption { - description = "words that start with 'nix'"; - type = types.str // { - check = (x: lib.hasPrefix "nix" x) + { + nixThings = mkOption { + description = "words that start with 'nix'"; + type = types.str // { + check = (x: lib.hasPrefix "nix" x); + }; }; - }; + } ``` ::: diff --git a/nixos/doc/manual/development/settings-options.section.md b/nixos/doc/manual/development/settings-options.section.md index 71ec9bbc8892..806eee563790 100644 --- a/nixos/doc/manual/development/settings-options.section.md +++ b/nixos/doc/manual/development/settings-options.section.md @@ -248,28 +248,30 @@ up in the manual. ::: {#ex-settings-typed-attrs .example} ### Declaring a type-checked `settings` attribute ```nix -settings = lib.mkOption { - type = lib.types.submodule { +{ + settings = lib.mkOption { + type = lib.types.submodule { - freeformType = settingsFormat.type; + freeformType = settingsFormat.type; + + # Declare an option for the port such that the type is checked and this option + # is shown in the manual. + options.port = lib.mkOption { + type = lib.types.port; + default = 8080; + description = '' + Which port this service should listen on. + ''; + }; - # Declare an option for the port such that the type is checked and this option - # is shown in the manual. - options.port = lib.mkOption { - type = lib.types.port; - default = 8080; - description = '' - Which port this service should listen on. - ''; }; - + default = {}; + description = '' + Configuration for Foo, see + + for supported values. + ''; }; - default = {}; - description = '' - Configuration for Foo, see - - for supported values. - ''; -}; +} ``` ::: diff --git a/nixos/doc/manual/development/unit-handling.section.md b/nixos/doc/manual/development/unit-handling.section.md index d5ba6a9529d0..1f6a30d6ef34 100644 --- a/nixos/doc/manual/development/unit-handling.section.md +++ b/nixos/doc/manual/development/unit-handling.section.md @@ -94,11 +94,13 @@ To make an existing sysinit service restart correctly during system switch, you have to declare: ```nix -systemd.services.my-sysinit = { - requiredBy = [ "sysinit-reactivation.target" ]; - before = [ "sysinit-reactivation.target" ]; - restartTriggers = [ config.environment.etc."my-sysinit.d".source ]; -}; +{ + systemd.services.my-sysinit = { + requiredBy = [ "sysinit-reactivation.target" ]; + before = [ "sysinit-reactivation.target" ]; + restartTriggers = [ config.environment.etc."my-sysinit.d".source ]; + }; +} ``` You need to configure appropriate `restartTriggers` specific to your service. diff --git a/nixos/doc/manual/development/writing-modules.chapter.md b/nixos/doc/manual/development/writing-modules.chapter.md index 20157a21e890..67a5cc23a6aa 100644 --- a/nixos/doc/manual/development/writing-modules.chapter.md +++ b/nixos/doc/manual/development/writing-modules.chapter.md @@ -28,7 +28,7 @@ NixOS modules: ```nix { config, pkgs, ... }: -{ option definitions +{ # option definitions } ``` @@ -43,15 +43,15 @@ is shown in [Example: Structure of NixOS Modules](#ex-module-syntax). { imports = - [ paths of other modules + [ # paths of other modules ]; options = { - option declarations + # option declarations }; config = { - option definitions + # option definitions }; } ``` diff --git a/nixos/doc/manual/development/writing-nixos-tests.section.md b/nixos/doc/manual/development/writing-nixos-tests.section.md index 50886376c240..3ce12f41c60f 100644 --- a/nixos/doc/manual/development/writing-nixos-tests.section.md +++ b/nixos/doc/manual/development/writing-nixos-tests.section.md @@ -8,10 +8,10 @@ A NixOS test is a module that has the following structure: # One or more machines: nodes = { machine = - { config, pkgs, ... }: { … }; + { config, pkgs, ... }: { /* ... */ }; machine2 = - { config, pkgs, ... }: { … }; - … + { config, pkgs, ... }: { /* ... */ }; + # … }; testScript = @@ -46,16 +46,20 @@ Tests are invoked differently depending on whether the test is part of NixOS or Tests that are part of NixOS are added to [`nixos/tests/all-tests.nix`](https://github.com/NixOS/nixpkgs/blob/master/nixos/tests/all-tests.nix). ```nix +{ hostname = runTest ./hostname.nix; +} ``` Overrides can be added by defining an anonymous module in `all-tests.nix`. ```nix +{ hostname = runTest { imports = [ ./hostname.nix ]; defaults.networking.firewall.enable = false; }; +} ``` You can run a test with attribute name `hostname` in `nixos/tests/all-tests.nix` by invoking: @@ -161,7 +165,7 @@ For faster dev cycles it's also possible to disable the code-linters skipLint = true; nodes.machine = { config, pkgs, ... }: - { configuration… + { # configuration… }; testScript = @@ -177,12 +181,14 @@ linter directly (again, don't commit this within the Nixpkgs repository): ```nix +{ testScript = '' # fmt: off Python code… # fmt: on ''; +} ``` Similarly, the type checking of test scripts can be disabled in the following @@ -193,7 +199,7 @@ way: skipTypeCheck = true; nodes.machine = { config, pkgs, ... }: - { configuration… + { # configuration… }; } ``` diff --git a/nixos/doc/manual/installation/building-images-via-systemd-repart.chapter.md b/nixos/doc/manual/installation/building-images-via-systemd-repart.chapter.md index 10bee156d113..5a552a54f531 100644 --- a/nixos/doc/manual/installation/building-images-via-systemd-repart.chapter.md +++ b/nixos/doc/manual/installation/building-images-via-systemd-repart.chapter.md @@ -18,11 +18,11 @@ An example of how to build an image: partitions = { "esp" = { contents = { - ... + # ... }; repartConfig = { Type = "esp"; - ... + # ... }; }; "root" = { @@ -30,7 +30,7 @@ An example of how to build an image: repartConfig = { Type = "root"; Label = "nixos"; - ... + # ... }; }; }; @@ -47,19 +47,21 @@ determined by the mount point, you have to set `stripNixStorePrefix = true;` so that the prefix is stripped from the paths before copying them into the image. ```nix -fileSystems."/nix/store".device = "/dev/disk/by-partlabel/nix-store" +{ + fileSystems."/nix/store".device = "/dev/disk/by-partlabel/nix-store"; -image.repart.partitions = { - "store" = { - storePaths = [ config.system.build.toplevel ]; - stripNixStorePrefix = true; - repartConfig = { - Type = "linux-generic"; - Label = "nix-store"; - ... + image.repart.partitions = { + "store" = { + storePaths = [ config.system.build.toplevel ]; + stripNixStorePrefix = true; + repartConfig = { + Type = "linux-generic"; + Label = "nix-store"; + # ... + }; }; }; -}; +} ``` ## Appliance Image {#sec-image-repart-appliance} diff --git a/nixos/doc/manual/installation/changing-config.chapter.md b/nixos/doc/manual/installation/changing-config.chapter.md index 9e56b15a880f..07a0074d17e7 100644 --- a/nixos/doc/manual/installation/changing-config.chapter.md +++ b/nixos/doc/manual/installation/changing-config.chapter.md @@ -87,7 +87,9 @@ set `mutableUsers = false`. Another way is to temporarily add the following to your configuration: ```nix -users.users.your-user.initialHashedPassword = "test"; +{ + users.users.your-user.initialHashedPassword = "test"; +} ``` *Important:* delete the \$hostname.qcow2 file if you have started the diff --git a/nixos/doc/manual/installation/installing-behind-a-proxy.section.md b/nixos/doc/manual/installation/installing-behind-a-proxy.section.md index aca151531d0f..691f9c9ccf6d 100644 --- a/nixos/doc/manual/installation/installing-behind-a-proxy.section.md +++ b/nixos/doc/manual/installation/installing-behind-a-proxy.section.md @@ -7,8 +7,10 @@ To install NixOS behind a proxy, do the following before running keep the internet accessible after reboot. ```nix - networking.proxy.default = "http://user:password@proxy:port/"; - networking.proxy.noProxy = "127.0.0.1,localhost,internal.domain"; + { + networking.proxy.default = "http://user:password@proxy:port/"; + networking.proxy.noProxy = "127.0.0.1,localhost,internal.domain"; + } ``` 1. Setup the proxy environment variables in the shell where you are diff --git a/nixos/doc/manual/installation/installing-from-other-distro.section.md b/nixos/doc/manual/installation/installing-from-other-distro.section.md index 921592fe5357..10ac2be4e161 100644 --- a/nixos/doc/manual/installation/installing-from-other-distro.section.md +++ b/nixos/doc/manual/installation/installing-from-other-distro.section.md @@ -89,12 +89,14 @@ The first steps to all these are the same: want to add something like this to your `configuration.nix`: ```nix - boot.loader.grub.extraEntries = '' - menuentry "Ubuntu" { - search --set=ubuntu --fs-uuid 3cc3e652-0c1f-4800-8451-033754f68e6e - configfile "($ubuntu)/boot/grub/grub.cfg" - } - ''; + { + boot.loader.grub.extraEntries = '' + menuentry "Ubuntu" { + search --set=ubuntu --fs-uuid 3cc3e652-0c1f-4800-8451-033754f68e6e + configfile "($ubuntu)/boot/grub/grub.cfg" + } + ''; + } ``` (You can find the appropriate UUID for your partition in @@ -164,7 +166,9 @@ The first steps to all these are the same: `sudo passwd -l root` if you use `sudo`) ```nix - users.users.root.initialHashedPassword = ""; + { + users.users.root.initialHashedPassword = ""; + } ``` 1. Build the NixOS closure and install it in the `system` profile: diff --git a/nixos/doc/manual/installation/installing-virtualbox-guest.section.md b/nixos/doc/manual/installation/installing-virtualbox-guest.section.md index 004838e586be..4b9ae0a9c55f 100644 --- a/nixos/doc/manual/installation/installing-virtualbox-guest.section.md +++ b/nixos/doc/manual/installation/installing-virtualbox-guest.section.md @@ -29,14 +29,18 @@ There are a few modifications you should make in configuration.nix. Enable booting: ```nix -boot.loader.grub.device = "/dev/sda"; +{ + boot.loader.grub.device = "/dev/sda"; +} ``` Also remove the fsck that runs at startup. It will always fail to run, stopping your boot until you press `*`. ```nix -boot.initrd.checkJournalingFS = false; +{ + boot.initrd.checkJournalingFS = false; +} ``` Shared folders can be given a name and a path in the host system in the diff --git a/nixos/doc/manual/installation/upgrading.chapter.md b/nixos/doc/manual/installation/upgrading.chapter.md index 79cd4e55be5c..09338bf8723d 100644 --- a/nixos/doc/manual/installation/upgrading.chapter.md +++ b/nixos/doc/manual/installation/upgrading.chapter.md @@ -101,8 +101,10 @@ You can keep a NixOS system up-to-date automatically by adding the following to `configuration.nix`: ```nix -system.autoUpgrade.enable = true; -system.autoUpgrade.allowReboot = true; +{ + system.autoUpgrade.enable = true; + system.autoUpgrade.allowReboot = true; +} ``` This enables a periodically executed systemd service named @@ -114,5 +116,7 @@ the new generation contains a different kernel, initrd or kernel modules. You can also specify a channel explicitly, e.g. ```nix -system.autoUpgrade.channel = "https://channels.nixos.org/nixos-23.11"; +{ + system.autoUpgrade.channel = "https://channels.nixos.org/nixos-23.11"; +} ``` diff --git a/nixos/doc/manual/release-notes/rl-1509.section.md b/nixos/doc/manual/release-notes/rl-1509.section.md index f47d13008185..c2ac89a09518 100644 --- a/nixos/doc/manual/release-notes/rl-1509.section.md +++ b/nixos/doc/manual/release-notes/rl-1509.section.md @@ -253,9 +253,9 @@ Installing Haskell _libraries_ this way, however, is no longer supported. See th { options = { - foo = mkOption { … }; + foo = mkOption { /* … */ }; }; - config = mkIf config.foo { … }; + config = mkIf config.foo { /* … */ }; } ``` @@ -268,9 +268,9 @@ Installing Haskell _libraries_ this way, however, is no longer supported. See th { options = { - foo = mkOption { option declaration }; + foo = mkOption { /* option declaration */ }; }; - config = mkIf config.foo { option definition }; + config = mkIf config.foo { /* option definition */ }; } ``` diff --git a/nixos/doc/manual/release-notes/rl-1703.section.md b/nixos/doc/manual/release-notes/rl-1703.section.md index b82c41e28ca3..e20d84d306e8 100644 --- a/nixos/doc/manual/release-notes/rl-1703.section.md +++ b/nixos/doc/manual/release-notes/rl-1703.section.md @@ -246,7 +246,7 @@ When upgrading from a previous release, please be aware of the following incompa let pkgs = import {}; in - pkgs.overridePackages (self: super: ...) + pkgs.overridePackages (self: super: { /* ... */ }) ``` should be replaced by: @@ -255,7 +255,7 @@ When upgrading from a previous release, please be aware of the following incompa let pkgs = import {}; in - import pkgs.path { overlays = [(self: super: ...)]; } + import pkgs.path { overlays = [(self: super: { /* ... */ })]; } ``` - Autoloading connection tracking helpers is now disabled by default. This default was also changed in the Linux kernel and is considered insecure if not configured properly in your firewall. If you need connection tracking helpers (i.e. for active FTP) please enable `networking.firewall.autoLoadConntrackHelpers` and tune `networking.firewall.connectionTrackingModules` to suit your needs. diff --git a/nixos/doc/manual/release-notes/rl-2009.section.md b/nixos/doc/manual/release-notes/rl-2009.section.md index eac02a8ff445..900c20dbe717 100644 --- a/nixos/doc/manual/release-notes/rl-2009.section.md +++ b/nixos/doc/manual/release-notes/rl-2009.section.md @@ -334,22 +334,18 @@ When upgrading from a previous release, please be aware of the following incompa - The remaining configuration flags can now be set directly on the `php` attribute. For example, instead of ```nix - { - php.override { - config.php.embed = true; - config.php.apxs2 = false; - } + php.override { + config.php.embed = true; + config.php.apxs2 = false; } ``` you should now write ```nix - { - php.override { - embedSupport = true; - apxs2Support = false; - } + php.override { + embedSupport = true; + apxs2Support = false; } ``` @@ -383,9 +379,10 @@ When upgrading from a previous release, please be aware of the following incompa { specialisation.example-sub-configuration = { configuration = { - ... + # ... }; - }; + }; + } ``` Replace a `nesting.children` entry with: @@ -395,9 +392,10 @@ When upgrading from a previous release, please be aware of the following incompa specialisation.example-sub-configuration = { inheritParentConfig = false; configuration = { - ... + # ... }; - }; + }; + } ``` To switch to a specialised configuration at runtime you need to run: @@ -469,7 +467,7 @@ When upgrading from a previous release, please be aware of the following incompa services.bitcoind = { enable = true; extraConfig = "..."; - ... + # ... }; } ``` @@ -483,7 +481,7 @@ When upgrading from a previous release, please be aware of the following incompa dataDir = "/var/lib/bitcoind"; user = "bitcoin"; extraConfig = "..."; - ... + # ... }; } ``` @@ -502,7 +500,7 @@ When upgrading from a previous release, please be aware of the following incompa { services.dokuwiki = { enable = true; - ... + # ... }; } ``` @@ -517,7 +515,7 @@ When upgrading from a previous release, please be aware of the following incompa forceSSL = true; enableACME = true; }; - ... + # ... }; } ``` diff --git a/nixos/doc/manual/release-notes/rl-2205.section.md b/nixos/doc/manual/release-notes/rl-2205.section.md index 6f5a807f478a..3a2c70fb7a31 100644 --- a/nixos/doc/manual/release-notes/rl-2205.section.md +++ b/nixos/doc/manual/release-notes/rl-2205.section.md @@ -462,6 +462,7 @@ In addition to numerous new and upgraded packages, this release has the followin Before: ```nix + { services.keycloak = { enable = true; httpPort = "8080"; @@ -471,10 +472,12 @@ In addition to numerous new and upgraded packages, this release has the followin "subsystem=undertow"."server=default-server"."http-listener=default".proxy-address-forwarding = true; }; }; + } ``` After: ```nix + { services.keycloak = { enable = true; settings = { @@ -485,6 +488,7 @@ In addition to numerous new and upgraded packages, this release has the followin }; database.passwordFile = "/run/keys/db_password"; }; + } ``` - The MoinMoin wiki engine (`services.moinmoin`) has been removed, because Python 2 is being retired from nixpkgs. diff --git a/nixos/doc/manual/release-notes/rl-2211.section.md b/nixos/doc/manual/release-notes/rl-2211.section.md index 5ad16d15c3d9..77cb6c9baadb 100644 --- a/nixos/doc/manual/release-notes/rl-2211.section.md +++ b/nixos/doc/manual/release-notes/rl-2211.section.md @@ -255,9 +255,11 @@ In addition to numerous new and upgraded packages, this release includes the fol - `services.github-runner` and `services.github-runners.` gained the option `serviceOverrides` which allows overriding the systemd `serviceConfig`. If you have been overriding the systemd service configuration (i.e., by defining `systemd.services.github-runner.serviceConfig`), you have to use the `serviceOverrides` option now. Example: ```nix - services.github-runner.serviceOverrides.SupplementaryGroups = [ - "docker" - ]; + { + services.github-runner.serviceOverrides.SupplementaryGroups = [ + "docker" + ]; + } ``` diff --git a/nixos/doc/manual/release-notes/rl-2305.section.md b/nixos/doc/manual/release-notes/rl-2305.section.md index 21c798b3b4a4..ce874a6e0b2d 100644 --- a/nixos/doc/manual/release-notes/rl-2305.section.md +++ b/nixos/doc/manual/release-notes/rl-2305.section.md @@ -25,7 +25,9 @@ In addition to numerous new and updated packages, this release has the following - NixOS now defaults to using [nsncd](https://github.com/twosigma/nsncd), a non-caching reimplementation of nscd in Rust, as its NSS lookup dispatcher. This replaces the buggy and deprecated nscd implementation provided through glibc. When you find problems, you can switch back by disabling it: ```nix - services.nscd.enableNsncd = false; + { + services.nscd.enableNsncd = false; + } ``` - The internal option `boot.bootspec.enable` is now enabled by default because [RFC 0125](https://github.com/NixOS/rfcs/pull/125) was merged. This means you will have a bootspec document called `boot.json` generated for each system and specialisation in the top-level. This is useful to enable advanced boot use cases in NixOS, such as Secure Boot. @@ -190,11 +192,13 @@ In addition to numerous new and updated packages, this release has the following - MAC-then-encrypt algorithms were removed from the default selection of `services.openssh.settings.Macs`. If you still require these [MACs](https://en.wikipedia.org/wiki/Message_authentication_code), for example when you are relying on libssh2 (e.g. VLC) or the SSH library shipped on the iPhone, you can re-add them like this: ```nix - services.openssh.settings.Macs = [ - "hmac-sha2-512" - "hmac-sha2-256" - "umac-128@openssh.com" - ]; + { + services.openssh.settings.Macs = [ + "hmac-sha2-512" + "hmac-sha2-256" + "umac-128@openssh.com" + ]; + } ``` - `podman` now uses the `netavark` network stack. Users will need to delete all of their local containers, images, volumes, etc, by running `podman system reset --force` once before upgrading their systems. @@ -227,21 +231,25 @@ In addition to numerous new and updated packages, this release has the following - The attributes used by `services.snapper.configs.` have changed. Migrate from this: ```nix - services.snapper.configs.example = { - subvolume = "/example"; - extraConfig = '' - ALLOW_USERS="alice" - ''; - }; + { + services.snapper.configs.example = { + subvolume = "/example"; + extraConfig = '' + ALLOW_USERS="alice" + ''; + }; + } ``` to this: ```nix - services.snapper.configs.example = { - SUBVOLUME = "/example"; - ALLOW_USERS = [ "alice" ]; - }; + { + services.snapper.configs.example = { + SUBVOLUME = "/example"; + ALLOW_USERS = [ "alice" ]; + }; + } ``` - The default module options for [services.snapserver.openFirewall](#opt-services.snapserver.openFirewall), [services.tmate-ssh-server.openFirewall](#opt-services.tmate-ssh-server.openFirewall) and [services.unifi-video.openFirewall](#opt-services.unifi-video.openFirewall) have been changed from `true` to `false`. You will need to explicitly set this option to `true`, or configure your firewall. @@ -446,15 +454,17 @@ In addition to numerous new and updated packages, this release has the following - NixOS swap partitions with random encryption can now control the sector size, cipher, and key size used to set up the plain encryption device over the underlying block device rather than allowing them to be determined by `cryptsetup(8)`. One can use these features like so: ```nix - swapDevices = [ { - device = "/dev/disk/by-partlabel/swapspace"; - randomEncryption = { - enable = true; - cipher = "aes-xts-plain64"; - keySize = 512; - sectorSize = 4096; - }; - } ]; + { + swapDevices = [ { + device = "/dev/disk/by-partlabel/swapspace"; + randomEncryption = { + enable = true; + cipher = "aes-xts-plain64"; + keySize = 512; + sectorSize = 4096; + }; + } ]; + } ``` - New option `security.pam.zfs` to enable unlocking and mounting of encrypted ZFS home dataset at login. @@ -465,7 +475,9 @@ In addition to numerous new and updated packages, this release has the following - PostgreSQL has added opt-in support for [JIT compilation](https://www.postgresql.org/docs/current/jit-reason.html). It can be enabled like this: ```nix - services.postgresql.enableJIT = true; + { + services.postgresql.enableJIT = true; + } ``` - `services.netdata` offers a [`services.netdata.deadlineBeforeStopSec`](#opt-services.netdata.deadlineBeforeStopSec) option which will control the deadline (in seconds) after which systemd will consider your netdata instance as dead if it didn't start in the elapsed time. It is helpful when your netdata instance takes longer to start because of a large amount of state or upgrades. diff --git a/nixos/doc/manual/release-notes/rl-2311.section.md b/nixos/doc/manual/release-notes/rl-2311.section.md index eb6667b3fe8f..5313f04cb789 100644 --- a/nixos/doc/manual/release-notes/rl-2311.section.md +++ b/nixos/doc/manual/release-notes/rl-2311.section.md @@ -700,11 +700,13 @@ Make sure to also check the many updates in the [Nixpkgs library](#sec-release-2 will probably be removed eventually. ```nix - qt = { - enable = true; - platformTheme = "gnome"; - style = "adwaita"; - }; + { + qt = { + enable = true; + platformTheme = "gnome"; + style = "adwaita"; + }; + } ``` - DocBook option documentation is no longer supported, all module documentation @@ -885,11 +887,13 @@ Make sure to also check the many updates in the [Nixpkgs library](#sec-release-2 to a compatible major version, so they can move at their own pace. ```nix - python = python3.override { - packageOverrides = self: super: { - django = super.django_3; + { + python = python3.override { + packageOverrides = self: super: { + django = super.django_3; + }; }; - }; + } ``` - The `qemu-vm.nix` module by default now identifies block devices via @@ -1229,15 +1233,17 @@ Make sure to also check the many updates in the [Nixpkgs library](#sec-release-2 overriding `externalPlugins` and `vendorHash` arguments like this: ```nix - services.coredns = { - enable = true; - package = pkgs.coredns.override { - externalPlugins = [ - {name = "fanout"; repo = "github.com/networkservicemesh/fanout"; version = "v1.9.1";} - ]; - vendorHash = ""; + { + services.coredns = { + enable = true; + package = pkgs.coredns.override { + externalPlugins = [ + {name = "fanout"; repo = "github.com/networkservicemesh/fanout"; version = "v1.9.1";} + ]; + vendorHash = ""; + }; }; - }; + } ``` To get the necessary SRI hash, set `vendorHash = "";`. The build will fail diff --git a/nixos/doc/manual/release-notes/rl-2405.section.md b/nixos/doc/manual/release-notes/rl-2405.section.md index 0218621ae1c0..88d9ee646fd5 100644 --- a/nixos/doc/manual/release-notes/rl-2405.section.md +++ b/nixos/doc/manual/release-notes/rl-2405.section.md @@ -223,13 +223,14 @@ The pre-existing [services.ankisyncd](#opt-services.ankisyncd.enable) has been m Example: ```nix + { locations."/".extraConfig = '' add_header Alt-Svc 'h3=":$server_port"; ma=86400'; ''; locations."^~ /assets/".extraConfig = '' add_header Alt-Svc 'h3=":$server_port"; ma=86400'; ''; - + } ``` - The package `optparse-bash` is now dropped due to upstream inactivity. Alternatives available in Nixpkgs include [`argc`](https://github.com/sigoden/argc), [`argbash`](https://github.com/matejak/argbash), [`bashly`](https://github.com/DannyBen/bashly) and [`gum`](https://github.com/charmbracelet/gum), to name a few. diff --git a/nixos/modules/i18n/input-method/default.md b/nixos/modules/i18n/input-method/default.md index 3d56c97a1726..6d12462b788e 100644 --- a/nixos/modules/i18n/input-method/default.md +++ b/nixos/modules/i18n/input-method/default.md @@ -23,10 +23,12 @@ friendly input method user interface. The following snippet can be used to configure IBus: ```nix -i18n.inputMethod = { - enabled = "ibus"; - ibus.engines = with pkgs.ibus-engines; [ anthy hangul mozc ]; -}; +{ + i18n.inputMethod = { + enabled = "ibus"; + ibus.engines = with pkgs.ibus-engines; [ anthy hangul mozc ]; + }; +} ``` `i18n.inputMethod.ibus.engines` is optional and can be used @@ -49,7 +51,9 @@ Available extra IBus engines are: `table`. For example: ```nix - ibus.engines = with pkgs.ibus-engines; [ table table-others ]; + { + ibus.engines = with pkgs.ibus-engines; [ table table-others ]; + } ``` To use any input method, the package must be added in the configuration, as @@ -75,10 +79,12 @@ built-in Input Method Engine, Pinyin, QuWei and Table-based input methods. The following snippet can be used to configure Fcitx: ```nix -i18n.inputMethod = { - enabled = "fcitx5"; - fcitx5.addons = with pkgs; [ fcitx5-mozc fcitx5-hangul fcitx5-m17n ]; -}; +{ + i18n.inputMethod = { + enabled = "fcitx5"; + fcitx5.addons = with pkgs; [ fcitx5-mozc fcitx5-hangul fcitx5-m17n ]; + }; +} ``` `i18n.inputMethod.fcitx5.addons` is optional and can be @@ -111,9 +117,11 @@ phonetic Korean characters (hangul) and pictographic Korean characters The following snippet can be used to configure Nabi: ```nix -i18n.inputMethod = { - enabled = "nabi"; -}; +{ + i18n.inputMethod = { + enabled = "nabi"; + }; +} ``` ## Uim {#module-services-input-methods-uim} @@ -124,9 +132,11 @@ framework. Applications can use it through so-called bridges. The following snippet can be used to configure uim: ```nix -i18n.inputMethod = { - enabled = "uim"; -}; +{ + i18n.inputMethod = { + enabled = "uim"; + }; +} ``` Note: The [](#opt-i18n.inputMethod.uim.toolbar) option can be @@ -142,9 +152,11 @@ etc... The following snippet can be used to configure Hime: ```nix -i18n.inputMethod = { - enabled = "hime"; -}; +{ + i18n.inputMethod = { + enabled = "hime"; + }; +} ``` ## Kime {#module-services-input-methods-kime} @@ -154,7 +166,9 @@ Kime is Korean IME. it's built with Rust language and let you get simple, safe, The following snippet can be used to configure Kime: ```nix -i18n.inputMethod = { - enabled = "kime"; -}; +{ + i18n.inputMethod = { + enabled = "kime"; + }; +} ``` diff --git a/nixos/modules/programs/digitalbitbox/default.md b/nixos/modules/programs/digitalbitbox/default.md index c93d0f2b7f0a..5147bb971e3a 100644 --- a/nixos/modules/programs/digitalbitbox/default.md +++ b/nixos/modules/programs/digitalbitbox/default.md @@ -5,7 +5,9 @@ Digital Bitbox is a hardware wallet and second-factor authenticator. The `digitalbitbox` programs module may be installed by setting `programs.digitalbitbox` to `true` in a manner similar to ```nix -programs.digitalbitbox.enable = true; +{ + programs.digitalbitbox.enable = true; +} ``` and bundles the `digitalbitbox` package (see [](#sec-digitalbitbox-package)), which contains the `dbb-app` and `dbb-cli` binaries, along with the hardware @@ -22,9 +24,11 @@ For more information, see . The binaries, `dbb-app` (a GUI tool) and `dbb-cli` (a CLI tool), are available through the `digitalbitbox` package which could be installed as follows: ```nix -environment.systemPackages = [ - pkgs.digitalbitbox -]; +{ + environment.systemPackages = [ + pkgs.digitalbitbox + ]; +} ``` ## Hardware {#sec-digitalbitbox-hardware-module} @@ -32,16 +36,20 @@ environment.systemPackages = [ The digitalbitbox hardware package enables the udev rules for Digital Bitbox devices and may be installed as follows: ```nix -hardware.digitalbitbox.enable = true; +{ + hardware.digitalbitbox.enable = true; +} ``` In order to alter the udev rules, one may provide different values for the `udevRule51` and `udevRule52` attributes by means of overriding as follows: ```nix -programs.digitalbitbox = { - enable = true; - package = pkgs.digitalbitbox.override { - udevRule51 = "something else"; +{ + programs.digitalbitbox = { + enable = true; + package = pkgs.digitalbitbox.override { + udevRule51 = "something else"; + }; }; -}; +} ``` diff --git a/nixos/modules/programs/plotinus.md b/nixos/modules/programs/plotinus.md index b59d0d5c188b..0a2c688c722c 100644 --- a/nixos/modules/programs/plotinus.md +++ b/nixos/modules/programs/plotinus.md @@ -13,5 +13,7 @@ palette provides a searchable list of of all menu items in the application. To enable Plotinus, add the following to your {file}`configuration.nix`: ```nix -programs.plotinus.enable = true; +{ + programs.plotinus.enable = true; +} ``` diff --git a/nixos/modules/security/acme/default.md b/nixos/modules/security/acme/default.md index 38fbfbf0caec..a6ef2a3fdf18 100644 --- a/nixos/modules/security/acme/default.md +++ b/nixos/modules/security/acme/default.md @@ -46,33 +46,35 @@ certs are overwritten when the ACME certs arrive. For `foo.example.com` the config would look like this: ```nix -security.acme.acceptTerms = true; -security.acme.defaults.email = "admin+acme@example.com"; -services.nginx = { - enable = true; - virtualHosts = { - "foo.example.com" = { - forceSSL = true; - enableACME = true; - # All serverAliases will be added as extra domain names on the certificate. - serverAliases = [ "bar.example.com" ]; - locations."/" = { - root = "/var/www"; +{ + security.acme.acceptTerms = true; + security.acme.defaults.email = "admin+acme@example.com"; + services.nginx = { + enable = true; + virtualHosts = { + "foo.example.com" = { + forceSSL = true; + enableACME = true; + # All serverAliases will be added as extra domain names on the certificate. + serverAliases = [ "bar.example.com" ]; + locations."/" = { + root = "/var/www"; + }; }; - }; - # We can also add a different vhost and reuse the same certificate - # but we have to append extraDomainNames manually beforehand: - # security.acme.certs."foo.example.com".extraDomainNames = [ "baz.example.com" ]; - "baz.example.com" = { - forceSSL = true; - useACMEHost = "foo.example.com"; - locations."/" = { - root = "/var/www"; + # We can also add a different vhost and reuse the same certificate + # but we have to append extraDomainNames manually beforehand: + # security.acme.certs."foo.example.com".extraDomainNames = [ "baz.example.com" ]; + "baz.example.com" = { + forceSSL = true; + useACMEHost = "foo.example.com"; + locations."/" = { + root = "/var/www"; + }; }; }; }; -}; +} ``` ## Using ACME certificates in Apache/httpd {#module-security-acme-httpd} @@ -89,65 +91,69 @@ the intent that you will generate certs for all your vhosts and redirect everyone to HTTPS. ```nix -security.acme.acceptTerms = true; -security.acme.defaults.email = "admin+acme@example.com"; +{ + security.acme.acceptTerms = true; + security.acme.defaults.email = "admin+acme@example.com"; -# /var/lib/acme/.challenges must be writable by the ACME user -# and readable by the Nginx user. The easiest way to achieve -# this is to add the Nginx user to the ACME group. -users.users.nginx.extraGroups = [ "acme" ]; + # /var/lib/acme/.challenges must be writable by the ACME user + # and readable by the Nginx user. The easiest way to achieve + # this is to add the Nginx user to the ACME group. + users.users.nginx.extraGroups = [ "acme" ]; -services.nginx = { - enable = true; - virtualHosts = { - "acmechallenge.example.com" = { - # Catchall vhost, will redirect users to HTTPS for all vhosts - serverAliases = [ "*.example.com" ]; - locations."/.well-known/acme-challenge" = { - root = "/var/lib/acme/.challenges"; - }; - locations."/" = { - return = "301 https://$host$request_uri"; + services.nginx = { + enable = true; + virtualHosts = { + "acmechallenge.example.com" = { + # Catchall vhost, will redirect users to HTTPS for all vhosts + serverAliases = [ "*.example.com" ]; + locations."/.well-known/acme-challenge" = { + root = "/var/lib/acme/.challenges"; + }; + locations."/" = { + return = "301 https://$host$request_uri"; + }; }; }; }; -}; -# Alternative config for Apache -users.users.wwwrun.extraGroups = [ "acme" ]; -services.httpd = { - enable = true; - virtualHosts = { - "acmechallenge.example.com" = { - # Catchall vhost, will redirect users to HTTPS for all vhosts - serverAliases = [ "*.example.com" ]; - # /var/lib/acme/.challenges must be writable by the ACME user and readable by the Apache user. - # By default, this is the case. - documentRoot = "/var/lib/acme/.challenges"; - extraConfig = '' - RewriteEngine On - RewriteCond %{HTTPS} off - RewriteCond %{REQUEST_URI} !^/\.well-known/acme-challenge [NC] - RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R=301] - ''; + # Alternative config for Apache + users.users.wwwrun.extraGroups = [ "acme" ]; + services.httpd = { + enable = true; + virtualHosts = { + "acmechallenge.example.com" = { + # Catchall vhost, will redirect users to HTTPS for all vhosts + serverAliases = [ "*.example.com" ]; + # /var/lib/acme/.challenges must be writable by the ACME user and readable by the Apache user. + # By default, this is the case. + documentRoot = "/var/lib/acme/.challenges"; + extraConfig = '' + RewriteEngine On + RewriteCond %{HTTPS} off + RewriteCond %{REQUEST_URI} !^/\.well-known/acme-challenge [NC] + RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R=301] + ''; + }; }; }; -}; +} ``` Now you need to configure ACME to generate a certificate. ```nix -security.acme.certs."foo.example.com" = { - webroot = "/var/lib/acme/.challenges"; - email = "foo@example.com"; - # Ensure that the web server you use can read the generated certs - # Take a look at the group option for the web server you choose. - group = "nginx"; - # Since we have a wildcard vhost to handle port 80, - # we can generate certs for anything! - # Just make sure your DNS resolves them. - extraDomainNames = [ "mail.example.com" ]; -}; +{ + security.acme.certs."foo.example.com" = { + webroot = "/var/lib/acme/.challenges"; + email = "foo@example.com"; + # Ensure that the web server you use can read the generated certs + # Take a look at the group option for the web server you choose. + group = "nginx"; + # Since we have a wildcard vhost to handle port 80, + # we can generate certs for anything! + # Just make sure your DNS resolves them. + extraDomainNames = [ "mail.example.com" ]; + }; +} ``` The private key {file}`key.pem` and certificate @@ -168,31 +174,33 @@ for provider/server specific configuration values. For the sake of these docs, we will provide a fully self-hosted example using bind. ```nix -services.bind = { - enable = true; - extraConfig = '' - include "/var/lib/secrets/dnskeys.conf"; - ''; - zones = [ - rec { - name = "example.com"; - file = "/var/db/bind/${name}"; - master = true; - extraConfig = "allow-update { key rfc2136key.example.com.; };"; - } - ]; -}; +{ + services.bind = { + enable = true; + extraConfig = '' + include "/var/lib/secrets/dnskeys.conf"; + ''; + zones = [ + rec { + name = "example.com"; + file = "/var/db/bind/${name}"; + master = true; + extraConfig = "allow-update { key rfc2136key.example.com.; };"; + } + ]; + }; -# Now we can configure ACME -security.acme.acceptTerms = true; -security.acme.defaults.email = "admin+acme@example.com"; -security.acme.certs."example.com" = { - domain = "*.example.com"; - dnsProvider = "rfc2136"; - environmentFile = "/var/lib/secrets/certs.secret"; - # We don't need to wait for propagation since this is a local DNS server - dnsPropagationCheck = false; -}; + # Now we can configure ACME + security.acme.acceptTerms = true; + security.acme.defaults.email = "admin+acme@example.com"; + security.acme.certs."example.com" = { + domain = "*.example.com"; + dnsProvider = "rfc2136"; + environmentFile = "/var/lib/secrets/certs.secret"; + # We don't need to wait for propagation since this is a local DNS server + dnsPropagationCheck = false; + }; +} ``` The {file}`dnskeys.conf` and {file}`certs.secret` @@ -200,36 +208,38 @@ must be kept secure and thus you should not keep their contents in your Nix config. Instead, generate them one time with a systemd service: ```nix -systemd.services.dns-rfc2136-conf = { - requiredBy = ["acme-example.com.service" "bind.service"]; - before = ["acme-example.com.service" "bind.service"]; - unitConfig = { - ConditionPathExists = "!/var/lib/secrets/dnskeys.conf"; - }; - serviceConfig = { - Type = "oneshot"; - UMask = 0077; - }; - path = [ pkgs.bind ]; - script = '' - mkdir -p /var/lib/secrets - chmod 755 /var/lib/secrets - tsig-keygen rfc2136key.example.com > /var/lib/secrets/dnskeys.conf - chown named:root /var/lib/secrets/dnskeys.conf - chmod 400 /var/lib/secrets/dnskeys.conf +{ + systemd.services.dns-rfc2136-conf = { + requiredBy = ["acme-example.com.service" "bind.service"]; + before = ["acme-example.com.service" "bind.service"]; + unitConfig = { + ConditionPathExists = "!/var/lib/secrets/dnskeys.conf"; + }; + serviceConfig = { + Type = "oneshot"; + UMask = 0077; + }; + path = [ pkgs.bind ]; + script = '' + mkdir -p /var/lib/secrets + chmod 755 /var/lib/secrets + tsig-keygen rfc2136key.example.com > /var/lib/secrets/dnskeys.conf + chown named:root /var/lib/secrets/dnskeys.conf + chmod 400 /var/lib/secrets/dnskeys.conf - # extract secret value from the dnskeys.conf - while read x y; do if [ "$x" = "secret" ]; then secret="''${y:1:''${#y}-3}"; fi; done < /var/lib/secrets/dnskeys.conf + # extract secret value from the dnskeys.conf + while read x y; do if [ "$x" = "secret" ]; then secret="''${y:1:''${#y}-3}"; fi; done < /var/lib/secrets/dnskeys.conf - cat > /var/lib/secrets/certs.secret << EOF - RFC2136_NAMESERVER='127.0.0.1:53' - RFC2136_TSIG_ALGORITHM='hmac-sha256.' - RFC2136_TSIG_KEY='rfc2136key.example.com' - RFC2136_TSIG_SECRET='$secret' - EOF - chmod 400 /var/lib/secrets/certs.secret - ''; -}; + cat > /var/lib/secrets/certs.secret << EOF + RFC2136_NAMESERVER='127.0.0.1:53' + RFC2136_TSIG_ALGORITHM='hmac-sha256.' + RFC2136_TSIG_KEY='rfc2136key.example.com' + RFC2136_TSIG_SECRET='$secret' + EOF + chmod 400 /var/lib/secrets/certs.secret + ''; + }; +} ``` Now you're all set to generate certs! You should monitor the first invocation @@ -251,27 +261,29 @@ you will set them as defaults (e.g. [](#opt-security.acme.defaults.dnsProvider)). ```nix -# Configure ACME appropriately -security.acme.acceptTerms = true; -security.acme.defaults.email = "admin+acme@example.com"; -security.acme.defaults = { - dnsProvider = "rfc2136"; - environmentFile = "/var/lib/secrets/certs.secret"; - # We don't need to wait for propagation since this is a local DNS server - dnsPropagationCheck = false; -}; +{ + # Configure ACME appropriately + security.acme.acceptTerms = true; + security.acme.defaults.email = "admin+acme@example.com"; + security.acme.defaults = { + dnsProvider = "rfc2136"; + environmentFile = "/var/lib/secrets/certs.secret"; + # We don't need to wait for propagation since this is a local DNS server + dnsPropagationCheck = false; + }; -# For each virtual host you would like to use DNS-01 validation with, -# set acmeRoot = null -services.nginx = { - enable = true; - virtualHosts = { - "foo.example.com" = { - enableACME = true; - acmeRoot = null; + # For each virtual host you would like to use DNS-01 validation with, + # set acmeRoot = null + services.nginx = { + enable = true; + virtualHosts = { + "foo.example.com" = { + enableACME = true; + acmeRoot = null; + }; }; }; -}; +} ``` And that's it! Next time your configuration is rebuilt, or when @@ -288,39 +300,41 @@ Below is an example configuration for OpenSMTPD, but this pattern can be applied to any service. ```nix -# Configure ACME however you like (DNS or HTTP validation), adding -# the following configuration for the relevant certificate. -# Note: You cannot use `systemctl reload` here as that would mean -# the LoadCredential configuration below would be skipped and -# the service would continue to use old certificates. -security.acme.certs."mail.example.com".postRun = '' - systemctl restart opensmtpd -''; - -# Now you must augment OpenSMTPD's systemd service to load -# the certificate files. -systemd.services.opensmtpd.requires = ["acme-finished-mail.example.com.target"]; -systemd.services.opensmtpd.serviceConfig.LoadCredential = let - certDir = config.security.acme.certs."mail.example.com".directory; -in [ - "cert.pem:${certDir}/cert.pem" - "key.pem:${certDir}/key.pem" -]; - -# Finally, configure OpenSMTPD to use these certs. -services.opensmtpd = let - credsDir = "/run/credentials/opensmtpd.service"; -in { - enable = true; - setSendmail = false; - serverConfiguration = '' - pki mail.example.com cert "${credsDir}/cert.pem" - pki mail.example.com key "${credsDir}/key.pem" - listen on localhost tls pki mail.example.com - action act1 relay host smtp://127.0.0.1:10027 - match for local action act1 +{ + # Configure ACME however you like (DNS or HTTP validation), adding + # the following configuration for the relevant certificate. + # Note: You cannot use `systemctl reload` here as that would mean + # the LoadCredential configuration below would be skipped and + # the service would continue to use old certificates. + security.acme.certs."mail.example.com".postRun = '' + systemctl restart opensmtpd ''; -}; + + # Now you must augment OpenSMTPD's systemd service to load + # the certificate files. + systemd.services.opensmtpd.requires = ["acme-finished-mail.example.com.target"]; + systemd.services.opensmtpd.serviceConfig.LoadCredential = let + certDir = config.security.acme.certs."mail.example.com".directory; + in [ + "cert.pem:${certDir}/cert.pem" + "key.pem:${certDir}/key.pem" + ]; + + # Finally, configure OpenSMTPD to use these certs. + services.opensmtpd = let + credsDir = "/run/credentials/opensmtpd.service"; + in { + enable = true; + setSendmail = false; + serverConfiguration = '' + pki mail.example.com cert "${credsDir}/cert.pem" + pki mail.example.com key "${credsDir}/key.pem" + listen on localhost tls pki mail.example.com + action act1 relay host smtp://127.0.0.1:10027 + match for local action act1 + ''; + }; +} ``` ## Regenerating certificates {#module-security-acme-regenerate} diff --git a/nixos/modules/services/audio/castopod.md b/nixos/modules/services/audio/castopod.md index ee8590737a7c..40838cc77aa6 100644 --- a/nixos/modules/services/audio/castopod.md +++ b/nixos/modules/services/audio/castopod.md @@ -7,16 +7,18 @@ Castopod is an open-source hosting platform made for podcasters who want to enga Use the following configuration to start a public instance of Castopod on `castopod.example.com` domain: ```nix -networking.firewall.allowedTCPPorts = [ 80 443 ]; -services.castopod = { - enable = true; - database.createLocally = true; - nginx.virtualHost = { - serverName = "castopod.example.com"; - enableACME = true; - forceSSL = true; +{ + networking.firewall.allowedTCPPorts = [ 80 443 ]; + services.castopod = { + enable = true; + database.createLocally = true; + nginx.virtualHost = { + serverName = "castopod.example.com"; + enableACME = true; + forceSSL = true; + }; }; -}; +} ``` Go to `https://castopod.example.com/cp-install` to create superadmin account after applying the above configuration. diff --git a/nixos/modules/services/backup/borgbackup.md b/nixos/modules/services/backup/borgbackup.md index 64d9e35720f1..2c91174732e1 100644 --- a/nixos/modules/services/backup/borgbackup.md +++ b/nixos/modules/services/backup/borgbackup.md @@ -24,19 +24,18 @@ A very basic configuration for backing up to a locally accessible directory is: ```nix { opt.services.borgbackup.jobs = { - { rootBackup = { - paths = "/"; - exclude = [ "/nix" "/path/to/local/repo" ]; - repo = "/path/to/local/repo"; - doInit = true; - encryption = { - mode = "repokey"; - passphrase = "secret"; - }; - compression = "auto,lzma"; - startAt = "weekly"; + rootBackup = { + paths = "/"; + exclude = [ "/nix" "/path/to/local/repo" ]; + repo = "/path/to/local/repo"; + doInit = true; + encryption = { + mode = "repokey"; + passphrase = "secret"; }; - } + compression = "auto,lzma"; + startAt = "weekly"; + }; }; } ``` @@ -96,7 +95,7 @@ accessible by root startAt = "hourly"; }; }; -}; +} ``` The following few commands (run as root) let you test your backup. diff --git a/nixos/modules/services/databases/foundationdb.md b/nixos/modules/services/databases/foundationdb.md index af17c9f95999..9f7addc9c140 100644 --- a/nixos/modules/services/databases/foundationdb.md +++ b/nixos/modules/services/databases/foundationdb.md @@ -16,8 +16,10 @@ key-value store. To enable FoundationDB, add the following to your {file}`configuration.nix`: ```nix -services.foundationdb.enable = true; -services.foundationdb.package = pkgs.foundationdb71; # FoundationDB 7.1.x +{ + services.foundationdb.enable = true; + services.foundationdb.package = pkgs.foundationdb71; # FoundationDB 7.1.x +} ``` The {option}`services.foundationdb.package` option is required, and @@ -110,7 +112,9 @@ FoundationDB stores all data for all server processes under {file}`/var/lib/foundationdb`. You can override this using {option}`services.foundationdb.dataDir`, e.g. ```nix -services.foundationdb.dataDir = "/data/fdb"; +{ + services.foundationdb.dataDir = "/data/fdb"; +} ``` Similarly, logs are stored under {file}`/var/log/foundationdb` @@ -266,7 +270,9 @@ For example, to create backups in {command}`/opt/fdb-backups`, first set up the paths in the module options: ```nix -services.foundationdb.extraReadWritePaths = [ "/opt/fdb-backups" ]; +{ + services.foundationdb.extraReadWritePaths = [ "/opt/fdb-backups" ]; +} ``` Restart the FoundationDB service, and it will now be able to write to this diff --git a/nixos/modules/services/databases/postgresql.md b/nixos/modules/services/databases/postgresql.md index ce1f2856b019..6cce8f542a53 100644 --- a/nixos/modules/services/databases/postgresql.md +++ b/nixos/modules/services/databases/postgresql.md @@ -16,8 +16,10 @@ PostgreSQL is an advanced, free relational database. To enable PostgreSQL, add the following to your {file}`configuration.nix`: ```nix -services.postgresql.enable = true; -services.postgresql.package = pkgs.postgresql_15; +{ + services.postgresql.enable = true; + services.postgresql.package = pkgs.postgresql_15; +} ``` Note that you are required to specify the desired version of PostgreSQL (e.g. `pkgs.postgresql_15`). Since upgrading your PostgreSQL version requires a database dump and reload (see below), NixOS cannot provide a default value for [](#opt-services.postgresql.package) such as the most recent release of PostgreSQL. @@ -36,7 +38,9 @@ alice=> By default, PostgreSQL stores its databases in {file}`/var/lib/postgresql/$psqlSchema`. You can override this using [](#opt-services.postgresql.dataDir), e.g. ```nix -services.postgresql.dataDir = "/data/postgresql"; +{ + services.postgresql.dataDir = "/data/postgresql"; +} ``` ## Initializing {#module-services-postgres-initializing} @@ -95,16 +99,19 @@ databases from `ensureDatabases` and `extraUser1` from `ensureUsers` are already created. ```nix + { systemd.services.postgresql.postStart = lib.mkAfter '' $PSQL service1 -c 'GRANT SELECT ON ALL TABLES IN SCHEMA public TO "extraUser1"' $PSQL service1 -c 'GRANT SELECT ON ALL SEQUENCES IN SCHEMA public TO "extraUser1"' # .... ''; + } ``` ##### in intermediate oneshot service {#module-services-postgres-initializing-extra-permissions-superuser-oneshot} ```nix + { systemd.services."migrate-service1-db1" = { serviceConfig.Type = "oneshot"; requiredBy = "service1.service"; @@ -119,6 +126,7 @@ are already created. # .... ''; }; + } ``` #### as service user {#module-services-postgres-initializing-extra-permissions-service-user} @@ -130,6 +138,7 @@ are already created. ##### in service `preStart` {#module-services-postgres-initializing-extra-permissions-service-user-pre-start} ```nix + { environment.PSQL = "psql --port=${toString services.postgresql.port}"; path = [ postgresql ]; systemd.services."service1".preStart = '' @@ -137,11 +146,13 @@ are already created. $PSQL -c 'GRANT SELECT ON ALL SEQUENCES IN SCHEMA public TO "extraUser1"' # .... ''; + } ``` ##### in intermediate oneshot service {#module-services-postgres-initializing-extra-permissions-service-user-oneshot} ```nix + { systemd.services."migrate-service1-db1" = { serviceConfig.Type = "oneshot"; requiredBy = "service1.service"; @@ -156,6 +167,7 @@ are already created. # .... ''; }; + } ``` ## Upgrading {#module-services-postgres-upgrading} @@ -257,11 +269,13 @@ postgresql_15.pkgs.pg_partman postgresql_15.pkgs.pgroonga To add plugins via NixOS configuration, set `services.postgresql.extraPlugins`: ```nix -services.postgresql.package = pkgs.postgresql_12; -services.postgresql.extraPlugins = ps: with ps; [ - pg_repack - postgis -]; +{ + services.postgresql.package = pkgs.postgresql_12; + services.postgresql.extraPlugins = ps: with ps; [ + pg_repack + postgis + ]; +} ``` You can build custom PostgreSQL-with-plugins (to be used outside of NixOS) using function `.withPackages`. For example, creating a custom PostgreSQL package in an overlay can look like: diff --git a/nixos/modules/services/databases/tigerbeetle.md b/nixos/modules/services/databases/tigerbeetle.md index ed05c982350d..12d920e7bcc7 100644 --- a/nixos/modules/services/databases/tigerbeetle.md +++ b/nixos/modules/services/databases/tigerbeetle.md @@ -8,7 +8,9 @@ TigerBeetle is a distributed financial accounting database designed for mission To enable TigerBeetle, add the following to your {file}`configuration.nix`: ```nix +{ services.tigerbeetle.enable = true; +} ``` When first started, the TigerBeetle service will create its data file at {file}`/var/lib/tigerbeetle` unless the file already exists, in which case it will just use the existing file. @@ -21,12 +23,14 @@ To configure it to listen on a different interface (and to configure it to conne Note that the TigerBeetle module won't open any firewall ports automatically, so if you configure it to listen on an external interface, you'll need to ensure that connections can reach it: ```nix +{ services.tigerbeetle = { enable = true; addresses = [ "0.0.0.0:3001" ]; }; networking.firewall.allowedTCPPorts = [ 3001 ]; +} ``` A complete list of options for TigerBeetle can be found [here](#opt-services.tigerbeetle.enable). diff --git a/nixos/modules/services/desktops/flatpak.md b/nixos/modules/services/desktops/flatpak.md index 57aa41b56224..5299b32a03c7 100644 --- a/nixos/modules/services/desktops/flatpak.md +++ b/nixos/modules/services/desktops/flatpak.md @@ -9,7 +9,9 @@ applications on Linux. To enable Flatpak, add the following to your {file}`configuration.nix`: ```nix +{ services.flatpak.enable = true; +} ``` For the sandboxed apps to work correctly, desktop integration portals need to @@ -17,8 +19,10 @@ be installed. If you run GNOME, this will be handled automatically for you; in other cases, you will need to add something like the following to your {file}`configuration.nix`: ```nix +{ xdg.portal.extraPortals = [ pkgs.xdg-desktop-portal-gtk ]; xdg.portal.config.common.default = "gtk"; +} ``` Then, you will need to add a repository, for example, diff --git a/nixos/modules/services/development/athens.md b/nixos/modules/services/development/athens.md index 142cc74b5d0d..2795930b0a02 100644 --- a/nixos/modules/services/development/athens.md +++ b/nixos/modules/services/development/athens.md @@ -42,7 +42,7 @@ To use the local proxy in Go builds, you can set the proxy as environment variab ```nix { environment.variables = { - GOPROXY = "http://localhost:3000" + GOPROXY = "http://localhost:3000"; }; } ``` diff --git a/nixos/modules/services/development/livebook.md b/nixos/modules/services/development/livebook.md index 3a3d9584675b..aac9c58d081c 100644 --- a/nixos/modules/services/development/livebook.md +++ b/nixos/modules/services/development/livebook.md @@ -52,5 +52,7 @@ learning Kinos require `gcc` and `gnumake`. To add these, use `extraPackages`: ```nix -services.livebook.extraPackages = with pkgs; [ gcc gnumake ]; +{ + services.livebook.extraPackages = with pkgs; [ gcc gnumake ]; +} ``` diff --git a/nixos/modules/services/editors/emacs.md b/nixos/modules/services/editors/emacs.md index 9164ee2adcb5..885f927422bd 100644 --- a/nixos/modules/services/editors/emacs.md +++ b/nixos/modules/services/editors/emacs.md @@ -242,7 +242,7 @@ let rm $out/share/applications/emacs.desktop ''; }); -in [...] +in [ /* ... */ ] ``` ::: @@ -263,7 +263,9 @@ with the user's login session. To install and enable the {command}`systemd` user service for Emacs daemon, add the following to your {file}`configuration.nix`: ```nix -services.emacs.enable = true; +{ + services.emacs.enable = true; +} ``` The {var}`services.emacs.package` option allows a custom @@ -324,8 +326,10 @@ by symlinks in {file}`/etc/systemd/user`. In the case where Emacs daemon is not wanted for all users, it is possible to install the service but not globally enable it: ```nix -services.emacs.enable = false; -services.emacs.install = true; +{ + services.emacs.enable = false; + services.emacs.install = true; +} ``` To enable the {command}`systemd` user service for just the diff --git a/nixos/modules/services/matrix/maubot.md b/nixos/modules/services/matrix/maubot.md index f6a05db56caf..d49066057a23 100644 --- a/nixos/modules/services/matrix/maubot.md +++ b/nixos/modules/services/matrix/maubot.md @@ -10,7 +10,9 @@ framework for Matrix. 2. If you want to use PostgreSQL instead of SQLite, do this: ```nix - services.maubot.settings.database = "postgresql://maubot@localhost/maubot"; + { + services.maubot.settings.database = "postgresql://maubot@localhost/maubot"; + } ``` If the PostgreSQL connection requires a password, you will have to @@ -18,54 +20,58 @@ framework for Matrix. 3. If you plan to expose your Maubot interface to the web, do something like this: ```nix - services.nginx.virtualHosts."matrix.example.org".locations = { - "/_matrix/maubot/" = { - proxyPass = "http://127.0.0.1:${toString config.services.maubot.settings.server.port}"; - proxyWebsockets = true; + { + services.nginx.virtualHosts."matrix.example.org".locations = { + "/_matrix/maubot/" = { + proxyPass = "http://127.0.0.1:${toString config.services.maubot.settings.server.port}"; + proxyWebsockets = true; + }; }; - }; - services.maubot.settings.server.public_url = "matrix.example.org"; - # do the following only if you want to use something other than /_matrix/maubot... - services.maubot.settings.server.ui_base_path = "/another/base/path"; + services.maubot.settings.server.public_url = "matrix.example.org"; + # do the following only if you want to use something other than /_matrix/maubot... + services.maubot.settings.server.ui_base_path = "/another/base/path"; + } ``` 4. Optionally, set `services.maubot.pythonPackages` to a list of python3 packages to make available for Maubot plugins. 5. Optionally, set `services.maubot.plugins` to a list of Maubot plugins (full list available at https://plugins.maubot.xyz/): ```nix - services.maubot.plugins = with config.services.maubot.package.plugins; [ - reactbot - # This will only change the default config! After you create a - # plugin instance, the default config will be copied into that - # instance's config in Maubot's database, and further base config - # changes won't affect the running plugin. - (rss.override { - base_config = { - update_interval = 60; - max_backoff = 7200; - spam_sleep = 2; - command_prefix = "rss"; - admins = [ "@chayleaf:pavluk.org" ]; - }; - }) - ]; - # ...or... - services.maubot.plugins = config.services.maubot.package.plugins.allOfficialPlugins; - # ...or... - services.maubot.plugins = config.services.maubot.package.plugins.allPlugins; - # ...or... - services.maubot.plugins = with config.services.maubot.package.plugins; [ - (weather.override { - # you can pass base_config as a string - base_config = '' - default_location: New York - default_units: M - default_language: - show_link: true - show_image: false - ''; - }) - ]; + { + services.maubot.plugins = with config.services.maubot.package.plugins; [ + reactbot + # This will only change the default config! After you create a + # plugin instance, the default config will be copied into that + # instance's config in Maubot's database, and further base config + # changes won't affect the running plugin. + (rss.override { + base_config = { + update_interval = 60; + max_backoff = 7200; + spam_sleep = 2; + command_prefix = "rss"; + admins = [ "@chayleaf:pavluk.org" ]; + }; + }) + ]; + # ...or... + services.maubot.plugins = config.services.maubot.package.plugins.allOfficialPlugins; + # ...or... + services.maubot.plugins = config.services.maubot.package.plugins.allPlugins; + # ...or... + services.maubot.plugins = with config.services.maubot.package.plugins; [ + (weather.override { + # you can pass base_config as a string + base_config = '' + default_location: New York + default_units: M + default_language: + show_link: true + show_image: false + ''; + }) + ]; + } ``` 6. Start Maubot at least once before doing the following steps (it's necessary to generate the initial config). diff --git a/nixos/modules/services/misc/forgejo.md b/nixos/modules/services/misc/forgejo.md index 14b21933e6b0..f234ebf44aef 100644 --- a/nixos/modules/services/misc/forgejo.md +++ b/nixos/modules/services/misc/forgejo.md @@ -57,23 +57,25 @@ locations and database, instead of having to copy or rename them. Make sure to disable `services.gitea`, when doing this. ```nix -services.gitea.enable = false; +{ + services.gitea.enable = false; -services.forgejo = { - enable = true; - user = "gitea"; - group = "gitea"; - stateDir = "/var/lib/gitea"; - database.name = "gitea"; - database.user = "gitea"; -}; + services.forgejo = { + enable = true; + user = "gitea"; + group = "gitea"; + stateDir = "/var/lib/gitea"; + database.name = "gitea"; + database.user = "gitea"; + }; -users.users.gitea = { - home = "/var/lib/gitea"; - useDefaultShell = true; - group = "gitea"; - isSystemUser = true; -}; + users.users.gitea = { + home = "/var/lib/gitea"; + useDefaultShell = true; + group = "gitea"; + isSystemUser = true; + }; -users.groups.gitea = {}; + users.groups.gitea = {}; +} ``` diff --git a/nixos/modules/services/misc/gitlab.md b/nixos/modules/services/misc/gitlab.md index ea1b95607c63..f7a5a8027489 100644 --- a/nixos/modules/services/misc/gitlab.md +++ b/nixos/modules/services/misc/gitlab.md @@ -11,18 +11,20 @@ configure a webserver to proxy HTTP requests to the socket. For instance, the following configuration could be used to use nginx as frontend proxy: ```nix -services.nginx = { - enable = true; - recommendedGzipSettings = true; - recommendedOptimisation = true; - recommendedProxySettings = true; - recommendedTlsSettings = true; - virtualHosts."git.example.com" = { - enableACME = true; - forceSSL = true; - locations."/".proxyPass = "http://unix:/run/gitlab/gitlab-workhorse.socket"; +{ + services.nginx = { + enable = true; + recommendedGzipSettings = true; + recommendedOptimisation = true; + recommendedProxySettings = true; + recommendedTlsSettings = true; + virtualHosts."git.example.com" = { + enableACME = true; + forceSSL = true; + locations."/".proxyPass = "http://unix:/run/gitlab/gitlab-workhorse.socket"; + }; }; -}; +} ``` ## Configuring {#module-services-gitlab-configuring} @@ -36,35 +38,37 @@ all data like the repositories and uploads will be stored. A basic configuration with some custom settings could look like this: ```nix -services.gitlab = { - enable = true; - databasePasswordFile = "/var/keys/gitlab/db_password"; - initialRootPasswordFile = "/var/keys/gitlab/root_password"; - https = true; - host = "git.example.com"; - port = 443; - user = "git"; - group = "git"; - smtp = { +{ + services.gitlab = { enable = true; - address = "localhost"; - port = 25; - }; - secrets = { - dbFile = "/var/keys/gitlab/db"; - secretFile = "/var/keys/gitlab/secret"; - otpFile = "/var/keys/gitlab/otp"; - jwsFile = "/var/keys/gitlab/jws"; - }; - extraConfig = { - gitlab = { - email_from = "gitlab-no-reply@example.com"; - email_display_name = "Example GitLab"; - email_reply_to = "gitlab-no-reply@example.com"; - default_projects_features = { builds = false; }; + databasePasswordFile = "/var/keys/gitlab/db_password"; + initialRootPasswordFile = "/var/keys/gitlab/root_password"; + https = true; + host = "git.example.com"; + port = 443; + user = "git"; + group = "git"; + smtp = { + enable = true; + address = "localhost"; + port = 25; + }; + secrets = { + dbFile = "/var/keys/gitlab/db"; + secretFile = "/var/keys/gitlab/secret"; + otpFile = "/var/keys/gitlab/otp"; + jwsFile = "/var/keys/gitlab/jws"; + }; + extraConfig = { + gitlab = { + email_from = "gitlab-no-reply@example.com"; + email_display_name = "Example GitLab"; + email_reply_to = "gitlab-no-reply@example.com"; + default_projects_features = { builds = false; }; + }; }; }; -}; +} ``` If you're setting up a new GitLab instance, generate new diff --git a/nixos/modules/services/misc/sourcehut/default.md b/nixos/modules/services/misc/sourcehut/default.md index 5f841833a954..f965c395038a 100644 --- a/nixos/modules/services/misc/sourcehut/default.md +++ b/nixos/modules/services/misc/sourcehut/default.md @@ -66,9 +66,9 @@ in { # Settings to setup what certificates are used for which endpoint. virtualHosts = { "${fqdn}".enableACME = true; - "meta.${fqdn}".useACMEHost = fqdn: - "man.${fqdn}".useACMEHost = fqdn: - "git.${fqdn}".useACMEHost = fqdn: + "meta.${fqdn}".useACMEHost = fqdn; + "man.${fqdn}".useACMEHost = fqdn; + "git.${fqdn}".useACMEHost = fqdn; }; }; } diff --git a/nixos/modules/services/monitoring/certspotter.md b/nixos/modules/services/monitoring/certspotter.md index 9bf6e1d946a0..e999bfe65ec3 100644 --- a/nixos/modules/services/monitoring/certspotter.md +++ b/nixos/modules/services/monitoring/certspotter.md @@ -9,17 +9,19 @@ A basic config that notifies you of all certificate changes for your domain would look as follows: ```nix -services.certspotter = { - enable = true; - # replace example.org with your domain name - watchlist = [ ".example.org" ]; - emailRecipients = [ "webmaster@example.org" ]; -}; +{ + services.certspotter = { + enable = true; + # replace example.org with your domain name + watchlist = [ ".example.org" ]; + emailRecipients = [ "webmaster@example.org" ]; + }; -# Configure an SMTP client -programs.msmtp.enable = true; -# Or you can use any other module that provides sendmail, like -# services.nullmailer, services.opensmtpd, services.postfix + # Configure an SMTP client + programs.msmtp.enable = true; + # Or you can use any other module that provides sendmail, like + # services.nullmailer, services.opensmtpd, services.postfix +} ``` In this case, the leading dot in `".example.org"` means that Cert @@ -59,16 +61,18 @@ For example, you can remove `emailRecipients` and send email notifications manually using the following hook: ```nix -services.certspotter.hooks = [ - (pkgs.writeShellScript "certspotter-hook" '' - function print_email() { - echo "Subject: [certspotter] $SUMMARY" - echo "Mime-Version: 1.0" - echo "Content-Type: text/plain; charset=US-ASCII" - echo - cat "$TEXT_FILENAME" - } - print_email | ${config.services.certspotter.sendmailPath} -i webmaster@example.org - '') -]; +{ + services.certspotter.hooks = [ + (pkgs.writeShellScript "certspotter-hook" '' + function print_email() { + echo "Subject: [certspotter] $SUMMARY" + echo "Mime-Version: 1.0" + echo "Content-Type: text/plain; charset=US-ASCII" + echo + cat "$TEXT_FILENAME" + } + print_email | ${config.services.certspotter.sendmailPath} -i webmaster@example.org + '') + ]; +} ``` diff --git a/nixos/modules/services/monitoring/parsedmarc.md b/nixos/modules/services/monitoring/parsedmarc.md index eac07e0cc9fe..765846bbbaf3 100644 --- a/nixos/modules/services/monitoring/parsedmarc.md +++ b/nixos/modules/services/monitoring/parsedmarc.md @@ -11,15 +11,17 @@ email address and saves them to a local Elasticsearch instance looks like this: ```nix -services.parsedmarc = { - enable = true; - settings.imap = { - host = "imap.example.com"; - user = "alice@example.com"; - password = "/path/to/imap_password_file"; +{ + services.parsedmarc = { + enable = true; + settings.imap = { + host = "imap.example.com"; + user = "alice@example.com"; + password = "/path/to/imap_password_file"; + }; + provision.geoIp = false; # Not recommended! }; - provision.geoIp = false; # Not recommended! -}; +} ``` Note that GeoIP provisioning is disabled in the example for @@ -37,16 +39,18 @@ configured in the domain's dmarc policy is `dmarc@monitoring.example.com`. ```nix -services.parsedmarc = { - enable = true; - provision = { - localMail = { - enable = true; - hostname = monitoring.example.com; +{ + services.parsedmarc = { + enable = true; + provision = { + localMail = { + enable = true; + hostname = monitoring.example.com; + }; + geoIp = false; # Not recommended! }; - geoIp = false; # Not recommended! }; -}; +} ``` ## Grafana and GeoIP {#module-services-parsedmarc-grafana-geoip} @@ -58,55 +62,57 @@ is automatically added as a Grafana datasource, and the dashboard is added to Grafana as well. ```nix -services.parsedmarc = { - enable = true; - provision = { - localMail = { - enable = true; - hostname = url; - }; - grafana = { - datasource = true; - dashboard = true; +{ + services.parsedmarc = { + enable = true; + provision = { + localMail = { + enable = true; + hostname = url; + }; + grafana = { + datasource = true; + dashboard = true; + }; }; }; -}; -# Not required, but recommended for full functionality -services.geoipupdate = { - settings = { - AccountID = 000000; - LicenseKey = "/path/to/license_key_file"; + # Not required, but recommended for full functionality + services.geoipupdate = { + settings = { + AccountID = 000000; + LicenseKey = "/path/to/license_key_file"; + }; }; -}; -services.grafana = { - enable = true; - addr = "0.0.0.0"; - domain = url; - rootUrl = "https://" + url; - protocol = "socket"; - security = { - adminUser = "admin"; - adminPasswordFile = "/path/to/admin_password_file"; - secretKeyFile = "/path/to/secret_key_file"; + services.grafana = { + enable = true; + addr = "0.0.0.0"; + domain = url; + rootUrl = "https://" + url; + protocol = "socket"; + security = { + adminUser = "admin"; + adminPasswordFile = "/path/to/admin_password_file"; + secretKeyFile = "/path/to/secret_key_file"; + }; }; -}; -services.nginx = { - enable = true; - recommendedTlsSettings = true; - recommendedOptimisation = true; - recommendedGzipSettings = true; - recommendedProxySettings = true; - upstreams.grafana.servers."unix:/${config.services.grafana.socket}" = {}; - virtualHosts.${url} = { - root = config.services.grafana.staticRootPath; - enableACME = true; - forceSSL = true; - locations."/".tryFiles = "$uri @grafana"; - locations."@grafana".proxyPass = "http://grafana"; + services.nginx = { + enable = true; + recommendedTlsSettings = true; + recommendedOptimisation = true; + recommendedGzipSettings = true; + recommendedProxySettings = true; + upstreams.grafana.servers."unix:/${config.services.grafana.socket}" = {}; + virtualHosts.${url} = { + root = config.services.grafana.staticRootPath; + enableACME = true; + forceSSL = true; + locations."/".tryFiles = "$uri @grafana"; + locations."@grafana".proxyPass = "http://grafana"; + }; }; -}; -users.users.nginx.extraGroups = [ "grafana" ]; + users.users.nginx.extraGroups = [ "grafana" ]; +} ``` diff --git a/nixos/modules/services/monitoring/prometheus/exporters.md b/nixos/modules/services/monitoring/prometheus/exporters.md index 84de17789601..b344534f6aee 100644 --- a/nixos/modules/services/monitoring/prometheus/exporters.md +++ b/nixos/modules/services/monitoring/prometheus/exporters.md @@ -10,6 +10,7 @@ One of the most common exporters is the it provides hardware and OS metrics from the host it's running on. The exporter could be configured as follows: ```nix +{ services.prometheus.exporters.node = { enable = true; port = 9100; @@ -23,6 +24,7 @@ running on. The exporter could be configured as follows: openFirewall = true; firewallFilter = "-i br0 -p tcp -m tcp --dport 9100"; }; +} ``` It should now serve all metrics from the collectors that are explicitly enabled and the ones that are @@ -36,6 +38,7 @@ the [available options](https://nixos.org/nixos/options.html#prometheus.exporter Prometheus can now be configured to consume the metrics produced by the exporter: ```nix +{ services.prometheus = { # ... @@ -49,7 +52,8 @@ Prometheus can now be configured to consume the metrics produced by the exporter ]; # ... - } + }; +} ``` ## Adding a new exporter {#module-services-prometheus-exporters-new-exporter} diff --git a/nixos/modules/services/networking/firefox-syncserver.md b/nixos/modules/services/networking/firefox-syncserver.md index 4d8777d204bb..f6b515e67f15 100644 --- a/nixos/modules/services/networking/firefox-syncserver.md +++ b/nixos/modules/services/networking/firefox-syncserver.md @@ -7,19 +7,21 @@ A storage server for Firefox Sync that you can easily host yourself. The absolute minimal configuration for the sync server looks like this: ```nix -services.mysql.package = pkgs.mariadb; +{ + services.mysql.package = pkgs.mariadb; -services.firefox-syncserver = { - enable = true; - secrets = builtins.toFile "sync-secrets" '' - SYNC_MASTER_SECRET=this-secret-is-actually-leaked-to-/nix/store - ''; - singleNode = { + services.firefox-syncserver = { enable = true; - hostname = "localhost"; - url = "http://localhost:5000"; + secrets = builtins.toFile "sync-secrets" '' + SYNC_MASTER_SECRET=this-secret-is-actually-leaked-to-/nix/store + ''; + singleNode = { + enable = true; + hostname = "localhost"; + url = "http://localhost:5000"; + }; }; -}; +} ``` This will start a sync server that is only accessible locally. Once the services is diff --git a/nixos/modules/services/networking/mosquitto.md b/nixos/modules/services/networking/mosquitto.md index 5cdb598151e5..66b3ad6cfa8f 100644 --- a/nixos/modules/services/networking/mosquitto.md +++ b/nixos/modules/services/networking/mosquitto.md @@ -7,14 +7,16 @@ Mosquitto is a MQTT broker often used for IoT or home automation data transport. A minimal configuration for Mosquitto is ```nix -services.mosquitto = { - enable = true; - listeners = [ { - acl = [ "pattern readwrite #" ]; - omitPasswordAuth = true; - settings.allow_anonymous = true; - } ]; -}; +{ + services.mosquitto = { + enable = true; + listeners = [ { + acl = [ "pattern readwrite #" ]; + omitPasswordAuth = true; + settings.allow_anonymous = true; + } ]; + }; +} ``` This will start a broker on port 1883, listening on all interfaces of the machine, allowing @@ -25,37 +27,42 @@ full read access to a user `monitor` and restricted write access to a user `serv like ```nix -services.mosquitto = { - enable = true; - listeners = [ { - users = { - monitor = { - acl = [ "read #" ]; - password = "monitor"; +{ + services.mosquitto = { + enable = true; + listeners = [ { + users = { + monitor = { + acl = [ "read #" ]; + password = "monitor"; + }; + service = { + acl = [ "write service/#" ]; + password = "service"; + }; }; - service = { - acl = [ "write service/#" ]; - password = "service"; - }; - }; - } ]; -}; + } ]; + }; +} ``` TLS authentication is configured by setting TLS-related options of the listener: ```nix -services.mosquitto = { - enable = true; - listeners = [ { - port = 8883; # port change is not required, but helpful to avoid mistakes - # ... - settings = { - cafile = "/path/to/mqtt.ca.pem"; - certfile = "/path/to/mqtt.pem"; - keyfile = "/path/to/mqtt.key"; - }; - } ]; +{ + services.mosquitto = { + enable = true; + listeners = [ { + port = 8883; # port change is not required, but helpful to avoid mistakes + # ... + settings = { + cafile = "/path/to/mqtt.ca.pem"; + certfile = "/path/to/mqtt.pem"; + keyfile = "/path/to/mqtt.key"; + }; + } ]; + }; +} ``` ## Configuration {#module-services-mosquitto-config} diff --git a/nixos/modules/services/networking/netbird.md b/nixos/modules/services/networking/netbird.md index a326207becc8..e1f6753cbd30 100644 --- a/nixos/modules/services/networking/netbird.md +++ b/nixos/modules/services/networking/netbird.md @@ -5,7 +5,9 @@ The absolute minimal configuration for the netbird daemon looks like this: ```nix -services.netbird.enable = true; +{ + services.netbird.enable = true; +} ``` This will set up a netbird service listening on the port `51820` associated to the @@ -14,7 +16,9 @@ This will set up a netbird service listening on the port `51820` associated to t It is strictly equivalent to setting: ```nix -services.netbird.tunnels.wt0.stateDir = "netbird"; +{ + services.netbird.tunnels.wt0.stateDir = "netbird"; +} ``` The `enable` option is mainly kept for backward compatibility, as defining netbird @@ -29,11 +33,13 @@ The following configuration will start a netbird daemon using the interface `wt1 the port 51830. Its configuration file will then be located at `/var/lib/netbird-wt1/config.json`. ```nix -services.netbird.tunnels = { - wt1 = { - port = 51830; +{ + services.netbird.tunnels = { + wt1 = { + port = 51830; + }; }; -}; +} ``` To interact with it, you will need to specify the correct daemon address: @@ -48,9 +54,11 @@ It is also possible to overwrite default options passed to the service, for example: ```nix -services.netbird.tunnels.wt1.environment = { - NB_DAEMON_ADDR = "unix:///var/run/toto.sock" -}; +{ + services.netbird.tunnels.wt1.environment = { + NB_DAEMON_ADDR = "unix:///var/run/toto.sock"; + }; +} ``` This will set the socket to interact with the netbird service to `/var/run/toto.sock`. diff --git a/nixos/modules/services/networking/pleroma.md b/nixos/modules/services/networking/pleroma.md index 4fb3996b70e8..c2313fd63e6a 100644 --- a/nixos/modules/services/networking/pleroma.md +++ b/nixos/modules/services/networking/pleroma.md @@ -18,10 +18,12 @@ The `config.exs` file can be further customized following the instructions on th First, the Postgresql service must be enabled in the NixOS configuration ```nix -services.postgresql = { - enable = true; - package = pkgs.postgresql_13; -}; +{ + services.postgresql = { + enable = true; + package = pkgs.postgresql_13; + }; +} ``` and activated with the usual ```ShellSession @@ -39,42 +41,44 @@ In this section we will enable the Pleroma service only locally, so its configur This is an example of configuration, where [](#opt-services.pleroma.configs) option contains the content of the file `config.exs`, generated [in the first section](#module-services-pleroma-generate-config), but with the secrets (database password, endpoint secret key, salts, etc.) removed. Removing secrets is important, because otherwise they will be stored publicly in the Nix store. ```nix -services.pleroma = { - enable = true; - secretConfigFile = "/var/lib/pleroma/secrets.exs"; - configs = [ - '' - import Config +{ + services.pleroma = { + enable = true; + secretConfigFile = "/var/lib/pleroma/secrets.exs"; + configs = [ + '' + import Config - config :pleroma, Pleroma.Web.Endpoint, - url: [host: "pleroma.example.net", scheme: "https", port: 443], - http: [ip: {127, 0, 0, 1}, port: 4000] + config :pleroma, Pleroma.Web.Endpoint, + url: [host: "pleroma.example.net", scheme: "https", port: 443], + http: [ip: {127, 0, 0, 1}, port: 4000] - config :pleroma, :instance, - name: "Test", - email: "admin@example.net", - notify_email: "admin@example.net", - limit: 5000, - registrations_open: true + config :pleroma, :instance, + name: "Test", + email: "admin@example.net", + notify_email: "admin@example.net", + limit: 5000, + registrations_open: true - config :pleroma, :media_proxy, - enabled: false, - redirect_on_failure: true + config :pleroma, :media_proxy, + enabled: false, + redirect_on_failure: true - config :pleroma, Pleroma.Repo, - adapter: Ecto.Adapters.Postgres, - username: "pleroma", - database: "pleroma", - hostname: "localhost" + config :pleroma, Pleroma.Repo, + adapter: Ecto.Adapters.Postgres, + username: "pleroma", + database: "pleroma", + hostname: "localhost" - # Configure web push notifications - config :web_push_encryption, :vapid_details, - subject: "mailto:admin@example.net" + # Configure web push notifications + config :web_push_encryption, :vapid_details, + subject: "mailto:admin@example.net" - # ... TO CONTINUE ... - '' - ]; -}; + # ... TO CONTINUE ... + '' + ]; + }; +} ``` Secrets must be moved into a file pointed by [](#opt-services.pleroma.secretConfigFile), in our case `/var/lib/pleroma/secrets.exs`. This file can be created copying the previously generated `config.exs` file and then removing all the settings, except the secrets. This is an example @@ -122,59 +126,61 @@ $ pleroma_ctl user new --admin --moderator --password $out/static/config.json -''; + rm $out/static/config.json + jq -s add ${pkgs.akkoma-frontends.akkoma-fe}/static/config.json ${config} \ + >$out/static/config.json + ''; +} ``` ## Federation policies {#modules-services-akkoma-federation-policies} @@ -198,28 +210,30 @@ of the fediverse and providing a pleasant experience to the users of an instance ```nix -services.akkoma.config.":pleroma" = with (pkgs.formats.elixirConf { }).lib; { - ":mrf".policies = map mkRaw [ - "Pleroma.Web.ActivityPub.MRF.SimplePolicy" - ]; +{ + services.akkoma.config.":pleroma" = with (pkgs.formats.elixirConf { }).lib; { + ":mrf".policies = map mkRaw [ + "Pleroma.Web.ActivityPub.MRF.SimplePolicy" + ]; - ":mrf_simple" = { - # Tag all media as sensitive - media_nsfw = mkMap { - "nsfw.weird.kinky" = "Untagged NSFW content"; - }; + ":mrf_simple" = { + # Tag all media as sensitive + media_nsfw = mkMap { + "nsfw.weird.kinky" = "Untagged NSFW content"; + }; - # Reject all activities except deletes - reject = mkMap { - "kiwifarms.cc" = "Persistent harassment of users, no moderation"; - }; + # Reject all activities except deletes + reject = mkMap { + "kiwifarms.cc" = "Persistent harassment of users, no moderation"; + }; - # Force posts to be visible by followers only - followers_only = mkMap { - "beta.birdsite.live" = "Avoid polluting timelines with Twitter posts"; + # Force posts to be visible by followers only + followers_only = mkMap { + "beta.birdsite.live" = "Avoid polluting timelines with Twitter posts"; + }; }; }; -}; +} ``` ## Upload filters {#modules-services-akkoma-upload-filters} @@ -228,12 +242,14 @@ This example strips GPS and location metadata from uploads, deduplicates them an the file name. ```nix -services.akkoma.config.":pleroma"."Pleroma.Upload".filters = - map (pkgs.formats.elixirConf { }).lib.mkRaw [ - "Pleroma.Upload.Filter.Exiftool" - "Pleroma.Upload.Filter.Dedupe" - "Pleroma.Upload.Filter.AnonymizeFilename" - ]; +{ + services.akkoma.config.":pleroma"."Pleroma.Upload".filters = + map (pkgs.formats.elixirConf { }).lib.mkRaw [ + "Pleroma.Upload.Filter.Exiftool" + "Pleroma.Upload.Filter.Dedupe" + "Pleroma.Upload.Filter.AnonymizeFilename" + ]; +} ``` ## Migration from Pleroma {#modules-services-akkoma-migration-pleroma} @@ -286,9 +302,11 @@ To re‐use the Pleroma data in place, disable Pleroma and enable Akkoma, pointi Pleroma database and upload directory. ```nix -# Adjust these settings according to the database name and upload directory path used by Pleroma -services.akkoma.config.":pleroma"."Pleroma.Repo".database = "pleroma"; -services.akkoma.config.":pleroma".":instance".upload_dir = "/var/lib/pleroma/uploads"; +{ + # Adjust these settings according to the database name and upload directory path used by Pleroma + services.akkoma.config.":pleroma"."Pleroma.Repo".database = "pleroma"; + services.akkoma.config.":pleroma".":instance".upload_dir = "/var/lib/pleroma/uploads"; +} ``` Please keep in mind that after the Akkoma service has been started, any migrations applied by @@ -304,7 +322,9 @@ details. The Akkoma systemd service may be confined to a chroot with ```nix -services.systemd.akkoma.confinement.enable = true; +{ + services.systemd.akkoma.confinement.enable = true; +} ``` Confinement of services is not generally supported in NixOS and therefore disabled by default. diff --git a/nixos/modules/services/web-apps/discourse.md b/nixos/modules/services/web-apps/discourse.md index 799a01c6ff5b..d4b9c93c4ead 100644 --- a/nixos/modules/services/web-apps/discourse.md +++ b/nixos/modules/services/web-apps/discourse.md @@ -7,19 +7,21 @@ modern and open source discussion platform. A minimal configuration using Let's Encrypt for TLS certificates looks like this: ```nix -services.discourse = { - enable = true; - hostname = "discourse.example.com"; - admin = { - email = "admin@example.com"; - username = "admin"; - fullName = "Administrator"; - passwordFile = "/path/to/password_file"; +{ + services.discourse = { + enable = true; + hostname = "discourse.example.com"; + admin = { + email = "admin@example.com"; + username = "admin"; + fullName = "Administrator"; + passwordFile = "/path/to/password_file"; + }; + secretKeyBaseFile = "/path/to/secret_key_base_file"; }; - secretKeyBaseFile = "/path/to/secret_key_base_file"; -}; -security.acme.email = "me@example.com"; -security.acme.acceptTerms = true; + security.acme.email = "me@example.com"; + security.acme.acceptTerms = true; +} ``` Provided a proper DNS setup, you'll be able to connect to the @@ -35,19 +37,21 @@ and [](#opt-services.discourse.sslCertificateKey) options: ```nix -services.discourse = { - enable = true; - hostname = "discourse.example.com"; - sslCertificate = "/path/to/ssl_certificate"; - sslCertificateKey = "/path/to/ssl_certificate_key"; - admin = { - email = "admin@example.com"; - username = "admin"; - fullName = "Administrator"; - passwordFile = "/path/to/password_file"; +{ + services.discourse = { + enable = true; + hostname = "discourse.example.com"; + sslCertificate = "/path/to/ssl_certificate"; + sslCertificateKey = "/path/to/ssl_certificate_key"; + admin = { + email = "admin@example.com"; + username = "admin"; + fullName = "Administrator"; + passwordFile = "/path/to/password_file"; + }; + secretKeyBaseFile = "/path/to/secret_key_base_file"; }; - secretKeyBaseFile = "/path/to/secret_key_base_file"; -}; +} ``` ## Database access {#module-services-discourse-database} @@ -81,26 +85,28 @@ A basic setup which assumes you want to use your configured email domain can be done like this: ```nix -services.discourse = { - enable = true; - hostname = "discourse.example.com"; - sslCertificate = "/path/to/ssl_certificate"; - sslCertificateKey = "/path/to/ssl_certificate_key"; - admin = { - email = "admin@example.com"; - username = "admin"; - fullName = "Administrator"; - passwordFile = "/path/to/password_file"; +{ + services.discourse = { + enable = true; + hostname = "discourse.example.com"; + sslCertificate = "/path/to/ssl_certificate"; + sslCertificateKey = "/path/to/ssl_certificate_key"; + admin = { + email = "admin@example.com"; + username = "admin"; + fullName = "Administrator"; + passwordFile = "/path/to/password_file"; + }; + mail.outgoing = { + serverAddress = "smtp.emailprovider.com"; + port = 587; + username = "user@emailprovider.com"; + passwordFile = "/path/to/smtp_password_file"; + }; + mail.incoming.enable = true; + secretKeyBaseFile = "/path/to/secret_key_base_file"; }; - mail.outgoing = { - serverAddress = "smtp.emailprovider.com"; - port = 587; - username = "user@emailprovider.com"; - passwordFile = "/path/to/smtp_password_file"; - }; - mail.incoming.enable = true; - secretKeyBaseFile = "/path/to/secret_key_base_file"; -}; +} ``` This assumes you have set up an MX record for the address you've @@ -163,43 +169,45 @@ Discourse instance and enables GitHub login in the site settings, and changes a few request limits in the backend settings: ```nix -services.discourse = { - enable = true; - hostname = "discourse.example.com"; - sslCertificate = "/path/to/ssl_certificate"; - sslCertificateKey = "/path/to/ssl_certificate_key"; - admin = { - email = "admin@example.com"; - username = "admin"; - fullName = "Administrator"; - passwordFile = "/path/to/password_file"; - }; - mail.outgoing = { - serverAddress = "smtp.emailprovider.com"; - port = 587; - username = "user@emailprovider.com"; - passwordFile = "/path/to/smtp_password_file"; - }; - mail.incoming.enable = true; - siteSettings = { - required = { - title = "My Cats"; - site_description = "Discuss My Cats (and be nice plz)"; +{ + services.discourse = { + enable = true; + hostname = "discourse.example.com"; + sslCertificate = "/path/to/ssl_certificate"; + sslCertificateKey = "/path/to/ssl_certificate_key"; + admin = { + email = "admin@example.com"; + username = "admin"; + fullName = "Administrator"; + passwordFile = "/path/to/password_file"; }; - login = { - enable_github_logins = true; - github_client_id = "a2f6dfe838cb3206ce20"; - github_client_secret._secret = /run/keys/discourse_github_client_secret; + mail.outgoing = { + serverAddress = "smtp.emailprovider.com"; + port = 587; + username = "user@emailprovider.com"; + passwordFile = "/path/to/smtp_password_file"; }; + mail.incoming.enable = true; + siteSettings = { + required = { + title = "My Cats"; + site_description = "Discuss My Cats (and be nice plz)"; + }; + login = { + enable_github_logins = true; + github_client_id = "a2f6dfe838cb3206ce20"; + github_client_secret._secret = /run/keys/discourse_github_client_secret; + }; + }; + backendSettings = { + max_reqs_per_ip_per_minute = 300; + max_reqs_per_ip_per_10_seconds = 60; + max_asset_reqs_per_ip_per_10_seconds = 250; + max_reqs_per_ip_mode = "warn+block"; + }; + secretKeyBaseFile = "/path/to/secret_key_base_file"; }; - backendSettings = { - max_reqs_per_ip_per_minute = 300; - max_reqs_per_ip_per_10_seconds = 60; - max_asset_reqs_per_ip_per_10_seconds = 250; - max_reqs_per_ip_mode = "warn+block"; - }; - secretKeyBaseFile = "/path/to/secret_key_base_file"; -}; +} ``` In the resulting site settings file, the @@ -254,33 +262,35 @@ plugins, and disable `discourse-spoiler-alert` by default: ```nix -services.discourse = { - enable = true; - hostname = "discourse.example.com"; - sslCertificate = "/path/to/ssl_certificate"; - sslCertificateKey = "/path/to/ssl_certificate_key"; - admin = { - email = "admin@example.com"; - username = "admin"; - fullName = "Administrator"; - passwordFile = "/path/to/password_file"; - }; - mail.outgoing = { - serverAddress = "smtp.emailprovider.com"; - port = 587; - username = "user@emailprovider.com"; - passwordFile = "/path/to/smtp_password_file"; - }; - mail.incoming.enable = true; - plugins = with config.services.discourse.package.plugins; [ - discourse-spoiler-alert - discourse-solved - ]; - siteSettings = { - plugins = { - spoiler_enabled = false; +{ + services.discourse = { + enable = true; + hostname = "discourse.example.com"; + sslCertificate = "/path/to/ssl_certificate"; + sslCertificateKey = "/path/to/ssl_certificate_key"; + admin = { + email = "admin@example.com"; + username = "admin"; + fullName = "Administrator"; + passwordFile = "/path/to/password_file"; }; + mail.outgoing = { + serverAddress = "smtp.emailprovider.com"; + port = 587; + username = "user@emailprovider.com"; + passwordFile = "/path/to/smtp_password_file"; + }; + mail.incoming.enable = true; + plugins = with config.services.discourse.package.plugins; [ + discourse-spoiler-alert + discourse-solved + ]; + siteSettings = { + plugins = { + spoiler_enabled = false; + }; + }; + secretKeyBaseFile = "/path/to/secret_key_base_file"; }; - secretKeyBaseFile = "/path/to/secret_key_base_file"; -}; +} ``` diff --git a/nixos/modules/services/web-apps/gotosocial.md b/nixos/modules/services/web-apps/gotosocial.md index a290d7d1893a..b3540f0d5811 100644 --- a/nixos/modules/services/web-apps/gotosocial.md +++ b/nixos/modules/services/web-apps/gotosocial.md @@ -8,17 +8,19 @@ The following configuration sets up the PostgreSQL as database backend and binds GoToSocial to `127.0.0.1:8080`, expecting to be run behind a HTTP proxy on `gotosocial.example.com`. ```nix -services.gotosocial = { - enable = true; - setupPostgresqlDB = true; - settings = { - application-name = "My GoToSocial"; - host = "gotosocial.example.com"; - protocol = "https"; - bind-address = "127.0.0.1"; - port = 8080; +{ + services.gotosocial = { + enable = true; + setupPostgresqlDB = true; + settings = { + application-name = "My GoToSocial"; + host = "gotosocial.example.com"; + protocol = "https"; + bind-address = "127.0.0.1"; + port = 8080; + }; }; -}; +} ``` Please refer to the [GoToSocial Documentation](https://docs.gotosocial.org/en/latest/configuration/general/) @@ -30,24 +32,26 @@ Although it is possible to expose GoToSocial directly, it is common practice to HTTP reverse proxy such as nginx. ```nix -networking.firewall.allowedTCPPorts = [ 80 443 ]; -services.nginx = { - enable = true; - clientMaxBodySize = "40M"; - virtualHosts = with config.services.gotosocial.settings; { - "${host}" = { - enableACME = true; - forceSSL = true; - locations = { - "/" = { - recommendedProxySettings = true; - proxyWebsockets = true; - proxyPass = "http://${bind-address}:${toString port}"; +{ + networking.firewall.allowedTCPPorts = [ 80 443 ]; + services.nginx = { + enable = true; + clientMaxBodySize = "40M"; + virtualHosts = with config.services.gotosocial.settings; { + "${host}" = { + enableACME = true; + forceSSL = true; + locations = { + "/" = { + recommendedProxySettings = true; + proxyWebsockets = true; + proxyPass = "http://${bind-address}:${toString port}"; + }; }; }; }; }; -}; +} ``` Please refer to [](#module-security-acme) for details on how to provision an SSL/TLS certificate. diff --git a/nixos/modules/services/web-apps/keycloak.md b/nixos/modules/services/web-apps/keycloak.md index 2ab6e96e5e6e..020bee400348 100644 --- a/nixos/modules/services/web-apps/keycloak.md +++ b/nixos/modules/services/web-apps/keycloak.md @@ -127,15 +127,17 @@ should be set to. See the description of A basic configuration with some custom settings could look like this: ```nix -services.keycloak = { - enable = true; - settings = { - hostname = "keycloak.example.com"; - hostname-strict-backchannel = true; +{ + services.keycloak = { + enable = true; + settings = { + hostname = "keycloak.example.com"; + hostname-strict-backchannel = true; + }; + initialAdminPassword = "e6Wcm0RrtegMEHl"; # change on first login + sslCertificate = "/run/keys/ssl_cert"; + sslCertificateKey = "/run/keys/ssl_key"; + database.passwordFile = "/run/keys/db_password"; }; - initialAdminPassword = "e6Wcm0RrtegMEHl"; # change on first login - sslCertificate = "/run/keys/ssl_cert"; - sslCertificateKey = "/run/keys/ssl_key"; - database.passwordFile = "/run/keys/db_password"; -}; +} ``` diff --git a/nixos/modules/services/web-apps/lemmy.md b/nixos/modules/services/web-apps/lemmy.md index faafe096d138..0ed23607d00b 100644 --- a/nixos/modules/services/web-apps/lemmy.md +++ b/nixos/modules/services/web-apps/lemmy.md @@ -7,13 +7,15 @@ Lemmy is a federated alternative to reddit in rust. the minimum to start lemmy is ```nix -services.lemmy = { - enable = true; - settings = { - hostname = "lemmy.union.rocks"; - database.createLocally = true; +{ + services.lemmy = { + enable = true; + settings = { + hostname = "lemmy.union.rocks"; + database.createLocally = true; + }; + caddy.enable = true; }; - caddy.enable = true; } ``` diff --git a/nixos/modules/services/web-apps/pict-rs.md b/nixos/modules/services/web-apps/pict-rs.md index 2fa6bb3aebce..56c51e0d7259 100644 --- a/nixos/modules/services/web-apps/pict-rs.md +++ b/nixos/modules/services/web-apps/pict-rs.md @@ -7,7 +7,9 @@ pict-rs is a a simple image hosting service. the minimum to start pict-rs is ```nix -services.pict-rs.enable = true; +{ + services.pict-rs.enable = true; +} ``` this will start the http server on port 8080 by default. diff --git a/nixos/modules/services/web-apps/suwayomi-server.md b/nixos/modules/services/web-apps/suwayomi-server.md index 18e7a631443f..2185556a8721 100644 --- a/nixos/modules/services/web-apps/suwayomi-server.md +++ b/nixos/modules/services/web-apps/suwayomi-server.md @@ -100,7 +100,7 @@ Not all the configuration options are available directly in this module, but you server = { port = 4567; autoDownloadNewChapters = false; - maxSourcesInParallel" = 6; + maxSourcesInParallel = 6; extensionRepos = [ "https://raw.githubusercontent.com/MY_ACCOUNT/MY_REPO/repo/index.min.json" ]; diff --git a/nixos/modules/services/x11/desktop-managers/gnome.md b/nixos/modules/services/x11/desktop-managers/gnome.md index e0cfb03580db..2b4bd06df04f 100644 --- a/nixos/modules/services/x11/desktop-managers/gnome.md +++ b/nixos/modules/services/x11/desktop-managers/gnome.md @@ -9,8 +9,10 @@ All of the core apps, optional apps, games, and core developer tools from GNOME To enable the GNOME desktop use: ```nix -services.xserver.desktopManager.gnome.enable = true; -services.xserver.displayManager.gdm.enable = true; +{ + services.xserver.desktopManager.gnome.enable = true; + services.xserver.displayManager.gdm.enable = true; +} ``` ::: {.note} @@ -24,7 +26,9 @@ The default applications used in NixOS are very minimal, inspired by the default If you’d like to only use the GNOME desktop and not the apps, you can disable them with: ```nix -services.gnome.core-utilities.enable = false; +{ + services.gnome.core-utilities.enable = false; +} ``` and none of them will be installed. @@ -38,8 +42,10 @@ Note that this mechanism can only exclude core utilities, games and core develop It is also possible to disable many of the [core services](https://github.com/NixOS/nixpkgs/blob/b8ec4fd2a4edc4e30d02ba7b1a2cc1358f3db1d5/nixos/modules/services/x11/desktop-managers/gnome.nix#L329-L348). For example, if you do not need indexing files, you can disable Tracker with: ```nix -services.gnome.tracker-miners.enable = false; -services.gnome.tracker.enable = false; +{ + services.gnome.tracker-miners.enable = false; + services.gnome.tracker.enable = false; +} ``` Note, however, that doing so is not supported and might break some applications. Notably, GNOME Music cannot work without Tracker. @@ -49,7 +55,9 @@ Note, however, that doing so is not supported and might break some applications. You can install all of the GNOME games with: ```nix -services.gnome.games.enable = true; +{ + services.gnome.games.enable = true; +} ``` ### GNOME core developer tools {#sec-gnome-core-developer-tools} @@ -57,7 +65,9 @@ services.gnome.games.enable = true; You can install GNOME core developer tools with: ```nix -services.gnome.core-developer-tools.enable = true; +{ + services.gnome.core-developer-tools.enable = true; +} ``` ## Enabling GNOME Flashback {#sec-gnome-enable-flashback} @@ -65,7 +75,9 @@ services.gnome.core-developer-tools.enable = true; GNOME Flashback provides a desktop environment based on the classic GNOME 2 architecture. You can enable the default GNOME Flashback session, which uses the Metacity window manager, with: ```nix -services.xserver.desktopManager.gnome.flashback.enableMetacity = true; +{ + services.xserver.desktopManager.gnome.flashback.enableMetacity = true; +} ``` It is also possible to create custom sessions that replace Metacity with a different window manager using [](#opt-services.xserver.desktopManager.gnome.flashback.customSessions). @@ -73,14 +85,16 @@ It is also possible to create custom sessions that replace Metacity with a diffe The following example uses `xmonad` window manager: ```nix -services.xserver.desktopManager.gnome.flashback.customSessions = [ - { - wmName = "xmonad"; - wmLabel = "XMonad"; - wmCommand = "${pkgs.haskellPackages.xmonad}/bin/xmonad"; - enableGnomePanel = false; - } -]; +{ + services.xserver.desktopManager.gnome.flashback.customSessions = [ + { + wmName = "xmonad"; + wmLabel = "XMonad"; + wmCommand = "${pkgs.haskellPackages.xmonad}/bin/xmonad"; + enableGnomePanel = false; + } + ]; +} ``` ## Icons and GTK Themes {#sec-gnome-icons-and-gtk-themes} @@ -105,11 +119,13 @@ Some packages that include Shell extensions, like `gnome.gpaste`, don’t have t You can install them like any other package: ```nix -environment.systemPackages = [ - gnomeExtensions.dash-to-dock - gnomeExtensions.gsconnect - gnomeExtensions.mpris-indicator-button -]; +{ + environment.systemPackages = [ + gnomeExtensions.dash-to-dock + gnomeExtensions.gsconnect + gnomeExtensions.mpris-indicator-button + ]; +} ``` Unfortunately, we lack a way for these to be managed in a completely declarative way. @@ -137,22 +153,24 @@ You can use `dconf-editor` tool to explore which GSettings you can set. ### Example {#sec-gnome-gsettings-overrides-example} ```nix -services.xserver.desktopManager.gnome = { - extraGSettingsOverrides = '' - # Change default background - [org.gnome.desktop.background] - picture-uri='file://${pkgs.nixos-artwork.wallpapers.mosaic-blue.gnomeFilePath}' +{ + services.xserver.desktopManager.gnome = { + extraGSettingsOverrides = '' + # Change default background + [org.gnome.desktop.background] + picture-uri='file://${pkgs.nixos-artwork.wallpapers.mosaic-blue.gnomeFilePath}' - # Favorite apps in gnome-shell - [org.gnome.shell] - favorite-apps=['org.gnome.Console.desktop', 'org.gnome.Nautilus.desktop'] - ''; + # Favorite apps in gnome-shell + [org.gnome.shell] + favorite-apps=['org.gnome.Console.desktop', 'org.gnome.Nautilus.desktop'] + ''; - extraGSettingsOverridePackages = [ - pkgs.gsettings-desktop-schemas # for org.gnome.desktop - pkgs.gnome.gnome-shell # for org.gnome.shell - ]; -}; + extraGSettingsOverridePackages = [ + pkgs.gsettings-desktop-schemas # for org.gnome.desktop + pkgs.gnome.gnome-shell # for org.gnome.shell + ]; + }; +} ``` ## Frequently Asked Questions {#sec-gnome-faq} diff --git a/nixos/modules/services/x11/desktop-managers/pantheon.md b/nixos/modules/services/x11/desktop-managers/pantheon.md index 664bd7f31eeb..ce251ec2d394 100644 --- a/nixos/modules/services/x11/desktop-managers/pantheon.md +++ b/nixos/modules/services/x11/desktop-managers/pantheon.md @@ -6,16 +6,22 @@ Pantheon is the desktop environment created for the elementary OS distribution. All of Pantheon is working in NixOS and the applications should be available, aside from a few [exceptions](https://github.com/NixOS/nixpkgs/issues/58161). To enable Pantheon, set ```nix -services.xserver.desktopManager.pantheon.enable = true; +{ + services.xserver.desktopManager.pantheon.enable = true; +} ``` This automatically enables LightDM and Pantheon's LightDM greeter. If you'd like to disable this, set ```nix -services.xserver.displayManager.lightdm.greeters.pantheon.enable = false; -services.xserver.displayManager.lightdm.enable = false; +{ + services.xserver.displayManager.lightdm.greeters.pantheon.enable = false; + services.xserver.displayManager.lightdm.enable = false; +} ``` but please be aware using Pantheon without LightDM as a display manager will break screenlocking from the UI. The NixOS module for Pantheon installs all of Pantheon's default applications. If you'd like to not install Pantheon's apps, set ```nix -services.pantheon.apps.enable = false; +{ + services.pantheon.apps.enable = false; +} ``` You can also use [](#opt-environment.pantheon.excludePackages) to remove any other app (like `elementary-mail`). @@ -34,25 +40,28 @@ wingpanel-with-indicators.override { indicators = [ pkgs.some-special-indicator ]; -}; +} +``` +```nix switchboard-with-plugs.override { plugs = [ pkgs.some-special-plug ]; -}; +} ``` please note that, like how the NixOS options describe these as extra plugins, this would only add to the default plugins included with the programs. If for some reason you'd like to configure which plugins to use exactly, both packages have an argument for this: ```nix wingpanel-with-indicators.override { useDefaultIndicators = false; indicators = specialListOfIndicators; -}; - +} +``` +```nix switchboard-with-plugs.override { useDefaultPlugs = false; plugs = specialListOfPlugs; -}; +} ``` this could be most useful for testing a particular plug-in in isolation. diff --git a/nixos/modules/system/boot/clevis.md b/nixos/modules/system/boot/clevis.md index cdd5d12753da..39edc0fc38df 100644 --- a/nixos/modules/system/boot/clevis.md +++ b/nixos/modules/system/boot/clevis.md @@ -40,12 +40,16 @@ For more complete documentation on how to generate a secret with clevis, see the In order to activate unattended decryption of a resource at boot, enable the `clevis` module: ```nix -boot.initrd.clevis.enable = true; +{ + boot.initrd.clevis.enable = true; +} ``` Then, specify the device you want to decrypt using a given clevis secret. Clevis will automatically try to decrypt the device at boot and will fallback to interactive unlocking if the decryption policy is not fulfilled. ```nix -boot.initrd.clevis.devices."/dev/nvme0n1p1".secretFile = ./nvme0n1p1.jwe; +{ + boot.initrd.clevis.devices."/dev/nvme0n1p1".secretFile = ./nvme0n1p1.jwe; +} ``` Only `bcachefs`, `zfs` and `luks` encrypted devices are supported at this time. diff --git a/pkgs/README.md b/pkgs/README.md index 5fbc15765966..9529b7a2db2e 100644 --- a/pkgs/README.md +++ b/pkgs/README.md @@ -417,31 +417,37 @@ In the file `pkgs/top-level/all-packages.nix` you can find fetch helpers, these - Bad: Uses `git://` which won't be proxied. ```nix - src = fetchgit { - url = "git://github.com/NixOS/nix.git"; - rev = "1f795f9f44607cc5bec70d1300150bfefcef2aae"; - hash = "sha256-7D4m+saJjbSFP5hOwpQq2FGR2rr+psQMTcyb1ZvtXsQ="; + { + src = fetchgit { + url = "git://github.com/NixOS/nix.git"; + rev = "1f795f9f44607cc5bec70d1300150bfefcef2aae"; + hash = "sha256-7D4m+saJjbSFP5hOwpQq2FGR2rr+psQMTcyb1ZvtXsQ="; + }; } ``` - Better: This is ok, but an archive fetch will still be faster. ```nix - src = fetchgit { - url = "https://github.com/NixOS/nix.git"; - rev = "1f795f9f44607cc5bec70d1300150bfefcef2aae"; - hash = "sha256-7D4m+saJjbSFP5hOwpQq2FGR2rr+psQMTcyb1ZvtXsQ="; + { + src = fetchgit { + url = "https://github.com/NixOS/nix.git"; + rev = "1f795f9f44607cc5bec70d1300150bfefcef2aae"; + hash = "sha256-7D4m+saJjbSFP5hOwpQq2FGR2rr+psQMTcyb1ZvtXsQ="; + }; } ``` - Best: Fetches a snapshot archive and you get the rev you want. ```nix - src = fetchFromGitHub { - owner = "NixOS"; - repo = "nix"; - rev = "1f795f9f44607cc5bec70d1300150bfefcef2aae"; - hash = "sha256-7D4m+saJjbSFP5hOwpQq2FGR2rr+psQMTcyb1ZvtXsQ="; + { + src = fetchFromGitHub { + owner = "NixOS"; + repo = "nix"; + rev = "1f795f9f44607cc5bec70d1300150bfefcef2aae"; + hash = "sha256-7D4m+saJjbSFP5hOwpQq2FGR2rr+psQMTcyb1ZvtXsQ="; + }; } ``` @@ -506,13 +512,15 @@ Let's say Man-in-the-Middle (MITM) sits close to your network. Then instead of f Patches available online should be retrieved using `fetchpatch`. ```nix -patches = [ - (fetchpatch { - name = "fix-check-for-using-shared-freetype-lib.patch"; - url = "http://git.ghostscript.com/?p=ghostpdl.git;a=patch;h=8f5d285"; - hash = "sha256-uRcxaCjd+WAuGrXOmGfFeu79cUILwkRdBu48mwcBE7g="; - }) -]; +{ + patches = [ + (fetchpatch { + name = "fix-check-for-using-shared-freetype-lib.patch"; + url = "http://git.ghostscript.com/?p=ghostpdl.git;a=patch;h=8f5d285"; + hash = "sha256-uRcxaCjd+WAuGrXOmGfFeu79cUILwkRdBu48mwcBE7g="; + }) + ]; +} ``` Otherwise, you can add a `.patch` file to the `nixpkgs` repository. In the interest of keeping our maintenance burden to a minimum, only patches that are unique to `nixpkgs` should be added in this way. @@ -520,7 +528,9 @@ Otherwise, you can add a `.patch` file to the `nixpkgs` repository. In the inter If a patch is available online but does not cleanly apply, it can be modified in some fixed ways by using additional optional arguments for `fetchpatch`. Check [the `fetchpatch` reference](https://nixos.org/manual/nixpkgs/unstable/#fetchpatch) for details. ```nix -patches = [ ./0001-changes.patch ]; +{ + patches = [ ./0001-changes.patch ]; +} ``` If you do need to do create this sort of patch file, one way to do so is with git: @@ -565,7 +575,9 @@ We use jbidwatcher as an example for a discontinued project here. For example in this case: ```nix - jbidwatcher = throw "jbidwatcher was discontinued in march 2021"; # added 2021-03-15 + { + jbidwatcher = throw "jbidwatcher was discontinued in march 2021"; # added 2021-03-15 + } ``` The throw message should explain in short why the package was removed for users that still have it installed. @@ -617,10 +629,10 @@ Here in the nixpkgs manual we describe mostly _package tests_; for _module tests For very simple tests, they can be written inline: ```nix -{ …, yq-go }: +{ /* ... , */ yq-go }: buildGoModule rec { - … + # … passthru.tests = { simple = runCommand "${pname}-test" {} '' @@ -642,13 +654,13 @@ Add the tests in `passthru.tests` to the package definition like this: { stdenv, lib, fetchurl, callPackage }: stdenv.mkDerivation { - … + # … passthru.tests = { simple-execution = callPackage ./tests.nix { }; }; - meta = { … }; + meta = { /* … */ }; } ``` @@ -706,13 +718,13 @@ For example, assuming we're packaging `nginx`, we can link its module test via ` { stdenv, lib, nixosTests }: stdenv.mkDerivation { - ... + # ... passthru.tests = { nginx = nixosTests.nginx; }; - ... + # ... } ``` diff --git a/pkgs/by-name/README.md b/pkgs/by-name/README.md index 52d2aac35e5d..17214ded02c4 100644 --- a/pkgs/by-name/README.md +++ b/pkgs/by-name/README.md @@ -69,9 +69,11 @@ So instead it is preferable to use the same generic parameter name `libbar` and override its value in [`pkgs/top-level/all-packages.nix`](../top-level/all-packages.nix): ```nix -libfoo = callPackage ../by-name/so/some-package/package.nix { - libbar = libbar_2; -}; +{ + libfoo = callPackage ../by-name/so/some-package/package.nix { + libbar = libbar_2; + }; +} ``` ## Manual migration guidelines @@ -132,13 +134,16 @@ but if you try to move the package to `pkgs/by-name`, it will fail check 2. This is often the case for packages with multiple versions, such as ```nix +{ foo_1 = callPackage ../tools/foo/1.nix { }; foo_2 = callPackage ../tools/foo/2.nix { }; +} ``` The best way to resolve this is to not use `callPackage` directly, such that check 1 doesn't trigger. This can be done by using `inherit` on a local package set: ```nix +{ inherit ({ foo_1 = callPackage ../tools/foo/1.nix { }; @@ -147,6 +152,7 @@ This can be done by using `inherit` on a local package set: foo_1 foo_2 ; +} ``` While this may seem pointless, this can in fact help with future package set refactorings, @@ -157,8 +163,10 @@ because it establishes a clear connection between related attributes. This is not required, but the above solution also allows refactoring the definitions into a separate file: ```nix +{ inherit (import ../tools/foo pkgs) foo_1 foo_2; +} ``` ```nix @@ -173,8 +181,10 @@ Alternatively using [`callPackages`](https://nixos.org/manual/nixpkgs/unstable/# if `callPackage` isn't used underneath and you want the same `.override` arguments for all attributes: ```nix +{ inherit (callPackages ../tools/foo { }) foo_1 foo_2; +} ``` ```nix @@ -192,9 +202,11 @@ if `callPackage` isn't used underneath and you want the same `.override` argumen This is not required, but the above solution also allows exposing the package set as an attribute: ```nix +{ foo-versions = import ../tools/foo pkgs; # Or using callPackages # foo-versions = callPackages ../tools/foo { }; inherit (foo-versions) foo_1 foo_2; +} ``` diff --git a/pkgs/development/misc/resholve/README.md b/pkgs/development/misc/resholve/README.md index 439e4ea8188d..0e875a765658 100644 --- a/pkgs/development/misc/resholve/README.md +++ b/pkgs/development/misc/resholve/README.md @@ -99,20 +99,22 @@ trivial, so I'll also link to some real-world examples: - [shell.nix from abathur/tdverpy](https://github.com/abathur/tdverpy/blob/e1f956df3ed1c7097a5164e0c85b178772e277f5/shell.nix#L6-L13) ```nix -resholvedScript = resholve.writeScript "name" { - inputs = [ file ]; - interpreter = "${bash}/bin/bash"; - } '' - echo "Hello" - file . - ''; -resholvedScriptBin = resholve.writeScriptBin "name" { - inputs = [ file ]; - interpreter = "${bash}/bin/bash"; - } '' - echo "Hello" - file . - ''; +{ + resholvedScript = resholve.writeScript "name" { + inputs = [ file ]; + interpreter = "${bash}/bin/bash"; + } '' + echo "Hello" + file . + ''; + resholvedScriptBin = resholve.writeScriptBin "name" { + inputs = [ file ]; + interpreter = "${bash}/bin/bash"; + } '' + echo "Hello" + file . + ''; +} ``` @@ -212,29 +214,31 @@ This will hopefully make more sense when you see it. Here are CLI examples from the manpage, and the Nix equivalents: ```nix -# --fake 'f:setUp;tearDown builtin:setopt source:/etc/bashrc' -fake = { - # fake accepts the initial of valid identifier types as a CLI convenience. - # Use full names in the Nix API. - function = [ "setUp" "tearDown" ]; - builtin = [ "setopt" ]; - source = [ "/etc/bashrc" ]; -}; +{ + # --fake 'f:setUp;tearDown builtin:setopt source:/etc/bashrc' + fake = { + # fake accepts the initial of valid identifier types as a CLI convenience. + # Use full names in the Nix API. + function = [ "setUp" "tearDown" ]; + builtin = [ "setopt" ]; + source = [ "/etc/bashrc" ]; + }; -# --fix 'aliases $GIT:gix /bin/bash' -fix = { - # all single-word directives use `true` as value - aliases = true; - "$GIT" = [ "gix" ]; - "/bin/bash"; -}; + # --fix 'aliases $GIT:gix /bin/bash' + fix = { + # all single-word directives use `true` as value + aliases = true; + "$GIT" = [ "gix" ]; + interpreter = "/bin/bash"; + }; -# --keep 'source:$HOME /etc/bashrc ~/.bashrc' -keep = { - source = [ "$HOME" ]; - "/etc/bashrc" = true; - "~/.bashrc" = true; -}; + # --keep 'source:$HOME /etc/bashrc ~/.bashrc' + keep = { + source = [ "$HOME" ]; + "/etc/bashrc" = true; + "~/.bashrc" = true; + }; +} ``` @@ -283,27 +287,29 @@ the main lever is the ability to substitute your own lore. This is how you'd do it piecemeal: ```nix -# --execer 'cannot:${openssl.bin}/bin/openssl can:${openssl.bin}/bin/c_rehash' -execer = [ - /* - This is the same verdict binlore will - come up with. It's a no-op just to demo - how to fiddle lore via the Nix API. - */ - "cannot:${openssl.bin}/bin/openssl" - # different verdict, but not used - "can:${openssl.bin}/bin/c_rehash" -]; +{ + # --execer 'cannot:${openssl.bin}/bin/openssl can:${openssl.bin}/bin/c_rehash' + execer = [ + /* + This is the same verdict binlore will + come up with. It's a no-op just to demo + how to fiddle lore via the Nix API. + */ + "cannot:${openssl.bin}/bin/openssl" + # different verdict, but not used + "can:${openssl.bin}/bin/c_rehash" + ]; -# --wrapper '${gnugrep}/bin/egrep:${gnugrep}/bin/grep' -wrapper = [ - /* - This is the same verdict binlore will - come up with. It's a no-op just to demo - how to fiddle lore via the Nix API. - */ - "${gnugrep}/bin/egrep:${gnugrep}/bin/grep" -]; + # --wrapper '${gnugrep}/bin/egrep:${gnugrep}/bin/grep' + wrapper = [ + /* + This is the same verdict binlore will + come up with. It's a no-op just to demo + how to fiddle lore via the Nix API. + */ + "${gnugrep}/bin/egrep:${gnugrep}/bin/grep" + ]; +} ``` diff --git a/pkgs/servers/home-assistant/custom-components/README.md b/pkgs/servers/home-assistant/custom-components/README.md index ccb8062200f8..6b942df8b942 100644 --- a/pkgs/servers/home-assistant/custom-components/README.md +++ b/pkgs/servers/home-assistant/custom-components/README.md @@ -37,7 +37,7 @@ buildHomeAssistantComponent { meta = with lib; { # changelog, description, homepage, license, maintainers - } + }; } ``` diff --git a/pkgs/servers/home-assistant/custom-lovelace-modules/README.md b/pkgs/servers/home-assistant/custom-lovelace-modules/README.md index b67fd0fb91d8..72f979d07f95 100644 --- a/pkgs/servers/home-assistant/custom-lovelace-modules/README.md +++ b/pkgs/servers/home-assistant/custom-lovelace-modules/README.md @@ -9,5 +9,7 @@ configured. The entrypoint used can be overridden in `passthru` like this: ```nix -passthru.entrypoint = "demo-card-bundle.js"; +{ + passthru.entrypoint = "demo-card-bundle.js"; +} ``` diff --git a/pkgs/servers/nextcloud/packages/README.md b/pkgs/servers/nextcloud/packages/README.md index 093c8ffd47d0..0b325848f2ed 100644 --- a/pkgs/servers/nextcloud/packages/README.md +++ b/pkgs/servers/nextcloud/packages/README.md @@ -25,16 +25,18 @@ The apps will be available in the namespace `nextcloud25Packages.apps`. Using it together with the Nextcloud module could look like this: ```nix -services.nextcloud = { - enable = true; - package = pkgs.nextcloud25; - hostName = "localhost"; - config.adminpassFile = "${pkgs.writeText "adminpass" "hunter2"}"; - extraApps = with pkgs.nextcloud25Packages.apps; { - inherit mail calendar contact; +{ + services.nextcloud = { + enable = true; + package = pkgs.nextcloud25; + hostName = "localhost"; + config.adminpassFile = "${pkgs.writeText "adminpass" "hunter2"}"; + extraApps = with pkgs.nextcloud25Packages.apps; { + inherit mail calendar contact; + }; + extraAppsEnable = true; }; - extraAppsEnable = true; -}; +} ``` Adapt the version number in the Nextcloud package and nextcloudPackages set diff --git a/pkgs/servers/web-apps/wordpress/packages/README.md b/pkgs/servers/web-apps/wordpress/packages/README.md index 735fe8ee32cf..814ed8d0468e 100644 --- a/pkgs/servers/web-apps/wordpress/packages/README.md +++ b/pkgs/servers/web-apps/wordpress/packages/README.md @@ -30,17 +30,19 @@ The plugins will be available in the namespace `wordpressPackages.plugins`. Using it together with the Wordpress module could look like this: ```nix -services.wordpress = { - sites."blog.${config.networking.domain}" = { - plugins = with pkgs.wordpressPackages.plugins; [ - anti-spam-bee - code-syntax-block - cookie-notice - lightbox-with-photoswipe - wp-gdpr-compliance - ]; +{ + services.wordpress = { + sites."blog.${config.networking.domain}" = { + plugins = with pkgs.wordpressPackages.plugins; [ + anti-spam-bee + code-syntax-block + cookie-notice + lightbox-with-photoswipe + wp-gdpr-compliance + ]; + }; }; -}; +} ``` The same scheme applies to `themes` and `languages`. From bc5ee2b8f8c1b6a0f1e80a103ccd77febe85f8cc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Janne=20He=C3=9F?= Date: Wed, 27 Mar 2024 19:39:55 +0100 Subject: [PATCH 081/116] treewide: Switch markdown placeholder from "..." to <...> We use angle brackets since they look a lot like a placeholder while also being valid nix code, as suggested by roberth here: https://github.com/NixOS/nixpkgs/pull/299554#discussion_r1541797970 --- CONTRIBUTING.md | 12 ++++++------ doc/build-helpers/fetchers.chapter.md | 2 +- doc/languages-frameworks/agda.section.md | 2 +- doc/languages-frameworks/chicken.section.md | 4 ++-- doc/languages-frameworks/java.section.md | 2 +- doc/languages-frameworks/python.section.md | 2 +- 6 files changed, 12 insertions(+), 12 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 699115d95378..4b1a12362f39 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -557,7 +557,7 @@ Names of files and directories should be in lowercase, with dashes between words ```nix foo { - arg = "..."; + arg = <...>; } ``` @@ -566,14 +566,14 @@ Names of files and directories should be in lowercase, with dashes between words ```nix foo { - arg = "..."; + arg = <...>; } ``` Also fine is ```nix - foo { arg = "..."; } + foo { arg = <...>; } ``` if it's a short call. @@ -683,19 +683,19 @@ Names of files and directories should be in lowercase, with dashes between words - Functions should list their expected arguments as precisely as possible. That is, write ```nix - { stdenv, fetchurl, perl }: "..." + { stdenv, fetchurl, perl }: <...> ``` instead of ```nix - args: with args; "..." + args: with args; <...> ``` or ```nix - { stdenv, fetchurl, perl, ... }: "..." + { stdenv, fetchurl, perl, ... }: <...> ``` For functions that are truly generic in the number of arguments (such as wrappers around `mkDerivation`) that have some required arguments, you should write them using an `@`-pattern: diff --git a/doc/build-helpers/fetchers.chapter.md b/doc/build-helpers/fetchers.chapter.md index 123585c6dd2d..5c7c3257e6d4 100644 --- a/doc/build-helpers/fetchers.chapter.md +++ b/doc/build-helpers/fetchers.chapter.md @@ -123,7 +123,7 @@ Here is an example of `fetchDebianPatch` in action: buildPythonPackage rec { pname = "pysimplesoap"; version = "1.16.2"; - src = "..."; + src = <...>; patches = [ (fetchDebianPatch { diff --git a/doc/languages-frameworks/agda.section.md b/doc/languages-frameworks/agda.section.md index 51ef40267ef4..33fffc60c8db 100644 --- a/doc/languages-frameworks/agda.section.md +++ b/doc/languages-frameworks/agda.section.md @@ -194,7 +194,7 @@ mkDerivation { version = "1.5.0"; pname = "iowa-stdlib"; - src = "..."; + src = <...>; libraryFile = ""; libraryName = "IAL-1.3"; diff --git a/doc/languages-frameworks/chicken.section.md b/doc/languages-frameworks/chicken.section.md index 975be5e71928..16b00b3f5b5d 100644 --- a/doc/languages-frameworks/chicken.section.md +++ b/doc/languages-frameworks/chicken.section.md @@ -69,12 +69,12 @@ let chickenEggs = super.chickenEggs.overrideScope' (eggself: eggsuper: { srfi-180 = eggsuper.srfi-180.overrideAttrs { # path to a local copy of srfi-180 - src = "..."; + src = <...>; }; }); }); in # Here, `myChickenPackages.chickenEggs.json-rpc`, which depends on `srfi-180` will use # the local copy of `srfi-180`. -"..." +<...> ``` diff --git a/doc/languages-frameworks/java.section.md b/doc/languages-frameworks/java.section.md index 2c73d428cab3..6d56ffcd4503 100644 --- a/doc/languages-frameworks/java.section.md +++ b/doc/languages-frameworks/java.section.md @@ -96,7 +96,7 @@ let something = (pkgs.something.override { jre = my_jre; }); other = (pkgs.other.override { jre = my_jre; }); in - "..." + <...> ``` You can also specify what JDK your JRE should be based on, for example diff --git a/doc/languages-frameworks/python.section.md b/doc/languages-frameworks/python.section.md index 04303d741d67..f325af0641f6 100644 --- a/doc/languages-frameworks/python.section.md +++ b/doc/languages-frameworks/python.section.md @@ -1890,7 +1890,7 @@ this snippet: { myPythonPackages = python3Packages.override { overrides = self: super: { - twisted = "..."; + twisted = <...>; }; }; } From 9b48d2eb05571a8aca5a364584f2fd731c23c6a2 Mon Sep 17 00:00:00 2001 From: Fabian Affolter Date: Thu, 28 Mar 2024 09:31:49 +0100 Subject: [PATCH 082/116] python311Packages.rpyc: disable failing tests --- .../python-modules/rpyc/default.nix | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/pkgs/development/python-modules/rpyc/default.nix b/pkgs/development/python-modules/rpyc/default.nix index 7c9a13fc4d17..9d3d66b46f25 100644 --- a/pkgs/development/python-modules/rpyc/default.nix +++ b/pkgs/development/python-modules/rpyc/default.nix @@ -11,22 +11,22 @@ buildPythonPackage rec { pname = "rpyc"; version = "6.0.0"; - format = "pyproject"; + pyproject = true; disabled = pythonOlder "3.7"; src = fetchFromGitHub { owner = "tomerfiliba"; - repo = pname; + repo = "rpyc"; rev = "refs/tags/${version}"; hash = "sha256-BvXEXZlVbOmKBwnSBCDksUkbT7JPcMX48KZe/Gd5Y8Q="; }; - nativeBuildInputs = [ + build-system = [ hatchling ]; - propagatedBuildInputs = [ + dependencies = [ plumbum ]; @@ -42,11 +42,22 @@ buildPythonPackage rec { "test_listing" "test_pruning" "test_rpyc" + "test_instancecheck_across_connections" + # Internal import error + "test_modules" # Test is outdated # ssl.SSLError: [SSL: NO_CIPHERS_AVAILABLE] no ciphers available (_ssl.c:997) "test_ssl_conenction" ]; + disabledTestPaths = [ + # Internal import issue + "tests/test_attributes.py" + "tests/test_service_pickle.py" + "tests/test_affinity.py" + "tests/test_magic.py" + ]; + pythonImportsCheck = [ "rpyc" ]; From 13e9d3b061c2fafc5acc5ea8bbc9a96cc92c4b64 Mon Sep 17 00:00:00 2001 From: Fabian Affolter Date: Thu, 28 Mar 2024 09:32:04 +0100 Subject: [PATCH 083/116] flexget: refactor --- pkgs/applications/networking/flexget/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/applications/networking/flexget/default.nix b/pkgs/applications/networking/flexget/default.nix index bf26bbd002bc..92d7c73eb697 100644 --- a/pkgs/applications/networking/flexget/default.nix +++ b/pkgs/applications/networking/flexget/default.nix @@ -22,12 +22,12 @@ python3.pkgs.buildPythonApplication rec { sed 's/[~<>=][^;]*//' -i requirements.txt ''; - nativeBuildInputs = with python3.pkgs; [ + build-system = with python3.pkgs; [ setuptools wheel ]; - propagatedBuildInputs = with python3.pkgs; [ + dependencies = with python3.pkgs; [ # See https://github.com/Flexget/Flexget/blob/master/requirements.txt apscheduler beautifulsoup4 From fe9305ffde2729641b37f58c03104445a5d25921 Mon Sep 17 00:00:00 2001 From: Fabian Affolter Date: Thu, 28 Mar 2024 09:41:36 +0100 Subject: [PATCH 084/116] python312Packages.pyleri: refactor --- pkgs/development/python-modules/pyleri/default.nix | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/pkgs/development/python-modules/pyleri/default.nix b/pkgs/development/python-modules/pyleri/default.nix index 64f33f21805e..2ff3abf5978d 100644 --- a/pkgs/development/python-modules/pyleri/default.nix +++ b/pkgs/development/python-modules/pyleri/default.nix @@ -3,12 +3,13 @@ , fetchFromGitHub , pythonOlder , unittestCheckHook +, setuptools }: buildPythonPackage rec { pname = "pyleri"; version = "1.4.3"; - format = "setuptools"; + pyproject = true; disabled = pythonOlder "3.7"; @@ -19,6 +20,10 @@ buildPythonPackage rec { hash = "sha256-4t+6wtYzJbmL0TB/OXr89uZ2s8DeGlUdWwHd4YPsCW0="; }; + build-system = [ + setuptools + ]; + nativeCheckInputs = [ unittestCheckHook ]; From 525f8d9433a7916ba83843b70b33053a66ce912d Mon Sep 17 00:00:00 2001 From: Alyssa Ross Date: Thu, 28 Mar 2024 09:49:11 +0100 Subject: [PATCH 085/116] pkgsStatic.gnutls: fix build We can't apply the upstream patch, because we'd have to redo the bootstrap that's already done in the release tarball, and that's very complicated. Fixes: b6d2a4294e4b ("gnutls: 3.8.3 -> 3.8.4 (medium security)") --- pkgs/development/libraries/gnutls/default.nix | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/pkgs/development/libraries/gnutls/default.nix b/pkgs/development/libraries/gnutls/default.nix index 681a810f8898..1c30c76ca7ab 100644 --- a/pkgs/development/libraries/gnutls/default.nix +++ b/pkgs/development/libraries/gnutls/default.nix @@ -96,6 +96,12 @@ stdenv.mkDerivation rec { sed 's:/usr/lib64/pkcs11/ /usr/lib/pkcs11/ /usr/lib/x86_64-linux-gnu/pkcs11/:`pkg-config --variable=p11_module_path p11-kit-1`:' -i tests/p11-kit-trust.sh '' + lib.optionalString stdenv.hostPlatform.isMusl '' # See https://gitlab.com/gnutls/gnutls/-/issues/945 sed '2iecho "certtool tests skipped in musl build"\nexit 0' -i tests/cert-tests/certtool.sh + '' + lib.optionalString stdenv.hostPlatform.isStatic '' + # Adapted from https://gitlab.com/gnutls/gnutls/-/commit/d214cd4570fb1559a20e941bb7ceac7df52e96d3 + # Can be removed with 3.8.5+. + sed -i lib/nettle/backport/rsa-sign-tr.c -e \ + '/^#include /i\ + #define nettle_rsa_compute_root_tr _gnutls_nettle_backport_rsa_compute_root_tr' ''; preConfigure = "patchShebangs ."; From 4db1e94d1912755a03df8bfd16c0bcfe02a6a2db Mon Sep 17 00:00:00 2001 From: Fabian Affolter Date: Thu, 28 Mar 2024 09:56:40 +0100 Subject: [PATCH 086/116] python311Packages.llamaindex-py-client: 0.1.13 -> 0.1.15 --- .../python-modules/llamaindex-py-client/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/development/python-modules/llamaindex-py-client/default.nix b/pkgs/development/python-modules/llamaindex-py-client/default.nix index d46e070c9517..fb0cb4ad58ad 100644 --- a/pkgs/development/python-modules/llamaindex-py-client/default.nix +++ b/pkgs/development/python-modules/llamaindex-py-client/default.nix @@ -9,7 +9,7 @@ buildPythonPackage rec { pname = "llamaindex-py-client"; - version = "0.1.13"; + version = "0.1.15"; pyproject = true; disabled = pythonOlder "3.8"; @@ -17,7 +17,7 @@ buildPythonPackage rec { src = fetchPypi { pname = "llamaindex_py_client"; inherit version; - hash = "sha256-O9m0Ne4KeBceukEt6lZ02BPrW/NuV308fH6Q7cVJANk="; + hash = "sha256-x84mhVupdhU7tAFXw8GUIjxrdReZNbmI3UvWo/6Dqss="; }; nativeBuildInputs = [ From dbd37ff842819556b4cf4a4138a91df107ab0c66 Mon Sep 17 00:00:00 2001 From: Fabian Affolter Date: Thu, 28 Mar 2024 09:57:28 +0100 Subject: [PATCH 087/116] python311Packages.llama-index-program-openai: 0.1.4 -> 0.1.5 --- .../python-modules/llama-index-program-openai/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/development/python-modules/llama-index-program-openai/default.nix b/pkgs/development/python-modules/llama-index-program-openai/default.nix index 6e851fcf9f88..70640d4a4bbe 100644 --- a/pkgs/development/python-modules/llama-index-program-openai/default.nix +++ b/pkgs/development/python-modules/llama-index-program-openai/default.nix @@ -11,7 +11,7 @@ buildPythonPackage rec { pname = "llama-index-program-openai"; - version = "0.1.4"; + version = "0.1.5"; pyproject = true; disabled = pythonOlder "3.8"; @@ -19,7 +19,7 @@ buildPythonPackage rec { src = fetchPypi { pname = "llama_index_program_openai"; inherit version; - hash = "sha256-Vz6Zot0WrTyvOCyKso0awQ6yVxvJSB2EptiYBq1qpdQ="; + hash = "sha256-wzqi0odq0P8fmip1XU59SRckCEfQF057LQuEdEmbtwA="; }; pythonRelaxDeps = [ From d572d159f7f1834a916c393a4d677d4588a50912 Mon Sep 17 00:00:00 2001 From: Fabian Affolter Date: Thu, 28 Mar 2024 09:57:49 +0100 Subject: [PATCH 088/116] python311Packages.llama-index-core: 0.10.23 -> 0.10.25 Diff: https://github.com/run-llama/llama_index/compare/refs/tags/v0.10.25...v0.10.25 Changelog: https://github.com/run-llama/llama_index/blob/0.10.25/CHANGELOG.md --- pkgs/development/python-modules/llama-index-core/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/development/python-modules/llama-index-core/default.nix b/pkgs/development/python-modules/llama-index-core/default.nix index 259b672fab3e..5146eca9d4d6 100644 --- a/pkgs/development/python-modules/llama-index-core/default.nix +++ b/pkgs/development/python-modules/llama-index-core/default.nix @@ -30,7 +30,7 @@ buildPythonPackage rec { pname = "llama-index-core"; - version = "0.10.24"; + version = "0.10.25"; pyproject = true; disabled = pythonOlder "3.8"; @@ -39,7 +39,7 @@ buildPythonPackage rec { owner = "run-llama"; repo = "llama_index"; rev = "refs/tags/v${version}"; - hash = "sha256-iag9alEnyOt+Hs8qTdRt3nn5fGHqztoOxilJXHWWnVw="; + hash = "sha256-E06Fxj6dD0BVYpme107IdgGg0Y7vhNR9zFvyKL0Yqws="; }; sourceRoot = "${src.name}/${pname}"; From 92fb7c56276e1ee3f0286e6a6920deda6d1aa084 Mon Sep 17 00:00:00 2001 From: Fabian Affolter Date: Thu, 28 Mar 2024 09:59:57 +0100 Subject: [PATCH 089/116] python311Packages.lxmf: 0.4.2 -> 0.4.3 Diff: https://github.com/markqvist/lxmf/compare/refs/tags/0.4.2...0.4.3 Changelog: https://github.com/markqvist/LXMF/releases/tag/0.4.3 --- pkgs/development/python-modules/lxmf/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/development/python-modules/lxmf/default.nix b/pkgs/development/python-modules/lxmf/default.nix index 6a3f45b414b7..e15af88fda8f 100644 --- a/pkgs/development/python-modules/lxmf/default.nix +++ b/pkgs/development/python-modules/lxmf/default.nix @@ -8,7 +8,7 @@ buildPythonPackage rec { pname = "lxmf"; - version = "0.4.2"; + version = "0.4.3"; pyproject = true; disabled = pythonOlder "3.7"; @@ -17,7 +17,7 @@ buildPythonPackage rec { owner = "markqvist"; repo = "lxmf"; rev = "refs/tags/${version}"; - hash = "sha256-JDD1X0/5xuqGN/Qw67tTFqfoWUd7Ah80/mimK01tG6Y="; + hash = "sha256-8Usu2fecSnyVfGrEJED4qMBO5RwJjTq5c7svCTu445Q="; }; nativeBuildInputs = [ From 513ff79f509637313633e0e2575ccfc050fc5045 Mon Sep 17 00:00:00 2001 From: Fabian Affolter Date: Thu, 28 Mar 2024 10:05:08 +0100 Subject: [PATCH 090/116] trivy: 0.50.0 -> 0.50.1 Diff: https://github.com/aquasecurity/trivy/compare/refs/tags/v0.50.0...v0.50.1 Changelog: https://github.com/aquasecurity/trivy/releases/tag/v0.50.1 --- pkgs/tools/admin/trivy/default.nix | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pkgs/tools/admin/trivy/default.nix b/pkgs/tools/admin/trivy/default.nix index 428f3703e47b..ade905ec189e 100644 --- a/pkgs/tools/admin/trivy/default.nix +++ b/pkgs/tools/admin/trivy/default.nix @@ -10,19 +10,19 @@ buildGoModule rec { pname = "trivy"; - version = "0.50.0"; + version = "0.50.1"; src = fetchFromGitHub { owner = "aquasecurity"; repo = pname; rev = "refs/tags/v${version}"; - hash = "sha256-gRePoEfUqTWSalUaCROEsZcgxXOFGe0AukyoaDlKAsM="; + hash = "sha256-TcSWgEdk0hjckY5ZGm2/jg9C4yiTTtgQjZEihXBi+fA="; }; # Hash mismatch on across Linux and Darwin proxyVendor = true; - vendorHash = "sha256-i+FgfYdfhuS4utcHDWI1QofBysiU6tV9Y7b2SE0jnVA="; + vendorHash = "sha256-FkyGqZSEKWCI7tRmTBI+dmiqZPPPMUlqbCxs59N1syY="; subPackages = [ "cmd/trivy" ]; From 3645512e4c91446be6757f720b407ddc5bd9b095 Mon Sep 17 00:00:00 2001 From: "R. Ryantm" Date: Wed, 20 Mar 2024 14:42:36 +0000 Subject: [PATCH 091/116] hugo: 0.124.0 -> 0.124.1 --- pkgs/by-name/hu/hugo/package.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/by-name/hu/hugo/package.nix b/pkgs/by-name/hu/hugo/package.nix index 32832da0a6f2..cc95fa00ad9d 100644 --- a/pkgs/by-name/hu/hugo/package.nix +++ b/pkgs/by-name/hu/hugo/package.nix @@ -10,13 +10,13 @@ buildGoModule rec { pname = "hugo"; - version = "0.124.0"; + version = "0.124.1"; src = fetchFromGitHub { owner = "gohugoio"; repo = "hugo"; rev = "refs/tags/v${version}"; - hash = "sha256-LLjIKkNtrnnpIUjdJZJlrsyP4O634/B+cyn8DEYfRdk="; + hash = "sha256-ueosu4mUqI9TH3nlOEjZBkejeo3WEfPqzLRNbj1B2Ec="; }; vendorHash = "sha256-LQLrbFJUW3X4F6L7JxQJRmkQFvuFraHJRBoGLt/ObSg="; From 6c921802c25413bc292c3495157e446e74abba87 Mon Sep 17 00:00:00 2001 From: Fabian Affolter Date: Thu, 28 Mar 2024 10:06:07 +0100 Subject: [PATCH 092/116] qovery-cli: 0.85.0 -> 0.86.0 Diff: https://github.com/Qovery/qovery-cli/compare/refs/tags/v0.85.0...v0.86.0 Changelog: https://github.com/Qovery/qovery-cli/releases/tag/v0.86.0 --- pkgs/tools/admin/qovery-cli/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/tools/admin/qovery-cli/default.nix b/pkgs/tools/admin/qovery-cli/default.nix index 5c380c92720c..6e3966367c8b 100644 --- a/pkgs/tools/admin/qovery-cli/default.nix +++ b/pkgs/tools/admin/qovery-cli/default.nix @@ -8,13 +8,13 @@ buildGoModule rec { pname = "qovery-cli"; - version = "0.85.0"; + version = "0.86.0"; src = fetchFromGitHub { owner = "Qovery"; repo = "qovery-cli"; rev = "refs/tags/v${version}"; - hash = "sha256-peIbzUDP6vJneeFkvIUXuMzOQJKZ602dIzRnSf/7HAI="; + hash = "sha256-mtwlLNMiAeo7WJUhtheiXSptcy7xhDiqFp3nJ5XozKg="; }; vendorHash = "sha256-3UsHxBIJpmga3Hjtwx4cZ45xY52RVMdPS/DAgTBYmuw="; From 281dde2034744a6b0ca3538fd9ef09a879cada86 Mon Sep 17 00:00:00 2001 From: Fabian Affolter Date: Thu, 28 Mar 2024 10:27:39 +0100 Subject: [PATCH 093/116] python311Packages.plugwise: 0.37.1 -> 0.37.2 Diff: plugwise/python-plugwise@refs/tags/v0.37.1...v0.37.2 Changelog: https://github.com/plugwise/python-plugwise/releases/tag/v0.37.2 --- .../python-modules/plugwise/default.nix | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/pkgs/development/python-modules/plugwise/default.nix b/pkgs/development/python-modules/plugwise/default.nix index 7d8b5f666515..0e53ee17e04a 100644 --- a/pkgs/development/python-modules/plugwise/default.nix +++ b/pkgs/development/python-modules/plugwise/default.nix @@ -21,7 +21,7 @@ buildPythonPackage rec { pname = "plugwise"; - version = "0.37.1"; + version = "0.37.2"; pyproject = true; disabled = pythonOlder "3.11"; @@ -30,21 +30,22 @@ buildPythonPackage rec { owner = "plugwise"; repo = "python-plugwise"; rev = "refs/tags/v${version}"; - hash = "sha256-6o0g3il4GV6E8avp9V2YrkaVPf2z37asdJOxf6Phbmc="; + hash = "sha256-zPh4yko35aMhiTTIDbaBgVruRDyolhtvTzTIhF5fo+Y="; }; postPatch = '' - substituteInPlace pyproject.toml \ - --replace "setuptools~=68.0" "setuptools" \ - --replace "wheel~=0.40.0" "wheel" + # setuptools + sed -i -e "s/~=[0-9.]*//" pyproject.toml + # wheel + sed -i -e "s/~=[0-9.]*//" pyproject.toml ''; - nativeBuildInputs = [ + build-system = [ setuptools wheel ]; - propagatedBuildInputs = [ + dependencies = [ aiohttp async-timeout crcmod From f93c82f96e5e067852008e8b3677f27df392e69b Mon Sep 17 00:00:00 2001 From: "R. Ryantm" Date: Thu, 28 Mar 2024 09:31:18 +0000 Subject: [PATCH 094/116] python312Packages.pynobo: 1.7.0 -> 1.8.0 --- pkgs/development/python-modules/pynobo/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/development/python-modules/pynobo/default.nix b/pkgs/development/python-modules/pynobo/default.nix index 783415a2c2fb..aa53aaab41f7 100644 --- a/pkgs/development/python-modules/pynobo/default.nix +++ b/pkgs/development/python-modules/pynobo/default.nix @@ -6,7 +6,7 @@ buildPythonPackage rec { pname = "pynobo"; - version = "1.7.0"; + version = "1.8.0"; format = "setuptools"; disabled = pythonOlder "3.7"; @@ -15,7 +15,7 @@ buildPythonPackage rec { owner = "echoromeo"; repo = pname; rev = "refs/tags/v${version}"; - hash = "sha256-LJS4NJM+f+j53YzH8LradBDzHAsOprd4F7nH1cfC3B0="; + hash = "sha256-Hfyf7XGleDWTKKWNlItcBFuiS3UEwsYed7v5FPRdC0w="; }; # Project has no tests From b3ffea863cf4917402a60d81cee5e462fcd85d9a Mon Sep 17 00:00:00 2001 From: "R. Ryantm" Date: Thu, 28 Mar 2024 09:31:36 +0000 Subject: [PATCH 095/116] python312Packages.requirements-parser: 0.5.0 -> 0.6.0 --- .../python-modules/requirements-parser/default.nix | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pkgs/development/python-modules/requirements-parser/default.nix b/pkgs/development/python-modules/requirements-parser/default.nix index 11fe8edf6a10..c036938c846a 100644 --- a/pkgs/development/python-modules/requirements-parser/default.nix +++ b/pkgs/development/python-modules/requirements-parser/default.nix @@ -10,7 +10,7 @@ buildPythonPackage rec { pname = "requirements-parser"; - version = "0.5.0"; + version = "0.6.0"; format = "pyproject"; disabled = pythonOlder "3.7"; @@ -18,8 +18,8 @@ buildPythonPackage rec { src = fetchFromGitHub { owner = "madpah"; repo = pname; - rev = "v${version}"; - hash = "sha256-e2dfVBMh1uGRMDw7OdPefO4/eRxc3BGwvy/D7u5ipkk="; + rev = "refs/tags/v${version}"; + hash = "sha256-fUx6NBD6qxAyArGgCiB2J1Ak7pudx/LI0+rCHjLnc1M="; }; nativeBuildInputs = [ From 5d056b548a8b42404ee634bc803dd697302449e9 Mon Sep 17 00:00:00 2001 From: Fabian Affolter Date: Thu, 28 Mar 2024 10:37:14 +0100 Subject: [PATCH 096/116] knockpy: refactor --- pkgs/tools/security/knockpy/default.nix | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pkgs/tools/security/knockpy/default.nix b/pkgs/tools/security/knockpy/default.nix index 6d4e80ec98c2..4a0bcde2b169 100644 --- a/pkgs/tools/security/knockpy/default.nix +++ b/pkgs/tools/security/knockpy/default.nix @@ -21,12 +21,12 @@ python3.pkgs.buildPythonApplication rec { "tqdm" ]; - nativeBuildInputs = with python3.pkgs; [ + build-system = with python3.pkgs; [ pythonRelaxDepsHook setuptools ]; - propagatedBuildInputs = with python3.pkgs; [ + dependencies = with python3.pkgs; [ beautifulsoup4 dnspython pyopenssl @@ -43,10 +43,10 @@ python3.pkgs.buildPythonApplication rec { meta = with lib; { description = "Tool to scan subdomains"; - mainProgram = "knockpy"; homepage = "https://github.com/guelfoweb/knock"; changelog = "https://github.com/guelfoweb/knock/releases/tag/${version}"; license = with licenses; [ gpl3Only ]; maintainers = with maintainers; [ fab ]; + mainProgram = "knockpy"; }; } From ea2c0f9e1319b6555de388c9a3f337758d0339fa Mon Sep 17 00:00:00 2001 From: Fabian Affolter Date: Thu, 28 Mar 2024 10:38:28 +0100 Subject: [PATCH 097/116] knockpy: relax pyopenssl --- pkgs/tools/security/knockpy/default.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/pkgs/tools/security/knockpy/default.nix b/pkgs/tools/security/knockpy/default.nix index 4a0bcde2b169..169165067c93 100644 --- a/pkgs/tools/security/knockpy/default.nix +++ b/pkgs/tools/security/knockpy/default.nix @@ -18,6 +18,7 @@ python3.pkgs.buildPythonApplication rec { pythonRelaxDeps = [ "beautifulsoup4" "dnspython" + "pyopenssl" "tqdm" ]; From 48e13c5d3d4474763c190a9c575728e3efc83a05 Mon Sep 17 00:00:00 2001 From: Fabian Affolter Date: Thu, 28 Mar 2024 10:40:48 +0100 Subject: [PATCH 098/116] python312Packages.aioambient: refactor --- pkgs/development/python-modules/aioambient/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/development/python-modules/aioambient/default.nix b/pkgs/development/python-modules/aioambient/default.nix index 9619b26a0b97..d80b387069f5 100644 --- a/pkgs/development/python-modules/aioambient/default.nix +++ b/pkgs/development/python-modules/aioambient/default.nix @@ -27,11 +27,11 @@ buildPythonPackage rec { hash = "sha256-eqZVY0L+2BWF7cCXW/VLQYYXNPtUF6tJHQmeZNW1W5o="; }; - nativeBuildInputs = [ + build-system = [ poetry-core ]; - propagatedBuildInputs = [ + dependencies = [ aiohttp python-engineio python-socketio From 6cbbea826fbcdc5d7a97185f4a37a93c79ed48d7 Mon Sep 17 00:00:00 2001 From: Fabian Affolter Date: Thu, 28 Mar 2024 10:41:43 +0100 Subject: [PATCH 099/116] python312Packages.aioambient: add certifi --- pkgs/development/python-modules/aioambient/default.nix | 2 ++ 1 file changed, 2 insertions(+) diff --git a/pkgs/development/python-modules/aioambient/default.nix b/pkgs/development/python-modules/aioambient/default.nix index d80b387069f5..5646bf02b8a2 100644 --- a/pkgs/development/python-modules/aioambient/default.nix +++ b/pkgs/development/python-modules/aioambient/default.nix @@ -2,6 +2,7 @@ , aiohttp , aresponses , buildPythonPackage +, certifi , fetchFromGitHub , poetry-core , pytest-aiohttp @@ -33,6 +34,7 @@ buildPythonPackage rec { dependencies = [ aiohttp + certifi python-engineio python-socketio websockets From 46d0743eea313e14dc2714d30be1aa5f666ec5fa Mon Sep 17 00:00:00 2001 From: Fabian Affolter Date: Thu, 28 Mar 2024 10:43:58 +0100 Subject: [PATCH 100/116] python311Packages.deprecat: refactor --- pkgs/development/python-modules/deprecat/default.nix | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/pkgs/development/python-modules/deprecat/default.nix b/pkgs/development/python-modules/deprecat/default.nix index 194859ad531a..5584261bcc54 100644 --- a/pkgs/development/python-modules/deprecat/default.nix +++ b/pkgs/development/python-modules/deprecat/default.nix @@ -10,22 +10,22 @@ buildPythonPackage rec { pname = "deprecat"; version = "2.1.2"; - format = "setuptools"; + pyproject = true; disabled = pythonOlder "3.7"; src = fetchFromGitHub { owner = "mjhajharia"; - repo = pname; + repo = "deprecat"; rev = "refs/tags/v${version}"; hash = "sha256-uAabZAtZDhcX6TfiM0LnrAzxxS64ys+vdodmxO//0x8="; }; - nativeBuildInputs = [ + build-system = [ setuptools-scm ]; - propagatedBuildInputs = [ + dependencies = [ wrapt ]; From b39e6ad6a7969a765e9a71b1e774d1c13763f235 Mon Sep 17 00:00:00 2001 From: Fabian Affolter Date: Thu, 28 Mar 2024 10:47:47 +0100 Subject: [PATCH 101/116] python311Packages.deprecat: disable sphinx tests --- pkgs/development/python-modules/deprecat/default.nix | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/pkgs/development/python-modules/deprecat/default.nix b/pkgs/development/python-modules/deprecat/default.nix index 5584261bcc54..a87394dea289 100644 --- a/pkgs/development/python-modules/deprecat/default.nix +++ b/pkgs/development/python-modules/deprecat/default.nix @@ -37,6 +37,11 @@ buildPythonPackage rec { "deprecat" ]; + disabledTestPaths = [ + # https://github.com/mjhajharia/deprecat/issues/13 + "tests/test_sphinx.py" + ]; + meta = with lib; { description = "Decorator to deprecate old python classes, functions or methods"; homepage = "https://github.com/mjhajharia/deprecat"; From 307f7fc836a6a6ad94cf77b436ea0c2250c86308 Mon Sep 17 00:00:00 2001 From: Fabian Affolter Date: Thu, 28 Mar 2024 10:50:25 +0100 Subject: [PATCH 102/116] python312Packages.myjwt: refactor --- pkgs/development/python-modules/myjwt/default.nix | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pkgs/development/python-modules/myjwt/default.nix b/pkgs/development/python-modules/myjwt/default.nix index c310c7efe1a1..3812efbcd5e1 100644 --- a/pkgs/development/python-modules/myjwt/default.nix +++ b/pkgs/development/python-modules/myjwt/default.nix @@ -34,7 +34,7 @@ buildPythonPackage rec { postPatch = '' substituteInPlace pyproject.toml \ - --replace-warn "1.6.0" "${version}" + --replace-fail "1.6.0" "${version}" ''; pythonRelaxDeps = [ @@ -42,12 +42,12 @@ buildPythonPackage rec { "questionary" ]; - nativeBuildInputs = [ + build-system = [ poetry-core pythonRelaxDepsHook ]; - propagatedBuildInputs = [ + dependencies = [ click colorama cryptography From 527dfe9b5521f722ebc2e9e783de6cf8a36be36b Mon Sep 17 00:00:00 2001 From: Fabian Affolter Date: Thu, 28 Mar 2024 10:51:18 +0100 Subject: [PATCH 103/116] python312Packages.myjwt: relax pyopenssl --- pkgs/development/python-modules/myjwt/default.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/pkgs/development/python-modules/myjwt/default.nix b/pkgs/development/python-modules/myjwt/default.nix index 3812efbcd5e1..d0d39dc9d087 100644 --- a/pkgs/development/python-modules/myjwt/default.nix +++ b/pkgs/development/python-modules/myjwt/default.nix @@ -39,6 +39,7 @@ buildPythonPackage rec { pythonRelaxDeps = [ "cryptography" + "pyopenssl" "questionary" ]; From 6f7292268a1b5c36593f47483a26874fa4da5f0e Mon Sep 17 00:00:00 2001 From: Weijia Wang <9713184+wegank@users.noreply.github.com> Date: Thu, 28 Mar 2024 10:51:46 +0100 Subject: [PATCH 104/116] cue: fix eval --- pkgs/development/tools/cue/default.nix | 1 - 1 file changed, 1 deletion(-) diff --git a/pkgs/development/tools/cue/default.nix b/pkgs/development/tools/cue/default.nix index 6219cd4f300a..ee9af03bb888 100644 --- a/pkgs/development/tools/cue/default.nix +++ b/pkgs/development/tools/cue/default.nix @@ -45,7 +45,6 @@ buildGoModule rec { meta = with lib; { description = "A data constraint language which aims to simplify tasks involving defining and using data"; - mainProgram = "cue"; homepage = "https://cuelang.org/"; license = lib.licenses.asl20; maintainers = with maintainers; [ aaronjheng ]; From 378dccc2a8f2cf4d08dbe8c42ab348243284a5a8 Mon Sep 17 00:00:00 2001 From: Fabian Affolter Date: Thu, 28 Mar 2024 10:55:08 +0100 Subject: [PATCH 105/116] python312Packages.lxmf: refactor --- pkgs/development/python-modules/lxmf/default.nix | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pkgs/development/python-modules/lxmf/default.nix b/pkgs/development/python-modules/lxmf/default.nix index e15af88fda8f..6682b2b09f64 100644 --- a/pkgs/development/python-modules/lxmf/default.nix +++ b/pkgs/development/python-modules/lxmf/default.nix @@ -20,11 +20,11 @@ buildPythonPackage rec { hash = "sha256-8Usu2fecSnyVfGrEJED4qMBO5RwJjTq5c7svCTu445Q="; }; - nativeBuildInputs = [ + build-system = [ setuptools ]; - propagatedBuildInputs = [ + dependencies = [ rns ]; @@ -37,10 +37,10 @@ buildPythonPackage rec { meta = with lib; { description = "Lightweight Extensible Message Format for Reticulum"; - mainProgram = "lxmd"; homepage = "https://github.com/markqvist/lxmf"; changelog = "https://github.com/markqvist/LXMF/releases/tag/${version}"; license = licenses.mit; maintainers = with maintainers; [ fab ]; + mainProgram = "lxmd"; }; } From 63bd7f0d714702404aa957abcc21c957e2743563 Mon Sep 17 00:00:00 2001 From: Fabian Affolter Date: Thu, 28 Mar 2024 10:56:34 +0100 Subject: [PATCH 106/116] python312Packages.pynobo: refactor --- pkgs/development/python-modules/pynobo/default.nix | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/pkgs/development/python-modules/pynobo/default.nix b/pkgs/development/python-modules/pynobo/default.nix index aa53aaab41f7..c4da63a0e333 100644 --- a/pkgs/development/python-modules/pynobo/default.nix +++ b/pkgs/development/python-modules/pynobo/default.nix @@ -2,22 +2,27 @@ , buildPythonPackage , fetchFromGitHub , pythonOlder +, setuptools }: buildPythonPackage rec { pname = "pynobo"; version = "1.8.0"; - format = "setuptools"; + pyproject = true; disabled = pythonOlder "3.7"; src = fetchFromGitHub { owner = "echoromeo"; - repo = pname; + repo = "pynobo"; rev = "refs/tags/v${version}"; hash = "sha256-Hfyf7XGleDWTKKWNlItcBFuiS3UEwsYed7v5FPRdC0w="; }; + build-system = [ + setuptools + ]; + # Project has no tests doCheck = false; From e577190de3467056dd8694dd89b38abb0f3f2c17 Mon Sep 17 00:00:00 2001 From: Fabian Affolter Date: Thu, 28 Mar 2024 10:59:02 +0100 Subject: [PATCH 107/116] python312Packages.requirements-parser: refactor - add changelog to meta --- .../python-modules/requirements-parser/default.nix | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/pkgs/development/python-modules/requirements-parser/default.nix b/pkgs/development/python-modules/requirements-parser/default.nix index c036938c846a..b2b7697a464a 100644 --- a/pkgs/development/python-modules/requirements-parser/default.nix +++ b/pkgs/development/python-modules/requirements-parser/default.nix @@ -11,22 +11,22 @@ buildPythonPackage rec { pname = "requirements-parser"; version = "0.6.0"; - format = "pyproject"; + pyproject = true; disabled = pythonOlder "3.7"; src = fetchFromGitHub { owner = "madpah"; - repo = pname; + repo = "requirements-parser"; rev = "refs/tags/v${version}"; hash = "sha256-fUx6NBD6qxAyArGgCiB2J1Ak7pudx/LI0+rCHjLnc1M="; }; - nativeBuildInputs = [ + build-system = [ poetry-core ]; - propagatedBuildInputs = [ + dependencies = [ setuptools types-setuptools ]; @@ -42,7 +42,8 @@ buildPythonPackage rec { meta = with lib; { description = "Pip requirements file parser"; homepage = "https://github.com/davidfischer/requirements-parser"; + changelog = "https://github.com/madpah/requirements-parser/blob/v${version}/CHANGELOG.md"; license = licenses.bsd2; - maintainers = [ ]; + maintainers = with maintainers; [ ]; }; } From 5e24981541dfd3453d5ef7ebee74ef9a8bc06df3 Mon Sep 17 00:00:00 2001 From: Gavin John Date: Thu, 28 Mar 2024 05:03:47 -0500 Subject: [PATCH 108/116] aliases: fix extraordinarily minor typo (#299258) --- pkgs/top-level/aliases.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkgs/top-level/aliases.nix b/pkgs/top-level/aliases.nix index 2c320932cfa7..8f271535dbd9 100644 --- a/pkgs/top-level/aliases.nix +++ b/pkgs/top-level/aliases.nix @@ -1195,7 +1195,7 @@ mapAliases ({ tdesktop = telegram-desktop; # Added 2023-04-07 telegram-cli = throw "telegram-cli was removed because it was broken and abandoned upstream"; # Added 2023-07-28 teleport_11 = throw "teleport 11 has been removed as it is EOL. Please upgrade to Teleport 12 or later"; # Added 2023-11-27 - teleprompter = throw "teleprompter has been removed. reason: upstream dead and does not work with recent electron versions"; # Adedd 2024-03-14 + teleprompter = throw "teleprompter has been removed. reason: upstream dead and does not work with recent electron versions"; # Added 2024-03-14 tensile = throw "'tensile' has been replaced with 'rocmPackages.tensile'"; # Added 2023-10-08 testVersion = testers.testVersion; # Added 2022-04-20 tfplugindocs = terraform-plugin-docs; # Added 2023-11-01 From 12aee00d0e461ec4e69a7c2231a64744fbd8081c Mon Sep 17 00:00:00 2001 From: Fabian Affolter Date: Thu, 28 Mar 2024 11:05:29 +0100 Subject: [PATCH 109/116] rstfmt: refactor --- pkgs/development/tools/rstfmt/default.nix | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/pkgs/development/tools/rstfmt/default.nix b/pkgs/development/tools/rstfmt/default.nix index e09b18a138d1..3d86581c6dd0 100644 --- a/pkgs/development/tools/rstfmt/default.nix +++ b/pkgs/development/tools/rstfmt/default.nix @@ -6,7 +6,7 @@ python3.pkgs.buildPythonApplication rec { pname = "rstfmt"; version = "0.0.13"; - format = "pyproject"; + pyproject = true; src = fetchFromGitHub { owner = "dzhu"; @@ -15,7 +15,11 @@ python3.pkgs.buildPythonApplication rec { hash = "sha256-SJRA14CfoT8XMt3hMB7cLdmuLwsJnBSwhKkD1pJvQCI="; }; - propagatedBuildInputs = with python3.pkgs; [ + build-system = with python3.pkgs; [ + setuptools + ]; + + dependencies = with python3.pkgs; [ black docutils sphinx @@ -31,6 +35,7 @@ python3.pkgs.buildPythonApplication rec { meta = with lib; { description = "A formatter for reStructuredText"; homepage = "https://github.com/dzhu/rstfmt"; + changelog = "https://github.com/dzhu/rstfmt/releases/tag/v${version}"; license = licenses.mit; maintainers = with maintainers; [ fab ]; }; From de96c7b25b4807905cece1bcfe9fb65d82674ee7 Mon Sep 17 00:00:00 2001 From: Fabian Affolter Date: Thu, 28 Mar 2024 11:06:07 +0100 Subject: [PATCH 110/116] rstfmt: 0.0.13 -> 0.0.14 Diff: https://github.com/dzhu/rstfmt/compare/refs/tags/v0.0.13...v0.0.14 Changelog: https://github.com/dzhu/rstfmt/releases/tag/v0.0.14 --- pkgs/development/tools/rstfmt/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/development/tools/rstfmt/default.nix b/pkgs/development/tools/rstfmt/default.nix index 3d86581c6dd0..25b20365a309 100644 --- a/pkgs/development/tools/rstfmt/default.nix +++ b/pkgs/development/tools/rstfmt/default.nix @@ -5,14 +5,14 @@ python3.pkgs.buildPythonApplication rec { pname = "rstfmt"; - version = "0.0.13"; + version = "0.0.14"; pyproject = true; src = fetchFromGitHub { owner = "dzhu"; repo = "rstfmt"; rev = "refs/tags/v${version}"; - hash = "sha256-SJRA14CfoT8XMt3hMB7cLdmuLwsJnBSwhKkD1pJvQCI="; + hash = "sha256-zvmKgNzfxyWYHoaD+q84I48r1Mpp4kU4oIGAwMSRRlA="; }; build-system = with python3.pkgs; [ From 472c35cbac5a16a080ca24d7d111c2550c5ad84c Mon Sep 17 00:00:00 2001 From: Vincent Laporte Date: Thu, 21 Mar 2024 07:38:00 +0100 Subject: [PATCH 111/116] =?UTF-8?q?stog:=200.20.0=20=E2=86=92=201.0.0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pkgs/applications/misc/stog/default.nix | 18 ++++-------------- pkgs/top-level/all-packages.nix | 2 +- 2 files changed, 5 insertions(+), 15 deletions(-) diff --git a/pkgs/applications/misc/stog/default.nix b/pkgs/applications/misc/stog/default.nix index 17affeb3bbf6..b91624525483 100644 --- a/pkgs/applications/misc/stog/default.nix +++ b/pkgs/applications/misc/stog/default.nix @@ -1,28 +1,18 @@ -{ lib, buildDunePackage, fetchFromGitLab, fetchpatch, ocaml +{ lib, buildDunePackage, fetchFromGitLab , fmt, lwt_ppx, menhir, ocf_ppx, ppx_blob, xtmpl_ppx , dune-build-info, dune-site, higlo, logs, lwt, ocf, ptime, uri, uutf, xtmpl }: -if lib.versionAtLeast ocaml.version "4.13" -then throw "stog is not available for OCaml ${ocaml.version}" -else - buildDunePackage rec { pname = "stog"; - version = "0.20.0"; - minimalOCamlVersion = "4.12"; + version = "1.0.0"; + minimalOCamlVersion = "4.13"; src = fetchFromGitLab { domain = "framagit.org"; owner = "zoggy"; repo = "stog"; rev = version; - sha256 = "sha256:0krj5w4y05bcfx7hk9blmap8avl31gp7yi01lpqzs6ync23mvm0x"; - }; - - # Compatibility with higlo 0.9 - patches = fetchpatch { - url = "https://framagit.org/zoggy/stog/-/commit/ea0546ab4cda8cc5c4c820ebaf2e3dfddc2ab101.patch"; - hash = "sha256-86GRHF9OjfcalGfA0Om2wXH99j4THCs9a4+o5ghuiJc="; + hash = "sha256-hMb6D6VSq2o2NjycwxZt3mZKy1FR+3afEwbOmTc991g="; }; nativeBuildInputs = [ menhir ]; diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index a66db6cf7b67..8ad4db7f4f6d 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -34895,7 +34895,7 @@ with pkgs; stalonetray = callPackage ../applications/window-managers/stalonetray { }; - inherit (ocaml-ng.ocamlPackages_4_12) stog; + inherit (ocaml-ng.ocamlPackages) stog; stp = callPackage ../applications/science/logic/stp { }; From b4c92ba59d38a500593543d96dbb3031cc00142e Mon Sep 17 00:00:00 2001 From: Vincent Laporte Date: Thu, 21 Mar 2024 07:38:00 +0100 Subject: [PATCH 112/116] ocamlPackages.stog_asy: init at 1.0.0 --- pkgs/applications/misc/stog/asy.nix | 14 ++++++++++++++ pkgs/top-level/ocaml-packages.nix | 1 + 2 files changed, 15 insertions(+) create mode 100644 pkgs/applications/misc/stog/asy.nix diff --git a/pkgs/applications/misc/stog/asy.nix b/pkgs/applications/misc/stog/asy.nix new file mode 100644 index 000000000000..58f1cf35f4d4 --- /dev/null +++ b/pkgs/applications/misc/stog/asy.nix @@ -0,0 +1,14 @@ +{ buildDunePackage, stog, ocf_ppx }: + +buildDunePackage { + pname = "stog_asy"; + + inherit (stog) version src; + + buildInputs = [ ocf_ppx ]; + propagatedBuildInputs = [ stog ]; + + meta = stog.meta // { + description = "Stog plugin to include Asymptote results in documents"; + }; +} diff --git a/pkgs/top-level/ocaml-packages.nix b/pkgs/top-level/ocaml-packages.nix index d74746e08c59..f972d257c05d 100644 --- a/pkgs/top-level/ocaml-packages.nix +++ b/pkgs/top-level/ocaml-packages.nix @@ -1724,6 +1724,7 @@ let stdune = callPackage ../development/ocaml-modules/stdune { }; stog = callPackage ../applications/misc/stog { }; + stog_asy = callPackage ../applications/misc/stog/asy.nix { }; stringext = callPackage ../development/ocaml-modules/stringext { }; From ce39273a07499c89d3fcb42989583098cea295f8 Mon Sep 17 00:00:00 2001 From: Vincent Laporte Date: Thu, 21 Mar 2024 07:38:00 +0100 Subject: [PATCH 113/116] ocamlPackages.stog_markdown: init at 1.0.0 --- pkgs/applications/misc/stog/markdown.nix | 15 +++++++++++++++ pkgs/top-level/ocaml-packages.nix | 1 + 2 files changed, 16 insertions(+) create mode 100644 pkgs/applications/misc/stog/markdown.nix diff --git a/pkgs/applications/misc/stog/markdown.nix b/pkgs/applications/misc/stog/markdown.nix new file mode 100644 index 000000000000..48fd4a0b0096 --- /dev/null +++ b/pkgs/applications/misc/stog/markdown.nix @@ -0,0 +1,15 @@ +{ buildDunePackage, stog, ocf_ppx, omd }: + +buildDunePackage { + pname = "stog_markdown"; + + inherit (stog) version src; + + buildInputs = [ ocf_ppx ]; + propagatedBuildInputs = [ omd stog ]; + + meta = stog.meta // { + description = "Stog plugin to use markdown syntax"; + }; +} + diff --git a/pkgs/top-level/ocaml-packages.nix b/pkgs/top-level/ocaml-packages.nix index f972d257c05d..a06e5c595c7c 100644 --- a/pkgs/top-level/ocaml-packages.nix +++ b/pkgs/top-level/ocaml-packages.nix @@ -1725,6 +1725,7 @@ let stog = callPackage ../applications/misc/stog { }; stog_asy = callPackage ../applications/misc/stog/asy.nix { }; + stog_markdown = callPackage ../applications/misc/stog/markdown.nix { }; stringext = callPackage ../development/ocaml-modules/stringext { }; From d7d6471a6958f0a2047a4da7d15aae7e3ec285e1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vladim=C3=ADr=20=C4=8Cun=C3=A1t?= Date: Thu, 28 Mar 2024 11:28:22 +0100 Subject: [PATCH 114/116] bind: doCheck = false; The flakiness of netmgr_test and doh_test on Hydra is very annoying. It's a long-term problem, and sometimes really bad: https://hydra.nixos.org/build/254045328#tabs-buildsteps Feel free to do partial test instead of full disabling, or anything that's relatively reliable. --- pkgs/servers/dns/bind/default.nix | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/pkgs/servers/dns/bind/default.nix b/pkgs/servers/dns/bind/default.nix index c1507d4ea5cd..4981f5938de2 100644 --- a/pkgs/servers/dns/bind/default.nix +++ b/pkgs/servers/dns/bind/default.nix @@ -77,11 +77,15 @@ stdenv.mkDerivation rec { ''; enableParallelBuilding = true; - # TODO: investigate the aarch64-linux failures; see this and linked discussions: + + doCheck = false; + # TODO: investigate failures; see this and linked discussions: # https://github.com/NixOS/nixpkgs/pull/192962 + /* doCheck = with stdenv.hostPlatform; !isStatic && !(isAarch64 && isLinux) # https://gitlab.isc.org/isc-projects/bind9/-/issues/4269 && !is32bit; + */ checkTarget = "unit"; checkInputs = [ cmocka From 6ee3a444b9388293ae70d82534c8a4dd8f9f53e7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vladim=C3=ADr=20=C4=8Cun=C3=A1t?= Date: Thu, 28 Mar 2024 11:45:21 +0100 Subject: [PATCH 115/116] python3Packages.apsw: 3.45.1.0 -> 3.45.2.0 https://github.com/rogerbinns/apsw/releases/tag/3.45.2.0 Fixes build (tests) after sqlite update in PR #295538 --- pkgs/development/python-modules/apsw/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/development/python-modules/apsw/default.nix b/pkgs/development/python-modules/apsw/default.nix index 153b8b3b05dd..bdd640a4ce50 100644 --- a/pkgs/development/python-modules/apsw/default.nix +++ b/pkgs/development/python-modules/apsw/default.nix @@ -8,7 +8,7 @@ buildPythonPackage rec { pname = "apsw"; - version = "3.45.1.0"; + version = "3.45.2.0"; format = "setuptools"; disabled = isPyPy; @@ -17,7 +17,7 @@ buildPythonPackage rec { owner = "rogerbinns"; repo = "apsw"; rev = "refs/tags/${version}"; - hash = "sha256-NkpkciLR2TgfK/7UQHEzvQu8qRj4UJyOlGQbiV23qrc="; + hash = "sha256-tTi3/10W4OoGH6PQVhvPWc5o09on5BZrWoAvrfh4C/E="; }; buildInputs = [ From b82bcbdb356ad5811d2702dff0b7a1d96308cb30 Mon Sep 17 00:00:00 2001 From: Sascha Grunert Date: Thu, 28 Mar 2024 12:45:17 +0100 Subject: [PATCH 116/116] gopls: set correct version (#299690) Signed-off-by: Sascha Grunert --- pkgs/development/tools/language-servers/gopls/default.nix | 3 +++ 1 file changed, 3 insertions(+) diff --git a/pkgs/development/tools/language-servers/gopls/default.nix b/pkgs/development/tools/language-servers/gopls/default.nix index 63937dbfe865..509eb290c2e8 100644 --- a/pkgs/development/tools/language-servers/gopls/default.nix +++ b/pkgs/development/tools/language-servers/gopls/default.nix @@ -14,6 +14,9 @@ buildGoModule rec { modRoot = "gopls"; vendorHash = "sha256-q7vWiXJAX4u8B4RyFc7kg1BvMCPaTBFOVkWXeE78Emo="; + # https://github.com/golang/tools/blob/9ed98faa/gopls/main.go#L27-L30 + ldflags = [ "-X main.version=v${version}" ]; + doCheck = false; # Only build gopls, and not the integration tests or documentation generator.