mirror of
https://github.com/NixOS/nixpkgs.git
synced 2026-09-29 19:30:11 +00:00
Merge staging-next into staging
This commit is contained in:
50
.github/workflows/check.yml
vendored
50
.github/workflows/check.yml
vendored
@@ -24,6 +24,10 @@ on:
|
||||
# not evaluate untrusted code.
|
||||
NIXPKGS_MANUAL_EDIT_CHECK_APP_PRIVATE_KEY:
|
||||
required: false
|
||||
# Can be provided in pull requests because the job it is used in does
|
||||
# not evaluate untrusted code.
|
||||
NIXPKGS_CI_APP_PRIVATE_KEY:
|
||||
required: false
|
||||
# Should only be provided in the merge queue, not in pull requests,
|
||||
# where we're evaluating untrusted code.
|
||||
CACHIX_AUTH_TOKEN_GHA:
|
||||
@@ -136,6 +140,52 @@ jobs:
|
||||
GH_TOKEN: ${{ steps.app-token.outputs.token || github.token }}
|
||||
run: gh api /rate_limit | jq
|
||||
|
||||
reminders:
|
||||
if: inputs.baseBranch && inputs.headBranch
|
||||
permissions:
|
||||
pull-requests: write
|
||||
runs-on: ubuntu-24.04-arm
|
||||
timeout-minutes: 8
|
||||
steps:
|
||||
- uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
|
||||
with:
|
||||
persist-credentials: false
|
||||
path: trusted
|
||||
sparse-checkout: |
|
||||
ci/github-script
|
||||
|
||||
- uses: actions/create-github-app-token@bcd2ba49218906704ab6c1aa796996da409d3eb1 # v3.2.0
|
||||
if: github.event_name != 'pull_request' && vars.NIXPKGS_CI_CLIENT_ID
|
||||
id: app-token
|
||||
with:
|
||||
client-id: ${{ vars.NIXPKGS_CI_CLIENT_ID }}
|
||||
private-key: ${{ secrets.NIXPKGS_CI_APP_PRIVATE_KEY }}
|
||||
permission-pull-requests: write
|
||||
|
||||
- name: Log current API rate limits
|
||||
env:
|
||||
GH_TOKEN: ${{ steps.app-token.outputs.token || github.token }}
|
||||
run: gh api /rate_limit | jq
|
||||
|
||||
- name: Post reminders
|
||||
uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0
|
||||
with:
|
||||
github-token: ${{ steps.app-token.outputs.token || github.token }}
|
||||
script: |
|
||||
const { default: postReminders } = await import('${{ github.workspace }}/trusted/ci/github-script/reminders.ts')
|
||||
await postReminders({
|
||||
github,
|
||||
context,
|
||||
core,
|
||||
dry: context.eventName == 'pull_request',
|
||||
repoPath: 'trusted',
|
||||
})
|
||||
|
||||
- name: Log current API rate limits
|
||||
env:
|
||||
GH_TOKEN: ${{ steps.app-token.outputs.token || github.token }}
|
||||
run: gh api /rate_limit | jq
|
||||
|
||||
github-script:
|
||||
runs-on: ubuntu-24.04-arm
|
||||
timeout-minutes: 5
|
||||
|
||||
1
.github/workflows/pull-request-target.yml
vendored
1
.github/workflows/pull-request-target.yml
vendored
@@ -82,6 +82,7 @@ jobs:
|
||||
secrets:
|
||||
NIXPKGS_COMMIT_CHECK_APP_PRIVATE_KEY: ${{ secrets.NIXPKGS_COMMIT_CHECK_APP_PRIVATE_KEY }}
|
||||
NIXPKGS_MANUAL_EDIT_CHECK_APP_PRIVATE_KEY: ${{ secrets.NIXPKGS_MANUAL_EDIT_CHECK_APP_PRIVATE_KEY }}
|
||||
NIXPKGS_CI_APP_PRIVATE_KEY: ${{ secrets.NIXPKGS_CI_APP_PRIVATE_KEY }}
|
||||
with:
|
||||
baseBranch: ${{ needs.prepare.outputs.baseBranch }}
|
||||
headBranch: ${{ needs.prepare.outputs.headBranch }}
|
||||
|
||||
3
.github/workflows/test.yml
vendored
3
.github/workflows/test.yml
vendored
@@ -89,6 +89,7 @@ jobs:
|
||||
'ci/github-script/package.json',
|
||||
'ci/github-script/package-lock.json',
|
||||
'ci/github-script/prepare.js',
|
||||
'ci/github-script/reminders.ts',
|
||||
'ci/github-script/reviewers.js',
|
||||
'ci/github-script/reviews.js',
|
||||
'ci/github-script/supportedBranches.js',
|
||||
@@ -96,7 +97,7 @@ jobs:
|
||||
'ci/github-script/withRateLimit.js',
|
||||
'ci/pinned.json',
|
||||
'pkgs/top-level/release-supported-systems.json',
|
||||
].includes(file))) core.setOutput('pr', true)
|
||||
].includes(file) || file.startsWith('ci/github-script/reminders/'))) core.setOutput('pr', true)
|
||||
|
||||
merge-group:
|
||||
if: needs.prepare.outputs.merge-group
|
||||
|
||||
@@ -15,3 +15,9 @@ Run `./run commits OWNER REPO PR`, where OWNER is your username or "NixOS", REPO
|
||||
## Labeler
|
||||
|
||||
Run `./run labels OWNER REPO`, where OWNER is your username or "NixOS" and REPO the name of your fork or "nixpkgs".
|
||||
|
||||
## Reminders
|
||||
|
||||
Run `./run reminders OWNER REPO PR` to post the reminders that apply to the paths a pull request touches.
|
||||
|
||||
To add a reminder, write the review body to `reminders/KEY.md` and list KEY with its path regexes in `reminders.js`.
|
||||
|
||||
111
ci/github-script/reminders.ts
Normal file
111
ci/github-script/reminders.ts
Normal file
@@ -0,0 +1,111 @@
|
||||
import fs from 'node:fs'
|
||||
import path from 'node:path'
|
||||
import type * as actionsCore from '@actions/core'
|
||||
import type { context as actionsContext } from '@actions/github'
|
||||
import type { GitHub } from '@actions/github/lib/utils'
|
||||
import { getCommitDetailsForPR } from './get-pr-commit-details.js'
|
||||
import { dismissReviews, postReview } from './reviews.js'
|
||||
import { classify } from './supportedBranches.js'
|
||||
|
||||
/**
|
||||
* Reminders to post as a non-blocking review when a pull request touches
|
||||
* certain matching paths.
|
||||
*/
|
||||
export const reminders: { key: string; paths: RegExp[] }[] = [
|
||||
{
|
||||
key: 'docs-styleguide',
|
||||
paths: [/^doc\//, /^nixos\/doc\//, /^nixos\/modules\/.*\.md$/],
|
||||
},
|
||||
]
|
||||
|
||||
export function matchesAny(changedPaths: string[], patterns: RegExp[]) {
|
||||
return changedPaths.some((changedPath) =>
|
||||
patterns.some((pattern) => pattern.test(changedPath)),
|
||||
)
|
||||
}
|
||||
|
||||
function reminderBody(key: string) {
|
||||
return fs
|
||||
.readFileSync(path.join(import.meta.dirname, 'reminders', `${key}.md`), {
|
||||
encoding: 'utf8',
|
||||
})
|
||||
.trim()
|
||||
}
|
||||
|
||||
export default async function postReminders({
|
||||
github,
|
||||
context,
|
||||
core,
|
||||
repoPath,
|
||||
dry,
|
||||
}: {
|
||||
github: InstanceType<typeof GitHub>
|
||||
context: typeof actionsContext
|
||||
core: typeof actionsCore
|
||||
repoPath?: string
|
||||
dry: boolean
|
||||
}) {
|
||||
const pull_number = context.payload.pull_request?.number
|
||||
if (!pull_number) {
|
||||
core.info('This is not a pull request. Skipping reminders.')
|
||||
return
|
||||
}
|
||||
|
||||
const pr = (
|
||||
await github.rest.pulls.get({
|
||||
...context.repo,
|
||||
pull_number,
|
||||
})
|
||||
).data
|
||||
|
||||
if (pr.user.login.endsWith('[bot]')) {
|
||||
core.info('This is a bot, so reminders do not apply.')
|
||||
return
|
||||
}
|
||||
|
||||
const baseBranchType = classify(
|
||||
pr.base.ref.replace(/^refs\/heads\//, ''),
|
||||
).type
|
||||
const headBranchType = classify(
|
||||
pr.head.ref.replace(/^refs\/heads\//, ''),
|
||||
).type
|
||||
|
||||
if (
|
||||
baseBranchType.includes('development') &&
|
||||
headBranchType.includes('development') &&
|
||||
pr.base.repo.id === pr.head.repo?.id
|
||||
) {
|
||||
// This matches, for example, PRs from NixOS:staging-next to NixOS:master, or vice versa.
|
||||
// We ignore them, we should only care about PRs introducing new commits.
|
||||
// We still want to run on PRs from, e.g., Someone:master to NixOS:master though.
|
||||
core.info(
|
||||
'This PR is from one development branch to another. Skipping reminders.',
|
||||
)
|
||||
return
|
||||
}
|
||||
|
||||
const details = await getCommitDetailsForPR({ core, pr, repoPath })
|
||||
const changedPaths = details.flatMap(({ changedPaths }) => changedPaths)
|
||||
|
||||
for (const { key, paths } of reminders) {
|
||||
if (matchesAny(changedPaths, paths)) {
|
||||
await postReview({
|
||||
github,
|
||||
context,
|
||||
core,
|
||||
dry,
|
||||
event: 'COMMENT',
|
||||
body: reminderBody(key),
|
||||
reviewKey: key,
|
||||
})
|
||||
} else {
|
||||
await dismissReviews({
|
||||
github,
|
||||
context,
|
||||
core,
|
||||
dry,
|
||||
reviewKey: key,
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
12
ci/github-script/reminders/docs-styleguide.md
Normal file
12
ci/github-script/reminders/docs-styleguide.md
Normal file
@@ -0,0 +1,12 @@
|
||||
Thanks for contributing to the documentation
|
||||
|
||||
Make sure you follow the [documentation styleguide](https://github.com/NixOS/nixpkgs/blob/master/doc/styleguide.md), most notably:
|
||||
|
||||
- Show, don't tell: lead with a minimal working example; explanation follows the code.
|
||||
- No meta-commentary: don't write "This section explains how to…", just do it.
|
||||
- Imperative mood and active voice: "Run the command", not "The user should run the following command".
|
||||
- Present tense: "This creates a folder", not "This will create a folder".
|
||||
- Be confident: no hedging with "should", "might", "typically", "usually".
|
||||
- Cut filler words: "simply", "just", "easily", "basically"; "to", not "in order to".
|
||||
|
||||
For larger changes, like adding or removing whole sections, ask the NixOS documentation team for a review.
|
||||
@@ -127,4 +127,15 @@ program
|
||||
await run(checkManualFileEdits, owner, repo, pr, options)
|
||||
})
|
||||
|
||||
program
|
||||
.command('reminders')
|
||||
.description('Post reminders for the paths a PR touches')
|
||||
.argument('<owner>', 'Owner of the GitHub repository to run on (Example: NixOS)')
|
||||
.argument('<repo>', 'Name of the GitHub repository to run on (Example: nixpkgs)')
|
||||
.argument('<pr>', 'Number of the Pull Request to run on')
|
||||
.action(async (owner, repo, pr, options) => {
|
||||
const postReminders = (await import('./reminders.ts')).default
|
||||
await run(postReminders, owner, repo, pr, options)
|
||||
})
|
||||
|
||||
await program.parse()
|
||||
|
||||
@@ -10509,10 +10509,9 @@
|
||||
name = "Luis G. Torres";
|
||||
};
|
||||
giomf = {
|
||||
email = "giomf@mailbox.org";
|
||||
name = "giomf";
|
||||
github = "giomf";
|
||||
githubId = 35076723;
|
||||
name = "Guillaume Fournier";
|
||||
};
|
||||
giorgiga = {
|
||||
email = "giorgio.gallo@bitnic.it";
|
||||
|
||||
@@ -478,9 +478,9 @@ let
|
||||
// {
|
||||
Group = data.group;
|
||||
|
||||
# Let's Encrypt Failed Validation Limit allows 5 retries per hour, per account, hostname and hour.
|
||||
# This avoids eating them all up if something is misconfigured upon the first try.
|
||||
RestartSec = 15 * 60;
|
||||
RestartSec = data.renewIntervalFailed;
|
||||
|
||||
Restart = "on-failure";
|
||||
|
||||
# Keep in mind that these directories will be deleted if the user runs
|
||||
# systemctl clean --what=state
|
||||
@@ -697,6 +697,18 @@ let
|
||||
'';
|
||||
};
|
||||
|
||||
renewIntervalFailed = lib.mkOption {
|
||||
type = lib.types.str;
|
||||
inherit (defaultAndText "renewIntervalFailed" "${toString (60 * 15)}") default defaultText;
|
||||
description = ''
|
||||
Systemd time-span value when to retry a renewal in case the service has failed.
|
||||
See {manpage}`systemd.time(7)`
|
||||
|
||||
Let's Encrypt Failed Validation Limit allows 5 retries per hour, per account, hostname and hour.
|
||||
The default avoids eating them all up if something is misconfigured upon the first try.
|
||||
'';
|
||||
};
|
||||
|
||||
renewJitter = lib.mkOption {
|
||||
type = lib.types.str;
|
||||
inherit (defaultAndText "renewJitter" "24h") default defaultText;
|
||||
|
||||
@@ -4302,8 +4302,8 @@ let
|
||||
mktplcRef = {
|
||||
publisher = "shd101wyy";
|
||||
name = "markdown-preview-enhanced";
|
||||
version = "0.8.35";
|
||||
hash = "sha256-LtaRHhtjO33TRi403SZ3LAbOOVe4w4PzoGV0Avkw/BY=";
|
||||
version = "0.8.36";
|
||||
hash = "sha256-acmubrmOUirHkam1CreoP7p/LR2/6A6kpBku8Den83Y=";
|
||||
};
|
||||
meta = {
|
||||
description = "Provides a live preview of markdown using either markdown-it or pandoc";
|
||||
|
||||
@@ -80,6 +80,7 @@
|
||||
tenacity,
|
||||
termcolor,
|
||||
tomli,
|
||||
tomlkit,
|
||||
trove-classifiers,
|
||||
types-requests,
|
||||
typing-extensions,
|
||||
@@ -115,7 +116,7 @@ buildPythonPackage (
|
||||
pnpm = pnpm_10;
|
||||
sourceRoot = uiAttrs.sourceRoot;
|
||||
fetcherVersion = 3;
|
||||
hash = "sha256-dn8DRI2uRlc5FKNiP2nL1RlZOs7NSH+66qHyUKP5KBc=";
|
||||
hash = "sha256-+f/AcJSQyvu3YCT6p4wvbNXz/xM0WN8N+MWT7iLlFEk=";
|
||||
};
|
||||
|
||||
buildPhase = ''
|
||||
@@ -148,7 +149,7 @@ buildPythonPackage (
|
||||
pnpm = pnpm_10;
|
||||
sourceRoot = simpleUiAttrs.sourceRoot;
|
||||
fetcherVersion = 3;
|
||||
hash = "sha256-KcWxcWPhtoZIfa1DZdIjTDik28cTk86HQnCBg8e2xWg=";
|
||||
hash = "sha256-jLCTKdBdKQufVWQ1XRzOVN4jVC0YAcP+jnz5R966zUY=";
|
||||
};
|
||||
|
||||
buildPhase = ''
|
||||
@@ -181,20 +182,37 @@ buildPythonPackage (
|
||||
|
||||
dontCheckPythonMetadata = true;
|
||||
|
||||
dontCheckRuntimeDeps = true;
|
||||
|
||||
inherit src;
|
||||
sourceRoot = "${src.name}/providers/${lib.replaceStrings [ "_" ] [ "/" ] provider}";
|
||||
|
||||
buildInputs = [ flit-core ];
|
||||
postPatch = ''
|
||||
# relax dependencies
|
||||
sed -i -E 's/"flit_core==[^"]+"/"flit_core"/' pyproject.toml
|
||||
sed -i -E 's/"hatchling==[^"]+"/"hatchling"/' pyproject.toml
|
||||
sed -i -E 's/"packaging==[^"]+"/"packaging"/' pyproject.toml
|
||||
sed -i -E 's/"pathspec==[^"]+"/"pathspec"/' pyproject.toml
|
||||
sed -i -E 's/"pluggy==[^"]+"/"pluggy"/' pyproject.toml
|
||||
sed -i -E 's/"tomlkit==[^"]+"/"tomlkit"/' pyproject.toml
|
||||
sed -i -E 's/"trove-classifiers==[^"]+"/"trove-classifiers"/' pyproject.toml
|
||||
'';
|
||||
|
||||
build-system = [
|
||||
flit-core
|
||||
hatchling
|
||||
packaging
|
||||
pathspec
|
||||
pluggy
|
||||
tomlkit
|
||||
trove-classifiers
|
||||
];
|
||||
|
||||
dependencies = map (dep: python.pkgs.${dep}) providers.${provider}.deps;
|
||||
|
||||
pythonRemoveDeps = [
|
||||
"apache-airflow"
|
||||
];
|
||||
|
||||
pythonRelaxDeps = [
|
||||
"flit-core"
|
||||
];
|
||||
};
|
||||
|
||||
taskSdk = buildPythonPackage {
|
||||
@@ -213,8 +231,10 @@ buildPythonPackage (
|
||||
# relax dependencies
|
||||
sed -i -E 's/"hatchling==[^"]+"/"hatchling"/' pyproject.toml
|
||||
sed -i -E 's/"packaging==[^"]+"/"packaging"/' pyproject.toml
|
||||
sed -i -E 's/"trove-classifiers==[^"]+"/"trove-classifiers"/' pyproject.toml
|
||||
sed -i -E 's/"pathspec==[^"]+"/"pathspec"/' pyproject.toml
|
||||
sed -i -E 's/"pluggy==[^"]+"/"pluggy"/' pyproject.toml
|
||||
sed -i -E 's/"tomlkit==[^"]+"/"tomlkit"/' pyproject.toml
|
||||
sed -i -E 's/"trove-classifiers==[^"]+"/"trove-classifiers"/' pyproject.toml
|
||||
|
||||
# task-sdk needs config.yml from core subpackage
|
||||
mkdir -p src/airflow/config_templates
|
||||
@@ -223,6 +243,11 @@ buildPythonPackage (
|
||||
|
||||
build-system = [
|
||||
hatchling
|
||||
packaging
|
||||
pathspec
|
||||
pluggy
|
||||
tomlkit
|
||||
trove-classifiers
|
||||
];
|
||||
|
||||
dependencies = [
|
||||
@@ -239,7 +264,10 @@ buildPythonPackage (
|
||||
methodtools
|
||||
msgspec
|
||||
opentelemetry-api
|
||||
packaging
|
||||
pathspec
|
||||
pendulum
|
||||
pluggy
|
||||
psutil
|
||||
pydantic
|
||||
pygtrie
|
||||
@@ -249,6 +277,7 @@ buildPythonPackage (
|
||||
structlog
|
||||
tenacity
|
||||
types-requests
|
||||
typing-extensions
|
||||
];
|
||||
};
|
||||
|
||||
@@ -269,9 +298,11 @@ buildPythonPackage (
|
||||
sed -i -E 's/"hatchling==[^"]+"/"hatchling"/' pyproject.toml
|
||||
sed -i -E 's/"packaging==[^"]+"/"packaging"/' pyproject.toml
|
||||
sed -i -E 's/"GitPython==[^"]+"/"GitPython"/' pyproject.toml
|
||||
sed -i -E 's/"trove-classifiers==[^"]+"/"trove-classifiers"/' pyproject.toml
|
||||
sed -i -E 's/"smmap==[^"]+"/"smmap"/' pyproject.toml
|
||||
sed -i -E 's/"pathspec==[^"]+"/"pathspec"/' pyproject.toml
|
||||
sed -i -E 's/"pluggy==[^"]+"/"pluggy"/' pyproject.toml
|
||||
sed -i -E 's/"smmap==[^"]+"/"smmap"/' pyproject.toml
|
||||
sed -i -E 's/"tomlkit==[^"]+"/"tomlkit"/' pyproject.toml
|
||||
sed -i -E 's/"trove-classifiers==[^"]+"/"trove-classifiers"/' pyproject.toml
|
||||
|
||||
# Copy built UI assets
|
||||
cp -r ${airflowUi}/share/airflow/ui/dist src/airflow/ui/
|
||||
@@ -283,8 +314,11 @@ buildPythonPackage (
|
||||
gitpython
|
||||
hatchling
|
||||
packaging
|
||||
pathspec
|
||||
pluggy
|
||||
smmap
|
||||
tomli
|
||||
tomlkit
|
||||
trove-classifiers
|
||||
];
|
||||
|
||||
@@ -361,7 +395,7 @@ buildPythonPackage (
|
||||
in
|
||||
{
|
||||
pname = "apache-airflow";
|
||||
version = "3.3.1";
|
||||
version = "3.3.2";
|
||||
|
||||
__structuredAttrs = true;
|
||||
|
||||
@@ -369,7 +403,7 @@ buildPythonPackage (
|
||||
owner = "apache";
|
||||
repo = "airflow";
|
||||
tag = finalAttrs.version;
|
||||
hash = "sha256-ezEeO14GdaD7ZAl5VCiiIqkyoccHQ76QrThA3NeGP78=";
|
||||
hash = "sha256-iWr1LYq+lThZU7b7CmrIWFbg20bFy+SghrBpE6asgrg=";
|
||||
};
|
||||
|
||||
pyproject = true;
|
||||
@@ -378,8 +412,10 @@ buildPythonPackage (
|
||||
# relax dependencies
|
||||
sed -i -E 's/"hatchling==[^"]+"/"hatchling"/' pyproject.toml
|
||||
sed -i -E 's/"packaging==[^"]+"/"packaging"/' pyproject.toml
|
||||
sed -i -E 's/"trove-classifiers==[^"]+"/"trove-classifiers"/' pyproject.toml
|
||||
sed -i -E 's/"pathspec==[^"]+"/"pathspec"/' pyproject.toml
|
||||
sed -i -E 's/"pluggy==[^"]+"/"pluggy"/' pyproject.toml
|
||||
sed -i -E 's/"tomlkit==[^"]+"/"tomlkit"/' pyproject.toml
|
||||
sed -i -E 's/"trove-classifiers==[^"]+"/"trove-classifiers"/' pyproject.toml
|
||||
'';
|
||||
|
||||
nativeBuildInputs = [ writableTmpDirAsHomeHook ];
|
||||
@@ -393,6 +429,7 @@ buildPythonPackage (
|
||||
pluggy
|
||||
smmap
|
||||
tomli
|
||||
tomlkit
|
||||
trove-classifiers
|
||||
];
|
||||
|
||||
|
||||
68
pkgs/by-name/at/atlas-file-manager/package.nix
Normal file
68
pkgs/by-name/at/atlas-file-manager/package.nix
Normal file
@@ -0,0 +1,68 @@
|
||||
{
|
||||
lib,
|
||||
stdenv,
|
||||
fetchFromGitHub,
|
||||
cmake,
|
||||
ninja,
|
||||
pkg-config,
|
||||
qt6,
|
||||
exiv2,
|
||||
nix-update-script,
|
||||
testers,
|
||||
}:
|
||||
|
||||
stdenv.mkDerivation (finalAttrs: {
|
||||
pname = "atlas-file-manager";
|
||||
version = "1.2.0";
|
||||
|
||||
__structuredAttrs = true;
|
||||
strictDeps = true;
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "AstraSuite";
|
||||
repo = "Atlas";
|
||||
tag = "v${finalAttrs.version}";
|
||||
hash = "sha256-l/jdB90oPVxFG5LlylQxYskYJN+av+MGjiy4jh5Il6s=";
|
||||
};
|
||||
|
||||
postPatch = ''
|
||||
substituteInPlace src/main.cpp \
|
||||
--replace-fail 'app.setApplicationVersion("1.0.0");' 'app.setApplicationVersion("${finalAttrs.version}");'
|
||||
'';
|
||||
|
||||
nativeBuildInputs = [
|
||||
cmake
|
||||
ninja
|
||||
pkg-config
|
||||
qt6.wrapQtAppsHook
|
||||
];
|
||||
|
||||
buildInputs = [
|
||||
qt6.qtbase
|
||||
qt6.qtdeclarative
|
||||
qt6.qtsvg
|
||||
qt6.qtmultimedia
|
||||
exiv2
|
||||
];
|
||||
|
||||
cmakeFlags = [
|
||||
(lib.cmakeFeature "ATLAS_VERSION" finalAttrs.version)
|
||||
];
|
||||
|
||||
passthru = {
|
||||
updateScript = nix-update-script { };
|
||||
tests.version = testers.testVersion {
|
||||
package = finalAttrs.finalPackage;
|
||||
command = "QT_QPA_PLATFORM=offscreen atlas --version";
|
||||
};
|
||||
};
|
||||
|
||||
meta = {
|
||||
description = "File manager for Caelestia";
|
||||
homepage = "https://github.com/AstraSuite/Atlas";
|
||||
license = lib.licenses.gpl3Only;
|
||||
maintainers = with lib.maintainers; [ rachalaraj ];
|
||||
mainProgram = "atlas";
|
||||
platforms = lib.platforms.linux;
|
||||
};
|
||||
})
|
||||
@@ -16,7 +16,7 @@ let
|
||||
in
|
||||
stdenv.mkDerivation (finalAttrs: {
|
||||
pname = "bookorbit";
|
||||
version = "2.10.0";
|
||||
version = "3.0.0";
|
||||
__structuredAttrs = true;
|
||||
strictDeps = true;
|
||||
|
||||
@@ -24,7 +24,7 @@ stdenv.mkDerivation (finalAttrs: {
|
||||
owner = "bookorbit";
|
||||
repo = "bookorbit";
|
||||
tag = "v${finalAttrs.version}";
|
||||
hash = "sha256-Hczdvkv0p17qbsg0ZKczpFFZwMLasX5QC/yZQ5BOzA4=";
|
||||
hash = "sha256-+1yTDRnq8gHWHJY2q24+EpkPjvZFLgzzUkfa/XQS55g=";
|
||||
};
|
||||
|
||||
pnpmWorkspaces = [
|
||||
@@ -41,7 +41,7 @@ stdenv.mkDerivation (finalAttrs: {
|
||||
;
|
||||
inherit pnpm;
|
||||
fetcherVersion = 4;
|
||||
hash = "sha256-v/SVAGwDyBGdHdrbk0H3cpnF+w2/TLOcVfLFXe8kr8Y=";
|
||||
hash = "sha256-A+qKEHVLKn/tvYOk+h+drjWx59nVTh0wnrBxwf+uGx0=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [
|
||||
|
||||
@@ -3,6 +3,7 @@
|
||||
python3Packages,
|
||||
fetchFromGitHub,
|
||||
gitUpdater,
|
||||
runtimeShell,
|
||||
|
||||
# buildInputs
|
||||
buildbox,
|
||||
@@ -72,6 +73,21 @@ python3Packages.buildPythonApplication (finalAttrs: {
|
||||
patch
|
||||
];
|
||||
|
||||
# The dummy buildbox-casd scripts spawned by tests/internals/cascache.py use
|
||||
# an `/usr/bin/env sh` shebang, which doesn't exist in the Nix build sandbox.
|
||||
postPatch = ''
|
||||
substituteInPlace tests/internals/cascache.py \
|
||||
--replace-fail '#!/usr/bin/env sh' '#!${runtimeShell}'
|
||||
'';
|
||||
|
||||
# /dev/fuse is not available inside the Nix build sandbox, so buildbox-casd's
|
||||
# default FUSE-based staging strategy cannot work here. Force the hardlink/copy
|
||||
# stager instead (this is a real, supported buildbox-casd staging mode, not a
|
||||
# workaround: https://gitlab.com/BuildGrid/buildbox/buildbox/-/blob/main/casd/buildboxcasd_server.cpp).
|
||||
preCheck = ''
|
||||
export BUILDBOX_STAGER=copy-or-link
|
||||
'';
|
||||
|
||||
pythonImportsCheck = [ "buildstream" ];
|
||||
|
||||
nativeCheckInputs = [
|
||||
@@ -86,29 +102,17 @@ python3Packages.buildPythonApplication (finalAttrs: {
|
||||
python3Packages.pytest-xdist
|
||||
python3Packages.pytestCheckHook
|
||||
versionCheckHook
|
||||
];
|
||||
|
||||
disabledTests = [
|
||||
# Error loading project: project.conf [line 37 column 2]: Failed to load source-mirror plugin 'mirror': No package metadata was found for sample-plugins
|
||||
"test_source_mirror_plugin"
|
||||
|
||||
# AssertionError: assert '1a5528cad211...0bbe5ee314c14' == '2ccfee62a657...52dbc47203a88'
|
||||
"test_fixed_cas_import"
|
||||
"test_random_cas_import"
|
||||
|
||||
# Runtime error: The FUSE stager child process unexpectedly died with exit code 2
|
||||
"test_patch_sources_cached_1"
|
||||
"test_patch_sources_cached_2"
|
||||
"test_source_cache_key"
|
||||
"test_custom_transform_source"
|
||||
|
||||
# Blob not found in the local CAS
|
||||
"test_source_pull_partial_fallback_fetch"
|
||||
];
|
||||
|
||||
disabledTestPaths = [
|
||||
# FileNotFoundError: [Errno 2] No such file or directory: '/build/source/tmp/popen-gw1/test_report_when_cascache_exit0/buildbox-casd'
|
||||
"tests/internals/cascache.py"
|
||||
# Test fixture plugin package used by test_source_mirror_plugin[pip]; upstream
|
||||
# normally installs this via tox before running the pip-origin plugin loading test.
|
||||
(python3Packages.buildPythonPackage {
|
||||
pname = "sample-plugins";
|
||||
version = "1.2.3";
|
||||
pyproject = true;
|
||||
build-system = [ python3Packages.setuptools ];
|
||||
src = "${finalAttrs.src}/tests/plugins/sample-plugins";
|
||||
dontCheck = true;
|
||||
})
|
||||
];
|
||||
|
||||
postInstall = ''
|
||||
|
||||
@@ -20,13 +20,13 @@
|
||||
python3.pkgs.buildPythonApplication rec {
|
||||
pname = "caelestia-cli";
|
||||
__structuredAttrs = true;
|
||||
version = "1.1.2";
|
||||
version = "1.1.3";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "caelestia-dots";
|
||||
repo = "cli";
|
||||
tag = "v${version}";
|
||||
hash = "sha256-cCP6RAEh6JliKFmvtgi97uIG1dH0lIIuDNAdrdX+1U0=";
|
||||
hash = "sha256-71nGzEgBK7lZVjjKC9h1zmVlloZOmSlzn0Q4VoYo6gI=";
|
||||
};
|
||||
|
||||
pyproject = true;
|
||||
|
||||
@@ -9,16 +9,16 @@
|
||||
}:
|
||||
rustPlatform.buildRustPackage {
|
||||
pname = "cosmic-ext-applet-sysinfo";
|
||||
version = "0-unstable-2026-09-08";
|
||||
version = "0-unstable-2026-09-20";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "cosmic-utils";
|
||||
repo = "cosmic-ext-applet-sysinfo";
|
||||
rev = "74265699a6d2b9803707bd1be9a4241b192f78fe";
|
||||
hash = "sha256-kSxBoRepJX0bw6xhFXNp6inzv5vMlp2c5SDHxLY4I0s=";
|
||||
rev = "d7359f09963cafb54f47a049a274acd9c2c3edda";
|
||||
hash = "sha256-fv2cPisF6GapYAV9RdroaIY0JV6lwE5vTzRUHzNzBVM=";
|
||||
};
|
||||
|
||||
cargoHash = "sha256-xCzrsLQb9k7VcNmt+pyHQk6UdxR0TjdhRz9wPZ4tsEY=";
|
||||
cargoHash = "sha256-GbHRdz7RZHSCIN6wBW+cTZS8JwYB3mCW6tgnKawFPao=";
|
||||
|
||||
nativeBuildInputs = [
|
||||
libcosmicAppHook
|
||||
|
||||
@@ -9,13 +9,13 @@
|
||||
}:
|
||||
rustPlatform.buildRustPackage {
|
||||
pname = "cosmic-ext-applet-weather";
|
||||
version = "0-unstable-2026-09-03";
|
||||
version = "0-unstable-2026-09-12";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "cosmic-utils";
|
||||
repo = "cosmic-ext-applet-weather";
|
||||
rev = "52a9e3a4ac6de8d8476a3b609dcea32feae490a6";
|
||||
hash = "sha256-O7CjexYM1AWS0P+cm1ibgZRannmKpJMIDi8oRLE2piM=";
|
||||
rev = "7792d617245ae990ea2460c805e515b514a14ae6";
|
||||
hash = "sha256-gBeqah4E2/KJS8nxOcFjQev73H6Hne754H4BsuhQfCs=";
|
||||
};
|
||||
|
||||
cargoHash = "sha256-IzxjV+9Z3RNwF/6h1SGvsE8F5CgbqFTZzptgyi3jOZA=";
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
|
||||
rustPlatform.buildRustPackage (finalAttrs: {
|
||||
pname = "cyan-skillfish-governor-smu";
|
||||
version = "0.4.12";
|
||||
version = "0.4.13";
|
||||
|
||||
__structuredAttrs = true;
|
||||
|
||||
@@ -18,7 +18,7 @@ rustPlatform.buildRustPackage (finalAttrs: {
|
||||
owner = "filippor";
|
||||
repo = "cyan-skillfish-governor";
|
||||
tag = "v${finalAttrs.version}";
|
||||
hash = "sha256-yer2MlLnj9lx2cEBeYqAktbx0BqQEK/eFPiga5gXCr8=";
|
||||
hash = "sha256-EloJJiCmwGDYSyDPQOd3T7AtQp9M2ILkWg6oqOHHJWg=";
|
||||
};
|
||||
|
||||
cargoHash = "sha256-zlAVGLGnub2Gc0Bkzb5GU9NBAJ2YWLhIG8JOa+1wHx8=";
|
||||
|
||||
56
pkgs/by-name/da/dataform/package-lock.json
generated
56
pkgs/by-name/da/dataform/package-lock.json
generated
@@ -1,12 +1,12 @@
|
||||
{
|
||||
"name": "@dataform/cli",
|
||||
"version": "3.0.69",
|
||||
"version": "3.0.70",
|
||||
"lockfileVersion": 3,
|
||||
"requires": true,
|
||||
"packages": {
|
||||
"": {
|
||||
"name": "@dataform/cli",
|
||||
"version": "3.0.69",
|
||||
"version": "3.0.70",
|
||||
"license": "Apache-2.0",
|
||||
"dependencies": {
|
||||
"@google-cloud/bigquery": "~8.3.0",
|
||||
@@ -17,7 +17,7 @@
|
||||
"glob": "13.0.6",
|
||||
"google-sql-syntax-ts": "^1.0.3",
|
||||
"js-beautify": "^1.10.2",
|
||||
"js-yaml": "^4.2.0",
|
||||
"js-yaml": "^4.3.2",
|
||||
"moo": "^0.5.0",
|
||||
"object-sizeof": "^1.6.1",
|
||||
"parse-duration": "^1.0.0",
|
||||
@@ -147,9 +147,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@grpc/grpc-js": {
|
||||
"version": "1.14.4",
|
||||
"resolved": "https://registry.npmjs.org/@grpc/grpc-js/-/grpc-js-1.14.4.tgz",
|
||||
"integrity": "sha512-k9Dj3DV/itK9D06Y8f190Qgop7/Ui+D0njFV3LHMPwPT75DpXLQohE9Wmz0QElrJnzsjB7KPWiKJbOl7IPDArQ==",
|
||||
"version": "1.14.5",
|
||||
"resolved": "https://registry.npmjs.org/@grpc/grpc-js/-/grpc-js-1.14.5.tgz",
|
||||
"integrity": "sha512-7VZM+SVdEcUUqSQeNI3zM8Qs/BhQKZndPo2h5VkYkAM8Iz0wJIa8mKV5ekQGqG8UUsnkQ0NMxIxwkIHYvj0qOw==",
|
||||
"license": "Apache-2.0",
|
||||
"dependencies": {
|
||||
"@grpc/proto-loader": "^0.8.0",
|
||||
@@ -398,12 +398,12 @@
|
||||
"license": "BSD-3-Clause"
|
||||
},
|
||||
"node_modules/@types/node": {
|
||||
"version": "22.20.2",
|
||||
"resolved": "https://registry.npmjs.org/@types/node/-/node-22.20.2.tgz",
|
||||
"integrity": "sha512-xlvWf4Vs9n1PEVYwP1n4vvG07M6y8WgvJ2t0vbrWTmijsIHp1cS+uJ2kMIRdY3nHZK0nCYKrPeD171+SzF4/zw==",
|
||||
"version": "26.6.2",
|
||||
"resolved": "https://registry.npmjs.org/@types/node/-/node-26.6.2.tgz",
|
||||
"integrity": "sha512-X1P21scMv4zGKLYqjdGjaKa7COa0RKVYYZZN/NfvLQ1JegxFhdhpZG/Lyn8AXx6CDUavKAd11v6BvfpkDByK8g==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"undici-types": "~6.21.0"
|
||||
"undici-types": "~8.9.0"
|
||||
}
|
||||
},
|
||||
"node_modules/abbrev": {
|
||||
@@ -576,9 +576,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/brace-expansion": {
|
||||
"version": "5.0.9",
|
||||
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.9.tgz",
|
||||
"integrity": "sha512-ScQ4IuvIEF1TMlP7Zt+vjJ//9zlPb2SDcxWxM3bk8s6t6GGdJ7KO1dCcTidOPJKePW30LE/2cT7wCyPho9/Wxg==",
|
||||
"version": "5.0.12",
|
||||
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.12.tgz",
|
||||
"integrity": "sha512-YovQ3rzhaLMIrDjNDMkNS01tea93qhEhG5xy8f6+R0l+dw3Ki+5sCoIoI942iuLZTHWogWktgwVDhU09iNEimQ==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"balanced-match": "^4.0.2"
|
||||
@@ -802,9 +802,9 @@
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/editorconfig/node_modules/brace-expansion": {
|
||||
"version": "2.1.4",
|
||||
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.1.4.tgz",
|
||||
"integrity": "sha512-hGfVzPxthbf3+2yjg/RBs60cB0FhqBS/zvdV/4wn4/BmN0bNMMHPc4V/BbFieqf1TKAGGAHnY4eSjajCl0f2Xg==",
|
||||
"version": "2.1.7",
|
||||
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.1.7.tgz",
|
||||
"integrity": "sha512-uZbew1NqdmPDTMJ8ah1y+b+9QEJrfkXFk3RcTQw3X0jW/xRUvFKsg1CfQdSYGdTbXZWExtU3J3ccxtnfw1Fi0g==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"balanced-match": "^1.0.0"
|
||||
@@ -1284,9 +1284,9 @@
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/js-beautify/node_modules/brace-expansion": {
|
||||
"version": "2.1.4",
|
||||
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.1.4.tgz",
|
||||
"integrity": "sha512-hGfVzPxthbf3+2yjg/RBs60cB0FhqBS/zvdV/4wn4/BmN0bNMMHPc4V/BbFieqf1TKAGGAHnY4eSjajCl0f2Xg==",
|
||||
"version": "2.1.7",
|
||||
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.1.7.tgz",
|
||||
"integrity": "sha512-uZbew1NqdmPDTMJ8ah1y+b+9QEJrfkXFk3RcTQw3X0jW/xRUvFKsg1CfQdSYGdTbXZWExtU3J3ccxtnfw1Fi0g==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"balanced-match": "^1.0.0"
|
||||
@@ -1433,9 +1433,9 @@
|
||||
"license": "Apache-2.0"
|
||||
},
|
||||
"node_modules/lru-cache": {
|
||||
"version": "11.5.2",
|
||||
"resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.5.2.tgz",
|
||||
"integrity": "sha512-4pfM1Ff0x50o0tQwb5ucw/RzNyD0/YJME6IVcStalZuMWxdt3sR3huStTtxz4PUmvZfRguvDejasvQ2kifR11g==",
|
||||
"version": "11.5.3",
|
||||
"resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.5.3.tgz",
|
||||
"integrity": "sha512-U4N8FgzmWxc8k1VH8Kr6lQg18U7Fjvby6wXHVRX/ZZ7IwWbRMgrRbP0Wrb5q5NVinryp4SQampHKdvtecItxUg==",
|
||||
"license": "BlueOak-1.0.0",
|
||||
"engines": {
|
||||
"node": "20 || >=22"
|
||||
@@ -1801,9 +1801,9 @@
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/rimraf/node_modules/brace-expansion": {
|
||||
"version": "2.1.4",
|
||||
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.1.4.tgz",
|
||||
"integrity": "sha512-hGfVzPxthbf3+2yjg/RBs60cB0FhqBS/zvdV/4wn4/BmN0bNMMHPc4V/BbFieqf1TKAGGAHnY4eSjajCl0f2Xg==",
|
||||
"version": "2.1.7",
|
||||
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.1.7.tgz",
|
||||
"integrity": "sha512-uZbew1NqdmPDTMJ8ah1y+b+9QEJrfkXFk3RcTQw3X0jW/xRUvFKsg1CfQdSYGdTbXZWExtU3J3ccxtnfw1Fi0g==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"balanced-match": "^1.0.0"
|
||||
@@ -2068,9 +2068,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/undici-types": {
|
||||
"version": "6.21.0",
|
||||
"resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz",
|
||||
"integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==",
|
||||
"version": "8.9.0",
|
||||
"resolved": "https://registry.npmjs.org/undici-types/-/undici-types-8.9.0.tgz",
|
||||
"integrity": "sha512-KTDyRTYX8sWmKXAikPHHSyc63CRPETMctyjKFupcC6OBLXT3xsN0e9aF7m+mIXutFWpUXuedtowG7iLOzp0kQg==",
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/universalify": {
|
||||
|
||||
@@ -13,7 +13,7 @@
|
||||
|
||||
buildNpmPackage (finalAttrs: {
|
||||
pname = "dataform";
|
||||
version = "3.0.69";
|
||||
version = "3.0.70";
|
||||
|
||||
__structuredAttrs = true;
|
||||
strictDeps = true;
|
||||
@@ -22,7 +22,7 @@ buildNpmPackage (finalAttrs: {
|
||||
|
||||
src = fetchurl {
|
||||
url = "https://registry.npmjs.org/@dataform/cli/-/cli-${finalAttrs.version}.tgz";
|
||||
hash = "sha256-1fOvQfSyl3a+pBZxJc52tSEPLxjMNcLd1SMQ4t4TqhM=";
|
||||
hash = "sha256-wNw+D8oZwR9Zn7wXvZxtA5HPLsfaO+pdHo7D/ZCrSUU=";
|
||||
};
|
||||
|
||||
# Inject the locally committed lockfile into the extracted source
|
||||
@@ -30,7 +30,7 @@ buildNpmPackage (finalAttrs: {
|
||||
cp ${./package-lock.json} package-lock.json
|
||||
'';
|
||||
|
||||
npmDepsHash = "sha256-ZWGmCk9fZX9osQTy8BCyM4Hx2xA/QLaHNqhUCpaEceQ=";
|
||||
npmDepsHash = "sha256-cPBhKHy16ZB8a9U4Nad7/0wguIvJgIYlxFEhbsjY9FY=";
|
||||
|
||||
dontNpmBuild = true;
|
||||
|
||||
|
||||
@@ -8,16 +8,16 @@
|
||||
|
||||
buildGoModule (finalAttrs: {
|
||||
pname = "desync";
|
||||
version = "1.1.3";
|
||||
version = "1.1.4";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "folbricht";
|
||||
repo = "desync";
|
||||
tag = "v${finalAttrs.version}";
|
||||
hash = "sha256-xiiN+0veHRxVNsIpob7W/iRH+dABYIiWfw22DH1bTEs=";
|
||||
hash = "sha256-ORFIGjQD0S7RPgWJqDwPH2wI6Dnv4LvOZ0tMHpOtvPM=";
|
||||
};
|
||||
|
||||
vendorHash = "sha256-FRXwQUOD1UiGSlGkBLXT0RGG382RJdEGUJxaQiyzR9A=";
|
||||
vendorHash = "sha256-08LGC+N0NjUAjo9b5JhKNr46CuIXMz/erw2RPRU17xo=";
|
||||
|
||||
ldflags = [ "-X main.version=${finalAttrs.src.tag}" ];
|
||||
|
||||
|
||||
@@ -8,13 +8,13 @@
|
||||
|
||||
buildGoModule (finalAttrs: {
|
||||
pname = "dns-collector";
|
||||
version = "3.0.0";
|
||||
version = "3.1.0";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "dmachard";
|
||||
repo = "dns-collector";
|
||||
tag = "v${finalAttrs.version}";
|
||||
hash = "sha256-DUpNgnvCKTGU01Qh3L/foVUDHgXHICtOl6wFpNi1KaA=";
|
||||
hash = "sha256-W0fCI/1aiSbKiFQ/DwNuc2+NSGs+QwN+Gv9OUu5rLOY=";
|
||||
};
|
||||
|
||||
subPackages = [ "." ];
|
||||
@@ -28,7 +28,7 @@ buildGoModule (finalAttrs: {
|
||||
"-X=github.com/prometheus/common/version.Version=${finalAttrs.version}"
|
||||
];
|
||||
|
||||
vendorHash = "sha256-DRb/l8sXqugl8zh+QHO7a0KYF/JS4yDQ11L6MJPipd4=";
|
||||
vendorHash = "sha256-6GMoyJy9HtuGjur1VwtgP3G9CXBKiJZlK/4YNPxhIgo=";
|
||||
|
||||
passthru.updateScript = nix-update-script { };
|
||||
|
||||
|
||||
@@ -12,7 +12,12 @@ stdenv.mkDerivation (finalAttrs: {
|
||||
version = "7.1";
|
||||
|
||||
src = fetchurl {
|
||||
url = "http://fy.chalmers.se/~appro/linux/DVD+RW/tools/dvd+rw-tools-${finalAttrs.version}.tar.gz";
|
||||
# Original source; no longer available
|
||||
# url = "http://fy.chalmers.se/~appro/linux/DVD+RW/tools/dvd+rw-tools-${finalAttrs.version}.tar.gz";
|
||||
urls = [
|
||||
"https://anduin.linuxfromscratch.org/BLFS/dvd+rw-tools/dvd+rw-tools-${finalAttrs.version}.tar.gz"
|
||||
"https://github.com/openeuler-mirror/dvdplusrw-tools/raw/refs/heads/master/dvd+rw-tools-${finalAttrs.version}.tar.gz"
|
||||
];
|
||||
sha256 = "1jkjvvnjcyxpql97xjjx0kwvy70kxpiznr2zpjy2hhci5s10zmpq";
|
||||
};
|
||||
|
||||
@@ -91,7 +96,7 @@ stdenv.mkDerivation (finalAttrs: {
|
||||
);
|
||||
|
||||
meta = {
|
||||
homepage = "http://fy.chalmers.se/~appro/linux/DVD+RW/tools";
|
||||
homepage = "https://en.wikipedia.org/wiki/Dvd%2Brw-tools";
|
||||
description = "Tools for mastering Blu-ray and DVD+-RW/+-R media";
|
||||
platforms = lib.platforms.unix;
|
||||
license = with lib.licenses; [
|
||||
|
||||
@@ -2,24 +2,23 @@
|
||||
appimageTools,
|
||||
lib,
|
||||
fetchurl,
|
||||
nix-update-script,
|
||||
stdenvNoCC,
|
||||
makeWrapper,
|
||||
undmg,
|
||||
_7zz,
|
||||
}:
|
||||
|
||||
let
|
||||
pname = "electron-mail";
|
||||
version = "5.3.8";
|
||||
version = "5.3.9";
|
||||
|
||||
sources = {
|
||||
x86_64-linux = fetchurl {
|
||||
url = "https://github.com/vladimiry/ElectronMail/releases/download/v${version}/electron-mail-${version}-linux-x86_64.AppImage";
|
||||
hash = "sha256-twqB1D3zLlZJuxQWD4dGF70w57yYv6i3abGBidERsss=";
|
||||
hash = "sha256-hZxcodnfQ4iyLaXE04QgIjOJs+3NJ7Ukckk71DqnRy0=";
|
||||
};
|
||||
aarch64-darwin = fetchurl {
|
||||
url = "https://github.com/vladimiry/ElectronMail/releases/download/v${version}/electron-mail-${version}-mac-arm64.dmg";
|
||||
hash = "sha256-V32Wi0oCU9dLfzqxg3OdseiILX7wPiBGNz7KuG0vlZY=";
|
||||
hash = "sha256-2CRUEif7UMsZgDWw3HiUEip68wXd0AUPPHdo712ZnYc=";
|
||||
};
|
||||
};
|
||||
|
||||
@@ -53,6 +52,8 @@ let
|
||||
meta
|
||||
;
|
||||
|
||||
passthru.updateScript = ./update.sh;
|
||||
|
||||
extraInstallCommands = ''
|
||||
install -m 444 -D ${appimageContents}/${pname}.desktop -t $out/share/applications
|
||||
substituteInPlace $out/share/applications/${pname}.desktop \
|
||||
@@ -64,8 +65,6 @@ let
|
||||
pkgs.libsecret
|
||||
pkgs.libappindicator
|
||||
];
|
||||
|
||||
passthru.updateScript = nix-update-script { };
|
||||
};
|
||||
|
||||
darwin = stdenvNoCC.mkDerivation {
|
||||
@@ -76,9 +75,11 @@ let
|
||||
meta
|
||||
;
|
||||
|
||||
passthru.updateScript = ./update.sh;
|
||||
|
||||
sourceRoot = ".";
|
||||
nativeBuildInputs = [
|
||||
undmg
|
||||
_7zz
|
||||
makeWrapper
|
||||
];
|
||||
|
||||
|
||||
27
pkgs/by-name/el/electron-mail/update.sh
Executable file
27
pkgs/by-name/el/electron-mail/update.sh
Executable file
@@ -0,0 +1,27 @@
|
||||
#!/usr/bin/env nix-shell
|
||||
#! nix-shell -I nixpkgs=./. -i bash -p curl gnused jq nix
|
||||
|
||||
set -eou pipefail
|
||||
|
||||
ROOT="$(dirname "$(readlink -f "$0")")"
|
||||
|
||||
latestVersion=$(curl --fail --silent https://api.github.com/repos/vladimiry/ElectronMail/releases/latest | jq --raw-output .tag_name | sed 's/^v//')
|
||||
|
||||
currentVersion=$(nix-instantiate --eval -E "with import ./. {}; electron-mail.version" | tr -d '"')
|
||||
|
||||
if [[ "$currentVersion" == "$latestVersion" ]]; then
|
||||
echo "electron-mail is up-to-date: $currentVersion"
|
||||
exit 0
|
||||
fi
|
||||
|
||||
echo "updating electron-mail: $currentVersion -> $latestVersion"
|
||||
|
||||
sed -i "s/version = \".*\"/version = \"${latestVersion}\"/" "$ROOT/package.nix"
|
||||
|
||||
APPIMAGE_URL="https://github.com/vladimiry/ElectronMail/releases/download/v${latestVersion}/electron-mail-${latestVersion}-linux-x86_64.AppImage"
|
||||
APPIMAGE_HASH=$(nix --extra-experimental-features nix-command hash convert --hash-algo sha256 --to sri "$(nix-prefetch-url "$APPIMAGE_URL")")
|
||||
sed -i "/linux-x86_64\.AppImage/,/hash/{s|hash = \".*\"|hash = \"${APPIMAGE_HASH}\"|}" "$ROOT/package.nix"
|
||||
|
||||
DMG_URL="https://github.com/vladimiry/ElectronMail/releases/download/v${latestVersion}/electron-mail-${latestVersion}-mac-arm64.dmg"
|
||||
DMG_SHA=$(nix --extra-experimental-features nix-command hash convert --hash-algo sha256 --to sri "$(nix-prefetch-url "$DMG_URL")")
|
||||
sed -i "/mac-arm64\.dmg/,/hash/{s|hash = \".*\"|hash = \"${DMG_SHA}\"|}" "$ROOT/package.nix"
|
||||
@@ -23,6 +23,11 @@ rustPlatform.buildRustPackage (finalAttrs: {
|
||||
versionCheckProgramArg = "--version";
|
||||
nativeInstallCheckInputs = [ versionCheckHook ];
|
||||
|
||||
checkFlags = [
|
||||
# sends request to a github.com url
|
||||
"--skip=test_mcp_repo_info_on_actual_repo"
|
||||
];
|
||||
|
||||
meta = {
|
||||
changelog = "https://github.com/abhixdd/ghgrab/releases/tag/v${finalAttrs.version}";
|
||||
description = "Simple, pretty terminal tool that lets you search and download files from GitHub without leaving your CLI";
|
||||
|
||||
@@ -7,13 +7,13 @@
|
||||
}:
|
||||
buildGoModule (finalAttrs: {
|
||||
pname = "gokrazy";
|
||||
version = "0-unstable-2026-07-23";
|
||||
version = "0-unstable-2026-09-13";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "gokrazy";
|
||||
repo = "tools";
|
||||
rev = "3fe400c13246e09469afca86df37cdc6fe7c3ee9";
|
||||
hash = "sha256-+wLO374SJu4Sk7GKwJkg6UOxWmJ1ApIfLt3Hw89/dXU=";
|
||||
rev = "64f7f697dfff1a24457b00cd93ca5c30c866f34e";
|
||||
hash = "sha256-puqXa3OpHyzPpOYuf/SicoMJTNDf0hovLE/TOhmBDSw=";
|
||||
};
|
||||
|
||||
vendorHash = "sha256-+9i4dlxcxXw0WpeuHhnxli2qhB6IWOc4babuJXIO4wA=";
|
||||
|
||||
@@ -8,16 +8,16 @@
|
||||
|
||||
buildGoModule (finalAttrs: {
|
||||
pname = "gotlsaflare";
|
||||
version = "2.8.4";
|
||||
version = "2.9.0";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "Stenstromen";
|
||||
repo = "gotlsaflare";
|
||||
tag = "v${finalAttrs.version}";
|
||||
hash = "sha256-LDUrLeIgEr0IaYUHRdPtk2soYGbPAycQcroIUMrmVKg=";
|
||||
hash = "sha256-98e4uNTW04CMxGyLx7HKHNfDZGotLavH2oqK7WKg9zw=";
|
||||
};
|
||||
|
||||
vendorHash = "sha256-btvgwiYm+ccT9BPVO42bxidKfOBDrBMT3WidDlMi17k=";
|
||||
vendorHash = "sha256-auULD38+Imk+OBtuJqDraXmlkqBXUrGCHOhwSR3gCtQ=";
|
||||
|
||||
nativeBuildInputs = [ installShellFiles ];
|
||||
|
||||
|
||||
@@ -6,10 +6,10 @@
|
||||
}:
|
||||
let
|
||||
pname = "hydralauncher";
|
||||
version = "4.1.3";
|
||||
version = "4.1.4";
|
||||
src = fetchurl {
|
||||
url = "https://github.com/hydralauncher/hydra/releases/download/v${version}/hydralauncher-${version}.AppImage";
|
||||
hash = "sha256-kyr5ILGB8yovz6QMNq/LTBFddjsGAzXD12cdBzG80zo=";
|
||||
hash = "sha256-3OrrOdHD1/AvGWVFVvJK9dGNl90YRG6w3j+LcEFfpps=";
|
||||
};
|
||||
|
||||
appimageContents = appimageTools.extract { inherit pname src version; };
|
||||
|
||||
@@ -244,6 +244,8 @@ stdenv.mkDerivation {
|
||||
license = lib.licenses.mit;
|
||||
maintainers = [ lib.maintainers.kacper-uminski ];
|
||||
platforms = lib.platforms.darwin ++ lib.platforms.linux;
|
||||
# ocaml dependency is failing on darwin
|
||||
badPlatforms = lib.platforms.darwin;
|
||||
mainProgram = "infer";
|
||||
};
|
||||
}
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -10,13 +10,13 @@
|
||||
|
||||
stdenvNoCC.mkDerivation (finalAttrs: {
|
||||
pname = "kavita";
|
||||
version = "0.9.0.2";
|
||||
version = "0.9.1.4";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "kareadita";
|
||||
repo = "kavita";
|
||||
rev = "v${finalAttrs.version}";
|
||||
hash = "sha256-Wfb/Lc+BvkiJLopH1NQx1YQWzm2Sdmvg1Xmn+8YwWus=";
|
||||
rev = "d77d956b9551227d8be2ee488b08f14aa3a341e5"; # Upstream tagged the wrong commit for 0.9.1.4
|
||||
hash = "sha256-f0qGURiegUypD0XKZi43vJbA4KQ8OjZ6kWYg8fh1rPU=";
|
||||
};
|
||||
|
||||
backend = buildDotnetModule {
|
||||
@@ -52,7 +52,7 @@ stdenvNoCC.mkDerivation (finalAttrs: {
|
||||
npmBuildScript = "prod";
|
||||
npmFlags = [ "--legacy-peer-deps" ];
|
||||
npmRebuildFlags = [ "--ignore-scripts" ]; # Prevent playwright from trying to install browsers
|
||||
npmDepsHash = "sha256-Qa/lf0hH2KMDdRcBj8GW9cJGE3YZsP32z2kfTk6YNYc=";
|
||||
npmDepsHash = "sha256-LO2LP70q18yHBfpfsMfG0QtyJIb275En25Df+fS5cr0=";
|
||||
};
|
||||
|
||||
dontBuild = true;
|
||||
|
||||
@@ -15,7 +15,7 @@
|
||||
|
||||
stdenv.mkDerivation {
|
||||
pname = "keyleds";
|
||||
version = "unstable-2021-04-08";
|
||||
version = "1.1.1-unstable-2021-03-27";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "keyleds";
|
||||
|
||||
@@ -20,13 +20,13 @@
|
||||
|
||||
stdenv.mkDerivation (finalAttrs: {
|
||||
pname = "libdeltachat";
|
||||
version = "2.60.0";
|
||||
version = "2.61.0";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "chatmail";
|
||||
repo = "core";
|
||||
tag = "v${finalAttrs.version}";
|
||||
hash = "sha256-NPOK5L17cR/2OYJ/wzhvy9Mf9lGjsEOfd27YBm3X1uc=";
|
||||
hash = "sha256-lePHfmq4bUxb1reQe2BOMC0WUDdH7cZ33Fu8TLkb+xs=";
|
||||
};
|
||||
|
||||
patches = [
|
||||
@@ -36,7 +36,7 @@ stdenv.mkDerivation (finalAttrs: {
|
||||
cargoDeps = rustPlatform.fetchCargoVendor {
|
||||
pname = "chatmail-core";
|
||||
inherit (finalAttrs) version src;
|
||||
hash = "sha256-PSZzC3Z2HAjBrT2yIC3TYa8Z6FrxTuAOQO29nlbmaTI=";
|
||||
hash = "sha256-VZkrewx54/M1XXs9j9asLdLNEez+XIUvFfgAjo8w09c=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [
|
||||
|
||||
@@ -7,6 +7,7 @@
|
||||
luajit,
|
||||
meson,
|
||||
ninja,
|
||||
openssl,
|
||||
pkg-config,
|
||||
unstableGitUpdater,
|
||||
wrapGAppsHook3,
|
||||
@@ -14,13 +15,13 @@
|
||||
|
||||
stdenv.mkDerivation {
|
||||
pname = "libresplit";
|
||||
version = "0-unstable-2026-02-11";
|
||||
version = "0-unstable-2026-08-14";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "LibreSplit";
|
||||
repo = "LibreSplit";
|
||||
rev = "f87a6829c9319acca907a39af4d391375a322713";
|
||||
hash = "sha256-wcv4VkuVClc+yCe/o8hIQFO/mxF4NAB7et52SLOwgpk=";
|
||||
rev = "2c7f6610519cb98c3a1529ab2383ae0cd50d5dea";
|
||||
hash = "sha256-fU0ghAMXOeygKWZYPtwriw2qxGh+5pnF392+rxrIGqg=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [
|
||||
@@ -34,6 +35,7 @@ stdenv.mkDerivation {
|
||||
gtk3
|
||||
jansson
|
||||
luajit
|
||||
openssl
|
||||
];
|
||||
|
||||
passthru.updateScript = unstableGitUpdater { };
|
||||
|
||||
@@ -5,13 +5,13 @@
|
||||
}:
|
||||
mkLibretroCore {
|
||||
core = "mednafen-pce-fast";
|
||||
version = "0-unstable-2026-08-28";
|
||||
version = "0-unstable-2026-09-18";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "libretro";
|
||||
repo = "beetle-pce-fast-libretro";
|
||||
rev = "2f623abd033257b969370b73d9da982dcb0c3fdd";
|
||||
hash = "sha256-rGtmnfOh2IZBYS69/xtiwqNegtYV0GcKI3VB3cQ/r74=";
|
||||
rev = "076a24e1b10f76f3a7a8e849d25fab89f81ce1e9";
|
||||
hash = "sha256-fWXnh++ZM7+DglB1+X4LBpWek4+PEUmxCG7BAsTE9zQ=";
|
||||
};
|
||||
|
||||
makefile = "Makefile";
|
||||
|
||||
@@ -10,13 +10,13 @@
|
||||
}:
|
||||
mkLibretroCore {
|
||||
core = "desmume";
|
||||
version = "0-unstable-2026-08-23";
|
||||
version = "0-unstable-2026-09-20";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "libretro";
|
||||
repo = "desmume";
|
||||
rev = "8f6b32cb9a5e310bd38520e7087ce7fa14765f15";
|
||||
hash = "sha256-u1YTW7thPzmcse0XDs7WOu3foL7kf+urplOufQqawW8=";
|
||||
rev = "95b4d798731caa809125b6c3c11d17cc332ff6ef";
|
||||
hash = "sha256-hewHELQM+snFUDEwhzOapZbhcv0oHv1s0QHjn/FpNWg=";
|
||||
};
|
||||
|
||||
extraBuildInputs = [
|
||||
|
||||
@@ -7,13 +7,13 @@
|
||||
|
||||
stdenv.mkDerivation (finalAttrs: {
|
||||
pname = "lmdbxx";
|
||||
version = "1.0.0";
|
||||
version = "1.0.2";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "hoytech";
|
||||
repo = "lmdbxx";
|
||||
rev = finalAttrs.version;
|
||||
sha256 = "sha256-7CxQZdgHVvmof6wVR9Mzic6tg89XJT3Z1ICGRs7PZYo=";
|
||||
sha256 = "sha256-0c8Xev9Ys6beMQ9VD4S2o6N9R/w2eEz8iCxUiX7mW4E=";
|
||||
};
|
||||
|
||||
buildInputs = [ lmdb ];
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
|
||||
buildNpmPackage (finalAttrs: {
|
||||
pname = "mcp-searxng";
|
||||
version = "2.3.0";
|
||||
version = "2.4.0";
|
||||
|
||||
__structuredAttrs = true;
|
||||
strictDeps = true;
|
||||
@@ -15,10 +15,10 @@ buildNpmPackage (finalAttrs: {
|
||||
owner = "ihor-sokoliuk";
|
||||
repo = "mcp-searxng";
|
||||
tag = "v${finalAttrs.version}";
|
||||
hash = "sha256-LMlbuPF8KuUZlD9HUjhunuHl2tmCMSeydBZiWuGWRHA=";
|
||||
hash = "sha256-1ZGo6150O8cn2b4pYLqPWs+l11L+SpeH+ATKE470Hwo=";
|
||||
};
|
||||
|
||||
npmDepsHash = "sha256-MqVn66vCbB8+3o6KB6GCU9GxsPtqeCYjTbI5A3nfTVs=";
|
||||
npmDepsHash = "sha256-21mw8/qUgLuAhF9KYZU7N+K4af7OBVwBHGqnr7p6lDE=";
|
||||
|
||||
meta = {
|
||||
description = "Private web search for AI assistants via SearXNG — supports Claude, Cursor, and any MCP client";
|
||||
|
||||
@@ -9,16 +9,16 @@
|
||||
|
||||
buildGoModule (finalAttrs: {
|
||||
pname = "mongodb-cli";
|
||||
version = "2.0.7";
|
||||
version = "2.0.8";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "mongodb";
|
||||
repo = "mongodb-cli";
|
||||
tag = "mongocli/v${finalAttrs.version}";
|
||||
hash = "sha256-vytc/e+e6JE5bwh5hny9C7LWenGctQLUso8GAXgk4j8=";
|
||||
hash = "sha256-pSxIOiow1G1CQ/lJnmtyVPQdukRDczkbjajblbymcVM=";
|
||||
};
|
||||
|
||||
vendorHash = "sha256-CswQV9uTnL58TzYaVzx6dc1aZDZQ5b2LWLE1bv+P/2c=";
|
||||
vendorHash = "sha256-F+WP6/QCQTb19b8LX1CnOJuPSJMmbY3HIgyPQfjVrKE=";
|
||||
|
||||
subPackages = [ "cmd/mongocli" ];
|
||||
|
||||
|
||||
@@ -20,16 +20,16 @@
|
||||
|
||||
buildGo127Module (finalAttrs: {
|
||||
pname = "navidrome";
|
||||
version = "0.64.0";
|
||||
version = "0.64.1";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "navidrome";
|
||||
repo = "navidrome";
|
||||
rev = "v${finalAttrs.version}";
|
||||
hash = "sha256-2GUAGuwVE3i49g/mGN3zd1J1y9jVhF0g4hKGceSQwD8=";
|
||||
hash = "sha256-zjg5JwpzcDe8LFvF/soE4IrsdpkNpO7psAoQrHlKCVI=";
|
||||
};
|
||||
|
||||
vendorHash = "sha256-1aKih0Xl5OfV4IO/2E0S31rHhRx356zl2QPM96jcFco=";
|
||||
vendorHash = "sha256-vndJx4BcXQCJewKCv3TvSrxG6sCykfBvkOQK/kVQIPk=";
|
||||
|
||||
npmRoot = "ui";
|
||||
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
|
||||
stdenv.mkDerivation (finalAttrs: {
|
||||
pname = "nextcloud-client";
|
||||
version = "34.0.3";
|
||||
version = "34.0.4";
|
||||
|
||||
outputs = [
|
||||
"out"
|
||||
@@ -34,7 +34,7 @@ stdenv.mkDerivation (finalAttrs: {
|
||||
owner = "nextcloud-releases";
|
||||
repo = "desktop";
|
||||
tag = "v${finalAttrs.version}";
|
||||
hash = "sha256-sxo4AV+4AouAHuNZqc0VjFpNaB1Ubsi4zes48WhAhFY=";
|
||||
hash = "sha256-5qHhhMpgmdfNCO88ZtEtE+HcqeTOgxPUXYb8cgC6YiA=";
|
||||
};
|
||||
|
||||
patches = [
|
||||
|
||||
@@ -28,7 +28,7 @@ replaceVarsWith {
|
||||
|
||||
meta = {
|
||||
description = "Run a command in a NixOS chroot environment";
|
||||
homepage = "https://github.com/NixOS/nixpkgs/tree/master/pkgs/by-name/ni/nixos-install";
|
||||
homepage = "https://github.com/NixOS/nixpkgs/tree/master/pkgs/by-name/ni/nixos-enter";
|
||||
license = lib.licenses.mit;
|
||||
platforms = lib.platforms.linux;
|
||||
mainProgram = "nixos-enter";
|
||||
|
||||
@@ -29,13 +29,13 @@ let
|
||||
in
|
||||
stdenv.mkDerivation (finalAttrs: {
|
||||
pname = "opentrack";
|
||||
version = "2026.1.0-unstable-2026-07-24";
|
||||
version = "2026.1.0-unstable-2026-09-21";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "opentrack";
|
||||
repo = "opentrack";
|
||||
rev = "f009bb52cab7bf3884b8a9b3a326aa9ce84d6299";
|
||||
hash = "sha256-tC04TjDa35MUPV23/A6tstTS1l5148end4Yrv0RN9qg=";
|
||||
rev = "043bfc1be415962151217709a101422404ea36a6";
|
||||
hash = "sha256-VS6Kt5EA+TNoQ/NzVFHMoBhOoopDZafZ3MqaJQyI3MU=";
|
||||
};
|
||||
|
||||
aruco = callPackage ./aruco.nix { };
|
||||
|
||||
@@ -21,25 +21,25 @@
|
||||
# A pure Rust build would lack the Prettier plugin functionality.
|
||||
stdenv.mkDerivation (finalAttrs: {
|
||||
pname = "oxfmt";
|
||||
version = "0.61.0";
|
||||
version = "0.68.0";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "oxc-project";
|
||||
repo = "oxc";
|
||||
tag = "oxfmt_v${finalAttrs.version}";
|
||||
hash = "sha256-uXkAD4+B8ghUbti1ts1RO+Jc0wQlpovl6+JzZA1JaRk=";
|
||||
hash = "sha256-BqBI+xOFDcsw4muiyh6TypA8msJfwTsQ/nC4B6AtiLE=";
|
||||
};
|
||||
|
||||
cargoDeps = rustPlatform.fetchCargoVendor {
|
||||
inherit (finalAttrs) pname version src;
|
||||
hash = "sha256-eZAJdMDC09nE9n2Arh72ZZUQjmMFdA68rPCmH2tSx2w=";
|
||||
hash = "sha256-1raDjWN2IvtschMmLgs9Twlxc4+XVIEZ+7pqkVUDOR8=";
|
||||
};
|
||||
|
||||
pnpmDeps = fetchPnpmDeps {
|
||||
inherit (finalAttrs) pname version src;
|
||||
pnpm = pnpm_10;
|
||||
fetcherVersion = 3;
|
||||
hash = "sha256-WZ4eYwQNeDF55ax3mW5swKafCDeYG5rWPPzJk5f+H1k=";
|
||||
hash = "sha256-A4HpPjyL5UTMlpQ7hT/f2zbbW3GOKBFXWpZNdPRM6/s=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [
|
||||
@@ -58,6 +58,22 @@ stdenv.mkDerivation (finalAttrs: {
|
||||
|
||||
env.OXC_VERSION = finalAttrs.version;
|
||||
|
||||
# @napi-rs/cli >= 3.8 reads the process start time and machine identity via
|
||||
# host binaries while acquiring its filesystem reconciliation lock. The
|
||||
# Darwin build sandbox denies those execs; Node raises them as synchronous
|
||||
# `spawn EPERM` from execFile, which escapes napi's callback-based error
|
||||
# handling. Point the lookups at a store no-op so the sandbox allows them.
|
||||
# Empty output is treated as unverifiable identity and only disables stale
|
||||
# lock detection.
|
||||
preBuild = lib.optionalString stdenv.hostPlatform.isDarwin ''
|
||||
for cli in node_modules/.pnpm/@napi-rs+cli@*/node_modules/@napi-rs/cli/dist/cli.js; do
|
||||
substituteInPlace "$cli" \
|
||||
--replace-fail '"/bin/ps"' '":"' \
|
||||
--replace-fail '"/usr/sbin/ioreg"' '":"' \
|
||||
--replace-fail '"/usr/sbin/sysctl"' '":"'
|
||||
done
|
||||
'';
|
||||
|
||||
buildPhase = ''
|
||||
runHook preBuild
|
||||
|
||||
|
||||
@@ -28,25 +28,25 @@ in
|
||||
# runs without an external linter, which leaves `jsPlugins` configs inert.
|
||||
stdenv.mkDerivation (finalAttrs: {
|
||||
pname = "oxlint";
|
||||
version = "1.82.0";
|
||||
version = "1.85.0";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "oxc-project";
|
||||
repo = "oxc";
|
||||
tag = "oxlint_v${finalAttrs.version}";
|
||||
hash = "sha256-jDFBK5yshhSYP/Zl5DpVOPYgRrfB0gAGg7sv6hd4qds=";
|
||||
hash = "sha256-VlIDDUJC+5YDLpfLr92zOm0vjPAL0j6PCiHaukBpsdk=";
|
||||
};
|
||||
|
||||
cargoDeps = rustPlatform.fetchCargoVendor {
|
||||
inherit (finalAttrs) pname version src;
|
||||
hash = "sha256-YiNm3jL8pDr4UUixnLVjEAEX/izi2SqBKsrtyX8SFrQ=";
|
||||
hash = "sha256-iQfRPmpqG8Jbunw1iLYiIhVqCn4H+koGJROcVY5wvA0=";
|
||||
};
|
||||
|
||||
pnpmDeps = fetchPnpmDeps {
|
||||
inherit (finalAttrs) pname version src;
|
||||
inherit pnpm;
|
||||
fetcherVersion = 4;
|
||||
hash = "sha256-CMU2VhsSeSM7zJ4YxCfJWP3ThGRpzpgOTur1wU5F28I=";
|
||||
hash = "sha256-4qJcYXPWnw/WFR1NPm1cGgI3KPpnRhZRE+oUDb2ENpE=";
|
||||
};
|
||||
|
||||
dontUseCmakeConfigure = true;
|
||||
|
||||
@@ -13,7 +13,7 @@
|
||||
|
||||
buildNpmPackage (finalAttrs: {
|
||||
pname = "paseo";
|
||||
version = "0.8.0";
|
||||
version = "0.9.0";
|
||||
|
||||
__structuredAttrs = true;
|
||||
strictDeps = true;
|
||||
@@ -22,12 +22,12 @@ buildNpmPackage (finalAttrs: {
|
||||
owner = "getpaseo";
|
||||
repo = "paseo";
|
||||
tag = "v${finalAttrs.version}";
|
||||
hash = "sha256-zYUj7CGz+i+w0elysbU+Sup+NACsBoIEqCu8WHA24PE=";
|
||||
hash = "sha256-qCjsMOi9/vMp0AVuWeSoiS1bv4bFMKoAha/zWNb2fHE=";
|
||||
};
|
||||
|
||||
nodejs = nodejs_22;
|
||||
|
||||
npmDepsHash = "sha256-gDB48rHd0K1VOAblaQlPP4XnKGHI8cAt9S09aRxx6b4=";
|
||||
npmDepsHash = "sha256-3cqO8DpPVDjYaSh0q5EPJuMpCgl2OJ17uLGVGuk1Wwc=";
|
||||
|
||||
npmRebuildFlags = [ "--ignore-scripts" ];
|
||||
|
||||
|
||||
@@ -21,17 +21,17 @@
|
||||
|
||||
stdenv.mkDerivation (finalAttrs: {
|
||||
pname = "pdns-recursor";
|
||||
version = "5.4.5";
|
||||
version = "5.4.6";
|
||||
|
||||
src = fetchurl {
|
||||
url = "https://downloads.powerdns.com/releases/pdns-recursor-${finalAttrs.version}.tar.xz";
|
||||
hash = "sha256-ExBXaNlJAGdZbyY9fTSLzAxnmFdMfZkcxAlS8YudrBE=";
|
||||
hash = "sha256-DUyf6+b5TaCu1+Bex7ZUkE+9YindU79ge2P6cHuSNoo=";
|
||||
};
|
||||
|
||||
cargoDeps = rustPlatform.fetchCargoVendor {
|
||||
inherit (finalAttrs) pname version src;
|
||||
sourceRoot = "pdns-recursor-${finalAttrs.version}/rec-rust-lib/rust";
|
||||
hash = "sha256-r0fVF/N1K2rYUEuEZ4NYYbpYxILMklhwAodeAEK7SFs=";
|
||||
hash = "sha256-uHcUCVtlVFAgi/rPD1lYlN81p7gcIXvHutKXYMVddv4=";
|
||||
};
|
||||
|
||||
cargoRoot = "rec-rust-lib/rust";
|
||||
|
||||
@@ -13,16 +13,16 @@
|
||||
}:
|
||||
buildNpmPackage (finalAttrs: {
|
||||
pname = "pi-coding-agent";
|
||||
version = "0.86.1";
|
||||
version = "0.87.0";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "earendil-works";
|
||||
repo = "pi";
|
||||
tag = "v${finalAttrs.version}";
|
||||
hash = "sha256-/7+VoRfXdeOwtiNXQYOKg5OHeKuNLIHfODGDNBhWop0=";
|
||||
hash = "sha256-7YkIA5IEs4U0qnoaO3IzlY+p/M7j30fSVelLeyoV+F8=";
|
||||
};
|
||||
|
||||
npmDepsHash = "sha256-VxjYw4lN/w0sDboihHAKEhdJFzJa09qZo7vavkTkBuw=";
|
||||
npmDepsHash = "sha256-fbxwpQHnrUihO9MU72m331Uwt9dv0fQtEjdJ9hU8UxA=";
|
||||
|
||||
# The provider model catalog (packages/ai/src/providers/data/) is generated by
|
||||
# a network fetch (models.dev plus provider APIs) and is gitignored upstream,
|
||||
@@ -31,7 +31,7 @@ buildNpmPackage (finalAttrs: {
|
||||
# under dist/providers/data/. Bump this hash alongside version.
|
||||
modelData = fetchurl {
|
||||
url = "https://registry.npmjs.org/@earendil-works/pi-ai/-/pi-ai-${finalAttrs.version}.tgz";
|
||||
hash = "sha256-88Nb88YGsJ9iupLSx8ieY+DKGAdUcBAtVWVoTFJLfv0=";
|
||||
hash = "sha256-8q353oCdA192+NrfPRSHIOvu9GBqhIqzbug02JWugS8=";
|
||||
};
|
||||
|
||||
preConfigure = ''
|
||||
|
||||
@@ -19,11 +19,11 @@
|
||||
stdenv.mkDerivation (finalAttrs: {
|
||||
pname = "qownnotes";
|
||||
appname = "QOwnNotes";
|
||||
version = "26.9.4";
|
||||
version = "26.9.9";
|
||||
|
||||
src = fetchurl {
|
||||
url = "https://github.com/pbek/QOwnNotes/releases/download/v${finalAttrs.version}/qownnotes-${finalAttrs.version}.tar.xz";
|
||||
hash = "sha256-lJBaXNA/B9OY1qthOLgqnWPkE/QyQ86Ok+pyBc0czik=";
|
||||
hash = "sha256-WtpB9VxTA+nF3r6EYorxT0kiB9nj3zGczQL1O2mu0vc=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [
|
||||
|
||||
@@ -51,16 +51,16 @@ let
|
||||
in
|
||||
rustPlatform.buildRustPackage (finalAttrs: {
|
||||
pname = "rio";
|
||||
version = "0.5.27";
|
||||
version = "0.5.28";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "raphamorim";
|
||||
repo = "rio";
|
||||
tag = "v${finalAttrs.version}";
|
||||
hash = "sha256-NkuuhH5ygCH45ZP71mZ4+16TSQJLlCoLuqobHX8INSI=";
|
||||
hash = "sha256-Sv9G2YGG4CEWbWlrUSBs1zdzMPZbGpvBYsOIxmTrxOg=";
|
||||
};
|
||||
|
||||
cargoHash = "sha256-iIKZTv2PdSD33Tfeg5p//00XSHAkBusEYXCi5jhP3iY=";
|
||||
cargoHash = "sha256-ygX7saxVxK9NpnsO2J1zx7sWduTkhkD4RlB8SNLavGY=";
|
||||
|
||||
nativeBuildInputs = [
|
||||
rustPlatform.bindgenHook
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
|
||||
python3Packages.buildPythonApplication (finalAttrs: {
|
||||
pname = "rnmon";
|
||||
version = "0.3.4";
|
||||
version = "0.3.6";
|
||||
pyproject = true;
|
||||
__structuredAttrs = true;
|
||||
|
||||
@@ -15,7 +15,7 @@ python3Packages.buildPythonApplication (finalAttrs: {
|
||||
owner = "lbatalha";
|
||||
repo = "rnmon";
|
||||
tag = finalAttrs.version;
|
||||
hash = "sha256-3ou2F8ePKzh6g63X0l9iX1fTSVe9misGBkPlCUEWpiU=";
|
||||
hash = "sha256-Pu7kd9CUoHRWnmzrF9NSeqXxN7CRDFQslS+j3M7iNGQ=";
|
||||
};
|
||||
|
||||
build-system = [
|
||||
|
||||
@@ -21,13 +21,13 @@
|
||||
|
||||
stdenv.mkDerivation (finalAttrs: {
|
||||
pname = "shader-slang";
|
||||
version = "2026.17.1";
|
||||
version = "2026.18";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "shader-slang";
|
||||
repo = "slang";
|
||||
tag = "v${finalAttrs.version}";
|
||||
hash = "sha256-o6HRIpi/pV1dNmG9b5VK0DwKxSm/Vm6LLHR8YC9DC30=";
|
||||
hash = "sha256-GlXTDfC6BLENmrzBceJGZIP4FU5ItqtyoxmbnFZ5fdQ=";
|
||||
fetchSubmodules = true;
|
||||
};
|
||||
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
|
||||
buildNpmPackage (finalAttrs: {
|
||||
pname = "thunderbird-cli-bridge";
|
||||
version = "1.0.2";
|
||||
version = "1.1.0";
|
||||
|
||||
__structuredAttrs = true;
|
||||
|
||||
@@ -15,14 +15,14 @@ buildNpmPackage (finalAttrs: {
|
||||
owner = "vitalio-sh";
|
||||
repo = "thunderbird-cli";
|
||||
tag = "v${finalAttrs.version}";
|
||||
hash = "sha256-jtIXOHjijFkwdh5FWrqdSfEwbEmWQud8Qr2jsTEwJts=";
|
||||
hash = "sha256-WSbczKPxTyaSqYeI8WYKpo983sfJWa7QCYbElMetUqY=";
|
||||
};
|
||||
|
||||
forceEmptyCache = true;
|
||||
dontNpmBuild = true;
|
||||
|
||||
npmWorkspace = "bridge";
|
||||
npmDepsHash = "sha256-ixzfebmKITD1lnPNQq765S1f+i7xBTTWWdZoJOqY7qg=";
|
||||
npmDepsHash = "sha256-1+VkzCrLZvL7XUxoK/AazwSR3yLqgZ4CGJwDAJ2e+5U=";
|
||||
|
||||
# TODO: revisit this when https://github.com/NixOS/nixpkgs/pull/333759 has landed
|
||||
postInstall = ''
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
|
||||
buildNpmPackage (finalAttrs: {
|
||||
pname = "thunderbird-cli-mcp";
|
||||
version = "1.0.2";
|
||||
version = "1.1.0";
|
||||
|
||||
__structuredAttrs = true;
|
||||
|
||||
@@ -15,14 +15,14 @@ buildNpmPackage (finalAttrs: {
|
||||
owner = "vitalio-sh";
|
||||
repo = "thunderbird-cli";
|
||||
tag = "v${finalAttrs.version}";
|
||||
hash = "sha256-jtIXOHjijFkwdh5FWrqdSfEwbEmWQud8Qr2jsTEwJts=";
|
||||
hash = "sha256-WSbczKPxTyaSqYeI8WYKpo983sfJWa7QCYbElMetUqY=";
|
||||
};
|
||||
|
||||
forceEmptyCache = true;
|
||||
dontNpmBuild = true;
|
||||
|
||||
npmWorkspace = "mcp";
|
||||
npmDepsHash = "sha256-ixzfebmKITD1lnPNQq765S1f+i7xBTTWWdZoJOqY7qg=";
|
||||
npmDepsHash = "sha256-1+VkzCrLZvL7XUxoK/AazwSR3yLqgZ4CGJwDAJ2e+5U=";
|
||||
|
||||
# TODO: revisit this when https://github.com/NixOS/nixpkgs/pull/333759 has landed
|
||||
postInstall = ''
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
|
||||
buildNpmPackage (finalAttrs: {
|
||||
pname = "thunderbird-cli";
|
||||
version = "1.0.2";
|
||||
version = "1.1.0";
|
||||
|
||||
__structuredAttrs = true;
|
||||
|
||||
@@ -15,14 +15,14 @@ buildNpmPackage (finalAttrs: {
|
||||
owner = "vitalio-sh";
|
||||
repo = "thunderbird-cli";
|
||||
tag = "v${finalAttrs.version}";
|
||||
hash = "sha256-jtIXOHjijFkwdh5FWrqdSfEwbEmWQud8Qr2jsTEwJts=";
|
||||
hash = "sha256-WSbczKPxTyaSqYeI8WYKpo983sfJWa7QCYbElMetUqY=";
|
||||
};
|
||||
|
||||
forceEmptyCache = true;
|
||||
dontNpmBuild = true;
|
||||
|
||||
npmWorkspace = "cli";
|
||||
npmDepsHash = "sha256-ixzfebmKITD1lnPNQq765S1f+i7xBTTWWdZoJOqY7qg=";
|
||||
npmDepsHash = "sha256-1+VkzCrLZvL7XUxoK/AazwSR3yLqgZ4CGJwDAJ2e+5U=";
|
||||
|
||||
# TODO: revisit this when https://github.com/NixOS/nixpkgs/pull/333759 has landed
|
||||
postInstall = ''
|
||||
|
||||
@@ -1,17 +1,17 @@
|
||||
{
|
||||
"version": "29.0",
|
||||
"version": "30.2",
|
||||
"platforms": {
|
||||
"aarch64-linux": {
|
||||
"arch": "linux-arm64",
|
||||
"hash": "sha256-ztjCyK2378tg9yT9D6ProINlMT5GyUIEH8duHivCQ2E="
|
||||
"hash": "sha256-qbnW4pJ8hjkAMGKQ6FMsF/Zr3/NO8q0EOyTtTM7Iprw="
|
||||
},
|
||||
"x86_64-linux": {
|
||||
"arch": "linux-amd64",
|
||||
"hash": "sha256-BD0qE1dEVKVUPwO2fMO0SMXiwG9dD0RMnAzkVZitFKA="
|
||||
"hash": "sha256-zXkWBefGzHvkV3lPU0zUufnTYXga2xDkACDvwihA68M="
|
||||
},
|
||||
"aarch64-darwin": {
|
||||
"arch": "darwin-arm64",
|
||||
"hash": "sha256-yAOR/bGYBQGp8Mllhh0yKyqmItd2+IfLib3W+lIHwr0="
|
||||
"hash": "sha256-fY1tDDOTCtIOoj3RhCUFR7FmFZRL6JGyB46KB1FS+n4="
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
77
pkgs/by-name/xd/xdg-desktop-portal-wormhole/package.nix
Normal file
77
pkgs/by-name/xd/xdg-desktop-portal-wormhole/package.nix
Normal file
@@ -0,0 +1,77 @@
|
||||
{
|
||||
lib,
|
||||
stdenv,
|
||||
fetchFromGitHub,
|
||||
cmake,
|
||||
ninja,
|
||||
pkg-config,
|
||||
qt6,
|
||||
wayland-scanner,
|
||||
glib,
|
||||
pipewire,
|
||||
wayland,
|
||||
wayland-protocols,
|
||||
nix-update-script,
|
||||
testers,
|
||||
}:
|
||||
|
||||
stdenv.mkDerivation (finalAttrs: {
|
||||
pname = "xdg-desktop-portal-wormhole";
|
||||
version = "1.0.2";
|
||||
|
||||
__structuredAttrs = true;
|
||||
strictDeps = true;
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "AstraSuite";
|
||||
repo = "Wormhole";
|
||||
tag = "v${finalAttrs.version}";
|
||||
hash = "sha256-NCttrS5eXXuSYNiynu2jTlpt3brPnS8nNJEAQqcXcuI=";
|
||||
};
|
||||
|
||||
postPatch = ''
|
||||
substituteInPlace src/main.cpp \
|
||||
--replace-fail 'app.setApplicationVersion("1.0.0");' 'app.setApplicationVersion("${finalAttrs.version}");'
|
||||
'';
|
||||
|
||||
nativeBuildInputs = [
|
||||
cmake
|
||||
ninja
|
||||
pkg-config
|
||||
qt6.wrapQtAppsHook
|
||||
wayland-scanner
|
||||
];
|
||||
|
||||
buildInputs = [
|
||||
qt6.qtbase
|
||||
qt6.qtdeclarative
|
||||
qt6.qtsvg
|
||||
qt6.qtmultimedia
|
||||
glib
|
||||
pipewire
|
||||
wayland
|
||||
wayland-protocols
|
||||
];
|
||||
|
||||
cmakeFlags = [
|
||||
(lib.cmakeFeature "WORMHOLE_VERSION" finalAttrs.version)
|
||||
(lib.cmakeFeature "INIT_SYSTEM" "systemd")
|
||||
];
|
||||
|
||||
passthru = {
|
||||
updateScript = nix-update-script { };
|
||||
tests.version = testers.testVersion {
|
||||
package = finalAttrs.finalPackage;
|
||||
command = "QT_QPA_PLATFORM=offscreen wormhole --version";
|
||||
};
|
||||
};
|
||||
|
||||
meta = {
|
||||
description = "XDG Desktop Portal for Caelestia Shell";
|
||||
homepage = "https://github.com/AstraSuite/Wormhole";
|
||||
license = lib.licenses.gpl3Only;
|
||||
maintainers = with lib.maintainers; [ rachalaraj ];
|
||||
mainProgram = "wormhole";
|
||||
platforms = lib.platforms.linux;
|
||||
};
|
||||
})
|
||||
@@ -9,13 +9,13 @@
|
||||
|
||||
buildGoModule rec {
|
||||
pname = "xk6";
|
||||
version = "1.4.12";
|
||||
version = "1.4.14";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "grafana";
|
||||
repo = "xk6";
|
||||
tag = "v${version}";
|
||||
hash = "sha256-puptwpgCNPupUZG6/zKIRuMwaItgwcZiBREPfcSAMvs=";
|
||||
hash = "sha256-sA3b1EUczciQV9jrVR2YkjuW0i1LOIHctLJWK2q8po0=";
|
||||
};
|
||||
|
||||
vendorHash = null;
|
||||
|
||||
@@ -30,13 +30,13 @@ in
|
||||
|
||||
stdenv.mkDerivation (finalAttrs: {
|
||||
pname = "zenroom";
|
||||
version = "5.37.2";
|
||||
version = "5.38.1";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "dyne";
|
||||
repo = "Zenroom";
|
||||
tag = "v${finalAttrs.version}";
|
||||
hash = "sha256-gNUclaXF7C2yBywo1TAwHOfB9Pe17g6fCLhEcFq8JL0=";
|
||||
hash = "sha256-FDGIMeWzhHSLsVUAH/y3cgJbkXzzX3yiHjXeSL2xnto=";
|
||||
postFetch = ''
|
||||
# conflict on case-insensitive filesystems
|
||||
pushd $out/docs/examples/zencode_cookbook/cookbook_when
|
||||
|
||||
144
pkgs/by-name/zl/zlspectrumequalizer/package.nix
Normal file
144
pkgs/by-name/zl/zlspectrumequalizer/package.nix
Normal file
@@ -0,0 +1,144 @@
|
||||
{
|
||||
lib,
|
||||
clangStdenv,
|
||||
fetchFromGitHub,
|
||||
nix-update-script,
|
||||
|
||||
# nativeBuildInputs
|
||||
cmake,
|
||||
darwin,
|
||||
ninja,
|
||||
pkg-config,
|
||||
python3,
|
||||
writableTmpDirAsHomeHook,
|
||||
|
||||
# buildInputs
|
||||
alsa-lib,
|
||||
fontconfig,
|
||||
freetype,
|
||||
libxcursor,
|
||||
libxext,
|
||||
libxi,
|
||||
libxinerama,
|
||||
libxrandr,
|
||||
lv2,
|
||||
# Highway is built static-dispatch only upstream (HWY_COMPILE_ONLY_STATIC is
|
||||
# forced ON), so exactly one ISA is baked in -- there is no runtime dispatch.
|
||||
# Default to the portable baseline so the cached binary runs everywhere nixpkgs
|
||||
# targets. Override for a faster *local* build, e.g.
|
||||
# zlspectrumequalizer.override { simdTarget = "AVX2"; }
|
||||
# SSE4/AVX2 map to -march=x86-64-v2/v3 and will SIGILL on CPUs lacking that ISA,
|
||||
# which is why this must not be raised for the binary cache.
|
||||
simdTarget ? (if clangStdenv.hostPlatform.isAarch64 then "NEON" else "SSE2"),
|
||||
}:
|
||||
assert lib.assertOneOf "simdTarget" simdTarget [
|
||||
"SSE2"
|
||||
"SSE4"
|
||||
"AVX2"
|
||||
"NEON"
|
||||
];
|
||||
clangStdenv.mkDerivation (finalAttrs: {
|
||||
pname = "zlspectrumequalizer";
|
||||
version = "0.1.0";
|
||||
|
||||
__structuredAttrs = true;
|
||||
strictDeps = true;
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "ZL-Audio";
|
||||
repo = "ZlSpectrumEqualizer";
|
||||
tag = finalAttrs.version;
|
||||
hash = "sha256-h4GZlyWieE1LVDr+SC3k2uklrqh5r8KQywW0+Ksa27E=";
|
||||
fetchSubmodules = true;
|
||||
};
|
||||
|
||||
nativeBuildInputs = [
|
||||
cmake
|
||||
ninja
|
||||
pkg-config
|
||||
python3
|
||||
writableTmpDirAsHomeHook
|
||||
]
|
||||
++ lib.optionals clangStdenv.hostPlatform.isDarwin [ darwin.sigtool ];
|
||||
|
||||
buildInputs = [
|
||||
fontconfig
|
||||
freetype
|
||||
lv2
|
||||
]
|
||||
++ lib.optionals clangStdenv.hostPlatform.isLinux [
|
||||
alsa-lib
|
||||
libxcursor
|
||||
libxext
|
||||
libxi
|
||||
libxinerama
|
||||
libxrandr
|
||||
];
|
||||
|
||||
env = lib.optionalAttrs clangStdenv.hostPlatform.isLinux {
|
||||
# JUCE dlopen's these at runtime, crashes without them
|
||||
# -lXi is essential: JUCE requests the unversioned
|
||||
# "libXi.so", which no host has already loaded, and when that dlopen fails
|
||||
# JUCE still believes XInput2 is present (the stub for the missing
|
||||
# XIQueryVersion returns 0, which equals Success), so it discards all core
|
||||
# pointer events and the GUI stops responding to the mouse entirely.
|
||||
NIX_LDFLAGS = toString [
|
||||
"-lX11"
|
||||
"-lXcursor"
|
||||
"-lXext"
|
||||
"-lXi"
|
||||
"-lXinerama"
|
||||
"-lXrandr"
|
||||
];
|
||||
|
||||
NIX_CFLAGS_COMPILE = toString [
|
||||
# juce, compiled in this build as part of a Git submodule, uses `-flto` as
|
||||
# a Link Time Optimization flag, and instructs the plugin compiled here to
|
||||
# use this flag to. This breaks the build for us. Using _fat_ LTO allows
|
||||
# successful linking while still providing LTO benefits. If our build of
|
||||
# `juce` was used as a dependency, we could have patched that `-flto` line
|
||||
# in our juce's source, but that is not possible because it is used as a
|
||||
# Git Submodule.
|
||||
"-ffat-lto-objects"
|
||||
];
|
||||
};
|
||||
|
||||
cmakeFlags = [
|
||||
(lib.cmakeFeature "ZL_HWY_STATIC_TARGET" simdTarget)
|
||||
(lib.cmakeBool "ZL_JUCE_COPY_PLUGIN" false)
|
||||
# set the version for the settings screen.
|
||||
(lib.cmakeFeature "FOOBAR_VERSION" "${finalAttrs.version}")
|
||||
];
|
||||
|
||||
installPhase = ''
|
||||
runHook preInstall
|
||||
''
|
||||
+ lib.optionalString clangStdenv.hostPlatform.isLinux ''
|
||||
mkdir -p $out/lib/{lv2,vst3}
|
||||
cp -r "ZLSpectrumEqualizer_artefacts/Release/LV2/ZL Spectrum Equalizer.lv2" $out/lib/lv2/
|
||||
cp -r "ZLSpectrumEqualizer_artefacts/Release/VST3/ZL Spectrum Equalizer.vst3" $out/lib/vst3/
|
||||
install -Dm755 -t $out/bin "ZLSpectrumEqualizer_artefacts/Release/Standalone/ZL Spectrum Equalizer"
|
||||
''
|
||||
+ lib.optionalString clangStdenv.hostPlatform.isDarwin ''
|
||||
mkdir -p $out/Applications
|
||||
cp -r ZLSpectrumEqualizer_artefacts/Release/{AU,VST3} $out/
|
||||
cp -r ZLSpectrumEqualizer_artefacts/Release/Standalone/* $out/Applications/
|
||||
''
|
||||
+ ''
|
||||
runHook postInstall
|
||||
'';
|
||||
|
||||
passthru.updateScript = nix-update-script { };
|
||||
|
||||
meta = {
|
||||
homepage = "https://zl-audio.github.io/plugins/zlspeceq/";
|
||||
changelog = "https://github.com/ZL-Audio/ZlSpectrumEqualizer/releases/tag/${finalAttrs.version}";
|
||||
description = "Dynamic spectrum equalizer plugin for VST3, LV2 and standalone";
|
||||
mainProgram = "ZL Spectrum Equalizer";
|
||||
license = lib.licenses.agpl3Plus;
|
||||
maintainers = with lib.maintainers; [
|
||||
magnetophon
|
||||
];
|
||||
platforms = lib.platforms.linux ++ lib.platforms.darwin;
|
||||
};
|
||||
})
|
||||
@@ -7,15 +7,15 @@
|
||||
|
||||
buildNpmPackage rec {
|
||||
pname = "zwave-js-ui";
|
||||
version = "11.24.0";
|
||||
version = "11.24.1";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "zwave-js";
|
||||
repo = "zwave-js-ui";
|
||||
tag = "v${version}";
|
||||
hash = "sha256-KX90w0J4ASGxyFbv8l8dNoNqIURXuOeNl6E3dmFzbC4=";
|
||||
hash = "sha256-wHeZOMMTq0Rb8SU4pbSMcN6/DBrPbT4VnGppwa5gEiE=";
|
||||
};
|
||||
npmDepsHash = "sha256-ECuBLrAIfWgCLPbKOFmZvq/6MhB58o3JjTrRf5Dip2g=";
|
||||
npmDepsHash = "sha256-SdmSf9LDKpQfcwA8kWMjZKdzf64/GTdLVZf5MNZtasQ=";
|
||||
|
||||
passthru.tests.zwave-js-ui = nixosTests.zwave-js-ui;
|
||||
|
||||
|
||||
@@ -37,7 +37,7 @@ buildRedist {
|
||||
hash = "sha256-hYfMFsd7Y8CwuNGaPYG6uEB+lg1TmWSIIU5ToVMULKY=";
|
||||
})
|
||||
]
|
||||
++ lib.optionals (cudaAtLeast "13.2" && cudaOlder "13.4") [
|
||||
++ lib.optionals (cudaAtLeast "13.2" && cudaOlder "13.3") [
|
||||
# Fix onnxruntime compilation error: https://github.com/microsoft/onnxruntime/issues/28023
|
||||
# Backport: https://github.com/NVIDIA/cccl/pull/8771
|
||||
(fetchpatch {
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
genericBuilder:
|
||||
|
||||
genericBuilder {
|
||||
version = "27.3.4.17";
|
||||
hash = "sha256-os1xGN+3boKGehVKtuM0Buetb56IGhn8SRuoHlJg5bA=";
|
||||
version = "27.3.4.18";
|
||||
hash = "sha256-KEnZ9UL/yOERn+CjTk+7tu0yR4RHwYwJOhnDj5nKfFs=";
|
||||
}
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
genericBuilder:
|
||||
|
||||
genericBuilder {
|
||||
version = "28.5.0.6";
|
||||
hash = "sha256-RjP7SmW6vH/sIf3w0ZROoQBbCTmsdGcqsm9rYU2Tfmw=";
|
||||
version = "28.5.0.7";
|
||||
hash = "sha256-1XnZspWzU8gCaeJz6kFMonrY51EKL4r/6jBI6UdNu0g=";
|
||||
}
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
genericBuilder:
|
||||
|
||||
genericBuilder {
|
||||
version = "29.1";
|
||||
hash = "sha256-G1YZCdaicgmuZYXIi6g5bRM4nkvJoLb7fGdBCD+NIvQ=";
|
||||
version = "29.1.1";
|
||||
hash = "sha256-k84hE47sKK+eROIb65p2kcV9aHgZPxEg2SWGs2MpneE=";
|
||||
}
|
||||
|
||||
@@ -29,14 +29,14 @@
|
||||
|
||||
buildPythonPackage (finalAttrs: {
|
||||
pname = "caldav";
|
||||
version = "3.3.0";
|
||||
version = "3.3.1";
|
||||
pyproject = true;
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "python-caldav";
|
||||
repo = "caldav";
|
||||
tag = "v${finalAttrs.version}";
|
||||
hash = "sha256-FV1C8RlbkNXOTtRKSCNgiGetImW0+647JgmZtf5U+pY=";
|
||||
hash = "sha256-G1iZ2a81DTURIODWTXji7AU6ywPDg4XqGNoQFhPIMO4=";
|
||||
};
|
||||
|
||||
build-system = [
|
||||
|
||||
@@ -12,14 +12,14 @@
|
||||
|
||||
buildPythonPackage rec {
|
||||
pname = "colcon-mixin";
|
||||
version = "0.3.1";
|
||||
version = "0.3.2";
|
||||
pyproject = true;
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "colcon";
|
||||
repo = "colcon-mixin";
|
||||
tag = version;
|
||||
hash = "sha256-XpUZcfKxKr6wlqFFFEP26KlRjn6v/j1/r/pAORzPeSM=";
|
||||
hash = "sha256-sSfJSLZVCIQRFj9Z3au/j+W6uFU3FKhnIBMk1HYgvTM=";
|
||||
};
|
||||
|
||||
build-system = [ setuptools ];
|
||||
|
||||
@@ -39,14 +39,14 @@
|
||||
|
||||
buildPythonPackage rec {
|
||||
pname = "scipp";
|
||||
version = "26.8.0";
|
||||
version = "26.9.0";
|
||||
pyproject = true;
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "scipp";
|
||||
repo = "Scipp";
|
||||
tag = version;
|
||||
hash = "sha256-D8xUq63S1mEALfrw0Qz/7Mprw1zQMj6W2j/LjkgfGvM=";
|
||||
hash = "sha256-1u9KT6o83hn9x/WGXj26OsGJOQpMBu1G4FiDIVaGXoM=";
|
||||
};
|
||||
|
||||
env = {
|
||||
|
||||
@@ -0,0 +1,62 @@
|
||||
From 24cb4ac0fcc6bfa88432c5c6a1b061f601458baf Mon Sep 17 00:00:00 2001
|
||||
From: phanirithvij <phanirithvij2000@gmail.com>
|
||||
Date: Wed, 25 Mar 2026 18:30:32 +0530
|
||||
Subject: [PATCH 1/6] linux only metrics
|
||||
|
||||
Signed-off-by: phanirithvij <phanirithvij2000@gmail.com>
|
||||
---
|
||||
tests/metrics_test.py | 18 ++++++++++++------
|
||||
1 file changed, 12 insertions(+), 6 deletions(-)
|
||||
|
||||
diff --git a/tests/metrics_test.py b/tests/metrics_test.py
|
||||
index 12fc300..6f2295d 100644
|
||||
--- a/tests/metrics_test.py
|
||||
+++ b/tests/metrics_test.py
|
||||
@@ -42,18 +42,22 @@ def test_init_async(fake_async_api_call: AsyncApiCall) -> None:
|
||||
)
|
||||
assert metrics.resource_path == "/metrics.json" # noqa: WPS437
|
||||
|
||||
+import platform
|
||||
+
|
||||
|
||||
def test_actual_retrieve(actual_metrics: Metrics) -> None:
|
||||
"""Test that the Metrics object can retrieve metrics on Typesense server and verify response structure."""
|
||||
response = actual_metrics.retrieve()
|
||||
|
||||
- assert "system_cpu_active_percentage" in response
|
||||
+ if platform.system() == "Linux":
|
||||
+ assert "system_cpu_active_percentage" in response
|
||||
+ assert "system_network_received_bytes" in response
|
||||
+ assert "system_network_sent_bytes" in response
|
||||
+
|
||||
assert "system_disk_total_bytes" in response
|
||||
assert "system_disk_used_bytes" in response
|
||||
assert "system_memory_total_bytes" in response
|
||||
assert "system_memory_used_bytes" in response
|
||||
- assert "system_network_received_bytes" in response
|
||||
- assert "system_network_sent_bytes" in response
|
||||
assert "typesense_memory_active_bytes" in response
|
||||
assert "typesense_memory_allocated_bytes" in response
|
||||
assert "typesense_memory_fragmentation_ratio" in response
|
||||
@@ -68,13 +72,15 @@ async def test_actual_retrieve_async(actual_async_metrics: AsyncMetrics) -> None
|
||||
"""Test that the AsyncMetrics object can retrieve metrics on Typesense server and verify response structure."""
|
||||
response = await actual_async_metrics.retrieve()
|
||||
|
||||
- assert "system_cpu_active_percentage" in response
|
||||
+ if platform.system() == "Linux":
|
||||
+ assert "system_cpu_active_percentage" in response
|
||||
+ assert "system_network_received_bytes" in response
|
||||
+ assert "system_network_sent_bytes" in response
|
||||
+
|
||||
assert "system_disk_total_bytes" in response
|
||||
assert "system_disk_used_bytes" in response
|
||||
assert "system_memory_total_bytes" in response
|
||||
assert "system_memory_used_bytes" in response
|
||||
- assert "system_network_received_bytes" in response
|
||||
- assert "system_network_sent_bytes" in response
|
||||
assert "typesense_memory_active_bytes" in response
|
||||
assert "typesense_memory_allocated_bytes" in response
|
||||
assert "typesense_memory_fragmentation_ratio" in response
|
||||
--
|
||||
2.53.0
|
||||
|
||||
@@ -1,11 +1,21 @@
|
||||
From ed2f6f31f74fae21cb00b6ea3da92b300fadce76 Mon Sep 17 00:00:00 2001
|
||||
From: phanirithvij <phanirithvij2000@gmail.com>
|
||||
Date: Wed, 25 Mar 2026 19:05:02 +0530
|
||||
Subject: [PATCH 2/6] generated temp path
|
||||
|
||||
Signed-off-by: phanirithvij <phanirithvij2000@gmail.com>
|
||||
---
|
||||
tests/operations_test.py | 4 ++--
|
||||
1 file changed, 2 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/tests/operations_test.py b/tests/operations_test.py
|
||||
index 34bb74c..39f9265 100644
|
||||
index b48b946..71c134e 100644
|
||||
--- a/tests/operations_test.py
|
||||
+++ b/tests/operations_test.py
|
||||
@@ -51,11 +51,11 @@ def test_cache_clear(actual_operations: Operations) -> None:
|
||||
@@ -69,11 +69,11 @@ def test_cache_clear(actual_operations: Operations) -> None:
|
||||
assert response["success"]
|
||||
|
||||
|
||||
|
||||
|
||||
-def test_snapshot(actual_operations: Operations) -> None:
|
||||
+def test_snapshot(actual_operations: Operations, tmp_path) -> None:
|
||||
"""Test that the Operations object can perform the snapshot operation."""
|
||||
@@ -14,5 +24,8 @@ index 34bb74c..39f9265 100644
|
||||
- {"snapshot_path": "/tmp"}, # noqa: S108
|
||||
+ {"snapshot_path": str(tmp_path)}, # noqa: S108
|
||||
)
|
||||
|
||||
|
||||
assert response["success"]
|
||||
--
|
||||
2.53.0
|
||||
|
||||
@@ -0,0 +1,106 @@
|
||||
From 90047673e4191ffaa6431059f9a8c1ffb31ea3cb Mon Sep 17 00:00:00 2001
|
||||
From: phanirithvij <phanirithvij2000@gmail.com>
|
||||
Date: Wed, 25 Mar 2026 19:02:46 +0530
|
||||
Subject: [PATCH 3/6] tests fix endpoint path
|
||||
|
||||
_endpoint_path is not a function anymore
|
||||
|
||||
Signed-off-by: phanirithvij <phanirithvij2000@gmail.com>
|
||||
---
|
||||
tests/override_test.py | 4 ++--
|
||||
tests/overrides_test.py | 4 ++--
|
||||
tests/synonym_test.py | 4 ++--
|
||||
tests/synonyms_test.py | 4 ++--
|
||||
4 files changed, 8 insertions(+), 8 deletions(-)
|
||||
|
||||
diff --git a/tests/override_test.py b/tests/override_test.py
|
||||
index 89526c7..47fc81b 100644
|
||||
--- a/tests/override_test.py
|
||||
+++ b/tests/override_test.py
|
||||
@@ -47,7 +47,7 @@ def test_init(fake_api_call: ApiCall) -> None:
|
||||
fake_api_call.config.nearest_node,
|
||||
)
|
||||
assert (
|
||||
- override._endpoint_path() # noqa: WPS437
|
||||
+ override._endpoint_path # noqa: WPS437
|
||||
== "/collections/companies/overrides/company_override"
|
||||
)
|
||||
|
||||
@@ -104,7 +104,7 @@ def test_init_async(fake_async_api_call: AsyncApiCall) -> None:
|
||||
fake_async_api_call.config.nearest_node,
|
||||
)
|
||||
assert (
|
||||
- override._endpoint_path() # noqa: WPS437
|
||||
+ override._endpoint_path # noqa: WPS437
|
||||
== "/collections/companies/overrides/company_override"
|
||||
)
|
||||
|
||||
diff --git a/tests/overrides_test.py b/tests/overrides_test.py
|
||||
index a9376b5..de4de73 100644
|
||||
--- a/tests/overrides_test.py
|
||||
+++ b/tests/overrides_test.py
|
||||
@@ -61,7 +61,7 @@ def test_get_missing_override(fake_overrides: Overrides) -> None:
|
||||
)
|
||||
assert override.collection_name == "companies"
|
||||
assert (
|
||||
- override._endpoint_path() # noqa: WPS437
|
||||
+ override._endpoint_path # noqa: WPS437
|
||||
== "/collections/companies/overrides/company_override"
|
||||
)
|
||||
|
||||
@@ -186,7 +186,7 @@ def test_get_missing_override_async(fake_async_overrides) -> None:
|
||||
)
|
||||
assert override.collection_name == "companies"
|
||||
assert (
|
||||
- override._endpoint_path() # noqa: WPS437
|
||||
+ override._endpoint_path # noqa: WPS437
|
||||
== "/collections/companies/overrides/company_override"
|
||||
)
|
||||
|
||||
diff --git a/tests/synonym_test.py b/tests/synonym_test.py
|
||||
index cfe6e51..d9affd9 100644
|
||||
--- a/tests/synonym_test.py
|
||||
+++ b/tests/synonym_test.py
|
||||
@@ -45,7 +45,7 @@ def test_init(fake_api_call: ApiCall) -> None:
|
||||
fake_api_call.config.nearest_node,
|
||||
)
|
||||
assert (
|
||||
- synonym._endpoint_path() # noqa: WPS437
|
||||
+ synonym._endpoint_path # noqa: WPS437
|
||||
== "/collections/companies/synonyms/company_synonym"
|
||||
)
|
||||
|
||||
@@ -99,7 +99,7 @@ def test_init_async(fake_async_api_call: AsyncApiCall) -> None:
|
||||
fake_async_api_call.config.nearest_node,
|
||||
)
|
||||
assert (
|
||||
- synonym._endpoint_path() # noqa: WPS437
|
||||
+ synonym._endpoint_path # noqa: WPS437
|
||||
== "/collections/companies/synonyms/company_synonym"
|
||||
)
|
||||
|
||||
diff --git a/tests/synonyms_test.py b/tests/synonyms_test.py
|
||||
index 3402493..afe8638 100644
|
||||
--- a/tests/synonyms_test.py
|
||||
+++ b/tests/synonyms_test.py
|
||||
@@ -62,7 +62,7 @@ def test_get_missing_synonym(fake_synonyms: Synonyms) -> None:
|
||||
)
|
||||
assert synonym.collection_name == "companies"
|
||||
assert (
|
||||
- synonym._endpoint_path() # noqa: WPS437
|
||||
+ synonym._endpoint_path # noqa: WPS437
|
||||
== "/collections/companies/synonyms/company_synonym"
|
||||
)
|
||||
|
||||
@@ -174,7 +174,7 @@ def test_get_missing_synonym_async(fake_async_synonyms) -> None:
|
||||
)
|
||||
assert synonym.collection_name == "companies"
|
||||
assert (
|
||||
- synonym._endpoint_path() # noqa: WPS437
|
||||
+ synonym._endpoint_path # noqa: WPS437
|
||||
== "/collections/companies/synonyms/company_synonym"
|
||||
)
|
||||
|
||||
--
|
||||
2.53.0
|
||||
|
||||
@@ -0,0 +1,29 @@
|
||||
From f6989c8e29fcb03bf76f1b143d116f081091fad1 Mon Sep 17 00:00:00 2001
|
||||
From: phanirithvij <phanirithvij2000@gmail.com>
|
||||
Date: Wed, 25 Mar 2026 19:35:38 +0530
|
||||
Subject: [PATCH 4/6] tests fix rule_id
|
||||
|
||||
rule_id is not found for this class but rule_name exists with the
|
||||
expected value
|
||||
|
||||
Signed-off-by: phanirithvij <phanirithvij2000@gmail.com>
|
||||
---
|
||||
tests/analytics_rules_v1_test.py | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/tests/analytics_rules_v1_test.py b/tests/analytics_rules_v1_test.py
|
||||
index d222d99..d1021d8 100644
|
||||
--- a/tests/analytics_rules_v1_test.py
|
||||
+++ b/tests/analytics_rules_v1_test.py
|
||||
@@ -45,7 +45,7 @@ def test_get_missing_analytics_rule(fake_analytics_rules: AnalyticsRulesV1) -> N
|
||||
"""Test that the AnalyticsRulesV1 object can get a missing analytics_rule."""
|
||||
analytics_rule = fake_analytics_rules["company_analytics_rule"]
|
||||
|
||||
- assert analytics_rule.rule_id == "company_analytics_rule"
|
||||
+ assert analytics_rule.rule_name == "company_analytics_rule"
|
||||
assert_match_object(analytics_rule.api_call, fake_analytics_rules.api_call)
|
||||
assert_object_lists_match(
|
||||
analytics_rule.api_call.node_manager.nodes,
|
||||
--
|
||||
2.53.0
|
||||
|
||||
@@ -0,0 +1,385 @@
|
||||
From 6eecb90897548584b8907731abf981237e032997 Mon Sep 17 00:00:00 2001
|
||||
From: Fanis Tharropoulos <ftharropoulos@gmail.com>
|
||||
Date: Thu, 7 May 2026 18:59:56 +0300
|
||||
Subject: [PATCH 5/6] test: gate v30 collection schema expectations
|
||||
|
||||
- keep v29.0 and earlier tests passing
|
||||
---
|
||||
tests/collection_test.py | 31 +++--
|
||||
tests/collections_test.py | 242 +++++++++++++-------------------------
|
||||
2 files changed, 106 insertions(+), 167 deletions(-)
|
||||
|
||||
diff --git a/tests/collection_test.py b/tests/collection_test.py
|
||||
index 7eb29fa..30093d1 100644
|
||||
--- a/tests/collection_test.py
|
||||
+++ b/tests/collection_test.py
|
||||
@@ -5,12 +5,24 @@ from tests.utils.object_assertions import (
|
||||
assert_object_lists_match,
|
||||
assert_to_contain_object,
|
||||
)
|
||||
+from tests.utils.version import is_v30_or_above
|
||||
from typesense.sync.api_call import ApiCall
|
||||
+from typesense.sync.client import Client
|
||||
from typesense.sync.collection import Collection
|
||||
from typesense.sync.collections import Collections
|
||||
from typesense.types.collection import CollectionSchema
|
||||
|
||||
|
||||
+is_v30_or_above_server = is_v30_or_above(
|
||||
+ Client(
|
||||
+ {
|
||||
+ "api_key": "xyz",
|
||||
+ "nodes": [{"host": "localhost", "port": 8108, "protocol": "http"}],
|
||||
+ }
|
||||
+ )
|
||||
+)
|
||||
+
|
||||
+
|
||||
def test_init(fake_api_call: ApiCall) -> None:
|
||||
"""Test that the Collection object is initialized correctly."""
|
||||
collection = Collection(fake_api_call, "companies")
|
||||
@@ -52,7 +64,6 @@ def test_actual_retrieve(
|
||||
"infix": False,
|
||||
"stem": False,
|
||||
"stem_dictionary": "",
|
||||
- "truncate_len": 100,
|
||||
"store": True,
|
||||
},
|
||||
{
|
||||
@@ -66,7 +77,6 @@ def test_actual_retrieve(
|
||||
"infix": False,
|
||||
"stem": False,
|
||||
"stem_dictionary": "",
|
||||
- "truncate_len": 100,
|
||||
"store": True,
|
||||
},
|
||||
],
|
||||
@@ -74,9 +84,12 @@ def test_actual_retrieve(
|
||||
"num_documents": 0,
|
||||
"symbols_to_index": [],
|
||||
"token_separators": [],
|
||||
- "synonym_sets": [],
|
||||
- "curation_sets": [],
|
||||
}
|
||||
+ if is_v30_or_above_server:
|
||||
+ expected["synonym_sets"] = []
|
||||
+ expected["curation_sets"] = []
|
||||
+ expected["fields"][0]["truncate_len"] = 100
|
||||
+ expected["fields"][1]["truncate_len"] = 100
|
||||
|
||||
response.pop("created_at")
|
||||
|
||||
@@ -93,10 +106,8 @@ def test_actual_update(
|
||||
{"fields": [{"name": "num_locations", "type": "int32"}]},
|
||||
)
|
||||
|
||||
- expected: CollectionSchema = {
|
||||
- "fields": [
|
||||
- {"name": "num_locations", "truncate_len": 100, "type": "int32"},
|
||||
- ],
|
||||
- }
|
||||
+ expected_field = {"name": "num_locations", "type": "int32"}
|
||||
+ if is_v30_or_above_server:
|
||||
+ expected_field["truncate_len"] = 100
|
||||
|
||||
- assert_to_contain_object(response.get("fields")[0], expected.get("fields")[0])
|
||||
+ assert_to_contain_object(response.get("fields")[0], expected_field)
|
||||
diff --git a/tests/collections_test.py b/tests/collections_test.py
|
||||
index 788e3dc..94e3c60 100644
|
||||
--- a/tests/collections_test.py
|
||||
+++ b/tests/collections_test.py
|
||||
@@ -1,6 +1,5 @@
|
||||
"""Tests for the Collections class."""
|
||||
|
||||
-
|
||||
import sys
|
||||
|
||||
from typesense.async_.api_call import AsyncApiCall
|
||||
@@ -13,11 +12,68 @@ else:
|
||||
|
||||
from tests.utils.object_assertions import assert_match_object, assert_object_lists_match
|
||||
from typesense.sync.api_call import ApiCall
|
||||
+from tests.utils.version import is_v30_or_above
|
||||
from typesense.sync.collections import Collections
|
||||
from typesense.async_.collections import AsyncCollections
|
||||
+from typesense.sync.client import Client
|
||||
from typesense.types.collection import CollectionSchema
|
||||
|
||||
|
||||
+IS_V30_OR_ABOVE = is_v30_or_above(
|
||||
+ Client(
|
||||
+ {
|
||||
+ "api_key": "xyz",
|
||||
+ "nodes": [{"host": "localhost", "port": 8108, "protocol": "http"}],
|
||||
+ }
|
||||
+ )
|
||||
+)
|
||||
+
|
||||
+
|
||||
+def expected_collection_field(
|
||||
+ name: str,
|
||||
+ type_: str,
|
||||
+ *,
|
||||
+ sort: bool,
|
||||
+) -> dict[str, typing.Any]:
|
||||
+ field: dict[str, typing.Any] = {
|
||||
+ "name": name,
|
||||
+ "type": type_,
|
||||
+ "facet": False,
|
||||
+ "index": True,
|
||||
+ "optional": False,
|
||||
+ "locale": "",
|
||||
+ "sort": sort,
|
||||
+ "infix": False,
|
||||
+ "stem": False,
|
||||
+ "stem_dictionary": "",
|
||||
+ "store": True,
|
||||
+ }
|
||||
+ if IS_V30_OR_ABOVE:
|
||||
+ field["truncate_len"] = 100
|
||||
+ return field
|
||||
+
|
||||
+
|
||||
+def expected_collection_schema(
|
||||
+ *,
|
||||
+ default_sorting_field: str,
|
||||
+ fields: typing.List[dict[str, typing.Any]],
|
||||
+ name: str,
|
||||
+) -> CollectionSchema:
|
||||
+ expected: CollectionSchema = {
|
||||
+ "default_sorting_field": default_sorting_field,
|
||||
+ "enable_nested_fields": False,
|
||||
+ "fields": fields,
|
||||
+ "name": name,
|
||||
+ "num_documents": 0,
|
||||
+ "symbols_to_index": [],
|
||||
+ "token_separators": [],
|
||||
+ }
|
||||
+ if IS_V30_OR_ABOVE:
|
||||
+ expected["synonym_sets"] = []
|
||||
+ expected["curation_sets"] = []
|
||||
+ return expected
|
||||
+
|
||||
+
|
||||
def test_init(fake_api_call: ApiCall) -> None:
|
||||
"""Test that the Collections object is initialized correctly."""
|
||||
collections = Collections(fake_api_call)
|
||||
@@ -98,46 +154,14 @@ def test_get_existing_collection(fake_collections: Collections) -> None:
|
||||
|
||||
def test_actual_create(actual_collections: Collections, delete_all: None) -> None:
|
||||
"""Test that the Collections object can create a collection on Typesense Server."""
|
||||
- expected: CollectionSchema = {
|
||||
- "default_sorting_field": "",
|
||||
- "enable_nested_fields": False,
|
||||
- "fields": [
|
||||
- {
|
||||
- "name": "company_name",
|
||||
- "type": "string",
|
||||
- "facet": False,
|
||||
- "index": True,
|
||||
- "optional": False,
|
||||
- "locale": "",
|
||||
- "sort": False,
|
||||
- "infix": False,
|
||||
- "stem": False,
|
||||
- "stem_dictionary": "",
|
||||
- "truncate_len": 100,
|
||||
- "store": True,
|
||||
- },
|
||||
- {
|
||||
- "name": "num_employees",
|
||||
- "type": "int32",
|
||||
- "facet": False,
|
||||
- "index": True,
|
||||
- "optional": False,
|
||||
- "locale": "",
|
||||
- "sort": False,
|
||||
- "infix": False,
|
||||
- "stem": False,
|
||||
- "stem_dictionary": "",
|
||||
- "truncate_len": 100,
|
||||
- "store": True,
|
||||
- },
|
||||
+ expected = expected_collection_schema(
|
||||
+ default_sorting_field="",
|
||||
+ fields=[
|
||||
+ expected_collection_field("company_name", "string", sort=False),
|
||||
+ expected_collection_field("num_employees", "int32", sort=False),
|
||||
],
|
||||
- "name": "companies",
|
||||
- "num_documents": 0,
|
||||
- "symbols_to_index": [],
|
||||
- "token_separators": [],
|
||||
- "synonym_sets": [],
|
||||
- "curation_sets": [],
|
||||
- }
|
||||
+ name="companies",
|
||||
+ )
|
||||
|
||||
response = actual_collections.create(
|
||||
{
|
||||
@@ -170,46 +194,14 @@ def test_actual_retrieve(
|
||||
response = actual_collections.retrieve()
|
||||
|
||||
expected: typing.List[CollectionSchema] = [
|
||||
- {
|
||||
- "default_sorting_field": "num_employees",
|
||||
- "enable_nested_fields": False,
|
||||
- "fields": [
|
||||
- {
|
||||
- "name": "company_name",
|
||||
- "type": "string",
|
||||
- "facet": False,
|
||||
- "index": True,
|
||||
- "optional": False,
|
||||
- "locale": "",
|
||||
- "sort": False,
|
||||
- "infix": False,
|
||||
- "stem": False,
|
||||
- "stem_dictionary": "",
|
||||
- "truncate_len": 100,
|
||||
- "store": True,
|
||||
- },
|
||||
- {
|
||||
- "name": "num_employees",
|
||||
- "type": "int32",
|
||||
- "facet": False,
|
||||
- "index": True,
|
||||
- "optional": False,
|
||||
- "locale": "",
|
||||
- "sort": True,
|
||||
- "infix": False,
|
||||
- "stem": False,
|
||||
- "stem_dictionary": "",
|
||||
- "truncate_len": 100,
|
||||
- "store": True,
|
||||
- },
|
||||
+ expected_collection_schema(
|
||||
+ default_sorting_field="num_employees",
|
||||
+ fields=[
|
||||
+ expected_collection_field("company_name", "string", sort=False),
|
||||
+ expected_collection_field("num_employees", "int32", sort=True),
|
||||
],
|
||||
- "name": "companies",
|
||||
- "num_documents": 0,
|
||||
- "symbols_to_index": [],
|
||||
- "token_separators": [],
|
||||
- "synonym_sets": [],
|
||||
- "curation_sets": [],
|
||||
- },
|
||||
+ name="companies",
|
||||
+ ),
|
||||
]
|
||||
|
||||
response[0].pop("created_at")
|
||||
@@ -235,46 +227,14 @@ async def test_actual_create_async(
|
||||
actual_async_collections: AsyncCollections, delete_all: None
|
||||
) -> None:
|
||||
"""Test that the Collections object can create a collection on Typesense Server."""
|
||||
- expected: CollectionSchema = {
|
||||
- "default_sorting_field": "",
|
||||
- "enable_nested_fields": False,
|
||||
- "fields": [
|
||||
- {
|
||||
- "name": "company_name",
|
||||
- "type": "string",
|
||||
- "facet": False,
|
||||
- "index": True,
|
||||
- "optional": False,
|
||||
- "locale": "",
|
||||
- "sort": False,
|
||||
- "infix": False,
|
||||
- "stem": False,
|
||||
- "stem_dictionary": "",
|
||||
- "truncate_len": 100,
|
||||
- "store": True,
|
||||
- },
|
||||
- {
|
||||
- "name": "num_employees",
|
||||
- "type": "int32",
|
||||
- "facet": False,
|
||||
- "index": True,
|
||||
- "optional": False,
|
||||
- "locale": "",
|
||||
- "sort": False,
|
||||
- "infix": False,
|
||||
- "stem": False,
|
||||
- "stem_dictionary": "",
|
||||
- "truncate_len": 100,
|
||||
- "store": True,
|
||||
- },
|
||||
+ expected = expected_collection_schema(
|
||||
+ default_sorting_field="",
|
||||
+ fields=[
|
||||
+ expected_collection_field("company_name", "string", sort=False),
|
||||
+ expected_collection_field("num_employees", "int32", sort=False),
|
||||
],
|
||||
- "name": "companies",
|
||||
- "num_documents": 0,
|
||||
- "symbols_to_index": [],
|
||||
- "token_separators": [],
|
||||
- "synonym_sets": [],
|
||||
- "curation_sets": [],
|
||||
- }
|
||||
+ name="companies",
|
||||
+ )
|
||||
|
||||
response = await actual_async_collections.create(
|
||||
{
|
||||
@@ -307,46 +267,14 @@ async def test_actual_retrieve_async(
|
||||
response = await actual_async_collections.retrieve()
|
||||
|
||||
expected: typing.List[CollectionSchema] = [
|
||||
- {
|
||||
- "default_sorting_field": "num_employees",
|
||||
- "enable_nested_fields": False,
|
||||
- "fields": [
|
||||
- {
|
||||
- "name": "company_name",
|
||||
- "type": "string",
|
||||
- "facet": False,
|
||||
- "index": True,
|
||||
- "optional": False,
|
||||
- "locale": "",
|
||||
- "sort": False,
|
||||
- "infix": False,
|
||||
- "stem": False,
|
||||
- "stem_dictionary": "",
|
||||
- "truncate_len": 100,
|
||||
- "store": True,
|
||||
- },
|
||||
- {
|
||||
- "name": "num_employees",
|
||||
- "type": "int32",
|
||||
- "facet": False,
|
||||
- "index": True,
|
||||
- "optional": False,
|
||||
- "locale": "",
|
||||
- "sort": True,
|
||||
- "infix": False,
|
||||
- "stem": False,
|
||||
- "stem_dictionary": "",
|
||||
- "truncate_len": 100,
|
||||
- "store": True,
|
||||
- },
|
||||
+ expected_collection_schema(
|
||||
+ default_sorting_field="num_employees",
|
||||
+ fields=[
|
||||
+ expected_collection_field("company_name", "string", sort=False),
|
||||
+ expected_collection_field("num_employees", "int32", sort=True),
|
||||
],
|
||||
- "name": "companies",
|
||||
- "num_documents": 0,
|
||||
- "symbols_to_index": [],
|
||||
- "token_separators": [],
|
||||
- "synonym_sets": [],
|
||||
- "curation_sets": [],
|
||||
- },
|
||||
+ name="companies",
|
||||
+ ),
|
||||
]
|
||||
|
||||
response[0].pop("created_at")
|
||||
--
|
||||
2.53.0
|
||||
|
||||
@@ -0,0 +1,194 @@
|
||||
From a5f8ce27a246a1c0a3dd5236cffa0afeaaf166b5 Mon Sep 17 00:00:00 2001
|
||||
From: Fanis Tharropoulos <ftharropoulos@gmail.com>
|
||||
Date: Thu, 7 May 2026 19:26:14 +0300
|
||||
Subject: [PATCH 6/6] feat(curation): add types for `stem` and `synonyms` for
|
||||
Typesense v30.2
|
||||
|
||||
---
|
||||
src/typesense/types/curation_set.py | 56 ++++++++++++++++++++++++++---
|
||||
tests/curation_set_test.py | 13 ++++++-
|
||||
tests/curation_sets_test.py | 4 +++
|
||||
3 files changed, 67 insertions(+), 6 deletions(-)
|
||||
|
||||
diff --git a/src/typesense/types/curation_set.py b/src/typesense/types/curation_set.py
|
||||
index 6468166..f99a020 100644
|
||||
--- a/src/typesense/types/curation_set.py
|
||||
+++ b/src/typesense/types/curation_set.py
|
||||
@@ -33,15 +33,36 @@ class CurationRuleTagsSchema(typing.TypedDict):
|
||||
tags: typing.List[str]
|
||||
|
||||
|
||||
-class CurationRuleQuerySchema(typing.TypedDict):
|
||||
+class CurationRuleQueryBaseSchema(typing.TypedDict):
|
||||
"""
|
||||
- Schema for a curation rule using query and match.
|
||||
+ Schema for the base of a curation rule using query and match.
|
||||
"""
|
||||
|
||||
query: str
|
||||
match: typing.Literal["exact", "contains"]
|
||||
|
||||
|
||||
+class CurationRuleQueryCreateSchema(CurationRuleQueryBaseSchema):
|
||||
+ """
|
||||
+ Schema for creating a curation rule using query and match.
|
||||
+ """
|
||||
+
|
||||
+ stem: typing.NotRequired[bool]
|
||||
+ synonyms: typing.NotRequired[bool]
|
||||
+
|
||||
+
|
||||
+class CurationRuleQuerySchema(CurationRuleQueryBaseSchema):
|
||||
+ """
|
||||
+ Schema for retrieving a curation rule using query and match.
|
||||
+ """
|
||||
+
|
||||
+ stem: typing.NotRequired[
|
||||
+ bool
|
||||
+ ] # TODO: This is a bug in Typesense server upstream, so until 31.0 is
|
||||
+ # released, this is staying as notrequired.
|
||||
+ synonyms: typing.NotRequired[bool]
|
||||
+
|
||||
+
|
||||
class CurationRuleFilterBySchema(typing.TypedDict):
|
||||
"""
|
||||
Schema for a curation rule using filter_by.
|
||||
@@ -85,20 +106,45 @@ class CurationItemSchema(typing.TypedDict):
|
||||
metadata: typing.NotRequired[typing.Dict[str, typing.Any]]
|
||||
|
||||
|
||||
+class CurationItemUpsertSchema(typing.TypedDict):
|
||||
+ """
|
||||
+ Schema for creating or updating a single curation item.
|
||||
+ """
|
||||
+
|
||||
+ id: str
|
||||
+ rule: typing.Union[
|
||||
+ CurationRuleTagsSchema,
|
||||
+ CurationRuleQueryCreateSchema,
|
||||
+ CurationRuleFilterBySchema,
|
||||
+ ]
|
||||
+ includes: typing.NotRequired[typing.List[CurationIncludeSchema]]
|
||||
+ excludes: typing.NotRequired[typing.List[CurationExcludeSchema]]
|
||||
+ filter_by: typing.NotRequired[str]
|
||||
+ sort_by: typing.NotRequired[str]
|
||||
+ replace_query: typing.NotRequired[str]
|
||||
+ remove_matched_tokens: typing.NotRequired[bool]
|
||||
+ filter_curated_hits: typing.NotRequired[bool]
|
||||
+ stop_processing: typing.NotRequired[bool]
|
||||
+ effective_from_ts: typing.NotRequired[int]
|
||||
+ effective_to_ts: typing.NotRequired[int]
|
||||
+ metadata: typing.NotRequired[typing.Dict[str, typing.Any]]
|
||||
+
|
||||
+
|
||||
class CurationSetUpsertSchema(typing.TypedDict):
|
||||
"""
|
||||
Payload schema to create or replace a curation set.
|
||||
"""
|
||||
|
||||
- items: typing.List[CurationItemSchema]
|
||||
+ items: typing.List[CurationItemUpsertSchema]
|
||||
|
||||
|
||||
-class CurationSetSchema(CurationSetUpsertSchema, total=False):
|
||||
+class CurationSetSchema(typing.TypedDict):
|
||||
"""
|
||||
Response schema for a curation set.
|
||||
"""
|
||||
|
||||
- name: typing.NotRequired[str]
|
||||
+ items: typing.List[CurationItemSchema]
|
||||
+ name: str
|
||||
|
||||
|
||||
class CurationSetsListEntrySchema(typing.TypedDict):
|
||||
diff --git a/tests/curation_set_test.py b/tests/curation_set_test.py
|
||||
index a75196a..fe07278 100644
|
||||
--- a/tests/curation_set_test.py
|
||||
+++ b/tests/curation_set_test.py
|
||||
@@ -1,6 +1,5 @@
|
||||
"""Tests for the CurationSet class including items APIs."""
|
||||
|
||||
-
|
||||
import pytest
|
||||
|
||||
from tests.utils.version import is_v30_or_above
|
||||
@@ -62,6 +61,8 @@ def test_actual_retrieve(
|
||||
"rule": {
|
||||
"match": "contains",
|
||||
"query": "shoe",
|
||||
+ "stem": False,
|
||||
+ "synonyms": False,
|
||||
},
|
||||
"stop_processing": True,
|
||||
},
|
||||
@@ -108,6 +109,8 @@ def test_actual_list_items(
|
||||
"rule": {
|
||||
"match": "contains",
|
||||
"query": "shoe",
|
||||
+ "stem": False,
|
||||
+ "synonyms": False,
|
||||
},
|
||||
"stop_processing": True,
|
||||
},
|
||||
@@ -140,6 +143,8 @@ def test_actual_get_item(
|
||||
"rule": {
|
||||
"match": "contains",
|
||||
"query": "shoe",
|
||||
+ "stem": False,
|
||||
+ "synonyms": False,
|
||||
},
|
||||
"stop_processing": True,
|
||||
}
|
||||
@@ -218,6 +223,8 @@ async def test_actual_retrieve_async(
|
||||
"rule": {
|
||||
"match": "contains",
|
||||
"query": "shoe",
|
||||
+ "stem": False,
|
||||
+ "synonyms": False,
|
||||
},
|
||||
"stop_processing": True,
|
||||
},
|
||||
@@ -263,6 +270,8 @@ async def test_actual_list_items_async(
|
||||
"rule": {
|
||||
"match": "contains",
|
||||
"query": "shoe",
|
||||
+ "stem": False,
|
||||
+ "synonyms": False,
|
||||
},
|
||||
"stop_processing": True,
|
||||
},
|
||||
@@ -295,6 +304,8 @@ async def test_actual_get_item_async(
|
||||
"rule": {
|
||||
"match": "contains",
|
||||
"query": "shoe",
|
||||
+ "stem": False,
|
||||
+ "synonyms": False,
|
||||
},
|
||||
"stop_processing": True,
|
||||
}
|
||||
diff --git a/tests/curation_sets_test.py b/tests/curation_sets_test.py
|
||||
index 0a06a05..e4a635a 100644
|
||||
--- a/tests/curation_sets_test.py
|
||||
+++ b/tests/curation_sets_test.py
|
||||
@@ -87,6 +87,8 @@ def test_actual_upsert(
|
||||
"rule": {
|
||||
"match": "contains",
|
||||
"query": "shoe",
|
||||
+ "stem": False,
|
||||
+ "synonyms": False,
|
||||
},
|
||||
"stop_processing": True,
|
||||
},
|
||||
@@ -150,6 +152,8 @@ async def test_actual_upsert_async(
|
||||
"rule": {
|
||||
"match": "contains",
|
||||
"query": "shoe",
|
||||
+ "stem": False,
|
||||
+ "synonyms": False,
|
||||
},
|
||||
"stop_processing": True,
|
||||
},
|
||||
--
|
||||
2.53.0
|
||||
|
||||
@@ -7,29 +7,38 @@
|
||||
pytestCheckHook,
|
||||
typesense,
|
||||
curl,
|
||||
pytest-mock,
|
||||
requests-mock,
|
||||
python-dotenv,
|
||||
faker,
|
||||
httpx,
|
||||
isort,
|
||||
pytest-asyncio,
|
||||
pytest-httpx,
|
||||
pytest-mock,
|
||||
python-dotenv,
|
||||
requests-mock,
|
||||
respx,
|
||||
}:
|
||||
|
||||
buildPythonPackage rec {
|
||||
buildPythonPackage (finalAttrs: {
|
||||
pname = "typesense";
|
||||
version = "1.1.1";
|
||||
version = "2.0.0";
|
||||
pyproject = true;
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "typesense";
|
||||
repo = "typesense-python";
|
||||
tag = "v${version}";
|
||||
hash = "sha256-vo9DW4kinb00zWW4yX8ibyelQxW3eVabn+oMddPEd18=";
|
||||
tag = "v${finalAttrs.version}";
|
||||
hash = "sha256-GzapEl26FS6yMGeLC54y9ysl0mt9l6ceYHr84E6BqBo=";
|
||||
};
|
||||
|
||||
patches = [
|
||||
# See <https://github.com/typesense/typesense-python/pull/103>.
|
||||
./linux-only-metrics.patch
|
||||
./generated-temp-path.patch
|
||||
# See <https://github.com/typesense/typesense-python/pull/132>.
|
||||
# See <https://github.com/typesense/typesense-python/pull/133>.
|
||||
./0001-linux-only-metrics.patch
|
||||
./0002-generated-temp-path.patch
|
||||
./0003-tests-fix-endpoint-path.patch
|
||||
./0004-tests-fix-rule_id.patch
|
||||
./0005-test-gate-v30-collection-schema-expectations.patch
|
||||
./0006-feat-curation-add-types-for-stem-and-synonyms-for-Ty.patch
|
||||
];
|
||||
|
||||
build-system = [ setuptools ];
|
||||
@@ -40,31 +49,47 @@ buildPythonPackage rec {
|
||||
pytestCheckHook
|
||||
typesense
|
||||
curl
|
||||
pytest-mock
|
||||
requests-mock
|
||||
python-dotenv
|
||||
faker
|
||||
httpx
|
||||
isort
|
||||
pytest-asyncio
|
||||
pytest-httpx
|
||||
pytest-mock
|
||||
python-dotenv
|
||||
requests-mock
|
||||
respx
|
||||
];
|
||||
disabledTestMarks = [ "open_ai" ];
|
||||
disabledTests = [ "import_typing_extensions" ];
|
||||
disabledTests = [
|
||||
"import_typing_extensions"
|
||||
# tests/operations_test.py::test_snapshot_async fails when tests are run
|
||||
# in parallel due to writing to the shared /tmp directory on macOS
|
||||
"test_snapshot_async"
|
||||
];
|
||||
|
||||
__darwinAllowLocalNetworking = true;
|
||||
|
||||
# For darwin, the nix sandbox doesn't isolate loopback interfaces like linux does.
|
||||
# So nixpkgs-review builds of python3.x will collide on the hardcoded port 8108.
|
||||
# So for tests patch it to use random port.
|
||||
preCheck = ''
|
||||
export TYPESENSE_PORT=$(( 10000 + $$ % 30000 ))
|
||||
export PEERING_PORT=$(( TYPESENSE_PORT - 1 ))
|
||||
find tests -type f -exec sed -i "s/8108/$TYPESENSE_PORT/g" {} +
|
||||
|
||||
TYPESENSE_API_KEY="xyz" \
|
||||
TYPESENSE_DATA_DIR="$(mktemp -d)" \
|
||||
typesense-server &
|
||||
typesense-server --api-port=$TYPESENSE_PORT --peering-port=$PEERING_PORT &
|
||||
|
||||
typesense_pid=$!
|
||||
|
||||
# Ensure typesense-server is killed even if tests fail
|
||||
trap "kill $typesense_pid" EXIT
|
||||
|
||||
# Wait for typesense to finish starting.
|
||||
timeout 20 bash -c '
|
||||
while ! curl -s --fail localhost:8108/health; do sleep 1; done
|
||||
' || false
|
||||
'';
|
||||
postCheck = ''
|
||||
kill $typesense_pid
|
||||
timeout 20 bash -c "
|
||||
while ! curl -s --fail localhost:$TYPESENSE_PORT/health; do sleep 1; done
|
||||
" || false
|
||||
'';
|
||||
|
||||
pythonImportsCheck = [ "typesense" ];
|
||||
@@ -74,5 +99,7 @@ buildPythonPackage rec {
|
||||
homepage = "https://github.com/typesense/typesense-python";
|
||||
license = lib.licenses.asl20;
|
||||
teams = [ lib.teams.ngi ];
|
||||
# on x86_64-darwin the typesense server doesn't start
|
||||
badPlatforms = [ "x86_64-darwin" ];
|
||||
};
|
||||
}
|
||||
})
|
||||
|
||||
@@ -1,48 +0,0 @@
|
||||
From 9f0024ae3a0377d15788256c72af7a692d250afc Mon Sep 17 00:00:00 2001
|
||||
From: dotlambda <github@dotlambda.de>
|
||||
Date: Thu, 23 Oct 2025 13:40:33 -0700
|
||||
Subject: [PATCH] test(metrics): some metrics only exists on Linux
|
||||
|
||||
---
|
||||
tests/metrics_test.py | 12 ++++++++----
|
||||
1 file changed, 8 insertions(+), 4 deletions(-)
|
||||
|
||||
diff --git a/tests/metrics_test.py b/tests/metrics_test.py
|
||||
index 1e1ea47..fecf3c0 100644
|
||||
--- a/tests/metrics_test.py
|
||||
+++ b/tests/metrics_test.py
|
||||
@@ -2,6 +2,8 @@
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
+import platform
|
||||
+
|
||||
from typesense.metrics import Metrics
|
||||
|
||||
|
||||
@@ -9,13 +11,15 @@ def test_actual_retrieve(actual_metrics: Metrics) -> None:
|
||||
"""Test that the Debug object can retrieve a debug on Typesense server and verify response structure."""
|
||||
response = actual_metrics.retrieve()
|
||||
|
||||
- assert "system_cpu_active_percentage" in response
|
||||
+ if platform.system() == "Linux":
|
||||
+ assert "system_cpu_active_percentage" in response
|
||||
+ assert "system_network_received_bytes" in response
|
||||
+ assert "system_network_sent_bytes" in response
|
||||
+
|
||||
assert "system_disk_total_bytes" in response
|
||||
assert "system_disk_used_bytes" in response
|
||||
assert "system_memory_total_bytes" in response
|
||||
assert "system_memory_used_bytes" in response
|
||||
- assert "system_network_received_bytes" in response
|
||||
- assert "system_network_sent_bytes" in response
|
||||
assert "typesense_memory_active_bytes" in response
|
||||
assert "typesense_memory_allocated_bytes" in response
|
||||
assert "typesense_memory_fragmentation_ratio" in response
|
||||
@@ -23,4 +27,4 @@ def test_actual_retrieve(actual_metrics: Metrics) -> None:
|
||||
assert "typesense_memory_mapped_bytes" in response
|
||||
assert "typesense_memory_metadata_bytes" in response
|
||||
assert "typesense_memory_resident_bytes" in response
|
||||
- assert "typesense_memory_retained_bytes" in response
|
||||
\ No newline at end of file
|
||||
+ assert "typesense_memory_retained_bytes" in response
|
||||
@@ -3,10 +3,20 @@
|
||||
pkg-config,
|
||||
ddcutil,
|
||||
qtwayland,
|
||||
fetchpatch,
|
||||
}:
|
||||
mkKdeDerivation {
|
||||
pname = "powerdevil";
|
||||
|
||||
patches = [
|
||||
# backport fix for spurious low battery notifications
|
||||
# FIXME: remove in 6.7.6
|
||||
(fetchpatch {
|
||||
url = "https://invent.kde.org/plasma/powerdevil/-/commit/54f8a4a848fa02d06fefc5543f35224eef73670c.diff";
|
||||
hash = "sha256-YWUyOhFRUwzi+ISM2+TGctNDSUYc851U/b5hKkTmWXY=";
|
||||
})
|
||||
];
|
||||
|
||||
extraNativeBuildInputs = [ pkg-config ];
|
||||
extraBuildInputs = [
|
||||
ddcutil
|
||||
|
||||
Reference in New Issue
Block a user