nixpkgs mirror (for testing) github.com/NixOS/nixpkgs
nix
fork

Configure Feed

Select the types of activity you want to include in your feed.

Merge master into staging-next

authored by

github-actions[bot] and committed by
GitHub
122355be fcff3d78

+1002 -425
+12 -9
doc/build-helpers/special/checkpoint-build.section.md
··· 2 2 3 3 `pkgs.checkpointBuildTools` provides a way to build derivations incrementally. It consists of two functions to make checkpoint builds using Nix possible. 4 4 5 - For hermeticity, Nix derivations do not allow any state to carry over between builds, making a transparent incremental build within a derivation impossible. 5 + For hermeticity, Nix derivations do not allow any state to be carried over between builds, making a transparent incremental build within a derivation impossible. 6 6 7 7 However, we can tell Nix explicitly what the previous build state was, by representing that previous state as a derivation output. This allows the passed build state to be used for an incremental build. 8 8 9 9 To change a normal derivation to a checkpoint based build, these steps must be taken: 10 - - apply `prepareCheckpointBuild` on the desired derivation 11 - e.g.: 10 + - apply `prepareCheckpointBuild` on the desired derivation, e.g. 12 11 ```nix 13 12 checkpointArtifacts = (pkgs.checkpointBuildTools.prepareCheckpointBuild pkgs.virtualbox); 14 13 ``` 15 - - change something you want in the sources of the package. (e.g. using a source override) 14 + - change something you want in the sources of the package, e.g. use a source override: 16 15 ```nix 17 16 changedVBox = pkgs.virtualbox.overrideAttrs (old: { 18 17 src = path/to/vbox/sources; 19 - } 18 + }); 20 19 ``` 21 - - use `mkCheckpointedBuild changedVBox buildOutput` 20 + - use `mkCheckpointBuild changedVBox checkpointArtifacts` 22 21 - enjoy shorter build times 23 22 24 23 ## Example {#sec-checkpoint-build-example} 25 24 ```nix 26 - { pkgs ? import <nixpkgs> {} }: with (pkgs) checkpointBuildTools; 25 + { pkgs ? import <nixpkgs> {} }: 27 26 let 28 - helloCheckpoint = checkpointBuildTools.prepareCheckpointBuild pkgs.hello; 27 + inherit (pkgs.checkpointBuildTools) 28 + prepareCheckpointBuild 29 + mkCheckpointBuild 30 + ; 31 + helloCheckpoint = prepareCheckpointBuild pkgs.hello; 29 32 changedHello = pkgs.hello.overrideAttrs (_: { 30 33 doCheck = false; 31 34 patchPhase = '' 32 35 sed -i 's/Hello, world!/Hello, Nix!/g' src/hello.c 33 36 ''; 34 37 }); 35 - in checkpointBuildTools.mkCheckpointBuild changedHello helloCheckpoint 38 + in mkCheckpointBuild changedHello helloCheckpoint 36 39 ```
+6
maintainers/maintainer-list.nix
··· 3864 3864 githubId = 6821729; 3865 3865 github = "criyle"; 3866 3866 }; 3867 + crschnick = { 3868 + email = "crschnick@xpipe.io"; 3869 + name = "Christopher Schnick"; 3870 + github = "crschnick"; 3871 + githubId = 72509152; 3872 + }; 3867 3873 CRTified = { 3868 3874 email = "carl.schneider+nixos@rub.de"; 3869 3875 matrix = "@schnecfk:ruhr-uni-bochum.de";
+1
nixos/modules/module-list.nix
··· 834 834 ./services/monitoring/riemann.nix 835 835 ./services/monitoring/scollector.nix 836 836 ./services/monitoring/smartd.nix 837 + ./services/monitoring/snmpd.nix 837 838 ./services/monitoring/statsd.nix 838 839 ./services/monitoring/sysstat.nix 839 840 ./services/monitoring/teamviewer.nix
+83
nixos/modules/services/monitoring/snmpd.nix
··· 1 + { pkgs, config, lib, ... }: 2 + 3 + let 4 + cfg = config.services.snmpd; 5 + configFile = if cfg.configText != "" then 6 + pkgs.writeText "snmpd.cfg" '' 7 + ${cfg.configText} 8 + '' else null; 9 + in { 10 + options.services.snmpd = { 11 + enable = lib.mkEnableOption "snmpd"; 12 + 13 + package = lib.mkPackageOption pkgs "net-snmp" {}; 14 + 15 + listenAddress = lib.mkOption { 16 + type = lib.types.str; 17 + default = "0.0.0.0"; 18 + description = lib.mdDoc '' 19 + The address to listen on for SNMP and AgentX messages. 20 + ''; 21 + example = "127.0.0.1"; 22 + }; 23 + 24 + port = lib.mkOption { 25 + type = lib.types.port; 26 + default = 161; 27 + description = lib.mdDoc '' 28 + The port to listen on for SNMP and AgentX messages. 29 + ''; 30 + }; 31 + 32 + openFirewall = lib.mkOption { 33 + type = lib.types.bool; 34 + default = false; 35 + description = lib.mdDoc '' 36 + Open port in firewall for snmpd. 37 + ''; 38 + }; 39 + 40 + configText = lib.mkOption { 41 + type = lib.types.lines; 42 + default = ""; 43 + description = lib.mdDoc '' 44 + The contents of the snmpd.conf. If the {option}`configFile` option 45 + is set, this value will be ignored. 46 + 47 + Note that the contents of this option will be added to the Nix 48 + store as world-readable plain text, {option}`configFile` can be used in 49 + addition to a secret management tool to protect sensitive data. 50 + ''; 51 + }; 52 + 53 + configFile = lib.mkOption { 54 + type = lib.types.path; 55 + default = configFile; 56 + defaultText = lib.literalMD "The value of {option}`configText`."; 57 + description = lib.mdDoc '' 58 + Path to the snmpd.conf file. By default, if {option}`configText` is set, 59 + a config file will be automatically generated. 60 + ''; 61 + }; 62 + 63 + }; 64 + 65 + config = lib.mkIf cfg.enable { 66 + systemd.services."snmpd" = { 67 + description = "Simple Network Management Protocol (SNMP) daemon."; 68 + after = [ "network.target" ]; 69 + wantedBy = [ "multi-user.target" ]; 70 + serviceConfig = { 71 + Type = "simple"; 72 + ExecStart = "${lib.getExe' cfg.package "snmpd"} -f -Lo -c ${cfg.configFile} ${cfg.listenAddress}:${toString cfg.port}"; 73 + }; 74 + }; 75 + 76 + networking.firewall.allowedUDPPorts = lib.mkIf cfg.openFirewall [ 77 + cfg.port 78 + ]; 79 + }; 80 + 81 + meta.maintainers = [ lib.maintainers.eliandoran ]; 82 + 83 + }
+4 -1
nixos/modules/services/printing/cupsd.nix
··· 4 4 5 5 let 6 6 7 - inherit (pkgs) cups cups-pk-helper cups-filters xdg-utils; 7 + inherit (pkgs) cups-pk-helper cups-filters xdg-utils; 8 8 9 9 cfg = config.services.printing; 10 + cups = cfg.package; 10 11 11 12 avahiEnabled = config.services.avahi.enable; 12 13 polkitEnabled = config.security.polkit.enable; ··· 140 139 Whether to enable printing support through the CUPS daemon. 141 140 ''; 142 141 }; 142 + 143 + package = lib.mkPackageOption pkgs "cups" {}; 143 144 144 145 stateless = mkOption { 145 146 type = types.bool;
+5 -15
nixos/modules/virtualisation/lxd.nix
··· 33 33 ''; 34 34 }; 35 35 36 - package = lib.mkOption { 37 - type = lib.types.package; 38 - default = pkgs.lxd; 39 - defaultText = lib.literalExpression "pkgs.lxd"; 40 - description = lib.mdDoc '' 41 - The LXD package to use. 42 - ''; 43 - }; 36 + package = lib.mkPackageOption pkgs "lxd" { }; 44 37 45 - lxcPackage = lib.mkOption { 46 - type = lib.types.package; 47 - default = pkgs.lxc; 48 - defaultText = lib.literalExpression "pkgs.lxc"; 49 - description = lib.mdDoc '' 50 - The LXC package to use with LXD (required for AppArmor profiles). 38 + lxcPackage = lib.mkPackageOption pkgs "lxc" { 39 + extraDescription = '' 40 + Required for AppArmor profiles. 51 41 ''; 52 42 }; 53 43 ··· 139 149 ui = { 140 150 enable = lib.mkEnableOption (lib.mdDoc "(experimental) LXD UI"); 141 151 142 - package = lib.mkPackageOption pkgs.lxd-unwrapped "ui" { }; 152 + package = lib.mkPackageOption pkgs [ "lxd-unwrapped" "ui" ] { }; 143 153 }; 144 154 }; 145 155 };
+1
nixos/tests/all-tests.nix
··· 773 773 sing-box = handleTest ./sing-box.nix {}; 774 774 slimserver = handleTest ./slimserver.nix {}; 775 775 slurm = handleTest ./slurm.nix {}; 776 + snmpd = handleTest ./snmpd.nix {}; 776 777 smokeping = handleTest ./smokeping.nix {}; 777 778 snapcast = handleTest ./snapcast.nix {}; 778 779 snapper = handleTest ./snapper.nix {};
+23
nixos/tests/snmpd.nix
··· 1 + import ./make-test-python.nix ({ pkgs, lib, ... }: { 2 + name = "snmpd"; 3 + 4 + nodes.snmpd = { 5 + environment.systemPackages = with pkgs; [ 6 + net-snmp 7 + ]; 8 + 9 + services.snmpd = { 10 + enable = true; 11 + configText = '' 12 + rocommunity public 13 + ''; 14 + }; 15 + }; 16 + 17 + testScript = '' 18 + start_all(); 19 + machine.wait_for_unit("snmpd.service") 20 + machine.succeed("snmpwalk -v 2c -c public localhost | grep SNMPv2-MIB::sysName.0"); 21 + ''; 22 + 23 + })
+3 -3
pkgs/applications/misc/clipcat/default.nix
··· 7 7 8 8 rustPlatform.buildRustPackage rec { 9 9 pname = "clipcat"; 10 - version = "0.16.0"; 10 + version = "0.16.1"; 11 11 12 12 src = fetchFromGitHub { 13 13 owner = "xrelkd"; 14 14 repo = pname; 15 15 rev = "v${version}"; 16 - hash = "sha256-9BilasXc/3FFPcKAgPvc0hIHP7NbOqRD8ZwIMRc/Y3M="; 16 + hash = "sha256-SqA8UjKTBtkE1IkWGeshI8KBHr86V9r/+YvFZNJ6Oq8="; 17 17 }; 18 18 19 - cargoHash = "sha256-zkeKhi0DiYqA5+KiU77ZJXRyhLUKVDmHvF7TG1URzo4="; 19 + cargoHash = "sha256-KU3kXqy9zL7GQdSsCNW7jcsxdTuRXjJyDtBpmgoXi6E="; 20 20 21 21 nativeBuildInputs = [ 22 22 protobuf
+2 -2
pkgs/applications/misc/openlp/lib.nix
··· 5 5 # python deps 6 6 , python, buildPythonPackage 7 7 , alembic, beautifulsoup4, chardet, lxml, mako, pyenchant 8 - , pyqt5_with_qtwebkit, pyxdg, sip_4, sqlalchemy, sqlalchemy-migrate 8 + , pyqt5-webkit, pyxdg, sip_4, sqlalchemy, sqlalchemy-migrate 9 9 }: 10 10 11 11 buildPythonPackage rec { ··· 39 39 lxml 40 40 mako 41 41 pyenchant 42 - pyqt5_with_qtwebkit 42 + pyqt5-webkit 43 43 pyxdg 44 44 sip_4 45 45 sqlalchemy
+3 -3
pkgs/applications/networking/cluster/stern/default.nix
··· 2 2 3 3 buildGoModule rec { 4 4 pname = "stern"; 5 - version = "1.27.0"; 5 + version = "1.28.0"; 6 6 7 7 src = fetchFromGitHub { 8 8 owner = "stern"; 9 9 repo = "stern"; 10 10 rev = "v${version}"; 11 - sha256 = "sha256-W8jGUs63R6QpwuTgzK5yVLhKGXypvKOyCWHT2xdb6eM="; 11 + sha256 = "sha256-Lx5f2dqjdhgMXky1Pv2ik9i56ugsQmZK/ag4veC9Dac="; 12 12 }; 13 13 14 - vendorHash = "sha256-LLVd9WB8ixH78CHYe0sS4sCDCD+6SQ7PxWr2MHiAOxI="; 14 + vendorHash = "sha256-6jI/I7Nw/vJwKNvgH/35uHYu51SBX+WFH5s0WKfCqBo="; 15 15 16 16 subPackages = [ "." ]; 17 17
+1 -1
pkgs/applications/networking/instant-messengers/scudcloud/default.nix
··· 11 11 sha256 = "1ffdy74igll74fwpmnn3brvcxbk4iianqscdzz18sx1pfqpw16cl"; 12 12 }; 13 13 14 - propagatedBuildInputs = with python3Packages; [ pyqt5_with_qtwebkit dbus-python jsmin ]; 14 + propagatedBuildInputs = with python3Packages; [ pyqt5-webkit dbus-python jsmin ]; 15 15 16 16 meta = with lib; { 17 17 description = "Non-official desktop client for Slack";
+3 -3
pkgs/applications/networking/sync/rclone/default.nix
··· 6 6 7 7 buildGoModule rec { 8 8 pname = "rclone"; 9 - version = "1.65.0"; 9 + version = "1.65.1"; 10 10 11 11 src = fetchFromGitHub { 12 12 owner = pname; 13 13 repo = pname; 14 14 rev = "v${version}"; 15 - hash = "sha256-hlkX8JrBz/hFwQj0xCZfuBt2t3CP3Xa1JkNDH0zomxg="; 15 + hash = "sha256-wRksCRQR6JZjYtXgq3iARCoYck76O17Kd2Ht1XpA9KE="; 16 16 }; 17 17 18 - vendorHash = "sha256-qKRIT2HqNDpEtZBNHZMXp4Yhh5fCkQSTPU5MQ7FmCHI="; 18 + vendorHash = "sha256-kWaMo6ALieuwf53H05UdoI7xtH1LAnsD6Ak9bJTa6jc="; 19 19 20 20 subPackages = [ "." ]; 21 21
+132
pkgs/applications/networking/xpipe/default.nix
··· 1 + { stdenvNoCC 2 + , lib 3 + , fetchzip 4 + , makeDesktopItem 5 + , autoPatchelfHook 6 + , zlib 7 + , fontconfig 8 + , udev 9 + , gtk3 10 + , freetype 11 + , alsa-lib 12 + , makeShellWrapper 13 + , libX11 14 + , libXext 15 + , libXdamage 16 + , libXfixes 17 + , libxcb 18 + , libXcomposite 19 + , libXcursor 20 + , libXi 21 + , libXrender 22 + , libXtst 23 + , libXxf86vm 24 + }: 25 + 26 + let 27 + inherit (stdenvNoCC.hostPlatform) system; 28 + throwSystem = throw "Unsupported system: ${system}"; 29 + 30 + arch = { 31 + x86_64-linux = "x86_64"; 32 + aarch64-linux = "arm64"; 33 + }.${system} or throwSystem; 34 + 35 + hash = { 36 + x86_64-linux = "sha256-/cumOKaWPdAruMLZP2GMUdocIhsbo59dc4Q3ngc/JOc="; 37 + aarch64-linux = "sha256-xMV+9etnuFwRGIHdaXNViKd4FMOuVtugGDS1xyMwEnM="; 38 + }.${system} or throwSystem; 39 + 40 + displayname = "XPipe"; 41 + 42 + in stdenvNoCC.mkDerivation rec { 43 + pname = "xpipe"; 44 + version = "1.7.3"; 45 + 46 + src = fetchzip { 47 + url = "https://github.com/xpipe-io/xpipe/releases/download/${version}/xpipe-portable-linux-${arch}.tar.gz"; 48 + inherit hash; 49 + }; 50 + 51 + nativeBuildInputs = [ 52 + autoPatchelfHook 53 + makeShellWrapper 54 + ]; 55 + 56 + # Ignore libavformat dependencies as we don't need them 57 + autoPatchelfIgnoreMissingDeps = true; 58 + 59 + buildInputs = [ 60 + fontconfig 61 + zlib 62 + udev 63 + freetype 64 + gtk3 65 + alsa-lib 66 + libX11 67 + libX11 68 + libXext 69 + libXdamage 70 + libXfixes 71 + libxcb 72 + libXcomposite 73 + libXcursor 74 + libXi 75 + libXrender 76 + libXtst 77 + libXxf86vm 78 + ]; 79 + 80 + desktopItem = makeDesktopItem { 81 + categories = [ "Network" ]; 82 + comment = "Your entire server infrastructure at your fingertips"; 83 + desktopName = displayname; 84 + exec = "/opt/${pname}/cli/bin/xpipe open %U"; 85 + genericName = "Shell connection hub"; 86 + icon = "/opt/${pname}/logo.png"; 87 + name = displayname; 88 + }; 89 + 90 + installPhase = '' 91 + runHook preInstall 92 + 93 + pkg="${pname}" 94 + mkdir -p $out/opt/$pkg 95 + cp -r ./ $out/opt/$pkg 96 + 97 + mkdir -p "$out/bin" 98 + ln -s "$out/opt/$pkg/cli/bin/xpipe" "$out/bin/$pkg" 99 + 100 + mkdir -p "$out/share/applications" 101 + cp -r "${desktopItem}/share/applications/" "$out/share/" 102 + 103 + mkdir -p "$out/etc/bash_completion.d" 104 + ln -s "$out/opt/$pkg/cli/xpipe_completion" "$out/etc/bash_completion.d/$pkg" 105 + 106 + substituteInPlace $out/share/applications/${displayname}.desktop --replace "Exec=" "Exec=$out" 107 + substituteInPlace $out/share/applications/${displayname}.desktop --replace "Icon=" "Icon=$out" 108 + 109 + mv "$out/opt/xpipe/app/bin/xpiped" "$out/opt/xpipe/app/bin/xpiped_raw" 110 + mv "$out/opt/xpipe/app/lib/app/xpiped.cfg" "$out/opt/xpipe/app/lib/app/xpiped_raw.cfg" 111 + mv "$out/opt/xpipe/app/scripts/xpiped_debug.sh" "$out/opt/xpipe/app/scripts/xpiped_debug_raw.sh" 112 + 113 + makeShellWrapper "$out/opt/xpipe/app/bin/xpiped_raw" "$out/opt/xpipe/app/bin/xpiped" \ 114 + --prefix LD_LIBRARY_PATH : "${lib.makeLibraryPath [ fontconfig gtk3 udev ]}" 115 + makeShellWrapper "$out/opt/xpipe/app/scripts/xpiped_debug_raw.sh" "$out/opt/xpipe/app/scripts/xpiped_debug.sh" \ 116 + --prefix LD_LIBRARY_PATH : "${lib.makeLibraryPath [ fontconfig gtk3 udev ]}" 117 + 118 + runHook postInstall 119 + ''; 120 + 121 + meta = with lib; { 122 + description = "A cross-platform shell connection hub and remote file manager"; 123 + homepage = "https://github.com/xpipe-io/${pname}"; 124 + downloadPage = "https://github.com/xpipe-io/${pname}/releases/latest"; 125 + sourceProvenance = with sourceTypes; [ binaryNativeCode ]; 126 + changelog = "https://github.com/xpipe-io/${pname}/releases/tag/${version}"; 127 + license = [ licenses.asl20 licenses.unfree ]; 128 + maintainers = with maintainers; [ crschnick ]; 129 + platforms = [ "x86_64-linux" "aarch64-linux" ]; 130 + mainProgram = pname; 131 + }; 132 + }
+2 -2
pkgs/applications/office/scribus/default.nix
··· 33 33 stdenv.mkDerivation (finalAttrs: { 34 34 pname = "scribus"; 35 35 36 - version = "1.6.0"; 36 + version = "1.6.1"; 37 37 38 38 src = fetchurl { 39 39 url = "mirror://sourceforge/scribus/scribus-devel/scribus-${finalAttrs.version}.tar.xz"; 40 - hash = "sha256-lLl0kOzhcoaNxPBMeqLulQtBtfL/QoXfN9YV8ETQOOU="; 40 + hash = "sha256-4J3Xjm22HQG5MhEI/t7bzNbsCrNS3Vuv24sEHw73npk="; 41 41 }; 42 42 43 43 nativeBuildInputs = [
+3 -2
pkgs/applications/science/chemistry/cp2k/default.nix
··· 54 54 in 55 55 stdenv.mkDerivation rec { 56 56 pname = "cp2k"; 57 - version = "2023.2"; 57 + version = "2024.1"; 58 58 59 59 src = fetchFromGitHub { 60 60 owner = "cp2k"; 61 61 repo = "cp2k"; 62 62 rev = "v${version}"; 63 - hash = "sha256-1TJorIjajWFO7i9vqSBDTAIukBdyvxbr5dargt4QB8M="; 63 + hash = "sha256-6PB6wjdTOa55dXV7QIsjxI77hhc95WFEjNePfupBUJQ="; 64 64 fetchSubmodules = true; 65 65 }; 66 66 ··· 157 157 -I${lib.getDev libint}/include ${lib.optionalString enableElpa "$(pkg-config --variable=fcflags elpa)"} \ 158 158 -I${lib.getDev sirius}/include/sirius \ 159 159 -I${lib.getDev libxc}/include -I${lib.getDev libxsmm}/include \ 160 + -I${lib.getDev hdf5-fortran}/include \ 160 161 -fallow-argument-mismatch 161 162 LIBS = -lfftw3 -lfftw3_threads \ 162 163 -lscalapack -lblas -llapack \
+3 -3
pkgs/applications/version-management/gh/default.nix
··· 2 2 3 3 buildGoModule rec { 4 4 pname = "gh"; 5 - version = "2.40.1"; 5 + version = "2.41.0"; 6 6 7 7 src = fetchFromGitHub { 8 8 owner = "cli"; 9 9 repo = "cli"; 10 10 rev = "v${version}"; 11 - hash = "sha256-KdJZHouMTbbD/8k2VGFvRits7grbbVNUmCM6dSiJXBc="; 11 + hash = "sha256-GkrEirunY17WgAv4XOreG+JwPQn7cRTmr7hJ3/2tSrY="; 12 12 }; 13 13 14 - vendorHash = "sha256-jM9nwTMOTh+eXztLvHIwwH4qu3ZIMOtBrPEtByB9Ry8="; 14 + vendorHash = "sha256-XBoC1sHfxInkamSHNm7Vb3AKCgIch6uYx0jJWqN7PN8="; 15 15 16 16 nativeBuildInputs = [ installShellFiles ]; 17 17
+21 -10
pkgs/applications/version-management/got/default.nix
··· 1 - { lib, stdenv, fetchurl 2 - , pkg-config, openssl, libbsd, libevent, libuuid, libossp_uuid, libmd, zlib, ncurses, bison 1 + { lib 2 + , stdenv 3 + , fetchurl 4 + , pkg-config 5 + , openssl 6 + , libbsd 7 + , libevent 8 + , libuuid 9 + , libossp_uuid 10 + , libmd 11 + , zlib 12 + , ncurses 13 + , bison 3 14 , autoPatchelfHook 4 15 }: 5 16 6 - stdenv.mkDerivation rec { 17 + stdenv.mkDerivation (finalAttrs: { 7 18 pname = "got"; 8 - version = "0.94"; 19 + version = "0.95"; 9 20 10 21 src = fetchurl { 11 - url = "https://gameoftrees.org/releases/portable/got-portable-${version}.tar.gz"; 12 - hash = "sha256-hG0/a+sk6uZCxR908YfZCW44qx/SIwwGO9mUaxxHZ3k="; 22 + url = "https://gameoftrees.org/releases/portable/got-portable-${finalAttrs.version}.tar.gz"; 23 + hash = "sha256-5on9ff76OAFmoaKTwVM0hUCGLiAZGJzt6+jCx2Nygg4="; 13 24 }; 14 25 15 26 nativeBuildInputs = [ pkg-config bison ] 16 27 ++ lib.optionals stdenv.isLinux [ autoPatchelfHook ]; 17 28 18 29 buildInputs = [ openssl libbsd libevent libuuid libmd zlib ncurses ] 19 - ++ lib.optionals stdenv.isDarwin [ libossp_uuid ]; 30 + ++ lib.optionals stdenv.isDarwin [ libossp_uuid ]; 20 31 21 32 configureFlags = [ "--enable-gotd" ]; 22 33 23 34 preConfigure = lib.optionalString stdenv.isDarwin '' 24 - # The configure script assumes dependencies on Darwin are install via 35 + # The configure script assumes dependencies on Darwin are installed via 25 36 # Homebrew or MacPorts and hardcodes assumptions about the paths of 26 37 # dependencies which fails the nixpkgs configurePhase. 27 38 substituteInPlace configure --replace 'xdarwin' 'xhomebrew' ··· 49 38 50 39 installCheckPhase = '' 51 40 runHook preInstallCheck 52 - test "$($out/bin/got --version)" = '${pname} ${version}' 41 + test "$($out/bin/got --version)" = "${finalAttrs.pname} ${finalAttrs.version}" 53 42 runHook postInstallCheck 54 43 ''; 55 44 ··· 70 59 platforms = platforms.linux ++ platforms.darwin; 71 60 maintainers = with maintainers; [ abbe afh ]; 72 61 }; 73 - } 62 + })
+2 -2
pkgs/applications/video/kodi/addons/arteplussept/default.nix
··· 3 3 buildKodiAddon rec { 4 4 pname = "arteplussept"; 5 5 namespace = "plugin.video.arteplussept"; 6 - version = "1.4.1"; 6 + version = "1.4.2"; 7 7 8 8 src = fetchzip { 9 9 url = "https://mirrors.kodi.tv/addons/nexus/${namespace}/${namespace}-${version}.zip"; 10 - hash = "sha256-4lPJIFBF4zXr1bEyv9tVUPXw9JFt2by/tcOwihib6aQ="; 10 + hash = "sha256-dqxGKaOnEYOI33Aw76zbjma5z7MqOUh367dFsV87olU="; 11 11 }; 12 12 13 13 propagatedBuildInputs = [
+16 -10
pkgs/applications/video/obs-studio/default.nix
··· 49 49 , asio 50 50 , decklinkSupport ? false 51 51 , blackmagic-desktop-video 52 + , libdatachannel 53 + , libvpl 54 + , qrcodegencpp 52 55 }: 53 56 54 57 let 55 58 inherit (lib) optional optionals; 56 - 57 59 in 58 - stdenv.mkDerivation rec { 60 + 61 + stdenv.mkDerivation (finalAttrs: { 59 62 pname = "obs-studio"; 60 - version = "29.1.3"; 63 + version = "30.0.2"; 61 64 62 65 src = fetchFromGitHub { 63 66 owner = "obsproject"; 64 - repo = "obs-studio"; 65 - rev = version; 66 - sha256 = "sha256-D0DPueMtopwz5rLgM8QcPT7DgTKcJKQHnst69EY9V6Q="; 67 + repo = finalAttrs.pname; 68 + rev = finalAttrs.version; 69 + sha256 = "sha256-8pX1kqibrtDIaE1+/Pey1A5bu6MwFTXLrBOah4rsF+4="; 67 70 fetchSubmodules = true; 68 71 }; 69 72 ··· 135 132 nlohmann_json 136 133 websocketpp 137 134 asio 135 + libdatachannel 136 + libvpl 137 + qrcodegencpp 138 138 ] 139 139 ++ optionals scriptingSupport [ luajit python3 ] 140 140 ++ optional alsaSupport alsa-lib ··· 157 151 ''; 158 152 159 153 cmakeFlags = [ 160 - "-DOBS_VERSION_OVERRIDE=${version}" 154 + "-DOBS_VERSION_OVERRIDE=${finalAttrs.version}" 161 155 "-Wno-dev" # kill dev warnings that are useless for packaging 162 156 # Add support for browser source 163 157 "-DBUILD_BROWSER=ON" ··· 189 183 addOpenGLRunpath $out/lib/obs-plugins/*.so 190 184 191 185 # Link libcef again after patchelfing other libs 192 - ln -s ${libcef}/lib/libcef.so $out/lib/obs-plugins/libcef.so 186 + ln -s ${libcef}/lib/* $out/lib/obs-plugins/ 193 187 ''; 194 188 195 189 meta = with lib; { ··· 200 194 video content, efficiently 201 195 ''; 202 196 homepage = "https://obsproject.com"; 203 - maintainers = with maintainers; [ jb55 MP2E materus ]; 197 + maintainers = with maintainers; [ jb55 MP2E materus fpletz ]; 204 198 license = licenses.gpl2Plus; 205 199 platforms = [ "x86_64-linux" "i686-linux" "aarch64-linux" ]; 206 200 mainProgram = "obs"; 207 201 }; 208 - } 202 + })
-1
pkgs/applications/video/obs-studio/plugins/obs-hyperion/default.nix
··· 33 33 license = licenses.mit; 34 34 maintainers = with maintainers; [ algram ]; 35 35 platforms = [ "x86_64-linux" ]; 36 - broken = true; # Not compatible with qt6 yet but required by OBS28 37 36 }; 38 37 }
-4
pkgs/applications/video/obs-studio/plugins/obs-pipewire-audio-capture.nix
··· 27 27 "-Wno-dev" 28 28 ]; 29 29 30 - preConfigure = '' 31 - cp ${obs-studio.src}/cmake/external/ObsPluginHelpers.cmake cmake/FindLibObs.cmake 32 - ''; 33 - 34 30 meta = with lib; { 35 31 description = "Audio device and application capture for OBS Studio using PipeWire"; 36 32 homepage = "https://github.com/dimtpap/obs-pipewire-audio-capture";
+8
pkgs/applications/video/obs-studio/plugins/obs-tuna/default.nix
··· 28 28 fetchSubmodules = true; 29 29 }; 30 30 31 + # obs_frontend_add_dock() deprecated in obs 30 32 + env.NIX_CFLAGS_COMPILE = "-Wno-error=deprecated-declarations"; 33 + 31 34 patches = [ 32 35 # fix build with qt 6.6.0 33 36 # treewide: replace deprecated qAsConst with std::as_const() ··· 38 35 (fetchpatch2 { 39 36 url = "https://github.com/univrsal/tuna/commit/0d570e771f8d8e6ae7c85bd2b86bbf59c264789e.patch"; 40 37 hash = "sha256-A5idhMiM9funqhTm5XMIBqwy+FO1SaNPtgZjo+Vws6k="; 38 + }) 39 + # fix build with obs 30 40 + (fetchpatch2 { 41 + url = "https://github.com/univrsal/tuna/commit/723bd3c7b4e257cf0997611426e555068de77ae7.patch"; 42 + hash = "sha256-MF5vghGYknL6q+A8BJ1yrQcEKIu9I+PWk+RZNYg3fRU="; 41 43 }) 42 44 ]; 43 45
+50 -29
pkgs/build-support/checkpoint-build.nix
··· 1 - { pkgs }: 1 + { lib 2 + , buildPackages 3 + }: 4 + 5 + let 6 + # rudimentary support for cross-compiling 7 + # see: https://github.com/NixOS/nixpkgs/pull/279487#discussion_r1444449726 8 + inherit (buildPackages) 9 + mktemp 10 + rsync 11 + ; 12 + in 13 + 2 14 rec { 3 15 /* Prepare a derivation for local builds. 4 16 * 5 - * This function prepares checkpoint builds by provinding, 6 - * containing the build output and the sources for cross checking. 17 + * This function prepares checkpoint builds by storing 18 + * the build output and the sources for cross checking. 7 19 * The build output can be used later to allow checkpoint builds 8 20 * by passing the derivation output to the `mkCheckpointBuild` function. 9 21 * 10 - * To build a project with checkpoints follow these steps: 11 - * - run prepareIncrementalBuild on the desired derivation 12 - * e.G `incrementalBuildArtifacts = (pkgs.checkpointBuildTools.prepareCheckpointBuild pkgs.virtualbox);` 13 - * - change something you want in the sources of the package( e.G using source override) 14 - * changedVBox = pkgs.virtuabox.overrideAttrs (old: { 15 - * src = path/to/vbox/sources; 16 - * } 17 - * - use `mkCheckpointedBuild changedVBox buildOutput` 22 + * To build a project with checkpoints, follow these steps: 23 + * - run `prepareCheckpointBuild` on the desired derivation, e.g. 24 + * checkpointArtifacts = prepareCheckpointBuild virtualbox; 25 + * - change something you want in the sources of the package, 26 + * e.g. using source override: 27 + * changedVBox = pkgs.virtuabox.overrideAttrs (old: { 28 + * src = path/to/vbox/sources; 29 + * }; 30 + * - use `mkCheckpointBuild changedVBox checkpointArtifacts` 18 31 * - enjoy shorter build times 19 32 */ 20 33 prepareCheckpointBuild = drv: drv.overrideAttrs (old: { 21 34 outputs = [ "out" ]; 22 35 name = drv.name + "-checkpointArtifacts"; 23 36 # To determine differences between the state of the build directory 24 - # from an earlier build and a later one we store the state of the build 37 + # from an earlier build and a later one we store the state of the build 25 38 # directory before build, but after patch phases. 26 39 # This way, the same derivation can be used multiple times and only changes are detected. 27 - # Additionally Removed files are handled correctly in later builds. 40 + # Additionally, removed files are handled correctly in later builds. 28 41 preBuild = (old.preBuild or "") + '' 29 42 mkdir -p $out/sources 30 43 cp -r ./* $out/sources/ 31 44 ''; 32 45 33 - # After the build the build directory is copied again 46 + # After the build, the build directory is copied again 34 47 # to get the output files. 35 - # We copy the complete build folder, to take care for 36 - # Build tools, building in the source directory, instead of 37 - # having a build root directory, e.G the Linux kernel. 48 + # We copy the complete build folder, to take care of 49 + # build tools that build in the source directory, instead of 50 + # having a separate build directory such as the Linux kernel. 38 51 installPhase = '' 39 52 runHook preCheckpointInstall 40 53 mkdir -p $out/outputs ··· 57 44 }); 58 45 59 46 /* Build a derivation based on the checkpoint output generated by 60 - * the `prepareCheckpointBuild function. 47 + * the `prepareCheckpointBuild` function. 61 48 * 62 49 * Usage: 63 50 * let 64 - * checkpointArtifacts = prepareCheckpointBuild drv 65 - * in mkCheckpointedBuild drv checkpointArtifacts 51 + * checkpointArtifacts = prepareCheckpointBuild drv; 52 + * in mkCheckpointBuild drv checkpointArtifacts 66 53 */ 67 - mkCheckpointedBuild = drv: previousBuildArtifacts: drv.overrideAttrs (old: { 54 + mkCheckpointBuild = drv: checkpointArtifacts: drv.overrideAttrs (old: { 68 55 # The actual checkpoint build phase. 69 - # We compare the changed sources from a previous build with the current and create a patch 70 - # Afterwards we clean the build directory to copy the previous output files (Including the sources) 71 - # The source difference patch is applied to get the latest changes again to allow short build times. 56 + # We compare the changed sources from a previous build with the current and create a patch. 57 + # Afterwards we clean the build directory and copy the previous output files (including the sources). 58 + # The source difference patch is then applied to get the latest changes again to allow short build times. 72 59 preBuild = (old.preBuild or "") + '' 73 60 set +e 74 - diff -ur ${previousBuildArtifacts}/sources ./ > sourceDifference.patch 61 + sourceDifferencePatchFile=$(${mktemp}/bin/mktemp) 62 + diff -ur ${checkpointArtifacts}/sources ./ > "$sourceDifferencePatchFile" 75 63 set -e 76 - shopt -s extglob dotglob 77 - rm -r !("sourceDifference.patch") 78 - ${pkgs.rsync}/bin/rsync -cutU --chown=$USER:$USER --chmod=+w -r ${previousBuildArtifacts}/outputs/* . 79 - patch -p 1 -i sourceDifference.patch 64 + shopt -s dotglob 65 + rm -r * 66 + ${rsync}/bin/rsync \ 67 + --checksum --times --atimes --chown=$USER:$USER --chmod=+w \ 68 + -r ${checkpointArtifacts}/outputs/ . 69 + patch -p 1 -i "$sourceDifferencePatchFile" 70 + rm "$sourceDifferencePatchFile" 80 71 ''; 81 72 }); 73 + 74 + mkCheckpointedBuild = lib.warn 75 + "`mkCheckpointedBuild` is deprecated, use `mkCheckpointBuild` instead!" 76 + mkCheckpointBuild; 82 77 }
+24
pkgs/by-name/fi/fileinfo/package.nix
··· 1 + { lib 2 + , python3Packages 3 + , fetchFromGitHub 4 + }: 5 + python3Packages.buildPythonApplication { 6 + pname = "fileinfo"; 7 + version = "unstable-2022-09-16"; 8 + src = fetchFromGitHub { 9 + owner = "sdushantha"; 10 + repo = "fileinfo"; 11 + rev = "503f26189ad5043bad3fe71333dd5ba3ffbce485"; 12 + hash = "sha256-tEmCsR3LmTxeDZAbMvbIwqp/6uaGNUhgGlm18gdsnOw="; 13 + }; 14 + 15 + propagatedBuildInputs = with python3Packages; [ requests ]; 16 + 17 + meta = with lib; { 18 + homepage = "https://github.com/sdushantha/fileinfo"; 19 + description = "A file extension metadata lookup tool"; 20 + license = licenses.mit; 21 + maintainers = with maintainers; [ h7x4 ]; 22 + mainProgram = "fileinfo"; 23 + }; 24 + }
+41
pkgs/by-name/li/libvpl/package.nix
··· 1 + { stdenv 2 + , lib 3 + , fetchFromGitHub 4 + , cmake 5 + , pkg-config 6 + }: 7 + 8 + stdenv.mkDerivation (finalAttrs: { 9 + pname = "libvpl"; 10 + version = "2.10.1"; 11 + 12 + src = fetchFromGitHub { 13 + owner = "intel"; 14 + repo = finalAttrs.pname; 15 + rev = "v${finalAttrs.version}"; 16 + hash = "sha256-2yfJo4iwI/h0CJ+mJJ3cAyG5S7KksUibwJHebF3MR+E="; 17 + }; 18 + 19 + nativeBuildInputs = [ 20 + cmake 21 + pkg-config 22 + ]; 23 + 24 + cmakeFlags = [ 25 + "-DCMAKE_BUILD_TYPE=Release" 26 + "-DENABLE_DRI3=ON" 27 + "-DENABLE_DRM=ON" 28 + "-DENABLE_VA=ON" 29 + "-DENABLE_WAYLAND=ON" 30 + "-DENABLE_X11=ON" 31 + "-DINSTALL_EXAMPLE_CODE=OFF" 32 + "-DBUILD_TOOLS=OFF" 33 + ]; 34 + 35 + meta = with lib; { 36 + description = "Intel Video Processing Library"; 37 + homepage = "https://intel.github.io/libvpl/"; 38 + license = licenses.mit; 39 + platforms = platforms.linux; 40 + }; 41 + })
+32
pkgs/by-name/qr/qrcodegencpp/package.nix
··· 1 + { lib 2 + , stdenv 3 + , qrcodegen 4 + }: 5 + 6 + stdenv.mkDerivation (finalAttrs: { 7 + pname = "qrcodegencpp"; 8 + version = qrcodegen.version; 9 + 10 + src = qrcodegen.src; 11 + 12 + sourceRoot = "${finalAttrs.src.name}/cpp"; 13 + 14 + nativeBuildInputs = lib.optionals stdenv.cc.isClang [ 15 + stdenv.cc.cc.libllvm.out 16 + ]; 17 + 18 + makeFlags = lib.optionals stdenv.cc.isClang [ "AR=llvm-ar" ]; 19 + 20 + installPhase = '' 21 + runHook preInstall 22 + 23 + install -Dt $out/lib/ libqrcodegencpp.a 24 + install -Dt $out/include/qrcodegen/ qrcodegen.hpp 25 + 26 + runHook postInstall 27 + ''; 28 + 29 + meta = { 30 + inherit (qrcodegen.meta) description homepage license maintainers platforms; 31 + }; 32 + })
+1 -1
pkgs/development/cuda-modules/setup-hooks/auto-add-cuda-compat-runpath.sh
··· 10 10 autoAddCudaCompatRunpathPhase() ( 11 11 local outputPaths 12 12 mapfile -t outputPaths < <(for o in $(getAllOutputNames); do echo "${!o}"; done) 13 - find "${outputPaths[@]}" -type f -executable -print0 | while IFS= read -rd "" f; do 13 + find "${outputPaths[@]}" -type f -print0 | while IFS= read -rd "" f; do 14 14 if isELF "$f"; then 15 15 # patchelf returns an error on statically linked ELF files 16 16 if elfHasDynamicSection "$f" ; then
+1 -1
pkgs/development/cuda-modules/setup-hooks/auto-add-opengl-runpath-hook.sh
··· 9 9 autoAddOpenGLRunpathPhase() ( 10 10 local outputPaths 11 11 mapfile -t outputPaths < <(for o in $(getAllOutputNames); do echo "${!o}"; done) 12 - find "${outputPaths[@]}" -type f -executable -print0 | while IFS= read -rd "" f; do 12 + find "${outputPaths[@]}" -type f -print0 | while IFS= read -rd "" f; do 13 13 if isELF "$f"; then 14 14 # patchelf returns an error on statically linked ELF files 15 15 if elfHasDynamicSection "$f" ; then
+8
pkgs/development/libraries/libcef/default.nix
··· 30 30 }: 31 31 32 32 let 33 + gl_rpath = lib.makeLibraryPath [ 34 + stdenv.cc.cc.lib 35 + ]; 36 + 33 37 rpath = lib.makeLibraryPath [ 34 38 glib 35 39 nss ··· 96 92 mkdir -p $out/lib/ $out/share/cef/ 97 93 cp libcef_dll_wrapper/libcef_dll_wrapper.a $out/lib/ 98 94 cp ../Release/libcef.so $out/lib/ 95 + cp ../Release/libEGL.so $out/lib/ 96 + cp ../Release/libGLESv2.so $out/lib/ 99 97 patchelf --set-rpath "${rpath}" $out/lib/libcef.so 98 + patchelf --set-rpath "${gl_rpath}" $out/lib/libEGL.so 99 + patchelf --set-rpath "${gl_rpath}" $out/lib/libGLESv2.so 100 100 cp ../Release/*.bin $out/share/cef/ 101 101 cp -r ../Resources/* $out/share/cef/ 102 102 cp -r ../include $out/
+9 -8
pkgs/development/libraries/tbb/2020_3.nix
··· 1 1 { lib 2 2 , stdenv 3 + , fetchpatch 3 4 , fetchurl 4 5 , fetchFromGitHub 5 6 , fixDarwinDylibNames ··· 21 20 22 21 patches = [ 23 22 # Fixes build with Musl. 24 - (fetchurl { 23 + (fetchpatch { 25 24 url = "https://github.com/openembedded/meta-openembedded/raw/39185eb1d1615e919e3ae14ae63b8ed7d3e5d83f/meta-oe/recipes-support/tbb/tbb/GLIBC-PREREQ-is-not-defined-on-musl.patch"; 26 - sha256 = "gUfXQ9OZQ82qD6brgauBCsKdjLvyHafMc18B+KxZoYs="; 25 + hash = "sha256-Oo5FSBPPBaOziWEBOlRmTmbulExMsAmQWBR5faOj1a0="; 27 26 }) 28 27 29 28 # Fixes build with Musl. 30 - (fetchurl { 29 + (fetchpatch { 31 30 url = "https://github.com/openembedded/meta-openembedded/raw/39185eb1d1615e919e3ae14ae63b8ed7d3e5d83f/meta-oe/recipes-support/tbb/tbb/0001-mallinfo-is-glibc-specific-API-mark-it-so.patch"; 32 - sha256 = "fhorfqO1hHKZ61uq+yTR7eQ8KYdyLwpM3K7WpwJpV74="; 31 + hash = "sha256-xp8J/il855VTFIKCN/bFtf+vif6HzcVl4t4/L9nW/xk="; 33 32 }) 34 33 35 34 # Fixes build with upcoming gcc-13: 36 35 # https://github.com/oneapi-src/oneTBB/pull/833 37 - (fetchurl { 36 + (fetchpatch { 38 37 name = "gcc-13.patch"; 39 38 url = "https://github.com/oneapi-src/oneTBB/pull/833/commits/c18342ba667d1f33f5e9a773aa86b091a9694b97.patch"; 40 - sha256 = "ZUExE3nsW80Z5GPWZnDNuDiHHaD1EF7qNl/G5M+Wcxg="; 39 + hash = "sha256-LWgf7Rm6Zp4TJdvMqnAkoAebbVS+WV2kB+4iY6jRka4="; 41 40 }) 42 41 43 42 # Fixes build for aarch64-darwin 44 - (fetchurl { 43 + (fetchpatch { 45 44 name = "aarch64-darwin.patch"; 46 45 url = "https://github.com/oneapi-src/oneTBB/pull/258/commits/86f6dcdc17a8f5ef2382faaef860cfa5243984fe.patch"; 47 - sha256 = "sha256-JXqrFPCb3q1vfxk752tQu7HhApCB4YH2LoVnGRwmspk="; 46 + hash = "sha256-+sNU8yEsVVmQYOCKmlNiyJfKmB/U0GKAmrydwkfrDFQ="; 48 47 }) 49 48 ]; 50 49
+2 -2
pkgs/development/mobile/maestro/default.nix
··· 2 2 3 3 stdenv.mkDerivation rec { 4 4 pname = "maestro"; 5 - version = "1.34.1"; 5 + version = "1.35.0"; 6 6 7 7 src = fetchurl { 8 8 url = "https://github.com/mobile-dev-inc/maestro/releases/download/cli-${version}/maestro.zip"; 9 - sha256 = "0whnhcf7a3j01693254qqwfk9d3xa4icv4kyqkn4ihxyibznb91d"; 9 + sha256 = "1rr3ihirga9jjw1n9z45hby6j68d0q11alzhqz4yv2ibvrjykzai"; 10 10 }; 11 11 12 12 dontUnpack = true;
+60
pkgs/development/python-modules/birch/default.nix
··· 1 + { lib 2 + , buildPythonPackage 3 + , fetchFromGitHub 4 + , setuptools 5 + , strct 6 + , pytestCheckHook 7 + , pyyaml 8 + }: 9 + 10 + buildPythonPackage rec { 11 + pname = "birch"; 12 + version = "0.0.35"; 13 + pyproject = true; 14 + 15 + src = fetchFromGitHub { 16 + owner = "shaypal5"; 17 + repo = "birch"; 18 + rev = "v${version}"; 19 + hash = "sha256-KdQZzQJvJ+logpcLQfaqqEEZJ/9VmNTQX/a4v0oBC98="; 20 + }; 21 + 22 + postPatch = '' 23 + substituteInPlace pytest.ini \ 24 + --replace \ 25 + "--cov" \ 26 + "#--cov" 27 + ''; 28 + 29 + nativeBuildInputs = [ 30 + setuptools 31 + ]; 32 + 33 + propagatedBuildInputs = [ 34 + strct 35 + ]; 36 + 37 + pythonImportsCheck = [ 38 + "birch" 39 + "birch.casters" 40 + "birch.exceptions" 41 + "birch.paths" 42 + ]; 43 + 44 + nativeCheckInputs = [ 45 + pytestCheckHook 46 + pyyaml 47 + ]; 48 + 49 + preCheck = '' 50 + export HOME="$(mktemp -d)" 51 + ''; 52 + 53 + 54 + meta = with lib; { 55 + description = "Simple hierarchical configuration for Python packages"; 56 + homepage = "https://github.com/shaypal5/birch"; 57 + license = licenses.mit; 58 + maintainers = with maintainers; [ pbsds ]; 59 + }; 60 + }
+10 -8
pkgs/development/python-modules/cachier/default.nix
··· 1 1 { lib 2 2 , buildPythonPackage 3 3 , pythonOlder 4 - , fetchPypi 4 + , fetchFromGitHub 5 5 , pythonRelaxDepsHook 6 6 , setuptools 7 7 , watchdog 8 8 , portalocker 9 - , pathtools 10 9 , pytestCheckHook 11 10 , pymongo 12 11 , dnspython 13 12 , pymongo-inmemory 14 13 , pandas 14 + , birch 15 15 }: 16 16 17 17 buildPythonPackage rec { 18 18 pname = "cachier"; 19 - version = "2.2.1"; 20 - format = "setuptools"; 19 + version = "2.2.2"; 20 + pyproject = true; 21 21 22 22 disabled = pythonOlder "3.8"; 23 23 24 - src = fetchPypi { 25 - inherit pname version; 26 - hash = "sha256-nm98LT87Z7yErKvIqMp93OEX9TDojqqtItgryHgSQJQ="; 24 + src = fetchFromGitHub { 25 + owner = "python-cachier"; 26 + repo = "cachier"; 27 + rev = "v${version}"; 28 + hash = "sha256-zUZqT4SIwZRqhRS/wHIzIYVULnp5aYcytCQd17T0D/4="; 27 29 }; 28 30 29 31 pythonRemoveDeps = [ "setuptools" ]; ··· 38 36 propagatedBuildInputs = [ 39 37 watchdog 40 38 portalocker 41 - pathtools 42 39 ]; 43 40 44 41 preCheck = '' ··· 53 52 dnspython 54 53 pymongo-inmemory 55 54 pandas 55 + birch 56 56 ]; 57 57 58 58 disabledTests = [
+2 -2
pkgs/development/python-modules/ftputil/default.nix
··· 9 9 10 10 buildPythonPackage rec { 11 11 pname = "ftputil"; 12 - version = "5.0.4"; 12 + version = "5.1.0"; 13 13 format = "setuptools"; 14 14 15 15 disabled = pythonOlder "3.6"; 16 16 17 17 src = fetchPypi { 18 18 inherit pname version; 19 - hash = "sha256-aInbhkndINm21ApsXw+EzPNAp9rB4L/A8AJAkPwq+zM="; 19 + hash = "sha256-6eYtP9MH75xS5Dsz/ZJ1n8lMBNi1F4+F9kGxg5BtQ1M="; 20 20 }; 21 21 22 22 nativeCheckInputs = [
+2 -2
pkgs/development/python-modules/litellm/default.nix
··· 15 15 , httpx 16 16 }: 17 17 let 18 - version = "1.15.0"; 18 + version = "1.16.19"; 19 19 in 20 20 buildPythonPackage rec { 21 21 pname = "litellm"; ··· 26 26 owner = "BerriAI"; 27 27 repo = "litellm"; 28 28 rev = "refs/tags/v${version}"; 29 - hash = "sha256-s3Ue/N04YZHEfEnVxPHupRSVDHxWjVse8FDlRF5yKCk="; 29 + hash = "sha256-KNQuTgJj7oLJsxfi8g9ShC5WHyrdpZGI5Nfgxzu/eak="; 30 30 }; 31 31 32 32 postPatch = ''
+2 -2
pkgs/development/python-modules/opencensus-ext-azure/default.nix
··· 11 11 12 12 buildPythonPackage rec { 13 13 pname = "opencensus-ext-azure"; 14 - version = "1.1.12"; 14 + version = "1.1.13"; 15 15 format = "setuptools"; 16 16 17 17 disabled = pythonOlder "3.4"; 18 18 19 19 src = fetchPypi { 20 20 inherit pname version; 21 - hash = "sha256-hrseR84dIKytlq08Efjvsvp6tensSJbzBj2F+JlJBGI="; 21 + hash = "sha256-rsMEchdwBTebpWpwKgl9YYxfV1WOG7ZnbsdflIEwaSo="; 22 22 }; 23 23 24 24 propagatedBuildInputs = [
+3 -3
pkgs/development/python-modules/pdf2docx/default.nix
··· 16 16 , python-docx 17 17 }: 18 18 let 19 - version = "0.5.6"; 19 + version = "0.5.7"; 20 20 in 21 21 buildPythonPackage { 22 22 pname = "pdf2docx"; ··· 26 26 src = fetchFromGitHub { 27 27 owner = "dothinking"; 28 28 repo = "pdf2docx"; 29 - rev = "v${version}"; 30 - hash = "sha256-NrT4GURQIJbqnHstfJrPzwLXT9c2oGBi4QJ6eGIFwu4="; 29 + rev = "refs/tags/v${version}"; 30 + hash = "sha256-GDftANn+ioaNR28VfRFDuFgdKoy7D4xiy0ezvWJ3zy0="; 31 31 }; 32 32 33 33 nativeBuildInputs = [
+15 -10
pkgs/development/python-modules/pygraphviz/default.nix
··· 1 1 { lib 2 2 , buildPythonPackage 3 - , isPy3k 4 - , fetchPypi 3 + , pythonOlder 4 + , fetchFromGitHub 5 5 , substituteAll 6 6 , graphviz 7 7 , coreutils 8 8 , pkg-config 9 + , setuptools 9 10 , pytest 10 11 }: 11 12 12 13 buildPythonPackage rec { 13 14 pname = "pygraphviz"; 14 - version = "1.11"; 15 - format = "setuptools"; 15 + version = "1.12"; 16 + pyproject = true; 16 17 17 - disabled = !isPy3k; 18 + disabled = pythonOlder "3.10"; 18 19 19 - src = fetchPypi { 20 - inherit pname version; 21 - hash = "sha256-qX61ztJm9FBT67HyxsbSkJFpBQPjpcFL5/kIs3sG8tQ="; 22 - extension = "zip"; 20 + src = fetchFromGitHub { 21 + owner = "pygraphviz"; 22 + repo = "pygraphviz"; 23 + rev = "pygraphviz-${version}"; 24 + hash = "sha256-XDP77H724eiMa/V18OtLxpUpxlIVDmcFLMYOAbazquo="; 23 25 }; 24 26 25 27 patches = [ ··· 32 30 }) 33 31 ]; 34 32 35 - nativeBuildInputs = [ pkg-config ]; 33 + nativeBuildInputs = [ 34 + pkg-config 35 + setuptools 36 + ]; 36 37 37 38 buildInputs = [ graphviz ]; 38 39
+2 -2
pkgs/development/python-modules/rapidgzip/default.nix
··· 7 7 8 8 buildPythonPackage rec { 9 9 pname = "rapidgzip"; 10 - version = "0.11.1"; 10 + version = "0.12.1"; 11 11 format = "setuptools"; 12 12 13 13 disabled = pythonOlder "3.6"; 14 14 15 15 src = fetchPypi { 16 16 inherit pname version; 17 - hash = "sha256-pcKO9BovkUDlRjE8MZQEfTSutVMB/9beyAyP3vChMUE="; 17 + hash = "sha256-s4MLxhwoGS7Zvx6k5qh1PWpyTRBUBGVIkPW9q94u+2Q="; 18 18 }; 19 19 20 20 nativeBuildInputs = [ nasm ];
+52
pkgs/development/python-modules/strct/default.nix
··· 1 + { lib 2 + , fetchFromGitHub 3 + , buildPythonPackage 4 + , setuptools 5 + , pytestCheckHook 6 + , sortedcontainers 7 + }: 8 + 9 + buildPythonPackage rec { 10 + pname = "strct"; 11 + version = "0.0.32"; 12 + pyproject = true; 13 + 14 + src = fetchFromGitHub { 15 + owner = "shaypal5"; 16 + repo = "strct"; 17 + rev = "v${version}"; 18 + hash = "sha256-ctafvdfSOdp7tlCUYg7d5XTXR1qBcWvOVtGtNUnhYIw="; 19 + }; 20 + 21 + postPatch = '' 22 + substituteInPlace pytest.ini \ 23 + --replace \ 24 + "--cov" \ 25 + "#--cov" 26 + ''; 27 + 28 + nativeBuildInputs = [ 29 + setuptools 30 + ]; 31 + 32 + nativeCheckInputs = [ 33 + pytestCheckHook 34 + sortedcontainers 35 + ]; 36 + 37 + pythonImportsCheck = [ 38 + "strct" 39 + "strct.dicts" 40 + "strct.hash" 41 + "strct.lists" 42 + "strct.sets" 43 + "strct.sortedlists" 44 + ]; 45 + 46 + meta = with lib; { 47 + description = "A small pure-python package for data structure related utility functions"; 48 + homepage = "https://github.com/shaypal5/strct"; 49 + license = licenses.mit; 50 + maintainers = with maintainers; [ pbsds ]; 51 + }; 52 + }
+39 -45
pkgs/development/python-modules/tokenizers/default.nix
··· 1 1 { lib 2 2 , stdenv 3 + , linkFarm 3 4 , buildPythonPackage 4 5 , cargo 5 6 , datasets ··· 22 21 let 23 22 # See https://github.com/huggingface/tokenizers/blob/main/bindings/python/tests/utils.py for details 24 23 # about URLs and file names 25 - robertaVocab = fetchurl { 26 - url = "https://s3.amazonaws.com/models.huggingface.co/bert/roberta-base-vocab.json"; 27 - sha256 = "0m86wpkfb2gdh9x9i9ng2fvwk1rva4p0s98xw996nrjxs7166zwy"; 28 - }; 29 - robertaMerges = fetchurl { 30 - url = "https://s3.amazonaws.com/models.huggingface.co/bert/roberta-base-merges.txt"; 31 - sha256 = "1idd4rvkpqqbks51i2vjbd928inw7slij9l4r063w3y5fd3ndq8w"; 32 - }; 33 - albertVocab = fetchurl { 34 - url = "https://s3.amazonaws.com/models.huggingface.co/bert/albert-base-v1-tokenizer.json"; 35 - sha256 = "1hra9pn8rczx7378z88zjclw2qsdrdwq20m56sy42s2crbas6akf"; 36 - }; 37 - bertVocab = fetchurl { 38 - url = "https://s3.amazonaws.com/models.huggingface.co/bert/bert-base-uncased-vocab.txt"; 39 - sha256 = "18rq42cmqa8zanydsbzrb34xwy4l6cz1y900r4kls57cbhvyvv07"; 40 - }; 41 - norvigBig = fetchurl { 42 - url = "https://norvig.com/big.txt"; 43 - sha256 = "0yz80icdly7na03cfpl0nfk5h3j3cam55rj486n03wph81ynq1ps"; 44 - }; 45 - docPipelineTokenizer = fetchurl { 46 - url = "https://s3.amazonaws.com/models.huggingface.co/bert/anthony/doc-pipeline/tokenizer.json"; 47 - hash = "sha256-i533xC8J5CDMNxBjo+p6avIM8UOcui8RmGAmK0GmfBc="; 48 - }; 49 - docQuicktourTokenizer = fetchurl { 50 - url = "https://s3.amazonaws.com/models.huggingface.co/bert/anthony/doc-quicktour/tokenizer.json"; 51 - hash = "sha256-ipY9d5DR5nxoO6kj7rItueZ9AO5wq9+Nzr6GuEIfIBI="; 52 - }; 53 - openaiVocab = fetchurl { 54 - url = "https://s3.amazonaws.com/models.huggingface.co/bert/openai-gpt-vocab.json"; 55 - sha256 = "0y40gc9bixj5rxv674br1rxmxkd3ly29p80x1596h8yywwcrpx7x"; 56 - }; 57 - openaiMerges = fetchurl { 58 - url = "https://s3.amazonaws.com/models.huggingface.co/bert/openai-gpt-merges.txt"; 59 - sha256 = "09a754pm4djjglv3x5pkgwd6f79i2rq8ydg0f7c3q1wmwqdbba8f"; 24 + test-data = linkFarm "tokenizers-test-data" { 25 + "roberta-base-vocab.json" = fetchurl { 26 + url = "https://s3.amazonaws.com/models.huggingface.co/bert/roberta-base-vocab.json"; 27 + sha256 = "0m86wpkfb2gdh9x9i9ng2fvwk1rva4p0s98xw996nrjxs7166zwy"; 28 + }; 29 + "roberta-base-merges.txt" = fetchurl { 30 + url = "https://s3.amazonaws.com/models.huggingface.co/bert/roberta-base-merges.txt"; 31 + sha256 = "1idd4rvkpqqbks51i2vjbd928inw7slij9l4r063w3y5fd3ndq8w"; 32 + }; 33 + "albert-base-v1-tokenizer.json" = fetchurl { 34 + url = "https://s3.amazonaws.com/models.huggingface.co/bert/albert-base-v1-tokenizer.json"; 35 + sha256 = "1hra9pn8rczx7378z88zjclw2qsdrdwq20m56sy42s2crbas6akf"; 36 + }; 37 + "bert-base-uncased-vocab.txt" = fetchurl { 38 + url = "https://s3.amazonaws.com/models.huggingface.co/bert/bert-base-uncased-vocab.txt"; 39 + sha256 = "18rq42cmqa8zanydsbzrb34xwy4l6cz1y900r4kls57cbhvyvv07"; 40 + }; 41 + "big.txt" = fetchurl { 42 + url = "https://norvig.com/big.txt"; 43 + sha256 = "0yz80icdly7na03cfpl0nfk5h3j3cam55rj486n03wph81ynq1ps"; 44 + }; 45 + "bert-wiki.json" = fetchurl { 46 + url = "https://s3.amazonaws.com/models.huggingface.co/bert/anthony/doc-pipeline/tokenizer.json"; 47 + hash = "sha256-i533xC8J5CDMNxBjo+p6avIM8UOcui8RmGAmK0GmfBc="; 48 + }; 49 + "tokenizer-wiki.json" = fetchurl { 50 + url = "https://s3.amazonaws.com/models.huggingface.co/bert/anthony/doc-quicktour/tokenizer.json"; 51 + hash = "sha256-ipY9d5DR5nxoO6kj7rItueZ9AO5wq9+Nzr6GuEIfIBI="; 52 + }; 53 + "openai-gpt-vocab.json" = fetchurl { 54 + url = "https://s3.amazonaws.com/models.huggingface.co/bert/openai-gpt-vocab.json"; 55 + sha256 = "0y40gc9bixj5rxv674br1rxmxkd3ly29p80x1596h8yywwcrpx7x"; 56 + }; 57 + "openai-gpt-merges.txt" = fetchurl { 58 + url = "https://s3.amazonaws.com/models.huggingface.co/bert/openai-gpt-merges.txt"; 59 + sha256 = "09a754pm4djjglv3x5pkgwd6f79i2rq8ydg0f7c3q1wmwqdbba8f"; 60 + }; 60 61 }; 61 62 in 62 63 buildPythonPackage rec { ··· 110 107 postUnpack = '' 111 108 # Add data files for tests, otherwise tests attempt network access 112 109 mkdir $sourceRoot/tests/data 113 - ( cd $sourceRoot/tests/data 114 - ln -s ${robertaVocab} roberta-base-vocab.json 115 - ln -s ${robertaMerges} roberta-base-merges.txt 116 - ln -s ${albertVocab} albert-base-v1-tokenizer.json 117 - ln -s ${bertVocab} bert-base-uncased-vocab.txt 118 - ln -s ${docPipelineTokenizer} bert-wiki.json 119 - ln -s ${docQuicktourTokenizer} tokenizer-wiki.json 120 - ln -s ${norvigBig} big.txt 121 - ln -s ${openaiVocab} openai-gpt-vocab.json 122 - ln -s ${openaiMerges} openai-gpt-merges.txt ) 110 + ln -s ${test-data}/* $sourceRoot/tests/data/ 123 111 ''; 124 112 125 113 preCheck = ''
+1 -1
pkgs/development/python-modules/torch/bin.nix
··· 68 68 jinja2 69 69 networkx 70 70 filelock 71 - ] ++ lib.optionals stdenv.isx86_64 [ 71 + ] ++ lib.optionals (stdenv.isLinux && stdenv.isx86_64) [ 72 72 openai-triton 73 73 ]; 74 74
+3 -3
pkgs/development/tools/bearer/default.nix
··· 7 7 8 8 buildGoModule rec { 9 9 pname = "bearer"; 10 - version = "1.33.1"; 10 + version = "1.34.0"; 11 11 12 12 src = fetchFromGitHub { 13 13 owner = "bearer"; 14 14 repo = "bearer"; 15 15 rev = "refs/tags/v${version}"; 16 - hash = "sha256-cdD4LYQZwkS5dRhmvyHkio7TXPDgfDo7kutVAGJCitc="; 16 + hash = "sha256-JNYjBcuA2KDdhd1yF0E7mEhNJ7xQRT+wFlnAnal/P9I="; 17 17 }; 18 18 19 - vendorHash = "sha256-nh2hkwscb4EYEfumBXPFrLgxIxRlkVqBCnQZ4eMZbgg="; 19 + vendorHash = "sha256-DykY1PFKsJ++F8ToAhyss5nAmsTOfXQXJpSo21oEhYc="; 20 20 21 21 subPackages = [ 22 22 "cmd/bearer"
+4 -4
pkgs/os-specific/linux/kernel/kernels-org.json
··· 20 20 "hash": "sha256:0ns8qxcrxj9i76b93xcghl002l8vbkg7ksd435sikig62qr62gf4" 21 21 }, 22 22 "5.4": { 23 - "version": "5.4.265", 24 - "hash": "sha256:05cvvwjiznn7hfd02qklklalg0chahvh5v18w64lcva6kzj9kbjd" 23 + "version": "5.4.266", 24 + "hash": "sha256:1dmcn9i3nvf1gldm1a32gnl5ybwbk2lizb3wa4gc06g7dxz2y1ys" 25 25 }, 26 26 "4.19": { 27 - "version": "4.19.303", 28 - "hash": "sha256:0dlbl47xs7z4yf9cxbxqzd7zs1f9070jr6ck231wgppa6lwwwb82" 27 + "version": "4.19.304", 28 + "hash": "sha256:165mljr8v1cf4vf4a4b44hx089rprkssvi2azq5wbxxg3basbind" 29 29 }, 30 30 "6.6": { 31 31 "version": "6.6.10",
+2 -2
pkgs/os-specific/linux/kernel/linux-libre.nix
··· 1 1 { stdenv, lib, fetchsvn, linux 2 2 , scripts ? fetchsvn { 3 3 url = "https://www.fsfla.org/svn/fsfla/software/linux-libre/releases/branches/"; 4 - rev = "19459"; 5 - sha256 = "12qx165i6dp9mrsbmizw6ynyxwvq11dmwz00xgy5qgr4ag3y4z4c"; 4 + rev = "19473"; 5 + sha256 = "0k9pgjg6k9j00x4m3g6chnhgznr5r1yyqd9x8q7a9q9j88vygszs"; 6 6 } 7 7 , ... 8 8 }:
+2 -2
pkgs/servers/keycloak/default.nix
··· 18 18 ''; 19 19 in stdenv.mkDerivation rec { 20 20 pname = "keycloak"; 21 - version = "23.0.3"; 21 + version = "23.0.4"; 22 22 23 23 src = fetchzip { 24 24 url = "https://github.com/keycloak/keycloak/releases/download/${version}/keycloak-${version}.zip"; 25 - hash = "sha256-5K8+pfn1zoXzBWJevZBx+9kZmefs1AvPoshOKP/dkNY="; 25 + hash = "sha256-qvgYH/e+V++Tk39sgELTiUqyoEbBuUoCRNaCiM8ZuoA="; 26 26 }; 27 27 28 28 nativeBuildInputs = [ makeWrapper jre ];
+1 -1
pkgs/servers/keycloak/keycloak-metrics-spi/default.nix
··· 11 11 hash = "sha256-pacmx5w1VVWz3HmHO6sc2friNUpzo4zyJI1/TQgCXlc="; 12 12 }; 13 13 14 - mvnHash = "sha256-rwAc2KtKo4vJ0JWwPquMyt+FHVNTmMpzBPbo8lWDN/A="; 14 + mvnHash = "sha256-RjERY434UL9z/gNZFV+wMTITCmTPGanwu61L8sEGaKY="; 15 15 16 16 installPhase = '' 17 17 runHook preInstall
+3 -3
pkgs/servers/monitoring/telegraf/default.nix
··· 8 8 9 9 buildGoModule rec { 10 10 pname = "telegraf"; 11 - version = "1.29.1"; 11 + version = "1.29.2"; 12 12 13 13 subPackages = [ "cmd/telegraf" ]; 14 14 ··· 16 16 owner = "influxdata"; 17 17 repo = "telegraf"; 18 18 rev = "v${version}"; 19 - hash = "sha256-iEVVMARdt3gibahxU9snwo13yi6gINWWdhFkTHLYAuU="; 19 + hash = "sha256-Z2+G4H1O4e77V9jfW+REK4PGdJgoPz+JgLxX/WqBoaY="; 20 20 }; 21 21 22 - vendorHash = "sha256-R6+GKyGD7tUulOA6qEPUlSMj2/zXdLmmrX1HubLNCEc="; 22 + vendorHash = "sha256-mPw3KfQy9DRqv8E6zzYAbeUaLaNfiNPU77ic+JqqBuM="; 23 23 proxyVendor = true; 24 24 25 25 ldflags = [
+2 -2
pkgs/test/checkpointBuild/default.nix
··· 10 10 patch -p1 < ${./hello.patch} 11 11 ''; 12 12 }); 13 - checkpointBuiltHello = checkpointBuildTools.mkCheckpointedBuild patchedHello baseHelloArtifacts; 13 + checkpointBuiltHello = checkpointBuildTools.mkCheckpointBuild patchedHello baseHelloArtifacts; 14 14 15 15 checkpointBuiltHelloWithCheck = checkpointBuiltHello.overrideAttrs (old: { 16 16 doCheck = true; ··· 41 41 ''; 42 42 }); 43 43 44 - checkpointBuiltHelloWithRemovedFile = checkpointBuildTools.mkCheckpointedBuild patchedHelloRemoveFile baseHelloRemoveFileArtifacts; 44 + checkpointBuiltHelloWithRemovedFile = checkpointBuildTools.mkCheckpointBuild patchedHelloRemoveFile baseHelloRemoveFileArtifacts; 45 45 in 46 46 stdenv.mkDerivation { 47 47 name = "patched-hello-returns-correct-output";
+1 -1
pkgs/test/default.nix
··· 113 113 114 114 install-shell-files = callPackage ./install-shell-files {}; 115 115 116 - checkpoint-build = callPackage ./checkpointBuild {}; 116 + checkpointBuildTools = callPackage ./checkpointBuild {}; 117 117 118 118 kernel-config = callPackage ./kernel.nix {}; 119 119
+2
pkgs/test/nixpkgs-check-by-name/README.md
··· 28 28 - Each package directory must not refer to files outside itself using symlinks or Nix path expressions. 29 29 30 30 ### Nix evaluation checks 31 + 32 + Evaluate Nixpkgs with `system` set to `x86_64-linux` and check that: 31 33 - For each package directory, the `pkgs.${name}` attribute must be defined as `callPackage pkgs/by-name/${shard}/${name}/package.nix args` for some `args`. 32 34 - For each package directory, `pkgs.lib.isDerivation pkgs.${name}` must be `true`. 33 35
+67 -56
pkgs/test/nixpkgs-check-by-name/src/eval.nix
··· 1 1 # Takes a path to nixpkgs and a path to the json-encoded list of attributes to check. 2 - # Returns an attribute set containing information on each requested attribute. 3 - # If the attribute is missing from Nixpkgs it's also missing from the result. 4 - # 5 - # The returned information is an attribute set with: 6 - # - call_package_path: The <path> from `<attr> = callPackage <path> { ... }`, 7 - # or null if it's not defined as with callPackage, or if the <path> is not a path 8 - # - is_derivation: The result of `lib.isDerivation <attr>` 2 + # Returns an value containing information on each requested attribute, 3 + # which is decoded on the Rust side. 4 + # See ./eval.rs for the meaning of the returned values 9 5 { 10 6 attrsPath, 11 7 nixpkgsPath, ··· 9 13 let 10 14 attrs = builtins.fromJSON (builtins.readFile attrsPath); 11 15 12 - # This overlay mocks callPackage to persist the path of the first argument 13 - callPackageOverlay = self: super: { 16 + nixpkgsPathLength = builtins.stringLength (toString nixpkgsPath) + 1; 17 + removeNixpkgsPrefix = builtins.substring nixpkgsPathLength (-1); 18 + 19 + # We need access to the `callPackage` arguments of each attribute. 20 + # The only way to do so is to override `callPackage` with our own version that adds this information to the result, 21 + # and then try to access this information. 22 + overlay = final: prev: { 23 + 24 + # Information for attributes defined using `callPackage` 14 25 callPackage = fn: args: 15 - let 16 - result = super.callPackage fn args; 17 - variantInfo._attributeVariant = { 18 - # These names are used by the deserializer on the Rust side 19 - CallPackage.path = 26 + addVariantInfo (prev.callPackage fn args) { 27 + Manual = { 28 + path = 20 29 if builtins.isPath fn then 21 - toString fn 30 + removeNixpkgsPrefix (toString fn) 22 31 else 23 32 null; 24 - CallPackage.empty_arg = 33 + empty_arg = 25 34 args == { }; 26 35 }; 27 - in 28 - if builtins.isAttrs result then 29 - # If this was the last overlay to be applied, we could just only return the `_callPackagePath`, 30 - # but that's not the case because stdenv has another overlays on top of user-provided ones. 31 - # So to not break the stdenv build we need to return the mostly proper result here 32 - result // variantInfo 33 - else 34 - # It's very rare that callPackage doesn't return an attribute set, but it can occur. 35 - variantInfo; 36 + }; 36 37 38 + # Information for attributes that are auto-called from pkgs/by-name. 39 + # This internal attribute is only used by pkgs/by-name 37 40 _internalCallByNamePackageFile = file: 38 - let 39 - result = super._internalCallByNamePackageFile file; 40 - variantInfo._attributeVariant = { 41 - # This name is used by the deserializer on the Rust side 42 - AutoCalled = null; 43 - }; 44 - in 45 - if builtins.isAttrs result then 46 - # If this was the last overlay to be applied, we could just only return the `_callPackagePath`, 47 - # but that's not the case because stdenv has another overlays on top of user-provided ones. 48 - # So to not break the stdenv build we need to return the mostly proper result here 49 - result // variantInfo 50 - else 51 - # It's very rare that callPackage doesn't return an attribute set, but it can occur. 52 - variantInfo; 41 + addVariantInfo (prev._internalCallByNamePackageFile file) { 42 + Auto = null; 43 + }; 44 + 53 45 }; 46 + 47 + # We can't just replace attribute values with their info in the overlay, 48 + # because attributes can depend on other attributes, so this would break evaluation. 49 + addVariantInfo = value: variant: 50 + if builtins.isAttrs value then 51 + value // { 52 + _callPackageVariant = variant; 53 + } 54 + else 55 + # It's very rare that callPackage doesn't return an attribute set, but it can occur. 56 + # In such a case we can't really return anything sensible that would include the info, 57 + # so just don't return the info and let the consumer handle it. 58 + value; 54 59 55 60 pkgs = import nixpkgsPath { 56 61 # Don't let the users home directory influence this result 57 62 config = { }; 58 - overlays = [ callPackageOverlay ]; 63 + overlays = [ overlay ]; 64 + # We check evaluation and callPackage only for x86_64-linux. 65 + # Not ideal, but hard to fix 66 + system = "x86_64-linux"; 59 67 }; 60 68 61 - attrInfo = attr: 62 - let 63 - value = pkgs.${attr}; 64 - in 65 - { 66 - # These names are used by the deserializer on the Rust side 67 - variant = value._attributeVariant or { Other = null; }; 68 - is_derivation = pkgs.lib.isDerivation value; 69 - }; 69 + attrInfo = name: value: 70 + if ! builtins.isAttrs value then 71 + { 72 + NonAttributeSet = null; 73 + } 74 + else if ! value ? _callPackageVariant then 75 + { 76 + NonCallPackage = null; 77 + } 78 + else 79 + { 80 + CallPackage = { 81 + call_package_variant = value._callPackageVariant; 82 + is_derivation = pkgs.lib.isDerivation value; 83 + }; 84 + }; 70 85 71 - attrInfos = builtins.listToAttrs (map (name: { 72 - inherit name; 73 - value = attrInfo name; 74 - }) attrs); 86 + attrInfos = map (name: [ 87 + name 88 + ( 89 + if ! pkgs ? ${name} then 90 + { Missing = null; } 91 + else 92 + { Existing = attrInfo name pkgs.${name}; } 93 + ) 94 + ]) attrs; 75 95 76 96 in 77 - # Filter out attributes not in Nixpkgs 78 - builtins.intersectAttrs pkgs attrInfos 97 + attrInfos
+113 -80
pkgs/test/nixpkgs-check-by-name/src/eval.rs
··· 6 6 7 7 use anyhow::Context; 8 8 use serde::Deserialize; 9 - use std::collections::HashMap; 10 9 use std::path::PathBuf; 11 10 use std::process; 12 11 use tempfile::NamedTempFile; 13 12 14 13 /// Attribute set of this structure is returned by eval.nix 15 14 #[derive(Deserialize)] 16 - struct AttributeInfo { 17 - variant: AttributeVariant, 15 + enum ByNameAttribute { 16 + /// The attribute doesn't exist at all 17 + Missing, 18 + Existing(AttributeInfo), 19 + } 20 + 21 + #[derive(Deserialize)] 22 + enum AttributeInfo { 23 + /// The attribute exists, but its value isn't an attribute set 24 + NonAttributeSet, 25 + /// The attribute exists, but its value isn't defined using callPackage 26 + NonCallPackage, 27 + /// The attribute exists and its value is an attribute set 28 + CallPackage(CallPackageInfo), 29 + } 30 + 31 + #[derive(Deserialize)] 32 + struct CallPackageInfo { 33 + call_package_variant: CallPackageVariant, 34 + /// Whether the attribute is a derivation (`lib.isDerivation`) 18 35 is_derivation: bool, 19 36 } 20 37 21 38 #[derive(Deserialize)] 22 - enum AttributeVariant { 39 + enum CallPackageVariant { 23 40 /// The attribute is auto-called as pkgs.callPackage using pkgs/by-name, 24 41 /// and it is not overridden by a definition in all-packages.nix 25 - AutoCalled, 42 + Auto, 26 43 /// The attribute is defined as a pkgs.callPackage <path> <args>, 27 44 /// and overridden by all-packages.nix 28 - CallPackage { 45 + Manual { 29 46 /// The <path> argument or None if it's not a path 30 47 path: Option<PathBuf>, 31 48 /// true if <args> is { } 32 49 empty_arg: bool, 33 50 }, 34 - /// The attribute is not defined as pkgs.callPackage 35 - Other, 36 51 } 37 52 38 53 /// Check that the Nixpkgs attribute values corresponding to the packages in pkgs/by-name are ··· 60 45 ) -> validation::Result<ratchet::Nixpkgs> { 61 46 // Write the list of packages we need to check into a temporary JSON file. 62 47 // This can then get read by the Nix evaluation. 63 - let attrs_file = NamedTempFile::new().context("Failed to create a temporary file")?; 48 + let attrs_file = NamedTempFile::new().with_context(|| "Failed to create a temporary file")?; 64 49 // We need to canonicalise this path because if it's a symlink (which can be the case on 65 50 // Darwin), Nix would need to read both the symlink and the target path, therefore need 2 66 51 // NIX_PATH entries for restrict-eval. But if we resolve the symlinks then only one predictable 67 52 // entry is needed. 68 53 let attrs_file_path = attrs_file.path().canonicalize()?; 69 54 70 - serde_json::to_writer(&attrs_file, &package_names).context(format!( 71 - "Failed to serialise the package names to the temporary path {}", 72 - attrs_file_path.display() 73 - ))?; 55 + serde_json::to_writer(&attrs_file, &package_names).with_context(|| { 56 + format!( 57 + "Failed to serialise the package names to the temporary path {}", 58 + attrs_file_path.display() 59 + ) 60 + })?; 74 61 75 62 let expr_path = std::env::var("NIX_CHECK_BY_NAME_EXPR_PATH") 76 - .context("Could not get environment variable NIX_CHECK_BY_NAME_EXPR_PATH")?; 63 + .with_context(|| "Could not get environment variable NIX_CHECK_BY_NAME_EXPR_PATH")?; 77 64 // With restrict-eval, only paths in NIX_PATH can be accessed, so we explicitly specify the 78 65 // ones needed needed 79 66 let mut command = process::Command::new("nix-instantiate"); ··· 114 97 115 98 let result = command 116 99 .output() 117 - .context(format!("Failed to run command {command:?}"))?; 100 + .with_context(|| format!("Failed to run command {command:?}"))?; 118 101 119 102 if !result.status.success() { 120 103 anyhow::bail!("Failed to run command {command:?}"); 121 104 } 122 105 // Parse the resulting JSON value 123 - let actual_files: HashMap<String, AttributeInfo> = serde_json::from_slice(&result.stdout) 124 - .context(format!( 125 - "Failed to deserialise {}", 126 - String::from_utf8_lossy(&result.stdout) 127 - ))?; 106 + let attributes: Vec<(String, ByNameAttribute)> = serde_json::from_slice(&result.stdout) 107 + .with_context(|| { 108 + format!( 109 + "Failed to deserialise {}", 110 + String::from_utf8_lossy(&result.stdout) 111 + ) 112 + })?; 128 113 129 - Ok( 130 - validation::sequence(package_names.into_iter().map(|package_name| { 131 - let relative_package_file = structure::relative_file_for_package(&package_name); 132 - let absolute_package_file = nixpkgs_path.join(&relative_package_file); 114 + let check_result = validation::sequence(attributes.into_iter().map( 115 + |(attribute_name, attribute_value)| { 116 + let relative_package_file = structure::relative_file_for_package(&attribute_name); 133 117 134 - if let Some(attribute_info) = actual_files.get(&package_name) { 135 - let check_result = if !attribute_info.is_derivation { 136 - NixpkgsProblem::NonDerivation { 137 - relative_package_file: relative_package_file.clone(), 138 - package_name: package_name.clone(), 139 - } 140 - .into() 141 - } else { 142 - Success(()) 143 - }; 118 + use ratchet::RatchetState::*; 119 + use AttributeInfo::*; 120 + use ByNameAttribute::*; 121 + use CallPackageVariant::*; 144 122 145 - let check_result = check_result.and(match &attribute_info.variant { 146 - AttributeVariant::AutoCalled => Success(ratchet::Package { 147 - empty_non_auto_called: ratchet::EmptyNonAutoCalled::Valid, 148 - }), 149 - AttributeVariant::CallPackage { path, empty_arg } => { 150 - let correct_file = if let Some(call_package_path) = path { 151 - absolute_package_file == *call_package_path 152 - } else { 153 - false 154 - }; 155 - 156 - if correct_file { 157 - Success(ratchet::Package { 158 - // Empty arguments for non-auto-called packages are not allowed anymore. 159 - empty_non_auto_called: if *empty_arg { 160 - ratchet::EmptyNonAutoCalled::Invalid 161 - } else { 162 - ratchet::EmptyNonAutoCalled::Valid 163 - }, 164 - }) 165 - } else { 166 - NixpkgsProblem::WrongCallPackage { 167 - relative_package_file: relative_package_file.clone(), 168 - package_name: package_name.clone(), 169 - } 170 - .into() 171 - } 172 - } 173 - AttributeVariant::Other => NixpkgsProblem::WrongCallPackage { 174 - relative_package_file: relative_package_file.clone(), 175 - package_name: package_name.clone(), 176 - } 177 - .into(), 178 - }); 179 - 180 - check_result.map(|value| (package_name.clone(), value)) 181 - } else { 182 - NixpkgsProblem::UndefinedAttr { 123 + let check_result = match attribute_value { 124 + Missing => NixpkgsProblem::UndefinedAttr { 183 125 relative_package_file: relative_package_file.clone(), 184 - package_name: package_name.clone(), 126 + package_name: attribute_name.clone(), 185 127 } 186 - .into() 187 - } 188 - })) 189 - .map(|elems| ratchet::Nixpkgs { 190 - packages: elems.into_iter().collect(), 191 - }), 192 - ) 128 + .into(), 129 + Existing(NonAttributeSet) => NixpkgsProblem::NonDerivation { 130 + relative_package_file: relative_package_file.clone(), 131 + package_name: attribute_name.clone(), 132 + } 133 + .into(), 134 + Existing(NonCallPackage) => NixpkgsProblem::WrongCallPackage { 135 + relative_package_file: relative_package_file.clone(), 136 + package_name: attribute_name.clone(), 137 + } 138 + .into(), 139 + Existing(CallPackage(CallPackageInfo { 140 + is_derivation, 141 + call_package_variant, 142 + })) => { 143 + let check_result = if !is_derivation { 144 + NixpkgsProblem::NonDerivation { 145 + relative_package_file: relative_package_file.clone(), 146 + package_name: attribute_name.clone(), 147 + } 148 + .into() 149 + } else { 150 + Success(()) 151 + }; 152 + 153 + check_result.and(match &call_package_variant { 154 + Auto => Success(ratchet::Package { 155 + empty_non_auto_called: Tight, 156 + }), 157 + Manual { path, empty_arg } => { 158 + let correct_file = if let Some(call_package_path) = path { 159 + relative_package_file == *call_package_path 160 + } else { 161 + false 162 + }; 163 + 164 + if correct_file { 165 + Success(ratchet::Package { 166 + // Empty arguments for non-auto-called packages are not allowed anymore. 167 + empty_non_auto_called: if *empty_arg { 168 + Loose(ratchet::EmptyNonAutoCalled) 169 + } else { 170 + Tight 171 + }, 172 + }) 173 + } else { 174 + NixpkgsProblem::WrongCallPackage { 175 + relative_package_file: relative_package_file.clone(), 176 + package_name: attribute_name.clone(), 177 + } 178 + .into() 179 + } 180 + } 181 + }) 182 + } 183 + }; 184 + check_result.map(|value| (attribute_name.clone(), value)) 185 + }, 186 + )); 187 + 188 + Ok(check_result.map(|elems| ratchet::Nixpkgs { 189 + package_names, 190 + package_map: elems.into_iter().collect(), 191 + })) 193 192 }
+20 -24
pkgs/test/nixpkgs-check-by-name/src/main.rs
··· 38 38 39 39 /// Path to the base Nixpkgs to run ratchet checks against. 40 40 /// For PRs, this should be set to a checkout of the PRs base branch. 41 - /// If not specified, no ratchet checks will be performed. 42 - /// However, this flag will become required once CI uses it. 43 41 #[arg(long)] 44 - base: Option<PathBuf>, 42 + base: PathBuf, 45 43 } 46 44 47 45 fn main() -> ExitCode { 48 46 let args = Args::parse(); 49 - match process(args.base.as_deref(), &args.nixpkgs, &[], &mut io::stderr()) { 47 + match process(&args.base, &args.nixpkgs, &[], &mut io::stderr()) { 50 48 Ok(true) => { 51 49 eprintln!("{}", "Validated successfully".green()); 52 50 ExitCode::SUCCESS ··· 75 77 /// - `Ok(false)` if there are problems, all of which will be written to `error_writer`. 76 78 /// - `Ok(true)` if there are no problems 77 79 pub fn process<W: io::Write>( 78 - base_nixpkgs: Option<&Path>, 80 + base_nixpkgs: &Path, 79 81 main_nixpkgs: &Path, 80 82 eval_accessible_paths: &[&Path], 81 83 error_writer: &mut W, ··· 85 87 let check_result = main_result.result_map(|nixpkgs_version| { 86 88 // If the main Nixpkgs doesn't have any problems, run the ratchet checks against the base 87 89 // Nixpkgs 88 - if let Some(base) = base_nixpkgs { 89 - check_nixpkgs(base, eval_accessible_paths, error_writer)?.result_map( 90 - |base_nixpkgs_version| { 91 - Ok(ratchet::Nixpkgs::compare( 92 - Some(base_nixpkgs_version), 93 - nixpkgs_version, 94 - )) 95 - }, 96 - ) 97 - } else { 98 - Ok(ratchet::Nixpkgs::compare(None, nixpkgs_version)) 99 - } 90 + check_nixpkgs(base_nixpkgs, eval_accessible_paths, error_writer)?.result_map( 91 + |base_nixpkgs_version| { 92 + Ok(ratchet::Nixpkgs::compare( 93 + base_nixpkgs_version, 94 + nixpkgs_version, 95 + )) 96 + }, 97 + ) 100 98 })?; 101 99 102 100 match check_result { ··· 117 123 error_writer: &mut W, 118 124 ) -> validation::Result<ratchet::Nixpkgs> { 119 125 Ok({ 120 - let nixpkgs_path = nixpkgs_path.canonicalize().context(format!( 121 - "Nixpkgs path {} could not be resolved", 122 - nixpkgs_path.display() 123 - ))?; 126 + let nixpkgs_path = nixpkgs_path.canonicalize().with_context(|| { 127 + format!( 128 + "Nixpkgs path {} could not be resolved", 129 + nixpkgs_path.display() 130 + ) 131 + })?; 124 132 125 133 if !nixpkgs_path.join(utils::BASE_SUBPATH).exists() { 126 134 writeln!( ··· 230 234 231 235 let base_path = path.join("base"); 232 236 let base_nixpkgs = if base_path.exists() { 233 - Some(base_path.as_path()) 237 + base_path.as_path() 234 238 } else { 235 - None 239 + Path::new("tests/empty-base") 236 240 }; 237 241 238 242 // We don't want coloring to mess up the tests 239 243 let writer = temp_env::with_var("NO_COLOR", Some("1"), || -> anyhow::Result<_> { 240 244 let mut writer = vec![]; 241 245 process(base_nixpkgs, &path, &[&extra_nix_path], &mut writer) 242 - .context(format!("Failed test case {name}"))?; 246 + .with_context(|| format!("Failed test case {name}"))?; 243 247 Ok(writer) 244 248 })?; 245 249
+57 -38
pkgs/test/nixpkgs-check-by-name/src/ratchet.rs
··· 10 10 /// The ratchet value for the entirety of Nixpkgs. 11 11 #[derive(Default)] 12 12 pub struct Nixpkgs { 13 - /// The ratchet values for each package in `pkgs/by-name` 14 - pub packages: HashMap<String, Package>, 13 + /// Sorted list of attributes in package_map 14 + pub package_names: Vec<String>, 15 + /// The ratchet values for all packages 16 + pub package_map: HashMap<String, Package>, 15 17 } 16 18 17 19 impl Nixpkgs { 18 20 /// Validates the ratchet checks for Nixpkgs 19 - pub fn compare(optional_from: Option<Self>, to: Self) -> Validation<()> { 21 + pub fn compare(from: Self, to: Self) -> Validation<()> { 20 22 validation::sequence_( 21 23 // We only loop over the current attributes, 22 24 // we don't need to check ones that were removed 23 - to.packages.into_iter().map(|(name, attr_to)| { 24 - let attr_from = if let Some(from) = &optional_from { 25 - from.packages.get(&name) 26 - } else { 27 - // This pretends that if there's no base version to compare against, all 28 - // attributes existed without conforming to the new strictness check for 29 - // backwards compatibility. 30 - // TODO: Remove this case. This is only needed because the `--base` 31 - // argument is still optional, which doesn't need to be once CI is updated 32 - // to pass it. 33 - Some(&Package { 34 - empty_non_auto_called: EmptyNonAutoCalled::Invalid, 35 - }) 36 - }; 37 - Package::compare(&name, attr_from, &attr_to) 25 + to.package_names.into_iter().map(|name| { 26 + Package::compare(&name, from.package_map.get(&name), &to.package_map[&name]) 38 27 }), 39 28 ) 40 29 } ··· 32 43 /// The ratchet value for a single package in `pkgs/by-name` 33 44 pub struct Package { 34 45 /// The ratchet value for the check for non-auto-called empty arguments 35 - pub empty_non_auto_called: EmptyNonAutoCalled, 46 + pub empty_non_auto_called: RatchetState<EmptyNonAutoCalled>, 36 47 } 37 48 38 49 impl Package { 39 50 /// Validates the ratchet checks for a single package defined in `pkgs/by-name` 40 51 pub fn compare(name: &str, optional_from: Option<&Self>, to: &Self) -> Validation<()> { 41 - EmptyNonAutoCalled::compare( 52 + RatchetState::<EmptyNonAutoCalled>::compare( 42 53 name, 43 54 optional_from.map(|x| &x.empty_non_auto_called), 44 55 &to.empty_non_auto_called, ··· 46 57 } 47 58 } 48 59 49 - /// The ratchet value of a single package in `pkgs/by-name` 60 + /// The ratchet state of a generic ratchet check. 61 + pub enum RatchetState<Context> { 62 + /// The ratchet is loose, it can be tightened more. 63 + /// In other words, this is the legacy state we're trying to move away from. 64 + /// Introducing new instances is not allowed but previous instances will continue to be allowed. 65 + /// The `Context` is context for error messages in case a new instance of this state is 66 + /// introduced 67 + Loose(Context), 68 + /// The ratchet is tight, it can't be tightened any further. 69 + /// This is either because we already use the latest state, or because the ratchet isn't 70 + /// relevant. 71 + Tight, 72 + } 73 + 74 + /// A trait that can convert an attribute-specific error context into a NixpkgsProblem 75 + pub trait ToNixpkgsProblem { 76 + /// How to convert an attribute-specific error context into a NixpkgsProblem 77 + fn to_nixpkgs_problem(name: &str, context: &Self, existed_before: bool) -> NixpkgsProblem; 78 + } 79 + 80 + impl<Context: ToNixpkgsProblem> RatchetState<Context> { 81 + /// Compare the previous ratchet state of an attribute to the new state. 82 + /// The previous state may be `None` in case the attribute is new. 83 + fn compare(name: &str, optional_from: Option<&Self>, to: &Self) -> Validation<()> { 84 + // If we don't have a previous state, enforce a tight ratchet 85 + let from = optional_from.unwrap_or(&RatchetState::Tight); 86 + match (from, to) { 87 + // Always okay to keep it tight or tighten the ratchet 88 + (_, RatchetState::Tight) => Success(()), 89 + 90 + // Grandfathering policy for a loose ratchet 91 + (RatchetState::Loose { .. }, RatchetState::Loose { .. }) => Success(()), 92 + 93 + // Loosening a ratchet is now allowed 94 + (RatchetState::Tight, RatchetState::Loose(context)) => { 95 + Context::to_nixpkgs_problem(name, context, optional_from.is_some()).into() 96 + } 97 + } 98 + } 99 + } 100 + 101 + /// The ratchet value of an attribute 50 102 /// for the non-auto-called empty argument check of a single. 51 103 /// 52 104 /// This checks that packages defined in `pkgs/by-name` cannot be overridden 53 105 /// with an empty second argument like `callPackage ... { }`. 54 - #[derive(PartialEq, PartialOrd)] 55 - pub enum EmptyNonAutoCalled { 56 - Invalid, 57 - Valid, 58 - } 106 + pub struct EmptyNonAutoCalled; 59 107 60 - impl EmptyNonAutoCalled { 61 - /// Validates the non-auto-called empty argument ratchet check for a single package defined in `pkgs/by-name` 62 - fn compare(name: &str, optional_from: Option<&Self>, to: &Self) -> Validation<()> { 63 - let from = optional_from.unwrap_or(&Self::Valid); 64 - if to >= from { 65 - Success(()) 66 - } else { 67 - NixpkgsProblem::WrongCallPackage { 68 - relative_package_file: structure::relative_file_for_package(name), 69 - package_name: name.to_owned(), 70 - } 71 - .into() 108 + impl ToNixpkgsProblem for EmptyNonAutoCalled { 109 + fn to_nixpkgs_problem(name: &str, _context: &Self, _existed_before: bool) -> NixpkgsProblem { 110 + NixpkgsProblem::WrongCallPackage { 111 + relative_package_file: structure::relative_file_for_package(name), 112 + package_name: name.to_owned(), 72 113 } 73 114 } 74 115 }
+16 -13
pkgs/test/nixpkgs-check-by-name/src/references.rs
··· 17 17 ) -> validation::Result<()> { 18 18 // The empty argument here is the subpath under the package directory to check 19 19 // An empty one means the package directory itself 20 - check_path(relative_package_dir, absolute_package_dir, Path::new("")).context(format!( 21 - "While checking the references in package directory {}", 22 - relative_package_dir.display() 23 - )) 20 + check_path(relative_package_dir, absolute_package_dir, Path::new("")).with_context(|| { 21 + format!( 22 + "While checking the references in package directory {}", 23 + relative_package_dir.display() 24 + ) 25 + }) 24 26 } 25 27 26 28 /// Checks for a specific path to not have references outside ··· 64 62 .map(|entry| { 65 63 let entry_subpath = subpath.join(entry.file_name()); 66 64 check_path(relative_package_dir, absolute_package_dir, &entry_subpath) 67 - .context(format!("Error while recursing into {}", subpath.display())) 65 + .with_context(|| { 66 + format!("Error while recursing into {}", subpath.display()) 67 + }) 68 68 }) 69 69 .collect_vec()?, 70 70 ) ··· 74 70 // Only check Nix files 75 71 if let Some(ext) = path.extension() { 76 72 if ext == OsStr::new("nix") { 77 - check_nix_file(relative_package_dir, absolute_package_dir, subpath).context( 78 - format!("Error while checking Nix file {}", subpath.display()), 73 + check_nix_file(relative_package_dir, absolute_package_dir, subpath).with_context( 74 + || format!("Error while checking Nix file {}", subpath.display()), 79 75 )? 80 76 } else { 81 77 Success(()) ··· 97 93 subpath: &Path, 98 94 ) -> validation::Result<()> { 99 95 let path = absolute_package_dir.join(subpath); 100 - let parent_dir = path.parent().context(format!( 101 - "Could not get parent of path {}", 102 - subpath.display() 103 - ))?; 96 + let parent_dir = path 97 + .parent() 98 + .with_context(|| format!("Could not get parent of path {}", subpath.display()))?; 104 99 105 - let contents = 106 - read_to_string(&path).context(format!("Could not read file {}", subpath.display()))?; 100 + let contents = read_to_string(&path) 101 + .with_context(|| format!("Could not read file {}", subpath.display()))?; 107 102 108 103 let root = Root::parse(&contents); 109 104 if let Some(error) = root.errors().first() {
+2 -2
pkgs/test/nixpkgs-check-by-name/src/utils.rs
··· 10 10 pub fn read_dir_sorted(base_dir: &Path) -> anyhow::Result<Vec<fs::DirEntry>> { 11 11 let listing = base_dir 12 12 .read_dir() 13 - .context(format!("Could not list directory {}", base_dir.display()))?; 13 + .with_context(|| format!("Could not list directory {}", base_dir.display()))?; 14 14 let mut shard_entries = listing 15 15 .collect::<io::Result<Vec<_>>>() 16 - .context(format!("Could not list directory {}", base_dir.display()))?; 16 + .with_context(|| format!("Could not list directory {}", base_dir.display()))?; 17 17 shard_entries.sort_by_key(|entry| entry.file_name()); 18 18 Ok(shard_entries) 19 19 }
+1
pkgs/test/nixpkgs-check-by-name/tests/empty-base/default.nix
··· 1 + import ../mock-nixpkgs.nix { root = ./.; }
pkgs/test/nixpkgs-check-by-name/tests/empty-base/pkgs/by-name/README.md
+2
pkgs/test/nixpkgs-check-by-name/tests/mock-nixpkgs.nix
··· 19 19 overlays ? [], 20 20 # Passed by the checker to make sure a real Nixpkgs isn't influenced by impurities 21 21 config ? {}, 22 + # Passed by the checker to make sure a real Nixpkgs isn't influenced by impurities 23 + system ? null, 22 24 }: 23 25 let 24 26
+2 -2
pkgs/tools/networking/ddns-go/default.nix
··· 5 5 6 6 buildGoModule rec { 7 7 pname = "ddns-go"; 8 - version = "5.7.0"; 8 + version = "5.7.1"; 9 9 10 10 src = fetchFromGitHub { 11 11 owner = "jeessy2"; 12 12 repo = pname; 13 13 rev = "v${version}"; 14 - hash = "sha256-/GZxPM0f1W72OtpEknw0TLQ1eFDF5C98umX0Q8MX46s="; 14 + hash = "sha256-PKshYKywqL706pVgruWQ9M0QbK2btKu28+wmnlFdDgE="; 15 15 }; 16 16 17 17 vendorHash = "sha256-/kKFMo4PRWwXUuurNHMG36TV3EpcEikgf03/y/aKpXo=";
+3 -3
pkgs/tools/security/cryptomator/default.nix
··· 14 14 assert stdenv.isLinux; # better than `called with unexpected argument 'enableJavaFX'` 15 15 mavenJdk.buildMavenPackage rec { 16 16 pname = "cryptomator"; 17 - version = "1.11.0"; 17 + version = "1.11.1"; 18 18 19 19 src = fetchFromGitHub { 20 20 owner = "cryptomator"; 21 21 repo = "cryptomator"; 22 22 rev = version; 23 - hash = "sha256-NMNlDEUpwKUywzhXhxlNX7NiE+6wOov2Yt8nTfbKTNI="; 23 + hash = "sha256-Y+oG2NF4Vsklp1W22Xv+XrkY6vwn23FkzAXG/5828Og="; 24 24 }; 25 25 26 26 mvnParameters = "-Dmaven.test.skip=true -Plinux"; 27 - mvnHash = "sha256-cmwU9k7TRRJ07bT1EmY3pIBkvvqmFyE7WJeVL7VFDyc="; 27 + mvnHash = "sha256-cXmnJHgKW6SGnhHFuFJP/DKNmFacfHbC3nQ2uVdIvUE="; 28 28 29 29 preBuild = '' 30 30 VERSION=${version}
+2
pkgs/top-level/all-packages.nix
··· 41457 41457 41458 41458 xpad = callPackage ../applications/misc/xpad { }; 41459 41459 41460 + xpipe = callPackage ../applications/networking/xpipe { }; 41461 + 41460 41462 xsane = callPackage ../applications/graphics/sane/xsane.nix { }; 41461 41463 41462 41464 xsser = python3Packages.callPackage ../tools/security/xsser { };
+1
pkgs/top-level/python-aliases.nix
··· 342 342 pymyq = python-myq; # added 2023-10-20 343 343 python-myq = throw "python-myq has been removed, as the service provider has decided to block its API requests"; # added 2023-12-07 344 344 pyqt4 = throw "pyqt4 has been removed, because it depended on the long EOL qt4"; # added 2022-06-09 345 + pyqt5_with_qtwebkit = pyqt5-webkit; # added 2024-01-07 345 346 pyramid_beaker = pyramid-beaker; # added 2023-08-23 346 347 pyramid_chameleon = pyramid-chameleon; # added 2023-08-23 347 348 pyramid_exclog = pyramid-exclog; # added 2023-08-24
+6 -2
pkgs/top-level/python-packages.nix
··· 1487 1487 1488 1488 bip32 = callPackage ../development/python-modules/bip32 { }; 1489 1489 1490 + birch = callPackage ../development/python-modules/birch { }; 1491 + 1490 1492 bitarray = callPackage ../development/python-modules/bitarray { }; 1491 1493 1492 1494 bitbox02 = callPackage ../development/python-modules/bitbox02 { }; ··· 11010 11008 }; 11011 11009 11012 11010 /* 11013 - `pyqt5_with_qtwebkit` should not be used by python libraries in 11011 + `pyqt5-webkit` should not be used by python libraries in 11014 11012 pkgs/development/python-modules/*. Putting this attribute in 11015 11013 `propagatedBuildInputs` may cause collisions. 11016 11014 */ 11017 - pyqt5_with_qtwebkit = self.pyqt5.override { 11015 + pyqt5-webkit = self.pyqt5.override { 11018 11016 withWebKit = true; 11019 11017 }; 11020 11018 ··· 13815 13813 stravalib = callPackage ../development/python-modules/stravalib { }; 13816 13814 13817 13815 strawberry-graphql = callPackage ../development/python-modules/strawberry-graphql { }; 13816 + 13817 + strct = callPackage ../development/python-modules/strct { }; 13818 13818 13819 13819 streamdeck = callPackage ../development/python-modules/streamdeck { }; 13820 13820