Merge branch 'master' into staging-next

This commit is contained in:
Wolfgang Walther
2025-11-06 12:15:27 +01:00
49 changed files with 449 additions and 1461 deletions
-12
View File
@@ -112,18 +112,6 @@ jobs:
with:
headBranch: ${{ needs.prepare.outputs.headBranch }}
reviewers:
name: Reviewers
needs: [prepare, eval]
if: |
needs.prepare.outputs.targetSha &&
!contains(fromJSON(needs.prepare.outputs.headBranch).type, 'development')
uses: ./.github/workflows/reviewers.yml
secrets:
OWNER_APP_PRIVATE_KEY: ${{ secrets.OWNER_APP_PRIVATE_KEY }}
with:
artifact-prefix: ${{ inputs.artifact-prefix }}
build:
name: Build
needs: [prepare]
-157
View File
@@ -1,157 +0,0 @@
# This workflow will request reviews from the maintainers of each package
# listed in the PR's most recent eval comparison artifact.
name: Reviewers
on:
pull_request_target:
types: [ready_for_review]
workflow_call:
inputs:
artifact-prefix:
required: true
type: string
secrets:
OWNER_APP_PRIVATE_KEY:
required: true
concurrency:
group: reviewers-${{ github.workflow }}-${{ github.event_name }}-${{ github.event.pull_request.number || github.run_id }}
cancel-in-progress: true
permissions: {}
defaults:
run:
shell: bash
jobs:
request:
runs-on: ubuntu-24.04-arm
timeout-minutes: 20
steps:
- name: Check out the PR at the base commit
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
with:
persist-credentials: false
path: trusted
sparse-checkout: ci
- name: Install Nix
uses: cachix/install-nix-action@456688f15bc354bef6d396e4a35f4f89d40bf2b7 # v31
- name: Build the requestReviews derivation
run: nix-build trusted/ci -A requestReviews
# For requesting reviewers, this job depends on a GitHub App with the following permissions:
# - Permissions:
# - Repository > Administration: read-only
# - Organization > Members: read-only
# - Repository > Pull Requests: read-write
# - Install App on this repository, setting these variables:
# - OWNER_APP_ID (variable)
# - OWNER_APP_PRIVATE_KEY (secret)
#
# Can't use the token received from permissions above, because it can't get enough permissions.
- uses: actions/create-github-app-token@67018539274d69449ef7c02e8e71183d1719ab42 # v2.1.4
if: github.event_name == 'pull_request_target' && vars.OWNER_APP_ID
id: app-token
with:
app-id: ${{ vars.OWNER_APP_ID }}
private-key: ${{ secrets.OWNER_APP_PRIVATE_KEY }}
permission-administration: read
permission-members: read
permission-pull-requests: write
- name: Log current API rate limits (github.token)
env:
GH_TOKEN: ${{ github.token }}
run: gh api /rate_limit | jq
# In the regular case, this workflow is called via workflow_call from the eval workflow directly.
# In the more special case, when a PR is undrafted an eval run will have started already.
- name: Wait for comparison to be done
uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8.0.0
id: eval
env:
ARTIFACT: ${{ inputs.artifact-prefix }}comparison
with:
script: |
const run_id = (await github.rest.actions.listWorkflowRuns({
owner: context.repo.owner,
repo: context.repo.repo,
workflow_id: context.eventName === 'pull_request' ? 'test.yml' : 'pull-request-target.yml',
event: context.eventName,
head_sha: context.payload.pull_request.head.sha
})).data.workflow_runs[0].id
core.setOutput('run-id', run_id)
// Waiting 120 * 5 sec = 10 min. max.
// The extreme case is an Eval run that just started when the PR is undrafted.
// Eval takes max 5-6 minutes, normally.
for (let i = 0; i < 120; i++) {
const result = await github.rest.actions.listWorkflowRunArtifacts({
owner: context.repo.owner,
repo: context.repo.repo,
run_id,
name: process.env.ARTIFACT,
})
if (result.data.total_count > 0) return
await new Promise(resolve => setTimeout(resolve, 5000))
}
throw new Error("No comparison artifact found.")
- name: Log current API rate limits (github.token)
env:
GH_TOKEN: ${{ github.token }}
run: gh api /rate_limit | jq
- name: Download the comparison results
uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53 # v6.0.0
with:
run-id: ${{ steps.eval.outputs.run-id }}
github-token: ${{ github.token }}
pattern: ${{ inputs.artifact-prefix }}comparison
path: comparison
merge-multiple: true
- name: Log current API rate limits (app-token)
if: ${{ steps.app-token.outputs.token }}
env:
GH_TOKEN: ${{ steps.app-token.outputs.token }}
run: gh api /rate_limit | jq
- name: Log current API rate limits (github.token)
env:
GH_TOKEN: ${{ github.token }}
run: gh api /rate_limit | jq
- name: Requesting reviews
if: ${{ steps.app-token.outputs.token }}
env:
GH_TOKEN: ${{ github.token }}
APP_GH_TOKEN: ${{ steps.app-token.outputs.token }}
REPOSITORY: ${{ github.repository }}
NUMBER: ${{ github.event.number }}
AUTHOR: ${{ github.event.pull_request.user.login }}
# Don't request reviewers on draft PRs
DRY_MODE: ${{ github.event.pull_request.draft && '1' || '' }}
run: |
# maintainers.json contains GitHub IDs. Look up handles to request reviews from.
# There appears to be no API to request reviews based on GitHub IDs
jq -r 'keys[]' comparison/maintainers.json \
| while read -r id; do gh api /user/"$id" --jq .login; done \
| cat comparison/owners.txt - \
| GH_TOKEN="$APP_GH_TOKEN" result/bin/request-reviewers.sh "$REPOSITORY" "$NUMBER" "$AUTHOR"
- name: Log current API rate limits (app-token)
if: ${{ steps.app-token.outputs.token }}
env:
GH_TOKEN: ${{ steps.app-token.outputs.token }}
run: gh api /rate_limit | jq
- name: Log current API rate limits (github.token)
env:
GH_TOKEN: ${{ github.token }}
run: gh api /rate_limit | jq
-1
View File
@@ -69,7 +69,6 @@ jobs:
'.github/workflows/eval.yml',
'.github/workflows/lint.yml',
'.github/workflows/pull-request-target.yml',
'.github/workflows/reviewers.yml',
'.github/workflows/test.yml',
'ci/github-script/bot.js',
'ci/github-script/merge.js',
-1
View File
@@ -156,7 +156,6 @@ let
in
rec {
inherit pkgs fmt;
requestReviews = pkgs.callPackage ./request-reviews { };
codeownersValidator = pkgs.callPackage ./codeowners-validator { };
# FIXME(lf-): it might be useful to test other Nix implementations
+48 -13
View File
@@ -5,6 +5,7 @@ module.exports = async ({ github, context, core, dry }) => {
const withRateLimit = require('./withRateLimit.js')
const { classify } = require('../supportedBranches.js')
const { handleMerge } = require('./merge.js')
const { handleReviewers } = require('./reviewers.js')
const artifactClient = new DefaultArtifactClient()
@@ -209,10 +210,16 @@ module.exports = async ({ github, context, core, dry }) => {
}
}
const reviews = await github.paginate(github.rest.pulls.listReviews, {
...context.repo,
pull_number,
})
// Check for any human reviews other than GitHub actions and other GitHub apps.
// Accounts could be deleted as well, so don't count them.
const reviews = (
await github.paginate(github.rest.pulls.listReviews, {
...context.repo,
pull_number,
})
).filter(
(r) => r.user && !r.user.login.endsWith('[bot]') && r.user.type !== 'Bot',
)
const approvals = new Set(
reviews
@@ -282,13 +289,6 @@ module.exports = async ({ github, context, core, dry }) => {
log('Last eval run', run_id ?? '<n/a>')
if (conclusion === 'success') {
// Check for any human reviews other than GitHub actions and other GitHub apps.
// Accounts could be deleted as well, so don't count them.
const humanReviews = reviews.filter(
(r) =>
r.user && !r.user.login.endsWith('[bot]') && r.user.type !== 'Bot',
)
Object.assign(prLabels, {
// We only set this label if the latest eval run was successful, because if it was not, it
// *could* have requested reviewers. We will let the PR author fix CI first, before "escalating"
@@ -301,7 +301,7 @@ module.exports = async ({ github, context, core, dry }) => {
'9.needs: reviewer':
!pull_request.draft &&
pull_request.requested_reviewers.length === 0 &&
humanReviews.length === 0,
reviews.length === 0,
})
}
@@ -373,6 +373,41 @@ module.exports = async ({ github, context, core, dry }) => {
maintainers[pkg]?.some((m) => approvals.has(m)),
),
})
if (!pull_request.draft) {
let owners = []
try {
// TODO: Create owner map similar to maintainer map.
owners = (await readFile(`${pull_number}/owners.txt`, 'utf-8')).split(
'\n',
)
} catch (e) {
// Older artifacts don't have the owners.txt, yet.
if (e.code !== 'ENOENT') throw e
}
// We set this label earlier already, but the current PR state can be very different
// after handleReviewers has requested reviews, so update it in this case to prevent
// this label from flip-flopping.
prLabels['9.needs: reviewer'] = await handleReviewers({
github,
context,
core,
log,
dry,
pull_request,
reviews,
// TODO: Use maintainer map instead of the artifact.
maintainers: Object.keys(
JSON.parse(
await readFile(`${pull_number}/maintainers.json`, 'utf-8'),
),
).map((id) => parseInt(id)),
owners,
getTeamMembers,
getUser,
})
}
}
return prLabels
@@ -521,7 +556,7 @@ module.exports = async ({ github, context, core, dry }) => {
const hasChanges = Object.keys(after).some(
(name) => (before[name] ?? false) !== after[name],
)
if (log('Has changes', hasChanges, !hasChanges)) return
if (log('Has label changes', hasChanges, !hasChanges)) return
// Skipping labeling on a pull_request event, because we have no privileges.
const labels = Object.entries(after)
+128
View File
@@ -0,0 +1,128 @@
async function handleReviewers({
github,
context,
core,
log,
dry,
pull_request,
reviews,
maintainers,
owners,
getTeamMembers,
getUser,
}) {
const pull_number = pull_request.number
const users = new Set([
...(await Promise.all(
maintainers.map(async (id) => (await getUser(id)).login),
)),
...owners.filter((handle) => handle && !handle.includes('/')),
])
log('reviewers - users', Array.from(users).join(', '))
const teams = new Set(
owners
.map((handle) => handle.split('/'))
.filter(([org, slug]) => org === context.repo.owner && slug)
.map(([, slug]) => slug),
)
log('reviewers - teams', Array.from(teams).join(', '))
const team_members = new Set(
(await Promise.all(Array.from(teams, getTeamMembers)))
.flat(1)
.map(({ login }) => login),
)
log('reviewers - team_members', Array.from(team_members).join(', '))
const new_reviewers = users
.union(team_members)
// We can't request a review from the author.
.difference(new Set([pull_request.user?.login]))
log('reviewers - new_reviewers', Array.from(new_reviewers).join(', '))
// Filter users to repository collaborators. If they're not, they can't be requested
// for review. In that case, they probably missed their invite to the maintainers team.
const reviewers = (
await Promise.all(
Array.from(new_reviewers, async (username) => {
try {
await github.rest.repos.checkCollaborator({
...context.repo,
username,
})
return username
} catch (e) {
if (e.status !== 404) throw e
core.warning(
`PR #${pull_number}: User ${username} cannot be requested for review because they don't exist or are not a repository collaborator, ignoring. They probably missed the automated invite to the maintainers team (see <https://github.com/NixOS/nixpkgs/issues/234293>).`,
)
}
}),
)
).filter(Boolean)
log('reviewers - reviewers', reviewers.join(', '))
if (reviewers.length > 15) {
log(
`Too many reviewers (${reviewers.join(', ')}), skipping review requests.`,
)
// false indicates, that we do have reviewers and don't need the "needs: reviewers" label.
return false
}
const requested_reviewers = new Set(
pull_request.requested_reviewers.map(({ login }) => login),
)
log(
'reviewers - requested_reviewers',
Array.from(requested_reviewers).join(', '),
)
const existing_reviewers = new Set(
reviews.map(({ user }) => user?.login).filter(Boolean),
)
log(
'reviewers - existing_reviewers',
Array.from(existing_reviewers).join(', '),
)
const non_requested_reviewers = new Set(reviewers)
.difference(requested_reviewers)
// We don't want to rerequest reviews from people who already reviewed.
.difference(existing_reviewers)
log(
'reviewers - non_requested_reviewers',
Array.from(non_requested_reviewers).join(', '),
)
if (non_requested_reviewers.size === 0) {
log('Has reviewer changes', 'false (skipped)')
} else if (dry) {
core.info(
`Requesting reviewers for #${pull_number}: ${Array.from(non_requested_reviewers).join(', ')} (dry)`,
)
} else {
// We had tried the "request all reviewers at once" thing in the past, but it didn't work out:
// https://github.com/NixOS/nixpkgs/commit/034613f860fcd339bd2c20c8f6bc259a2f9dc034
// If we're hitting API errors here again, we'll need to investigate - and possibly reverse
// course.
await github.rest.pulls.requestReviewers({
...context.repo,
pull_number,
reviewers,
})
}
// Return a boolean on whether the "needs: reviewers" label should be set.
return (
new_reviewers.size === 0 &&
existing_reviewers.size === 0 &&
requested_reviewers.size === 0
)
}
module.exports = {
handleReviewers,
}
-33
View File
@@ -1,33 +0,0 @@
{
lib,
stdenvNoCC,
makeWrapper,
coreutils,
jq,
github-cli,
}:
stdenvNoCC.mkDerivation {
name = "request-reviews";
src = lib.fileset.toSource {
root = ./.;
fileset = lib.fileset.unions [
./request-reviewers.sh
];
};
nativeBuildInputs = [ makeWrapper ];
dontBuild = true;
installPhase = ''
mkdir -p $out/bin
for bin in *.sh; do
mv "$bin" "$out/bin"
wrapProgram "$out/bin/$bin" \
--set PATH ${
lib.makeBinPath [
coreutils
jq
github-cli
]
}
done
'';
}
-120
View File
@@ -1,120 +0,0 @@
#!/usr/bin/env bash
# Request reviewers for a PR, reading line-separated usernames on stdin,
# filtering for valid reviewers before using the API endpoint to request reviews:
# https://docs.github.com/en/rest/pulls/review-requests?apiVersion=2022-11-28#request-reviewers-for-a-pull-request
set -euo pipefail
tmp=$(mktemp -d)
trap 'rm -rf "$tmp"' exit
log() {
echo "$@" >&2
}
effect() {
if [[ -n "${DRY_MODE:-}" ]]; then
log "Skipping in dry mode:" "${@@Q}"
else
"$@"
fi
}
if (( "$#" < 3 )); then
log "Usage: $0 BASE_REPO PR_NUMBER PR_AUTHOR"
exit 1
fi
baseRepo=$1
prNumber=$2
prAuthor=$3
tmp=$(mktemp -d)
trap 'rm -rf "$tmp"' exit
# Associative array with the user as the key for easy de-duplication
# Make sure to always lowercase keys to avoid duplicates with different casings
declare -A users=()
while read -r handle && [[ -n "$handle" ]]; do
if [[ "$handle" =~ (.*)/(.*) ]]; then
# Teams look like $org/$team
org=${BASH_REMATCH[1]}
team=${BASH_REMATCH[2]}
# Instead of requesting a review from the team itself,
# we request reviews from the individual users.
# This is because once somebody from a team reviewed the PR,
# the API doesn't expose that the team was already requested for a review,
# so we wouldn't be able to avoid rerequesting reviews
# without saving some some extra state somewhere
# We could also consider implementing a more advanced heuristic
# in the future that e.g. only pings one team member,
# but escalates to somebody else if that member doesn't respond in time.
gh api \
--cache=1h \
-H "Accept: application/vnd.github+json" \
-H "X-GitHub-Api-Version: 2022-11-28" \
"/orgs/$org/teams/$team/members" \
--jq '.[].login' > "$tmp/team-members"
readarray -t members < "$tmp/team-members"
log "Team $handle has these members: ${members[*]}"
for user in "${members[@]}"; do
users[${user,,}]=
done
else
# Everything else is a user
users[${handle,,}]=
fi
done
# Cannot request a review from the author
if [[ -v users[${prAuthor,,}] ]]; then
log "One or more files are owned by the PR author, ignoring"
unset 'users[${prAuthor,,}]'
fi
gh api \
-H "Accept: application/vnd.github+json" \
-H "X-GitHub-Api-Version: 2022-11-28" \
"/repos/$baseRepo/pulls/$prNumber/reviews" \
--jq '.[].user.login' > "$tmp/already-reviewed-by"
# And we don't want to rerequest reviews from people who already reviewed
while read -r user; do
if [[ -v users[${user,,}] ]]; then
log "User $user is a potential reviewer, but has already left a review, ignoring"
unset 'users[${user,,}]'
fi
done < "$tmp/already-reviewed-by"
for user in "${!users[@]}"; do
if ! gh api \
-H "Accept: application/vnd.github+json" \
-H "X-GitHub-Api-Version: 2022-11-28" \
"/repos/$baseRepo/collaborators/$user" >&2; then
log "User $user is not a repository collaborator, probably missed the automated invite to the maintainers team (see <https://github.com/NixOS/nixpkgs/issues/234293>), ignoring"
unset 'users[$user]'
fi
done
if [[ "${#users[@]}" -gt 15 ]]; then
log "Too many reviewers (${!users[*]}), skipping review requests"
exit 0
fi
for user in "${!users[@]}"; do
log "Requesting review from: $user"
if ! response=$(jq -n --arg user "$user" '{ reviewers: [ $user ] }' | \
effect gh api \
--method POST \
-H "Accept: application/vnd.github+json" \
-H "X-GitHub-Api-Version: 2022-11-28" \
"/repos/$baseRepo/pulls/$prNumber/requested_reviewers" \
--input -); then
log "Failed to request review from $user: $response"
fi
done
+1 -1
View File
@@ -1,7 +1,7 @@
{ lib, pkgs, ... }:
let
seed-nid = "z6Mkg52RcwDrPKRzzHaYgBkHH3Gi5p4694fvPstVE9HTyMB6";
seed-nid = "z6MkhwX7wBkHQvcLazu2KDFK6UifGkLcoxNm2iA38fPH9LwU";
seed-ssh-keys = import ./ssh-keys.nix pkgs;
radicleConfig =
+1 -1
View File
@@ -6,7 +6,7 @@
let
# The Node ID depends on nodes.seed.services.radicle.privateKeyFile
seed-nid = "z6Mkg52RcwDrPKRzzHaYgBkHH3Gi5p4694fvPstVE9HTyMB6";
seed-nid = "z6MkhwX7wBkHQvcLazu2KDFK6UifGkLcoxNm2iA38fPH9LwU";
seed-ssh-keys = import ./ssh-keys.nix pkgs;
seed-tls-certs = import common/acme/server/snakeoil-certs.nix;
@@ -7,8 +7,8 @@ vscode-utils.buildVscodeMarketplaceExtension {
mktplcRef = {
name = "claude-code";
publisher = "anthropic";
version = "2.0.31";
hash = "sha256-ylcb5Ty9x9uj38OY0RXsS+YNKVKUzc1c5x6RJsZ3E2g=";
version = "2.0.34";
hash = "sha256-e+pjuGY0xrg43+pDDkQ4Svb1yBx2Fv+Z8WZoJv/k6D4=";
};
meta = {
+3 -3
View File
@@ -10,16 +10,16 @@
}:
rustPlatform.buildRustPackage (finalAttrs: {
pname = "biome";
version = "2.3.2";
version = "2.3.4";
src = fetchFromGitHub {
owner = "biomejs";
repo = "biome";
rev = "@biomejs/biome@${finalAttrs.version}";
hash = "sha256-SUihyk1tbSiF3uY19/T9ZgQsURVc81p8lFMN933p6f0=";
hash = "sha256-81eM8EK2ORtsEyOTTgNFZxK8pCPBKq7YSfUmIVL91VI=";
};
cargoHash = "sha256-nzQb2GJFltktA10Rrl7tltHVjVYNPgLNpDzOXCHQeQA=";
cargoHash = "sha256-6F6UJJRETOr476h12OHcT1U4iTAkoVuomikIvlrWyqE=";
nativeBuildInputs = [ pkg-config ];
+3 -3
View File
@@ -7,16 +7,16 @@
buildGoModule (finalAttrs: {
pname = "capslock";
version = "0.2.8";
version = "0.3.0";
src = fetchFromGitHub {
owner = "google";
repo = "capslock";
rev = "v${finalAttrs.version}";
hash = "sha256-7FMsW51LYEjEXcil6e64tAHaBeDAYRnBBX4E1PjSXtU=";
hash = "sha256-ls7+aXEelxKXhittK4orv9xgPKw1pE87yZdoSHBUgK8=";
};
vendorHash = "sha256-UOpreQceWgwbQ+Qup4iEStQqJA77uiiupfTUFxNBIcM=";
vendorHash = "sha256-2nK+yxgLmrXjt41gYSXvkpZ2glu6PAtO18Nrt1tmup4=";
subPackages = [ "cmd/capslock" ];
+3 -3
View File
@@ -10,14 +10,14 @@
rustPlatform.buildRustPackage rec {
pname = "cargo-show-asm";
version = "0.2.53";
version = "0.2.54";
src = fetchCrate {
inherit pname version;
hash = "sha256-t6HvflVpYa23xRn0Z9bD3RjrFDiBnkhx+0FUtBjTTtg=";
hash = "sha256-AF8fFPdiSZ/odPg3Kp72+LlJ+ox0PU+dH1fhPSt61n8=";
};
cargoHash = "sha256-Y3BIQmQ2eH/QnEdv+skl9ppwEmuJ8JMg8mLgUDGRP+8=";
cargoHash = "sha256-cSlM0Ci0fXhAw7vfTxdkL9a4L9r76XdaR5URYYGAdd0=";
nativeBuildInputs = [
installShellFiles
+3 -3
View File
@@ -10,16 +10,16 @@
rustPlatform.buildRustPackage rec {
pname = "cargo-udeps";
version = "0.1.59";
version = "0.1.60";
src = fetchFromGitHub {
owner = "est31";
repo = "cargo-udeps";
rev = "v${version}";
sha256 = "sha256-oA/oWXTaQPY7bCBUP52b+PACZXV+32G3/STh+sec6AI=";
sha256 = "sha256-NW9yjFUV+o7vv5bYD8nxSWHOXOBnDEk36xze90wYuNg=";
};
cargoHash = "sha256-X+Y2ialZnwusy3XVnXiTcGmSYsKsFOmEOL4Gc5SgXWU=";
cargoHash = "sha256-vQvtc/CwV1aHeREzmzO8k1FcebbEp3FKMAJb0v2aQig=";
nativeBuildInputs = [ pkg-config ];
+3 -3
View File
@@ -6,16 +6,16 @@
rustPlatform.buildRustPackage rec {
pname = "esp-generate";
version = "1.0.0";
version = "1.0.1";
src = fetchFromGitHub {
owner = "esp-rs";
repo = "esp-generate";
rev = "v${version}";
hash = "sha256-lcxYsMeigXjwFdJQ4fJZnQL9PqVhgr7bOIsaTu2Oa88=";
hash = "sha256-OQUBX0hZNEgMpBttWZDXI/eoOlxVfY57oZqn3YKNZ0o=";
};
cargoHash = "sha256-0p07C4OGHOkEivnokti0s9z+xXdcayUOkzTqksxUZ6o=";
cargoHash = "sha256-Sf37qp1TBCabgKIExs9biqvdN+KtIBPGeokLMovjM68=";
meta = {
description = "Template generation tool to create no_std applications targeting Espressif's chips";
+2 -2
View File
@@ -6,13 +6,13 @@
}:
stdenv.mkDerivation (finalAttrs: {
pname = "exploitdb";
version = "2025-10-30";
version = "2025-11-01";
src = fetchFromGitLab {
owner = "exploit-database";
repo = "exploitdb";
tag = finalAttrs.version;
hash = "sha256-3e1NRjuLNgxKTEPTAhNp1rJNJ7ZQGnPZOXCCpuAYvLM=";
hash = "sha256-MXWP7YOv4JAIKerAGuSeiAiQ98sRU6mZ1ZQSJBPCZQs=";
};
nativeBuildInputs = [ makeWrapper ];
+8 -5
View File
@@ -4,7 +4,7 @@
fetchurl,
fetchFromGitHub,
runCommand,
unstableGitUpdater,
gitUpdater,
catch2_3,
cmake,
fontconfig,
@@ -78,14 +78,17 @@ let
in
stdenv.mkDerivation (finalAttrs: {
pname = "fire";
version = "1.5.0b-unstable-2025-09-20";
# 1.5.0b is considered a beta release of 1.5.0, but gitUpdater identifies 1.5.0b as the newer version
# Sanity checked manually. Drop this once running the updateScript doesn't produce a downgrade.
# nixpkgs-update: no auto update
version = "1.5.0";
src = fetchFromGitHub {
owner = "jerryuhoo";
repo = "Fire";
rev = "34a424a4fc50984213b6e98e3aaae3dcb8e960c4";
tag = "v${finalAttrs.version}";
fetchSubmodules = true;
hash = "sha256-ZTsZ/J5aeyjg4pxhjjIkgoTB5sSg2jpeKAp/uc4V+aQ=";
hash = "sha256-i8viPGErCuLSuRWstDtLwQ3XBz9gfiHin7Zvvq8l3kA=";
};
postPatch =
@@ -162,7 +165,7 @@ stdenv.mkDerivation (finalAttrs: {
patchelf --add-rpath ${lib.makeLibraryPath x11Libs} $out/bin/Fire
'';
passthru.updateScript = unstableGitUpdater { tagPrefix = "v"; };
passthru.updateScript = gitUpdater { rev-prefix = "v"; };
meta = {
description = "Multi-band distortion plugin by Wings";
@@ -13,13 +13,13 @@
stdenvNoCC.mkDerivation (finalAttrs: {
pname = "firefly-iii-data-importer";
version = "1.9.0";
version = "1.9.1";
src = fetchFromGitHub {
owner = "firefly-iii";
repo = "data-importer";
tag = "v${finalAttrs.version}";
hash = "sha256-07i/78dF6yynSGAHc91899hLD1MKacBUJ5d455hn9mE=";
hash = "sha256-AjpzJfer1v7+FLIGEcBJrMxUlda5MwV2ThJuV5MNIxQ=";
};
buildInputs = [ php84 ];
@@ -38,12 +38,12 @@ stdenvNoCC.mkDerivation (finalAttrs: {
composerStrictValidation = true;
strictDeps = true;
vendorHash = "sha256-i4DZ62J5v/tskoaQ1GaE7b1VJcFOFIJW8xC8R4h4tHk=";
vendorHash = "sha256-7nhoRnKcOnnBt0YxaMEXYHPqDjaCltDnSiCnMDCEq5M=";
npmDeps = fetchNpmDeps {
inherit (finalAttrs) src;
name = "${finalAttrs.pname}-npm-deps";
hash = "sha256-KRMdcY9pkyXOPCwcNXOK1FJYWIcvDE6DRVX/aG8KzCs=";
hash = "sha256-as11uXE3qBGz7HIkTEeFLznwevcS+yChETo4ElyRVl8=";
};
composerRepository = php84.mkComposerRepository {
+3 -3
View File
@@ -16,13 +16,13 @@
rustPlatform.buildRustPackage {
pname = "forecast";
version = "0-unstable-2025-10-21";
version = "0-unstable-2025-11-06";
src = fetchFromGitHub {
owner = "cosmic-utils";
repo = "forecast";
rev = "8f04cafd809d58bdd46556b66f3aa4574e81fcbd";
hash = "sha256-DRShCI/tBh/a3IM/UH8yujlJyEeqGJ+kbnqSF8AibS0=";
rev = "51814ecac320185911743986e8ab0211140fa456";
hash = "sha256-XOqV9Z4l4aTgm2Abec7IE2bk8oX3RsAA8UxZuo6S5l8=";
};
cargoHash = "sha256-di7zjwI0/6NB2cAih3d7iqwSb+o/607jbgJN1MtbZX8=";
+84
View File
@@ -0,0 +1,84 @@
{
lib,
stdenv,
fetchFromGitHub,
fetchYarnDeps,
yarnConfigHook,
yarnBuildHook,
nodejs,
findutils,
makeBinaryWrapper,
nix-update-script,
}:
stdenv.mkDerivation (finalAttrs: {
pname = "gatsby-cli";
version = "5.15.0";
src = fetchFromGitHub {
owner = "gatsbyjs";
repo = "gatsby";
tag = "gatsby-cli@${finalAttrs.version}";
hash = "sha256-sNNbOV9UuCTYHp4cSK9ngCukUXDNV4iOIc9PPQVYymM=";
};
yarnKeepDevDeps = true;
yarnOfflineCache = fetchYarnDeps {
yarnLock = finalAttrs.src + "/yarn.lock";
hash = "sha256-wfg9Nj9Z8vyp2NdE+fOTuM+pXnfM/r46CbfuE5f3fGU=";
};
yarnBuildScript = "lerna";
yarnBuildFlags = [
"run"
"build"
"--scope"
"gatsby-cli"
"--include-dependencies"
];
nativeBuildInputs = [
yarnConfigHook
yarnBuildHook
# Needed for executing package.json scripts
nodejs
findutils
makeBinaryWrapper
];
preBuild = ''
patchShebangs packages/**/node_modules
yarn run lerna run prepare --scope gatsby-cli --include-dependencies
'';
installPhase = ''
runHook preInstall
mkdir -p $out/lib/node_modules/
mv packages/ $out/lib/packages/
mv node_modules/* $out/lib/node_modules/
makeWrapper ${lib.getExe nodejs} $out/bin/gatsby \
--add-flags $out/lib/packages/gatsby-cli/cli.js \
--set NODE_PATH $out/lib/node_modules
runHook postInstall
'';
passthru.updateScript = nix-update-script {
extraArgs = [
"--version-regex"
"'gatsby-cli@(.*)'"
];
};
meta = {
changelog = "https://github.com/gatsbyjs/gatsby/releases/tag/gatsby%2540${finalAttrs.version}";
description = "The Gatsby command line interface";
homepage = "https://github.com/gatsbyjs/gatsby/tree/master/packages/gatsby-cli#readme";
license = lib.licenses.mit;
maintainers = with lib.maintainers; [ pyrox0 ];
mainProgram = "gatsby";
};
})
+3 -3
View File
@@ -9,20 +9,20 @@
rustPlatform.buildRustPackage (finalAttrs: {
pname = "hledger-fmt";
version = "0.3.5";
version = "0.3.6";
src = fetchFromGitHub {
owner = "mondeja";
repo = "hledger-fmt";
tag = "v${finalAttrs.version}";
hash = "sha256-VyDVdXxTge3ERTrkIIWgR75m7TaEbbPmFDNsoYOi9tM=";
hash = "sha256-xjBU8LgVIPjb758I57gDfz5q3sot8sV93gMAPXY2jOw=";
};
nativeBuildInputs = [
installShellFiles
];
cargoHash = "sha256-jn4ptV0IVnnXR2oCxxUnGaoWG/LBlRkf25/8Nasm9qI=";
cargoHash = "sha256-LQxJWllRCD7moImQdDc8Xa0mrkCbbvYITg3pb204qVs=";
# Tests try to invoke the binary from "target/debug/hledger-fmt"
# https://github.com/mondeja/hledger-fmt/blob/783abdb32eefb20195c7e9562858552935bb9c8e/src/cli/tests.rs#L5
+3 -3
View File
@@ -7,15 +7,15 @@
buildGoModule rec {
pname = "istioctl";
version = "1.27.3";
version = "1.28.0";
src = fetchFromGitHub {
owner = "istio";
repo = "istio";
rev = version;
hash = "sha256-MgicdVRYHdp38lHY7VjAH+4xKD9sgEroEIwNkSmbfjU=";
hash = "sha256-NLARp5Gw04UosyLw3TkEmtvSLKa+tYp4s60UKvcJOgw=";
};
vendorHash = "sha256-AJzEAFZZe4QtuYRcIJ8GwosbBi5gWn+DAOpVS8JnAdQ=";
vendorHash = "sha256-ge9aR3ZYOJaYp0D1UWzzg40nXlwM/Sl1Ep+u1CmdSV8=";
nativeBuildInputs = [ installShellFiles ];
+3 -3
View File
@@ -14,16 +14,16 @@
rustPlatform.buildRustPackage (finalAttrs: {
pname = "jujutsu";
version = "0.34.0";
version = "0.35.0";
src = fetchFromGitHub {
owner = "jj-vcs";
repo = "jj";
tag = "v${finalAttrs.version}";
hash = "sha256-OW8kSDBBSZr0G3U27AAkZ3cH3TJmSARbg9Pc4qZ6tA0=";
hash = "sha256-YUrjP2tzABdy4eAV1hPmgYWU8ChcJ5B4IlmQUGm95ro=";
};
cargoHash = "sha256-/zC2z0evYs8VKta0uClTtl4l3tbDRcsVedGF2jtfQGA=";
cargoHash = "sha256-9VCAmtY029+CFNFcYLdA/VyT5CIvJnuA3iwPOKZpYV0=";
nativeBuildInputs = [
installShellFiles
+3 -3
View File
@@ -8,16 +8,16 @@
rustPlatform.buildRustPackage (finalAttrs: {
pname = "lintspec";
version = "0.11.4";
version = "0.12.0";
src = fetchFromGitHub {
owner = "beeb";
repo = "lintspec";
tag = "v${finalAttrs.version}";
hash = "sha256-dd9j4eGXhNyaTOMiKK0qi8BW1Zy1kZ6+ZVMB7rrq4gE=";
hash = "sha256-CxtzAtbjk7rS00EAvu6pMXN7VsF75tO79p7au5+4jGI=";
};
cargoHash = "sha256-u83OgBEbZ4b2CLZv/M9Wv0tum3ZKZGOuba0leqfMDoo=";
cargoHash = "sha256-kmv62yq4JdNv2komTjnsH5kjbaxI30iph3pKa2+qqck=";
cargoBuildFlags = [
"--package"
"lintspec"
+16 -29
View File
@@ -8,12 +8,12 @@
}:
stdenvNoCC.mkDerivation (finalAttrs: {
pname = "models-dev";
version = "0-unstable-2025-11-03";
version = "0-unstable-2025-11-04";
src = fetchFromGitHub {
owner = "sst";
repo = "models.dev";
rev = "0e56ea3ccab064118f42687772368bc66f03f85e";
hash = "sha256-D7W0HSiHk5LpZ+y1pZCrEsfYEQPVD9qrrbu+3MhjEYo=";
rev = "234ba091f2d37ea925e4e38fecd7b3ed661b52a9";
hash = "sha256-7djp/VoAWK29tcwD9mDPCTZiGeJKB8puOnlbEMgOqKQ=";
};
node_modules = stdenvNoCC.mkDerivation {
@@ -37,18 +37,11 @@ stdenvNoCC.mkDerivation (finalAttrs: {
export BUN_INSTALL_CACHE_DIR=$(mktemp -d)
# NOTE: Starting with Bun 1.3.0, isolated builds became the default
# behavior. In isolated builds, each package receives its own
# `.node_modules` subdirectory containing only the dependencies
# explicitly declared in that package's `package.json`. Since our build
# process copies only the root-level `.node_modules` directory, we must
# use `--linker=hoisted` to consolidate all dependencies there. Without
# this flag, we would need to copy every individual `.node_modules`
# subdirectory from each package.
bun install \
--filter=./packages/web \
--force \
--frozen-lockfile \
--linker=hoisted \
--ignore-scripts \
--no-progress \
--production
@@ -58,23 +51,21 @@ stdenvNoCC.mkDerivation (finalAttrs: {
installPhase = ''
runHook preInstall
mkdir -p $out/node_modules
cp -R ./node_modules $out
# Copy node_modules directories
while IFS= read -r dir; do
rel="''${dir#./}"
dest="$out/$rel"
mkdir -p "$(dirname "$dest")"
cp -R "$dir" "$dest"
done < <(find . -type d -name node_modules -prune)
runHook postInstall
'';
# Required else we get errors that our fixed-output derivation references store paths
# NOTE: Required else we get errors that our fixed-output derivation references store paths
dontFixup = true;
outputHash =
{
x86_64-linux = "sha256-Uajwvce9EO1UwmpkGrViOrxlm2R/VnnMK8WAiOiQOhY=";
aarch64-linux = "sha256-brjdEEYBJ1R5pIkIHyOOmVieTJ0yUJEgxs7MtbzcKXo=";
x86_64-darwin = "sha256-aGUWZwySmo0ojOBF/PioZ2wp4NRwYyoaJuytzeGYjck=";
aarch64-darwin = "sha256-IM88XPfttZouN2DEtnWJmbdRxBs8wN7AZ1T28INJlBY=";
}
.${stdenvNoCC.hostPlatform.system};
outputHash = "sha256-otke/XlxVafkgtM3wDMU+/GBBgrbD32+3E+Wyue8+U8=";
outputHashAlgo = "sha256";
outputHashMode = "recursive";
};
@@ -84,20 +75,16 @@ stdenvNoCC.mkDerivation (finalAttrs: {
configurePhase = ''
runHook preConfigure
cp -R ${finalAttrs.node_modules}/node_modules .
cp -R ${finalAttrs.node_modules}/. .
runHook postConfigure
'';
preBuild = ''
patchShebangs packages/web/script/build.ts
'';
buildPhase = ''
runHook preBuild
cd packages/web
bun run build
bun run ./script/build.ts
runHook postBuild
'';
+4 -2
View File
@@ -4,6 +4,7 @@
fetchFromGitHub,
hatchling,
async-timeout,
psycopg,
pyicu,
python-dotenv,
@@ -13,14 +14,14 @@
buildPythonPackage rec {
pname = "nominatim";
version = "5.1.0";
version = "5.2.0";
pyproject = true;
src = fetchFromGitHub {
owner = "osm-search";
repo = "Nominatim";
tag = "v${version}";
hash = "sha256-eMCXXPrUZvM4ju0mi1+f+LXhThCCCEH+HDz6lurw+Jo=";
hash = "sha256-ao4oEPz5rtRQtPC2UcIHH1M+o914JraASf+hcB2SDKA=";
};
postPatch = ''
@@ -38,6 +39,7 @@ buildPythonPackage rec {
];
dependencies = [
async-timeout
psycopg
pyicu
python-dotenv
+2 -2
View File
@@ -21,14 +21,14 @@ let
in
python3Packages.buildPythonApplication rec {
pname = "nominatim";
version = "5.1.0";
version = "5.2.0";
pyproject = true;
src = fetchFromGitHub {
owner = "osm-search";
repo = "Nominatim";
tag = "v${version}";
hash = "sha256-eMCXXPrUZvM4ju0mi1+f+LXhThCCCEH+HDz6lurw+Jo=";
hash = "sha256-ao4oEPz5rtRQtPC2UcIHH1M+o914JraASf+hcB2SDKA=";
};
postPatch = ''
+1 -1
View File
@@ -57,7 +57,7 @@ let
atLeast21 = lib.versionAtLeast featureVersion "21";
atLeast23 = lib.versionAtLeast featureVersion "23";
gradle_openjfx = if atLeast23 then gradle_8 else gradle_7;
gradle_openjfx = if atLeast21 then gradle_8 else gradle_7;
in
assert lib.assertMsg (lib.pathExists sourceFile)
+30 -11
View File
@@ -13,7 +13,7 @@
libvpx,
libyuv,
zlib,
makeWrapper,
makeBinaryWrapper,
makeDesktopItem,
copyDesktopItems,
pkg-config,
@@ -43,7 +43,7 @@ stdenv.mkDerivation (finalAttrs: {
nativeBuildInputs = [
cmake
nasm
makeWrapper
makeBinaryWrapper
copyDesktopItems
pkg-config
];
@@ -78,22 +78,41 @@ stdenv.mkDerivation (finalAttrs: {
})
];
installPhase = ''
runHook preInstall
installPhase =
lib.optionalString stdenv.hostPlatform.isLinux ''
runHook preInstall
install -Dm644 ../srb2.png $out/share/icons/hicolor/256x256/apps/ringracers.png
install -Dm755 bin/ringracers $out/bin/ringracers
install -Dm644 ../srb2.png $out/share/icons/hicolor/256x256/apps/ringracers.png
install -Dm755 bin/ringracers $out/bin/ringracers
wrapProgram $out/bin/ringracers \
--set RINGRACERSWADDIR "${finalAttrs.assets}"
wrapProgram $out/bin/ringracers \
--set RINGRACERSWADDIR "${finalAttrs.assets}"
runHook postInstall
'';
runHook postInstall
''
+ lib.optionalString stdenv.hostPlatform.isDarwin ''
runHook preInstall
mkdir -p $out/Applications
cp -r bin/ringracers.app $out/Applications/
wrapProgram $out/Applications/ringracers.app/Contents/MacOS/ringracers \
--set RINGRACERSWADDIR "${finalAttrs.assets}"
mkdir -p $out/bin
cat << EOF > "$out/bin/ringracers"
#!${stdenv.shell}
open -na "$out/Applications/ringracers.app" --args "\$@"
EOF
chmod +x $out/bin/ringracers
runHook postInstall
'';
meta = {
description = "Kart racing video game based on Sonic Robo Blast 2 (SRB2), itself based on a modified version of Doom Legacy";
homepage = "https://kartkrew.org";
platforms = lib.platforms.linux;
platforms = lib.platforms.linux ++ lib.platforms.darwin;
license = lib.licenses.gpl2Plus;
maintainers = with lib.maintainers; [
donovanglover
+3 -3
View File
@@ -8,16 +8,16 @@
buildGoModule (finalAttrs: {
pname = "rsyncy";
version = "2.1.0";
version = "2.2.0";
src = fetchFromGitHub {
owner = "laktak";
repo = "rsyncy";
tag = "v${finalAttrs.version}";
hash = "sha256-sy0aMYT7xrBfXB3YxLGL49jKVnRpWo5k+3mjQNAOagU=";
hash = "sha256-ZWahPfAW6m86C0jdUB8Hfmx2A3i4NLsnAWI0HVoAbcE=";
};
vendorHash = "sha256-vexWkbUQdkWrDJVvu2T4z4hbiCANuW0qLNFNSiTmYtY=";
vendorHash = "sha256-xEjLMp4hbRrSvHBsuFxYsyNB7s2P876dV1NyAXycGoo=";
ldflags = [
"-s"
+3 -3
View File
@@ -26,14 +26,14 @@
stdenv.mkDerivation (finalAttrs: {
pname = "s7";
version = "11.7-unstable-2025-10-29";
version = "11.7-unstable-2025-11-05";
src = fetchFromGitLab {
domain = "cm-gitlab.stanford.edu";
owner = "bil";
repo = "s7";
rev = "cb3da9a414401e447066c6f2ccd4476c2da886ec";
hash = "sha256-RHYALNWKxQ5mgU/mvQVsVW87Efd+kxgIBkw7vOgwVAo=";
rev = "fad53814de1ace0f9030e01f234ee4d139cfc514";
hash = "sha256-RLYZPy5mn1Uk1vCoUwAy7V0Lv8rUeb0iX50+A1TBw0U=";
};
buildInputs =
+2 -2
View File
@@ -117,12 +117,12 @@ let
in
stdenv.mkDerivation (finalAttrs: {
pname = "shipwright";
version = "9.1.0";
version = "9.1.1";
src = fetchFromGitHub {
owner = "harbourmasters";
repo = "shipwright";
tag = finalAttrs.version;
hash = "sha256-sRUg6wa0KOG+hoR+6QEVyPe/9O9yEefNB69BMO+H+iU=";
hash = "sha256-TEP2YNKUuAnvLg+aDOkMmYfPQIjUXWYOhprfqsr8EgQ=";
fetchSubmodules = true;
deepClone = true;
postFetch = ''
+2
View File
@@ -94,6 +94,8 @@ stdenv.mkDerivation (finalAttrs: {
--replace '"which "' '"${which}/bin/which "'
substituteInPlace lib/exceptionhandler/exceptionhandler.cpp \
--replace "which %s" "${which}/bin/which %s"
substituteInPlace CMakeLists.txt \
--replace-fail "CONFIGURE_WZ_COMPILER_WARNINGS()" ""
'';
cmakeFlags = [
+8 -8
View File
@@ -30,14 +30,14 @@ let
# https://dldir1.qq.com/weixin/mac/mac-release.xml
any-darwin =
let
version = "4.1.4.12-31227";
version = "4.1.4.15-31252";
version' = lib.replaceString "-" "_" version;
in
{
inherit version;
src = fetchurl {
url = "https://dldir1v6.qq.com/weixin/Universal/Mac/xWeChatMac_universal_${version'}.dmg";
hash = "sha256-xVWEABH3dzQkQpmhJ3gKXJd9lQ4fqN7ptkWLTpJ4vaY=";
hash = "sha256-nG9fYaQjeCwYFV7yKdlUxbXnFALc1VomQ/hnGQtJ17o=";
};
};
in
@@ -45,17 +45,17 @@ let
aarch64-darwin = any-darwin;
x86_64-darwin = any-darwin;
aarch64-linux = {
version = "4.1.0.10";
version = "4.1.0.13";
src = fetchurl {
url = "https://web.archive.org/web/20250930121708/https://dldir1v6.qq.com/weixin/Universal/Linux/WeChatLinux_arm64.AppImage";
hash = "sha256-qkNLA8nILsIi2ciIzr9pb3PejhbEvZ5fe4GlmjyjrEI=";
url = "https://web.archive.org/web/20251106024910/https://dldir1v6.qq.com/weixin/Universal/Linux/WeChatLinux_arm64.AppImage";
hash = "sha256-/d5crM6IGd0k0fSlBSQx4TpIVX/8iib+an0VMkWMNdw=";
};
};
x86_64-linux = {
version = "4.1.0.10";
version = "4.1.0.13";
src = fetchurl {
url = "https://web.archive.org/web/20250930121506/https://dldir1v6.qq.com/weixin/Universal/Linux/WeChatLinux_x86_64.AppImage";
hash = "sha256-d/zdb69gmIcgAFCbWLKGfmD8ZFfuDlYdOy7vUJ7SiXc=";
url = "https://web.archive.org/web/20251106024907/https://dldir1v6.qq.com/weixin/Universal/Linux/WeChatLinux_x86_64.AppImage";
hash = "sha256-+r5Ebu40GVGG2m2lmCFQ/JkiDsN/u7XEtnLrB98602w=";
};
};
};
+2 -2
View File
@@ -51,11 +51,11 @@ let
in
stdenv.mkDerivation (finalAttrs: {
pname = "go";
version = "1.24.9";
version = "1.24.10";
src = fetchurl {
url = "https://go.dev/dl/go${finalAttrs.version}.src.tar.gz";
hash = "sha256-xy+BulT+AO/n8+dJnUAJeSRogbE7d16am7hVQcEb5pU=";
hash = "sha256-NAANzEelF7ePzyZX7n0DMyilcHn+YMTti3uEJg0dGdM=";
};
strictDeps = true;
@@ -17,6 +17,7 @@
case = case: out: { inherit case out; };
in
lib.switch coq.coq-version [
(case "9.1" "1.3.1+9.1")
(case "9.0" "1.3.1+9.0")
(case "8.20" "1.3.1+8.20")
(case "8.19" "1.3+8.19")
@@ -80,6 +81,8 @@
release."1.3.1+8.20".sha256 = "sha256-u8LB1KiACM5zVaoL7dSdHYvZgX7pf30VuqtjLLGuTzc=";
release."1.3.1+9.0".rev = "v1.3.1-9.0";
release."1.3.1+9.0".sha256 = "sha256-186Z0/wCuGAjIvG1LoYBMPooaC6HmnKWowYXuR0y6bA=";
release."1.3.1+9.1".rev = "v1.3.1-9.1";
release."1.3.1+9.1".sha256 = "sha256-LtYbAR3jt+JbYcqP+m1n3AZhAWSMIeOZtmdSJwg7L1A=";
mlPlugin = true;
@@ -114,6 +114,7 @@ mapAliases {
inherit (pkgs) fixjson; # added 2024-06-26
flood = pkgs.flood; # Added 2023-07-25
ganache = throw "ganache was removed because it was deprecated upstream"; # added 2024-12-02
inherit (pkgs) gatsby-cli; # Added 2025-11-05
generator-code = throw "generator-code was removed because it provides no executable"; # added 2023-09-24
inherit (pkgs) git-run; # added 2024-06-26
git-ssb = throw "git-ssb was removed because it was broken"; # added 2023-08-21
@@ -73,7 +73,6 @@
, "fleek-cli"
, "forever"
, "fx"
, "gatsby-cli"
, "grunt-cli"
, "makam"
, "gulp-cli"
File diff suppressed because it is too large Load Diff
@@ -9,13 +9,13 @@
buildPythonPackage rec {
pname = "botocore-stubs";
version = "1.40.64";
version = "1.40.65";
pyproject = true;
src = fetchPypi {
pname = "botocore_stubs";
inherit version;
hash = "sha256-m6tH000Oxxg+BKM1bj+i3/wRru+oRFs3qzV8cJg4/xQ=";
hash = "sha256-MfO51dsNHcZknRHBg8thOs8rXTKXnBYIUtSvtVRC7bo=";
};
nativeBuildInputs = [ setuptools ];
@@ -5,7 +5,6 @@
chardet,
fetchFromGitHub,
idna,
pythonOlder,
requests,
setuptools,
urllib3,
@@ -13,16 +12,14 @@
buildPythonPackage rec {
pname = "frigidaire";
version = "0.18.24";
version = "0.18.28";
pyproject = true;
disabled = pythonOlder "3.8";
src = fetchFromGitHub {
owner = "bm1549";
repo = "frigidaire";
tag = version;
hash = "sha256-lpwzXeuFPvWV26AIAfzBHY3IiwEc8vThTXc/F0iyV1o=";
hash = "sha256-2VleZyisva2HQPDmPoZbxnYu3t1S/HTuaZtFWFiU1nU=";
};
postPatch = ''
@@ -49,7 +46,7 @@ buildPythonPackage rec {
description = "Python API for the Frigidaire devices";
homepage = "https://github.com/bm1549/frigidaire";
changelog = "https://github.com/bm1549/frigidaire/releases/tag/${src.tag}";
license = with licenses; [ mit ];
license = licenses.mit;
maintainers = with maintainers; [ fab ];
};
}
@@ -43,14 +43,14 @@ in
buildPythonPackage rec {
pname = "imageio";
version = "2.37.1";
version = "2.37.2";
pyproject = true;
src = fetchFromGitHub {
owner = "imageio";
repo = "imageio";
tag = "v${version}";
hash = "sha256-eNS++8pD+m51IxRR23E98K0f3rwNez/UiByA+PSfUH8=";
hash = "sha256-8wKTcmnep67zBMYgd6Gpr3wRCIrzYaqfytL1o7iBNAk=";
};
postPatch = lib.optionalString (!stdenv.hostPlatform.isDarwin) ''
@@ -9,7 +9,7 @@
buildPythonPackage rec {
pname = "lxmf";
version = "0.8.0";
version = "0.9.1";
pyproject = true;
disabled = pythonOlder "3.7";
@@ -18,7 +18,7 @@ buildPythonPackage rec {
owner = "markqvist";
repo = "lxmf";
tag = version;
hash = "sha256-toxie5QdrgwyvC9v0G7mvGS6/ZEqA5gpRtEeaHgspD0=";
hash = "sha256-5sY6Sf4oRwSXQR0YAfqeSmW1aASTT2iZLd5+BFx+5Mw=";
};
build-system = [ setuptools ];
@@ -12,7 +12,7 @@
buildPythonPackage rec {
pname = "nomadnet";
version = "0.8.0";
version = "0.9.1";
pyproject = true;
disabled = pythonOlder "3.7";
@@ -21,7 +21,7 @@ buildPythonPackage rec {
owner = "markqvist";
repo = "NomadNet";
tag = version;
hash = "sha256-9XuwVz7p05jgFkDMuag07ibXxjM+MhkL4dLdRs/O3NI=";
hash = "sha256-Rqs0x5KF3Nb/VMNBr6IriDWX7th4OrBj3x5tQhUIU3U=";
};
build-system = [ setuptools ];
@@ -2,14 +2,20 @@
lib,
buildPythonPackage,
fetchFromGitHub,
filelock,
# build-system
poetry-core,
# optional dependencies
filelock,
psycopg,
psycopg-pool,
redis,
# test
pytestCheckHook,
pytest-asyncio,
pytest-xdist,
redis,
redisTestHook,
}:
@@ -41,6 +47,14 @@ buildPythonPackage rec {
];
};
# Show each test name and track the slowest
# This helps with identifying bottlenecks in the test suite
# that are causing the build to time out on Hydra.
pytestFlags = [
"--durations=10"
"-vv"
];
nativeCheckInputs = [
pytestCheckHook
pytest-asyncio
@@ -49,18 +63,25 @@ buildPythonPackage rec {
]
++ lib.flatten (lib.attrValues optional-dependencies);
disabledTests = [
# hangs
"test_limiter_01"
disabledTestPaths = [
# Slow: > 1.5 seconds/test run standalone on a fast machine
# (Apple M3 Max with highest performance settings and 36GB RAM)
# and/or hang under load
# https://github.com/vutran1710/PyrateLimiter/issues/245
# https://github.com/vutran1710/PyrateLimiter/issues/247
"tests/test_bucket_all.py"
"tests/test_bucket_factory.py"
"tests/test_limiter.py"
"tests/test_multiprocessing.py"
];
pythonImportsCheck = [ "pyrate_limiter" ];
meta = with lib; {
meta = {
description = "Python Rate-Limiter using Leaky-Bucket Algorimth Family";
homepage = "https://github.com/vutran1710/PyrateLimiter";
changelog = "https://github.com/vutran1710/PyrateLimiter/blob/${src.tag}/CHANGELOG.md";
license = licenses.mit;
maintainers = with maintainers; [ kranzes ];
license = lib.licenses.mit;
maintainers = with lib.maintainers; [ kranzes ];
};
}
@@ -9,14 +9,14 @@
buildPythonPackage rec {
pname = "tencentcloud-sdk-python";
version = "3.0.1481";
version = "3.0.1482";
pyproject = true;
src = fetchFromGitHub {
owner = "TencentCloud";
repo = "tencentcloud-sdk-python";
tag = version;
hash = "sha256-bqfF1Z1hrFT2HR5At5v9gKWdKY/OEHTCBgGPo4LnStE=";
hash = "sha256-dllmMdjI4osrtdTN5qo2k/KtEKDpF9G1Ul3JkegvMt0=";
};
build-system = [ setuptools ];
+21 -1
View File
@@ -1,10 +1,30 @@
{
"game": {
"latest": {
"linux": "52.05",
"linux": "53.02",
"darwin": "0.47.05"
},
"versions": {
"53.02": {
"df": {
"version": "53.02",
"urls": {
"linux": {
"url": "https://www.bay12games.com/dwarves/df_53_02_linux.tar.bz2",
"outputHash": "sha256-SprD05MMynNCBr2oKnBYvimm+RmOoceEC2MF9IhCc5Q="
}
}
},
"hack": {
"version": "53.02-r1",
"git": {
"url": "https://github.com/DFHack/dfhack.git",
"revision": "53.02-r1",
"outputHash": "sha256-ybDaFYNVhNS1xJU/dD8KBzNu3ceetFbvX7xNp5DLzyU="
},
"xmlRev": "99cb51ac849a17652dbb74efa757df5b5716a9ba"
}
},
"52.05": {
"df": {
"version": "52.05",
+1 -4
View File
@@ -2,10 +2,7 @@
Test CUDA packages.
This release file is currently not tested on hydra.nixos.org
because it requires unfree software, but it is tested by
https://hydra.nix-community.org/jobset/nixpkgs/cuda-nixos-unstable.
Cf. https://github.com/nix-community/infra/pull/1335
because it requires unfree software.
Test for example like this: