Merge remote-tracking branch 'origin/staging-next' into staging
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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.
|
||||
|
||||
@@ -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"
|
||||
],
|
||||
|
||||
@@ -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}
|
||||
|
||||
@@ -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).
|
||||
|
||||
|
||||
@@ -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 ];
|
||||
|
||||
@@ -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 = {
|
||||
|
||||
@@ -42,6 +42,7 @@ in
|
||||
ayatana-indicator-sound
|
||||
]
|
||||
++ (with pkgs.lomiri; [
|
||||
lomiri-indicator-datetime
|
||||
lomiri-indicator-network
|
||||
lomiri-telephony-service
|
||||
]);
|
||||
|
||||
@@ -12,7 +12,6 @@ in
|
||||
{
|
||||
name = "mongodb";
|
||||
meta.maintainers = with pkgs.lib.maintainers; [
|
||||
bluescreen303
|
||||
offline
|
||||
phile314
|
||||
niklaskorz
|
||||
|
||||
@@ -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=}"
|
||||
|
||||
|
||||
@@ -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 = [
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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
@@ -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"
|
||||
|
||||
@@ -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;
|
||||
};
|
||||
|
||||
|
||||
@@ -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/";
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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 = [
|
||||
|
||||
@@ -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
@@ -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",
|
||||
|
||||
@@ -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 ];
|
||||
};
|
||||
}
|
||||
|
||||
@@ -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"
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
};
|
||||
})
|
||||
@@ -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;
|
||||
};
|
||||
})
|
||||
|
||||
@@ -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 = {
|
||||
|
||||
@@ -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;
|
||||
};
|
||||
})
|
||||
@@ -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";
|
||||
};
|
||||
})
|
||||
@@ -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 ];
|
||||
};
|
||||
})
|
||||
@@ -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.
|
||||
|
||||
@@ -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 = ''
|
||||
|
||||
@@ -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 ];
|
||||
|
||||
@@ -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
@@ -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": {
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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";
|
||||
|
||||
@@ -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 = [
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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 = [
|
||||
|
||||
@@ -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 = [
|
||||
|
||||
@@ -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 = [
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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 = [
|
||||
|
||||
@@ -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 = [
|
||||
|
||||
@@ -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"
|
||||
];
|
||||
};
|
||||
}
|
||||
)
|
||||
@@ -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>,
|
||||
|
||||
@@ -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 =
|
||||
|
||||
@@ -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 = ''
|
||||
|
||||
@@ -57,7 +57,6 @@ stdenv.mkDerivation rec {
|
||||
homepage = "https://github.com/markfasheh/duperemove";
|
||||
license = licenses.gpl2Only;
|
||||
maintainers = with maintainers; [
|
||||
bluescreen303
|
||||
thoughtpolice
|
||||
];
|
||||
platforms = platforms.linux;
|
||||
|
||||
@@ -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;
|
||||
};
|
||||
|
||||
@@ -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 = [
|
||||
|
||||
@@ -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";
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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" ];
|
||||
|
||||
|
||||
@@ -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";
|
||||
};
|
||||
}
|
||||
})
|
||||
|
||||
Generated
-2525
File diff suppressed because it is too large
Load Diff
@@ -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
|
||||
|
||||
@@ -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 =
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
Reference in New Issue
Block a user