Merge branch staging-next into haskell-updates

This commit is contained in:
sternenseemann
2025-06-01 23:13:23 +02:00
652 changed files with 13288 additions and 8441 deletions
+11 -10
View File
@@ -11,6 +11,7 @@ on:
permissions:
contents: read
issues: write
pull-requests: write
jobs:
@@ -49,13 +50,13 @@ jobs:
- name: "Add 'has: port to stable' label"
if: steps.backport.outputs.created_pull_numbers != ''
env:
# Not the app on purpose to avoid triggering another workflow run after adding this label
GH_TOKEN: ${{ github.token }}
REPOSITORY: ${{ github.repository }}
NUMBER: ${{ github.event.number }}
run: |
gh api \
--method POST \
/repos/"$REPOSITORY"/issues/"$NUMBER"/labels \
-f "labels[]=8.has: port to stable"
uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea # v7.0.1
with:
# Not using the app on purpose to avoid triggering another workflow run after adding this label.
script: |
await github.rest.issues.addLabels({
owner: context.repo.owner,
repo: context.repo.repo,
issue_number: context.payload.pull_request.number,
labels: [ '8.has: port to stable' ]
})
+107 -2
View File
@@ -10,7 +10,12 @@ on:
- 'staging-**'
- '!staging-next'
permissions: {}
concurrency:
group: ${{ github.workflow }}-${{ github.event_name }}-${{ github.head_ref || github.run_id }}
cancel-in-progress: true
permissions:
pull-requests: write
jobs:
check:
@@ -24,8 +29,108 @@ jobs:
path: trusted
- name: Check cherry-picks
id: check
continue-on-error: true
env:
BASE_SHA: ${{ github.event.pull_request.base.sha }}
HEAD_SHA: ${{ github.event.pull_request.head.sha }}
run: |
./trusted/ci/check-cherry-picks.sh "$BASE_SHA" "$HEAD_SHA"
./trusted/ci/check-cherry-picks.sh "$BASE_SHA" "$HEAD_SHA" checked-cherry-picks.md
- name: Prepare review
if: steps.check.outcome == 'failure'
uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea # v7.0.1
with:
script: |
const { readFile, writeFile } = require('node:fs/promises')
const job_url = (await github.rest.actions.listJobsForWorkflowRun({
owner: context.repo.owner,
repo: context.repo.repo,
run_id: context.runId
})).data.jobs[0].html_url + '?pr=' + context.payload.pull_request.number
const header = await readFile('trusted/ci/check-cherry-picks.md')
const body = await readFile('checked-cherry-picks.md')
const footer =
`\n_Hint: The full diffs are also available in the [runner logs](${job_url}) with slightly better highlighting._`
const review = header + body + footer
await writeFile('review.md', review)
core.summary.addRaw(review)
core.summary.write()
- name: Request changes
if: ${{ github.event_name == 'pull_request_target' && steps.check.outcome == 'failure' }}
uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea # v7.0.1
with:
script: |
const { readFile } = require('node:fs/promises')
const body = await readFile('review.md', 'utf-8')
const pendingReview = (await github.paginate(github.rest.pulls.listReviews, {
owner: context.repo.owner,
repo: context.repo.repo,
pull_number: context.payload.pull_request.number
})).find(review =>
review.user.login == 'github-actions[bot]' && (
// If a review is still pending, we can just update this instead
// of posting a new one.
review.state == 'CHANGES_REQUESTED' ||
// No need to post a new review, if an older one with the exact
// same content had already been dismissed.
review.body == body
)
)
// Either of those two requests could fail for very long comments. This can only happen
// with multiple commits all hitting the truncation limit for the diff. If you ever hit
// this case, consider just splitting up those commits into multiple PRs.
if (pendingReview) {
await github.rest.pulls.updateReview({
owner: context.repo.owner,
repo: context.repo.repo,
pull_number: context.payload.pull_request.number,
review_id: pendingReview.id,
body
})
} else {
await github.rest.pulls.createReview({
owner: context.repo.owner,
repo: context.repo.repo,
pull_number: context.payload.pull_request.number,
event: 'REQUEST_CHANGES',
body
})
}
- name: Dismiss old reviews
if: ${{ github.event_name == 'pull_request_target' && steps.check.outcome == 'success' }}
uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea # v7.0.1
with:
script: |
await Promise.all(
(await github.paginate(github.rest.pulls.listReviews, {
owner: context.repo.owner,
repo: context.repo.repo,
pull_number: context.payload.pull_request.number
})).filter(review =>
review.user.login == 'github-actions[bot]' &&
review.state == 'CHANGES_REQUESTED'
).map(async (review) => {
await github.rest.pulls.dismissReview({
owner: context.repo.owner,
repo: context.repo.repo,
pull_number: context.payload.pull_request.number,
review_id: review.id,
message: 'All cherry-picks are good now, thank you!'
})
await github.graphql(`mutation($node_id:ID!) {
minimizeComment(input: {
classifier: RESOLVED,
subjectId: $node_id
})
{ clientMutationId }
}`, { node_id: review.node_id })
})
)
+4
View File
@@ -6,6 +6,10 @@ on:
- .github/workflows/check-format.yml
pull_request_target:
concurrency:
group: ${{ github.workflow }}-${{ github.event_name }}-${{ github.head_ref || github.run_id }}
cancel-in-progress: true
permissions: {}
jobs:
+4
View File
@@ -9,6 +9,10 @@ on:
- 'shell.nix'
- 'ci/**'
concurrency:
group: ${{ github.workflow }}-${{ github.event_name }}-${{ github.head_ref || github.run_id }}
cancel-in-progress: true
permissions: {}
jobs:
+4
View File
@@ -29,6 +29,10 @@ on:
pull_request_target:
types: [opened, ready_for_review, synchronize, reopened]
concurrency:
group: ${{ github.workflow }}-${{ github.event_name }}-${{ github.head_ref || github.run_id }}
cancel-in-progress: true
permissions: {}
env:
+30
View File
@@ -0,0 +1,30 @@
name: Dismissed Review
on:
pull_request_review:
types: [dismissed]
permissions:
pull-requests: write
jobs:
# The check-cherry-picks workflow creates review comments,
# that should sometimes be manually dismissed.
# When a CI-generated review is dismissed, this job automatically
# minimizes it, to prevent it from cluttering the PR.
minimize:
name: Minimize as resolved
if: github.event.review.user.login == 'github-actions[bot]'
runs-on: ubuntu-24.04-arm
steps:
- uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea # v7.0.1
with:
script: |
await github.graphql(`mutation($node_id:ID!) {
minimizeComment(input: {
classifier: RESOLVED,
subjectId: $node_id
})
{ clientMutationId }
}`, { node_id: context.payload.review.node_id })
+18 -13
View File
@@ -16,6 +16,10 @@ on:
pull_request_target:
types: [edited]
concurrency:
group: ${{ github.workflow }}-${{ github.event_name }}-${{ github.head_ref || github.run_id }}
cancel-in-progress: true
permissions: {}
jobs:
@@ -34,16 +38,17 @@ jobs:
private-key: ${{ secrets.NIXPKGS_CI_APP_PRIVATE_KEY }}
permission-pull-requests: write
- env:
GH_TOKEN: ${{ steps.app-token.outputs.token }}
REPOSITORY: ${{ github.repository }}
NUMBER: ${{ github.event.number }}
run: |
gh api \
--method PATCH \
/repos/"$REPOSITORY"/pulls/"$NUMBER" \
-f "state=closed"
gh api \
--method PATCH \
/repos/"$REPOSITORY"/pulls/"$NUMBER" \
-f "state=open"
- uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea # v7.0.1
with:
github-token: ${{ steps.app-token.outputs.token }}
script: |
function changeState(state) {
return github.rest.pulls.update({
owner: context.repo.owner,
repo: context.repo.repo,
pull_number: context.payload.pull_request.number,
state
})
}
await changeState('closed')
await changeState('open')
+4
View File
@@ -6,6 +6,10 @@ on:
- .github/workflows/eval-aliases.yml
pull_request_target:
concurrency:
group: ${{ github.workflow }}-${{ github.event_name }}-${{ github.head_ref || github.run_id }}
cancel-in-progress: true
permissions: {}
jobs:
+114 -111
View File
@@ -4,8 +4,8 @@ on:
pull_request:
paths:
- .github/workflows/eval.yml
- .github/workflows/reviews.yml # needs eval results from the same event type
pull_request_target:
types: [opened, ready_for_review, synchronize, reopened]
push:
# Keep this synced with ci/request-reviews/dev-branches.txt
branches:
@@ -16,6 +16,10 @@ on:
- haskell-updates
- python-updates
concurrency:
group: ${{ github.workflow }}-${{ github.event_name }}-${{ github.head_ref || github.run_id }}
cancel-in-progress: true
permissions: {}
jobs:
@@ -87,44 +91,43 @@ jobs:
- name: Get target run id
if: needs.prepare.outputs.targetSha
id: targetRunId
uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea # v7.0.1
env:
GH_TOKEN: ${{ github.token }}
MATRIX_SYSTEM: ${{ matrix.system }}
REPOSITORY: ${{ github.repository }}
TARGET_SHA: ${{ needs.prepare.outputs.targetSha }}
run: |
# Get the latest eval.yml workflow run for the PR's target commit
if ! run=$(gh api --method GET /repos/"$REPOSITORY"/actions/workflows/eval.yml/runs \
-f head_sha="$TARGET_SHA" -f event=push \
--jq '.workflow_runs | sort_by(.run_started_at) | .[-1]') \
|| [[ -z "$run" ]]; then
echo "Could not find an eval.yml workflow run for $TARGET_SHA, cannot make comparison"
exit 1
fi
echo "Comparing against $(jq .html_url <<< "$run")"
runId=$(jq .id <<< "$run")
with:
script: |
const system = process.env.MATRIX_SYSTEM
const targetSha = process.env.TARGET_SHA
if ! job=$(gh api --method GET /repos/"$REPOSITORY"/actions/runs/"$runId"/jobs \
--jq ".jobs[] | select (.name == \"Outpaths ($MATRIX_SYSTEM)\")") \
|| [[ -z "$job" ]]; then
echo "Could not find the Outpaths ($MATRIX_SYSTEM) job for workflow run $runId, cannot make comparison"
exit 1
fi
jobId=$(jq .id <<< "$job")
conclusion=$(jq -r .conclusion <<< "$job")
let run_id
try {
run_id = (await github.rest.actions.listWorkflowRuns({
owner: context.repo.owner,
repo: context.repo.repo,
workflow_id: 'eval.yml',
event: 'push',
head_sha: targetSha
})).data.workflow_runs[0].id
} catch {
throw new Error(`Could not find an eval.yml workflow run for ${targetSha}.`)
}
while [[ "$conclusion" == null || "$conclusion" == "" ]]; do
echo "Job not done, waiting 10 seconds before checking again"
sleep 10
conclusion=$(gh api /repos/"$REPOSITORY"/actions/jobs/"$jobId" --jq '.conclusion')
done
core.setOutput('targetRunId', run_id)
if [[ "$conclusion" != "success" ]]; then
echo "Job was not successful (conclusion: $conclusion), cannot make comparison"
exit 1
fi
echo "targetRunId=$runId" >> "$GITHUB_OUTPUT"
// Waiting 120 * 5 sec = 10 min. max.
// 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: `merged-${system}`
})
if (result.data.total_count > 0) return
await new Promise(resolve => setTimeout(resolve, 5000))
}
throw new Error(`No merged-${system} artifact found.`)
- uses: actions/download-artifact@v4
if: steps.targetRunId.outputs.targetRunId
@@ -153,12 +156,13 @@ jobs:
name: diff-${{ matrix.system }}
path: diff/*
tag:
name: Tag
compare:
name: Comparison
runs-on: ubuntu-24.04-arm
needs: [ prepare, outpaths ]
if: needs.prepare.outputs.targetSha
permissions:
issues: write # needed to create *new* labels
pull-requests: write
statuses: write
steps:
@@ -209,87 +213,86 @@ jobs:
name: comparison
path: comparison/*
- name: Build the requestReviews derivation
run: nix-build trusted/ci -A requestReviews
- name: Labelling pull request
if: ${{ github.event_name == 'pull_request_target' && github.repository_owner == 'NixOS' }}
env:
GH_TOKEN: ${{ github.token }}
REPOSITORY: ${{ github.repository }}
NUMBER: ${{ github.event.number }}
run: |
# Get all currently set labels that we manage
gh api \
/repos/"$REPOSITORY"/issues/"$NUMBER"/labels \
--jq '.[].name | select(startswith("10.rebuild") or . == "11.by: package-maintainer")' \
| sort > before
if: ${{ github.event_name == 'pull_request_target' }}
uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea # v7.0.1
with:
script: |
const { readFile } = require('node:fs/promises')
# And the labels that should be there
jq -r '.labels[]' comparison/changed-paths.json \
| sort > after
const pr = {
owner: context.repo.owner,
repo: context.repo.repo,
issue_number: context.payload.pull_request.number
}
# Remove the ones not needed anymore
while read -r toRemove; do
echo "Removing label $toRemove"
gh api \
--method DELETE \
/repos/"$REPOSITORY"/issues/"$NUMBER"/labels/"$toRemove"
done < <(comm -23 before after)
// Get all currently set labels that we manage
const before =
(await github.paginate(github.rest.issues.listLabelsOnIssue, pr))
.map(({ name }) => name)
.filter(name => name.startsWith('10.rebuild') || name == '11.by: package-maintainer')
# And add the ones that aren't set already
while read -r toAdd; do
echo "Adding label $toAdd"
gh api \
--method POST \
/repos/"$REPOSITORY"/issues/"$NUMBER"/labels \
-f "labels[]=$toAdd"
done < <(comm -13 before after)
// And the labels that should be there
const after = JSON.parse(await readFile('comparison/changed-paths.json', 'utf-8')).labels
// Remove the ones not needed anymore
await Promise.all(
before.filter(name => !after.includes(name))
.map(name => github.rest.issues.removeLabel({
...pr,
name
}))
)
// And add the ones that aren't set already
const added = after.filter(name => !before.includes(name))
if (added.length > 0) {
await github.rest.issues.addLabels({
...pr,
labels: added
})
}
- name: Add eval summary to commit statuses
if: ${{ github.event_name == 'pull_request_target' && github.repository_owner == 'NixOS' }}
env:
GH_TOKEN: ${{ github.token }}
PR_HEAD_SHA: ${{ github.event.pull_request.head.sha }}
NUMBER: ${{ github.event.number }}
run: |
description=$(jq -r '
"Package: added " + (.attrdiff.added | length | tostring) +
", removed " + (.attrdiff.removed | length | tostring) +
", changed " + (.attrdiff.changed | length | tostring) +
", Rebuild: linux " + (.rebuildCountByKernel.linux | tostring) +
", darwin " + (.rebuildCountByKernel.darwin | tostring)
' <comparison/changed-paths.json)
target_url="$GITHUB_SERVER_URL/$GITHUB_REPOSITORY/actions/runs/$GITHUB_RUN_ID?pr=$NUMBER"
gh api --method POST \
-H "Accept: application/vnd.github+json" -H "X-GitHub-Api-Version: 2022-11-28" \
"/repos/$GITHUB_REPOSITORY/statuses/$PR_HEAD_SHA" \
-f "context=Eval / Summary" -f "state=success" -f "description=$description" -f "target_url=$target_url"
# See ./codeowners-v2.yml, reuse the same App because we need the same permissions
# Can't use the token received from permissions above, because it can't get enough permissions
- uses: actions/create-github-app-token@df432ceedc7162793a195dd1713ff69aefc7379e # v2.0.6
if: vars.OWNER_APP_ID
id: app-token
if: ${{ github.event_name == 'pull_request_target' }}
uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea # v7.0.1
with:
app-id: ${{ vars.OWNER_APP_ID }}
private-key: ${{ secrets.OWNER_APP_PRIVATE_KEY }}
permission-administration: read
permission-members: read
permission-pull-requests: write
script: |
const { readFile } = require('node:fs/promises')
const changed = JSON.parse(await readFile('comparison/changed-paths.json', 'utf-8'))
const description =
'Package: ' + [
`added ${changed.attrdiff.added.length}`,
`removed ${changed.attrdiff.removed.length}`,
`changed ${changed.attrdiff.changed.length}`
].join(', ') +
' — Rebuild: ' + [
`linux ${changed.rebuildCountByKernel.linux}`,
`darwin ${changed.rebuildCountByKernel.darwin}`
].join(', ')
- name: Requesting maintainer reviews
if: ${{ steps.app-token.outputs.token && github.repository_owner == 'NixOS' }}
env:
GH_TOKEN: ${{ github.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 \
| GH_TOKEN=${{ steps.app-token.outputs.token }} result/bin/request-reviewers.sh "$REPOSITORY" "$NUMBER" "$AUTHOR"
const { serverUrl, repo, runId, payload } = context
const target_url =
`${serverUrl}/${repo.owner}/${repo.repo}/actions/runs/${runId}?pr=${payload.pull_request.number}`
await github.rest.repos.createCommitStatus({
owner: repo.owner,
repo: repo.repo,
sha: payload.pull_request.head.sha,
context: 'Eval / Summary',
state: 'success',
description,
target_url
})
reviewers:
name: Reviewers
# No dependency on "compare", so that it can start at the same time.
# We only wait for the "comparison" artifact to be available, which makes the start-to-finish time
# for the eval workflow considerably faster.
needs: [ prepare, outpaths ]
if: needs.prepare.outputs.targetSha
uses: ./.github/workflows/reviewers.yml
secrets: inherit
with:
caller: ${{ github.workflow }}
+6 -1
View File
@@ -8,15 +8,20 @@ name: "Label PR"
on:
pull_request_target:
concurrency:
group: ${{ github.workflow }}-${{ github.event_name }}-${{ github.head_ref || github.run_id }}
cancel-in-progress: true
permissions:
contents: read
issues: write # needed to create *new* labels
pull-requests: write
jobs:
labels:
name: label-pr
runs-on: ubuntu-24.04-arm
if: "github.repository_owner == 'NixOS' && !contains(github.event.pull_request.title, '[skip treewide]')"
if: "!contains(github.event.pull_request.title, '[skip treewide]')"
steps:
- uses: actions/labeler@8558fd74291d67161a8a78ce36a881fa63b766a9 # v5.0.0
if: |
+4
View File
@@ -9,6 +9,10 @@ on:
- 'lib/**'
- 'maintainers/**'
concurrency:
group: ${{ github.workflow }}-${{ github.event_name }}-${{ github.head_ref || github.run_id }}
cancel-in-progress: true
permissions: {}
jobs:
+6 -1
View File
@@ -7,6 +7,7 @@ on:
pull_request_target:
branches:
- master
- release-*
paths:
- "nixos/**"
# Also build when the nixpkgs doc changed, since we take things like
@@ -17,6 +18,10 @@ on:
# Since the lib functions are used to 'massage' the options before producing the manual
- "lib/**"
concurrency:
group: ${{ github.workflow }}-${{ github.event_name }}-${{ github.head_ref || github.run_id }}
cancel-in-progress: true
permissions: {}
jobs:
@@ -52,7 +57,7 @@ jobs:
- name: Build NixOS manual
id: build-manual
run: NIX_PATH=nixpkgs=$(pwd)/untrusted nix-build --option restrict-eval true untrusted/ci -A manual-nixos --argstr system ${{ matrix.system }}
run: nix-build untrusted/ci -A manual-nixos --argstr system ${{ matrix.system }}
- name: Upload NixOS manual
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2
+5 -3
View File
@@ -5,13 +5,15 @@ on:
paths:
- .github/workflows/manual-nixpkgs-v2.yml
pull_request_target:
branches:
- master
paths:
- 'doc/**'
- 'lib/**'
- 'pkgs/by-name/ni/nixdoc/**'
concurrency:
group: ${{ github.workflow }}-${{ github.event_name }}-${{ github.head_ref || github.run_id }}
cancel-in-progress: true
permissions: {}
jobs:
@@ -38,4 +40,4 @@ jobs:
authToken: '${{ secrets.CACHIX_AUTH_TOKEN }}'
- name: Building Nixpkgs manual
run: NIX_PATH=nixpkgs=$(pwd)/untrusted nix-build --option restrict-eval true untrusted/ci -A manual-nixpkgs -A manual-nixpkgs-tests
run: nix-build untrusted/ci -A manual-nixpkgs -A manual-nixpkgs-tests
+4
View File
@@ -6,6 +6,10 @@ on:
- .github/workflows/nix-parse-v2.yml
pull_request_target:
concurrency:
group: ${{ github.workflow }}-${{ github.event_name }}-${{ github.head_ref || github.run_id }}
cancel-in-progress: true
permissions: {}
jobs:
+4
View File
@@ -11,6 +11,10 @@ on:
- .github/workflows/nixpkgs-vet.yml
pull_request_target:
concurrency:
group: ${{ github.workflow }}-${{ github.event_name }}-${{ github.head_ref || github.run_id }}
cancel-in-progress: true
permissions: {}
# We don't use a concurrency group here, because the action is triggered quite often (due to the PR edit trigger), and contributors would get notified on any canceled run.
+107
View File
@@ -0,0 +1,107 @@
# 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:
paths:
- .github/workflows/reviewers.yml
pull_request_target:
types: [ready_for_review]
workflow_call:
inputs:
caller:
description: Name of the calling workflow.
required: true
type: string
concurrency:
group: ${{ inputs.caller }}-${{ github.workflow }}-${{ github.event_name }}-${{ github.head_ref || github.run_id }}
cancel-in-progress: true
permissions: {}
jobs:
request:
name: Request
runs-on: ubuntu-24.04-arm
steps:
- name: Check out the PR at the base commit
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
with:
path: trusted
sparse-checkout: ci
- name: Install Nix
uses: cachix/install-nix-action@526118121621777ccd86f79b04685a9319637641 # v31
with:
extra_nix_config: sandbox = true
- name: Build the requestReviews derivation
run: nix-build trusted/ci -A requestReviews
# See ./codeowners-v2.yml, reuse the same App because we need the same permissions
# Can't use the token received from permissions above, because it can't get enough permissions
- uses: actions/create-github-app-token@df432ceedc7162793a195dd1713ff69aefc7379e # v2.0.6
if: 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
# 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@60a0d83039c74a4aee543508d2ffcb1c3799cdea # v7.0.1
with:
script: |
const run_id = (await github.rest.actions.listWorkflowRuns({
owner: context.repo.owner,
repo: context.repo.repo,
workflow_id: 'eval.yml',
event: context.eventName,
head_sha: context.payload.pull_request.head.sha
})).data.workflow_runs[0].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: 'comparison'
})
if (result.data.total_count > 0) return
await new Promise(resolve => setTimeout(resolve, 5000))
}
throw new Error("No comparison artifact found.")
- name: Download the comparison results
uses: actions/download-artifact@fa0a91b85d4f404e444e00e005971372dc801d16 # v4.1.8
with:
pattern: comparison
path: comparison
merge-multiple: true
- name: Requesting maintainer reviews
if: ${{ steps.app-token.outputs.token }}
env:
GH_TOKEN: ${{ github.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 \
| GH_TOKEN=${{ steps.app-token.outputs.token }} result/bin/request-reviewers.sh "$REPOSITORY" "$NUMBER" "$AUTHOR"
+7
View File
@@ -0,0 +1,7 @@
This report is automatically generated by the `check-cherry-picks` CI workflow.
Some of the commits in this PR have not been cherry-picked exactly and require the author's and reviewer's attention.
Please make sure to follow the [backporting guidelines](https://github.com/NixOS/nixpkgs/blob/master/CONTRIBUTING.md#how-to-backport-pull-requests) and cherry-pick with the `-x` flag. This requires changes to go to the unstable branches (`master` / `staging`) first, before backporting them.
Occasionally, it is not possible to cherry-pick exactly the same patch. This most frequently happens when resolving merge conflicts while cherry-picking or when updating minor versions of packages which have already advanced to the next major on unstable. If you need to merge this PR despite the warnings, please [dismiss](https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/reviewing-changes-in-pull-requests/dismissing-a-pull-request-review) this review.
+73 -37
View File
@@ -1,13 +1,16 @@
#!/usr/bin/env bash
# Find alleged cherry-picks
set -eo pipefail
set -euo pipefail
if [ $# != "2" ] ; then
echo "usage: check-cherry-picks.sh base_rev head_rev"
if [[ $# != "2" && $# != "3" ]] ; then
echo "usage: check-cherry-picks.sh base_rev head_rev [markdown_file]"
exit 2
fi
markdown_file="$(realpath ${3:-/dev/null})"
[ -v 3 ] && rm -f "$markdown_file"
# Make sure we are inside the nixpkgs repo, even when called from outside
cd "$(dirname "${BASH_SOURCE[0]}")"
@@ -19,11 +22,43 @@ remote="$(git remote -v | grep -i 'NixOS/nixpkgs' | head -n1 | cut -f1 || true)"
commits="$(git rev-list --reverse "$1..$2")"
while read -r new_commit_sha ; do
if [ -z "$new_commit_sha" ] ; then
continue # skip empty lines
log() {
type="$1"
shift 1
local -A prefix
prefix[success]=" ✔ "
if [ -v GITHUB_ACTIONS ]; then
prefix[warning]="::warning::"
prefix[error]="::error::"
else
prefix[warning]=" ⚠ "
prefix[error]=" ✘ "
fi
if [ "$GITHUB_ACTIONS" = 'true' ] ; then
echo "${prefix[$type]}$@"
# Only logging errors and warnings, which allows comparing the markdown file
# between pushes to the PR. Even if a new, proper cherry-pick, commit is added
# it won't change the markdown file's content and thus not trigger another comment.
if [ "$type" != "success" ]; then
local -A alert
alert[warning]="WARNING"
alert[error]="CAUTION"
echo >> $markdown_file
echo "> [!${alert[$type]}]" >> $markdown_file
echo "> $@" >> $markdown_file
fi
}
endgroup() {
if [ -v GITHUB_ACTIONS ] ; then
echo ::endgroup::
fi
}
while read -r new_commit_sha ; do
if [ -v GITHUB_ACTIONS ] ; then
echo "::group::Commit $new_commit_sha"
else
echo "================================================="
@@ -37,15 +72,8 @@ while read -r new_commit_sha ; do
| grep -Eoi -m1 '[0-9a-f]{40}' || true
)
if [ -z "$original_commit_sha" ] ; then
if [ "$GITHUB_ACTIONS" = 'true' ] ; then
echo ::endgroup::
echo -n "::error ::"
else
echo -n " ✘ "
fi
echo "Couldn't locate original commit hash in message"
echo "Note this should not necessarily be treated as a hard fail, but a reviewer's attention should" \
"be drawn to it and github actions have no way of doing that but to raise a 'failure'"
endgroup
log warning "Couldn't locate original commit hash in message of $new_commit_sha."
problem=1
continue
fi
@@ -65,8 +93,6 @@ while read -r new_commit_sha ; do
while read -r picked_branch ; do
if git merge-base --is-ancestor "$original_commit_sha" "$picked_branch" ; then
echo "$original_commit_sha present in branch $picked_branch"
range_diff_common='git --no-pager range-diff
--no-notes
--creation-factor=100
@@ -75,23 +101,38 @@ while read -r new_commit_sha ; do
'
if $range_diff_common --no-color 2> /dev/null | grep -E '^ {4}[+-]{2}' > /dev/null ; then
if [ "$GITHUB_ACTIONS" = 'true' ] ; then
echo ::endgroup::
echo -n "::warning ::"
else
echo -n " ⚠ "
log success "$original_commit_sha present in branch $picked_branch"
endgroup
log warning "Difference between $new_commit_sha and original $original_commit_sha may warrant inspection."
# First line contains commit SHAs, which we already printed.
$range_diff_common --color | tail -n +2
echo -e "> <details><summary>Show diff</summary>\n>" >> $markdown_file
echo '> ```diff' >> $markdown_file
# The output of `git range-diff` is indented with 4 spaces, which we need to match with the
# code blocks indent to get proper syntax highlighting on GitHub.
diff="$($range_diff_common | tail -n +2 | sed -Ee 's/^ {4}/> /g')"
# Also limit the output to 10k bytes (and remove the last, potentially incomplete line), because
# GitHub comments are limited in length. The value of 10k is arbitrary with the assumption, that
# after the range-diff becomes a certain size, a reviewer is better off reviewing the regular diff
# in GitHub's UI anyway, thus treating the commit as "new" and not cherry-picked.
# Note: This could still lead to a too lengthy comment with multiple commits touching the limit. We
# consider this too unlikely to happen, to deal with explicitly.
max_length=10000
if [ "${#diff}" -gt $max_length ]; then
printf -v diff "%s\n\n[...truncated...]" "$(echo "$diff" | head -c $max_length | head -n-1)"
fi
echo "Difference between $new_commit_sha and original $original_commit_sha may warrant inspection:"
echo "$diff" >> $markdown_file
echo '> ```' >> $markdown_file
echo "> </details>" >> $markdown_file
$range_diff_common --color
echo "Note this should not necessarily be treated as a hard fail, but a reviewer's attention should" \
"be drawn to it and github actions have no way of doing that but to raise a 'failure'"
problem=1
else
echo "$original_commit_sha highly similar to $new_commit_sha"
log success "$original_commit_sha present in branch $picked_branch"
log success "$original_commit_sha highly similar to $new_commit_sha"
$range_diff_common --color
[ "$GITHUB_ACTIONS" = 'true' ] && echo ::endgroup::
endgroup
fi
# move on to next commit
@@ -100,13 +141,8 @@ while read -r new_commit_sha ; do
done <<< "$branches"
done
if [ "$GITHUB_ACTIONS" = 'true' ] ; then
echo ::endgroup::
echo -n "::error ::"
else
echo -n " ✘ "
fi
echo "$original_commit_sha not found in any pickable branch"
endgroup
log error "$original_commit_sha given in $new_commit_sha not found in any pickable branch."
problem=1
done <<< "$commits"
+2 -2
View File
@@ -82,8 +82,8 @@ in
# CI jobs
lib-tests = import ../lib/tests/release.nix { inherit pkgs; };
manual-nixos = (import ../nixos/release.nix { }).manual.${system} or null;
manual-nixpkgs = (import ../pkgs/top-level/release.nix { }).manual;
manual-nixpkgs-tests = (import ../pkgs/top-level/release.nix { }).manual.tests;
manual-nixpkgs = (import ../doc { });
manual-nixpkgs-tests = (import ../doc { }).tests;
nixpkgs-vet = pkgs.callPackage ./nixpkgs-vet.nix { };
parse = pkgs.lib.recurseIntoAttrs {
latest = pkgs.callPackage ./parse.nix { nix = pkgs.nixVersions.latest; };
+6 -1
View File
@@ -173,7 +173,12 @@ runCommand "compare"
} >> $out/step-summary.md
fi
jq -r -f ${./generate-step-summary.jq} < ${changed-paths} >> $out/step-summary.md
{
echo
echo "# Packages"
echo
jq -r -f ${./generate-step-summary.jq} < ${changed-paths}
} >> $out/step-summary.md
cp "$maintainersPath" "$out/maintainers.json"
''
+2 -2
View File
@@ -1,4 +1,4 @@
{
"rev": "eaeed9530c76ce5f1d2d8232e08bec5e26f18ec1",
"sha256": "132nimgi1g88fbhddk4b8b1qk68jly494x2mnphyk3xa1d2wy9q7"
"rev": "3d1f29646e4b57ed468d60f9d286cde23a8d1707",
"sha256": "1wzvc9h9a6l9wyhzh892xb5x88kxmbzxb1k8s7fizyyw2q4nqw07"
}
+2 -2
View File
@@ -1,6 +1,6 @@
{
pkgs ? (import ./.. { }),
pkgs ? (import ../ci { }).pkgs,
nixpkgs ? { },
}:
pkgs.nixpkgs-manual.override { inherit nixpkgs; }
pkgs.callPackage ./doc-support/package.nix { inherit nixpkgs; }
+1
View File
@@ -35,6 +35,7 @@ python.section.md
scons.section.md
tauri.section.md
tetex-tex-live.section.md
udevCheckHook.section.md
unzip.section.md
validatePkgConfig.section.md
versionCheckHook.section.md
+36
View File
@@ -0,0 +1,36 @@
# udevCheckHook {#udevcheckhook}
The `udevCheckHook` derivation adds `udevCheckPhase` to the [`preInstallCheckHooks`](#ssec-installCheck-phase),
which finds all udev rules in all outputs and verifies them using `udevadm verify --resolve-names=never --no-style`.
It should be used in any package that has udev rules outputs to ensure the rules are and stay valid.
The hook runs in `installCheckPhase`, requiring `doInstallCheck` is enabled for the hook to take effect:
```nix
{
lib,
stdenv,
udevCheckHook,
# ...
}:
stdenv.mkDerivation (finalAttrs: {
# ...
nativeInstallCheckInputs = [
udevCheckHook
];
doInstallCheck = true;
# ...
})
```
Note that for [`buildPythonPackage`](#buildpythonpackage-function) and [`buildPythonApplication`](#buildpythonapplication-function), `doInstallCheck` is enabled by default.
All outputs are scanned for their `/{etc,lib}/udev/rules.d` paths.
If no rule output is found, the hook is basically a no-op.
The `udevCheckHook` adds a dependency on `systemdMinimal`.
It is internally guarded behind `hostPlatform` supporting udev and `buildPlatform` being able to execute `udevadm`.
The hook does not need explicit platform checks in the places where it is used.
The hook can be disabled using `dontUdevCheck`, which is necessary if you want to run some different task in `installCheckPhase` on a package with broken udev rule outputs.
+9
View File
@@ -469,6 +469,12 @@
"footnote-stdenv-find-inputs-location.__back.0": [
"index.html#footnote-stdenv-find-inputs-location.__back.0"
],
"strictflexarrays1": [
"index.html#strictflexarrays1"
],
"strictflexarrays3": [
"index.html#strictflexarrays3"
],
"tester-shfmt": [
"index.html#tester-shfmt"
],
@@ -2429,6 +2435,9 @@
"tetex-tex-live": [
"index.html#tetex-tex-live"
],
"udevcheckhook": [
"index.html#udevcheckhook"
],
"unzip": [
"index.html#unzip"
],
+1 -7
View File
@@ -1,7 +1 @@
let
pkgs = import ../. {
config = { };
overlays = [ ];
};
in
pkgs.nixpkgs-manual.shell
(import ./default.nix { }).shell
+41 -15
View File
@@ -1166,6 +1166,12 @@
githubId = 2335822;
name = "Alexandre Esteves";
};
alexnabokikh = {
email = "nabokikh@duck.com";
github = "alexnabokikh";
githubId = 42908293;
name = "Alex Nabokikh";
};
alexnortung = {
name = "alexnortung";
email = "alex_nortung@live.dk";
@@ -1331,13 +1337,6 @@
githubId = 9567176;
name = "Alexis Simon";
};
alyaeanyx = {
email = "alyaeanyx@mailbox.org";
github = "alyaeanyx";
githubId = 74795488;
name = "alyaeanyx";
keys = [ { fingerprint = "1F73 8879 5E5A 3DFC E2B3 FA32 87D1 AADC D25B 8DEE"; } ];
};
amadaluzia = {
email = "amad@atl.tools";
github = "amadaluzia";
@@ -6877,6 +6876,12 @@
githubId = 7389000;
name = "Dominic Wrege";
};
dwt = {
email = "spamfaenger@gmx.de";
github = "dwt";
githubId = 57199;
name = "Martin Häcker";
};
dxf = {
email = "dingxiangfei2009@gmail.com";
github = "dingxiangfei2009";
@@ -15720,6 +15725,16 @@
name = "John McParland";
keys = [ { fingerprint = "39D2 171D D733 C718 DD21 285E B326 E14B 05D8 7A4E"; } ];
};
MCSeekeri = {
email = "mcseekeri@outlook.com";
github = "mcseekeri";
githubId = 20928094;
name = "MCSeekeri";
keys = [
{ fingerprint = "5922 79AB D9D6 85EB 9D16 754C ECDC AD89 5A38 4A12"; }
{ fingerprint = "0762 A387 F160 76F1 116C BF13 3276 6666 6666 6666"; }
];
};
McSinyx = {
email = "cnx@loang.net";
github = "McSinyx";
@@ -19149,6 +19164,13 @@
githubId = 13225611;
name = "Nicolas Martin";
};
pentane = {
email = "cyclopentane@aidoskyneen.eu";
github = "cyclic-pentane";
githubId = 74795488;
name = "pentane";
keys = [ { fingerprint = "4231 75F6 8360 68C8 2ACB AEDA 63F4 EC2F FE55 0874"; } ];
};
perchun = {
name = "Perchun Pak";
email = "nixpkgs@perchun.it";
@@ -21768,6 +21790,12 @@
githubId = 7309170;
name = "Ryota Kameoka";
};
ryota2357 = {
email = "contact@ryota2357.com";
github = "ryota2357";
githubId = 61523777;
name = "Ryota Otsuki";
};
rypervenche = {
email = "git@ryper.org";
github = "rypervenche";
@@ -26242,14 +26270,6 @@
githubId = 230381;
name = "Daniel Nilsson";
};
vrifox = {
email = "vrifox@vrifox.cc";
github = "vrifox";
githubId = 109021367;
keys = [ { fingerprint = "413C 73F0 C5BD 6318 826A 42D9 D400 98E5 B60B 2197"; } ];
matrix = "@vri:cozy.town";
name = "Vri";
};
vrinek = {
email = "vrinek@hey.com";
github = "vrinek";
@@ -27090,6 +27110,12 @@
githubId = 99486674;
name = "";
};
yanek = {
name = "Noé Ksiazek";
email = "noe.ksiazek@pm.me";
github = "yanek";
githubId = 5952366;
};
yanganto = {
name = "Antonio Yang";
email = "yanganto@gmail.com";
+2 -1
View File
@@ -8,6 +8,7 @@
baseOptionsJSON ? null,
warningsAreErrors ? true,
prefix ? ../../..,
checkRedirects ? true,
}:
let
@@ -146,7 +147,7 @@ rec {
nixos-render-docs -j $NIX_BUILD_CORES manual html \
--manpage-urls ${manpageUrls} \
--redirects ${./redirects.json} \
${if checkRedirects then "--redirects ${./redirects.json}" else ""} \
--revision ${escapeShellArg revision} \
--generator "nixos-render-docs ${pkgs.lib.version}" \
--stylesheet style.css \
@@ -11,6 +11,7 @@
<!-- To avoid merge conflicts, consider adding your item at an arbitrary place in the list instead. -->
- [gtklock](https://github.com/jovanlanik/gtklock), a GTK-based lockscreen for Wayland. Available as [programs.gtklock](#opt-programs.gtklock.enable).
- [Chrysalis](https://github.com/keyboardio/Chrysalis), a graphical configurator for Kaleidoscope-powered keyboards. Available as [programs.chrysalis](#opt-programs.chrysalis.enable).
- [FileBrowser](https://filebrowser.org/), a web application for managing and sharing files. Available as [services.filebrowser](#opt-services.filebrowser.enable).
@@ -25,6 +26,8 @@
- The `services.polipo` module has been removed as `polipo` is unmaintained and archived upstream.
- The Pocket ID module ([`services.pocket-id`][#opt-services.pocket-id.enable]) and package (`pocket-id`) has been updated to 1.0.0. Some environment variables have been changed or removed, see the [migration guide](https://pocket-id.org/docs/setup/migrate-to-v1/).
- `renovate` was updated to v40. See the [upstream release notes](https://github.com/renovatebot/renovate/releases/tag/40.0.0) for breaking changes.
## Other Notable Changes {#sec-release-25.11-notable-changes}
+9
View File
@@ -69,6 +69,7 @@ let
version = config.system.nixos.release;
revision = "release-${version}";
extraSources = cfg.nixos.extraModuleSources;
checkRedirects = cfg.nixos.checkRedirects;
options =
let
scrubbedEval = evalModules {
@@ -353,6 +354,14 @@ in
'';
};
nixos.checkRedirects = mkOption {
type = types.bool;
default = true;
description = ''
Check redirects for manualHTML.
'';
};
};
};
+2
View File
@@ -180,6 +180,7 @@
./programs/cdemu.nix
./programs/cfs-zen-tweaks.nix
./programs/chromium.nix
./programs/chrysalis.nix
./programs/clash-verge.nix
./programs/cnping.nix
./programs/command-not-found/command-not-found.nix
@@ -261,6 +262,7 @@
./programs/nano.nix
./programs/nautilus-open-any-terminal.nix
./programs/nbd.nix
./programs/nekoray.nix
./programs/neovim.nix
./programs/nethoscope.nix
./programs/nexttrace.nix
+25
View File
@@ -0,0 +1,25 @@
{
config,
lib,
pkgs,
...
}:
let
cfg = config.programs.chrysalis;
in
{
options = {
programs.chrysalis = {
enable = lib.mkEnableOption "Chrysalis";
package = lib.mkPackageOption pkgs "Chrysalis" { default = "chrysalis"; };
};
};
config = lib.mkIf cfg.enable {
environment.systemPackages = [ cfg.package ];
services.udev.packages = [ cfg.package ];
};
meta.maintainers = with lib.maintainers; [ atalii ];
}
+90
View File
@@ -0,0 +1,90 @@
{
config,
pkgs,
lib,
...
}:
let
cfg = config.programs.nekoray;
in
{
options = {
programs.nekoray = {
enable = lib.mkEnableOption "nekoray, a GUI proxy configuration manager";
package = lib.mkPackageOption pkgs "nekoray" { };
tunMode = {
enable = lib.mkEnableOption "TUN mode of nekoray";
setuid = lib.mkEnableOption ''
setting suid bit for nekobox_core to run as root, which is less
secure than default setcap method but closer to upstream assumptions.
Enable this if you find the default setcap method configured in
this module doesn't work for you
'';
};
};
};
config = lib.mkIf cfg.enable {
environment.systemPackages = [ cfg.package ];
security.wrappers.nekobox_core = lib.mkIf cfg.tunMode.enable {
source = "${cfg.package}/share/nekoray/nekobox_core";
owner = "root";
group = "root";
setuid = lib.mkIf cfg.tunMode.setuid true;
# Taken from https://github.com/SagerNet/sing-box/blob/dev-next/release/config/sing-box.service
capabilities = lib.mkIf (
!cfg.tunMode.setuid
) "cap_net_admin,cap_net_raw,cap_net_bind_service,cap_sys_ptrace,cap_dac_read_search+ep";
};
# avoid resolvectl password prompt popping up three times
# https://github.com/SagerNet/sing-tun/blob/0686f8c4f210f4e7039c352d42d762252f9d9cf5/tun_linux.go#L1062
# We use a hack here to determine whether the requested process is nekobox_core
# Detect whether its capabilities contain at least `net_admin` and `net_raw`.
# This does not reduce security, as we can already bypass `resolved` with them.
# Alternatives to consider:
# 1. Use suid to execute as a specific user, and check username with polkit.
# However, NixOS module doesn't let us to set setuid and capabilities at the
# same time, and it's tricky to make both work together because of some security
# considerations in the kernel.
# 2. Check cmdline to get executable path. This is insecure because the process can
# change its own cmdline. `/proc/<pid>/exe` is reliable but kernel forbids
# checking that entry of process from different users, and polkit runs `spawn`
# as an unprivileged user.
# 3. Put nekobox_core into a systemd service, and let polkit check service name.
# This is the most secure and convenient way but requires heavy modification
# to nekoray source code. Would be good to let upstream support that eventually.
security.polkit.extraConfig =
lib.mkIf (cfg.tunMode.enable && (!cfg.tunMode.setuid) && config.services.resolved.enable)
''
polkit.addRule(function(action, subject) {
const allowedActionIds = [
"org.freedesktop.resolve1.set-domains",
"org.freedesktop.resolve1.set-default-route",
"org.freedesktop.resolve1.set-dns-servers"
];
if (allowedActionIds.indexOf(action.id) !== -1) {
try {
var parentPid = polkit.spawn(["${lib.getExe' pkgs.procps "ps"}", "-o", "ppid=", subject.pid]).trim();
var parentCap = polkit.spawn(["${lib.getExe' pkgs.libcap "getpcaps"}", parentPid]).trim();
if (parentCap.includes("cap_net_admin") && parentCap.includes("cap_net_raw")) {
return polkit.Result.YES;
} else {
return polkit.Result.NOT_HANDLED;
}
} catch (e) {
return polkit.Result.NOT_HANDLED;
}
}
})
'';
};
meta.maintainers = with lib.maintainers; [ aleksana ];
}
@@ -7,11 +7,39 @@
config,
lib,
pkgs,
utils,
...
}:
let
cfg = config.services.desktopManager.cosmic;
excludedCorePkgs = lib.lists.intersectLists corePkgs config.environment.cosmic.excludePackages;
# **ONLY ADD PACKAGES WITHOUT WHICH COSMIC CRASHES, NOTHING ELSE**
corePkgs =
with pkgs;
[
cosmic-applets
cosmic-applibrary
cosmic-bg
cosmic-comp
cosmic-files
config.services.displayManager.cosmic-greeter.package
cosmic-idle
cosmic-launcher
cosmic-notifications
cosmic-osd
cosmic-panel
cosmic-session
cosmic-settings
cosmic-settings-daemon
cosmic-workspaces-epoch
]
++ lib.optionals cfg.xwayland.enable [
# Why would you want to enable XWayland but exclude the package
# providing XWayland support? Doesn't make sense. Add `xwayland` to the
# `corePkgs` list.
xwayland
];
in
{
meta.maintainers = lib.teams.cosmic.members;
@@ -20,10 +48,21 @@ in
services.desktopManager.cosmic = {
enable = lib.mkEnableOption "Enable the COSMIC desktop environment";
showExcludedPkgsWarning = lib.mkEnableOption "Disable the warning for excluding core packages." // {
default = true;
};
xwayland.enable = lib.mkEnableOption "Xwayland support for the COSMIC compositor" // {
default = true;
};
};
environment.cosmic.excludePackages = lib.mkOption {
description = "List of packages to exclude from the COSMIC environment.";
type = lib.types.listOf lib.types.package;
default = [ ];
example = lib.literalExpression "[ pkgs.cosmic-player ]";
};
};
config = lib.mkIf cfg.enable {
@@ -32,45 +71,32 @@ in
"/share/backgrounds"
"/share/cosmic"
];
environment.systemPackages =
with pkgs;
[
adwaita-icon-theme
alsa-utils
cosmic-applets
cosmic-applibrary
cosmic-bg
cosmic-comp
cosmic-edit
cosmic-files
config.services.displayManager.cosmic-greeter.package
cosmic-icons
cosmic-idle
cosmic-launcher
cosmic-notifications
cosmic-osd
cosmic-panel
cosmic-player
cosmic-randr
cosmic-screenshot
cosmic-session
cosmic-settings
cosmic-settings-daemon
cosmic-term
cosmic-wallpapers
cosmic-workspaces-epoch
hicolor-icon-theme
playerctl
pop-icon-theme
pop-launcher
xdg-user-dirs
]
++ lib.optionals cfg.xwayland.enable [
xwayland
]
++ lib.optionals config.services.flatpak.enable [
cosmic-store
];
environment.systemPackages = utils.removePackagesByName (
corePkgs
++ (
with pkgs;
[
adwaita-icon-theme
alsa-utils
cosmic-edit
cosmic-icons
cosmic-player
cosmic-randr
cosmic-screenshot
cosmic-term
cosmic-wallpapers
hicolor-icon-theme
playerctl
pop-icon-theme
pop-launcher
xdg-user-dirs
]
++ lib.optionals config.services.flatpak.enable [
# User may have Flatpaks enabled but might not want the `cosmic-store` package.
cosmic-store
]
)
) config.environment.cosmic.excludePackages;
# Distro-wide defaults for graphical sessions
services.graphical-desktop.enable = true;
@@ -131,5 +157,22 @@ in
services.power-profiles-daemon.enable = lib.mkDefault (
!config.hardware.system76.power-daemon.enable
);
warnings = lib.optionals (cfg.showExcludedPkgsWarning && excludedCorePkgs != [ ]) [
''
The `environment.cosmic.excludePackages` option was used to exclude some
packages from the environment which also includes some packages that the
maintainers of the COSMIC DE deem necessary for the COSMIC DE to start
and initialize. Excluding said packages creates a high probability that
the COSMIC DE will fail to initialize properly, or completely. This is an
unsupported use case. If this was not intentional, please assign an empty
list to the `environment.cosmic.excludePackages` option. If you want to
exclude non-essential packages, please look at the NixOS module for the
COSMIC DE and look for the essential packages in the `corePkgs` list.
You can stop this warning from appearing by setting the option
`services.desktopManager.cosmic.showExcludedPkgsWarning` to `false`.
''
];
};
}
+12 -16
View File
@@ -31,7 +31,7 @@ in
default = false;
description = ''
Whether to open TCP firewall ports, which are specified in
{option}`services.stalwart-mail.settings.listener` on all interfaces.
{option}`services.stalwart-mail.settings.server.listener` on all interfaces.
'';
};
@@ -107,21 +107,17 @@ in
resolver.public-suffix = lib.mkDefault [
"file://${pkgs.publicsuffix-list}/share/publicsuffix/public_suffix_list.dat"
];
config = {
spam-filter.resource = lib.mkDefault "file://${cfg.package}/etc/stalwart/spamfilter.toml";
webadmin =
let
hasHttpListener = builtins.any (listener: listener.protocol == "http") (
lib.attrValues cfg.settings.server.listener
);
in
{
path = "/var/cache/stalwart-mail";
}
// lib.optionalAttrs ((builtins.hasAttr "listener" cfg.settings.server) && hasHttpListener) {
resource = lib.mkDefault "file://${cfg.package.webadmin}/webadmin.zip";
};
};
spam-filter.resource = lib.mkDefault "file://${cfg.package}/etc/stalwart/spamfilter.toml";
webadmin =
let
hasHttpListener = builtins.any (listener: listener.protocol == "http") (
lib.attrValues (cfg.settings.server.listener or { })
);
in
{
path = "/var/cache/stalwart-mail";
resource = lib.mkIf (hasHttpListener) (lib.mkDefault "file://${cfg.package.webadmin}/webadmin.zip");
};
};
# This service stores a potentially large amount of data.
@@ -270,7 +270,7 @@ in
buildDocsInSandbox = false;
doc = ./mautrix-signal.md;
maintainers = with lib.maintainers; [
alyaeanyx
pentane
frederictobiasc
];
};
+1 -1
View File
@@ -69,7 +69,7 @@ in
wantedBy = [ "graphical-session.target" ];
partOf = [ "graphical-session.target" ];
serviceConfig.ExecStart = "${cfg.package}/bin/dwm-status ${configFile}";
serviceConfig.ExecStart = "${cfg.package}/bin/dwm-status ${configFile} --quiet";
};
};
+2 -2
View File
@@ -8,11 +8,11 @@ let
cfg = config.services.octoprint;
baseConfig = {
baseConfig = lib.recursiveUpdate {
plugins.curalegacy.cura_engine = "${pkgs.curaengine_stable}/bin/CuraEngine";
server.port = cfg.port;
webcam.ffmpeg = "${pkgs.ffmpeg.bin}/bin/ffmpeg";
} // lib.optionalAttrs (cfg.host != null) { server.host = cfg.host; };
} (lib.optionalAttrs (cfg.host != null) { server.host = cfg.host; });
fullConfig = lib.recursiveUpdate cfg.extraConfig baseConfig;
@@ -159,5 +159,5 @@ in
}) cfg.interfaces;
};
meta.maintainers = with maintainers; [ alyaeanyx ];
meta.maintainers = with maintainers; [ pentane ];
}
@@ -486,7 +486,7 @@ in
};
meta.maintainers = with lib.maintainers; [
alyaeanyx
pentane
raylas
rvdp
neverbehave
+42 -84
View File
@@ -7,12 +7,16 @@
let
inherit (lib)
concatMap
concatStringsSep
getExe
maintainers
mkEnableOption
mkIf
mkOption
optionalAttrs
optional
mkPackageOption
optional
optionalAttrs
;
inherit (lib.types)
bool
@@ -27,7 +31,7 @@ let
settingsFile = format.generate "pocket-id-env-vars" cfg.settings;
in
{
meta.maintainers = with lib.maintainers; [
meta.maintainers = with maintainers; [
gepbird
ymstnt
];
@@ -56,7 +60,7 @@ in
freeformType = format.type;
options = {
PUBLIC_APP_URL = mkOption {
APP_URL = mkOption {
type = str;
description = ''
The URL where you will access the app.
@@ -71,6 +75,16 @@ in
'';
default = false;
};
ANALYTICS_DISABLED = mkOption {
type = bool;
description = ''
Whether to disable analytics.
See [docs page](https://pocket-id.org/docs/configuration/analytics/).
'';
default = false;
};
};
};
@@ -105,18 +119,36 @@ in
};
config = mkIf cfg.enable {
warnings = (
warnings =
optional (cfg.settings ? MAXMIND_LICENSE_KEY)
"config.services.pocket-id.settings.MAXMIND_LICENSE_KEY will be stored as plaintext in the Nix store. Use config.services.pocket-id.environmentFile instead."
);
++ concatMap
(
# Added 2025-05-27
setting:
optional (cfg.settings ? "${setting}") ''
config.services.pocket-id.settings.${setting} is deprecated.
See https://pocket-id.org/docs/setup/migrate-to-v1/ for migration instructions.
''
)
[
"PUBLIC_APP_URL"
"PUBLIC_UI_CONFIG_DISABLED"
"CADDY_DISABLED"
"CADDY_PORT"
"BACKEND_PORT"
"POSTGRES_CONNECTION_STRING"
"SQLITE_DB_PATH"
"INTERNAL_BACKEND_URL"
];
systemd.tmpfiles.rules = [
"d ${cfg.dataDir} 0755 ${cfg.user} ${cfg.group}"
];
systemd.services = {
pocket-id-backend = {
description = "Pocket ID backend";
pocket-id = {
description = "Pocket ID";
after = [ "network.target" ];
wantedBy = [ "multi-user.target" ];
restartTriggers = [
@@ -130,7 +162,7 @@ in
User = cfg.user;
Group = cfg.group;
WorkingDirectory = cfg.dataDir;
ExecStart = "${cfg.package}/bin/pocket-id-backend";
ExecStart = getExe cfg.package;
Restart = "always";
EnvironmentFile = [
cfg.environmentFile
@@ -169,7 +201,7 @@ in
RestrictRealtime = true;
RestrictSUIDSGID = true;
SystemCallArchitectures = "native";
SystemCallFilter = lib.concatStringsSep " " [
SystemCallFilter = concatStringsSep " " [
"~"
"@clock"
"@cpu-emulation"
@@ -186,80 +218,6 @@ in
UMask = "0077";
};
};
pocket-id-frontend = {
description = "Pocket ID frontend";
after = [
"network.target"
"pocket-id-backend.service"
];
wantedBy = [ "multi-user.target" ];
restartTriggers = [
cfg.package
cfg.environmentFile
settingsFile
];
serviceConfig = {
Type = "simple";
User = cfg.user;
Group = cfg.group;
ExecStart = "${cfg.package}/bin/pocket-id-frontend";
Restart = "always";
EnvironmentFile = [
cfg.environmentFile
settingsFile
];
# Hardening
AmbientCapabilities = "";
CapabilityBoundingSet = "";
DeviceAllow = "";
DevicePolicy = "closed";
#IPAddressDeny = "any"; # communicates with the backend and client
LockPersonality = true;
MemoryDenyWriteExecute = false; # V8_Fatal segfault
NoNewPrivileges = true;
PrivateDevices = true;
PrivateNetwork = false; # communicates with the backend and client
PrivateTmp = true;
PrivateUsers = true;
ProcSubset = "pid";
ProtectClock = true;
ProtectControlGroups = true;
ProtectHome = true;
ProtectHostname = true;
ProtectKernelLogs = true;
ProtectKernelModules = true;
ProtectKernelTunables = true;
ProtectProc = "invisible";
ProtectSystem = "strict";
RemoveIPC = true;
RestrictAddressFamilies = [
"AF_INET"
"AF_INET6"
];
RestrictNamespaces = true;
RestrictRealtime = true;
RestrictSUIDSGID = true;
SystemCallArchitectures = "native";
SystemCallFilter = lib.concatStringsSep " " [
"~"
"@clock"
"@cpu-emulation"
"@debug"
"@module"
"@mount"
"@obsolete"
"@privileged"
"@raw-io"
"@reboot"
"@resources"
"@swap"
];
UMask = "0077";
};
};
};
users.users = optionalAttrs (cfg.user == "pocket-id") {
+2 -26
View File
@@ -18,10 +18,6 @@ let
) cfg.maps
);
addonsFolder = pkgs.linkFarm "addons" (
lib.attrsets.mapAttrs' (name: value: lib.nameValuePair "${name}.jar" value) cfg.addons
);
storageFolder = pkgs.linkFarm "storage" (
lib.attrsets.mapAttrs' (
name: value: lib.nameValuePair "${name}.conf" (format.generate "${name}.conf" value)
@@ -34,8 +30,7 @@ let
"core.conf" = coreConfig;
"webapp.conf" = webappConfig;
"webserver.conf" = webserverConfig;
"packs" = pkgs.linkFarm "packs" cfg.resourcepacks;
"addons" = addonsFolder;
"packs" = pkgs.linkFarm "packs" cfg.packs;
};
inherit (lib) mkOption;
@@ -46,6 +41,7 @@ in
[ "services" "bluemap" "resourcepacks" ]
[ "services" "bluemap" "packs" ]
)
(lib.mkRenamedOptionModule [ "services" "bluemap" "addons" ] [ "services" "bluemap" "packs" ])
];
options.services.bluemap = {
@@ -239,26 +235,6 @@ in
'';
};
addons = mkOption {
type = lib.types.attrsOf lib.types.pathInStore;
default = { };
description = ''
A set of jar addons to be loaded.
See <https://bluemap.bluecolored.de/3rdPartySupport.html> for a list of officially recognized addons.
'';
example = lib.literalExpression ''
{
blueBridge = ./blueBridge.jar;
blueBorder = pkgs.fetchurl {
url = "https://github.com/pop4959/BlueBorder/releases/download/1.1.1/BlueBorder-1.1.1.jar";
hash = "...";
};
}
'';
};
storage = mkOption {
type = lib.types.attrsOf (
lib.types.submodule {
+41 -11
View File
@@ -7,8 +7,8 @@
}:
let
cfg = config.services.filebrowser;
inherit (lib) types;
format = pkgs.formats.json { };
inherit (lib) types;
in
{
options = {
@@ -17,6 +17,18 @@ in
package = lib.mkPackageOption pkgs "filebrowser" { };
user = lib.mkOption {
type = types.str;
default = "filebrowser";
description = "User account under which FileBrowser runs.";
};
group = lib.mkOption {
type = types.str;
default = "filebrowser";
description = "Group under which FileBrowser runs.";
};
openFirewall = lib.mkEnableOption "opening firewall ports for FileBrowser";
settings = lib.mkOption {
@@ -96,7 +108,9 @@ in
CacheDirectory = "filebrowser";
WorkingDirectory = cfg.settings.root;
DynamicUser = true;
User = cfg.user;
Group = cfg.group;
UMask = "0077";
NoNewPrivileges = true;
PrivateDevices = true;
@@ -117,15 +131,31 @@ in
};
};
tmpfiles.settings.filebrowser =
lib.genAttrs
[
cfg.settings.root
(builtins.dirOf cfg.settings.database)
]
(_: {
d.mode = "0700";
});
tmpfiles.settings.filebrowser = {
"${cfg.settings.root}".d = {
inherit (cfg) user group;
mode = "0700";
};
"${cfg.settings.cache-dir}".d = {
inherit (cfg) user group;
mode = "0700";
};
"${builtins.dirOf cfg.settings.database}".d = {
inherit (cfg) user group;
mode = "0700";
};
};
};
users.users = lib.mkIf (cfg.user == "filebrowser") {
filebrowser = {
inherit (cfg) group;
isSystemUser = true;
};
};
users.groups = lib.mkIf (cfg.group == "filebrowser") {
filebrowser = { };
};
networking.firewall.allowedTCPPorts = lib.mkIf cfg.openFirewall [ cfg.settings.port ];
+41 -41
View File
@@ -167,7 +167,7 @@ let
presets.recentlyAddedImages
]
'';
apply = type: if builtins.isFunction type then (type uiPresets) else type;
apply = type: if lib.isFunction type then (type uiPresets) else type;
};
blobs_path = mkOption {
type = types.path;
@@ -324,47 +324,47 @@ let
'';
apply =
srcs:
optionalString (srcs != [ ]) (
pkgs.runCommand "stash-${kind}"
{
inherit srcs;
nativeBuildInputs = [ pkgs.yq-go ];
preferLocalBuild = true;
}
''
find $srcs -mindepth 1 -name '*.yml' | while read plugin_file; do
grep -q "^#pkgignore" "$plugin_file" && continue
pkgs.runCommand "stash-${kind}"
{
inherit srcs;
nativeBuildInputs = [ pkgs.yq-go ];
preferLocalBuild = true;
}
''
mkdir -p $out
touch $out/.keep
find $srcs -mindepth 1 -name '*.yml' | while read plugin_file; do
grep -q "^#pkgignore" "$plugin_file" && continue
plugin_dir=$(dirname $plugin_file)
out_path=$out/$(basename $plugin_dir)
mkdir -p $out_path
ls $plugin_dir | xargs -I{} ln -sf "$plugin_dir/{}" $out_path
plugin_dir=$(dirname $plugin_file)
out_path=$out/$(basename $plugin_dir)
mkdir -p $out_path
ls $plugin_dir | xargs -I{} ln -sf "$plugin_dir/{}" $out_path
env \
plugin_id=$(basename $plugin_file .yml) \
plugin_name="$(yq '.name' $plugin_file)" \
plugin_description="$(yq '.description' $plugin_file)" \
plugin_version="$(yq '.version' $plugin_file)" \
plugin_files="$(find -L $out_path -mindepth 1 -type f -printf "%P\n")" \
yq -n '
.id = strenv(plugin_id) |
.name = strenv(plugin_name) |
(
strenv(plugin_description) as $desc |
with(select($desc == "null"); .metadata = {}) |
with(select($desc != "null"); .metadata.description = $desc)
) |
(
strenv(plugin_version) as $ver |
with(select($ver == "null"); .version = "Unknown") |
with(select($ver != "null"); .version = $ver)
) |
.date = (now | format_datetime("2006-01-02 15:04:05")) |
.files = (strenv(plugin_files) | split("\n"))
' > $out_path/manifest
done
''
);
env \
plugin_id=$(basename $plugin_file .yml) \
plugin_name="$(yq '.name' $plugin_file)" \
plugin_description="$(yq '.description' $plugin_file)" \
plugin_version="$(yq '.version' $plugin_file)" \
plugin_files="$(find -L $out_path -mindepth 1 -type f -printf "%P\n")" \
yq -n '
.id = strenv(plugin_id) |
.name = strenv(plugin_name) |
(
strenv(plugin_description) as $desc |
with(select($desc == "null"); .metadata = {}) |
with(select($desc != "null"); .metadata.description = $desc)
) |
(
strenv(plugin_version) as $ver |
with(select($ver == "null"); .version = "Unknown") |
with(select($ver != "null"); .version = $ver)
) |
.date = (now | format_datetime("2006-01-02 15:04:05")) |
.files = (strenv(plugin_files) | split("\n"))
' > $out_path/manifest
done
'';
};
in
{
@@ -512,7 +512,7 @@ in
ExecStartPre = pkgs.writers.writeBash "stash-setup.bash" (
''
install -d ${cfg.settings.generated}
if [[ ! -z "${toString cfg.mutableSettings}" || ! -f ${cfg.dataDir}/config.yml ]]; then
if [[ -z "${toString cfg.mutableSettings}" || ! -f ${cfg.dataDir}/config.yml ]]; then
env \
password=$(< ${cfg.passwordFile}) \
jwtSecretKeyFile=$(< ${cfg.jwtSecretKeyFile}) \
+2 -2
View File
@@ -390,11 +390,11 @@ in
system.build.etcMetadataImage =
let
etcJson = pkgs.writeText "etc-json" (builtins.toJSON etc');
etcDump = pkgs.runCommand "etc-dump" { } ''
etcDump = pkgs.runCommandLocal "etc-dump" { } ''
${lib.getExe pkgs.buildPackages.python3} ${./build-composefs-dump.py} ${etcJson} > $out
'';
in
pkgs.runCommand "etc-metadata.erofs"
pkgs.runCommandLocal "etc-metadata.erofs"
{
nativeBuildInputs = with pkgs.buildPackages; [
composefs
+7 -5
View File
@@ -112,11 +112,13 @@
gui_apps_to_launch['cosmic-term'] = 'com.system76.CosmicTerm'
for gui_app, app_id in gui_apps_to_launch.items():
machine.succeed(f"su - ${user.name} -c 'WAYLAND_DISPLAY=wayland-1 XDG_RUNTIME_DIR=/run/user/${toString user.uid} ${DISPLAY} {gui_app} >&2 &'", timeout=5)
# Nix builds the following non-commented expression to the following:
# `su - alice -c 'WAYLAND_DISPLAY=wayland-1 XDG_RUNTIME_DIR=/run/user/1000 lswt --json | jq ".toplevels" | grep "^ \\"app-id\\": \\"{app_id}\\"$"' `
machine.wait_until_succeeds(f''''su - ${user.name} -c 'WAYLAND_DISPLAY=wayland-1 XDG_RUNTIME_DIR=/run/user/${toString user.uid} lswt --json | jq ".toplevels" | grep "^ \\"app-id\\": \\"{app_id}\\"$"' '''', timeout=30)
machine.succeed(f"pkill {gui_app}", timeout=5)
# Don't fail the test if binary is absent
if machine.execute(f"su - ${user.name} -c 'command -v {gui_app}'", timeout=5)[0] == 0:
machine.succeed(f"su - ${user.name} -c 'WAYLAND_DISPLAY=wayland-1 XDG_RUNTIME_DIR=/run/user/${toString user.uid} ${DISPLAY} {gui_app} >&2 &'", timeout=5)
# Nix builds the following non-commented expression to the following:
# `su - alice -c 'WAYLAND_DISPLAY=wayland-1 XDG_RUNTIME_DIR=/run/user/1000 lswt --json | jq ".toplevels" | grep "^ \\"app-id\\": \\"{app_id}\\"$"' `
machine.wait_until_succeeds(f''''su - ${user.name} -c 'WAYLAND_DISPLAY=wayland-1 XDG_RUNTIME_DIR=/run/user/${toString user.uid} lswt --json | jq ".toplevels" | grep "^ \\"app-id\\": \\"{app_id}\\"$"' '''', timeout=30)
machine.succeed(f"pkill {gui_app}", timeout=5)
machine.succeed("echo 'test completed succeessfully' > /${testName}", timeout=5)
machine.copy_from_vm('/${testName}')
+2 -2
View File
@@ -5,12 +5,12 @@ let
template-bootstrap3 = pkgs.stdenv.mkDerivation rec {
name = "bootstrap3";
version = "2022-07-27";
version = "2024-02-06";
src = pkgs.fetchFromGitHub {
owner = "giterlizzi";
repo = "dokuwiki-template-bootstrap3";
rev = "v${version}";
hash = "sha256-B3Yd4lxdwqfCnfmZdp+i/Mzwn/aEuZ0ovagDxuR6lxo=";
hash = "sha256-PSA/rHMkM/kMvOV7CP1byL8Ym4Qu7a4Rz+/aPX31x9k=";
};
installPhase = "mkdir -p $out; cp -R * $out/";
};
+1 -1
View File
@@ -8,7 +8,7 @@ let
n: _: lib.strings.hasPrefix "k3s_" n && (builtins.tryEval pkgs.${n}).success
) pkgs;
in
lib.recurseIntoAttrs {
{
airgap-images = lib.mapAttrs (
_: k3s: import ./airgap-images.nix { inherit system pkgs k3s; }
) allK3s;
+2 -7
View File
@@ -15,8 +15,6 @@
enable = true;
settings = {
PORT = 10001;
INTERNAL_BACKEND_URL = "http://localhost:10002";
BACKEND_PORT = 10002;
};
};
};
@@ -29,17 +27,14 @@
inherit (builtins) toString;
in
''
machine.wait_for_unit("pocket-id-backend.service")
machine.wait_for_open_port(${toString settings.BACKEND_PORT})
machine.wait_for_unit("pocket-id-frontend.service")
machine.wait_for_unit("pocket-id.service")
machine.wait_for_open_port(${toString settings.PORT})
backend_status = machine.succeed("curl -L -o /tmp/backend-output -w '%{http_code}' http://localhost:${toString settings.BACKEND_PORT}/api/users/me")
backend_status = machine.succeed("curl -L -o /tmp/backend-output -w '%{http_code}' http://localhost:${toString settings.PORT}/api/users/me")
assert backend_status == "401"
machine.succeed("grep 'You are not signed in' /tmp/backend-output")
frontend_status = machine.succeed("curl -L -o /tmp/frontend-output -w '%{http_code}' http://localhost:${toString settings.PORT}")
assert frontend_status == "200"
machine.succeed("grep 'Sign in to Pocket ID' /tmp/frontend-output")
'';
}
+26
View File
@@ -42,15 +42,31 @@ in
bind = [ "[::]:143" ];
protocol = "imap";
};
"http" = {
bind = [ "[::]:80" ];
protocol = "http";
};
};
session.auth.mechanisms = "[plain]";
session.auth.directory = "'in-memory'";
storage.directory = "in-memory";
storage.data = "rocksdb";
storage.fts = "rocksdb";
storage.blob = "rocksdb";
storage.lookup = "rocksdb";
session.rcpt.directory = "'in-memory'";
queue.outbound.next-hop = "'local'";
store."rocksdb" = {
type = "rocksdb";
path = "/var/lib/stalwart-mail/data";
compression = "lz4";
};
directory."in-memory" = {
type = "memory";
principals = [
@@ -114,9 +130,19 @@ in
main.wait_for_unit("stalwart-mail.service")
main.wait_for_open_port(587)
main.wait_for_open_port(143)
main.wait_for_open_port(80)
main.succeed("test-smtp-submission")
# restart stalwart to test rocksdb compaction of existing database
main.succeed("systemctl restart stalwart-mail.service")
main.wait_for_open_port(587)
main.wait_for_open_port(143)
main.succeed("test-imap-read")
main.succeed("test -d /var/cache/stalwart-mail/STALWART_WEBADMIN")
main.succeed("curl --fail http://localhost")
'';
meta = {
+7 -1
View File
@@ -107,7 +107,7 @@ Now that this is out of the way. To add a package to Nixpkgs:
- XML::Simple, a Perl module: [`pkgs/top-level/perl-packages.nix`](top-level/perl-packages.nix) (search for the `XMLSimple` attribute). Most Perl modules are so simple to build that they are defined directly in `perl-packages.nix`; no need to make a separate file for them.
- Adobe Reader: [`pkgs/applications/misc/adobe-reader/default.nix`](applications/misc/adobe-reader/default.nix). Shows how binary-only packages can be supported. In particular the `postFixup` phase uses `patchelf` to set the RUNPATH and ELF interpreter of the executables so that the right libraries are found at runtime.
- Discord Game SDK: [`pkgs/by-name/di/discord-gamesdk/package.nix`](./by-name/di/discord-gamesdk/package.nix). Shows how binary-only packages can be supported. In particular, the `autoPatchelfHook` is used to set the RUNPATH and ELF interpreter of the executables so that the right libraries are found at runtime.
Some notes:
@@ -943,6 +943,9 @@ Reviewing process:
- Ensure that the meta field information [fits the guidelines](#meta-attributes) and is correct:
- License can change with version updates, so it should be checked to match the upstream license.
- If the package has no maintainer, a maintainer must be set. This can be the update submitter or a community member that accepts to take maintainership of the package.
- Verify any change of upstream.
- If switching from e.g. PyPi to GitHub, verify that the repo is the official one.
- If switching to a fork, check with external sources like other package repositories for community consensus.
- Ensure that the code contains no typos.
- Build the package locally.
- Pull requests are often targeted to the master or staging branch, and building the pull request locally when it is submitted can trigger many source builds.
@@ -973,6 +976,7 @@ Sample template for a package update review is provided below.
- [ ] package version fits guidelines
- [ ] package builds on ARCHITECTURE
- [ ] executables tested on ARCHITECTURE
- [ ] any change of upstream are verified
- [ ] all depending packages build
- [ ] patches have a comment describing either the upstream URL or a reason why the patch wasn't upstreamed
- [ ] patches that are remotely available are fetched rather than vendored
@@ -992,6 +996,7 @@ Review process:
- Ensure that the package name and version [fits the guidelines](#package-naming).
- Ensure that the package versioning [fits the guidelines](#versioning).
- Ensure that the commit text [fits the guidelines](../CONTRIBUTING.md#commit-conventions).
- Ensure that the source is fetched from an official location, one of our [trusted mirrors](./build-support/fetchurl/mirrors.nix), or a mirror trusted by the authors.
- Ensure that the meta fields [fits the guidelines](#meta-attributes) and contain the correct information:
- License must match the upstream license.
- Platforms should be set (or the package will not get binary substitutes).
@@ -1020,6 +1025,7 @@ Sample template for a new package review is provided below.
- [ ] `meta.maintainers` is set
- [ ] `meta.mainProgram` is set, if applicable.
- [ ] build time only dependencies are declared in `nativeBuildInputs`
- [ ] source is fetched from an official or trusted location
- [ ] source is fetched using the appropriate function
- [ ] the list of `phases` is not overridden
- [ ] when a phase (like `installPhase`) is overridden it starts with `runHook preInstall` and ends with `runHook postInstall`.
+2 -2
View File
@@ -15,11 +15,11 @@
stdenv.mkDerivation rec {
pname = "drumkv1";
version = "1.3.1";
version = "1.3.2";
src = fetchurl {
url = "mirror://sourceforge/drumkv1/drumkv1-${version}.tar.gz";
hash = "sha256-CzboTrMRxPr5O6caKrxW9X9uSi5Su5LRSQpwJBMGkGI=";
hash = "sha256-Z9F9lbLSAJRlVh7tnSMNTlK7FiZhhlVfeHPlbbVuWXk=";
};
buildInputs = [
+2 -2
View File
@@ -14,13 +14,13 @@
stdenv.mkDerivation (finalAttrs: {
pname = "noson";
version = "5.6.8";
version = "5.6.10";
src = fetchFromGitHub {
owner = "janbar";
repo = "noson-app";
rev = finalAttrs.version;
hash = "sha256-hCVGi+++6CcTRMXeRKH8xRncm/Gl83GgU3aAIPI/yGU=";
hash = "sha256-ERlZtQTwPu5Y1i5cV9c5IMSJW30ootjmFix0EiF+/x0=";
};
nativeBuildInputs = [
+2 -2
View File
@@ -18,11 +18,11 @@
stdenv.mkDerivation rec {
pname = "samplv1";
version = "1.3.1";
version = "1.3.2";
src = fetchurl {
url = "mirror://sourceforge/samplv1/samplv1-${version}.tar.gz";
hash = "sha256-DcMtNGiMJ9YfTKZLns+3mBKHbkG3Ven3IJAU/qSDyh0=";
hash = "sha256-YCxt9RAP02uAigddA6HjBt2ryM6MyOtI3L2eLg0AhFg=";
};
nativeBuildInputs = [
@@ -9,10 +9,10 @@
elpaBuild {
pname = "a68-mode";
ename = "a68-mode";
version = "1.2.0.20250516.72801";
version = "1.2.0.20250524.125533";
src = fetchurl {
url = "https://elpa.gnu.org/devel/a68-mode-1.2.0.20250516.72801.tar";
sha256 = "09nxmij8db3ddhl9hyz0khw2crpfxgrhp2rci1v4w4g3y6k6pjxk";
url = "https://elpa.gnu.org/devel/a68-mode-1.2.0.20250524.125533.tar";
sha256 = "0z8cmasvzbziwgi52p8bn4xdcz5izkhj12laf1gzwwzik1lmh5kj";
};
packageRequires = [ ];
meta = {
@@ -461,10 +461,10 @@
elpaBuild {
pname = "auctex";
ename = "auctex";
version = "14.0.9.0.20250515.195355";
version = "14.0.9.0.20250530.145847";
src = fetchurl {
url = "https://elpa.gnu.org/devel/auctex-14.0.9.0.20250515.195355.tar";
sha256 = "0n39wh9cw1pfjmyjcahxrgsa3b1p0swwkh31wn5wc2c2rfjkl8xk";
url = "https://elpa.gnu.org/devel/auctex-14.0.9.0.20250530.145847.tar";
sha256 = "05mdn3ymwv7zr5ik8rga859cggvz5r4qwnmb5ri78jww6bk96dbj";
};
packageRequires = [ ];
meta = {
@@ -548,10 +548,10 @@
elpaBuild {
pname = "auth-source-xoauth2-plugin";
ename = "auth-source-xoauth2-plugin";
version = "0.2.0.20250516.15306";
version = "0.2.1.0.20250518.225313";
src = fetchurl {
url = "https://elpa.gnu.org/devel/auth-source-xoauth2-plugin-0.2.0.20250516.15306.tar";
sha256 = "0i205h7fc4gkaa7hn1516bqzffv64bani2v1080kn7cbnrf9kq1b";
url = "https://elpa.gnu.org/devel/auth-source-xoauth2-plugin-0.2.1.0.20250518.225313.tar";
sha256 = "0mqvlnqib2my2alm2lbvij89r5c8r6zzi7lwvpgylays342lrry0";
};
packageRequires = [ oauth2 ];
meta = {
@@ -740,10 +740,10 @@
elpaBuild {
pname = "beframe";
ename = "beframe";
version = "1.3.0.0.20250410.82528";
version = "1.3.0.0.20250530.55351";
src = fetchurl {
url = "https://elpa.gnu.org/devel/beframe-1.3.0.0.20250410.82528.tar";
sha256 = "1rdq1yrszn22np2maibn54qrq1d5231a34l9xrczi13fv0b6sah2";
url = "https://elpa.gnu.org/devel/beframe-1.3.0.0.20250530.55351.tar";
sha256 = "1f9gf6cy46dd52701vg8xnm8nmbqk09c2xwhcz03f3djbd1fxhjl";
};
packageRequires = [ ];
meta = {
@@ -1105,10 +1105,10 @@
elpaBuild {
pname = "cape";
ename = "cape";
version = "2.0.0.20250512.155407";
version = "2.1.0.20250521.64514";
src = fetchurl {
url = "https://elpa.gnu.org/devel/cape-2.0.0.20250512.155407.tar";
sha256 = "13j8wcdj4azmi7gfaqs08wm0b6razj10i8wkh3qa8bqadjyqmhfw";
url = "https://elpa.gnu.org/devel/cape-2.1.0.20250521.64514.tar";
sha256 = "0ibaxcdsiki6zg08fmfsj7a5p9wsrp2nc6bnki5y1g1619ln5gk5";
};
packageRequires = [ compat ];
meta = {
@@ -1274,10 +1274,10 @@
elpaBuild {
pname = "cobol-mode";
ename = "cobol-mode";
version = "1.1.0.20241020.181020";
version = "1.1.0.20250527.194517";
src = fetchurl {
url = "https://elpa.gnu.org/devel/cobol-mode-1.1.0.20241020.181020.tar";
sha256 = "05vxahbqs8an5s5c7v40yhziaa61n5yg4j92k8pqjypqrwhpw7vw";
url = "https://elpa.gnu.org/devel/cobol-mode-1.1.0.20250527.194517.tar";
sha256 = "057n1ck9pn9mkh3kkzw5ps2iwjfy9fbyr9cviccfh46avlfkyqq0";
};
packageRequires = [ ];
meta = {
@@ -1318,10 +1318,10 @@
elpaBuild {
pname = "colorful-mode";
ename = "colorful-mode";
version = "1.2.3.0.20250508.204004";
version = "1.2.4.0.20250529.222523";
src = fetchurl {
url = "https://elpa.gnu.org/devel/colorful-mode-1.2.3.0.20250508.204004.tar";
sha256 = "1zrdxxc115h4zk2a1lhl45is7cjvxq333m1f1lmrmnyahzgg3a46";
url = "https://elpa.gnu.org/devel/colorful-mode-1.2.4.0.20250529.222523.tar";
sha256 = "1g1x1p6ayy6nqmhj109k3y4bddas0bdljia5rwzkkysfqqxj8rqr";
};
packageRequires = [ compat ];
meta = {
@@ -1386,10 +1386,10 @@
elpaBuild {
pname = "company";
ename = "company";
version = "1.0.2.0.20250426.131956";
version = "1.0.2.0.20250522.193744";
src = fetchurl {
url = "https://elpa.gnu.org/devel/company-1.0.2.0.20250426.131956.tar";
sha256 = "1lkrhb0xc9d2ylb85k49h62w9k3dnm4j2i6438xc2jkjrjids575";
url = "https://elpa.gnu.org/devel/company-1.0.2.0.20250522.193744.tar";
sha256 = "1h74h8rh3ya89ajfhkym879ll6v5qsvww4rjv0r1kn0yhhn79c3j";
};
packageRequires = [ ];
meta = {
@@ -1546,10 +1546,10 @@
elpaBuild {
pname = "consult";
ename = "consult";
version = "2.3.0.20250512.141021";
version = "2.4.0.20250530.124807";
src = fetchurl {
url = "https://elpa.gnu.org/devel/consult-2.3.0.20250512.141021.tar";
sha256 = "1k3xhqqrz72zfy92376h8livr938z2kqarkljdri44vh8yqm7j0i";
url = "https://elpa.gnu.org/devel/consult-2.4.0.20250530.124807.tar";
sha256 = "09a7wyprhzlwyy0x3b3wpy68qdwxlkpff84sdhms76sz3mx5jnz9";
};
packageRequires = [ compat ];
meta = {
@@ -1659,10 +1659,10 @@
elpaBuild {
pname = "corfu";
ename = "corfu";
version = "2.1.0.20250516.184150";
version = "2.2.0.20250528.194504";
src = fetchurl {
url = "https://elpa.gnu.org/devel/corfu-2.1.0.20250516.184150.tar";
sha256 = "1fnhsn6mvz2cp6cwphrjgr0lizkkfpirp3bxg2vxnj869asyayva";
url = "https://elpa.gnu.org/devel/corfu-2.2.0.20250528.194504.tar";
sha256 = "0j9z6nm80h6016slgh8pzia84dry9kaj3m1rzjsqlpvjhvxwfc3l";
};
packageRequires = [ compat ];
meta = {
@@ -1940,10 +1940,10 @@
elpaBuild {
pname = "dape";
ename = "dape";
version = "0.24.1.0.20250509.163537";
version = "0.24.1.0.20250529.103551";
src = fetchurl {
url = "https://elpa.gnu.org/devel/dape-0.24.1.0.20250509.163537.tar";
sha256 = "0r0kjrzqw0dlj0vw7lgsc2mg2sr0js1aambkwc3qvf57jp875jwb";
url = "https://elpa.gnu.org/devel/dape-0.24.1.0.20250529.103551.tar";
sha256 = "0wyhcncgxqp9jc65k8zwha21rvgxk0zfm79psmwz9i64rg9j9bn1";
};
packageRequires = [ jsonrpc ];
meta = {
@@ -2074,10 +2074,10 @@
elpaBuild {
pname = "denote";
ename = "denote";
version = "4.0.0.0.20250508.42428";
version = "4.0.0.0.20250525.143413";
src = fetchurl {
url = "https://elpa.gnu.org/devel/denote-4.0.0.0.20250508.42428.tar";
sha256 = "1zi78mfncjpaldvaq4g99ls65vs9qi1rphcwmzhqwnv9ckgdnqv1";
url = "https://elpa.gnu.org/devel/denote-4.0.0.0.20250525.143413.tar";
sha256 = "1n6zjpx5qbwahvnmj3al4xx17f6vrh6apll4vyla5xingp3h4mf5";
};
packageRequires = [ ];
meta = {
@@ -2096,10 +2096,10 @@
elpaBuild {
pname = "denote-journal";
ename = "denote-journal";
version = "0.1.1.0.20250422.45242";
version = "0.1.1.0.20250517.43843";
src = fetchurl {
url = "https://elpa.gnu.org/devel/denote-journal-0.1.1.0.20250422.45242.tar";
sha256 = "1hyhahdyxnx6q2lxy8pngj0isscb0wv1946w5bp1qkq6ygjp3chv";
url = "https://elpa.gnu.org/devel/denote-journal-0.1.1.0.20250517.43843.tar";
sha256 = "1v5r87mdmdpfqdyb0zr3z9brkml7dac92pp6gam8qsc1l7zx359l";
};
packageRequires = [ denote ];
meta = {
@@ -2162,10 +2162,10 @@
elpaBuild {
pname = "denote-org";
ename = "denote-org";
version = "0.1.1.0.20250508.64419";
version = "0.1.1.0.20250521.104352";
src = fetchurl {
url = "https://elpa.gnu.org/devel/denote-org-0.1.1.0.20250508.64419.tar";
sha256 = "1xnvpdpn55vcws1v5dhkvragiyq1kn40xmylxpxi1xv9rv61z6ml";
url = "https://elpa.gnu.org/devel/denote-org-0.1.1.0.20250521.104352.tar";
sha256 = "037jbn4j454y5lki6lchx36cma89gysbn0jy74nfnsv9f30gvz9h";
};
packageRequires = [ denote ];
meta = {
@@ -2206,10 +2206,10 @@
elpaBuild {
pname = "denote-sequence";
ename = "denote-sequence";
version = "0.1.1.0.20250501.102153";
version = "0.1.1.0.20250522.82830";
src = fetchurl {
url = "https://elpa.gnu.org/devel/denote-sequence-0.1.1.0.20250501.102153.tar";
sha256 = "08aqb3ps1czag73jm6avk4xq3wbxx02gyl0bml8vnxdc0l22skjy";
url = "https://elpa.gnu.org/devel/denote-sequence-0.1.1.0.20250522.82830.tar";
sha256 = "1g0fxfkj5asv0zixwril4di3sqbgb5hzph6mam1igz359nnkabc3";
};
packageRequires = [ denote ];
meta = {
@@ -2368,10 +2368,10 @@
elpaBuild {
pname = "diff-hl";
ename = "diff-hl";
version = "1.10.0.0.20250507.203711";
version = "1.10.0.0.20250520.20816";
src = fetchurl {
url = "https://elpa.gnu.org/devel/diff-hl-1.10.0.0.20250507.203711.tar";
sha256 = "1gv7yn2hynf09sw5r5axg6b0vb79id4jv6n07cmr2wknf0q3di4a";
url = "https://elpa.gnu.org/devel/diff-hl-1.10.0.0.20250520.20816.tar";
sha256 = "15m4bca2arig6d6l2ml8ab4dg08rpi5m7pzps5lidad83ipl3cvv";
};
packageRequires = [ cl-lib ];
meta = {
@@ -2495,10 +2495,10 @@
elpaBuild {
pname = "dired-preview";
ename = "dired-preview";
version = "0.5.2.0.20250427.44935";
version = "0.5.2.0.20250507.81237";
src = fetchurl {
url = "https://elpa.gnu.org/devel/dired-preview-0.5.2.0.20250427.44935.tar";
sha256 = "0zc7kd1apyq0bwxi3qjihxayjb5j6ga9rhmzc3lmm29ysxfz90n5";
url = "https://elpa.gnu.org/devel/dired-preview-0.5.2.0.20250507.81237.tar";
sha256 = "12f510r8f6z9qp679dipyv1damincr2q6bbi4vcn17ylwhaqdp6s";
};
packageRequires = [ ];
meta = {
@@ -2655,6 +2655,27 @@
};
}
) { };
doric-themes = callPackage (
{
elpaBuild,
fetchurl,
lib,
}:
elpaBuild {
pname = "doric-themes";
ename = "doric-themes";
version = "0.1.0.0.20250530.91206";
src = fetchurl {
url = "https://elpa.gnu.org/devel/doric-themes-0.1.0.0.20250530.91206.tar";
sha256 = "153gnj81lw4z6mrw509jv3022nnyqrxmk5fga7dqnmzpkydxbp8c";
};
packageRequires = [ ];
meta = {
homepage = "https://elpa.gnu.org/devel/doric-themes.html";
license = lib.licenses.free;
};
}
) { };
drepl = callPackage (
{
comint-mime,
@@ -2866,10 +2887,10 @@
elpaBuild {
pname = "ef-themes";
ename = "ef-themes";
version = "1.10.0.0.20250429.104336";
version = "1.10.0.0.20250524.83143";
src = fetchurl {
url = "https://elpa.gnu.org/devel/ef-themes-1.10.0.0.20250429.104336.tar";
sha256 = "0a4fpc9i4sjfx4cnngbdddffs6qg03c15fz2znix56b4hp7jl4sv";
url = "https://elpa.gnu.org/devel/ef-themes-1.10.0.0.20250524.83143.tar";
sha256 = "1dmjfydzw5aabhbwfcvdxh123s08a11khj7vzg38whx4f4mxhji2";
};
packageRequires = [ ];
meta = {
@@ -2894,10 +2915,10 @@
elpaBuild {
pname = "eglot";
ename = "eglot";
version = "1.18.0.20250513.114504";
version = "1.18.0.20250524.65524";
src = fetchurl {
url = "https://elpa.gnu.org/devel/eglot-1.18.0.20250513.114504.tar";
sha256 = "0jgma92l0smvm8np78sx924dlvbli1j3pgjrpps8m7av7xjab5v1";
url = "https://elpa.gnu.org/devel/eglot-1.18.0.20250524.65524.tar";
sha256 = "0vxswngxr3bvwbcjmmsciw3is7b02ilz1wlppj1krmagpmwffsa2";
};
packageRequires = [
eldoc
@@ -2923,10 +2944,10 @@
elpaBuild {
pname = "el-job";
ename = "el-job";
version = "2.4.7.0.20250516.190810";
version = "2.4.7.0.20250524.200444";
src = fetchurl {
url = "https://elpa.gnu.org/devel/el-job-2.4.7.0.20250516.190810.tar";
sha256 = "14l3xa5xii7xg6006gyap5jcd3z5ramik0q9sd14gaqx7i9s8081";
url = "https://elpa.gnu.org/devel/el-job-2.4.7.0.20250524.200444.tar";
sha256 = "0f5k94x24hhjrlxq4gjfm551pgir701hxyjb7k9hcbhxq06l4ay4";
};
packageRequires = [ ];
meta = {
@@ -3067,10 +3088,10 @@
elpaBuild {
pname = "ellama";
ename = "ellama";
version = "1.8.1.0.20250402.164949";
version = "1.8.1.0.20250526.173209";
src = fetchurl {
url = "https://elpa.gnu.org/devel/ellama-1.8.1.0.20250402.164949.tar";
sha256 = "04ydy4lapx67r6lcg9dardvzznda2wisffzz3g9fxiyxrri5810w";
url = "https://elpa.gnu.org/devel/ellama-1.8.1.0.20250526.173209.tar";
sha256 = "1h3ypfrp4jxgamrc6y75rzsj1iq7n03ng2zg8ab3n0lf8xz5x61k";
};
packageRequires = [
compat
@@ -3115,10 +3136,10 @@
elpaBuild {
pname = "embark";
ename = "embark";
version = "1.1.0.20250423.105002";
version = "1.1.0.20250530.134842";
src = fetchurl {
url = "https://elpa.gnu.org/devel/embark-1.1.0.20250423.105002.tar";
sha256 = "1i01q1imn32sbii0kwz51i41a9f5mql564lmhbifwh4hsgrras2g";
url = "https://elpa.gnu.org/devel/embark-1.1.0.20250530.134842.tar";
sha256 = "15lwgw9340h33crdhy8n2bfb7v2xlj5z02pvll7zmzr1wwiaqrja";
};
packageRequires = [ compat ];
meta = {
@@ -3139,10 +3160,10 @@
elpaBuild {
pname = "embark-consult";
ename = "embark-consult";
version = "1.1.0.20250423.105002";
version = "1.1.0.20250530.134842";
src = fetchurl {
url = "https://elpa.gnu.org/devel/embark-consult-1.1.0.20250423.105002.tar";
sha256 = "1qkg36d67fwhijrhkfjs7397rcmjs7cga7l9dj0n9d1634f7q3h4";
url = "https://elpa.gnu.org/devel/embark-consult-1.1.0.20250530.134842.tar";
sha256 = "1apy9ld2wi6yyqdqzyxamr6qascfghwc83wkdvqm54aiv2ks3g76";
};
packageRequires = [
compat
@@ -3415,10 +3436,10 @@
elpaBuild {
pname = "expreg";
ename = "expreg";
version = "1.3.1.0.20230915.150818";
version = "1.4.1.0.20250520.204305";
src = fetchurl {
url = "https://elpa.gnu.org/devel/expreg-1.3.1.0.20230915.150818.tar";
sha256 = "11r4vwavax904dxmcpbr2nbycr7096aalblh6pfvjbhb23a0vx7m";
url = "https://elpa.gnu.org/devel/expreg-1.4.1.0.20250520.204305.tar";
sha256 = "1cvvwdbbkdm6npbyfz5w6pl3iha1v9sxqdvafqpj03nxlknjvjhh";
};
packageRequires = [ ];
meta = {
@@ -3459,10 +3480,10 @@
elpaBuild {
pname = "exwm";
ename = "exwm";
version = "0.33.0.20250426.232314";
version = "0.33.0.20250528.173021";
src = fetchurl {
url = "https://elpa.gnu.org/devel/exwm-0.33.0.20250426.232314.tar";
sha256 = "090kdzcayczn0jv3bkcg2kp08f9w2acjdrq9ly87li41rpsbh2gk";
url = "https://elpa.gnu.org/devel/exwm-0.33.0.20250528.173021.tar";
sha256 = "1nbjwvzl1rndz9ygmww1i80sxq5pxq68lamsw9ablbg19bvkajl6";
};
packageRequires = [
compat
@@ -4172,10 +4193,10 @@
elpaBuild {
pname = "greader";
ename = "greader";
version = "0.12.6.0.20250304.172206";
version = "0.12.6.0.20250526.83546";
src = fetchurl {
url = "https://elpa.gnu.org/devel/greader-0.12.6.0.20250304.172206.tar";
sha256 = "1cpvh9pn855q8gjz43alpipbchfbbgg0ds6qbnn7k9s0n38iyzr3";
url = "https://elpa.gnu.org/devel/greader-0.12.6.0.20250526.83546.tar";
sha256 = "1ivmz9cjss4naf02si5ikmlkad0lbic3kbs989n561d0lq25dfmw";
};
packageRequires = [
compat
@@ -4217,10 +4238,10 @@
elpaBuild {
pname = "gtags-mode";
ename = "gtags-mode";
version = "1.8.5.0.20250511.220137";
version = "1.8.6.0.20250518.10237";
src = fetchurl {
url = "https://elpa.gnu.org/devel/gtags-mode-1.8.5.0.20250511.220137.tar";
sha256 = "185c583y06lm97hd1nlhsx96byz34m0fg2xlz99vwxzm75ch3s5h";
url = "https://elpa.gnu.org/devel/gtags-mode-1.8.6.0.20250518.10237.tar";
sha256 = "0xisbx4k8baj8hzklmpz0gfkx82f3sss3mnji9v0pbv1g9q7v2w9";
};
packageRequires = [ ];
meta = {
@@ -4434,10 +4455,10 @@
elpaBuild {
pname = "hyperbole";
ename = "hyperbole";
version = "9.0.2pre0.20250509.132519";
version = "9.0.2pre0.20250518.175059";
src = fetchurl {
url = "https://elpa.gnu.org/devel/hyperbole-9.0.2pre0.20250509.132519.tar";
sha256 = "0jmjaa6bj93qw7i62spc4kk117bbc3g3nvdq0lkcwd9900ir1xhb";
url = "https://elpa.gnu.org/devel/hyperbole-9.0.2pre0.20250518.175059.tar";
sha256 = "1dcra27asrpfg1ymqbzqss6dy7vlrrk14070gna1x4b6fvag9jdg";
};
packageRequires = [ ];
meta = {
@@ -4498,10 +4519,10 @@
elpaBuild {
pname = "indent-bars";
ename = "indent-bars";
version = "0.8.4.0.20250508.135540";
version = "0.8.4.0.20250529.164202";
src = fetchurl {
url = "https://elpa.gnu.org/devel/indent-bars-0.8.4.0.20250508.135540.tar";
sha256 = "0167f1q8snk98j7akns3mg07pxm1221i9vxplc4x55z7qlryvi7c";
url = "https://elpa.gnu.org/devel/indent-bars-0.8.4.0.20250529.164202.tar";
sha256 = "1zwrd6g43qqzm1kzacpgq6m20kir3m2r94li8yx74vqpw9cca8hp";
};
packageRequires = [ compat ];
meta = {
@@ -4604,10 +4625,10 @@
elpaBuild {
pname = "ivy";
ename = "ivy";
version = "0.15.1.0.20250417.121946";
version = "0.15.1.0.20250519.175035";
src = fetchurl {
url = "https://elpa.gnu.org/devel/ivy-0.15.1.0.20250417.121946.tar";
sha256 = "13xrixysvh3g358fi91lx2b4ra8npyhl573klfzvwr0w1pkpzc8g";
url = "https://elpa.gnu.org/devel/ivy-0.15.1.0.20250519.175035.tar";
sha256 = "094xx1zpxs1qf799s3cv2ymr5q7bgs87yr8haf6wqwf44rxdwycw";
};
packageRequires = [ ];
meta = {
@@ -4811,10 +4832,10 @@
elpaBuild {
pname = "jinx";
ename = "jinx";
version = "2.1.0.20250512.155547";
version = "2.2.0.20250526.33048";
src = fetchurl {
url = "https://elpa.gnu.org/devel/jinx-2.1.0.20250512.155547.tar";
sha256 = "13yi3cv4111px48fzr8rnx70bhcb7b3gy64vcddvpcr2gvwlrzvz";
url = "https://elpa.gnu.org/devel/jinx-2.2.0.20250526.33048.tar";
sha256 = "0bh9mmknxnd62wbiga9s67dnrq5ggh1d9pqhk0vf163nk5bdng6a";
};
packageRequires = [ compat ];
meta = {
@@ -5263,10 +5284,10 @@
elpaBuild {
pname = "llm";
ename = "llm";
version = "0.25.0.0.20250510.105336";
version = "0.26.0.0.20250526.213557";
src = fetchurl {
url = "https://elpa.gnu.org/devel/llm-0.25.0.0.20250510.105336.tar";
sha256 = "0mnc820if3jcj909bmsjgcvdg10d7ijzqa4fgc0bw2s92hrzp37n";
url = "https://elpa.gnu.org/devel/llm-0.26.0.0.20250526.213557.tar";
sha256 = "1fc895kvacwsimdbir51iy8xiyhxrad6hh8nj3lap07j3xki4107";
};
packageRequires = [
compat
@@ -5503,10 +5524,10 @@
elpaBuild {
pname = "marginalia";
ename = "marginalia";
version = "2.0.0.20250512.155419";
version = "2.0.0.20250527.162947";
src = fetchurl {
url = "https://elpa.gnu.org/devel/marginalia-2.0.0.20250512.155419.tar";
sha256 = "042nay3vr19ldbgqz1hzmacf53gz66dgpazr53xffq6pjxpih5p1";
url = "https://elpa.gnu.org/devel/marginalia-2.0.0.20250527.162947.tar";
sha256 = "1f3h4grgnxdkq0njpq9jfdlk4ljmzjsk324kz54799fj8v2n59qj";
};
packageRequires = [ compat ];
meta = {
@@ -5609,10 +5630,10 @@
elpaBuild {
pname = "matlab-mode";
ename = "matlab-mode";
version = "6.3.0.20250512.120312";
version = "6.3.0.20250530.124947";
src = fetchurl {
url = "https://elpa.gnu.org/devel/matlab-mode-6.3.0.20250512.120312.tar";
sha256 = "07lsjj3ch66xl680isn9mrmbiz28n7r85gwgrzqva9gyxilfh1wm";
url = "https://elpa.gnu.org/devel/matlab-mode-6.3.0.20250530.124947.tar";
sha256 = "0kbm0y8qn72k01gh1ynz7cm1b59wr0lnq349ky9m6g7m13dc7zbq";
};
packageRequires = [ ];
meta = {
@@ -5802,10 +5823,10 @@
elpaBuild {
pname = "minuet";
ename = "minuet";
version = "0.5.4.0.20250510.3940";
version = "0.5.4.0.20250523.4704";
src = fetchurl {
url = "https://elpa.gnu.org/devel/minuet-0.5.4.0.20250510.3940.tar";
sha256 = "0akavbg2bl1amwr55ch1m3apkjdwdgiqar1kjnld28rfa027gxj6";
url = "https://elpa.gnu.org/devel/minuet-0.5.4.0.20250523.4704.tar";
sha256 = "0r4qajdknkcj9bmgnczxj7zw626aa2cicziy1h294dbmpia02021";
};
packageRequires = [
dash
@@ -5848,10 +5869,10 @@
elpaBuild {
pname = "modus-themes";
ename = "modus-themes";
version = "4.7.0.0.20250428.45622";
version = "4.7.0.0.20250527.103951";
src = fetchurl {
url = "https://elpa.gnu.org/devel/modus-themes-4.7.0.0.20250428.45622.tar";
sha256 = "0dyicvmcnf99isdrjg8wazxm1hmqdy81s72glnc86pl6xaiikxf9";
url = "https://elpa.gnu.org/devel/modus-themes-4.7.0.0.20250527.103951.tar";
sha256 = "1r9jv8w0nb7x56hpgyqarljrpm1zbb5sfgsw0mxv9rfa1wb65zpj";
};
packageRequires = [ ];
meta = {
@@ -6429,10 +6450,10 @@
elpaBuild {
pname = "org";
ename = "org";
version = "9.8pre0.20250512.165453";
version = "9.8pre0.20250529.210300";
src = fetchurl {
url = "https://elpa.gnu.org/devel/org-9.8pre0.20250512.165453.tar";
sha256 = "1hdy7zxl1d9hpv02j99r0w0kqrwpw567w6sycx3d1xdz8r93z8c5";
url = "https://elpa.gnu.org/devel/org-9.8pre0.20250529.210300.tar";
sha256 = "1nnas0kdnymi6c8m7i683cacimzfjvakmy5c347ayqq9z161jv78";
};
packageRequires = [ ];
meta = {
@@ -6451,10 +6472,10 @@
elpaBuild {
pname = "org-contacts";
ename = "org-contacts";
version = "1.1.0.20250513.100113";
version = "1.1.0.20250528.75549";
src = fetchurl {
url = "https://elpa.gnu.org/devel/org-contacts-1.1.0.20250513.100113.tar";
sha256 = "03rbhicxw9glwrdhsw364kyjxdzbs4h63h927n5scbn71gkwr3bc";
url = "https://elpa.gnu.org/devel/org-contacts-1.1.0.20250528.75549.tar";
sha256 = "187k9rkqpiw44301ymqsisfrdz6qd5f1d2hk82v4jzvy5jcd2b88";
};
packageRequires = [ org ];
meta = {
@@ -6548,10 +6569,10 @@
elpaBuild {
pname = "org-modern";
ename = "org-modern";
version = "1.7.0.20250512.155443";
version = "1.8.0.20250526.33139";
src = fetchurl {
url = "https://elpa.gnu.org/devel/org-modern-1.7.0.20250512.155443.tar";
sha256 = "0pnnwsfamfmg3cm832736kaxjlj9bg62f00bjcdrxkkad0c0gbf6";
url = "https://elpa.gnu.org/devel/org-modern-1.8.0.20250526.33139.tar";
sha256 = "03n21xa0y9hs8fiyfb9zzca402fxck4b13x42sizamns9dxwrh9y";
};
packageRequires = [
compat
@@ -7176,10 +7197,10 @@
elpaBuild {
pname = "polymode";
ename = "polymode";
version = "0.2.2.0.20250511.135208";
version = "0.2.2.0.20250525.212258";
src = fetchurl {
url = "https://elpa.gnu.org/devel/polymode-0.2.2.0.20250511.135208.tar";
sha256 = "1l5x9y6m8la0rlz56s1iqlqfr9v5gq0wfykiv8gir8sk0xgnz315";
url = "https://elpa.gnu.org/devel/polymode-0.2.2.0.20250525.212258.tar";
sha256 = "1p0whbfzcd0fl8yz9id7sinmdyavb905aa826x25gdc9fpmlr01r";
};
packageRequires = [ ];
meta = {
@@ -7326,10 +7347,10 @@
elpaBuild {
pname = "project";
ename = "project";
version = "0.11.1.0.20250428.24648";
version = "0.11.1.0.20250529.192738";
src = fetchurl {
url = "https://elpa.gnu.org/devel/project-0.11.1.0.20250428.24648.tar";
sha256 = "142jsslwxg2s590szngpzm2srw1n7qdvl3gzbqrnngy91wpv7n9a";
url = "https://elpa.gnu.org/devel/project-0.11.1.0.20250529.192738.tar";
sha256 = "1p3g2h7yakj8vzffyilsgqifdrv2mdvl8zpqjv2x7dp3ljs79cqn";
};
packageRequires = [ xref ];
meta = {
@@ -8733,10 +8754,10 @@
elpaBuild {
pname = "standard-themes";
ename = "standard-themes";
version = "2.2.0.0.20250216.155518";
version = "2.2.0.0.20250519.60302";
src = fetchurl {
url = "https://elpa.gnu.org/devel/standard-themes-2.2.0.0.20250216.155518.tar";
sha256 = "0dvshs7zshi1s7rgrhrn4igi96y76gybhmwq337sigjm76fh37i2";
url = "https://elpa.gnu.org/devel/standard-themes-2.2.0.0.20250519.60302.tar";
sha256 = "170h064wawzm2h4sfrfwrn4zq87p6kmc6blkiprwzz0i4iw30y10";
};
packageRequires = [ ];
meta = {
@@ -9344,10 +9365,10 @@
elpaBuild {
pname = "tramp";
ename = "tramp";
version = "2.7.2.3.1.0.20250408.65900";
version = "2.7.2.4.0.20250530.70623";
src = fetchurl {
url = "https://elpa.gnu.org/devel/tramp-2.7.2.3.1.0.20250408.65900.tar";
sha256 = "0fl70dainnhz78bx611x4295ic751d4ranz9zh89xdygaj6hvzz8";
url = "https://elpa.gnu.org/devel/tramp-2.7.2.4.0.20250530.70623.tar";
sha256 = "10vhj25haax1gj45cka8678i81lygr7v122j9wm7f3qcvxk68snb";
};
packageRequires = [ ];
meta = {
@@ -9430,10 +9451,10 @@
elpaBuild {
pname = "transient";
ename = "transient";
version = "0.8.8.0.20250511.180821";
version = "0.8.8.0.20250520.104007";
src = fetchurl {
url = "https://elpa.gnu.org/devel/transient-0.8.8.0.20250511.180821.tar";
sha256 = "1lh8d85qfc7yxc6gj33j930bikq3f7j7n87ajmjsd3y3bjayrcw9";
url = "https://elpa.gnu.org/devel/transient-0.8.8.0.20250520.104007.tar";
sha256 = "1v5f6y6gmgj9x0ay4zs89818gav6rjfn5ifywmb5qkilsqzjfhxh";
};
packageRequires = [
compat
@@ -9742,10 +9763,10 @@
elpaBuild {
pname = "use-package";
ename = "use-package";
version = "2.4.6.0.20250427.74855";
version = "2.4.6.0.20250524.65524";
src = fetchurl {
url = "https://elpa.gnu.org/devel/use-package-2.4.6.0.20250427.74855.tar";
sha256 = "19x0hi00ychc2j18g323rkq7lghfc8p0g9kq3chwhqb46vmqr993";
url = "https://elpa.gnu.org/devel/use-package-2.4.6.0.20250524.65524.tar";
sha256 = "0zayaizp0d4sk1v4mrc4kfjgzlbxzsa2jrrdadis5al6x077jabx";
};
packageRequires = [ bind-key ];
meta = {
@@ -9982,10 +10003,10 @@
elpaBuild {
pname = "vertico";
ename = "vertico";
version = "2.1.0.20250516.184229";
version = "2.2.0.20250527.181301";
src = fetchurl {
url = "https://elpa.gnu.org/devel/vertico-2.1.0.20250516.184229.tar";
sha256 = "07dmj8p760c13grz45fc1wvpy7li2xvqg6scy7jx3jc9j5gdqdk9";
url = "https://elpa.gnu.org/devel/vertico-2.2.0.20250527.181301.tar";
sha256 = "1innhh4w5623d86b1y9a1llc0h240jvnfx4661yqgh62d7v47h94";
};
packageRequires = [ compat ];
meta = {
@@ -527,10 +527,10 @@
elpaBuild {
pname = "auth-source-xoauth2-plugin";
ename = "auth-source-xoauth2-plugin";
version = "0.2";
version = "0.2.1";
src = fetchurl {
url = "https://elpa.gnu.org/packages/auth-source-xoauth2-plugin-0.2.tar";
sha256 = "18mmjcyqja46fkggghm45ln6gp1jjb68q4q4q93l3s2vx3hlk60y";
url = "https://elpa.gnu.org/packages/auth-source-xoauth2-plugin-0.2.1.tar";
sha256 = "020sf13hiyx6g32vixdf65bdcf9sdkh12rixcln6zgm23pw5rdgl";
};
packageRequires = [ oauth2 ];
meta = {
@@ -1084,10 +1084,10 @@
elpaBuild {
pname = "cape";
ename = "cape";
version = "2.0";
version = "2.1";
src = fetchurl {
url = "https://elpa.gnu.org/packages/cape-2.0.tar";
sha256 = "0llcvbqbr296niag7z60kqxpahcv1809734j7d9vnwpl3kgcxg9v";
url = "https://elpa.gnu.org/packages/cape-2.1.tar";
sha256 = "10g0nxdg6cb2v08qip8dskh1zkdqv23vy8x2f0lyscbmwi72zkrd";
};
packageRequires = [ compat ];
meta = {
@@ -1298,10 +1298,10 @@
elpaBuild {
pname = "colorful-mode";
ename = "colorful-mode";
version = "1.2.3";
version = "1.2.4";
src = fetchurl {
url = "https://elpa.gnu.org/packages/colorful-mode-1.2.3.tar";
sha256 = "0y8bsmb27lxa87a9q9vk36dx914dl07np3bkyn019p2ak73wakgk";
url = "https://elpa.gnu.org/packages/colorful-mode-1.2.4.tar";
sha256 = "18gymjgsa5hxzy502b7mi99d8sypnn07i9934k4bj1py1xwl8q2b";
};
packageRequires = [ compat ];
meta = {
@@ -1526,10 +1526,10 @@
elpaBuild {
pname = "consult";
ename = "consult";
version = "2.3";
version = "2.4";
src = fetchurl {
url = "https://elpa.gnu.org/packages/consult-2.3.tar";
sha256 = "0rmb5j0kv36lqy135rknfabbzaa7cpfqsgzkicsyzbq3rh3nmf1p";
url = "https://elpa.gnu.org/packages/consult-2.4.tar";
sha256 = "1jiqgh0f9dnh954hf3vql6l2crfarfnfc9bg7nvisqi3wywd35mf";
};
packageRequires = [ compat ];
meta = {
@@ -1639,10 +1639,10 @@
elpaBuild {
pname = "corfu";
ename = "corfu";
version = "2.1";
version = "2.2";
src = fetchurl {
url = "https://elpa.gnu.org/packages/corfu-2.1.tar";
sha256 = "07ffi16b2ay1rcc8bdryg1h901pjbhfaq1qqsm463iis490rzm81";
url = "https://elpa.gnu.org/packages/corfu-2.2.tar";
sha256 = "17armdh7369fyvxjbj7sv6vawy6mw72vsw4sqf21ra7q2m3h2vca";
};
packageRequires = [ compat ];
meta = {
@@ -2609,6 +2609,27 @@
};
}
) { };
doric-themes = callPackage (
{
elpaBuild,
fetchurl,
lib,
}:
elpaBuild {
pname = "doric-themes";
ename = "doric-themes";
version = "0.1.0";
src = fetchurl {
url = "https://elpa.gnu.org/packages/doric-themes-0.1.0.tar";
sha256 = "12aj50hs7yydr40fj5wlzc8k7a1r2pl6r6gsmd5629bmhd8albmr";
};
packageRequires = [ ];
meta = {
homepage = "https://elpa.gnu.org/packages/doric-themes.html";
license = lib.licenses.free;
};
}
) { };
drepl = callPackage (
{
comint-mime,
@@ -3373,10 +3394,10 @@
elpaBuild {
pname = "expreg";
ename = "expreg";
version = "1.3.1";
version = "1.4.1";
src = fetchurl {
url = "https://elpa.gnu.org/packages/expreg-1.3.1.tar";
sha256 = "12msng4ypmw6s3pja66kkjxkbadla0fxmak1r3drxiihpwmh5zm6";
url = "https://elpa.gnu.org/packages/expreg-1.4.1.tar";
sha256 = "1m30d8yp46al7g1hakq95icmgjz0crcvj1h1yd6bj887v1nrnvkk";
};
packageRequires = [ ];
meta = {
@@ -4173,10 +4194,10 @@
elpaBuild {
pname = "gtags-mode";
ename = "gtags-mode";
version = "1.8.5";
version = "1.8.6";
src = fetchurl {
url = "https://elpa.gnu.org/packages/gtags-mode-1.8.5.tar";
sha256 = "0pia7ivd11hw9ngdghvcbrapndkpq5ra0jx566f7vgrdxxl73ynm";
url = "https://elpa.gnu.org/packages/gtags-mode-1.8.6.tar";
sha256 = "0kmqndl7h6q4k7ziasfp4pi1lnskr394qia1msxsbz1cqcay1cqh";
};
packageRequires = [ ];
meta = {
@@ -4771,10 +4792,10 @@
elpaBuild {
pname = "jinx";
ename = "jinx";
version = "2.1";
version = "2.2";
src = fetchurl {
url = "https://elpa.gnu.org/packages/jinx-2.1.tar";
sha256 = "1v4a00bgs6qcpim861kky1i2w0qfn2hza9vj0inn7lh1sic82rkm";
url = "https://elpa.gnu.org/packages/jinx-2.2.tar";
sha256 = "17f7p7q21f0l8zzr2z05y6mzrh6pw036cnp1375hbssnpsrh3wc1";
};
packageRequires = [ compat ];
meta = {
@@ -5212,6 +5233,7 @@
) { };
llm = callPackage (
{
compat,
elpaBuild,
fetchurl,
lib,
@@ -5222,12 +5244,13 @@
elpaBuild {
pname = "llm";
ename = "llm";
version = "0.25.0";
version = "0.26.0";
src = fetchurl {
url = "https://elpa.gnu.org/packages/llm-0.25.0.tar";
sha256 = "0ykzx0g6w3b9hlxyx41rkbj2n5pjkpf3y0jqiwl012j7zxg1ay6w";
url = "https://elpa.gnu.org/packages/llm-0.26.0.tar";
sha256 = "0ihfppwqwxkmv63irca3r0wkp3vsf5imk8gk222vi1dviyqx5q0x";
};
packageRequires = [
compat
plz
plz-event-source
plz-media-type
@@ -6474,16 +6497,20 @@
elpaBuild,
fetchurl,
lib,
org,
}:
elpaBuild {
pname = "org-modern";
ename = "org-modern";
version = "1.7";
version = "1.8";
src = fetchurl {
url = "https://elpa.gnu.org/packages/org-modern-1.7.tar";
sha256 = "0f1i28x7a9m69xjl3n4bb91pjxm21xw1byhqilyw524y8s22j3wm";
url = "https://elpa.gnu.org/packages/org-modern-1.8.tar";
sha256 = "0ibn6xwssg2llb6hgpbg0p62995skc6g1g469cr58wlb6xb2qxvl";
};
packageRequires = [ compat ];
packageRequires = [
compat
org
];
meta = {
homepage = "https://elpa.gnu.org/packages/org-modern.html";
license = lib.licenses.free;
@@ -9160,10 +9187,10 @@
elpaBuild {
pname = "tramp";
ename = "tramp";
version = "2.7.2.3.1";
version = "2.7.2.4";
src = fetchurl {
url = "https://elpa.gnu.org/packages/tramp-2.7.2.3.1.tar";
sha256 = "171jmgb9sdj1iqq6a77kxin15yik952vvavhpvdr0wxhdq095mgg";
url = "https://elpa.gnu.org/packages/tramp-2.7.2.4.tar";
sha256 = "0crlnb421z99vnbvzbq63cqhfy62q96j45qhrzx2v3kajijv77ha";
};
packageRequires = [ ];
meta = {
@@ -9803,10 +9830,10 @@
elpaBuild {
pname = "vertico";
ename = "vertico";
version = "2.1";
version = "2.2";
src = fetchurl {
url = "https://elpa.gnu.org/packages/vertico-2.1.tar";
sha256 = "03xkl8df90gs26cy00qbk0w23192bkaj32fgaf1w3ajq7mdvfd6p";
url = "https://elpa.gnu.org/packages/vertico-2.2.tar";
sha256 = "1mb2j32wkcv7j310xwhf9pjddf0b85ffna84ywbbnyn9x1xb8qyf";
};
packageRequires = [ compat ];
meta = {
@@ -54,10 +54,10 @@
elpaBuild {
pname = "aidermacs";
ename = "aidermacs";
version = "1.3.0.20250515.132734";
version = "1.4.0.20250529.13102";
src = fetchurl {
url = "https://elpa.nongnu.org/nongnu-devel/aidermacs-1.3.0.20250515.132734.tar";
sha256 = "010sxd4k7xqkpf2jyyffrkxkgn1cq6wq0mkmmh56xpj3mrrxchyp";
url = "https://elpa.nongnu.org/nongnu-devel/aidermacs-1.4.0.20250529.13102.tar";
sha256 = "0hsmzp9axsaiqvsw6y75s5yjn9imwhbl609py2xf8lys4jfj8xzg";
};
packageRequires = [
compat
@@ -572,10 +572,10 @@
elpaBuild {
pname = "cider";
ename = "cider";
version = "1.18.0.0.20250512.132717";
version = "1.19.0snapshot0.20250530.85125";
src = fetchurl {
url = "https://elpa.nongnu.org/nongnu-devel/cider-1.18.0.0.20250512.132717.tar";
sha256 = "0xg81szscjzi8acq96frknpsqqpqwy4lrjs0xjd96smfdz22l47c";
url = "https://elpa.nongnu.org/nongnu-devel/cider-1.19.0snapshot0.20250530.85125.tar";
sha256 = "1mnafkqypqc01ggqa91gxr4m1q8l4hz9i2n8mbqwck4c72zph6k9";
};
packageRequires = [
clojure-mode
@@ -601,10 +601,10 @@
elpaBuild {
pname = "clojure-mode";
ename = "clojure-mode";
version = "5.20.0snapshot0.20250406.154328";
version = "5.20.0.0.20250528.61040";
src = fetchurl {
url = "https://elpa.nongnu.org/nongnu-devel/clojure-mode-5.20.0snapshot0.20250406.154328.tar";
sha256 = "16m89nva2wrin5pbn3iskv43clc9vmvvzc3m2ldyy2vl08lkzbbd";
url = "https://elpa.nongnu.org/nongnu-devel/clojure-mode-5.20.0.0.20250528.61040.tar";
sha256 = "071zs4y4ishjkzwr0dsmd3280vpl92vdpy8f1hwa85lz6i4kyr4r";
};
packageRequires = [ ];
meta = {
@@ -622,10 +622,10 @@
elpaBuild {
pname = "clojure-ts-mode";
ename = "clojure-ts-mode";
version = "0.4.0.0.20250516.71256";
version = "0.5.0snapshot0.20250530.85704";
src = fetchurl {
url = "https://elpa.nongnu.org/nongnu-devel/clojure-ts-mode-0.4.0.0.20250516.71256.tar";
sha256 = "1r8r0ym20qc791svcz560m2ir0p4siid7q98y7mn23yfw9kakz81";
url = "https://elpa.nongnu.org/nongnu-devel/clojure-ts-mode-0.5.0snapshot0.20250530.85704.tar";
sha256 = "13iwffh76x4463kjsg1kxbvaainq7ikn5idj03az9r8gdijbwz3g";
};
packageRequires = [ ];
meta = {
@@ -716,10 +716,10 @@
elpaBuild {
pname = "crux";
ename = "crux";
version = "0.6.0snapshot0.20250421.93605";
version = "0.6.0snapshot0.20250525.163240";
src = fetchurl {
url = "https://elpa.nongnu.org/nongnu-devel/crux-0.6.0snapshot0.20250421.93605.tar";
sha256 = "1kzscg15rb237q0y9brl9xbb5z5ygfq6malzhr3axlx2r20xgdi4";
url = "https://elpa.nongnu.org/nongnu-devel/crux-0.6.0snapshot0.20250525.163240.tar";
sha256 = "07rdz5ns0bh8qgndz7q0xqymcpyvcgl3c1h4f2hajr2jqjbhhdv2";
};
packageRequires = [ ];
meta = {
@@ -1227,10 +1227,10 @@
elpaBuild {
pname = "emacsql";
ename = "emacsql";
version = "4.3.0.0.20250509.141847";
version = "4.3.0.0.20250529.95634";
src = fetchurl {
url = "https://elpa.nongnu.org/nongnu-devel/emacsql-4.3.0.0.20250509.141847.tar";
sha256 = "140mzggvkfjgfx52q4zahbbskcqcbv6vxpw7k9ky9hawr30gbq0a";
url = "https://elpa.nongnu.org/nongnu-devel/emacsql-4.3.0.0.20250529.95634.tar";
sha256 = "1q5jf8fbh7kj7lfm7qh2n6v3admqcdi7mgjbf9lr0j5zzfyz3bbc";
};
packageRequires = [ ];
meta = {
@@ -1723,10 +1723,10 @@
elpaBuild {
pname = "flycheck";
ename = "flycheck";
version = "35.0.0.20250424.133949";
version = "35.0.0.20250527.90754";
src = fetchurl {
url = "https://elpa.nongnu.org/nongnu-devel/flycheck-35.0.0.20250424.133949.tar";
sha256 = "1k54zvcrl3wms2bsza44h56kxbwjqpaym4p70a6dxxw3ac60jlfq";
url = "https://elpa.nongnu.org/nongnu-devel/flycheck-35.0.0.20250527.90754.tar";
sha256 = "05d9fbd4hv57jcfsjphdzlmnl4wrfawy7q006sca33wljscpyqr1";
};
packageRequires = [ ];
meta = {
@@ -2270,10 +2270,10 @@
elpaBuild {
pname = "gnuplot";
ename = "gnuplot";
version = "0.8.1.0.20240914.153054";
version = "0.9.0.20250530.193710";
src = fetchurl {
url = "https://elpa.nongnu.org/nongnu-devel/gnuplot-0.8.1.0.20240914.153054.tar";
sha256 = "0pv7ql14d7srb98nidw6fr4mwgssqyv95yskflz27dbbwjlycmn6";
url = "https://elpa.nongnu.org/nongnu-devel/gnuplot-0.9.0.20250530.193710.tar";
sha256 = "1wbdpa3w8zsqzlhi28kcczxjrxw3jmysm0i1frbzkmw01cgpqjzp";
};
packageRequires = [ ];
meta = {
@@ -2377,10 +2377,10 @@
elpaBuild {
pname = "gptel";
ename = "gptel";
version = "0.9.8.0.20250515.225537";
version = "0.9.8.0.20250529.230850";
src = fetchurl {
url = "https://elpa.nongnu.org/nongnu-devel/gptel-0.9.8.0.20250515.225537.tar";
sha256 = "0wcy7qq8d1pnpjf6fqwcff8r4gbl08azlayyxabqsakgr3498p5d";
url = "https://elpa.nongnu.org/nongnu-devel/gptel-0.9.8.0.20250529.230850.tar";
sha256 = "1xza3riy1799sbqy2f5h1q5d1lpr8rl6xvbknxv51zmp74mnajkg";
};
packageRequires = [
compat
@@ -2508,10 +2508,10 @@
elpaBuild {
pname = "haskell-mode";
ename = "haskell-mode";
version = "17.5.0.20250401.174200";
version = "17.5.0.20250519.115454";
src = fetchurl {
url = "https://elpa.nongnu.org/nongnu-devel/haskell-mode-17.5.0.20250401.174200.tar";
sha256 = "1dxfwd4yhwzy59d55hnz0z23dg5vh1fzkrpicdaz93m9yvfzy1aa";
url = "https://elpa.nongnu.org/nongnu-devel/haskell-mode-17.5.0.20250519.115454.tar";
sha256 = "17si5n0mdaij4kx19rhzy1p3asczkgcd5bhc1fsspi60kzwsmmi8";
};
packageRequires = [ ];
meta = {
@@ -2551,10 +2551,10 @@
elpaBuild {
pname = "haskell-ts-mode";
ename = "haskell-ts-mode";
version = "1.1.4.0.20250516.134138";
version = "1.2.0.0.20250518.53811";
src = fetchurl {
url = "https://elpa.nongnu.org/nongnu-devel/haskell-ts-mode-1.1.4.0.20250516.134138.tar";
sha256 = "15d4bc5i7p7r9psqdaljyvhxvzlwigzy8sb4iv0wxhbv7wwgwv37";
url = "https://elpa.nongnu.org/nongnu-devel/haskell-ts-mode-1.2.0.0.20250518.53811.tar";
sha256 = "1n5rnyd02mfp77r8h71dpi18q7kayf4dh9rz8aglsx1087mrfm3g";
};
packageRequires = [ ];
meta = {
@@ -2574,10 +2574,10 @@
elpaBuild {
pname = "helm";
ename = "helm";
version = "4.0.3.0.20250515.54814";
version = "4.0.3.0.20250529.40054";
src = fetchurl {
url = "https://elpa.nongnu.org/nongnu-devel/helm-4.0.3.0.20250515.54814.tar";
sha256 = "0q6scri31v9pjbjkf8sf969aqal228yx66hsahb77gcpvfx0ribg";
url = "https://elpa.nongnu.org/nongnu-devel/helm-4.0.3.0.20250529.40054.tar";
sha256 = "05da9val6w0q3s0662625jp8f2s76mfrayfwpvj00zbvqbavw4i7";
};
packageRequires = [
helm-core
@@ -2599,10 +2599,10 @@
elpaBuild {
pname = "helm-core";
ename = "helm-core";
version = "4.0.3.0.20250515.54814";
version = "4.0.3.0.20250529.40054";
src = fetchurl {
url = "https://elpa.nongnu.org/nongnu-devel/helm-core-4.0.3.0.20250515.54814.tar";
sha256 = "0f66yi42zqccv8i7mlqclvy6c3a5xqc58j54lc4qqr826wmmizbf";
url = "https://elpa.nongnu.org/nongnu-devel/helm-core-4.0.3.0.20250529.40054.tar";
sha256 = "0xa2qp95wswlcqkmg3hngfkqk2mm78z0j2fms89kxm5sg2jkcf7d";
};
packageRequires = [ async ];
meta = {
@@ -2856,10 +2856,10 @@
elpaBuild {
pname = "inf-clojure";
ename = "inf-clojure";
version = "3.2.1.0.20230909.44557";
version = "3.3.0.0.20250525.205532";
src = fetchurl {
url = "https://elpa.nongnu.org/nongnu-devel/inf-clojure-3.2.1.0.20230909.44557.tar";
sha256 = "0ncdqbz8z8wrcf3s1y3n1b11b7k3mwxdk4w5v7pr0j6jn3yfnbby";
url = "https://elpa.nongnu.org/nongnu-devel/inf-clojure-3.3.0.0.20250525.205532.tar";
sha256 = "1q4cibg107pcg1cirqmmzhvbyyzlm76aqfyqad8m6ds76jv3kkcg";
};
packageRequires = [ clojure-mode ];
meta = {
@@ -3252,10 +3252,10 @@
elpaBuild {
pname = "magit";
ename = "magit";
version = "4.3.2.0.20250401.175331";
version = "4.3.5.0.20250520.83537";
src = fetchurl {
url = "https://elpa.nongnu.org/nongnu-devel/magit-4.3.2.0.20250401.175331.tar";
sha256 = "1way4hifyj0p5ly2p84as1amivv67qr22ph292rgwizrj0d5j60y";
url = "https://elpa.nongnu.org/nongnu-devel/magit-4.3.5.0.20250520.83537.tar";
sha256 = "14x7qvkpgjyhf5wcc26gq4plrysd61dr8i4yywxyf09d67xmam8q";
};
packageRequires = [
compat
@@ -3283,10 +3283,10 @@
elpaBuild {
pname = "magit-section";
ename = "magit-section";
version = "4.3.2.0.20250401.175331";
version = "4.3.5.0.20250520.83537";
src = fetchurl {
url = "https://elpa.nongnu.org/nongnu-devel/magit-section-4.3.2.0.20250401.175331.tar";
sha256 = "1wif3d5vb04f39g38w2nbamqcbb89ivh2w5b0w362k3pk0vq2a70";
url = "https://elpa.nongnu.org/nongnu-devel/magit-section-4.3.5.0.20250520.83537.tar";
sha256 = "1c0n0cdgc7mf910pdpxp75wsan7772k5iw307lybf465maabjx1i";
};
packageRequires = [
compat
@@ -3448,10 +3448,10 @@
elpaBuild {
pname = "moe-theme";
ename = "moe-theme";
version = "1.1.0.0.20250203.180833";
version = "1.1.0.0.20250527.61144";
src = fetchurl {
url = "https://elpa.nongnu.org/nongnu-devel/moe-theme-1.1.0.0.20250203.180833.tar";
sha256 = "1vazqmwvn0cpzni1hyjilcdq2zynl4gijkrkhdgaqnskzqp437rm";
url = "https://elpa.nongnu.org/nongnu-devel/moe-theme-1.1.0.0.20250527.61144.tar";
sha256 = "056w9sg4nq75rbcl73l86l79s9qzjp9kdiqrmcydicpdk40dm115";
};
packageRequires = [ ];
meta = {
@@ -3716,10 +3716,10 @@
elpaBuild {
pname = "org-journal";
ename = "org-journal";
version = "2.2.0.0.20250425.93636";
version = "2.2.0.0.20250525.35745";
src = fetchurl {
url = "https://elpa.nongnu.org/nongnu-devel/org-journal-2.2.0.0.20250425.93636.tar";
sha256 = "0si4zircvmqkh1rk46gs102w0a6kaqx1jc5pr5zk90bgah54jy8f";
url = "https://elpa.nongnu.org/nongnu-devel/org-journal-2.2.0.0.20250525.35745.tar";
sha256 = "0b00a6sn1ykqzz4f9zqi3z0n586n6q9swf92af3kxc9157av9wq5";
};
packageRequires = [ org ];
meta = {
@@ -3852,10 +3852,10 @@
elpaBuild {
pname = "orgit";
ename = "orgit";
version = "2.0.2.0.20250509.121824";
version = "2.0.2.0.20250527.133058";
src = fetchurl {
url = "https://elpa.nongnu.org/nongnu-devel/orgit-2.0.2.0.20250509.121824.tar";
sha256 = "0spqa4zm3k4dnnkns9p9fbji2qryrzlf272a64lhc2l4p5kl5s5d";
url = "https://elpa.nongnu.org/nongnu-devel/orgit-2.0.2.0.20250527.133058.tar";
sha256 = "14k8qa0i895fqqqb62njyb0i1kd627gbq68jaamscpwwzw7km66y";
};
packageRequires = [
compat
@@ -3899,10 +3899,10 @@
elpaBuild {
pname = "package-lint";
ename = "package-lint";
version = "0.26.0.20250418.142545";
version = "0.26.0.20250527.184516";
src = fetchurl {
url = "https://elpa.nongnu.org/nongnu-devel/package-lint-0.26.0.20250418.142545.tar";
sha256 = "0qpsyimq3i6p8s03ax2grnzn474ngmx2lcvsvf5db6fryhw9qxj3";
url = "https://elpa.nongnu.org/nongnu-devel/package-lint-0.26.0.20250527.184516.tar";
sha256 = "0nm3z8cirwvhls4ihckfnydw11qczrgps1mc1h56q3gsyr901z43";
};
packageRequires = [ let-alist ];
meta = {
@@ -4099,10 +4099,10 @@
elpaBuild {
pname = "php-mode";
ename = "php-mode";
version = "1.26.1.0.20250422.172013";
version = "1.26.1.0.20250528.130625";
src = fetchurl {
url = "https://elpa.nongnu.org/nongnu-devel/php-mode-1.26.1.0.20250422.172013.tar";
sha256 = "1d2ahw3vd7r9ylwb5cm5rjdd70cvfp7zy82rkx1ix2ddamfmbqya";
url = "https://elpa.nongnu.org/nongnu-devel/php-mode-1.26.1.0.20250528.130625.tar";
sha256 = "19zzmhak462xygriknnh3y83xfl2jrqvh4gz129vnwysnmb13lx3";
};
packageRequires = [ ];
meta = {
@@ -4162,10 +4162,10 @@
elpaBuild {
pname = "projectile";
ename = "projectile";
version = "2.9.1.0.20250402.71553";
version = "2.9.1.0.20250527.53156";
src = fetchurl {
url = "https://elpa.nongnu.org/nongnu-devel/projectile-2.9.1.0.20250402.71553.tar";
sha256 = "0cnidaysnma7bvzzw5vbkggy3z9zq51zlg4k2kd5b1f8dagjlzv7";
url = "https://elpa.nongnu.org/nongnu-devel/projectile-2.9.1.0.20250527.53156.tar";
sha256 = "0gnig1w4w3sjlvhkc66kbv6hp5bf4bp35iqkhz902qs565sdsxzk";
};
packageRequires = [ ];
meta = {
@@ -4183,10 +4183,10 @@
elpaBuild {
pname = "proof-general";
ename = "proof-general";
version = "4.6snapshot0.20250516.91308";
version = "4.6snapshot0.20250527.143946";
src = fetchurl {
url = "https://elpa.nongnu.org/nongnu-devel/proof-general-4.6snapshot0.20250516.91308.tar";
sha256 = "0fkl0zm8wm6snp0baab0hbabzsli7jw8pq13kzvng2mj8djsm8l2";
url = "https://elpa.nongnu.org/nongnu-devel/proof-general-4.6snapshot0.20250527.143946.tar";
sha256 = "1xkk7hspy0zn4sm1j05j253fima73q0nbzma57vv1k8v68j933y9";
};
packageRequires = [ ];
meta = {
@@ -4227,10 +4227,10 @@
elpaBuild {
pname = "racket-mode";
ename = "racket-mode";
version = "1.0.20250514.102731";
version = "1.0.20250522.142050";
src = fetchurl {
url = "https://elpa.nongnu.org/nongnu-devel/racket-mode-1.0.20250514.102731.tar";
sha256 = "1da7v2w83kn7q07nb3pili3hsiymxa9h2l7nhf7y8sskq8j1sscc";
url = "https://elpa.nongnu.org/nongnu-devel/racket-mode-1.0.20250522.142050.tar";
sha256 = "19zc9y704b9naqgx9cs9j40q0z402jp02f83l1fpcpyq3gbhmi1y";
};
packageRequires = [ compat ];
meta = {
@@ -4311,10 +4311,10 @@
elpaBuild {
pname = "recomplete";
ename = "recomplete";
version = "0.2.0.20250119.115844";
version = "0.2.0.20250528.3825";
src = fetchurl {
url = "https://elpa.nongnu.org/nongnu-devel/recomplete-0.2.0.20250119.115844.tar";
sha256 = "0sij91c5p5lqbj3p7f0iprzvzrgvg37bn16jgh93byxwpr8cwpik";
url = "https://elpa.nongnu.org/nongnu-devel/recomplete-0.2.0.20250528.3825.tar";
sha256 = "1cip3dy8klcy1hsw2w3wx9lhzpf6inya430japh798drn0k3vi7j";
};
packageRequires = [ ];
meta = {
@@ -4612,10 +4612,10 @@
elpaBuild {
pname = "slime";
ename = "slime";
version = "2.31snapshot0.20250417.201511";
version = "2.31snapshot0.20250520.4450";
src = fetchurl {
url = "https://elpa.nongnu.org/nongnu-devel/slime-2.31snapshot0.20250417.201511.tar";
sha256 = "0pbm04m0wzr63vs45xs624xgkjskpcvprwgizqmh84bvqg6g4zvh";
url = "https://elpa.nongnu.org/nongnu-devel/slime-2.31snapshot0.20250520.4450.tar";
sha256 = "0b1kxhimlx73nmhgkidjpz3dm1nsyikqhflz2c7mhmdii50nramy";
};
packageRequires = [ macrostep ];
meta = {
@@ -4633,10 +4633,10 @@
elpaBuild {
pname = "sly";
ename = "sly";
version = "1.0.43.0.20250501.191827";
version = "1.0.43.0.20250522.230625";
src = fetchurl {
url = "https://elpa.nongnu.org/nongnu-devel/sly-1.0.43.0.20250501.191827.tar";
sha256 = "026z57k7bg8brvgi8pngdxrb0djski7ryj9mlrzbjwr1r5z5c1z4";
url = "https://elpa.nongnu.org/nongnu-devel/sly-1.0.43.0.20250522.230625.tar";
sha256 = "13y1h93bf4bmz0mwrwhk6nd4skvcpjw9x0jl1ga2xx1ja6wf81s5";
};
packageRequires = [ ];
meta = {
@@ -4846,10 +4846,10 @@
elpaBuild {
pname = "swift-mode";
ename = "swift-mode";
version = "9.3.0.0.20250412.62413";
version = "9.3.0.0.20250524.53009";
src = fetchurl {
url = "https://elpa.nongnu.org/nongnu-devel/swift-mode-9.3.0.0.20250412.62413.tar";
sha256 = "0mgjswp1ldqcwicgxa3rr6nv8g2yi6pgqlxi9m2pvzihy9x70b53";
url = "https://elpa.nongnu.org/nongnu-devel/swift-mode-9.3.0.0.20250524.53009.tar";
sha256 = "0dcr8d4d4bn6grxycc89bm14i4vq4z8vvhi9548v0iz5fh1bjwgs";
};
packageRequires = [ seq ];
meta = {
@@ -5108,10 +5108,10 @@
elpaBuild {
pname = "treesit-fold";
ename = "treesit-fold";
version = "0.2.1.0.20250422.155540";
version = "0.2.1.0.20250521.182836";
src = fetchurl {
url = "https://elpa.nongnu.org/nongnu-devel/treesit-fold-0.2.1.0.20250422.155540.tar";
sha256 = "02svdk7sas6xy2acqsm2d0qmafxp16qhb2p8n2mchg6aa3yldk9b";
url = "https://elpa.nongnu.org/nongnu-devel/treesit-fold-0.2.1.0.20250521.182836.tar";
sha256 = "0d1a2fqm2j60cz3ssqnmdvp0qd906i7wnxvn6nxmq6ny77lvhk0y";
};
packageRequires = [ ];
meta = {
@@ -5477,10 +5477,10 @@
elpaBuild {
pname = "with-editor";
ename = "with-editor";
version = "3.4.3.0.20250509.145538";
version = "3.4.3.0.20250521.153138";
src = fetchurl {
url = "https://elpa.nongnu.org/nongnu-devel/with-editor-3.4.3.0.20250509.145538.tar";
sha256 = "1chrmrlxx61q1n2kqghka8vq2mj7rnk2slx8rfp7nkcsja4b6nz7";
url = "https://elpa.nongnu.org/nongnu-devel/with-editor-3.4.3.0.20250521.153138.tar";
sha256 = "0i1912zgn5v06pbbyw03vxhn329d58p39li6b8jxrniz74si3h7x";
};
packageRequires = [ compat ];
meta = {
@@ -5587,10 +5587,10 @@
elpaBuild {
pname = "xah-fly-keys";
ename = "xah-fly-keys";
version = "26.12.20250503115607.0.20250503.115753";
version = "26.12.20250517213917.0.20250517.214741";
src = fetchurl {
url = "https://elpa.nongnu.org/nongnu-devel/xah-fly-keys-26.12.20250503115607.0.20250503.115753.tar";
sha256 = "1vn45rxy14ij4w7iswcwlkgvgjnjbgana2v2a34k71xn392gsf32";
url = "https://elpa.nongnu.org/nongnu-devel/xah-fly-keys-26.12.20250517213917.0.20250517.214741.tar";
sha256 = "1wihfan7mxi1d4qxwdqwpfzdi0zjmwwq3ssiscg9i39mqnlyn93s";
};
packageRequires = [ ];
meta = {
@@ -54,10 +54,10 @@
elpaBuild {
pname = "aidermacs";
ename = "aidermacs";
version = "1.3";
version = "1.4";
src = fetchurl {
url = "https://elpa.nongnu.org/nongnu/aidermacs-1.3.tar";
sha256 = "03s08h5xp57l228gn9lay4a7h19zk6wyn777r2icsn1a1ii63l82";
url = "https://elpa.nongnu.org/nongnu/aidermacs-1.4.tar";
sha256 = "0432v40yr0yjma7lhd53dn7rlfsh8fampw9j2wvmcqpw6dhny4jy";
};
packageRequires = [
compat
@@ -601,10 +601,10 @@
elpaBuild {
pname = "clojure-mode";
ename = "clojure-mode";
version = "5.19.0";
version = "5.20.0";
src = fetchurl {
url = "https://elpa.nongnu.org/nongnu/clojure-mode-5.19.0.tar";
sha256 = "10dpdi4yc7bbga2mllk46jfy58ppj8vlhs37zd9vlk9rnfc54r99";
url = "https://elpa.nongnu.org/nongnu/clojure-mode-5.20.0.tar";
sha256 = "16myla7yfknxf36w0n09xg2rr4z4374gs6iqb9spf9hmw0d6z800";
};
packageRequires = [ ];
meta = {
@@ -2287,10 +2287,10 @@
elpaBuild {
pname = "gnuplot";
ename = "gnuplot";
version = "0.8.1";
version = "0.9";
src = fetchurl {
url = "https://elpa.nongnu.org/nongnu/gnuplot-0.8.1.tar";
sha256 = "1y364j5gr8cnkndxd088kaxd2ah0nd7176gfjligm3ngpgg6ndyx";
url = "https://elpa.nongnu.org/nongnu/gnuplot-0.9.tar";
sha256 = "019cvjh4cqn6y5y2kxw8sy1y23jkh9mmi38wpg3mqayq4xfxdlyv";
};
packageRequires = [ ];
meta = {
@@ -2567,10 +2567,10 @@
elpaBuild {
pname = "haskell-ts-mode";
ename = "haskell-ts-mode";
version = "1.1.4";
version = "1.2.0";
src = fetchurl {
url = "https://elpa.nongnu.org/nongnu/haskell-ts-mode-1.1.4.tar";
sha256 = "1430hddrj9lkfxapxa5d13q800awqxhg84r87abmry9skn35jfs7";
url = "https://elpa.nongnu.org/nongnu/haskell-ts-mode-1.2.0.tar";
sha256 = "016722wrs24i5kzirlc5mzs12m4g6wg4aba6fda2q1ghmf41g8pp";
};
packageRequires = [ ];
meta = {
@@ -2872,10 +2872,10 @@
elpaBuild {
pname = "inf-clojure";
ename = "inf-clojure";
version = "3.2.1";
version = "3.3.0";
src = fetchurl {
url = "https://elpa.nongnu.org/nongnu/inf-clojure-3.2.1.tar";
sha256 = "1pvngj87hqr0qzc62cgq294rllxbmn7803pnqqr8ah1qxy65a1wb";
url = "https://elpa.nongnu.org/nongnu/inf-clojure-3.3.0.tar";
sha256 = "1z81gk1w2mvas0qlfxg0i2af6d93kylsn3lwiq0xymzlcp0rjjdj";
};
packageRequires = [ clojure-mode ];
meta = {
@@ -3268,10 +3268,10 @@
elpaBuild {
pname = "magit";
ename = "magit";
version = "4.3.2";
version = "4.3.5";
src = fetchurl {
url = "https://elpa.nongnu.org/nongnu/magit-4.3.2.tar";
sha256 = "1pi69z1h5h6qlwmvwl2i2n5gcv9anp9zpgv9knqwrq8j2d5ialgr";
url = "https://elpa.nongnu.org/nongnu/magit-4.3.5.tar";
sha256 = "04hybghzplgdk4vlyss221lvlvny16i9g1043l7gds1iib8875pc";
};
packageRequires = [
compat
@@ -3299,10 +3299,10 @@
elpaBuild {
pname = "magit-section";
ename = "magit-section";
version = "4.3.2";
version = "4.3.5";
src = fetchurl {
url = "https://elpa.nongnu.org/nongnu/magit-section-4.3.2.tar";
sha256 = "0dnmwciz26wrsmp48h9axmj6qjgzhz9i7g3bvlpsq3i8y32xwdf6";
url = "https://elpa.nongnu.org/nongnu/magit-section-4.3.5.tar";
sha256 = "1rik2sh3v6y6qsyjnqiy5vbf5ls0gnc32lhsnrkyaryfc3kis7cf";
};
packageRequires = [
compat
@@ -4250,10 +4250,10 @@
elpaBuild {
pname = "racket-mode";
ename = "racket-mode";
version = "1.0.20250514.102731";
version = "1.0.20250522.142050";
src = fetchurl {
url = "https://elpa.nongnu.org/nongnu/racket-mode-1.0.20250514.102731.tar";
sha256 = "0d5q08q3bm2ws0g0cys1xzjvznrqxhwxikjrkdri9js8y14z50l3";
url = "https://elpa.nongnu.org/nongnu/racket-mode-1.0.20250522.142050.tar";
sha256 = "0af5m48mjnyqyrpcb09g59w6jxlm7917b6xm62zliv0bns9k9irm";
};
packageRequires = [ compat ];
meta = {
@@ -5601,10 +5601,10 @@
elpaBuild {
pname = "xah-fly-keys";
ename = "xah-fly-keys";
version = "26.12.20250503115607";
version = "26.12.20250517213917";
src = fetchurl {
url = "https://elpa.nongnu.org/nongnu/xah-fly-keys-26.12.20250503115607.tar";
sha256 = "1mh6rssi7g6dfl2glpivfixpdfk0kdlsbilszazmhzc6bh34blj5";
url = "https://elpa.nongnu.org/nongnu/xah-fly-keys-26.12.20250517213917.tar";
sha256 = "19wandxd82i2v3qm4njhvvmdd36rmf2d28nn5cp8ain71zx6vk4a";
};
packageRequires = [ ];
meta = {
File diff suppressed because it is too large Load Diff
@@ -260,8 +260,8 @@ let
mktplcRef = {
name = "ng-template";
publisher = "Angular";
version = "20.0.0";
hash = "sha256-87SImzcGbwvf9xtdbD3etqaWe6fMVeCKc+f8qTyFnUA=";
version = "20.0.1";
hash = "sha256-N+2uNX1gXGHAvkx2aff9DfB7vji8bXNLt86yaSYt0o0=";
};
meta = {
changelog = "https://marketplace.visualstudio.com/items/Angular.ng-template/changelog";
@@ -1587,8 +1587,8 @@ let
# semver scheme, contrary to preview versions which are listed on
# the VSCode Marketplace and use a calver scheme. We should avoid
# using preview versions, because they expire after two weeks.
version = "17.1.0";
hash = "sha256-WPSMf1yLXSDqImpMTxn1eXcSrimVSVjjaXDzFMQ/l0E=";
version = "17.1.1";
hash = "sha256-hlhq4bR3v0AqI3lxilgNEgjjEEBVL0xfvIWbV/Ronh4=";
};
meta = {
changelog = "https://marketplace.visualstudio.com/items/eamodio.gitlens/changelog";
@@ -5316,8 +5316,8 @@ let
mktplcRef = {
name = "vim";
publisher = "vscodevim";
version = "1.29.2";
hash = "sha256-RBh4yQxOoUpwNKedFjEeu6hO0tU9AAPlDrt2LhgZT50=";
version = "1.30.1";
hash = "sha256-cKdVQTGj7R37YefQAaTspF1RVul/9wv7u9b5TpGZN5k=";
};
meta = {
license = lib.licenses.mit;
@@ -2,8 +2,8 @@
jq,
lib,
moreutils,
prettier,
vscode-utils,
nodePackages,
}:
vscode-utils.buildVscodeMarketplaceExtension {
@@ -19,11 +19,11 @@ vscode-utils.buildVscodeMarketplaceExtension {
moreutils
];
buildInputs = [ nodePackages.prettier ];
buildInputs = [ prettier ];
postInstall = ''
cd "$out/$installPrefix"
jq '.contributes.configuration.properties."prettier.prettierPath".default = "${nodePackages.prettier}/lib/node_modules/prettier"' package.json | sponge package.json
jq '.contributes.configuration.properties."prettier.prettierPath".default = "${prettier}/lib/node_modules/prettier"' package.json | sponge package.json
'';
meta = {
@@ -5,13 +5,13 @@
}:
mkLibretroCore {
core = "fbneo";
version = "0-unstable-2025-05-19";
version = "0-unstable-2025-05-28";
src = fetchFromGitHub {
owner = "libretro";
repo = "fbneo";
rev = "d2cf158e9ba82fc7dfec592452e6113121665c19";
hash = "sha256-dO1R0iIXEo2lrMSOJXlZBw2yXBfyB/1yFfRPYEEAojo=";
rev = "60d812a5a25b7f6cc7df2842264b67847e51122b";
hash = "sha256-4HJZXsgUp0do7T0bwPPuuyoN7XIII3DSzk6LsLqZQeQ=";
};
makefile = "Makefile";
@@ -5,13 +5,13 @@
}:
mkLibretroCore {
core = "puae";
version = "0-unstable-2025-05-14";
version = "0-unstable-2025-05-24";
src = fetchFromGitHub {
owner = "libretro";
repo = "libretro-uae";
rev = "fad7beb42c90a1a04829d465bed951a69cd36f8b";
hash = "sha256-pO45/IvgT2q5k0sBhSNZ6srJx4h2lYSjG/mKFJesGbc=";
rev = "f1c248602abb58e7c570feec3f59f4677407b252";
hash = "sha256-CmdMeAntu+uFp1HowBz3UgMiqFbRrNuMyevTlKxga/M=";
};
makefile = "Makefile";
@@ -1,99 +0,0 @@
{
lib,
stdenv,
fetchurl,
libX11,
cups,
zlib,
libxml2,
pango,
atk,
gtk2,
glib,
gdk-pixbuf,
gdk-pixbuf-xlib,
}:
stdenv.mkDerivation rec {
pname = "adobe-reader";
version = "9.5.5";
src = fetchurl {
url = "http://ardownload.adobe.com/pub/adobe/reader/unix/9.x/${version}/enu/AdbeRdr${version}-1_i486linux_enu.tar.bz2";
sha256 = "0h35misxrqkl5zlmmvray1bqf4ywczkm89n9qw7d9arqbg3aj3pf";
};
# !!! Adobe Reader contains copies of OpenSSL, libcurl, and libicu.
# We should probably remove those and use the regular Nixpkgs versions.
libPath = lib.makeLibraryPath [
stdenv.cc.cc
libX11
zlib
libxml2
cups
pango
atk
gtk2
glib
gdk-pixbuf
gdk-pixbuf-xlib
];
installPhase = ''
p=$out/libexec/adobe-reader
mkdir -p $out/libexec
tar xvf COMMON.TAR -C $out
tar xvf ILINXR.TAR -C $out
mv $out/Adobe/Reader9 $p
rmdir $out/Adobe
# Disable this plugin for now (it needs LDAP).
rm $p/Reader/intellinux/plug_ins/PPKLite.api
# Remove unneeded files
rm $p/bin/UNINSTALL
'';
postFixup = ''
patchelf --interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" \
--set-rpath $libPath \
$p/Reader/intellinux/bin/acroread
# The "xargs -r" is to shut up a warning when Mozilla can't be found.
substituteInPlace $p/bin/acroread \
--replace-fail /bin/pwd $(type -P pwd) \
--replace-fail /bin/ls $(type -P ls) \
--replace-fail xargs "xargs -r"
mkdir -p $out/bin
ln -s $p/bin/acroread $out/bin/acroread
mkdir -p $out/share/applications
mv $p/Resource/Support/AdobeReader.desktop $out/share/applications/
icon=$p/Resource/Icons/128x128/AdobeReader9.png
[ -e $icon ]
sed -i $out/share/applications/AdobeReader.desktop \
-e "s|Icon=.*|Icon=$icon|"
mkdir -p $out/share/mimelnk/application
mv $p/Resource/Support/vnd*.desktop $out/share/mimelnk/application
'';
dontStrip = true;
passthru.mozillaPlugin = "/libexec/adobe-reader/Browser/intellinux";
meta = {
description = "Adobe Reader, a viewer for PDF documents";
homepage = "http://www.adobe.com/products/reader";
sourceProvenance = with lib.sourceTypes; [ binaryNativeCode ];
license = lib.licenses.unfree;
knownVulnerabilities = [
"Numerous unresolved vulnerabilities"
"See: https://www.cvedetails.com/product/497/Adobe-Acrobat-Reader.html?vendor_id=53"
];
platforms = [ "i686-linux" ];
maintainers = with lib.maintainers; [ onny ];
mainProgram = "acroread";
};
}
@@ -21,7 +21,7 @@ stdenv.mkDerivation {
# trivial derivation
preferLocalBuild = true;
allowSubstitues = false;
allowSubstitutes = false;
meta = with lib; {
description = "Configurable blue light filter";
+2 -2
View File
@@ -16,13 +16,13 @@
mkDerivation rec {
pname = "klayout";
version = "0.30.1";
version = "0.30.2";
src = fetchFromGitHub {
owner = "KLayout";
repo = "klayout";
rev = "v${version}";
hash = "sha256-5e697uEuH2r/k/5qSuluJ2qvgCqM/Z+O0fZ7Lygdvz4=";
hash = "sha256-x6eg5SoPTcxSggonI1OdbTo/BCjqaV7bXHnEG90o2J8=";
};
postPatch = ''
+2 -2
View File
@@ -10,14 +10,14 @@
rofi-unwrapped.overrideAttrs (oldAttrs: rec {
pname = "rofi-wayland-unwrapped";
version = "1.7.8+wayland1";
version = "1.7.9+wayland1";
src = fetchFromGitHub {
owner = "lbonn";
repo = "rofi";
rev = version;
fetchSubmodules = true;
hash = "sha256-6hQfy0c73z1Oi2mGjuhKLZQIBpG1u06v40dmlc5fL/w=";
hash = "sha256-tLSU0Q221Pg3JYCT+w9ZT4ZbbB5+s8FwsZa/ehfn00s=";
};
depsBuildBuild = oldAttrs.depsBuildBuild ++ [ pkg-config ];
File diff suppressed because it is too large Load Diff
@@ -167,7 +167,27 @@ stdenv.mkDerivation {
changelog = "https://www.mozilla.org/en-US/firefox/${version}/releasenotes/";
description = "Mozilla Firefox, free web browser (binary package)";
homepage = "https://www.mozilla.org/firefox/";
license = licenses.mpl20;
license = {
shortName = "firefox";
fullName = "Firefox Terms of Use";
url = "https://www.mozilla.org/about/legal/terms/firefox/";
# "You Are Responsible for the Consequences of Your Use of Firefox"
# (despite the heading, not an indemnity clause) states the following:
#
# > You agree that you will not use Firefox to infringe anyones rights
# > or violate any applicable laws or regulations.
# >
# > You will not do anything that interferes with or disrupts Mozillas
# > services or products (or the servers and networks which are connected
# > to Mozillas services).
#
# This conflicts with FSF freedom 0: "The freedom to run the program as
# you wish, for any purpose". (Why should Mozilla be involved in
# instances where you break your local laws just because you happen to
# use Firefox whilst doing it?)
free = false;
redistributable = true; # since MPL-2.0 still applies
};
sourceProvenance = with sourceTypes; [ binaryNativeCode ];
platforms = builtins.attrNames mozillaPlatforms;
hydraPlatforms = [ ];
File diff suppressed because it is too large Load Diff
@@ -10,11 +10,11 @@
buildMozillaMach rec {
pname = "firefox-beta";
binaryName = pname;
version = "140.0b2";
version = "140.0b3";
applicationName = "Firefox Beta";
src = fetchurl {
url = "mirror://mozilla/firefox/releases/${version}/source/firefox-${version}.source.tar.xz";
sha512 = "c8010b6cdf90f52d5105971d726139460a0194ca7e84ed57184897f4f258957ff64117ef14a38a6dba4cab3074f3a92aee0eaf221ecf22218f6408636ab9c960";
sha512 = "282b30284e9efa3909e1c1e8b01fd3c8ce5083668a01dea53487aa00d89734889e033051de3ce9aa66d7a84f4d4ac1c6e558fa4e3efe1e51077fc0831e989129";
};
meta = {
@@ -10,13 +10,13 @@
buildMozillaMach rec {
pname = "firefox-devedition";
binaryName = pname;
version = "140.0b2";
version = "140.0b3";
applicationName = "Firefox Developer Edition";
requireSigning = false;
branding = "browser/branding/aurora";
src = fetchurl {
url = "mirror://mozilla/devedition/releases/${version}/source/firefox-${version}.source.tar.xz";
sha512 = "4a369638dab1202f21f071a1eb48552888adf01e49ee4e029dfe7b42919312719004099b203a066057fd4d9ef9a684e5f95b0aa06ecf82cc88df0025f33f6368";
sha512 = "f7e2382ba9ad9a6fbea4a99ab541a4b70dcc4dd78d52230f5e600e9812eb796c890d424805b9c4d2ad7c981e3e509d654e9ae4e4c79c6a50880388e1b4c83bbe";
};
meta = {
@@ -14,16 +14,16 @@ builtins.mapAttrs
}:
buildGoModule rec {
inherit pname;
version = "3.29.3";
version = "3.30.0";
src = fetchFromGitHub {
owner = "projectcalico";
repo = "calico";
rev = "v${version}";
hash = "sha256-JK/iKVLXT8h+xZpkjVBEI8vfgRuoTHwWaoKikjBsJgI=";
hash = "sha256-twq0Yp2M1f9qtcAQ+kcZoBxXXtw1VrV9ZrtEnEPv+Ks=";
};
vendorHash = "sha256-dkBOhuX/tf+emLLeZ+7fI+z1pKwZLD0ZqZNxUMS32NE=";
vendorHash = "sha256-hvAFSr64YsGaSbbG3aEsSO+gprtQy51/BsdYAhAgH3Q=";
inherit doCheck subPackages;
@@ -13,13 +13,13 @@
stdenv.mkDerivation rec {
pname = "helm-secrets";
version = "4.6.4";
version = "4.6.5";
src = fetchFromGitHub {
owner = "jkroepke";
repo = pname;
rev = "v${version}";
hash = "sha256-PvWHxcxNSCI5RX830+b61fiyi0WX8ujEJzjyUOXp+iA=";
hash = "sha256-gSWavqvKdVBRF182fzEiRqEVg8douzEcpKiOdmSZ9hg=";
};
nativeBuildInputs = [ makeWrapper ];
@@ -9,16 +9,16 @@
buildGoModule rec {
pname = "helmfile";
version = "1.1.0";
version = "1.1.1";
src = fetchFromGitHub {
owner = "helmfile";
repo = "helmfile";
rev = "v${version}";
hash = "sha256-xLVUyzRl6Q9GJOoYJCo1pbYxheVjEvnQIa4BMJVR9PY=";
hash = "sha256-UGmthYbm0uMuWfUpXpTQUtZ71yXPRvmTZUJ2PLqjUrA=";
};
vendorHash = "sha256-biFRdHnOvxd2hgTGPotZtlmbyqNrkW8f158kjAuLkuA=";
vendorHash = "sha256-Sil18yyhEbITTEmU5IiqEXpip1GUgCaKQO3IOGsgX54=";
proxyVendor = true; # darwin/linux hash mismatch
@@ -0,0 +1,36 @@
# Using an external Containerd
K3s ships with its own containerd binary, however, sometimes it's necessary to use an external
containerd. This can be done in a few lines of configuration.
## Configure Containerd
```nix
virtualisation.containerd = {
enable = true;
settings.plugins."io.containerd.grpc.v1.cri".cni = {
bin_dir = "/var/lib/rancher/k3s/data/current/bin";
conf_dir = "/var/lib/rancher/k3s/agent/etc/cni/net.d";
};
# Optionally, configure containerd to use the k3s pause image
settings.plugins."io.containerd.grpc.v1.cri" = {
sandbox_image = "docker.io/rancher/mirrored-pause:3.6";
};
};
```
## Configure k3s
```nix
services.k3s = {
enable = true;
extraFlags = [ "--container-runtime-endpoint unix:///run/containerd/containerd.sock" ];
};
```
## Importing Container Images
K3s provides the `services.k3s.images` option to import container images at startup. This option
does **not** work with an external containerd, but you can import the images via
`ctr -n=k8s.io image import /var/lib/rancher/k3s/agent/images/*`. Note that you need to set the
`k8s.io` namespace to make the images available to the cluster.
@@ -2,7 +2,7 @@
(callPackage ./generic.nix { }) {
channel = "edge";
version = "25.5.1";
sha256 = "0wnj2v08j71aq8p3qx3k71xkbnr84vxgd3cidka7lxrj21hcbk0q";
vendorHash = "sha256-dxTTxTwDWvcDJiwMtqg814oUx0TsUcon7Wx0sVIq26A=";
version = "25.5.4";
sha256 = "0hyjhcb36qbsigc0knf4spyal0djijln1w5cdjrrpwx58jzjhzj8";
vendorHash = "sha256-DNR2qLTai7BOOovbd9MfQ1ZUUehkD9WQ/UJo+MDdjSg=";
}
@@ -1,4 +1,13 @@
{
"_assert": {
"hash": "sha256-ngHxzV7lRg6pOtyNTdCv3ToRK/vO016Vp2mlh7QT8Rc=",
"homepage": "https://registry.terraform.io/providers/hashicorp/assert",
"owner": "hashicorp",
"repo": "terraform-provider-assert",
"rev": "v0.16.0",
"spdx": "MPL-2.0",
"vendorHash": "sha256-nHaBNYCKfTvaDnz2SeexM2cyNVK5ThPYn4rnGEw7Wi0="
},
"aci": {
"hash": "sha256-NS5q6ElCGEGSceOCIVudKE6m6EzXMV/3HGHHXwYopOA=",
"homepage": "https://registry.terraform.io/providers/CiscoDevNet/aci",
@@ -108,11 +117,11 @@
"vendorHash": "sha256-2NSP0jGFchh3roqSKxCRbkQ+8lNiGRo4JivvBj6wqdg="
},
"aviatrix": {
"hash": "sha256-t19AY2TWOEZpJNbqZevZ6pdzAdUARjmmB8fJjW/LGKM=",
"hash": "sha256-sk0AU0Gqynpl1z+AXRqW1/F56pV4uTrO332622NrzX0=",
"homepage": "https://registry.terraform.io/providers/AviatrixSystems/aviatrix",
"owner": "AviatrixSystems",
"repo": "terraform-provider-aviatrix",
"rev": "v3.2.1",
"rev": "v8.0.0",
"spdx": "MPL-2.0",
"vendorHash": null
},
@@ -135,11 +144,11 @@
"vendorHash": null
},
"azurerm": {
"hash": "sha256-u9rcky6sIFEfPI5WqyqQ0Z+p4wXuV6mv+mHtHbI8Zbc=",
"hash": "sha256-dd/PAMkdnVlcjOk8Q5i4TsfmSWJgG25FgI/lF0OrVXI=",
"homepage": "https://registry.terraform.io/providers/hashicorp/azurerm",
"owner": "hashicorp",
"repo": "terraform-provider-azurerm",
"rev": "v4.29.0",
"rev": "v4.31.0",
"spdx": "MPL-2.0",
"vendorHash": null
},
@@ -153,20 +162,20 @@
"vendorHash": null
},
"baiducloud": {
"hash": "sha256-n+vKQ6IE1PV/09OCeYj28o1YKVP0cCDCTYLLq/4PClg=",
"hash": "sha256-rWLmDopC6m2tzh2NEYvclp0QVH0r/5toA+3jBUkcBaY=",
"homepage": "https://registry.terraform.io/providers/baidubce/baiducloud",
"owner": "baidubce",
"repo": "terraform-provider-baiducloud",
"rev": "v1.21.13",
"rev": "v1.21.16",
"spdx": "MPL-2.0",
"vendorHash": null
},
"bigip": {
"hash": "sha256-MVnqTt9Hsc2wqKbCK+mEpNnNf1mKU6NgTPxO/8LZbaw=",
"hash": "sha256-TZDIJE2iBNcd505e+gfFvTr6vRqfwAm/nqlxVeT8gM0=",
"homepage": "https://registry.terraform.io/providers/F5Networks/bigip",
"owner": "F5Networks",
"repo": "terraform-provider-bigip",
"rev": "v1.22.9",
"rev": "v1.22.10",
"spdx": "MPL-2.0",
"vendorHash": null
},
@@ -390,13 +399,13 @@
"vendorHash": "sha256-WZqwBkVXoFmDikIyt9GWszLA/9YBoQHAdBuWbGKZBZw="
},
"docker": {
"hash": "sha256-vpgvEDcmUpumCNvahijb7lkkEQUeaHH0a+CSzPspIyM=",
"hash": "sha256-sPeX1bupACBSmt8ppyxQKyD+FXIPdCBWn8cnOAvNHwQ=",
"homepage": "https://registry.terraform.io/providers/kreuzwerker/docker",
"owner": "kreuzwerker",
"repo": "terraform-provider-docker",
"rev": "v3.5.0",
"rev": "v3.6.0",
"spdx": "MPL-2.0",
"vendorHash": "sha256-b2N/m85aUbD93ATbqdqU/7HHQz2JKW7Cj96JnjLVq20="
"vendorHash": "sha256-bQM6bAtTqAzrIqvCnpfxYefiTmTKaJq8okAgOVls5jk="
},
"doppler": {
"hash": "sha256-TPWHqRpvyk1dtSbQySMOecq0AhN2VlSB+2naPIbvMHI=",
@@ -498,13 +507,13 @@
"vendorHash": null
},
"gitlab": {
"hash": "sha256-tZJuXYRD6+E6Bhrn+cjeSCRAePgj/g+E8YTStwjZiSM=",
"hash": "sha256-VOmBHM5h/ZEkCPbsVRRM/Ygkfv7Dom41nlqJ/5+aZ4M=",
"homepage": "https://registry.terraform.io/providers/gitlabhq/gitlab",
"owner": "gitlabhq",
"repo": "terraform-provider-gitlab",
"rev": "v17.11.0",
"rev": "v18.0.0",
"spdx": "MPL-2.0",
"vendorHash": "sha256-3URc3A1kkcVQ/riB2/THuIEiCq9MrifxgRL73cjsbDA="
"vendorHash": "sha256-X0vbtUIKYzCeRD/BbMj3VPVAwx6d7gkbHV8j9JXlaFM="
},
"google": {
"hash": "sha256-q/BFHpA3ig0QfB0mhJGqr/uQYs/SH5YX8QgWCyjcSio=",
@@ -534,11 +543,11 @@
"vendorHash": "sha256-fqVBnAivVekV+4tpkl+E6eNA3wi8mhLevJRCs3W7L2g="
},
"grafana": {
"hash": "sha256-ZPejLOzShIW7BDlyYcFSV48uiA8XU15ziobHqtS7LW8=",
"hash": "sha256-Nz+6l/sJog7Snzady4qQCooBwv6IZ+12RkFZ55Hka9w=",
"homepage": "https://registry.terraform.io/providers/grafana/grafana",
"owner": "grafana",
"repo": "terraform-provider-grafana",
"rev": "v3.25.0",
"rev": "v3.25.1",
"spdx": "MPL-2.0",
"vendorHash": "sha256-G5CiuQ0GPsJ7D+wlWQUAktT3DSgb2X7NL66c6U+9APU="
},
@@ -561,11 +570,11 @@
"vendorHash": "sha256-C1MT4mA7ubh1mN4+HO0bwMpjVHjDIG6UXZI6gvXHFZE="
},
"hcloud": {
"hash": "sha256-DSTxn4t6YWxRBimMlqkP1VLqqxk1Kox+h0u9i9rSdhc=",
"hash": "sha256-/BcK9K/jNEU4r7mFc4rrhNnPlyH98UrDUCgIluY52fA=",
"homepage": "https://registry.terraform.io/providers/hetznercloud/hcloud",
"owner": "hetznercloud",
"repo": "terraform-provider-hcloud",
"rev": "v1.50.1",
"rev": "v1.51.0",
"spdx": "MPL-2.0",
"vendorHash": "sha256-jbNkhNSSO9jT20J6dVhBEbN9cwtNrvx5EUcyOZcMd4Y="
},
@@ -642,13 +651,13 @@
"vendorHash": null
},
"ibm": {
"hash": "sha256-MMVZnGQ8MWczkbMC9VUoRcplmIk4TdiahZ/ZSYhbQlM=",
"hash": "sha256-5AYTRuZ9hhi5AgAT3woHTv3vMmqUUXUjZKZjaBRf9H8=",
"homepage": "https://registry.terraform.io/providers/IBM-Cloud/ibm",
"owner": "IBM-Cloud",
"repo": "terraform-provider-ibm",
"rev": "v1.78.1",
"rev": "v1.78.4",
"spdx": "MPL-2.0",
"vendorHash": "sha256-8P5GnDXY8n/NhSY0Oo/7CP7U7pH7f0Z0GfiFnicCxdo="
"vendorHash": "sha256-ug5TAuOJCk2wmhhwLQLYXVL3xxODUum6oEK/8A6ojIA="
},
"icinga2": {
"hash": "sha256-Y/Oq0aTzP+oSKPhHiHY9Leal4HJJm7TNDpcdqkUsCmk=",
@@ -687,13 +696,13 @@
"vendorHash": "sha256-Dd02Ikt51eh/FBEtswe8Qr6P5tgQFZJTKgO01gxPX3s="
},
"kafka": {
"hash": "sha256-O8fD974eEmIgMAbLsENBkHiS1+2onx7OOrhnwv+cGoo=",
"hash": "sha256-xFuNCHUE2r+NGsvLmD2W+d9oB6RjV/2o4sAxqTOJUtE=",
"homepage": "https://registry.terraform.io/providers/Mongey/kafka",
"owner": "Mongey",
"repo": "terraform-provider-kafka",
"rev": "v0.9.0",
"rev": "v0.10.1",
"spdx": "MIT",
"vendorHash": "sha256-fp4r3Eh4EcMHK1F9mGr1iEQ/ZmI4+PbzsDjEK0AqXk8="
"vendorHash": "sha256-wnyCBxqvmWfgR/MLRVcA/cXeq08qcuhSVIsSWYPTJGc="
},
"kafka-connect": {
"hash": "sha256-XMGpK22Ww8swvfrnbClxjErVmkBKX3dxdlkjgNJHlCE=",
@@ -813,13 +822,13 @@
"vendorHash": "sha256-QxbZv6YMa5/I4bTeQBNdmG3EKtLEmstnH7HMiZzFJrI="
},
"migadu": {
"hash": "sha256-k9qpSxww6zXemEWDqjlrjFmeeMtKK9kR1hj9+gUq9VI=",
"hash": "sha256-WD9i0i8Jkl3aROcWHflc+FP4xOtBMsRvaHM+V40+Me0=",
"homepage": "https://registry.terraform.io/providers/metio/migadu",
"owner": "metio",
"repo": "terraform-provider-migadu",
"rev": "2025.5.15",
"rev": "2025.5.22",
"spdx": "0BSD",
"vendorHash": "sha256-MjRVd/JlmHppdFG7k3pgNVWbCaEZuh5E591x/P6cT5o="
"vendorHash": "sha256-c3rg9n3JL14kEZJTe3oIPiNM7AvG1QqtTnpX0P0JuMY="
},
"minio": {
"hash": "sha256-loUcdsr5zFoOXIu0CLYKvutIVLYG0+DsuwPCxAeVMF8=",
@@ -913,20 +922,20 @@
"vendorHash": "sha256-LRIfxQGwG988HE5fftGl6JmBG7tTknvmgpm4Fu1NbWI="
},
"oci": {
"hash": "sha256-fLeI4YdHZmRPILHeoEjwcNN9mVOq2zvdjSoQkIiwvdc=",
"hash": "sha256-aV69aOYkHQwD8JVFC9zD+pV0Wwjx5ZqG1PoP20aED8o=",
"homepage": "https://registry.terraform.io/providers/oracle/oci",
"owner": "oracle",
"repo": "terraform-provider-oci",
"rev": "v7.0.0",
"rev": "v7.2.0",
"spdx": "MPL-2.0",
"vendorHash": null
},
"okta": {
"hash": "sha256-vsOes4rBULwQ3JX5A7GBKTMvTpjb0CEOWqd6OaO3ujI=",
"hash": "sha256-8dFl39q8GTLGFR2O7ZIstA957x6gkAxL0qauXUxVMcI=",
"homepage": "https://registry.terraform.io/providers/okta/okta",
"owner": "okta",
"repo": "terraform-provider-okta",
"rev": "v4.18.0",
"rev": "v4.19.0",
"spdx": "MPL-2.0",
"vendorHash": "sha256-5BkKjne3r3V8T+SkqjfHVEpXXK8sKTYMc23g1EaLoOE="
},
@@ -967,13 +976,13 @@
"vendorHash": "sha256-HQVKblAm8H0Q5pbJdIVSMc5FLi3O9TV475yass6BraY="
},
"opentelekomcloud": {
"hash": "sha256-nCtltzYV9yDYEkAuOJVdBlk11nSpdQtk/zlKEn81srs=",
"hash": "sha256-v7nJcnVbxwf7khyjlSfVAyz0ZZEuIJNjjXpsIynNPZk=",
"homepage": "https://registry.terraform.io/providers/opentelekomcloud/opentelekomcloud",
"owner": "opentelekomcloud",
"repo": "terraform-provider-opentelekomcloud",
"rev": "v1.36.38",
"rev": "v1.36.39",
"spdx": "MPL-2.0",
"vendorHash": "sha256-Q02AnTFzEO5NES5rMQABuhwiLi5uZlzX4c06HQ+d9/A="
"vendorHash": "sha256-rTyx5FuBzO4RZ3IefsWaVTSW5YtTBT95ZtP8aZJgoD8="
},
"openwrt": {
"hash": "sha256-z78IceF2VJtiQpVqC+rTUDsph73LZawIK+az3rEhljA=",
@@ -1138,13 +1147,13 @@
"vendorHash": "sha256-Ry791h5AuYP03nex9nM8X5Mk6PeL7hNDbFyVRvVPJNE="
},
"scaleway": {
"hash": "sha256-17BjGoIkKdMVVQMetx+ksQhLbTl/cCdC05HaB7Sai/4=",
"hash": "sha256-rAbCLMA4u+bOXbmGDdM5wHIzPytwuX8HTOUgYQwLAdg=",
"homepage": "https://registry.terraform.io/providers/scaleway/scaleway",
"owner": "scaleway",
"repo": "terraform-provider-scaleway",
"rev": "v2.53.0",
"rev": "v2.55.0",
"spdx": "MPL-2.0",
"vendorHash": "sha256-1N9HByEI0TwI7rdg/OmMObwnb4Hx8oigv5A6hpF0TrY="
"vendorHash": "sha256-SP92c/UhVpkThVWL4N2tTZjhwHjEo73/IJa0roXZKlE="
},
"secret": {
"hash": "sha256-MmAnA/4SAPqLY/gYcJSTnEttQTsDd2kEdkQjQj6Bb+A=",
@@ -1237,13 +1246,13 @@
"vendorHash": "sha256-oEamCseBGmETqeBLiBHfh81oQNUHWfTrsegkFijvb20="
},
"spotinst": {
"hash": "sha256-gRR0Ie27Wsc8Hf4u5gto2tkuZp/VoPbKBfDcJYN4W9A=",
"hash": "sha256-ip+HG6nPd4sYyKDzggR5cfwaQQZI/C9GzT+PvGDO3Dk=",
"homepage": "https://registry.terraform.io/providers/spotinst/spotinst",
"owner": "spotinst",
"repo": "terraform-provider-spotinst",
"rev": "v1.219.0",
"rev": "v1.220.0",
"spdx": "MPL-2.0",
"vendorHash": "sha256-M6MkqX8iVeP9IpLSLfkl7cMDDtO1VLw1YpODd0zPJvU="
"vendorHash": "sha256-w3Bg1FpMki8EhkVe1R8QWD91n8tooT+xIvlM50gbcSA="
},
"ssh": {
"hash": "sha256-1UN5QJyjCuxs2vQYlSuz2jsu/HgGTxOoWWRcv4qcwow=",
@@ -1273,20 +1282,20 @@
"vendorHash": "sha256-9M1DsE/FPQK8TG7xCJWbU3HAJCK3p/7lxdzjO1oAfWs="
},
"sumologic": {
"hash": "sha256-P/icRnqd24To3n/WCS666n3slQwt7eNUpt9aD7c9GGU=",
"hash": "sha256-gTBgX1QHZz6qpizt2BP7BvE3j92q+dKhKHhP4bCTfvo=",
"homepage": "https://registry.terraform.io/providers/SumoLogic/sumologic",
"owner": "SumoLogic",
"repo": "terraform-provider-sumologic",
"rev": "v3.0.10",
"rev": "v3.0.12",
"spdx": "MPL-2.0",
"vendorHash": "sha256-S3SBp17+qqA64tWydD5DYc9KahycJ+qDrdXvFwu6Lbc="
},
"sysdig": {
"hash": "sha256-fkMVPPKqUQdp/JSPByV3yuMaY3SKVy75u1ljAL9bEZc=",
"hash": "sha256-oJ51syzDKX7ZO8EJ3Ug1JNRO34N0t4Y8CzAszc5apOM=",
"homepage": "https://registry.terraform.io/providers/sysdiglabs/sysdig",
"owner": "sysdiglabs",
"repo": "terraform-provider-sysdig",
"rev": "v1.56.1",
"rev": "v1.56.3",
"spdx": "MPL-2.0",
"vendorHash": "sha256-L+XwC7c4ph4lM0+BhHB9oi1R/Av8jlDcqHewOmtPU1s="
},
@@ -10,13 +10,13 @@
buildGoModule rec {
pname = "discordo";
version = "0-unstable-2025-05-11";
version = "0-unstable-2025-05-23";
src = fetchFromGitHub {
owner = "ayn2op";
repo = pname;
rev = "232f4d469b67d746b9db067c0c73686dac87e938";
hash = "sha256-k02oX7HAQ39UCm/hiS0cjibuZ/51sBTG1CnoP80e/mA=";
rev = "af2b0995ba6f6f2df8937cf6a6d5bee3adbc0d0c";
hash = "sha256-eBdPnpO9fZP7uq2/wVmeMu8Bf9UympsjUHTQlX2XKYw=";
};
vendorHash = "sha256-gEwTpt/NPN1+YpTBmW8F34UotowrOcA0mfFgBdVFiTA=";
@@ -1,142 +0,0 @@
{
lib,
stdenvNoCC,
rustPlatform,
fetchFromGitHub,
buildGoModule,
makeWrapper,
nodejs,
pnpm,
esbuild,
perl,
pkg-config,
glib,
webkitgtk_4_0,
libayatana-appindicator,
cairo,
openssl,
}:
let
version = "4.99.16";
geph-meta = with lib; {
description = "Modular Internet censorship circumvention system designed specifically to deal with national filtering";
homepage = "https://geph.io";
platforms = platforms.linux;
maintainers = with maintainers; [ penalty1083 ];
};
in
{
cli = rustPlatform.buildRustPackage rec {
pname = "geph4-client";
inherit version;
src = fetchFromGitHub {
owner = "geph-official";
repo = pname;
rev = "v${version}";
hash = "sha256-6YWPsSRIZpvVCIGZ1z7srobDvVzLr0o2jBcB/7kbK7I=";
};
useFetchCargoVendor = true;
cargoHash = "sha256-igIYTlI3hqvlOTgdwouA9YussP9h0pOHUUTCjA2LE5U=";
nativeBuildInputs = [ perl ];
meta = geph-meta // {
license = with lib.licenses; [ gpl3Only ];
};
};
gui = stdenvNoCC.mkDerivation (finalAttrs: {
pname = "geph-gui";
inherit version;
src = fetchFromGitHub {
owner = "geph-official";
repo = "gephgui-pkg";
rev = "9f0d5c689c2cae67a4750a68295676f449724a98";
hash = "sha256-/aHd1EDrFp1kXen5xRCCl8LVlMVH0pY8buILZri81II=";
fetchSubmodules = true;
};
gephgui-wry = rustPlatform.buildRustPackage {
pname = "gephgui-wry";
inherit (finalAttrs) version src;
sourceRoot = "${finalAttrs.src.name}/gephgui-wry";
useFetchCargoVendor = true;
cargoHash = "sha256-pCj4SulUVEC4QTPBrPQBn5xJ+sHPs6KfjsdVRcsRapY=";
pnpmDeps = pnpm.fetchDeps {
inherit (finalAttrs) pname version src;
sourceRoot = "${finalAttrs.src.name}/gephgui-wry/gephgui";
hash = "sha256-0MGlsLEgugQ1wEz07ROIwkanTa8PSKwIaxNahyS1014=";
};
nativeBuildInputs = [
pkg-config
pnpm.configHook
makeWrapper
nodejs
];
buildInputs = [
glib
webkitgtk_4_0
libayatana-appindicator
cairo
openssl
];
ESBUILD_BINARY_PATH = "${lib.getExe (
esbuild.override {
buildGoModule =
args:
buildGoModule (
args
// rec {
version = "0.15.10";
src = fetchFromGitHub {
owner = "evanw";
repo = "esbuild";
rev = "v${version}";
hash = "sha256-DebmLtgPrla+1UcvOHMnWmxa/ZqrugeRRKXIiJ9LYDk=";
};
vendorHash = "sha256-+BfxCyg0KkDQpHt/wycy/8CTG6YBA/VJvJFhhzUnSiQ=";
}
);
}
)}";
pnpmRoot = "gephgui";
preBuild = ''
pushd gephgui
pnpm build
popd
'';
};
dontBuild = true;
installPhase = ''
install -Dt $out/bin ${finalAttrs.gephgui-wry}/bin/gephgui-wry
install -d $out/share/icons/hicolor
for i in '16' '32' '64' '128' '256'
do
name=''${i}x''${i}
dir=$out/share/icons/hicolor
mkdir -p $dir
mv flatpak/icons/$name $dir
done
install -Dt $out/share/applications flatpak/icons/io.geph.GephGui.desktop
sed -i -e '/StartupWMClass/s/=.*/=gephgui-wry/' $out/share/applications/io.geph.GephGui.desktop
'';
meta = geph-meta // {
license = with lib.licenses; [ unfree ];
};
});
}
@@ -10,7 +10,7 @@ let
if stdenv.hostPlatform.isLinux then
{
stable = "0.0.95";
ptb = "0.0.144";
ptb = "0.0.146";
canary = "0.0.687";
development = "0.0.75";
}
@@ -30,7 +30,7 @@ let
};
ptb = fetchurl {
url = "https://ptb.dl2.discordapp.net/apps/linux/${version}/discord-ptb-${version}.tar.gz";
hash = "sha256-URTBQ2YzkC8p7524RqR1OCqI3WkvtsClvd91RIWEQqU=";
hash = "sha256-bcQsz6hhgtUD2j0MD3rEdFhsGJMQY1+yo19y/lLX+j8=";
};
canary = fetchurl {
url = "https://canary.dl2.discordapp.net/apps/linux/${version}/discord-canary-${version}.tar.gz";
@@ -66,6 +66,10 @@
moonlight,
withTTS ? true,
enableAutoscroll ? false,
# Disabling this would normally break Discord.
# The intended use-case for this is when SKIP_HOST_UPDATE is enabled via other means,
# for example if a settings.json is linked declaratively (e.g., with home-manager).
disableUpdates ? true,
}:
assert lib.assertMsg (
!(withMoonlight && withVencord)
@@ -180,7 +184,7 @@ stdenv.mkDerivation rec {
${lib.strings.optionalString enableAutoscroll "--add-flags \"--enable-blink-features=MiddleClickAutoscroll\""} \
--prefix XDG_DATA_DIRS : "${gtk3}/share/gsettings-schemas/${gtk3.name}/" \
--prefix LD_LIBRARY_PATH : ${libPath}:$out/opt/${binaryName} \
--run "${lib.getExe disableBreakingUpdates}"
${lib.strings.optionalString disableUpdates "--run ${lib.getExe disableBreakingUpdates}"}
ln -s $out/opt/${binaryName}/${binaryName} $out/bin/
# Without || true the install would fail on case-insensitive filesystems
+87 -35
View File
@@ -10,8 +10,8 @@
boost,
libopus,
libsndfile,
speexdsp,
protobuf,
speex,
libcap,
alsa-lib,
python3,
@@ -22,16 +22,21 @@
libogg,
libvorbis,
stdenv_32bit,
alsaSupport ? stdenv.hostPlatform.isLinux,
iceSupport ? true,
zeroc-ice,
jackSupport ? false,
libjack2,
pipewireSupport ? true,
pipewireSupport ? stdenv.hostPlatform.isLinux,
pipewire,
pulseSupport ? true,
libpulseaudio,
speechdSupport ? false,
speechd-minimal,
microsoft-gsl,
nlohmann_json,
xar,
makeWrapper,
}:
let
@@ -52,18 +57,24 @@ let
qt5.qttools
] ++ (overrides.nativeBuildInputs or [ ]);
buildInputs = [
avahi
boost
poco
protobuf
] ++ (overrides.buildInputs or [ ]);
buildInputs =
[
boost
poco
protobuf
microsoft-gsl
nlohmann_json
]
++ lib.optionals stdenv.hostPlatform.isLinux [ avahi ]
++ (overrides.buildInputs or [ ]);
cmakeFlags = [
"-D g15=OFF"
"-D CMAKE_CXX_STANDARD=17" # protobuf >22 requires C++ 17
"-D BUILD_NUMBER=${lib.versions.patch source.version}"
] ++ (overrides.configureFlags or [ ]);
"-D bundled-gsl=OFF"
"-D bundled-json=OFF"
] ++ (overrides.cmakeFlags or [ ]);
preConfigure = ''
patchShebangs scripts
@@ -79,7 +90,7 @@ let
felixsinger
lilacious
];
platforms = platforms.linux;
platforms = platforms.linux ++ (overrides.platforms or [ ]);
};
}
);
@@ -89,7 +100,13 @@ let
generic {
type = "mumble";
nativeBuildInputs = [ qt5.qttools ];
platforms = lib.platforms.darwin;
nativeBuildInputs =
[ qt5.qttools ]
++ lib.optionals stdenv.hostPlatform.isDarwin [
makeWrapper
];
buildInputs =
[
flac
@@ -97,36 +114,71 @@ let
libopus
libsndfile
libvorbis
speexdsp
qt5.qtsvg
rnnoise
speex
]
++ lib.optional (!jackSupport) alsa-lib
++ lib.optional (!jackSupport && alsaSupport) alsa-lib
++ lib.optional jackSupport libjack2
++ lib.optional speechdSupport speechd-minimal
++ lib.optional pulseSupport libpulseaudio
++ lib.optional pipewireSupport pipewire;
++ lib.optional pipewireSupport pipewire
++ lib.optionals stdenv.hostPlatform.isDarwin [
xar
];
configureFlags =
[
"-D server=OFF"
"-D bundled-celt=ON"
"-D bundled-opus=OFF"
"-D bundled-speex=OFF"
"-D bundle-qt-translations=OFF"
"-D update=OFF"
"-D overlay-xcompile=OFF"
"-D oss=OFF"
"-D warnings-as-errors=OFF" # conversion error workaround
]
++ lib.optional (!speechdSupport) "-D speechd=OFF"
++ lib.optional (!pulseSupport) "-D pulseaudio=OFF"
++ lib.optional (!pipewireSupport) "-D pipewire=OFF"
++ lib.optional jackSupport "-D alsa=OFF -D jackaudio=ON";
cmakeFlags = [
"-D server=OFF"
"-D bundled-speex=OFF"
"-D bundle-qt-translations=OFF"
"-D update=OFF"
"-D overlay-xcompile=OFF"
"-D oss=OFF"
"-D warnings-as-errors=OFF" # conversion error workaround
# building the overlay on darwin does not work in nipxkgs (yet)
# also see the patch below to disable scripts the build option misses
# see https://github.com/mumble-voip/mumble/issues/6816
(lib.cmakeBool "overlay" (!stdenv.hostPlatform.isDarwin))
(lib.cmakeBool "speechd" speechdSupport)
(lib.cmakeBool "pulseaudio" pulseSupport)
(lib.cmakeBool "pipewire" pipewireSupport)
(lib.cmakeBool "jackaudio" jackSupport)
(lib.cmakeBool "alsa" (!jackSupport && alsaSupport))
];
env.NIX_CFLAGS_COMPILE = lib.optionalString speechdSupport "-I${speechd-minimal}/include/speech-dispatcher";
postFixup = ''
patches = [
./disable-overlay-build.patch
./fix-plugin-copy.patch
# Can be removed before the next update of Mumble, as that fix was upstreamed
# fix version display in MacOS Finder
(fetchpatch {
url = "https://github.com/mumble-voip/mumble/commit/fbd21bd422367bed19f801bf278562f567cbb8b7.patch";
sha256 = "sha256-qFhC2j/cOWzAhs+KTccDIdcgFqfr4y4VLjHiK458Ucs=";
})
];
postInstall = lib.optionalString stdenv.hostPlatform.isDarwin ''
# The build erraneously marks the *.dylib as executable
# which causes the qt-hook to wrap it, which then prevents the app from loading it
chmod -x $out/lib/mumble/plugins/*.dylib
# Post-processing for the app bundle
$NIX_BUILD_TOP/source/macx/scripts/osxdist.py \
--source-dir=$NIX_BUILD_TOP/source/ \
--binary-dir=$out \
--only-appbundle \
--version "${source.version}"
mkdir -p $out/Applications $out/bin
mv $out/Mumble.app $out/Applications/Mumble.app
# ensure that the app can be started from the shell
makeWrapper $out/Applications/Mumble.app/Contents/MacOS/mumble $out/bin/mumble
'';
postFixup = lib.optionalString stdenv.hostPlatform.isLinux ''
wrapProgram $out/bin/mumble \
--prefix LD_LIBRARY_PATH : "${
lib.makeLibraryPath (
@@ -134,6 +186,7 @@ let
)
}"
'';
} source;
server =
@@ -141,14 +194,13 @@ let
generic {
type = "murmur";
configureFlags =
cmakeFlags =
[
"-D client=OFF"
(lib.cmakeBool "ice" iceSupport)
]
++ lib.optional (!iceSupport) "-D ice=OFF"
++ lib.optionals iceSupport [
"-D Ice_HOME=${lib.getDev zeroc-ice};${lib.getLib zeroc-ice}"
"-D CMAKE_PREFIX_PATH=${lib.getDev zeroc-ice};${lib.getLib zeroc-ice}"
"-D Ice_SLICE_DIR=${lib.getDev zeroc-ice}/share/ice/slice"
];
@@ -161,7 +213,7 @@ let
stdenv = stdenv_32bit;
type = "mumble-overlay";
configureFlags = [
cmakeFlags = [
"-D server=OFF"
"-D client=OFF"
"-D overlay=ON"
@@ -0,0 +1,21 @@
diff --git a/macx/scripts/osxdist.py b/macx/scripts/osxdist.py
index bdc7fcbd2..2114caf37 100755
--- a/macx/scripts/osxdist.py
+++ b/macx/scripts/osxdist.py
@@ -128,7 +128,7 @@ class AppBundle(object):
shutil.copy(rsrc, os.path.join(rsrcpath, b))
# Extras
- shutil.copy(os.path.join(options.binary_dir, 'MumbleOverlay.pkg'), os.path.join(rsrcpath, 'MumbleOverlay.pkg'))
+ # shutil.copy(os.path.join(options.binary_dir, 'MumbleOverlay.pkg'), os.path.join(rsrcpath, 'MumbleOverlay.pkg'))
def copy_codecs(self):
'''
@@ -275,7 +276,7 @@ def package_client():
title = 'Mumble %s' % ver
# Fix overlay installer package
- create_overlay_package()
+ # create_overlay_package()
if options.only_overlay:
sys.exit(0)
@@ -0,0 +1,13 @@
diff --git a/macx/scripts/osxdist.py b/macx/scripts/osxdist.py
index bdc7fcbd2..2114caf37 100755
--- a/macx/scripts/osxdist.py
+++ b/macx/scripts/osxdist.py
@@ -151,7 +151,7 @@ class AppBundle(object):
dst = os.path.join(self.bundle, 'Contents', 'Plugins')
if not os.path.exists(dst):
os.makedirs(dst)
- for plugin in glob.glob(os.path.join(options.binary_dir, 'plugins') + '/*.dylib'):
+ for plugin in glob.glob(os.path.join(options.binary_dir, 'lib/mumble/plugins') + '/*.dylib'):
shutil.copy(plugin, dst)
def update_plist(self):
@@ -11,9 +11,9 @@ in
} { };
sublime-merge-dev = common {
buildVersion = "2105";
buildVersion = "2108";
dev = true;
aarch64sha256 = "PpiY2nD4fexo9zmKeHQ9KYnzB8sWkVa4YqO2q3C/abE=";
x64sha256 = "sUyI6ukNZjvszuKDL5fKvIpf3llZn+qQRg7WSdjw4rs=";
aarch64sha256 = "v81Xvp0tsXfbBkf8W53iC1YIcT5XJUYmXl6CWNdz6Hw=";
x64sha256 = "nIwJIWMecBZgfaCFs0/iFHJG9k/3lAqsliCsfvnhpKY=";
} { };
}
@@ -0,0 +1,35 @@
{
lib,
rel,
buildKodiBinaryAddon,
fetchFromGitHub,
pkg-config,
glm,
libGL,
}:
buildKodiBinaryAddon rec {
pname = "screensaver-asteroids";
namespace = "screensaver.asteroids";
version = "22.0.2";
src = fetchFromGitHub {
owner = "xbmc";
repo = namespace;
rev = "${version}-${rel}";
hash = "sha256-Ri9dgdhJbHybdUkZeRE7X7SQMaV2JZCm7znAyDEa470=";
};
extraNativeBuildInputs = [ pkg-config ];
extraBuildInputs = [
glm
libGL
];
meta = with lib; {
homepage = "https://github.com/xbmc/screensaver.asteroids";
description = "A screensaver that plays Asteroids";
license = licenses.gpl2Plus;
platforms = platforms.all;
teams = [ teams.kodi ];
};
}
+2 -2
View File
@@ -9,14 +9,14 @@
buildLua (finalAttrs: {
pname = "uosc";
version = "5.8.0";
version = "5.9.2";
scriptPath = "src/uosc";
src = fetchFromGitHub {
owner = "tomasklaen";
repo = "uosc";
rev = finalAttrs.version;
hash = "sha256-O8GLYsFoDQmYvHWLwfWo1zcQvCsV2RqAe/m+R5cOITI=";
hash = "sha256-tBSMLzwiKAXdbvyI80ihl0x/ZcDrNd4e7r1g7+CrLgQ=";
};
passthru.updateScript = gitUpdater { };
@@ -8,13 +8,13 @@
stdenv.mkDerivation rec {
pname = "obs-move-transition";
version = "3.1.2";
version = "3.1.3";
src = fetchFromGitHub {
owner = "exeldro";
repo = "obs-move-transition";
rev = version;
sha256 = "sha256-BCivYK18T4b+lRo6Qf9qFwmjAyjCPZDekQVi03QBLHc=";
sha256 = "sha256-8H0CJvJDrB7aP52VXsZ/GuTHQw/QJKLSHnKzhT1drU4=";
};
nativeBuildInputs = [ cmake ];
@@ -1,88 +0,0 @@
{
lib,
fetchFromGitHub,
fetchurl,
pkg-config,
cmake,
python3,
mkDerivation,
libX11,
libXrandr,
qtbase,
qtwebchannel,
qtwebengine,
qtx11extras,
libvdpau,
SDL2,
mpv,
libGL,
}:
let
# During compilation, a CMake bundle is downloaded from `artifacts.plex.tv`,
# which then downloads a handful of web client-related files. To enable
# sandboxed builds, we manually download them and save them so these files
# are fetched ahead-of-time instead of during the CMake build. To update
# plex-media-player use the update.sh script, so the versions and hashes
# for these files are also updated!
depSrcs = import ./deps.nix { inherit fetchurl; };
in
mkDerivation rec {
pname = "plex-media-player";
version = "2.58.1";
vsnHash = "ae73e074";
src = fetchFromGitHub {
owner = "plexinc";
repo = "plex-media-player";
rev = "v${version}-${vsnHash}";
sha256 = "1q20fdp5d0blb0q6p2357bwdc2g65cadkgdp4w533ij2nyaxydjd";
};
nativeBuildInputs = [
pkg-config
cmake
python3
];
buildInputs = [
libX11
libXrandr
qtbase
qtwebchannel
qtwebengine
qtx11extras
libvdpau
SDL2
mpv
libGL
];
preConfigure = with depSrcs; ''
mkdir -p build/dependencies
ln -s ${webClient} build/dependencies/buildid-${webClientBuildId}.cmake
ln -s ${webClientDesktopHash} build/dependencies/web-client-desktop-${webClientDesktopBuildId}.tar.xz.sha1
ln -s ${webClientDesktop} build/dependencies/web-client-desktop-${webClientDesktopBuildId}.tar.xz
ln -s ${webClientTvHash} build/dependencies/web-client-tv-${webClientTvBuildId}.tar.xz.sha1
ln -s ${webClientTv} build/dependencies/web-client-tv-${webClientTvBuildId}.tar.xz
'';
cmakeBuildType = "RelWithDebInfo";
cmakeFlags = [ "-DQTROOT=${qtbase}" ];
# plexmediaplayer currently segfaults under wayland
qtWrapperArgs = [
"--set"
"QT_QPA_PLATFORM"
"xcb"
];
passthru.updateScript = ./update.sh;
meta = with lib; {
description = "Streaming media player for Plex";
license = licenses.gpl2;
maintainers = with maintainers; [ b4dm4n ];
homepage = "https://plex.tv";
mainProgram = "plexmediaplayer";
};
}
-28
View File
@@ -1,28 +0,0 @@
{ fetchurl }:
rec {
webClientBuildId = "183-045db5be50e175";
webClientDesktopBuildId = "4.29.2-e50e175";
webClientTvBuildId = "4.29.6-045db5b";
webClient = fetchurl {
url = "https://artifacts.plex.tv/web-client-pmp/${webClientBuildId}/buildid.cmake";
sha256 = "1xsacy1xb8a9rfdrd7lvx7n3hd0cf2c3mgmg9wl18jvwnqxyac83";
};
webClientDesktopHash = fetchurl {
url = "https://artifacts.plex.tv/web-client-pmp/${webClientBuildId}/web-client-desktop-${webClientDesktopBuildId}.tar.xz.sha1";
sha256 = "07spxyhrg45ppa2zjn3ri4qvi6qimlmq6wmh492r3jkrwd71rxgf";
};
webClientDesktop = fetchurl {
url = "https://artifacts.plex.tv/web-client-pmp/${webClientBuildId}/web-client-desktop-${webClientDesktopBuildId}.tar.xz";
sha256 = "1zll79hpgx8fghx228li9qairfd637yf8rhvjzdgpq4dvn21fv65";
};
webClientTvHash = fetchurl {
url = "https://artifacts.plex.tv/web-client-pmp/${webClientBuildId}/web-client-tv-${webClientTvBuildId}.tar.xz.sha1";
sha256 = "1zzfw2g76wqrxrx9kck5q79if78z91wn3awj703kz9sgxi4bkjsk";
};
webClientTv = fetchurl {
url = "https://artifacts.plex.tv/web-client-pmp/${webClientBuildId}/web-client-tv-${webClientTvBuildId}.tar.xz";
sha256 = "1f1zvrr3c0w37gvl78blg9rgxxi64nc4iv5vd87qbysfh1vpsjz0";
};
}
@@ -1,71 +0,0 @@
#!/usr/bin/env nix-shell
#!nix-shell -i bash -p curl common-updater-scripts nix-prefetch-scripts jq
set -xeuo pipefail
nixpkgs="$(git rev-parse --show-toplevel)"
oldVersion="$(nix-instantiate --eval -E "with import $nixpkgs {}; plex-media-player.version or (builtins.parseDrvName plex-media-player.name).version" | tr -d '"')"
latestTag="$(curl -s https://api.github.com/repos/plexinc/plex-media-player/tags | jq -r '.[] | .name' | sort --version-sort | tail -1)"
latestVersion="$(expr $latestTag : 'v\(.*\)-.*')"
latestHash="$(expr $latestTag : 'v.*-\(.*\)')"
if [ ! "$oldVersion" = "$latestVersion" ]; then
# update default.nix with the new version and hash
expectedHash=$(nix-prefetch-git --url https://github.com/plexinc/plex-media-player.git --rev $latestTag --quiet | jq -r '.sha256')
update-source-version plex-media-player --version-key=vsnHash "${latestHash}" 0000
update-source-version plex-media-player "${latestVersion}" $expectedHash
# extract the webClientBuildId from the source folder
src="$(nix-build --no-out-link $nixpkgs -A plex-media-player.src)"
webClientBuildId="$(grep 'set(WEB_CLIENT_BUILD_ID' $src/CMakeModules/WebClient.cmake | cut -d' ' -f2 | tr -d ')')"
# retreive the included cmake file and hash
{ read -r webClientBuildIdHash; read -r webClientBuildIdPath; } < \
<(nix-prefetch-url --print-path "https://artifacts.plex.tv/web-client-pmp/${webClientBuildId}/buildid.cmake")
webClientDesktopBuildId="$(grep 'set(DESKTOP_VERSION' $webClientBuildIdPath | cut -d' ' -f2 | tr -d ')')"
webClientTvBuildId="$(grep 'set(TV_VERSION' $webClientBuildIdPath | cut -d' ' -f2 | tr -d ')')"
# get the hashes for the other files
webClientDesktopHash="$(nix-prefetch-url "https://artifacts.plex.tv/web-client-pmp/${webClientBuildId}/web-client-desktop-${webClientDesktopBuildId}.tar.xz.sha1")"
webClientDesktop="$(nix-prefetch-url "https://artifacts.plex.tv/web-client-pmp/${webClientBuildId}/web-client-desktop-${webClientDesktopBuildId}.tar.xz")"
webClientTvHash="$(nix-prefetch-url "https://artifacts.plex.tv/web-client-pmp/${webClientBuildId}/web-client-tv-${webClientTvBuildId}.tar.xz.sha1")"
webClientTv="$(nix-prefetch-url "https://artifacts.plex.tv/web-client-pmp/${webClientBuildId}/web-client-tv-${webClientTvBuildId}.tar.xz")"
# update deps.nix
cat > $nixpkgs/pkgs/applications/video/plex-media-player/deps.nix <<EOF
{ fetchurl }:
rec {
webClientBuildId = "${webClientBuildId}";
webClientDesktopBuildId = "${webClientDesktopBuildId}";
webClientTvBuildId = "${webClientTvBuildId}";
webClient = fetchurl {
url = "https://artifacts.plex.tv/web-client-pmp/\${webClientBuildId}/buildid.cmake";
sha256 = "${webClientBuildIdHash}";
};
webClientDesktopHash = fetchurl {
url = "https://artifacts.plex.tv/web-client-pmp/\${webClientBuildId}/web-client-desktop-\${webClientDesktopBuildId}.tar.xz.sha1";
sha256 = "${webClientDesktopHash}";
};
webClientDesktop = fetchurl {
url = "https://artifacts.plex.tv/web-client-pmp/\${webClientBuildId}/web-client-desktop-\${webClientDesktopBuildId}.tar.xz";
sha256 = "${webClientDesktop}";
};
webClientTvHash = fetchurl {
url = "https://artifacts.plex.tv/web-client-pmp/\${webClientBuildId}/web-client-tv-\${webClientTvBuildId}.tar.xz.sha1";
sha256 = "${webClientTvHash}";
};
webClientTv = fetchurl {
url = "https://artifacts.plex.tv/web-client-pmp/\${webClientBuildId}/web-client-tv-\${webClientTvBuildId}.tar.xz";
sha256 = "${webClientTv}";
};
}
EOF
git add "$nixpkgs"/pkgs/applications/video/plex-media-player/{default,deps}.nix
git commit -m "plex-media-player: ${oldVersion} -> ${latestVersion}"
else
echo "plex-media-player is already up-to-date"
fi
@@ -17,13 +17,13 @@
buildGoModule rec {
pname = "cri-o";
version = "1.32.4";
version = "1.33.0";
src = fetchFromGitHub {
owner = "cri-o";
repo = "cri-o";
rev = "v${version}";
hash = "sha256-zMSGXRJvFPlbJAnrdHMQYLPkS138r5/2/gyJhhoytgs=";
hash = "sha256-SM+68ZQjmEkDNW+KSHpxDJ3ADAk+euIkbQokp86Fm+I=";
};
vendorHash = null;
@@ -15,6 +15,7 @@
dnsutils,
iproute2,
wirelesstools,
nix-update-script,
}:
let
@@ -32,13 +33,13 @@ in
rustPlatform.buildRustPackage rec {
pname = "dwm-status";
version = "1.9.0";
version = "1.10.0";
src = fetchFromGitHub {
owner = "Gerschtli";
repo = pname;
rev = version;
sha256 = "sha256-OFwI4evwbXLO4ufjrh5SZia79bwbAKVoSm/IPCDku68=";
tag = version;
hash = "sha256-982JFYZroskKppAOZjBWOFt624FfRjhXpYN57s/cM50=";
};
nativeBuildInputs = [
@@ -53,19 +54,24 @@ rustPlatform.buildRustPackage rec {
];
useFetchCargoVendor = true;
cargoHash = "sha256-G31p8iVRUODD4hUssXaOqEOUTW+C+GZMy/L/tgumDtA=";
cargoHash = "sha256-2/zzE6JzhqeBYLiRkx5ELaW150rk1bMTrpxSw/wxNes=";
postInstall = lib.optionalString (bins != [ ]) ''
wrapProgram $out/bin/dwm-status --prefix "PATH" : "${lib.makeBinPath bins}"
'';
meta = with lib; {
passthru.updateScript = nix-update-script { };
meta = {
description = "Highly performant and configurable DWM status service";
homepage = "https://github.com/Gerschtli/dwm-status";
changelog = "https://github.com/Gerschtli/dwm-status/blob/master/CHANGELOG.md";
license = with licenses; [ mit ];
maintainers = with maintainers; [ gerschtli ];
changelog = "https://github.com/Gerschtli/dwm-status/blob/${src.rev}/CHANGELOG.md";
license = lib.licenses.mit;
maintainers = with lib.maintainers; [
gepbird
gerschtli
];
mainProgram = "dwm-status";
platforms = platforms.linux;
platforms = lib.platforms.linux;
};
}
+2 -2
View File
@@ -28,13 +28,13 @@ let
in
stdenv.mkDerivation (finalAttrs: {
pname = "adaptivecpp";
version = "24.10.0";
version = "25.02.0";
src = fetchFromGitHub {
owner = "AdaptiveCpp";
repo = "AdaptiveCpp";
rev = "v${finalAttrs.version}";
sha256 = "sha256-ZwHDiwv1ybC+2UhiOe2f7fnfqcul+CD9Uta8PT9ICr4=";
sha256 = "sha256-vXfw8+xn3/DYxUKp3QGdQ8sEbDwyk+8jDCyuvQOXigc=";
};
# do not use old FindCUDA cmake module
+14 -12
View File
@@ -8,38 +8,40 @@
rustPlatform.buildRustPackage rec {
pname = "afterburn";
version = "5.7.0";
version = "5.8.2";
src = fetchFromGitHub {
owner = "coreos";
repo = "afterburn";
rev = "v${version}";
sha256 = "sha256-j2eQUro0Rx1axBAaZDNICRrkygb4JAyxVAER/5BXXLY=";
sha256 = "sha256-hlcUtEc0uWFolCt+mZd7f68PJPa+i/mv+2aJh4Vhmsw=";
};
useFetchCargoVendor = true;
cargoHash = "sha256-xA5hp7a4DFMh8Xrh2ft94s6aNjORKtyCuNy4GgJbSsw=";
cargoHash = "sha256-Wn4Np1rwHh2sL1sqKalJrIDgMffxJgD1C2QOAR8bDRo=";
nativeBuildInputs = [ pkg-config ];
buildInputs = [ openssl ];
postPatch = ''
substituteInPlace ./systemd/afterburn-checkin.service --replace /usr/bin $out/bin
substituteInPlace ./systemd/afterburn-firstboot-checkin.service --replace /usr/bin $out/bin
substituteInPlace ./systemd/afterburn-sshkeys@.service.in --replace /usr/bin $out/bin
substituteInPlace ./systemd/afterburn.service --replace /usr/bin $out/bin
substituteInPlace \
./systemd/afterburn-checkin.service \
./systemd/afterburn-firstboot-checkin.service \
./systemd/afterburn-sshkeys@.service.in \
./systemd/afterburn.service \
--replace-fail /usr/bin "$out/bin"
'';
postInstall = ''
DEFAULT_INSTANCE=root PREFIX= DESTDIR=$out make install-units
'';
meta = with lib; {
homepage = "https://github.com/coreos/ignition";
meta = {
homepage = "https://github.com/coreos/afterburn";
description = "One-shot cloud provider agent";
license = licenses.asl20;
maintainers = [ maintainers.arianvp ];
platforms = platforms.linux;
license = lib.licenses.asl20;
maintainers = with lib.maintainers; [ arianvp ];
platforms = lib.platforms.linux;
mainProgram = "afterburn";
};
}
+3 -3
View File
@@ -6,16 +6,16 @@
buildGoModule rec {
pname = "air";
version = "1.61.7";
version = "1.62.0";
src = fetchFromGitHub {
owner = "air-verse";
repo = "air";
rev = "v${version}";
hash = "sha256-+PgJR9+adeko86jUs6/mvkZLgVuIMyd6fv8xxOZB4tE=";
hash = "sha256-egduQyC/f8La39pWvVfDuQ2l5oRz5ZPiCqH8wAAS1OA=";
};
vendorHash = "sha256-tct0bWTvZhHslqPAe8uOwBx4z6gLAq57igcbV1tg9OU=";
vendorHash = "sha256-ESrIn06Uhmq4qP1fdgIcao6ha1ZCqeu3cxJ1vvjRNKk=";
ldflags = [
"-s"
@@ -18,13 +18,13 @@
stdenv.mkDerivation rec {
pname = "alpine-make-vm-image";
version = "0.13.2";
version = "0.13.3";
src = fetchFromGitHub {
owner = "alpinelinux";
repo = "alpine-make-vm-image";
rev = "v${version}";
hash = "sha256-N7S9MlTpLIL5Od+buS7q64v8fmN+wbYK1FH/YW+nMP8=";
hash = "sha256-AIwT2JAGnMeMXUXZ0FRJthf22FvFfTTw/2LtZKPSj6g=";
};
nativeBuildInputs = [ makeWrapper ];
@@ -11,16 +11,16 @@
buildGoModule rec {
pname = "amazon-cloudwatch-agent";
version = "1.300055.2";
version = "1.300056.0";
src = fetchFromGitHub {
owner = "aws";
repo = "amazon-cloudwatch-agent";
tag = "v${version}";
hash = "sha256-af+bU57fGzenojHdyXcmtLuBHT6Lo5M5dgZRtu/zFQ8=";
hash = "sha256-SqXu9CjkSXN0pQwmm+oc2u/MihsfgNWFl++PUn49ohA=";
};
vendorHash = "sha256-WDEShkYNwrZgPT0v/9gZaL+4sQ8f4AhEEtaDvgMhuEM=";
vendorHash = "sha256-UU8o2kCRCY0FdoqsBovTsu42DFy7VD1kdI+tOA3l/Ac=";
# See the list in https://github.com/aws/amazon-cloudwatch-agent/blob/v1.300049.1/Makefile#L68-L77.
subPackages = [
+3 -3
View File
@@ -81,13 +81,13 @@ let
in
stdenv.mkDerivation {
pname = "ansel";
version = "0-unstable-2025-03-27";
version = "0-unstable-2025-05-31";
src = fetchFromGitHub {
owner = "aurelienpierreeng";
repo = "ansel";
rev = "62f9a4c56b02deca9fda4aff4392e4f44dea379c";
hash = "sha256-T9go14/wMJbOzKjOnRzzmeklFPQMbrTUnXyPlVahpkQ=";
rev = "b5d5f5ee7a3d4b68994a7bcfef4429a80cc2f287";
hash = "sha256-gb/Mp3YUeDLRxZQ7t55+FaxcfQDKdrNFZSV2uHhZ8Xo=";
fetchSubmodules = true;
};

Some files were not shown because too many files have changed in this diff Show More