mirror of
https://github.com/NixOS/nixpkgs.git
synced 2026-07-06 17:13:24 -05:00
Merge master into staging-next
This commit is contained in:
commit
c95fc42eb1
224 changed files with 13412 additions and 1026 deletions
12
.github/workflows/eval.yml
vendored
12
.github/workflows/eval.yml
vendored
|
|
@ -168,6 +168,7 @@ jobs:
|
|||
needs: [eval]
|
||||
if: ${{ !cancelled() && !failure() }}
|
||||
permissions:
|
||||
pull-requests: write
|
||||
statuses: write
|
||||
timeout-minutes: 5
|
||||
steps:
|
||||
|
|
@ -254,6 +255,17 @@ jobs:
|
|||
description,
|
||||
target_url
|
||||
})
|
||||
- name: Request changes if PR is against an inappropriate branch
|
||||
if: ${{ github.event_name == 'pull_request_target' }}
|
||||
uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8.0.0
|
||||
with:
|
||||
script: |
|
||||
require('./nixpkgs/trusted/ci/github-script/check-target-branch.js')({
|
||||
github,
|
||||
context,
|
||||
core,
|
||||
dry: context.eventName == 'pull_request',
|
||||
})
|
||||
|
||||
# Creates a matrix of Eval performance for various versions and systems.
|
||||
report:
|
||||
|
|
|
|||
1
.github/workflows/merge-group.yml
vendored
1
.github/workflows/merge-group.yml
vendored
|
|
@ -84,6 +84,7 @@ jobs:
|
|||
# even though they are unused when working with the merge queue.
|
||||
permissions:
|
||||
# compare
|
||||
pull-requests: write
|
||||
statuses: write
|
||||
secrets:
|
||||
CACHIX_AUTH_TOKEN_GHA: ${{ secrets.CACHIX_AUTH_TOKEN_GHA }}
|
||||
|
|
|
|||
1
.github/workflows/pull-request-target.yml
vendored
1
.github/workflows/pull-request-target.yml
vendored
|
|
@ -81,6 +81,7 @@ jobs:
|
|||
uses: ./.github/workflows/eval.yml
|
||||
permissions:
|
||||
# compare
|
||||
pull-requests: write
|
||||
statuses: write
|
||||
with:
|
||||
artifact-prefix: ${{ inputs.artifact-prefix }}
|
||||
|
|
|
|||
135
ci/github-script/check-target-branch.js
Normal file
135
ci/github-script/check-target-branch.js
Normal file
|
|
@ -0,0 +1,135 @@
|
|||
/// @ts-check
|
||||
|
||||
// TODO: should this be combined with the branch checks in prepare.js?
|
||||
// They do seem quite similar, but this needs to run after eval,
|
||||
// and prepare.js obviously doesn't.
|
||||
|
||||
const { classify, split } = require('../supportedBranches.js')
|
||||
const { readFile } = require('node:fs/promises')
|
||||
const { postReview } = require('./reviews.js')
|
||||
|
||||
/**
|
||||
* @param {{
|
||||
* github: InstanceType<import('@actions/github/lib/utils').GitHub>,
|
||||
* context: import('@actions/github/lib/context').Context
|
||||
* core: import('@actions/core')
|
||||
* dry: boolean
|
||||
* }} CheckTargetBranchProps
|
||||
*/
|
||||
async function checkTargetBranch({ github, context, core, dry }) {
|
||||
const changed = JSON.parse(
|
||||
await readFile('comparison/changed-paths.json', 'utf-8'),
|
||||
)
|
||||
const pull_number = context.payload.pull_request?.number
|
||||
if (!pull_number) {
|
||||
core.warning(
|
||||
'Skipping checkTargetBranch: no pull_request number (is this being run as part of a merge group?)',
|
||||
)
|
||||
return
|
||||
}
|
||||
const prInfo = (
|
||||
await github.rest.pulls.get({
|
||||
...context.repo,
|
||||
pull_number,
|
||||
})
|
||||
).data
|
||||
const base = prInfo.base.ref
|
||||
const head = prInfo.head.ref
|
||||
const baseClassification = classify(base)
|
||||
const headClassification = classify(head)
|
||||
|
||||
// Don't run on, e.g., staging-nixos to master merges.
|
||||
if (headClassification.type.includes('development')) {
|
||||
core.info(
|
||||
`Skipping checkTargetBranch: PR is from a development branch (${head})`,
|
||||
)
|
||||
return
|
||||
}
|
||||
// Don't run on PRs against staging branches, wip branches, haskell-updates, etc.
|
||||
if (!baseClassification.type.includes('primary')) {
|
||||
core.info(
|
||||
`Skipping checkTargetBranch: PR is against a non-primary base branch (${base})`,
|
||||
)
|
||||
return
|
||||
}
|
||||
|
||||
const maxRebuildCount = Math.max(
|
||||
...Object.values(changed.rebuildCountByKernel),
|
||||
)
|
||||
const rebuildsAllTests =
|
||||
changed.attrdiff.changed.includes('nixosTests.simple') ?? false
|
||||
core.info(
|
||||
`checkTargetBranch: PR causes ${maxRebuildCount} rebuilds and ${rebuildsAllTests ? 'does' : 'does not'} rebuild all NixOS tests.`,
|
||||
)
|
||||
|
||||
if (maxRebuildCount >= 1000) {
|
||||
const desiredBranch =
|
||||
base === 'master' ? 'staging' : `staging-${split(base).version}`
|
||||
const body = [
|
||||
`The PR's base branch is set to \`${base}\`, but this PR causes ${maxRebuildCount} rebuilds.`,
|
||||
'It is therefore considered a mass rebuild.',
|
||||
`Please [change the base branch](https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/changing-the-base-branch-of-a-pull-request) to [the right base branch for your changes](https://github.com/NixOS/nixpkgs/blob/master/CONTRIBUTING.md#branch-conventions) (probably \`${desiredBranch}\`).`,
|
||||
].join('\n')
|
||||
|
||||
await postReview({
|
||||
github,
|
||||
context,
|
||||
core,
|
||||
dry,
|
||||
body,
|
||||
event: 'REQUEST_CHANGES',
|
||||
})
|
||||
|
||||
throw new Error('This PR is against the wrong branch.')
|
||||
} else if (rebuildsAllTests) {
|
||||
let branchText
|
||||
if (base === 'master' && maxRebuildCount >= 500) {
|
||||
branchText = '(probably either `staging-nixos` or `staging`)'
|
||||
} else if (base === 'master') {
|
||||
branchText = '(probably `staging-nixos`)'
|
||||
} else {
|
||||
branchText = `(probably \`staging-${split(base).version}\`)`
|
||||
}
|
||||
const body = [
|
||||
`The PR's base branch is set to \`${base}\`, but this PR rebuilds all NixOS tests.`,
|
||||
base === 'master' && maxRebuildCount >= 500
|
||||
? `Since this PR also causes ${maxRebuildCount} rebuilds, it may also be considered a mass rebuild.`
|
||||
: '',
|
||||
`Please [change the base branch](https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/changing-the-base-branch-of-a-pull-request) to [the right base branch for your changes](https://github.com/NixOS/nixpkgs/blob/master/CONTRIBUTING.md#branch-conventions) ${branchText}.`,
|
||||
].join('\n')
|
||||
|
||||
await postReview({
|
||||
github,
|
||||
context,
|
||||
core,
|
||||
dry,
|
||||
body,
|
||||
event: 'REQUEST_CHANGES',
|
||||
})
|
||||
|
||||
throw new Error('This PR is against the wrong branch.')
|
||||
} else if (maxRebuildCount >= 500) {
|
||||
const stagingBranch =
|
||||
base === 'master' ? 'staging' : `staging-${split(base).version}`
|
||||
const body = [
|
||||
`The PR's base branch is set to \`${base}\`, and this PR causes ${maxRebuildCount} rebuilds.`,
|
||||
`Please consider whether this PR causes a mass rebuild according to [our conventions](https://github.com/NixOS/nixpkgs/blob/master/CONTRIBUTING.md#branch-conventions).`,
|
||||
`If it does cause a mass rebuild, please [change the base branch](https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/changing-the-base-branch-of-a-pull-request) to [the right base branch for your changes](https://github.com/NixOS/nixpkgs/blob/master/CONTRIBUTING.md#branch-conventions) (probably \`${stagingBranch}\`).`,
|
||||
`If it does not cause a mass rebuild, this message can be ignored.`,
|
||||
].join('\n')
|
||||
|
||||
await postReview({
|
||||
github,
|
||||
context,
|
||||
core,
|
||||
dry,
|
||||
body,
|
||||
event: 'COMMENT',
|
||||
})
|
||||
} else {
|
||||
// Any existing reviews were dismissed by commits.js
|
||||
core.info('checkTargetBranch: this PR is against an appropriate branch.')
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = checkTargetBranch
|
||||
|
|
@ -1,3 +1,16 @@
|
|||
const eventToState = {
|
||||
COMMENT: 'COMMENTED',
|
||||
REQUEST_CHANGES: 'CHANGES_REQUESTED',
|
||||
}
|
||||
|
||||
/**
|
||||
* @param {{
|
||||
* github: InstanceType<import('@actions/github/lib/utils').GitHub>,
|
||||
* context: import('@actions/github/lib/context').Context
|
||||
* core: import('@actions/core')
|
||||
* dry: boolean
|
||||
* }} CheckTargetBranchProps
|
||||
*/
|
||||
async function dismissReviews({ github, context, dry }) {
|
||||
const pull_number = context.payload.pull_request.number
|
||||
|
||||
|
|
@ -19,13 +32,13 @@ async function dismissReviews({ github, context, dry }) {
|
|||
...context.repo,
|
||||
pull_number,
|
||||
review_id: review.id,
|
||||
message: 'All good now, thank you!',
|
||||
message: 'Review dismissed automatically',
|
||||
})
|
||||
}
|
||||
await github.graphql(
|
||||
`mutation($node_id:ID!) {
|
||||
minimizeComment(input: {
|
||||
classifier: RESOLVED,
|
||||
classifier: OUTDATED,
|
||||
subjectId: $node_id
|
||||
})
|
||||
{ clientMutationId }
|
||||
|
|
@ -36,7 +49,14 @@ async function dismissReviews({ github, context, dry }) {
|
|||
)
|
||||
}
|
||||
|
||||
async function postReview({ github, context, core, dry, body }) {
|
||||
async function postReview({
|
||||
github,
|
||||
context,
|
||||
core,
|
||||
dry,
|
||||
body,
|
||||
event = 'REQUEST_CHANGES',
|
||||
}) {
|
||||
const pull_number = context.payload.pull_request.number
|
||||
|
||||
const pendingReview = (
|
||||
|
|
@ -49,10 +69,7 @@ async function postReview({ github, context, core, dry, body }) {
|
|||
review.user?.login === 'github-actions[bot]' &&
|
||||
// If a review is still pending, we can just update this instead
|
||||
// of posting a new one.
|
||||
(review.state === 'CHANGES_REQUESTED' ||
|
||||
// No need to post a new review, if an older one with the exact
|
||||
// same content had already been dismissed.
|
||||
review.body === body),
|
||||
review.state === eventToState[event],
|
||||
)
|
||||
|
||||
if (dry) {
|
||||
|
|
@ -72,7 +89,7 @@ async function postReview({ github, context, core, dry, body }) {
|
|||
await github.rest.pulls.createReview({
|
||||
...context.repo,
|
||||
pull_number,
|
||||
event: 'REQUEST_CHANGES',
|
||||
event,
|
||||
body,
|
||||
})
|
||||
}
|
||||
|
|
|
|||
|
|
@ -105,4 +105,15 @@ program
|
|||
await run(checkCommitMessages, owner, repo, pr, options)
|
||||
})
|
||||
|
||||
program
|
||||
.command('check-target-branch')
|
||||
.description('Check that the PR is made against the correct branch')
|
||||
.argument('<owner>', 'Owner of the GitHub repository to run on (Example: NixOS)')
|
||||
.argument('<repo>', 'Name of the GitHub repository to run on (Example: nixpkgs)')
|
||||
.argument('<pr>', 'Number of the Pull Request to run on')
|
||||
.action(async (owner, repo, pr, options) => {
|
||||
const checkCommitMessages = (await import('./check-target-branch.js')).default
|
||||
await run(checkCommitMessages, owner, repo, pr, options)
|
||||
})
|
||||
|
||||
await program.parse()
|
||||
|
|
|
|||
|
|
@ -44,7 +44,7 @@ function classify(branch) {
|
|||
}
|
||||
}
|
||||
|
||||
module.exports = { classify }
|
||||
module.exports = { classify, split }
|
||||
|
||||
// If called directly via CLI, runs the following tests:
|
||||
if (!module.parent) {
|
||||
|
|
|
|||
|
|
@ -672,11 +672,30 @@ rec {
|
|||
is necessary for complex values, e.g. functions, or values that depend on
|
||||
other values or packages.
|
||||
|
||||
# Examples
|
||||
:::{.example}
|
||||
## `literalExpression` usage example
|
||||
|
||||
```nix
|
||||
llvmPackages = mkOption {
|
||||
type = types.str;
|
||||
description = ''
|
||||
Version of llvm packages to use for
|
||||
this module
|
||||
'';
|
||||
example = literalExpression ''
|
||||
llvmPackages = pkgs.llvmPackages_20;
|
||||
'';
|
||||
};
|
||||
```
|
||||
|
||||
:::
|
||||
|
||||
# Inputs
|
||||
|
||||
`text`
|
||||
|
||||
: 1\. Function argument
|
||||
: The text to render as a Nix expression
|
||||
*/
|
||||
literalExpression =
|
||||
text:
|
||||
|
|
@ -688,6 +707,49 @@ rec {
|
|||
inherit text;
|
||||
};
|
||||
|
||||
/**
|
||||
For use in the `defaultText` and `example` option attributes. Causes the
|
||||
given string to be rendered verbatim in the documentation as a code
|
||||
block with the language bassed on the provided input tag.
|
||||
|
||||
If you wish to render Nix code, please see `literalExpression`.
|
||||
|
||||
# Examples
|
||||
:::{.example}
|
||||
## `literalCode` usage example
|
||||
|
||||
```nix
|
||||
myPythonScript = mkOption {
|
||||
type = types.str;
|
||||
description = ''
|
||||
Example python script used by a module
|
||||
'';
|
||||
example = literalCode "python" ''
|
||||
print("Hello world!")
|
||||
'';
|
||||
};
|
||||
```
|
||||
|
||||
:::
|
||||
|
||||
# Inputs
|
||||
|
||||
`languageTag`
|
||||
|
||||
: The language tag to use when producing the code block (i.e. `js`, `rs`, etc).
|
||||
|
||||
`text`
|
||||
|
||||
: The text to render as a Nix expression
|
||||
*/
|
||||
literalCode =
|
||||
languageTag: text:
|
||||
lib.literalMD ''
|
||||
```${languageTag}
|
||||
${text}
|
||||
```
|
||||
'';
|
||||
|
||||
/**
|
||||
For use in the `defaultText` and `example` option attributes. Causes the
|
||||
given MD text to be inserted verbatim in the documentation, for when
|
||||
|
|
|
|||
|
|
@ -422,10 +422,10 @@
|
|||
"maintainers": {
|
||||
"Mic92": 96200,
|
||||
"kalbasit": 87115,
|
||||
"katexochen": 49727155,
|
||||
"zowoq": 59103226
|
||||
},
|
||||
"members": {
|
||||
"katexochen": 49727155,
|
||||
"mfrw": 4929861,
|
||||
"qbit": 68368
|
||||
},
|
||||
|
|
@ -730,7 +730,9 @@
|
|||
"philiptaron": 43863,
|
||||
"zowoq": 59103226
|
||||
},
|
||||
"members": {},
|
||||
"members": {
|
||||
"mdaniels5757": 8762511
|
||||
},
|
||||
"name": "Nixpkgs CI"
|
||||
},
|
||||
"nixpkgs-core": {
|
||||
|
|
|
|||
|
|
@ -34,6 +34,8 @@
|
|||
|
||||
- [Ente Auth](https://ente.io/auth/), an open source 2FA authenticator, with end-to-end encrypted backups. Available as [programs.ente-auth](#opt-programs.ente-auth.enable).
|
||||
|
||||
- [Dawarich](https://dawarich.app/), a self-hostable location history tracker. Available as [services.dawarich](#opt-services.dawarich.enable).
|
||||
|
||||
- [udp-over-tcp](https://github.com/mullvad/udp-over-tcp), a tunnel for proxying UDP traffic over a TCP stream. Available as `services.udp-over-tcp`.
|
||||
|
||||
- [Komodo Periphery](https://github.com/moghtech/komodo), a multi-server Docker and Git deployment agent by Komodo. Available as [services.komodo-periphery](#opt-services.komodo-periphery.enable).
|
||||
|
|
|
|||
|
|
@ -1597,6 +1597,7 @@
|
|||
./services/web-apps/cryptpad.nix
|
||||
./services/web-apps/dashy.nix
|
||||
./services/web-apps/davis.nix
|
||||
./services/web-apps/dawarich.nix
|
||||
./services/web-apps/dependency-track.nix
|
||||
./services/web-apps/dex.nix
|
||||
./services/web-apps/discourse.nix
|
||||
|
|
|
|||
706
nixos/modules/services/web-apps/dawarich.nix
Normal file
706
nixos/modules/services/web-apps/dawarich.nix
Normal file
|
|
@ -0,0 +1,706 @@
|
|||
{
|
||||
lib,
|
||||
pkgs,
|
||||
config,
|
||||
options,
|
||||
...
|
||||
}:
|
||||
|
||||
let
|
||||
cfg = config.services.dawarich;
|
||||
opt = options.services.dawarich;
|
||||
|
||||
dataDir = "/var/lib/dawarich";
|
||||
|
||||
isRedisUnixSocket = lib.hasPrefix "/" cfg.redis.host;
|
||||
|
||||
redisEnv =
|
||||
if isRedisUnixSocket then
|
||||
{
|
||||
REDIS_URL = "unix://${config.services.redis.servers.dawarich.unixSocket}";
|
||||
}
|
||||
else
|
||||
{
|
||||
# Does not support passwords, but upstream does not provide an adequate env variable
|
||||
# Perhaps patch or make a PR upstream in the future
|
||||
REDIS_URL = "redis://${cfg.redis.host}:${toString cfg.redis.port}";
|
||||
};
|
||||
|
||||
env = {
|
||||
RAILS_ENV = "production";
|
||||
NODE_ENV = "production";
|
||||
BUNDLE_USER_HOME = "/tmp/bundle"; # will use private tmp inside systemd unit
|
||||
|
||||
SELF_HOSTED = "true";
|
||||
STORE_GEODATA = "true";
|
||||
APPLICATION_PROTOCOL = "http";
|
||||
TIME_ZONE = config.time.timeZone; # otherwise upstream forces it to Europe/London
|
||||
DOMAIN = cfg.localDomain;
|
||||
APPLICATION_HOSTS = "127.0.0.1,::1,${cfg.localDomain}";
|
||||
|
||||
BOOTSNAP_CACHE_DIR = "/var/cache/dawarich/precompile";
|
||||
LD_PRELOAD = "${lib.getLib pkgs.jemalloc}/lib/libjemalloc.so";
|
||||
|
||||
DATABASE_USER = cfg.database.user;
|
||||
DATABASE_HOST = cfg.database.host;
|
||||
DATABASE_NAME = cfg.database.name;
|
||||
DATABASE_PORT = toString cfg.database.port;
|
||||
|
||||
SMTP_SERVER = cfg.smtp.host;
|
||||
SMTP_PORT = toString cfg.smtp.port;
|
||||
SMTP_FROM = cfg.smtp.fromAddress;
|
||||
SMTP_USERNAME = cfg.smtp.user;
|
||||
PORT = toString cfg.webPort;
|
||||
}
|
||||
// redisEnv
|
||||
// cfg.environment;
|
||||
|
||||
systemCallFilter =
|
||||
let
|
||||
allowedSystemCalls = [
|
||||
"@cpu-emulation"
|
||||
"@debug"
|
||||
"@keyring"
|
||||
"@ipc"
|
||||
"@mount"
|
||||
"@obsolete"
|
||||
"@privileged"
|
||||
"@setuid"
|
||||
];
|
||||
in
|
||||
[
|
||||
("~" + lib.concatStringsSep " " allowedSystemCalls)
|
||||
"@chown"
|
||||
"pipe"
|
||||
"pipe2"
|
||||
];
|
||||
|
||||
cfgService = {
|
||||
User = cfg.user;
|
||||
Group = cfg.group;
|
||||
WorkingDirectory = cfg.package;
|
||||
CacheDirectory = "dawarich";
|
||||
CacheDirectoryMode = "0750";
|
||||
StateDirectory = "dawarich";
|
||||
StateDirectoryMode = "0750";
|
||||
LogsDirectory = "dawarich";
|
||||
LogsDirectoryMode = "0750";
|
||||
ProcSubset = "pid";
|
||||
ProtectProc = "invisible";
|
||||
UMask = "0027";
|
||||
CapabilityBoundingSet = "";
|
||||
NoNewPrivileges = true;
|
||||
ProtectSystem = "strict";
|
||||
ProtectHome = true;
|
||||
PrivateTmp = true;
|
||||
PrivateDevices = true;
|
||||
PrivateUsers = true;
|
||||
ProtectClock = true;
|
||||
ProtectHostname = true;
|
||||
ProtectKernelLogs = true;
|
||||
ProtectKernelModules = true;
|
||||
ProtectKernelTunables = true;
|
||||
ProtectControlGroups = true;
|
||||
RestrictAddressFamilies = [
|
||||
"AF_UNIX"
|
||||
"AF_INET"
|
||||
"AF_INET6"
|
||||
"AF_NETLINK"
|
||||
];
|
||||
RestrictNamespaces = true;
|
||||
LockPersonality = true;
|
||||
MemoryDenyWriteExecute = false;
|
||||
RestrictRealtime = true;
|
||||
RestrictSUIDSGID = true;
|
||||
RemoveIPC = true;
|
||||
PrivateMounts = true;
|
||||
SystemCallArchitectures = "native";
|
||||
SystemCallFilter = systemCallFilter;
|
||||
|
||||
# ensure permissions to connect to the redis socket
|
||||
SupplementaryGroups = lib.mkIf (cfg.redis.createLocally && isRedisUnixSocket) [
|
||||
config.services.redis.servers.dawarich.group
|
||||
];
|
||||
};
|
||||
|
||||
# Units that all Dawarich units After= and Requires= on
|
||||
commonUnits =
|
||||
lib.optional cfg.redis.createLocally "redis-dawarich.service"
|
||||
++ lib.optional cfg.database.createLocally "postgresql.target"
|
||||
++ lib.optional cfg.automaticMigrations "dawarich-init-db.service";
|
||||
|
||||
defaultSecretKeyBaseFile = "${dataDir}/secrets/secret-key-base";
|
||||
needsGenCredentialsUnit = cfg.secretKeyBaseFile == null;
|
||||
credentials = {
|
||||
SECRET_KEY_BASE = lib.defaultTo defaultSecretKeyBaseFile cfg.secretKeyBaseFile;
|
||||
}
|
||||
// lib.optionalAttrs (cfg.database.passwordFile != null) {
|
||||
DATABASE_PASSWORD = cfg.database.passwordFile;
|
||||
}
|
||||
// lib.optionalAttrs (cfg.smtp.passwordFile != null) {
|
||||
SMTP_PASSWORD = cfg.smtp.passwordFile;
|
||||
};
|
||||
loadCredentialsIntoEnv = lib.concatMapAttrsStringSep "\n" (
|
||||
name: _: ''export ${name}="$(systemd-creds cat ${name})"''
|
||||
) credentials;
|
||||
loadCredentials = lib.mapAttrsToList (name: path: "${name}:${path}") credentials;
|
||||
|
||||
dawarichRails = pkgs.writeShellApplication {
|
||||
name = "dawarich-rails";
|
||||
|
||||
text =
|
||||
let
|
||||
sourceExtraEnv = lib.concatMapStrings (p: "source ${p}\n") cfg.extraEnvFiles;
|
||||
command = pkgs.writeShellScript "dawarich-rails-unwrapped" ''
|
||||
${sourceExtraEnv}
|
||||
${loadCredentialsIntoEnv}
|
||||
export RAILS_ROOT="${cfg.package}"
|
||||
exec ${lib.getExe' cfg.package "rails"} "$@"
|
||||
'';
|
||||
env' = lib.filterAttrs (_: value: value != null) env;
|
||||
supplementaryGroups = lib.optionalString (cfg.redis.createLocally && isRedisUnixSocket) (
|
||||
lib.escapeShellArg "--property=SupplementaryGroups=${config.services.redis.servers.dawarich.group}"
|
||||
);
|
||||
in
|
||||
''
|
||||
exec ${lib.getExe' config.systemd.package "systemd-run"} \
|
||||
${
|
||||
lib.escapeShellArgs (map (credential: "--property=LoadCredential=${credential}") loadCredentials)
|
||||
} \
|
||||
${
|
||||
lib.escapeShellArgs (lib.mapAttrsToList (name: value: "--setenv=${name}=${toString value}") env')
|
||||
} \
|
||||
--uid=${lib.escapeShellArg cfg.user} \
|
||||
--gid=${lib.escapeShellArg cfg.group} \
|
||||
${supplementaryGroups} \
|
||||
--working-directory=${lib.escapeShellArg cfg.package} \
|
||||
--property=PrivateTmp=yes \
|
||||
--pty \
|
||||
--wait \
|
||||
--collect \
|
||||
--service-type=exec \
|
||||
--quiet \
|
||||
-- \
|
||||
${command} "$@"
|
||||
'';
|
||||
};
|
||||
dawarichConsole = pkgs.writeShellScriptBin "dawarich-console" ''
|
||||
exec ${lib.getExe dawarichRails} console "$@"
|
||||
'';
|
||||
|
||||
sidekiqUnits = lib.attrsets.mapAttrs' (
|
||||
name: processCfg:
|
||||
lib.nameValuePair "dawarich-sidekiq-${name}" (
|
||||
let
|
||||
jobClassArgs = lib.concatMapStringsSep " " (c: "-q ${c}") processCfg.jobClasses;
|
||||
jobClassLabel = lib.optionalString (
|
||||
processCfg.jobClasses != [ ]
|
||||
) " (${lib.concatStringsSep ", " processCfg.jobClasses})";
|
||||
threads = toString (if processCfg.threads == null then cfg.sidekiqThreads else processCfg.threads);
|
||||
in
|
||||
{
|
||||
after = [
|
||||
"network.target"
|
||||
]
|
||||
++ lib.optional needsGenCredentialsUnit "dawarich-init-credentials.service"
|
||||
++ commonUnits;
|
||||
requires = lib.optional needsGenCredentialsUnit "dawarich-init-credentials.service" ++ commonUnits;
|
||||
description = "Dawarich sidekiq${jobClassLabel}";
|
||||
wantedBy = [ "dawarich.target" ];
|
||||
environment = env // {
|
||||
RAILS_MAX_THREADS = threads;
|
||||
};
|
||||
script = ''
|
||||
${loadCredentialsIntoEnv}
|
||||
|
||||
${lib.getExe' cfg.package "sidekiq"} ${jobClassArgs} -c ${threads} -r ${cfg.package}
|
||||
'';
|
||||
serviceConfig = {
|
||||
Restart = "always";
|
||||
RestartSec = 20;
|
||||
LoadCredential = loadCredentials;
|
||||
EnvironmentFile = cfg.extraEnvFiles;
|
||||
LimitNOFILE = "1024000";
|
||||
}
|
||||
// cfgService;
|
||||
}
|
||||
)
|
||||
) cfg.sidekiqProcesses;
|
||||
|
||||
in
|
||||
{
|
||||
|
||||
options = {
|
||||
services.dawarich = {
|
||||
enable = lib.mkEnableOption "Dawarich, a self-hostable alternative to Google Location History";
|
||||
|
||||
configureNginx = lib.mkOption {
|
||||
description = ''
|
||||
Configure nginx as a reverse proxy for dawarich.
|
||||
Alternatively you can configure a reverse-proxy of your choice to serve these paths:
|
||||
|
||||
`/ -> ''${pkgs.dawarich}/public`
|
||||
|
||||
`/ -> 127.0.0.1:{{ webPort }} `(If there was no file in the directory above.)
|
||||
|
||||
Make sure that websockets are forwarded properly. You might want to set up caching
|
||||
of some requests. Take a look at dawarich's provided reverse proxy configurations at
|
||||
`https://dawarich.app/docs/tutorials/reverse-proxy`.
|
||||
'';
|
||||
type = lib.types.bool;
|
||||
default = true;
|
||||
};
|
||||
|
||||
user = lib.mkOption {
|
||||
description = ''
|
||||
User under which dawarich runs. If it is set to "dawarich",
|
||||
that user will be created, otherwise it should be set to the
|
||||
name of a user created elsewhere.
|
||||
'';
|
||||
type = lib.types.str;
|
||||
default = "dawarich";
|
||||
};
|
||||
|
||||
group = lib.mkOption {
|
||||
description = ''
|
||||
Group under which dawarich runs.
|
||||
'';
|
||||
type = lib.types.str;
|
||||
default = "dawarich";
|
||||
};
|
||||
|
||||
webPort = lib.mkOption {
|
||||
description = "TCP port used by the dawarich web service.";
|
||||
type = lib.types.port;
|
||||
default = 3000;
|
||||
};
|
||||
|
||||
sidekiqThreads = lib.mkOption {
|
||||
description = ''
|
||||
Worker threads used by the dawarich-sidekiq-all service.
|
||||
If `sidekiqProcesses` is configured and any processes specify null `threads`, this value is used.
|
||||
'';
|
||||
type = lib.types.int;
|
||||
default = 5;
|
||||
};
|
||||
|
||||
sidekiqProcesses = lib.mkOption {
|
||||
description = ''
|
||||
How many Sidekiq processes should be used to handle background jobs, and which job classes they handle.
|
||||
Can be used to [speed up](https://dawarich.app/docs/FAQ/#how-to-speed-up-the-import-process) the import process.
|
||||
'';
|
||||
type =
|
||||
with lib.types;
|
||||
attrsOf (submodule {
|
||||
options = {
|
||||
jobClasses = lib.mkOption {
|
||||
# https://github.com/Freika/dawarich/blob/0.37.2/config/sidekiq.yml
|
||||
type = listOf (enum [
|
||||
"app_version_checking"
|
||||
"archival"
|
||||
"cache"
|
||||
"data_migrations"
|
||||
"default"
|
||||
"digests"
|
||||
"exports"
|
||||
"families"
|
||||
"imports"
|
||||
"mailers"
|
||||
"places"
|
||||
"points"
|
||||
"reverse_geocoding"
|
||||
"stats"
|
||||
"tracks"
|
||||
"trips"
|
||||
"visit_suggesting"
|
||||
]);
|
||||
description = ''
|
||||
If not empty, which job classes should be executed by this process.
|
||||
*If left empty, all job classes will be executed by this process.*
|
||||
'';
|
||||
};
|
||||
threads = lib.mkOption {
|
||||
type = nullOr int;
|
||||
description = ''
|
||||
Number of threads this process should use for executing jobs.
|
||||
If null, the configured `sidekiqThreads` are used.
|
||||
'';
|
||||
};
|
||||
};
|
||||
});
|
||||
default = {
|
||||
all = {
|
||||
jobClasses = [ ];
|
||||
threads = null;
|
||||
};
|
||||
};
|
||||
example = {
|
||||
all = {
|
||||
jobClasses = [ ];
|
||||
threads = null;
|
||||
};
|
||||
geocoding = {
|
||||
jobClasses = [ "reverse_geocoding" ];
|
||||
threads = 10;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
localDomain = lib.mkOption {
|
||||
description = "The domain serving your Dawarich instance.";
|
||||
example = "dawarich.example.org";
|
||||
type = lib.types.str;
|
||||
};
|
||||
|
||||
secretKeyBaseFile = lib.mkOption {
|
||||
description = ''
|
||||
Path to file containing the secret key base.
|
||||
A new secret key base can be generated by running:
|
||||
|
||||
`nix build -f '<nixpkgs>' dawarich; cd result; bin/bundle exec rails secret`
|
||||
|
||||
This file is loaded using systemd credentials, and therefore does not need to be
|
||||
owned by the dawarich user.
|
||||
|
||||
If this option is null, it will be created at ${defaultSecretKeyBaseFile}
|
||||
with a new secret key base.
|
||||
'';
|
||||
default = null;
|
||||
type = lib.types.nullOr lib.types.str;
|
||||
};
|
||||
|
||||
redis = {
|
||||
createLocally = lib.mkOption {
|
||||
description = ''
|
||||
Whether to configure a local Redis server for Dawarich.
|
||||
The connection is performed via Unix sockets by default,
|
||||
but that can be changed by configuring {option}`${opt.redis.host}` and {option}`${opt.redis.port}`.
|
||||
'';
|
||||
type = lib.types.bool;
|
||||
default = true;
|
||||
};
|
||||
|
||||
host = lib.mkOption {
|
||||
description = "The redis host Dawarich will connect to.";
|
||||
type = lib.types.str;
|
||||
default = config.services.redis.servers.dawarich.unixSocket;
|
||||
defaultText = lib.literalExpression "config.services.redis.servers.dawarich.unixSocket";
|
||||
};
|
||||
|
||||
port = lib.mkOption {
|
||||
description = "The port of the redis server Dawarich will connect to. Set to zero to disable TCP and use Unix sockets instead.";
|
||||
type = lib.types.port;
|
||||
default = 0;
|
||||
};
|
||||
};
|
||||
|
||||
database = {
|
||||
createLocally = lib.mkOption {
|
||||
description = ''
|
||||
Whether to configure a local PostgreSQL server and database for Dawarich.
|
||||
The connection is performed via Unix sockets.
|
||||
'';
|
||||
type = lib.types.bool;
|
||||
default = true;
|
||||
};
|
||||
|
||||
host = lib.mkOption {
|
||||
type = lib.types.str;
|
||||
default = "/run/postgresql";
|
||||
example = "127.0.0.1";
|
||||
description = "Hostname or address of the postgresql server. If an absolute path is given here, it will be interpreted as a unix socket path.";
|
||||
};
|
||||
|
||||
port = lib.mkOption {
|
||||
type = lib.types.nullOr lib.types.port;
|
||||
default = 5432;
|
||||
description = "Port of the postgresql server.";
|
||||
};
|
||||
|
||||
name = lib.mkOption {
|
||||
type = lib.types.str;
|
||||
default = "dawarich";
|
||||
description = "The name of the dawarich database.";
|
||||
};
|
||||
|
||||
user = lib.mkOption {
|
||||
type = lib.types.str;
|
||||
default = "dawarich";
|
||||
description = "The database user for dawarich.";
|
||||
};
|
||||
|
||||
passwordFile = lib.mkOption {
|
||||
type = lib.types.nullOr lib.types.path;
|
||||
default = null;
|
||||
example = "/run/keys/dawarich-db-password";
|
||||
description = ''
|
||||
A file containing the password corresponding to {option}`${opt.database.user}`.
|
||||
'';
|
||||
};
|
||||
};
|
||||
|
||||
smtp = {
|
||||
host = lib.mkOption {
|
||||
type = lib.types.nullOr lib.types.str;
|
||||
default = null;
|
||||
description = "SMTP host used when sending emails to users.";
|
||||
};
|
||||
|
||||
port = lib.mkOption {
|
||||
type = lib.types.port;
|
||||
default = 25;
|
||||
description = "SMTP port used when sending emails to users.";
|
||||
};
|
||||
|
||||
fromAddress = lib.mkOption {
|
||||
type = lib.types.nullOr lib.types.str;
|
||||
default = null;
|
||||
example = "dawarich@example.com";
|
||||
description = ''"From" address used when sending emails to users.'';
|
||||
};
|
||||
|
||||
user = lib.mkOption {
|
||||
type = lib.types.nullOr lib.types.str;
|
||||
default = null;
|
||||
example = "dawarich@example.com";
|
||||
description = "SMTP login name.";
|
||||
};
|
||||
|
||||
passwordFile = lib.mkOption {
|
||||
type = lib.types.nullOr lib.types.path;
|
||||
default = null;
|
||||
example = "/run/keys/dawarich-smtp-password";
|
||||
description = ''
|
||||
Path to file containing the SMTP password.
|
||||
'';
|
||||
};
|
||||
};
|
||||
|
||||
package = lib.mkPackageOption pkgs "dawarich" { };
|
||||
|
||||
environment = lib.mkOption {
|
||||
type =
|
||||
with lib.types;
|
||||
attrsOf (
|
||||
nullOr (oneOf [
|
||||
str
|
||||
path
|
||||
package
|
||||
])
|
||||
);
|
||||
default = { };
|
||||
description = ''
|
||||
Extra environment variables to pass to all dawarich services.
|
||||
'';
|
||||
};
|
||||
|
||||
extraEnvFiles = lib.mkOption {
|
||||
type = with lib.types; listOf path;
|
||||
default = [ ];
|
||||
description = ''
|
||||
Extra environment files to pass to all Dawarich services. Useful for passing down environment secrets.
|
||||
'';
|
||||
example = [ "/etc/dawarich/secret.env" ];
|
||||
};
|
||||
|
||||
automaticMigrations = lib.mkOption {
|
||||
description = "Whether to perform database migrations automatically";
|
||||
type = lib.types.bool;
|
||||
default = true;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
config = lib.mkIf cfg.enable (
|
||||
lib.mkMerge [
|
||||
{
|
||||
assertions = [
|
||||
{
|
||||
assertion = !isRedisUnixSocket -> cfg.redis.port != 0;
|
||||
message = ''
|
||||
`services.dawarich.redis.port` needs to be configured if `services.dawarich.redis.host` is not a unix socket.
|
||||
'';
|
||||
}
|
||||
];
|
||||
|
||||
environment.systemPackages = [
|
||||
dawarichConsole
|
||||
dawarichRails
|
||||
];
|
||||
|
||||
systemd.targets.dawarich = {
|
||||
description = "Target for all Dawarich services";
|
||||
wantedBy = [ "multi-user.target" ];
|
||||
after = [ "network.target" ];
|
||||
};
|
||||
|
||||
systemd.services.dawarich-init-credentials = lib.mkIf needsGenCredentialsUnit {
|
||||
script = ''
|
||||
umask 077
|
||||
''
|
||||
+ lib.optionalString (cfg.secretKeyBaseFile == null) ''
|
||||
if ! test -f ${defaultSecretKeyBaseFile}; then
|
||||
mkdir -p $(dirname ${defaultSecretKeyBaseFile})
|
||||
bin/bundle exec rails secret > ${defaultSecretKeyBaseFile}
|
||||
fi
|
||||
'';
|
||||
|
||||
environment = env;
|
||||
serviceConfig = {
|
||||
Type = "oneshot";
|
||||
SyslogIdentifier = "dawarich-init-dirs";
|
||||
# System Call Filtering
|
||||
SystemCallFilter = [ "~@resources" ] ++ systemCallFilter;
|
||||
}
|
||||
// cfgService;
|
||||
|
||||
after = [ "network.target" ];
|
||||
};
|
||||
|
||||
systemd.services.dawarich-init-db = lib.mkIf cfg.automaticMigrations {
|
||||
script = ''
|
||||
${loadCredentialsIntoEnv}
|
||||
|
||||
# Run primary database migrations first (needed before other migrations)
|
||||
echo "Running primary database migrations..."
|
||||
rails db:migrate
|
||||
|
||||
# Run data migrations
|
||||
echo "Running DATA migrations..."
|
||||
rake data:migrate
|
||||
|
||||
echo "Running seeds..."
|
||||
rails db:seed
|
||||
'';
|
||||
path = [ cfg.package ];
|
||||
environment = env;
|
||||
serviceConfig = {
|
||||
Type = "oneshot";
|
||||
LoadCredential = loadCredentials;
|
||||
EnvironmentFile = cfg.extraEnvFiles;
|
||||
WorkingDirectory = cfg.package;
|
||||
# System Call Filtering
|
||||
SystemCallFilter = [ "~@resources" ] ++ systemCallFilter;
|
||||
}
|
||||
// cfgService;
|
||||
# both postgres and redis are needed for the migrations to work
|
||||
after = [
|
||||
"network.target"
|
||||
]
|
||||
++ lib.optional needsGenCredentialsUnit "dawarich-init-credentials.service"
|
||||
++ lib.optional cfg.database.createLocally "postgresql.target"
|
||||
++ lib.optional cfg.redis.createLocally "redis-dawarich.service";
|
||||
requires =
|
||||
lib.optional needsGenCredentialsUnit "dawarich-init-credentials.service"
|
||||
++ lib.optional cfg.database.createLocally "postgresql.target"
|
||||
++ lib.optional cfg.redis.createLocally "redis-dawarich.service";
|
||||
};
|
||||
|
||||
systemd.services.dawarich-web = {
|
||||
after = [
|
||||
"network.target"
|
||||
]
|
||||
++ lib.optional needsGenCredentialsUnit "dawarich-init-credentials.service"
|
||||
++ commonUnits;
|
||||
requires = lib.optional needsGenCredentialsUnit "dawarich-init-credentials.service" ++ commonUnits;
|
||||
wantedBy = [ "dawarich.target" ];
|
||||
description = "Dawarich web";
|
||||
environment = env;
|
||||
script = ''
|
||||
${loadCredentialsIntoEnv}
|
||||
|
||||
${lib.getExe' cfg.package "rails"} server
|
||||
'';
|
||||
serviceConfig = {
|
||||
Restart = "always";
|
||||
RestartSec = 20;
|
||||
LoadCredential = loadCredentials;
|
||||
EnvironmentFile = cfg.extraEnvFiles;
|
||||
WorkingDirectory = cfg.package;
|
||||
# Runtime directory and mode
|
||||
RuntimeDirectory = "dawarich-web";
|
||||
RuntimeDirectoryMode = "0750";
|
||||
}
|
||||
// cfgService;
|
||||
};
|
||||
|
||||
systemd.tmpfiles.settings."dawarich"."${dataDir}/imports/watched".d = {
|
||||
group = "dawarich";
|
||||
mode = "700";
|
||||
user = "dawarich";
|
||||
};
|
||||
|
||||
services.nginx = lib.mkIf cfg.configureNginx {
|
||||
enable = true;
|
||||
virtualHosts."${cfg.localDomain}" = {
|
||||
root = "${cfg.package}/public/";
|
||||
|
||||
locations."/" = {
|
||||
tryFiles = "$uri @proxy";
|
||||
};
|
||||
|
||||
locations."@proxy" = {
|
||||
proxyPass = "http://127.0.0.1:${toString cfg.webPort}";
|
||||
recommendedProxySettings = true;
|
||||
proxyWebsockets = true;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
services.redis.servers = lib.mkIf cfg.redis.createLocally {
|
||||
dawarich = {
|
||||
enable = true;
|
||||
port = cfg.redis.port;
|
||||
bind = lib.mkIf (!isRedisUnixSocket) cfg.redis.host;
|
||||
};
|
||||
};
|
||||
|
||||
services.postgresql = lib.mkIf cfg.database.createLocally {
|
||||
enable = true;
|
||||
extensions = ps: with ps; [ postgis ];
|
||||
ensureUsers = [
|
||||
{
|
||||
inherit (cfg.database) name;
|
||||
ensureDBOwnership = true;
|
||||
}
|
||||
];
|
||||
ensureDatabases = [ cfg.database.name ];
|
||||
};
|
||||
|
||||
systemd.services.postgresql-setup.serviceConfig.ExecStartPost =
|
||||
let
|
||||
# https://github.com/Freika/dawarich/blob/0.30.6/db/schema.rb#L15-L16
|
||||
# https://postgis.net/documentation/getting_started/
|
||||
sqlFile = pkgs.writeText "dawarich-postgres-setup.sql" ''
|
||||
CREATE EXTENSION IF NOT EXISTS postgis;
|
||||
SELECT postgis_extensions_upgrade();
|
||||
'';
|
||||
in
|
||||
lib.mkIf cfg.database.createLocally [
|
||||
''
|
||||
${lib.getExe' config.services.postgresql.package "psql"} -d "${cfg.database.name}" -f "${sqlFile}"
|
||||
''
|
||||
];
|
||||
|
||||
users.users = lib.mkIf (cfg.user == "dawarich") {
|
||||
dawarich = {
|
||||
isSystemUser = true;
|
||||
home = cfg.package;
|
||||
inherit (cfg) group;
|
||||
};
|
||||
};
|
||||
users.groups = lib.mkIf (cfg.group == "dawarich") { ${cfg.group} = { }; };
|
||||
}
|
||||
{
|
||||
systemd.services = lib.mkMerge [
|
||||
sidekiqUnits
|
||||
];
|
||||
}
|
||||
]
|
||||
);
|
||||
|
||||
meta.maintainers = with lib.maintainers; [
|
||||
diogotcorreia
|
||||
];
|
||||
|
||||
}
|
||||
|
|
@ -855,6 +855,7 @@ in
|
|||
"resilver_finish-start-scrub.sh"
|
||||
"scrub_finish-notify.sh"
|
||||
"statechange-notify.sh"
|
||||
"zed-functions.sh"
|
||||
]
|
||||
++ lib.optionals (lib.versionOlder cfgZfs.package.version "2.4") [
|
||||
"deadman-slot_off.sh"
|
||||
|
|
|
|||
|
|
@ -446,6 +446,7 @@ in
|
|||
darling-dmg = runTest ./darling-dmg.nix;
|
||||
dashy = runTest ./web-apps/dashy.nix;
|
||||
davis = runTest ./davis.nix;
|
||||
dawarich = runTest ./web-apps/dawarich.nix;
|
||||
db-rest = runTest ./db-rest.nix;
|
||||
dconf = runTest ./dconf.nix;
|
||||
ddns-updater = runTest ./ddns-updater.nix;
|
||||
|
|
|
|||
|
|
@ -91,7 +91,7 @@
|
|||
machine.sleep(10)
|
||||
machine.send_key("alt-f10")
|
||||
machine.sleep(2)
|
||||
machine.wait_for_text(r"(Montag|Dienstag|Mittwoch|Donnerstag|Freitag|Samstag|Sonntag)")
|
||||
machine.wait_for_text(r"(Termine|Tag|Woche|Monat|Jahr|Montag|Dienstag|Mittwoch|Donnerstag|Freitag|Samstag|Sonntag)")
|
||||
machine.screenshot("lomiri-calendar_localised")
|
||||
'';
|
||||
}
|
||||
|
|
|
|||
77
nixos/tests/web-apps/dawarich.nix
Normal file
77
nixos/tests/web-apps/dawarich.nix
Normal file
|
|
@ -0,0 +1,77 @@
|
|||
{ ... }:
|
||||
{
|
||||
name = "dawarich-nixos";
|
||||
|
||||
nodes.machine =
|
||||
{ pkgs, ... }:
|
||||
{
|
||||
services.dawarich = {
|
||||
enable = true;
|
||||
localDomain = "localhost";
|
||||
};
|
||||
|
||||
environment.etc.geojson.source = pkgs.fetchurl {
|
||||
url = "https://github.com/Freika/dawarich/raw/8c24764aa56a084e980e21bc2ffd13a72fd611db/spec/fixtures/files/geojson/export.json";
|
||||
hash = "sha256-qI00E5ixKTRJduAD+qB3JzvrpoJmC55llNtSiPVyxz4=";
|
||||
};
|
||||
};
|
||||
|
||||
testScript = ''
|
||||
import json
|
||||
|
||||
machine.wait_for_unit("dawarich.target")
|
||||
|
||||
machine.wait_for_open_port(3000) # Web
|
||||
machine.succeed("curl --fail http://localhost/")
|
||||
|
||||
# Get API key via ruby console
|
||||
api_key = machine.succeed("dawarich-rails runner \"puts User.find_by(email: 'demo@dawarich.app').api_key\"").strip().split("\n")[-1]
|
||||
|
||||
res = machine.succeed(f"curl -f -H 'Authorization: Bearer {api_key}' http://localhost/api/v1/users/me")
|
||||
user_data = json.loads(res)
|
||||
assert user_data['user']['email'] == 'demo@dawarich.app'
|
||||
|
||||
example_point = {
|
||||
"locations": [
|
||||
{
|
||||
"type": "Feature",
|
||||
"geometry": {
|
||||
"type": "Point",
|
||||
"coordinates": [
|
||||
-122.40530871,
|
||||
37.74430413
|
||||
]
|
||||
},
|
||||
"properties": {
|
||||
"battery_state": "full",
|
||||
"battery_level": 0.7,
|
||||
"wifi": "dawarich_home",
|
||||
"timestamp": "2025-01-17T21:03:01Z",
|
||||
"horizontal_accuracy": 5,
|
||||
"vertical_accuracy": -1,
|
||||
"altitude": 0,
|
||||
"speed": 92.088,
|
||||
"speed_accuracy": 0,
|
||||
"course": 27.07,
|
||||
"course_accuracy": 0,
|
||||
"track_id": "799F32F5-89BB-45FB-A639-098B1B95B09F",
|
||||
"device_id": "8D5D4197-245B-4619-A88B-2049100ADE46"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
machine.succeed(f"curl -f -H 'Authorization: Bearer {api_key}' --json '{json.dumps(example_point)}' http://localhost/api/v1/points")
|
||||
|
||||
res = machine.succeed(f"curl -f -H 'Authorization: Bearer {api_key}' http://localhost/api/v1/points")
|
||||
assert len(json.loads(res)) == 1
|
||||
|
||||
# Test watcher job import
|
||||
import_dir = "/var/lib/dawarich/imports/watched/demo@dawarich.app"
|
||||
machine.succeed(f"mkdir -p {import_dir} && cp /etc/geojson {import_dir}/example.json")
|
||||
|
||||
machine.succeed('dawarich-rails runner "Import::WatcherJob.perform_now"')
|
||||
# job runs in the background so doesn't update immediately
|
||||
res = machine.wait_until_succeeds(f"curl -f -H 'Authorization: Bearer {api_key}' http://localhost/api/v1/points | grep '\"id\":2'")
|
||||
assert len(json.loads(res)) == 11
|
||||
'';
|
||||
}
|
||||
|
|
@ -6,63 +6,24 @@
|
|||
lib,
|
||||
}:
|
||||
|
||||
melpaBuild rec {
|
||||
melpaBuild {
|
||||
pname = "elpaca";
|
||||
version = "0-unstable-2025-11-06";
|
||||
version = "0-unstable-2025-02-16";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "progfolio";
|
||||
repo = "elpaca";
|
||||
rev = "b5ef5f19ac1224853234c9acdac0ec9ea1c440a1";
|
||||
hash = "sha256-EZ9emYTweRZzMKxZu9nbAaGgE2tInaL7KCKvJ5TaD0g=";
|
||||
rev = "07b3a653e2411f4d4b5902af1c9b3f159e07bec5";
|
||||
hash = "sha256-+YJX2BJxH3D5u7YC/yJskZu0F4Nlat3ZROe+RCZGq9w=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [ git ];
|
||||
|
||||
# Moves extensions into the source root directory to install them.
|
||||
# Disables warnings related to being used with package.el and not matching the installer
|
||||
# Points the elpaca-repos-directory to the installed package in the nix store
|
||||
postPatch =
|
||||
let
|
||||
siteVersion = lib.concatStrings (lib.drop 2 (lib.splitVersion version));
|
||||
in
|
||||
''
|
||||
mv extensions/* .
|
||||
substituteInPlace elpaca.el \
|
||||
--replace-fail "lwarn '(elpaca installer)" \
|
||||
"ignore '(elpaca installer)" \
|
||||
--replace-fail "warn \"Package.el" \
|
||||
"ignore \"Package.el" \
|
||||
--replace-fail "(expand-file-name \"elpaca/\" elpaca-repos-directory)" \
|
||||
"\"${placeholder "out"}/share/emacs/site-lisp/elpa/elpaca-${siteVersion}.0\""
|
||||
'';
|
||||
|
||||
passthru.updateScript = unstableGitUpdater { };
|
||||
|
||||
meta = {
|
||||
description = "Elisp package manager and replacement for package.el";
|
||||
longDescription = ''
|
||||
Elpaca is an elisp package manager. It allows users to find,
|
||||
install, update, and remove third-party packages for Emacs. It
|
||||
is a replacement for the built-in Emacs package manager,
|
||||
package.el.
|
||||
|
||||
Elpaca:
|
||||
- Installs packages asynchronously, in parallel for fast, non-blocking installations.
|
||||
- Includes a flexible UI for finding and operating on packages.
|
||||
- Downloads packages from their sources for convenient elisp development.
|
||||
- Supports thousands of elisp packages out of the box (MELPA, NonGNU/GNU ELPA, Org/org-contrib).
|
||||
- Makes it easy for users to create their own ELPAs.
|
||||
|
||||
Elpaca has been adapted for Emacs managed via Nix. To activate
|
||||
Elpaca, this snippet can be used within your init.el:
|
||||
|
||||
```elisp
|
||||
(add-hook 'after-init-hook #'elpaca-process-queues)
|
||||
(elpaca-use-package-mode) ;; Optional, for use-package support
|
||||
```
|
||||
'';
|
||||
homepage = "https://github.com/progfolio/elpaca";
|
||||
description = "Elisp package manager";
|
||||
license = lib.licenses.gpl3Plus;
|
||||
maintainers = with lib.maintainers; [
|
||||
abhisheksingh0x558
|
||||
|
|
|
|||
|
|
@ -1,10 +1,9 @@
|
|||
with import <localpkgs> { };
|
||||
let
|
||||
inherit (vimUtils.override { inherit vim; }) buildVimPlugin;
|
||||
inherit (neovimUtils) buildNeovimPlugin;
|
||||
|
||||
generated = callPackage <localpkgs/pkgs/applications/editors/vim/plugins/generated.nix> {
|
||||
inherit buildNeovimPlugin buildVimPlugin;
|
||||
inherit buildVimPlugin;
|
||||
} { } { };
|
||||
|
||||
hasChecksum =
|
||||
|
|
@ -15,16 +14,15 @@ let
|
|||
"outputHash"
|
||||
] value;
|
||||
|
||||
parse = name: value: {
|
||||
pname = value.pname;
|
||||
version = value.version;
|
||||
parse = _name: value: {
|
||||
inherit (value) pname version;
|
||||
homePage = value.meta.homepage;
|
||||
checksum =
|
||||
if hasChecksum value then
|
||||
{
|
||||
submodules = value.src.fetchSubmodules or false;
|
||||
sha256 = value.src.outputHash;
|
||||
rev = value.src.rev;
|
||||
inherit (value.src) rev;
|
||||
}
|
||||
else
|
||||
null;
|
||||
|
|
|
|||
|
|
@ -968,8 +968,8 @@ let
|
|||
mktplcRef = {
|
||||
name = "chatgpt-reborn";
|
||||
publisher = "chris-hayes";
|
||||
version = "3.27.0";
|
||||
sha256 = "sha256-52SvGb9TsvDQey5cjw+ZIQBP/1dyWcHKNjqCCCyM6k4=";
|
||||
version = "3.28.0";
|
||||
sha256 = "sha256-YOaOBDGoLg/bWB/Yw6CCbJ/J7s6qA8QlbM3wiknCTGQ=";
|
||||
};
|
||||
};
|
||||
|
||||
|
|
@ -1268,8 +1268,8 @@ let
|
|||
mktplcRef = {
|
||||
publisher = "denoland";
|
||||
name = "vscode-deno";
|
||||
version = "3.47.0";
|
||||
hash = "sha256-T8RJi2SiFf6rMTpDQx9VuBv0zNwvusZrwybHeFe5/KQ=";
|
||||
version = "3.48.0";
|
||||
hash = "sha256-AWnX4toFJnIhflc039fN31lrrTaKKXUSrePanWoZnJI=";
|
||||
};
|
||||
meta = {
|
||||
changelog = "https://marketplace.visualstudio.com/items/denoland.vscode-deno/changelog";
|
||||
|
|
@ -2611,8 +2611,8 @@ let
|
|||
mktplcRef = {
|
||||
name = "language-julia";
|
||||
publisher = "julialang";
|
||||
version = "1.171.2";
|
||||
hash = "sha256-XELIrqcyd6DEpJjbSlE17noiYa8CZvDwnodA1QALewM=";
|
||||
version = "1.174.2";
|
||||
hash = "sha256-nlMuWnJOtUlCB9RGWUngB8KgIiNxoQTHkjI6ZtO/Gjs=";
|
||||
};
|
||||
meta = {
|
||||
changelog = "https://marketplace.visualstudio.com/items/julialang.language-julia/changelog";
|
||||
|
|
@ -4469,8 +4469,8 @@ let
|
|||
mktplcRef = {
|
||||
name = "vscode-stylelint";
|
||||
publisher = "stylelint";
|
||||
version = "1.6.0";
|
||||
hash = "sha256-t0zS4+UZePViqkGgVezy/2CyyqilUKb6byTYukbxqr8=";
|
||||
version = "2.0.1";
|
||||
hash = "sha256-TYUDm+i7Chuybbx91AUxH/oIyZYWpZ5XnYxjhjXGP88=";
|
||||
};
|
||||
meta = {
|
||||
description = "Official Stylelint extension for Visual Studio Code";
|
||||
|
|
|
|||
|
|
@ -8,13 +8,13 @@
|
|||
}:
|
||||
mkLibretroCore {
|
||||
core = "mednafen-psx" + lib.optionalString withHw "-hw";
|
||||
version = "0-unstable-2026-01-12";
|
||||
version = "0-unstable-2026-01-16";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "libretro";
|
||||
repo = "beetle-psx-libretro";
|
||||
rev = "254285de247db71ac25a4392c159dc1114940794";
|
||||
hash = "sha256-RDUyTGlrouttC9V4irOC8U1zcNsCxnTIdm6wrAECY2E=";
|
||||
rev = "5965c585abcaf6b5205a1347de82471e22aaabe3";
|
||||
hash = "sha256-Mks6xJre1gaxBqWfAzVTNp6Ooy5VDc86HAoj3wlHYRw=";
|
||||
};
|
||||
|
||||
extraBuildInputs = lib.optionals withHw [
|
||||
|
|
|
|||
|
|
@ -5,13 +5,13 @@
|
|||
}:
|
||||
mkLibretroCore {
|
||||
core = "bsnes";
|
||||
version = "0-unstable-2025-12-19";
|
||||
version = "0-unstable-2026-01-16";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "libretro";
|
||||
repo = "bsnes-libretro";
|
||||
rev = "d9b7c292cfb15959c9928e3b76bb1047b8499938";
|
||||
hash = "sha256-FzYe6p3+knxcoIcQW00p3C3+rMEsAWI+ZFdy5mvDhoY=";
|
||||
rev = "d0a61b2c679bc73286be5471b222b1f1ebfb67b9";
|
||||
hash = "sha256-1C+c0cQqFSRDGBhNr4s4xD/THbyDP/iVUJpAmHFQfiE=";
|
||||
};
|
||||
|
||||
makefile = "Makefile";
|
||||
|
|
|
|||
|
|
@ -5,13 +5,13 @@
|
|||
}:
|
||||
mkLibretroCore {
|
||||
core = "fbneo";
|
||||
version = "0-unstable-2026-01-11";
|
||||
version = "0-unstable-2026-01-18";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "libretro";
|
||||
repo = "fbneo";
|
||||
rev = "aaecfedbb206a79d0e35a0dfe922622b921a66f7";
|
||||
hash = "sha256-Xn3lxXFf7EEism9CIGYhvP83oCpOTrpgnBAwkkB4TDM=";
|
||||
rev = "3faea4f9c678bad8063f3a2774b051f42848c856";
|
||||
hash = "sha256-tH9XMBfg3O2oKIUeKWi2hl4yQuHa9BMgvkWjIxv/KIo=";
|
||||
};
|
||||
|
||||
makefile = "Makefile";
|
||||
|
|
|
|||
|
|
@ -101,11 +101,11 @@
|
|||
"vendorHash": "sha256-quoFrJbB1vjz+MdV+jnr7FPACHuUe5Gx9POLubD2IaM="
|
||||
},
|
||||
"baidubce_baiducloud": {
|
||||
"hash": "sha256-BNpBNBxRSKgxwvgIY289MLUf0Eui5/ccY97sAouHjbc=",
|
||||
"hash": "sha256-r5NPRWjjlLD5qrLmVPe3JFrRRp3mV0NJwT3rOo0k8FA=",
|
||||
"homepage": "https://registry.terraform.io/providers/baidubce/baiducloud",
|
||||
"owner": "baidubce",
|
||||
"repo": "terraform-provider-baiducloud",
|
||||
"rev": "v1.22.16",
|
||||
"rev": "v1.22.17",
|
||||
"spdx": "MPL-2.0",
|
||||
"vendorHash": null
|
||||
},
|
||||
|
|
@ -1049,11 +1049,11 @@
|
|||
"vendorHash": null
|
||||
},
|
||||
"oracle_oci": {
|
||||
"hash": "sha256-wHNR0U8z0wY878ww2e+yybYYwUCbiGWSkIcEiubfOp4=",
|
||||
"hash": "sha256-VGf5sCHMhOFm+w3lz2yhH0lw0MSlQYlYK/+lEuXk4vc=",
|
||||
"homepage": "https://registry.terraform.io/providers/oracle/oci",
|
||||
"owner": "oracle",
|
||||
"repo": "terraform-provider-oci",
|
||||
"rev": "v7.29.0",
|
||||
"rev": "v7.30.0",
|
||||
"spdx": "MPL-2.0",
|
||||
"vendorHash": null
|
||||
},
|
||||
|
|
|
|||
|
|
@ -74,6 +74,10 @@ apprun() {
|
|||
else echo "$(basename "$APPIMAGE")" installed in "$APPDIR"
|
||||
fi
|
||||
|
||||
# Fix potential for the appimages to try to import libraries from QT
|
||||
# installed on the system, causing a version mismatch
|
||||
unset QT_PLUGIN_PATH
|
||||
|
||||
export PATH="$PATH:$PWD/usr/bin"
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -6,7 +6,7 @@
|
|||
}:
|
||||
stdenvNoCC.mkDerivation rec {
|
||||
pname = "0xproto";
|
||||
version = "2.501";
|
||||
version = "2.502";
|
||||
|
||||
src =
|
||||
let
|
||||
|
|
@ -14,7 +14,7 @@ stdenvNoCC.mkDerivation rec {
|
|||
in
|
||||
fetchzip {
|
||||
url = "https://github.com/0xType/0xProto/releases/download/${version}/0xProto_${underscoreVersion}.zip";
|
||||
hash = "sha256-l1+fRPMo3k9EEGXiMw+8Z78KxjO3AGgvyqSfsN188vQ=";
|
||||
hash = "sha256-ffYvfEGMoIJKVEcs2XzhDrq++SkTbQOVvb6X9q+uyu8=";
|
||||
stripRoot = false;
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -14,13 +14,13 @@
|
|||
|
||||
stdenv.mkDerivation (finalAttrs: {
|
||||
pname = "astroterm";
|
||||
version = "1.0.9";
|
||||
version = "1.0.10";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "da-luce";
|
||||
repo = "astroterm";
|
||||
tag = "v${finalAttrs.version}";
|
||||
hash = "sha256-3UXFB4NNKn2w1dYlQzhFyxWwa7/1qkCXPNdBqHK+eQ8=";
|
||||
hash = "sha256-z9KblIAoXk///NnRFHCSAFNDuNiPxDuuiliajcsyJM0=";
|
||||
};
|
||||
|
||||
bsc5File = fetchurl {
|
||||
|
|
|
|||
|
|
@ -7,16 +7,16 @@
|
|||
|
||||
rustPlatform.buildRustPackage (finalAttrs: {
|
||||
pname = "automatic-timezoned";
|
||||
version = "2.0.106";
|
||||
version = "2.0.108";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "maxbrunet";
|
||||
repo = "automatic-timezoned";
|
||||
rev = "v${finalAttrs.version}";
|
||||
sha256 = "sha256-djvRfp1LhkHuDmjDuOErzcD9KXH6fiRrUR73ncldzUc=";
|
||||
sha256 = "sha256-aizxFWQpiwEo197Oydez2nAChQQ32jPqOEW3wNLnb7c=";
|
||||
};
|
||||
|
||||
cargoHash = "sha256-T8PY/mFvcdXPZeQKEUekBan+0qBQnmsZ5O96EYcxkcI=";
|
||||
cargoHash = "sha256-gT1pHDYwqVeZ0epGX8v3+B4o6y8jO21rUyz1rLD3eCY=";
|
||||
|
||||
nativeInstallCheckInputs = [ versionCheckHook ];
|
||||
|
||||
|
|
|
|||
|
|
@ -18,11 +18,7 @@ let
|
|||
py = python3 // {
|
||||
pkgs = python3.pkgs.overrideScope (
|
||||
final: prev: {
|
||||
sphinx = prev.sphinx.overridePythonAttrs (prev: {
|
||||
disabledTests = prev.disabledTests ++ [
|
||||
"test_check_link_response_only" # fails on hydra https://hydra.nixos.org/build/242624087/nixlog/1
|
||||
];
|
||||
});
|
||||
# https://github.com/NixOS/nixpkgs/issues/449266
|
||||
prompt-toolkit = prev.prompt-toolkit.overridePythonAttrs (prev: rec {
|
||||
version = "3.0.51";
|
||||
src = prev.src.override {
|
||||
|
|
@ -30,6 +26,9 @@ let
|
|||
hash = "sha256-pNYmjAgnP9nK40VS/qvPR3g+809Yra2ISASWJDdQKrU=";
|
||||
};
|
||||
});
|
||||
|
||||
# backends/build_system/utils.py cannot parse PEP 440 version
|
||||
# for python-dateutil 2.9.0.post0 (eg. post0)
|
||||
python-dateutil = prev.python-dateutil.overridePythonAttrs (prev: rec {
|
||||
version = "2.8.2";
|
||||
format = "setuptools";
|
||||
|
|
@ -48,24 +47,6 @@ let
|
|||
];
|
||||
postPatch = null;
|
||||
});
|
||||
ruamel-yaml = prev.ruamel-yaml.overridePythonAttrs (prev: rec {
|
||||
version = "0.17.21";
|
||||
src = prev.src.override {
|
||||
inherit version;
|
||||
hash = "sha256-i3zml6LyEnUqNcGsQURx3BbEJMlXO+SSa1b/P10jt68=";
|
||||
};
|
||||
});
|
||||
urllib3 = prev.urllib3.overridePythonAttrs (prev: rec {
|
||||
version = "1.26.18";
|
||||
build-system = with final; [
|
||||
setuptools
|
||||
];
|
||||
postPatch = null;
|
||||
src = prev.src.override {
|
||||
inherit version;
|
||||
hash = "sha256-+OzBu6VmdBNFfFKauVW/jGe0XbeZ0VkGYmFxnjKFgKA=";
|
||||
};
|
||||
});
|
||||
}
|
||||
);
|
||||
};
|
||||
|
|
@ -73,14 +54,14 @@ let
|
|||
in
|
||||
py.pkgs.buildPythonApplication rec {
|
||||
pname = "awscli2";
|
||||
version = "2.32.15"; # N.B: if you change this, check if overrides are still up-to-date
|
||||
version = "2.33.2"; # N.B: if you change this, check if overrides are still up-to-date
|
||||
pyproject = true;
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "aws";
|
||||
repo = "aws-cli";
|
||||
tag = version;
|
||||
hash = "sha256-TOXoArw33exbMfKBnNSECymYS8hVzPoVOA7PWzbnroc=";
|
||||
hash = "sha256-dAtcYDdrZASrwBjQfnZ4DUR4F5WhY59/UX92QcILavs=";
|
||||
};
|
||||
|
||||
postPatch = ''
|
||||
|
|
@ -90,7 +71,8 @@ py.pkgs.buildPythonApplication rec {
|
|||
--replace-fail 'distro>=1.5.0,<1.9.0' 'distro>=1.5.0' \
|
||||
--replace-fail 'docutils>=0.10,<0.20' 'docutils>=0.10' \
|
||||
--replace-fail 'prompt-toolkit>=3.0.24,<3.0.52' 'prompt-toolkit>=3.0.24' \
|
||||
--replace-fail 'ruamel.yaml.clib>=0.2.0,<=0.2.12' 'ruamel.yaml.clib>=0.2.0' \
|
||||
--replace-fail 'ruamel.yaml>=0.15.0,<=0.17.21' 'ruamel.yaml>=0.15.0' \
|
||||
--replace-fail 'ruamel.yaml.clib>=0.2.0,<=0.2.12' 'ruamel.yaml.clib>=0.2.0'
|
||||
|
||||
substituteInPlace requirements-base.txt \
|
||||
--replace-fail "wheel==0.43.0" "wheel>=0.43.0"
|
||||
|
|
@ -180,6 +162,9 @@ py.pkgs.buildPythonApplication rec {
|
|||
# Requires networking (socket binding not possible in sandbox)
|
||||
"test_is_socket"
|
||||
"test_is_special_file_warning"
|
||||
|
||||
# Disable slow tests
|
||||
"test_details_disabled_for_choice_wo_details"
|
||||
];
|
||||
|
||||
pythonImportsCheck = [
|
||||
|
|
|
|||
|
|
@ -27,13 +27,13 @@ in
|
|||
|
||||
stdenv.mkDerivation (finalAttrs: {
|
||||
pname = "pds";
|
||||
version = "0.4.193";
|
||||
version = "0.4.204";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "bluesky-social";
|
||||
repo = "pds";
|
||||
tag = "v${finalAttrs.version}";
|
||||
hash = "sha256-OCG1YR56k0syIxRVrwUr0teaBJFQXocq0H6j9JaQkh8=";
|
||||
hash = "sha256-jYCMwHKKFIsfOgGYiKVrWtIT7atPA8NsetvfjDW05yE=";
|
||||
};
|
||||
|
||||
sourceRoot = "${finalAttrs.src.name}/service";
|
||||
|
|
@ -63,7 +63,7 @@ stdenv.mkDerivation (finalAttrs: {
|
|||
;
|
||||
pnpm = pnpm_9;
|
||||
fetcherVersion = 2;
|
||||
hash = "sha256-4qKWkINpUHzatiMa7ZNYp1NauU2641W0jHDjmRL9ipI=";
|
||||
hash = "sha256-G6xZfbfz+jud1N6lxwp5FA5baAkFwmofejsPt/Gaze8=";
|
||||
};
|
||||
|
||||
buildPhase = ''
|
||||
|
|
|
|||
|
|
@ -14,14 +14,14 @@
|
|||
|
||||
python3Packages.buildPythonPackage rec {
|
||||
pname = "boxflat";
|
||||
version = "1.35.3";
|
||||
version = "1.35.5";
|
||||
pyproject = true;
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "Lawstorant";
|
||||
repo = "boxflat";
|
||||
tag = "v${version}";
|
||||
hash = "sha256-ayreXC73OLNpnwNuJe0ImC/ch5W+O0lnkuD31ztTqso=";
|
||||
hash = "sha256-R03mQIsa6T1ApV8SMWvilBfiCGcAWvyZ5hDDgAuGd6s=";
|
||||
};
|
||||
|
||||
build-system = [ python3Packages.setuptools ];
|
||||
|
|
|
|||
|
|
@ -15,8 +15,6 @@ python.pkgs.buildPythonApplication rec {
|
|||
version = "0.0.74";
|
||||
pyproject = true;
|
||||
|
||||
disabled = python.pythonOlder "3.10";
|
||||
|
||||
src = fetchFromGitLab {
|
||||
owner = "yaal";
|
||||
repo = "canaille";
|
||||
|
|
|
|||
|
|
@ -8,13 +8,13 @@
|
|||
|
||||
stdenvNoCC.mkDerivation {
|
||||
pname = "candy-icons";
|
||||
version = "0-unstable-2025-12-26";
|
||||
version = "0-unstable-2026-01-13";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "EliverLara";
|
||||
repo = "candy-icons";
|
||||
rev = "1ec7ed314104847d6bffdc89ef67663917a67268";
|
||||
hash = "sha256-p8WZTNHwYTom0QnWvOU0JLRbEYZlGQq/QPpK3KlwBH8=";
|
||||
rev = "42f5c4817f47e2ef4b011080ebbb2f50a9a6955b";
|
||||
hash = "sha256-d7jxoqWPRlNX43CdIEihT6kxvke3k8GG9CJkmlkuRNw=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [ gtk3 ];
|
||||
|
|
|
|||
|
|
@ -8,13 +8,13 @@
|
|||
|
||||
buildGoModule (finalAttrs: {
|
||||
pname = "carapace-bridge";
|
||||
version = "1.4.10";
|
||||
version = "1.4.11";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "carapace-sh";
|
||||
repo = "carapace-bridge";
|
||||
tag = "v${finalAttrs.version}";
|
||||
hash = "sha256-6CCLSwbAYkMelaM5ac1I1kwOlWKPSOU9M9/2Dybt55I=";
|
||||
hash = "sha256-npy20q8Fmi4KKN/q41iG6sWmuQVLhiHyUCGVUwS0FsA=";
|
||||
};
|
||||
|
||||
# buildGoModule tries to run `go mod vendor` instead of `go work vendor` on
|
||||
|
|
|
|||
|
|
@ -11,16 +11,16 @@
|
|||
|
||||
rustPlatform.buildRustPackage rec {
|
||||
pname = "cargo-binstall";
|
||||
version = "1.16.6";
|
||||
version = "1.16.7";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "cargo-bins";
|
||||
repo = "cargo-binstall";
|
||||
tag = "v${version}";
|
||||
hash = "sha256-6acLC+ufODhCvHn7g+yzaN+qnTDjUrCBIX8uOj0PPgg=";
|
||||
hash = "sha256-0r7QEGwuIh2mquKFqcf3VjvilhVz25Xpr2rJPQp504E=";
|
||||
};
|
||||
|
||||
cargoHash = "sha256-IPDhTbYRtL4nBdNgaQfZ2M+RwZYC5eJfs/+VNlOXodo=";
|
||||
cargoHash = "sha256-ZJCIjQm/vbO1Voji143HXT3BwlXRtFq4rFNRUguwouA=";
|
||||
|
||||
nativeBuildInputs = [
|
||||
pkg-config
|
||||
|
|
|
|||
|
|
@ -6,16 +6,16 @@
|
|||
|
||||
rustPlatform.buildRustPackage rec {
|
||||
pname = "cargo-xwin";
|
||||
version = "0.20.2";
|
||||
version = "0.21.2";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "rust-cross";
|
||||
repo = "cargo-xwin";
|
||||
rev = "v${version}";
|
||||
hash = "sha256-M7OO2yO5BvNTqJLI50g25M5aupdOxmlZ3eealmP51Kc=";
|
||||
hash = "sha256-GQV8Sy7BCkPGYusojZGQtaazTXONdJIZ4B4toO1Lj/w=";
|
||||
};
|
||||
|
||||
cargoHash = "sha256-DwQGmdSzEjzqfsvqczAMJfi9gJjK2b9FAGmMi7rGKuw=";
|
||||
cargoHash = "sha256-fVr5W5xpucqUyKpDcubAh6GkB0roJ548EHgaIzqVJl0=";
|
||||
|
||||
meta = {
|
||||
description = "Cross compile Cargo project to Windows MSVC target with ease";
|
||||
|
|
|
|||
|
|
@ -1,22 +1,35 @@
|
|||
{
|
||||
lib,
|
||||
fetchFromGitHub,
|
||||
fetchpatch,
|
||||
python3Packages,
|
||||
withTeXLive ? true,
|
||||
texliveSmall,
|
||||
}:
|
||||
python3Packages.buildPythonApplication (finalAttrs: {
|
||||
pname = "cgt-calc";
|
||||
version = "1.13.0";
|
||||
version = "1.14.0";
|
||||
pyproject = true;
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "KapJI";
|
||||
repo = "capital-gains-calculator";
|
||||
rev = "v${finalAttrs.version}";
|
||||
hash = "sha256-y/Y05wG89nccXyxfjqazyPJhd8dOkfwRJre+Rzx97Hw=";
|
||||
hash = "sha256-6iOlDNlpfCrbRCxEJsRYw6zqOehv/buVN+iU6J6CtIk=";
|
||||
};
|
||||
|
||||
patches = [
|
||||
# https://github.com/KapJI/capital-gains-calculator/pull/715
|
||||
(fetchpatch {
|
||||
url = "https://github.com/KapJI/capital-gains-calculator/commit/ec7155c1256b876d5906a3885656489e9fdd798c.patch";
|
||||
hash = "sha256-pfGHSKuDRF0T1hP7kpRC285limd1voqLXcXCP7mAD3s=";
|
||||
})
|
||||
];
|
||||
|
||||
pythonRelaxDeps = [
|
||||
"defusedxml"
|
||||
];
|
||||
|
||||
build-system = with python3Packages; [
|
||||
poetry-core
|
||||
];
|
||||
|
|
@ -26,6 +39,7 @@ python3Packages.buildPythonApplication (finalAttrs: {
|
|||
jinja2
|
||||
pandas
|
||||
requests
|
||||
pyrate-limiter
|
||||
types-requests
|
||||
yfinance
|
||||
];
|
||||
|
|
|
|||
|
|
@ -6,11 +6,11 @@
|
|||
}:
|
||||
let
|
||||
pname = "chatbox";
|
||||
version = "1.18.2";
|
||||
version = "1.18.4";
|
||||
|
||||
src = fetchurl {
|
||||
url = "https://download.chatboxai.app/releases/Chatbox-${version}-x86_64.AppImage";
|
||||
hash = "sha256-5SDoObRi+Zwq4ZvnPz1dYvjhU5oLHbbAG4X4E8KfFbA=";
|
||||
hash = "sha256-6BUvwL87ndtI2lFMcNKxpdOpn+EyUhAK9jc+a/zpjpU=";
|
||||
};
|
||||
|
||||
appimageContents = appimageTools.extract { inherit pname version src; };
|
||||
|
|
|
|||
|
|
@ -10,16 +10,16 @@
|
|||
}:
|
||||
rustPlatform.buildRustPackage (finalAttrs: {
|
||||
pname = "clash-rs";
|
||||
version = "0.9.3";
|
||||
version = "0.9.4";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "Watfaq";
|
||||
repo = "clash-rs";
|
||||
tag = "v${finalAttrs.version}";
|
||||
hash = "sha256-MVj+GcSt0Q9bWLz7MpCIj9MtnHh/GRB3p+DapMPLxeY=";
|
||||
hash = "sha256-WtNnBw0/eAz/uO/dlD2yRZHW38CXIT8zhh4lZ3HaIFs=";
|
||||
};
|
||||
|
||||
cargoHash = "sha256-Ikur9G6oSdKbK7gdZozBkplUjPfSjIABTVHjX7UPPvc=";
|
||||
cargoHash = "sha256-8SLBsYtO6qVihc/C9R3ZptHCKgl2iXiQrOWqgDBXdTc=";
|
||||
|
||||
cargoPatches = [ ./Cargo.patch ];
|
||||
|
||||
|
|
|
|||
|
|
@ -8,16 +8,16 @@
|
|||
|
||||
buildGoModule rec {
|
||||
pname = "ctlptl";
|
||||
version = "0.8.44";
|
||||
version = "0.9.0";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "tilt-dev";
|
||||
repo = "ctlptl";
|
||||
rev = "v${version}";
|
||||
hash = "sha256-DIVKwfTSA03Yyservf3TK7y9RKi2t6pELyC0cpoUH3I=";
|
||||
hash = "sha256-y957JaHg2SnDC6yvwI/0fBFjbEKOfKFsNqOOrqQe+TU=";
|
||||
};
|
||||
|
||||
vendorHash = "sha256-bZd2DWQ2utKYctx9KzE5BzF5wkj1rGkka6PsYb7G8Oo=";
|
||||
vendorHash = "sha256-gJiarW1uYr5vl9nt+JN6/yRyYr9J0sfDVZcNLLcwPJY=";
|
||||
|
||||
nativeBuildInputs = [ installShellFiles ];
|
||||
|
||||
|
|
|
|||
18
pkgs/by-name/da/dawarich/0001-build-ffi-gem.diff
Normal file
18
pkgs/by-name/da/dawarich/0001-build-ffi-gem.diff
Normal file
|
|
@ -0,0 +1,18 @@
|
|||
diff --git a/Gemfile.lock b/Gemfile.lock
|
||||
index d45a7657..d0a7b750 100644
|
||||
--- a/Gemfile.lock
|
||||
+++ b/Gemfile.lock
|
||||
@@ -172,12 +172,7 @@ GEM
|
||||
railties (>= 6.1.0)
|
||||
fakeredis (0.1.4)
|
||||
ffaker (2.25.0)
|
||||
- ffi (1.17.2-aarch64-linux-gnu)
|
||||
- ffi (1.17.2-arm-linux-gnu)
|
||||
- ffi (1.17.2-arm64-darwin)
|
||||
- ffi (1.17.2-x86-linux-gnu)
|
||||
- ffi (1.17.2-x86_64-darwin)
|
||||
- ffi (1.17.2-x86_64-linux-gnu)
|
||||
+ ffi (1.17.2)
|
||||
foreman (0.90.0)
|
||||
thor (~> 1.4)
|
||||
fugit (1.11.1)
|
||||
32
pkgs/by-name/da/dawarich/0002-openssl-hotfix.diff
Normal file
32
pkgs/by-name/da/dawarich/0002-openssl-hotfix.diff
Normal file
|
|
@ -0,0 +1,32 @@
|
|||
diff --git a/Gemfile b/Gemfile
|
||||
index 36cf0d9c..fc914849 100644
|
||||
--- a/Gemfile
|
||||
+++ b/Gemfile
|
||||
@@ -28,6 +28,7 @@ gem 'omniauth-github', '~> 2.0.0'
|
||||
gem 'omniauth-google-oauth2'
|
||||
gem 'omniauth_openid_connect'
|
||||
gem 'omniauth-rails_csrf_protection'
|
||||
+gem 'openssl'
|
||||
gem 'parallel'
|
||||
gem 'pg'
|
||||
gem 'prometheus_exporter'
|
||||
diff --git a/Gemfile.lock b/Gemfile.lock
|
||||
index a32eb801..b2fc45bc 100644
|
||||
--- a/Gemfile.lock
|
||||
+++ b/Gemfile.lock
|
||||
@@ -348,6 +348,7 @@ GEM
|
||||
tzinfo
|
||||
validate_url
|
||||
webfinger (~> 2.0)
|
||||
+ openssl (3.3.1)
|
||||
optimist (3.2.1)
|
||||
orm_adapter (0.5.0)
|
||||
ostruct (0.6.1)
|
||||
@@ -665,6 +666,7 @@ DEPENDENCIES
|
||||
omniauth-google-oauth2
|
||||
omniauth-rails_csrf_protection
|
||||
omniauth_openid_connect
|
||||
+ openssl
|
||||
parallel
|
||||
pg
|
||||
prometheus_exporter
|
||||
3390
pkgs/by-name/da/dawarich/gemset.nix
Normal file
3390
pkgs/by-name/da/dawarich/gemset.nix
Normal file
File diff suppressed because it is too large
Load diff
142
pkgs/by-name/da/dawarich/package.nix
Normal file
142
pkgs/by-name/da/dawarich/package.nix
Normal file
|
|
@ -0,0 +1,142 @@
|
|||
{
|
||||
lib,
|
||||
applyPatches,
|
||||
bundlerEnv,
|
||||
fetchFromGitHub,
|
||||
fetchNpmDeps,
|
||||
nixosTests,
|
||||
nodejs,
|
||||
npmHooks,
|
||||
ruby_3_4,
|
||||
stdenv,
|
||||
tailwindcss_3,
|
||||
gemset ? import ./gemset.nix,
|
||||
sources ? lib.importJSON ./sources.json,
|
||||
unpatchedSource ? fetchFromGitHub {
|
||||
owner = "Freika";
|
||||
repo = "dawarich";
|
||||
tag = sources.version;
|
||||
inherit (sources) hash;
|
||||
},
|
||||
}:
|
||||
let
|
||||
ruby = ruby_3_4;
|
||||
in
|
||||
stdenv.mkDerivation (finalAttrs: {
|
||||
pname = "dawarich";
|
||||
inherit (sources) version;
|
||||
|
||||
# Use `applyPatches` here because bundix in the update script (see ./update.sh)
|
||||
# needs to run on the already patched Gemfile and Gemfile.lock.
|
||||
# Only patches changing these two files should be here;
|
||||
# patches for other parts of the application should go directly into mkDerivation.
|
||||
src = applyPatches {
|
||||
src = unpatchedSource;
|
||||
patches = [
|
||||
# bundix and bundlerEnv fail with system-specific gems
|
||||
./0001-build-ffi-gem.diff
|
||||
# openssl 3.6.0 breaks ruby openssl gem
|
||||
# See https://github.com/NixOS/nixpkgs/issues/456753
|
||||
# and https://github.com/ruby/openssl/issues/949#issuecomment-3370358680
|
||||
./0002-openssl-hotfix.diff
|
||||
];
|
||||
postPatch = ''
|
||||
substituteInPlace ./Gemfile \
|
||||
--replace-fail "ruby File.read('.ruby-version').strip" "ruby '>= 3.4.0'"
|
||||
'';
|
||||
};
|
||||
|
||||
postPatch = ''
|
||||
# move import directory to a more convenient place, otherwise its behind systemd private tmp
|
||||
substituteInPlace ./app/services/imports/watcher.rb \
|
||||
--replace-fail 'tmp/imports/watched' 'storage/imports/watched'
|
||||
'';
|
||||
|
||||
dawarichGems = bundlerEnv {
|
||||
name = "${finalAttrs.pname}-gems-${finalAttrs.version}";
|
||||
inherit gemset ruby;
|
||||
inherit (finalAttrs) version;
|
||||
gemdir = finalAttrs.src;
|
||||
};
|
||||
|
||||
npmDeps = fetchNpmDeps {
|
||||
inherit (finalAttrs) src;
|
||||
hash = sources.npmHash;
|
||||
};
|
||||
|
||||
RAILS_ENV = "production";
|
||||
NODE_ENV = "production";
|
||||
REDIS_URL = ""; # build error if not defined
|
||||
TAILWINDCSS_INSTALL_DIR = "${tailwindcss_3}/bin";
|
||||
|
||||
nativeBuildInputs = [
|
||||
nodejs
|
||||
npmHooks.npmConfigHook
|
||||
finalAttrs.dawarichGems
|
||||
finalAttrs.dawarichGems.wrappedRuby
|
||||
];
|
||||
propagatedBuildInputs = [
|
||||
finalAttrs.dawarichGems.wrappedRuby
|
||||
];
|
||||
buildInputs = [
|
||||
finalAttrs.dawarichGems
|
||||
];
|
||||
|
||||
buildPhase = ''
|
||||
runHook preBuild
|
||||
|
||||
patchShebangs bin/
|
||||
for b in $(ls $dawarichGems/bin/)
|
||||
do
|
||||
if [ ! -f bin/$b ]; then
|
||||
ln -s $dawarichGems/bin/$b bin/$b
|
||||
fi
|
||||
done
|
||||
|
||||
SECRET_KEY_BASE_DUMMY=1 bundle exec rake assets:precompile
|
||||
|
||||
rm -rf node_modules tmp log storage
|
||||
ln -s /var/log/dawarich log
|
||||
ln -s /var/lib/dawarich storage
|
||||
ln -s /tmp tmp
|
||||
|
||||
# delete more files unneeded at runtime
|
||||
rm -rf docker docs screenshots package.json package-lock.json *.md *.example
|
||||
|
||||
runHook postBuild
|
||||
'';
|
||||
|
||||
installPhase = ''
|
||||
runHook preInstall
|
||||
|
||||
# tests are not needed at runtime
|
||||
rm -rf spec e2e
|
||||
# delete artifacts from patching
|
||||
rm *.orig
|
||||
|
||||
mkdir -p $out
|
||||
mv .{ruby*,app_version} $out/
|
||||
mv * $out/
|
||||
|
||||
runHook postInstall
|
||||
'';
|
||||
|
||||
passthru = {
|
||||
tests = {
|
||||
inherit (nixosTests) dawarich;
|
||||
};
|
||||
# run with: nix-shell ./maintainers/scripts/update.nix --argstr package dawarich
|
||||
updateScript = ./update.sh;
|
||||
};
|
||||
|
||||
meta = {
|
||||
changelog = "https://github.com/Freika/dawarich/blob/${finalAttrs.version}/CHANGELOG.md";
|
||||
description = "Self-hostable alternative to Google Location History (Google Maps Timeline)";
|
||||
homepage = "https://dawarich.app/";
|
||||
license = lib.licenses.agpl3Only;
|
||||
maintainers = with lib.maintainers; [
|
||||
diogotcorreia
|
||||
];
|
||||
platforms = lib.platforms.linux;
|
||||
};
|
||||
})
|
||||
5
pkgs/by-name/da/dawarich/sources.json
Normal file
5
pkgs/by-name/da/dawarich/sources.json
Normal file
|
|
@ -0,0 +1,5 @@
|
|||
{
|
||||
"version": "0.37.3",
|
||||
"hash": "sha256-cZBT3ek5mzHbPr4aVHU47SNstEuBnpBNaCfaAe/IAEw=",
|
||||
"npmHash": "sha256-wDe1Zx9HyheS76ltLtDQ+f4M7ohu/pyRuRaGGCnhkQI="
|
||||
}
|
||||
40
pkgs/by-name/da/dawarich/update.sh
Executable file
40
pkgs/by-name/da/dawarich/update.sh
Executable file
|
|
@ -0,0 +1,40 @@
|
|||
#!/usr/bin/env nix-shell
|
||||
#! nix-shell -i bash -p bundix curl jq nix-update nix-prefetch-github prefetch-npm-deps gnused
|
||||
set -e
|
||||
set -o pipefail
|
||||
|
||||
OWNER="Freika"
|
||||
REPO="dawarich"
|
||||
|
||||
old_version=$(nix-instantiate --eval -A 'dawarich.version' default.nix | tr -d '"')
|
||||
version=$(curl -s ${GITHUB_TOKEN:+-u ":$GITHUB_TOKEN"} "https://api.github.com/repos/$OWNER/$REPO/releases/latest" | jq -r ".tag_name")
|
||||
|
||||
echo "Updating to $version"
|
||||
|
||||
if [[ "$old_version" == "$version" ]]; then
|
||||
echo "Already up to date!"
|
||||
exit 0
|
||||
fi
|
||||
|
||||
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" &>/dev/null && pwd)"
|
||||
|
||||
echo "Fetching source code $REVISION"
|
||||
JSON=$(nix-prefetch-github "$OWNER" "$REPO" --rev "refs/tags/$version" 2>/dev/null)
|
||||
HASH=$(echo "$JSON" | jq -r .hash)
|
||||
|
||||
cat > "$SCRIPT_DIR/sources.json" << EOF
|
||||
{
|
||||
"version": "$version",
|
||||
"hash": "$HASH",
|
||||
"npmHash": "sha256-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA="
|
||||
}
|
||||
EOF
|
||||
|
||||
SOURCE_DIR="$(nix-build --no-out-link -A dawarich.src)"
|
||||
|
||||
echo "Creating gemset.nix"
|
||||
bundix --lockfile="$SOURCE_DIR/Gemfile.lock" --gemfile="$SOURCE_DIR/Gemfile" --gemset="$SCRIPT_DIR/gemset.nix"
|
||||
nixfmt "$SCRIPT_DIR/gemset.nix"
|
||||
|
||||
NPM_HASH="$(prefetch-npm-deps "$SOURCE_DIR/package-lock.json" 2>/dev/null)"
|
||||
sed -i "s;sha256-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=;$NPM_HASH;g" "$SCRIPT_DIR/sources.json"
|
||||
|
|
@ -6,16 +6,16 @@
|
|||
|
||||
buildGoModule rec {
|
||||
pname = "ddns-go";
|
||||
version = "6.14.1";
|
||||
version = "6.15.0";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "jeessy2";
|
||||
repo = "ddns-go";
|
||||
rev = "v${version}";
|
||||
hash = "sha256-c+V+EgJvElL/Ga0z6420E50c59cmjn/IlkfyeATLDFs=";
|
||||
hash = "sha256-NDIevPRIbRqh97IWk4lCqmjobepVMeG5QFKUJdw9Lyo=";
|
||||
};
|
||||
|
||||
vendorHash = "sha256-vpdT1apjuMvM6MmQfx1XBQtQznK7oxUjIdkgOXjUF6g=";
|
||||
vendorHash = "sha256-EGhZyoitQ7l0sQZbono2pKhQZJEnGrennMz453Lrbek=";
|
||||
|
||||
ldflags = [
|
||||
"-X main.version=${version}"
|
||||
|
|
|
|||
|
|
@ -22,25 +22,30 @@ let
|
|||
|
||||
devenv_nix =
|
||||
let
|
||||
components =
|
||||
(nixVersions.nixComponents_git.override { version = devenvNixVersion; }).overrideSource
|
||||
(fetchFromGitHub {
|
||||
owner = "cachix";
|
||||
repo = "nix";
|
||||
rev = "devenv-${devenvNixVersion}";
|
||||
hash = "sha256-3+GHIYGg4U9XKUN4rg473frIVNn8YD06bjwxKS1IPrU=";
|
||||
});
|
||||
components = (
|
||||
nixVersions.nixComponents_git.overrideSource (fetchFromGitHub {
|
||||
owner = "cachix";
|
||||
repo = "nix";
|
||||
rev = "devenv-${devenvNixVersion}";
|
||||
hash = "sha256-3+GHIYGg4U9XKUN4rg473frIVNn8YD06bjwxKS1IPrU=";
|
||||
})
|
||||
);
|
||||
in
|
||||
# Support for mdbook >= 0.5, https://github.com/NixOS/nix/issues/14628
|
||||
(
|
||||
# Support for mdbook >= 0.5, https://github.com/NixOS/nix/issues/14628
|
||||
components.appendPatches [
|
||||
(components.appendPatches [
|
||||
(fetchpatch2 {
|
||||
name = "nix-2.30-14695-mdbook-0.5-support.patch";
|
||||
url = "https://github.com/NixOS/nix/commit/5cbd7856de0a9c13351f98e32a1e26d0854d87fd.patch";
|
||||
excludes = [ "doc/manual/package.nix" ];
|
||||
hash = "sha256-GYaTOG9wZT9UI4G6za535PkLyjHKSxwBjJsXbjmI26g=";
|
||||
})
|
||||
]
|
||||
]).overrideScope
|
||||
(
|
||||
finalScope: prevScope: {
|
||||
version = devenvNixVersion;
|
||||
}
|
||||
)
|
||||
).nix-everything.overrideAttrs
|
||||
(old: {
|
||||
pname = "devenv-nix";
|
||||
|
|
|
|||
|
|
@ -8,13 +8,13 @@
|
|||
|
||||
buildGoModule rec {
|
||||
pname = "diffnav";
|
||||
version = "0.5.0";
|
||||
version = "0.6.0";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "dlvhdr";
|
||||
repo = "diffnav";
|
||||
tag = "v${version}";
|
||||
hash = "sha256-QDPH7vBoA4YCmC+CLmeBdspwOhFEV3iSiyBYX6lwOLA=";
|
||||
hash = "sha256-pak1R2BmL3A8YADwFw7QZk7JsGQzBBS/xHzRhYlMKGo=";
|
||||
};
|
||||
|
||||
vendorHash = "sha256-cDA5qstTRApt4DXcakNLR5nsyh9i7z2Qrvp6q/OoYhY=";
|
||||
|
|
|
|||
|
|
@ -14,7 +14,7 @@
|
|||
|
||||
let
|
||||
pname = "dump_syms";
|
||||
version = "2.3.5";
|
||||
version = "2.3.6";
|
||||
in
|
||||
rustPlatform.buildRustPackage {
|
||||
inherit pname version;
|
||||
|
|
@ -23,10 +23,10 @@ rustPlatform.buildRustPackage {
|
|||
owner = "mozilla";
|
||||
repo = "dump_syms";
|
||||
rev = "v${version}";
|
||||
hash = "sha256-zxYGxqnh6urXDC/ZQf3aFzBqOj5QNulyDpTsZ47BDkU=";
|
||||
hash = "sha256-ABfjLV6WMIiaSiyfR/uxL6+VyO/pO6oZjbJSAxRGXuE=";
|
||||
};
|
||||
|
||||
cargoHash = "sha256-gnXf6APcEJJKpKsqsBPLXlZddEt+6ENyt15iDw8XShc=";
|
||||
cargoHash = "sha256-t9xK7epfBp1XgewlAuAnInlKQDQ+3gVNmJoLNcey8YU=";
|
||||
|
||||
nativeBuildInputs = [
|
||||
pkg-config
|
||||
|
|
|
|||
|
|
@ -8,16 +8,16 @@
|
|||
|
||||
buildGoModule rec {
|
||||
pname = "ejsonkms";
|
||||
version = "0.2.9";
|
||||
version = "0.3.0";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "envato";
|
||||
repo = "ejsonkms";
|
||||
rev = "v${version}";
|
||||
hash = "sha256-IQZYpxY6t7W9a3PKc9o7+MbOOxsa0Hs1H8HneilrdBs=";
|
||||
hash = "sha256-BLOlDvheCwlxYaONGh/foqvWs33ZqGA3n7SkM5LfJKY=";
|
||||
};
|
||||
|
||||
vendorHash = "sha256-xOp02g7F1rb3Zq8lbjvDrYrFrcT+msv/KUqQd2qVKdA=";
|
||||
vendorHash = "sha256-6C/hZwqB6yqFjfDe+KQAY+ja41v/FVaEmPEUXb0FZTA=";
|
||||
|
||||
ldflags = [
|
||||
"-X main.version=v${version}"
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
{
|
||||
"version" = "1.12.7";
|
||||
"version" = "1.12.8";
|
||||
"hashes" = {
|
||||
"desktopSrcHash" = "sha256-VnZyNrylYbKhd9YyuoUSJWbTEphOsTivbbYIUeEZv2U=";
|
||||
"desktopYarnHash" = "sha256-Gnd/ouRI/OxFwsvR5arfi/FcGld3XjtW9tzuwyX8IRg=";
|
||||
"desktopSrcHash" = "sha256-J+ITqHLxbmhhjFnyfBlHFzxrPeIvsCv+iaxa8DiWorM=";
|
||||
"desktopYarnHash" = "sha256-coa2AMNGLDtqcrQJDc/DDkcaWBCLa76VTKJLGlr7dpQ=";
|
||||
};
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,8 +1,8 @@
|
|||
{
|
||||
"version" = "1.12.7";
|
||||
"version" = "1.12.8";
|
||||
"hashes" = {
|
||||
"webSrcHash" = "sha256-D24x3T1m0qRmlpmkZ7zTAxhtMUddlMaip0JKT8H3Ci0=";
|
||||
"webYarnHash" = "sha256-72M6XyI9zfxcym7e/CvLmQHe21eyzQXO3YfQipFh06s=";
|
||||
"webSharedComponentsYarnHash" = "sha256-NrDB0itZ0xSFg4lZhAs6EGFap8GE1CZ1/EFa7fa4P2Q=";
|
||||
"webSrcHash" = "sha256-c1vrFEe0kEpCXs67oeZPv0xqmL3YaqAvD1nqoTQXlzk=";
|
||||
"webYarnHash" = "sha256-Vo0SkCUPVQsVCgVILT+uvjbExDpYk4/DRfWdiisbf1o=";
|
||||
"webSharedComponentsYarnHash" = "sha256-8wvjoanSd5KLDW6MbwY+3Ch9rzWpukeQEvYzMxXsbKA=";
|
||||
};
|
||||
}
|
||||
|
|
|
|||
|
|
@ -7,13 +7,13 @@
|
|||
}:
|
||||
llvmPackages.stdenv.mkDerivation rec {
|
||||
pname = "enzyme";
|
||||
version = "0.0.235";
|
||||
version = "0.0.238";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "EnzymeAD";
|
||||
repo = "Enzyme";
|
||||
rev = "v${version}";
|
||||
hash = "sha256-wrz2DyhJAn5T639RdVDjRogPRLriSHiiDn05AgBLYnU=";
|
||||
hash = "sha256-n++71Ibt4+nnyx56ICovObJx9CH12fxH+WXsAByIyJA=";
|
||||
};
|
||||
|
||||
postPatch = ''
|
||||
|
|
|
|||
|
|
@ -6,13 +6,13 @@
|
|||
}:
|
||||
stdenv.mkDerivation (finalAttrs: {
|
||||
pname = "exploitdb";
|
||||
version = "2025-12-26";
|
||||
version = "2026-01-18";
|
||||
|
||||
src = fetchFromGitLab {
|
||||
owner = "exploit-database";
|
||||
repo = "exploitdb";
|
||||
tag = finalAttrs.version;
|
||||
hash = "sha256-7it08Z2n1Wl4GaVTLxBIlejwPEsmyv+j142/HAndLO0=";
|
||||
hash = "sha256-ZV8CcpZzxK1uts8RzUmzp4mKXvS/xv8D02Jsv7DzByQ=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [ makeWrapper ];
|
||||
|
|
|
|||
|
|
@ -12,16 +12,17 @@
|
|||
darwin,
|
||||
copyDesktopItems,
|
||||
makeDesktopItem,
|
||||
nix-update-script,
|
||||
}:
|
||||
let
|
||||
pname = "feishin";
|
||||
version = "1.2.0";
|
||||
version = "1.3.0";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "jeffvli";
|
||||
repo = "feishin";
|
||||
tag = "v${version}";
|
||||
hash = "sha256-acNUXvmj964pO8h2fsGfex2BeIshExMWe0w/QmtikkM=";
|
||||
hash = "sha256-loe2hdn4TGCOLI1OQ19/zXikTKijYWtgSeP1gbwxfO0=";
|
||||
};
|
||||
|
||||
electron = electron_39;
|
||||
|
|
@ -147,6 +148,8 @@ buildNpmPackage {
|
|||
})
|
||||
];
|
||||
|
||||
passthru.updateScript = nix-update-script { };
|
||||
|
||||
meta = {
|
||||
description = "Full-featured Jellyfin, Navidrome, and OpenSubsonic Compatible Music Player";
|
||||
homepage = "https://github.com/jeffvli/feishin";
|
||||
|
|
|
|||
|
|
@ -6,7 +6,7 @@
|
|||
|
||||
let
|
||||
pname = "gate";
|
||||
version = "0.62.2";
|
||||
version = "0.62.3";
|
||||
in
|
||||
buildGoModule {
|
||||
inherit pname version;
|
||||
|
|
@ -15,10 +15,10 @@ buildGoModule {
|
|||
owner = "minekube";
|
||||
repo = "gate";
|
||||
tag = "v${version}";
|
||||
hash = "sha256-WxR2VKlvDFOzIiDPuJLoBa5U9afMrYJ9QTDl0yTgSu4=";
|
||||
hash = "sha256-tOyXVqmexAWpC2s86aUUjmDp6V+qvP3ve8FrqdtexvU=";
|
||||
};
|
||||
|
||||
vendorHash = "sha256-f7SkECS80Lwkd0xSzHq+x05ZBjBYKXsA4rPidyIAYak=";
|
||||
vendorHash = "sha256-AZa9u1f8MgnqW0QX6X+naRqukGTxI7WMNY4ZgJHoKyw=";
|
||||
|
||||
ldflags = [
|
||||
"-s"
|
||||
|
|
|
|||
|
|
@ -18,7 +18,7 @@ stdenvNoCC.mkDerivation (finalAttrs: {
|
|||
|
||||
src = fetchurl {
|
||||
url = "https://github.com/4ian/GDevelop/releases/download/v${version}/GDevelop-5-${version}-universal-mac.zip";
|
||||
hash = "sha256-U4dRxWZ/0EJWeFhTJkocSFhlks11gSPn3z68k2/1FB0=";
|
||||
hash = "sha256-zBUWAFsaa+GenaHDRYNlwMs3BmyOIQ3sr/YYCX1ytEE=";
|
||||
};
|
||||
|
||||
sourceRoot = ".";
|
||||
|
|
|
|||
|
|
@ -13,7 +13,7 @@ let
|
|||
if stdenv.hostPlatform.system == "x86_64-linux" then
|
||||
fetchurl {
|
||||
url = "https://github.com/4ian/GDevelop/releases/download/v${version}/GDevelop-5-${version}.AppImage";
|
||||
hash = "sha256-C3KTa+fs8Mnpz/UELKX+nb6yp6kvdM9+uX5d6Ht2q1w=";
|
||||
hash = "sha256-1XmKHyUuNcY1efWKLSsEoh+dvSmzUFz3FaoO/iTD7QY=";
|
||||
}
|
||||
else
|
||||
throw "${pname}-${version} is not supported on ${stdenv.hostPlatform.system}";
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@
|
|||
callPackage,
|
||||
}:
|
||||
let
|
||||
version = "5.6.251";
|
||||
version = "5.6.252";
|
||||
pname = "gdevelop";
|
||||
meta = {
|
||||
description = "Graphical Game Development Studio";
|
||||
|
|
|
|||
|
|
@ -8,17 +8,17 @@
|
|||
|
||||
buildGoModule (finalAttrs: {
|
||||
pname = "git-pages-cli";
|
||||
version = "1.5.1";
|
||||
version = "1.5.2";
|
||||
|
||||
src = fetchFromGitea {
|
||||
domain = "codeberg.org";
|
||||
owner = "git-pages";
|
||||
repo = "git-pages-cli";
|
||||
rev = "v${finalAttrs.version}";
|
||||
hash = "sha256-T6spNuuG0l1bFv7SnsDTGBtD3Sa+8zKN0/VbsKVkGrM=";
|
||||
hash = "sha256-58fEurUoRw1hJ2eYHrXrsVDElVVo5BH0bZFw7h1yM0w=";
|
||||
};
|
||||
|
||||
vendorHash = "sha256-5vjUhN3lCr41q91lOD7v0F9c6a8GJj7wBGnnzgFBhJU=";
|
||||
vendorHash = "sha256-Mico/PFTb8YoRZCP42QETS0DkzMABUGTzBvy692XDJc=";
|
||||
|
||||
ldflags = [
|
||||
"-X"
|
||||
|
|
|
|||
|
|
@ -10,11 +10,11 @@
|
|||
|
||||
stdenv.mkDerivation (finalAttrs: {
|
||||
pname = "github-copilot-cli";
|
||||
version = "0.0.380";
|
||||
version = "0.0.384";
|
||||
|
||||
src = fetchzip {
|
||||
url = "https://registry.npmjs.org/@github/copilot/-/copilot-${finalAttrs.version}.tgz";
|
||||
hash = "sha256-QClw+IEz0TBVgaQGhZVwk63Bvjb5btTtBPkHWV7Wxl0=";
|
||||
hash = "sha256-UI85wx9So28J0QCXP1z2zCXmA54L1dzd0Msr9NLs0CY=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [ makeBinaryWrapper ];
|
||||
|
|
|
|||
|
|
@ -19,6 +19,11 @@ stdenv.mkDerivation (finalAttrs: {
|
|||
hash = "sha256-wi1QiqaWRh1DmIhwmu94lL/4uuMv6DnB+whM61Jg1Zs=";
|
||||
};
|
||||
|
||||
# Fix build with GCC 15
|
||||
postPatch = ''
|
||||
sed -i "1i #include <cstdint>" externals/glslang/SPIRV/SpvBuilder.h
|
||||
'';
|
||||
|
||||
nativeBuildInputs = [
|
||||
python3
|
||||
cmake
|
||||
|
|
|
|||
|
|
@ -7,18 +7,18 @@
|
|||
|
||||
buildGoModule rec {
|
||||
pname = "google-alloydb-auth-proxy";
|
||||
version = "1.13.9";
|
||||
version = "1.13.10";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "GoogleCloudPlatform";
|
||||
repo = "alloydb-auth-proxy";
|
||||
tag = "v${version}";
|
||||
hash = "sha256-VCfK2EcFerIxqaAEY9KnfPLqwOJaz6CVRbTQGzTM6SY=";
|
||||
hash = "sha256-e+m7vr/N4Ij8X89f12ZjJDh60hOMQXQOBOaVE4TUVaA=";
|
||||
};
|
||||
|
||||
subPackages = [ "." ];
|
||||
|
||||
vendorHash = "sha256-sC+bAlzb+Pcj0+NQDaUeyjr6I+fv7cQ3+JHJKKtmiT4=";
|
||||
vendorHash = "sha256-PKtN0HvIzxr42XpandoHqqK9N0ohq2dXxGbnIlMO8mo=";
|
||||
|
||||
checkFlags = [
|
||||
"-short"
|
||||
|
|
|
|||
|
|
@ -24,13 +24,13 @@
|
|||
|
||||
stdenv.mkDerivation (finalAttrs: {
|
||||
pname = "goverlay";
|
||||
version = "1.7.0";
|
||||
version = "1.7.1";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "benjamimgois";
|
||||
repo = "goverlay";
|
||||
tag = finalAttrs.version;
|
||||
hash = "sha256-xfc+ht1piVnjXK+hxHKbhdpp63p/DMLPSzvJq+mYhFs=";
|
||||
hash = "sha256-zzGxeBnyj04zmPNQ09sYAO17Jaiwx+HA5TyiLo4jFr8=";
|
||||
};
|
||||
|
||||
outputs = [
|
||||
|
|
|
|||
|
|
@ -18,13 +18,13 @@
|
|||
|
||||
let
|
||||
pname = "gui-for-singbox";
|
||||
version = "1.18.0";
|
||||
version = "1.19.0";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "GUI-for-Cores";
|
||||
repo = "GUI.for.SingBox";
|
||||
tag = "v${version}";
|
||||
hash = "sha256-8X+hLtNKE9iFJMvUtY1ZDXwp39b4bKDotiU79jVto4E=";
|
||||
hash = "sha256-CY5i5+ObqPVCPiqHLttjxhMOi9fiHp5HWX33fq43txw=";
|
||||
};
|
||||
|
||||
metaCommon = {
|
||||
|
|
|
|||
|
|
@ -9,16 +9,16 @@
|
|||
}:
|
||||
rustPlatform.buildRustPackage (finalAttrs: {
|
||||
pname = "hl-log-viewer";
|
||||
version = "0.35.1";
|
||||
version = "0.35.2";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "pamburus";
|
||||
repo = "hl";
|
||||
tag = "v${finalAttrs.version}";
|
||||
hash = "sha256-gkUZHepuPOzFi0oWFBzqXPFfWaxlKr5+VCkZwawz+/Q=";
|
||||
hash = "sha256-jCUr+9FPYnGRbeQkrJjfb9/Cjn3kq40z6cYkU4Gomts=";
|
||||
};
|
||||
|
||||
cargoHash = "sha256-jon7nDdK2bYDIh/zqJV7em87se9XBXV6+c2HlMBzJnA=";
|
||||
cargoHash = "sha256-+QFNdQv2swIEHivQ5E7ujyYk7xa6gM8A5SwJfnKPScY=";
|
||||
|
||||
nativeBuildInputs = [ installShellFiles ];
|
||||
|
||||
|
|
|
|||
|
|
@ -6,18 +6,18 @@
|
|||
}:
|
||||
rustPlatform.buildRustPackage (finalAttrs: {
|
||||
pname = "lacy";
|
||||
version = "0.6.0";
|
||||
version = "0.6.1";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "timothebot";
|
||||
repo = "lacy";
|
||||
tag = "v${finalAttrs.version}";
|
||||
hash = "sha256-NjLCN9RDWusfw1BwSzRQLCx4UhHyMpQZ5+igRG1rX9Q=";
|
||||
hash = "sha256-3LFJpzuL2ULnStFwW165gH/S8Hjh49QE4R6c0NyKRSI=";
|
||||
};
|
||||
|
||||
passthru.updateScript = nix-update-script { };
|
||||
|
||||
cargoHash = "sha256-eE/kyb09AwcYTsyXQ9Yn43QF2veCRAgGkNgykJHCsFE=";
|
||||
cargoHash = "sha256-OJW29CopdO7lbkr0F2KVnfbRGEGIf8J8Vu8YChjeElY=";
|
||||
|
||||
meta = {
|
||||
description = "Fast magical cd alternative for lacy terminal navigators";
|
||||
|
|
|
|||
|
|
@ -8,7 +8,7 @@
|
|||
|
||||
let
|
||||
pname = "lefthook";
|
||||
version = "2.0.14";
|
||||
version = "2.0.15";
|
||||
in
|
||||
buildGoModule {
|
||||
inherit pname version;
|
||||
|
|
@ -17,7 +17,7 @@ buildGoModule {
|
|||
owner = "evilmartians";
|
||||
repo = "lefthook";
|
||||
rev = "v${version}";
|
||||
hash = "sha256-YPDE4KvYW5P93+mb7RWiXBqkGrkzr/fPlVDh1Keizdk=";
|
||||
hash = "sha256-HBVBH3F6EGLaB2FRgkhdwR9+E9PlthxEs/kckUZJosA=";
|
||||
};
|
||||
|
||||
vendorHash = "sha256-fIPvoR/uRI3q/yOl1qS2pE4JdCPc4RC4DEy8LT7Xrs0=";
|
||||
|
|
|
|||
|
|
@ -8,13 +8,13 @@ let
|
|||
|
||||
srcs = {
|
||||
lemon = fetchurl {
|
||||
sha256 = "1c5pk2hz7j9hix5mpc38rwnm8dnlr2jqswf4lan6v78ccbyqzkjx";
|
||||
url = "http://www.sqlite.org/src/raw/tool/lemon.c?name=680980c7935bfa1edec20c804c9e5ba4b1dd96f5";
|
||||
hash = "sha256-TXVOEtRpOhLCyi4C3RMt0lHmMp/y2K5YdL8ND6WPrOY=";
|
||||
url = "https://www.sqlite.org/src/raw/3fdc16b23f1ea0c91c049b518fc3f75c71843dbfe2b447fcb3cd92d9e4f219f8?at=lemon.c";
|
||||
name = "lemon.c";
|
||||
};
|
||||
lempar = fetchurl {
|
||||
sha256 = "1ba13a6yh9j2cs1aw2fh4dxqvgf399gxq1gpp4sh8q0f2w6qiw3i";
|
||||
url = "http://www.sqlite.org/src/raw/tool/lempar.c?name=01ca97f87610d1dac6d8cd96ab109ab1130e76dc";
|
||||
hash = "sha256-TYKrUJHtpoljeRWZq4Y1rYLlu7LeM/HuUhe3LJZZkVo=";
|
||||
url = "https://www.sqlite.org/src/raw/b57e1780bf8098dd4a9a5bba537f994276ea825a420f6165153e5894dc2dfb07?at=lempar.c";
|
||||
name = "lempar.c";
|
||||
};
|
||||
};
|
||||
|
|
@ -22,7 +22,7 @@ let
|
|||
in
|
||||
stdenv.mkDerivation {
|
||||
pname = "lemon";
|
||||
version = "1.69";
|
||||
version = "1.0-unstable";
|
||||
|
||||
dontUnpack = true;
|
||||
|
||||
|
|
|
|||
|
|
@ -18,7 +18,7 @@
|
|||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "libvisio";
|
||||
version = "0.1.8";
|
||||
version = "0.1.10";
|
||||
|
||||
outputs = [
|
||||
"out"
|
||||
|
|
@ -29,7 +29,7 @@ stdenv.mkDerivation rec {
|
|||
|
||||
src = fetchurl {
|
||||
url = "https://dev-www.libreoffice.org/src/libvisio/${pname}-${version}.tar.xz";
|
||||
hash = "sha256-tAmP+/TcuecSE/oKzdvZKPJ77TDbLYAjSBOxXVPQQFs=";
|
||||
hash = "sha256-np7/dREtTZLZImKtf8JZnCHib4/FulSQDv3IPAUB5HI=";
|
||||
};
|
||||
|
||||
strictDeps = true;
|
||||
|
|
|
|||
|
|
@ -31,7 +31,7 @@
|
|||
metalSupport ? stdenv.hostPlatform.isDarwin && stdenv.hostPlatform.isAarch64 && !openclSupport,
|
||||
vulkanSupport ? false,
|
||||
rpcSupport ? false,
|
||||
curl,
|
||||
openssl,
|
||||
llama-cpp,
|
||||
shaderc,
|
||||
vulkan-headers,
|
||||
|
|
@ -74,13 +74,13 @@ let
|
|||
in
|
||||
effectiveStdenv.mkDerivation (finalAttrs: {
|
||||
pname = "llama-cpp";
|
||||
version = "7767";
|
||||
version = "7772";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "ggml-org";
|
||||
repo = "llama.cpp";
|
||||
tag = "b${finalAttrs.version}";
|
||||
hash = "sha256-k6Q1fUci0SkEB8vH5G3oG/evG7aUYBSqo+iXYG6x/dE=";
|
||||
hash = "sha256-qARA75QjtqBiRI4Hjr+dHs4Kr+Gk9n1DxRk401y+m68=";
|
||||
leaveDotGit = true;
|
||||
postFetch = ''
|
||||
git -C "$out" rev-parse --short HEAD > $out/COMMIT
|
||||
|
|
@ -105,7 +105,7 @@ effectiveStdenv.mkDerivation (finalAttrs: {
|
|||
++ optionals rocmSupport rocmBuildInputs
|
||||
++ optionals blasSupport [ blas ]
|
||||
++ optionals vulkanSupport vulkanBuildInputs
|
||||
++ [ curl ];
|
||||
++ [ openssl ];
|
||||
|
||||
preConfigure = ''
|
||||
prependToVar cmakeFlags "-DLLAMA_BUILD_COMMIT:STRING=$(cat COMMIT)"
|
||||
|
|
@ -117,7 +117,7 @@ effectiveStdenv.mkDerivation (finalAttrs: {
|
|||
(cmakeBool "LLAMA_BUILD_EXAMPLES" false)
|
||||
(cmakeBool "LLAMA_BUILD_SERVER" true)
|
||||
(cmakeBool "LLAMA_BUILD_TESTS" (finalAttrs.finalPackage.doCheck or false))
|
||||
(cmakeBool "LLAMA_CURL" true)
|
||||
(cmakeBool "LLAMA_OPENSSL" true)
|
||||
(cmakeBool "BUILD_SHARED_LIBS" true)
|
||||
(cmakeBool "GGML_BLAS" blasSupport)
|
||||
(cmakeBool "GGML_CLBLAST" openclSupport)
|
||||
|
|
|
|||
|
|
@ -6,11 +6,11 @@
|
|||
|
||||
stdenvNoCC.mkDerivation rec {
|
||||
pname = "lxgw-neoxihei";
|
||||
version = "1.238";
|
||||
version = "1.239";
|
||||
|
||||
src = fetchurl {
|
||||
url = "https://github.com/lxgw/LxgwNeoXiHei/releases/download/v${version}/LXGWNeoXiHei.ttf";
|
||||
hash = "sha256-DEH63tH3+edrk/Srh89dqNDgevM8CuccUlBpNnGpXKE=";
|
||||
hash = "sha256-x8ZhP+umMjSESZjf0R2vIbszcs6IUlEVIZKAQD20DxY=";
|
||||
};
|
||||
|
||||
dontUnpack = true;
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
version = "1.28.2";
|
||||
hash = "sha256-KqNMykpeNwY86DmpxH0+AGsVsQlICIyU49Y8P1wko+A=";
|
||||
npmDepsHash = "sha256-17cX1tGjHade5sxNqlZGITBKleZR2IwTujVqecsb9Po=";
|
||||
vendorHash = "sha256-pzzzji+MflKwFzAMkWQrGt99M9yanVsguHrHKB6VXSc=";
|
||||
version = "1.28.3";
|
||||
hash = "sha256-5QfGfEevV/8Epmh7cSHwB11J6wmpXzXHsPCrDms1bAo=";
|
||||
npmDepsHash = "sha256-zyEk7OcaN8ikJFvSzIIVvTKICi8GtekT4FB2YDHzo3o=";
|
||||
vendorHash = "sha256-yx7L7evEt0p/U8H+gNGl1sx/JZ5qg+0fInFjZK8xdp4=";
|
||||
}
|
||||
|
|
|
|||
|
|
@ -8,16 +8,16 @@
|
|||
# https://github.com/kovetskiy/mark/pull/581#issuecomment-2797872996
|
||||
buildGoModule rec {
|
||||
pname = "mark";
|
||||
version = "15.2.0";
|
||||
version = "15.3.0";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "kovetskiy";
|
||||
repo = "mark";
|
||||
rev = "v${version}";
|
||||
sha256 = "sha256-ZvFaSoD9nQtxc5ONWneVgpAfX3f7sS0lBSMXqhABn8o=";
|
||||
sha256 = "sha256-tQmoTvZO/Las8QDJqcmW7upAciFEQqVFVKEVx6Zg7Mg=";
|
||||
};
|
||||
|
||||
vendorHash = "sha256-3hfeh7PRzsPfQ+aLPV44ExXum6lG6Huvc7itRIn8mNo=";
|
||||
vendorHash = "sha256-Pk56hx2GRq+4NmCVx0S8Mr2Jgnn44aSRNfhtZIH9Lxk=";
|
||||
|
||||
ldflags = [
|
||||
"-s"
|
||||
|
|
|
|||
7704
pkgs/by-name/ma/markdownlint-cli2/package-lock.json
generated
Normal file
7704
pkgs/by-name/ma/markdownlint-cli2/package-lock.json
generated
Normal file
File diff suppressed because it is too large
Load diff
|
|
@ -1,57 +1,52 @@
|
|||
{
|
||||
lib,
|
||||
stdenvNoCC,
|
||||
fetchurl,
|
||||
makeWrapper,
|
||||
buildNpmPackage,
|
||||
fetchFromGitHub,
|
||||
markdownlint-cli2,
|
||||
nodejs,
|
||||
nix-update-script,
|
||||
runCommand,
|
||||
zstd,
|
||||
}:
|
||||
|
||||
stdenvNoCC.mkDerivation (finalAttrs: {
|
||||
buildNpmPackage rec {
|
||||
pname = "markdownlint-cli2";
|
||||
version = "0.18.1";
|
||||
version = "0.20.0";
|
||||
|
||||
# upstream is not interested in including package-lock.json in the source
|
||||
# https://github.com/DavidAnson/markdownlint-cli2/issues/198#issuecomment-1690529976
|
||||
# see also https://github.com/DavidAnson/markdownlint-cli2/issues/186
|
||||
# so use the tarball from the archlinux mirror
|
||||
src = fetchurl {
|
||||
url = "https://us.mirrors.cicku.me/archlinux/extra/os/x86_64/markdownlint-cli2-${finalAttrs.version}-1-any.pkg.tar.zst";
|
||||
hash = "sha256-M7qmhRDJGm2MhgS2oMfRrkLAst1Ye/rPCwP78UBbyyY=";
|
||||
src = fetchFromGitHub {
|
||||
owner = "DavidAnson";
|
||||
repo = "markdownlint-cli2";
|
||||
tag = "v${version}";
|
||||
hash = "sha256-wZfLTk7F9HZaRFvYEo5rT+k/ivNk0fU+p844LMO06ek=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [
|
||||
makeWrapper
|
||||
zstd
|
||||
];
|
||||
npmDepsHash = "sha256-tWvweCpzopItgfhpiBHUcpBvrJYCiq588WXzF9hvFfs=";
|
||||
|
||||
dontBuild = true;
|
||||
|
||||
installPhase = ''
|
||||
runHook preInstall
|
||||
|
||||
mkdir -p $out/bin
|
||||
cp -r lib share $out
|
||||
makeWrapper "${lib.getExe nodejs}" "$out/bin/markdownlint-cli2" \
|
||||
--add-flags "$out/lib/node_modules/markdownlint-cli2/markdownlint-cli2-bin.mjs"
|
||||
|
||||
runHook postInstall
|
||||
postPatch = ''
|
||||
rm -f .npmrc
|
||||
ln -s ${./package-lock.json} package-lock.json
|
||||
'';
|
||||
|
||||
passthru.tests = {
|
||||
smoke = runCommand "${finalAttrs.pname}-test" { nativeBuildInputs = [ markdownlint-cli2 ]; } ''
|
||||
markdownlint-cli2 ${markdownlint-cli2}/share/doc/markdownlint-cli2/README.md > $out
|
||||
'';
|
||||
dontNpmBuild = true;
|
||||
|
||||
passthru = {
|
||||
tests = {
|
||||
smoke = runCommand "${pname}-test" { nativeBuildInputs = [ markdownlint-cli2 ]; } ''
|
||||
markdownlint-cli2 ${markdownlint-cli2}/lib/node_modules/markdownlint-cli2/CHANGELOG.md > $out
|
||||
'';
|
||||
};
|
||||
updateScript = nix-update-script {
|
||||
extraArgs = [ "--generate-lockfile" ];
|
||||
};
|
||||
};
|
||||
|
||||
meta = {
|
||||
changelog = "https://github.com/DavidAnson/markdownlint-cli2/blob/v${finalAttrs.version}/CHANGELOG.md";
|
||||
changelog = "https://github.com/DavidAnson/markdownlint-cli2/blob/v${version}/CHANGELOG.md";
|
||||
description = "Fast, flexible, configuration-based command-line interface for linting Markdown/CommonMark files with the markdownlint library";
|
||||
homepage = "https://github.com/DavidAnson/markdownlint-cli2";
|
||||
license = lib.licenses.mit;
|
||||
maintainers = with lib.maintainers; [ natsukium ];
|
||||
maintainers = with lib.maintainers; [
|
||||
anthonyroussel
|
||||
natsukium
|
||||
];
|
||||
mainProgram = "markdownlint-cli2";
|
||||
};
|
||||
})
|
||||
}
|
||||
|
|
|
|||
|
|
@ -8,16 +8,16 @@
|
|||
|
||||
buildGoModule (finalAttrs: {
|
||||
pname = "matrix-alertmanager-receiver";
|
||||
version = "2025.12.24";
|
||||
version = "2026.1.14";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "metio";
|
||||
repo = "matrix-alertmanager-receiver";
|
||||
tag = finalAttrs.version;
|
||||
hash = "sha256-RK9Z/QeA0AjOfFROtOYKd3uCPn3NN+eyeuLQVWxlH6U=";
|
||||
hash = "sha256-JUdnaz790NbiBlUlESIQMR2qehF/8OU0smSrA3+wOSQ=";
|
||||
};
|
||||
|
||||
vendorHash = "sha256-HJEpWf3WeMw9vLj7L6thx1ur5YuC5xjIuMCHaFZ2tS8=";
|
||||
vendorHash = "sha256-ZZYifNTMCL39ar00duYvvS8B6vJ8QZkMNb8vG6kgYOI=";
|
||||
|
||||
env.CGO_ENABLED = "0";
|
||||
|
||||
|
|
|
|||
|
|
@ -18,21 +18,21 @@
|
|||
|
||||
rustPlatform.buildRustPackage (finalAttrs: {
|
||||
pname = "matrix-authentication-service";
|
||||
version = "1.8.0";
|
||||
version = "1.9.0";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "element-hq";
|
||||
repo = "matrix-authentication-service";
|
||||
tag = "v${finalAttrs.version}";
|
||||
hash = "sha256-LpjDmSadmga7L93y3UNEnMJQHAeANSbG0qRR7XLprfk=";
|
||||
hash = "sha256-DfgGh8KAXnGrq2W7V/QWnBF7b3Z26mIWeFQ2tEIPqa4=";
|
||||
};
|
||||
|
||||
cargoHash = "sha256-PsQUA6KgkbKmVwnSUfAMqnULCIMJ4mLjGIGYRlhB4Pk=";
|
||||
cargoHash = "sha256-r1fG+9mUYKbcAPc7CUUYvFf/Lhjnt6/MDCdCn/uiJU8=";
|
||||
|
||||
npmDeps = fetchNpmDeps {
|
||||
name = "${finalAttrs.pname}-${finalAttrs.version}-npm-deps";
|
||||
src = "${finalAttrs.src}/${finalAttrs.npmRoot}";
|
||||
hash = "sha256-3OHKomEml0/g8E3S0fKPcscbv3BoOJ9dQrgLNSLHhvg=";
|
||||
hash = "sha256-UbaUx2wZi/bUVbdphCTcFBCaFQ8tkuvdYkSduCBRzzU=";
|
||||
};
|
||||
|
||||
npmRoot = "frontend";
|
||||
|
|
|
|||
|
|
@ -33,6 +33,7 @@ python3Packages.buildPythonApplication rec {
|
|||
with python3Packages;
|
||||
[
|
||||
poetry-core
|
||||
setuptools-rust
|
||||
]
|
||||
++ [
|
||||
rustPlatform.maturinBuildHook
|
||||
|
|
@ -51,7 +52,7 @@ python3Packages.buildPythonApplication rec {
|
|||
libiconv
|
||||
];
|
||||
|
||||
pythonRemoveDeps = [ "setuptools_rust" ];
|
||||
pythonRemoveDeps = [ "setuptools-rust" ];
|
||||
|
||||
dependencies =
|
||||
with python3Packages;
|
||||
|
|
@ -82,7 +83,6 @@ python3Packages.buildPythonApplication rec {
|
|||
pyrsistent
|
||||
pyyaml
|
||||
service-identity
|
||||
setuptools-rust
|
||||
signedjson
|
||||
sortedcontainers
|
||||
treq
|
||||
|
|
|
|||
|
|
@ -9,8 +9,6 @@ python3Packages.buildPythonApplication rec {
|
|||
version = "0.4.1";
|
||||
pyproject = true;
|
||||
|
||||
disabled = python3Packages.pythonOlder "3.10";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "GearKite";
|
||||
repo = "MatrixZulipBridge";
|
||||
|
|
|
|||
|
|
@ -8,18 +8,18 @@
|
|||
|
||||
rustPlatform.buildRustPackage (finalAttrs: {
|
||||
pname = "meilisearch";
|
||||
version = "1.32.2";
|
||||
version = "1.33.0";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "meilisearch";
|
||||
repo = "meilisearch";
|
||||
tag = "v${finalAttrs.version}";
|
||||
hash = "sha256-72AflpW0z1vpPEYsP07U9NJ84CEPhAbLo+tXxI8Qha4=";
|
||||
hash = "sha256-OC8JPG/UAgBm+l5bFG4A+4/3cqkUMbeBkqIG+rjiucY=";
|
||||
};
|
||||
|
||||
cargoBuildFlags = [ "--package=meilisearch" ];
|
||||
|
||||
cargoHash = "sha256-UCQk76TB7gWFd0077RQ39IXGrGjc6hxhXJW0pBheADU=";
|
||||
cargoHash = "sha256-MwCbrPnWLipuSaJdtrm595e/geE/pb6Nw1vHL7l/XRU=";
|
||||
|
||||
# Default features include mini dashboard which downloads something from the internet.
|
||||
buildNoDefaultFeatures = true;
|
||||
|
|
|
|||
|
|
@ -7,12 +7,12 @@
|
|||
}:
|
||||
stdenv.mkDerivation (finalAttrs: {
|
||||
pname = "metee";
|
||||
version = "6.1.0";
|
||||
version = "6.2.1";
|
||||
src = fetchFromGitHub {
|
||||
owner = "intel";
|
||||
repo = "metee";
|
||||
tag = finalAttrs.version;
|
||||
hash = "sha256-ybTi4pFZAkoO6FAyUOLK+ZbTQb7uwu/sqhYxo06SE9A=";
|
||||
hash = "sha256-TMHc/0N1DUx+aKOCrfBRoQgKj968FIq+FcusyLG0oPI=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [ cmake ];
|
||||
|
|
|
|||
|
|
@ -10,16 +10,16 @@
|
|||
|
||||
buildGoModule (finalAttrs: {
|
||||
pname = "moor";
|
||||
version = "2.10.1";
|
||||
version = "2.10.2";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "walles";
|
||||
repo = "moor";
|
||||
tag = "v${finalAttrs.version}";
|
||||
hash = "sha256-xnm1ZKceij5V2AgfB1ZAabDvB+l+Ha6F2WuHAzcA1mo=";
|
||||
hash = "sha256-DS2cfu/yX+ebCn7V3FQVN8ltCJcEMD+wIjlS+ENHP8w=";
|
||||
};
|
||||
|
||||
vendorHash = "sha256-MQPR4AW+Y+1l7akLxaWI5NAmKmhZdRKTzrueNEqHZoQ=";
|
||||
vendorHash = "sha256-lz3cq2xL9byhLNbAwEvYOsP9WQsu0hqrWe2EDaLSeOQ=";
|
||||
|
||||
nativeBuildInputs = [ installShellFiles ];
|
||||
|
||||
|
|
|
|||
|
|
@ -49,7 +49,7 @@ let
|
|||
in
|
||||
stdenv.mkDerivation (finalAttrs: {
|
||||
pname = "mumps";
|
||||
version = "5.8.1";
|
||||
version = "5.8.2";
|
||||
# makeFlags contain space and one should use makeFlagsArray+
|
||||
# Setting this magic var is an optional solution
|
||||
__structuredAttrs = true;
|
||||
|
|
@ -58,7 +58,7 @@ stdenv.mkDerivation (finalAttrs: {
|
|||
|
||||
src = fetchzip {
|
||||
url = "https://mumps-solver.org/MUMPS_${finalAttrs.version}.tar.gz";
|
||||
hash = "sha256-60hNYhbHONv9E9VY8G0goE83q7AwJh1u/Z+QRK8anHQ=";
|
||||
hash = "sha256-AzCzNUd+NFP7Jat4cw1YpA9160cvW1zXLoLxstsbtHA=";
|
||||
};
|
||||
|
||||
postPatch = lib.optionalString stdenv.hostPlatform.isDarwin ''
|
||||
|
|
|
|||
|
|
@ -110,6 +110,7 @@ stdenv.mkDerivation (finalAttrs: {
|
|||
meta = {
|
||||
description = "Structural Netlist API (and more) for EDA post synthesis flow development";
|
||||
homepage = "https://github.com/najaeda/naja";
|
||||
changelog = "https://github.com/najaeda/naja/releases/tag/${finalAttrs.src.tag}";
|
||||
license = lib.licenses.asl20;
|
||||
teams = [ lib.teams.ngi ];
|
||||
mainProgram = "naja_edit";
|
||||
|
|
|
|||
|
|
@ -8,16 +8,16 @@
|
|||
}:
|
||||
rustPlatform.buildRustPackage rec {
|
||||
pname = "nix-your-shell";
|
||||
version = "1.4.6";
|
||||
version = "1.4.7";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "MercuryTechnologies";
|
||||
repo = "nix-your-shell";
|
||||
tag = "v${version}";
|
||||
hash = "sha256-FjGjLq/4qeZz9foA7pfz1hiXvsdmbnzB3BpiTESLE1c=";
|
||||
hash = "sha256-CE1yVD0uT5QnCfuTshAvM4r0BQ6XeaT22PdEhaYJJk8=";
|
||||
};
|
||||
|
||||
cargoHash = "sha256-zQpK13iudyWDZbpAN8zm9kKmz8qy3yt8JxT4lwq4YF0=";
|
||||
cargoHash = "sha256-BGyO+MK5pRMNFauRvTWxluHoPjqqsIJP1yajWEJnIvI=";
|
||||
|
||||
passthru = {
|
||||
generate-config =
|
||||
|
|
|
|||
|
|
@ -97,7 +97,7 @@ class BaseConverter(Converter[md.TR], Generic[md.TR]):
|
|||
if lit := option_is(option, key, 'literalMD'):
|
||||
return [ self._render(f"*{key.capitalize()}:*\n{lit['text']}") ]
|
||||
elif lit := option_is(option, key, 'literalExpression'):
|
||||
code = md_make_code(lit['text'])
|
||||
code = md_make_code(lit['text'], info="nix")
|
||||
return [ self._render(f"*{key.capitalize()}:*\n{code}") ]
|
||||
elif key in option:
|
||||
raise Exception(f"{key} has unrecognized type", option[key])
|
||||
|
|
|
|||
|
|
@ -7,13 +7,13 @@
|
|||
|
||||
stdenvNoCC.mkDerivation {
|
||||
pname = "nu_scripts";
|
||||
version = "0-unstable-2025-12-28";
|
||||
version = "0-unstable-2026-01-11";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "nushell";
|
||||
repo = "nu_scripts";
|
||||
rev = "1cb6d6c460949b989b7fb1a6d02456a560521366";
|
||||
hash = "sha256-Cq814VegRIWRR0UfRz3xV3pHm4C1701I5BoPRsEi+ZQ=";
|
||||
rev = "c0eef9bb94eaf9d69f1cc27e2e1964fdb66fb24a";
|
||||
hash = "sha256-KfnxoyLY8F0jx6h/SGQb5hkTBHgaa0fktE1qM4BKTBc=";
|
||||
};
|
||||
|
||||
installPhase = ''
|
||||
|
|
|
|||
|
|
@ -10,13 +10,13 @@
|
|||
|
||||
stdenvNoCC.mkDerivation rec {
|
||||
pname = "numix-icon-theme-circle";
|
||||
version = "25.12.27";
|
||||
version = "26.01.11";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "numixproject";
|
||||
repo = "numix-icon-theme-circle";
|
||||
rev = version;
|
||||
sha256 = "sha256-5/PSZdSLpVlS5+dKjDhN82wuCiQRE/J1OEQSihlB81A=";
|
||||
sha256 = "sha256-L+GO3TJ7UJYIjpsVtWgFkFd313u+E4I4ResNgQz8T70=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [ gtk3 ];
|
||||
|
|
|
|||
|
|
@ -35,16 +35,16 @@ let
|
|||
in
|
||||
maven.buildMavenPackage rec {
|
||||
pname = "nzbhydra2";
|
||||
version = "8.2.2";
|
||||
version = "8.3.0";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "theotherp";
|
||||
repo = pname;
|
||||
tag = "v${version}";
|
||||
hash = "sha256-aUaPzfP4PPX08DZxbDhy7U/qH37ddR9jWtt+pt7BqCI=";
|
||||
hash = "sha256-7CYMh/viZ/9bVZ4gNNZRnKHh4uDH4E5Td2oVC4Rok0M=";
|
||||
};
|
||||
|
||||
mvnHash = "sha256-02Fj7Rv0kGmO7ysHWMjE7qlwFY3G+hQzjXvrvRG/2M8=";
|
||||
mvnHash = "sha256-dodZT40zNqfaPd8VxfNYY10VrFNlL4xESDdTrgcFaaY=";
|
||||
|
||||
mvnFetchExtraArgs.preBuild = ''
|
||||
mvn -nsu "${timestampParameter}" --projects org.nzbhydra:github-release-plugin "-Dmaven.repo.local=$out/.m2" clean install
|
||||
|
|
@ -90,7 +90,7 @@ maven.buildMavenPackage rec {
|
|||
meta = {
|
||||
description = "Usenet meta search";
|
||||
homepage = "https://github.com/theotherp/nzbhydra2";
|
||||
license = lib.licenses.asl20;
|
||||
license = lib.licenses.gpl3Only;
|
||||
maintainers = with lib.maintainers; [
|
||||
matteopacini
|
||||
tmarkus
|
||||
|
|
|
|||
|
|
@ -8,16 +8,16 @@
|
|||
|
||||
buildNpmPackage (finalAttrs: {
|
||||
pname = "particle-cli";
|
||||
version = "3.44.1";
|
||||
version = "3.45.0";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "particle-iot";
|
||||
repo = "particle-cli";
|
||||
tag = "v${finalAttrs.version}";
|
||||
hash = "sha256-l4MzJ57PkNECW2/k7gnVsrHcJtc4vZRsgzUkGz1hQiU=";
|
||||
hash = "sha256-Hq2flUBStEouVEhYI25fNFK9ohvHfk792vlPa7b3DRA=";
|
||||
};
|
||||
|
||||
npmDepsHash = "sha256-B9r8wvpIPnLupuhycocJCl5EN63xi1KI5fHT5uQZTzY=";
|
||||
npmDepsHash = "sha256-rHT8ZLBe3uO1NxrbVBdrh0fn9gvBVq4XE8Gfhcshq/E=";
|
||||
|
||||
buildInputs = [
|
||||
udev
|
||||
|
|
|
|||
|
|
@ -6,16 +6,16 @@
|
|||
|
||||
buildGoModule rec {
|
||||
pname = "pgmetrics";
|
||||
version = "1.18.0";
|
||||
version = "1.19.0";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "rapidloop";
|
||||
repo = "pgmetrics";
|
||||
rev = "v${version}";
|
||||
sha256 = "sha256-kaoJZdBzx2DGvoA+aIJnfM2ORTM9xMXHaXEuUD/qqe0=";
|
||||
sha256 = "sha256-PvixAR6jLhwK4nbGWEAnQkjI+JtSwX2izI7/ksi7qs8=";
|
||||
};
|
||||
|
||||
vendorHash = "sha256-2p8BZw/GB/w99VL5NFIBpmyadNmasqrWVncpBHTyh6Q=";
|
||||
vendorHash = "sha256-LphlFl56M8G3kncnj66u1CixgBTLvDBtWqXtUjHDY14=";
|
||||
|
||||
doCheck = false;
|
||||
|
||||
|
|
|
|||
|
|
@ -11,13 +11,13 @@
|
|||
|
||||
stdenv.mkDerivation (finalAttrs: {
|
||||
pname = "ptcollab";
|
||||
version = "0.6.4.9";
|
||||
version = "0.6.4.10";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "yuxshao";
|
||||
repo = "ptcollab";
|
||||
rev = "v${finalAttrs.version}";
|
||||
hash = "sha256-1fVhimwBAYtC+HnuxA7ywfEnVlqHnlzwfKT9+H/ZG0k=";
|
||||
hash = "sha256-8CllDcbbVXmDyD5jyKVoNq96wqWtfoPM2CEN13KYptQ=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [
|
||||
|
|
|
|||
|
|
@ -10,8 +10,6 @@ python3Packages.buildPythonApplication rec {
|
|||
version = "2.5.1";
|
||||
pyproject = true;
|
||||
|
||||
disabled = python3Packages.pythonOlder "3.10";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "hyprland-community";
|
||||
repo = "pyprland";
|
||||
|
|
|
|||
|
|
@ -7,16 +7,16 @@
|
|||
}:
|
||||
rustPlatform.buildRustPackage rec {
|
||||
pname = "railway";
|
||||
version = "4.23.2";
|
||||
version = "4.25.3";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "railwayapp";
|
||||
repo = "cli";
|
||||
rev = "v${version}";
|
||||
hash = "sha256-3Uh8SR4H0mgsamGCLrpgq+ujNtegPQvSVUm7ALfQLh8=";
|
||||
hash = "sha256-dml5lyZoA4f9W9MdiSRj2P9+mXs9s87w8cS2J0RvC2k=";
|
||||
};
|
||||
|
||||
cargoHash = "sha256-voN3tRl4CetkuQ9RbIQzpIO2gJeBzP9TPmouJyqeYSw=";
|
||||
cargoHash = "sha256-9zk+SHwZL80fB/HuQbfpYvOTKx3UCNLvvlbnDAB/VYM=";
|
||||
|
||||
nativeBuildInputs = [ pkg-config ];
|
||||
|
||||
|
|
|
|||
|
|
@ -7,13 +7,13 @@
|
|||
|
||||
buildGoModule rec {
|
||||
pname = "routedns";
|
||||
version = "0.1.128";
|
||||
version = "0.1.130";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "folbricht";
|
||||
repo = "routedns";
|
||||
rev = "v${version}";
|
||||
hash = "sha256-jUk0wa+hw0MIXnV1K/n19rGRKKolEf6q+dtKHmnuj3I=";
|
||||
hash = "sha256-eYtFfRi+w+0xnIZi/OXc+dt/HI/SQxoZphgduK6eETU=";
|
||||
};
|
||||
|
||||
vendorHash = "sha256-woInU618JPwVxGDJDZQ6+j9wY6qNSB5Xu8wXf7s2qvQ=";
|
||||
|
|
|
|||
|
|
@ -6,16 +6,16 @@
|
|||
|
||||
buildGoModule (finalAttrs: {
|
||||
pname = "rqlite";
|
||||
version = "9.3.14";
|
||||
version = "9.3.15";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "rqlite";
|
||||
repo = "rqlite";
|
||||
tag = "v${finalAttrs.version}";
|
||||
hash = "sha256-DZOL2klXdB7fKWnImQeRbeSSeDgluAHAPO7yP8QNak4=";
|
||||
hash = "sha256-VMVDXpbDN8mZJJycsFK1LOujIXw29584wnDE470C87U=";
|
||||
};
|
||||
|
||||
vendorHash = "sha256-4HHUtmF4Q9QzVCqHYCkIG8lHlQ7soBXsGFuGl4uL8PQ=";
|
||||
vendorHash = "sha256-O/VaYGjEMTOExdQfaL3XcnPmQxEYXjCMVfI6Vl+roZw=";
|
||||
|
||||
subPackages = [
|
||||
"cmd/rqlite"
|
||||
|
|
|
|||
|
|
@ -2,27 +2,39 @@
|
|||
lib,
|
||||
rustPlatform,
|
||||
fetchCrate,
|
||||
versionCheckHook,
|
||||
nix-update-script,
|
||||
}:
|
||||
|
||||
rustPlatform.buildRustPackage rec {
|
||||
rustPlatform.buildRustPackage (finalAttrs: {
|
||||
pname = "rune-languageserver";
|
||||
version = "0.13.4";
|
||||
version = "0.14.1";
|
||||
|
||||
src = fetchCrate {
|
||||
inherit pname version;
|
||||
hash = "sha256-Kw6Qh/9eQPMj4V689+7AxuJB+aCciK3FZTfcdhyZXGY=";
|
||||
inherit (finalAttrs) pname version;
|
||||
hash = "sha256-0b8XGbMQqMolOdQEMjpwHAVI3A4fXemyCowN39qY16A=";
|
||||
};
|
||||
|
||||
cargoHash = "sha256-YviRACndc4r4ul72ZF3I/R/nEsIoML2Ek2xqUUE3FDQ=";
|
||||
cargoHash = "sha256-QrzOpfDpG08IUoydvSoh0qxJ0vg86391NnyEyJeZr54=";
|
||||
|
||||
env = {
|
||||
RUNE_VERSION = version;
|
||||
RUNE_VERSION = finalAttrs.version;
|
||||
};
|
||||
|
||||
nativeInstallCheckInputs = [
|
||||
versionCheckHook
|
||||
];
|
||||
doInstallCheck = true;
|
||||
|
||||
passthru = {
|
||||
updateScript = nix-update-script { };
|
||||
};
|
||||
|
||||
meta = {
|
||||
description = "Language server for the Rune Language, an embeddable dynamic programming language for Rust";
|
||||
homepage = "https://crates.io/crates/rune-languageserver";
|
||||
changelog = "https://github.com/rune-rs/rune/releases/tag/${version}";
|
||||
downloadPage = "https://github.com/rune-rs/rune";
|
||||
changelog = "https://github.com/rune-rs/rune/releases/tag/${finalAttrs.version}";
|
||||
license = with lib.licenses; [
|
||||
asl20
|
||||
mit
|
||||
|
|
@ -30,4 +42,4 @@ rustPlatform.buildRustPackage rec {
|
|||
maintainers = [ ];
|
||||
mainProgram = "rune-languageserver";
|
||||
};
|
||||
}
|
||||
})
|
||||
|
|
|
|||
|
|
@ -16,13 +16,13 @@
|
|||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "showmethekey";
|
||||
version = "1.18.4";
|
||||
version = "1.19.0";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "AlynxZhou";
|
||||
repo = "showmethekey";
|
||||
tag = "v${version}";
|
||||
hash = "sha256-Wj7r4rnY8+QGWtk9h88gk3LxkNLIKUA/46lkyPK86h0=";
|
||||
hash = "sha256-jQRckUqLe9sshi3SJqpFwSsy5H0Gp17kkcCdslwg6cM=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [
|
||||
|
|
|
|||
|
|
@ -10,16 +10,16 @@
|
|||
|
||||
buildGoModule (finalAttrs: {
|
||||
pname = "sing-box";
|
||||
version = "1.12.16";
|
||||
version = "1.12.17";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "SagerNet";
|
||||
repo = "sing-box";
|
||||
tag = "v${finalAttrs.version}";
|
||||
hash = "sha256-enmT6BnGzEpk9BPB9IZWJctMoe/FiNqYmkiq0d9/m2k=";
|
||||
hash = "sha256-3dxkoSfXSMID8GVhjyPC2n8UNqOx8IkSkGuFmWZ3TbI=";
|
||||
};
|
||||
|
||||
vendorHash = "sha256-rs5Jxj75qU47zEH0gbYy0/QUSq3sektaITcefg2Qb78=";
|
||||
vendorHash = "sha256-p5E3tJiqhgTeE35vVt03Yo9oF3DZPO9hXuKKR6r0V+g=";
|
||||
|
||||
tags = [
|
||||
"with_quic"
|
||||
|
|
|
|||
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Add a link
Reference in a new issue