1
0
Fork 1
mirror of https://github.com/NixOS/nixpkgs.git synced 2025-06-08 02:38:11 +09:00

Merge release-25.05 into staging-next-25.05

This commit is contained in:
nixpkgs-ci[bot] 2025-06-07 00:21:10 +00:00 committed by GitHub
commit e92815946b
Signed by: github
GPG key ID: B5690EEEBB952194
53 changed files with 2844 additions and 1530 deletions

View file

@ -605,8 +605,8 @@ In some projects, the Rust crate is not in the main Python source
directory. In such cases, the `cargoRoot` attribute can be used to
specify the crate's directory relative to `sourceRoot`. In the
following example, the crate is in `src/rust`, as specified in the
`cargoRoot` attribute. Note that we also need to specify the correct
path for `fetchCargoVendor`.
`cargoRoot` attribute. Note that we also need to pass in `cargoRoot`
to `fetchCargoVendor`.
```nix
{
@ -627,8 +627,12 @@ buildPythonPackage rec {
};
cargoDeps = rustPlatform.fetchCargoVendor {
inherit pname version src;
sourceRoot = "${pname}-${version}/${cargoRoot}";
inherit
pname
version
src
cargoRoot
;
hash = "sha256-ctUt8maCjnGddKPf+Ii++wKsAXA1h+JM6zKQNXXwJqQ=";
};

View file

@ -734,6 +734,15 @@
"module-services-davis-basic-usage": [
"index.html#module-services-davis-basic-usage"
],
"module-services-draupnir": [
"index.html#module-services-draupnir"
],
"module-services-draupnir-setup": [
"index.html#module-services-draupnir-setup"
],
"module-services-draupnir-setup-ems": [
"index.html#module-services-draupnir-setup-ems"
],
"module-services-castopod": [
"index.html#module-services-castopod"
],

View file

@ -755,6 +755,7 @@
./services/matrix/conduit.nix
./services/matrix/continuwuity.nix
./services/matrix/dendrite.nix
./services/matrix/draupnir.nix
./services/matrix/hebbot.nix
./services/matrix/hookshot.nix
./services/matrix/lk-jwt-service.nix

View file

@ -0,0 +1,62 @@
# Draupnir (Matrix Moderation Bot) {#module-services-draupnir}
This chapter will show you how to set up your own, self-hosted
[Draupnir](https://github.com/the-draupnir-project/Draupnir) instance.
As an all-in-one moderation tool, it can protect your server from
malicious invites, spam messages, and whatever else you don't want.
In addition to server-level protection, Draupnir is great for communities
wanting to protect their rooms without having to use their personal
accounts for moderation.
The bot by default includes support for bans, redactions, anti-spam,
server ACLs, room directory changes, room alias transfers, account
deactivation, room shutdown, and more. (This depends on homeserver configuration and implementation.)
See the [README](https://github.com/the-draupnir-project/draupnir#readme)
page and the [Moderator's guide](https://the-draupnir-project.github.io/draupnir-documentation/moderator/setting-up-and-configuring)
for additional instructions on how to setup and use Draupnir.
For [additional settings](#opt-services.draupnir.settings)
see [the default configuration](https://github.com/the-draupnir-project/Draupnir/blob/main/config/default.yaml).
## Draupnir Setup {#module-services-draupnir-setup}
First create a new unencrypted, private room which will be used as the management room for Draupnir.
This is the room in which moderators will interact with Draupnir and where it will log possible errors and debugging information.
You'll need to set this room ID or alias in [services.draupnir.settings.managementRoom](#opt-services.draupnir.settings.managementRoom).
Next, create a new user for Draupnir on your homeserver, if one does not already exist.
The Draupnir Matrix user expects to be free of any rate limiting.
See [Synapse #6286](https://github.com/matrix-org/synapse/issues/6286)
for an example on how to achieve this.
If you want Draupnir to be able to deactivate users, move room aliases, shut down rooms, etc.
you'll need to make the Draupnir user a Matrix server admin.
Now invite the Draupnir user to the management room.
Draupnir will automatically try to join this room on startup.
```nix
{
services.draupnir = {
enable = true;
settings = {
homeserverUrl = "https://matrix.org";
managementRoom = "!yyy:example.org";
};
secrets = {
accessToken = "/path/to/secret/containing/access-token";
};
};
}
```
### Element Matrix Services (EMS) {#module-services-draupnir-setup-ems}
If you are using a managed ["Element Matrix Services (EMS)"](https://ems.element.io/)
server, you will need to consent to the terms and conditions. Upon startup, an error
log entry with a URL to the consent page will be generated.

View file

@ -0,0 +1,257 @@
{
config,
options,
lib,
pkgs,
...
}:
let
cfg = config.services.draupnir;
opt = options.services.draupnir;
format = pkgs.formats.yaml { };
configFile = format.generate "draupnir.yaml" cfg.settings;
inherit (lib)
literalExpression
mkEnableOption
mkOption
mkPackageOption
mkRemovedOptionModule
mkRenamedOptionModule
types
;
in
{
imports = [
# Removed options for those migrating from the Mjolnir module
(mkRenamedOptionModule
[ "services" "draupnir" "dataPath" ]
[ "services" "draupnir" "settings" "dataPath" ]
)
(mkRenamedOptionModule
[ "services" "draupnir" "homeserverUrl" ]
[ "services" "draupnir" "settings" "homeserverUrl" ]
)
(mkRenamedOptionModule
[ "services" "draupnir" "managementRoom" ]
[ "services" "draupnir" "settings" "managementRoom" ]
)
(mkRenamedOptionModule
[ "services" "draupnir" "accessTokenFile" ]
[ "services" "draupnir" "secrets" "accessToken" ]
)
(mkRemovedOptionModule [ "services" "draupnir" "pantalaimon" ] ''
`services.draupnir.pantalaimon.*` has been removed because it depends on the deprecated and vulnerable
libolm library for end-to-end encryption and upstream support for Pantalaimon in Draupnir is limited.
See <https://the-draupnir-project.github.io/draupnir-documentation/bot/encryption> for details.
If you nontheless require E2EE via Pantalaimon, you can configure `services.pantalaimon-headless.instances`
yourself and use that with `services.draupnir.settings.pantalaimon` and `services.draupnir.secrets.pantalaimon.password`.
'')
];
options.services.draupnir = {
enable = mkEnableOption "Draupnir, a moderations bot for Matrix";
package = mkPackageOption pkgs "draupnir" { };
settings = mkOption {
example = literalExpression ''
{
homeserverUrl = "https://matrix.org";
managementRoom = "#moderators:example.org";
autojoinOnlyIfManager = true;
automaticallyRedactForReasons = [ "spam" "advertising" ];
}
'';
description = ''
Free-form settings written to Draupnir's configuration file.
See [Draupnir's default configuration](https://github.com/the-draupnir-project/Draupnir/blob/main/config/default.yaml) for available settings.
'';
default = { };
type = types.submodule {
freeformType = format.type;
options = {
homeserverUrl = mkOption {
type = types.str;
example = "https://matrix.org";
description = ''
Base URL of the Matrix homeserver that provides the Client-Server API.
::: {.note}
When using Pantalaimon, set this to the Pantalaimon URL and
{option}`${opt.settings}.rawHomeserverUrl` to the public URL.
:::
'';
};
rawHomeserverUrl = mkOption {
type = types.str;
example = "https://matrix.org";
default = cfg.settings.homeserverUrl;
defaultText = literalExpression "config.${opt.settings}.homeserverUrl";
description = ''
Public base URL of the Matrix homeserver that provides the Client-Server API when using the Draupnir's
[Report forwarding feature](https://the-draupnir-project.github.io/draupnir-documentation/bot/homeserver-administration#report-forwarding).
::: {.warning}
When using Pantalaimon, do not set this to the Pantalaimon URL!
:::
'';
};
managementRoom = mkOption {
type = types.str;
example = "#moderators:example.org";
description = ''
The room ID or alias where moderators can use the bot's functionality.
The bot has no access controls, so anyone in this room can use the bot - secure this room!
Do not enable end-to-end encryption for this room, unless set up with Pantalaimon.
::: {.warning}
When using a room alias, make sure the alias used is on the local homeserver!
This prevents an issue where the control room becomes undefined when the alias can't be resolved.
:::
'';
};
dataPath = mkOption {
type = types.path;
readOnly = true;
default = "/var/lib/draupnir";
description = ''
The path Draupnir will store its state/data in.
::: {.warning}
This option is read-only.
:::
::: {.note}
If you want to customize where this data is stored, use a bind mount.
:::
'';
};
};
};
};
secrets = {
accessToken = mkOption {
type = types.nullOr types.path;
default = null;
description = ''
File containing the access token for Draupnir's Matrix account
to be used in place of {option}`${opt.settings}.accessToken`.
'';
};
pantalaimon.password = mkOption {
type = types.nullOr types.path;
default = null;
description = ''
File containing the password for Draupnir's Matrix account when used in
conjunction with Pantalaimon to be used in place of
{option}`${opt.settings}.pantalaimon.password`.
::: {.warning}
Take note that upstream has limited Pantalaimon and E2EE support:
<https://the-draupnir-project.github.io/draupnir-documentation/bot/encryption> and
<https://the-draupnir-project.github.io/draupnir-documentation/shared/dogfood#e2ee-support>.
:::
'';
};
web.synapseHTTPAntispam.authorization = mkOption {
type = types.nullOr types.path;
default = null;
description = ''
File containing the secret token when using the Synapse HTTP Antispam module
to be used in place of
{option}`${opt.settings}.web.synapseHTTPAntispam.authorization`.
See <https://the-draupnir-project.github.io/draupnir-documentation/bot/synapse-http-antispam> for details.
'';
};
};
};
config = lib.mkIf cfg.enable {
assertions = [
{
# Removed option for those migrating from the Mjolnir module - mkRemovedOption module does *not* work with submodules.
assertion = !(cfg.settings ? protectedRooms);
message = "Unset ${opt.settings}.protectedRooms, as it is unsupported on Draupnir. Add these rooms via `!draupnir rooms add` instead.";
}
];
systemd.services.draupnir = {
description = "Draupnir - a moderation bot for Matrix";
wants = [
"network-online.target"
"matrix-synapse.service"
"conduit.service"
"dendrite.service"
];
after = [
"network-online.target"
"matrix-synapse.service"
"conduit.service"
"dendrite.service"
];
wantedBy = [ "multi-user.target" ];
startLimitIntervalSec = 0;
serviceConfig = {
ExecStart = toString (
[
(lib.getExe cfg.package)
"--draupnir-config"
configFile
]
++ lib.optionals (cfg.secrets.accessToken != null) [
"--access-token-path"
"%d/access_token"
]
++ lib.optionals (cfg.secrets.pantalaimon.password != null) [
"--pantalaimon-password-path"
"%d/pantalaimon_password"
]
++ lib.optionals (cfg.secrets.web.synapseHTTPAntispam.authorization != null) [
"--http-antispam-authorization-path"
"%d/http_antispam_authorization"
]
);
WorkingDirectory = "/var/lib/draupnir";
StateDirectory = "draupnir";
StateDirectoryMode = "0700";
ProtectHome = true;
PrivateDevices = true;
Restart = "on-failure";
RestartSec = "5s";
DynamicUser = true;
LoadCredential =
lib.optionals (cfg.secrets.accessToken != null) [
"access_token:${cfg.secrets.accessToken}"
]
++ lib.optionals (cfg.secrets.pantalaimon.password != null) [
"pantalaimon_password:${cfg.secrets.pantalaimon.password}"
]
++ lib.optionals (cfg.secrets.web.synapseHTTPAntispam.authorization != null) [
"http_antispam_authorization:${cfg.secrets.web.synapseHTTPAntispam.authorization}"
];
};
};
};
meta = {
doc = ./draupnir.md;
maintainers = with lib.maintainers; [
RorySys
emilylange
];
};
}

View file

@ -409,6 +409,7 @@ in
dovecot = handleTest ./dovecot.nix { };
drawterm = discoverTests (import ./drawterm.nix);
drbd = handleTest ./drbd.nix { };
draupnir = runTest ./matrix/draupnir.nix;
druid = handleTestOn [ "x86_64-linux" ] ./druid { };
drbd-driver = handleTest ./drbd-driver.nix { };
dublin-traceroute = handleTest ./dublin-traceroute.nix { };

View file

@ -0,0 +1,150 @@
{
lib,
...
}:
{
name = "draupnir";
meta.maintainers = with lib.maintainers; [
RorySys
emilylange
];
nodes = {
homeserver =
{ pkgs, ... }:
{
services.matrix-synapse = {
enable = true;
log.root.level = "WARNING";
settings = {
database.name = "sqlite3";
registration_shared_secret = "supersecret-registration";
listeners = [
{
bind_addresses = [
"::"
];
port = 8008;
resources = [
{
compress = true;
names = [ "client" ];
}
{
compress = false;
names = [ "federation" ];
}
];
tls = false;
type = "http";
x_forwarded = false;
}
];
};
};
specialisation.draupnir = {
inheritParentConfig = true;
configuration.services.draupnir = {
enable = true;
settings = {
homeserverUrl = "http://localhost:8008";
managementRoom = "#moderators:homeserver";
};
secrets = {
accessToken = "/tmp/draupnir-access-token";
};
};
};
environment.systemPackages = with pkgs; [
curl
jq
(writers.writePython3Bin "test_draupnir_in_matrix"
{
libraries = [ python3Packages.matrix-nio ];
flakeIgnore = [ "E501" ];
}
''
import asyncio
from nio import AsyncClient, MatrixRoom, RoomMemberEvent, RoomMessageNotice
async def main() -> None:
client = AsyncClient("http://localhost:8008", "moderator")
async def member_callback(room: MatrixRoom, event: RoomMemberEvent) -> None:
if event.membership == "join" and event.sender == "@draupnir:homeserver":
await client.room_send(
room_id=room.room_id,
message_type="m.room.message",
content={
"msgtype": "m.text",
"body": "!draupnir status"
}
)
async def message_callback(room: MatrixRoom, event: RoomMessageNotice) -> None:
print(f"{event.sender}: {event.body}")
if event.sender == "@draupnir:homeserver":
await client.close()
exit(0)
client.add_event_callback(member_callback, RoomMemberEvent)
client.add_event_callback(message_callback, RoomMessageNotice)
print(await client.login("password"))
room = await client.room_create(
name="Moderators",
alias="moderators",
invite=["@draupnir:homeserver"],
power_level_override={
"users": {
"@draupnir:homeserver": 100,
"@moderator:homeserver": 100,
}
}
)
print(room)
print(await client.join(room.room_id))
await client.sync_forever(timeout=30000)
asyncio.run(main())
''
)
];
};
};
testScript =
{ nodes, ... }:
''
import json
homeserver.wait_for_unit("matrix-synapse.service")
homeserver.wait_until_succeeds("curl --fail -L http://localhost:8008/")
homeserver.succeed("matrix-synapse-register_new_matrix_user -u draupnir -p password --no-admin")
homeserver.succeed("matrix-synapse-register_new_matrix_user -u moderator -p password --no-admin")
# get draupnir access token
payload = json.dumps({ "type": "m.login.password", "user": "draupnir", "password": "password" })
homeserver.succeed(
f"curl --fail --json '{payload}' http://localhost:8008/_matrix/client/v3/login"
+ " | jq -r .access_token"
+ " | tee /tmp/draupnir-access-token"
)
homeserver.succeed("${nodes.homeserver.system.build.toplevel}/specialisation/draupnir/bin/switch-to-configuration test")
homeserver.wait_for_unit("draupnir.service")
print(homeserver.succeed("test_draupnir_in_matrix >&2", timeout=60))
'';
}

File diff suppressed because it is too large Load diff

View file

@ -79,13 +79,13 @@
stdenv.mkDerivation (finalAttrs: {
pname = "animeko";
version = "4.10.1";
version = "4.11.1";
src = fetchFromGitHub {
owner = "open-ani";
repo = "animeko";
tag = "v${finalAttrs.version}";
hash = "sha256-sFEq6tJfADH5x8+wdQ9T89awT7/Qx2RV5r+cND3J0iw=";
hash = "sha256-JLOwWJvBfwqvAfaFn5qr8lsHL7/u97qYjZsckBjAu6I=";
fetchSubmodules = true;
};
@ -207,6 +207,8 @@ stdenv.mkDerivation (finalAttrs: {
"libdca.so.0"
"liba52-0.7.4.so"
"libFLAC.so.12"
"libtheoradec.so.1"
"libtheoraenc.so.1"
];
dontWrapQtApps = true;

View file

@ -9,7 +9,7 @@
brightnessctl,
power-profiles-daemon,
gammastep,
libpulseaudio,
pulseaudio,
desktop-file-utils,
wrapGAppsHook3,
gobject-introspection,
@ -19,14 +19,14 @@
python3Packages.buildPythonApplication rec {
pname = "better-control";
version = "6.11.6";
version = "6.12.1";
pyproject = false;
src = fetchFromGitHub {
owner = "quantumvoid0";
owner = "better-ecosystem";
repo = "better-control";
tag = "v${version}";
hash = "sha256-+2hY+o+GPyJHXpQFVW8BOUEiIBGQ1hItOVpA/AVas2Q=";
hash = "sha256-Dt+se8eOmF8Nzm+/bnYBSIyX0XHSXV9iCPF82qXhzug=";
};
build-system = with python3Packages; [
@ -46,7 +46,7 @@ python3Packages.buildPythonApplication rec {
# Check src/utils/dependencies.py
runtimeDeps = [
libpulseaudio
pulseaudio
networkmanager
bluez
brightnessctl
@ -95,7 +95,7 @@ python3Packages.buildPythonApplication rec {
meta = {
description = "Simple control panel for linux based on GTK";
homepage = "https://github.com/quantumvoid0/better-control";
homepage = "https://github.com/better-ecosystem/better-control";
license = lib.licenses.gpl3Only;
maintainers = with lib.maintainers; [ Rishabh5321 ];
platforms = lib.platforms.linux;

View file

@ -9,9 +9,9 @@
dprint,
}:
rustPlatform.buildRustPackage rec {
rustPlatform.buildRustPackage (finalAttrs: {
pname = "dprint";
version = "0.49.1";
version = "0.50.0";
# Prefer repository rather than crate here
# - They have Cargo.lock in the repository
@ -19,17 +19,27 @@ rustPlatform.buildRustPackage rec {
src = fetchFromGitHub {
owner = "dprint";
repo = "dprint";
tag = version;
hash = "sha256-6ye9FqOGW40TqoDREQm6pZAQaSuO2o9SY5RSfpmwKV4=";
tag = finalAttrs.version;
hash = "sha256-6AgbKH5f7N/yYqq7KBVHOqYbyuZkjFSaYwZwIXsgd9o=";
};
useFetchCargoVendor = true;
cargoHash = "sha256-OHRXujyewiDlY4AQEEqmcnmdec1lbWH/y6tPW1nNExE=";
cargoHash = "sha256-OnrsuVK1gEDweldq+P8lDkkrHjklsG8MRpM0wqWsdlM=";
nativeBuildInputs = lib.optionals (stdenv.buildPlatform.canExecute stdenv.hostPlatform) [
installShellFiles
];
cargoBuildFlags = [
"--package=dprint"
# Required only for dprint package tests; the binary is removed in postInstall.
"--package=test-process-plugin"
];
cargoTestFlags = [
"--package=dprint"
];
checkFlags = [
# Require creating directory and network access
"--skip=plugins::cache_fs_locks::test"
@ -40,17 +50,21 @@ rustPlatform.buildRustPackage rec {
"--skip=utils::url::test::unsafe_ignore_cert"
];
postInstall = lib.optionalString (stdenv.buildPlatform.canExecute stdenv.hostPlatform) ''
export DPRINT_CACHE_DIR="$(mktemp -d)"
installShellCompletion --cmd dprint \
--bash <($out/bin/dprint completions bash) \
--zsh <($out/bin/dprint completions zsh) \
--fish <($out/bin/dprint completions fish)
'';
postInstall =
''
rm "$out/bin/test-process-plugin"
''
+ lib.optionalString (stdenv.buildPlatform.canExecute stdenv.hostPlatform) ''
export DPRINT_CACHE_DIR="$(mktemp -d)"
installShellCompletion --cmd dprint \
--bash <($out/bin/dprint completions bash) \
--zsh <($out/bin/dprint completions zsh) \
--fish <($out/bin/dprint completions fish)
'';
passthru = {
tests.version = testers.testVersion {
inherit version;
inherit (finalAttrs) version;
package = dprint;
command = ''
@ -68,7 +82,7 @@ rustPlatform.buildRustPackage rec {
It offers multiple WASM plugins to support various languages. It's written in
Rust, so its small, fast, and portable.
'';
changelog = "https://github.com/dprint/dprint/releases/tag/${version}";
changelog = "https://github.com/dprint/dprint/releases/tag/${finalAttrs.version}";
homepage = "https://dprint.dev";
license = licenses.mit;
maintainers = with maintainers; [
@ -78,4 +92,4 @@ rustPlatform.buildRustPackage rec {
];
mainProgram = "dprint";
};
}
})

View file

@ -47,7 +47,7 @@ let
runHook preInstallCheck
mkdir empty && cd empty
dprint check --allow-no-files --plugins "$out/plugin.wasm"
dprint check --allow-no-files --config-discovery=false --plugins "$out/plugin.wasm"
runHook postInstallCheck
'';

View file

@ -12,6 +12,7 @@
fetchYarnDeps,
stdenv,
cctools,
nixosTests,
}:
# docs: https://github.com/NixOS/nixpkgs/blob/master/doc/languages-frameworks/javascript.section.md#yarn2nix-javascript-yarn2nix
@ -95,7 +96,10 @@ mkYarnPackage rec {
distPhase = "true";
passthru.updateScript = ./update.sh;
passthru = {
tests = { inherit (nixosTests) draupnir; };
updateScript = ./update.sh;
};
meta = with lib; {
description = "A moderation tool for Matrix";

View file

@ -20,18 +20,19 @@
stdenv.mkDerivation (finalAttrs: {
pname = "exercise-timer";
version = "1.8.1";
version = "1.8.4";
src = fetchFromGitHub {
owner = "mfep";
repo = "exercise-timer";
tag = "v${finalAttrs.version}";
hash = "sha256-6MBSUYFZ8nMZX7acam8T0uJWb9E2/L9vnKzJq14p4BY=";
hash = "sha256-KiKTZUlcgQcVJwjCZRi1spjJjAT/aH0PUOB+Qt1jKTc=";
fetchLFS = true;
};
cargoDeps = rustPlatform.fetchCargoVendor {
inherit (finalAttrs) pname version src;
hash = "sha256-fmY89VGv9tSMaILFnAVTAyp9PWGsvSCZ/9DfF5LI3xM=";
hash = "sha256-Z02tnOavpfv+dNk9p1h/+A0TlBtB0BVxLsEKvhFpkbc=";
};
nativeBuildInputs = [

View file

@ -13,13 +13,13 @@
stdenvNoCC.mkDerivation (finalAttrs: {
pname = "firefly-iii";
version = "6.2.10";
version = "6.2.16";
src = fetchFromGitHub {
owner = "firefly-iii";
repo = "firefly-iii";
tag = "v${finalAttrs.version}";
hash = "sha256-T3XXUhls4Oi/0PGuunMLk6Wvla18fvHHI78qKsweFTE=";
hash = "sha256-SFl2uGHunF/IjhO5XoDCh1bJ5eIWRosv7HFDMXyknvI=";
};
buildInputs = [ php84 ];
@ -38,13 +38,13 @@ stdenvNoCC.mkDerivation (finalAttrs: {
composerNoScripts = true;
composerStrictValidation = true;
strictDeps = true;
vendorHash = "sha256-pYnBiuzuTPP+7KSHUOj9mt+TTzgH85KeavXUfMN1ctI=";
vendorHash = "sha256-C7lsSon9y286DoAppteZ3fY0qaWVTe66nyFckyrnylk=";
};
npmDeps = fetchNpmDeps {
inherit (finalAttrs) src;
name = "${finalAttrs.pname}-npm-deps";
hash = "sha256-BX8YYnewcnnOQa788DPSIID5Drqw7XhYGHcevPy0JrA=";
hash = "sha256-qymMgMXjKll3awXFL/Lo8DloPyqAaxoS2Lw8HBaar9g=";
};
preInstall = ''

View file

@ -1,8 +1,15 @@
diff --git a/core/config_reader.c b/core/config_reader.c
index 451fc48..ed45f4d 100644
--- a/core/config_reader.c
+++ b/core/config_reader.c
@@ -1355,7 +1355,7 @@ int read_config_file(const char* file)
@@ -17,7 +17,7 @@
#include "../directories.h"
#include "macros.h"
#include <errno.h>
-
+#include <stdlib.h>
/*
* These variables are used to read the configuration.
*/
@@ -1355,7 +1355,7 @@
char file_path[PATH_MAX];
snprintf(file_path, sizeof(file_path), "%s%s%s%s", gimx_params.homedir, GIMX_DIR, CONFIG_DIR, file);
@ -11,11 +18,18 @@ index 451fc48..ed45f4d 100644
if(read_file(file_path) == -1)
{
gerror("read_file failed\n");
diff --git a/core/gimx.c b/core/gimx.c
index 700cae9..9143d8b 100755
--- a/core/gimx.c
+++ b/core/gimx.c
@@ -192,7 +192,7 @@ void show_config()
@@ -8,7 +8,7 @@
#include <errno.h> //to print errors
#include <string.h> //to print errors
#include <limits.h> //PATH_MAX
-
+#include <stdlib.h>
#ifndef WIN32
#include <termios.h> //to disable/enable echo
#include <unistd.h>
@@ -192,7 +192,7 @@
char file_path[PATH_MAX];
snprintf(file_path, sizeof(file_path), "%s%s%s%s", gimx_params.homedir, GIMX_DIR, CONFIG_DIR, gimx_params.config_file);
@ -24,3 +38,14 @@ index 700cae9..9143d8b 100755
FILE * fp = gfile_fopen(file_path, "r");
if (fp == NULL)
{
--- a/core/connectors/bluetooth/linux/bt_mgmt.c
+++ b/core/connectors/bluetooth/linux/bt_mgmt.c
@@ -322,7 +322,7 @@ static int read_link_keys(uint16_t index, uint16_t nb_keys, bdaddr_t bdaddrs[nb_
bdaddr_t ba;
char dongle_bdaddr[18];
- if(bt_device_abs_get(bt_abs_value)->get_bdaddr(index, &ba) < 0)
+ if(bt_device_abs_get()->get_bdaddr(index, &ba) < 0)
{
fprintf(stderr, "can't read device bdaddr\n");
return -1;

View file

@ -1,26 +0,0 @@
diff --git a/core/config_reader.c b/core/config_reader.c
index 451fc48..737d27c 100644
--- a/core/config_reader.c
+++ b/core/config_reader.c
@@ -17,7 +17,7 @@
#include "../directories.h"
#include "macros.h"
#include <errno.h>
-
+#include <stdlib.h>
/*
* These variables are used to read the configuration.
*/
diff --git a/core/gimx.c b/core/gimx.c
index 700cae9..693f72f 100755
--- a/core/gimx.c
+++ b/core/gimx.c
@@ -8,7 +8,7 @@
#include <errno.h> //to print errors
#include <string.h> //to print errors
#include <limits.h> //PATH_MAX
-
+#include <stdlib.h>
#ifndef WIN32
#include <termios.h> //to disable/enable echo
#include <unistd.h>

View file

@ -34,10 +34,8 @@ stdenv.mkDerivation rec {
};
env.NIX_CFLAGS_COMPILE = "-Wno-error";
patches = [
./conf.patch
./gcc14.patch
];
patches = [ ./conf.patch ];
makeFlags = [ "build-core" ];
nativeBuildInputs = [ makeWrapper ];
buildInputs = [
@ -50,7 +48,6 @@ stdenv.mkDerivation rec {
xorg.libX11
xorg.libXi
];
makeFlags = [ "build-core" ];
installPhase = ''
runHook preInstall
@ -70,10 +67,10 @@ stdenv.mkDerivation rec {
runHook postInstall
'';
meta = with lib; {
meta = {
homepage = "https://github.com/matlo/GIMX";
description = "Game Input Multiplexer";
license = licenses.gpl3Only;
platforms = platforms.linux;
license = lib.licenses.gpl3Only;
platforms = lib.platforms.linux;
};
}

View file

@ -1,13 +0,0 @@
diff --git a/configure b/configure
index 1b20711..79ce215 100644
--- a/configure
+++ b/configure
@@ -679,7 +679,7 @@ cat > conftest.$ac_ext << EOF
#line 680 "configure"
#include "confdefs.h"
-main(){return(0);}
+int main(){return(0);}
EOF
if { (eval echo configure:685: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
ac_cv_prog_cc_works=yes

View file

@ -7,21 +7,17 @@
stdenv.mkDerivation rec {
pname = "gopher";
version = "3.0.17";
version = "3.0.19";
src = fetchFromGitHub {
owner = "jgoerzen";
repo = "gopher";
rev = "release/${version}";
sha256 = "1j6xh5l8v231d4mwl9gj1c34dc0jmazz6zg1qqfxmqr9y609jq3h";
sha256 = "sha256-8J63TnC3Yq7+64PPLrlPEueMa9D/eWkPsb08t1+rPAA=";
};
buildInputs = [ ncurses ];
patches = [
./int_main.patch # https://github.com/jgoerzen/gopher/pull/8
];
preConfigure = "export LIBS=-lncurses";
meta = with lib; {

View file

@ -16,13 +16,13 @@
curl,
}:
stdenv.mkDerivation rec {
stdenv.mkDerivation (finalAttrs: {
pname = "jenkins";
version = "2.504.1";
version = "2.504.2";
src = fetchurl {
url = "https://get.jenkins.io/war-stable/${version}/jenkins.war";
hash = "sha256-gQJtsYsMSq1rYs9AjkxC5Xl2YbQcUXs332BiOOibnfE=";
url = "https://get.jenkins.io/war-stable/${finalAttrs.version}/jenkins.war";
hash = "sha256-5SNHwB3TkRbDZPt+ureNFWvOj2rdKEhP9XH+DQ+uq/Y=";
};
nativeBuildInputs = [ makeWrapper ];
@ -33,8 +33,8 @@ stdenv.mkDerivation rec {
cp "$src" "$out/webapps/jenkins.war"
# Create the `jenkins-cli` command.
${openjdk}/bin/jar -xf "$src" WEB-INF/lib/cli-${version}.jar \
&& mv WEB-INF/lib/cli-${version}.jar "$out/share/jenkins-cli.jar"
${openjdk}/bin/jar -xf "$src" WEB-INF/lib/cli-${finalAttrs.version}.jar \
&& mv WEB-INF/lib/cli-${finalAttrs.version}.jar "$out/share/jenkins-cli.jar"
makeWrapper "${openjdk}/bin/java" "$out/bin/jenkins-cli" \
--add-flags "-jar $out/share/jenkins-cli.jar"
@ -84,8 +84,8 @@ stdenv.mkDerivation rec {
earldouglas
nequissimus
];
changelog = "https://www.jenkins.io/changelog-stable/#v${version}";
changelog = "https://www.jenkins.io/changelog-stable/#v${finalAttrs.version}";
mainProgram = "jenkins-cli";
platforms = platforms.all;
};
}
})

View file

@ -33,11 +33,11 @@
stdenv.mkDerivation rec {
pname = "knot-dns";
version = "3.4.6";
version = "3.4.7";
src = fetchurl {
url = "https://secure.nic.cz/files/knot-dns/knot-${version}.tar.xz";
sha256 = "sha256-0ZxaH/lLTyYCfWNd4Qjb/Ij1ZSvobMs7qaRO6b4OWDk=";
sha256 = "sha256-3TRspvOvq83F6boJ3WZ7AQWQu2akL0VBAh+51vBz2sw=";
};
outputs = [

View file

@ -50,6 +50,11 @@ rustPlatform.buildRustPackage rec {
useFetchCargoVendor = true;
cargoHash = "sha256-+UXRBYfbkb114mwDGj36oG5ZT3TQtcEzsbyZvtWTMxM=";
postInstall = ''
install -Dm444 de.feschber.LanMouse.desktop -t $out/share/applications
install -Dm444 lan-mouse-gtk/resources/de.feschber.LanMouse.svg -t $out/share/icons/hicolor/scalable/apps
'';
meta = {
description = "Software KVM switch for sharing a mouse and keyboard with multiple hosts through the network";
homepage = "https://github.com/feschber/lan-mouse";

View file

@ -17,6 +17,7 @@
pkg-config,
systemd,
fetchpatch,
nix-update-script,
}:
@ -57,6 +58,13 @@ stdenv.mkDerivation (finalAttrs: {
# Fix hardcoded path of lxc-user-nic
# This is needed to use unprivileged containers
./user-nic.diff
# Fixes https://github.com/zabbly/incus/issues/81
(fetchpatch {
name = "4536.patch";
url = "https://patch-diff.githubusercontent.com/raw/lxc/lxc/pull/4536.patch";
hash = "sha256-yEqK9deO2MhfPROPfBw44Z752Mc5bR8DBKl1KrGC+5c=";
})
];
mesonFlags = [

View file

@ -71,6 +71,7 @@ rustPlatform.buildRustPackage (finalAttrs: {
buildFeatures =
[
"brotli_compression"
"direct_tls"
"element_hacks"
"gzip_compression"
"media_thumbnail"
@ -87,6 +88,7 @@ rustPlatform.buildRustPackage (finalAttrs: {
++ lib.optional enableLiburing "io_uring";
passthru = {
rocksdb = rocksdb'; # make used rocksdb version available (e.g., for backup scripts)
updateScript = nix-update-script { };
tests =
{

View file

@ -81,13 +81,13 @@ buildGoModule (
{
pname = "olivetin";
version = "2025.6.1";
version = "2025.6.6";
src = fetchFromGitHub {
owner = "OliveTin";
repo = "OliveTin";
tag = finalAttrs.version;
hash = "sha256-Bd+zxVEhP7LZk74Mfai/MkML1pKlPBKm4kh4jAkC/kQ=";
hash = "sha256-yzAuhrkJEBErf9yYuRoq5B7PT0XA0w668AG5LNSSRFM=";
};
modRoot = "service";

View file

@ -34,7 +34,7 @@
mesa,
mpfr,
python3,
tbb_2021_11,
tbb_2022_0,
wayland,
wayland-protocols,
wrapGAppsHook3,
@ -46,15 +46,13 @@
# clang consume much less RAM than GCC
clangStdenv.mkDerivation rec {
pname = "openscad-unstable";
version = "2025-02-07";
version = "2025-06-04";
src = fetchFromGitHub {
owner = "openscad";
repo = "openscad";
rev = "1308a7d476facb466bf9fae1e77666c35c8e3c8f";
hash = "sha256-+0cQ5mgRzOPfP6nl/rfC/hnw3V7yvGJCyLU8hOmlGOc=";
# Unfortunately, we can't selectively fetch submodules. It would be good
# to see that we don't accidentally depend on it.
fetchSubmodules = true; # Only really need sanitizers-cmake and MCAD
rev = "65856c9330f8cc4ffcaccf03d91b4217f2eae28d";
hash = "sha256-jozcLFGVSfw8G12oSxHjqUyFtAfENgIByID+omk08mU=";
fetchSubmodules = true; # Only really need sanitizers-cmake and MCAD and manifold
};
patches = [ ./test.diff ];
@ -81,7 +79,7 @@ clangStdenv.mkDerivation rec {
[
clipper2
glm
tbb_2021_11
tbb_2022_0
mimalloc
boost
cairo
@ -90,7 +88,6 @@ clangStdenv.mkDerivation rec {
eigen
fontconfig
freetype
ghostscript
glib
gmp
opencsg
@ -135,6 +132,14 @@ clangStdenv.mkDerivation rec {
# tests rely on sysprof which is not available on darwin
doCheck = !stdenv.hostPlatform.isDarwin;
# remove unused submodules, to ensure correct dependency usage
postUnpack = ''
( cd $sourceRoot
for m in submodules/OpenCSG submodules/mimalloc submodules/Clipper2
do rm -r $m
done )
'';
postInstall = lib.optionalString stdenv.hostPlatform.isDarwin ''
mkdir $out/Applications
mv $out/bin/*.app $out/Applications
@ -144,15 +149,10 @@ clangStdenv.mkDerivation rec {
nativeCheckInputs = [
mesa.llvmpipeHook
ctestCheckHook
ghostscript
];
dontUseNinjaCheck = true;
checkFlags = [
"-E"
# some fontconfig issues cause pdf output to have wrong font
# manifold update caused slight rendering changes
"pdfexporttest|amfrendermanifoldtest_(issue1105|bad-stl-pcbvicebar|bad-stl-tardis)"
];
meta = with lib; {
description = "3D parametric model compiler (unstable)";

View file

@ -1,19 +1,19 @@
From 15345a1ca0a52f2e977361002fe984609704ec90 Mon Sep 17 00:00:00 2001
From fe701cc514b479ca01d18d7f1ab1da6acbc93273 Mon Sep 17 00:00:00 2001
From: Christoph Heiss <christoph@c8h4.io>
Date: Tue, 24 Dec 2024 17:40:48 +0100
Subject: [PATCH 1/3] cargo: re-route dependencies not available on crates.io
Date: Thu, 5 Jun 2025 11:26:24 +0200
Subject: [PATCH 1/5] cargo: re-route dependencies not available on crates.io
to git repos
Signed-off-by: Christoph Heiss <christoph@c8h4.io>
---
Cargo.toml | 147 ++++++++++-------------------------------------------
1 file changed, 26 insertions(+), 121 deletions(-)
Cargo.toml | 146 ++++++++++-------------------------------------------
1 file changed, 27 insertions(+), 119 deletions(-)
diff --git a/Cargo.toml b/Cargo.toml
index 9354fb17..d2014429 100644
index d38321e3..99d712da 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -42,8 +42,6 @@ members = [
@@ -41,8 +41,6 @@ members = [
"proxmox-backup-banner",
"proxmox-backup-client",
@ -22,23 +22,7 @@ index 9354fb17..d2014429 100644
"pxar-bin",
]
@@ -112,7 +110,6 @@ pbs-tools = { path = "pbs-tools" }
# regular crates
anyhow = "1.0"
async-trait = "0.1.56"
-apt-pkg-native = "0.3.2"
base64 = "0.13"
bitflags = "2.4"
bytes = "1.0"
@@ -126,7 +123,6 @@ flate2 = "1.0"
foreign-types = "0.3"
futures = "0.3"
h2 = { version = "0.4", features = [ "stream" ] }
-handlebars = "3.0"
hex = "0.4.3"
http = "0.2"
hyper = { version = "0.14", features = [ "full" ] }
@@ -162,139 +158,48 @@ xdg = "2.2"
@@ -160,138 +158,48 @@ xdg = "2.2"
zstd = { version = "0.12", features = [ "bindgen" ] }
zstd-safe = "6.0"
@ -55,7 +39,6 @@ index 9354fb17..d2014429 100644
-futures.workspace = true
-h2.workspace = true
-hex.workspace = true
-http.workspace = true
-hyper.workspace = true
-libc.workspace = true
-log.workspace = true
@ -116,13 +99,13 @@ index 9354fb17..d2014429 100644
-proxmox-time.workspace = true
-proxmox-uuid.workspace = true
-proxmox-worker-task.workspace = true
-pbs-api-types.workspace = true
-
-# in their respective repo
-proxmox-acme.workspace = true
-pxar.workspace = true
-
-# proxmox-backup workspace/internal crates
-pbs-api-types.workspace = true
-pbs-buildcfg.workspace = true
-pbs-client.workspace = true
-pbs-config.workspace = true
@ -136,7 +119,9 @@ index 9354fb17..d2014429 100644
# Local path overrides
# NOTE: You must run `cargo update` after changing this for it to take effect!
[patch.crates-io]
-#pbs-api-types = { path = "../proxmox/pbs-api-types" }
+pbs-api-types = { path = "../proxmox/pbs-api-types" }
#proxmox-acme = { path = "../proxmox/proxmox-acme" }
#proxmox-apt = { path = "../proxmox/proxmox-apt" }
-#proxmox-apt-api-types = { path = "../proxmox/proxmox-apt-api-types" }
-#proxmox-async = { path = "../proxmox/proxmox-async" }
@ -196,7 +181,6 @@ index 9354fb17..d2014429 100644
+proxmox-uuid = { path = "../proxmox/proxmox-uuid" }
+proxmox-worker-task = { path = "../proxmox/proxmox-worker-task" }
#proxmox-acme = { path = "../proxmox/proxmox-acme" }
-#pathpatterns = {path = "../pathpatterns" }
-#pxar = { path = "../pxar" }
+pathpatterns = {path = "../pathpatterns" }
@ -205,5 +189,5 @@ index 9354fb17..d2014429 100644
[features]
default = []
--
2.47.0
2.49.0

View file

@ -1,7 +1,7 @@
From fbfbc075c7451cda415fc5678cf5bce8bb11dc78 Mon Sep 17 00:00:00 2001
From b71b5bab3fadc663d322e3ef2faa8f098423fb03 Mon Sep 17 00:00:00 2001
From: Christoph Heiss <christoph@c8h4.io>
Date: Tue, 24 Dec 2024 17:22:35 +0100
Subject: [PATCH 2/3] docs: Add target path fixup variable
Subject: [PATCH 2/5] docs: add target path fixup variable
Signed-off-by: Christoph Heiss <christoph@c8h4.io>
---
@ -9,10 +9,10 @@ Signed-off-by: Christoph Heiss <christoph@c8h4.io>
1 file changed, 1 insertion(+)
diff --git a/docs/Makefile b/docs/Makefile
index 66da6037..a9939131 100644
index c57cbbc2..fa00729e 100644
--- a/docs/Makefile
+++ b/docs/Makefile
@@ -92,6 +92,7 @@ API_VIEWER_FILES := \
@@ -94,6 +94,7 @@ API_VIEWER_FILES := \
SPHINXOPTS = -E
SPHINXBUILD = sphinx-build
BUILDDIR = output
@ -21,5 +21,5 @@ index 66da6037..a9939131 100644
ifeq ($(BUILD_MODE), release)
COMPILEDIR := ../target/$(DEB_HOST_RUST_TYPE)/release
--
2.47.0
2.49.0

View file

@ -1,7 +1,7 @@
From 3fc7e2ab65ad6a8af360fafa84b97f551fa1b619 Mon Sep 17 00:00:00 2001
From 88f8ac1e5d158ad0a46177b813fd7557cc5e3fbe Mon Sep 17 00:00:00 2001
From: Christoph Heiss <christoph@c8h4.io>
Date: Tue, 24 Dec 2024 17:35:40 +0100
Subject: [PATCH 3/3] cargo: use local patched h2 dependency
Subject: [PATCH 3/5] cargo: use local patched h2 dependency
Signed-off-by: Christoph Heiss <christoph@c8h4.io>
---
@ -9,7 +9,7 @@ Signed-off-by: Christoph Heiss <christoph@c8h4.io>
1 file changed, 2 insertions(+)
diff --git a/Cargo.toml b/Cargo.toml
index d2014429..54f951c8 100644
index 99d712da..091696f1 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -201,6 +201,8 @@ proxmox-worker-task = { path = "../proxmox/proxmox-worker-task" }
@ -22,5 +22,5 @@ index d2014429..54f951c8 100644
default = []
#valgrind = ["valgrind_request"]
--
2.47.0
2.49.0

View file

@ -0,0 +1,83 @@
From 846d0b9c8f62340cb0703c59d16414b05a15382a Mon Sep 17 00:00:00 2001
From: Thomas Lamprecht <thomas@lamprecht.org>
Date: Tue, 29 Nov 2022 17:20:28 +0100
Subject: [PATCH 4/5] docs: drop all but client man pages
Signed-off-by: Thomas Lamprecht <thomas@lamprecht.org>
Signed-off-by: Christoph Heiss <christoph@c8h4.io>
---
docs/Makefile | 19 -------------------
docs/conf.py | 24 ------------------------
2 files changed, 43 deletions(-)
diff --git a/docs/Makefile b/docs/Makefile
index fa00729e..53a420b5 100644
--- a/docs/Makefile
+++ b/docs/Makefile
@@ -1,27 +1,8 @@
include ../defines.mk
GENERATED_SYNOPSIS := \
- config/acl/roles.rst \
- config/datastore/config.rst \
- config/domains/config.rst \
- config/media-pool/config.rst \
- config/notifications-priv/config.rst \
- config/notifications/config.rst \
- config/remote/config.rst \
- config/sync/config.rst \
- config/tape-job/config.rst \
- config/tape/config.rst \
- config/user/config.rst \
- config/verification/config.rst \
- config/prune/config.rst \
- pmt/synopsis.rst \
- pmtx/synopsis.rst \
proxmox-backup-client/catalog-shell-synopsis.rst \
proxmox-backup-client/synopsis.rst \
- proxmox-backup-debug/synopsis.rst \
- proxmox-backup-manager/synopsis.rst \
- proxmox-file-restore/synopsis.rst \
- proxmox-tape/synopsis.rst \
pxar/synopsis.rst \
MAN1_PAGES := \
diff --git a/docs/conf.py b/docs/conf.py
index a7fa1079..345a0170 100644
--- a/docs/conf.py
+++ b/docs/conf.py
@@ -93,31 +93,7 @@ rst_epilog += f"\n.. |pbs-copyright| replace:: Copyright (C) {copyright}"
man_pages = [
# CLI
('proxmox-backup-client/man1', 'proxmox-backup-client', 'Command line tool for Backup and Restore', [author], 1),
- ('proxmox-backup-manager/man1', 'proxmox-backup-manager', 'Command line tool to manage and configure the backup server.', [author], 1),
- ('proxmox-backup-debug/man1', 'proxmox-backup-debug', 'Debugging command line tool for Backup and Restore', [author], 1),
- ('proxmox-backup-proxy/man1', 'proxmox-backup-proxy', 'Proxmox Backup Public API Server', [author], 1),
- ('proxmox-backup/man1', 'proxmox-backup', 'Proxmox Backup Local API Server', [author], 1),
- ('proxmox-file-restore/man1', 'proxmox-file-restore', 'CLI tool for restoring files and directories from Proxmox Backup Server archives', [author], 1),
- ('proxmox-tape/man1', 'proxmox-tape', 'Proxmox Tape Backup CLI Tool', [author], 1),
('pxar/man1', 'pxar', 'Proxmox File Archive CLI Tool', [author], 1),
- ('pmt/man1', 'pmt', 'Control Linux Tape Devices', [author], 1),
- ('pmtx/man1', 'pmtx', 'Control SCSI media changer devices (tape autoloaders)', [author], 1),
- ('pbs2to3/man1', 'pbs2to3', 'Proxmox Backup Server upgrade checker script for 2.4+ to current 3.x major upgrades', [author], 1),
- # configs
- ('config/acl/man5', 'acl.cfg', 'Access Control Configuration', [author], 5),
- ('config/datastore/man5', 'datastore.cfg', 'Datastore Configuration', [author], 5),
- ('config/domains/man5', 'domains.cfg', 'Realm Configuration', [author], 5),
- ('config/media-pool/man5', 'media-pool.cfg', 'Media Pool Configuration', [author], 5),
- ('config/node/man5', 'proxmox-backup.node.cfg', 'Proxmox Backup Server - Node Configuration', [author], 5),
- ('config/remote/man5', 'remote.cfg', 'Remote Server Configuration', [author], 5),
- ('config/sync/man5', 'sync.cfg', 'Synchronization Job Configuration', [author], 5),
- ('config/tape-job/man5', 'tape-job.cfg', 'Tape Job Configuration', [author], 5),
- ('config/tape/man5', 'tape.cfg', 'Tape Drive and Changer Configuration', [author], 5),
- ('config/user/man5', 'user.cfg', 'User Configuration', [author], 5),
- ('config/verification/man5', 'verification.cfg', 'Verification Job Configuration', [author], 5),
- ('config/prune/man5', 'prune.cfg', 'Prune Job Configuration', [author], 5),
- ('config/notifications/man5', 'notifications.cfg', 'Notification target/matcher configuration', [author], 5),
- ('config/notifications-priv/man5', 'notifications-priv.cfg', 'Notification target secrets', [author], 5),
]
--
2.49.0

View file

@ -0,0 +1,198 @@
From b1a06f6a63a63410f89bd0d2968a6fdb7ce2352d Mon Sep 17 00:00:00 2001
From: Christoph Heiss <christoph@c8h4.io>
Date: Thu, 5 Jun 2025 12:01:10 +0200
Subject: [PATCH 5/5] Revert "h2: switch to legacy feature"
This reverts commit 168ed370263e84a6235968c615b856b9280debe1.
It's a Proxmox-specific workaround (see also the commit description
itself) and does not apply here.
Signed-off-by: Christoph Heiss <christoph@c8h4.io>
---
Cargo.toml | 2 +-
examples/h2client.rs | 6 +++---
examples/h2s-client.rs | 6 +++---
pbs-client/src/backup_writer.rs | 8 ++++----
pbs-client/src/http_client.rs | 12 +++++-------
pbs-client/src/pipe_to_stream.rs | 2 +-
6 files changed, 17 insertions(+), 19 deletions(-)
diff --git a/Cargo.toml b/Cargo.toml
index 091696f1..063f62f8 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -122,7 +122,7 @@ env_logger = "0.11"
flate2 = "1.0"
foreign-types = "0.3"
futures = "0.3"
-h2 = { version = "0.4", features = [ "legacy", "stream" ] }
+h2 = { version = "0.4", features = [ "stream" ] }
handlebars = "3.0"
hex = "0.4.3"
hickory-resolver = { version = "0.24.1", default-features = false, features = [ "system-config", "tokio-runtime" ] }
diff --git a/examples/h2client.rs b/examples/h2client.rs
index e44c43fa..1dcb4498 100644
--- a/examples/h2client.rs
+++ b/examples/h2client.rs
@@ -10,7 +10,7 @@ use tokio::net::TcpStream;
// Simple H2 client to test H2 download speed using h2server.rs
struct Process {
- body: h2::legacy::RecvStream,
+ body: h2::RecvStream,
trailers: bool,
bytes: usize,
}
@@ -50,7 +50,7 @@ impl Future for Process {
}
fn send_request(
- mut client: h2::legacy::client::SendRequest<bytes::Bytes>,
+ mut client: h2::client::SendRequest<bytes::Bytes>,
) -> impl Future<Output = Result<usize, Error>> {
println!("sending request");
@@ -78,7 +78,7 @@ async fn run() -> Result<(), Error> {
let conn = TcpStream::connect(std::net::SocketAddr::from(([127, 0, 0, 1], 8008))).await?;
conn.set_nodelay(true).unwrap();
- let (client, h2) = h2::legacy::client::Builder::new()
+ let (client, h2) = h2::client::Builder::new()
.initial_connection_window_size(1024 * 1024 * 1024)
.initial_window_size(1024 * 1024 * 1024)
.max_frame_size(4 * 1024 * 1024)
diff --git a/examples/h2s-client.rs b/examples/h2s-client.rs
index 86b3a931..a12b5a48 100644
--- a/examples/h2s-client.rs
+++ b/examples/h2s-client.rs
@@ -10,7 +10,7 @@ use tokio::net::TcpStream;
// Simple H2 client to test H2 download speed using h2s-server.rs
struct Process {
- body: h2::legacy::RecvStream,
+ body: h2::RecvStream,
trailers: bool,
bytes: usize,
}
@@ -50,7 +50,7 @@ impl Future for Process {
}
fn send_request(
- mut client: h2::legacy::client::SendRequest<bytes::Bytes>,
+ mut client: h2::client::SendRequest<bytes::Bytes>,
) -> impl Future<Output = Result<usize, Error>> {
println!("sending request");
@@ -94,7 +94,7 @@ async fn run() -> Result<(), Error> {
.await
.map_err(|err| format_err!("connect failed - {}", err))?;
- let (client, h2) = h2::legacy::client::Builder::new()
+ let (client, h2) = h2::client::Builder::new()
.initial_connection_window_size(1024 * 1024 * 1024)
.initial_window_size(1024 * 1024 * 1024)
.max_frame_size(4 * 1024 * 1024)
diff --git a/pbs-client/src/backup_writer.rs b/pbs-client/src/backup_writer.rs
index 32542506..1253ef56 100644
--- a/pbs-client/src/backup_writer.rs
+++ b/pbs-client/src/backup_writer.rs
@@ -56,7 +56,7 @@ pub struct UploadOptions {
}
struct ChunkUploadResponse {
- future: h2::legacy::client::ResponseFuture,
+ future: h2::client::ResponseFuture,
size: usize,
}
@@ -143,7 +143,7 @@ impl BackupWriter {
param: Option<Value>,
content_type: &str,
data: Vec<u8>,
- ) -> Result<h2::legacy::client::ResponseFuture, Error> {
+ ) -> Result<h2::client::ResponseFuture, Error> {
let request =
H2Client::request_builder("localhost", method, path, param, Some(content_type))
.unwrap();
@@ -514,7 +514,7 @@ impl BackupWriter {
}
fn response_queue() -> (
- mpsc::Sender<h2::legacy::client::ResponseFuture>,
+ mpsc::Sender<h2::client::ResponseFuture>,
oneshot::Receiver<Result<(), Error>>,
) {
let (verify_queue_tx, verify_queue_rx) = mpsc::channel(100);
@@ -537,7 +537,7 @@ impl BackupWriter {
tokio::spawn(
ReceiverStream::new(verify_queue_rx)
.map(Ok::<_, Error>)
- .try_for_each(move |response: h2::legacy::client::ResponseFuture| {
+ .try_for_each(move |response: h2::client::ResponseFuture| {
response
.map_err(Error::from)
.and_then(H2Client::h2api_response)
diff --git a/pbs-client/src/http_client.rs b/pbs-client/src/http_client.rs
index c95def07..8f6f8b41 100644
--- a/pbs-client/src/http_client.rs
+++ b/pbs-client/src/http_client.rs
@@ -863,7 +863,7 @@ impl HttpClient {
let max_window_size = (1 << 31) - 2;
- let (h2, connection) = h2::legacy::client::Builder::new()
+ let (h2, connection) = h2::client::Builder::new()
.initial_connection_window_size(max_window_size)
.initial_window_size(max_window_size)
.max_frame_size(4 * 1024 * 1024)
@@ -1008,11 +1008,11 @@ impl Drop for HttpClient {
#[derive(Clone)]
pub struct H2Client {
- h2: h2::legacy::client::SendRequest<bytes::Bytes>,
+ h2: h2::client::SendRequest<bytes::Bytes>,
}
impl H2Client {
- pub fn new(h2: h2::legacy::client::SendRequest<bytes::Bytes>) -> Self {
+ pub fn new(h2: h2::client::SendRequest<bytes::Bytes>) -> Self {
Self { h2 }
}
@@ -1092,7 +1092,7 @@ impl H2Client {
&self,
request: Request<()>,
data: Option<bytes::Bytes>,
- ) -> impl Future<Output = Result<h2::legacy::client::ResponseFuture, Error>> {
+ ) -> impl Future<Output = Result<h2::client::ResponseFuture, Error>> {
self.h2
.clone()
.ready()
@@ -1109,9 +1109,7 @@ impl H2Client {
})
}
- pub async fn h2api_response(
- response: Response<h2::legacy::RecvStream>,
- ) -> Result<Value, Error> {
+ pub async fn h2api_response(response: Response<h2::RecvStream>) -> Result<Value, Error> {
let status = response.status();
let (_head, mut body) = response.into_parts();
diff --git a/pbs-client/src/pipe_to_stream.rs b/pbs-client/src/pipe_to_stream.rs
index 3fc942d3..ae689851 100644
--- a/pbs-client/src/pipe_to_stream.rs
+++ b/pbs-client/src/pipe_to_stream.rs
@@ -8,7 +8,7 @@ use std::task::{Context, Poll};
use anyhow::{format_err, Error};
use bytes::Bytes;
use futures::{ready, Future};
-use h2::legacy::SendStream;
+use h2::SendStream;
pub struct PipeToSendStream {
body_tx: SendStream<Bytes>,
--
2.49.0

File diff suppressed because it is too large Load diff

View file

@ -21,20 +21,20 @@
let
pname = "proxmox-backup-client";
version = "3.3.2";
version = "3.4.2";
proxmox-backup_src = fetchgit {
url = "git://git.proxmox.com/git/proxmox-backup.git";
tag = "v${version}";
rev = "37f1949335cad801f7cdaa0173cc114590a37e4e";
name = "proxmox-backup";
hash = "sha256-0piUftzuK9e8KbOe+bc3SXWa0DlnEgk5iNGWGn4fw7Y=";
hash = "sha256-OW6GG/4IcEw8XOSSB5EoN+jyoOaL0ZtavJahnKOuAqI=";
};
proxmox_src = fetchgit {
url = "git://git.proxmox.com/git/proxmox.git";
rev = "df6b705f564ff145faa14770db6493bc5da8cab3";
rev = "e47fdf411be61b15382bc3baa3064f1e7cb03fa2";
name = "proxmox";
hash = "sha256-6fQVK+G5FMPy+29hScMkvQ+MQQryYs8f8oooq1YGXbg=";
hash = "sha256-jSU00D75sx40VS8rgF+D6h120FMaD1Jfq4e8l+8D5BQ=";
};
proxmox-fuse_src = fetchgit {
@ -63,11 +63,9 @@ let
name = "h2";
owner = "hyperium";
repo = "h2";
rev = "v0.4.7";
hash = "sha256-GcO4321Jqt1w7jbvQKd0GXIjptyz+tlN2SuxHoBJ/9k=";
rev = "v0.4.10";
hash = "sha256-PasHCbU466ByHIbDQpMMgzjg2dMRveOButHeVSknSEQ=";
};
aurPatchCommit = "6f83f58d54bc7186211d0cfa637c652b13e0dfee";
in
rustPlatform.buildRustPackage {
@ -85,7 +83,7 @@ rustPlatform.buildRustPackage {
sourceRoot = proxmox-backup_src.name;
# These patches are essentially un-upstreamable, due to being "workarounds" related to the
# project structure.
# project structure and upstream/Debian-specific packaging.
cargoPatches = [
# A lot of Rust crates `proxmox-backup-client` depends on are only available through git (or
# Debian packages). This patch redirects all these dependencies to a local, relative path, which
@ -94,17 +92,16 @@ rustPlatform.buildRustPackage {
# `make docs` assumes that the binaries are located under `target/{debug,release}`, but due
# to how `buildRustPackage` works, they get put under `target/$RUSTC_TARGET/{debug,release}`.
# This patch simply fixes that up.
./0002-docs-Add-target-path-fixup-variable.patch
./0002-docs-add-target-path-fixup-variable.patch
# Need to use a patched version of the `h2` crate (with a downgraded dependency, see also postPatch).
# This overrides it in the Cargo.toml as needed.
./0003-cargo-use-local-patched-h2-dependency.patch
# This patch prevents the generation of the man-pages for other components inside the repo,
# which would require them too be built too. Thus avoid wasting resources and just skip them.
(fetchpatch {
name = "0002-docs-drop-all-but-client-man-pages.patch";
url = "https://aur.archlinux.org/cgit/aur.git/plain/0002-docs-drop-all-but-client-man-pages.patch?h=proxmox-backup-client&id=${aurPatchCommit}";
hash = "sha256-AlIGfJZGaZl2NBVfuFxpDL6bgyvXA2Wcz7UWSrnQa24=";
})
./0004-docs-drop-all-but-client-man-pages.patch
# Upstream uses a patched version of the h2 crate (see [0]), which does not apply here.
# [0] https://git.proxmox.com/?p=debcargo-conf.git;a=blob;f=src/h2/debian/patches/add-legacy.patch;h=0913da317
./0005-Revert-h2-switch-to-legacy-feature.patch
];
postPatch = ''

View file

@ -39,11 +39,20 @@ stdenv.mkDerivation (finalAttrs: {
hash = "sha256-1QMEN/tDa7HZOo29v7RrqqYGEzGPT7P1hx1ygV0e7YA=";
};
outputs = [
"out"
"doc"
"man"
];
# TODO: sdcc version 4.5.0 does not currently produce a man output.
# Until the fix to sdcc's makefiles is released, this workaround
# conditionally withholds the man output on darwin.
#
# sdcc's tracking issue:
# <https://sourceforge.net/p/sdcc/bugs/3848/>
outputs =
[
"out"
"doc"
]
++ lib.optionals (!stdenv.isDarwin) [
"man"
];
enableParallelBuilding = true;

View file

@ -2,8 +2,8 @@
lib,
fetchFromGitHub,
stdenvNoCC,
cairosvg,
inkscape,
python3Packages,
xcursorgen,
}:
stdenvNoCC.mkDerivation {
@ -18,8 +18,8 @@ stdenvNoCC.mkDerivation {
};
nativeBuildInputs = [
cairosvg
inkscape
python3Packages.cairosvg
xcursorgen
];

View file

@ -4,36 +4,53 @@
fetchurl,
cabextract,
}:
stdenvNoCC.mkDerivation rec {
pname = "xow_dongle-firmware";
version = "2017-07";
version = "0-unstable-2025-04-22";
srcs = [
(fetchurl {
name = "xow_dongle.cab";
url = "http://download.windowsupdate.com/c/msdownload/update/driver/drvs/2017/07/1cd6a87c-623f-4407-a52d-c31be49e925c_e19f60808bdcbfbd3c3df6be3e71ffc52e43261e.cab";
hash = "sha256-ZXNqhP9ANmRbj47GAr7ZGrY1MBnJyzIz3sq5/uwPbwQ=";
})
(fetchurl {
name = "xow_dongle_045e_02e6.cab";
url = "https://catalog.s.download.windowsupdate.com/d/msdownload/update/driver/drvs/2015/12/20810869_8ce2975a7fbaa06bcfb0d8762a6275a1cf7c1dd3.cab";
hash = "sha256-5jiKJ6dXVpIN5zryRo461V16/vWavDoLUICU4JHRnwg=";
})
];
sourceRoot = ".";
dontConfigure = true;
dontBuild = true;
src = fetchurl {
url = "http://download.windowsupdate.com/c/msdownload/update/driver/drvs/2017/07/1cd6a87c-623f-4407-a52d-c31be49e925c_e19f60808bdcbfbd3c3df6be3e71ffc52e43261e.cab";
sha256 = "013g1zngxffavqrk5jy934q3bdhsv6z05ilfixdn8dj0zy26lwv5";
};
nativeBuildInputs = [ cabextract ];
sourceRoot = ".";
unpackPhase = ''
sources=($srcs)
unpackCmd = ''
cabextract -F FW_ACC_00U.bin ${src}
cabextract -F FW_ACC_00U.bin ''${sources[0]}
mv FW_ACC_00U.bin xow_dongle.bin
cabextract -F FW_ACC_00U.bin ''${sources[1]}
mv FW_ACC_00U.bin xow_dongle_045e_02e6.bin
'';
installPhase = ''
install -Dm644 FW_ACC_00U.bin ${placeholder "out"}/lib/firmware/xow_dongle.bin
install -Dm644 xow_dongle.bin $out/lib/firmware/xow_dongle.bin
install -Dm644 xow_dongle_045e_02e6.bin $out/lib/firmware/xow_dongle_045e_02e6.bin
'';
meta = with lib; {
description = "Xbox One wireless dongle firmware";
homepage = "https://www.xbox.com/en-NZ/accessories/adapters/wireless-adapter-windows";
license = licenses.unfree;
maintainers = with lib.maintainers; [ rhysmdnz ];
maintainers = with maintainers; [
rhysmdnz
fazzi
];
platforms = platforms.linux;
};
}

View file

@ -29,18 +29,18 @@ in
stdenv.mkDerivation (finalAttrs: {
pname = "zipline";
version = "4.1.0";
version = "4.1.2";
src = fetchFromGitHub {
owner = "diced";
repo = "zipline";
tag = "v${finalAttrs.version}";
hash = "sha256-5qa2K17RmWHO5mrkz/Imoxv4ODEaJow3BMUBNzl7Dg8=";
hash = "sha256-xxe64tGxZ2Udr+p21CKTZCHJ19ZOsdgPLlil+v+j5j4=";
};
pnpmDeps = pnpm_10.fetchDeps {
inherit (finalAttrs) pname version src;
hash = "sha256-xFe1Fdsp8Tpz0r+xvPSYuPR8gXTts6iWTq0a9u+Xh3U=";
hash = "sha256-O8RLaKff4Dj/JDeUOyf7GtcFcOu/aOuclyaZmVqVi5s=";
};
buildInputs = [ vips ];

View file

@ -55,6 +55,11 @@ rustPlatform.buildRustPackage rec {
# xtask doesn't support passing --target, but nix hooks expect the folder structure from when it's set
env.CARGO_BUILD_TARGET = stdenv.hostPlatform.rust.cargoShortTarget;
# Future packagers:
# This is a fix for https://github.com/NixOS/nixpkgs/issues/390469. Ideally
# ZLUDA should configure this automatically. Therefore, on every new update,
# please try removing this line and see if ZLUDA builds.
env.CMAKE_BUILD_TYPE = "Release";
preConfigure = ''
# disable test written for windows only: https://github.com/vosen/ZLUDA/blob/774f4bcb37c39f876caf80ae0d39420fa4bc1c8b/zluda_inject/tests/inject.rs#L55

View file

@ -27,11 +27,11 @@ let
in
stdenv.mkDerivation (finalAttrs: {
pname = "go";
version = "1.23.9";
version = "1.23.10";
src = fetchurl {
url = "https://go.dev/dl/go${finalAttrs.version}.src.tar.gz";
hash = "sha256-CPZBlUdWPtnnA30SuciQlnfHL3X2LvhYh+2dv0m40t0=";
hash = "sha256-gAp64b/xeaIntlOi9kRRfIAEQ7i0q/MnOvXhy3ET3lk=";
};
strictDeps = true;

View file

@ -294,17 +294,7 @@ stdenv.mkDerivation (
++
lib.optional (lib.versionAtLeast release_version "15")
# Just like the `llvm-lit-cfg` patch, but for `polly`.
(getVersionFile "llvm/polly-lit-cfg-add-libs-to-dylib-path.patch")
++
lib.optional (lib.versions.major release_version == "20")
# https://github.com/llvm/llvm-project/pull/139822 adds a commit which didn't get backported but is necessary for tests.
(
fetchpatch {
url = "https://github.com/llvm/llvm-project/commit/ff2e8f93f6090965e82d799af43f6dfef52baa66.patch";
stripLen = 1;
hash = "sha256-CZBTZKzi4cYkZhgTB5oXIo1UdEAArg9I4vR/m0upSRk=";
}
);
(getVersionFile "llvm/polly-lit-cfg-add-libs-to-dylib-path.patch");
nativeBuildInputs =
[

View file

@ -31,7 +31,7 @@ let
"17.0.6".officialRelease.sha256 = "sha256-8MEDLLhocshmxoEBRSKlJ/GzJ8nfuzQ8qn0X/vLA+ag=";
"18.1.8".officialRelease.sha256 = "sha256-iiZKMRo/WxJaBXct9GdAcAT3cz9d9pnAcO1mmR6oPNE=";
"19.1.7".officialRelease.sha256 = "sha256-cZAB5vZjeTsXt9QHbP5xluWNQnAHByHtHnAhVDV0E6I=";
"20.1.5".officialRelease.sha256 = "sha256-WKfY+VvAsZEEc0xYgF6+MsXDXZz7haMU6bxqmUpaHuQ=";
"20.1.6".officialRelease.sha256 = "sha256-PfCzECiCM+k0hHqEUSr1TSpnII5nqIxg+Z8ICjmMj0Y=";
"21.0.0-git".gitRelease = {
rev = "9e2684e4cfb0a7e30d5e49f812127d07cdda600d";
rev-version = "21.0.0-unstable-2025-06-06";

View file

@ -1,15 +1,6 @@
{ callPackage, fetchpatch }:
callPackage ./generic.nix {
version = "2.28.9";
hash = "sha256-/Bm05CvS9t7WSh4qoMconCaD7frlmA/H9YDyJOuGuFE=";
patches = [
# https://github.com/Mbed-TLS/mbedtls/pull/9529
# switch args to calloc in test macro to fix build with gcc-14
(fetchpatch {
name = "gcc-14-fixes.patch";
url = "https://github.com/Mbed-TLS/mbedtls/commit/990a88cd53d40ff42481a2c200b05f656507f326.patch";
hash = "sha256-Ki8xjm4tbzLZGNUr4hRbf+dlp05ejvl44ddroWJZY4w=";
})
];
version = "2.28.10";
hash = "sha256-09XWds45TFH7GORrju8pVQQQQomU8MlFAq1jJXrLW0s=";
}

View file

@ -3,6 +3,7 @@
stdenv,
buildPythonPackage,
fetchFromGitHub,
installShellFiles,
# build-system
setuptools,
@ -88,6 +89,10 @@ buildPythonPackage rec {
dilation = [ noiseprotocol ];
};
nativeBuildInputs = [
installShellFiles
];
nativeCheckInputs =
[
magic-wormhole-mailbox-server
@ -101,6 +106,10 @@ buildPythonPackage rec {
postInstall = ''
install -Dm644 docs/wormhole.1 $out/share/man/man1/wormhole.1
installShellCompletion --cmd ${meta.mainProgram} \
--bash wormhole_complete.bash \
--fish wormhole_complete.fish \
--zsh wormhole_complete.zsh
'';
meta = {

View file

@ -4,16 +4,15 @@
fetchFromGitHub,
kernel,
}:
stdenv.mkDerivation (finalAttrs: {
pname = "xone";
version = "0.3-unstable-2024-12-23";
version = "0.3.1";
src = fetchFromGitHub {
owner = "dlundqvist";
repo = "xone";
rev = "6b9d59aed71f6de543c481c33df4705d4a590a31";
hash = "sha256-MpxP2cb0KEPKaarjfX/yCbkxIFTwwEwVpTMhFcis+A4=";
tag = "v${finalAttrs.version}";
hash = "sha256-qMZlQgAe5vB5zfuhyK7EBxIwfhnC5MvnF/qr3BGnDms=";
};
setSourceRoot = ''
@ -43,6 +42,6 @@ stdenv.mkDerivation (finalAttrs: {
fazzi
];
platforms = platforms.linux;
broken = kernel.kernelOlder "5.11";
broken = kernel.kernelOlder "6";
};
})

View file

@ -1,13 +0,0 @@
diff --git a/mix.exs b/mix.exs
index 8338abf8..883e6987 100644
--- a/mix.exs
+++ b/mix.exs
@@ -1,7 +1,7 @@
defmodule Mobilizon.Mixfile do
use Mix.Project
- @version "5.1.0"
+ @version "5.1.2"
def project do
[

View file

@ -1,19 +0,0 @@
diff --git a/lib/web/proxy/reverse_proxy.ex b/lib/web/proxy/reverse_proxy.ex
index 8a78ef27..788ccc30 100644
--- a/lib/web/proxy/reverse_proxy.ex
+++ b/lib/web/proxy/reverse_proxy.ex
@@ -187,9 +187,13 @@ defmodule Mobilizon.Web.ReverseProxy do
@spec response(Plug.Conn.t(), any(), String.t(), pos_integer(), list(tuple()), Keyword.t()) ::
Plug.Conn.t()
defp response(conn, client, url, status, headers, opts) do
+ headers = build_resp_headers(headers, opts)
+ # Fix HTTP/1.1 protocol violation: content-length can't be combined with chunked encoding
+ headers = Enum.reject(headers, fn {k, _} -> k == "content-length" end)
+
result =
conn
- |> put_resp_headers(build_resp_headers(headers, opts))
+ |> put_resp_headers(headers)
|> send_chunked(status)
|> chunk_reply(client, opts)

View file

@ -2,13 +2,13 @@
rec {
pname = "mobilizon";
version = "5.1.2";
version = "5.1.4";
src = fetchFromGitLab {
domain = "framagit.org";
owner = "framasoft";
owner = "kaihuri";
repo = pname;
tag = version;
sha256 = "sha256-5xHLk5/ogtRN3mfJPP1/gIVlALerT9KEUHjLA2Ou3aM=";
sha256 = "sha256-rtYb9wptP1wAaQrK60apjjSCqtfolXag6QgRYf6pwzQ=";
};
}

View file

@ -20,19 +20,6 @@ in
mixRelease rec {
inherit (common) pname version src;
patches = [
# Version 5.1.2 failed to bump their internal package version,
# which causes issues with static file serving in the NixOS module.
./0001-fix-version.patch
# Mobilizon uses chunked Transfer-Encoding for the media proxy but also
# sets the Content-Length header. This is a HTTP/1.1 protocol violation
# and results in nginx >=1.24 rejecting the response with this error:
# 'upstream sent "Content-Length" and "Transfer-Encoding" headers at the same
# time while reading response header from upstream'
# Upstream PR: https://framagit.org/framasoft/mobilizon/-/merge_requests/1604
./0002-fix-media-proxy.patch
];
nativeBuildInputs = [
git
cmake
@ -157,8 +144,8 @@ mixRelease rec {
updateScript = writeShellScriptBin "update.sh" ''
set -eou pipefail
${mix2nix}/bin/mix2nix '${src}/mix.lock' > pkgs/servers/mobilizon/mix.nix
${nixfmt-rfc-style}/bin/nixfmt pkgs/servers/mobilizon/mix.nix
${lib.getExe mix2nix} '${src}/mix.lock' > pkgs/servers/mobilizon/mix.nix
${lib.getExe nixfmt-rfc-style} pkgs/servers/mobilizon/mix.nix
'';
elixirPackage = beamPackages.elixir;
};

View file

@ -11,7 +11,7 @@ in
buildNpmPackage {
inherit (common) pname version src;
npmDepsHash = "sha256-oOV4clyUzKTdAMCKghWS10X9Nug9j8mil/vXcFhZ6Z0=";
npmDepsHash = "sha256-vf8qEXMZ+TGqKjDN7LjUyOm98EQqweW6NKdJuNoMuVc=";
nativeBuildInputs = [ imagemagick ];

View file

@ -4,8 +4,8 @@ generic: {
hash = "sha256-DQGzk90isqYLNvs3qY/PEIHGg62Ygyot3YeUOhIAg54=";
};
v70 = generic {
version = "7.0.12";
hash = "sha256-YGntYEql4z/mMczGi3gmVKaXBxlSoc82UVFlWgoSKwU=";
version = "7.0.13";
hash = "sha256-2e9/HPsL3lZY2rsigIIPnOHPMyV/rHn0DwM3Org60Xw=";
};
v60 = generic {
version = "6.0.36";

View file

@ -79,11 +79,11 @@ let
in
stdenv.mkDerivation (finalAttrs: {
pname = "samba";
version = "4.20.4";
version = "4.20.8";
src = fetchurl {
url = "https://download.samba.org/pub/samba/stable/samba-${finalAttrs.version}.tar.gz";
hash = "sha256-OpLpfq6zRbazIjL1A+FNNPA6eqZMRR/owlihG72pCOU=";
hash = "sha256-db4OjTH0UBPpsmD+fPMEo20tgSg5GRR3JXchXsFzqAc=";
};
outputs = [

View file

@ -50,11 +50,11 @@ assert !(withJemalloc && withTcmalloc);
stdenv.mkDerivation (finalAttrs: {
pname = "percona-server";
version = "8.4.4-4";
version = "8.4.5-5";
src = fetchurl {
url = "https://downloads.percona.com/downloads/Percona-Server-${lib.versions.majorMinor finalAttrs.version}/Percona-Server-${finalAttrs.version}/source/tarball/percona-server-${finalAttrs.version}.tar.gz";
hash = "sha256-10QYJQeCY3pFHmtBIQ72rsagicNJgHvNtbLPvjjUyg4=";
hash = "sha256-i0f/Ndwqbn6qyqLSBK5FbBW12ZUzYMy2JQ2o1o2Y9q8=";
};
nativeBuildInputs = [