diff --git a/doc/languages-frameworks/index.md b/doc/languages-frameworks/index.md index cdbf08f1791b..f177de507841 100644 --- a/doc/languages-frameworks/index.md +++ b/doc/languages-frameworks/index.md @@ -24,6 +24,7 @@ idris.section.md ios.section.md java.section.md javascript.section.md +julia.section.md lisp.section.md lua.section.md maven.section.md diff --git a/doc/languages-frameworks/julia.section.md b/doc/languages-frameworks/julia.section.md new file mode 100644 index 000000000000..235861ac528f --- /dev/null +++ b/doc/languages-frameworks/julia.section.md @@ -0,0 +1,69 @@ +# Julia {#language-julia} + +## Introduction {#julia-introduction} + +Nixpkgs includes Julia as the `julia` derivation. +You can get specific versions by looking at the other `julia*` top-level derivations available. +For example, `julia_19` corresponds to Julia 1.9. +We also provide the current stable version as `julia-stable`, and an LTS version as `julia-lts`. + +Occasionally, a Julia version has been too difficult to build from source in Nixpkgs and has been fetched prebuilt instead. +These Julia versions are differentiated with the `*-bin` suffix; for example, `julia-stable-bin`. + +## julia.withPackages {#julia-withpackage} + +The basic Julia derivations only provide the built-in packages that come with the distribution. + +You can build Julia environments with additional packages using the `julia.withPackages` command. +This function accepts a list of strings representing Julia package names. +For example, you can build a Julia environment with the `Plots` package as follows. + +```nix +julia.withPackages ["Plots"] +``` + +Arguments can be passed using `.override`. +For example: + +```nix +(julia.withPackages.override { + precompile = false; # Turn off precompilation +}) ["Plots"] +``` + +Here's a nice way to run a Julia environment with a shell one-liner: + +```sh +nix-shell -p 'julia.withPackages ["Plots"]' --run julia +``` + +### Arguments {#julia-withpackage-arguments} + +* `precompile`: Whether to run `Pkg.precompile()` on the generated environment. + + This will make package imports faster, but may fail in some cases. + For example, there is an upstream issue with `Gtk.jl` that prevents precompilation from working in the Nix build sandbox, because the precompiled code tries to access a display. + Packages like this will work fine if you build with `precompile=false`, and then precompile as needed once your environment starts. + + Defaults: `true` + +* `extraLibs`: Extra library dependencies that will be placed on the `LD_LIBRARY_PATH` for Julia. + + Should not be needed as we try to obtain library dependencies automatically using Julia's artifacts system. + +* `makeWrapperArgs`: Extra arguments to pass to the `makeWrapper` call which we use to wrap the Julia binary. +* `setDefaultDepot`: Whether to automatically prepend `$HOME/.julia` to the `JULIA_DEPOT_PATH`. + + This is useful because Julia expects a writable depot path as the first entry, which the one we build in Nixpkgs is not. + If there's no writable depot, then Julia will show a warning and be unable to save command history logs etc. + + Default: `true` + +* `packageOverrides`: Allows you to override packages by name by passing an alternative source. + + For example, you can use a custom version of the `LanguageServer` package by passing `packageOverrides = { "LanguageServer" = fetchFromGitHub {...}; }`. + +* `augmentedRegistry`: Allows you to change the registry from which Julia packages are drawn. + + This normally points at a special augmented version of the Julia [General packages registry](https://github.com/JuliaRegistries/General). + If you want to use a bleeding-edge version to pick up the latest package updates, you can plug in a later revision than the one in Nixpkgs. diff --git a/nixos/doc/manual/release-notes/rl-2405.section.md b/nixos/doc/manual/release-notes/rl-2405.section.md index 446b0bf9dd01..879db6b15fa3 100644 --- a/nixos/doc/manual/release-notes/rl-2405.section.md +++ b/nixos/doc/manual/release-notes/rl-2405.section.md @@ -14,6 +14,8 @@ In addition to numerous new and upgraded packages, this release has the followin - This can be disabled through the `environment.stub-ld.enable` option. - If you use `programs.nix-ld.enable`, no changes are needed. The stub will be disabled automatically. +- Julia environments can now be built with arbitrary packages from the ecosystem using the `.withPackages` function. For example: `julia.withPackages ["Plots"]`. + ## New Services {#sec-release-24.05-new-services} diff --git a/nixos/modules/hardware/video/nvidia.nix b/nixos/modules/hardware/video/nvidia.nix index c76883b656d4..3b983f768f91 100644 --- a/nixos/modules/hardware/video/nvidia.nix +++ b/nixos/modules/hardware/video/nvidia.nix @@ -47,7 +47,8 @@ in { TRUNK_LINK_FAILURE_MODE=0; NVSWITCH_FAILURE_MODE=0; ABORT_CUDA_JOBS_ON_FM_EXIT=1; - TOPOLOGY_FILE_PATH=nvidia_x11.fabricmanager + "/share/nvidia-fabricmanager/nvidia/nvswitch"; + TOPOLOGY_FILE_PATH="${nvidia_x11.fabricmanager}/share/nvidia-fabricmanager/nvidia/nvswitch"; + DATABASE_PATH="${nvidia_x11.fabricmanager}/share/nvidia-fabricmanager/nvidia/nvswitch"; }; defaultText = lib.literalExpression '' { @@ -69,7 +70,8 @@ in { TRUNK_LINK_FAILURE_MODE=0; NVSWITCH_FAILURE_MODE=0; ABORT_CUDA_JOBS_ON_FM_EXIT=1; - TOPOLOGY_FILE_PATH=nvidia_x11.fabricmanager + "/share/nvidia-fabricmanager/nvidia/nvswitch"; + TOPOLOGY_FILE_PATH="''${nvidia_x11.fabricmanager}/share/nvidia-fabricmanager/nvidia/nvswitch"; + DATABASE_PATH="''${nvidia_x11.fabricmanager}/share/nvidia-fabricmanager/nvidia/nvswitch"; } ''; description = lib.mdDoc '' @@ -584,24 +586,50 @@ in { boot.extraModulePackages = [ nvidia_x11.bin ]; - systemd.services.nvidia-fabricmanager = { - enable = true; - description = "Start NVIDIA NVLink Management"; - wantedBy = [ "multi-user.target" ]; - unitConfig.After = [ "network-online.target" ]; - unitConfig.Requires = [ "network-online.target" ]; - serviceConfig = { - Type = "forking"; - TimeoutStartSec = 240; - ExecStart = let - nv-fab-conf = settingsFormat.generate "fabricmanager.conf" cfg.datacenter.settings; - in - nvidia_x11.fabricmanager + "/bin/nv-fabricmanager -c " + nv-fab-conf; - LimitCORE="infinity"; - }; - }; - environment.systemPackages = - lib.optional cfg.datacenter.enable nvidia_x11.fabricmanager; - }) - ]); + + systemd = { + tmpfiles.rules = + lib.optional (nvidia_x11.persistenced != null && config.virtualisation.docker.enableNvidia) + "L+ /run/nvidia-docker/extras/bin/nvidia-persistenced - - - - ${nvidia_x11.persistenced}/origBin/nvidia-persistenced"; + + services = lib.mkMerge [ + ({ + nvidia-fabricmanager = { + enable = true; + description = "Start NVIDIA NVLink Management"; + wantedBy = [ "multi-user.target" ]; + unitConfig.After = [ "network-online.target" ]; + unitConfig.Requires = [ "network-online.target" ]; + serviceConfig = { + Type = "forking"; + TimeoutStartSec = 240; + ExecStart = let + nv-fab-conf = settingsFormat.generate "fabricmanager.conf" cfg.datacenter.settings; + in + "${lib.getExe nvidia_x11.fabricmanager} -c ${nv-fab-conf}"; + LimitCORE="infinity"; + }; + }; + }) + (lib.mkIf cfg.nvidiaPersistenced { + "nvidia-persistenced" = { + description = "NVIDIA Persistence Daemon"; + wantedBy = ["multi-user.target"]; + serviceConfig = { + Type = "forking"; + Restart = "always"; + PIDFile = "/var/run/nvidia-persistenced/nvidia-persistenced.pid"; + ExecStart = "${lib.getExe nvidia_x11.persistenced} --verbose"; + ExecStopPost = "${pkgs.coreutils}/bin/rm -rf /var/run/nvidia-persistenced"; + }; + }; + }) + ]; + }; + + environment.systemPackages = + lib.optional cfg.datacenter.enable nvidia_x11.fabricmanager + ++ lib.optional cfg.nvidiaPersistenced nvidia_x11.persistenced; + }) + ]); } diff --git a/nixos/modules/services/monitoring/prometheus/exporters/sabnzbd.nix b/nixos/modules/services/monitoring/prometheus/exporters/sabnzbd.nix index 411277494013..b9ab305f7c08 100644 --- a/nixos/modules/services/monitoring/prometheus/exporters/sabnzbd.nix +++ b/nixos/modules/services/monitoring/prometheus/exporters/sabnzbd.nix @@ -19,7 +19,11 @@ in }; apiKeyFile = mkOption { type = types.str; - description = "File containing the API key."; + description = '' + The path to a file containing the API key. + The file is securely passed to the service by leveraging systemd credentials. + No special permissions need to be set on this file. + ''; example = "/run/secrets/sabnzbd_apikey"; }; }; @@ -30,18 +34,24 @@ in serviceOpts = let servers = lib.zipAttrs cfg.servers; - apiKeys = lib.concatStringsSep "," (builtins.map (file: "$(cat ${file})") servers.apiKeyFile); + credentials = lib.imap0 (i: v: { name = "apikey-${toString i}"; path = v; }) servers.apiKeyFile; in { + serviceConfig.LoadCredential = builtins.map ({ name, path }: "${name}:${path}") credentials; + environment = { METRICS_PORT = toString cfg.port; METRICS_ADDR = cfg.listenAddress; SABNZBD_BASEURLS = lib.concatStringsSep "," servers.baseUrl; }; - script = '' - export SABNZBD_APIKEYS="${apiKeys}" - exec ${lib.getExe pkgs.prometheus-sabnzbd-exporter} - ''; + script = + let + apiKeys = lib.concatStringsSep "," (builtins.map (cred: "$(< $CREDENTIALS_DIRECTORY/${cred.name})") credentials); + in + '' + export SABNZBD_APIKEYS="${apiKeys}" + exec ${lib.getExe pkgs.prometheus-sabnzbd-exporter} + ''; }; } diff --git a/nixos/modules/services/monitoring/ups.nix b/nixos/modules/services/monitoring/ups.nix index c9dda8a8c093..63afb5deb5bd 100644 --- a/nixos/modules/services/monitoring/ups.nix +++ b/nixos/modules/services/monitoring/ups.nix @@ -590,6 +590,7 @@ in "d /var/lib/nut 700" ]; + services.udev.packages = [ pkgs.nut ]; /* users.users.nut = diff --git a/pkgs/applications/audio/pithos/default.nix b/pkgs/applications/audio/pithos/default.nix index ed861f12468b..6de3da92db8a 100644 --- a/pkgs/applications/audio/pithos/default.nix +++ b/pkgs/applications/audio/pithos/default.nix @@ -4,13 +4,13 @@ pythonPackages.buildPythonApplication rec { pname = "pithos"; - version = "1.6.0"; + version = "1.6.1"; src = fetchFromGitHub { owner = pname; repo = pname; rev = version; - hash = "sha256-cFmsdQXfGxgpKe32dw1lgoANU9Drhu5Mecyz37BVP4g="; + hash = "sha256-GPDbFlwiGT/B2paX33d3mUCV77q+fPM0LMaKFsQQjjQ="; }; format = "other"; diff --git a/pkgs/applications/graphics/cloudcompare/default.nix b/pkgs/applications/graphics/cloudcompare/default.nix index f2d008f7492b..7f8d9be53b85 100644 --- a/pkgs/applications/graphics/cloudcompare/default.nix +++ b/pkgs/applications/graphics/cloudcompare/default.nix @@ -4,7 +4,7 @@ , fetchFromGitHub , cmake , boost -, cgal_5 +, cgal , eigen , flann , gdal @@ -41,7 +41,7 @@ mkDerivation rec { buildInputs = [ boost - cgal_5 + cgal flann gdal gmp diff --git a/pkgs/applications/graphics/meshlab/default.nix b/pkgs/applications/graphics/meshlab/default.nix index 3da49cf80109..656713fb25e4 100644 --- a/pkgs/applications/graphics/meshlab/default.nix +++ b/pkgs/applications/graphics/meshlab/default.nix @@ -14,7 +14,7 @@ , levmar , qhull , cmake -, cgal_5 +, cgal , boost179 , mpfr , xercesc @@ -45,7 +45,7 @@ mkDerivation rec { gmp levmar qhull - cgal_5 + cgal boost179 mpfr xercesc diff --git a/pkgs/applications/graphics/openscad/default.nix b/pkgs/applications/graphics/openscad/default.nix index fc048d4acae8..24d1fdc06ae8 100644 --- a/pkgs/applications/graphics/openscad/default.nix +++ b/pkgs/applications/graphics/openscad/default.nix @@ -11,7 +11,7 @@ , libGLU, libGL , glew , opencsg -, cgal +, cgal_4 , mpfr , gmp , glib @@ -60,7 +60,7 @@ mkDerivation rec { nativeBuildInputs = [ bison flex pkg-config gettext qmake ]; buildInputs = [ - eigen boost glew opencsg cgal mpfr gmp glib + eigen boost glew opencsg cgal_4 mpfr gmp glib harfbuzz lib3mf libzip double-conversion freetype fontconfig qtbase qtmultimedia qscintilla cairo ] ++ lib.optionals stdenv.isLinux [ libGLU libGL wayland wayland-protocols qtwayland ] diff --git a/pkgs/applications/misc/mediainfo-gui/default.nix b/pkgs/applications/misc/mediainfo-gui/default.nix index d2e8c7aa59e9..e4b734b89aac 100644 --- a/pkgs/applications/misc/mediainfo-gui/default.nix +++ b/pkgs/applications/misc/mediainfo-gui/default.nix @@ -6,11 +6,11 @@ let in stdenv.mkDerivation rec { pname = "mediainfo-gui"; - version = "23.10"; + version = "23.11"; src = fetchurl { url = "https://mediaarea.net/download/source/mediainfo/${version}/mediainfo_${version}.tar.xz"; - hash = "sha256-t0OuJSHZ2Oi5pYUNfCop3jC6d321JzjQ37oXzARnduc="; + hash = "sha256-gByxsNG//MEibeymISoe41Mi6LsSYwozu7B6kqioycM="; }; nativeBuildInputs = [ autoreconfHook pkg-config ]; diff --git a/pkgs/applications/misc/nut/default.nix b/pkgs/applications/misc/nut/default.nix index 5596fc6010ec..2f3be342a7a8 100644 --- a/pkgs/applications/misc/nut/default.nix +++ b/pkgs/applications/misc/nut/default.nix @@ -18,6 +18,7 @@ , substituteAll , systemd , udev +, gnused }: stdenv.mkDerivation rec { @@ -30,6 +31,13 @@ stdenv.mkDerivation rec { }; patches = [ + # This patch injects a default value for NUT_CONFPATH into the nutshutdown script + # since the way we build the package results in the binaries being hardcoded to check + # $out/etc/ups.conf instead of /etc/nut/ups.conf (where the module places the file). + # We also cannot use `--sysconfdir=/etc/nut` since that results in the install phase + # trying to install directly into /etc/nut which predictably fails + ./nutshutdown-conf-default.patch + (substituteAll { src = ./hardcode-paths.patch; avahi = "${avahi}/lib"; @@ -63,16 +71,23 @@ stdenv.mkDerivation rec { postInstall = '' substituteInPlace $out/lib/systemd/system-shutdown/nutshutdown \ + --replace /bin/sed "${gnused}/bin/sed" \ --replace /bin/sleep "${coreutils}/bin/sleep" \ --replace /bin/systemctl "${systemd}/bin/systemctl" for file in system/{nut-monitor.service,nut-driver-enumerator.service,nut-server.service,nut-driver@.service} system-shutdown/nutshutdown; do - substituteInPlace $out/lib/systemd/$file \ - --replace "$out/etc/nut.conf" "/etc/nut.conf" + substituteInPlace $out/lib/systemd/$file \ + --replace "$out/etc/nut.conf" "/etc/nut/nut.conf" done + substituteInPlace $out/lib/systemd/system/nut-driver-enumerator.path \ + --replace "$out/etc/ups.conf" "/etc/nut/ups.conf" + # we don't need init.d scripts rm -r $out/share/solaris-init + + # Suspicious/overly broad rule, remove it until we know better + rm $out/etc/udev/rules.d/52-nut-ipmipsu.rules ''; meta = with lib; { diff --git a/pkgs/applications/misc/nut/nutshutdown-conf-default.patch b/pkgs/applications/misc/nut/nutshutdown-conf-default.patch new file mode 100644 index 000000000000..28e5a286126d --- /dev/null +++ b/pkgs/applications/misc/nut/nutshutdown-conf-default.patch @@ -0,0 +1,10 @@ +diff --git a/scripts/systemd/nutshutdown.in b/scripts/systemd/nutshutdown.in +index ace2485b3..9dee869bb 100755 +--- a/scripts/systemd/nutshutdown.in ++++ b/scripts/systemd/nutshutdown.in +@@ -1,4 +1,5 @@ + #!/bin/sh ++export NUT_CONFPATH="${NUT_CONFPATH-/etc/nut}" + + # This script requires both nut-server (drivers) + # and nut-client (upsmon) to be present locally diff --git a/pkgs/applications/misc/process-compose/default.nix b/pkgs/applications/misc/process-compose/default.nix index a7c37aeb964b..bd60eb62379d 100644 --- a/pkgs/applications/misc/process-compose/default.nix +++ b/pkgs/applications/misc/process-compose/default.nix @@ -8,13 +8,13 @@ let config-module = "github.com/f1bonacc1/process-compose/src/config"; in buildGoModule rec { pname = "process-compose"; - version = "0.77.4"; + version = "0.77.6"; src = fetchFromGitHub { owner = "F1bonacc1"; repo = pname; rev = "v${version}"; - hash = "sha256-uouF43SokBD+LCMqSDWJ3pj2LznfJYJoUkoTQ1TyYyI="; + hash = "sha256-sTRKk74R60TPuYtAvmc1o0YA934SZx39DrjyGkc0smc="; # populate values that require us to use git. By doing this in postFetch we # can delete .git afterwards and maintain better reproducibility of the src. leaveDotGit = true; diff --git a/pkgs/applications/misc/prusa-slicer/default.nix b/pkgs/applications/misc/prusa-slicer/default.nix index 8114f2ecb416..fa1a5c20e633 100644 --- a/pkgs/applications/misc/prusa-slicer/default.nix +++ b/pkgs/applications/misc/prusa-slicer/default.nix @@ -10,7 +10,7 @@ , wrapGAppsHook , boost , cereal -, cgal_5 +, cgal , curl , dbus , eigen @@ -90,7 +90,7 @@ stdenv.mkDerivation (finalAttrs: { binutils boost cereal - cgal_5 + cgal curl dbus eigen diff --git a/pkgs/applications/networking/asn/default.nix b/pkgs/applications/networking/asn/default.nix index e81931c619b3..694976f543c3 100644 --- a/pkgs/applications/networking/asn/default.nix +++ b/pkgs/applications/networking/asn/default.nix @@ -15,13 +15,13 @@ stdenv.mkDerivation rec { pname = "asn"; - version = "0.75"; + version = "0.75.2"; src = fetchFromGitHub { owner = "nitefood"; repo = "asn"; rev = "refs/tags/v${version}"; - hash = "sha256-XqP0Nx5pfYtM1xXxEDGooONj7nQ9UngJ9/AOZefnPV8="; + hash = "sha256-G8TDl9R5nbUzmjcr1m+eNNybSDqb64c7ZOO/viL5/Q4="; }; nativeBuildInputs = [ diff --git a/pkgs/applications/networking/browsers/chromium/common.nix b/pkgs/applications/networking/browsers/chromium/common.nix index 50d11ff39d84..c55b14a5e775 100644 --- a/pkgs/applications/networking/browsers/chromium/common.nix +++ b/pkgs/applications/networking/browsers/chromium/common.nix @@ -195,7 +195,7 @@ let buildPlatformLlvmStdenv.cc pkg-config libuuid - libpng # needed for "host/generate_colors_info" + (libpng.override { apngSupport = false; }) # needed for "host/generate_colors_info" ] # When cross-compiling, chromium builds a huge proportion of its # components for both the `buildPlatform` (which it calls diff --git a/pkgs/applications/networking/feedreaders/goeland/default.nix b/pkgs/applications/networking/feedreaders/goeland/default.nix index 0c97ad68b824..82f16223a1a3 100644 --- a/pkgs/applications/networking/feedreaders/goeland/default.nix +++ b/pkgs/applications/networking/feedreaders/goeland/default.nix @@ -5,16 +5,16 @@ buildGoModule rec { pname = "goeland"; - version = "0.16.0"; + version = "0.17.0"; src = fetchFromGitHub { owner = "slurdge"; repo = pname; rev = "v${version}"; - sha256 = "sha256-bjPmhNJFkN0N0Mx3Q4RJuNfeqFy9v8KphiAU1WyKCo4="; + sha256 = "sha256-ISAaV1MgqnzO2fMgoZZKT8FSDq6XIRvjWG72dALY+rU="; }; - vendorHash = "sha256-jYrPsVagGgvpQ9Zj3o2kB82xgw/yaJS9BXxuqMkNjEA="; + vendorHash = "sha256-uk1Ew77XaS/k7QXqNa70Nyynb+6pzs7B5jhusz3ffZY="; ldflags = [ "-s" diff --git a/pkgs/applications/science/biology/gatk/default.nix b/pkgs/applications/science/biology/gatk/default.nix index 43e5382b5d50..9884e3a77111 100644 --- a/pkgs/applications/science/biology/gatk/default.nix +++ b/pkgs/applications/science/biology/gatk/default.nix @@ -2,10 +2,10 @@ stdenv.mkDerivation rec { pname = "gatk"; - version = "4.4.0.0"; + version = "4.5.0.0"; src = fetchzip { url = "https://github.com/broadinstitute/gatk/releases/download/${version}/gatk-${version}.zip"; - sha256 = "sha256-svOtIS6gz9nwVgVmVQbk9z6Ufyobpn6bFbZY4zurvUI="; + sha256 = "sha256-c3YZsSCjZY75jooiqtc8x/xsWTvYm9labUcOydDlSRQ="; }; nativeBuildInputs = [ makeWrapper ]; diff --git a/pkgs/applications/science/chemistry/avogadro2/default.nix b/pkgs/applications/science/chemistry/avogadro2/default.nix index 2ff0cab1847a..dad31b738a84 100644 --- a/pkgs/applications/science/chemistry/avogadro2/default.nix +++ b/pkgs/applications/science/chemistry/avogadro2/default.nix @@ -6,19 +6,19 @@ let avogadroI18N = fetchFromGitHub { owner = "OpenChemistry"; repo = "avogadro-i18n"; - rev = "3b8a86cc37e988b043d1503d2f11068389b0aca3"; - sha256 = "9wLY7/EJyIZYnlUAMsViCwD5kGc1vCNbk8vUhb90LMQ="; + rev = "7eef0b83ded6221a3ddb85c0118cc26f9a35375c"; + hash = "sha256-AR/y70zeYR9xBzWDB5JXjJdDM+NLOX6yxCQte2lYN/U="; }; in stdenv.mkDerivation rec { pname = "avogadro2"; - version = "1.97.0"; + version = "1.98.1"; src = fetchFromGitHub { owner = "OpenChemistry"; repo = "avogadroapp"; rev = version; - hash = "sha256-gZpMgFSPz70QNfd8gH5Jb9RTxQfQalWx33LkgXLEqOQ="; + hash = "sha256-N35WGYZbgfjKnorzGKCnbBvlrlt9Vr04YIG2R3k+b8A="; }; postUnpack = '' diff --git a/pkgs/applications/science/electronics/csxcad/default.nix b/pkgs/applications/science/electronics/csxcad/default.nix index abdb0716f370..83ee992f4b28 100644 --- a/pkgs/applications/science/electronics/csxcad/default.nix +++ b/pkgs/applications/science/electronics/csxcad/default.nix @@ -4,7 +4,7 @@ , fparser , tinyxml , hdf5 -, cgal_5 +, cgal , vtk , boost , gmp @@ -25,7 +25,7 @@ stdenv.mkDerivation rec { patches = [./searchPath.patch ]; buildInputs = [ - cgal_5 + cgal boost gmp mpfr diff --git a/pkgs/by-name/bc/bc-ur/package.nix b/pkgs/by-name/bc/bc-ur/package.nix new file mode 100644 index 000000000000..2e7cda7764b5 --- /dev/null +++ b/pkgs/by-name/bc/bc-ur/package.nix @@ -0,0 +1,38 @@ +{ lib +, stdenv +, fetchFromGitHub +, cmake +, fetchpatch +}: + +stdenv.mkDerivation (finalAttrs: { + pname = "bc-ur"; + version = "0.3.0"; + + src = fetchFromGitHub { + owner = "BlockchainCommons"; + repo = "bc-ur"; + rev = finalAttrs.version; + hash = "sha256-j7nmAZH1OL7R5H3jqQomg7kwPOvIHMqrfSk7mq/f7Cg="; + }; + + patches = [ + # Fix missing includes, building on gcc13, add CMakeList.txt + (fetchpatch { + url = "https://raw.githubusercontent.com/feather-wallet/feather/632963a9e22bf4c8bbe6b5b4d895e31bda17bafd/contrib/depends/patches/bc-ur/build-fix.patch"; + hash = "sha256-F53/z0maUGfdzJ7qjcLjTzn6+80oxu4sqfQPsDo4HZ0="; + }) + ]; + + nativeBuildInputs = [ + cmake + ]; + + meta = with lib; { + homepage = "https://github.com/BlockchainCommons/bc-ur"; + description = "UR reference library in C++"; + license = licenses.bsd2Patent; + maintainers = with maintainers; [ surfaceflinger ]; + platforms = platforms.linux; + }; +}) diff --git a/pkgs/by-name/br/bruno/package.nix b/pkgs/by-name/br/bruno/package.nix index 3725e8c502d9..1d8476c1142c 100644 --- a/pkgs/by-name/br/bruno/package.nix +++ b/pkgs/by-name/br/bruno/package.nix @@ -15,11 +15,11 @@ stdenv.mkDerivation rec { pname = "bruno"; - version = "1.4.0"; + version = "1.5.0"; src = fetchurl { url = "https://github.com/usebruno/bruno/releases/download/v${version}/bruno_${version}_amd64_linux.deb"; - hash = "sha256-yCYI2c9M19d1+BpnM7YJLkZk8Vdix+YSWCa5qsCMBxw="; + hash = "sha256-ptrayWDnRXGUC/mgSnQ/8sIEdey+6uoa3LGBGPQYuY8="; }; nativeBuildInputs = [ autoPatchelfHook dpkg wrapGAppsHook ]; diff --git a/pkgs/by-name/fe/feather/package.nix b/pkgs/by-name/fe/feather/package.nix index 5224d5157a96..f2ebe7582ddb 100644 --- a/pkgs/by-name/fe/feather/package.nix +++ b/pkgs/by-name/fe/feather/package.nix @@ -1,4 +1,5 @@ -{ boost +{ bc-ur +, boost , cmake , fetchFromGitHub , hidapi @@ -20,13 +21,13 @@ stdenv.mkDerivation (finalAttrs: { pname = "feather"; - version = "2.5.2"; + version = "2.6.1"; src = fetchFromGitHub { owner = "feather-wallet"; repo = "feather"; rev = finalAttrs.version; - hash = "sha256-OSBG2W35GYlViwz5eXokpScrMTtPSaWAgEUNw2urm6w="; + hash = "sha256-szMNSqkocf/aVs1aF+TLV1qu0MDHTNDiO4V1j4ySBvQ="; fetchSubmodules = true; }; @@ -37,6 +38,7 @@ stdenv.mkDerivation (finalAttrs: { ]; buildInputs = [ + bc-ur boost hidapi libsodium diff --git a/pkgs/by-name/pe/persistent-cache-cpp/package.nix b/pkgs/by-name/pe/persistent-cache-cpp/package.nix new file mode 100644 index 000000000000..c7d212a477af --- /dev/null +++ b/pkgs/by-name/pe/persistent-cache-cpp/package.nix @@ -0,0 +1,131 @@ +{ stdenv +, lib +, fetchFromGitLab +, fetchpatch +, gitUpdater +, testers +, boost +, cmake +, doxygen +, gtest +, leveldb +, lomiri +, pkg-config +, python3 +}: + +stdenv.mkDerivation (finalAttrs: { + pname = "persistent-cache-cpp"; + version = "1.0.6"; + + src = fetchFromGitLab { + owner = "ubports"; + repo = "development/core/lib-cpp/persistent-cache-cpp"; + rev = finalAttrs.version; + hash = "sha256-RLZiYY0Y9LT+ajM4Va4MpVVDBlu2yvCpn8bNGMB8ydo="; + }; + + outputs = [ + "out" + "dev" + "doc" + ]; + + patches = [ + # Version in CMakeLists.txt didn't get bumped, emits wrong version in pkg-config + # Remove when https://gitlab.com/ubports/development/core/lib-cpp/persistent-cache-cpp/-/merge_requests/13 merged & in release + (fetchpatch { + name = "0001-persistent-cache-cpp-CMakeLists-txt-Update-version.patch"; + url = "https://gitlab.com/OPNA2608/persistent-cache-cpp/-/commit/20d5d3f61563c62bcbe85e71ddc4fe16d7c995d5.patch"; + hash = "sha256-BKovtT9OvV+xEwBO8AZTxAzL9kqyDB9ip32t2Xx4eIk="; + }) + + # PersistentStringCacheImpl.exceptions test fails on LLVM's libcxx, it depends on std::system_error producing a very specific exception text + # Expects "Unknown error 666", gets "unspecified generic_category error" + # Remove when https://gitlab.com/ubports/development/core/lib-cpp/persistent-cache-cpp/-/merge_requests/14 merged & in release + (fetchpatch { + name = "0002-persistent-cache-cpp-persistent_string_cache_impl_test-libcxx-fix.patch"; + url = "https://gitlab.com/OPNA2608/persistent-cache-cpp/-/commit/a696dbd3093b8333f9ee1f0cad846b2256c729c5.patch"; + hash = "sha256-SJxdXeM7W+WKEmiLTwnQYAM7YmPayEk6vPb46y4thv4="; + }) + + # Enable usage of BUILD_TESTING to opting out of tests + # Remove when https://gitlab.com/ubports/development/core/lib-cpp/persistent-cache-cpp/-/merge_requests/15 merged & in release + (fetchpatch { + name = "0003-persistent-cache-cpp-Enable-opting-out-of-tests.patch"; + url = "https://gitlab.com/OPNA2608/persistent-cache-cpp/-/commit/1fb06d28c16325e90046e93662c0f5fd16c29b4a.patch"; + hash = "sha256-2/6EYBh71S4dzqWEde+3dLOGp015fN6IifAj1bI1XAI="; + }) + + # Enable linking based on stdenv (static or dynamic) + # Remove when https://gitlab.com/ubports/development/core/lib-cpp/persistent-cache-cpp/-/merge_requests/16 merged & in release + (fetchpatch { + name = "0004-persistent-cache-cpp-Un-hardcode-static-linking.patch"; + url = "https://gitlab.com/OPNA2608/persistent-cache-cpp/-/commit/45cd84fe76e3a0e1da41a662df695009a6f4f07e.patch"; + hash = "sha256-1UjdhzrjnIUO1ySaZTm0vkdNgok0RNlGtNOWUoAUlzU="; + }) + ]; + + postPatch = '' + # Wrong concatenation + substituteInPlace data/libpersistent-cache-cpp.pc.in \ + --replace "\''${prefix}/@CMAKE_INSTALL_LIBDIR@" "\''${prefix}/lib" + + # Runs in parallel to other tests, limit to 1 thread + substituteInPlace tests/headers/compile_headers.py \ + --replace 'multiprocessing.cpu_count()' '1' + '' + lib.optionalString finalAttrs.finalPackage.doCheck '' + patchShebangs tests/{headers,whitespace}/*.py + ''; + + nativeBuildInputs = [ + cmake + doxygen + pkg-config + ]; + + buildInputs = [ + boost + lomiri.cmake-extras + ]; + + propagatedBuildInputs = [ + leveldb + ]; + + nativeCheckInputs = [ + python3 + ]; + + checkInputs = [ + gtest + ]; + + cmakeFlags = [ + # error: 'old_version' may be used uninitialized + (lib.cmakeBool "Werror" false) + (lib.cmakeBool "BUILD_SHARED_LIBS" (!stdenv.hostPlatform.isStatic)) + ]; + + doCheck = stdenv.buildPlatform.canExecute stdenv.hostPlatform; + + passthru = { + tests.pkg-config = testers.testMetaPkgConfig finalAttrs.finalPackage; + updateScript = gitUpdater { }; + }; + + meta = with lib; { + description = "Cache of key-value pairs with persistent storage for C++ 11"; + longDescription = '' + A persistent cache for arbitrary (possibly large amount of data, such as + image files) that is fast, scalable, and crash-proof. + ''; + homepage = "https://gitlab.com/ubports/development/core/lib-cpp/persistent-cache-cpp"; + license = licenses.lgpl3Only; + maintainers = teams.lomiri.members; + platforms = platforms.unix; + pkgConfigModules = [ + "libpersistent-cache-cpp" + ]; + }; +}) diff --git a/pkgs/by-name/re/redocly-cli/package.nix b/pkgs/by-name/re/redocly-cli/package.nix index 18d853c58da9..d22b09b53a41 100644 --- a/pkgs/by-name/re/redocly-cli/package.nix +++ b/pkgs/by-name/re/redocly-cli/package.nix @@ -21,6 +21,10 @@ buildNpmPackage rec { nativeBuildInputs = [ makeWrapper ]; + postBuild = '' + npm --prefix packages/cli run copy-assets + ''; + postInstall = '' rm $out/lib/node_modules/@redocly/cli/node_modules/@redocly/{cli,openapi-core} cp -R packages/cli $out/lib/node_modules/@redocly/cli/node_modules/@redocly/cli diff --git a/pkgs/by-name/sn/snippetexpander/package.nix b/pkgs/by-name/sn/snippetexpander/package.nix new file mode 100644 index 000000000000..1f5f3a954ec0 --- /dev/null +++ b/pkgs/by-name/sn/snippetexpander/package.nix @@ -0,0 +1,47 @@ +{ lib +, buildGoModule +, fetchFromSourcehut +, scdoc +, installShellFiles +, snippetexpanderd +}: + +buildGoModule rec { + inherit (snippetexpanderd) src version; + + pname = "snippetexpander"; + + vendorHash = "sha256-wSAho59yxcXTu1zQ5x783HT4gtfSM4GdsOEeC1wfHhE="; + + proxyVendor = true; + + modRoot = "cmd/snippetexpander"; + + nativeBuildInputs = [ + scdoc + installShellFiles + ]; + + buildInputs = [ + snippetexpanderd + ]; + + ldflags = [ + "-s" + "-w" + ]; + + postInstall = '' + make man + installManPage snippetexpander.1 + ''; + + meta = with lib; { + description = "Your little expandable text snippet helper CLI"; + homepage = "https://snippetexpander.org"; + license = licenses.gpl2Plus; + maintainers = with maintainers; [ ianmjones ]; + platforms = platforms.linux; + mainProgram = "snippetexpander"; + }; +} diff --git a/pkgs/by-name/sn/snippetexpanderd/package.nix b/pkgs/by-name/sn/snippetexpanderd/package.nix new file mode 100644 index 000000000000..308803ad9eec --- /dev/null +++ b/pkgs/by-name/sn/snippetexpanderd/package.nix @@ -0,0 +1,63 @@ +{ lib +, stdenv +, buildGoModule +, fetchFromSourcehut +, pkg-config +, makeWrapper +, scdoc +, installShellFiles +, xorg +, gtk3 +}: + +buildGoModule rec { + pname = "snippetexpanderd"; + version = "1.0.1"; + + src = fetchFromSourcehut { + owner = "~ianmjones"; + repo = "snippetexpander"; + rev = "v${version}"; + hash = "sha256-y3TJ+L3kXYfZFzAD1vmhvP6Yarctu5LHq/74005h8sI="; + }; + + vendorHash = "sha256-QX8HI8I1ZJI6HJ1sl86OiJ4nxwFAjHH8h1zB9ASJaQs="; + + modRoot = "cmd/snippetexpanderd"; + + nativeBuildInputs = [ + pkg-config + makeWrapper + scdoc + installShellFiles + ]; + + buildInputs = [ + xorg.libX11 + gtk3 + ]; + + ldflags = [ + "-s" + "-w" + ]; + + postInstall = '' + make man + installManPage snippetexpanderd.1 snippetexpander-placeholders.5 + ''; + + postFixup = '' + wrapProgram $out/bin/snippetexpanderd \ + --prefix LD_LIBRARY_PATH : ${lib.makeLibraryPath [ xorg.libX11 ]} + ''; + + meta = with lib; { + description = "Your little expandable text snippet helper daemon"; + homepage = "https://snippetexpander.org"; + license = licenses.gpl2Plus; + maintainers = with maintainers; [ ianmjones ]; + platforms = platforms.linux; + mainProgram = "snippetexpanderd"; + }; +} diff --git a/pkgs/by-name/sn/snippetexpandergui/package.nix b/pkgs/by-name/sn/snippetexpandergui/package.nix new file mode 100644 index 000000000000..1ce5f5d9cbe5 --- /dev/null +++ b/pkgs/by-name/sn/snippetexpandergui/package.nix @@ -0,0 +1,70 @@ +{ lib +, buildGoModule +, fetchFromSourcehut +, makeWrapper +, wails +, scdoc +, installShellFiles +, xorg +, gtk3 +, webkitgtk +, gsettings-desktop-schemas +, snippetexpanderd +}: + +buildGoModule rec { + inherit (snippetexpanderd) src version; + + pname = "snippetexpandergui"; + + vendorHash = "sha256-iZfZdT8KlfZMVLQcYmo6EooIdsSGrpO/ojwT9Ft1GQI="; + + proxyVendor = true; + + modRoot = "cmd/snippetexpandergui"; + + nativeBuildInputs = [ + makeWrapper + wails + scdoc + installShellFiles + ]; + + buildInputs = [ + xorg.libX11 + gtk3 + webkitgtk + gsettings-desktop-schemas + snippetexpanderd + ]; + + ldflags = [ + "-s" + "-w" + ]; + + tags = [ + "desktop" + "production" + ]; + + postInstall = '' + mv build/linux/share $out/share + make man + installManPage snippetexpandergui.1 + ''; + + postFixup = '' + wrapProgram $out/bin/snippetexpandergui \ + --prefix XDG_DATA_DIRS : ${gsettings-desktop-schemas}/share/gsettings-schemas/${gsettings-desktop-schemas.name}:${gtk3}/share/gsettings-schemas/${gtk3.name} + ''; + + meta = with lib; { + description = "Your little expandable text snippet helper GUI"; + homepage = "https://snippetexpander.org"; + license = licenses.gpl2Plus; + maintainers = with maintainers; [ ianmjones ]; + platforms = platforms.linux; + mainProgram = "snippetexpandergui"; + }; +} diff --git a/pkgs/by-name/sn/snippetexpanderx/package.nix b/pkgs/by-name/sn/snippetexpanderx/package.nix new file mode 100644 index 000000000000..3c91adbbbc0c --- /dev/null +++ b/pkgs/by-name/sn/snippetexpanderx/package.nix @@ -0,0 +1,64 @@ +{ lib +, stdenv +, fetchFromSourcehut +, pkg-config +, vala +, wrapGAppsHook +, installShellFiles +, scdoc +, at-spi2-atk +, at-spi2-core +, dbus +, gtk3 +, ibus +, libgee +, xorg +, snippetexpanderd +}: + +stdenv.mkDerivation rec { + inherit (snippetexpanderd) src version; + + pname = "snippetexpanderx"; + + sourceRoot = "source/cmd/snippetexpanderx"; + + nativeBuildInputs = [ + pkg-config + vala + wrapGAppsHook + installShellFiles + scdoc + ]; + + buildInputs = [ + at-spi2-atk + at-spi2-core + dbus + gtk3 + ibus + libgee + xorg.libX11 + snippetexpanderd + ]; + + installPhase = '' + runHook preInstall + mkdir -p $out/bin + install -m555 snippetexpanderx $out/bin/ + installManPage snippetexpanderx.1 + runHook postInstall + ''; + + # There are no tests. + doCheck = false; + + meta = with lib; { + description = "Your little expandable text snippet helper auto expander daemon"; + homepage = "https://snippetexpander.org"; + license = licenses.gpl2Plus; + maintainers = with maintainers; [ ianmjones ]; + platforms = platforms.linux; + mainProgram = "snippetexpanderx"; + }; +} diff --git a/pkgs/desktops/cinnamon/folder-color-switcher/default.nix b/pkgs/desktops/cinnamon/folder-color-switcher/default.nix index c9dd7759cb0c..69a3aade31d7 100644 --- a/pkgs/desktops/cinnamon/folder-color-switcher/default.nix +++ b/pkgs/desktops/cinnamon/folder-color-switcher/default.nix @@ -7,14 +7,14 @@ stdenvNoCC.mkDerivation rec { pname = "folder-color-switcher"; - version = "1.6.0"; + version = "1.6.1"; src = fetchFromGitHub { owner = "linuxmint"; repo = pname; # They don't really do tags, this is just a named commit. - rev = "826df0b71c7c3b686421437eac86883945dc5956"; - sha256 = "sha256-WdOTyladZ0U39wbhqsXzg9l3mJ5UGV99yVg1PWscP2w="; + rev = "ebab2114649cc688a05e30857f6706f16fe82307"; + sha256 = "sha256-/VbgFuSoeDIiJG4owXbn7yT0ILrAdKkkhSkScnnJa+8="; }; nativeBuildInputs = [ @@ -24,7 +24,7 @@ stdenvNoCC.mkDerivation rec { postPatch = '' substituteInPlace usr/share/nemo-python/extensions/nemo-folder-color-switcher.py \ - --replace "/usr/share/locale" "$out/share" \ + --replace "/usr/share/locale" "$out/share/locale" \ --replace "/usr/share/folder-color-switcher/colors.d" "/run/current-system/sw/share/folder-color-switcher/colors.d" \ --replace "/usr/share/folder-color-switcher/color.svg" "$out/share/folder-color-switcher/color.svg" diff --git a/pkgs/desktops/cinnamon/nemo-extensions/nemo-emblems/default.nix b/pkgs/desktops/cinnamon/nemo-extensions/nemo-emblems/default.nix index d298827487e9..bd9f808638f2 100644 --- a/pkgs/desktops/cinnamon/nemo-extensions/nemo-emblems/default.nix +++ b/pkgs/desktops/cinnamon/nemo-extensions/nemo-emblems/default.nix @@ -1,6 +1,7 @@ { python3 , lib , fetchFromGitHub +, cinnamon-translations }: let @@ -17,6 +18,9 @@ python3.pkgs.buildPythonApplication rec { postPatch = '' substituteInPlace setup.py \ --replace "/usr/share" "share" + + substituteInPlace nemo-extension/nemo-emblems.py \ + --replace "/usr/share/locale" "${cinnamon-translations}/share/locale" ''; meta = with lib; { diff --git a/pkgs/desktops/cinnamon/nemo-extensions/nemo-fileroller/default.nix b/pkgs/desktops/cinnamon/nemo-extensions/nemo-fileroller/default.nix index 71c61db992a8..7bf706f83b5f 100644 --- a/pkgs/desktops/cinnamon/nemo-extensions/nemo-fileroller/default.nix +++ b/pkgs/desktops/cinnamon/nemo-extensions/nemo-fileroller/default.nix @@ -8,6 +8,7 @@ , gtk3 , nemo , gnome +, cinnamon-translations }: let @@ -33,7 +34,8 @@ stdenv.mkDerivation rec { postPatch = '' substituteInPlace src/nemo-fileroller.c \ - --replace "file-roller" "${lib.getExe gnome.file-roller}" + --replace "file-roller" "${lib.getExe gnome.file-roller}" \ + --replace "GNOMELOCALEDIR" "${cinnamon-translations}/share/locale" ''; PKG_CONFIG_LIBNEMO_EXTENSION_EXTENSIONDIR = "${placeholder "out"}/${nemo.extensiondir}"; diff --git a/pkgs/desktops/cinnamon/nemo-extensions/srcs.nix b/pkgs/desktops/cinnamon/nemo-extensions/srcs.nix index c59538a40a44..a5ab9dfe9b3e 100644 --- a/pkgs/desktops/cinnamon/nemo-extensions/srcs.nix +++ b/pkgs/desktops/cinnamon/nemo-extensions/srcs.nix @@ -4,12 +4,12 @@ rec { # When you bump this, you should make sure all nemo-extensions # are actually using this file since we try to deal with tags # like nemo-fileroller-5.6.1 according to upstream's wishes. - version = "6.0.0"; + version = "6.0.1"; src = fetchFromGitHub { owner = "linuxmint"; repo = "nemo-extensions"; rev = version; - sha256 = "sha256-M8ImntyfFfSL591UpqZosE7F8ydbpfrBhcLOBtW/sGQ="; + sha256 = "sha256-zuE0SO5VJ2kKjK7JgsSf+wJgfyffTHhfICslEoPKK8Q="; }; } diff --git a/pkgs/desktops/deepin/apps/deepin-voice-note/default.nix b/pkgs/desktops/deepin/apps/deepin-voice-note/default.nix index dce0807faa97..13124f82b7aa 100644 --- a/pkgs/desktops/deepin/apps/deepin-voice-note/default.nix +++ b/pkgs/desktops/deepin/apps/deepin-voice-note/default.nix @@ -1,7 +1,6 @@ { stdenv , lib , fetchFromGitHub -, fetchpatch , cmake , pkg-config , qttools @@ -10,6 +9,7 @@ , dtkwidget , qt5integration , qt5platform-plugins +, qtsvg , dde-qt-dbus-factory , qtmultimedia , qtwebengine @@ -20,27 +20,17 @@ stdenv.mkDerivation rec { pname = "deepin-voice-note"; - version = "6.0.13"; + version = "6.0.15"; src = fetchFromGitHub { owner = "linuxdeepin"; repo = pname; rev = version; - hash = "sha256-yDlWyMGkSToGCN7tuZNR8Mz7MUOZ7355w4H0OzeHBrs="; + hash = "sha256-k6LFMs2/OQQyeGI5WXBGWkAAY4GeP8LaA8hTXFwbaCM="; }; patches = [ ./use_v23_dbus_interface.diff - (fetchpatch { - name = "Adjust-the-audio-port-available-range.patch"; - url = "https://github.com/linuxdeepin/deepin-voice-note/commit/a876e4c4cf7d77e50071246f9fb6998aa62def77.patch"; - hash = "sha256-J/PPdj1Am/v2Sw2Dv2XvZJAy/6Tf7OoTfrbOB9rc5m8="; - }) - (fetchpatch { - name = "fix-build-error-with-new-dtk.patch"; - url = "https://github.com/linuxdeepin/deepin-voice-note/commit/9ce211f603deaff21b881e1c4f43d53e33a85347.patch"; - hash = "sha256-oP+AzMniONxjYIFust8fGaD8/UOjKr4yZiRUkdTMd5w="; - }) ]; postPatch = '' @@ -59,8 +49,8 @@ stdenv.mkDerivation rec { buildInputs = [ qtbase + qtsvg dtkwidget - qt5integration qt5platform-plugins dde-qt-dbus-factory qtmultimedia @@ -77,6 +67,11 @@ stdenv.mkDerivation rec { cmakeFlags = [ "-DVERSION=${version}" ]; + # qt5integration must be placed before qtsvg in QT_PLUGIN_PATH + qtWrapperArgs = [ + "--prefix QT_PLUGIN_PATH : ${qt5integration}/${qtbase.qtPluginPrefix}" + ]; + preFixup = '' qtWrapperArgs+=(--prefix GST_PLUGIN_SYSTEM_PATH_1_0 : "$GST_PLUGIN_SYSTEM_PATH_1_0") ''; diff --git a/pkgs/desktops/deepin/misc/deepin-desktop-base/default.nix b/pkgs/desktops/deepin/misc/deepin-desktop-base/default.nix index d82d758adf3b..aa31bf975ad0 100644 --- a/pkgs/desktops/deepin/misc/deepin-desktop-base/default.nix +++ b/pkgs/desktops/deepin/misc/deepin-desktop-base/default.nix @@ -4,13 +4,13 @@ }: stdenvNoCC.mkDerivation rec { pname = "deepin-desktop-base"; - version = "2022.11.15-deepin"; + version = "2023.09.05"; src = fetchFromGitHub { owner = "linuxdeepin"; repo = pname; rev = version; - sha256 = "sha256-GTgIHWz+x1Pl3F4zKA9V8o2oq6c53OK94q95WoMG+Qo="; + hash = "sha256-Gqp56TbkuTOI3aT7UmRuYBjUwRiOoIUHiRf0DaY0yew="; }; makeFlags = [ "DESTDIR=${placeholder "out"}" ]; diff --git a/pkgs/desktops/lomiri/default.nix b/pkgs/desktops/lomiri/default.nix index 7c65c7bddc89..fb25823d6a39 100644 --- a/pkgs/desktops/lomiri/default.nix +++ b/pkgs/desktops/lomiri/default.nix @@ -23,6 +23,7 @@ let #### QML / QML-related lomiri-action-api = callPackage ./qml/lomiri-action-api { }; + lomiri-notifications = callPackage ./qml/lomiri-notifications { }; lomiri-settings-components = callPackage ./qml/lomiri-settings-components { }; lomiri-ui-toolkit = callPackage ./qml/lomiri-ui-toolkit { }; diff --git a/pkgs/desktops/lomiri/qml/lomiri-notifications/default.nix b/pkgs/desktops/lomiri/qml/lomiri-notifications/default.nix new file mode 100644 index 000000000000..56b86eaa3918 --- /dev/null +++ b/pkgs/desktops/lomiri/qml/lomiri-notifications/default.nix @@ -0,0 +1,92 @@ +{ stdenv +, lib +, fetchFromGitLab +, fetchpatch +, gitUpdater +, cmake +, dbus +, libqtdbustest +, lomiri-api +, pkg-config +, qtbase +, qtdeclarative +}: + +stdenv.mkDerivation (finalAttrs: { + pname = "lomiri-notifications"; + version = "1.3.0"; + + src = fetchFromGitLab { + owner = "ubports"; + repo = "development/core/lomiri-notifications"; + rev = finalAttrs.version; + hash = "sha256-EGslfTgfADrmVGhNLG7HWqcDKhu52H/r41j7fxoliko="; + }; + + patches = [ + # Drop use of deprecated qt5_use_modules + # Remove when https://gitlab.com/ubports/development/core/lomiri-notifications/-/merge_requests/11 merged & in release + (fetchpatch { + url = "https://gitlab.com/OPNA2608/lomiri-notifications/-/commit/5d164d6d8d68efe1d14154eca4d0d736ce2a1265.patch"; + hash = "sha256-nUg0zUft1n4AlotOaZgDqWbiVDvWvMizdlClavwygoI="; + }) + ]; + + postPatch = '' + substituteInPlace CMakeLists.txt \ + --replace "\''${CMAKE_INSTALL_LIBDIR}/qt5/qml" "\''${CMAKE_INSTALL_PREFIX}/${qtbase.qtQmlPrefix}" + + # Need to replace prefix to not try to install into lomiri-api prefix + substituteInPlace src/CMakeLists.txt \ + --replace '--variable=plugindir' '--define-variable=prefix=''${CMAKE_INSTALL_PREFIX} --variable=plugindir' + '' + lib.optionalString (!finalAttrs.finalPackage.doCheck) '' + sed -i CMakeLists.txt -e '/add_subdirectory(test)/d' + ''; + + strictDeps = true; + + nativeBuildInputs = [ + cmake + pkg-config + ]; + + buildInputs = [ + lomiri-api + qtbase + qtdeclarative + ]; + + nativeCheckInputs = [ + dbus + ]; + + checkInputs = [ + libqtdbustest + ]; + + dontWrapQtApps = true; + + cmakeFlags = [ + # In case anything still depends on deprecated hints + "-DENABLE_UBUNTU_COMPAT=ON" + ]; + + doCheck = stdenv.buildPlatform.canExecute stdenv.hostPlatform; + + # Deals with DBus + enableParallelChecking = false; + + preCheck = '' + export QT_PLUGIN_PATH=${lib.getBin qtbase}/${qtbase.qtPluginPrefix} + ''; + + passthru.updateScript = gitUpdater { }; + + meta = with lib; { + description = "Free Desktop Notification server QML implementation for Lomiri"; + homepage = "https://gitlab.com/ubports/development/core/lomiri-notifications"; + license = licenses.gpl3Only; + maintainers = teams.lomiri.members; + platforms = platforms.linux; + }; +}) diff --git a/pkgs/development/compilers/julia/default.nix b/pkgs/development/compilers/julia/default.nix new file mode 100644 index 000000000000..d4cd0ab6b83e --- /dev/null +++ b/pkgs/development/compilers/julia/default.nix @@ -0,0 +1,20 @@ +{ callPackage }: + +let + juliaWithPackages = callPackage ../../julia-modules {}; + + wrapJulia = julia: julia.overrideAttrs (oldAttrs: { + passthru = (oldAttrs.passthru or {}) // { + withPackages = juliaWithPackages.override { inherit julia; }; + }; + }); + +in + +{ + julia_16-bin = wrapJulia (callPackage ./1.6-bin.nix {}); + julia_18-bin = wrapJulia (callPackage ./1.8-bin.nix {}); + julia_19-bin = wrapJulia (callPackage ./1.9-bin.nix {}); + julia_18 = wrapJulia (callPackage ./1.8.nix {}); + julia_19 = wrapJulia (callPackage ./1.9.nix {}); +} diff --git a/pkgs/development/julia-modules/default.nix b/pkgs/development/julia-modules/default.nix new file mode 100644 index 000000000000..973a50abe30d --- /dev/null +++ b/pkgs/development/julia-modules/default.nix @@ -0,0 +1,193 @@ +{ lib +, callPackage +, runCommand +, fetchFromGitHub +, fetchgit +, fontconfig +, git +, makeWrapper +, writeText +, writeTextFile +, python3 + +# Artifacts dependencies +, fetchurl +, glibc +, pkgs +, stdenv + +, julia + +# Special registry which is equal to JuliaRegistries/General, but every Versions.toml +# entry is augmented with a Nix sha256 hash +, augmentedRegistry ? callPackage ./registry.nix {} + +# Other overridable arguments +, extraLibs ? [] +, precompile ? true +, setDefaultDepot ? true +, makeWrapperArgs ? "" +, packageOverrides ? {} +, makeTransitiveDependenciesImportable ? false # Used to support symbol indexing +}: + +packageNames: + +let + util = callPackage ./util.nix {}; + +in + +let + # Some Julia packages require access to Python. Provide a Nixpkgs version so it + # doesn't try to install its own. + pythonToUse = let + extraPythonPackages = ((callPackage ./extra-python-packages.nix { inherit python3; }).getExtraPythonPackages packageNames); + in (if extraPythonPackages == [] then python3 + else util.addPackagesToPython python3 (map (pkg: lib.getAttr pkg python3.pkgs) extraPythonPackages)); + + # Start by wrapping Julia so it has access to Python and any other extra libs. + # Also, prevent various packages (CondaPkg.jl, PythonCall.jl) from trying to do network calls. + juliaWrapped = runCommand "julia-${julia.version}-wrapped" { buildInputs = [makeWrapper]; inherit makeWrapperArgs; } '' + mkdir -p $out/bin + makeWrapper ${julia}/bin/julia $out/bin/julia \ + --suffix LD_LIBRARY_PATH : "${lib.makeLibraryPath extraLibs}" \ + --set FONTCONFIG_FILE ${fontconfig.out}/etc/fonts/fonts.conf \ + --set PYTHONHOME "${pythonToUse}" \ + --prefix PYTHONPATH : "${pythonToUse}/${pythonToUse.sitePackages}" \ + --set PYTHON ${pythonToUse}/bin/python $makeWrapperArgs \ + --set JULIA_CONDAPKG_OFFLINE yes \ + --set JULIA_CONDAPKG_BACKEND Null \ + --set JULIA_PYTHONCALL_EXE "@PyCall" + ''; + + # If our closure ends up with certain packages, add others. + packageImplications = { + # Because we want to put PythonCall in PyCall mode so it doesn't try to download + # Python packages + PythonCall = ["PyCall"]; + }; + + # Invoke Julia resolution logic to determine the full dependency closure + packageOverridesRepoified = lib.mapAttrs util.repoifySimple packageOverrides; + closureYaml = callPackage ./package-closure.nix { + inherit augmentedRegistry julia packageNames packageImplications; + packageOverrides = packageOverridesRepoified; + }; + + # Generate a Nix file consisting of a map from dependency UUID --> package info with fetchgit call: + # { + # "77ba4419-2d1f-58cd-9bb1-8ffee604a2e3" = { + # src = fetchgit {...}; + # name = "..."; + # version = "..."; + # treehash = "..."; + # }; + # ... + # } + dependencies = runCommand "julia-sources.nix" { buildInputs = [(python3.withPackages (ps: with ps; [toml pyyaml])) git]; } '' + python ${./python}/sources_nix.py \ + "${augmentedRegistry}" \ + '${lib.generators.toJSON {} packageOverridesRepoified}' \ + "${closureYaml}" \ + "$out" + ''; + + # Import the Nix file from the previous step (IFD) and turn each dependency repo into + # a dummy Git repository, as Julia expects. Format the results as a YAML map from + # dependency UUID -> Nix store location: + # { + # "77ba4419-2d1f-58cd-9bb1-8ffee604a2e3":"/nix/store/...-NaNMath.jl-0877504", + # ... + # } + # This is also the point where we apply the packageOverrides. + dependencyUuidToInfo = import dependencies { inherit fetchgit; }; + fillInOverrideSrc = uuid: info: + if lib.hasAttr info.name packageOverrides then (info // { src = lib.getAttr info.name packageOverrides; }) else info; + dependencyUuidToRepo = lib.mapAttrs util.repoifyInfo (lib.mapAttrs fillInOverrideSrc dependencyUuidToInfo); + dependencyUuidToRepoYaml = writeTextFile { + name = "dependency-uuid-to-repo.yml"; + text = lib.generators.toYAML {} dependencyUuidToRepo; + }; + + # Given the augmented registry, closure info yaml, and dependency path yaml, construct a complete + # Julia registry containing all the necessary packages + dependencyUuidToInfoYaml = writeTextFile { + name = "dependency-uuid-to-info.yml"; + text = lib.generators.toYAML {} dependencyUuidToInfo; + }; + fillInOverrideSrc' = uuid: info: + if lib.hasAttr info.name packageOverridesRepoified then (info // { src = lib.getAttr info.name packageOverridesRepoified; }) else info; + overridesOnly = lib.mapAttrs fillInOverrideSrc' (lib.filterAttrs (uuid: info: info.src == null) dependencyUuidToInfo); + minimalRegistry = runCommand "minimal-julia-registry" { buildInputs = [(python3.withPackages (ps: with ps; [toml pyyaml])) git]; } '' + python ${./python}/minimal_registry.py \ + "${augmentedRegistry}" \ + "${closureYaml}" \ + '${lib.generators.toJSON {} overridesOnly}' \ + "${dependencyUuidToRepoYaml}" \ + "$out" + ''; + + # Next, deal with artifacts. Scan each artifacts file individually and generate a Nix file that + # produces the desired Overrides.toml. + artifactsNix = runCommand "julia-artifacts.nix" { buildInputs = [(python3.withPackages (ps: with ps; [toml pyyaml]))]; } '' + python ${./python}/extract_artifacts.py \ + "${dependencyUuidToRepoYaml}" \ + "${closureYaml}" \ + "${juliaWrapped}/bin/julia" \ + "${if lib.versionAtLeast julia.version "1.7" then ./extract_artifacts.jl else ./extract_artifacts_16.jl}" \ + '${lib.generators.toJSON {} (import ./extra-libs.nix)}' \ + "$out" + ''; + + # Import the artifacts Nix to build Overrides.toml (IFD) + artifacts = import artifactsNix { inherit lib fetchurl pkgs glibc stdenv; }; + overridesJson = writeTextFile { + name = "Overrides.json"; + text = lib.generators.toJSON {} artifacts; + }; + overridesToml = runCommand "Overrides.toml" { buildInputs = [(python3.withPackages (ps: with ps; [toml]))]; } '' + python ${./python}/format_overrides.py \ + "${overridesJson}" \ + "$out" + ''; + + # Build a Julia project and depot. The project contains Project.toml/Manifest.toml, while the + # depot contains package build products (including the precompiled libraries, if precompile=true) + projectAndDepot = callPackage ./depot.nix { + inherit closureYaml extraLibs overridesToml packageImplications precompile; + julia = juliaWrapped; + registry = minimalRegistry; + packageNames = if makeTransitiveDependenciesImportable + then lib.mapAttrsToList (uuid: info: info.name) dependencyUuidToInfo + else packageNames; + }; + +in + +runCommand "julia-${julia.version}-env" { + buildInputs = [makeWrapper]; + + inherit julia; + inherit juliaWrapped; + + # Expose the steps we used along the way in case the user wants to use them, for example to build + # expressions and build them separately to avoid IFD. + inherit dependencies; + inherit closureYaml; + inherit dependencyUuidToInfoYaml; + inherit dependencyUuidToRepoYaml; + inherit minimalRegistry; + inherit artifactsNix; + inherit overridesJson; + inherit overridesToml; + inherit projectAndDepot; +} ('' + mkdir -p $out/bin + makeWrapper ${juliaWrapped}/bin/julia $out/bin/julia \ + --suffix JULIA_DEPOT_PATH : "${projectAndDepot}/depot" \ + --set-default JULIA_PROJECT "${projectAndDepot}/project" \ + --set-default JULIA_LOAD_PATH '@:${projectAndDepot}/project/Project.toml:@v#.#:@stdlib' +'' + lib.optionalString setDefaultDepot '' + sed -i '2 i\JULIA_DEPOT_PATH=''${JULIA_DEPOT_PATH-"$HOME/.julia"}' $out/bin/julia +'') diff --git a/pkgs/development/julia-modules/depot.nix b/pkgs/development/julia-modules/depot.nix new file mode 100644 index 000000000000..18bac9cb46a6 --- /dev/null +++ b/pkgs/development/julia-modules/depot.nix @@ -0,0 +1,85 @@ +{ lib +, runCommand + +, cacert +, curl +, git +, julia +, python3 + +, closureYaml +, extraLibs +, overridesToml +, packageNames +, packageImplications +, precompile +, registry +}: + +runCommand "julia-depot" { + nativeBuildInputs = [curl git julia (python3.withPackages (ps: with ps; [pyyaml]))] ++ extraLibs; + inherit precompile registry; + } '' + export HOME=$(pwd) + + echo "Building Julia depot and project with the following inputs" + echo "Julia: ${julia}" + echo "Registry: $registry" + echo "Overrides ${overridesToml}" + + mkdir -p $out/project + export JULIA_PROJECT="$out/project" + + mkdir -p $out/depot/artifacts + export JULIA_DEPOT_PATH="$out/depot" + cp ${overridesToml} $out/depot/artifacts/Overrides.toml + + # These can be useful to debug problems + # export JULIA_DEBUG=Pkg + # export JULIA_DEBUG=loading + + export JULIA_SSL_CA_ROOTS_PATH="${cacert}/etc/ssl/certs/ca-bundle.crt" + + # Only precompile if configured to below + export JULIA_PKG_PRECOMPILE_AUTO=0 + + # Prevent a warning where Julia tries to download package server info + export JULIA_PKG_SERVER="" + + # See if we need to add any extra package names based on the closure + # and the packageImplications. We're using the full closure YAML here since + # it's available, which is slightly weird, but it should work just as well + # for finding the extra packages we need to add + python ${./python}/find_package_implications.py "${closureYaml}" '${lib.generators.toJSON {} packageImplications}' extra_package_names.txt + + # git config --global --add safe.directory '/nix' + export JULIA_PKG_USE_CLI_GIT="true" + + julia -e ' \ + import Pkg + import Pkg.Types: PRESERVE_NONE + + Pkg.Registry.add(Pkg.RegistrySpec(path="${registry}")) + + input = ${lib.generators.toJSON {} packageNames} ::Vector{String} + + if isfile("extra_package_names.txt") + append!(input, readlines("extra_package_names.txt")) + end + + input = unique(input) + + if !isempty(input) + println("Adding packages: " * join(input, " ")) + Pkg.add(input; preserve=PRESERVE_NONE) + Pkg.instantiate() + + if "precompile" in keys(ENV) && ENV["precompile"] != "0" && ENV["precompile"] != "" + Pkg.precompile() + end + end + + # Remove the registry to save space + Pkg.Registry.rm("General") + ' +'' diff --git a/pkgs/development/julia-modules/extra-libs.nix b/pkgs/development/julia-modules/extra-libs.nix new file mode 100644 index 000000000000..815c67ac7a7d --- /dev/null +++ b/pkgs/development/julia-modules/extra-libs.nix @@ -0,0 +1,15 @@ +# A map from a Julia package (typically a JLL package) to extra libraries +# that they require from Nix. +# The libraries should be strings evaluated in a "with pkgs" context. + +{ + # Qt5Base_jll + # Needs access to dbus or you get "Cannot find libdbus-1 in your system" + # Repro: build environment with ["Plots"] + # > using Plots; plot(cos, 0, 2pi) + "ea2cea3b-5b76-57ae-a6ef-0a8af62496e1" = ["dbus.lib"]; + + # Qt6Base_jll + # Same reason as Qt5Base_jll + "c0090381-4147-56d7-9ebc-da0b1113ec56" = ["dbus.lib"]; +} diff --git a/pkgs/development/julia-modules/extra-python-packages.nix b/pkgs/development/julia-modules/extra-python-packages.nix new file mode 100644 index 000000000000..30e5179b3820 --- /dev/null +++ b/pkgs/development/julia-modules/extra-python-packages.nix @@ -0,0 +1,22 @@ +{ lib +, python3 +}: + +# This file contains an extra mapping from Julia packages to the Python packages they depend on. + +with lib; + +rec { + packageMapping = { + ExcelFiles = ["xlrd"]; + PyPlot = ["matplotlib"]; + PythonPlot = ["matplotlib"]; + SymPy = ["sympy"]; + }; + + getExtraPythonPackages = names: concatMap (name: let + allCandidates = if hasAttr name packageMapping then getAttr name packageMapping else []; + in + filter (x: hasAttr x python3.pkgs) allCandidates + ) names; +} diff --git a/pkgs/development/julia-modules/extract_artifacts.jl b/pkgs/development/julia-modules/extract_artifacts.jl new file mode 100755 index 000000000000..dd8b227c661b --- /dev/null +++ b/pkgs/development/julia-modules/extract_artifacts.jl @@ -0,0 +1,63 @@ + +import Base: UUID +import Pkg.Artifacts: artifact_meta, artifact_names, find_artifacts_toml, load_artifacts_toml, select_downloadable_artifacts +import Pkg.BinaryPlatforms: AbstractPlatform, platform_key_abi, triplet +import Pkg.Operations: gen_build_code +import TOML + +pkg_uuid = UUID(ARGS[1]) +dir = ARGS[2] + +artifacts_toml = find_artifacts_toml(dir) + +if artifacts_toml == nothing + print("") + exit() +end + +platform = platform_key_abi() + +# Using collect_artifacts (from Pkg.jl) is more reliable than calling select_downloadable_artifacts directly. +# collect_artifacts includes support for .pkg/select_artifacts.jl, which may produce different results. +# If we use select_downloadable_artifacts here, then at depot build time it may try to download a different artifact +# and fail. + +# However! The collect_artifacts from Pkg.jl doesn't allow us to pass lazy to select_downloadable_artifacts. +# So we have to paste our own version in here :( + +function collect_artifacts(pkg_root::String; platform::AbstractPlatform) + # Check to see if this package has an (Julia)Artifacts.toml + artifacts_tomls = Tuple{String,Base.TOML.TOMLDict}[] + for f in artifact_names + artifacts_toml = joinpath(pkg_root, f) + if isfile(artifacts_toml) + selector_path = joinpath(pkg_root, ".pkg", "select_artifacts.jl") + + # If there is a dynamic artifact selector, run that in an appropriate sandbox to select artifacts + if isfile(selector_path) + # Despite the fact that we inherit the project, since the in-memory manifest + # has not been updated yet, if we try to load any dependencies, it may fail. + # Therefore, this project inheritance is really only for Preferences, not dependencies. + select_cmd = Cmd(`$(gen_build_code(selector_path; inherit_project=true)) --startup-file=no $(triplet(platform))`) + meta_toml = String(read(select_cmd)) + res = TOML.tryparse(meta_toml) + if res isa TOML.ParserError + errstr = sprint(showerror, res; context=stderr) + pkgerror("failed to parse TOML output from running $(repr(selector_path)), got: \n$errstr") + else + push!(artifacts_tomls, (artifacts_toml, TOML.parse(meta_toml))) + end + else + # Otherwise, use the standard selector from `Artifacts` + artifacts = select_downloadable_artifacts(artifacts_toml; platform, include_lazy=true) + push!(artifacts_tomls, (artifacts_toml, artifacts)) + end + break + end + end + return artifacts_tomls +end + +for (artifacts_toml, artifacts) in collect_artifacts(dir; platform) + TOML.print(artifacts) +end diff --git a/pkgs/development/julia-modules/extract_artifacts_16.jl b/pkgs/development/julia-modules/extract_artifacts_16.jl new file mode 100755 index 000000000000..af3099278daa --- /dev/null +++ b/pkgs/development/julia-modules/extract_artifacts_16.jl @@ -0,0 +1,33 @@ + +import Base: UUID +import Pkg.Artifacts: artifact_meta, find_artifacts_toml, load_artifacts_toml +import Pkg.BinaryPlatforms: platform_key_abi +import TOML + +pkg_uuid = UUID(ARGS[1]) +dir = ARGS[2] + +artifacts_toml = find_artifacts_toml(dir) + +if artifacts_toml == nothing + print("") + exit() +end + +platform = platform_key_abi() + +# Older Julia doesn't provide select_downloadable_artifacts or .pkg/select_artifacts.jl, +# so gather the artifacts the old-fashioned way +artifact_dict = load_artifacts_toml(artifacts_toml; pkg_uuid=pkg_uuid) + +results = Dict() +for name in keys(artifact_dict) + # Get the metadata about this name for the requested platform + meta = artifact_meta(name, artifact_dict, artifacts_toml; platform=platform) + + # If there are no instances of this name for the desired platform, skip it + meta === nothing && continue + + results[name] = meta +end +TOML.print(results) diff --git a/pkgs/development/julia-modules/package-closure.nix b/pkgs/development/julia-modules/package-closure.nix new file mode 100644 index 000000000000..2862e30f0b8b --- /dev/null +++ b/pkgs/development/julia-modules/package-closure.nix @@ -0,0 +1,180 @@ +{ lib +, julia +, python3 +, runCommand + +, augmentedRegistry +, packageNames +, packageOverrides +, packageImplications +}: + +let + # The specific package resolution code depends on the Julia version + # These are pretty similar and could be combined to reduce duplication + resolveCode = if lib.versionOlder julia.version "1.7" then resolveCode1_6 else resolveCode1_8; + + resolveCode1_6 = '' + import Pkg.API: check_package_name + import Pkg.Types: Context!, PRESERVE_NONE, manifest_info, project_deps_resolve!, registry_resolve!, stdlib_resolve!, ensure_resolved + import Pkg.Operations: _resolve, assert_can_add, is_dep, update_package_add + + foreach(pkg -> check_package_name(pkg.name, :add), pkgs) + pkgs = deepcopy(pkgs) # deepcopy for avoid mutating PackageSpec members + Context!(ctx) + + project_deps_resolve!(ctx, pkgs) + registry_resolve!(ctx, pkgs) + stdlib_resolve!(pkgs) + ensure_resolved(ctx, pkgs, registry=true) + + assert_can_add(ctx, pkgs) + + for (i, pkg) in pairs(pkgs) + entry = manifest_info(ctx, pkg.uuid) + pkgs[i] = update_package_add(ctx, pkg, entry, is_dep(ctx, pkg)) + end + + foreach(pkg -> ctx.env.project.deps[pkg.name] = pkg.uuid, pkgs) + + pkgs, deps_map = _resolve(ctx, pkgs, PRESERVE_NONE) +''; + + resolveCode1_8 = '' + import Pkg.API: handle_package_input! + import Pkg.Types: PRESERVE_NONE, project_deps_resolve!, registry_resolve!, stdlib_resolve!, ensure_resolved + import Pkg.Operations: _resolve, assert_can_add, update_package_add + + foreach(handle_package_input!, pkgs) + + # The handle_package_input! call above clears pkg.path, so we have to apply package overrides after + overrides = Dict{String, String}(${builtins.concatStringsSep ", " (lib.mapAttrsToList (name: path: ''"${name}" => "${path}"'') packageOverrides)}) + println("Package overrides: ") + println(overrides) + for pkg in pkgs + if pkg.name in keys(overrides) + pkg.path = overrides[pkg.name] + end + end + + project_deps_resolve!(ctx.env, pkgs) + registry_resolve!(ctx.registries, pkgs) + stdlib_resolve!(pkgs) + ensure_resolved(ctx, ctx.env.manifest, pkgs, registry=true) + + assert_can_add(ctx, pkgs) + + for (i, pkg) in pairs(pkgs) + entry = Pkg.Types.manifest_info(ctx.env.manifest, pkg.uuid) + is_dep = any(uuid -> uuid == pkg.uuid, [uuid for (name, uuid) in ctx.env.project.deps]) + pkgs[i] = update_package_add(ctx, pkg, entry, is_dep) + end + + foreach(pkg -> ctx.env.project.deps[pkg.name] = pkg.uuid, pkgs) + + # Save the original pkgs for later. We might need to augment it with the weak dependencies + orig_pkgs = pkgs + + pkgs, deps_map = _resolve(ctx.io, ctx.env, ctx.registries, pkgs, PRESERVE_NONE, ctx.julia_version) + + if VERSION >= VersionNumber("1.9") + # Check for weak dependencies, which appear on the RHS of the deps_map but not in pkgs. + # Build up weak_name_to_uuid + uuid_to_name = Dict() + for pkg in pkgs + uuid_to_name[pkg.uuid] = pkg.name + end + weak_name_to_uuid = Dict() + for (uuid, deps) in pairs(deps_map) + for (dep_name, dep_uuid) in pairs(deps) + if !haskey(uuid_to_name, dep_uuid) + weak_name_to_uuid[dep_name] = dep_uuid + end + end + end + + # If we have nontrivial weak dependencies, add each one to the initial pkgs and then re-run _resolve + if !isempty(weak_name_to_uuid) + println("Found weak dependencies: $(keys(weak_name_to_uuid))") + + orig_uuids = Set([pkg.uuid for pkg in orig_pkgs]) + + for (name, uuid) in pairs(weak_name_to_uuid) + if uuid in orig_uuids + continue + end + + pkg = PackageSpec(name, uuid) + + push!(orig_uuids, uuid) + push!(orig_pkgs, pkg) + ctx.env.project.deps[name] = uuid + entry = Pkg.Types.manifest_info(ctx.env.manifest, uuid) + orig_pkgs[length(orig_pkgs)] = update_package_add(ctx, pkg, entry, false) + end + + pkgs, deps_map = _resolve(ctx.io, ctx.env, ctx.registries, orig_pkgs, PRESERVE_NONE, ctx.julia_version) + end + end + ''; + + juliaExpression = packageNames: '' + import Pkg + Pkg.Registry.add(Pkg.RegistrySpec(path="${augmentedRegistry}")) + + import Pkg.Types: Context, PackageSpec + + input = ${lib.generators.toJSON {} packageNames} + + if isfile("extra_package_names.txt") + append!(input, readlines("extra_package_names.txt")) + end + + input = unique(input) + + println("Resolving packages: " * join(input, " ")) + + pkgs = [PackageSpec(pkg) for pkg in input] + + ctx = Context() + + ${resolveCode} + + open(ENV["out"], "w") do io + for spec in pkgs + println(io, "- name: " * spec.name) + println(io, " uuid: " * string(spec.uuid)) + println(io, " version: " * string(spec.version)) + if endswith(spec.name, "_jll") && haskey(deps_map, spec.uuid) + println(io, " depends_on: ") + for (dep_name, dep_uuid) in pairs(deps_map[spec.uuid]) + println(io, " \"$(dep_name)\": \"$(dep_uuid)\"") + end + end + end + end + ''; +in + +runCommand "julia-package-closure.yml" { buildInputs = [julia (python3.withPackages (ps: with ps; [pyyaml]))]; } '' + mkdir home + export HOME=$(pwd)/home + + echo "Resolving Julia packages with the following inputs" + echo "Julia: ${julia}" + echo "Registry: ${augmentedRegistry}" + + # Prevent a warning where Julia tries to download package server info + export JULIA_PKG_SERVER="" + + julia -e '${juliaExpression packageNames}'; + + # See if we need to add any extra package names based on the closure + # and the packageImplications + python ${./python}/find_package_implications.py "$out" '${lib.generators.toJSON {} packageImplications}' extra_package_names.txt + + if [ -f extra_package_names.txt ]; then + echo "Re-resolving with additional package names" + julia -e '${juliaExpression packageNames}'; + fi +'' diff --git a/pkgs/development/julia-modules/python/dag.py b/pkgs/development/julia-modules/python/dag.py new file mode 100644 index 000000000000..4cb775cd42cd --- /dev/null +++ b/pkgs/development/julia-modules/python/dag.py @@ -0,0 +1,59 @@ + +# This file based on a ChatGPT reponse for the following prompt: +# "can you write code in python to build up a DAG representing +# a dependency tree, and then a function that can return all the +# dependencies of a given node?" + +class Node: + def __init__(self, name): + self.name = name + self.dependencies = set() + + +class DAG: + def __init__(self): + self.nodes = {} + + def add_node(self, node_name, dependencies=None): + if node_name in self.nodes: + raise ValueError(f"Node '{node_name}' already exists in the graph.") + + node = Node(node_name) + if dependencies: + node.dependencies.update(dependencies) + + self.nodes[node_name] = node + + def add_dependency(self, node_name, dependency_name): + if node_name not in self.nodes: + raise ValueError(f"Node '{node_name}' does not exist in the graph.") + + if dependency_name not in self.nodes: + raise ValueError(f"Dependency '{dependency_name}' does not exist in the graph.") + + self.nodes[node_name].dependencies.add(dependency_name) + + def get_dependencies(self, node_name): + if node_name not in self.nodes: + raise ValueError(f"Node '{node_name}' does not exist in the graph.") + + node = self.nodes[node_name] + dependencies = set() + + def traverse_dependencies(current_node): + for dependency in current_node.dependencies: + dependencies.add(dependency) + if dependency in self.nodes: + traverse_dependencies(self.nodes[dependency]) + + traverse_dependencies(node) + return dependencies + + def has_node(self, node_name): + return node_name in self.nodes + + def __str__(self): + graph_str = "" + for node_name, node in self.nodes.items(): + graph_str += f"{node_name} -> {', '.join(node.dependencies)}\n" + return graph_str diff --git a/pkgs/development/julia-modules/python/dedup_overrides.py b/pkgs/development/julia-modules/python/dedup_overrides.py new file mode 100755 index 000000000000..d1a7337c598d --- /dev/null +++ b/pkgs/development/julia-modules/python/dedup_overrides.py @@ -0,0 +1,14 @@ + +import json +from pathlib import Path +import sys +import toml + +overrides_path = Path(sys.argv[1]) +out_path = Path(sys.argv[2]) + +with open(overrides_path, "r") as f: + overrides = json.loads(f.read()) + +with open(out_path, "w") as f: + toml.dump(overrides, f) diff --git a/pkgs/development/julia-modules/python/extract_artifacts.py b/pkgs/development/julia-modules/python/extract_artifacts.py new file mode 100755 index 000000000000..ecbdf10ed714 --- /dev/null +++ b/pkgs/development/julia-modules/python/extract_artifacts.py @@ -0,0 +1,99 @@ + +import json +from pathlib import Path +import multiprocessing +import subprocess +import sys +import toml +import yaml + +import dag + +dependencies_path = Path(sys.argv[1]) +closure_yaml_path = Path(sys.argv[2]) +julia_path = Path(sys.argv[3]) +extract_artifacts_script = Path(sys.argv[4]) +extra_libs = json.loads(sys.argv[5]) +out_path = Path(sys.argv[6]) + +with open(dependencies_path, "r") as f: + dependencies = yaml.safe_load(f) + dependency_uuids = dependencies.keys() + +with open(closure_yaml_path, "r") as f: + # Build up a map of UUID -> closure information + closure_yaml_list = yaml.safe_load(f) or [] + closure_yaml = {} + for item in closure_yaml_list: + closure_yaml[item["uuid"]] = item + + # Build up a dependency graph of UUIDs + closure_dependencies_dag = dag.DAG() + for uuid, contents in closure_yaml.items(): + if contents.get("depends_on"): + closure_dependencies_dag.add_node(uuid, dependencies=contents["depends_on"].values()) + +with open(out_path, "w") as f: + f.write("{ lib, fetchurl, glibc, pkgs, stdenv }:\n\n") + f.write("rec {\n") + + def process_item(item): + uuid, src = item + lines = [] + artifacts = toml.loads(subprocess.check_output([julia_path, extract_artifacts_script, uuid, src]).decode()) + if not artifacts: return f' uuid-{uuid} = {{}};\n' + + lines.append(f' uuid-{uuid} = {{') + + for artifact_name, details in artifacts.items(): + if len(details["download"]) == 0: continue + download = details["download"][0] + url = download["url"] + sha256 = download["sha256"] + + git_tree_sha1 = details["git-tree-sha1"] + + depends_on = set() + if closure_dependencies_dag.has_node(uuid): + depends_on = set(closure_dependencies_dag.get_dependencies(uuid)).intersection(dependency_uuids) + + other_libs = extra_libs.get(uuid, []) + + fixup = f"""fixupPhase = let + libs = lib.concatMap (lib.mapAttrsToList (k: v: v.path)) + [{" ".join(["uuid-" + x for x in depends_on])}]; + in '' + find $out -type f -executable -exec \ + patchelf --set-rpath \$ORIGIN:\$ORIGIN/../lib:${{lib.makeLibraryPath (["$out" glibc] ++ libs ++ (with pkgs; [{" ".join(other_libs)}]))}} {{}} \; + find $out -type f -executable -exec \ + patchelf --set-interpreter ${{glibc}}/lib/ld-linux-x86-64.so.2 {{}} \; + ''""" + + derivation = f"""{{ + name = "{artifact_name}"; + src = fetchurl {{ + url = "{url}"; + sha256 = "{sha256}"; + }}; + sourceRoot = "."; + dontConfigure = true; + dontBuild = true; + installPhase = "cp -r . $out"; + {fixup}; + }}""" + + lines.append(f""" "{artifact_name}" = {{ + sha1 = "{git_tree_sha1}"; + path = stdenv.mkDerivation {derivation}; + }};\n""") + + lines.append(' };\n') + + return "\n".join(lines) + + with multiprocessing.Pool(10) as pool: + for s in pool.map(process_item, dependencies.items()): + f.write(s) + + f.write(f""" +}}\n""") diff --git a/pkgs/development/julia-modules/python/find_package_implications.py b/pkgs/development/julia-modules/python/find_package_implications.py new file mode 100644 index 000000000000..f253d9c1e626 --- /dev/null +++ b/pkgs/development/julia-modules/python/find_package_implications.py @@ -0,0 +1,24 @@ + +import json +import os +from pathlib import Path +import subprocess +import sys +import yaml + +dependencies_path = Path(sys.argv[1]) +package_implications_json = sys.argv[2] +out_path = Path(sys.argv[3]) + +package_implications = json.loads(package_implications_json) +with open(dependencies_path) as f: + desired_packages = yaml.safe_load(f) or [] + +extra_package_names = [] +for pkg in desired_packages: + if pkg["name"] in package_implications: + extra_package_names.extend(package_implications[pkg["name"]]) + +if len(extra_package_names) > 0: + with open(out_path, "w") as f: + f.write("\n".join(extra_package_names)) diff --git a/pkgs/development/julia-modules/python/format_overrides.py b/pkgs/development/julia-modules/python/format_overrides.py new file mode 100644 index 000000000000..cc86ba391528 --- /dev/null +++ b/pkgs/development/julia-modules/python/format_overrides.py @@ -0,0 +1,22 @@ + +import json +from pathlib import Path +import sys +import toml + +overrides_path = Path(sys.argv[1]) +out_path = Path(sys.argv[2]) + +with open(overrides_path, "r") as f: + overrides = json.loads(f.read()) + +result = {} + +for (uuid, artifacts) in overrides.items(): + if len(artifacts) == 0: continue + + for (name, info) in artifacts.items(): + result[info["sha1"]] = info["path"] + +with open(out_path, "w") as f: + toml.dump(result, f) diff --git a/pkgs/development/julia-modules/python/minimal_registry.py b/pkgs/development/julia-modules/python/minimal_registry.py new file mode 100755 index 000000000000..c9527f0ef809 --- /dev/null +++ b/pkgs/development/julia-modules/python/minimal_registry.py @@ -0,0 +1,98 @@ + +from collections import defaultdict +import copy +import json +import os +from pathlib import Path +import shutil +import subprocess +import sys +import tempfile +import toml +import util +import yaml + + +registry_path = Path(sys.argv[1]) +desired_packages_path = Path(sys.argv[2]) +package_overrides = json.loads(sys.argv[3]) +dependencies_path = Path(sys.argv[4]) +out_path = Path(sys.argv[5]) + +with open(desired_packages_path, "r") as f: + desired_packages = yaml.safe_load(f) or [] + +uuid_to_versions = defaultdict(list) +for pkg in desired_packages: + uuid_to_versions[pkg["uuid"]].append(pkg["version"]) + +with open(dependencies_path, "r") as f: + uuid_to_store_path = yaml.safe_load(f) + +os.makedirs(out_path) + +registry = toml.load(registry_path / "Registry.toml") +registry["packages"] = {k: v for k, v in registry["packages"].items() if k in uuid_to_versions} + +for (uuid, versions) in uuid_to_versions.items(): + if uuid in package_overrides: + info = package_overrides[uuid] + + # Make a registry entry based on the info from the package override + path = Path(info["name"][0].upper()) / Path(info["name"]) + registry["packages"][uuid] = { + "name": info["name"], + "path": str(path), + } + + os.makedirs(out_path / path) + + # Read the Project.yaml from the src + project = toml.load(Path(info["src"]) / "Project.toml") + + # Generate all the registry files + with open(out_path / path / Path("Compat.toml"), "w") as f: + f.write('["%s"]\n' % info["version"]) + # Write nothing in Compat.toml, because we've already resolved everything + with open(out_path / path / Path("Deps.toml"), "w") as f: + f.write('["%s"]\n' % info["version"]) + toml.dump(project["deps"], f) + with open(out_path / path / Path("Versions.toml"), "w") as f: + f.write('["%s"]\n' % info["version"]) + f.write('git-tree-sha1 = "%s"\n' % info["treehash"]) + with open(out_path / path / Path("Package.toml"), "w") as f: + toml.dump({ + "name": info["name"], + "uuid": uuid, + "repo": "file://" + info["src"], + }, f) + + elif uuid in registry["packages"]: + registry_info = registry["packages"][uuid] + name = registry_info["name"] + path = registry_info["path"] + + os.makedirs(out_path / path) + + # Copy some files to the minimal repo unchanged + for f in ["Compat.toml", "Deps.toml"]: + if (registry_path / path / f).exists(): + shutil.copy2(registry_path / path / f, out_path / path) + + # Copy the Versions.toml file, trimming down to the versions we care about + all_versions = toml.load(registry_path / path / "Versions.toml") + versions_to_keep = {k: v for k, v in all_versions.items() if k in versions} + for k, v in versions_to_keep.items(): + del v["nix-sha256"] + with open(out_path / path / "Versions.toml", "w") as f: + toml.dump(versions_to_keep, f) + + # Fill in the local store path for the repo + if not uuid in uuid_to_store_path: continue + package_toml = toml.load(registry_path / path / "Package.toml") + package_toml["repo"] = "file://" + uuid_to_store_path[uuid] + with open(out_path / path / "Package.toml", "w") as f: + toml.dump(package_toml, f) + +with open(out_path / "Registry.toml", "w") as f: + toml.dump(registry, f) diff --git a/pkgs/development/julia-modules/python/sources_nix.py b/pkgs/development/julia-modules/python/sources_nix.py new file mode 100755 index 000000000000..99a952753e80 --- /dev/null +++ b/pkgs/development/julia-modules/python/sources_nix.py @@ -0,0 +1,67 @@ + +import json +from pathlib import Path +import re +import shutil +import sys +import toml +import util +import yaml + + +registry_path = Path(sys.argv[1]) +package_overrides = json.loads(sys.argv[2]) +desired_packages_path = Path(sys.argv[3]) +out_path = Path(sys.argv[4]) + +with open(desired_packages_path, "r") as f: + desired_packages = yaml.safe_load(f) or [] + +registry = toml.load(registry_path / "Registry.toml") + +def ensure_version_valid(version): + """ + Ensure a version string is a valid Julia-parsable version. + It doesn't really matter what it looks like as it's just used for overrides. + """ + return re.sub('[^0-9\.]','', version) + +with open(out_path, "w") as f: + f.write("{fetchgit}:\n") + f.write("{\n") + for pkg in desired_packages: + uuid = pkg["uuid"] + + if pkg["name"] in package_overrides: + treehash = util.get_commit_info(package_overrides[pkg["name"]])["tree"] + f.write(f""" "{uuid}" = {{ + src = null; # Overridden: will fill in later + name = "{pkg["name"]}"; + version = "{ensure_version_valid(pkg["version"])}"; + treehash = "{treehash}"; + }};\n""") + elif uuid in registry["packages"]: + registry_info = registry["packages"][uuid] + path = registry_info["path"] + packageToml = toml.load(registry_path / path / "Package.toml") + + all_versions = toml.load(registry_path / path / "Versions.toml") + if not pkg["version"] in all_versions: continue + version_to_use = all_versions[pkg["version"]] + + repo = packageToml["repo"] + f.write(f""" "{uuid}" = {{ + src = fetchgit {{ + url = "{repo}"; + rev = "{version_to_use["git-tree-sha1"]}"; + sha256 = "{version_to_use["nix-sha256"]}"; + }}; + name = "{pkg["name"]}"; + version = "{pkg["version"]}"; + treehash = "{version_to_use["git-tree-sha1"]}"; + }};\n""") + else: + # print("Warning: couldn't figure out what to do with pkg in sources_nix.py", pkg) + pass + + f.write("}") diff --git a/pkgs/development/julia-modules/python/util.py b/pkgs/development/julia-modules/python/util.py new file mode 100644 index 000000000000..34aaab970e59 --- /dev/null +++ b/pkgs/development/julia-modules/python/util.py @@ -0,0 +1,12 @@ + +import os +import subprocess +import tempfile + +def get_commit_info(repo): + with tempfile.TemporaryDirectory() as home_dir: + env_with_home = os.environ.copy() + env_with_home["HOME"] = home_dir + subprocess.check_output(["git", "config", "--global", "--add", "safe.directory", repo], env=env_with_home) + lines = subprocess.check_output(["git", "log", "--pretty=raw"], cwd=repo, env=env_with_home).decode().split("\n") + return dict([x.split() for x in lines if len(x.split()) == 2]) diff --git a/pkgs/development/julia-modules/registry.nix b/pkgs/development/julia-modules/registry.nix new file mode 100644 index 000000000000..929a805b48c5 --- /dev/null +++ b/pkgs/development/julia-modules/registry.nix @@ -0,0 +1,9 @@ +{ fetchFromGitHub }: + +fetchFromGitHub { + owner = "CodeDownIO"; + repo = "General"; + rev = "baf9e22ecdf97b6424a611ac4a565c6ee60d3f44"; + sha256 = "1nd3x2z8r6578149pbpkx9qw2ajln1kfy7w5kjsnv56v180h0ddf"; + # date = "2023-12-14T12:20:00+00:00"; +} diff --git a/pkgs/development/julia-modules/util.nix b/pkgs/development/julia-modules/util.nix new file mode 100644 index 000000000000..0c01fcbe8286 --- /dev/null +++ b/pkgs/development/julia-modules/util.nix @@ -0,0 +1,45 @@ +{ git +, runCommand +}: + +{ + # Add packages to a Python environment. Works if you pass something like either + # a) python3 + # b) python3.withPackages (ps: [...]) + # See https://github.com/NixOS/nixpkgs/pull/97467#issuecomment-689315186 + addPackagesToPython = python: packages: + if python ? "env" then python.override (old: { + extraLibs = old.extraLibs ++ packages; + }) + else python.withPackages (ps: packages); + + # Convert an ordinary source checkout into a repo with a single commit + repoifySimple = name: path: + runCommand ''${name}-repoified'' {buildInputs = [git];} '' + mkdir -p $out + cp -r ${path}/. $out + cd $out + chmod -R u+w . + rm -rf .git + git init + git add . -f + git config user.email "julia2nix@localhost" + git config user.name "julia2nix" + git commit -m "Dummy commit" + ''; + + # Convert an dependency source info into a repo with a single commit + repoifyInfo = uuid: info: + runCommand ''julia-${info.name}-${info.version}'' {buildInputs = [git];} '' + mkdir -p $out + cp -r ${info.src}/. $out + cd $out + chmod -R u+w . + rm -rf .git + git init + git add . -f + git config user.email "julia2nix@localhost" + git config user.name "julia2nix" + git commit -m "Dummy commit" + ''; +} diff --git a/pkgs/development/libraries/CGAL/4.nix b/pkgs/development/libraries/CGAL/4.nix index d30492c89061..d04a7bccded6 100644 --- a/pkgs/development/libraries/CGAL/4.nix +++ b/pkgs/development/libraries/CGAL/4.nix @@ -1,14 +1,12 @@ -{ lib, stdenv, fetchFromGitHub, fetchpatch, cmake, boost, gmp, mpfr }: +{ lib, stdenv, fetchurl, fetchpatch, cmake, boost, gmp, mpfr }: stdenv.mkDerivation rec { - version = "4.14.2"; + version = "4.14.3"; pname = "cgal"; - src = fetchFromGitHub { - owner = "CGAL"; - repo = "releases"; - rev = "CGAL-${version}"; - sha256 = "1p1xyws2s9h2c8hlkz1af4ix48qma160av24by6lcm8al1g44pca"; + src = fetchurl { + url = "https://github.com/CGAL/cgal/releases/download/releases%2FCGAL-${version}/CGAL-${version}.tar.xz"; + hash = "sha256-W6/nq+hDW+yhehCCBi02M2jsHj8NZYG7DaiwEPs4n+Q="; }; patches = [ diff --git a/pkgs/development/libraries/pcl/default.nix b/pkgs/development/libraries/pcl/default.nix index 635422fd9b99..31198124faac 100644 --- a/pkgs/development/libraries/pcl/default.nix +++ b/pkgs/development/libraries/pcl/default.nix @@ -18,7 +18,8 @@ , Cocoa , AGL , OpenGL -, withCuda ? false, cudatoolkit +, config +, withCuda ? config.cudaSupport, cudaPackages }: stdenv.mkDerivation rec { @@ -38,7 +39,13 @@ stdenv.mkDerivation rec { sed -i '/-ffloat-store/d' cmake/pcl_find_sse.cmake ''; - nativeBuildInputs = [ pkg-config cmake wrapQtAppsHook ]; + nativeBuildInputs = [ + pkg-config + cmake + wrapQtAppsHook + ] + ++ lib.optionals withCuda [ cudaPackages.cuda_nvcc ]; + buildInputs = [ eigen libusb1 @@ -46,8 +53,7 @@ stdenv.mkDerivation rec { qtbase libXt ] - ++ lib.optionals stdenv.isDarwin [ Cocoa AGL ] - ++ lib.optionals withCuda [ cudatoolkit ]; + ++ lib.optionals stdenv.isDarwin [ Cocoa AGL ]; propagatedBuildInputs = [ boost diff --git a/pkgs/development/libraries/science/chemistry/avogadrolibs/default.nix b/pkgs/development/libraries/science/chemistry/avogadrolibs/default.nix index e23fba7fb0eb..7966cd4be5f6 100644 --- a/pkgs/development/libraries/science/chemistry/avogadrolibs/default.nix +++ b/pkgs/development/libraries/science/chemistry/avogadrolibs/default.nix @@ -21,13 +21,13 @@ let in stdenv.mkDerivation rec { pname = "avogadrolibs"; - version = "1.97.0"; + version = "1.98.1"; src = fetchFromGitHub { owner = "OpenChemistry"; repo = pname; rev = version; - hash = "sha256-ZGFyUlFyI403aw/6GVze/gronT67XlEOKuw5sfHeVy8="; + hash = "sha256-BuBMWW7N5Cu9tw5Vpwk+aoIaMWwHViRzLtIG7XDWjN4="; }; postUnpack = '' @@ -53,9 +53,13 @@ in stdenv.mkDerivation rec { qttools ]; - postFixup = '' + # Fix the broken CMake files to use the correct paths + postInstall = '' substituteInPlace $out/lib/cmake/${pname}/AvogadroLibsConfig.cmake \ - --replace "''${AvogadroLibs_INSTALL_PREFIX}/$out" "''${AvogadroLibs_INSTALL_PREFIX}" + --replace "$out/" "" + + substituteInPlace $out/lib/cmake/${pname}/AvogadroLibsTargets.cmake \ + --replace "_IMPORT_PREFIX}/$out" "_IMPORT_PREFIX}/" ''; meta = with lib; { diff --git a/pkgs/development/libraries/science/chemistry/mmtf-cpp/default.nix b/pkgs/development/libraries/science/chemistry/mmtf-cpp/default.nix index ec1fed68ff93..a93b8f32cef2 100644 --- a/pkgs/development/libraries/science/chemistry/mmtf-cpp/default.nix +++ b/pkgs/development/libraries/science/chemistry/mmtf-cpp/default.nix @@ -2,13 +2,13 @@ stdenv.mkDerivation rec { pname = "mmtf-cpp"; - version = "1.0.0"; + version = "1.1.0"; src = fetchFromGitHub { owner = "rcsb"; repo = pname; rev = "v${version}"; - sha256= "17ylramda69plf5w0v5hxbl4ggkdi5s15z55cv0pljl12yvyva8l"; + hash = "sha256-8JrNobvekMggS8L/VORKA32DNUdXiDrYMObjd29wQmc="; }; nativeBuildInputs = [ cmake ]; diff --git a/pkgs/development/libraries/science/chemistry/molequeue/default.nix b/pkgs/development/libraries/science/chemistry/molequeue/default.nix index 1e8ca2d961d3..b560ac16c698 100644 --- a/pkgs/development/libraries/science/chemistry/molequeue/default.nix +++ b/pkgs/development/libraries/science/chemistry/molequeue/default.nix @@ -8,7 +8,7 @@ stdenv.mkDerivation rec { owner = "OpenChemistry"; repo = pname; rev = version; - sha256 = "+NoY8YVseFyBbxc3ttFWiQuHQyy1GN8zvV1jGFjmvLg="; + hash = "sha256-+NoY8YVseFyBbxc3ttFWiQuHQyy1GN8zvV1jGFjmvLg="; }; nativeBuildInputs = [ @@ -18,9 +18,10 @@ stdenv.mkDerivation rec { buildInputs = [ qttools ]; - postFixup = '' - substituteInPlace $out/lib/cmake/molequeue/MoleQueueConfig.cmake \ - --replace "''${MoleQueue_INSTALL_PREFIX}/$out" "''${MoleQueue_INSTALL_PREFIX}" + # Fix the broken CMake files to use the correct paths + postInstall = '' + substituteInPlace $out/lib/cmake/${pname}/MoleQueueConfig.cmake \ + --replace "$out/" "" ''; meta = with lib; { diff --git a/pkgs/development/libraries/unicorn/default.nix b/pkgs/development/libraries/unicorn/default.nix index 89adbc102578..b6a91a7367a4 100644 --- a/pkgs/development/libraries/unicorn/default.nix +++ b/pkgs/development/libraries/unicorn/default.nix @@ -29,6 +29,9 @@ stdenv.mkDerivation rec { IOKit ]; + # Ensure the linker is using atomic when compiling for RISC-V, otherwise fails + NIX_LDFLAGS = lib.optionalString stdenv.hostPlatform.isRiscV "-latomic"; + cmakeFlags = lib.optionals (stdenv.isDarwin && stdenv.isAarch64) [ # Some x86 tests are interrupted by signal 10 "-DCMAKE_CTEST_ARGUMENTS=--exclude-regex;test_x86" diff --git a/pkgs/development/python-modules/adafruit-io/default.nix b/pkgs/development/python-modules/adafruit-io/default.nix index 382fea4601cc..59bdcc46e8bb 100644 --- a/pkgs/development/python-modules/adafruit-io/default.nix +++ b/pkgs/development/python-modules/adafruit-io/default.nix @@ -10,7 +10,7 @@ buildPythonPackage rec { pname = "adafruit-io"; - version = "2.7.0"; + version = "2.7.1"; format = "setuptools"; disabled = pythonOlder "3.7"; @@ -19,7 +19,7 @@ buildPythonPackage rec { owner = "adafruit"; repo = "Adafruit_IO_Python"; rev = "refs/tags/${version}"; - hash = "sha256-BIquSrhtRv2NEOn/G6TTfYMrL2OBwwJQYZ455fznwdU="; + hash = "sha256-vfjyU+czLtUA0WDEvc0iYmJ2Tn75o/OsX909clfDsUE="; }; SETUPTOOLS_SCM_PRETEND_VERSION = version; diff --git a/pkgs/development/python-modules/adafruit-platformdetect/default.nix b/pkgs/development/python-modules/adafruit-platformdetect/default.nix index 080717e1a2cc..672854ce6a98 100644 --- a/pkgs/development/python-modules/adafruit-platformdetect/default.nix +++ b/pkgs/development/python-modules/adafruit-platformdetect/default.nix @@ -7,15 +7,15 @@ buildPythonPackage rec { pname = "adafruit-platformdetect"; - version = "3.56.0"; - format = "pyproject"; + version = "3.57.0"; + pyproject = true; disabled = pythonOlder "3.7"; src = fetchPypi { pname = "Adafruit-PlatformDetect"; inherit version; - hash = "sha256-PApfNjW7sfVmYT0NcEKs5MZJG65P7WQ5WVpQuOj8EV4="; + hash = "sha256-tw95VnxsK57KBMw0fzzgJnFe8O8Ef0rQ9qBMIeYrkHQ="; }; SETUPTOOLS_SCM_PRETEND_VERSION = version; diff --git a/pkgs/development/python-modules/aioambient/default.nix b/pkgs/development/python-modules/aioambient/default.nix index 7ec26592696b..4044f1b8a07e 100644 --- a/pkgs/development/python-modules/aioambient/default.nix +++ b/pkgs/development/python-modules/aioambient/default.nix @@ -15,23 +15,18 @@ buildPythonPackage rec { pname = "aioambient"; - version = "2023.10.1"; - format = "pyproject"; + version = "2023.12.0"; + pyproject = true; disabled = pythonOlder "3.9"; src = fetchFromGitHub { owner = "bachya"; - repo = pname; + repo = "aioambient"; rev = "refs/tags/${version}"; - hash = "sha256-Q7jb0tJsbVM2vEqKgjXOWJN2OwR9qLchU/4ShOUGPT4="; + hash = "sha256-O9MlXtX7UzFN1w/vxpcZ/nRPDFPK5wFKBl42rhaAu94="; }; - postPatch = '' - substituteInPlace pyproject.toml \ - --replace 'websockets = ">=11.0.1"' 'websockets = "*"' - ''; - nativeBuildInputs = [ poetry-core ]; diff --git a/pkgs/development/python-modules/aiocomelit/default.nix b/pkgs/development/python-modules/aiocomelit/default.nix index 3be83f060564..9d90db9e1c20 100644 --- a/pkgs/development/python-modules/aiocomelit/default.nix +++ b/pkgs/development/python-modules/aiocomelit/default.nix @@ -11,7 +11,7 @@ buildPythonPackage rec { pname = "aiocomelit"; - version = "0.6.2"; + version = "0.7.0"; format = "pyproject"; disabled = pythonOlder "3.10"; @@ -20,7 +20,7 @@ buildPythonPackage rec { owner = "chemelli74"; repo = "aiocomelit"; rev = "refs/tags/v${version}"; - hash = "sha256-Pqds4RwDxaUyZUIGTK0JOjsKbyB7j3uOfunbLXsKANk="; + hash = "sha256-xUtLRHNsv1q6QV6dYsS2OBQj/HsiZDfPhqMPDwNKS7A="; }; postPatch = '' diff --git a/pkgs/development/python-modules/aiolyric/default.nix b/pkgs/development/python-modules/aiolyric/default.nix index b6346a511aa5..989c704d3659 100644 --- a/pkgs/development/python-modules/aiolyric/default.nix +++ b/pkgs/development/python-modules/aiolyric/default.nix @@ -8,7 +8,7 @@ buildPythonPackage rec { pname = "aiolyric"; - version = "1.1.0"; + version = "1.1.1"; format = "setuptools"; disabled = pythonOlder "3.7"; @@ -17,7 +17,7 @@ buildPythonPackage rec { owner = "timmo001"; repo = pname; rev = "refs/tags/v${version}"; - hash = "sha256-LDLpNuwkoPacI/a2NSlqUABRgwy+jAjGwOxmShLskso="; + hash = "sha256-FZhLjVrLzLv6CZz/ROlvbtBK9XnpO8pG48aSIoBxhCo="; }; propagatedBuildInputs = [ diff --git a/pkgs/development/python-modules/aiooss2/default.nix b/pkgs/development/python-modules/aiooss2/default.nix index 85561d6472b1..91c71fb2bcd6 100644 --- a/pkgs/development/python-modules/aiooss2/default.nix +++ b/pkgs/development/python-modules/aiooss2/default.nix @@ -15,7 +15,7 @@ buildPythonPackage rec { pname = "aiooss2"; - version = "0.2.7"; + version = "0.2.8"; format = "pyproject"; disabled = pythonOlder "3.8"; @@ -24,7 +24,7 @@ buildPythonPackage rec { owner = "karajan1001"; repo = "aiooss2"; rev = "refs/tags/${version}"; - hash = "sha256-eMmJpX7bjX5r6GW9N5KmLQpo5V8i6F95TfInct34a2g="; + hash = "sha256-PwgbUZAuk2woEmLYDdWF5hTs19DASxxUv3Ga844ai7g="; }; SETUPTOOLS_SCM_PRETEND_VERSION = version; diff --git a/pkgs/development/python-modules/aiorecollect/default.nix b/pkgs/development/python-modules/aiorecollect/default.nix index c2b6f3609e53..4d3aae9dc1b8 100644 --- a/pkgs/development/python-modules/aiorecollect/default.nix +++ b/pkgs/development/python-modules/aiorecollect/default.nix @@ -13,7 +13,7 @@ buildPythonPackage rec { pname = "aiorecollect"; - version = "2023.11.0"; + version = "2023.12.0"; format = "pyproject"; disabled = pythonOlder "3.9"; @@ -22,7 +22,7 @@ buildPythonPackage rec { owner = "bachya"; repo = pname; rev = "refs/tags/${version}"; - hash = "sha256-CRiYde3FKVXhqB3W5rD7T3v93PAcsXBj0gG0L0umHSg="; + hash = "sha256-Rj0+r7eERLY5VzmuDQH/TeVLfmvmKwPqcvd1b/To0Ts="; }; postPatch = '' diff --git a/pkgs/development/python-modules/aioridwell/default.nix b/pkgs/development/python-modules/aioridwell/default.nix index c5b1c9bb70fa..d96add82b7d2 100644 --- a/pkgs/development/python-modules/aioridwell/default.nix +++ b/pkgs/development/python-modules/aioridwell/default.nix @@ -17,7 +17,7 @@ buildPythonPackage rec { pname = "aioridwell"; - version = "2023.10.0"; + version = "2023.12.0"; format = "pyproject"; disabled = pythonOlder "3.8"; @@ -26,7 +26,7 @@ buildPythonPackage rec { owner = "bachya"; repo = pname; rev = "refs/tags/${version}"; - hash = "sha256-psynooRbX34EFYY7FTqy3KdFsv939z/qYfIfyNTVkiM="; + hash = "sha256-Lg5O9xwEEgGFIrQoS4r4EMmYDX3yAkcMwHNMHMhLapI="; }; nativeBuildInputs = [ diff --git a/pkgs/development/python-modules/aiortm/default.nix b/pkgs/development/python-modules/aiortm/default.nix index b04e55251dea..dbbaea2d3903 100644 --- a/pkgs/development/python-modules/aiortm/default.nix +++ b/pkgs/development/python-modules/aiortm/default.nix @@ -15,7 +15,7 @@ buildPythonPackage rec { pname = "aiortm"; - version = "0.8.6"; + version = "0.8.7"; pyproject = true; disabled = pythonOlder "3.9"; @@ -24,7 +24,7 @@ buildPythonPackage rec { owner = "MartinHjelmare"; repo = "aiortm"; rev = "refs/tags/v${version}"; - hash = "sha256-bchfFtggmKXjAVTeFFy+3YXF3PCfAcFPC5fanw3l/RE="; + hash = "sha256-rWULiyQGBA01hWfRDulDuHX0c1LPo6CTZ9HFOn3MD+E="; }; postPatch = '' diff --git a/pkgs/development/python-modules/appthreat-vulnerability-db/default.nix b/pkgs/development/python-modules/appthreat-vulnerability-db/default.nix index e42ae97e2b4e..bedd0f367851 100644 --- a/pkgs/development/python-modules/appthreat-vulnerability-db/default.nix +++ b/pkgs/development/python-modules/appthreat-vulnerability-db/default.nix @@ -17,7 +17,7 @@ buildPythonPackage rec { pname = "appthreat-vulnerability-db"; - version = "5.5.4"; + version = "5.5.6"; pyproject = true; disabled = pythonOlder "3.7"; @@ -26,7 +26,7 @@ buildPythonPackage rec { owner = "AppThreat"; repo = "vulnerability-db"; rev = "refs/tags/v${version}"; - hash = "sha256-LWlB7ZIcGoNXq6WodJE6hinGDBFgUqP4tXa51T5yI8c="; + hash = "sha256-jPbYbyVOfn5XCVdzLEEtMcRnGQzzHiea0GZ+YatswEM="; }; postPatch = '' diff --git a/pkgs/development/python-modules/argilla/default.nix b/pkgs/development/python-modules/argilla/default.nix index 26a527eb4f8f..0a0e784ce629 100644 --- a/pkgs/development/python-modules/argilla/default.nix +++ b/pkgs/development/python-modules/argilla/default.nix @@ -65,7 +65,7 @@ }: let pname = "argilla"; - version = "1.19.0"; + version = "1.20.0"; optional-dependencies = { server = [ fastapi @@ -126,7 +126,7 @@ buildPythonPackage { owner = "argilla-io"; repo = pname; rev = "refs/tags/v${version}"; - hash = "sha256-Idl5Tm1XWgBLVgHPbXiyt9MW4J5wZdPb2J7iIDBnorg="; + hash = "sha256-LYtudVk4FJMMCMDwCW38DBFsHA2xGd2ScvXogy6zRdI="; }; pythonRelaxDeps = [ diff --git a/pkgs/development/python-modules/asana/default.nix b/pkgs/development/python-modules/asana/default.nix index 87a996a45523..a37a70844d6e 100644 --- a/pkgs/development/python-modules/asana/default.nix +++ b/pkgs/development/python-modules/asana/default.nix @@ -11,7 +11,7 @@ buildPythonPackage rec { pname = "asana"; - version = "4.0.11"; + version = "5.0.3"; format = "setuptools"; disabled = pythonOlder "3.7"; @@ -19,8 +19,8 @@ buildPythonPackage rec { src = fetchFromGitHub { owner = "asana"; repo = "python-asana"; - rev = "refs/tags/${version}"; - hash = "sha256-B98X8ErmoMIpXu4KKvRGgtElPs/va2+UIR+ARUgafgo="; + rev = "refs/tags/v${version}"; + hash = "sha256-9F63DvwMh9NwlTqFuhiXfgRRRxAFjjRYmYzsuOhlQJ0="; }; propagatedBuildInputs = [ diff --git a/pkgs/development/python-modules/asf-search/default.nix b/pkgs/development/python-modules/asf-search/default.nix index 39c458a42e7b..e9c6e376b10e 100644 --- a/pkgs/development/python-modules/asf-search/default.nix +++ b/pkgs/development/python-modules/asf-search/default.nix @@ -18,7 +18,7 @@ buildPythonPackage rec { pname = "asf-search"; - version = "6.7.1"; + version = "6.7.2"; format = "setuptools"; disabled = pythonOlder "3.7"; @@ -27,7 +27,7 @@ buildPythonPackage rec { owner = "asfadmin"; repo = "Discovery-asf_search"; rev = "refs/tags/v${version}"; - hash = "sha256-Gks2PsHqwQqH6CcLc9yF2eAeOwncCPzEphbvR2t3j3Q="; + hash = "sha256-cgd+OrBhMCc0UAYF1y5FiUSuKf3l3/7i8Y6JjhWnR0M="; }; propagatedBuildInputs = [ diff --git a/pkgs/development/python-modules/asyncsleepiq/default.nix b/pkgs/development/python-modules/asyncsleepiq/default.nix index 5ffe2e769cc9..7e556d5be622 100644 --- a/pkgs/development/python-modules/asyncsleepiq/default.nix +++ b/pkgs/development/python-modules/asyncsleepiq/default.nix @@ -7,14 +7,14 @@ buildPythonPackage rec { pname = "asyncsleepiq"; - version = "1.3.7"; + version = "1.4.0"; format = "setuptools"; disabled = pythonOlder "3.7"; src = fetchPypi { inherit pname version; - hash = "sha256-nKXZXOpwVN8Xe1vwwPGPucvyffiIQ8I4D+0A3qGco5w="; + hash = "sha256-H5Zg1I7+/vG5U9Tnr/qXVg/tTPMtuCWQGfEgug9ehEM="; }; propagatedBuildInputs = [ diff --git a/pkgs/development/python-modules/auth0-python/default.nix b/pkgs/development/python-modules/auth0-python/default.nix index 5d7498c794a9..03f2cb571b15 100644 --- a/pkgs/development/python-modules/auth0-python/default.nix +++ b/pkgs/development/python-modules/auth0-python/default.nix @@ -15,16 +15,16 @@ buildPythonPackage rec { pname = "auth0-python"; - version = "4.6.1"; - format = "pyproject"; + version = "4.7.0"; + pyproject = true; - disabled = pythonOlder "3.7"; + disabled = pythonOlder "3.8"; src = fetchFromGitHub { owner = "auth0"; repo = "auth0-python"; rev = "refs/tags/${version}"; - hash = "sha256-weXEwrOP+TKVwhqCeFVqUw4x+q2Wplr0QWVUzpbNPSc="; + hash = "sha256-Z89T0HXB66MZTYNKSK8fHunUBFuI1wT5jcy+P3+9tIk="; }; nativeBuildInputs = [ diff --git a/pkgs/development/python-modules/authcaptureproxy/default.nix b/pkgs/development/python-modules/authcaptureproxy/default.nix index 37e640ca6a8d..3b65404bde72 100644 --- a/pkgs/development/python-modules/authcaptureproxy/default.nix +++ b/pkgs/development/python-modules/authcaptureproxy/default.nix @@ -20,14 +20,14 @@ buildPythonPackage rec { pname = "authcaptureproxy"; - version = "1.3.0"; + version = "1.3.2"; pyproject = true; src = fetchFromGitHub { owner = "alandtse"; repo = "auth_capture_proxy"; rev = "refs/tags/v${version}"; - hash = "sha256-qkvr8uYI6+lbNsAPw2PAnPyWRQTE4AEHf3djBfSp3XU="; + hash = "sha256-gdu0Ror/epu6huTEpBrqHD62O9uaL6273pKnpqPKskc="; }; nativeBuildInputs = [ diff --git a/pkgs/development/python-modules/aws-lambda-builders/default.nix b/pkgs/development/python-modules/aws-lambda-builders/default.nix index ffa17294fc2f..15b1c698d4dc 100644 --- a/pkgs/development/python-modules/aws-lambda-builders/default.nix +++ b/pkgs/development/python-modules/aws-lambda-builders/default.nix @@ -12,7 +12,7 @@ buildPythonPackage rec { pname = "aws-lambda-builders"; - version = "1.43.0"; + version = "1.44.0"; format = "setuptools"; disabled = pythonOlder "3.7"; @@ -21,7 +21,7 @@ buildPythonPackage rec { owner = "awslabs"; repo = "aws-lambda-builders"; rev = "refs/tags/v${version}"; - hash = "sha256-rwyhcoVVMdSmv/YqUk/sR4EMSRJHHB99v7aE8P4l8wE="; + hash = "sha256-97NhNlYaxBwUdBmg6qzpGdtGyE86rO/PXl9pDfyitbI="; }; postPatch = '' diff --git a/pkgs/development/python-modules/azure-mgmt-compute/default.nix b/pkgs/development/python-modules/azure-mgmt-compute/default.nix index 495b448c4c99..eb95a00de2a0 100644 --- a/pkgs/development/python-modules/azure-mgmt-compute/default.nix +++ b/pkgs/development/python-modules/azure-mgmt-compute/default.nix @@ -10,14 +10,14 @@ buildPythonPackage rec { pname = "azure-mgmt-compute"; - version = "30.3.0"; + version = "30.4.0"; format = "setuptools"; disabled = pythonOlder "3.7"; src = fetchPypi { inherit pname version; - hash = "sha256-5Sl4Y0D4YqpqIYp61qW+trn7VYM8XKoIUcwzFNBJO2M="; + hash = "sha256-C3Qo/YvRXHy9fGa5uwEOClyzeoBs7x9JSNkHGRV2kzQ="; }; propagatedBuildInputs = [ diff --git a/pkgs/development/python-modules/azure-mgmt-network/default.nix b/pkgs/development/python-modules/azure-mgmt-network/default.nix index 61e979ee10a7..a9e55d0e775a 100644 --- a/pkgs/development/python-modules/azure-mgmt-network/default.nix +++ b/pkgs/development/python-modules/azure-mgmt-network/default.nix @@ -10,14 +10,14 @@ buildPythonPackage rec { pname = "azure-mgmt-network"; - version = "25.1.0"; + version = "25.2.0"; format = "setuptools"; disabled = pythonOlder "3.7"; src = fetchPypi { inherit pname version; - hash = "sha256-+Tn3W/E54D0sRXpPB6XrrbWv/dcKpUvpoK9EuOUhMvw="; + hash = "sha256-EUxCktIjsdHiR7Qa9luNWjeTVn5q2/ojB3IFUiP0GCo="; }; propagatedBuildInputs = [ diff --git a/pkgs/development/python-modules/boto3-stubs/default.nix b/pkgs/development/python-modules/boto3-stubs/default.nix index ad74f787e7ab..397dffa6e432 100644 --- a/pkgs/development/python-modules/boto3-stubs/default.nix +++ b/pkgs/development/python-modules/boto3-stubs/default.nix @@ -363,12 +363,12 @@ buildPythonPackage rec { pname = "boto3-stubs"; - version = "1.29.7"; + version = "1.34.2"; format = "setuptools"; src = fetchPypi { inherit pname version; - hash = "sha256-PrVsWs8ESCmq3eAj1Ox3WPzByx0S6Uy0vIL20HvAruM="; + hash = "sha256-PNsE3SPM9k8La03h+d9wNRskjzMy4uaDEFVf+MefaZU="; }; propagatedBuildInputs = [ diff --git a/pkgs/development/python-modules/botocore-stubs/default.nix b/pkgs/development/python-modules/botocore-stubs/default.nix index a6407cf27244..088782775d61 100644 --- a/pkgs/development/python-modules/botocore-stubs/default.nix +++ b/pkgs/development/python-modules/botocore-stubs/default.nix @@ -9,7 +9,7 @@ buildPythonPackage rec { pname = "botocore-stubs"; - version = "1.33.8"; + version = "1.34.2"; format = "pyproject"; disabled = pythonOlder "3.7"; @@ -17,7 +17,7 @@ buildPythonPackage rec { src = fetchPypi { pname = "botocore_stubs"; inherit version; - hash = "sha256-A1b/D8kY2N74vfx4UjeR60zlXCVcHr5JuhBeFoyBfc0="; + hash = "sha256-+2DKdWGyqdHdq9xe65YRKy+Xjd+mopS74x0r/1pOZYo="; }; nativeBuildInputs = [ diff --git a/pkgs/development/python-modules/censys/default.nix b/pkgs/development/python-modules/censys/default.nix index 9c24281e8d62..f4b1f97f8cfa 100644 --- a/pkgs/development/python-modules/censys/default.nix +++ b/pkgs/development/python-modules/censys/default.nix @@ -18,8 +18,8 @@ buildPythonPackage rec { pname = "censys"; - version = "2.2.9"; - format = "pyproject"; + version = "2.2.10"; + pyproject = true; disabled = pythonOlder "3.7"; @@ -27,7 +27,7 @@ buildPythonPackage rec { owner = "censys"; repo = "censys-python"; rev = "refs/tags/v${version}"; - hash = "sha256-Q6Ii2fsJYNABhuaRK4nZ6bjjvNsoIcgNVFBXdBgTXIo="; + hash = "sha256-rjLTEaHSBB6igffNGt4qJZeSyIn1Cc1ZGEGfEoMj7OQ="; }; nativeBuildInputs = [ diff --git a/pkgs/development/python-modules/confight/default.nix b/pkgs/development/python-modules/confight/default.nix index 0a5df6aa3e20..8ee09009fb97 100644 --- a/pkgs/development/python-modules/confight/default.nix +++ b/pkgs/development/python-modules/confight/default.nix @@ -6,12 +6,12 @@ buildPythonPackage rec { pname = "confight"; - version = "1.3.1"; + version = "2.0"; format = "setuptools"; src = fetchPypi { inherit pname version; - hash = "sha256-fJr7f9Y/zEpCedWYd04AMuhkOFqZLJOw4sDiz8SDQ/Y="; + hash = "sha256-iodoexnh9tG4dgkjDXCUzWRFDhRlJ3HRgaNhxG2lwPY="; }; propagatedBuildInputs = [ diff --git a/pkgs/development/python-modules/dvc-http/default.nix b/pkgs/development/python-modules/dvc-http/default.nix index cb812d850c16..49737d9b21ce 100644 --- a/pkgs/development/python-modules/dvc-http/default.nix +++ b/pkgs/development/python-modules/dvc-http/default.nix @@ -11,7 +11,7 @@ buildPythonPackage rec { pname = "dvc-http"; - version = "2.30.2"; + version = "2.32.0"; format = "pyproject"; disabled = pythonOlder "3.8"; @@ -20,7 +20,7 @@ buildPythonPackage rec { owner = "iterative"; repo = pname; rev = "refs/tags/${version}"; - hash = "sha256-IlgJEnS+rHSg5cw7SCc3vVtG1mJA5voGViya7nkpL2M="; + hash = "sha256-ru/hOFv/RcS/7SBpTJU8xFxdllmaiH4dV1ouS6GGKkY="; }; SETUPTOOLS_SCM_PRETEND_VERSION = version; diff --git a/pkgs/development/python-modules/gudhi/default.nix b/pkgs/development/python-modules/gudhi/default.nix index c58872ca5bdd..8989320fdf4b 100644 --- a/pkgs/development/python-modules/gudhi/default.nix +++ b/pkgs/development/python-modules/gudhi/default.nix @@ -5,7 +5,7 @@ , boost , eigen , gmp -, cgal_5 # see https://github.com/NixOS/nixpkgs/pull/94875 about cgal +, cgal # see https://github.com/NixOS/nixpkgs/pull/94875 about cgal , mpfr , tbb , numpy @@ -33,7 +33,7 @@ buildPythonPackage rec { patches = [ ./remove_explicit_PYTHONPATH.patch ]; nativeBuildInputs = [ cmake numpy cython pybind11 matplotlib ]; - buildInputs = [ boost eigen gmp cgal_5 mpfr ] + buildInputs = [ boost eigen gmp cgal mpfr ] ++ lib.optionals enableTBB [ tbb ]; propagatedBuildInputs = [ numpy scipy ]; nativeCheckInputs = [ pytest ]; diff --git a/pkgs/development/python-modules/minidump/default.nix b/pkgs/development/python-modules/minidump/default.nix index 9168d3297b11..2829a6351ace 100644 --- a/pkgs/development/python-modules/minidump/default.nix +++ b/pkgs/development/python-modules/minidump/default.nix @@ -7,14 +7,14 @@ buildPythonPackage rec { pname = "minidump"; - version = "0.0.22"; + version = "0.0.23"; pyproject = true; disabled = pythonOlder "3.6"; src = fetchPypi { inherit pname version; - hash = "sha256-PPvvvHz3WA67Vn2P7MIY+ChkjXrCOuTgj0KXr4B2mZ0="; + hash = "sha256-R+tza5C/2egkajScmilp/8qowoSklYVfEB+f0KMNBqQ="; }; nativeBuildInputs = [ diff --git a/pkgs/development/tools/continuous-integration/gitlab-runner/default.nix b/pkgs/development/tools/continuous-integration/gitlab-runner/default.nix index 479f319c5426..ac8e06cf8570 100644 --- a/pkgs/development/tools/continuous-integration/gitlab-runner/default.nix +++ b/pkgs/development/tools/continuous-integration/gitlab-runner/default.nix @@ -1,7 +1,7 @@ { lib, buildGoModule, fetchFromGitLab, fetchurl, bash }: let - version = "16.6.0"; + version = "16.6.1"; in buildGoModule rec { inherit version; @@ -23,7 +23,7 @@ buildGoModule rec { owner = "gitlab-org"; repo = "gitlab-runner"; rev = "v${version}"; - sha256 = "sha256-4N00+yO7Ps0+jy7WmHhm4Eh4MXt3beH00ScZ1RWNByE="; + sha256 = "sha256-z/W4mqC6524ocBR0c2UpMrlo5njXoewgBOulPoe2UBY="; }; patches = [ diff --git a/pkgs/development/tools/misc/act/default.nix b/pkgs/development/tools/misc/act/default.nix index 26337b0dcc7d..f4540cdacc63 100644 --- a/pkgs/development/tools/misc/act/default.nix +++ b/pkgs/development/tools/misc/act/default.nix @@ -5,16 +5,16 @@ buildGoModule rec { pname = "act"; - version = "0.2.55"; + version = "0.2.56"; src = fetchFromGitHub { owner = "nektos"; repo = pname; rev = "refs/tags/v${version}"; - hash = "sha256-OFtzqnXKj03papfBDQlgUonOA7eKGWDJeVZmfFkPUcc="; + hash = "sha256-Lco14Zwnad9AlujmPwhT5zRhsrifbQ3oi0AftjqsUQk="; }; - vendorHash = "sha256-45UPm7ThTSRTgzaD4tXoTaeT4hRlMKn01mvgJS1I7zI="; + vendorHash = "sha256-rQCxRUIzTJtL8gC9nYV+HKzB7hozyR24TCb+1y/qKM4="; doCheck = false; diff --git a/pkgs/development/tools/sassc/default.nix b/pkgs/development/tools/sassc/default.nix index 54f744a1608e..15995303748f 100644 --- a/pkgs/development/tools/sassc/default.nix +++ b/pkgs/development/tools/sassc/default.nix @@ -23,6 +23,7 @@ stdenv.mkDerivation rec { description = "A front-end for libsass"; homepage = "https://github.com/sass/sassc/"; license = licenses.mit; + mainProgram = "sassc"; maintainers = with maintainers; [ codyopel pjones ]; platforms = platforms.unix; }; diff --git a/pkgs/development/tools/trunk/default.nix b/pkgs/development/tools/trunk/default.nix index c19936b2bf64..b5a1c90926fb 100644 --- a/pkgs/development/tools/trunk/default.nix +++ b/pkgs/development/tools/trunk/default.nix @@ -4,11 +4,10 @@ rustPlatform, fetchFromGitHub, pkg-config, openssl, -libiconv, jq, moreutils, CoreServices, -Security +SystemConfiguration }: rustPlatform.buildRustPackage rec { @@ -24,7 +23,7 @@ rustPlatform.buildRustPackage rec { nativeBuildInputs = [ pkg-config ]; buildInputs = if stdenv.isDarwin - then [ libiconv CoreServices Security ] + then [ CoreServices SystemConfiguration ] else [ openssl ]; # requires network checkFlags = [ "--skip=tools::tests::download_and_install_binaries" ]; diff --git a/pkgs/os-specific/darwin/aldente/default.nix b/pkgs/os-specific/darwin/aldente/default.nix index 245ba81e2914..a67efd3367d4 100644 --- a/pkgs/os-specific/darwin/aldente/default.nix +++ b/pkgs/os-specific/darwin/aldente/default.nix @@ -6,11 +6,11 @@ stdenvNoCC.mkDerivation (finalAttrs: { pname = "aldente"; - version = "1.24"; + version = "1.24.1"; src = fetchurl { url = "https://github.com/davidwernhart/aldente-charge-limiter/releases/download/${finalAttrs.version}/AlDente.dmg"; - hash = "sha256-5byGKtVgKiE8m0+GXDtUpTwQpuUj4lv0hPOl4jhH9wk="; + hash = "sha256-vOv52SrUki2f9vGzYy8dhVJVxna2ZvhtG6WbKjCv3gA="; }; dontBuild = true; diff --git a/pkgs/os-specific/linux/nvidia-x11/default.nix b/pkgs/os-specific/linux/nvidia-x11/default.nix index 54df7cbc6271..9385b8687e58 100644 --- a/pkgs/os-specific/linux/nvidia-x11/default.nix +++ b/pkgs/os-specific/linux/nvidia-x11/default.nix @@ -81,6 +81,17 @@ rec { useFabricmanager = true; }; + dc_535 = generic rec { + version = "535.129.03"; + url = "https://us.download.nvidia.com/tesla/${version}/NVIDIA-Linux-x86_64-${version}.run"; + sha256_64bit = "sha256-5tylYmomCMa7KgRs/LfBrzOLnpYafdkKwJu4oSb/AC4="; + persistencedSha256 = "sha256-FRMqY5uAJzq3o+YdM2Mdjj8Df6/cuUUAnh52Ne4koME="; + fabricmanagerSha256 = "sha256-5KRYS+JLVAhDkBn8Z7e0uJvULQy6dSpwnYsbBxw7Mxg="; + useSettings = false; + usePersistenced = true; + useFabricmanager = true; + }; + # Update note: # If you add a legacy driver here, also update `top-level/linux-kernels.nix`, # adding to the `nvidia_x11_legacy*` entries. diff --git a/pkgs/os-specific/linux/nvidia-x11/fabricmanager.nix b/pkgs/os-specific/linux/nvidia-x11/fabricmanager.nix index 58cf8c0e3557..d9865f00d22c 100644 --- a/pkgs/os-specific/linux/nvidia-x11/fabricmanager.nix +++ b/pkgs/os-specific/linux/nvidia-x11/fabricmanager.nix @@ -12,7 +12,7 @@ stdenv.mkDerivation rec { pname = "fabricmanager"; version = fmver; src = fetchurl { - url = "https://developer.download.nvidia.com/compute/cuda/redist/fabricmanager/" + + url = "https://developer.download.nvidia.com/compute/nvidia-driver/redist/fabricmanager/" + "${sys}/${pname}-${sys}-${fmver}-archive.tar.xz"; inherit sha256; }; diff --git a/pkgs/os-specific/linux/nvidia-x11/generic.nix b/pkgs/os-specific/linux/nvidia-x11/generic.nix index c8957d6193a5..e05400aec276 100644 --- a/pkgs/os-specific/linux/nvidia-x11/generic.nix +++ b/pkgs/os-specific/linux/nvidia-x11/generic.nix @@ -63,7 +63,7 @@ assert versionOlder version "391" -> sha256_32bit != null; assert useSettings -> settingsSha256 != null; assert usePersistenced -> persistencedSha256 != null; assert useFabricmanager -> fabricmanagerSha256 != null; -assert useFabricmanager -> !(useSettings || usePersistenced); +assert useFabricmanager -> !useSettings; let nameSuffix = optionalString (!libsOnly) "-${kernel.version}"; diff --git a/pkgs/servers/mail/mailpit/default.nix b/pkgs/servers/mail/mailpit/default.nix index 2e7b90d8dce9..5aa5ae67e988 100644 --- a/pkgs/servers/mail/mailpit/default.nix +++ b/pkgs/servers/mail/mailpit/default.nix @@ -12,13 +12,13 @@ }: let - version = "1.11.0"; + version = "1.11.1"; src = fetchFromGitHub { owner = "axllent"; repo = "mailpit"; rev = "v${version}"; - hash = "sha256-+PtyoItn9Dwf7HU3OjzldqfYgdu0LatPmijXK3gAKYY="; + hash = "sha256-K/B2FRzAtVdXa+lTi0bhkHjBe0rbAc4yFNv9uNDvB4Y="; }; # Separate derivation, because if we mix this in buildGoModule, the separate @@ -30,7 +30,7 @@ let npmDeps = fetchNpmDeps { inherit src; - hash = "sha256-zx6B6kDVdKJMQQPONC/KWRXK2i+4l5w9hzrAqatrKTE="; + hash = "sha256-2WA4mqY/bO/K3m19T5/xGbUbcR95DXQnywkjjzstmd4="; }; env = lib.optionalAttrs (stdenv.isDarwin && stdenv.isx86_64) { @@ -56,7 +56,7 @@ buildGoModule { pname = "mailpit"; inherit src version; - vendorHash = "sha256-UQms3YWXJRP1u1ERlsFNpo6ei86qaH6pgfvCLnB3AAk="; + vendorHash = "sha256-1go3lkNaar9HSjJxKqqR+RII7V7Ufj1gYLalxyvJaVE="; CGO_ENABLED = 0; diff --git a/pkgs/servers/monitoring/prometheus/graphite-exporter.nix b/pkgs/servers/monitoring/prometheus/graphite-exporter.nix index fa0998b31772..3c27d018d781 100644 --- a/pkgs/servers/monitoring/prometheus/graphite-exporter.nix +++ b/pkgs/servers/monitoring/prometheus/graphite-exporter.nix @@ -2,16 +2,16 @@ buildGoModule rec { pname = "graphite-exporter"; - version = "0.14.0"; + version = "0.15.0"; src = fetchFromGitHub { owner = "prometheus"; repo = "graphite_exporter"; rev = "v${version}"; - hash = "sha256-UaflfU27GR8VK6AduPDBcQyO3u1uX6YlGP9O4LFwn9A="; + hash = "sha256-2u8grG5n0XkBS6zNxYrPyL+HP5/jEe/bXLt/1l759o4="; }; - vendorHash = "sha256-cIl35wbdPCQJLudXphMbjO2Ztd/H1clI43xaMU6T0D4="; + vendorHash = "sha256-wt2eDCNZAss3zSqvXeKTlsrPfj8pMXKWa3Yb33uuW0M="; preCheck = let skippedTests = [ diff --git a/pkgs/servers/monitoring/prometheus/influxdb-exporter.nix b/pkgs/servers/monitoring/prometheus/influxdb-exporter.nix index 2951530d2259..9eccbd666ca7 100644 --- a/pkgs/servers/monitoring/prometheus/influxdb-exporter.nix +++ b/pkgs/servers/monitoring/prometheus/influxdb-exporter.nix @@ -6,17 +6,17 @@ buildGoModule rec { pname = "influxdb_exporter"; - version = "0.11.4"; + version = "0.11.5"; rev = "v${version}"; src = fetchFromGitHub { inherit rev; owner = "prometheus"; repo = "influxdb_exporter"; - hash = "sha256-q6Pe7rw5BP1IUdokwlTqjiz2nB8+pC6u9al164EgAbM="; + hash = "sha256-5jKwUuM3JL0zzXFesXTUBNMkA7bhd37BhqxZ/RzG20Q="; }; - vendorHash = "sha256-sU2jxmXuSN5D+btjzUU51WXWxmj+2Qqp28NQvEyIUbM="; + vendorHash = "sha256-VQ8MkzT8caPR1gpLXvNzWD5/pO0IKw8d+bT8gohAiJo="; ldflags = [ "-s" diff --git a/pkgs/servers/monitoring/prometheus/nut-exporter.nix b/pkgs/servers/monitoring/prometheus/nut-exporter.nix index fee6bd1f4dbb..7b1ea2087bed 100644 --- a/pkgs/servers/monitoring/prometheus/nut-exporter.nix +++ b/pkgs/servers/monitoring/prometheus/nut-exporter.nix @@ -2,13 +2,13 @@ buildGoModule rec { pname = "nut-exporter"; - version = "3.0.0"; + version = "3.1.1"; src = fetchFromGitHub { owner = "DRuggeri"; repo = "nut_exporter"; rev = "v${version}"; - sha256 = "sha256-Y8G8nFhZ9Onxx40DJSTi0rnef8ulNTkj4bsPfqylOjQ="; + sha256 = "sha256-izD2Ks29/4/FBsZoH0raFzqb0DgPR8hXRYBZQEvET+s="; }; vendorHash = "sha256-DGCNYklINPPzC7kCdEUS7TqVvg2SnKFqe0qHs5RSmzY="; diff --git a/pkgs/servers/monitoring/prometheus/statsd-exporter.nix b/pkgs/servers/monitoring/prometheus/statsd-exporter.nix index 666b8ed9bdc7..ca650c53475d 100644 --- a/pkgs/servers/monitoring/prometheus/statsd-exporter.nix +++ b/pkgs/servers/monitoring/prometheus/statsd-exporter.nix @@ -5,16 +5,16 @@ buildGoModule rec { pname = "statsd_exporter"; - version = "0.25.0"; + version = "0.26.0"; src = fetchFromGitHub { owner = "prometheus"; repo = "statsd_exporter"; rev = "v${version}"; - hash = "sha256-H5ckrDAs9gwQCkVe4TKF4yuqLh2S/+dPaaRH+5aoj+o="; + hash = "sha256-C7+4v40T667KJHEQ3ebLDg2wJNrxD/nossfT6rMlER8="; }; - vendorHash = "sha256-LhPfOc83/IWkTk3C1DZggWngPJWobZFeCl4cum/aIQo="; + vendorHash = "sha256-scBpRZeECgAtpu9lnkIk1I2c8UmAkEL8LYNPUeUNYto="; meta = with lib; { description = "Receives StatsD-style metrics and exports them to Prometheus"; diff --git a/pkgs/servers/onlyoffice-documentserver/default.nix b/pkgs/servers/onlyoffice-documentserver/default.nix index ea5a35eeb78f..bc5a41750f55 100644 --- a/pkgs/servers/onlyoffice-documentserver/default.nix +++ b/pkgs/servers/onlyoffice-documentserver/default.nix @@ -15,11 +15,11 @@ let # var/www/onlyoffice/documentserver/server/DocService/docservice onlyoffice-documentserver = stdenv.mkDerivation rec { pname = "onlyoffice-documentserver"; - version = "7.5.0"; + version = "7.5.1"; src = fetchurl { url = "https://github.com/ONLYOFFICE/DocumentServer/releases/download/v${lib.concatStringsSep "." (lib.take 3 (lib.splitVersion version))}/onlyoffice-documentserver_amd64.deb"; - sha256 = "sha256-0rtxKSVIyCzYnhRneLOEu1e1qtAO6dGBAUr/oKq95Hw="; + sha256 = "sha256-191PYpxs/TbVXoBPHvuyTp81ZMtw1YaFznY1hUSbh+0="; }; preferLocalBuild = true; diff --git a/pkgs/servers/sql/postgresql/ext/pg_uuidv7.nix b/pkgs/servers/sql/postgresql/ext/pg_uuidv7.nix index a405a1c764d6..7abeba5adda1 100644 --- a/pkgs/servers/sql/postgresql/ext/pg_uuidv7.nix +++ b/pkgs/servers/sql/postgresql/ext/pg_uuidv7.nix @@ -6,7 +6,7 @@ stdenv.mkDerivation rec { pname = "pg_uuidv7"; - version = "1.4.0"; + version = "1.4.1"; buildInputs = [ postgresql ]; @@ -14,7 +14,7 @@ stdenv.mkDerivation rec { owner = "fboulnois"; repo = "pg_uuidv7"; rev = "v${version}"; - hash = "sha256-GwjaFEXlJI72V07ukWPB3LeRBWAL6STq866f/rRCVoo="; + hash = "sha256-1qEsDCcULceMqvR3DIC5rOfpzn2PYbFGq0H8p2+9GR4="; }; installPhase = '' diff --git a/pkgs/tools/compression/ouch/default.nix b/pkgs/tools/compression/ouch/default.nix index 5321982f189e..07a5302b5a17 100644 --- a/pkgs/tools/compression/ouch/default.nix +++ b/pkgs/tools/compression/ouch/default.nix @@ -12,16 +12,16 @@ rustPlatform.buildRustPackage rec { pname = "ouch"; - version = "0.5.0"; + version = "0.5.1"; src = fetchFromGitHub { owner = "ouch-org"; repo = "ouch"; rev = version; - hash = "sha256-WqV04GhX7lIla5BEdHRgRZsAWBSweb1HFAC9XZYqpYo="; + hash = "sha256-WO1fetu39fcLGcrbzFh+toHpnyxWuDVHtmjuH203hzQ="; }; - cargoHash = "sha256-A3YcgHed5mp7//FMoC/02KAU7Y+7YiG50eWE9tP5mF8="; + cargoHash = "sha256-OdAu7fStTJCF1JGJG9TRE1Qosy6yjKsWq01MYpbXZcg="; nativeBuildInputs = [ installShellFiles pkg-config ]; diff --git a/pkgs/tools/misc/broot/default.nix b/pkgs/tools/misc/broot/default.nix index a540a0c7d495..1b5f53385d51 100644 --- a/pkgs/tools/misc/broot/default.nix +++ b/pkgs/tools/misc/broot/default.nix @@ -17,16 +17,16 @@ rustPlatform.buildRustPackage rec { pname = "broot"; - version = "1.30.0"; + version = "1.30.1"; src = fetchFromGitHub { owner = "Canop"; repo = pname; rev = "v${version}"; - hash = "sha256-2uHsmxD0pn39DvESdVzm0qHEvpmMpE2GD1R3p7XMJEI="; + hash = "sha256-AGdP60eOrkFsey5BrIG0mkbNE3Ba+/2Q8HlKmEqrHug="; }; - cargoHash = "sha256-3UW1zSklxi4Ot3h7N8sEevYJMQydkxW9lPcfUouDSy8="; + cargoHash = "sha256-Pnobq/m/K0+YL5FDFbSAWSoSPdmFvcL3zPVbI2IPgvs="; nativeBuildInputs = [ installShellFiles diff --git a/pkgs/tools/security/nuclei/default.nix b/pkgs/tools/security/nuclei/default.nix index cad235dafb25..d5bccc8dd8cd 100644 --- a/pkgs/tools/security/nuclei/default.nix +++ b/pkgs/tools/security/nuclei/default.nix @@ -5,16 +5,16 @@ buildGoModule rec { pname = "nuclei"; - version = "3.1.1"; + version = "3.1.2"; src = fetchFromGitHub { owner = "projectdiscovery"; repo = pname; rev = "refs/tags/v${version}"; - hash = "sha256-/oTZIjLWLOUSzv36qa57Q1YpIJEz0fIaLsYkuuQ2Y6o="; + hash = "sha256-mQzZohEwalTXeNEPfLk5TqT2R7p4DAiyK5HlQmX+dwI="; }; - vendorHash = "sha256-e7iaR1u1EubWrq9Ktkz4b3GJGDdvnLfguym+r2qAYS0="; + vendorHash = "sha256-Os3Vx18H0e+yd0/BeDf3MbnPdIZGNPhzrRfu7Dky5to="; subPackages = [ "cmd/nuclei/" diff --git a/pkgs/tools/system/mediawriter/default.nix b/pkgs/tools/system/mediawriter/default.nix index f0b8305bc8e8..bf2b4ce27ff4 100644 --- a/pkgs/tools/system/mediawriter/default.nix +++ b/pkgs/tools/system/mediawriter/default.nix @@ -11,13 +11,13 @@ stdenv.mkDerivation rec { pname = "mediawriter"; - version = "5.0.8"; + version = "5.0.9"; src = fetchFromGitHub { owner = "FedoraQt"; repo = "MediaWriter"; rev = "refs/tags/${version}"; - hash = "sha256-6c2RXBIsJiW/xk+Q89RGibh6CIqIWHlBDBLb5o/mIGQ="; + hash = "sha256-FmMiv78r95shCpqN5PV6Oxms/hQY9ycqRn9L61aR8n4="; }; nativeBuildInputs = [ diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index df94f1df8573..3863edca79ec 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -14073,7 +14073,7 @@ with pkgs; trezor-suite = callPackage ../applications/blockchains/trezor-suite { }; trunk = callPackage ../development/tools/trunk { - inherit (darwin.apple_sdk.frameworks) CoreServices Security; + inherit (darwin.apple_sdk.frameworks) CoreServices SystemConfiguration; }; trunk-io = callPackage ../development/tools/trunk-io { }; @@ -16547,17 +16547,17 @@ with pkgs; juniper = callPackage ../development/compilers/juniper { }; + inherit (callPackage ../development/compilers/julia { }) + julia_16-bin + julia_18-bin + julia_19-bin + julia_18 + julia_19; + julia-lts = julia_16-bin; julia-stable = julia_19; julia = julia-stable; - julia_16-bin = callPackage ../development/compilers/julia/1.6-bin.nix { }; - julia_18-bin = callPackage ../development/compilers/julia/1.8-bin.nix { }; - julia_19-bin = callPackage ../development/compilers/julia/1.9-bin.nix { }; - - julia_18 = callPackage ../development/compilers/julia/1.8.nix { }; - julia_19 = callPackage ../development/compilers/julia/1.9.nix { }; - julia-lts-bin = julia_16-bin; julia-stable-bin = julia_19-bin; julia-bin = julia-stable-bin; @@ -20833,7 +20833,7 @@ with pkgs; # CGAL 5 has API changes cgal_4 = callPackage ../development/libraries/CGAL/4.nix { }; cgal_5 = callPackage ../development/libraries/CGAL { }; - cgal = cgal_4; + cgal = cgal_5; cgui = callPackage ../development/libraries/cgui { }; diff --git a/pkgs/top-level/linux-kernels.nix b/pkgs/top-level/linux-kernels.nix index 41177f9d039b..c8cd917c1510 100644 --- a/pkgs/top-level/linux-kernels.nix +++ b/pkgs/top-level/linux-kernels.nix @@ -412,6 +412,7 @@ in { nvidia_x11_vulkan_beta = nvidiaPackages.vulkan_beta; nvidia_dc = nvidiaPackages.dc; nvidia_dc_520 = nvidiaPackages.dc_520; + nvidia_dc_535 = nvidiaPackages.dc_535; # this is not a replacement for nvidia_x11* # only the opensource kernel driver exposed for hydra to build