treewide: Format all Nix files
Format all Nix files using the officially approved formatter, making the CI check introduced in the previous commit succeed: nix-build ci -A fmt.check This is the next step of the of the [implementation](https://github.com/NixOS/nixfmt/issues/153) of the accepted [RFC 166](https://github.com/NixOS/rfcs/pull/166). This commit will lead to merge conflicts for a number of PRs, up to an estimated ~1100 (~33%) among the PRs with activity in the past 2 months, but that should be lower than what it would be without the previous [partial treewide format](https://github.com/NixOS/nixpkgs/pull/322537). Merge conflicts caused by this commit can now automatically be resolved while rebasing using the [auto-rebase script](https://github.com/NixOS/nixpkgs/tree/8616af08d915377bd930395f3b700a0e93d08728/maintainers/scripts/auto-rebase). If you run into any problems regarding any of this, please reach out to the [formatting team](https://nixos.org/community/teams/formatting/) by pinging @NixOS/nix-formatting.
This commit is contained in:
@@ -1,100 +1,164 @@
|
||||
{ lib, fetchgit, fetchzip }:
|
||||
{
|
||||
lib,
|
||||
fetchgit,
|
||||
fetchzip,
|
||||
}:
|
||||
|
||||
lib.makeOverridable (
|
||||
{ owner, repo
|
||||
, tag ? null
|
||||
, rev ? null
|
||||
, name ? "source"
|
||||
, fetchSubmodules ? false, leaveDotGit ? null
|
||||
, deepClone ? false, private ? false, forceFetchGit ? false
|
||||
, fetchLFS ? false
|
||||
, sparseCheckout ? []
|
||||
, githubBase ? "github.com", varPrefix ? null
|
||||
, meta ? { }
|
||||
, ... # For hash agility
|
||||
}@args:
|
||||
{
|
||||
owner,
|
||||
repo,
|
||||
tag ? null,
|
||||
rev ? null,
|
||||
name ? "source",
|
||||
fetchSubmodules ? false,
|
||||
leaveDotGit ? null,
|
||||
deepClone ? false,
|
||||
private ? false,
|
||||
forceFetchGit ? false,
|
||||
fetchLFS ? false,
|
||||
sparseCheckout ? [ ],
|
||||
githubBase ? "github.com",
|
||||
varPrefix ? null,
|
||||
meta ? { },
|
||||
... # For hash agility
|
||||
}@args:
|
||||
|
||||
assert (lib.assertMsg (lib.xor (tag == null) (rev == null)) "fetchFromGitHub requires one of either `rev` or `tag` to be provided (not both).");
|
||||
|
||||
let
|
||||
|
||||
position = (if args.meta.description or null != null
|
||||
then builtins.unsafeGetAttrPos "description" args.meta
|
||||
else if tag != null then
|
||||
builtins.unsafeGetAttrPos "tag" args
|
||||
else
|
||||
builtins.unsafeGetAttrPos "rev" args
|
||||
assert (
|
||||
lib.assertMsg (lib.xor (tag == null) (
|
||||
rev == null
|
||||
)) "fetchFromGitHub requires one of either `rev` or `tag` to be provided (not both)."
|
||||
);
|
||||
baseUrl = "https://${githubBase}/${owner}/${repo}";
|
||||
newMeta = meta // {
|
||||
homepage = meta.homepage or baseUrl;
|
||||
} // lib.optionalAttrs (position != null) {
|
||||
# to indicate where derivation originates, similar to make-derivation.nix's mkDerivation
|
||||
position = "${position.file}:${toString position.line}";
|
||||
};
|
||||
passthruAttrs = removeAttrs args [ "owner" "repo" "tag" "rev" "fetchSubmodules" "forceFetchGit" "private" "githubBase" "varPrefix" ];
|
||||
varBase = "NIX${lib.optionalString (varPrefix != null) "_${varPrefix}"}_GITHUB_PRIVATE_";
|
||||
useFetchGit = fetchSubmodules || (leaveDotGit == true) || deepClone || forceFetchGit || fetchLFS || (sparseCheckout != []);
|
||||
# We prefer fetchzip in cases we don't need submodules as the hash
|
||||
# is more stable in that case.
|
||||
fetcher =
|
||||
if useFetchGit then fetchgit
|
||||
# fetchzip may not be overridable when using external tools, for example nix-prefetch
|
||||
else if fetchzip ? override then fetchzip.override { withUnzip = false; }
|
||||
else fetchzip;
|
||||
privateAttrs = lib.optionalAttrs private {
|
||||
netrcPhase =
|
||||
# When using private repos:
|
||||
# - Fetching with git works using https://github.com but not with the GitHub API endpoint
|
||||
# - Fetching a tarball from a private repo requires to use the GitHub API endpoint
|
||||
let machineName = if githubBase == "github.com" && !useFetchGit then "api.github.com" else githubBase;
|
||||
in ''
|
||||
if [ -z "''$${varBase}USERNAME" -o -z "''$${varBase}PASSWORD" ]; then
|
||||
echo "Error: Private fetchFromGitHub requires the nix building process (nix-daemon in multi user mode) to have the ${varBase}USERNAME and ${varBase}PASSWORD env vars set." >&2
|
||||
exit 1
|
||||
fi
|
||||
cat > netrc <<EOF
|
||||
machine ${machineName}
|
||||
login ''$${varBase}USERNAME
|
||||
password ''$${varBase}PASSWORD
|
||||
EOF
|
||||
'';
|
||||
netrcImpureEnvVars = [ "${varBase}USERNAME" "${varBase}PASSWORD" ];
|
||||
};
|
||||
|
||||
gitRepoUrl = "${baseUrl}.git";
|
||||
let
|
||||
|
||||
revWithTag = if tag != null then "refs/tags/${tag}" else rev;
|
||||
|
||||
fetcherArgs = (if useFetchGit
|
||||
then {
|
||||
inherit tag rev deepClone fetchSubmodules sparseCheckout fetchLFS; url = gitRepoUrl;
|
||||
} // lib.optionalAttrs (leaveDotGit != null) { inherit leaveDotGit; }
|
||||
else {
|
||||
# Use the API endpoint for private repos, as the archive URI doesn't
|
||||
# support access with GitHub's fine-grained access tokens.
|
||||
#
|
||||
# Use the archive URI for non-private repos, as the API endpoint has
|
||||
# relatively restrictive rate limits for unauthenticated users.
|
||||
url =
|
||||
if private then
|
||||
let
|
||||
endpoint = "/repos/${owner}/${repo}/tarball/${revWithTag}";
|
||||
in
|
||||
if githubBase == "github.com" then
|
||||
"https://api.github.com${endpoint}"
|
||||
else
|
||||
"https://${githubBase}/api/v3${endpoint}"
|
||||
else
|
||||
"${baseUrl}/archive/${revWithTag}.tar.gz";
|
||||
extension = "tar.gz";
|
||||
|
||||
passthru = {
|
||||
inherit gitRepoUrl;
|
||||
position = (
|
||||
if args.meta.description or null != null then
|
||||
builtins.unsafeGetAttrPos "description" args.meta
|
||||
else if tag != null then
|
||||
builtins.unsafeGetAttrPos "tag" args
|
||||
else
|
||||
builtins.unsafeGetAttrPos "rev" args
|
||||
);
|
||||
baseUrl = "https://${githubBase}/${owner}/${repo}";
|
||||
newMeta =
|
||||
meta
|
||||
// {
|
||||
homepage = meta.homepage or baseUrl;
|
||||
}
|
||||
// lib.optionalAttrs (position != null) {
|
||||
# to indicate where derivation originates, similar to make-derivation.nix's mkDerivation
|
||||
position = "${position.file}:${toString position.line}";
|
||||
};
|
||||
}
|
||||
) // privateAttrs // passthruAttrs // { inherit name; };
|
||||
in
|
||||
passthruAttrs = removeAttrs args [
|
||||
"owner"
|
||||
"repo"
|
||||
"tag"
|
||||
"rev"
|
||||
"fetchSubmodules"
|
||||
"forceFetchGit"
|
||||
"private"
|
||||
"githubBase"
|
||||
"varPrefix"
|
||||
];
|
||||
varBase = "NIX${lib.optionalString (varPrefix != null) "_${varPrefix}"}_GITHUB_PRIVATE_";
|
||||
useFetchGit =
|
||||
fetchSubmodules
|
||||
|| (leaveDotGit == true)
|
||||
|| deepClone
|
||||
|| forceFetchGit
|
||||
|| fetchLFS
|
||||
|| (sparseCheckout != [ ]);
|
||||
# We prefer fetchzip in cases we don't need submodules as the hash
|
||||
# is more stable in that case.
|
||||
fetcher =
|
||||
if useFetchGit then
|
||||
fetchgit
|
||||
# fetchzip may not be overridable when using external tools, for example nix-prefetch
|
||||
else if fetchzip ? override then
|
||||
fetchzip.override { withUnzip = false; }
|
||||
else
|
||||
fetchzip;
|
||||
privateAttrs = lib.optionalAttrs private {
|
||||
netrcPhase =
|
||||
# When using private repos:
|
||||
# - Fetching with git works using https://github.com but not with the GitHub API endpoint
|
||||
# - Fetching a tarball from a private repo requires to use the GitHub API endpoint
|
||||
let
|
||||
machineName = if githubBase == "github.com" && !useFetchGit then "api.github.com" else githubBase;
|
||||
in
|
||||
''
|
||||
if [ -z "''$${varBase}USERNAME" -o -z "''$${varBase}PASSWORD" ]; then
|
||||
echo "Error: Private fetchFromGitHub requires the nix building process (nix-daemon in multi user mode) to have the ${varBase}USERNAME and ${varBase}PASSWORD env vars set." >&2
|
||||
exit 1
|
||||
fi
|
||||
cat > netrc <<EOF
|
||||
machine ${machineName}
|
||||
login ''$${varBase}USERNAME
|
||||
password ''$${varBase}PASSWORD
|
||||
EOF
|
||||
'';
|
||||
netrcImpureEnvVars = [
|
||||
"${varBase}USERNAME"
|
||||
"${varBase}PASSWORD"
|
||||
];
|
||||
};
|
||||
|
||||
fetcher fetcherArgs // { meta = newMeta; inherit owner repo tag; rev = revWithTag; }
|
||||
gitRepoUrl = "${baseUrl}.git";
|
||||
|
||||
revWithTag = if tag != null then "refs/tags/${tag}" else rev;
|
||||
|
||||
fetcherArgs =
|
||||
(
|
||||
if useFetchGit then
|
||||
{
|
||||
inherit
|
||||
tag
|
||||
rev
|
||||
deepClone
|
||||
fetchSubmodules
|
||||
sparseCheckout
|
||||
fetchLFS
|
||||
;
|
||||
url = gitRepoUrl;
|
||||
}
|
||||
// lib.optionalAttrs (leaveDotGit != null) { inherit leaveDotGit; }
|
||||
else
|
||||
{
|
||||
# Use the API endpoint for private repos, as the archive URI doesn't
|
||||
# support access with GitHub's fine-grained access tokens.
|
||||
#
|
||||
# Use the archive URI for non-private repos, as the API endpoint has
|
||||
# relatively restrictive rate limits for unauthenticated users.
|
||||
url =
|
||||
if private then
|
||||
let
|
||||
endpoint = "/repos/${owner}/${repo}/tarball/${revWithTag}";
|
||||
in
|
||||
if githubBase == "github.com" then
|
||||
"https://api.github.com${endpoint}"
|
||||
else
|
||||
"https://${githubBase}/api/v3${endpoint}"
|
||||
else
|
||||
"${baseUrl}/archive/${revWithTag}.tar.gz";
|
||||
extension = "tar.gz";
|
||||
|
||||
passthru = {
|
||||
inherit gitRepoUrl;
|
||||
};
|
||||
}
|
||||
)
|
||||
// privateAttrs
|
||||
// passthruAttrs
|
||||
// {
|
||||
inherit name;
|
||||
};
|
||||
in
|
||||
|
||||
fetcher fetcherArgs
|
||||
// {
|
||||
meta = newMeta;
|
||||
inherit owner repo tag;
|
||||
rev = revWithTag;
|
||||
}
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user