mirror of
https://github.com/NixOS/nixpkgs.git
synced 2026-08-25 17:55:21 +00:00
Merge branch 'staging-next-26.05' into staging-26.05
This commit is contained in:
@@ -35,12 +35,14 @@ in
|
||||
type = lib.types.str;
|
||||
default = "127.0.0.1";
|
||||
description = "The IP to host on. Use 0.0.0.0 to expose on all network adapters.";
|
||||
example = "0.0.0.0";
|
||||
};
|
||||
|
||||
port = lib.mkOption {
|
||||
type = lib.types.port;
|
||||
default = 5000;
|
||||
description = "The port to host on.";
|
||||
example = 8080;
|
||||
};
|
||||
|
||||
disable_auth = lib.mkOption {
|
||||
@@ -58,10 +60,34 @@ in
|
||||
description = "Disable fetching external content in response to requests, such as images from URLs.";
|
||||
};
|
||||
|
||||
send_tracebacks = lib.mkOption {
|
||||
type = lib.types.bool;
|
||||
default = false;
|
||||
description = ''
|
||||
Send tracebacks over the API.
|
||||
NOTE: Only enable this for debug purposes.
|
||||
'';
|
||||
};
|
||||
|
||||
api_servers = lib.mkOption {
|
||||
type = lib.types.listOf lib.types.str;
|
||||
default = [ "OAI" ];
|
||||
description = "Select API servers to enable. Possible values: OAI, Kobold.";
|
||||
example = [
|
||||
"OAI"
|
||||
"Kobold"
|
||||
];
|
||||
};
|
||||
|
||||
sse_ping_interval = lib.mkOption {
|
||||
type = lib.types.ints.unsigned;
|
||||
default = 15;
|
||||
description = ''
|
||||
Seconds between SSE keep-alive pings on streaming responses.
|
||||
Pings are SSE comments, ignored by compliant clients, and prevent
|
||||
connections from dropping during long prefills. Set to 0 to disable.
|
||||
'';
|
||||
example = 0;
|
||||
};
|
||||
};
|
||||
|
||||
@@ -72,6 +98,12 @@ in
|
||||
description = "Enable prompt logging.";
|
||||
};
|
||||
|
||||
log_generation_params = lib.mkOption {
|
||||
type = lib.types.bool;
|
||||
default = false;
|
||||
description = "Enable generation parameter logging.";
|
||||
};
|
||||
|
||||
log_requests = lib.mkOption {
|
||||
type = lib.types.bool;
|
||||
default = false;
|
||||
@@ -141,6 +173,15 @@ in
|
||||
'';
|
||||
};
|
||||
|
||||
use_dummy_models = lib.mkOption {
|
||||
type = lib.types.bool;
|
||||
default = false;
|
||||
description = ''
|
||||
Sends dummy model names when the models endpoint is queried.
|
||||
Enable this if the client is looking for specific OAI models.
|
||||
'';
|
||||
};
|
||||
|
||||
model_name = lib.mkOption {
|
||||
type = lib.types.nullOr lib.types.str;
|
||||
default = null;
|
||||
@@ -151,6 +192,20 @@ in
|
||||
example = "Qwen3_5-9B";
|
||||
};
|
||||
|
||||
use_as_default = lib.mkOption {
|
||||
type = lib.types.listOf lib.types.str;
|
||||
default = [ ];
|
||||
description = ''
|
||||
Names of args to use as a fallback for API load requests.
|
||||
For example, if you always want cache_mode to be Q4 instead of only on the
|
||||
initial model load, add "cache_mode" to this list.
|
||||
'';
|
||||
example = [
|
||||
"max_seq_len"
|
||||
"cache_mode"
|
||||
];
|
||||
};
|
||||
|
||||
max_seq_len = lib.mkOption {
|
||||
type = lib.types.nullOr lib.types.int;
|
||||
default = null;
|
||||
@@ -158,6 +213,22 @@ in
|
||||
Max sequence length (default: min(max_position_embeddings, cache_size)).
|
||||
Set to -1 to fetch from the model's config.json.
|
||||
'';
|
||||
example = 32768;
|
||||
};
|
||||
|
||||
cache_size = lib.mkOption {
|
||||
type = lib.types.nullOr (
|
||||
lib.types.addCheck lib.types.ints.positive (n: lib.mod n 256 == 0)
|
||||
// {
|
||||
description = "positive integer, multiple of 256";
|
||||
}
|
||||
);
|
||||
default = null;
|
||||
description = ''
|
||||
Size of the key/value cache to allocate, in tokens (default: 4096).
|
||||
Must be a multiple of 256.
|
||||
'';
|
||||
example = 32768;
|
||||
};
|
||||
|
||||
cache_mode = lib.mkOption {
|
||||
@@ -168,6 +239,7 @@ in
|
||||
Specify the pair k_bits,v_bits where k_bits and v_bits are integers from 2-8 (e.g. '8,8').
|
||||
The legacy values 'FP16', 'Q8', 'Q6', 'Q4' are also accepted.
|
||||
'';
|
||||
example = "8,8";
|
||||
};
|
||||
|
||||
tensor_parallel = lib.mkOption {
|
||||
@@ -185,6 +257,111 @@ in
|
||||
description = "Automatically allocate resources to GPUs. Not parsed for single GPU users.";
|
||||
};
|
||||
|
||||
autosplit_reserve = lib.mkOption {
|
||||
type = lib.types.listOf lib.types.number;
|
||||
default = [ 96 ];
|
||||
description = ''
|
||||
Reserve VRAM used for autosplit loading, as a list of MB per GPU
|
||||
(default: 96 MB on GPU 0).
|
||||
'';
|
||||
example = [
|
||||
96
|
||||
96
|
||||
];
|
||||
};
|
||||
|
||||
gpu_split = lib.mkOption {
|
||||
type = lib.types.listOf lib.types.number;
|
||||
default = [ ];
|
||||
description = ''
|
||||
List of VRAM sizes to split between GPUs, in GB.
|
||||
Used with tensor parallelism.
|
||||
'';
|
||||
example = [
|
||||
16
|
||||
24
|
||||
];
|
||||
};
|
||||
|
||||
cpu_moe_offload_layers = lib.mkOption {
|
||||
type = lib.types.ints.unsigned;
|
||||
default = 0;
|
||||
description = ''
|
||||
Number of mixture-of-expert layers to offload to CPU inference.
|
||||
Only affects MoE models. Set a large value such as 999 to offload all layers.
|
||||
'';
|
||||
example = 999;
|
||||
};
|
||||
|
||||
rope_scale = lib.mkOption {
|
||||
type = lib.types.nullOr lib.types.number;
|
||||
default = 1.0;
|
||||
description = ''
|
||||
Rope scale, same as compress_pos_emb.
|
||||
Use if the model was trained on long context with rope.
|
||||
Set to null to pull the value from the model.
|
||||
|
||||
NOTE: If a model has YaRN rope scaling, it will automatically be enabled by
|
||||
ExLlama and the rope_scale and rope_alpha settings won't apply.
|
||||
'';
|
||||
example = 4.0;
|
||||
};
|
||||
|
||||
rope_alpha = lib.mkOption {
|
||||
type = lib.types.nullOr (lib.types.either lib.types.number (lib.types.enum [ "auto" ]));
|
||||
default = null;
|
||||
description = ''
|
||||
Rope alpha, same as alpha_value. Set to "auto" to auto-calculate.
|
||||
Leaving this null will either pull from the model or auto-calculate.
|
||||
'';
|
||||
example = "auto";
|
||||
};
|
||||
|
||||
chunk_size = lib.mkOption {
|
||||
type = lib.types.ints.positive;
|
||||
default = 2048;
|
||||
description = ''
|
||||
Chunk size for prompt ingestion.
|
||||
A lower value reduces VRAM usage but decreases ingestion speed.
|
||||
NOTE: Effects vary depending on the model. An ideal value is between 512 and 4096.
|
||||
'';
|
||||
example = 512;
|
||||
};
|
||||
|
||||
output_chunking = lib.mkOption {
|
||||
type = lib.types.bool;
|
||||
default = true;
|
||||
description = ''
|
||||
Use output chunking. Instead of allocating cache space for the entire completion
|
||||
at once, allocate in chunks as needed. Used by EXL3 models only.
|
||||
'';
|
||||
};
|
||||
|
||||
max_batch_size = lib.mkOption {
|
||||
type = lib.types.nullOr lib.types.ints.positive;
|
||||
default = null;
|
||||
description = ''
|
||||
Set the maximum number of generation jobs that can run concurrently.
|
||||
The default maximum batch size for transformer architectures is 32. Recurrent
|
||||
models with linear or sliding attention use more VRAM to support larger batches,
|
||||
so the default value is reduced to 4. If you do not require concurrency at all,
|
||||
you can reduce it further to minimize VRAM overhead.
|
||||
'';
|
||||
example = 1;
|
||||
};
|
||||
|
||||
prompt_template = lib.mkOption {
|
||||
type = lib.types.nullOr lib.types.str;
|
||||
default = null;
|
||||
description = ''
|
||||
Set the prompt template for this model.
|
||||
If null, attempts to look for the model's chat template.
|
||||
If a model contains multiple templates in its tokenizer_config.json,
|
||||
set this to the name of the template you want to use.
|
||||
NOTE: Only works with chat completion message lists!
|
||||
'';
|
||||
};
|
||||
|
||||
dummy_model_names = lib.mkOption {
|
||||
type = lib.types.listOf lib.types.str;
|
||||
default = [ "gpt-3.5-turbo" ];
|
||||
@@ -192,6 +369,10 @@ in
|
||||
A list of fake model names that are sent via the /v1/models endpoint.
|
||||
Also used as bypasses for strict mode if inline_model_loading is true.
|
||||
'';
|
||||
example = [
|
||||
"gpt-3.5-turbo"
|
||||
"gpt-4"
|
||||
];
|
||||
};
|
||||
|
||||
vision = lib.mkOption {
|
||||
@@ -200,6 +381,34 @@ in
|
||||
description = "Enables vision support if the model supports it.";
|
||||
};
|
||||
|
||||
template_vars_default = lib.mkOption {
|
||||
type = lib.types.attrsOf lib.types.anything;
|
||||
default = { };
|
||||
description = ''
|
||||
Default chat template variables. Merged into the template variables of every
|
||||
chat completion request; values sent by the client (template_vars /
|
||||
chat_template_kwargs, or the top-level reasoning_effort field) take precedence.
|
||||
Use for model-specific reasoning knobs.
|
||||
'';
|
||||
example = {
|
||||
enable_thinking = true;
|
||||
};
|
||||
};
|
||||
|
||||
template_vars_force = lib.mkOption {
|
||||
type = lib.types.attrsOf lib.types.anything;
|
||||
default = { };
|
||||
description = ''
|
||||
Forced chat template variables. Like template_vars_default, but these override
|
||||
any values sent by the client.
|
||||
Replaces the deprecated force_enable_thinking option, which is still accepted
|
||||
as an alias for { enable_thinking = true; }.
|
||||
'';
|
||||
example = {
|
||||
reasoning_effort = "high";
|
||||
};
|
||||
};
|
||||
|
||||
reasoning = lib.mkOption {
|
||||
type = lib.types.bool;
|
||||
default = false;
|
||||
@@ -220,7 +429,243 @@ in
|
||||
default = "</think>";
|
||||
description = "The end token for reasoning content.";
|
||||
};
|
||||
|
||||
start_in_reasoning = lib.mkOption {
|
||||
type = lib.types.enum [
|
||||
"auto"
|
||||
"always"
|
||||
"never"
|
||||
];
|
||||
default = "auto";
|
||||
description = ''
|
||||
Whether generation starts inside a reasoning block.
|
||||
"auto" guesses by scanning the end of the templated prompt for an unclosed
|
||||
reasoning start token.
|
||||
'';
|
||||
example = "always";
|
||||
};
|
||||
|
||||
tool_calls_in_reasoning = lib.mkOption {
|
||||
type = lib.types.bool;
|
||||
default = true;
|
||||
description = ''
|
||||
Parse tool calls that occur inside reasoning content.
|
||||
If false, tool call tags inside a reasoning block are treated as plain
|
||||
reasoning text.
|
||||
'';
|
||||
};
|
||||
|
||||
tool_format = lib.mkOption {
|
||||
type = lib.types.nullOr lib.types.str;
|
||||
default = null;
|
||||
description = ''
|
||||
Tool format, e.g. "qwen3_coder". See upstream docs for supported formats.
|
||||
If null, tool calls from the model will not be parsed by the server.
|
||||
'';
|
||||
example = "qwen3_coder";
|
||||
};
|
||||
|
||||
harmony = lib.mkOption {
|
||||
type = lib.types.nullOr lib.types.bool;
|
||||
default = null;
|
||||
description = ''
|
||||
Parse responses in the Harmony message format (gpt-oss models).
|
||||
Auto-detected from the model's special tokens when null; set to true or false
|
||||
to override. Setting tool_format to "harmony" is equivalent to setting this to
|
||||
true. When active, supersedes the reasoning and tool format settings.
|
||||
'';
|
||||
};
|
||||
};
|
||||
|
||||
draft_model = {
|
||||
draft_mode = lib.mkOption {
|
||||
type = lib.types.enum [
|
||||
"model"
|
||||
"disabled"
|
||||
"mtp"
|
||||
"ngram"
|
||||
];
|
||||
default = "model";
|
||||
description = ''
|
||||
Drafting mode for exllamav3.
|
||||
In "model" mode, drafting is disabled if no draft_model_name is provided.
|
||||
'';
|
||||
example = "ngram";
|
||||
};
|
||||
|
||||
draft_model_dir = lib.mkOption {
|
||||
type = lib.types.str;
|
||||
default = "models";
|
||||
description = "Directory to look for draft models. Relative to the state directory.";
|
||||
example = "drafts";
|
||||
};
|
||||
|
||||
draft_model_name = lib.mkOption {
|
||||
type = lib.types.nullOr lib.types.str;
|
||||
default = null;
|
||||
description = ''
|
||||
An initial draft model to load.
|
||||
Ensure the model is in the draft model directory.
|
||||
'';
|
||||
example = "Qwen3-0.6B-exl3";
|
||||
};
|
||||
|
||||
draft_rope_scale = lib.mkOption {
|
||||
type = lib.types.nullOr lib.types.number;
|
||||
default = 1.0;
|
||||
description = ''
|
||||
Rope scale for draft models, same as compress_pos_emb.
|
||||
Use if the draft model was trained on long context with rope.
|
||||
'';
|
||||
example = 4.0;
|
||||
};
|
||||
|
||||
draft_rope_alpha = lib.mkOption {
|
||||
type = lib.types.nullOr lib.types.number;
|
||||
default = null;
|
||||
description = ''
|
||||
Rope alpha for draft models, same as alpha_value.
|
||||
Leaving this null will either pull from the model or auto-calculate.
|
||||
'';
|
||||
example = 2.0;
|
||||
};
|
||||
|
||||
draft_cache_mode = lib.mkOption {
|
||||
type = lib.types.enum [
|
||||
"FP16"
|
||||
"Q8"
|
||||
"Q6"
|
||||
"Q4"
|
||||
];
|
||||
default = "FP16";
|
||||
description = ''
|
||||
Cache mode for draft models to save VRAM.
|
||||
Unlike the model's cache_mode, this does not accept a k_bits,v_bits pair.
|
||||
'';
|
||||
example = "Q8";
|
||||
};
|
||||
|
||||
draft_gpu_split = lib.mkOption {
|
||||
type = lib.types.listOf lib.types.number;
|
||||
default = [ ];
|
||||
description = ''
|
||||
List of VRAM sizes to split between GPUs, in GB.
|
||||
If this is empty, the draft model is autosplit.
|
||||
'';
|
||||
example = [
|
||||
2
|
||||
2
|
||||
];
|
||||
};
|
||||
|
||||
draft_num_tokens = lib.mkOption {
|
||||
type = lib.types.nullOr lib.types.ints.positive;
|
||||
default = null;
|
||||
description = ''
|
||||
Number of tokens to draft per iteration (default: draft model default).
|
||||
Recurrent (linear or sliding attention) models use more VRAM for longer drafts.
|
||||
This overhead multiplies with the max batch size, so for models with long drafts
|
||||
(e.g. DFlash with 15 tokens by default) shorter drafts may be preferable.
|
||||
'';
|
||||
example = 4;
|
||||
};
|
||||
|
||||
dynamic_draft = lib.mkOption {
|
||||
type = lib.types.bool;
|
||||
default = false;
|
||||
description = ''
|
||||
Adjust number of draft tokens dynamically based on observed acceptance rates.
|
||||
Ceiling is given by draft_num_tokens.
|
||||
'';
|
||||
};
|
||||
|
||||
ngram_match_min = lib.mkOption {
|
||||
type = lib.types.ints.positive;
|
||||
default = 2;
|
||||
description = ''
|
||||
Minimum match length for exllamav3 n-gram drafting.
|
||||
Only used when draft_mode is "ngram".
|
||||
'';
|
||||
example = 3;
|
||||
};
|
||||
};
|
||||
|
||||
sampling = {
|
||||
override_preset = lib.mkOption {
|
||||
type = lib.types.nullOr lib.types.str;
|
||||
default = null;
|
||||
description = ''
|
||||
Select a sampler override preset, found in the sampler-overrides folder.
|
||||
This overrides default fallbacks for sampler values that are passed to the API.
|
||||
NOTE: "safe_defaults" is noob friendly and provides fallbacks for frontends that
|
||||
don't send sampling parameters. Leave this null for any advanced usage.
|
||||
'';
|
||||
example = "safe_defaults";
|
||||
};
|
||||
};
|
||||
|
||||
lora = {
|
||||
lora_dir = lib.mkOption {
|
||||
type = lib.types.str;
|
||||
default = "loras";
|
||||
description = "Directory to look for LoRAs. Relative to the state directory.";
|
||||
};
|
||||
|
||||
loras = lib.mkOption {
|
||||
type = lib.types.listOf (
|
||||
lib.types.submodule {
|
||||
options = {
|
||||
name = lib.mkOption {
|
||||
type = lib.types.str;
|
||||
description = "Name of the LoRA directory inside lora_dir.";
|
||||
};
|
||||
|
||||
scaling = lib.mkOption {
|
||||
type = lib.types.number;
|
||||
default = 1.0;
|
||||
description = "Scaling factor for this LoRA.";
|
||||
};
|
||||
};
|
||||
}
|
||||
);
|
||||
default = [ ];
|
||||
description = "List of LoRAs to load and associated scaling factors.";
|
||||
example = [
|
||||
{
|
||||
name = "lora1";
|
||||
scaling = 1.0;
|
||||
}
|
||||
];
|
||||
};
|
||||
};
|
||||
|
||||
memory = {
|
||||
sysmem_recurrent_cache = lib.mkOption {
|
||||
type = lib.types.ints.unsigned;
|
||||
default = 4096;
|
||||
description = "Max size of recurrent cache in system memory, in MB.";
|
||||
example = 8192;
|
||||
};
|
||||
|
||||
sysmem_kv_cache = lib.mkOption {
|
||||
type = lib.types.ints.unsigned;
|
||||
default = 0;
|
||||
description = "Size of system memory second-tier key/value cache, in MB.";
|
||||
example = 4096;
|
||||
};
|
||||
|
||||
cuda_malloc_async = lib.mkOption {
|
||||
type = lib.types.bool;
|
||||
default = true;
|
||||
description = ''
|
||||
Use the cudaMallocAsync backend in Torch.
|
||||
Enabling this is generally preferable, but it may cause issues with certain
|
||||
workloads. Try disabling it if you experience intermittent OoM errors. If false,
|
||||
Torch will use the allocator defined by the system environment.
|
||||
'';
|
||||
};
|
||||
};
|
||||
|
||||
};
|
||||
};
|
||||
};
|
||||
@@ -236,6 +681,14 @@ in
|
||||
services.tabbyapi.package = pkgs.pkgsCuda.tabbyapi;
|
||||
'';
|
||||
}
|
||||
{
|
||||
assertion = !(cfg.settings.model ? force_enable_thinking);
|
||||
message = ''
|
||||
services.tabbyapi.settings.model.force_enable_thinking is deprecated upstream.
|
||||
Use template_vars_force instead:
|
||||
services.tabbyapi.settings.model.template_vars_force.enable_thinking = true;
|
||||
'';
|
||||
}
|
||||
];
|
||||
networking.firewall.allowedTCPPorts = lib.mkIf cfg.openFirewall [
|
||||
cfg.settings.network.port
|
||||
|
||||
@@ -6,6 +6,7 @@
|
||||
desktopName,
|
||||
self,
|
||||
autoPatchelfHook,
|
||||
addDriverRunpath,
|
||||
fetchurl,
|
||||
makeDesktopItem,
|
||||
lib,
|
||||
@@ -258,7 +259,8 @@ stdenv.mkDerivation (finalAttrs: {
|
||||
''} \
|
||||
${lib.strings.optionalString enableAutoscroll "--add-flags \"--enable-blink-features=MiddleClickAutoscroll\""} \
|
||||
--prefix XDG_DATA_DIRS : "${gtk3}/share/gsettings-schemas/${gtk3.name}/" \
|
||||
--prefix LD_LIBRARY_PATH : ${finalAttrs.libPath}:$out/opt/${binaryName} \
|
||||
--prefix LD_LIBRARY_PATH : ${finalAttrs.libPath}:$out/opt/${binaryName}:${addDriverRunpath.driverLink}/lib \
|
||||
--suffix VK_ADD_DRIVER_FILES : "${addDriverRunpath.driverLink}/share/vulkan/icd.d" \
|
||||
${lib.strings.optionalString disableUpdates "--run ${lib.getExe disableBreakingUpdates}"} \
|
||||
--run "${finalAttrs.stageModules} $out/opt/${binaryName}/modules" \
|
||||
--add-flags ${lib.escapeShellArg commandLineArgs}
|
||||
|
||||
@@ -105,11 +105,11 @@ assert lib.all (p: p.enabled -> !(builtins.elem null p.buildInputs)) plugins;
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "weechat";
|
||||
version = "4.9.4";
|
||||
version = "4.10.0";
|
||||
|
||||
src = fetchurl {
|
||||
url = "https://weechat.org/files/src/weechat-${version}.tar.xz";
|
||||
hash = "sha256-P8UDWfOjsljJ8DFIsC87nFkZRTXRtGXEgfuFp2wu0AU=";
|
||||
hash = "sha256-w6fnxqVAHd6aRtAmT6RKowMsqYqoZBDEVNPeXGlQXFQ=";
|
||||
};
|
||||
|
||||
# Why is this needed? https://github.com/weechat/weechat/issues/2031
|
||||
|
||||
@@ -5,13 +5,12 @@
|
||||
lib,
|
||||
gnugrep,
|
||||
gnused,
|
||||
curl,
|
||||
curl-impersonate,
|
||||
catt,
|
||||
syncplay,
|
||||
openssl,
|
||||
ffmpeg,
|
||||
fzf,
|
||||
aria2,
|
||||
yt-dlp,
|
||||
mpv,
|
||||
vlc,
|
||||
iina,
|
||||
@@ -28,28 +27,30 @@ in
|
||||
|
||||
stdenvNoCC.mkDerivation (finalAttrs: {
|
||||
pname = "ani-cli";
|
||||
version = "4.14";
|
||||
version = "5.0";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "pystardust";
|
||||
repo = "ani-cli";
|
||||
tag = "v${finalAttrs.version}";
|
||||
hash = "sha256-OyCKDN89sBz59+3JncMDyNOq8UMqqjara+A0Owo3oko=";
|
||||
hash = "sha256-rRQESi0Skoyf1jy/dRRK6ooKRPQhkak107kk5ulwZYI=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [ makeWrapper ];
|
||||
runtimeInputs = [
|
||||
openssl
|
||||
gnugrep
|
||||
gnused
|
||||
curl
|
||||
curl-impersonate
|
||||
fzf
|
||||
ffmpeg
|
||||
aria2
|
||||
yt-dlp
|
||||
]
|
||||
++ lib.optional chromecastSupport catt
|
||||
++ lib.optional syncSupport syncplay;
|
||||
|
||||
strictDeps = true;
|
||||
__structuredAttrs = true;
|
||||
|
||||
installPhase = ''
|
||||
runHook preInstall
|
||||
|
||||
|
||||
@@ -70,6 +70,8 @@ buildNpmPackage {
|
||||
npmInstallFlags = [ "--only-production" ];
|
||||
|
||||
installPhase = ''
|
||||
runHook preInstall
|
||||
|
||||
mkdir -p $out/opt/client
|
||||
cp -r index.js server package* node_modules $out/opt/
|
||||
cp -r ${client}/lib/node_modules/audiobookshelf-client/dist $out/opt/client/dist
|
||||
@@ -79,6 +81,8 @@ buildNpmPackage {
|
||||
echo " exec ${nodejs_22}/bin/node $out/opt/index.js" >> $out/bin/audiobookshelf
|
||||
|
||||
chmod +x $out/bin/audiobookshelf
|
||||
|
||||
runHook postInstall
|
||||
'';
|
||||
|
||||
passthru = {
|
||||
|
||||
@@ -29,11 +29,11 @@
|
||||
|
||||
stdenv.mkDerivation (finalAttrs: {
|
||||
pname = "bind";
|
||||
version = "9.20.23";
|
||||
version = "9.20.26";
|
||||
|
||||
src = fetchurl {
|
||||
url = "https://downloads.isc.org/isc/bind9/${finalAttrs.version}/bind-${finalAttrs.version}.tar.xz";
|
||||
hash = "sha256-XUR1rtP55QDvVUsrFNlyvbg9M94hSps76SkY6kaQg3E=";
|
||||
hash = "sha256-VSSN7w+HDExGs95yl46pcmFRMVFmYxiKRWTcodIL81A=";
|
||||
};
|
||||
|
||||
outputs = [
|
||||
@@ -109,31 +109,17 @@ stdenv.mkDerivation (finalAttrs: {
|
||||
|
||||
enableParallelBuilding = true;
|
||||
strictDeps = true;
|
||||
__structuredAttrs = true;
|
||||
|
||||
doCheck = false;
|
||||
# TODO: investigate failures; see this and linked discussions:
|
||||
# https://github.com/NixOS/nixpkgs/pull/192962
|
||||
/*
|
||||
doCheck = with stdenv.hostPlatform; !isStatic && !(isAarch64 && isLinux)
|
||||
# https://gitlab.isc.org/isc-projects/bind9/-/issues/4269
|
||||
&& !is32bit;
|
||||
*/
|
||||
doCheck = with stdenv.hostPlatform; !isStatic && isLinux && !isLoongArch64;
|
||||
checkTarget = "unit";
|
||||
checkInputs = [
|
||||
cmocka
|
||||
]
|
||||
++ lib.optionals (!stdenv.hostPlatform.isMusl) [
|
||||
tzdata
|
||||
];
|
||||
preCheck =
|
||||
lib.optionalString stdenv.hostPlatform.isMusl ''
|
||||
# musl doesn't respect TZDIR, skip timezone-related tests
|
||||
sed -i '/^ISC_TEST_ENTRY(isc_time_formatISO8601L/d' tests/isc/time_test.c
|
||||
''
|
||||
+ lib.optionalString stdenv.hostPlatform.isDarwin ''
|
||||
# Test timeouts on Darwin
|
||||
sed -i '/^ISC_TEST_ENTRY(tcpdns_recv_one/d' tests/isc/netmgr_test.c
|
||||
'';
|
||||
preCheck = ''
|
||||
# skip timezone-related tests, they are flaky inside the nix sandbox
|
||||
sed -i '/^ISC_TEST_ENTRY(isc_time_formatISO8601L/d' tests/isc/time_test.c
|
||||
'';
|
||||
|
||||
postFixup = ''
|
||||
remove-references-to -t "$out" "$dnsutils/bin/delv"
|
||||
@@ -166,7 +152,7 @@ stdenv.mkDerivation (finalAttrs: {
|
||||
changelog = "https://downloads.isc.org/isc/bind9/cur/${lib.versions.majorMinor finalAttrs.version}/doc/arm/html/notes.html#notes-for-bind-${
|
||||
lib.replaceStrings [ "." ] [ "-" ] finalAttrs.version
|
||||
}";
|
||||
maintainers = [ ];
|
||||
maintainers = with lib.maintainers; [ bartoostveen ];
|
||||
platforms = lib.platforms.unix;
|
||||
|
||||
outputsToInstall = [
|
||||
|
||||
@@ -19,16 +19,16 @@
|
||||
|
||||
rustPlatform.buildRustPackage (finalAttrs: {
|
||||
pname = "gelly";
|
||||
version = "1.9.4";
|
||||
version = "1.9.5";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "Fingel";
|
||||
repo = "gelly";
|
||||
tag = "v${finalAttrs.version}";
|
||||
hash = "sha256-GYMLV4hffaIbqUp1b5ERo2QQqiKRlHe9oXfq+wNH/hM=";
|
||||
hash = "sha256-k6LgXEK5xoVrjiXCkYnFgC7Hs7oz+v3Kz47CELPqN9Q=";
|
||||
};
|
||||
|
||||
cargoHash = "sha256-CsmcXlkOec/KJ59Ng7MyGsfjWQ80YyV6MztRFULmvDA=";
|
||||
cargoHash = "sha256-RbOs5CEj3KRe6F1RJSGx97wBoQKSynx+iza929ipfjA=";
|
||||
|
||||
nativeBuildInputs = [
|
||||
pkg-config
|
||||
|
||||
@@ -9,7 +9,7 @@
|
||||
|
||||
rustPlatform.buildRustPackage (finalAttrs: {
|
||||
pname = "jocalsend";
|
||||
version = "1.618033988";
|
||||
version = "1.6180339887";
|
||||
|
||||
__structuredAttrs = true;
|
||||
|
||||
@@ -18,10 +18,10 @@ rustPlatform.buildRustPackage (finalAttrs: {
|
||||
owner = "nebkor";
|
||||
repo = "joecalsend";
|
||||
tag = finalAttrs.version;
|
||||
hash = "sha256-nzsvVC1e8ENh0bpQwiogGew823NNmSNXN+VZZHfVFIY=";
|
||||
hash = "sha256-sOgFOAJXX5mugjMfTICNrJHc/DRD5zdZsg/K4cbRjlQ=";
|
||||
};
|
||||
|
||||
cargoHash = "sha256-5V/a6rj08Ucu6S+SBukYQktWLVnnbXeoGan1oYTozHc=";
|
||||
cargoHash = "sha256-UEzyy6SQ3ntJHeXivd6e8Xvr4aTdpfYrFMWqLjoBrJc=";
|
||||
|
||||
nativeBuildInputs = [
|
||||
pkg-config
|
||||
|
||||
@@ -0,0 +1,250 @@
|
||||
From d25c12c343b53ea90025c11808700ad6267f4e59 Mon Sep 17 00:00:00 2001
|
||||
From: timedout <git@nexy7574.co.uk>
|
||||
Date: Wed, 29 Jul 2026 16:38:05 +0100
|
||||
Subject: [PATCH] fix(backport): SEC10
|
||||
|
||||
Reviewed-By: Ginger <ginger@gingershaped.computer>
|
||||
Co-Authored-By: Erwan Leboucher <erwanleboucher@gmail.com>
|
||||
|
||||
(cherry picked from commit 71016a0d7f79289f3bf8d7816c1fec3c85c43153)
|
||||
---
|
||||
src/api/client/sync/v5.rs | 133 +++++++++++++++++++++++++++++++-------
|
||||
1 file changed, 111 insertions(+), 22 deletions(-)
|
||||
|
||||
diff --git a/src/api/client/sync/v5.rs b/src/api/client/sync/v5.rs
|
||||
index 183f3aaac..03a4c1972 100644
|
||||
--- a/src/api/client/sync/v5.rs
|
||||
+++ b/src/api/client/sync/v5.rs
|
||||
@@ -1,6 +1,6 @@
|
||||
use std::{
|
||||
cmp::{self, Ordering},
|
||||
- collections::{BTreeMap, BTreeSet, HashMap, HashSet, VecDeque},
|
||||
+ collections::{BTreeMap, BTreeSet, HashMap, HashSet},
|
||||
ops::Deref,
|
||||
time::Duration,
|
||||
};
|
||||
@@ -28,6 +28,7 @@
|
||||
use ruma::{
|
||||
DeviceId, OwnedEventId, OwnedRoomId, RoomId, UInt, UserId,
|
||||
api::client::sync::sync_events::{self, DeviceLists, UnreadNotificationsCount},
|
||||
+ assign,
|
||||
directory::RoomTypeFilter,
|
||||
events::{
|
||||
AnyRawAccountDataEvent, AnySyncEphemeralRoomEvent, AnySyncStateEvent, StateEventType,
|
||||
@@ -139,6 +140,13 @@ pub(crate) async fn sync_events_v5_route(
|
||||
let (all_joined_rooms, all_invited_rooms, all_knocked_rooms) =
|
||||
join3(all_joined_rooms, all_invited_rooms, all_knocked_rooms).await;
|
||||
|
||||
+ let allowed_rooms: BTreeSet<OwnedRoomId> = all_joined_rooms
|
||||
+ .iter()
|
||||
+ .chain(all_invited_rooms.iter())
|
||||
+ .chain(all_knocked_rooms.iter())
|
||||
+ .cloned()
|
||||
+ .collect();
|
||||
+
|
||||
let all_joined_rooms = all_joined_rooms.iter().map(AsRef::as_ref);
|
||||
let all_invited_rooms = all_invited_rooms.iter().map(AsRef::as_ref);
|
||||
let all_knocked_rooms = all_knocked_rooms.iter().map(AsRef::as_ref);
|
||||
@@ -192,13 +200,14 @@ pub(crate) async fn sync_events_v5_route(
|
||||
)
|
||||
.await;
|
||||
|
||||
- fetch_subscriptions(services, sync_info, &known_rooms, &mut todo_rooms).await;
|
||||
+ fetch_subscriptions(services, sync_info, &known_rooms, &allowed_rooms, &mut todo_rooms).await;
|
||||
|
||||
response.rooms = process_rooms(
|
||||
services,
|
||||
sender_user,
|
||||
next_batch,
|
||||
all_invited_rooms.clone(),
|
||||
+ all_knocked_rooms.clone(),
|
||||
&todo_rooms,
|
||||
&mut response,
|
||||
&body,
|
||||
@@ -208,6 +217,7 @@ pub(crate) async fn sync_events_v5_route(
|
||||
if response.rooms.iter().all(|(id, r)| {
|
||||
r.timeline.is_empty()
|
||||
&& r.required_state.is_empty()
|
||||
+ && r.invite_state.is_none()
|
||||
&& !response.extensions.receipts.rooms.contains_key(id)
|
||||
}) && response
|
||||
.extensions
|
||||
@@ -238,10 +248,17 @@ async fn fetch_subscriptions(
|
||||
services: &Services,
|
||||
(sender_user, sender_device, globalsince, body): SyncInfo<'_>,
|
||||
known_rooms: &KnownRooms,
|
||||
+ allowed_rooms: &BTreeSet<OwnedRoomId>,
|
||||
todo_rooms: &mut TodoRooms,
|
||||
) {
|
||||
let mut known_subscription_rooms = BTreeSet::new();
|
||||
for (room_id, room) in &body.room_subscriptions {
|
||||
+ // Silently ignore subscriptions to rooms the user is not a member of
|
||||
+ // (joined or invited).
|
||||
+ if !allowed_rooms.contains(room_id) {
|
||||
+ continue;
|
||||
+ }
|
||||
+
|
||||
let not_exists = services.rooms.metadata.exists(room_id).eq(&false);
|
||||
|
||||
let is_disabled = services.rooms.metadata.is_disabled(room_id);
|
||||
@@ -399,11 +416,13 @@ async fn handle_lists<'a, Rooms, AllRooms>(
|
||||
BTreeMap::default()
|
||||
}
|
||||
|
||||
+#[allow(clippy::too_many_arguments)]
|
||||
async fn process_rooms<'a, Rooms>(
|
||||
services: &Services,
|
||||
sender_user: &UserId,
|
||||
next_batch: u64,
|
||||
all_invited_rooms: Rooms,
|
||||
+ all_knocked_rooms: Rooms,
|
||||
todo_rooms: &TodoRooms,
|
||||
response: &mut sync_events::v5::Response,
|
||||
body: &sync_events::v5::Request,
|
||||
@@ -416,38 +435,99 @@ async fn process_rooms<'a, Rooms>(
|
||||
let roomsincecount = PduCount::Normal(*roomsince);
|
||||
|
||||
let mut timestamp: Option<_> = None;
|
||||
- let mut invite_state = None;
|
||||
let (timeline_pdus, limited);
|
||||
let new_room_id: &RoomId = (*room_id).as_ref();
|
||||
if all_invited_rooms.clone().any(is_equal_to!(new_room_id)) {
|
||||
+ let Ok(invite_count) = services
|
||||
+ .rooms
|
||||
+ .state_cache
|
||||
+ .get_invite_count(room_id, sender_user)
|
||||
+ .await
|
||||
+ else {
|
||||
+ continue;
|
||||
+ };
|
||||
+
|
||||
+ if *roomsince >= invite_count {
|
||||
+ continue;
|
||||
+ }
|
||||
+
|
||||
// TODO: figure out a timestamp we can use for remote invites
|
||||
- invite_state = services
|
||||
+ let invite_state = services
|
||||
.rooms
|
||||
.state_cache
|
||||
.invite_state(sender_user, room_id)
|
||||
.await
|
||||
.ok();
|
||||
|
||||
- (timeline_pdus, limited) = (VecDeque::new(), true);
|
||||
- } else {
|
||||
- TimelinePdus { pdus: timeline_pdus, limited } = match load_timeline(
|
||||
- services,
|
||||
- sender_user,
|
||||
- room_id,
|
||||
- Some(roomsincecount),
|
||||
- Some(PduCount::from(next_batch)),
|
||||
- *timeline_limit,
|
||||
- )
|
||||
- .await
|
||||
- {
|
||||
- | Ok(value) => value,
|
||||
- | Err(err) => {
|
||||
- warn!("Encountered missing timeline in {}, error {}", room_id, err);
|
||||
- continue;
|
||||
- },
|
||||
+ rooms.insert(room_id.clone(), sync_events::v5::response::Room {
|
||||
+ initial: Some(roomsince == &0),
|
||||
+ invite_state,
|
||||
+ limited: true,
|
||||
+ ..Default::default()
|
||||
+ });
|
||||
+ continue;
|
||||
+ }
|
||||
+
|
||||
+ if all_knocked_rooms.clone().any(is_equal_to!(new_room_id)) {
|
||||
+ let Ok(knock_count) = services
|
||||
+ .rooms
|
||||
+ .state_cache
|
||||
+ .get_knock_count(room_id, sender_user)
|
||||
+ .await
|
||||
+ else {
|
||||
+ continue;
|
||||
};
|
||||
+
|
||||
+ if *roomsince >= knock_count {
|
||||
+ continue;
|
||||
+ }
|
||||
+
|
||||
+ let Ok(knock_state) = services
|
||||
+ .rooms
|
||||
+ .state_cache
|
||||
+ .knock_state(sender_user, room_id)
|
||||
+ .await
|
||||
+ else {
|
||||
+ continue;
|
||||
+ };
|
||||
+
|
||||
+ rooms.insert(
|
||||
+ room_id.clone(),
|
||||
+ assign!(sync_events::v5::response::Room::new(), {
|
||||
+ initial: Some(roomsince == &0),
|
||||
+ invite_state: Some(knock_state),
|
||||
+ limited: true,
|
||||
+ }),
|
||||
+ );
|
||||
+ continue;
|
||||
+ }
|
||||
+
|
||||
+ if !services
|
||||
+ .rooms
|
||||
+ .state_cache
|
||||
+ .is_joined(sender_user, room_id)
|
||||
+ .await
|
||||
+ {
|
||||
+ continue;
|
||||
}
|
||||
|
||||
+ TimelinePdus { pdus: timeline_pdus, limited } = match load_timeline(
|
||||
+ services,
|
||||
+ sender_user,
|
||||
+ room_id,
|
||||
+ Some(roomsincecount),
|
||||
+ Some(PduCount::from(next_batch)),
|
||||
+ *timeline_limit,
|
||||
+ )
|
||||
+ .await
|
||||
+ {
|
||||
+ | Ok(value) => value,
|
||||
+ | Err(err) => {
|
||||
+ warn!("Encountered missing timeline in {}, error {}", room_id, err);
|
||||
+ continue;
|
||||
+ },
|
||||
+ };
|
||||
+
|
||||
if body.extensions.account_data.enabled == Some(true) {
|
||||
response.extensions.account_data.rooms.insert(
|
||||
room_id.to_owned(),
|
||||
@@ -627,7 +707,7 @@ async fn process_rooms<'a, Rooms>(
|
||||
},
|
||||
initial: Some(roomsince == &0),
|
||||
is_dm: None,
|
||||
- invite_state,
|
||||
+ invite_state: None,
|
||||
unread_notifications: UnreadNotificationsCount {
|
||||
highlight_count: Some(
|
||||
services
|
||||
@@ -753,6 +833,15 @@ async fn collect_typing_events(
|
||||
|
||||
let mut typing_response = sync_events::v5::response::Typing::default();
|
||||
for (room_id, (_, _, roomsince)) in todo_rooms {
|
||||
+ if !services
|
||||
+ .rooms
|
||||
+ .state_cache
|
||||
+ .is_joined(sender_user, room_id)
|
||||
+ .await
|
||||
+ {
|
||||
+ continue;
|
||||
+ }
|
||||
+
|
||||
if services.rooms.typing.last_typing_update(room_id).await? <= *roomsince {
|
||||
continue;
|
||||
}
|
||||
--
|
||||
2.55.0
|
||||
|
||||
@@ -50,6 +50,10 @@ rustPlatform.buildRustPackage (finalAttrs: {
|
||||
|
||||
cargoHash = "sha256-uvMiFURXxkLbbbwq4pG5hevsLZHQ1wVfTNvzQRTQWxE=";
|
||||
|
||||
patches = [
|
||||
./0001-fix-backport-SEC10.patch
|
||||
];
|
||||
|
||||
nativeBuildInputs = [
|
||||
pkg-config
|
||||
rustPlatform.bindgenHook
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
lib,
|
||||
stdenv,
|
||||
callPackage,
|
||||
rustPlatform,
|
||||
fetchFromGitHub,
|
||||
pkg-config,
|
||||
@@ -8,54 +8,26 @@
|
||||
sqlite,
|
||||
testers,
|
||||
moonfire-nvr,
|
||||
nodejs,
|
||||
pnpm_9,
|
||||
fetchPnpmDeps,
|
||||
pnpmConfigHook,
|
||||
nix-update,
|
||||
writeShellApplication,
|
||||
}:
|
||||
|
||||
let
|
||||
rustPlatform.buildRustPackage (finalAttrs: {
|
||||
pname = "moonfire-nvr";
|
||||
version = "0.7.20";
|
||||
version = "0.7.31";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "scottlamb";
|
||||
repo = "moonfire-nvr";
|
||||
tag = "v${version}";
|
||||
hash = "sha256-0EaGqZUmYGxLHcJAhlbG2wZMDiVv8U1bcTQqMx0aTo0=";
|
||||
tag = "v${finalAttrs.version}";
|
||||
hash = "sha256-QgsaiWcXeU4y7z9mcqUAl4mQ/M4p38yRjOB/4MKlpVA=";
|
||||
};
|
||||
ui = stdenv.mkDerivation (finalAttrs: {
|
||||
inherit version src;
|
||||
pname = "${pname}-ui";
|
||||
sourceRoot = "${src.name}/ui";
|
||||
nativeBuildInputs = [
|
||||
nodejs
|
||||
pnpmConfigHook
|
||||
pnpm_9
|
||||
];
|
||||
pnpmDeps = fetchPnpmDeps {
|
||||
inherit (finalAttrs) pname version src;
|
||||
pnpm = pnpm_9;
|
||||
sourceRoot = "${finalAttrs.src.name}/ui";
|
||||
fetcherVersion = 3;
|
||||
hash = "sha256-1bkuou8jfWqdev4ZlpqvC4BRrFj//LK6ImVvSeMUEuM=";
|
||||
};
|
||||
installPhase = ''
|
||||
runHook preInstall
|
||||
|
||||
cp -r public $out
|
||||
sourceRoot = "${finalAttrs.src.name}/server";
|
||||
|
||||
runHook postInstall
|
||||
'';
|
||||
});
|
||||
in
|
||||
rustPlatform.buildRustPackage {
|
||||
inherit pname version src;
|
||||
cargoHash = "sha256-TDFe5pD+8eSwvw0h9GLM+JfODlSBU1CO8fw4FVjy8xk=";
|
||||
|
||||
sourceRoot = "${src.name}/server";
|
||||
|
||||
cargoHash = "sha256-+L4XofUFvhJDPGv4fAGYXFNpuNd01k/P63LH2tXXHE0=";
|
||||
|
||||
env.VERSION = "v${version}";
|
||||
env.VERSION = "v${finalAttrs.version}";
|
||||
|
||||
nativeBuildInputs = [
|
||||
pkg-config
|
||||
@@ -68,26 +40,40 @@ rustPlatform.buildRustPackage {
|
||||
|
||||
postInstall = ''
|
||||
mkdir -p $out/lib
|
||||
ln -s ${ui} $out/lib/ui
|
||||
ln -s ${moonfire-nvr.ui} $out/lib/ui
|
||||
'';
|
||||
|
||||
doCheck = false;
|
||||
|
||||
passthru = {
|
||||
inherit ui;
|
||||
ui = callPackage ./ui.nix { };
|
||||
tests.version = testers.testVersion {
|
||||
package = moonfire-nvr;
|
||||
command = "moonfire-nvr --version";
|
||||
version = "Version: v${version}";
|
||||
version = "Version: v${finalAttrs.version}";
|
||||
};
|
||||
updateScript = lib.getExe (writeShellApplication {
|
||||
name = "update-moonfire-nvr";
|
||||
|
||||
runtimeInputs = [
|
||||
nix-update
|
||||
];
|
||||
|
||||
text = ''
|
||||
set -euo pipefail
|
||||
|
||||
nix-update moonfire-nvr
|
||||
nix-update moonfire-nvr.ui --version=skip
|
||||
'';
|
||||
});
|
||||
};
|
||||
|
||||
meta = {
|
||||
description = "Moonfire NVR, a security camera network video recorder";
|
||||
homepage = "https://github.com/scottlamb/moonfire-nvr";
|
||||
changelog = "https://github.com/scottlamb/moonfire-nvr/releases/tag/v${version}";
|
||||
changelog = "https://github.com/scottlamb/moonfire-nvr/releases/tag/${finalAttrs.src.tag}";
|
||||
license = lib.licenses.gpl3Only;
|
||||
maintainers = [ ];
|
||||
mainProgram = "moonfire-nvr";
|
||||
};
|
||||
}
|
||||
})
|
||||
|
||||
41
pkgs/by-name/mo/moonfire-nvr/ui.nix
Normal file
41
pkgs/by-name/mo/moonfire-nvr/ui.nix
Normal file
@@ -0,0 +1,41 @@
|
||||
{
|
||||
stdenv,
|
||||
moonfire-nvr,
|
||||
nodejs,
|
||||
pnpmConfigHook,
|
||||
pnpm_10,
|
||||
fetchPnpmDeps,
|
||||
}:
|
||||
|
||||
stdenv.mkDerivation (finalAttrs: {
|
||||
pname = "moonfire-nvr-ui";
|
||||
inherit (moonfire-nvr) version src;
|
||||
|
||||
sourceRoot = "${finalAttrs.src.name}/ui";
|
||||
|
||||
nativeBuildInputs = [
|
||||
nodejs
|
||||
pnpmConfigHook
|
||||
pnpm_10
|
||||
];
|
||||
|
||||
pnpmDeps = fetchPnpmDeps {
|
||||
inherit (finalAttrs) pname version src;
|
||||
pnpm = pnpm_10;
|
||||
sourceRoot = "${finalAttrs.src.name}/ui";
|
||||
fetcherVersion = 4;
|
||||
hash = "sha256-U/SHOVlx0kj1hfl09KcPg3CQZX9HZE5SghVEThWL1RA=";
|
||||
};
|
||||
|
||||
installPhase = ''
|
||||
runHook preInstall
|
||||
|
||||
cp -r public $out
|
||||
|
||||
runHook postInstall
|
||||
'';
|
||||
|
||||
meta = moonfire-nvr.meta // {
|
||||
description = "Moonfire UI";
|
||||
};
|
||||
})
|
||||
@@ -1,38 +1,37 @@
|
||||
{
|
||||
lib,
|
||||
fetchFromGitHub,
|
||||
curl,
|
||||
xclip,
|
||||
wl-clipboard,
|
||||
stdenv,
|
||||
buildLua,
|
||||
unstableGitUpdater,
|
||||
fetchFromGitHub,
|
||||
gitUpdater,
|
||||
stdenv,
|
||||
curl,
|
||||
wl-clipboard,
|
||||
xclip,
|
||||
}:
|
||||
buildLua {
|
||||
buildLua (finalAttrs: {
|
||||
pname = "videoclip";
|
||||
version = "0.2-unstable-2026-05-31";
|
||||
version = "26.7.30.0";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "Ajatt-Tools";
|
||||
repo = "videoclip";
|
||||
rev = "d9a3e0966b238b824b86767956eb44a11ac367c6";
|
||||
hash = "sha256-NZaflGehxoIf9eY3/p9WrKXXQj3x6GDZ6iMLeu5BhPc=";
|
||||
tag = "v${finalAttrs.version}";
|
||||
hash = "sha256-4ptnF3/L3U0CDucYcd8/O5EN1mUtnor+iXLRXbiC7os=";
|
||||
};
|
||||
|
||||
patchPhase = ''
|
||||
substituteInPlace platform.lua \
|
||||
--replace \'curl\' \'${lib.getExe curl}\' \
|
||||
postPatch = ''
|
||||
substituteInPlace videoclip/platform.lua \
|
||||
--replace-fail "'curl'" "'${lib.getExe curl}'"
|
||||
''
|
||||
+ lib.optionalString stdenv.hostPlatform.isLinux ''
|
||||
--replace xclip ${lib.getExe xclip} \
|
||||
--replace wl-copy ${lib.getExe' wl-clipboard "wl-copy"}
|
||||
substituteInPlace videoclip/platform.lua \
|
||||
--replace-fail '"wl-copy' '"${lib.getExe' wl-clipboard "wl-copy"}' \
|
||||
--replace-fail '"xclip' '"${lib.getExe xclip}'
|
||||
'';
|
||||
|
||||
scriptPath = ".";
|
||||
passthru.scriptName = "videoclip";
|
||||
passthru.updateScript = unstableGitUpdater {
|
||||
tagPrefix = "v";
|
||||
};
|
||||
scriptPath = "videoclip";
|
||||
|
||||
passthru.updateScript = gitUpdater { rev-prefix = "v"; };
|
||||
|
||||
meta = {
|
||||
description = "Easily create videoclips with mpv";
|
||||
@@ -41,4 +40,4 @@ buildLua {
|
||||
platforms = lib.platforms.all;
|
||||
maintainers = with lib.maintainers; [ BatteredBunny ];
|
||||
};
|
||||
}
|
||||
})
|
||||
|
||||
@@ -31,11 +31,11 @@ let
|
||||
in
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "nano";
|
||||
version = "9.1";
|
||||
version = "9.2";
|
||||
|
||||
src = fetchurl {
|
||||
url = "mirror://gnu/nano/nano-${version}.tar.xz";
|
||||
hash = "sha256-X0d2QnTLdTI0nOCqIOwQ8ejoUabp+j62aBLEPRltsEI=";
|
||||
hash = "sha256-Bey5kke3guils6Je1BAd0DSwI2kC90SbyXlbcXZC9+k=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [ texinfo ] ++ lib.optional enableNls gettext;
|
||||
|
||||
@@ -13,13 +13,13 @@
|
||||
buildGoModule (finalAttrs: {
|
||||
pname = "opengist";
|
||||
|
||||
version = "1.14.0";
|
||||
version = "1.15.0";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "thomiceli";
|
||||
repo = "opengist";
|
||||
tag = "v${finalAttrs.version}";
|
||||
hash = "sha256-glKhgETje+TRmwnSWJ+fVla0hsyljZLnRKcM4xi+zQ8=";
|
||||
hash = "sha256-yE9HvRFEQzv3Fhhbs9hXeLc4vudCMi+NMA2T8YUlREw=";
|
||||
};
|
||||
|
||||
frontend = buildNpmPackage {
|
||||
@@ -36,10 +36,10 @@ buildGoModule (finalAttrs: {
|
||||
cp -R public $out
|
||||
'';
|
||||
|
||||
npmDepsHash = "sha256-Zz6qoqTV/O73OrBL7ry1VXK9nF6Eb6QeqcefLpyMN1c=";
|
||||
npmDepsHash = "sha256-hAG0vGjG+ejumjoslYs/UnYBImZDNsTQUDtssT0X/HI=";
|
||||
};
|
||||
|
||||
vendorHash = "sha256-J4JMOCj7S8N0kX7VBZmrAiPuXjWur+MIkS8pMVmkLbs=";
|
||||
vendorHash = "sha256-YU1OdYM9GzUGHypgIhWvJCvYEzlKsaKGN0NZRBfT8FY=";
|
||||
|
||||
tags = [ "fs_embed" ];
|
||||
|
||||
|
||||
16
pkgs/by-name/pr/proxysql/btree-cstdint.patch
Normal file
16
pkgs/by-name/pr/proxysql/btree-cstdint.patch
Normal file
@@ -0,0 +1,16 @@
|
||||
The vendored copy of Google's cpp-btree relies on <cstdint> being pulled in
|
||||
transitively. libstdc++ 15 no longer does so, which makes uint8_t/uint16_t
|
||||
undeclared, and the resulting fallback to int trips the kNodeValues
|
||||
COMPILE_ASSERT with a "1 << 32" shift.
|
||||
|
||||
diff --git a/include/btree.h b/include/btree.h
|
||||
--- a/include/btree.h
|
||||
+++ b/include/btree.h
|
||||
@@ -104,6 +104,7 @@
|
||||
#include <stddef.h>
|
||||
#include <string.h>
|
||||
#include <sys/types.h>
|
||||
+#include <cstdint>
|
||||
#include <algorithm>
|
||||
#include <functional>
|
||||
#include <iostream>
|
||||
@@ -151,7 +151,7 @@ index 87d2a20e..505e069a 100644
|
||||
cd mariadb-client-library && tar -zxf mariadb-connector-c-3.3.8-src.tar.gz
|
||||
cd mariadb-client-library/mariadb_client && patch -p0 < ../plugin_auth_CMakeLists.txt.patch
|
||||
- cd mariadb-client-library/mariadb_client && cmake . -Wno-dev -DCMAKE_BUILD_TYPE=RelWithDebInfo -DOPENSSL_ROOT_DIR=$(SSL_IDIR) -DOPENSSL_LIBRARIES=$(SSL_LDIR) -DICONV_LIBRARIES=$(brew --prefix libiconv)/lib -DICONV_INCLUDE=$(brew --prefix libiconv)/include .
|
||||
+ cd mariadb-client-library/mariadb_client && cmake . -Wno-dev -DCMAKE_POLICY_VERSION_MINIMUM=3.5 -DCMAKE_BUILD_TYPE=RelWithDebInfo -DOPENSSL_ROOT_DIR=$(SSL_IDIR) -DOPENSSL_LIBRARIES=$(SSL_LDIR) -DICONV_LIBRARIES=$(brew --prefix libiconv)/lib -DICONV_INCLUDE=$(brew --prefix libiconv)/include .
|
||||
+ cd mariadb-client-library/mariadb_client && cmake . -Wno-dev -DCMAKE_POLICY_VERSION_MINIMUM=3.5 -DCMAKE_C_FLAGS=-std=gnu17 -DCMAKE_BUILD_TYPE=RelWithDebInfo -DOPENSSL_ROOT_DIR=$(SSL_IDIR) -DOPENSSL_LIBRARIES=$(SSL_LDIR) -DICONV_LIBRARIES=$(brew --prefix libiconv)/lib -DICONV_INCLUDE=$(brew --prefix libiconv)/include .
|
||||
ifeq ($(PROXYDEBUG),1)
|
||||
cd mariadb-client-library/mariadb_client && patch -p0 < ../ma_context.h.patch
|
||||
else ifeq ($(USEVALGRIND),1)
|
||||
|
||||
@@ -49,6 +49,7 @@ stdenv.mkDerivation (finalAttrs: {
|
||||
patches = [
|
||||
./makefiles.patch
|
||||
./dont-phone-home.patch
|
||||
./btree-cstdint.patch
|
||||
];
|
||||
|
||||
nativeBuildInputs = [
|
||||
|
||||
@@ -13,15 +13,15 @@
|
||||
|
||||
rustPlatform.buildRustPackage (finalAttrs: {
|
||||
pname = "rust-analyzer-unwrapped";
|
||||
version = "2026-04-27";
|
||||
version = "2026-06-01";
|
||||
|
||||
cargoHash = "sha256-QXEJhBzKof1UONW2FwQUeO6UAo1Xfm2nPpOo1uNiRM8=";
|
||||
cargoHash = "sha256-5njpo8AKVOSgCFwuqTL9sVODyjgsEfg5kHI3qM0DK9k=";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "rust-lang";
|
||||
repo = "rust-analyzer";
|
||||
rev = finalAttrs.version;
|
||||
hash = "sha256-f8YJfwAOsLFpIoqZuX3yF69UvMLrkx7iVzMH1pJU7cM=";
|
||||
hash = "sha256-yJIyzYb6LhvbVMmj2EH62Mt0JHU3pQefr+oPEgaoaI8=";
|
||||
};
|
||||
|
||||
cargoBuildFlags = [
|
||||
|
||||
@@ -10,16 +10,16 @@
|
||||
|
||||
buildGoModule (finalAttrs: {
|
||||
pname = "sing-box";
|
||||
version = "1.13.15";
|
||||
version = "1.13.16";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "SagerNet";
|
||||
repo = "sing-box";
|
||||
tag = "v${finalAttrs.version}";
|
||||
hash = "sha256-YkbF5+smzP+AQ161xvTBO01ZIB3PonHVM0l5DVRSnFs=";
|
||||
hash = "sha256-GAIU0SRvxU92E40zCkMsiSPuIEIUZM5vORN2u2XIhqs=";
|
||||
};
|
||||
|
||||
vendorHash = "sha256-HIMKtolVXbmyV1vmXXAt3O/2NTp4HwzhUWChs8I4+cs=";
|
||||
vendorHash = "sha256-ZUEpYfgb/iflImVCdLIgUzfp4QY9ho1gYkIAJV1tXrg=";
|
||||
|
||||
tags = [
|
||||
"with_gvisor"
|
||||
|
||||
@@ -7,14 +7,14 @@
|
||||
}:
|
||||
python3Packages.buildPythonApplication {
|
||||
pname = "tabbyapi";
|
||||
version = "0-unstable-2026-07-18";
|
||||
version = "0-unstable-2026-07-31";
|
||||
pyproject = true;
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "theroyallab";
|
||||
repo = "tabbyAPI";
|
||||
rev = "0158fb48d76546a6475d1d63f6cd5b90932d1d11";
|
||||
hash = "sha256-Bkpx3MyZg7Np5zXAsq8mgxdAFsHUZhy2NZ93XSLbJgk=";
|
||||
rev = "29680f496b57e3ed1a496c580677d2d67ac729b8";
|
||||
hash = "sha256-eB8Q4iVlNCrgHHWutuhxzD+bQfC5Yx3z2rSCCSFsrL4=";
|
||||
};
|
||||
|
||||
build-system = with python3Packages; [
|
||||
|
||||
@@ -9,16 +9,16 @@
|
||||
|
||||
buildNpmPackage (finalAttrs: {
|
||||
pname = "uptime-kuma";
|
||||
version = "2.4.0";
|
||||
version = "2.5.0";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "louislam";
|
||||
repo = "uptime-kuma";
|
||||
tag = finalAttrs.version;
|
||||
hash = "sha256-iqkf9/UAQOnSA+nncK/fmjbqZpIQeUmigI/78m5qKrM=";
|
||||
hash = "sha256-C9XBPhCQNU5y2C9svsieiC0FTMdW9sJQI2OeiCjqte8=";
|
||||
};
|
||||
|
||||
npmDepsHash = "sha256-chvykBfnARLto+Il9gumm6UTRSTPPBjg5pj4yGFiOcg=";
|
||||
npmDepsHash = "sha256-qe8qK0bWYFyzClrMNAXdxuqrBIn14Xf3oN40ch1cqnY=";
|
||||
|
||||
patches = [
|
||||
# Fixes the permissions of the database being not set correctly
|
||||
|
||||
@@ -1,15 +1,15 @@
|
||||
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
|
||||
index 92c50e4e..67a306eb 100644
|
||||
index ddf8750c..655c9a7d 100644
|
||||
--- a/pnpm-lock.yaml
|
||||
+++ b/pnpm-lock.yaml
|
||||
@@ -162,8 +162,8 @@ importers:
|
||||
specifier: ^22.13.4
|
||||
version: 22.13.13
|
||||
@@ -160,8 +160,8 @@ importers:
|
||||
specifier: ^26.0.1
|
||||
version: 26.0.1
|
||||
'@types/react':
|
||||
- specifier: 18.3.1
|
||||
- version: 18.3.1
|
||||
+ specifier: 19.0.12
|
||||
+ version: 19.0.12
|
||||
+ specifier: 19.1.0
|
||||
+ version: 19.1.0
|
||||
'@types/react-dom':
|
||||
specifier: 18.3.1
|
||||
version: 18.3.1
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
lib,
|
||||
nix-update,
|
||||
nodejs,
|
||||
pnpm_10,
|
||||
pnpm_11,
|
||||
fetchPnpmDeps,
|
||||
pnpmConfigHook,
|
||||
stdenv,
|
||||
@@ -18,24 +18,24 @@
|
||||
buildWebExtension ? false,
|
||||
}:
|
||||
let
|
||||
pnpm = pnpm_10;
|
||||
pnpm = pnpm_11;
|
||||
in
|
||||
stdenv.mkDerivation (finalAttrs: {
|
||||
pname = "vencord";
|
||||
version = "1.14.15";
|
||||
version = "1.15.0";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "Vendicated";
|
||||
repo = "Vencord";
|
||||
tag = "v${finalAttrs.version}";
|
||||
hash = "sha256-jQeLZa1rpKDkzWSpAqOa8snGRKLpv9xf9cwJ6hUwMzA=";
|
||||
hash = "sha256-z3EY/nc9pHPjuMteY8ubYM3sqgjASznEG6B1U4mNCU4=";
|
||||
};
|
||||
|
||||
patches = [ ./fix-deps.patch ];
|
||||
|
||||
postPatch = ''
|
||||
substituteInPlace packages/vencord-types/package.json \
|
||||
--replace-fail '"@types/react": "18.3.1"' '"@types/react": "19.0.12"'
|
||||
--replace-fail '"@types/react": "18.3.1"' '"@types/react": "19.1.0"'
|
||||
'';
|
||||
|
||||
pnpmDeps = fetchPnpmDeps {
|
||||
@@ -47,7 +47,7 @@ stdenv.mkDerivation (finalAttrs: {
|
||||
;
|
||||
inherit pnpm;
|
||||
fetcherVersion = 4;
|
||||
hash = "sha256-pm5f6bGm07pzNCqpDHRyKFnuX2ZTE5w9BtJu5xXPHiI=";
|
||||
hash = "sha256-JmTSfUVHsMG0TcOwXkZWinRxpONZagtwKzESd8Q4LlQ=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [
|
||||
|
||||
@@ -10,17 +10,17 @@
|
||||
|
||||
rustPlatform.buildRustPackage (finalAttrs: {
|
||||
pname = "zsh-patina";
|
||||
version = "1.7.0";
|
||||
version = "1.9.0";
|
||||
__structuredAttrs = true;
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "michel-kraemer";
|
||||
repo = "zsh-patina";
|
||||
tag = finalAttrs.version;
|
||||
hash = "sha256-sPlIT3UHtq+5+bpfrSPPfVXTdmqjEq+6k9tPShhG7h0=";
|
||||
hash = "sha256-WVlv+bYFTQ3RG3m2NnG13kMoslXzcPr8CpFWwAOcNBA=";
|
||||
};
|
||||
|
||||
cargoHash = "sha256-j2MwEwQhSCUCwANAxr0aZjJ9iS0cGzRRttfK8LONEpg=";
|
||||
cargoHash = "sha256-A946sab9GDBdoNAWH7AN10lEhHNnHnCnNzQgnEcQ8QI=";
|
||||
|
||||
nativeBuildInputs = [ installShellFiles ];
|
||||
postInstall = ''
|
||||
|
||||
@@ -27,10 +27,18 @@ let
|
||||
"20.1.8".officialRelease.sha256 = "sha256-ysyB/EYxi2qE9fD5x/F2zI4vjn8UDoo1Z9ukiIrjFGw=";
|
||||
"21.1.8".officialRelease.sha256 = "sha256-pgd8g9Yfvp7abjCCKSmIn1smAROjqtfZaJkaUkBSKW0=";
|
||||
"22.1.8".officialRelease.sha256 = "sha256-SF7wFuh4kXZTytpdgX7vUZItKtRobnVICm+ixze4iG0=";
|
||||
"23.0.0-git".gitRelease = {
|
||||
rev = "7d24dfa5f29e1794e452aadaa27f994f15568763";
|
||||
rev-version = "23.0.0-unstable-2026-07-12";
|
||||
sha256 = "sha256-mHiwOqEvqXyG6OoiVLRrhzb2MK7FqjQm9ez329ngbYw=";
|
||||
"23.1.0-rc1" = {
|
||||
gitRelease = {
|
||||
rev = "acdf320b78fcf075ddcf660b51cf18d5c0af755b";
|
||||
rev-version = "23.1.0-rc1";
|
||||
sha256 = "sha256-kSfy7IRgF/2HX5Fr3OS5LTXx7xm/iUx7tWb27e4wO+s=";
|
||||
};
|
||||
name = "23";
|
||||
};
|
||||
"24.0.0-git".gitRelease = {
|
||||
rev = "43a704b657423a0eead02e64911b413c4afca73f";
|
||||
rev-version = "24.0.0-unstable-2026-07-26";
|
||||
sha256 = "sha256-wXhYrz3g5F7iwVqgIVryfRtkQ+3lKIKRDd9D8X18dEE=";
|
||||
};
|
||||
}
|
||||
// llvmVersions;
|
||||
|
||||
@@ -27,14 +27,14 @@ let
|
||||
in
|
||||
buildPythonPackage.override { inherit (torch) stdenv; } (finalAttrs: {
|
||||
pname = "exllamav3";
|
||||
version = "1.2.1";
|
||||
version = "1.3.0";
|
||||
pyproject = true;
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "turboderp-org";
|
||||
repo = "exllamav3";
|
||||
tag = "v${finalAttrs.version}";
|
||||
hash = "sha256-ErsCtCM/T1YuCQAwrKhc860ETLgiS5Qu4nrQSuEzsPk=";
|
||||
hash = "sha256-pWdh5fiGZEkdSLXvI5DAEdj6XmBFquzew57L1YIsEg8=";
|
||||
};
|
||||
|
||||
pythonRelaxDeps = [
|
||||
|
||||
@@ -10,19 +10,19 @@
|
||||
|
||||
buildPythonPackage rec {
|
||||
pname = "general-sam";
|
||||
version = "1.0.3";
|
||||
version = "1.0.5";
|
||||
pyproject = true;
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "ModelTC";
|
||||
repo = "general-sam-py";
|
||||
rev = "v${version}";
|
||||
hash = "sha256-++6Z9Ocee4QFN1u0nK/g9uGdmB1UYnfHhhJj74zboCE=";
|
||||
hash = "sha256-/hfq14oFNPhPrhjlIDCyjMfdCuhMdKZ5DBc/nlEQKno=";
|
||||
};
|
||||
|
||||
cargoDeps = rustPlatform.fetchCargoVendor {
|
||||
inherit pname version src;
|
||||
hash = "sha256-8HHIM1Abz5KxnVphFFNJp6L3D6iPeoB7qVmxy11CUZs=";
|
||||
hash = "sha256-8uUCe/isN1qos8cBml16NOzUYHfr94G/GzllQt/5vWg=";
|
||||
};
|
||||
|
||||
build-system = [
|
||||
|
||||
@@ -31,7 +31,7 @@
|
||||
|
||||
buildPythonPackage (finalAttrs: {
|
||||
pname = "gradio-client";
|
||||
version = "2.5.0";
|
||||
version = "2.6.0";
|
||||
pyproject = true;
|
||||
|
||||
# no tests on pypi
|
||||
@@ -134,6 +134,7 @@ buildPythonPackage (finalAttrs: {
|
||||
disabledTests = [ ];
|
||||
pythonImportsCheck = null;
|
||||
dontCheckRuntimeDeps = true;
|
||||
dontCheckPythonMetadata = true; # broken due to changed pname
|
||||
});
|
||||
|
||||
inherit (gradio) updateScript;
|
||||
|
||||
@@ -49,6 +49,7 @@
|
||||
typer,
|
||||
typing-extensions,
|
||||
uvicorn,
|
||||
urllib3,
|
||||
|
||||
# oauth
|
||||
authlib,
|
||||
@@ -81,7 +82,7 @@ let
|
||||
in
|
||||
buildPythonPackage (finalAttrs: {
|
||||
pname = "gradio";
|
||||
version = "6.20.0"; # please always backport gradio changes
|
||||
version = "6.22.0"; # please always backport gradio changes
|
||||
pyproject = true;
|
||||
__structuredAttrs = true;
|
||||
|
||||
@@ -89,7 +90,7 @@ buildPythonPackage (finalAttrs: {
|
||||
owner = "gradio-app";
|
||||
repo = "gradio";
|
||||
tag = "gradio@${finalAttrs.version}";
|
||||
hash = "sha256-q5OoMguG/f0A3c6X+zotafc3kRRuebxMBPUIlrlcNFI=";
|
||||
hash = "sha256-9FcGnZ/yktKM8sTGpgTv3QLIe2IoGbSw10rLWgj1zSU=";
|
||||
};
|
||||
|
||||
patches = [
|
||||
@@ -106,7 +107,7 @@ buildPythonPackage (finalAttrs: {
|
||||
inherit (finalAttrs) version src;
|
||||
inherit pnpm;
|
||||
fetcherVersion = 4;
|
||||
hash = "sha256-xCxr/jnp9emeB6THGt4cumvApw6fSZQwG2NGOcvR0yQ=";
|
||||
hash = "sha256-TX4sLAfka/j002OsUKqxqi5B6Fb+DXSGdeL+w6V9XuM=";
|
||||
};
|
||||
|
||||
env = {
|
||||
@@ -157,6 +158,7 @@ buildPythonPackage (finalAttrs: {
|
||||
typer
|
||||
typing-extensions
|
||||
uvicorn
|
||||
urllib3
|
||||
]
|
||||
++ lib.optionals (pythonAtLeast "3.13") [
|
||||
audioop-lts
|
||||
@@ -196,6 +198,10 @@ buildPythonPackage (finalAttrs: {
|
||||
++ finalAttrs.passthru.optional-dependencies.oauth
|
||||
++ pydantic.optional-dependencies.email;
|
||||
|
||||
pythonRelaxDeps = [
|
||||
"tomlkit" # pre-emptive upper bound
|
||||
];
|
||||
|
||||
preBuild = ''
|
||||
pnpm build
|
||||
pnpm package
|
||||
@@ -440,6 +446,7 @@ buildPythonPackage (finalAttrs: {
|
||||
'';
|
||||
pythonImportsCheck = null;
|
||||
dontCheckRuntimeDeps = true;
|
||||
dontCheckPythonMetadata = true; # broken due to changed pname
|
||||
});
|
||||
|
||||
# We can't use gitUpdater, because we need to update the pnpm hash.
|
||||
|
||||
@@ -28,6 +28,10 @@
|
||||
# gradio
|
||||
gradio,
|
||||
requests,
|
||||
# oauth
|
||||
authlib,
|
||||
fastapi,
|
||||
itsdangerous,
|
||||
# mcp
|
||||
mcp,
|
||||
|
||||
@@ -37,14 +41,14 @@
|
||||
|
||||
buildPythonPackage (finalAttrs: {
|
||||
pname = "huggingface-hub";
|
||||
version = "1.10.2";
|
||||
version = "1.16.0";
|
||||
pyproject = true;
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "huggingface";
|
||||
repo = "huggingface_hub";
|
||||
tag = "v${finalAttrs.version}";
|
||||
hash = "sha256-Q9N0QnxV8oJcxUsJzv4wX8Z6FkNdEfUH5BEVoZolsRY=";
|
||||
hash = "sha256-GuTsoz7ow3A/PJyU3L/xLp56r3RVx5O1YH3nr3T4u7U=";
|
||||
};
|
||||
|
||||
build-system = [ setuptools ];
|
||||
@@ -65,11 +69,6 @@ buildPythonPackage (finalAttrs: {
|
||||
all = [
|
||||
|
||||
];
|
||||
torch = [
|
||||
torch
|
||||
safetensors
|
||||
]
|
||||
++ safetensors.optional-dependencies.torch;
|
||||
fastai = [
|
||||
toml
|
||||
fastai
|
||||
@@ -85,6 +84,17 @@ buildPythonPackage (finalAttrs: {
|
||||
mcp = [
|
||||
mcp
|
||||
];
|
||||
oauth = [
|
||||
authlib
|
||||
fastapi
|
||||
httpx
|
||||
itsdangerous
|
||||
];
|
||||
torch = [
|
||||
torch
|
||||
safetensors
|
||||
]
|
||||
++ safetensors.optional-dependencies.torch;
|
||||
};
|
||||
|
||||
nativeCheckInputs = [
|
||||
|
||||
@@ -23,8 +23,8 @@ let
|
||||
[ ];
|
||||
in
|
||||
buildNodejs {
|
||||
version = "26.5.1";
|
||||
sha256 = "df7770a9a99346f8b73ba6d31ad89bd6f868b51c7387c3627dcb44ca065f4948";
|
||||
version = "26.6.0";
|
||||
sha256 = "ecb6eec812505c9292529087a2436ec6c891ffe0e3a897833416e5d7436d659f";
|
||||
patches =
|
||||
(lib.optional (!(stdenv.hostPlatform.emulatorAvailable buildPackages)) (fetchpatch2 {
|
||||
url = "https://raw.githubusercontent.com/buildroot/buildroot/2f0c31bffdb59fb224387e35134a6d5e09a81d57/package/nodejs/nodejs-src/0003-include-obj-name-in-shared-intermediate.patch";
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"testing": {
|
||||
"version": "7.2-rc5",
|
||||
"hash": "sha256:05vi7q57qj4nybk3m38araknj6yxaaqjdd0cnw07c07qrjcd2lm7",
|
||||
"version": "7.2-rc6",
|
||||
"hash": "sha256:03q060s94c8p55p29npm62f7rcp9pc0hacq60w4spgwp26j8w2sm",
|
||||
"lts": false
|
||||
},
|
||||
"6.1": {
|
||||
@@ -20,23 +20,23 @@
|
||||
"lts": true
|
||||
},
|
||||
"6.6": {
|
||||
"version": "6.6.147",
|
||||
"hash": "sha256:1fsavd2armiwrnz0w556dmm54z76zwy2as0qbbaq6s04xsvjjqz7",
|
||||
"version": "6.6.148",
|
||||
"hash": "sha256:0ppp203swylf9ixrgdsbw3gq6xdrxwxdrkqi6x4irsv0ax5rjx5n",
|
||||
"lts": true
|
||||
},
|
||||
"6.12": {
|
||||
"version": "6.12.100",
|
||||
"hash": "sha256:147fvkpsa9n5gv207xyb6if0vmahmvpvrb2bfy32wj866i9p7yb7",
|
||||
"version": "6.12.101",
|
||||
"hash": "sha256:0xlaq8gz9v7ya2w38r2hps58rp7xqf6bp7bw3cazfj9zjc8ws88d",
|
||||
"lts": true
|
||||
},
|
||||
"6.18": {
|
||||
"version": "6.18.41",
|
||||
"hash": "sha256:1skk2aimvhhymsvs15p83v2mwnlwbmghh82x79isia6lz3q75z0p",
|
||||
"version": "6.18.42",
|
||||
"hash": "sha256:1rv3xn5hw8w5y8wdgy2zx78n22n1qhihrd22dbjnfi5lixgfza1m",
|
||||
"lts": true
|
||||
},
|
||||
"7.1": {
|
||||
"version": "7.1.5",
|
||||
"hash": "sha256:1rs162gcf6hsafrrmp3y8k9myn20s3s62xdp4zf39pxw7imik812",
|
||||
"version": "7.1.6",
|
||||
"hash": "sha256:1hamv3kp3iz2mlyv72sv1rcnfwjqhfvnzza89fwn4iljilcdfpcr",
|
||||
"lts": false
|
||||
}
|
||||
}
|
||||
|
||||
@@ -15,14 +15,14 @@ let
|
||||
variants = {
|
||||
# ./update-xanmod.sh lts
|
||||
lts = {
|
||||
version = "6.18.41";
|
||||
hash = "sha256-nGDN+qkTNaUVgV+aFOvEtwkDaK7uqpjvXgENpkviDFg=";
|
||||
version = "6.18.42";
|
||||
hash = "sha256-yDtXLGdFM4rg8mtxUJbUvCvjs2dvFiSGuCV7seKlWqM=";
|
||||
isLTS = true;
|
||||
};
|
||||
# ./update-xanmod.sh main
|
||||
main = {
|
||||
version = "7.1.5";
|
||||
hash = "sha256-zELqn/UieXjOBkTNTLi2OCkK4+rpD/IfJEDb7GTTJfk=";
|
||||
version = "7.1.6";
|
||||
hash = "sha256-H+dNmTMCWfJm792HR6lz1wVUD70pyZpn5HlTUXwsnLI=";
|
||||
};
|
||||
};
|
||||
|
||||
|
||||
@@ -18,7 +18,7 @@ in
|
||||
buildLinux (
|
||||
args
|
||||
// rec {
|
||||
version = "7.1.4";
|
||||
version = "7.1.5";
|
||||
pname = "linux-zen";
|
||||
modDirVersion = lib.versions.pad 3 "${version}-${suffix}";
|
||||
isZen = true;
|
||||
@@ -27,7 +27,7 @@ buildLinux (
|
||||
owner = "zen-kernel";
|
||||
repo = "zen-kernel";
|
||||
rev = "v${version}-${suffix}";
|
||||
sha256 = "1k27xhzd390krk60kay6cabl0jlpb26m6cwvdh3r8izbwgx1r0ig";
|
||||
sha256 = "11d3c2hx2py6fy6qj0dqk2w392m144wjrfg5ldfh93x9mp4ffhjd";
|
||||
};
|
||||
|
||||
# This is based on the following source:
|
||||
|
||||
@@ -4179,6 +4179,8 @@ with pkgs;
|
||||
bolt_22 = llvmPackages_22.bolt;
|
||||
flang_22 = llvmPackages_22.flang;
|
||||
|
||||
llvmPackages_23 = llvmPackagesSet."23";
|
||||
|
||||
mkLLVMPackages = llvmPackagesSet.mkPackage;
|
||||
})
|
||||
llvmPackages_18
|
||||
@@ -4213,6 +4215,7 @@ with pkgs;
|
||||
llvm_22
|
||||
bolt_22
|
||||
flang_22
|
||||
llvmPackages_23
|
||||
mkLLVMPackages
|
||||
;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user