···13131414my $ua = LWP::UserAgent->new();
15151616+if (!defined $ENV{GH_TOKEN}) {
1717+ die "Set GH_TOKEN before running this script";
1818+}
1919+1620keys %$maintainers_json; # reset the internal iterator so a prior each() doesn't affect the loop
1721while(my($k, $v) = each %$maintainers_json) {
1822 my $current_user = %$v{'github'};
1923 if (!defined $current_user) {
2024 print "$k has no github handle\n";
2121- next;
2225 }
2326 my $github_id = %$v{'githubId'};
2427 if (!defined $github_id) {
···3740 sleep($ratelimit_reset - time() + 5);
3841 }
3942 if ($resp->code != 200) {
4040- print $current_user . " likely deleted their github account\n";
4343+ print "$k likely deleted their github account\n";
4144 next;
4245 }
4346 my $resp_json = from_json($resp->content);
4447 my $api_user = %$resp_json{"login"};
4545- if (lc($current_user) ne lc($api_user)) {
4646- print $current_user . " is now known on github as " . $api_user . ". Editing maintainer-list.nix…\n";
4848+ if (!defined $current_user) {
4949+ print "$k is known on github as $api_user.\n";
5050+ }
5151+ elsif (lc($current_user) ne lc($api_user)) {
5252+ print "$k is now known on github as $api_user. Editing maintainer-list.nix…\n";
4753 my $file = path($maintainers_list_nix);
4854 my $data = $file->slurp_utf8;
4955 $data =~ s/github = "$current_user";$/github = "$api_user";/m;
+4
nixos/doc/manual/release-notes/rl-2311.section.md
···100100101101- [netclient](https://github.com/gravitl/netclient), an automated WireGuard® Management Client. Available as [services.netclient](#opt-services.netclient.enable).
102102103103+- [trunk-ng](https://github.com/ctron/trunk), A fork of `trunk`: Build, bundle & ship your Rust WASM application to the web
104104+103105## Backward Incompatibilities {#sec-release-23.11-incompatibilities}
104106105107- `network-online.target` has been fixed to no longer time out for systems with `networking.useDHCP = true` and `networking.useNetworkd = true`.
···440442 `virtualisation.fileSystems."/".autoFormat = true;`.
441443442444- `python3.pkgs.flitBuildHook` has been removed. Use `flit-core` and `format = "pyproject"` instead.
445445+446446+- The `extend` function of `llvmPackages` has been removed due it coming from the `tools` attrset thus only extending the `tool` attrset. A possible replacement is to construct the set from `libraries` and `tools`, or patch nixpkgs.
443447444448- The `qemu-vm.nix` module now supports disabling overriding `fileSystems` with
445449 `virtualisation.fileSystems`. This enables the user to boot VMs from
···3939# just for human consumption. Revision is just an integer that gets increased
4040# by one every (stable or unstable) release.
4141revision="${snap_info[0]}"
4242-sha512="${snap_info[1]}"
4242+# We need to escape the slashes
4343+hash="$(nix-hash --to-sri --type sha512 ${snap_info[1]} | sed 's|/|\\/|g')"
4344upstream_version="${snap_info[2]}"
4445last_updated="${snap_info[3]}"
4545-4646echo "Latest $channel release is $upstream_version from $last_updated."
4747-4847#
4948# read the current spotify version from the currently *committed* nix expression
5049#
···7069# search-and-replace revision, hash and version
7170sed --regexp-extended \
7271 -e 's/rev\s*=\s*"[0-9]+"\s*;/rev = "'"${revision}"'";/' \
7373- -e 's/sha512\s*=\s*"[^"]*"\s*;/sha512 = "'"${sha512}"'";/' \
7272+ -e 's/hash\s*=\s*"[^"]*"\s*;/hash = "'"${hash}"'";/' \
7473 -e 's/version\s*=\s*".*"\s*;/version = "'"${upstream_version}"'";/' \
7574 -i "$spotify_nix"
7675
···3636 wrapQtApp "$out/bin/fs-uae-launcher" \
3737 --set PYTHONPATH "$PYTHONPATH"
38383939- # fs-uae-launcher search side by side for fs-uae
3939+ # fs-uae-launcher search side by side for executables and shared files
4040 # see $src/fsgs/plugins/pluginexecutablefinder.py#find_executable
4141 ln -s ${fsuae}/bin/fs-uae $out/bin
4242 ln -s ${fsuae}/bin/fs-uae-device-helper $out/bin
4343+ ln -s ${fsuae}/share/fs-uae $out/share/fs-uae
4344 '';
44454546 meta = {
+3-3
pkgs/applications/emulators/ryujinx/default.nix
···28282929buildDotnetModule rec {
3030 pname = "ryujinx";
3131- version = "1.1.1012"; # Based off of the official github actions builds: https://github.com/Ryujinx/Ryujinx/actions/workflows/release.yml
3131+ version = "1.1.1044"; # Based off of the official github actions builds: https://github.com/Ryujinx/Ryujinx/actions/workflows/release.yml
32323333 src = fetchFromGitHub {
3434 owner = "Ryujinx";
3535 repo = "Ryujinx";
3636- rev = "e6700b314f1384f015666767baf9ea1d8411e330";
3737- sha256 = "1szgmvwril7zwfbvqz850xavrk70i56i1yyqfh9mxpxlc3n9xxzr";
3636+ rev = "7afae8c69947f7a5fa9a55cee36381aef372dfba";
3737+ sha256 = "1kf95sbb4p50b6bah75sd95660kk2a7cbjwgvqv4c4cal6c126g7";
3838 };
39394040 dotnet-sdk = dotnetCorePackages.sdk_7_0;
···49495050stdenv.mkDerivation (finalAttrs: {
5151 pname = "uhd";
5252- # UHD seems to use three different version number styles: x.y.z, xxx_yyy_zzz
5353- # and xxx.yyy.zzz. Hrmpf... style keeps changing
5454- version = "4.4.0.0";
5252+ # NOTE: Use the following command to update the package, and the uhdImageSrc attribute:
5353+ #
5454+ # nix-shell maintainers/scripts/update.nix --argstr package uhd --argstr commit true
5555+ #
5656+ version = "4.5.0.0";
55575658 outputs = [ "out" "dev" ];
5759···5961 owner = "EttusResearch";
6062 repo = "uhd";
6163 rev = "v${finalAttrs.version}";
6262- sha256 = "sha256-khVOHlvacZc4EMg4m55rxEqPvLY1xURpAfOW905/3jg=";
6464+ # The updateScript relies on the `src` using `hash`, and not `sha256. To
6565+ # update the correct hash for the `src` vs the `uhdImagesSrc`
6666+ hash = "sha256-0EqMBaQiNr8PE542YNkPvX3o1HhnhrO0Kz1euphY6Ps=";
6367 };
6468 # Firmware images are downloaded (pre-built) from the respective release on Github
6569 uhdImagesSrc = fetchurl {
6670 url = "https://github.com/EttusResearch/uhd/releases/download/v${finalAttrs.version}/uhd-images_${finalAttrs.version}.tar.xz";
6767- sha256 = "V8ldW8bvYWbrDAvpWpHcMeLf9YvF8PIruDAyNK/bru4=";
7171+ # Please don't convert this to a hash, in base64, see comment near src's
7272+ # hash.
7373+ sha256 = "13cn41wv7vldk4vx7vy3jbb3wb3a5vpfg3ay893klpi6vzxc1dly";
6874 };
6969- # TODO: Add passthru.updateScript that will update both of the above hashes...
7575+ passthru = {
7676+ updateScript = [
7777+ ./update.sh
7878+ # Pass it this file name as argument
7979+ (builtins.unsafeGetAttrPos "pname" finalAttrs.finalPackage).file
8080+ ];
8181+ };
70827183 cmakeFlags = [
7284 "-DENABLE_LIBUHD=ON"
+27
pkgs/applications/radio/uhd/update.sh
···11+#!/usr/bin/env nix-shell
22+#!nix-shell -i bash -p jq nix nix-prefetch-github
33+44+set -euo pipefail
55+echoerr() { echo "$@" 1>&2; }
66+77+fname="$1"
88+echoerr got fname $fname
99+shift
1010+latest_release=$(curl --silent https://api.github.com/repos/EttusResearch/uhd/releases/latest)
1111+version=$(jq -r '.tag_name' <<<"$latest_release" | cut -c2-)
1212+# Update version, if needed
1313+if grep -q 'version = "'$version $fname; then
1414+ echoerr Current version $version is the latest available
1515+ exit 0;
1616+fi
1717+echoerr got version $version
1818+sed -i -E 's/(version = ").*(";)/\1'$version'\2/g' $fname
1919+# Verify the sed command above did not fail
2020+grep -q $version $fname
2121+# Update srcHash
2222+srcHash="$(nix-prefetch-github EttusResearch uhd --rev v${version} | jq --raw-output .hash)"
2323+sed -i -E 's#(hash = ").*(";)#\1'$srcHash'\2#g' $fname
2424+grep -q $srcHash $fname
2525+imageHash="$(nix-prefetch-url https://github.com/EttusResearch/uhd/releases/download/v${version}/uhd-images_${version}.tar.xz)"
2626+sed -i -E 's#(sha256 = ").*(";)#\1'$imageHash'\2#g' $fname
2727+grep -q $imageHash $fname
···2525, systemdMinimal
2626, elogind
2727, buildPackages
2828-, withIntrospection ? stdenv.hostPlatform.emulatorAvailable buildPackages
2828+, withIntrospection ? lib.meta.availableOn stdenv.hostPlatform gobject-introspection && stdenv.hostPlatform.emulatorAvailable buildPackages
2929# A few tests currently fail on musl (polkitunixusertest, polkitunixgrouptest, polkitidentitytest segfault).
3030# Not yet investigated; it may be due to the "Make netgroup support optional"
3131# patch not updating the tests correctly yet, or doing something wrong,
···11-WGET_ARGS=( https://download.qt.io/official_releases/qt/6.5/6.5.3/submodules/ -A '*.tar.xz' )
11+WGET_ARGS=( https://download.qt.io/official_releases/qt/6.6/6.6.0/submodules/ -A '*.tar.xz' )
···11-From 4e8c14f1af9c332826e0454f4fd63e541edbaf5c Mon Sep 17 00:00:00 2001
11+From 880fe5653a86d8091f3f577977f8af93552c48fd Mon Sep 17 00:00:00 2001
22From: Nick Cao <nickcao@nichi.co>
33Date: Tue, 21 Mar 2023 15:48:49 +0800
44-Subject: [PATCH 5/6] qtbase: deal with a font face at index 0 as Regular for
44+Subject: [PATCH 05/11] qtbase: deal with a font face at index 0 as Regular for
55 Variable fonts
6677Reference: https://bugreports.qt.io/browse/QTBUG-111994
···2222 FcObjectSetDestroy(os);
2323 FcPatternDestroy(pattern);
2424--
2525-2.39.2
2525+2.42.0
2626
···11-From 32df59bea18bebc18d6d308750e88be325522d2e Mon Sep 17 00:00:00 2001
22-From: =?UTF-8?q?Juan=20Pedro=20Bol=C3=ADvar=20Puente?= <raskolnikov@gnu.org>
33-Date: Thu, 10 Aug 2023 14:15:34 +0200
44-Subject: [PATCH 2/3] Check in the QML folder of this library does actually
55- exist
11+From 617d27ee91aaa59c59c4f3a2cca7bab8167d9f5f Mon Sep 17 00:00:00 2001
22+From: Nick Cao <nickcao@nichi.co>
33+Date: Tue, 10 Oct 2023 10:17:00 -0400
44+Subject: [PATCH 11/11] qtbase: check in the QML folder of this library does
55+ actually exist
6677In a modularized installation, this folder will be the location where
88`qtbase` itself is installed, but `qtbase` does not have any QML
···1212 1 file changed, 5 insertions(+), 2 deletions(-)
13131414diff --git a/src/tools/macdeployqt/shared/shared.cpp b/src/tools/macdeployqt/shared/shared.cpp
1515-index b8fcc9c9bd..676d34d545 100644
1515+index 48979195f40..8415680ecda 100644
1616--- a/src/tools/macdeployqt/shared/shared.cpp
1717+++ b/src/tools/macdeployqt/shared/shared.cpp
1818-@@ -1290,9 +1290,12 @@ bool deployQmlImports(const QString &appBundlePath, DeploymentInfo deploymentInf
1818+@@ -1293,9 +1293,12 @@ bool deployQmlImports(const QString &appBundlePath, DeploymentInfo deploymentInf
1919 }
2020 for (const QString &importPath : qmlImportPaths)
2121 argumentList << "-importPath" << importPath;
···2828+ argumentList.append(qmlImportsPath);
2929+ }
30303131- // run qmlimportscanner
3232- QProcess qmlImportScanner;
3131+ // In a modularized installation of qt as we have in Nix, instead, we will
3232+ // read the paths from the environment, as they are spread in multiple
3333--
3434-2.26.2
3434+2.42.0
3535
···1212 sed -i 's,set --, set -x; set --,' Makefile
1313 '';
1414 pname = "tinycdb";
1515- version = "0.78";
1515+ version = "0.80";
1616 # In general, static library (.a) goes to "dev", shared (.so) to
1717 # "lib". In case of static build, there is no .so library, so "lib"
1818 # output is useless and empty.
···35353636 src = fetchurl {
3737 url = "http://www.corpit.ru/mjt/tinycdb/${pname}-${version}.tar.gz";
3838- sha256 = "0g6n1rr3lvyqc85g6z44lw9ih58f2k1i3v18yxlqvnla5m1qyrsh";
3838+ sha256 = "sha256-wyG5BekCwsqZo/+Kjd39iCMkf+Ht7IpLuF+Dhpxjn7g=";
3939 };
40404141 meta = with lib; {
···1111- Command line: `nixpkgs-check-by-name <NIXPKGS>`
1212- Arguments:
1313 - `<NIXPKGS>`: The path to the Nixpkgs to check
1414+ - `--version <VERSION>`: The version of the checks to perform.
1515+1616+ Possible values:
1717+ - `v0` (default)
1818+ - `v1`
1919+2020+ See [validation](#validity-checks) for the differences.
1421- Exit code:
1522 - `0`: If the [validation](#validity-checks) is successful
1623 - `1`: If the [validation](#validity-checks) is not successful
···35423643### Nix evaluation checks
3744- `pkgs.${name}` is defined as `callPackage pkgs/by-name/${shard}/${name}/package.nix args` for some `args`.
4545+ - **Only after --version v1**: If `pkgs.${name}` is not auto-called from `pkgs/by-name`, `args` must not be empty
3846- `pkgs.lib.isDerivation pkgs.${name}` is `true`.
39474048## Development
+35-12
pkgs/test/nixpkgs-check-by-name/src/eval.nix
···1818 callPackage = fn: args:
1919 let
2020 result = super.callPackage fn args;
2121+ variantInfo._attributeVariant = {
2222+ # These names are used by the deserializer on the Rust side
2323+ CallPackage.path =
2424+ if builtins.isPath fn then
2525+ toString fn
2626+ else
2727+ null;
2828+ CallPackage.empty_arg =
2929+ args == { };
3030+ };
2131 in
2232 if builtins.isAttrs result then
2333 # If this was the last overlay to be applied, we could just only return the `_callPackagePath`,
2434 # but that's not the case because stdenv has another overlays on top of user-provided ones.
2535 # So to not break the stdenv build we need to return the mostly proper result here
2626- result // {
2727- _callPackagePath = fn;
2828- }
3636+ result // variantInfo
2937 else
3038 # It's very rare that callPackage doesn't return an attribute set, but it can occur.
3131- {
3232- _callPackagePath = fn;
3939+ variantInfo;
4040+4141+ _internalCallByNamePackageFile = file:
4242+ let
4343+ result = super._internalCallByNamePackageFile file;
4444+ variantInfo._attributeVariant = {
4545+ # This name is used by the deserializer on the Rust side
4646+ AutoCalled = null;
3347 };
4848+ in
4949+ if builtins.isAttrs result then
5050+ # If this was the last overlay to be applied, we could just only return the `_callPackagePath`,
5151+ # but that's not the case because stdenv has another overlays on top of user-provided ones.
5252+ # So to not break the stdenv build we need to return the mostly proper result here
5353+ result // variantInfo
5454+ else
5555+ # It's very rare that callPackage doesn't return an attribute set, but it can occur.
5656+ variantInfo;
3457 };
35583659 pkgs = import nixpkgsPath {
···3962 overlays = [ callPackageOverlay ];
4063 };
41644242- attrInfo = attr: {
6565+ attrInfo = attr:
6666+ let
6767+ value = pkgs.${attr};
6868+ in
6969+ {
4370 # These names are used by the deserializer on the Rust side
4444- call_package_path =
4545- if pkgs.${attr} ? _callPackagePath && builtins.isPath pkgs.${attr}._callPackagePath then
4646- toString pkgs.${attr}._callPackagePath
4747- else
4848- null;
4949- is_derivation = pkgs.lib.isDerivation pkgs.${attr};
7171+ variant = value._attributeVariant or { Other = null; };
7272+ is_derivation = pkgs.lib.isDerivation value;
5073 };
51745275 attrInfos = builtins.listToAttrs (map (name: {
+41-9
pkgs/test/nixpkgs-check-by-name/src/eval.rs
···11use crate::structure;
22use crate::utils::ErrorWriter;
33+use crate::Version;
34use std::path::Path;
4556use anyhow::Context;
···1314/// Attribute set of this structure is returned by eval.nix
1415#[derive(Deserialize)]
1516struct AttributeInfo {
1616- call_package_path: Option<PathBuf>,
1717+ variant: AttributeVariant,
1718 is_derivation: bool,
1819}
19202121+#[derive(Deserialize)]
2222+enum AttributeVariant {
2323+ /// The attribute is auto-called as pkgs.callPackage using pkgs/by-name,
2424+ /// and it is not overridden by a definition in all-packages.nix
2525+ AutoCalled,
2626+ /// The attribute is defined as a pkgs.callPackage <path> <args>,
2727+ /// and overridden by all-packages.nix
2828+ CallPackage {
2929+ /// The <path> argument or None if it's not a path
3030+ path: Option<PathBuf>,
3131+ /// true if <args> is { }
3232+ empty_arg: bool,
3333+ },
3434+ /// The attribute is not defined as pkgs.callPackage
3535+ Other,
3636+}
3737+2038const EXPR: &str = include_str!("eval.nix");
21392240/// Check that the Nixpkgs attribute values corresponding to the packages in pkgs/by-name are
2341/// of the form `callPackage <package_file> { ... }`.
2442/// See the `eval.nix` file for how this is achieved on the Nix side
2543pub fn check_values<W: io::Write>(
4444+ version: Version,
2645 error_writer: &mut ErrorWriter<W>,
2746 nixpkgs: &structure::Nixpkgs,
2847 eval_accessible_paths: Vec<&Path>,
···97116 let absolute_package_file = nixpkgs.path.join(&relative_package_file);
9811799118 if let Some(attribute_info) = actual_files.get(package_name) {
100100- let is_expected_file =
101101- if let Some(call_package_path) = &attribute_info.call_package_path {
102102- absolute_package_file == *call_package_path
103103- } else {
104104- false
105105- };
119119+ let valid = match &attribute_info.variant {
120120+ AttributeVariant::AutoCalled => true,
121121+ AttributeVariant::CallPackage { path, empty_arg } => {
122122+ let correct_file = if let Some(call_package_path) = path {
123123+ absolute_package_file == *call_package_path
124124+ } else {
125125+ false
126126+ };
127127+ // Only check for the argument to be non-empty if the version is V1 or
128128+ // higher
129129+ let non_empty = if version >= Version::V1 {
130130+ !empty_arg
131131+ } else {
132132+ true
133133+ };
134134+ correct_file && non_empty
135135+ }
136136+ AttributeVariant::Other => false,
137137+ };
106138107107- if !is_expected_file {
139139+ if !valid {
108140 error_writer.write(&format!(
109109- "pkgs.{package_name}: This attribute is not defined as `pkgs.callPackage {} {{ ... }}`.",
141141+ "pkgs.{package_name}: This attribute is manually defined (most likely in pkgs/top-level/all-packages.nix), which is only allowed if the definition is of the form `pkgs.callPackage {} {{ ... }}` with a non-empty second argument.",
110142 relative_package_file.display()
111143 ))?;
112144 continue;
+21-5
pkgs/test/nixpkgs-check-by-name/src/main.rs
···44mod utils;
5566use anyhow::Context;
77-use clap::Parser;
77+use clap::{Parser, ValueEnum};
88use colored::Colorize;
99use std::io;
1010use std::path::{Path, PathBuf};
···1515/// Program to check the validity of pkgs/by-name
1616#[derive(Parser, Debug)]
1717#[command(about)]
1818-struct Args {
1818+pub struct Args {
1919 /// Path to nixpkgs
2020 nixpkgs: PathBuf,
2121+ /// The version of the checks
2222+ /// Increasing this may cause failures for a Nixpkgs that succeeded before
2323+ /// TODO: Remove default once Nixpkgs CI passes this argument
2424+ #[arg(long, value_enum, default_value_t = Version::V0)]
2525+ version: Version,
2626+}
2727+2828+/// The version of the checks
2929+#[derive(Debug, Clone, PartialEq, PartialOrd, ValueEnum)]
3030+pub enum Version {
3131+ /// Initial version
3232+ V0,
3333+ /// Empty argument check
3434+ V1,
2135}
22362337fn main() -> ExitCode {
2438 let args = Args::parse();
2525- match check_nixpkgs(&args.nixpkgs, vec![], &mut io::stderr()) {
3939+ match check_nixpkgs(&args.nixpkgs, args.version, vec![], &mut io::stderr()) {
2640 Ok(true) => {
2741 eprintln!("{}", "Validated successfully".green());
2842 ExitCode::SUCCESS
···5367/// - `Ok(true)` if the structure is valid, nothing will have been written to `error_writer`.
5468pub fn check_nixpkgs<W: io::Write>(
5569 nixpkgs_path: &Path,
7070+ version: Version,
5671 eval_accessible_paths: Vec<&Path>,
5772 error_writer: &mut W,
5873) -> anyhow::Result<bool> {
···75907691 if error_writer.empty {
7792 // Only if we could successfully parse the structure, we do the semantic checks
7878- eval::check_values(&mut error_writer, &nixpkgs, eval_accessible_paths)?;
9393+ eval::check_values(version, &mut error_writer, &nixpkgs, eval_accessible_paths)?;
7994 references::check_references(&mut error_writer, &nixpkgs)?;
8095 }
8196 }
···86101mod tests {
87102 use crate::check_nixpkgs;
88103 use crate::structure;
104104+ use crate::Version;
89105 use anyhow::Context;
90106 use std::fs;
91107 use std::path::Path;
···174190 // We don't want coloring to mess up the tests
175191 let writer = temp_env::with_var("NO_COLOR", Some("1"), || -> anyhow::Result<_> {
176192 let mut writer = vec![];
177177- check_nixpkgs(&path, vec![&extra_nix_path], &mut writer)
193193+ check_nixpkgs(&path, Version::V1, vec![&extra_nix_path], &mut writer)
178194 .context(format!("Failed test case {name}"))?;
179195 Ok(writer)
180196 })?;
···75757676 # Turns autoCalledPackageFiles into an overlay that `callPackage`'s all of them
7777 autoCalledPackages = self: super:
7878- builtins.mapAttrs (name: file:
7979- self.callPackage file { }
8080- ) autoCalledPackageFiles;
7878+ {
7979+ # Needed to be able to detect empty arguments in all-packages.nix
8080+ # See a more detailed description in pkgs/top-level/by-name-overlay.nix
8181+ _internalCallByNamePackageFile = file: self.callPackage file { };
8282+ }
8383+ // builtins.mapAttrs
8484+ (name: self._internalCallByNamePackageFile)
8585+ autoCalledPackageFiles;
81868287 # A list optionally containing the `all-packages.nix` file from the test case as an overlay
8388 optionalAllPackagesOverlay =
···11-pkgs.nonDerivation: This attribute is not defined as `pkgs.callPackage pkgs/by-name/no/nonDerivation/package.nix { ... }`.
11+pkgs.nonDerivation: This attribute is manually defined (most likely in pkgs/top-level/all-packages.nix), which is only allowed if the definition is of the form `pkgs.callPackage pkgs/by-name/no/nonDerivation/package.nix { ... }` with a non-empty second argument.
···11+pkgs.nonDerivation: This attribute is manually defined (most likely in pkgs/top-level/all-packages.nix), which is only allowed if the definition is of the form `pkgs.callPackage pkgs/by-name/no/nonDerivation/package.nix { ... }` with a non-empty second argument.
···11-pkgs.nonDerivation: This attribute is not defined as `pkgs.callPackage pkgs/by-name/no/nonDerivation/package.nix { ... }`.
11+pkgs.nonDerivation: This attribute is manually defined (most likely in pkgs/top-level/all-packages.nix), which is only allowed if the definition is of the form `pkgs.callPackage pkgs/by-name/no/nonDerivation/package.nix { ... }` with a non-empty second argument.
···11-pkgs.nonDerivation: This attribute is not defined as `pkgs.callPackage pkgs/by-name/no/nonDerivation/package.nix { ... }`.
11+pkgs.nonDerivation: This attribute is manually defined (most likely in pkgs/top-level/all-packages.nix), which is only allowed if the definition is of the form `pkgs.callPackage pkgs/by-name/no/nonDerivation/package.nix { ... }` with a non-empty second argument.
···4455stdenv.mkDerivation rec {
66 pname = "argyllcms";
77- version = "2.3.1";
77+ version = "3.0.0";
8899 src = fetchzip {
1010 # Kind of flacky URL, it was reaturning 406 and inconsistent binaries for a
1111 # while on me. It might be good to find a mirror
1212 url = "https://www.argyllcms.com/Argyll_V${version}_src.zip";
1313- sha256 = "sha256-XWsubjdD1tg0o7x/aoAalemAChehWkwh4fkP2WRvhAw=";
1313+ sha256 = "sha256-nX7YwsbWqaHav22S91ZkfAXXxuFYANhAv5hTO696Dt0=";
1414 };
15151616 nativeBuildInputs = [ jam unzip ];
···2626 description = "An overlay that shows schemas for all workspaces to make navigation in sway easier.";
2727 homepage = "https://github.com/milgra/sov";
2828 license = with licenses; [ mit ];
2929- maintainers = with maintainers; [ travisdavis-ops ];
2929+ maintainers = with maintainers; [ ];
3030 platforms = platforms.linux;
3131 };
3232}
+1
pkgs/top-level/aliases.nix
···5656 ### A ###
57575858 a4term = a4; # Added 2023-10-06
5959+ aether = throw "aether has been removed from nixpkgs; upstream unmaintained, security issues"; # Added 2023-10-03
5960 airfield = throw "airfield has been removed due to being unmaintained"; # Added 2023-05-19
6061 alertmanager-bot = throw "alertmanager-bot is broken and has been archived by upstream" ; # Added 2023-07-28
6162 alsaLib = alsa-lib; # Added 2021-06-09
···4545# Currently this would be hard to measure until we have more packages
4646# and ideally https://github.com/NixOS/nix/pull/8895
4747self: super:
4848-mapAttrs (name: file:
4949- self.callPackage file { }
5050-) packageFiles
4848+{
4949+ # This attribute is necessary to allow CI to ensure that all packages defined in `pkgs/by-name`
5050+ # don't have an overriding definition in `all-packages.nix` with an empty (`{ }`) second `callPackage` argument.
5151+ # It achieves that with an overlay that modifies both `callPackage` and this attribute to signal whether `callPackage` is used
5252+ # and whether it's defined by this file here or `all-packages.nix`.
5353+ # TODO: This can be removed once `pkgs/by-name` can handle custom `callPackage` arguments without `all-packages.nix` (or any other way of achieving the same result).
5454+ # Because at that point the code in ./stage.nix can be changed to not allow definitions in `all-packages.nix` to override ones from `pkgs/by-name` anymore and throw an error if that happens instead.
5555+ _internalCallByNamePackageFile = file: self.callPackage file { };
5656+}
5757+// mapAttrs
5858+ (name: self._internalCallByNamePackageFile)
5959+ packageFiles
+1
pkgs/top-level/python-aliases.nix
···186186 imgaug = throw "imgaug has been removed as it is no longer maintained"; # added 2023-07-10
187187 intreehook = throw "intreehooks has been removed because it is obsolete as a backend-path key was added to PEP 517"; # added 2023-04-11
188188 ipaddress = throw "ipaddress has been removed because it is no longer required since python 2.7."; # added 2022-05-30
189189+ ipython_genutils = ipython-genutils; # added 2023-10-12
189190 influxgraph = throw "influxgraph has been removed because it is no longer maintained"; # added 2022-07-10
190191 itanium_demangler = itanium-demangler; # added 2022-10-17
191192 jaraco_classes = jaraco-classes; # added 2023-07-14