mirror of
https://github.com/NixOS/nixpkgs.git
synced 2025-06-08 02:38:11 +09:00
Merge staging-next-25.05 into staging-25.05
This commit is contained in:
commit
2eed36930f
53 changed files with 2844 additions and 1530 deletions
|
@ -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=";
|
||||
};
|
||||
|
||||
|
|
|
@ -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"
|
||||
],
|
||||
|
|
|
@ -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
|
||||
|
|
62
nixos/modules/services/matrix/draupnir.md
Normal file
62
nixos/modules/services/matrix/draupnir.md
Normal 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.
|
257
nixos/modules/services/matrix/draupnir.nix
Normal file
257
nixos/modules/services/matrix/draupnir.nix
Normal 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
|
||||
];
|
||||
};
|
||||
}
|
|
@ -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 { };
|
||||
|
|
150
nixos/tests/matrix/draupnir.nix
Normal file
150
nixos/tests/matrix/draupnir.nix
Normal 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))
|
||||
'';
|
||||
}
|
1813
pkgs/by-name/an/animeko/deps.json
generated
1813
pkgs/by-name/an/animeko/deps.json
generated
File diff suppressed because it is too large
Load diff
|
@ -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;
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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 it’s 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";
|
||||
};
|
||||
}
|
||||
})
|
||||
|
|
|
@ -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
|
||||
'';
|
||||
|
|
|
@ -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";
|
||||
|
|
|
@ -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 = [
|
||||
|
|
|
@ -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 = ''
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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>
|
|
@ -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;
|
||||
};
|
||||
}
|
||||
|
|
|
@ -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
|
|
@ -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; {
|
||||
|
|
|
@ -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;
|
||||
};
|
||||
}
|
||||
})
|
||||
|
|
|
@ -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 = [
|
||||
|
|
|
@ -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";
|
||||
|
|
|
@ -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 = [
|
||||
|
|
|
@ -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 =
|
||||
{
|
||||
|
|
|
@ -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";
|
||||
|
|
|
@ -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)";
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
@ -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
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
@ -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
|
||||
|
1255
pkgs/by-name/pr/proxmox-backup-client/Cargo.lock
generated
1255
pkgs/by-name/pr/proxmox-backup-client/Cargo.lock
generated
File diff suppressed because it is too large
Load diff
|
@ -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 = ''
|
||||
|
|
|
@ -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;
|
||||
|
||||
|
|
|
@ -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
|
||||
];
|
||||
|
||||
|
|
|
@ -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;
|
||||
};
|
||||
}
|
||||
|
|
|
@ -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 ];
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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 =
|
||||
[
|
||||
|
|
|
@ -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";
|
||||
|
|
|
@ -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=";
|
||||
}
|
||||
|
|
|
@ -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 = {
|
||||
|
|
|
@ -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";
|
||||
};
|
||||
})
|
||||
|
|
|
@ -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
|
||||
[
|
|
@ -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)
|
||||
|
|
@ -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=";
|
||||
};
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
};
|
||||
|
|
|
@ -11,7 +11,7 @@ in
|
|||
buildNpmPackage {
|
||||
inherit (common) pname version src;
|
||||
|
||||
npmDepsHash = "sha256-oOV4clyUzKTdAMCKghWS10X9Nug9j8mil/vXcFhZ6Z0=";
|
||||
npmDepsHash = "sha256-vf8qEXMZ+TGqKjDN7LjUyOm98EQqweW6NKdJuNoMuVc=";
|
||||
|
||||
nativeBuildInputs = [ imagemagick ];
|
||||
|
||||
|
|
|
@ -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";
|
||||
|
|
|
@ -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 = [
|
||||
|
|
|
@ -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 = [
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue