Merge remote-tracking branch 'origin/staging-next' into staging

This commit is contained in:
K900
2025-06-17 21:34:30 +03:00
451 changed files with 6107 additions and 10947 deletions
+62 -15
View File
@@ -7,7 +7,7 @@ name: "Label PR"
on:
schedule:
- cron: '37 * * * *'
- cron: '07,17,27,37,47,57 * * * *'
workflow_call:
workflow_dispatch:
inputs:
@@ -36,10 +36,15 @@ jobs:
labels:
name: label-pr
runs-on: ubuntu-24.04-arm
if: "!contains(github.event.pull_request.title, '[skip treewide]')"
if: github.event_name != 'schedule' || github.repository_owner == 'NixOS'
steps:
- name: Install dependencies
run: npm install @actions/artifact
run: npm install @actions/artifact bottleneck
- name: Log current API rate limits
env:
GH_TOKEN: ${{ github.token }}
run: gh api /rate_limit | jq
- name: Labels from API data and Eval results
uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea # v7.0.1
@@ -47,12 +52,41 @@ jobs:
UPDATED_WITHIN: ${{ inputs.updatedWithin }}
with:
script: |
const Bottleneck = require('bottleneck')
const path = require('node:path')
const { DefaultArtifactClient } = require('@actions/artifact')
const { readFile } = require('node:fs/promises')
const artifactClient = new DefaultArtifactClient()
const stats = {
prs: 0,
requests: 0,
artifacts: 0
}
// Rate-Limiting and Throttling, see for details:
// https://github.com/octokit/octokit.js/issues/1069#throttling
// https://docs.github.com/en/rest/using-the-rest-api/best-practices-for-using-the-rest-api
const allLimits = new Bottleneck({
// Avoid concurrent requests
maxConcurrent: 1,
// Hourly limit is at 5000, but other jobs need some, too!
// https://docs.github.com/en/rest/using-the-rest-api/rate-limits-for-the-rest-api
reservoir: 1000,
reservoirRefreshAmount: 1000,
reservoirRefreshInterval: 60 * 60 * 1000
})
// Pause between mutative requests
const writeLimits = new Bottleneck({ minTime: 1000 }).chain(allLimits)
github.hook.wrap('request', async (request, options) => {
stats.requests++
if (['POST', 'PUT', 'PATCH', 'DELETE'].includes(options.method))
return writeLimits.schedule(request.bind(null, options))
else
return allLimits.schedule(request.bind(null, options))
})
if (process.env.UPDATED_WITHIN && !/^\d+$/.test(process.env.UPDATED_WITHIN))
throw new Error('Please enter "updated within" as integer in hours.')
@@ -90,7 +124,7 @@ jobs:
base: context.payload.pull_request.base.ref
}
await github.paginate(
const prs = await github.paginate(
github.rest.pulls.list,
{
...context.repo,
@@ -99,12 +133,17 @@ jobs:
direction: 'desc',
...prEventCondition
},
async (response, done) => (await Promise.allSettled(response.data.map(async (pull_request) => {
(response, done) => response.data.map(async (pull_request) => {
try {
const log = (k,v) => core.info(`PR #${pull_request.number} - ${k}: ${v}`)
const log = (k,v,skip) => {
core.info(`PR #${pull_request.number} - ${k}: ${v}` + (skip ? ' (skipped)' : ''))
return skip
}
log('Last updated at', pull_request.updated_at)
if (new Date(pull_request.updated_at) < cutoff) return done()
if (log('Last updated at', pull_request.updated_at, new Date(pull_request.updated_at) < cutoff))
return done()
stats.prs++
log('URL', pull_request.html_url)
const run_id = (await github.rest.actions.listWorkflowRuns({
...context.repo,
@@ -118,8 +157,8 @@ jobs:
// Newer PRs might not have run Eval to completion, yet. We can skip them, because this
// job will be run as part of that Eval run anyway.
log('Last eval run', run_id)
if (!run_id) return;
if (log('Last eval run', run_id ?? '<pending>', !run_id))
return;
const artifact = (await github.rest.actions.listWorkflowRunArtifacts({
...context.repo,
@@ -129,8 +168,12 @@ jobs:
// Instead of checking the boolean artifact.expired, we will give us a minute to
// actually download the artifact in the next step and avoid that race condition.
log('Artifact expires at', artifact.expires_at)
if (new Date(artifact.expires_at) < new Date(new Date().getTime() + 60 * 1000)) return;
// Older PRs, where the workflow run was already eval.yml, but the artifact was not
// called "comparison", yet, will be skipped as well.
const expired = new Date(artifact?.expires_at ?? 0) < new Date(new Date().getTime() + 60 * 1000)
if (log('Artifact expires at', artifact?.expires_at ?? '<not found>', expired))
return;
stats.artifacts++
await artifactClient.downloadArtifact(artifact.id, {
findBy: {
@@ -163,7 +206,7 @@ jobs:
const maintainers = new Set(Object.keys(
JSON.parse(await readFile(`${pull_request.number}/maintainers.json`, 'utf-8'))
))
).map(m => Number.parseInt(m, 10)))
// And the labels that should be there
const after = JSON.parse(await readFile(`${pull_request.number}/changed-paths.json`, 'utf-8')).labels
@@ -192,10 +235,14 @@ jobs:
} catch (cause) {
throw new Error(`Labeling PR #${pull_request.number} failed.`, { cause })
}
})))
})
);
(await Promise.allSettled(prs.flat()))
.filter(({ status }) => status == 'rejected')
.map(({ reason }) => core.setFailed(`${reason.message}\n${reason.cause.stack}`))
)
core.notice(`Processed ${stats.prs} PRs, made ${stats.requests + stats.artifacts} API requests and downloaded ${stats.artifacts} artifacts.`)
- uses: actions/labeler@8558fd74291d67161a8a78ce36a881fa63b766a9 # v5.0.0
name: Labels from touched files
+2 -2
View File
@@ -84,7 +84,7 @@ zsh).
}
```
The path may also be a fifo or named fd (such as produced by `<(cmd)`), in which
The path may also be the result of process substitution (e.g. `<(cmd)`), in which
case the shell and name must be provided (see below).
If the destination shell completion file is not actually present or consists of
@@ -100,7 +100,7 @@ failure. To prevent this, guard the completion generation commands.
{
nativeBuildInputs = [ installShellFiles ];
postInstall = lib.optionalString (stdenv.buildPlatform.canExecute stdenv.hostPlatform) ''
# using named fd
# using process substitution
installShellCompletion --cmd foobar \
--bash <($out/bin/foobar --bash-completion) \
--fish <($out/bin/foobar --fish-completion) \
@@ -879,399 +879,6 @@ stdenv.mkDerivation (finalAttrs: {
})
```
### buildDenoPackage {#javascript-buildDenoPackage}
`buildDenoPackage` allows you to package [Deno](https://deno.com/) projects in Nixpkgs without the use of an auto-generated dependencies file (as used in [node2nix](#javascript-node2nix)).
It works by utilizing Deno's cache functionality -- creating a reproducible cache that contains the dependencies of a project, and pointing Deno to it.
#### buildDenoDeps {#javascript-buildDenoPackage-buildDenoDeps}
For every `buildDenoPackage`, first, a [fixed output derivation](https://nix.dev/manual/nix/2.18/language/advanced-attributes.html#adv-attr-outputHash) is
created with all the dependencies mentioned in the `deno.lock`.
This works as follows:
1. They are installed using `deno install`.
1. All non-reproducible data is pruned.
1. The directories `.deno`, `node_modules` and `vendor` are copied to `$out`.
1. The output of the FOD is checked against the `denoDepsHash`.
1. The output is copied into the build of `buildDenoPackage`, which is not an FOD.
1. The dependencies are installed again using `deno install`, this time from the local cache only.
The `buildDenoDeps` derivation is in `passthru`, so it can be accessed from a `buildDenoPackage` derivation with `.denoDeps`
Related options:
*`denoDepsHash`* (String)
: The output hash of the `buildDenoDeps` fixed output derivation.
*`denoInstallFlags`* (Array of strings; optional)
: The Flags passed to `deno install`.
: _Default:_ `[ "--allow-scripts" "--frozen" "--cached-only" ]` for `buildDenoPackage`
: _Default:_ `[ "--allow-scripts" "--frozen" ]` for `buildDenoDeps` (`"--cached-only"` is filtered out)
::: {.tip}
If you receive errors like these:
```
error: The lockfile is out of date. Run `deno install --frozen=false`, or rerun with `--frozen=false` to update it.
```
or
```
error: Import '<url>' failed.
0: error sending request for url (<url>): client error (Connect): dns error: failed to lookup address information: Temporary failure in name resolution: failed to lookup address information:Temporary failure in name resolution
1: client error (Connect)
2: dns error: failed to lookup address information: Temporary failure in name resolution
3: failed to lookup address information: Temporary failure in name resolution
at file:///build/source/src/lib/helpers/verifyRequest.ts:2:21
build for <your-package> failed in buildPhase with exit code 1
```
or
```
error: Specifier not found in cache: "<url>", --cached-only is specified.
ERROR: deno failed to install dependencies
```
This can happen due to the `deno install` command deducing different packages than what the actual package needs.
To fix this, add the entrypoint to the install flags:
```nix
{ buildDenoPackage, nix-gitignore }:
buildDenoPackage {
pname = "myPackage";
version = "0.1.0";
denoDepsHash = "sha256-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA";
src = nix-gitignore.gitignoreSource [ ] ./.;
binaryEntrypointPath = "main.ts";
denoInstallFlags = [
"--allow-scripts"
"--frozen"
"--cached-only"
"--entrypoint"
"<path/to/entrypoint/script>"
];
}
```
:::
#### Private registries {#javascript-buildDenoPackage-private-registries}
There are currently 2 options, which enable the use of private registries in a `buildDenoPackage` derivation.
*`denoDepsImpureEnvVars`* (Array of strings; optional)
: Names of impure environment variables passed to the `buildDenoDeps` derivation. They are forwarded to `deno install`.
: _Example:_ `[ "NPM_TOKEN" ]`
: It can be used to set tokens for private NPM registries (in a `.npmrc` file).
: In a single-user installation of Nix, you can put the variables into the environment, when running the nix build.
: In multi-user installations of Nix, it's necessary to set the environment variables in the nix-daemon, probably with systemd.
:::{.example}
##### configure nix-daemon {#javascript-buildDenoPackage-private-registries-daemon-example}
In NixOS:
```nix
# configuration.nix
{
config,
lib,
pkgs,
...
}:
{
systemd.services.nix-daemon.environment.NPM_TOKEN = "<token>";
}
```
In other Linux distributions use
```
$ sudo systemctl edit nix-daemon
$ sudo systemctl cat nix-daemon
$ sudo systemctl restart nix-daemon
```
:::
*`denoDepsInjectedEnvVars`* (Attrset; optional)
: Environment variables as key value pairs. They are forwarded to `deno install`.
: _Example:_ `{ "NPM_TOKEN" = "<token>"; }`
: It can be used to set tokens for private NPM registries (in a `.npmrc` file).
You could pass these tokens from the Nix CLI with `--arg`,
however this can hurt the reproducibility of your builds and such an injected
token will also need to be injected in every build that depends on this build.
:::{.example}
##### example `.npmrc` {#javascript-buildDenoPackage-private-registries-npmrc-example}
```ini
@<scope>:registry=https://<domain>/<path to private registry>
//<domain>/<path to private registry>:_authToken=${NPM_TOKEN}
```
:::
::: {.caution}
Hardcoding a token into your NixOS configuration or some other nix build, will as a consequence write that token into `/nix/store`, which is considered world readable.
:::
::: {.note}
Neither approach is ideal. For `buildNpmPackage`, there exists a third
option called `sourceOverrides`, which allows the user to inject Nix packages into
the output `node_modules` folder.
Since a Nix build implicitly uses the SSH keys of the machine,
this offers a third option to access private packages.
But this creates the requirement, that the imported package is packaged with nix first,
and that the source code can be retrieved with SSH.
This is possible for Deno, too, albeit it not
completely analogous to `buildNpmPackage`'s solution.
However, it has not been implemented yet.
:::
#### Compile to binary {#javascript-buildDenoPackage-compile-to-binary}
It's possible to compile a Deno project to a single binary using `deno compile`.
The binary will be named like the `.name` property in `deno.json`, if available,
or the `name` attribute of the derivation.
:::{.caution}
When using packages with a `npm:` specifier, the resulting binary will not be reproducible.
See [this issue](https://github.com/denoland/deno/issues/29619) for more information.
:::
Related options:
*`hostPlatform`* (String; optional)
: The [host platform](#ssec-cross-platform-parameters) the binary is built for.
: _Default:_ `builtins.currentSystem`.
: _Supported values:_
- `"x86_64-darwin"`
- `"aarch64-darwin"`
- `"x86_64-linux"`
- `"aarch64-linux"`
*`denoCompileFlags`* (Array of string; optional)
: Flags passed to `deno compile [denoTaskFlags] ${binaryEntrypointPath} [extraCompileFlags]`.
*`extraCompileFlags`* (Array of string; optional)
: Flags passed to `deno compile [denoTaskFlags] ${binaryEntrypointPath} [extraCompileFlags]`.
*`binaryEntrypointPath`* (String or null; optional)
: If not `null`, a binary is created using the specified path as the entry point.
The binary is copied to `$out/bin` in the `installPhase`.
: _Default:_ `null`
: It's prefixed by `denoWorkspacePath`.
*`denortPackage`* (Derivation; optional)
: The package used as the Deno runtime, which is bundled with the JavaScript code to create the binary.
: _Default:_ `pkgs.denort`
: Don't use `pkgs.deno` for this, since that is the full Deno CLI, with all the development tooling.
: If you're cross compiling, this needs to be the `denort` of the `hostPlatform`.
::: {.note}
The binary will be dynamically linked and not executable on NixOS without [nix-ld](https://github.com/nix-community/nix-ld)
or [other methods](https://unix.stackexchange.com/questions/522822/different-methods-to-run-a-non-nixos-executable-on-nixos).
```nix
# configuration.nix
{
config,
lib,
pkgs,
...
}:
{
programs.nix-ld.enable = true;
programs.nix-ld.libraries = with pkgs; [
glibc
gcc-unwrapped
];
}
```
:::
:::{.example}
##### example binary build {#javascript-buildDenoPackage-compile-to-binary-example}
```nix
{ buildDenoPackage, nix-gitignore }:
buildDenoPackage {
pname = "myPackage";
version = "0.1.0";
denoDepsHash = "sha256-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA";
src = nix-gitignore.gitignoreSource [ ] ./.;
binaryEntrypointPath = "main.ts";
}
```
:::
#### Create artifacts in the build {#javascript-buildDenoPackage-artifacts-in-build}
Instead of compiling to a binary, `deno task` can be executed inside the build
to produce some artifact, which can then be copied out in the `installPhase`.
Related options:
*`denoTaskScript`* (String; optional)
: The task in `deno.json` that's executed with `deno task`.
: _Default:_ `"build"`
*`denoTaskFlags`* (Array of strings; optional)
: The flags passed to `deno task [denoTaskFlags] ${denoTaskScript} [extraTaskFlags]`.
*`extraTaskFlags`* (Array of strings; optional)
: The flags passed to `deno task [denoTaskFlags] ${denoTaskScript} [extraTaskFlags]`.
*`denoTaskPrefix`* (String; optional)
: An unquoted string injected before `deno task`.
*`denoTaskSuffix`* (String; optional)
: An unquoted string injected after `deno task` and all its flags. For example to pipe stdout to a file.
:::{.example}
##### example artifact build {#javascript-buildDenoPackage-artifacts-in-build-example}
`deno.json`
```json
{
"tasks": {
"build": "deno run --allow-all main.ts"
}
}
```
```nix
{ buildDenoPackage, nix-gitignore }:
buildDenoPackage {
pname = "myPackage";
version = "0.1.0";
denoDepsHash = "sha256-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA";
src = nix-gitignore.gitignoreSource [ ] ./.;
denoTaskSuffix = ">out.txt";
installPhase = ''
cp ./out.txt $out
'';
}
```
:::
#### Workspaces {#javascript-buildDenoPackage-workspaces}
Deno's workspaces are supported.
To make them work, the whole project needs to be added as source, since the `deno.lock`
is always in the root of the project and contains all dependencies.
This means a build with only the required dependencies of a workspace is not possible.
Also, the `denoDepsHash` for all workspaces is the same, since they
all share the same dependencies.
When [running a task inside the build](#javascript-buildDenoPackage-artifacts-in-build),
`denoWorkspacePath` can be used to let the task run inside a workspace.
When [compiling to a binary](#javascript-buildDenoPackage-compile-to-binary),
`binaryEntrypointPath` is prefixed by `denoWorkspacePath`.
Related options:
*`denoWorkspacePath`* (String; optional)
: The path to a workspace.
:::{.example}
##### example workspaces {#javascript-buildDenoPackage-workspaces-example}
```nix
{ buildDenoPackage, nix-gitignore }:
rec {
sub1 = buildDenoPackage {
pname = "sub1";
version = "0.1.0";
denoDepsHash = "sha256-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=";
src = nix-gitignore.gitignoreSource [ ] ./.;
denoWorkspacePath = "./sub1";
denoTaskFlags = [
"--text"
"sub1"
];
denoTaskSuffix = ">out.txt";
installPhase = ''
cp out.txt $out
'';
};
sub2 = buildDenoPackage {
# Note that we are reusing denoDeps and src,
# since they must be the same for both workspaces.
inherit (sub1) denoDeps src;
pname = "sub2";
version = "0.1.0";
denoWorkspacePath = "./sub2";
binaryEntrypointPath = "./main.ts";
};
}
```
:::
#### Other Options {#javascript-buildDenoPackage-other-options}
*`denoDir`* (String; optional)
: `DENO_DIR` will be set to this value for all `deno` commands.
*`denoFlags`* (Array of string; optional)
: The flags passed to all `deno` commands.
*`denoPackage`* (Derivation; optional)
: The Deno CLI used for all `deno` commands inside the build.
: _Default:_ `pkgs.deno`
## Outside Nixpkgs {#javascript-outside-nixpkgs}
There are some other tools available, which are written in the Nix language.
-36
View File
@@ -3390,42 +3390,6 @@
"javascript-nix-npm-buildpackage-pitfalls": [
"index.html#javascript-nix-npm-buildpackage-pitfalls"
],
"javascript-buildDenoPackage-workspaces-example": [
"index.html#javascript-buildDenoPackage-workspaces-example"
],
"javascript-buildDenoPackage-private-registries": [
"index.html#javascript-buildDenoPackage-private-registries"
],
"javascript-buildDenoPackage-buildDenoDeps": [
"index.html#javascript-buildDenoPackage-buildDenoDeps"
],
"javascript-buildDenoPackage-artifacts-in-build": [
"index.html#javascript-buildDenoPackage-artifacts-in-build"
],
"javascript-buildDenoPackage-artifacts-in-build-example": [
"index.html#javascript-buildDenoPackage-artifacts-in-build-example"
],
"javascript-buildDenoPackage-private-registries-daemon-example": [
"index.html#javascript-buildDenoPackage-private-registries-daemon-example"
],
"javascript-buildDenoPackage-private-registries-npmrc-example": [
"index.html#javascript-buildDenoPackage-private-registries-npmrc-example"
],
"javascript-buildDenoPackage-compile-to-binary-example": [
"index.html#javascript-buildDenoPackage-compile-to-binary-example"
],
"javascript-buildDenoPackage-workspaces": [
"index.html#javascript-buildDenoPackage-workspaces"
],
"javascript-buildDenoPackage": [
"index.html#javascript-buildDenoPackage"
],
"javascript-buildDenoPackage-other-options": [
"index.html#javascript-buildDenoPackage-other-options"
],
"javascript-buildDenoPackage-compile-to-binary": [
"index.html#javascript-buildDenoPackage-compile-to-binary"
],
"language-julia": [
"index.html#language-julia"
],
-2
View File
@@ -551,8 +551,6 @@
- `ddclient` was updated from 3.11.2 to 4.0.0 [Release notes](https://github.com/ddclient/ddclient/releases/tag/v4.0.0)
- `buildDenoPackage` was added [see docs](https://github.com/NixOS/nixpkgs/blob/master/doc/languages-frameworks/javascript.section.md#avascript-buildDenoPackage) for more details
## Nixpkgs Library {#sec-nixpkgs-release-25.05-lib}
### Breaking changes {#sec-nixpkgs-release-25.05-lib-breaking}
+1
View File
@@ -18,6 +18,7 @@
- `base16-builder` node package has been removed due to lack of upstream maintenance.
- `gentium` package now provides `Gentium-*.ttf` files, and not `GentiumPlus-*.ttf` files like before. The font identifiers `Gentium Plus*` are available in the `gentium-plus` package, and if you want to use the more recently updated package `gentium` [by sil](https://software.sil.org/gentium/), you should update your configuration files to use the `Gentium` font identifier.
- `space-orbit` package has been removed due to lack of upstream maintenance. Debian upstream stopped tracking it in 2011.
- `command-not-found` package is now disabled by default; it works only for nix-channels based systems, and requires setup for it to work.
- `gnome-keyring` no longer ships with an SSH agent anymore because it has been deprecated upstream. You should use `gcr_4` instead, which provides the same features. More information on why this was done can be found on [the relevant GCR upstream PR](https://gitlab.gnome.org/GNOME/gcr/-/merge_requests/67).
+25 -6
View File
@@ -1648,6 +1648,12 @@
github = "angaz";
githubId = 10219618;
};
angelodlfrtr = {
name = "Angelo Delefortrie";
email = "angelo.delefortrie@gmail.com";
github = "angelodlfrtr";
githubId = 5405598;
};
angristan = {
email = "angristan@pm.me";
github = "angristan";
@@ -3432,12 +3438,6 @@
githubId = 75451918;
name = "Charlie Root";
};
bluescreen303 = {
email = "mathijs@bluescreen303.nl";
github = "bluescreen303";
githubId = 16330;
name = "Mathijs Kwik";
};
blusk = {
email = "bluskript@gmail.com";
github = "bluskript";
@@ -11632,6 +11632,13 @@
githubId = 110620;
name = "Jevin Maltais";
};
jezcope = {
email = "j.cope@erambler.co.uk";
github = "jezcope";
githubId = 457628;
name = "Jez Cope";
keys = [ { fingerprint = "D9DA 3E47 E8BD 377D A317 B3D0 9E42 CE07 1C45 59D1"; } ];
};
jfchevrette = {
email = "jfchevrette@gmail.com";
github = "jfchevrette";
@@ -14288,6 +14295,12 @@
githubId = 75130626;
keys = [ { fingerprint = "80EE AAD8 43F9 3097 24B5 3D7E 27E9 7B91 E63A 7FF8"; } ];
};
link00000000 = {
email = "crandall.logan@gmail.com";
github = "link00000000";
githubId = 9771505;
name = "Logan Crandall";
};
link2xt = {
email = "link2xt@testrun.org";
githubId = 18373967;
@@ -20068,6 +20081,12 @@
githubId = 24578572;
name = "Blake North";
};
powwu = {
name = "powwu";
email = "hello@powwu.sh";
github = "powwu";
githubId = 20643401;
};
poz = {
name = "Jacek Poziemski";
email = "poz@poz.pet";
@@ -62,6 +62,9 @@ OK_MISSING_BY_PACKAGE = {
"krfb": {
"Qt6XkbCommonSupport", # not real
},
"ksystemstats": {
"Libcap", # used to call setcap at build time and nothing else
},
"kuserfeedback": {
"Qt6Svg", # all used for backend console stuff we don't ship
"QmlLint",
@@ -75,6 +78,9 @@ OK_MISSING_BY_PACKAGE = {
"display-info", # newer versions identify as libdisplay-info
"Libcap", # used to call setcap at build time and nothing else
},
"kwin-x11": {
"Libcap", # used to call setcap at build time and nothing else
},
"libksysguard": {
"Libcap", # used to call setcap at build time and nothing else
},
@@ -84,6 +90,12 @@ OK_MISSING_BY_PACKAGE = {
},
"plasma-desktop": {
"scim", # upstream is dead, not packaged in Nixpkgs
"KAccounts6", # dead upstream
"AccountsQt6", # dead upstream
"signon-oauth2plugin", # dead upstream
},
"plasma-dialer": {
"KTactileFeedback", # dead?
},
"poppler-qt6": {
"gobject-introspection-1.0", # we don't actually want to build the GTK variant
@@ -33,10 +33,16 @@ in
enable = lib.mkOption {
type = lib.types.bool;
default = true;
default = false;
description = ''
Whether interactive shells should show which Nix package (if
any) provides a missing command.
Requires nix-channels to be set and downloaded (sudo nix-channels --update.)
See also nix-index and nix-index-database as an alternative for flakes-based systems.
Additionally, having the env var NIX_AUTO_RUN set will automatically run the matching package, and with NIX_AUTO_RUN_INTERACTIVE it will confirm the package before running.
'';
};
@@ -54,47 +60,24 @@ in
config = lib.mkIf cfg.enable {
programs.bash.interactiveShellInit = ''
# This function is called whenever a command is not found.
command_not_found_handle() {
local p='${commandNotFound}/bin/command-not-found'
if [ -x "$p" ] && [ -f '${cfg.dbPath}' ]; then
# Run the helper program.
"$p" "$@"
# Retry the command if we just installed it.
if [ $? = 126 ]; then
"$@"
else
return 127
fi
else
echo "$1: command not found" >&2
return 127
fi
'${commandNotFound}/bin/command-not-found' "$@"
}
'';
programs.zsh.interactiveShellInit = ''
# This function is called whenever a command is not found.
command_not_found_handler() {
local p='${commandNotFound}/bin/command-not-found'
if [ -x "$p" ] && [ -f '${cfg.dbPath}' ]; then
# Run the helper program.
"$p" "$@"
# Retry the command if we just installed it.
if [ $? = 126 ]; then
"$@"
else
return 127
fi
else
# Indicate than there was an error so ZSH falls back to its default handler
echo "$1: command not found" >&2
return 127
fi
'${commandNotFound}/bin/command-not-found' "$@"
}
'';
# NOTE: Fish by itself checks for nixos command-not-found, let's instead makes it explicit.
programs.fish.interactiveShellInit = ''
function fish_command_not_found
"${commandNotFound}/bin/command-not-found" $argv
end
'';
environment.systemPackages = [ commandNotFound ];
};
@@ -10,6 +10,24 @@ my $program = $ARGV[0];
my $dbPath = "@dbPath@";
if (! -e $dbPath) {
print STDERR "$program: command not found\n";
print STDERR "\n";
print STDERR "command-not-found: Missing package database\n";
print STDERR "command-not-found is a tool for searching for missing packages.\n";
print STDERR "No database was found, this likely means the database hasn't been generated yet.\n";
print STDERR "This tool requires nix-channels to generate the database for the `nixos` channel.\n";
print STDERR "\n";
print STDERR "If you are using nix-channels you can run:\n";
print STDERR " sudo nix-channels --update\n";
print STDERR "\n";
print STDERR "If you are using flakes, see nix-index and nix-index-database.\n";
print STDERR "\n";
print STDERR "If you would like to disable this message you can set:\n";
print STDERR " programs.command-not-found.enable = false;\n";
exit 127;
}
my $dbh = DBI->connect("dbi:SQLite:dbname=$dbPath", "", "")
or die "cannot open database `$dbPath'";
$dbh->{RaiseError} = 0;
@@ -21,7 +21,10 @@ To enable PostgreSQL, add the following to your {file}`configuration.nix`:
services.postgresql.package = pkgs.postgresql_15;
}
```
Note that you are required to specify the desired version of PostgreSQL (e.g. `pkgs.postgresql_15`). Since upgrading your PostgreSQL version requires a database dump and reload (see below), NixOS cannot provide a default value for [](#opt-services.postgresql.package) such as the most recent release of PostgreSQL.
The default PostgreSQL version is approximately the latest major version available on the NixOS release matching your [`system.stateVersion`](#opt-system.stateVersion).
This is because PostgreSQL upgrades require a manual migration process (see below).
Hence, upgrades must happen by setting [`services.postgresql.package`](#opt-services.postgresql.package) explicitly.
<!--
After running {command}`nixos-rebuild`, you can verify
@@ -120,8 +120,22 @@ in
enableJIT = mkEnableOption "JIT support";
package = mkPackageOption pkgs "postgresql" {
example = "postgresql_15";
package = mkOption {
type = types.package;
example = literalExpression "pkgs.postgresql_15";
defaultText = literalExpression ''
if versionAtLeast config.system.stateVersion "24.11" then
pkgs.postgresql_16
else if versionAtLeast config.system.stateVersion "23.11" then
pkgs.postgresql_15
else if versionAtLeast config.system.stateVersion "22.05" then
pkgs.postgresql_14
else
pkgs.postgresql_13
'';
description = ''
The package being used by postgresql.
'';
};
finalPackage = mkOption {
@@ -656,6 +670,7 @@ in
See also https://endoflife.date/postgresql
'';
base =
# XXX Don't forget to keep `defaultText` of `services.postgresql.package` up to date!
if versionAtLeast config.system.stateVersion "24.11" then
pkgs.postgresql_16
else if versionAtLeast config.system.stateVersion "23.11" then
@@ -62,9 +62,11 @@ in
packages = (
with pkgs;
[
ayatana-indicator-datetime # Clock
ayatana-indicator-session # Controls for shutting down etc
]
++ (with lomiri; [
lomiri-indicator-datetime # Clock
])
);
};
})
@@ -156,8 +156,10 @@ in
];
optionalPackages =
[
aurorae
plasma-browser-integration
konsole
kwin-x11
(lib.getBin qttools) # Expose qdbus in PATH
ark
elisa
@@ -339,8 +341,35 @@ in
capabilities = "cap_sys_nice+ep";
source = "${lib.getBin pkgs.kdePackages.kwin}/bin/kwin_wayland";
};
ksystemstats_intel_helper = {
owner = "root";
group = "root";
capabilities = "cap_perfmon+ep";
source = "${pkgs.kdePackages.ksystemstats}/libexec/ksystemstats_intel_helper";
};
ksgrd_network_helper = {
owner = "root";
group = "root";
capabilities = "cap_net_raw+ep";
source = "${pkgs.kdePackages.libksysguard}/libexec/ksysguard/ksgrd_network_helper";
};
};
# Upstream recommends allowing set-timezone and set-ntp so that the KCM and
# the automatic timezone logic work without user interruption.
# However, on NixOS NTP cannot be overwritten via dbus, and timezone
# can only be set if `time.timeZone` is set to `null`. So, we only allow
# set-timezone, and we only allow it when the timezone can actually be set.
security.polkit.extraConfig = lib.mkIf (config.time.timeZone != null) ''
polkit.addRule(function(action, subject) {
if (action.id == "org.freedesktop.timedate1.set-timezone" && subject.active) {
return polkit.Result.YES;
}
});
'';
programs.dconf.enable = true;
programs.firefox.nativeMessagingHosts.packages = [ kdePackages.plasma-browser-integration ];
+33 -8
View File
@@ -61,6 +61,27 @@ in
};
default = { };
};
environment = mkOption {
type =
with types;
attrsOf (
nullOr (oneOf [
str
path
package
])
);
description = ''
Extra environment variables to export to the Renovate process
from the systemd unit configuration.
See https://docs.renovatebot.com/config-overview for available environment variables.
'';
example = {
LOG_LEVEL = "debug";
};
default = { };
};
runtimePackages = mkOption {
type = with types; listOf package;
description = "Packages available to renovate.";
@@ -82,14 +103,22 @@ in
description = ''
Renovate's global configuration.
If you want to pass secrets to renovate, please use {option}`services.renovate.credentials` for that.
See https://docs.renovatebot.com/config-overview for available settings.
'';
};
};
config = mkIf cfg.enable {
services.renovate.settings = {
cacheDir = "/var/cache/renovate";
baseDir = "/var/lib/renovate";
services.renovate = {
settings = {
cacheDir = "/var/cache/renovate";
baseDir = "/var/lib/renovate";
};
environment = {
RENOVATE_CONFIG_FILE = generateConfig "renovate-config.json" cfg.settings;
HOME = "/var/lib/renovate";
};
};
systemd.services.renovate = {
@@ -101,6 +130,7 @@ in
config.systemd.package
pkgs.git
] ++ cfg.runtimePackages;
inherit (cfg) environment;
serviceConfig = {
User = "renovate";
@@ -145,11 +175,6 @@ in
)}
exec ${lib.escapeShellArg (lib.getExe cfg.package)}
'';
environment = {
RENOVATE_CONFIG_FILE = generateConfig "renovate-config.json" cfg.settings;
HOME = "/var/lib/renovate";
};
};
};
}
@@ -6,7 +6,6 @@
}:
let
inherit (lib)
boolToString
getExe'
mkEnableOption
mkIf
@@ -28,7 +27,7 @@ in
default = [ ];
description = ''
All listed users will become part of the `firezone-client` group so
they can control the IPC service. This is a convenience option.
they can control the tunnel service. This is a convenience option.
'';
};
@@ -58,8 +57,8 @@ in
# Required for the token store in the gui application
services.gnome.gnome-keyring.enable = true;
systemd.services.firezone-ipc-service = {
description = "GUI IPC service for the Firezone zero-trust access platform";
systemd.services.firezone-tunnel-service = {
description = "GUI tunnel service for the Firezone zero-trust access platform";
after = [ "network.target" ];
wantedBy = [ "multi-user.target" ];
@@ -73,7 +72,7 @@ in
export FIREZONE_ID=$(< client_id)
fi
exec ${getExe' cfg.package "firezone-client-ipc"} run
exec ${getExe' cfg.package "firezone-client-tunnel"} run
'';
environment = {
+1
View File
@@ -42,6 +42,7 @@ in
ayatana-indicator-sound
]
++ (with pkgs.lomiri; [
lomiri-indicator-datetime
lomiri-indicator-network
lomiri-telephony-service
]);
-1
View File
@@ -12,7 +12,6 @@ in
{
name = "mongodb";
meta.maintainers = with pkgs.lib.maintainers; [
bluescreen303
offline
phile314
niklaskorz
+4 -4
View File
@@ -57,7 +57,7 @@
users.users.alice.extraGroups = [ "wheel" ];
users.users.bob.extraGroups = [ "wheel" ];
# Disable sudo for root to ensure sudo isn't called without `--use-remote-sudo`
# Disable sudo for root to ensure sudo isn't called without `--sudo`
security.sudo.extraRules = lib.mkForce [
{
groups = [ "wheel" ];
@@ -170,20 +170,20 @@
# Ensure sudo is disabled for root
target.fail("sudo true")
# This test also ensures that sudo is not called without --use-remote-sudo
# This test also ensures that sudo is not called without --sudo
with subtest("Deploy to root@target"):
deployer.succeed("nixos-rebuild switch -I nixos-config=/root/configuration-1.nix --target-host root@target &>/dev/console")
target_hostname = deployer.succeed("ssh alice@target cat /etc/hostname").rstrip()
assert target_hostname == "config-1-deployed", f"{target_hostname=}"
with subtest("Deploy to alice@target with passwordless sudo"):
deployer.succeed("nixos-rebuild switch -I nixos-config=/root/configuration-2.nix --target-host alice@target --use-remote-sudo &>/dev/console")
deployer.succeed("nixos-rebuild switch -I nixos-config=/root/configuration-2.nix --target-host alice@target --sudo &>/dev/console")
target_hostname = deployer.succeed("ssh alice@target cat /etc/hostname").rstrip()
assert target_hostname == "config-2-deployed", f"{target_hostname=}"
with subtest("Deploy to bob@target with password based sudo"):
# TODO: investigate why --ask-sudo-password from nixos-rebuild-ng is not working here
deployer.succeed(r'${lib.optionalString withNg "NIX_SSHOPTS=-t "}passh -c 3 -C -p ${nodes.target.users.users.bob.password} -P "\[sudo\] password" nixos-rebuild switch -I nixos-config=/root/configuration-3.nix --target-host bob@target --use-remote-sudo &>/dev/console')
deployer.succeed(r'${lib.optionalString withNg "NIX_SSHOPTS=-t "}passh -c 3 -C -p ${nodes.target.users.users.bob.password} -P "\[sudo\] password" nixos-rebuild switch -I nixos-config=/root/configuration-3.nix --target-host bob@target --sudo &>/dev/console')
target_hostname = deployer.succeed("ssh alice@target cat /etc/hostname").rstrip()
assert target_hostname == "config-3-deployed", f"{target_hostname=}"
+2 -2
View File
@@ -56,13 +56,13 @@
stdenv.mkDerivation rec {
pname = "mixxx";
version = "2.5.1";
version = "2.5.2";
src = fetchFromGitHub {
owner = "mixxxdj";
repo = "mixxx";
rev = version;
hash = "sha256-s66XrcMGgA8KvBDxljg95nbKW1pIv8rJJ+DyxirHwDo=";
hash = "sha256-dKk3n3KDindnLbON52SW5h4cz96WVi0OPjwA27HqQCI=";
};
nativeBuildInputs = [
+14 -9
View File
@@ -8,19 +8,20 @@
qtbase,
qtgraphicaleffects,
qtquickcontrols2,
qtwayland,
wrapQtAppsHook,
makeWrapper,
}:
stdenv.mkDerivation (finalAttrs: {
pname = "noson";
version = "5.6.10";
version = "5.6.13";
src = fetchFromGitHub {
owner = "janbar";
repo = "noson-app";
rev = finalAttrs.version;
hash = "sha256-ERlZtQTwPu5Y1i5cV9c5IMSJW30ootjmFix0EiF+/x0=";
hash = "sha256-XJBkPhyDPeyVrcY5Q5W9LtESuVxcbcQ8JoyOzKg+0NU=";
};
nativeBuildInputs = [
@@ -29,13 +30,17 @@ stdenv.mkDerivation (finalAttrs: {
makeWrapper
];
buildInputs = [
flac
libpulseaudio
qtbase
qtgraphicaleffects
qtquickcontrols2
];
buildInputs =
[
flac
libpulseaudio
qtbase
qtgraphicaleffects
qtquickcontrols2
]
++ lib.optionals stdenv.hostPlatform.isLinux [
qtwayland
];
# wrapQtAppsHook doesn't automatically find noson-gui
dontWrapQtApps = true;
+2 -2
View File
@@ -19,11 +19,11 @@
mkDerivation rec {
pname = "okteta";
version = "0.26.21";
version = "0.26.22";
src = fetchurl {
url = "mirror://kde/stable/okteta/${version}/src/${pname}-${version}.tar.xz";
sha256 = "sha256-tuYvcfcxdX1nzTR603rEYIgXLEjnZH3mDRJUD/BVRJs=";
sha256 = "sha256-vi7XhMj/PaMeK4V6FxU7Yi7XyWMaOBUenafZPpaP+n0=";
};
nativeBuildInputs = [
@@ -18827,6 +18827,19 @@ final: prev: {
meta.hydraPlatforms = [ ];
};
vim-moonfly-colors = buildVimPlugin {
pname = "vim-moonfly-colors";
version = "2025-05-28";
src = fetchFromGitHub {
owner = "bluz71";
repo = "vim-moonfly-colors";
rev = "ff822100c5d268e0db79e8e725cbd3ade3470de3";
sha256 = "14ffclg7yjkyw05bdqwc7rmzf195vjswfpmcfi7sd85rr4d3midz";
};
meta.homepage = "https://github.com/bluz71/vim-moonfly-colors/";
meta.hydraPlatforms = [ ];
};
vim-move = buildVimPlugin {
pname = "vim-move";
version = "2023-10-08";
@@ -1445,6 +1445,7 @@ https://github.com/delroth/vim-molokai-delroth/,HEAD,
https://github.com/crusoexia/vim-monokai/,,
https://github.com/phanviet/vim-monokai-pro/,,
https://github.com/patstockwell/vim-monokai-tasty/,HEAD,
https://github.com/bluz71/vim-moonfly-colors/,HEAD,
https://github.com/matze/vim-move/,,
https://github.com/lifepillar/vim-mucomplete/,,
https://github.com/terryma/vim-multiple-cursors/,,
@@ -2,10 +2,10 @@
## Conventions for adding new extensions
* Extensions are named in the **lowercase** version of the extension's unique identifier. Which is found on the marketplace extension page, and is the name under which the extension is installed by VSCode under `~/.vscode`.
* Extensions are named in the **lowercase** version of the extension's unique identifier which is found on the extension's marketplace page, and is the name under which the extension is installed by VSCode under `~/.vscode`.
Extension location should be: ${lib.strings.toLower mktplcRef.publisher}.${lib.string.toLower mktplcRef.name}
* Move extension to a discrete directory whenever the extension needs extra parameters/packages (at top of the file) or other files (such as patches, update script, components). Global index file parameters/packages should be utilities shared by many extensions. Extension specific parameters/packages should not be in the global index page.
* When adding a new extension, place its definition in a `default.nix` file in a directory with the extension's ID (e.g. `publisher.extension-name/default.nix`) and refer to it in `./default.nix`, e.g. `publisher.extension-name = callPackage ./publisher.extension-name { };`.
* Currently `nixfmt-rfc-style` formatter is being used to format the VSCode extensions.
@@ -39,4 +39,4 @@
> vscode-extensions.publisher.extension-name: 1.2.3 -> 2.3.4
>
> Release: https://github.com/owner/project/releases/tag/2.3.4
- Multiple extensions can be added in a single PR, but each extension requires it's own commit.
- Multiple extensions can be added in a single PR, but each extension requires its own commit.
@@ -11,8 +11,8 @@ vscode-utils.buildVscodeMarketplaceExtension {
mktplcRef = {
name = "calva";
publisher = "betterthantomorrow";
version = "2.0.516";
hash = "sha256-0RBydQ2+ec6Swj/DGYVen3g8a6SqhIKLZ9m1Bohjqco=";
version = "2.0.519";
hash = "sha256-Ndgps72L1mT7a2xoBmeXm/iAbyFMXP+e8SuQ5Q7HqcI=";
};
nativeBuildInputs = [
@@ -12,7 +12,7 @@ let
{
buildGoModule,
version,
sha256,
hash,
vendorHash,
license,
...
@@ -21,7 +21,7 @@ let
attrs' = builtins.removeAttrs attrs [
"buildGoModule"
"version"
"sha256"
"hash"
"vendorHash"
"license"
];
@@ -37,9 +37,15 @@ let
owner = "hashicorp";
repo = pname;
rev = "v${version}";
inherit sha256;
inherit hash;
};
# Nomad requires Go 1.24.4, but nixpkgs doesn't have it in unstable yet.
postPatch = ''
substituteInPlace go.mod \
--replace-warn "go 1.24.4" "go 1.24.3"
'';
nativeBuildInputs = [ installShellFiles ];
ldflags = [
@@ -59,7 +65,7 @@ let
'';
meta = with lib; {
homepage = "https://www.nomadproject.io/";
homepage = "https://developer.hashicorp.com/nomad";
description = "Distributed, Highly Available, Datacenter-Aware Scheduler";
mainProgram = "nomad";
inherit license;
@@ -81,12 +87,24 @@ rec {
# Upstream partially documents used Go versions here
# https://github.com/hashicorp/nomad/blob/master/contributing/golang.md
nomad = nomad_1_9;
nomad = nomad_1_10;
nomad_1_10 = generic {
buildGoModule = buildGo124Module;
version = "1.10.2";
hash = "sha256-7i/tMQwaEmLGXNarrdPzmorv+SHrxCzeaF3BI9Jjhwg=";
vendorHash = "sha256-yq8xQ9wThPK/X9/lEHD8FCXq1Mrz0lO6UvrP2ipXMnw=";
license = lib.licenses.bsl11;
passthru.tests.nomad = nixosTests.nomad;
preCheck = ''
export PATH="$PATH:$NIX_BUILD_TOP/go/bin"
'';
};
nomad_1_9 = generic {
buildGoModule = buildGo124Module;
version = "1.9.7";
sha256 = "sha256-U02H6DPr1friQ9EwqD/wQnE2Fm20OE5xNccPDJfnsqI=";
hash = "sha256-U02H6DPr1friQ9EwqD/wQnE2Fm20OE5xNccPDJfnsqI=";
vendorHash = "sha256-9GnwqkexJAxrhW9yJFaDTdSaZ+p+/dcMuhlusp4cmyw=";
license = lib.licenses.bsl11;
passthru.tests.nomad = nixosTests.nomad;
@@ -68,14 +68,14 @@
stdenv.mkDerivation rec {
pname = "jami";
version = "20250523.0";
version = "20250613.0";
src = fetchFromGitLab {
domain = "git.jami.net";
owner = "savoirfairelinux";
repo = "jami-client-qt";
rev = "stable/${version}";
hash = "sha256-uc2IcSAaCTkTMwjhgMRVdWsStLkOO5dPU2Hx+cYUUL0=";
hash = "sha256-+6DTbYq50UPSQ+KipXhWje1bZs64wZrS37z2Na1RtN8=";
fetchSubmodules = true;
};
@@ -123,14 +123,14 @@ stdenv.mkDerivation rec {
dhtnet = stdenv.mkDerivation {
pname = "dhtnet";
version = "unstable-2025-03-19";
version = "unstable-2025-05-26";
src = fetchFromGitLab {
domain = "git.jami.net";
owner = "savoirfairelinux";
repo = "dhtnet";
rev = "7e7359ff5dadd9aaf6d341486f3ee41029f645e1";
hash = "sha256-sT7OgYUBnO+HfIeCaR3lmoFJ9qE1Y5TEK1/KHzhvK7M=";
rev = "6c5ee3a21556d668d047cdedb5c4b746c3c6bdb2";
hash = "sha256-uweYSEysVMUC7DhI9BhS1TDZ6ZY7WQ9JS3ZF9lKA4Fo=";
};
postPatch = ''
@@ -190,7 +190,7 @@ stdenv.mkDerivation (finalAttrs: {
PLUG=$vim/share/vim-plugins/notmuch/plugin/notmuch.vim
cat >> $PLUG << EOF
let \$GEM_PATH=\$GEM_PATH . ":${finalAttrs.passthru.gemEnv}/${ruby.gemPath}"
let \$RUBYLIB=\$RUBYLIB . ":$vim/${ruby.libPath}/${ruby.system}"
let \$RUBYLIB=\$RUBYLIB . ":$out/${ruby.libPath}/${ruby.system}"
if has('nvim')
EOF
for gem in ${finalAttrs.passthru.gemEnv}/${ruby.gemPath}/gems/*/lib; do
@@ -39,11 +39,11 @@
stdenv.mkDerivation (finalAttrs: {
pname = "gnunet";
version = "0.24.1";
version = "0.24.2";
src = fetchurl {
url = "mirror://gnu/gnunet/gnunet-${finalAttrs.version}.tar.gz";
hash = "sha256-xPj50l06APgHCVg7h6qDEtAUVAkLc6QTtD7H7HwHujk=";
hash = "sha256-Lk5KkH2UJ/DD3U1nlczq9yzPOX6dyWH2DtvvMAb2r0c=";
};
enableParallelBuilding = true;
@@ -101,6 +101,7 @@
libetonyek,
liborcus,
libpng,
libxcrypt,
langs ? [
"ar"
"ca"
@@ -378,16 +379,34 @@ stdenv.mkDerivation (finalAttrs: {
substituteInPlace configure.ac --replace-fail distutils.sysconfig sysconfig
'';
nativeBuildInputs = [
autoconf
automake
bison
fontforge
gdb
jdk21
libtool
pkg-config
];
nativeBuildInputs =
[
ant
autoconf
automake
bison
flex
fontforge
gdb
gettext
gperf
icu
jdk21
libmysqlclient
libtool
libxml2
libxslt
perl
perlPackages.ArchiveZip
perlPackages.IOCompress
pkg-config
python311
unzip
zip
]
++ optionals kdeIntegration [
qtbase
];
buildInputs =
finalAttrs.passthru.gst_packages
@@ -397,11 +416,8 @@ stdenv.mkDerivation (finalAttrs: {
# propagated libpng
# See: https://www.mail-archive.com/libreoffice@lists.freedesktop.org/msg334080.html
(libpng.override { apngSupport = false; })
perlPackages.ArchiveZip
coinmp
perlPackages.IOCompress
abseil-cpp
ant
bluez5
boost
box2d_2
@@ -414,15 +430,12 @@ stdenv.mkDerivation (finalAttrs: {
dbus-glib
expat
file
flex
fontconfig
freetype
getopt
gettext
glib
glm
adwaita-icon-theme
gperf
gpgme
graphite2
gtk3
@@ -433,6 +446,7 @@ stdenv.mkDerivation (finalAttrs: {
lcms2
libGL
libGLU
libtool
xorg.libX11
xorg.libXaw
xorg.libXdmcp
@@ -454,7 +468,6 @@ stdenv.mkDerivation (finalAttrs: {
liblangtag
libmspack
libmwaw
libmysqlclient
libodfgen
liborcus
xorg.libpthreadstubs
@@ -466,6 +479,7 @@ stdenv.mkDerivation (finalAttrs: {
libwpd
libwpg
libwps
libxcrypt
libxml2
xorg.libxshmfence
libxslt
@@ -481,17 +495,14 @@ stdenv.mkDerivation (finalAttrs: {
openldap
openssl
pam
perl
poppler
libpq
python311
sane-backends
unixODBC
unzip
util-linux
which
xmlsec
zip
zlib
]
++ optionals kdeIntegration [
@@ -691,6 +702,8 @@ stdenv.mkDerivation (finalAttrs: {
# Wrapping is done in ./wrapper.nix
dontWrapQtApps = true;
strictDeps = true;
passthru = {
inherit srcs;
jdk = jre';
@@ -20,10 +20,9 @@
libXScrnSaver,
libusb1,
pkg-config,
fetchpatch,
# #FIXME: Could not get cmake to pick up on these dependencies
# Prevents cmake from building the OCR video capabilities
# Everything else should work just missing this on plugin
# Ommiting them prevents cmake from building the OCR video capabilities
# Everything else should work it's just missing this one plugin
# tesseract,
# leptonica,
}:
@@ -37,13 +36,13 @@ let
in
stdenv.mkDerivation rec {
pname = "advanced-scene-switcher";
version = "1.28.1";
version = "1.30.1";
src = fetchFromGitHub {
owner = "WarmUpTill";
repo = "SceneSwitcher";
rev = version;
hash = "sha256-1U5quhfdhEBcCbEzW0uEpimYgvdbsIwaL2EdQ4cLF/M=";
hash = "sha256-UTgOZK4SFjTcbAGQGY4kQbaskWhKA5fAkHBPNlPYzxo=";
};
nativeBuildInputs = [
@@ -52,14 +51,6 @@ stdenv.mkDerivation rec {
pkg-config
];
patches = [
# https://github.com/WarmUpTill/SceneSwitcher/pull/1244
(fetchpatch {
url = "https://github.com/WarmUpTill/SceneSwitcher/commit/e0c650574f9f7f6cae5626afa9abf8a838dc0858.diff";
hash = "sha256-eXO8LdGYf60sd/kyxWVDSEpwyzp4Uu9TpPADg5ED4yU=";
})
];
buildInputs = [
alsa-lib
asio
@@ -1,172 +0,0 @@
# NOTE: much of this structure is inspired from https://github.com/NixOS/nixpkgs/tree/fff29a3e5f7991512e790617d1a693df5f3550f6/pkgs/build-support/node
{
stdenvNoCC,
deno,
denort,
diffutils,
zip,
jq,
fetchDenoDeps,
buildPackages,
lib,
}:
{
name ? "${args.pname}-${args.version}",
src ? null,
# The output hash of the dependencies for this project.
denoDepsHash ? lib.fakeHash,
# The host platform, the output binary is compiled for.
hostPlatform ? stdenvNoCC.hostPlatform.system,
# A list of strings, which are names of impure env vars passed to the deps build.
# Example:
# `[ "NPM_TOKEN" ]`
# They will be forwarded to `deno install`.
# It can be used to set tokens for private NPM registries (in an `.npmrc` file).
# In multi user installations of Nix, you need to set the env vars in the daemon (probably with systemd).
# In nixos: `systemd.services.nix-daemon.environment.NPM_TOKEN = "<token>";`
denoDepsImpureEnvVars ? [ ],
# An attr set with env vars as key value pairs.
# Example:
# `{ "NPM_TOKEN" = "<token>"; }`
# They will be forwarded to `deno install`.
# It can be used to set tokens for private NPM registries (in an `.npmrc` file).
# You could pass these tokens from the cli with `--arg` (this can make your builds painful).
denoDepsInjectedEnvVars ? { },
# TODO: source overrides like in buildNpmPackage, i.e. injecting nix packages into the denoDeps
# this is more involved, since they can't directly be injected into the fixed output derivation
# of fetchDenoDeps. Instead we need to patch the lock file and remove the packages we intend to
# inject, then we need to build the rest of the packages like before and in a
# second step create normal derivation with the injected packages.
# then the two need to be merged into a single denoDeps derivation and finally the lock file needs
# to be reverted back to it's original form.
# It is possible to manipulate the registry.json files of the injected packages so that deno accepts them as is.
denoDeps ? fetchDenoDeps {
inherit
src
denoDepsInjectedEnvVars
denoDepsImpureEnvVars
denoFlags
denoDir
;
denoInstallFlags = builtins.filter (e: e != "--cached-only") denoInstallFlags;
name = "${name}-deno-deps";
hash = denoDepsHash;
},
# The package used for every deno command in the build
denoPackage ? deno,
# The package used as the runtime that is bundled with the the src to create the binary.
denortPackage ? denort,
# The script to run to build the project.
# You still need to specify in the installPhase, what artifacts to copy to `$out`.
denoTaskScript ? "build",
# If not null, create a binary using the specified path as the entrypoint,
# copy it to `$out/bin` in installPhase and fix it in fixupPhase.
binaryEntrypointPath ? null,
# Flags to pass to all deno commands.
denoFlags ? [ ],
# Flags to pass to `deno task [denoTaskFlags] ${denoTaskScript}`.
denoTaskFlags ? [ ],
# Flags to pass to `deno compile [denoTaskFlags] ${binaryEntrypointPath}`.
denoCompileFlags ? [ ],
# Flags to pass to `deno install [denoInstallFlags]`.
denoInstallFlags ? [
"--allow-scripts"
"--frozen"
"--cached-only"
],
# Flags to pass to `deno task [denoTaskFlags] ${denoTaskScript} [extraTaskFlags]`.
extraTaskFlags ? [ ],
# Flags to pass to `deno compile [denoTaskFlags] ${binaryEntrypointPath} [extraCompileFlags]`.
extraCompileFlags ? [ ],
nativeBuildInputs ? [ ],
dontFixup ? true,
# Custom denoConfigHook
denoConfigHook ? null,
# Custom denoBuildHook
denoBuildHook ? null,
# Custom denoInstallHook
denoInstallHook ? null,
# Path to deno workspace, where the denoTaskScript should be run
denoWorkspacePath ? null,
# Unquoted string injected before `deno task`
denoTaskPrefix ? "",
# Unquoted string injected after `deno task` and all its flags
denoTaskSuffix ? "",
# Used as the name of the local DENO_DIR
denoDir ? "./.deno",
...
}@args:
let
denoFlags_ = builtins.concatStringsSep " " denoFlags;
denoTaskFlags_ = builtins.concatStringsSep " " denoTaskFlags;
denoCompileFlags_ = builtins.concatStringsSep " " denoCompileFlags;
denoInstallFlags_ = builtins.concatStringsSep " " denoInstallFlags;
extraTaskFlags_ = builtins.concatStringsSep " " extraTaskFlags;
extraCompileFlags_ = builtins.concatStringsSep " " extraCompileFlags;
args' = builtins.removeAttrs args [ "denoDepsInjectedEnvVars" ];
denoHooks =
(buildPackages.denoHooks.override {
denort = denortPackage;
})
{
inherit denoTaskSuffix denoTaskPrefix binaryEntrypointPath;
};
systemLookupTable = {
"x86_64-darwin" = "x86_64-apple-darwin";
"arm64-darwin" = "aarch64-apple-darwin";
"aarch64-darwin" = "aarch64-apple-darwin";
"x86_64-linux" = "x86_64-unknown-linux-gnu";
"arm64-linux" = "aarch64-unknown-linux-gnu";
"aarch64-linux" = "aarch64-unknown-linux-gnu";
};
hostPlatform_ =
if builtins.hasAttr hostPlatform systemLookupTable then
systemLookupTable."${hostPlatform}"
else
(lib.systems.elaborate hostPlatform).config;
in
stdenvNoCC.mkDerivation (
args'
// {
inherit
name
denoDeps
src
denoFlags_
denoTaskFlags_
denoCompileFlags_
denoInstallFlags_
extraTaskFlags_
extraCompileFlags_
binaryEntrypointPath
hostPlatform_
denoWorkspacePath
denoTaskScript
;
nativeBuildInputs = nativeBuildInputs ++ [
# Prefer passed hooks
(if denoConfigHook != null then denoConfigHook else denoHooks.denoConfigHook)
(if denoBuildHook != null then denoBuildHook else denoHooks.denoBuildHook)
(if denoInstallHook != null then denoInstallHook else denoHooks.denoInstallHook)
denoPackage
diffutils
zip
jq
];
DENO_DIR = denoDir;
dontFixup = if binaryEntrypointPath != null then false else dontFixup;
passthru = {
inherit denoDeps;
};
meta = (args.meta or { }) // {
platforms = args.meta.platforms or denoPackage.meta.platforms;
};
}
)
@@ -1,29 +0,0 @@
{
makeSetupHook,
denort,
lib,
}:
{
denoTaskSuffix,
denoTaskPrefix,
binaryEntrypointPath,
}:
{
denoConfigHook = makeSetupHook {
name = "deno-config-hook";
substitutions = {
denortBinary = lib.optionalString (binaryEntrypointPath != null) (lib.getExe denort);
};
} ./deno-config-hook.sh;
denoBuildHook = makeSetupHook {
name = "deno-build-hook";
substitutions = {
inherit denoTaskSuffix denoTaskPrefix;
};
} ./deno-build-hook.sh;
denoInstallHook = makeSetupHook {
name = "deno-install-hook";
} ./deno-install-hook.sh;
}
@@ -1,58 +0,0 @@
# shellcheck shell=bash
denoBuildHook() {
echo "Executing denoBuildHook"
runHook preBuild
if [ -n "${binaryEntrypointPath-}" ]; then
echo "Creating binary"
package_name=$(jq -r '.name' deno.json)
if [ "$package_name" == "null" ]; then
package_name="$name"
fi
deno compile \
--output "$package_name" \
--target "$hostPlatform_" \
$denoCompileFlags \
$denoFlags \
"${denoWorkspacePath+$denoWorkspacePath/}$binaryEntrypointPath"
$extraCompileFlags \
elif [ -n "${denoTaskScript-}" ]; then
if ! @denoTaskPrefix@ \
deno task \
${denoWorkspacePath+--cwd=$denoWorkspacePath} \
$denoTaskFlags \
$denoFlags \
"$denoTaskScript" \
$extraTaskFlags \
@denoTaskSuffix@; then
echo
echo 'ERROR: `deno task` failed'
echo
echo "Here are a few things you can try, depending on the error:"
echo "1. Make sure your task script ($denoTaskScript) exists"
echo
exit 1
fi
else
echo
echo "ERROR: nothing to do in buildPhase"
echo "Specify either 'binaryEntrypointPath' or 'denoTaskScript' or override 'buildPhase'"
echo
exit 1
fi
runHook postBuild
echo "Finished denoBuildHook"
}
if [ -z "${buildPhase-}" ]; then
buildPhase=denoBuildHook
fi
@@ -1,108 +0,0 @@
# shellcheck shell=bash
denoConfigHook() {
echo "Executing denoConfigHook"
if [ -z "${denoDeps-}" ]; then
echo
echo "ERROR: no dependencies were specified"
echo 'Hint: set `denoDeps` if using these hooks individually. If this is happening with `buildDenoPackage`, please open an issue.'
echo
exit 1
fi
local -r cacheLockfile="$denoDeps/deno.lock"
local -r srcLockfile="$PWD/deno.lock"
echo "Validating consistency between $srcLockfile and $cacheLockfile"
if ! diff "$srcLockfile" "$cacheLockfile"; then
# If the diff failed, first double-check that the file exists, so we can
# give a friendlier error msg.
if ! [ -e "$srcLockfile" ]; then
echo
echo "ERROR: Missing deno.lock from src. Expected to find it at: $srcLockfile"
echo
exit 1
fi
if ! [ -e "$cacheLockfile" ]; then
echo
echo "ERROR: Missing lockfile from cache. Expected to find it at: $cacheLockfile"
echo
exit 1
fi
echo
echo "ERROR: denoDepsHash is out of date"
echo
echo "The deno.lock in src is not the same as the in $denoDeps."
echo
echo "To fix the issue:"
echo '1. Use `lib.fakeHash` as the denoDepsHash value'
echo "2. Build the derivation and wait for it to fail with a hash mismatch"
echo "3. Copy the 'got: sha256-' value back into the denoDepsHash field"
echo
exit 1
fi
# NOTE: we need to use vendor in the build too, since we used it for the deps
useVendor() {
jq '.vendor = true' deno.json >temp.json &&
rm -f deno.json &&
mv temp.json deno.json
}
echo "Adding vendor to deno.json"
useVendor
echo "Installing dependencies"
export DENO_DIR="$(pwd)"/"$DENO_DIR"
installDeps() {
if [[ -d "$denoDeps/.deno" ]]; then
cp -r --no-preserve=mode "$denoDeps/.deno" "$DENO_DIR"
fi
if [[ -d "$denoDeps/vendor" ]]; then
cp -r --no-preserve=mode "$denoDeps/vendor" ./vendor
fi
if [[ -d "$denoDeps/node_modules" ]]; then
cp -r --no-preserve=mode "$denoDeps/node_modules" ./node_modules
fi
}
installDeps
if ! deno install $denoInstallFlags_ $denoFlags_; then
echo
echo "ERROR: deno failed to install dependencies"
echo
exit 1
fi
installDenort() {
version="$(deno --version | head -1 | awk '{print $2}')"
zipfile=denort-"$hostPlatform_".zip
dir="$DENO_DIR"/dl/release/v"$version"
mkdir -p "$dir"
cp "@denortBinary@" ./denort
zip "$dir"/"$zipfile" ./denort
rm ./denort
}
if [ -n "${binaryEntrypointPath-}" ]; then
echo "Installing denort for binary build"
installDenort
fi
patchShebangs .deno
patchShebangs node_modules
patchShebangs vendor
echo "Finished denoConfigHook"
}
postPatchHooks+=(denoConfigHook)
@@ -1,32 +0,0 @@
# shellcheck shell=bash
denoInstallHook() {
echo "Executing denoInstallHook"
runHook preInstall
if [ -n "${binaryEntrypointPath-}" ]; then
package_name=$(jq -r '.name' deno.json)
if [ "$package_name" == "null" ]; then
package_name="$name"
fi
mkdir -p "$out/bin"
cp "$package_name"* "$out/bin"
else
echo
echo "ERROR: nothing to do in installPhase"
echo "Specify either 'binaryEntrypointPath' or override 'installPhase'"
echo
exit 1
fi
runHook postInstall
echo "Finished denoInstallHook"
}
if [ -z "${dontDenoInstall-}" ] && [ -z "${installPhase-}" ]; then
installPhase=denoInstallHook
fi
@@ -1,4 +0,0 @@
.deno/
vendor/
node_modules/
.direnv
@@ -1,185 +0,0 @@
# NOTE: much of this structure is inspired from https://github.com/NixOS/nixpkgs/tree/fff29a3e5f7991512e790617d1a693df5f3550f6/pkgs/build-support/node
{
lib,
stdenvNoCC,
deno,
jq,
cacert,
}:
{
fetchDenoDeps =
{
name ? "deno-deps",
src,
hash ? lib.fakeHash,
denoPackage ? deno,
denoFlags ? [ ],
denoInstallFlags ? [
"--allow-scripts"
"--frozen"
],
nativeBuildInputs ? [ ],
denoDepsImpureEnvVars ? [ ],
denoDepsInjectedEnvVars ? { },
denoDir ? "./.deno",
...
}@args:
let
hash_ =
if hash != "" then
{ outputHash = hash; }
else
{
outputHash = "";
outputHashAlgo = "sha256";
};
denoInstallFlags_ = builtins.concatStringsSep " " denoInstallFlags;
denoFlags_ = builtins.concatStringsSep " " denoFlags;
denoDepsInjectedEnvVarsString =
if denoDepsInjectedEnvVars != { } then
lib.attrsets.foldlAttrs (
acc: name: value:
"${acc} ${name}=${value}"
) "" denoDepsInjectedEnvVars
else
"";
# need to remove denoDepsInjectedEnvVars, since it's an attrset and
# stdenv.mkDerivation would try to convert it to string
args' = builtins.removeAttrs args [ "denoDepsInjectedEnvVars" ];
in
stdenvNoCC.mkDerivation (
args'
// {
inherit name src;
nativeBuildInputs = nativeBuildInputs ++ [
denoPackage
jq
];
DENO_DIR = denoDir;
buildPhase = ''
runHook preBuild
if [[ ! -e "deno.json" ]]; then
echo ""
echo "ERROR: deno.json required, but not found"
echo ""
exit 1
fi
if [[ ! -e "deno.lock" ]]; then
echo ""
echo "ERROR: deno.lock required, but not found"
echo ""
exit 1
fi
# NOTE: using vendor reduces the pruning effort a little
useVendor() {
jq '.vendor = true' deno.json >temp.json && \
rm -f deno.json && \
mv temp.json deno.json
}
useVendor
# uses $DENO_DIR
${denoDepsInjectedEnvVarsString} deno install ${denoInstallFlags_} ${denoFlags_}
echo "pruning non reproducible files"
# `node_modules` is used when there are install scripts in a dependencies' package.json.
# these install scripts can also require internet, so they should also be executed in this fetcher
pruneNonReproducibles() {
export tempDenoDir="$DENO_DIR"
# `registry.json` files can't just be deleted, else deno install won't work,
# but they contain non reproducible data,
# which needs to be pruned, leaving only the necessary data behind.
# This pruning is done with a helper script written in typescript and executed with deno
DENO_DIR=./extra_deno_cache deno run \
--lock="${./deno.lock}" \
--config="${./deno.json}" \
--allow-all \
"${./prune-registries.ts}" \
--lock-json="./deno.lock" \
--cache-path="$tempDenoDir" \
--vendor-path="./vendor"
# Keys in `registry.json` files are not deterministically sorted,
# so we do it here.
for file in $(find -L "$DENO_DIR" -name registry.json -type f); do
jq --sort-keys '.' "$file" >temp.json && \
rm -f "$file" && \
mv temp.json "$file"
done
# There are various small databases used by deno for caching that
# we can simply delete.
if [[ -d "./node_modules" ]]; then
find -L ./node_modules -name '*cache_v2-shm' -type f | xargs rm -f
find -L ./node_modules -name '*cache_v2-wal' -type f | xargs rm -f
find -L ./node_modules -name 'dep_analysis_cache_v2' -type f | xargs rm -f
find -L ./node_modules -name 'node_analysis_cache_v2' -type f | xargs rm -f
find -L ./node_modules -name v8_code_cache_v2 -type f | xargs rm -f
rm -f ./node_modules/.deno/.deno.lock.poll
# sometimes a .deno dir is slipped into a node_modules package
# it's unclear why. but it can just be deleted
find -L ./node_modules -name ".deno" -type d | sort -r | head -n-1 | xargs rm -rf
fi
rm -f "$DENO_DIR"/dep_analysis_cache_v2-shm
rm -f "$DENO_DIR"/dep_analysis_cache_v2-wal
rm -f "$DENO_DIR"/dep_analysis_cache_v2
}
pruneNonReproducibles
runHook postBuild
'';
installPhase = ''
runHook preInstall
if [[ -d "$DENO_DIR" ]]; then
mkdir -p $out/$DENO_DIR
cp -r --no-preserve=mode $DENO_DIR $out
fi
if [[ -d "./vendor" ]]; then
mkdir -p $out/vendor
cp -r --no-preserve=mode ./vendor $out
fi
if [[ -d "./node_modules" ]]; then
mkdir -p $out/node_modules
cp -r --no-preserve=mode ./node_modules $out
fi
cp ./deno.lock $out
runHook postInstall
'';
dontFixup = true;
outputHashMode = "recursive";
impureEnvVars = lib.fetchers.proxyImpureEnvVars ++ denoDepsImpureEnvVars;
SSL_CERT_FILE =
if
(
hash_.outputHash == ""
|| hash_.outputHash == lib.fakeSha256
|| hash_.outputHash == lib.fakeSha512
|| hash_.outputHash == lib.fakeHash
)
then
"${cacert}/etc/ssl/certs/ca-bundle.crt"
else
"/no-cert-file.crt";
}
// hash_
);
}
@@ -1,8 +0,0 @@
{
"tasks": { "test": "deno test" },
"imports": {
"@std/assert": "jsr:@std/assert@1.0.13",
"@std/cli": "jsr:@std/cli@1.0.16",
"@std/fs": "jsr:@std/fs@1.0.16"
}
}
-53
View File
@@ -1,53 +0,0 @@
{
"version": "5",
"specifiers": {
"jsr:@std/assert@1.0.13": "1.0.13",
"jsr:@std/cli@1.0.16": "1.0.16",
"jsr:@std/fs@1.0.16": "1.0.16",
"jsr:@std/internal@^1.0.6": "1.0.7",
"jsr:@std/path@1.0.9": "1.0.9",
"jsr:@std/path@^1.0.8": "1.0.9",
"npm:@types/node@*": "22.15.15"
},
"jsr": {
"@std/assert@1.0.13": {
"integrity": "ae0d31e41919b12c656c742b22522c32fb26ed0cba32975cb0de2a273cb68b29",
"dependencies": [
"jsr:@std/internal"
]
},
"@std/cli@1.0.16": {
"integrity": "02df293099c35b9e97d8ca05f57f54bd1ee08134f25d19a4756b3924695f4b00"
},
"@std/fs@1.0.16": {
"integrity": "81878f62b6eeda0bf546197fc3daa5327c132fee1273f6113f940784a468b036",
"dependencies": [
"jsr:@std/path@^1.0.8"
]
},
"@std/internal@1.0.7": {
"integrity": "39eeb5265190a7bc5d5591c9ff019490bd1f2c3907c044a11b0d545796158a0f"
},
"@std/path@1.0.9": {
"integrity": "260a49f11edd3db93dd38350bf9cd1b4d1366afa98e81b86167b4e3dd750129e"
}
},
"npm": {
"@types/node@22.15.15": {
"integrity": "sha512-R5muMcZob3/Jjchn5LcO8jdKwSCbzqmPB6ruBxMcf9kbxtniZHP327s6C37iOfuw8mbKK3cAQa7sEl7afLrQ8A==",
"dependencies": [
"undici-types"
]
},
"undici-types@6.21.0": {
"integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ=="
}
},
"workspace": {
"dependencies": [
"jsr:@std/assert@1.0.13",
"jsr:@std/cli@1.0.16",
"jsr:@std/fs@1.0.16"
]
}
}
File diff suppressed because it is too large Load Diff
@@ -1,346 +0,0 @@
#!/usr/bin/env deno
import { parseArgs } from "@std/cli/parse-args";
import { walkSync } from "@std/fs/walk";
/**
* NOTE: The problem this script solves, is that in every npm dependency in the deno cache
* is a registry.json file, which serves as a sort of local registry cache for the deno cli.
* Such a file looks like this (with deno v2.1.4):
* ```json
* {
* "name": "@floating-ui/core",
* "versions": {
* "0.7.0": { ... },
* "1.6.0": { ... },
* "0.1.2": { ... },
* ...
* },
* "dist-tags": { "latest": "1.7.0" }
* }
* ```
* The deno cli will look into this file when called to look up if the required versions are there.
* The problem is that the available versions for a package change over time. The registry.json files
* need to be part of the fixed output derivation, which will eventually change the hash of the FOD,
* if all those unwanted versions aren't pruned.
*
* On top of that a similar thing happens for jsr packages in the vendor directory
* with `meta.json` files. These also need to be pruned.
* Such a file looks like this (with deno v2.1.4):
* ```json
* {
* "scope": "std",
* "name": "internal",
* "latest": "1.0.6",
* "versions": {
* "0.202.0": {},
* "1.0.1": {},
* "0.225.0": {
* "yanked": true
* },
* }
* ```
*/
export type PackageSpecifiers = {
[packageIdent: string]: string;
};
export type LockJson = {
specifiers: PackageSpecifiers;
version: string;
workspace: any;
[registry: string]: any;
};
export type Config = {
lockJson: LockJson;
cachePath: string;
vendorPath: string;
};
export type PackageInfo = {
full: string;
registry: string | undefined;
scope: string | undefined;
name: string;
version: string;
suffix: string | undefined;
};
export type PackagesByRegistry = {
[registry: string]: {
[packageName: string]: {
[version: string]: PackageInfo;
};
};
};
export type PathsByRegistry = {
[packageRegistry: string]: string[];
};
export type RegistryJson = {
"dist-tags": any;
"_deno.etag": string;
versions: { [version: string]: any };
name: string;
};
export type MetaJson = {
scope: string;
name: string;
latest: string;
versions: {
[version: string]: any;
};
};
export function getConfig(): Config {
const flags = parseArgs(Deno.args, {
string: ["lock-json", "cache-path", "vendor-path"],
});
if (!flags["lock-json"]) {
throw "--lock-json flag not set but required";
}
if (!flags["cache-path"]) {
throw "--cache-path flag not set but required";
}
if (!flags["vendor-path"]) {
throw "--vendor-path flag not set but required";
}
const lockJson = JSON.parse(
new TextDecoder("utf-8").decode(Deno.readFileSync(flags["lock-json"]))
);
if (!lockJson) {
throw `could not parse lockJson at ${flags["lock-json"]}`;
}
return {
lockJson,
cachePath: flags["cache-path"],
vendorPath: flags["vendor-path"],
};
}
export function getAllPackageRegistries(
specifiers: PackageSpecifiers
): Set<string> {
return Object.keys(specifiers).reduce((acc: Set<string>, v: string) => {
const s = v.split(":");
if (s.length !== 2) {
throw "unexpected registry format";
}
const registry = s[0];
acc.add(registry);
return acc;
}, new Set());
}
export function parsePackageSpecifier(packageSpecifier: string): PackageInfo {
const match =
/^((?<registry>.*):)?((?<scope>@.*?)\/)?(?<name>.*?)@(?<version>.*?)(?<suffix>_.*)?$/.exec(
packageSpecifier
);
if (
match !== null &&
match.groups?.name !== undefined &&
match.groups?.version !== undefined
) {
return {
// npm:@amazn/style-dictionary@4.2.4_prettier@3.5.3
full: match[0],
// npm
registry: match.groups?.registry,
// @amazn
scope: match.groups?.scope,
// style-dictionary
name: match.groups?.name,
// 4.2.4
version: match.groups?.version,
// _prettier@3.5.3
suffix: match.groups?.suffix,
};
}
throw "unexpected package specifier format";
}
export function getScopedName(name: string, scope?: string): string {
if (scope !== undefined) {
return `${scope[0] === "@" ? "" : "@"}${scope}/${name}`;
}
return name;
}
export function getAllPackagesByPackageRegistry(
lockJson: LockJson,
registries: Set<string>
): PackagesByRegistry {
const result: PackagesByRegistry = {};
for (const registry of Array.from(registries)) {
const packageInfosOfRegistries = Object.keys(lockJson[registry]).map(
parsePackageSpecifier
);
result[registry] = {};
for (const packageInfo of packageInfosOfRegistries) {
const scopedName = getScopedName(packageInfo.name, packageInfo.scope);
if (result[registry][scopedName] === undefined) {
result[registry][scopedName] = {};
}
result[registry][scopedName][packageInfo.version] = packageInfo;
}
}
return result;
}
export function findRegistryJsonPaths(
cachePath: string,
nonJsrPackages: PackagesByRegistry
): PathsByRegistry {
const result: PathsByRegistry = {};
for (const registry of Object.keys(nonJsrPackages)) {
const path = `${cachePath}/${registry}`;
const registryJsonPaths = Array.from(walkSync(path))
.filter((v) => v.name === "registry.json")
.map((v) => v.path);
result[registry] = registryJsonPaths;
}
return result;
}
export function pruneRegistryJson(
registryJson: RegistryJson,
nonJsrPackages: PackagesByRegistry,
registry: string
) {
const scopedName = registryJson.name;
const packageInfoByVersion = nonJsrPackages[registry][scopedName];
if (!packageInfoByVersion) {
throw `could not find key "${scopedName}" in\n${Object.keys(
nonJsrPackages[registry]
)}`;
}
const newRegistryJson: RegistryJson = {
...registryJson,
"_deno.etag": "",
"dist-tags": {},
versions: {},
};
for (const version of Object.keys(packageInfoByVersion)) {
newRegistryJson.versions[version] = registryJson.versions[version];
}
return newRegistryJson;
}
export function pruneRegistryJsonFiles(
nonJsrPackages: PackagesByRegistry,
registryJsonPathsByRegistry: PathsByRegistry
): void {
for (const [registry, paths] of Object.entries(registryJsonPathsByRegistry)) {
for (const path of paths) {
const registryJson: RegistryJson = JSON.parse(
new TextDecoder("utf-8").decode(Deno.readFileSync(path))
);
const newRegistryJson = pruneRegistryJson(
registryJson,
nonJsrPackages,
registry
);
Deno.writeFileSync(
path,
new TextEncoder().encode(JSON.stringify(newRegistryJson))
);
}
}
}
export function findMetaJsonPaths(
vendorPath: string,
jsrPackages: PackagesByRegistry
): PathsByRegistry {
const result: PathsByRegistry = {};
for (const registry of Object.keys(jsrPackages)) {
const path = `${vendorPath}`;
const metaJsonPaths = Array.from(walkSync(path))
.filter((v) => v.name === "meta.json")
.map((v) => v.path);
result[registry] = metaJsonPaths;
}
return result;
}
export function pruneMetaJson(
metaJson: MetaJson,
jsrPackages: PackagesByRegistry,
registry: string
): MetaJson {
const scopedName = getScopedName(metaJson.name, metaJson.scope);
const packageInfoByVersion = jsrPackages[registry][scopedName];
if (!packageInfoByVersion) {
throw `could not find key "${scopedName}" in\n${Object.keys(
jsrPackages[registry]
)}`;
}
const newMetaJson: MetaJson = {
...metaJson,
latest: "",
versions: {},
};
for (const version of Object.keys(packageInfoByVersion)) {
newMetaJson.versions[version] = metaJson.versions[version];
}
return newMetaJson;
}
export function pruneMetaJsonFiles(
jsrPackages: PackagesByRegistry,
metaJsonPathsByRegistry: PathsByRegistry
): void {
for (const [registry, paths] of Object.entries(metaJsonPathsByRegistry)) {
for (const path of paths) {
const metaJson: MetaJson = JSON.parse(
new TextDecoder("utf-8").decode(Deno.readFileSync(path))
);
const newMetaJson = pruneMetaJson(metaJson, jsrPackages, registry);
Deno.writeFileSync(
path,
new TextEncoder().encode(JSON.stringify(newMetaJson))
);
}
}
}
function main() {
const config = getConfig();
const registries = getAllPackageRegistries(config.lockJson.specifiers);
const packages = getAllPackagesByPackageRegistry(config.lockJson, registries);
const jsrPackages = {
jsr: structuredClone(packages.jsr),
} satisfies PackagesByRegistry;
delete packages.jsr;
const nonJsrPackages = packages;
const metaJsonpaths = findMetaJsonPaths(config.vendorPath, jsrPackages);
pruneMetaJsonFiles(jsrPackages, metaJsonpaths);
const registryJsonPaths = findRegistryJsonPaths(
config.cachePath,
nonJsrPackages
);
pruneRegistryJsonFiles(nonJsrPackages, registryJsonPaths);
}
if (import.meta.main) {
main();
}
@@ -1,7 +0,0 @@
let
pkgs = import ../../../../default.nix { };
in
pkgs.mkShell {
buildInputs = [ pkgs.deno ];
DENO_DIR = "./.deno";
}
@@ -1062,7 +1062,7 @@ rec {
// (optionalAttrs (extraPassthru != { } || src ? passthru) {
passthru = extraPassthru // src.passthru or { };
})
# Forward any additional arguments to the derviation
# Forward any additional arguments to the derivation
// (removeAttrs args [
"src"
"name"
+2 -2
View File
@@ -23,13 +23,13 @@
stdenv.mkDerivation rec {
pname = "abaddon";
version = "0.2.1";
version = "0.2.2";
src = fetchFromGitHub {
owner = "uowuo";
repo = "abaddon";
rev = "v${version}";
hash = "sha256-FPhHy+4BmaoGrHGsc5o79Au9JcH5C+iWTYQYwnTLaUY=";
hash = "sha256-48lR1rIWMwLaTv+nIdqmQ3mHOayrC1P5OQuUb+URYh0=";
fetchSubmodules = true;
};
+112 -29
View File
@@ -7,12 +7,12 @@
ninja,
gfortran,
pkg-config,
python3,
python3Packages,
mpi,
catalyst,
bzip2,
c-blosc2,
hdf5-mpi,
hdf5,
libfabric,
libpng,
libsodium,
@@ -25,9 +25,25 @@
yaml-cpp,
nlohmann_json,
llvmPackages,
ctestCheckHook,
mpiCheckPhaseHook,
testers,
mpiSupport ? true,
pythonSupport ? false,
withExamples ? false,
}:
let
adios2Packages = {
hdf5 = hdf5.override {
inherit mpi mpiSupport;
cppSupport = !mpiSupport;
};
catalyst = catalyst.override {
inherit mpi mpiSupport pythonSupport;
};
mpi4py = python3Packages.mpi4py.override { inherit mpi; };
};
in
stdenv.mkDerivation (finalAttrs: {
version = "2.10.2";
pname = "adios2";
@@ -41,7 +57,8 @@ stdenv.mkDerivation (finalAttrs: {
postPatch =
''
patchShebangs cmake/install/post/generate-adios2-config.sh.in
chmod +x cmake/install/post/adios2-config.pre.sh.in
patchShebangs cmake/install/post/{generate-adios2-config,adios2-config.pre}.sh.in
''
# Dynamic cast to nullptr on darwin platform, switch to unsafe reinterpret cast.
+ lib.optionalString stdenv.hostPlatform.isDarwin ''
@@ -58,16 +75,17 @@ stdenv.mkDerivation (finalAttrs: {
pkg-config
]
++ lib.optionals pythonSupport [
python3
python3Packages.python
python3Packages.pybind11
python3Packages.pythonImportsCheckHook
];
buildInputs =
[
mpi
bzip2
c-blosc2
(hdf5-mpi.override { inherit mpi; })
adios2Packages.catalyst
adios2Packages.hdf5
libfabric
libpng
libsodium
@@ -82,53 +100,118 @@ stdenv.mkDerivation (finalAttrs: {
# Todo: add these optional dependencies in nixpkgs.
# sz
# mgard
# catalyst
]
++ lib.optional (lib.meta.availableOn stdenv.hostPlatform ucx) ucx
# openmp required by zfp
++ lib.optional stdenv.cc.isClang llvmPackages.openmp;
propagatedBuildInputs = lib.optionals pythonSupport [
(python3Packages.mpi4py.override { inherit mpi; })
python3Packages.numpy
];
propagatedBuildInputs =
lib.optional mpiSupport mpi
++ lib.optional pythonSupport python3Packages.numpy
++ lib.optional (mpiSupport && pythonSupport) adios2Packages.mpi4py;
cmakeFlags = [
# adios2 builtin modules
(lib.cmakeBool "ADIOS2_USE_DataMan" true)
(lib.cmakeBool "ADIOS2_USE_MHS" true)
(lib.cmakeBool "ADIOS2_USE_SST" mpiSupport)
# declare thirdparty dependencies explicitly
(lib.cmakeBool "ADIOS2_USE_EXTERNAL_DEPENDENCIES" true)
(lib.cmakeBool "ADIOS2_USE_Blosc2" true)
(lib.cmakeBool "ADIOS2_USE_BZip2" true)
(lib.cmakeBool "ADIOS2_USE_ZFP" true)
(lib.cmakeBool "ADIOS2_USE_SZ" false)
(lib.cmakeBool "ADIOS2_USE_LIBPRESSIO" false)
(lib.cmakeBool "ADIOS2_USE_MGARD" false)
(lib.cmakeBool "ADIOS2_USE_PNG" true)
(lib.cmakeBool "ADIOS2_USE_CUDA" false)
(lib.cmakeBool "ADIOS2_USE_Kokkos" false)
(lib.cmakeBool "ADIOS2_USE_MPI" mpiSupport)
(lib.cmakeBool "ADIOS2_USE_DAOS" false)
(lib.cmakeBool "ADIOS2_USE_DataSpaces" false)
(lib.cmakeBool "ADIOS2_USE_ZeroMQ" true)
(lib.cmakeBool "ADIOS2_USE_HDF5" true)
(lib.cmakeBool "ADIOS2_USE_HDF5_VOL" true)
(lib.cmakeBool "BUILD_TESTING" false)
(lib.cmakeBool "ADIOS2_USE_IME" false)
(lib.cmakeBool "ADIOS2_USE_Python" pythonSupport)
(lib.cmakeBool "ADIOS2_USE_Fortran" true)
(lib.cmakeBool "ADIOS2_USE_UCX" (lib.meta.availableOn stdenv.hostPlatform ucx))
(lib.cmakeBool "ADIOS2_USE_Sodium" true)
(lib.cmakeBool "ADIOS2_USE_Catalyst" true)
(lib.cmakeBool "ADIOS2_USE_Campaign" true)
(lib.cmakeBool "ADIOS2_USE_AWSSDK" false)
# use vendored gtest as nixpkgs#gtest does not include <iomanip> in <gtest/gtest.h>
(lib.cmakeBool "ADIOS2_USE_EXTERNAL_GTEST" false)
(lib.cmakeBool "BUILD_TESTING" finalAttrs.finalPackage.doCheck)
# higher MPIEXEC_MAX_NUMPROCS>8 might cause tests failure in
# - Engine.BP.BPJoinedArray.MultiBlock.BP4.MPI
# - Engine.BP.BPJoinedArray.MultiBlock.BP5.MPI
# - Bindings.Fortran.BPWriteReadHeatMap6D.MPI
# due to insufficiently robust data generation and comparison for larger MPI sizes.
(lib.cmakeFeature "MPIEXEC_MAX_NUMPROCS" "4")
# Enable support for Little/Big Endian Interoperability
(lib.cmakeBool "ADIOS2_USE_Endian_Reverse" true)
(lib.cmakeBool "ADIOS2_BUILD_EXAMPLES" withExamples)
(lib.cmakeBool "ADIOS2_USE_EXTERNAL_DEPENDENCIES" true)
(lib.cmakeFeature "CMAKE_INSTALL_BINDIR" "bin")
(lib.cmakeFeature "CMAKE_INSTALL_LIBDIR" "lib")
(lib.cmakeFeature "CMAKE_INSTALL_INCLUDEDIR" "include")
(lib.cmakeFeature "CMAKE_INSTALL_PYTHONDIR" python3.sitePackages)
(lib.cmakeFeature "CMAKE_INSTALL_PYTHONDIR" python3Packages.python.sitePackages)
];
# equired for finding the generated adios2-config.cmake file
env.adios2_DIR = "${placeholder "out"}/lib/cmake/adios2";
# Tests are time-consuming and moved to passthru.tests.withCheck.
doCheck = false;
dontUseNinjaCheck = true;
# Ctest takes too much time, so we only perform some smoke Python tests.
doInstallCheck = pythonSupport;
preCheck = ''
export adios2_DIR=$PWD
'';
preCheck =
''
export PYTHONPATH=$out/${python3.sitePackages}:$PYTHONPATH
''
+ lib.optionalString (stdenv.hostPlatform.system == "aarch64-linux") ''
rm ../testing/adios2/python/TestBPWriteTypesHighLevelAPI.py
'';
enableParallelChecking = false;
enabledTestPaths = [
"../testing/adios2/python/Test*.py"
];
__darwinAllowLocalNetworking = finalAttrs.finalPackage.doCheck && mpiSupport;
nativeCheckInputs = [
python3Packages.python
ctestCheckHook
mpiCheckPhaseHook
];
# required for finding the generated adios2-config.cmake file
preInstall = ''
export adios2_DIR=$out/lib/cmake/adios2
'';
pythonImportsCheck = [ "adios2" ];
nativeInstallCheckInputs = lib.optionals pythonSupport [
python3Packages.pythonImportsCheckHook
python3Packages.pytestCheckHook
];
passthru.tests = {
withCheck = finalAttrs.finalPackage.overrideAttrs {
doCheck = true;
disabledTests = lib.optionals stdenv.hostPlatform.isDarwin [
# TypeError: cannot pickle 'TextIOWrapper' instances
"Test.Engine.DataMan1xN.Serial"
"Test.Engine.DataManSingleValues"
# The test assumed to always contain n*64 byte-length records. Right now the length of index buffer is 71 bytes.
"Staging.1x1.Local2.BPS.BB.BP4_stream"
# Timeout
"Staging.3x5LockGeometry.FS.BB.FileStream"
"Engine.Staging.TestOnDemandMPI.ADIOS2OnDemandMPI.SST.MPI"
];
};
cmake-config = testers.hasCmakeConfigModules {
moduleNames = [ "adios2" ];
package = finalAttrs.finalPackage;
};
};
meta = {
homepage = "https://adios2.readthedocs.io/en/latest/";
+2 -2
View File
@@ -115,13 +115,13 @@ let
in
stdenv.mkDerivation rec {
pname = "airgeddon";
version = "11.41";
version = "11.50";
src = fetchFromGitHub {
owner = "v1s1t0r1sh3r3";
repo = "airgeddon";
tag = "v${version}";
hash = "sha256-+hJqaEjEy8woJKE+HKg3utNrZmGeAdd0YWi62HPLN/I=";
hash = "sha256-hy6q25hWGEFlih0IuwoqDRjbUk1/iShj6uY+mz6hlFU=";
};
strictDeps = true;
+2 -2
View File
@@ -8,11 +8,11 @@
stdenv.mkDerivation rec {
pname = "alglib3";
version = "4.04.0";
version = "4.05.0";
src = fetchurl {
url = "https://www.alglib.net/translator/re/alglib-${version}.cpp.gpl.tgz";
sha256 = "sha256-nPHllbcr1Hi3RzyOqvkZtACLJT2Gutu8WlItFJpnIUQ=";
sha256 = "sha256-czgBhziKjAO17ZwXChsjOazIaNODRrGyswhc4j4/T9s=";
};
nativeBuildInputs = [
+3 -3
View File
@@ -6,20 +6,20 @@
rustPlatform.buildRustPackage rec {
pname = "alioth";
version = "0.7.0";
version = "0.8.0";
src = fetchFromGitHub {
owner = "google";
repo = "alioth";
tag = "v${version}";
hash = "sha256-xFNX2cxmaw2H8D21qs6mnTMuSidmJ0xJ/b4pxdLTvow=";
hash = "sha256-7mQmyWOMEHg374mmYGJL8xhVWlYk1zKplpjc74wLoKw=";
};
# Checks use `debug_assert_eq!`
checkType = "debug";
useFetchCargoVendor = true;
cargoHash = "sha256-x2Abw/RVKpPx0EWyF3w0kywtd23A+NSNaHRVZ4oB1jI=";
cargoHash = "sha256-rAq3Ghg7zpiycQ8hNzn4Jz7cUCfwQ4aqtWxoVCg8MrE=";
separateDebugInfo = true;
+138 -11
View File
@@ -5,7 +5,7 @@
"packages": {
"": {
"dependencies": {
"@sourcegraph/amp": "^0.0.1749297687-g3e4f54"
"@sourcegraph/amp": "^0.0.1750147289-g2a47fe"
}
},
"node_modules/@colors/colors": {
@@ -29,14 +29,14 @@
}
},
"node_modules/@sourcegraph/amp": {
"version": "0.0.1749297687-g3e4f54",
"resolved": "https://registry.npmjs.org/@sourcegraph/amp/-/amp-0.0.1749297687-g3e4f54.tgz",
"integrity": "sha512-KfAu6Ju4aeTKW3dQ17GmaVXJ+96IqUMCC8KJlb1uzOBcNudGVnwYogjkEAMu4N3hg1PJH6XcrimqmFRqPZb1+Q==",
"version": "0.0.1750147289-g2a47fe",
"resolved": "https://registry.npmjs.org/@sourcegraph/amp/-/amp-0.0.1750147289-g2a47fe.tgz",
"integrity": "sha512-uoWvE5jE9cjmJDLx1DiyeA9VQ7ONReVelcly84VNwmcwIyI04OWyt7azoWK9OfFZU0hTBOyp21E632QsvtaiHw==",
"dependencies": {
"@types/runes": "^0.4.3",
"@vscode/ripgrep": "1.15.11",
"commander": "^11.1.0",
"fuse.js": "^7.0.0",
"open": "^10.1.2",
"runes": "^0.4.3",
"string-width": "^6.1.0",
"winston": "^3.17.0",
@@ -49,12 +49,6 @@
"node": ">=18"
}
},
"node_modules/@types/runes": {
"version": "0.4.3",
"resolved": "https://registry.npmjs.org/@types/runes/-/runes-0.4.3.tgz",
"integrity": "sha512-kncnfKlRj4FM0+9IRBlZ/06b1BNVDya3d5hN5kFfuzCNAgZFZuApz/XBqe0+d6Y5cV/f86UD8q2ehnaSVdtBrw==",
"license": "MIT"
},
"node_modules/@types/triple-beam": {
"version": "1.3.5",
"resolved": "https://registry.npmjs.org/@types/triple-beam/-/triple-beam-1.3.5.tgz",
@@ -109,6 +103,21 @@
"node": "*"
}
},
"node_modules/bundle-name": {
"version": "4.1.0",
"resolved": "https://registry.npmjs.org/bundle-name/-/bundle-name-4.1.0.tgz",
"integrity": "sha512-tjwM5exMg6BGRI+kNmTntNsvdZS1X8BFYS6tnJ2hdH0kVxM6/eVZ2xy+FqStSWvYmtfFMDLIxurorHwDKfDz5Q==",
"license": "MIT",
"dependencies": {
"run-applescript": "^7.0.0"
},
"engines": {
"node": ">=18"
},
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/color": {
"version": "3.2.1",
"resolved": "https://registry.npmjs.org/color/-/color-3.2.1.tgz",
@@ -180,6 +189,46 @@
}
}
},
"node_modules/default-browser": {
"version": "5.2.1",
"resolved": "https://registry.npmjs.org/default-browser/-/default-browser-5.2.1.tgz",
"integrity": "sha512-WY/3TUME0x3KPYdRRxEJJvXRHV4PyPoUsxtZa78lwItwRQRHhd2U9xOscaT/YTf8uCXIAjeJOFBVEh/7FtD8Xg==",
"license": "MIT",
"dependencies": {
"bundle-name": "^4.1.0",
"default-browser-id": "^5.0.0"
},
"engines": {
"node": ">=18"
},
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/default-browser-id": {
"version": "5.0.0",
"resolved": "https://registry.npmjs.org/default-browser-id/-/default-browser-id-5.0.0.tgz",
"integrity": "sha512-A6p/pu/6fyBcA1TRz/GqWYPViplrftcW2gZC9q79ngNCKAeR/X3gcEdXQHl4KNXV+3wgIJ1CPkJQ3IHM6lcsyA==",
"license": "MIT",
"engines": {
"node": ">=18"
},
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/define-lazy-prop": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-3.0.0.tgz",
"integrity": "sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==",
"license": "MIT",
"engines": {
"node": ">=12"
},
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/eastasianwidth": {
"version": "0.2.0",
"resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz",
@@ -253,6 +302,39 @@
"integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==",
"license": "MIT"
},
"node_modules/is-docker": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/is-docker/-/is-docker-3.0.0.tgz",
"integrity": "sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==",
"license": "MIT",
"bin": {
"is-docker": "cli.js"
},
"engines": {
"node": "^12.20.0 || ^14.13.1 || >=16.0.0"
},
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/is-inside-container": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/is-inside-container/-/is-inside-container-1.0.0.tgz",
"integrity": "sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==",
"license": "MIT",
"dependencies": {
"is-docker": "^3.0.0"
},
"bin": {
"is-inside-container": "cli.js"
},
"engines": {
"node": ">=14.16"
},
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/is-stream": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz",
@@ -265,6 +347,21 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/is-wsl": {
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-3.1.0.tgz",
"integrity": "sha512-UcVfVfaK4Sc4m7X3dUSoHoozQGBEFeDC+zVo06t98xe8CzHSZZBekNXH+tu0NalHolcJ/QAGqS46Hef7QXBIMw==",
"license": "MIT",
"dependencies": {
"is-inside-container": "^1.0.0"
},
"engines": {
"node": ">=16"
},
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/kuler": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/kuler/-/kuler-2.0.0.tgz",
@@ -303,6 +400,24 @@
"fn.name": "1.x.x"
}
},
"node_modules/open": {
"version": "10.1.2",
"resolved": "https://registry.npmjs.org/open/-/open-10.1.2.tgz",
"integrity": "sha512-cxN6aIDPz6rm8hbebcP7vrQNhvRcveZoJU72Y7vskh4oIm+BZwBECnx5nTmrlres1Qapvx27Qo1Auukpf8PKXw==",
"license": "MIT",
"dependencies": {
"default-browser": "^5.2.1",
"define-lazy-prop": "^3.0.0",
"is-inside-container": "^1.0.0",
"is-wsl": "^3.1.0"
},
"engines": {
"node": ">=18"
},
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/pend": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz",
@@ -329,6 +444,18 @@
"node": ">= 6"
}
},
"node_modules/run-applescript": {
"version": "7.0.0",
"resolved": "https://registry.npmjs.org/run-applescript/-/run-applescript-7.0.0.tgz",
"integrity": "sha512-9by4Ij99JUr/MCFBUkDKLWK3G9HVXmabKz9U5MlIAIuvuzkiOicRYs8XJLxX+xahD+mLiiCYDqF9dKAgtzKP1A==",
"license": "MIT",
"engines": {
"node": ">=18"
},
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/runes": {
"version": "0.4.3",
"resolved": "https://registry.npmjs.org/runes/-/runes-0.4.3.tgz",
+3 -3
View File
@@ -9,11 +9,11 @@
buildNpmPackage (finalAttrs: {
pname = "amp-cli";
version = "0.0.1749297687-g3e4f54";
version = "0.0.1750147289-g2a47fe";
src = fetchzip {
url = "https://registry.npmjs.org/@sourcegraph/amp/-/amp-${finalAttrs.version}.tgz";
hash = "sha256-WreJsyqyW/Z+TUPnQC7sKIpSgdpIzXQTgkXBthKCMZ4=";
hash = "sha256-mP4YOa2J4K3mr7PpRn+Nn+AMcmMSSTNcB59QEdAFZeE=";
};
postPatch = ''
@@ -45,7 +45,7 @@ buildNpmPackage (finalAttrs: {
chmod +x bin/amp-wrapper.js
'';
npmDepsHash = "sha256-dAJePSRKnXrdW8hr72JNxunQAiUtxH53sDrtYYX6++0=";
npmDepsHash = "sha256-aF4oMWmq4+tuXAhwDgqTX3dfHNV1upyD0dqBEoJiru8=";
propagatedBuildInputs = [
ripgrep
@@ -95,6 +95,5 @@ stdenv.mkDerivation rec {
'';
homepage = "http://www.andyetitmoves.net/";
license = licenses.unfree;
maintainers = with maintainers; [ bluescreen303 ];
};
}
+3 -3
View File
@@ -1,5 +1,5 @@
{
"url": "https://web.archive.org/web/20250504163105/https://nav.gov.hu/pfile/programFile?path=%252Fnyomtatvanyok%252Fletoltesek%252Fnyomtatvanykitolto_programok%252Fnyomtatvany_apeh%252Fkeretprogramok%252FAbevJava",
"sha256": "0a7bdyadk00ik5kkx65v6qx433fcd8n7aj42fmzcijp5raz63plv",
"version": "3.42.0"
"url": "https://web.archive.org/web/20250603123530/https://nav.gov.hu/pfile/programFile?path=%252Fnyomtatvanyok%252Fletoltesek%252Fnyomtatvanykitolto_programok%252Fnyomtatvany_apeh%252Fkeretprogramok%252FAbevJava",
"sha256": "0f25ppjq98kcib6d5c0qrwx9pcakj6g2cgsxh9x7cl149c0fy8d5",
"version": "3.43.0"
}
+51
View File
@@ -0,0 +1,51 @@
{
lib,
stdenvNoCC,
fetchurl,
cpio,
xar,
}:
stdenvNoCC.mkDerivation (finalAttrs: {
pname = "arq";
version = "7.35.1";
src = fetchurl {
url = "https://www.arqbackup.com/download/arqbackup/Arq${finalAttrs.version}.pkg";
hash = "sha256-xkrWH2r3DaxsBBdyu0Wj/qzjJaa9DTZCzEaB/nb2WyY=";
};
nativeBuildInputs = [
cpio
xar
];
unpackPhase = ''
runHook preUnpack
xar -xf $src
zcat client.pkg/Payload | cpio -i
runHook postUnpack
'';
installPhase = ''
mkdir -p $out
cp -R Applications $out
'';
dontBuild = true;
# Arq is notarized
dontFixup = true;
meta = {
changelog = "https://www.arqbackup.com/download/arqbackup/arq7_release_notes.html";
description = "Multi-cloud backup software for your Macs";
homepage = "https://www.arqbackup.com/";
license = lib.licenses.unfree;
sourceProvenance = with lib.sourceTypes; [ binaryNativeCode ];
maintainers = [ lib.maintainers.Enzime ];
platforms = lib.platforms.darwin;
};
})
+5 -5
View File
@@ -1,9 +1,9 @@
{
"owner": "advplyr",
"repo": "audiobookshelf",
"rev": "c377b57601f82f76d677b09e6bbabda732c18861",
"hash": "sha256-q0Qlslw5e1nHDqLfLi4AvD3vAzoWvz9/0/lMgqn+y8Y=",
"version": "2.24.0",
"depsHash": "sha256-s4U+Hgace+d+zRaHeJkxh6TWgClY6T+tlmoyZq7L7Rk=",
"clientDepsHash": "sha256-fAtr5GW8AInIDgSEjv1JwKW9GNZGYImD3LxerkUqH8k="
"rev": "f3f5f3b9bd540d311a6ab0a99b9317a5142755ea",
"hash": "sha256-tymJLs0gucJX0n0helxAkCrifG4uWcxaEBpgK7uVG2c=",
"version": "2.25.1",
"depsHash": "sha256-JFoE4jNyIfdk/uhhbdP3flcNRus8FvwRNrs+hf4YJ5E=",
"clientDepsHash": "sha256-s8fybUu3hJozX57RfsxBSy09QjOiVGO4vg7woOEqMi4="
}
@@ -9,6 +9,7 @@
dbus,
dbus-test-runner,
evolution-data-server,
extra-cmake-modules,
glib,
gst_all_1,
gtest,
@@ -16,7 +17,9 @@
libaccounts-glib,
libayatana-common,
libical,
mkcal,
libnotify,
libsForQt5,
libuuid,
lomiri,
pkg-config,
@@ -25,51 +28,57 @@
systemd,
tzdata,
wrapGAppsHook3,
# Generates a different indicator
enableLomiriFeatures ? false,
}:
let
edsDataDir = "${evolution-data-server}/share";
in
stdenv.mkDerivation (finalAttrs: {
pname = "ayatana-indicator-datetime";
version = "24.5.1";
pname = "${if enableLomiriFeatures then "lomiri" else "ayatana"}-indicator-datetime";
version = "25.4.0";
src = fetchFromGitHub {
owner = "AyatanaIndicators";
repo = "ayatana-indicator-datetime";
tag = finalAttrs.version;
hash = "sha256-rbKAixFjXOMYzduABmoIXissQXAoehfbkNntdtRyAqA=";
hash = "sha256-8E9ucy8I0w9DDzsLtzJgICz/e0TNqOHgls9LrgA5nk4=";
};
postPatch = ''
# Override systemd prefix
substituteInPlace data/CMakeLists.txt \
--replace-fail 'pkg_get_variable(SYSTEMD_USER_DIR systemd systemduserunitdir)' 'pkg_get_variable(SYSTEMD_USER_DIR systemd systemduserunitdir DEFINE_VARIABLES prefix=''${CMAKE_INSTALL_PREFIX})' \
--replace-fail 'XDG_AUTOSTART_DIR "/etc' 'XDG_AUTOSTART_DIR "''${CMAKE_INSTALL_FULL_SYSCONFDIR}'
# Looking for Lomiri schemas for code generation
substituteInPlace src/CMakeLists.txt \
--replace-fail '/usr/share/accountsservice' '${lomiri.lomiri-schemas}/share/accountsservice'
'';
postPatch =
''
# Override systemd prefix
substituteInPlace data/CMakeLists.txt \
--replace-fail 'pkg_get_variable(SYSTEMD_USER_DIR systemd systemduserunitdir)' 'pkg_get_variable(SYSTEMD_USER_DIR systemd systemduserunitdir DEFINE_VARIABLES prefix=''${CMAKE_INSTALL_PREFIX})' \
--replace-fail 'XDG_AUTOSTART_DIR "/etc' 'XDG_AUTOSTART_DIR "''${CMAKE_INSTALL_FULL_SYSCONFDIR}'
''
+ lib.optionalString enableLomiriFeatures ''
# Looking for Lomiri schemas for code generation
substituteInPlace src/CMakeLists.txt \
--replace-fail '/usr/share/accountsservice' '${lomiri.lomiri-schemas}/share/accountsservice'
'';
strictDeps = true;
nativeBuildInputs = [
cmake
glib # for schema hook
intltool
pkg-config
wrapGAppsHook3
];
nativeBuildInputs =
[
cmake
glib # for schema hook
intltool
pkg-config
wrapGAppsHook3
]
++ lib.optionals enableLomiriFeatures [
libsForQt5.wrapQtAppsHook
];
buildInputs =
[
ayatana-indicator-messages
evolution-data-server
glib
libaccounts-glib
libayatana-common
libical
libnotify
libuuid
properties-cpp
@@ -82,10 +91,30 @@ stdenv.mkDerivation (finalAttrs: {
])
++ (with lomiri; [
cmake-extras
lomiri-schemas
lomiri-sounds
lomiri-url-dispatcher
]);
])
++ (
if enableLomiriFeatures then
(
[
extra-cmake-modules
mkcal
]
++ (with libsForQt5; [
kcalendarcore
qtbase
])
++ (with lomiri; [
lomiri-schemas
lomiri-sounds
lomiri-url-dispatcher
])
)
else
[
evolution-data-server
libical
]
);
nativeCheckInputs = [
dbus
@@ -99,12 +128,31 @@ stdenv.mkDerivation (finalAttrs: {
gtest
];
cmakeFlags = [
(lib.cmakeBool "GSETTINGS_LOCALINSTALL" true)
(lib.cmakeBool "GSETTINGS_COMPILE" true)
(lib.cmakeBool "ENABLE_LOMIRI_FEATURES" true)
(lib.cmakeBool "ENABLE_TESTS" finalAttrs.finalPackage.doCheck)
];
dontWrapQtApps = true;
cmakeFlags =
[
(lib.cmakeBool "GSETTINGS_LOCALINSTALL" true)
(lib.cmakeBool "GSETTINGS_COMPILE" true)
(lib.cmakeBool "ENABLE_LOMIRI_FEATURES" enableLomiriFeatures)
(lib.cmakeBool "ENABLE_TESTS" finalAttrs.finalPackage.doCheck)
]
++ lib.optionals enableLomiriFeatures [
(lib.cmakeFeature "CMAKE_CTEST_ARGUMENTS" (
lib.concatStringsSep ";" [
# Exclude tests
"-E"
(lib.strings.escapeShellArg "(${
lib.concatStringsSep "|" [
# Don't know why these fail yet
"^test-eds-ics-repeating-events"
"^test-eds-ics-nonrepeating-events"
"^test-eds-ics-missing-trigger"
]
})")
]
))
];
doCheck = stdenv.buildPlatform.canExecute stdenv.hostPlatform;
@@ -112,34 +160,51 @@ stdenv.mkDerivation (finalAttrs: {
preCheck = ''
export XDG_DATA_DIRS=${
lib.strings.concatStringsSep ":" [
# org.ayatana.common schema
(glib.passthru.getSchemaDataDirPath libayatana-common)
# loading EDS engines to handle ICS-loading
edsDataDir
]
lib.strings.concatStringsSep ":" (
[
# org.ayatana.common schema
(glib.passthru.getSchemaDataDirPath libayatana-common)
]
++ lib.optionals (!enableLomiriFeatures) [
# loading EDS engines to handle ICS-loading
edsDataDir
]
)
}
'';
# schema is already added automatically by wrapper, EDS needs to be added explicitly
preFixup = ''
gappsWrapperArgs+=(
--prefix XDG_DATA_DIRS : "${edsDataDir}"
preFixup =
''
gappsWrapperArgs+=(
''
+ (
if enableLomiriFeatures then
''
"''${qtWrapperArgs[@]}"
''
else
# schema is already added automatically by wrapper, EDS needs to be added explicitly
''
--prefix XDG_DATA_DIRS : "${edsDataDir}"
''
)
'';
+ ''
)
'';
passthru = {
ayatana-indicators = {
ayatana-indicator-datetime = [
"ayatana"
"lomiri"
"${if enableLomiriFeatures then "lomiri" else "ayatana"}-indicator-datetime" = [
(if enableLomiriFeatures then "lomiri" else "ayatana")
];
};
tests = {
startup = nixosTests.ayatana-indicators;
lomiri = nixosTests.lomiri.desktop-ayatana-indicator-datetime;
};
tests =
{
startup = nixosTests.ayatana-indicators;
}
// lib.optionalAttrs enableLomiriFeatures {
lomiri = nixosTests.lomiri.desktop-ayatana-indicator-datetime;
};
updateScript = gitUpdater { };
};
@@ -152,7 +217,9 @@ stdenv.mkDerivation (finalAttrs: {
homepage = "https://github.com/AyatanaIndicators/ayatana-indicator-datetime";
changelog = "https://github.com/AyatanaIndicators/ayatana-indicator-datetime/blob/${finalAttrs.version}/ChangeLog";
license = lib.licenses.gpl3Only;
maintainers = with lib.maintainers; [ OPNA2608 ];
teams = [
lib.teams.lomiri
];
platforms = lib.platforms.linux;
};
})
+4 -2
View File
@@ -41,6 +41,7 @@
cubeb,
useDiscordRichPresence ? true,
rapidjson,
enableSSE42 ? true, # Disable if your hardware doesn't support SSE 4.2 (mainly CPUs before 2011)
}:
let
inherit (lib)
@@ -51,11 +52,11 @@ let
in
stdenv.mkDerivation (finalAttrs: {
pname = "azahar";
version = "2121.2";
version = "2122";
src = fetchzip {
url = "https://github.com/azahar-emu/azahar/releases/download/${finalAttrs.version}/azahar-unified-source-${finalAttrs.version}.tar.xz";
hash = "sha256-zXkLew7tErPjygYIXPnimfZnekFMCzY+95TlW1DNQRc=";
hash = "sha256-isohwigDgqwPJxinBju1biAXC3CX3JrNJiQ1NY+NjRo=";
};
nativeBuildInputs = [
@@ -142,6 +143,7 @@ stdenv.mkDerivation (finalAttrs: {
(cmakeBool "ENABLE_QT_TRANSLATION" enableQtTranslations)
(cmakeBool "ENABLE_CUBEB" enableCubeb)
(cmakeBool "USE_DISCORD_PRESENCE" useDiscordRichPresence)
(cmakeBool "ENABLE_SSE42" enableSSE42)
];
meta = {
+37
View File
@@ -0,0 +1,37 @@
{
lib,
fetchFromGitHub,
rustPlatform,
versionCheckHook,
}:
rustPlatform.buildRustPackage (finalAttrs: {
pname = "bagr";
version = "0.3.0";
src = fetchFromGitHub {
owner = "pwinckles";
repo = "bagr";
tag = "v${finalAttrs.version}";
hash = "sha256-tvo9/ywPhYgqj4i+o6lYOmrVnLcyciM7HPdT2dKerO8=";
};
cargoHash = "sha256-r4tgDPyLxTjq/sxNLvlX/2MePUfOwNgranQSSbgDtu0=";
nativeInstallCheckInputs = [
versionCheckHook
];
doInstallCheck = true;
versionCheckProgramArg = "--version";
meta = {
description = "Command line utility for interacting with BagIt bags (RFC 8493)";
homepage = "https://github.com/pwinckles/bagr";
license = lib.licenses.asl20;
mainProgram = "bagr";
maintainers = with lib.maintainers; [
jezcope
];
platforms = with lib.platforms; unix ++ windows;
};
})
+3 -3
View File
@@ -16,16 +16,16 @@
buildNpmPackage rec {
pname = "basedpyright";
version = "1.29.2";
version = "1.29.4";
src = fetchFromGitHub {
owner = "detachhead";
repo = "basedpyright";
tag = "v${version}";
hash = "sha256-xzbIAzZS6kCrFDcbh7uFWV8Rbs91yx25RVKeGMSM5Dc=";
hash = "sha256-LT0ZixIxUXqNyK08ue+fbDAk/g+ibJVWQbi/LLrdLuM=";
};
npmDepsHash = "sha256-s2Bavzd1IGuI7HfdKLAsFWHmr1RxBZO/21KXt060jbI=";
npmDepsHash = "sha256-aJte4ApeXJQ9EYn87Uo+Xx7s+wi80I1JsZHeqklHGs4=";
npmWorkspace = "packages/pyright";
preBuild = ''
@@ -0,0 +1,40 @@
{
lib,
rustPlatform,
fetchFromGitHub,
nix-update-script,
}:
rustPlatform.buildRustPackage (finalAttrs: {
pname = "bash-pinyin-completion-rs";
version = "0.2.3";
src = fetchFromGitHub {
owner = "AOSC-Dev";
repo = "bash-pinyin-completion-rs";
tag = "v${finalAttrs.version}";
hash = "sha256-h4l4plGMn5WMhU60+m60Uf45UfPNDb0X+E2LK3U3jxw=";
};
strictDeps = true;
cargoHash = "sha256-SAegFsmn91xrWg0o7lHgk+vRqTQhabev9dP+Lbk/h5s=";
postInstall = ''
substituteInPlace scripts/bash_pinyin_completion \
--replace-fail 'bash-pinyin-completion-rs' "$out/bin/bash-pinyin-completion-rs" \
--replace-fail '#!/usr/bin/env bash' ""
install -Dm644 scripts/bash_pinyin_completion $out/etc/bash_completion.d/pinyin_completion.bash
'';
passthru.updateScript = nix-update-script { };
meta = {
description = "Simple completion script for pinyin, written in rust";
homepage = "https://github.com/AOSC-Dev/bash-pinyin-completion-rs";
changelog = "https://github.com/AOSC-Dev/bash-pinyin-completion-rs/releases/tag/v${finalAttrs.version}";
license = lib.licenses.gpl3Only;
maintainers = with lib.maintainers; [ moraxyc ];
mainProgram = "bash-pinyin-completion-rs";
};
})
+3 -3
View File
@@ -7,13 +7,13 @@
buildGoModule rec {
pname = "benthos";
version = "4.51.0";
version = "4.52.0";
src = fetchFromGitHub {
owner = "redpanda-data";
repo = "benthos";
tag = "v${version}";
hash = "sha256-GOI878JBRXrJsy0MRFyW6pH4UGj6ZOOqBElLUesqZ24=";
hash = "sha256-TGGDZzjVgRADJq5u4b5RznVzIxk2EUKM3Y2rbhgv7yQ=";
};
proxyVendor = true;
@@ -22,7 +22,7 @@ buildGoModule rec {
"cmd/benthos"
];
vendorHash = "sha256-S3rxNRr1O8+90VTUEFBPdo3uUftqSj8lvCNAdQNs7SQ=";
vendorHash = "sha256-lNn/lqY1Q/8mRERrgPuE9GEun6tqrVQjtVUGRJk5W+0=";
# doCheck = false;
@@ -0,0 +1,74 @@
{
lib,
stdenv,
fetchFromGitHub,
cmake,
makeWrapper,
ninja,
SDL2,
SDL2_image,
SDL2_mixer,
nix-update-script,
}:
stdenv.mkDerivation (finalAttrs: {
pname = "biplanes-revival";
version = "1.2.1";
src = fetchFromGitHub {
owner = "regular-dev";
repo = "biplanes-revival";
tag = "v${finalAttrs.version}";
hash = "sha256-rdPcI4j84fVKNwv2OQ9gwC0X2CHlObYfSYkCMlcm4sM=";
fetchSubmodules = true;
};
nativeBuildInputs = [
cmake
makeWrapper
ninja
];
buildInputs = [
SDL2
SDL2_image
SDL2_mixer
];
strictDeps = true;
postInstall = ''
id="org.regular_dev.biplanes_revival"
install -Dm644 $src/flatpak-data/$id.desktop -t $out/share/applications
install -Dm644 $src/flatpak-data/$id.metainfo.xml -t $out/share/metainfo
install -Dm644 $src/flatpak-data/$id.svg -t $out/share/icons/hicolor/scalable/apps
# Move assets directory into the preferred location.
mkdir -p $out/share/biplanes-revival
mv $out/bin/assets $out/share/biplanes-revival
# Remove TimeUtils headers.
rm -rf $out/include
'';
postFixup = ''
# Set assets root, the default is the current working directory.
# The game automatically appends "/assets" to the variable.
wrapProgram $out/bin/BiplanesRevival \
--set BIPLANES_ASSETS_ROOT "$out/share/biplanes-revival";
'';
env.NIX_CFLAGS_COMPILE = "-I ../deps/TimeUtils/include";
passthru.updateScript = nix-update-script { };
meta = {
mainProgram = "BiplanesRevival";
description = "Old cellphone arcade recreated for PC";
homepage = "https://regular-dev.org/biplanes-revival";
changelog = "https://github.com/regular-dev/biplanes-revival/releases/tag/v${finalAttrs.version}";
license = lib.licenses.gpl3Only;
platforms = lib.platforms.unix;
maintainers = with lib.maintainers; [ federicoschonborn ];
};
})
+3 -3
View File
@@ -6,17 +6,17 @@
rustPlatform.buildRustPackage rec {
pname = "buffrs";
version = "0.10.0";
version = "0.11.0";
src = fetchFromGitHub {
owner = "helsing-ai";
repo = "buffrs";
tag = "v${version}";
hash = "sha256-lqSaXTuIXeuvS01i/35oLUU39FpVEpMoR3OSRstKhjI=";
hash = "sha256-VHzPOFOkwz3QlDt25gBbishM4ujtEPFjA21WuiNVw00=";
};
useFetchCargoVendor = true;
cargoHash = "sha256-3urjpHMW46ZnPMsiaRgRyhFOKA+080MauNESRjf/W1Y=";
cargoHash = "sha256-/cdBt23VSmwN/C2XdHeeRjUSqLWiEheqVl+hfEDKIP0=";
# Disabling tests meant to work over the network, as they will fail
# inside the builder.
+14 -2
View File
@@ -7,6 +7,7 @@
cacert,
versionCheckHook,
writableTmpDirAsHomeHook,
stdenv,
}:
let
version = "4.10.0";
@@ -26,13 +27,24 @@ let
substituteInPlace pyproject.toml --replace-fail "setuptools==75.8.0" "setuptools"
substituteInPlace craft_application/git/_git_repo.py --replace-fail "/snap/core22/current/etc/ssl/certs" "${cacert}/etc/ssl/certs"
'';
disabledTestPaths = [
# These tests assert outputs of commands that assume Ubuntu-related output.
"tests/unit/services/test_lifecycle.py"
];
disabledTests =
old.disabledTests
++ lib.optionals stdenv.hostPlatform.isAarch64 [
"test_process_grammar_full"
];
});
};
};
in
python.pkgs.buildPythonApplication rec {
pname = "charmcraft";
version = "3.5.0";
version = "3.5.1";
pyproject = true;
@@ -40,7 +52,7 @@ python.pkgs.buildPythonApplication rec {
owner = "canonical";
repo = "charmcraft";
tag = version;
hash = "sha256-NIOfjd4r9mDP0x1IpIVJlU+Aza0a17bc3jDxtInrf4A=";
hash = "sha256-4zlUHttny6nIRhx/5aDz2sh1Va0+nN+7cezBGtt5Img=";
};
postPatch = ''
+3 -3
View File
@@ -16,13 +16,13 @@
stdenv.mkDerivation {
pname = "chawan";
version = "0-unstable-2025-05-25";
version = "0-unstable-2025-06-14";
src = fetchFromSourcehut {
owner = "~bptato";
repo = "chawan";
rev = "e571c8b1ede3a3c6dc4a5a4d0c6c8f48473076d2";
hash = "sha256-OBXc4jnB5Y+KXO9J7P1Z2HXkNCS+xnG+IGWw8wb66J8=";
rev = "288896b6f3da9bb6e4e24190d4163e031f8a2751";
hash = "sha256-/8pp1E4YAXXh8ORRHseIe48BIG14u8gNkmotA+CXPYY=";
};
patches = [ ./mancha-augment-path.diff ];
+2 -2
View File
@@ -19,12 +19,12 @@ let
in
stdenv.mkDerivation rec {
pname = "circt";
version = "1.119.0";
version = "1.122.0";
src = fetchFromGitHub {
owner = "llvm";
repo = "circt";
rev = "firtool-${version}";
hash = "sha256-e9tF/A7VnZblhS3GO3ezdEWqCYKHMwgwzbG4wmTw1sE=";
hash = "sha256-8q/oh/LjeOsfQSQBfnyhQjGIYtRLgyEENsyfgxyTnv0=";
fetchSubmodules = true;
};
+4 -4
View File
@@ -6,13 +6,13 @@
"packages": {
"": {
"dependencies": {
"@anthropic-ai/claude-code": "^1.0.21"
"@anthropic-ai/claude-code": "^1.0.24"
}
},
"node_modules/@anthropic-ai/claude-code": {
"version": "1.0.21",
"resolved": "https://registry.npmjs.org/@anthropic-ai/claude-code/-/claude-code-1.0.21.tgz",
"integrity": "sha512-Ig+OPSl7e77SJrE2jB8p4qnnyS/+iGItttIxh0oxkZI3qSKu/K3Z7zx8r4YTDCo7XJsoYnV0MNsDBcXWa/YKUg==",
"version": "1.0.24",
"resolved": "https://registry.npmjs.org/@anthropic-ai/claude-code/-/claude-code-1.0.24.tgz",
"integrity": "sha512-4S6ly2297ngNlto7IFZeEicS9u0yRDhocOzndWFovGBb+iUoEPKdZa/rhVk/tcyCADL6S+mMkiGQOlqFDrN3JQ==",
"hasInstallScript": true,
"license": "SEE LICENSE IN README.md",
"bin": {
+3 -3
View File
@@ -7,16 +7,16 @@
buildNpmPackage rec {
pname = "claude-code";
version = "1.0.21";
version = "1.0.24";
nodejs = nodejs_20; # required for sandboxed Nix builds on Darwin
src = fetchzip {
url = "https://registry.npmjs.org/@anthropic-ai/claude-code/-/claude-code-${version}.tgz";
hash = "sha256-CtNY7CduAg/QWs58jFnJ/3CMRpRKrJzD49Gqw7kSsao=";
hash = "sha256-12nmnVM0/+rhWrkIQXttASKPZgGQMvrzWF/JDwR7If4=";
};
npmDepsHash = "sha256-Sll/rt4TjxjfD6qFnAu3SQxv8JIKvH0NJGO0zJd9xpk=";
npmDepsHash = "sha256-0jrARMOuJCU5MEigk0iYspUUHCB6APbCxPpqcp+5ktA=";
postPatch = ''
cp ${./package-lock.json} package-lock.json
+2 -2
View File
@@ -28,11 +28,11 @@ let
in
stdenv.mkDerivation rec {
pname = "clightning";
version = "25.02.2";
version = "25.05";
src = fetchurl {
url = "https://github.com/ElementsProject/lightning/releases/download/v${version}/clightning-v${version}.zip";
hash = "sha256-2wp9o1paWJWfxIvm9BDnsKX3GDUXKaPkpB89cwb6Oj8=";
hash = "sha256-ANYzpjVw9kGdsNvXW1A7sEug9utGmJTab87SqJSdgAc=";
};
# when building on darwin we need cctools to provide the correct libtool
+2 -2
View File
@@ -7,13 +7,13 @@
stdenv.mkDerivation rec {
pname = "clipper2";
version = "1.5.2";
version = "1.5.3";
src = fetchFromGitHub {
owner = "AngusJohnson";
repo = "Clipper2";
rev = "Clipper2_${version}";
hash = "sha256-UsTOqejcN8our4UswFBvPC5fV52qJfjQYoVMEU6vDPE=";
hash = "sha256-6lvzU93+UnArEtRe2mJ4YB16+5sDCrBcPzljNAEFt8M=";
};
sourceRoot = "${src.name}/CPP";
+2 -2
View File
@@ -10,11 +10,11 @@
buildGraalvmNativeImage (finalAttrs: {
pname = "clojure-lsp";
version = "2025.05.27-13.56.57";
version = "2025.06.06-19.04.49";
src = fetchurl {
url = "https://github.com/clojure-lsp/clojure-lsp/releases/download/${finalAttrs.version}/clojure-lsp-standalone.jar";
hash = "sha256-CIly8eufuI/ENgiamKfhnFe+0dssDKEl4MYDJf4Sm/k=";
hash = "sha256-MiCwqlgvA9u64Fs4kkJta34gtsapyelbU0be/9UBJsk=";
};
extraNativeImageBuildArgs = [
+2 -2
View File
@@ -9,13 +9,13 @@
buildGoModule rec {
pname = "cloudflared";
version = "2025.5.0";
version = "2025.6.0";
src = fetchFromGitHub {
owner = "cloudflare";
repo = "cloudflared";
tag = version;
hash = "sha256-ZnkE9x4A9HoiSXzvYuzyW/dH08r0aJUk/q6gFVgtTjk=";
hash = "sha256-yDYfOP1rsiTZqcVRRtTw82I2Vh0WdpUCB1VTWuX3GWs=";
};
vendorHash = null;
+2 -2
View File
@@ -11,7 +11,7 @@
stdenv.mkDerivation rec {
pname = "codeql";
version = "2.21.3";
version = "2.21.4";
dontConfigure = true;
dontBuild = true;
@@ -19,7 +19,7 @@ stdenv.mkDerivation rec {
src = fetchzip {
url = "https://github.com/github/codeql-cli-binaries/releases/download/v${version}/codeql.zip";
hash = "sha256-faScyQ8Y9MOkWSYppAE09yEaL/+m3mPGkcfCtBsCdUk=";
hash = "sha256-iC6P/GhMw7Sf8Ic6oglB+GFLWBrZZ+YuOJbyNm99ypc=";
};
nativeBuildInputs = [
+3 -3
View File
@@ -24,13 +24,13 @@
stdenv.mkDerivation (finalAttrs: {
pname = "cubeb";
version = "0-unstable-2025-06-03";
version = "0-unstable-2025-06-16";
src = fetchFromGitHub {
owner = "mozilla";
repo = "cubeb";
rev = "24c170b2346bb675456449f51406dac6442a84a7";
hash = "sha256-/XTDaG48IFPFPrEcDd3IqX4bN+VbrpaHpzd/7N8J3a8=";
rev = "566c73da47668ca85817108b749a13ac9c3f5a9d";
hash = "sha256-qYDsRhVBHLOVpWwtRNUtnZRZZq9Rot1pOn+4let6v6I=";
};
outputs = [
+2 -2
View File
@@ -13,13 +13,13 @@ let
in
stdenv.mkDerivation (finalAttrs: {
pname = "darkly-qt${qtMajorVersion}";
version = "0.5.20";
version = "0.5.21";
src = fetchFromGitHub {
owner = "Bali10050";
repo = "Darkly";
tag = "v${finalAttrs.version}";
hash = "sha256-3/oJbf7QHaFyBnrEnZFpWgXbRc5wAFj9RZ7iQEBSZNw=";
hash = "sha256-1WErpDYTlMW/889Efe3OUM3uwt5w+EttjOGoBolBZvE=";
};
nativeBuildInputs = [
+2 -2
View File
@@ -23,13 +23,13 @@ let
in
buildDartApplication rec {
pname = "dart-sass";
version = "1.89.1";
version = "1.89.2";
src = fetchFromGitHub {
owner = "sass";
repo = "dart-sass";
tag = version;
hash = "sha256-G9uiG7fTDTx9wVH0bV7BeY2TpTEtTHDd0+z/+kLZiwU=";
hash = "sha256-IDR00pxEKQ5DQM+q0P/iRnsH80ZUbokZhbnBoomy2oQ=";
};
pubspecLock = lib.importJSON ./pubspec.lock.json;
+15 -15
View File
@@ -74,11 +74,11 @@
"dependency": "transitive",
"description": {
"name": "checked_yaml",
"sha256": "feb6bed21949061731a7a75fc5d2aa727cf160b91af9a3e464c5e3a32e28b5ff",
"sha256": "959525d3162f249993882720d52b7e0c833978df229be20702b33d48d91de70f",
"url": "https://pub.dev"
},
"source": "hosted",
"version": "2.0.3"
"version": "2.0.4"
},
"cli_config": {
"dependency": "transitive",
@@ -144,11 +144,11 @@
"dependency": "transitive",
"description": {
"name": "coverage",
"sha256": "4b8701e48a58f7712492c9b1f7ba0bb9d525644dd66d023b62e1fc8cdb560c8a",
"sha256": "aa07dbe5f2294c827b7edb9a87bba44a9c15a3cc81bc8da2ca19b37322d30080",
"url": "https://pub.dev"
},
"source": "hosted",
"version": "1.14.0"
"version": "1.14.1"
},
"crypto": {
"dependency": "direct dev",
@@ -324,11 +324,11 @@
"dependency": "direct dev",
"description": {
"name": "lints",
"sha256": "c35bb79562d980e9a453fc715854e1ed39e24e7d0297a880ef54e17f9874a9d7",
"sha256": "a5e2b223cb7c9c8efdc663ef484fdd95bb243bff242ef5b13e26883547fce9a0",
"url": "https://pub.dev"
},
"source": "hosted",
"version": "5.1.1"
"version": "6.0.0"
},
"logging": {
"dependency": "transitive",
@@ -454,11 +454,11 @@
"dependency": "transitive",
"description": {
"name": "petitparser",
"sha256": "07c8f0b1913bcde1ff0d26e57ace2f3012ccbf2b204e070290dad3bb22797646",
"sha256": "9436fe11f82d7cc1642a8671e5aa4149ffa9ae9116e6cf6dd665fc0653e3825c",
"url": "https://pub.dev"
},
"source": "hosted",
"version": "6.1.0"
"version": "7.0.0"
},
"pool": {
"dependency": "direct main",
@@ -724,21 +724,21 @@
"dependency": "transitive",
"description": {
"name": "vm_service",
"sha256": "6f82e9ee8e7339f5d8b699317f6f3afc17c80a68ebef1bc0d6f52a678c14b1e6",
"sha256": "45caa6c5917fa127b5dbcfbd1fa60b14e583afdc08bfc96dda38886ca252eb60",
"url": "https://pub.dev"
},
"source": "hosted",
"version": "15.0.1"
"version": "15.0.2"
},
"watcher": {
"dependency": "direct main",
"description": {
"name": "watcher",
"sha256": "69da27e49efa56a15f8afe8f4438c4ec02eff0a117df1b22ea4aad194fe1c104",
"sha256": "0b7fd4a0bbc4b92641dbf20adfd7e3fd1398fe17102d94b674234563e110088a",
"url": "https://pub.dev"
},
"source": "hosted",
"version": "1.1.1"
"version": "1.1.2"
},
"web": {
"dependency": "transitive",
@@ -784,11 +784,11 @@
"dependency": "transitive",
"description": {
"name": "xml",
"sha256": "b015a8ad1c488f66851d762d3090a21c600e479dc75e68328c52774040cf9226",
"sha256": "3202a47961c1a0af6097c9f8c1b492d705248ba309e6f7a72410422c05046851",
"url": "https://pub.dev"
},
"source": "hosted",
"version": "6.5.0"
"version": "6.6.0"
},
"yaml": {
"dependency": "direct dev",
@@ -802,6 +802,6 @@
}
},
"sdks": {
"dart": ">=3.7.0 <4.0.0"
"dart": ">=3.8.0 <4.0.0"
}
}
+3 -3
View File
@@ -10,13 +10,13 @@
buildGoModule (finalAttrs: {
pname = "databricks-cli";
version = "0.253.0";
version = "0.255.0";
src = fetchFromGitHub {
owner = "databricks";
repo = "cli";
rev = "v${finalAttrs.version}";
hash = "sha256-YSup167qj9yCgQEVf54ZYQ/zcprPWdQfkaTxh74eVCw=";
hash = "sha256-UoBlrNvvUbhcx5TGskDDppvnMtS1MnThcn+AVPfCjhg=";
};
# Otherwise these tests fail asserting that the version is 0.0.0-dev
@@ -25,7 +25,7 @@ buildGoModule (finalAttrs: {
--replace-fail "cli/0.0.0-dev" "cli/${finalAttrs.version}"
'';
vendorHash = "sha256-3tQgYRSCdEhnqUai8R2NFUR3gEDESQx0LfKlvKRF8Ss=";
vendorHash = "sha256-HS6btkCtGToEwIjUwgdNqeHgAK3YMCLK13yAuEzr4Qs=";
excludedPackages = [
"bundle/internal"
@@ -1,7 +1,7 @@
{
lib,
stdenv,
fetchurl,
fetchFromGitLab,
fetchpatch,
xz,
dpkg,
@@ -29,11 +29,14 @@ let
in
stdenv.mkDerivation (finalAttrs: {
pname = "debian-devscripts";
version = "2.25.14";
version = "2.25.15";
src = fetchurl {
url = "mirror://debian/pool/main/d/devscripts/devscripts_${finalAttrs.version}.tar.xz";
hash = "sha256-z95BOgGNYFvleqCv8e6B7Tl91xPzgQHkcxIg55maXvQ=";
src = fetchFromGitLab {
domain = "salsa.debian.org";
owner = "debian";
repo = "devscripts";
tag = "v${finalAttrs.version}";
hash = "sha256-s2QSfJyHsFr1eiia/yFj3jsS5k38xNewEe/g5PFpqag=";
};
patches = [
+2 -2
View File
@@ -10,13 +10,13 @@
stdenv.mkDerivation rec {
pname = "decker";
version = "1.54";
version = "1.56";
src = fetchFromGitHub {
owner = "JohnEarnest";
repo = "Decker";
rev = "v${version}";
hash = "sha256-6rKfIMEWMig1LAaLk1eSUHnc2104FuN5wTVpf1SgCtg=";
hash = "sha256-b4Z+hQ7sQf8sdFXcX4+GA9Q8gJDUeb5LuVgrd3bY6vA=";
};
buildInputs = [
-30
View File
@@ -1,30 +0,0 @@
{
deno,
lib,
}:
deno.overrideAttrs (
final: prev: {
pname = "denort";
buildAndTestSubdir = "cli/rt";
postInstall = "";
installCheckPhase = "";
passthru = { };
meta = with lib; {
homepage = "https://deno.land/";
changelog = "https://github.com/denoland/deno/releases/tag/v${final.version}";
description = "Slim version of the deno runtime, usually bundled with deno projects into standalone binaries";
license = licenses.mit;
mainProgram = "denort";
maintainers = with maintainers; [
jk
ofalvai
];
platforms = [
"x86_64-linux"
"aarch64-linux"
"x86_64-darwin"
"aarch64-darwin"
];
};
}
)
+5
View File
@@ -94,6 +94,11 @@ stdenv.mkDerivation (finalAttrs: {
bison
kdePackages.wrapQtAppsHook
wrapGAppsHook3
kdePackages.qtmultimedia
kdePackages.qtnetworkauth
kdePackages.qtscxml
kdePackages.qtwebengine
];
# Based on <https://www.digikam.org/api/index.html#externaldeps>,
+3 -3
View File
@@ -9,16 +9,16 @@
rustPlatform.buildRustPackage rec {
pname = "doh-proxy-rust";
version = "0.9.11";
version = "0.9.12";
src = fetchCrate {
inherit version;
crateName = "doh-proxy";
hash = "sha256-h2LwxqyyBPAXRr6XOmcLEmbet063kkM1ledULp3M2ek=";
hash = "sha256-Q+SjUB9XQlT+r1bjKJooqJ095yp5PMqMAQhoo+kp238=";
};
useFetchCargoVendor = true;
cargoHash = "sha256-eYJoHFIC0NF3OAbZXDWB57IOFC9JDV4IXHQgzIWMT04=";
cargoHash = "sha256-XEHeGduKsIFW0tXto8DcghzNYMGE/zkWY2cTg8ZcPcU=";
buildInputs = lib.optionals stdenv.hostPlatform.isDarwin [
libiconv
@@ -52,14 +52,14 @@
stdenv.mkDerivation (finalAttrs: {
pname = "dolphin-emu-primehack";
version = "1.0.7a";
version = "1.0.8";
src = fetchFromGitHub {
owner = "shiiion";
repo = "dolphin";
tag = finalAttrs.version;
fetchSubmodules = true;
hash = "sha256-vuTSXQHnR4HxAGGiPg5tUzfiXROU3+E9kyjH+T6zVmc=";
hash = "sha256-/9AabEJ2ZOvHeSGXWRuOucmjleBMRcJfhX+VDeldbgo=";
};
nativeBuildInputs =
+2 -2
View File
@@ -6,11 +6,11 @@
stdenvNoCC.mkDerivation rec {
pname = "doulos-sil";
version = "6.200";
version = "7.000";
src = fetchzip {
url = "https://software.sil.org/downloads/r/doulos/DoulosSIL-${version}.zip";
hash = "sha256-kpbXJVAEQLr5HMFaE+8OgAYrMGQoetgMi0CcPn4a3Xw=";
hash = "sha256-i2M7YVBiLWUZETAZEesHdyQypoO5fbWHqhpizqVLB5E=";
};
installPhase = ''
-1
View File
@@ -57,7 +57,6 @@ stdenv.mkDerivation rec {
homepage = "https://github.com/markfasheh/duperemove";
license = licenses.gpl2Only;
maintainers = with maintainers; [
bluescreen303
thoughtpolice
];
platforms = platforms.linux;
+5 -3
View File
@@ -4,6 +4,7 @@
stdenv,
bison,
boost,
brotli,
cmake,
double-conversion,
fmt,
@@ -33,14 +34,14 @@
stdenv.mkDerivation (finalAttrs: {
pname = "dwarfs";
version = "0.12.3";
version = "0.12.4";
src = fetchFromGitHub {
owner = "mhx";
repo = "dwarfs";
tag = "v${finalAttrs.version}";
fetchSubmodules = true;
hash = "sha256-DIlGeZXWyM9rMzo/DNQlzSbNBIRJhe2viXFM/zT2heY=";
hash = "sha256-EYNnmv0QKdWddIRFRsuwsazHep3nrJ8lInlR4S67rME=";
};
cmakeFlags = [
@@ -68,6 +69,7 @@ stdenv.mkDerivation (finalAttrs: {
parallel-hashmap
nlohmann_json
boost
brotli
flac # optional; allows automatic audio compression
fmt
fuse3
@@ -117,7 +119,7 @@ stdenv.mkDerivation (finalAttrs: {
description = "Fast high compression read-only file system";
homepage = "https://github.com/mhx/dwarfs";
changelog = "https://github.com/mhx/dwarfs/blob/v${finalAttrs.version}/CHANGES.md";
license = lib.licenses.gpl3Plus;
license = lib.licenses.gpl3Only;
maintainers = [ lib.maintainers.luftmensch-luftmensch ];
platforms = lib.platforms.linux;
};
+3 -3
View File
@@ -12,7 +12,7 @@
stdenv.mkDerivation (finalAttrs: {
pname = "ente-web";
version = "1.0.10";
version = "1.1.0";
src = fetchFromGitHub {
owner = "ente-io";
@@ -20,13 +20,13 @@ stdenv.mkDerivation (finalAttrs: {
sparseCheckout = [ "web" ];
tag = "photos-v${finalAttrs.version}";
fetchSubmodules = true;
hash = "sha256-WJz1Weh17DWH5qzMry1uacHBXY9ouIXWRzoiwzIsN0I=";
hash = "sha256-rHz/QlH3t+J2oz0s5LuWkgxGZmdiPFZXTuDI5yFajrA=";
};
sourceRoot = "${finalAttrs.src.name}/web";
offlineCache = fetchYarnDeps {
yarnLock = "${finalAttrs.src}/web/yarn.lock";
hash = "sha256-9LC5WuS1CBj3vBacXUxJXyPgvZ/zfcihjZpCiH/8Aa0=";
hash = "sha256-9BumlPzvG6dmuoFGdCAALzKpJATA3ibb1SkLtofAasI=";
};
nativeBuildInputs = [
+3 -3
View File
@@ -6,17 +6,17 @@
rustPlatform.buildRustPackage rec {
pname = "esp-generate";
version = "0.3.1";
version = "0.4.0";
src = fetchFromGitHub {
owner = "esp-rs";
repo = "esp-generate";
rev = "v${version}";
hash = "sha256-yk7iv5nq2b/1OY77818I7mXW96YxjwwJS3iiv1KXVHs=";
hash = "sha256-4RF0XcDpUcMQ0u2FTRBnZdQDM7DlaI7pl5HukMbbbBE=";
};
useFetchCargoVendor = true;
cargoHash = "sha256-ncTX9cDSAf6ZGlz0utGYxkuXcx85vt3VHQzdmQhCNf0=";
cargoHash = "sha256-c/BYf6SXOdI/K4t3fT4ycuILkIYCiSbHafLprSMvK8E=";
meta = {
description = "Template generation tool to create no_std applications targeting Espressif's chips";
+3 -3
View File
@@ -7,16 +7,16 @@
buildGoModule rec {
pname = "fabric-ai";
version = "1.4.196";
version = "1.4.209";
src = fetchFromGitHub {
owner = "danielmiessler";
repo = "fabric";
tag = "v${version}";
hash = "sha256-g2f8xpS+KA1USt7lArodTo7m7OXnzew2LSFKeVclQOE=";
hash = "sha256-kRPFTs3w5MhlCax81GrZ82GWLMTDUiyXOI9lSp4Fwkc=";
};
vendorHash = "sha256-xfNvmhHNYpanhZKT9o8kImzw4gzigpgc8ri9O1iOqwc=";
vendorHash = "sha256-GkAehT2oFG8cGe+PkceZios3ZG9S0CZs4L7slX+Dkck=";
# Fabric introduced plugin tests that fail in the nix build sandbox.
doCheck = false;
+3 -3
View File
@@ -15,19 +15,19 @@
rustPlatform.buildRustPackage rec {
pname = "faircamp";
version = "1.4.0";
version = "1.4.2";
src = fetchFromGitea {
domain = "codeberg.org";
owner = "simonrepp";
repo = "faircamp";
rev = version;
hash = "sha256-41mec9AdNdWRJz+5xFU7to/4LxIb7fEgm1EQVMAtyto=";
hash = "sha256-68wo95SjiCBS8cikMGZpnpYx7AqyIQ/szXMorirwVPk=";
};
useFetchCargoVendor = true;
cargoHash = "sha256-xLRoI4MN1DApL4jXBXnMzsqTaOVUn2FZy3o2mTetvJ8=";
cargoHash = "sha256-YyzzkWgjEKl46CfAkbFdum+AWCO0YGTXDh86mtHtCQs=";
buildFeatures = [ "libvips" ];
+13 -24
View File
@@ -1,39 +1,28 @@
{
lib,
stdenv,
fetchurl,
fetchpatch,
fetchFromGitHub,
getopt,
libjpeg,
libpng12,
giflib,
}:
stdenv.mkDerivation rec {
stdenv.mkDerivation (finalAttrs: {
pname = "fbv";
version = "1.0b";
version = "1.0c";
src = fetchurl {
url = "http://s-tech.elsat.net.pl/fbv/fbv-${version}.tar.gz";
sha256 = "0g5b550vk11l639y8p5sx1v1i6ihgqk0x1hd0ri1bc2yzpdbjmcv";
src = fetchFromGitHub {
owner = "jstkdng";
repo = "fbv";
tag = finalAttrs.version;
hash = "sha256-4tAIFklKsx2uI+FQjq9vdolYm6d6YWugioG6k2ZUMrs=";
};
patches = [
(fetchpatch {
url = "https://raw.githubusercontent.com/void-linux/void-packages/4a5bfe522ea5afd8203e804dc6a642d0871cd6dd/srcpkgs/fbv/patches/giflib-5.1.patch";
sha256 = "00q1zcn92yvvyij68bnq0m1sr3a411w914f4nyp6mpz0j5xc6dc7";
})
];
patchFlags = [ "-p0" ];
buildInputs = [
getopt
libjpeg
libpng12
giflib
];
makeFlags = [ "LDFLAGS=-lgif" ];
enableParallelBuilding = true;
@@ -41,11 +30,11 @@ stdenv.mkDerivation rec {
mkdir -p $out/{bin,man/man1}
'';
meta = with lib; {
meta = {
description = "View pictures on a linux framebuffer device";
homepage = "http://s-tech.elsat.net.pl/fbv/";
license = licenses.gpl2Only;
maintainers = with maintainers; [ peterhoeg ];
homepage = "https://github.com/jstkdng/fbv";
license = lib.licenses.gpl2Only;
maintainers = with lib.maintainers; [ peterhoeg ];
mainProgram = "fbv";
};
}
})
File diff suppressed because it is too large Load Diff
+4 -13
View File
@@ -9,29 +9,20 @@
rustPlatform.buildRustPackage rec {
pname = "fedigroups";
version = "0.4.5";
version = "0.4.6";
src = fetchFromGitea {
domain = "git.ondrovo.com";
owner = "MightyPork";
repo = "group-actor";
rev = "v${version}";
hash = "sha256-NMqoYUNN2ntye9mNC3KAAc0DBg+QY7+6/DASwHPexY0=";
hash = "sha256-Sq22CwLLR10yrN3+dR2KDoS8r99+LWOH7+l+D3RWlKw=";
forceFetchGit = true; # Archive generation is disabled on this gitea instance
leaveDotGit = true; # git command in build.rs
};
# The lockfile in the repo is not up to date
postPatch = ''
cp ${./Cargo.lock} Cargo.lock
'';
cargoLock = {
lockFile = ./Cargo.lock;
outputHashes = {
"elefren-0.22.0" = "sha256-zCmopdkBHT0gzNGQqZzsnIyMyAt0XBbQdOCpegF6TsY=";
};
};
useFetchCargoVendor = true;
cargoHash = "sha256-6UijHshvKANtMMfNADWDViDrh6bGlPvFz4xqJeWdqB0=";
nativeBuildInputs = [
pkg-config
+5 -5
View File
@@ -65,12 +65,12 @@
let
sources = {
x86_64-linux = fetchurl {
url = "https://sf3-cn.feishucdn.com/obj/ee-appcenter/9bcfe8ba/Feishu-linux_x64-7.36.11.deb";
sha256 = "sha256-iqEcwfF6z2jJ0TmFzDu2gf6eapHcJPaLSVESgtC9WUg=";
url = "https://sf3-cn.feishucdn.com/obj/ee-appcenter/91e64286/Feishu-linux_x64-7.42.17.deb";
sha256 = "sha256-Rsq+xQAyi7I1WcnkXzhPEgbUyfXU9XPVKIuv6Z9H5VA=";
};
aarch64-linux = fetchurl {
url = "https://sf3-cn.feishucdn.com/obj/ee-appcenter/484fc204/Feishu-linux_arm64-7.36.11.deb";
sha256 = "sha256-XTa5GOMBsiXI5IDhDQktSxdUfuvG7c2VWHuS76cFsqE=";
url = "https://sf3-cn.feishucdn.com/obj/ee-appcenter/49127814/Feishu-linux_arm64-7.42.17.deb";
sha256 = "sha256-UykQk8R8EDsHmRGy9BfDXhEZFlYT16bAkRuLXFZJDHw=";
};
};
@@ -133,7 +133,7 @@ let
];
in
stdenv.mkDerivation {
version = "7.36.11";
version = "7.42.17";
pname = "feishu";
src =
+3 -3
View File
@@ -10,16 +10,16 @@
buildNpmPackage rec {
pname = "firebase-tools";
version = "14.6.0";
version = "14.7.0";
src = fetchFromGitHub {
owner = "firebase";
repo = "firebase-tools";
tag = "v${version}";
hash = "sha256-gMVP55hhgAWsI+NJ0au2/E955sa3uAJ/s+0OqMuvrG0=";
hash = "sha256-sZQoP6XsJkDI6I41eQv678aDtHhaRX6u03z/D6S7nBQ=";
};
npmDepsHash = "sha256-YqRfxd3vSrZcQ7/9d2kNe3B/0ZDjcDUxr5CDthdD/tg=";
npmDepsHash = "sha256-QrJgImV7YCzME/ZwzwJP3FFvonmvCSm0hd9fLc8gyyk=";
postPatch = ''
ln -s npm-shrinkwrap.json package-lock.json
@@ -1,5 +1,6 @@
{
lib,
rust,
rustPlatform,
fetchFromGitHub,
nix-update-script,
@@ -24,12 +25,12 @@
copyDesktopItems,
}:
let
version = "1.4.12";
version = "1.5.1";
src = fetchFromGitHub {
owner = "firezone";
repo = "firezone";
tag = "gui-client-${version}";
hash = "sha256-jvrkAbXHFWdNInDCrktC7eMZQ2a/rzUxfCOny7nHQmQ=";
hash = "sha256-KozSy44Opx6cukA0QTXeMpI3fP49iyabFzPLIJckOZ4=";
};
frontend = stdenvNoCC.mkDerivation rec {
@@ -39,10 +40,12 @@ let
pnpmDeps = pnpm_9.fetchDeps {
inherit pname version;
src = "${src}/rust/gui-client";
hash = "sha256-bVWpyGwEaxYi3N6BJqOilnHJDgAykKHgRC2QKlvSm4Q=";
hash = "sha256-ttbTYBuUv0vyiYzrFATF4x/zngsRXjuLPfL3qW2HEe4=";
};
pnpmRoot = "rust/gui-client";
env.GITHUB_SHA = version;
nativeBuildInputs = [
pnpm_9.configHook
nodejs
@@ -52,8 +55,7 @@ let
runHook preBuild
cd $pnpmRoot
cp node_modules/flowbite/dist/flowbite.min.js src/
pnpm tailwindcss -i src/input.css -o src/output.css
node ./node_modules/flowbite-react/dist/cli/bin.js patch
node --max_old_space_size=1024000 ./node_modules/vite/bin/vite.js build
runHook postBuild
@@ -73,7 +75,7 @@ rustPlatform.buildRustPackage rec {
inherit version src;
useFetchCargoVendor = true;
cargoHash = "sha256-YETCRhECbMTRmNsvOFl7R2YScY6ArjsOYJKdPVuUyGI=";
cargoHash = "sha256-TDP1Z4MeQaSER8MGnCEQfIhRsakaSCeJ7boUMBYkkI0=";
sourceRoot = "${src.name}/rust";
buildAndTestSubdir = "gui-client";
RUSTFLAGS = "--cfg system_certs";
@@ -102,6 +104,9 @@ rustPlatform.buildRustPackage rec {
postPatch = ''
rm .cargo/config.toml
ln -s ${frontend} gui-client/dist
substituteInPlace gui-client/src-tauri/tauri.conf.json \
--replace-fail '../../target' '../../target/${rust.envVars.rustHostPlatformSpec}'
'';
# Tries to compile apple specific crates due to workspace dependencies,
+6 -3
View File
@@ -12,14 +12,14 @@
let
pname = "flclash";
version = "0.8.85";
version = "0.8.86";
src =
(fetchFromGitHub {
owner = "chen08209";
repo = "FlClash";
tag = "v${version}";
hash = "sha256-bMx9yQkzUZ8cJpT1WBIqmYKoUvkPND9qg26HoRiY5kM=";
hash = "sha256-bPMj9KWkup0nIhFAQ4BP8KiD8uP2/2b/GPy4APR+dho=";
fetchSubmodules = true;
}).overrideAttrs
(_: {
@@ -62,7 +62,10 @@ flutter332.buildFlutterApplication {
pubspecLock = lib.importJSON ./pubspec.lock.json;
gitHashes.flutter_js = "sha256-4PgiUL7aBnWVOmz2bcSxKt81BRVMnopabj5LDbtPYk4=";
gitHashes = {
flutter_js = "sha256-4PgiUL7aBnWVOmz2bcSxKt81BRVMnopabj5LDbtPYk4=";
re_editor = "sha256-PuaXoByTmkov2Dsz0kBHBHr/o63+jgPrnY9gpK7AOhA=";
};
nativeBuildInputs = [
copyDesktopItems
+15 -14
View File
@@ -104,11 +104,11 @@
"dependency": "transitive",
"description": {
"name": "async",
"sha256": "d2872f9c19731c2e5f10444b14686eb7cc85c76274bd6c16e1816bff9a3bab63",
"sha256": "758e6d74e971c3e5aceb4110bfd6698efc7f501675bcfe0c775459a8140750eb",
"url": "https://pub.dev"
},
"source": "hosted",
"version": "2.12.0"
"version": "2.13.0"
},
"boolean_selector": {
"dependency": "transitive",
@@ -464,11 +464,11 @@
"dependency": "transitive",
"description": {
"name": "fake_async",
"sha256": "6a95e56b2449df2273fd8c45a662d6947ce1ebb7aafe80e550a3f68297f3cacc",
"sha256": "5368f224a74523e8d2e7399ea1638b37aecfca824a3cc4dfdf77bf1fa905ac44",
"url": "https://pub.dev"
},
"source": "hosted",
"version": "1.3.2"
"version": "1.3.3"
},
"ffi": {
"dependency": "direct main",
@@ -879,11 +879,11 @@
"dependency": "direct main",
"description": {
"name": "intl",
"sha256": "d6f56758b7d3014a48af9701c085700aac781a92a87a62b1333b46d8879661cf",
"sha256": "3df61194eb431efc39c4ceba583b95633a403f46c9fd341e550ce0bfa50e9aa5",
"url": "https://pub.dev"
},
"source": "hosted",
"version": "0.19.0"
"version": "0.20.2"
},
"io": {
"dependency": "transitive",
@@ -959,11 +959,11 @@
"dependency": "transitive",
"description": {
"name": "leak_tracker",
"sha256": "c35baad643ba394b40aac41080300150a4f08fd0fd6a10378f8f7c6bc161acec",
"sha256": "6bb818ecbdffe216e81182c2f0714a2e62b593f4a4f13098713ff1685dfb6ab0",
"url": "https://pub.dev"
},
"source": "hosted",
"version": "10.0.8"
"version": "10.0.9"
},
"leak_tracker_flutter_testing": {
"dependency": "transitive",
@@ -1277,11 +1277,12 @@
"re_editor": {
"dependency": "direct main",
"description": {
"name": "re_editor",
"sha256": "17e430f0591dd361992ec2dd6f69191c1853fa46e05432e095310a8f82ee820e",
"url": "https://pub.dev"
"path": ".",
"ref": "main",
"resolved-ref": "7cda330fc33d5ef9e00333048b70ce65a5f5d550",
"url": "https://github.com/chen08209/re-editor.git"
},
"source": "hosted",
"source": "git",
"version": "0.7.0"
},
"re_highlight": {
@@ -1864,11 +1865,11 @@
"dependency": "transitive",
"description": {
"name": "vm_service",
"sha256": "0968250880a6c5fe7edc067ed0a13d4bae1577fe2771dcf3010d52c4a9d3ca14",
"sha256": "ddfa8d30d89985b96407efce8acbdd124701f96741f2d981ca860662f1c0dc02",
"url": "https://pub.dev"
},
"source": "hosted",
"version": "14.3.1"
"version": "15.0.0"
},
"watcher": {
"dependency": "transitive",

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