Merge master into staging-next
This commit is contained in:
@@ -23,6 +23,8 @@ in
|
||||
boot.extraModulePackages = [ evdi ];
|
||||
boot.kernelModules = [ "evdi" ];
|
||||
|
||||
services.xserver.externallyConfiguredDrivers = [ "displaylink" ];
|
||||
|
||||
environment.etc."X11/xorg.conf.d/40-displaylink.conf".text = ''
|
||||
Section "OutputClass"
|
||||
Identifier "DisplayLink"
|
||||
|
||||
@@ -18,10 +18,6 @@ let
|
||||
types
|
||||
;
|
||||
|
||||
inherit (builtins)
|
||||
toString
|
||||
;
|
||||
|
||||
inherit (utils)
|
||||
escapeSystemdExecArgs
|
||||
;
|
||||
@@ -36,230 +32,261 @@ in
|
||||
description = ''
|
||||
Attribute set of wyoming-faster-whisper instances to spawn.
|
||||
'';
|
||||
type = attrsOf (submodule {
|
||||
options = {
|
||||
enable = mkEnableOption "Wyoming faster-whisper server";
|
||||
type = attrsOf (
|
||||
submodule (
|
||||
{ name, ... }:
|
||||
{
|
||||
options = {
|
||||
enable = mkEnableOption "Wyoming faster-whisper server";
|
||||
|
||||
model = mkOption {
|
||||
type = str;
|
||||
default = "tiny-int8";
|
||||
example = "Systran/faster-distil-whisper-small.en";
|
||||
# https://github.com/home-assistant/addons/blob/master/whisper/DOCS.md#option-model
|
||||
description = ''
|
||||
Name of the voice model to use. Can also be a HuggingFace model ID or a path to
|
||||
a custom model directory.
|
||||
zeroconf = {
|
||||
enable = mkEnableOption "zeroconf discovery" // {
|
||||
default = true;
|
||||
};
|
||||
|
||||
With {option}`useTranformers` enabled, a HuggingFace transformers Whisper model
|
||||
ID from HuggingFace like `openai/whisper-tiny.en` must be used.
|
||||
name = mkOption {
|
||||
type = str;
|
||||
default = "faster-whisper-${name}";
|
||||
description = ''
|
||||
The advertised name for zeroconf discovery.
|
||||
'';
|
||||
};
|
||||
};
|
||||
|
||||
Compressed models (`int8`) are slightly less accurate, but smaller and faster.
|
||||
Distilled models are uncompressed and faster and smaller than non-distilled models.
|
||||
sttLibrary = mkOption {
|
||||
type = enum [
|
||||
"auto"
|
||||
"faster-whisper"
|
||||
"onnx-asr"
|
||||
"sherpa"
|
||||
"transformers"
|
||||
];
|
||||
default = "auto";
|
||||
example = "sherpa";
|
||||
description = ''
|
||||
Library used for speech-to-text process.
|
||||
|
||||
Available models:
|
||||
- `tiny-int8` (compressed)
|
||||
- `tiny`
|
||||
- `tiny.en` (English only)
|
||||
- `base-int8` (compressed)
|
||||
- `base`
|
||||
- `base.en` (English only)
|
||||
- `small-int8` (compressed)
|
||||
- `distil-small.en` (distilled, English only)
|
||||
- `small`
|
||||
- `small.en` (English only)
|
||||
- `medium-int8` (compressed)
|
||||
- `distil-medium.en` (distilled, English only)
|
||||
- `medium`
|
||||
- `medium.en` (English only)
|
||||
- `large`
|
||||
- `large-v1`
|
||||
- `distil-large-v2` (distilled, English only)
|
||||
- `large-v2`
|
||||
- `distil-large-v3` (distilled, English only)
|
||||
- `large-v3`
|
||||
- `turbo` (faster than large-v3)
|
||||
'';
|
||||
};
|
||||
When set to `auto` picks a default based on the {option}`language`.
|
||||
'';
|
||||
};
|
||||
|
||||
useTransformers = mkOption {
|
||||
type = bool;
|
||||
default = false;
|
||||
description = ''
|
||||
Whether to provide the dependencies to allow using transformer models.
|
||||
'';
|
||||
};
|
||||
model = mkOption {
|
||||
type = str;
|
||||
default = "auto";
|
||||
example = "sherpa-onnx-nemo-parakeet-tdt-0.6b-v3-int8";
|
||||
# https://github.com/home-assistant/addons/blob/master/whisper/DOCS.md#option-model
|
||||
description = ''
|
||||
Name of the voice model to use. Can also be a HuggingFace model ID or a path to
|
||||
a custom model directory.
|
||||
|
||||
uri = mkOption {
|
||||
type = strMatching "^(tcp|unix)://.*$";
|
||||
example = "tcp://0.0.0.0:10300";
|
||||
description = ''
|
||||
URI to bind the wyoming server to.
|
||||
'';
|
||||
};
|
||||
When set to `auto` picks a default based on the {option}`language`,
|
||||
|
||||
device = mkOption {
|
||||
# https://opennmt.net/CTranslate2/python/ctranslate2.models.Whisper.html#
|
||||
type = enum [
|
||||
"cpu"
|
||||
"cuda"
|
||||
"auto"
|
||||
];
|
||||
default = "cpu";
|
||||
description = ''
|
||||
Determines the platform faster-whisper is run on. CPU works everywhere, CUDA requires a compatible NVIDIA GPU.
|
||||
'';
|
||||
};
|
||||
With {option}`sttLibrary` set to `transformers`, a HuggingFace transformers Whisper model
|
||||
ID from HuggingFace like `openai/whisper-tiny` or `openai/whisper-base` must be used.
|
||||
|
||||
language = mkOption {
|
||||
type = enum [
|
||||
# https://github.com/home-assistant/addons/blob/master/whisper/config.yaml#L20
|
||||
"auto"
|
||||
"af"
|
||||
"am"
|
||||
"ar"
|
||||
"as"
|
||||
"az"
|
||||
"ba"
|
||||
"be"
|
||||
"bg"
|
||||
"bn"
|
||||
"bo"
|
||||
"br"
|
||||
"bs"
|
||||
"ca"
|
||||
"cs"
|
||||
"cy"
|
||||
"da"
|
||||
"de"
|
||||
"el"
|
||||
"en"
|
||||
"es"
|
||||
"et"
|
||||
"eu"
|
||||
"fa"
|
||||
"fi"
|
||||
"fo"
|
||||
"fr"
|
||||
"gl"
|
||||
"gu"
|
||||
"ha"
|
||||
"haw"
|
||||
"he"
|
||||
"hi"
|
||||
"hr"
|
||||
"ht"
|
||||
"hu"
|
||||
"hy"
|
||||
"id"
|
||||
"is"
|
||||
"it"
|
||||
"ja"
|
||||
"jw"
|
||||
"ka"
|
||||
"kk"
|
||||
"km"
|
||||
"kn"
|
||||
"ko"
|
||||
"la"
|
||||
"lb"
|
||||
"ln"
|
||||
"lo"
|
||||
"lt"
|
||||
"lv"
|
||||
"mg"
|
||||
"mi"
|
||||
"mk"
|
||||
"ml"
|
||||
"mn"
|
||||
"mr"
|
||||
"ms"
|
||||
"mt"
|
||||
"my"
|
||||
"ne"
|
||||
"nl"
|
||||
"nn"
|
||||
"no"
|
||||
"oc"
|
||||
"pa"
|
||||
"pl"
|
||||
"ps"
|
||||
"pt"
|
||||
"ro"
|
||||
"ru"
|
||||
"sa"
|
||||
"sd"
|
||||
"si"
|
||||
"sk"
|
||||
"sl"
|
||||
"sn"
|
||||
"so"
|
||||
"sq"
|
||||
"sr"
|
||||
"su"
|
||||
"sv"
|
||||
"sw"
|
||||
"ta"
|
||||
"te"
|
||||
"tg"
|
||||
"th"
|
||||
"tk"
|
||||
"tl"
|
||||
"tr"
|
||||
"tt"
|
||||
"uk"
|
||||
"ur"
|
||||
"uz"
|
||||
"vi"
|
||||
"yi"
|
||||
"yue"
|
||||
"yo"
|
||||
"zh"
|
||||
];
|
||||
example = "en";
|
||||
description = ''
|
||||
The language used to to parse words and sentences.
|
||||
'';
|
||||
};
|
||||
Compressed models (`int8`) are slightly less accurate, but smaller and faster.
|
||||
Distilled models are uncompressed and faster and smaller than non-distilled models.
|
||||
|
||||
initialPrompt = mkOption {
|
||||
type = nullOr str;
|
||||
default = null;
|
||||
# https://github.com/home-assistant/addons/blob/master/whisper/DOCS.md#option-custom_model_type
|
||||
example = ''
|
||||
The following conversation takes place in the universe of
|
||||
Wizard of Oz. Key terms include 'Yellow Brick Road' (the path
|
||||
to follow), 'Emerald City' (the ultimate goal), and 'Ruby
|
||||
Slippers' (the magical tools to succeed). Keep these in mind as
|
||||
they guide the journey.
|
||||
'';
|
||||
description = ''
|
||||
Optional text to provide as a prompt for the first window. This can be used to provide, or
|
||||
"prompt-engineer" a context for transcription, e.g. custom vocabularies or proper nouns
|
||||
to make it more likely to predict those word correctly.
|
||||
Available models for faster-whisper:
|
||||
- `tiny-int8` (compressed)
|
||||
- `tiny`
|
||||
- `tiny.en` (English only)
|
||||
- `base-int8` (compressed)
|
||||
- `base`
|
||||
- `base.en` (English only)
|
||||
- `small-int8` (compressed)
|
||||
- `distil-small.en` (distilled, English only)
|
||||
- `small`
|
||||
- `small.en` (English only)
|
||||
- `medium-int8` (compressed)
|
||||
- `distil-medium.en` (distilled, English only)
|
||||
- `medium`
|
||||
- `medium.en` (English only)
|
||||
- `large`
|
||||
- `large-v1`
|
||||
- `distil-large-v2` (distilled, English only)
|
||||
- `large-v2`
|
||||
- `distil-large-v3` (distilled, English only)
|
||||
- `large-v3`
|
||||
- `turbo` (faster than large-v3)
|
||||
'';
|
||||
};
|
||||
|
||||
Not supported when the {option}`customModelType` is `transformers`.
|
||||
'';
|
||||
};
|
||||
uri = mkOption {
|
||||
type = strMatching "^(tcp|unix)://.*$";
|
||||
example = "tcp://0.0.0.0:10300";
|
||||
description = ''
|
||||
URI to bind the wyoming server to.
|
||||
'';
|
||||
};
|
||||
|
||||
beamSize = mkOption {
|
||||
type = ints.unsigned;
|
||||
default = 0;
|
||||
example = 5;
|
||||
description = ''
|
||||
The number of beams to use in beam search.
|
||||
Use `0` to automatically select a value based on the CPU.
|
||||
'';
|
||||
apply = toString;
|
||||
};
|
||||
device = mkOption {
|
||||
# https://opennmt.net/CTranslate2/python/ctranslate2.models.Whisper.html#
|
||||
type = enum [
|
||||
"cpu"
|
||||
"cuda"
|
||||
"auto"
|
||||
];
|
||||
default = "cpu";
|
||||
description = ''
|
||||
Determines the platform faster-whisper is run on. CPU works everywhere, CUDA requires a compatible NVIDIA GPU.
|
||||
'';
|
||||
};
|
||||
|
||||
extraArgs = mkOption {
|
||||
type = listOf str;
|
||||
default = [ ];
|
||||
description = ''
|
||||
Extra arguments to pass to the server commandline.
|
||||
'';
|
||||
};
|
||||
};
|
||||
});
|
||||
language = mkOption {
|
||||
type = enum [
|
||||
# https://github.com/home-assistant/addons/blob/master/whisper/config.yaml#L20
|
||||
"auto"
|
||||
"af"
|
||||
"am"
|
||||
"ar"
|
||||
"as"
|
||||
"az"
|
||||
"ba"
|
||||
"be"
|
||||
"bg"
|
||||
"bn"
|
||||
"bo"
|
||||
"br"
|
||||
"bs"
|
||||
"ca"
|
||||
"cs"
|
||||
"cy"
|
||||
"da"
|
||||
"de"
|
||||
"el"
|
||||
"en"
|
||||
"es"
|
||||
"et"
|
||||
"eu"
|
||||
"fa"
|
||||
"fi"
|
||||
"fo"
|
||||
"fr"
|
||||
"gl"
|
||||
"gu"
|
||||
"ha"
|
||||
"haw"
|
||||
"he"
|
||||
"hi"
|
||||
"hr"
|
||||
"ht"
|
||||
"hu"
|
||||
"hy"
|
||||
"id"
|
||||
"is"
|
||||
"it"
|
||||
"ja"
|
||||
"jw"
|
||||
"ka"
|
||||
"kk"
|
||||
"km"
|
||||
"kn"
|
||||
"ko"
|
||||
"la"
|
||||
"lb"
|
||||
"ln"
|
||||
"lo"
|
||||
"lt"
|
||||
"lv"
|
||||
"mg"
|
||||
"mi"
|
||||
"mk"
|
||||
"ml"
|
||||
"mn"
|
||||
"mr"
|
||||
"ms"
|
||||
"mt"
|
||||
"my"
|
||||
"ne"
|
||||
"nl"
|
||||
"nn"
|
||||
"no"
|
||||
"oc"
|
||||
"pa"
|
||||
"pl"
|
||||
"ps"
|
||||
"pt"
|
||||
"ro"
|
||||
"ru"
|
||||
"sa"
|
||||
"sd"
|
||||
"si"
|
||||
"sk"
|
||||
"sl"
|
||||
"sn"
|
||||
"so"
|
||||
"sq"
|
||||
"sr"
|
||||
"su"
|
||||
"sv"
|
||||
"sw"
|
||||
"ta"
|
||||
"te"
|
||||
"tg"
|
||||
"th"
|
||||
"tk"
|
||||
"tl"
|
||||
"tr"
|
||||
"tt"
|
||||
"uk"
|
||||
"ur"
|
||||
"uz"
|
||||
"vi"
|
||||
"yi"
|
||||
"yue"
|
||||
"yo"
|
||||
"zh"
|
||||
];
|
||||
example = "en";
|
||||
description = ''
|
||||
The language used to to parse words and sentences.
|
||||
'';
|
||||
};
|
||||
|
||||
initialPrompt = mkOption {
|
||||
type = nullOr str;
|
||||
default = null;
|
||||
# https://github.com/home-assistant/addons/blob/master/whisper/DOCS.md#option-custom_model_type
|
||||
example = ''
|
||||
The following conversation takes place in the universe of
|
||||
Wizard of Oz. Key terms include 'Yellow Brick Road' (the path
|
||||
to follow), 'Emerald City' (the ultimate goal), and 'Ruby
|
||||
Slippers' (the magical tools to succeed). Keep these in mind as
|
||||
they guide the journey.
|
||||
'';
|
||||
description = ''
|
||||
Optional text to provide as a prompt for the first window. This can be used to provide, or
|
||||
"prompt-engineer" a context for transcription, e.g. custom vocabularies or proper nouns
|
||||
to make it more likely to predict those word correctly.
|
||||
|
||||
Only supported when the {option}`sttLibrary` is `faster-whisper`.
|
||||
'';
|
||||
};
|
||||
|
||||
beamSize = mkOption {
|
||||
type = ints.unsigned;
|
||||
default = 0;
|
||||
example = 5;
|
||||
description = ''
|
||||
The number of beams to use in beam search.
|
||||
|
||||
The default (`0`) will use 1 beam on ARM systems (assumes an ARM SBC) and 5 everywhere else.
|
||||
'';
|
||||
apply = toString;
|
||||
};
|
||||
|
||||
extraArgs = mkOption {
|
||||
type = listOf str;
|
||||
default = [ ];
|
||||
description = ''
|
||||
Extra arguments to pass to the server commandline.
|
||||
'';
|
||||
};
|
||||
};
|
||||
}
|
||||
)
|
||||
);
|
||||
};
|
||||
};
|
||||
|
||||
@@ -273,8 +300,8 @@ in
|
||||
in
|
||||
mkIf (cfg.servers != { }) {
|
||||
assertions = mapAttrsToList (server: options: {
|
||||
assertion = options.useTransformers -> options.initialPrompt == null;
|
||||
message = "wyoming-faster-whisper/${server}: Transformer models (`useTransformers`) do not currently support an `initialPrompt`.";
|
||||
assertion = options.sttLibrary != "faster-whisper" -> options.initialPrompt == null;
|
||||
message = "wyoming-faster-whisper/${server}: Initial prompt is only supported when using `faster-whisper` as `sttLibrary`.";
|
||||
}) cfg.servers;
|
||||
|
||||
systemd.services = mapAttrs' (
|
||||
@@ -283,8 +310,14 @@ in
|
||||
finalPackage = cfg.package.overridePythonAttrs (oldAttrs: {
|
||||
dependencies =
|
||||
oldAttrs.dependencies
|
||||
# for transformer model support
|
||||
++ optionals options.useTransformers oldAttrs.optional-dependencies.transformers;
|
||||
++ optionals options.zeroconf.enable oldAttrs.optional-dependencies.zeroconf
|
||||
++ optionals (
|
||||
options.sttLibrary == "onnx-asr" || options.sttLibrary == "auto" && options.language == "ru"
|
||||
) oldAttrs.optional-dependencies.onnx_asr
|
||||
++ optionals (
|
||||
options.sttLibrary == "sherpa-onnx" || options.sttLibrary == "auto" && options.language == "en"
|
||||
) oldAttrs.optional-dependencies.sherpa
|
||||
++ optionals (options.sttLibrary == "transformers") oldAttrs.optional-dependencies.transformers;
|
||||
});
|
||||
in
|
||||
nameValuePair "wyoming-faster-whisper-${server}" {
|
||||
@@ -316,6 +349,8 @@ in
|
||||
options.uri
|
||||
"--device"
|
||||
options.device
|
||||
"--stt-library"
|
||||
options.sttLibrary
|
||||
"--model"
|
||||
options.model
|
||||
"--language"
|
||||
@@ -323,8 +358,9 @@ in
|
||||
"--beam-size"
|
||||
options.beamSize
|
||||
]
|
||||
++ lib.optionals options.useTransformers [
|
||||
"--use-transformers"
|
||||
++ lib.optionals options.zeroconf.enable [
|
||||
"--zeroconf"
|
||||
options.zeroconf.name
|
||||
]
|
||||
++ lib.optionals (options.initialPrompt != null) [
|
||||
"--initial-prompt"
|
||||
@@ -366,6 +402,10 @@ in
|
||||
"AF_INET"
|
||||
"AF_INET6"
|
||||
"AF_UNIX"
|
||||
]
|
||||
++ lib.optionals options.zeroconf.enable [
|
||||
# Zeroconf support require network interface enumeration
|
||||
"AF_NETLINK"
|
||||
];
|
||||
RestrictNamespaces = true;
|
||||
RestrictRealtime = true;
|
||||
|
||||
@@ -37,7 +37,7 @@ in
|
||||
'';
|
||||
type = types.attrsOf (
|
||||
types.submodule (
|
||||
{ ... }:
|
||||
{ name, ... }:
|
||||
{
|
||||
options = {
|
||||
enable = mkEnableOption "Wyoming Piper server";
|
||||
@@ -49,7 +49,7 @@ in
|
||||
|
||||
name = mkOption {
|
||||
type = str;
|
||||
default = "piper";
|
||||
default = "piper-${name}";
|
||||
description = ''
|
||||
The advertised name for zeroconf discovery.
|
||||
'';
|
||||
@@ -205,8 +205,11 @@ in
|
||||
RestrictAddressFamilies = [
|
||||
"AF_INET"
|
||||
"AF_INET6"
|
||||
"AF_NETLINK"
|
||||
"AF_UNIX"
|
||||
]
|
||||
++ lib.optionals options.zeroconf.enable [
|
||||
# Zeroconf support require network interface enumeration
|
||||
"AF_NETLINK"
|
||||
];
|
||||
RestrictNamespaces = true;
|
||||
RestrictRealtime = true;
|
||||
|
||||
@@ -348,6 +348,10 @@ in
|
||||
proxy_set_header X-Forwarded-Groups $http_x_forwarded_groups;
|
||||
proxy_set_header X-Forwarded-Email $http_x_forwarded_email;
|
||||
proxy_set_header X-Forwarded-Preferred-Username $http_x_forwarded_preferred_username;
|
||||
proxy_set_header X-Auth-Request-User $http_x_auth_request_user;
|
||||
proxy_set_header X-Auth-Request-Groups $http_x_auth_request_groups;
|
||||
proxy_set_header X-Auth-Request-Email $http_x_auth_request_email;
|
||||
proxy_set_header X-Auth-Request-Preferred-Username $http_x_auth_request_preferred_username;
|
||||
proxy_set_header X-authentik-username $http_x_authentik_username;
|
||||
proxy_set_header X-authentik-groups $http_x_authentik_groups;
|
||||
proxy_set_header X-authentik-email $http_x_authentik_email;
|
||||
@@ -362,6 +366,10 @@ in
|
||||
aio threads;
|
||||
vod hls;
|
||||
|
||||
# Use fMP4 (fragmented MP4) instead of MPEG-TS for better performance
|
||||
# Smaller segments, faster generation, better browser compatibility
|
||||
vod_hls_container_format fmp4;
|
||||
|
||||
secure_token $args;
|
||||
secure_token_types application/vnd.apple.mpegurl;
|
||||
|
||||
@@ -555,6 +563,16 @@ in
|
||||
${nginxProxySettings}
|
||||
}
|
||||
|
||||
location /api/auth/first_time_login {
|
||||
auth_request off;
|
||||
limit_except GET {
|
||||
deny all;
|
||||
}
|
||||
rewrite ^/api(/.*)$ $1 break;
|
||||
proxy_pass http://frigate-api;
|
||||
${nginxProxySettings}
|
||||
}
|
||||
|
||||
location /api/stats {
|
||||
${nginxAuthRequest}
|
||||
access_log off;
|
||||
@@ -582,6 +600,14 @@ in
|
||||
add_header Cache-Control "public";
|
||||
'';
|
||||
};
|
||||
"/fonts" = {
|
||||
root = cfg.package.web;
|
||||
extraConfig = ''
|
||||
access_log off;
|
||||
expires 1y;
|
||||
add_header Cache-Control "public";
|
||||
'';
|
||||
};
|
||||
"/locales/" = {
|
||||
root = cfg.package.web;
|
||||
extraConfig = ''
|
||||
@@ -623,6 +649,8 @@ in
|
||||
vod_manifest_segment_durations_mode accurate;
|
||||
vod_ignore_edit_list on;
|
||||
vod_segment_duration 10000;
|
||||
|
||||
# MPEG-TS settings (not used when fMP4 is enabled, kept for reference)
|
||||
vod_hls_mpegts_align_frames off;
|
||||
vod_hls_mpegts_interleave_frames on;
|
||||
|
||||
|
||||
@@ -497,7 +497,26 @@ in
|
||||
internal = true;
|
||||
description = ''
|
||||
A list of attribute sets specifying drivers to be loaded by
|
||||
the X11 server.
|
||||
the X11 server. This module will create a Device section in
|
||||
the Xorg config for every driver listed here, along with a
|
||||
Screen section if the driver's {option}`display` attribute is
|
||||
`true`. If such configuration sections should not be created,
|
||||
use {options}`services.xserver.externallyConfiguredDrivers`
|
||||
instead.
|
||||
|
||||
Users should not add drivers to this option but should instead
|
||||
add drivers to {option}`services.xserver.videoDrivers`.
|
||||
'';
|
||||
};
|
||||
|
||||
externallyConfiguredDrivers = mkOption {
|
||||
type = types.listOf types.str;
|
||||
internal = true;
|
||||
default = [ ];
|
||||
description = ''
|
||||
A list of externally configured drivers (by name). Modules that
|
||||
manually configure their drivers should add said drivers to this
|
||||
list to let this module know that the driver has been configured.
|
||||
'';
|
||||
};
|
||||
|
||||
@@ -865,7 +884,9 @@ in
|
||||
}
|
||||
]
|
||||
++ map (driver: {
|
||||
assertion = builtins.elem driver (builtins.catAttrs "name" cfg.drivers);
|
||||
assertion = builtins.elem driver (
|
||||
(builtins.catAttrs "name" cfg.drivers) ++ cfg.externallyConfiguredDrivers
|
||||
);
|
||||
message = "Unknown X11 driver ‘${driver}’ specified in `services.xserver.videoDrivers`.";
|
||||
}) cfg.videoDrivers;
|
||||
|
||||
|
||||
@@ -27,7 +27,7 @@ stdenv.mkDerivation rec {
|
||||
rm -rf libpng zlib zopfli
|
||||
'';
|
||||
|
||||
NIX_CFLAGS_LINK = "-lzopfli";
|
||||
env.NIX_CFLAGS_LINK = "-lzopfli";
|
||||
|
||||
installPhase = ''
|
||||
install -Dt $out/bin apngasm
|
||||
|
||||
@@ -436,13 +436,13 @@
|
||||
"vendorHash": "sha256-FcxAh8EOvnT8r1GHu0Oj2C5Jgbr2WPwD7/vY4/qIvTA="
|
||||
},
|
||||
"gitlabhq_gitlab": {
|
||||
"hash": "sha256-iBgACKVMJmfDLlIU6TZZiED+eEG7c4CMSkfEjU1Dmiw=",
|
||||
"hash": "sha256-qsETOpigad1T2Zc2zQ3gs4AW3rrGsqt5Bse85QfGZkA=",
|
||||
"homepage": "https://registry.terraform.io/providers/gitlabhq/gitlab",
|
||||
"owner": "gitlabhq",
|
||||
"repo": "terraform-provider-gitlab",
|
||||
"rev": "v18.8.0",
|
||||
"rev": "v18.9.0",
|
||||
"spdx": "MPL-2.0",
|
||||
"vendorHash": "sha256-a2y8bnbQr8RNN3hJZFupUHvrIrV8HkAvZQn+7MIod0U="
|
||||
"vendorHash": "sha256-Yy7yF0x8AtXTP7EMCbrZUTAO317VDyktGbHN+iSuQkg="
|
||||
},
|
||||
"go-gandi_gandi": {
|
||||
"hash": "sha256-fsCtmwyxkXfOtiZG27VEb010jglK35yr4EynnUWlFog=",
|
||||
@@ -778,13 +778,13 @@
|
||||
"vendorHash": "sha256-mnKXYT0GfIS+ODzBCS9l4rLF1ugadesmpgdOgj74nLg="
|
||||
},
|
||||
"jianyuan_sentry": {
|
||||
"hash": "sha256-J8hINbcBEdukkSLw+nKwbln9EfNh4sIb5F7FPLmXLE4=",
|
||||
"hash": "sha256-sZdF4YnrsjTt8wsgdDdocHciRZbv2+l+b8zOr/WZYiQ=",
|
||||
"homepage": "https://registry.terraform.io/providers/jianyuan/sentry",
|
||||
"owner": "jianyuan",
|
||||
"repo": "terraform-provider-sentry",
|
||||
"rev": "v0.14.9",
|
||||
"rev": "v0.14.10",
|
||||
"spdx": "MIT",
|
||||
"vendorHash": "sha256-ILb6eUVt961ZBcEVKT324OXMxF/d+Wx9tzA3PDTe5iU="
|
||||
"vendorHash": "sha256-vJmzsdY2Yt09X2ZQgC5SA0mntjH/rIanaxQfBuivE7M="
|
||||
},
|
||||
"joneshf_openwrt": {
|
||||
"hash": "sha256-z78IceF2VJtiQpVqC+rTUDsph73LZawIK+az3rEhljA=",
|
||||
@@ -896,13 +896,13 @@
|
||||
"vendorHash": "sha256-2IlD9IdiN+TBk/Eng2K4jZD8GB91IvQPeVAKhxI/6aY="
|
||||
},
|
||||
"metio_migadu": {
|
||||
"hash": "sha256-K1wvS8rKetDuEdcommxdw07BkWJoSiZJ4sB3EfJ3uaI=",
|
||||
"hash": "sha256-FPUWuQnklyy66SXUY3QpCHza5f0oVMrticd+j/YwKNc=",
|
||||
"homepage": "https://registry.terraform.io/providers/metio/migadu",
|
||||
"owner": "metio",
|
||||
"repo": "terraform-provider-migadu",
|
||||
"rev": "2026.2.12",
|
||||
"rev": "2026.2.26",
|
||||
"spdx": "0BSD",
|
||||
"vendorHash": "sha256-Kag6QOY+ek9XIhvSJbzk+HGa9NxXh8MTMmoMXbFZxgI="
|
||||
"vendorHash": "sha256-sxOopd49N1ABIZkp9XpP03N2BMIA5FO9reZPl8aSomU="
|
||||
},
|
||||
"mongey_kafka": {
|
||||
"hash": "sha256-rTa6c7jAMH027V7h/yUGVGz6TS0PDdObilxU0Vpr6FI=",
|
||||
@@ -1337,13 +1337,13 @@
|
||||
"vendorHash": "sha256-SF11E60OQiRdf+Pf6XyJg60yGRnGOcSzhrYccrWaeYE="
|
||||
},
|
||||
"terraform-lxd_lxd": {
|
||||
"hash": "sha256-6dLtlUIFyP2cW1V6/M6z/uAFLVHKi9cJCQhb4cFJdkA=",
|
||||
"hash": "sha256-Vjvj/zcs/EyGsQWOFGOcDWnmPv1ZxaLzs18GDvCccSA=",
|
||||
"homepage": "https://registry.terraform.io/providers/terraform-lxd/lxd",
|
||||
"owner": "terraform-lxd",
|
||||
"repo": "terraform-provider-lxd",
|
||||
"rev": "v2.6.2",
|
||||
"rev": "v2.7.0",
|
||||
"spdx": "MPL-2.0",
|
||||
"vendorHash": "sha256-3UzczIdB7Uns0X6ywSCoSWQcYhxSg43u95GEDQz2d28="
|
||||
"vendorHash": "sha256-bcynhUj61VrSooyZ+oF0gWpAA+FtsYHXUpV/hTMyl7Q="
|
||||
},
|
||||
"terraform-provider-openstack_openstack": {
|
||||
"hash": "sha256-6TcyPUacJNfGsaevg1DQ+WJrMFvGeo2mmsE2+P3RAZM=",
|
||||
|
||||
@@ -41,8 +41,10 @@ let
|
||||
|
||||
doCheck = false;
|
||||
|
||||
BUILD_USER = "nix";
|
||||
BUILD_HOST = "nix";
|
||||
env = {
|
||||
BUILD_USER = "nix";
|
||||
BUILD_HOST = "nix";
|
||||
};
|
||||
|
||||
buildPhase = ''
|
||||
runHook preBuild
|
||||
|
||||
@@ -38,7 +38,7 @@ stdenv.mkDerivation (finalAttrs: {
|
||||
]
|
||||
++ lib.optional stdenv.hostPlatform.isFreeBSD ./include-static-dependencies.patch;
|
||||
|
||||
NIX_CFLAGS_LINK = [ "-lcrypt" ];
|
||||
env.NIX_CFLAGS_LINK = toString [ "-lcrypt" ];
|
||||
|
||||
outputs = [
|
||||
"out"
|
||||
|
||||
@@ -7,14 +7,14 @@
|
||||
|
||||
python3.pkgs.buildPythonApplication rec {
|
||||
pname = "changedetection-io";
|
||||
version = "0.53.5";
|
||||
version = "0.54.2";
|
||||
format = "setuptools";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "dgtlmoon";
|
||||
repo = "changedetection.io";
|
||||
tag = version;
|
||||
hash = "sha256-B5T9M4JpNn4hUeV8rR1SIJobLKnuMkr4Se8d+Zu/xxY=";
|
||||
hash = "sha256-EOvZdPMfGfllM57hbc/HMHw1rh9n9uwlA4VSkoY0MWY=";
|
||||
};
|
||||
|
||||
pythonRelaxDeps = true;
|
||||
|
||||
@@ -431,10 +431,10 @@
|
||||
platforms = [ ];
|
||||
source = {
|
||||
remotes = [ "https://rubygems.org" ];
|
||||
sha256 = "003xl226y120cbq1n99805jw6w75gcz1gs941yz3h7li3qy3kqha";
|
||||
sha256 = "14qb2gy6ypnqri92v9x8szbq7fzw27pc1z5cl367n5f5cpd2rmks";
|
||||
type = "gem";
|
||||
};
|
||||
version = "1.18.6";
|
||||
version = "1.20.1";
|
||||
};
|
||||
brakeman = {
|
||||
dependencies = [ "racc" ];
|
||||
@@ -469,15 +469,16 @@
|
||||
dependencies = [ "thor" ];
|
||||
groups = [
|
||||
"development"
|
||||
"staging"
|
||||
"test"
|
||||
];
|
||||
platforms = [ ];
|
||||
source = {
|
||||
remotes = [ "https://rubygems.org" ];
|
||||
sha256 = "0j0h5cgnzk0ms17ssjkzfzwz65ggrs3lsp53a1j46p4616m1s1bk";
|
||||
sha256 = "1sdlr4rj7x5nbrl8zkd3dqdg4fc50bnpx37rl0l0szg4f5n7dj41";
|
||||
type = "gem";
|
||||
};
|
||||
version = "0.9.2";
|
||||
version = "0.9.3";
|
||||
};
|
||||
byebug = {
|
||||
groups = [
|
||||
@@ -690,10 +691,10 @@
|
||||
];
|
||||
source = {
|
||||
remotes = [ "https://rubygems.org" ];
|
||||
sha256 = "1rbfqkzr6i8b6538z16chvrkgywf5p5vafsgmnbmvrmh0ingsx2y";
|
||||
sha256 = "1h0db8r2v5llxdbzkzyllkfniqw9gm092qn7cbaib73v9lw0c3bm";
|
||||
type = "gem";
|
||||
};
|
||||
version = "3.5.0";
|
||||
version = "3.5.1";
|
||||
};
|
||||
debug = {
|
||||
dependencies = [
|
||||
@@ -773,15 +774,16 @@
|
||||
groups = [
|
||||
"default"
|
||||
"development"
|
||||
"staging"
|
||||
"test"
|
||||
];
|
||||
platforms = [ ];
|
||||
source = {
|
||||
remotes = [ "https://rubygems.org" ];
|
||||
sha256 = "1hwjsddv666wpp42bip3fqx7c5qq6s8lwf74dj71yn7d1h37c4cy";
|
||||
sha256 = "17b1zr9kih0i3wb7h4yq9i8vi6hjfq07857j437a8z7a44qvhxg3";
|
||||
type = "gem";
|
||||
};
|
||||
version = "3.1.8";
|
||||
version = "3.2.0";
|
||||
};
|
||||
dotenv-rails = {
|
||||
dependencies = [
|
||||
@@ -790,15 +792,16 @@
|
||||
];
|
||||
groups = [
|
||||
"development"
|
||||
"staging"
|
||||
"test"
|
||||
];
|
||||
platforms = [ ];
|
||||
source = {
|
||||
remotes = [ "https://rubygems.org" ];
|
||||
sha256 = "1i40g6kzwp8yxsxzpzgsq2hww9gxryl5lck1bwxshn4bd8id3ja6";
|
||||
sha256 = "1axy0frn3xn3jf1gdafx5rzz843551q1ckwcbp4zy8m69dajazk5";
|
||||
type = "gem";
|
||||
};
|
||||
version = "3.1.8";
|
||||
version = "3.2.0";
|
||||
};
|
||||
drb = {
|
||||
groups = [
|
||||
@@ -848,10 +851,10 @@
|
||||
];
|
||||
source = {
|
||||
remotes = [ "https://rubygems.org" ];
|
||||
sha256 = "0y95ynlfngs0s5x1w6mwralszhbi9d75lcdbdkqk75wcklzqjc17";
|
||||
sha256 = "1rcpq49pyaiclpjp3c3qjl25r95hqvin2q2dczaynaj7qncxvv18";
|
||||
type = "gem";
|
||||
};
|
||||
version = "6.0.0";
|
||||
version = "6.0.1";
|
||||
};
|
||||
erubi = {
|
||||
groups = [
|
||||
@@ -1090,14 +1093,15 @@
|
||||
version = "1.2.1";
|
||||
};
|
||||
hashie = {
|
||||
dependencies = [ "logger" ];
|
||||
groups = [ "default" ];
|
||||
platforms = [ ];
|
||||
source = {
|
||||
remotes = [ "https://rubygems.org" ];
|
||||
sha256 = "1nh3arcrbz1rc1cr59qm53sdhqm137b258y8rcb4cvd3y98lwv4x";
|
||||
sha256 = "0w1qrab701d3a63aj2qavwc2fpcqmkzzh1w2x93c88zkjqc4frn2";
|
||||
type = "gem";
|
||||
};
|
||||
version = "5.0.0";
|
||||
version = "5.1.0";
|
||||
};
|
||||
httparty = {
|
||||
dependencies = [
|
||||
@@ -1149,6 +1153,7 @@
|
||||
groups = [
|
||||
"default"
|
||||
"development"
|
||||
"staging"
|
||||
"test"
|
||||
];
|
||||
platforms = [
|
||||
@@ -1167,10 +1172,10 @@
|
||||
];
|
||||
source = {
|
||||
remotes = [ "https://rubygems.org" ];
|
||||
sha256 = "1jszj95hazqqpnrjjzr326nn1j32xmsc9xvd97mbcrrgdc54858y";
|
||||
sha256 = "1k0lk3pwadm2myvpg893n8jshmrf2sigrd4ki15lymy7gixaxqyn";
|
||||
type = "gem";
|
||||
};
|
||||
version = "0.8.1";
|
||||
version = "0.8.2";
|
||||
};
|
||||
irb = {
|
||||
dependencies = [
|
||||
@@ -1200,10 +1205,10 @@
|
||||
];
|
||||
source = {
|
||||
remotes = [ "https://rubygems.org" ];
|
||||
sha256 = "1aja320qnimlnfc80wf2i2x8i99kl5sdzfacsfzzfzzs3vzysja3";
|
||||
sha256 = "01h8bdksg0cr8bw5dhlhr29ix33rp822jmshy6rdqz4lmk4mdgia";
|
||||
type = "gem";
|
||||
};
|
||||
version = "1.15.3";
|
||||
version = "1.16.0";
|
||||
};
|
||||
jmespath = {
|
||||
groups = [ "default" ];
|
||||
@@ -1390,15 +1395,16 @@
|
||||
groups = [
|
||||
"default"
|
||||
"development"
|
||||
"staging"
|
||||
"test"
|
||||
];
|
||||
platforms = [ ];
|
||||
source = {
|
||||
remotes = [ "https://rubygems.org" ];
|
||||
sha256 = "0dx316q03x6rpdbl610rdaj2vfd5s8fanixk21j4gv3h5f230nk5";
|
||||
sha256 = "1rk0n13c9nmk8di2x5gqk5r04vf8bkp7ff6z0b44wsmc7fndfpnz";
|
||||
type = "gem";
|
||||
};
|
||||
version = "2.24.1";
|
||||
version = "2.25.0";
|
||||
};
|
||||
mail = {
|
||||
dependencies = [
|
||||
@@ -1502,10 +1508,10 @@
|
||||
platforms = [ ];
|
||||
source = {
|
||||
remotes = [ "https://rubygems.org" ];
|
||||
sha256 = "04ihgnwp2ka68v82a6jpk9yqmazfwnbk3vsz6sb040kq6gf53dzd";
|
||||
sha256 = "0cnpnbn2yivj9gxkh8mjklbgnpx6nf7b8j2hky01dl0040hy0k76";
|
||||
type = "gem";
|
||||
};
|
||||
version = "1.7.3";
|
||||
version = "1.8.0";
|
||||
};
|
||||
multi_json = {
|
||||
groups = [ "default" ];
|
||||
@@ -1610,10 +1616,10 @@
|
||||
platforms = [ ];
|
||||
source = {
|
||||
remotes = [ "https://rubygems.org" ];
|
||||
sha256 = "1hcwwr2h8jnqqxmf8mfb52b0dchr7pm064ingflb78wa00qhgk6m";
|
||||
sha256 = "15anyh2ir3kdji93kw770xxwm5rspn9rzx9b9zh1h9gnclcd4173";
|
||||
type = "gem";
|
||||
};
|
||||
version = "1.18.10";
|
||||
version = "1.19.0";
|
||||
};
|
||||
oauth2 = {
|
||||
dependencies = [
|
||||
@@ -1717,10 +1723,10 @@
|
||||
platforms = [ ];
|
||||
source = {
|
||||
remotes = [ "https://rubygems.org" ];
|
||||
sha256 = "1q2zvkw34vk1vyhn5kp30783w1wzam9i9g5ygsdjn2gz59kzsw0i";
|
||||
sha256 = "0bf3m2ds78scmgacb1wx38zjj1czzkym0bdmgi9vn99rgr6j1qy6";
|
||||
type = "gem";
|
||||
};
|
||||
version = "1.0.2";
|
||||
version = "2.0.1";
|
||||
};
|
||||
omniauth_openid_connect = {
|
||||
dependencies = [
|
||||
@@ -1937,10 +1943,10 @@
|
||||
platforms = [ ];
|
||||
source = {
|
||||
remotes = [ "https://rubygems.org" ];
|
||||
sha256 = "00silqnlzzm97gn21lm39q95hjn058waqky44j25r67p9drjy1hh";
|
||||
sha256 = "11ggfikcs1lv17nhmhqyyp6z8nq5pkfcj6a904047hljkxm0qlvv";
|
||||
type = "gem";
|
||||
};
|
||||
version = "1.7.0";
|
||||
version = "1.9.0";
|
||||
};
|
||||
prometheus_exporter = {
|
||||
dependencies = [ "webrick" ];
|
||||
@@ -2010,6 +2016,7 @@
|
||||
groups = [
|
||||
"default"
|
||||
"development"
|
||||
"staging"
|
||||
"test"
|
||||
];
|
||||
platforms = [
|
||||
@@ -2028,10 +2035,10 @@
|
||||
];
|
||||
source = {
|
||||
remotes = [ "https://rubygems.org" ];
|
||||
sha256 = "0vii1xc7x81hicdbp7dlllhmbw5w3jy20shj696n0vfbbnm2hhw1";
|
||||
sha256 = "0x0r3gc66abv8i4dw0x0370b5hrshjfp6kpp7wbp178cy775fypb";
|
||||
type = "gem";
|
||||
};
|
||||
version = "5.2.6";
|
||||
version = "5.3.1";
|
||||
};
|
||||
public_suffix = {
|
||||
groups = [
|
||||
@@ -2180,15 +2187,16 @@
|
||||
groups = [
|
||||
"default"
|
||||
"development"
|
||||
"staging"
|
||||
"test"
|
||||
];
|
||||
platforms = [ ];
|
||||
source = {
|
||||
remotes = [ "https://rubygems.org" ];
|
||||
sha256 = "13brkq5xkj6lcdxj3f0k7v28hgrqhqxjlhd4y2vlicy5slgijdzp";
|
||||
sha256 = "0s48d2a0z5f0cg4npvzznf933vipi6j7gmk16yc913kpadkw4ybc";
|
||||
type = "gem";
|
||||
};
|
||||
version = "2.2.1";
|
||||
version = "2.3.1";
|
||||
};
|
||||
rails = {
|
||||
dependencies = [
|
||||
@@ -2380,10 +2388,10 @@
|
||||
];
|
||||
source = {
|
||||
remotes = [ "https://rubygems.org" ];
|
||||
sha256 = "0p4z1cs2zvkkvl0xiiy76ys1ipbhx0df15241jx7gnp61317qdbi";
|
||||
sha256 = "0qvky4s2fx5xbaz1brxanalqbcky3c7xbqd6dicpih860zgrjj29";
|
||||
type = "gem";
|
||||
};
|
||||
version = "6.16.1";
|
||||
version = "7.1.0";
|
||||
};
|
||||
redis = {
|
||||
dependencies = [ "redis-client" ];
|
||||
@@ -2461,6 +2469,27 @@
|
||||
};
|
||||
version = "1.7.0";
|
||||
};
|
||||
resolv = {
|
||||
groups = [ "default" ];
|
||||
platforms = [ ];
|
||||
source = {
|
||||
remotes = [ "https://rubygems.org" ];
|
||||
sha256 = "1bc3n2h2dpalms230rsh1zw0jr8nnpcm53x97b8in78y1p0f4372";
|
||||
type = "gem";
|
||||
};
|
||||
version = "0.7.0";
|
||||
};
|
||||
resolv-replace = {
|
||||
dependencies = [ "resolv" ];
|
||||
groups = [ "default" ];
|
||||
platforms = [ ];
|
||||
source = {
|
||||
remotes = [ "https://rubygems.org" ];
|
||||
sha256 = "0c1vb75a6wjn6cijlrpndqn2xia1nri1jpcigbibji57qqnwklkn";
|
||||
type = "gem";
|
||||
};
|
||||
version = "0.2.0";
|
||||
};
|
||||
responders = {
|
||||
dependencies = [
|
||||
"actionpack"
|
||||
@@ -3015,21 +3044,10 @@
|
||||
];
|
||||
source = {
|
||||
remotes = [ "https://rubygems.org" ];
|
||||
sha256 = "1v74k5yw7ndikr53wgbjn6j51p83qnzqbn9z4b53r102jcx3ri4r";
|
||||
sha256 = "1q92y9627yisykyscv0bdsrrgyaajc2qr56dwlzx7ysgigjv4z63";
|
||||
type = "gem";
|
||||
};
|
||||
version = "3.1.8";
|
||||
};
|
||||
strong_migrations = {
|
||||
dependencies = [ "activerecord" ];
|
||||
groups = [ "default" ];
|
||||
platforms = [ ];
|
||||
source = {
|
||||
remotes = [ "https://rubygems.org" ];
|
||||
sha256 = "09llhlw9ddsjyv6c59z3yjwdhrxc2q60a60wjvqhrhhy96dkmjlb";
|
||||
type = "gem";
|
||||
};
|
||||
version = "2.5.1";
|
||||
version = "3.2.0";
|
||||
};
|
||||
super_diff = {
|
||||
dependencies = [
|
||||
@@ -3090,15 +3108,16 @@
|
||||
groups = [
|
||||
"default"
|
||||
"development"
|
||||
"staging"
|
||||
"test"
|
||||
];
|
||||
platforms = [ ];
|
||||
source = {
|
||||
remotes = [ "https://rubygems.org" ];
|
||||
sha256 = "0gcarlmpfbmqnjvwfz44gdjhcmm634di7plcx2zdgwdhrhifhqw7";
|
||||
sha256 = "0wsy88vg2mazl039392hqrcwvs5nb9kq8jhhrrclir2px1gybag3";
|
||||
type = "gem";
|
||||
};
|
||||
version = "1.4.0";
|
||||
version = "1.5.0";
|
||||
};
|
||||
timeout = {
|
||||
groups = [
|
||||
@@ -3377,14 +3396,15 @@
|
||||
groups = [
|
||||
"default"
|
||||
"development"
|
||||
"staging"
|
||||
"test"
|
||||
];
|
||||
platforms = [ ];
|
||||
source = {
|
||||
remotes = [ "https://rubygems.org" ];
|
||||
sha256 = "119ypabas886gd0n9kiid3q41w76gz60s8qmiak6pljpkd56ps5j";
|
||||
sha256 = "12zcvhzfnlghzw03czy2ifdlyfpq0kcbqcmxqakfkbxxavrr1vrb";
|
||||
type = "gem";
|
||||
};
|
||||
version = "2.7.3";
|
||||
version = "2.7.4";
|
||||
};
|
||||
}
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
{
|
||||
"version": "0.37.3",
|
||||
"hash": "sha256-cZBT3ek5mzHbPr4aVHU47SNstEuBnpBNaCfaAe/IAEw=",
|
||||
"npmHash": "sha256-wDe1Zx9HyheS76ltLtDQ+f4M7ohu/pyRuRaGGCnhkQI="
|
||||
"version": "1.3.1",
|
||||
"hash": "sha256-ziOp6R00uaWdv7KHHPe+2H5bX5fRtHmwhfoiQSSqEn4=",
|
||||
"npmHash": "sha256-Y6tEaApfGXAtmy0W85+4qGbrEkUkrKXTssl7wXeVnQY="
|
||||
}
|
||||
|
||||
@@ -103,8 +103,19 @@ stdenv.mkDerivation (finalAttrs: {
|
||||
libnsl
|
||||
libnl
|
||||
];
|
||||
NIX_CFLAGS_LINK = "-lglib-2.0 -lpthread -ltirpc -lnl-3 -lnl-genl-3";
|
||||
env.NIX_CFLAGS_COMPILE = toString [ "-I${libtirpc.dev}/include/tirpc" ];
|
||||
|
||||
env = {
|
||||
NIX_CFLAGS_LINK = toString [
|
||||
"-lglib-2.0"
|
||||
"-lpthread"
|
||||
"-ltirpc"
|
||||
"-lnl-3"
|
||||
"-lnl-genl-3"
|
||||
];
|
||||
NIX_CFLAGS_COMPILE = toString [
|
||||
"-I${libtirpc.dev}/include/tirpc"
|
||||
];
|
||||
};
|
||||
postPatch = ''
|
||||
for patch in debian/patches/*.patch; do
|
||||
patch < $patch
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
diff --git a/frigate/data_processing/real_time/bird.py b/frigate/data_processing/real_time/bird.py
|
||||
index d547f2dd..402876b7 100644
|
||||
index 7851c0997..520440005 100644
|
||||
--- a/frigate/data_processing/real_time/bird.py
|
||||
+++ b/frigate/data_processing/real_time/bird.py
|
||||
@@ -21,7 +21,7 @@ from .api import RealTimeProcessorApi
|
||||
@@ -22,7 +22,7 @@ from .api import RealTimeProcessorApi
|
||||
try:
|
||||
from tflite_runtime.interpreter import Interpreter
|
||||
except ModuleNotFoundError:
|
||||
@@ -11,11 +11,46 @@ index d547f2dd..402876b7 100644
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
diff --git a/frigate/data_processing/real_time/custom_classification.py b/frigate/data_processing/real_time/custom_classification.py
|
||||
index 229383d9f..2c74a6575 100644
|
||||
--- a/frigate/data_processing/real_time/custom_classification.py
|
||||
+++ b/frigate/data_processing/real_time/custom_classification.py
|
||||
@@ -32,7 +32,7 @@ from .api import RealTimeProcessorApi
|
||||
try:
|
||||
from tflite_runtime.interpreter import Interpreter
|
||||
except ModuleNotFoundError:
|
||||
- from tensorflow.lite.python.interpreter import Interpreter
|
||||
+ from ai_edge_litert.interpreter import Interpreter
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
@@ -76,7 +76,7 @@ class CustomStateClassificationProcessor(RealTimeProcessorApi):
|
||||
try:
|
||||
from tflite_runtime.interpreter import Interpreter
|
||||
except ModuleNotFoundError:
|
||||
- from tensorflow.lite.python.interpreter import Interpreter
|
||||
+ from ai_edge_litert.interpreter import Interpreter
|
||||
|
||||
model_path = os.path.join(self.model_dir, "model.tflite")
|
||||
labelmap_path = os.path.join(self.model_dir, "labelmap.txt")
|
||||
diff --git a/frigate/detectors/detector_utils.py b/frigate/detectors/detector_utils.py
|
||||
index d732de871..d8930b2ae 100644
|
||||
--- a/frigate/detectors/detector_utils.py
|
||||
+++ b/frigate/detectors/detector_utils.py
|
||||
@@ -6,7 +6,7 @@ import numpy as np
|
||||
try:
|
||||
from tflite_runtime.interpreter import Interpreter, load_delegate
|
||||
except ModuleNotFoundError:
|
||||
- from tensorflow.lite.python.interpreter import Interpreter, load_delegate
|
||||
+ from ai_edge_litert.interpreter import Interpreter, load_delegate
|
||||
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
diff --git a/frigate/detectors/plugins/cpu_tfl.py b/frigate/detectors/plugins/cpu_tfl.py
|
||||
index 8a54363e..68ae558b 100644
|
||||
index 00351f519..6d336bb6b 100644
|
||||
--- a/frigate/detectors/plugins/cpu_tfl.py
|
||||
+++ b/frigate/detectors/plugins/cpu_tfl.py
|
||||
@@ -10,7 +10,7 @@ from frigate.detectors.detector_config import BaseDetectorConfig
|
||||
@@ -12,7 +12,7 @@ from ..detector_utils import tflite_detect_raw, tflite_init
|
||||
try:
|
||||
from tflite_runtime.interpreter import Interpreter
|
||||
except ModuleNotFoundError:
|
||||
@@ -25,23 +60,23 @@ index 8a54363e..68ae558b 100644
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
diff --git a/frigate/detectors/plugins/edgetpu_tfl.py b/frigate/detectors/plugins/edgetpu_tfl.py
|
||||
index 246d2dd4..e855bf87 100644
|
||||
index 2b94fde39..36c769b4b 100644
|
||||
--- a/frigate/detectors/plugins/edgetpu_tfl.py
|
||||
+++ b/frigate/detectors/plugins/edgetpu_tfl.py
|
||||
@@ -11,7 +11,7 @@ from frigate.detectors.detector_config import BaseDetectorConfig
|
||||
@@ -13,7 +13,7 @@ from frigate.detectors.detector_config import BaseDetectorConfig, ModelTypeEnum
|
||||
try:
|
||||
from tflite_runtime.interpreter import Interpreter, load_delegate
|
||||
except ModuleNotFoundError:
|
||||
- from tensorflow.lite.python.interpreter import Interpreter, load_delegate
|
||||
+ from ai_edge_litert.interpreter import Interpreter, load_delegate
|
||||
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
diff --git a/frigate/embeddings/onnx/face_embedding.py b/frigate/embeddings/onnx/face_embedding.py
|
||||
index eb04b43b..0c6c26fc 100644
|
||||
index 04d756897..75dfedc94 100644
|
||||
--- a/frigate/embeddings/onnx/face_embedding.py
|
||||
+++ b/frigate/embeddings/onnx/face_embedding.py
|
||||
@@ -14,7 +14,7 @@ from .runner import ONNXModelRunner
|
||||
@@ -17,7 +17,7 @@ from .base_embedding import BaseEmbedding
|
||||
try:
|
||||
from tflite_runtime.interpreter import Interpreter
|
||||
except ModuleNotFoundError:
|
||||
@@ -51,10 +86,10 @@ index eb04b43b..0c6c26fc 100644
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
diff --git a/frigate/events/audio.py b/frigate/events/audio.py
|
||||
index f2a217fd..82206b5a 100644
|
||||
index e88f2ae71..ad87d19c1 100644
|
||||
--- a/frigate/events/audio.py
|
||||
+++ b/frigate/events/audio.py
|
||||
@@ -36,7 +36,7 @@ from frigate.video import start_or_restart_ffmpeg, stop_ffmpeg
|
||||
@@ -43,7 +43,7 @@ from frigate.video import start_or_restart_ffmpeg, stop_ffmpeg
|
||||
try:
|
||||
from tflite_runtime.interpreter import Interpreter
|
||||
except ModuleNotFoundError:
|
||||
@@ -62,3 +97,4 @@ index f2a217fd..82206b5a 100644
|
||||
+ from ai_edge_litert.interpreter import Interpreter
|
||||
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
@@ -1,22 +0,0 @@
|
||||
diff --git a/frigate/comms/webpush.py b/frigate/comms/webpush.py
|
||||
index c5986d45..b767e19e 100644
|
||||
--- a/frigate/comms/webpush.py
|
||||
+++ b/frigate/comms/webpush.py
|
||||
@@ -17,7 +17,7 @@ from titlecase import titlecase
|
||||
from frigate.comms.base_communicator import Communicator
|
||||
from frigate.comms.config_updater import ConfigSubscriber
|
||||
from frigate.config import FrigateConfig
|
||||
-from frigate.const import CONFIG_DIR
|
||||
+from frigate.const import BASE_DIR, CONFIG_DIR
|
||||
from frigate.models import User
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
@@ -333,7 +333,7 @@ class WebPushClient(Communicator): # type: ignore[misc]
|
||||
|
||||
title = f"{titlecase(', '.join(sorted_objects).replace('_', ' '))}{' was' if state == 'end' else ''} detected in {titlecase(', '.join(payload['after']['data']['zones']).replace('_', ' '))}"
|
||||
message = f"Detected on {titlecase(camera.replace('_', ' '))}"
|
||||
- image = f"{payload['after']['thumb_path'].replace('/media/frigate', '')}"
|
||||
+ image = f"{payload['after']['thumb_path'].replace(BASE_DIR, '')}"
|
||||
|
||||
# if event is ongoing open to live view otherwise open to recordings view
|
||||
direct_url = f"/review?id={reviewId}" if state == "end" else f"/#{camera}"
|
||||
@@ -1,5 +1,5 @@
|
||||
diff --git a/frigate/config/camera/ffmpeg.py b/frigate/config/camera/ffmpeg.py
|
||||
index 04bbfac7..396bcc4b 100644
|
||||
index 2c1e4cdca..d1a1f7065 100644
|
||||
--- a/frigate/config/camera/ffmpeg.py
|
||||
+++ b/frigate/config/camera/ffmpeg.py
|
||||
@@ -1,4 +1,5 @@
|
||||
@@ -8,7 +8,7 @@ index 04bbfac7..396bcc4b 100644
|
||||
from typing import Union
|
||||
|
||||
from pydantic import Field, field_validator
|
||||
@@ -69,21 +70,11 @@ class FfmpegConfig(FrigateBaseModel):
|
||||
@@ -71,21 +72,11 @@ class FfmpegConfig(FrigateBaseModel):
|
||||
|
||||
@property
|
||||
def ffmpeg_path(self) -> str:
|
||||
@@ -33,10 +33,10 @@ index 04bbfac7..396bcc4b 100644
|
||||
|
||||
class CameraRoleEnum(str, Enum):
|
||||
diff --git a/frigate/record/export.py b/frigate/record/export.py
|
||||
index 0d3f96da..463bcff4 100644
|
||||
index d4b49bb4b..bbcccff61 100644
|
||||
--- a/frigate/record/export.py
|
||||
+++ b/frigate/record/export.py
|
||||
@@ -126,7 +126,7 @@ class RecordingExporter(threading.Thread):
|
||||
@@ -127,7 +127,7 @@ class RecordingExporter(threading.Thread):
|
||||
minutes = int(diff / 60)
|
||||
seconds = int(diff % 60)
|
||||
ffmpeg_cmd = [
|
||||
|
||||
@@ -0,0 +1,13 @@
|
||||
diff --git a/frigate/detectors/plugins/teflon_tfl.py b/frigate/detectors/plugins/teflon_tfl.py
|
||||
index 7e29d6630..98e446d84 100644
|
||||
--- a/frigate/detectors/plugins/teflon_tfl.py
|
||||
+++ b/frigate/detectors/plugins/teflon_tfl.py
|
||||
@@ -26,7 +26,7 @@ class TeflonTfl(DetectionApi):
|
||||
|
||||
def __init__(self, detector_config: TeflonDetectorConfig):
|
||||
# Location in Debian's mesa-teflon-delegate
|
||||
- delegate_library = "/usr/lib/teflon/libteflon.so"
|
||||
+ delegate_library = "@driverLink@/lib/libteflon.so"
|
||||
device_config = {}
|
||||
|
||||
interpreter = tflite_load_delegate_interpreter(
|
||||
@@ -1,19 +1,12 @@
|
||||
Disable the SimplifedLayerNormFusion optimization for onnxruntime embedding
|
||||
models to prevent a crash when using FP16 models (like jinna-clip-v1) with newer
|
||||
onnxruntime versions.
|
||||
|
||||
https://github.com/microsoft/onnxruntime/issues/26717#issuecomment-3800462654
|
||||
|
||||
|
||||
diff --git a/frigate/embeddings/onnx/runner.py b/frigate/embeddings/onnx/runner.py
|
||||
index c34c97a8d..dca91daae 100644
|
||||
--- a/frigate/embeddings/onnx/runner.py
|
||||
+++ b/frigate/embeddings/onnx/runner.py
|
||||
@@ -52,6 +52,7 @@ class ONNXModelRunner:
|
||||
model_path,
|
||||
providers=providers,
|
||||
provider_options=options,
|
||||
+ disabled_optimizers=["SimplifiedLayerNormFusion"],
|
||||
)
|
||||
|
||||
def get_input_names(self) -> list[str]:
|
||||
diff --git a/frigate/detectors/detection_runners.py b/frigate/detectors/detection_runners.py
|
||||
index fcbb41e66..5b4d3f310 100644
|
||||
--- a/frigate/detectors/detection_runners.py
|
||||
+++ b/frigate/detectors/detection_runners.py
|
||||
@@ -603,6 +603,7 @@ def get_optimized_runner(
|
||||
),
|
||||
providers=providers,
|
||||
provider_options=options,
|
||||
+ disabled_optimizers=["SimplifiedLayerNormFusion"],
|
||||
),
|
||||
model_type=model_type,
|
||||
)
|
||||
|
||||
@@ -1,6 +1,8 @@
|
||||
{
|
||||
lib,
|
||||
stdenv,
|
||||
replaceVars,
|
||||
addDriverRunpath,
|
||||
callPackage,
|
||||
python313Packages,
|
||||
fetchFromGitHub,
|
||||
@@ -9,18 +11,17 @@
|
||||
sqlite-vec,
|
||||
frigate,
|
||||
nixosTests,
|
||||
fetchpatch,
|
||||
}:
|
||||
|
||||
let
|
||||
version = "0.16.4";
|
||||
version = "0.17.0";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
name = "frigate-${version}-source";
|
||||
owner = "blakeblackshear";
|
||||
repo = "frigate";
|
||||
tag = "v${version}";
|
||||
hash = "sha256-TPiCT/z0YuoQkQsxyZsRMQa0XwqMLCgwMbrASOKrMjA=";
|
||||
hash = "sha256-K41tWnj0u+Fw+G++aPFfMa0uFYEvvZ0r6xNPQ7J1cYs=";
|
||||
};
|
||||
|
||||
frigate-web = callPackage ./web.nix {
|
||||
@@ -38,6 +39,9 @@ let
|
||||
hash = "sha256-95xtUzzIxxvDtpHX/5uCHnTQTB8Fc08DZGUOR/SdKLs=";
|
||||
};
|
||||
});
|
||||
|
||||
huggingface-hub = super.huggingface-hub_0;
|
||||
transformers = super.transformers_4;
|
||||
};
|
||||
};
|
||||
python3Packages = python.pkgs;
|
||||
@@ -77,27 +81,23 @@ python3Packages.buildPythonApplication rec {
|
||||
inherit src;
|
||||
|
||||
patches = [
|
||||
./constants.patch
|
||||
# Fixes hardcoded path /media/frigate/clips/faces. Remove in next version.
|
||||
(fetchpatch {
|
||||
url = "https://github.com/blakeblackshear/frigate/commit/b86e6e484f64bd43b64d7adebe78671a7a426edb.patch";
|
||||
hash = "sha256-1+n0n0yCtjfAHkXzsZdIF0iCVdPGmsG7l8/VTqBVEjU=";
|
||||
})
|
||||
# Always lookup ffmpeg from config setting
|
||||
./ffmpeg.patch
|
||||
|
||||
# Adjust libteflon.so location
|
||||
(replaceVars ./libteflon-driverlink-path.patch {
|
||||
inherit (addDriverRunpath) driverLink;
|
||||
})
|
||||
|
||||
# Use ai-edge-litert as tensorflow interpreter
|
||||
# https://github.com/blakeblackshear/frigate/pull/21876
|
||||
./ai-edge-litert.patch
|
||||
(fetchpatch {
|
||||
# peewee-migrate 0.14.x compat
|
||||
url = "https://github.com/blakeblackshear/frigate/commit/dde02cadb2168c44e9eb395ddfbb7b169096bd15.patch";
|
||||
excludes = [
|
||||
"docker/main/requirements-wheels.txt"
|
||||
"migrations/031_create_trigger_table.py"
|
||||
"migrations/032_add_password_changed_at.py"
|
||||
];
|
||||
hash = "sha256-RrmwjE4SHJIUOYfqcCtMy9Pht7UXhHcoAZlFQv9aQFw=";
|
||||
})
|
||||
|
||||
# Disable failing optimization in onnxruntime
|
||||
# https://github.com/microsoft/onnxruntime/issues/26717
|
||||
./onnxruntime-compat.patch
|
||||
|
||||
# Fix excessive trailing whitespaces in process commandlines
|
||||
# https://github.com/blakeblackshear/frigate/pull/22089
|
||||
./proc-cmdline-strip.patch
|
||||
];
|
||||
@@ -107,7 +107,7 @@ python3Packages.buildPythonApplication rec {
|
||||
|
||||
substituteInPlace \
|
||||
frigate/app.py \
|
||||
frigate/test/test_{http,storage}.py \
|
||||
frigate/test/test_storage.py \
|
||||
frigate/test/http_api/base_http_test.py \
|
||||
--replace-fail "Router(migrate_db)" 'Router(migrate_db, "${placeholder "out"}/share/frigate/migrations")'
|
||||
|
||||
@@ -118,7 +118,13 @@ python3Packages.buildPythonApplication rec {
|
||||
--replace-fail "/config" "/var/lib/frigate" \
|
||||
--replace-fail "{CONFIG_DIR}/model_cache" "/var/cache/frigate/model_cache"
|
||||
|
||||
substituteInPlace frigate/comms/{config,embeddings}_updater.py frigate/comms/{zmq_proxy,inter_process}.py \
|
||||
substituteInPlace \
|
||||
frigate/comms/config_updater.py \
|
||||
frigate/comms/embeddings_updater.py \
|
||||
frigate/comms/inter_process.py \
|
||||
frigate/comms/object_detector_signaler.py \
|
||||
frigate/comms/zmq_proxy.py \
|
||||
frigate/detectors/plugins/zmq_ipc.py \
|
||||
--replace-fail "ipc:///tmp/cache" "ipc:///run/frigate"
|
||||
|
||||
substituteInPlace frigate/db/sqlitevecq.py \
|
||||
@@ -140,25 +146,27 @@ python3Packages.buildPythonApplication rec {
|
||||
dontBuild = true;
|
||||
|
||||
dependencies = with python3Packages; [
|
||||
# docker/main/requirements.txt
|
||||
scikit-build
|
||||
# docker/main/requirements-wheel.txt
|
||||
# TODO: degirum (no source repo, binary wheels only)
|
||||
ai-edge-litert
|
||||
aiofiles
|
||||
aiohttp
|
||||
appdirs
|
||||
argcomplete
|
||||
contextlib2
|
||||
click
|
||||
contextlib2
|
||||
cryptography
|
||||
distlib
|
||||
fastapi
|
||||
faster-whisper
|
||||
filelock
|
||||
google-genai
|
||||
importlib-metadata
|
||||
importlib-resources
|
||||
google-generativeai
|
||||
joserfc
|
||||
levenshtein
|
||||
librosa
|
||||
markupsafe
|
||||
memray
|
||||
netaddr
|
||||
netifaces
|
||||
norfair
|
||||
@@ -184,14 +192,18 @@ python3Packages.buildPythonApplication rec {
|
||||
py-vapid
|
||||
pywebpush
|
||||
pyzmq
|
||||
rapidfuzz
|
||||
requests
|
||||
ruamel-yaml
|
||||
scipy
|
||||
setproctitle
|
||||
shapely
|
||||
sherpa-onnx
|
||||
slowapi
|
||||
soundfile
|
||||
starlette
|
||||
starlette-context
|
||||
tensorflow
|
||||
titlecase
|
||||
transformers
|
||||
tzlocal
|
||||
|
||||
@@ -1,13 +1,8 @@
|
||||
Strip trailing whitespace from process commandlines. This is annoying for exact
|
||||
process matches against Prometheus labels.
|
||||
|
||||
https://github.com/blakeblackshear/frigate/pull/22089
|
||||
|
||||
diff --git a/frigate/util/services.py b/frigate/util/services.py
|
||||
index b31a7eea3..f1e8f0f5f 100644
|
||||
index 64d83833d..912ce67bd 100644
|
||||
--- a/frigate/util/services.py
|
||||
+++ b/frigate/util/services.py
|
||||
@@ -118,7 +118,7 @@ def get_cpu_stats() -> dict[str, dict]:
|
||||
@@ -121,7 +121,7 @@ def get_cpu_stats() -> dict[str, dict]:
|
||||
pid = str(process.info["pid"])
|
||||
try:
|
||||
cpu_percent = process.info["cpu_percent"]
|
||||
@@ -16,7 +11,7 @@ index b31a7eea3..f1e8f0f5f 100644
|
||||
|
||||
with open(f"/proc/{pid}/stat", "r") as f:
|
||||
stats = f.readline().split()
|
||||
@@ -152,7 +152,7 @@ def get_cpu_stats() -> dict[str, dict]:
|
||||
@@ -155,7 +155,7 @@ def get_cpu_stats() -> dict[str, dict]:
|
||||
"cpu": str(cpu_percent),
|
||||
"cpu_average": str(round(cpu_average_usage, 2)),
|
||||
"mem": f"{mem_pct}",
|
||||
|
||||
@@ -18,21 +18,20 @@ buildNpmPackage {
|
||||
--replace-fail '/BASE_PATH/' '/'
|
||||
|
||||
substituteInPlace \
|
||||
src/pages/Exports.tsx \
|
||||
src/components/preview/ScrubbablePreview.tsx \
|
||||
src/components/card/AnimatedEventCard.tsx \
|
||||
src/components/card/ExportCard.tsx \
|
||||
src/components/card/ReviewCard.tsx \
|
||||
src/components/card/AnimatedEventCard.tsx \
|
||||
src/components/player/PreviewThumbnailPlayer.tsx \
|
||||
src/components/preview/ScrubbablePreview.tsx \
|
||||
src/pages/Exports.tsx \
|
||||
src/views/system/StorageMetrics.tsx \
|
||||
src/components/timeline/EventSegment.tsx \
|
||||
--replace-fail "/media/frigate" "/var/lib/frigate" \
|
||||
|
||||
substituteInPlace src/views/system/StorageMetrics.tsx \
|
||||
--replace-fail "/tmp/cache" "/var/cache/frigate"
|
||||
'';
|
||||
|
||||
npmDepsHash = "sha256-CrK/6BaKmKIxlohEZdGEEKJkioszBUupyKQx4nBeLqI=";
|
||||
npmDepsHash = "sha256-iIqP3pspkDbaXZkZ5MIT/GVGiKBJCkFXQ7Av5h1rWKk=";
|
||||
|
||||
installPhase = ''
|
||||
cp -rv dist/ $out
|
||||
|
||||
@@ -40,13 +40,12 @@ rustPlatform.buildRustPackage (finalAttrs: {
|
||||
|
||||
env = {
|
||||
OPENSSL_NO_VENDOR = 1;
|
||||
NIX_CFLAGS_LINK = toString [
|
||||
"-L${lib.getLib openssl}/lib"
|
||||
"-L${lib.getLib sqlite}/lib"
|
||||
];
|
||||
};
|
||||
|
||||
NIX_CFLAGS_LINK = [
|
||||
"-L${lib.getLib openssl}/lib"
|
||||
"-L${lib.getLib sqlite}/lib"
|
||||
];
|
||||
|
||||
passthru.updateScript = unstableGitUpdater { };
|
||||
|
||||
meta = {
|
||||
|
||||
@@ -13,23 +13,23 @@
|
||||
|
||||
buildNpmPackage.override { nodejs = nodejs_22; } (finalAttrs: {
|
||||
pname = "homebridge-config-ui-x";
|
||||
version = "5.17.0";
|
||||
version = "5.18.0";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "homebridge";
|
||||
repo = "homebridge-config-ui-x";
|
||||
tag = "v${finalAttrs.version}";
|
||||
hash = "sha256-6s3Ia9vWuYJjNnE4iQz8jbOKjcn5dGe8DjpGcsrSwEc=";
|
||||
hash = "sha256-bdE/uu3uh3qgPNaDKU47wD1LtER/wJfLmwp2J624rK4=";
|
||||
};
|
||||
|
||||
# Deps hash for the root package
|
||||
npmDepsHash = "sha256-HrTnzoN/Mku60U84bh0I+ImlyCLVcfMlOAfjkezHErE=";
|
||||
npmDepsHash = "sha256-pbmnAAQs6RVwklAoKY4LY0k+nheX2BeAgkQEFNVDofc=";
|
||||
|
||||
# Deps src and hash for ui subdirectory
|
||||
npmDeps_ui = fetchNpmDeps {
|
||||
name = "npm-deps-ui";
|
||||
src = "${finalAttrs.src}/ui";
|
||||
hash = "sha256-RNzPrSdHYEd8U3FD9h7DiLCWVuRojZgL+Q5mmsPm9wc=";
|
||||
hash = "sha256-uBB2WxbCXJL2Ys6sMFcLUlh88TLAz3U+XMhvDc8yFPk=";
|
||||
};
|
||||
|
||||
# Need to also run npm ci in the ui subdirectory
|
||||
|
||||
@@ -47,11 +47,15 @@ stdenv.mkDerivation (finalAttrs: {
|
||||
];
|
||||
nativeBuildInputs = [ makeWrapper ];
|
||||
|
||||
env.NIX_CFLAGS_COMPILE = toString [
|
||||
"-I${lib.getInclude SDL2}/include/SDL2"
|
||||
"-I${opusfile.dev}/include/opus"
|
||||
];
|
||||
NIX_CFLAGS_LINK = [ "-lSDL2" ];
|
||||
env = {
|
||||
NIX_CFLAGS_COMPILE = toString [
|
||||
"-I${lib.getInclude SDL2}/include/SDL2"
|
||||
"-I${opusfile.dev}/include/opus"
|
||||
];
|
||||
NIX_CFLAGS_LINK = toString [
|
||||
"-lSDL2"
|
||||
];
|
||||
};
|
||||
|
||||
postInstall = ''
|
||||
for i in `find $out/opt/iortcw -maxdepth 1 -type f -executable`; do
|
||||
|
||||
@@ -78,7 +78,10 @@ stdenv.mkDerivation (finalAttrs: {
|
||||
'';
|
||||
|
||||
# Needed on Darwin.
|
||||
NIX_CFLAGS_LINK = "-logg -lvorbis";
|
||||
env.NIX_CFLAGS_LINK = toString [
|
||||
"-logg"
|
||||
"-lvorbis"
|
||||
];
|
||||
|
||||
# Broken with libopus >= 1.6.0
|
||||
doCheck = false;
|
||||
|
||||
@@ -47,14 +47,14 @@ assert
|
||||
|
||||
python.pkgs.buildPythonApplication rec {
|
||||
pname = "music-assistant";
|
||||
version = "2.7.8";
|
||||
version = "2.7.9";
|
||||
pyproject = true;
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "music-assistant";
|
||||
repo = "server";
|
||||
tag = version;
|
||||
hash = "sha256-o17H8cmMC8szh/hfgdq0JWCPh45TkrhuXOikr+DcBw8=";
|
||||
hash = "sha256-c6WTalpjaZcUvppyYaTP03ErX5b+k7fUbphj58FVBS8=";
|
||||
};
|
||||
|
||||
patches = [
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
# Do not edit manually, run ./update-providers.py
|
||||
|
||||
{
|
||||
version = "2.7.8";
|
||||
version = "2.7.9";
|
||||
providers = {
|
||||
airplay =
|
||||
ps: with ps; [
|
||||
|
||||
@@ -93,7 +93,7 @@ stdenv.mkDerivation rec {
|
||||
cp $notoFont $out/share/games/openspades/Resources/
|
||||
'';
|
||||
|
||||
NIX_CFLAGS_LINK = "-lopenal";
|
||||
env.NIX_CFLAGS_LINK = "-lopenal";
|
||||
|
||||
meta = {
|
||||
description = "Compatible client of Ace of Spades 0.75";
|
||||
|
||||
@@ -1,12 +0,0 @@
|
||||
diff --git i/src/Implicit/impSurface.h w/src/Implicit/impSurface.h
|
||||
index 41fab81..027587f 100644
|
||||
--- i/src/Implicit/impSurface.h
|
||||
+++ w/src/Implicit/impSurface.h
|
||||
@@ -25,6 +25,7 @@
|
||||
#ifdef WIN32
|
||||
#include <windows.h>
|
||||
#endif
|
||||
+#include <cstddef>
|
||||
#include <vector>
|
||||
#include <GL/gl.h>
|
||||
|
||||
@@ -1,54 +0,0 @@
|
||||
{
|
||||
lib,
|
||||
stdenv,
|
||||
fetchurl,
|
||||
autoconf,
|
||||
pkg-config,
|
||||
libx11,
|
||||
libxext,
|
||||
libGLU,
|
||||
libGL,
|
||||
imagemagick6,
|
||||
libtiff,
|
||||
bzip2,
|
||||
}:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
version = "0.9.1";
|
||||
pname = "rss-glx";
|
||||
|
||||
src = fetchurl {
|
||||
url = "mirror://sourceforge/rss-glx/rss-glx_${version}.tar.bz2";
|
||||
sha256 = "1aikafjqrfmv23jnrrm5d56dg6injh4l67zjdxzdapv9chw7g3cg";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [
|
||||
autoconf
|
||||
pkg-config
|
||||
];
|
||||
buildInputs = [
|
||||
libGLU
|
||||
libGL
|
||||
libx11
|
||||
libxext
|
||||
imagemagick6
|
||||
libtiff
|
||||
bzip2
|
||||
];
|
||||
|
||||
patches = [
|
||||
./cstddef.patch
|
||||
];
|
||||
|
||||
env.NIX_CFLAGS_COMPILE = "-I${imagemagick6.dev}/include/ImageMagick";
|
||||
|
||||
meta = {
|
||||
description = "Really Slick Screensavers Port to GLX";
|
||||
longDescription = ''
|
||||
This package currently contains all of the screensavers from the
|
||||
original collection, plus a few others.
|
||||
'';
|
||||
license = lib.licenses.gpl2Only;
|
||||
platforms = lib.platforms.linux;
|
||||
};
|
||||
}
|
||||
@@ -26,14 +26,14 @@
|
||||
|
||||
stdenv.mkDerivation (finalAttrs: {
|
||||
pname = "s7";
|
||||
version = "11.7-unstable-2026-02-20";
|
||||
version = "11.7-unstable-2026-02-27";
|
||||
|
||||
src = fetchFromGitLab {
|
||||
domain = "cm-gitlab.stanford.edu";
|
||||
owner = "bil";
|
||||
repo = "s7";
|
||||
rev = "d4abc485036d30b65bc80ef041690a1d1fc371c8";
|
||||
hash = "sha256-nJskuS4WM58na0ohsNppqKiOLa98TInXkaWvPzhctoY=";
|
||||
rev = "762eed4ddfc1134f8b18b74a0cc39434a65bc64c";
|
||||
hash = "sha256-3ww14LOWres0HA/4TRNMmNFkaFVqXBOrpsJgFv6qaYY=";
|
||||
};
|
||||
|
||||
buildInputs =
|
||||
|
||||
@@ -7,14 +7,14 @@
|
||||
|
||||
buildGoModule (finalAttrs: {
|
||||
pname = "tempo";
|
||||
version = "2.10.0";
|
||||
version = "2.10.1";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "grafana";
|
||||
repo = "tempo";
|
||||
tag = "v${finalAttrs.version}";
|
||||
fetchSubmodules = true;
|
||||
hash = "sha256-ciiJg8PdvifYGalfo/V8RFTKkZ8pHM9RlwfGRKeRAhU=";
|
||||
hash = "sha256-XhtG3+0Xy7Bi3RuY5MNcHB7Hp6lXjzksdGu7eztXmnU=";
|
||||
};
|
||||
|
||||
vendorHash = null;
|
||||
|
||||
@@ -9,19 +9,19 @@
|
||||
|
||||
rustPlatform.buildRustPackage (finalAttrs: {
|
||||
pname = "tombi";
|
||||
version = "0.7.31";
|
||||
version = "0.7.33";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "tombi-toml";
|
||||
repo = "tombi";
|
||||
tag = "v${finalAttrs.version}";
|
||||
hash = "sha256-1md4NoDoqTcIPXzMK9IdYk8PCf0jcZIUcOViAm7N+90=";
|
||||
hash = "sha256-MNzz4mgHiKdmrkKwh2E6XlQK2jelEnjoFHolpZJxjw0=";
|
||||
};
|
||||
|
||||
# Tests relies on the presence of network
|
||||
doCheck = false;
|
||||
cargoBuildFlags = [ "--package tombi-cli" ];
|
||||
cargoHash = "sha256-a7+M+KOYD3SboIzg1kmNV+kehHsae0/+C6hneBeRFGo=";
|
||||
cargoHash = "sha256-5EZNL5aBdS+1TI4Gx2AQw6Di+5rYQBR3ukexSnFFIcs=";
|
||||
|
||||
postPatch = ''
|
||||
substituteInPlace Cargo.toml \
|
||||
|
||||
@@ -85,7 +85,9 @@ stdenv.mkDerivation (finalAttrs: {
|
||||
# cross compiles correctly but needs the following
|
||||
lib.optionals (stdenv.hostPlatform != stdenv.buildPlatform) [ "--disable-tool-name-check" ];
|
||||
|
||||
NIX_CFLAGS_LINK = lib.optionalString stdenv.cc.isGNU "-lgcc_s";
|
||||
env = lib.optionalAttrs stdenv.cc.isGNU {
|
||||
NIX_CFLAGS_LINK = "-lgcc_s";
|
||||
};
|
||||
|
||||
postPatch = ''
|
||||
substituteInPlace contrib/client-tools/torify \
|
||||
|
||||
@@ -30,12 +30,21 @@ stdenv.mkDerivation (finalAttrs: {
|
||||
sha256 = "1drhh08cqqkwv1yz3z4ngkplr23pqqrdx6cp8c3isy320gy25cvb";
|
||||
};
|
||||
|
||||
# Workaround build failure on -fno-common toolchains:
|
||||
# ld: r_gl.h:52: multiple definition of `qglGenBuffers';
|
||||
# r_gl.h:52: first defined here
|
||||
# TODO: drop once release contains upstream fix:
|
||||
# https://github.com/ufoai/ufoai/commit/8a3075fffdad294e
|
||||
env.NIX_CFLAGS_COMPILE = "-fcommon";
|
||||
env = {
|
||||
# Workaround build failure on -fno-common toolchains:
|
||||
# ld: r_gl.h:52: multiple definition of `qglGenBuffers';
|
||||
# r_gl.h:52: first defined here
|
||||
# TODO: drop once release contains upstream fix:
|
||||
# https://github.com/ufoai/ufoai/commit/8a3075fffdad294e
|
||||
NIX_CFLAGS_COMPILE = "-fcommon";
|
||||
NIX_CFLAGS_LINK = toString [
|
||||
# to avoid occasional runtime error in finding libgcc_s.so.1
|
||||
"-lgcc_s"
|
||||
# tests are underlinked against libm:
|
||||
# ld: release-linux-x86_64/testall/client/sound/s_mix.c.o: undefined reference to symbol 'acos@@GLIBC_2.2.5'
|
||||
"-lm"
|
||||
];
|
||||
};
|
||||
|
||||
preConfigure = ''tar xvf "${finalAttrs.srcData}"'';
|
||||
|
||||
@@ -60,14 +69,6 @@ stdenv.mkDerivation (finalAttrs: {
|
||||
cunit
|
||||
];
|
||||
|
||||
NIX_CFLAGS_LINK = [
|
||||
# to avoid occasional runtime error in finding libgcc_s.so.1
|
||||
"-lgcc_s"
|
||||
# tests are underlinked against libm:
|
||||
# ld: release-linux-x86_64/testall/client/sound/s_mix.c.o: undefined reference to symbol 'acos@@GLIBC_2.2.5'
|
||||
"-lm"
|
||||
];
|
||||
|
||||
meta = {
|
||||
homepage = "http://ufoai.org";
|
||||
description = "Squad-based tactical strategy game in the tradition of X-Com";
|
||||
|
||||
@@ -6,14 +6,14 @@
|
||||
|
||||
python3Packages.buildPythonApplication (finalAttrs: {
|
||||
pname = "wyoming-faster-whisper";
|
||||
version = "2.5.0";
|
||||
version = "3.1.0";
|
||||
pyproject = true;
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "rhasspy";
|
||||
repo = "wyoming-faster-whisper";
|
||||
tag = "v${finalAttrs.version}";
|
||||
hash = "sha256-MKB6gZdGdAYoNK8SRiDHG8xtMZ5mXdaSn+bH4T6o/K4=";
|
||||
hash = "sha256-p1FCyj/D7ndKJD1/V5YzhT0xlkg61DSx2m3DCELmPO8=";
|
||||
};
|
||||
|
||||
build-system = with python3Packages; [
|
||||
@@ -25,18 +25,33 @@ python3Packages.buildPythonApplication (finalAttrs: {
|
||||
"wyoming"
|
||||
];
|
||||
|
||||
pythonRemoveDeps = [
|
||||
# https://github.com/rhasspy/wyoming-faster-whisper/pull/81
|
||||
"requests"
|
||||
];
|
||||
|
||||
dependencies = with python3Packages; [
|
||||
faster-whisper
|
||||
wyoming
|
||||
];
|
||||
|
||||
optional-dependencies = {
|
||||
transformers =
|
||||
with python3Packages;
|
||||
[
|
||||
transformers
|
||||
]
|
||||
++ transformers.optional-dependencies.torch;
|
||||
optional-dependencies = with python3Packages; {
|
||||
transformers = [
|
||||
transformers
|
||||
]
|
||||
++ transformers.optional-dependencies.torch;
|
||||
sherpa = [
|
||||
sherpa-onnx
|
||||
];
|
||||
onnx_asr = [
|
||||
onnx-asr
|
||||
]
|
||||
++ onnx-asr.optional-dependencies.cpu
|
||||
++ onnx-asr.optional-dependencies.hub;
|
||||
zeroconf = [
|
||||
wyoming
|
||||
]
|
||||
++ wyoming.optional-dependencies.zeroconf;
|
||||
};
|
||||
|
||||
pythonImportsCheck = [
|
||||
|
||||
@@ -28,7 +28,7 @@ stdenv.mkDerivation (finalAttrs: {
|
||||
motif
|
||||
];
|
||||
|
||||
NIX_CFLAGS_LINK = "-lXpm";
|
||||
env.NIX_CFLAGS_LINK = "-lXpm";
|
||||
|
||||
configureFlags = [
|
||||
"--with-x"
|
||||
|
||||
@@ -16,13 +16,13 @@
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "xv";
|
||||
version = "6.1.0";
|
||||
version = "6.2.0";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "jasper-software";
|
||||
repo = "xv";
|
||||
rev = "v${version}";
|
||||
sha256 = "sha256-bq9xEGQRzWZ3/Unu49q6EW9/XSCgpalyXn4l4Mg255g=";
|
||||
sha256 = "sha256-LylTpHTifH/n2vAPlLQooVM3Oox2BJ9eoQYx3USQ/No=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [ cmake ];
|
||||
|
||||
@@ -50,7 +50,7 @@ stdenv.mkDerivation rec {
|
||||
|
||||
sourceRoot = ".";
|
||||
|
||||
NIX_CFLAGS_LINK = [
|
||||
env.NIX_CFLAGS_LINK = toString [
|
||||
"-lopenal"
|
||||
"-lfluidsynth"
|
||||
];
|
||||
|
||||
@@ -103,18 +103,20 @@ stdenv.mkDerivation (finalAttrs: {
|
||||
]
|
||||
++ lib.optional withEditor wxGTK32;
|
||||
|
||||
env.NIX_CFLAGS_COMPILE = toString [
|
||||
"-I${xorgproto}/include"
|
||||
"-I${libx11.dev}/include"
|
||||
"-I${libxcursor.dev}/include"
|
||||
"-I${SDL2}/include/SDL2"
|
||||
"-I${fmt_9.dev}/include"
|
||||
"-I${nvidia-texture-tools.dev}/include"
|
||||
];
|
||||
env = {
|
||||
NIX_CFLAGS_COMPILE = toString [
|
||||
"-I${xorgproto}/include"
|
||||
"-I${libx11.dev}/include"
|
||||
"-I${libxcursor.dev}/include"
|
||||
"-I${SDL2}/include/SDL2"
|
||||
"-I${fmt_9.dev}/include"
|
||||
"-I${nvidia-texture-tools.dev}/include"
|
||||
];
|
||||
|
||||
NIX_CFLAGS_LINK = toString [
|
||||
"-L${nvidia-texture-tools.lib}/lib/static"
|
||||
];
|
||||
NIX_CFLAGS_LINK = toString [
|
||||
"-L${nvidia-texture-tools.lib}/lib/static"
|
||||
];
|
||||
};
|
||||
|
||||
patches = [
|
||||
./rootdir_env.patch
|
||||
|
||||
+1
-1
@@ -17855,7 +17855,7 @@ self: {
|
||||
badPlatforms = lib.platforms.darwin;
|
||||
hydraPlatforms = lib.platforms.none;
|
||||
}
|
||||
) { inherit (pkgs) pfstools; };
|
||||
) { pfstools = null; };
|
||||
|
||||
HERA = callPackage (
|
||||
{
|
||||
|
||||
@@ -60,7 +60,7 @@ stdenv.mkDerivation rec {
|
||||
];
|
||||
|
||||
# Fix broken DT_NEEDED in lib/redland/librdf_storage_sqlite.so.
|
||||
NIX_CFLAGS_LINK = "-lraptor2";
|
||||
env.NIX_CFLAGS_LINK = "-lraptor2";
|
||||
|
||||
doCheck = false; # fails 1 out of 17 tests with a segmentation fault
|
||||
|
||||
|
||||
@@ -20,14 +20,14 @@
|
||||
|
||||
buildPythonPackage rec {
|
||||
pname = "aiosendspin";
|
||||
version = "3.0.1";
|
||||
version = "2.1.0";
|
||||
pyproject = true;
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "Sendspin";
|
||||
repo = "aiosendspin";
|
||||
tag = version;
|
||||
hash = "sha256-Z0hQyJayA/8OR6nkKxd1HfjskX+WBBkBl7l8rleV+fo=";
|
||||
hash = "sha256-9VhNtfXH2r/cGkscz51PIK2/66pPOGv0S0IpO0wFvO4=";
|
||||
};
|
||||
|
||||
# https://github.com/Sendspin/aiosendspin/blob/1.2.0/pyproject.toml#L7
|
||||
@@ -55,6 +55,9 @@ buildPythonPackage rec {
|
||||
"aiosendspin"
|
||||
];
|
||||
|
||||
# needs manual compat testing with music-assistant (sendspin provider)
|
||||
passthru.skipBulkUpdate = true; # nixpkgs-update: no auto update
|
||||
|
||||
meta = {
|
||||
changelog = "https://github.com/Sendspin/aiosendspin/releases/tag/${src.tag}";
|
||||
description = "Async Python library implementing the Sendspin Protocol";
|
||||
|
||||
@@ -9,18 +9,23 @@
|
||||
|
||||
buildPythonPackage rec {
|
||||
pname = "cucumber-expressions";
|
||||
version = "18.1.0";
|
||||
version = "19.0.0";
|
||||
pyproject = true;
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "cucumber";
|
||||
repo = "cucumber-expressions";
|
||||
tag = "v${version}";
|
||||
hash = "sha256-X/ukgf5+Tn0G9E40W8KsVfo3f0NYEOnYWag4IXmHjY8=";
|
||||
hash = "sha256-0KuHvByHYx7/mjySfWIKp1+ZYw+XNO25eoo5DhPcUsY=";
|
||||
};
|
||||
|
||||
sourceRoot = "${src.name}/python";
|
||||
|
||||
postPatch = ''
|
||||
substituteInPlace pyproject.toml \
|
||||
--replace-fail "uv_build>=0.9.0,<0.10.0" uv_build
|
||||
'';
|
||||
|
||||
build-system = [ uv-build ];
|
||||
|
||||
pythonImportsCheck = [ "cucumber_expressions" ];
|
||||
|
||||
@@ -5,27 +5,30 @@
|
||||
pytestCheckHook,
|
||||
pytest-html,
|
||||
pyyaml,
|
||||
setuptools,
|
||||
setuptools-scm,
|
||||
uv-build,
|
||||
}:
|
||||
|
||||
buildPythonPackage rec {
|
||||
pname = "cucumber-tag-expressions";
|
||||
version = "7.0.0";
|
||||
version = "9.1.0";
|
||||
pyproject = true;
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "cucumber";
|
||||
repo = "tag-expressions";
|
||||
tag = "v${version}";
|
||||
hash = "sha256-U8x7c4NeP9GdwormQD79RWcAA2B39Yvrf/Zk0xTUtNA=";
|
||||
hash = "sha256-jkuez7C3YDGmv484Lmc5PszVbnVXkcC12RryvTJkxxg=";
|
||||
};
|
||||
|
||||
sourceRoot = "${src.name}/python";
|
||||
|
||||
postPatch = ''
|
||||
substituteInPlace pyproject.toml \
|
||||
--replace-fail "uv_build>=0.10.0,<0.11.0" uv_build
|
||||
'';
|
||||
|
||||
build-system = [
|
||||
setuptools
|
||||
setuptools-scm
|
||||
uv-build
|
||||
];
|
||||
|
||||
nativeCheckInputs = [
|
||||
@@ -35,6 +38,7 @@ buildPythonPackage rec {
|
||||
];
|
||||
|
||||
meta = {
|
||||
changelog = "https://github.com/cucumber/tag-expressions/blob/${src.tag}/CHANGELOG.md";
|
||||
homepage = "https://github.com/cucumber/tag-expressions";
|
||||
description = "Provides tag-expression parser for cucumber/behave";
|
||||
license = lib.licenses.mit;
|
||||
|
||||
@@ -0,0 +1,124 @@
|
||||
{
|
||||
lib,
|
||||
buildPythonPackage,
|
||||
fetchFromGitHub,
|
||||
|
||||
# build-system
|
||||
setuptools,
|
||||
|
||||
# dependencies
|
||||
filelock,
|
||||
fsspec,
|
||||
hf-xet,
|
||||
packaging,
|
||||
pyyaml,
|
||||
requests,
|
||||
tqdm,
|
||||
typing-extensions,
|
||||
|
||||
# optional-dependencies
|
||||
# cli
|
||||
inquirerpy,
|
||||
# inference
|
||||
aiohttp,
|
||||
# torch
|
||||
torch,
|
||||
safetensors,
|
||||
# hf_transfer
|
||||
hf-transfer,
|
||||
# fastai
|
||||
toml,
|
||||
fastai,
|
||||
fastcore,
|
||||
# tensorflow
|
||||
tensorflow,
|
||||
pydot,
|
||||
graphviz,
|
||||
# tensorflow-testing
|
||||
keras,
|
||||
|
||||
# tests
|
||||
versionCheckHook,
|
||||
}:
|
||||
|
||||
buildPythonPackage rec {
|
||||
pname = "huggingface-hub";
|
||||
version = "0.36.2";
|
||||
pyproject = true;
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "huggingface";
|
||||
repo = "huggingface_hub";
|
||||
tag = "v${version}";
|
||||
hash = "sha256-cUp5Mm8vgJI/0N/9inQVedGWRde8lioduFoccq6b7UE=";
|
||||
};
|
||||
|
||||
build-system = [ setuptools ];
|
||||
|
||||
dependencies = [
|
||||
filelock
|
||||
fsspec
|
||||
hf-xet
|
||||
packaging
|
||||
pyyaml
|
||||
requests
|
||||
tqdm
|
||||
typing-extensions
|
||||
];
|
||||
|
||||
optional-dependencies = {
|
||||
all = [
|
||||
|
||||
];
|
||||
cli = [
|
||||
inquirerpy
|
||||
];
|
||||
inference = [
|
||||
aiohttp
|
||||
];
|
||||
torch = [
|
||||
torch
|
||||
safetensors
|
||||
]
|
||||
++ safetensors.optional-dependencies.torch;
|
||||
hf_transfer = [
|
||||
hf-transfer
|
||||
];
|
||||
fastai = [
|
||||
toml
|
||||
fastai
|
||||
fastcore
|
||||
];
|
||||
tensorflow = [
|
||||
tensorflow
|
||||
pydot
|
||||
graphviz
|
||||
];
|
||||
tensorflow-testing = [
|
||||
tensorflow
|
||||
keras
|
||||
];
|
||||
hf_xet = [
|
||||
hf-xet
|
||||
];
|
||||
};
|
||||
|
||||
nativeCheckInputs = [
|
||||
versionCheckHook
|
||||
];
|
||||
versionCheckProgramArg = "version";
|
||||
|
||||
pythonImportsCheck = [ "huggingface_hub" ];
|
||||
|
||||
meta = {
|
||||
description = "Download and publish models and other files on the huggingface.co hub";
|
||||
mainProgram = "hf";
|
||||
homepage = "https://github.com/huggingface/huggingface_hub";
|
||||
changelog = "https://github.com/huggingface/huggingface_hub/releases/tag/v${version}";
|
||||
license = lib.licenses.asl20;
|
||||
maintainers = with lib.maintainers; [
|
||||
GaetanLepage
|
||||
osbm
|
||||
];
|
||||
};
|
||||
}
|
||||
@@ -2,6 +2,7 @@
|
||||
lib,
|
||||
buildPythonPackage,
|
||||
fetchFromGitHub,
|
||||
gitUpdater,
|
||||
|
||||
# build-system
|
||||
hatchling,
|
||||
@@ -12,24 +13,28 @@
|
||||
pymongo,
|
||||
}:
|
||||
|
||||
buildPythonPackage rec {
|
||||
buildPythonPackage (finalAttrs: {
|
||||
pname = "langgraph-checkpoint-mongodb";
|
||||
version = "0.11.0";
|
||||
version = "0.3.1";
|
||||
pyproject = true;
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "langchain-ai";
|
||||
repo = "langchain-mongodb";
|
||||
tag = "libs/langchain-mongodb/v${version}";
|
||||
hash = "sha256-dO0dASjyNMxnbxZ/ry8lcJxedPdrv6coYiTjOcaT8/0=";
|
||||
tag = "libs/langgraph-checkpoint-mongodb/v${finalAttrs.version}";
|
||||
hash = "sha256-vCiZ6Mp6aHmSEkLbeM6qTLJaxH0uoAdq80olTT5saX0=";
|
||||
};
|
||||
|
||||
sourceRoot = "${src.name}/libs/langgraph-checkpoint-mongodb";
|
||||
sourceRoot = "${finalAttrs.src.name}/libs/langgraph-checkpoint-mongodb";
|
||||
|
||||
build-system = [
|
||||
hatchling
|
||||
];
|
||||
|
||||
pythonRelaxDeps = [
|
||||
"pymongo"
|
||||
];
|
||||
|
||||
dependencies = [
|
||||
langgraph-checkpoint
|
||||
langchain-mongodb
|
||||
@@ -41,14 +46,22 @@ buildPythonPackage rec {
|
||||
# Connection refused (to localhost:27017) for all tests
|
||||
doCheck = false;
|
||||
|
||||
passthru = {
|
||||
# python updater script sets the wrong tag
|
||||
skipBulkUpdate = true;
|
||||
updateScript = gitUpdater {
|
||||
rev-prefix = "libs/langgraph-checkpoint-mongodb/v";
|
||||
};
|
||||
};
|
||||
|
||||
# no pythonImportsCheck as this package does not provide any direct imports
|
||||
pythonImportsCheck = [ "langgraph.checkpoint.mongodb" ];
|
||||
|
||||
meta = {
|
||||
description = "Integrations between MongoDB, Atlas, LangChain, and LangGraph";
|
||||
homepage = "https://github.com/langchain-ai/langchain-mongodb/tree/main/libs/langgraph-checkpoint-mongodb";
|
||||
changelog = "https://github.com/langchain-ai/langchain-mongodb/releases/tag/${src.tag}";
|
||||
changelog = "https://github.com/langchain-ai/langchain-mongodb/releases/tag/${finalAttrs.src.tag}";
|
||||
license = lib.licenses.mit;
|
||||
maintainers = with lib.maintainers; [ sarahec ];
|
||||
};
|
||||
}
|
||||
})
|
||||
|
||||
@@ -26,14 +26,14 @@
|
||||
|
||||
buildPythonPackage rec {
|
||||
pname = "langgraph-checkpoint";
|
||||
version = "3.0.1";
|
||||
version = "4.0.0";
|
||||
pyproject = true;
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "langchain-ai";
|
||||
repo = "langgraph";
|
||||
tag = "checkpoint==${version}";
|
||||
hash = "sha256-3hh1KyEIsp9JzhaJW1ycp179FGpggPYzg6OwnD/cTBM=";
|
||||
hash = "sha256-IE9Y+kFkDN49SuwvTNwa2kK+Hig18sJPZmZCqHUP3DM=";
|
||||
};
|
||||
|
||||
sourceRoot = "${src.name}/libs/checkpoint";
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
lib,
|
||||
buildPythonPackage,
|
||||
fetchFromGitHub,
|
||||
nix-update-script,
|
||||
|
||||
# build-system
|
||||
hatchling,
|
||||
@@ -11,19 +12,19 @@
|
||||
langchain-mongodb,
|
||||
}:
|
||||
|
||||
buildPythonPackage rec {
|
||||
buildPythonPackage (finalAttrs: {
|
||||
pname = "langgraph-store-mongodb";
|
||||
version = "0.11.0";
|
||||
version = "0.2.0";
|
||||
pyproject = true;
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "langchain-ai";
|
||||
repo = "langchain-mongodb";
|
||||
tag = "libs/langchain-mongodb/v${version}";
|
||||
hash = "sha256-dO0dASjyNMxnbxZ/ry8lcJxedPdrv6coYiTjOcaT8/0=";
|
||||
tag = "libs/langgraph-store-mongodb/v${finalAttrs.version}";
|
||||
hash = "sha256-IXISxo3mC0/FkjGdHTmin6z/fk71ecto+L+VZ6VFdeE=";
|
||||
};
|
||||
|
||||
sourceRoot = "${src.name}/libs/langgraph-store-mongodb";
|
||||
sourceRoot = "${finalAttrs.src.name}/libs/langgraph-store-mongodb";
|
||||
|
||||
build-system = [
|
||||
hatchling
|
||||
@@ -40,11 +41,22 @@ buildPythonPackage rec {
|
||||
|
||||
pythonImportsCheck = [ "langgraph.store.mongodb" ];
|
||||
|
||||
# updater script selects wrong tag
|
||||
passthru = {
|
||||
skipBulkUpdate = true;
|
||||
updateScript = nix-update-script {
|
||||
extraArgs = [
|
||||
"-vr"
|
||||
"libs/langgraph-store-mongodb/v(.*)"
|
||||
];
|
||||
};
|
||||
};
|
||||
|
||||
meta = {
|
||||
description = "Integrations between MongoDB, Atlas, LangChain, and LangGraph";
|
||||
homepage = "https://github.com/langchain-ai/langchain-mongodb/tree/main/libs/langgraph-store-mongodb";
|
||||
changelog = "https://github.com/langchain-ai/langchain-mongodb/releases/tag/${src.tag}";
|
||||
changelog = "https://github.com/langchain-ai/langchain-mongodb/releases/tag/${finalAttrs.src.tag}";
|
||||
license = lib.licenses.mit;
|
||||
maintainers = with lib.maintainers; [ sarahec ];
|
||||
};
|
||||
}
|
||||
})
|
||||
|
||||
@@ -0,0 +1,208 @@
|
||||
{
|
||||
lib,
|
||||
buildPythonPackage,
|
||||
fetchFromGitHub,
|
||||
|
||||
# build-system
|
||||
setuptools,
|
||||
|
||||
# dependencies
|
||||
filelock,
|
||||
huggingface-hub,
|
||||
numpy,
|
||||
protobuf,
|
||||
packaging,
|
||||
pyyaml,
|
||||
regex,
|
||||
requests,
|
||||
tokenizers,
|
||||
safetensors,
|
||||
tqdm,
|
||||
|
||||
# optional-dependencies
|
||||
diffusers,
|
||||
scikit-learn,
|
||||
tensorflow,
|
||||
onnxconverter-common,
|
||||
opencv4,
|
||||
tf2onnx,
|
||||
torch,
|
||||
accelerate,
|
||||
faiss,
|
||||
datasets,
|
||||
jax,
|
||||
jaxlib,
|
||||
flax,
|
||||
optax,
|
||||
ftfy,
|
||||
onnxruntime,
|
||||
onnxruntime-tools,
|
||||
cookiecutter,
|
||||
sagemaker,
|
||||
fairscale,
|
||||
optuna,
|
||||
ray,
|
||||
pydantic,
|
||||
uvicorn,
|
||||
fastapi,
|
||||
starlette,
|
||||
librosa,
|
||||
phonemizer,
|
||||
torchaudio,
|
||||
pillow,
|
||||
timm,
|
||||
torchvision,
|
||||
av,
|
||||
sentencepiece,
|
||||
hf-xet,
|
||||
}:
|
||||
|
||||
buildPythonPackage (finalAttrs: {
|
||||
pname = "transformers";
|
||||
version = "4.57.6";
|
||||
pyproject = true;
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "huggingface";
|
||||
repo = "transformers";
|
||||
tag = "v${finalAttrs.version}";
|
||||
hash = "sha256-a78ornUAYlOpr30iFdq1oUiWQTm6GeT0iq8ras5i3DQ=";
|
||||
};
|
||||
|
||||
build-system = [ setuptools ];
|
||||
|
||||
dependencies = [
|
||||
filelock
|
||||
huggingface-hub
|
||||
numpy
|
||||
packaging
|
||||
pyyaml
|
||||
regex
|
||||
requests
|
||||
tokenizers
|
||||
safetensors
|
||||
tqdm
|
||||
];
|
||||
|
||||
pythonRelaxDeps = [ "huggingface-hub" ];
|
||||
|
||||
optional-dependencies =
|
||||
let
|
||||
audio = [
|
||||
librosa
|
||||
# pyctcdecode
|
||||
phonemizer
|
||||
# kenlm
|
||||
];
|
||||
vision = [ pillow ];
|
||||
in
|
||||
{
|
||||
agents = [
|
||||
diffusers
|
||||
accelerate
|
||||
datasets
|
||||
torch
|
||||
sentencepiece
|
||||
opencv4
|
||||
pillow
|
||||
];
|
||||
ja = [
|
||||
# fugashi
|
||||
# ipadic
|
||||
# rhoknp
|
||||
# sudachidict_core
|
||||
# sudachipy
|
||||
# unidic
|
||||
# unidic_lite
|
||||
];
|
||||
sklearn = [ scikit-learn ];
|
||||
tf = [
|
||||
tensorflow
|
||||
onnxconverter-common
|
||||
tf2onnx
|
||||
# tensorflow-text
|
||||
# keras-nlp
|
||||
];
|
||||
torch = [
|
||||
torch
|
||||
accelerate
|
||||
];
|
||||
retrieval = [
|
||||
faiss
|
||||
datasets
|
||||
];
|
||||
flax = [
|
||||
jax
|
||||
jaxlib
|
||||
flax
|
||||
optax
|
||||
];
|
||||
hf_xet = [
|
||||
hf-xet
|
||||
];
|
||||
tokenizers = [ tokenizers ];
|
||||
ftfy = [ ftfy ];
|
||||
onnxruntime = [
|
||||
onnxruntime
|
||||
onnxruntime-tools
|
||||
];
|
||||
onnx = [
|
||||
onnxconverter-common
|
||||
tf2onnx
|
||||
onnxruntime
|
||||
onnxruntime-tools
|
||||
];
|
||||
modelcreation = [ cookiecutter ];
|
||||
sagemaker = [ sagemaker ];
|
||||
deepspeed = [
|
||||
# deepspeed
|
||||
accelerate
|
||||
];
|
||||
fairscale = [ fairscale ];
|
||||
optuna = [ optuna ];
|
||||
ray = [ ray ] ++ ray.optional-dependencies.tune;
|
||||
# sigopt = [ sigopt ];
|
||||
# integrations = ray ++ optuna ++ sigopt;
|
||||
serving = [
|
||||
pydantic
|
||||
uvicorn
|
||||
fastapi
|
||||
starlette
|
||||
];
|
||||
audio = audio;
|
||||
speech = [ torchaudio ] ++ audio;
|
||||
torch-speech = [ torchaudio ] ++ audio;
|
||||
tf-speech = audio;
|
||||
flax-speech = audio;
|
||||
timm = [ timm ];
|
||||
torch-vision = [ torchvision ] ++ vision;
|
||||
# natten = [ natten ];
|
||||
# codecarbon = [ codecarbon ];
|
||||
video = [
|
||||
av
|
||||
];
|
||||
sentencepiece = [
|
||||
sentencepiece
|
||||
protobuf
|
||||
];
|
||||
};
|
||||
|
||||
# Many tests require internet access.
|
||||
doCheck = false;
|
||||
|
||||
pythonImportsCheck = [ "transformers" ];
|
||||
|
||||
meta = {
|
||||
broken = lib.versionAtLeast huggingface-hub.version "1.0";
|
||||
homepage = "https://github.com/huggingface/transformers";
|
||||
description = "Natural Language Processing for TensorFlow 2.0 and PyTorch";
|
||||
mainProgram = "transformers-cli";
|
||||
changelog = "https://github.com/huggingface/transformers/releases/tag/${finalAttrs.src.tag}";
|
||||
license = lib.licenses.asl20;
|
||||
platforms = lib.platforms.unix;
|
||||
maintainers = with lib.maintainers; [
|
||||
pashashocky
|
||||
happysalada
|
||||
];
|
||||
};
|
||||
})
|
||||
@@ -1,91 +0,0 @@
|
||||
{
|
||||
lib,
|
||||
stdenv,
|
||||
fetchurl,
|
||||
cmake,
|
||||
pkg-config,
|
||||
wrapQtAppsHook,
|
||||
openexr,
|
||||
zlib,
|
||||
imagemagick6,
|
||||
libGLU,
|
||||
libGL,
|
||||
libglut,
|
||||
fftwFloat,
|
||||
fftw,
|
||||
gsl,
|
||||
libexif,
|
||||
perl,
|
||||
qtbase,
|
||||
netpbm,
|
||||
enableUnfree ? false,
|
||||
opencv,
|
||||
}:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "pfstools";
|
||||
version = "2.2.0";
|
||||
|
||||
src = fetchurl {
|
||||
url = "mirror://sourceforge/${pname}/${version}/${pname}-${version}.tgz";
|
||||
sha256 = "sha256-m/aESYVmMibCGZjutDwmGsuOSziRuakbcpVUQGKJ18o=";
|
||||
};
|
||||
|
||||
outputs = [
|
||||
"out"
|
||||
"dev"
|
||||
"man"
|
||||
];
|
||||
|
||||
cmakeFlags = [ "-DWITH_MATLAB=false" ];
|
||||
|
||||
preConfigure = ''
|
||||
sed -e 's|#include( ''${PROJECT_SRC_DIR}/cmake/FindNETPBM.cmake )|include( ''${PROJECT_SOURCE_DIR}/cmake/FindNETPBM.cmake )|' -i CMakeLists.txt
|
||||
|
||||
rm cmake/FindNETPBM.cmake
|
||||
echo "SET(NETPBM_LIBRARY `find ${lib.getLib netpbm} -name "*${stdenv.hostPlatform.extensions.sharedLibrary}*" -type f`)" >> cmake/FindNETPBM.cmake
|
||||
echo "SET(NETPBM_LIBRARIES `find ${lib.getLib netpbm} -name "*${stdenv.hostPlatform.extensions.sharedLibrary}*" -type f`)" >> cmake/FindNETPBM.cmake
|
||||
echo "SET(NETPBM_INCLUDE_DIR ${lib.getDev netpbm}/include/netpbm)" >> cmake/FindNETPBM.cmake
|
||||
echo "INCLUDE(FindPackageHandleStandardArgs)" >> cmake/FindNETPBM.cmake
|
||||
echo "FIND_PACKAGE_HANDLE_STANDARD_ARGS(NETPBM DEFAULT_MSG NETPBM_LIBRARY NETPBM_INCLUDE_DIR)" >> cmake/FindNETPBM.cmake
|
||||
'';
|
||||
|
||||
nativeBuildInputs = [
|
||||
cmake
|
||||
pkg-config
|
||||
wrapQtAppsHook
|
||||
];
|
||||
buildInputs = [
|
||||
openexr
|
||||
zlib
|
||||
imagemagick6
|
||||
fftwFloat
|
||||
fftw
|
||||
gsl
|
||||
libexif
|
||||
perl
|
||||
qtbase
|
||||
netpbm
|
||||
]
|
||||
++ lib.optionals (!stdenv.hostPlatform.isDarwin) [
|
||||
libGLU
|
||||
libGL
|
||||
libglut
|
||||
]
|
||||
++ lib.optional enableUnfree (opencv.override { enableUnfree = true; });
|
||||
|
||||
patches = [
|
||||
./glut.patch
|
||||
./threads.patch
|
||||
./pfstools.patch
|
||||
./pfsalign.patch
|
||||
];
|
||||
|
||||
meta = {
|
||||
homepage = "https://pfstools.sourceforge.net/";
|
||||
description = "Toolkit for manipulation of HDR images";
|
||||
platforms = lib.platforms.linux;
|
||||
license = lib.licenses.lgpl2;
|
||||
maintainers = [ lib.maintainers.juliendehos ];
|
||||
};
|
||||
}
|
||||
@@ -1,12 +0,0 @@
|
||||
--- a/src/pfsglview/CMakeLists.txt 2022-04-04 23:21:11.164016369 +0300
|
||||
+++ b/src/pfsglview/CMakeLists.txt 2022-04-04 23:21:32.757878750 +0300
|
||||
@@ -11,8 +11,7 @@
|
||||
|
||||
add_executable(pfsglview pfsglview.cpp picture_io.cpp module.cpp m_histogram.cpp m_status.cpp m_on_screen_display.cpp)
|
||||
|
||||
-# TODO: Use ${GLUT_LIBRARY} instead.
|
||||
-target_link_libraries(pfsglview ${OPENGL_LIBRARIES} ${GLUT_glut_LIBRARY} pfs)
|
||||
+target_link_libraries(pfsglview ${OPENGL_LIBRARIES} ${GLUT_LIBRARIES} pfs)
|
||||
|
||||
install (TARGETS pfsglview DESTINATION bin)
|
||||
install (FILES pfsglview.1 DESTINATION ${MAN_DIR})
|
||||
@@ -1,12 +0,0 @@
|
||||
--- a/src/camera/CMakeLists.txt 2017-11-13 18:38:27.000000000 +0100
|
||||
+++ b/src/camera/CMakeLists.txt 2018-12-30 14:55:30.235571520 +0100
|
||||
@@ -9,7 +9,7 @@ target_link_libraries(${TRG} pfs)
|
||||
install (TARGETS ${TRG} DESTINATION bin)
|
||||
install (FILES ${TRG}.1 DESTINATION ${MAN_DIR})
|
||||
|
||||
-if( OpenCV_FOUND AND EXIF_FOUND )
|
||||
+if( OpenCV_FOUND AND MYPKG_FOUND )
|
||||
|
||||
set(TRG pfsalign)
|
||||
add_executable(${TRG} ${TRG}.cpp "${GETOPT_OBJECT}")
|
||||
|
||||
@@ -1,21 +0,0 @@
|
||||
--- a/CMakeLists.txt 2016-05-26 11:31:16.000000000 +0200
|
||||
+++ b/CMakeLists.txt 2016-07-22 19:07:22.074669909 +0200
|
||||
@@ -320,12 +320,12 @@
|
||||
|
||||
# ======== libexif ==========
|
||||
|
||||
-find_package(EXIF)
|
||||
-if( NOT EXIF_FOUND )
|
||||
- message( "EXIF library (libexif) not found. 'pfsalign' will not be compiled" )
|
||||
-else( NOT EXIF_FOUND )
|
||||
- message(STATUS "libexif library found.")
|
||||
-endif( NOT EXIF_FOUND )
|
||||
+find_package( PkgConfig REQUIRED )
|
||||
+pkg_check_modules( MYPKG REQUIRED libexif IlmBase )
|
||||
+if( MYPKG_FOUND )
|
||||
+ message( STATUS "libexif and IlmBase found." )
|
||||
+endif( MYPKG_FOUND )
|
||||
+include_directories( ${MYPKG_INCLUDE_DIRS} )
|
||||
|
||||
# ======== Config and sub dirs ===========
|
||||
|
||||
@@ -1,20 +0,0 @@
|
||||
--- a/src/fileformat/CMakeLists.txt 2016-05-26 11:31:23.000000000 +0200
|
||||
+++ b/src/fileformat/CMakeLists.txt 2016-07-21 23:19:56.510958771 +0200
|
||||
@@ -53,13 +53,15 @@
|
||||
if( OPENEXR_FOUND )
|
||||
include_directories("${OPENEXR_INCLUDE_DIR}")
|
||||
|
||||
+ find_package (Threads)
|
||||
+
|
||||
add_executable(pfsinexr pfsinexr.cpp "${GETOPT_OBJECT}")
|
||||
- target_link_libraries(pfsinexr pfs ${OPENEXR_LIBRARIES})
|
||||
+ target_link_libraries(pfsinexr pfs ${OPENEXR_LIBRARIES} ${CMAKE_THREAD_LIBS_INIT})
|
||||
install (TARGETS pfsinexr DESTINATION bin)
|
||||
install (FILES pfsinexr.1 DESTINATION ${MAN_DIR})
|
||||
|
||||
add_executable(pfsoutexr pfsoutexr.cpp "${GETOPT_OBJECT}")
|
||||
- target_link_libraries(pfsoutexr pfs ${OPENEXR_LIBRARIES})
|
||||
+ target_link_libraries(pfsoutexr pfs ${OPENEXR_LIBRARIES} ${CMAKE_THREAD_LIBS_INIT})
|
||||
install (TARGETS pfsoutexr DESTINATION bin)
|
||||
install (FILES pfsoutexr.1 DESTINATION ${MAN_DIR})
|
||||
endif( OPENEXR_FOUND )
|
||||
@@ -1534,6 +1534,7 @@ mapAliases {
|
||||
percona-xtrabackup_lts = throw "'percona-xtrabackup_lts' has been renamed to/replaced by 'percona-xtrabackup'"; # Converted to throw 2025-10-27
|
||||
peruse = throw "'peruse' has been removed as it depends on KDE Gear 5, which has reached EOL"; # Added 2025-08-20
|
||||
petrifoo = throw "'petrifoo' was remove due to lack of maintenance and relying on gtk2"; # Added 2025-12-02
|
||||
pfstools = throw "'pfstools' was removed because it was broken and depends on an old version of ImageMagick"; # added 2026-02-26
|
||||
pg_cron = throw "'pg_cron' has been removed. Use 'postgresqlPackages.pg_cron' instead."; # Added 2025-07-19
|
||||
pg_hll = throw "'pg_hll' has been removed. Use 'postgresqlPackages.pg_hll' instead."; # Added 2025-07-19
|
||||
pg_repack = throw "'pg_repack' has been removed. Use 'postgresqlPackages.pg_repack' instead."; # Added 2025-07-19
|
||||
@@ -1714,6 +1715,7 @@ mapAliases {
|
||||
rpPPPoE = warnAlias "'rpPPPoE' has been renamed to 'rp-pppoe'" rp-pppoe; # Added 2026-02-12
|
||||
rquickshare-legacy = throw "The legacy version depends on insecure package libsoup2, please use the main version"; # Added 2025-10-09
|
||||
rr-unstable = throw "'rr-unstable' has been renamed to/replaced by 'rr'"; # Converted to throw 2025-10-27
|
||||
rss-glx = throw "'rss-glx' has been removed because it was broken and depends on an outdated version of ImageMagick"; # added 2026-02-26
|
||||
rtx = throw "'rtx' has been renamed to/replaced by 'mise'"; # Converted to throw 2025-10-27
|
||||
ruby-zoom = throw "'ruby-zoom' has been removed due to lack of maintaince and had not been updated since 2020"; # Added 2025-08-24
|
||||
ruby_3_1 = throw "ruby_3_1 has been removed, as it is has reached end‐of‐life upstream"; # Added 2025-10-12
|
||||
|
||||
@@ -3229,8 +3229,6 @@ with pkgs;
|
||||
ssh = openssh;
|
||||
};
|
||||
|
||||
pfstools = libsForQt5.callPackage ../tools/graphics/pfstools { };
|
||||
|
||||
phosh = callPackage ../applications/window-managers/phosh { };
|
||||
|
||||
phosh-mobile-settings =
|
||||
|
||||
@@ -7184,6 +7184,8 @@ self: super: with self; {
|
||||
|
||||
huggingface-hub = callPackage ../development/python-modules/huggingface-hub { };
|
||||
|
||||
huggingface-hub_0 = callPackage ../development/python-modules/huggingface-hub/0.nix { };
|
||||
|
||||
human-readable = callPackage ../development/python-modules/human-readable { };
|
||||
|
||||
humanfriendly = callPackage ../development/python-modules/humanfriendly { };
|
||||
@@ -19395,6 +19397,8 @@ self: super: with self; {
|
||||
|
||||
transformers = callPackage ../development/python-modules/transformers { };
|
||||
|
||||
transformers_4 = callPackage ../development/python-modules/transformers/4.nix { };
|
||||
|
||||
transforms3d = callPackage ../development/python-modules/transforms3d { };
|
||||
|
||||
transitions = callPackage ../development/python-modules/transitions { };
|
||||
|
||||
Reference in New Issue
Block a user