Merge remote-tracking branch 'origin/master' into staging-next

This commit is contained in:
K900
2025-04-09 15:31:47 +03:00
69 changed files with 2364 additions and 826 deletions
+13
View File
@@ -16465,6 +16465,12 @@
githubId = 220262;
name = "Ion Mudreac";
};
MulliganSecurity = {
email = "mulligansecurity@riseup.net";
github = "MulliganSecurity";
githubId = 196982523;
name = "MulliganSecurity";
};
multisn8 = {
email = "all-things-nix@multisamplednight.com";
github = "MultisampledNight";
@@ -16692,6 +16698,13 @@
githubId = 17240342;
name = "Nano Twerpus";
};
nanoyaki = {
name = "Hana Kretzer";
email = "hanakretzer@gmail.com";
github = "nanoyaki";
githubId = 144328493;
keys = [ { fingerprint = "D89F 440C 6CD7 4753 090F EC7A 4682 C5CB 4D9D EA3C"; } ];
};
naphta = {
github = "naphta";
githubId = 6709831;
@@ -173,6 +173,8 @@
- [nvidia-gpu](https://github.com/utkuozdemir/nvidia_gpu_exporter), a Prometheus exporter that scrapes `nvidia-smi` for GPU metrics. Available as [services.prometheus.exporters.nvidia-gpu](#opt-services.prometheus.exporters.nvidia-gpu.enable).
- [Lavalink](https://github.com/lavalink-devs/Lavalink), a standalone audio sending node based on Lavaplayer and Koe. Availble as [services.lavalink](#opt-services.lavalink.enable).
- [OpenGamepadUI](https://github.com/ShadowBlip/OpenGamepadUI/), an open source gamepad-native game launcher and overlay for Linux. Available as [programs.opengamepadui](#opt-programs.opengamepadui.enable).
- [InputPlumber](https://github.com/ShadowBlip/InputPlumber/), an open source input router and remapper daemon for Linux. Available as [services.inputplumber](#opt-services.inputplumber.enable).
+1
View File
@@ -408,6 +408,7 @@
./services/audio/icecast.nix
./services/audio/jack.nix
./services/audio/jmusicbot.nix
./services/audio/lavalink.nix
./services/audio/liquidsoap.nix
./services/audio/marytts.nix
./services/audio/mopidy.nix
+335
View File
@@ -0,0 +1,335 @@
{
config,
pkgs,
lib,
...
}:
let
inherit (lib)
mkOption
mkEnableOption
mkIf
types
;
cfg = config.services.lavalink;
format = pkgs.formats.yaml { };
in
{
options.services.lavalink = {
enable = mkEnableOption "Lavalink";
package = lib.mkPackageOption pkgs "lavalink" { };
password = mkOption {
type = types.nullOr types.str;
default = null;
example = "s3cRe!p4SsW0rD";
description = ''
The password for Lavalink's authentication in plain text.
'';
};
port = mkOption {
type = types.port;
default = 2333;
example = 4567;
description = ''
The port that Lavalink will use.
'';
};
address = mkOption {
type = types.str;
default = "0.0.0.0";
example = "127.0.0.1";
description = ''
The network address to bind to.
'';
};
openFirewall = mkOption {
type = types.bool;
default = false;
example = true;
description = ''
Whether to expose the port to the network.
'';
};
user = mkOption {
type = types.str;
default = "lavalink";
example = "root";
description = ''
The user of the service.
'';
};
group = mkOption {
type = types.str;
default = "lavalink";
example = "medias";
description = ''
The group of the service.
'';
};
home = mkOption {
type = types.str;
default = "/var/lib/lavalink";
example = "/home/lavalink";
description = ''
The home directory for lavalink.
'';
};
enableHttp2 = mkEnableOption "HTTP/2 support";
jvmArgs = mkOption {
type = types.str;
default = "-Xmx4G";
example = "-Djava.io.tmpdir=/var/lib/lavalink/tmp -Xmx6G";
description = ''
Set custom JVM arguments.
'';
};
environmentFile = mkOption {
type = types.nullOr types.str;
default = null;
example = "/run/secrets/lavalink/passwordEnvFile";
description = ''
Add custom environment variables from a file.
See <https://lavalink.dev/configuration/index.html#example-environment-variables> for the full documentation.
'';
};
plugins = mkOption {
type = types.listOf (
types.submodule {
options = {
dependency = mkOption {
type = types.str;
example = "dev.lavalink.youtube:youtube-plugin:1.8.0";
description = ''
The coordinates of the plugin.
'';
};
repository = mkOption {
type = types.str;
example = "https://maven.example.com/releases";
default = "https://maven.lavalink.dev/releases";
description = ''
The plugin repository. Defaults to the lavalink releases repository.
To use the snapshots repository, use <https://maven.lavalink.dev/snapshots> instead
'';
};
hash = mkOption {
type = types.str;
example = lib.fakeHash;
description = ''
The hash of the plugin.
'';
};
configName = mkOption {
type = types.nullOr types.str;
example = "youtube";
default = null;
description = ''
The name of the plugin to use as the key for the plugin configuration.
'';
};
extraConfig = mkOption {
type = types.submodule { freeformType = format.type; };
default = { };
description = ''
The configuration for the plugin.
The {option}`services.lavalink.plugins.*.configName` option must be set.
'';
};
};
}
);
default = [ ];
example = lib.literalExpression ''
[
{
dependency = "dev.lavalink.youtube:youtube-plugin:1.8.0";
repository = "https://maven.lavalink.dev/snapshots";
hash = lib.fakeHash;
configName = "youtube";
extraConfig = {
enabled = true;
allowSearch = true;
allowDirectVideoIds = true;
allowDirectPlaylistIds = true;
};
}
]
'';
description = ''
A list of plugins for lavalink.
'';
};
extraConfig = mkOption {
type = types.submodule { freeformType = format.type; };
description = ''
Configuration to write to {file}`application.yml`.
See <https://lavalink.dev/configuration/#example-applicationyml> for the full documentation.
Individual configuration parameters can be overwritten using environment variables.
See <https://lavalink.dev/configuration/#example-environment-variables> for more information.
'';
default = { };
example = lib.literalExpression ''
{
lavalink.server = {
sources.twitch = true;
filters.volume = true;
};
logging.file.path = "./logs/";
}
'';
};
};
config =
let
pluginSymlinks = lib.concatStringsSep "\n" (
map (
pluginCfg:
let
pluginParts = lib.match ''^(.*?:(.*?):)([0-9]+\.[0-9]+\.[0-9]+)$'' pluginCfg.dependency;
pluginWebPath = lib.replaceStrings [ "." ":" ] [ "/" "/" ] (lib.elemAt pluginParts 0);
pluginFileName = lib.elemAt pluginParts 1;
pluginVersion = lib.elemAt pluginParts 2;
pluginFile = "${pluginFileName}-${pluginVersion}.jar";
pluginUrl = "${pluginCfg.repository}/${pluginWebPath}${pluginVersion}/${pluginFile}";
plugin = pkgs.fetchurl {
url = pluginUrl;
inherit (pluginCfg) hash;
};
in
"ln -sf ${plugin} ${cfg.home}/plugins/${pluginFile}"
) cfg.plugins
);
pluginExtraConfigs = builtins.listToAttrs (
builtins.map (
pluginConfig: lib.attrsets.nameValuePair pluginConfig.configName pluginConfig.extraConfig
) (lib.lists.filter (pluginCfg: pluginCfg.configName != null) cfg.plugins)
);
config = lib.attrsets.recursiveUpdate cfg.extraConfig {
server = {
inherit (cfg) port address;
http2.enabled = cfg.enableHttp2;
};
plugins = pluginExtraConfigs;
lavalink.plugins = (
builtins.map (
pluginConfig:
builtins.removeAttrs pluginConfig [
"name"
"extraConfig"
"hash"
]
) cfg.plugins
);
};
configWithPassword = lib.attrsets.recursiveUpdate config (
lib.attrsets.optionalAttrs (cfg.password != null) { lavalink.server.password = cfg.password; }
);
configFile = format.generate "application.yml" configWithPassword;
in
mkIf cfg.enable {
assertions = [
{
assertion =
!(lib.lists.any (
pluginCfg: pluginCfg.extraConfig != { } && pluginCfg.configName == null
) cfg.plugins);
message = "Plugins with extra configuration need to have the `configName` attribute defined";
}
];
networking.firewall.allowedTCPPorts = mkIf cfg.openFirewall [ cfg.port ];
users.groups = mkIf (cfg.group == "lavalink") { lavalink = { }; };
users.users = mkIf (cfg.user == "lavalink") {
lavalink = {
inherit (cfg) home;
group = "lavalink";
description = "The user for the Lavalink server";
isSystemUser = true;
};
};
systemd.tmpfiles.settings."10-lavalink" =
let
dirConfig = {
inherit (cfg) user group;
mode = "0700";
};
in
{
"${cfg.home}/plugins".d = mkIf (cfg.plugins != [ ]) dirConfig;
${cfg.home}.d = dirConfig;
};
systemd.services.lavalink = {
description = "Lavalink Service";
wantedBy = [ "multi-user.target" ];
after = [
"syslog.target"
"network.target"
];
script = ''
${pluginSymlinks}
ln -sf ${configFile} ${cfg.home}/application.yml
export _JAVA_OPTIONS="${cfg.jvmArgs}"
${lib.getExe cfg.package}
'';
serviceConfig = {
User = cfg.user;
Group = cfg.group;
Type = "simple";
Restart = "on-failure";
EnvironmentFile = cfg.environmentFile;
WorkingDirectory = cfg.home;
};
};
};
}
@@ -339,7 +339,7 @@ let
map (
listen:
{
port = cfg.defaultSSLListenPort;
port = if (hasPrefix "unix:" listen.addr) then null else cfg.defaultSSLListenPort;
ssl = true;
}
// listen
@@ -351,7 +351,7 @@ let
map (
listen:
{
port = cfg.defaultHTTPListenPort;
port = if (hasPrefix "unix:" listen.addr) then null else cfg.defaultHTTPListenPort;
ssl = false;
}
// listen
@@ -56,6 +56,33 @@ in
GZIP compression level of the resulting disk image (1-9).
'';
};
virtualisation.googleComputeImage.contents = mkOption {
type = with types; listOf attrs;
default = [ ];
description = ''
The files and directories to be placed in the image.
This is a list of attribute sets {source, target, mode, user, group} where
`source' is the file system object (regular file or directory) to be
grafted in the file system at path `target', `mode' is a string containing
the permissions that will be set (ex. "755"), `user' and `group' are the
user and group name that will be set as owner of the files.
`mode', `user', and `group' are optional.
When setting one of `user' or `group', the other needs to be set too.
'';
example = literalExpression ''
[
{
source = ./default.nix;
target = "/etc/nixos/default.nix";
mode = "0644";
user = "root";
group = "root";
}
];
'';
};
virtualisation.googleComputeImage.efi = mkEnableOption "EFI booting";
};
@@ -99,6 +126,7 @@ in
'';
format = "raw";
configFile = if cfg.configFile == null then defaultConfigFile else cfg.configFile;
inherit (cfg) contents;
partitionTableType = if cfg.efi then "efi" else "legacy";
inherit (config.virtualisation) diskSize;
inherit config lib pkgs;
+1
View File
@@ -713,6 +713,7 @@ in
languagetool = handleTest ./languagetool.nix { };
lanraragi = handleTest ./lanraragi.nix { };
latestKernel.login = handleTest ./login.nix { latestKernel = true; };
lavalink = runTest ./lavalink.nix;
leaps = handleTest ./leaps.nix { };
lemmy = handleTest ./lemmy.nix { };
libinput = handleTest ./libinput.nix { };
+43
View File
@@ -0,0 +1,43 @@
{ lib, ... }:
let
password = "s3cRe!p4SsW0rD";
in
{
name = "lavalink";
meta.maintainers = with lib.maintainers; [ nanoyaki ];
nodes = {
machine = {
services.lavalink = {
enable = true;
port = 1234;
inherit password;
};
};
machine2 =
{ pkgs, ... }:
{
services.lavalink = {
enable = true;
port = 1235;
environmentFile = "${pkgs.writeText "passwordEnvFile" ''
LAVALINK_SERVER_PASSWORD=${password}
''}";
};
};
};
testScript = ''
start_all()
machine.wait_for_unit("lavalink.service")
machine.wait_for_open_port(1234)
machine.succeed("curl --header \"User-Id: 1204475253028429844\" --header \"Client-Name: shoukaku/4.1.1\" --header \"Authorization: ${password}\" http://localhost:1234/v4/info --fail -v")
machine2.wait_for_unit("lavalink.service")
machine2.wait_for_open_port(1235)
machine2.succeed("curl --header \"User-Id: 1204475253028429844\" --header \"Client-Name: shoukaku/4.1.1\" --header \"Authorization: ${password}\" http://localhost:1235/v4/info --fail -v")
'';
}
+11 -1
View File
@@ -1,5 +1,6 @@
{ ... }:
let
defaultNginxSocketPath = "/var/run/nginx/default-test.sock";
nginxSocketPath = "/var/run/nginx/test.sock";
in
{
@@ -11,6 +12,13 @@ in
{
services.nginx = {
enable = true;
defaultListen = [ { addr = "unix:${defaultNginxSocketPath}"; } ];
virtualHosts.defaultLocalhost = {
serverName = "defaultLocalhost";
locations."/default".return = "200 'bar'";
};
virtualHosts.localhost = {
serverName = "localhost";
listen = [ { addr = "unix:${nginxSocketPath}"; } ];
@@ -22,8 +30,10 @@ in
testScript = ''
webserver.wait_for_unit("nginx")
webserver.wait_for_open_unix_socket("${nginxSocketPath}")
webserver.wait_for_open_unix_socket("${defaultNginxSocketPath}", timeout=1)
webserver.wait_for_open_unix_socket("${nginxSocketPath}", timeout=1)
webserver.succeed("curl --fail --silent --unix-socket '${defaultNginxSocketPath}' http://defaultLocalhost/default | grep '^bar$'")
webserver.succeed("curl --fail --silent --unix-socket '${nginxSocketPath}' http://localhost/test | grep '^foo$'")
'';
}
@@ -2127,8 +2127,8 @@ let
publisher = "github";
name = "copilot-chat";
# Verify which version is available with nix run nixpkgs#vsce -- show github.copilot-chat --json
version = "0.26.2025030506"; # latest compatible with vscode ^1.98
hash = "sha256-mCmZs5xGxcqHyo8NyMjk2mu9LmxFlMb2NGUwjXg27JA=";
version = "0.26.2025040204"; # latest compatible with vscode ^1.98
hash = "sha256-grG/pn+R4paCqkSx6DGzKjyjQVZ2FINRxdpXynGF35g=";
};
meta = {
description = "GitHub Copilot Chat is a companion extension to GitHub Copilot that houses experimental chat features";
+3 -2
View File
@@ -286,8 +286,8 @@ stdenv.mkDerivation (
passthru = {
inherit pkgArches;
inherit (src) updateScript;
tests = { inherit (nixosTests) wine; };
updateScript = src.updateScript or null;
};
meta = {
inherit version;
@@ -301,9 +301,10 @@ stdenv.mkDerivation (
inherit badPlatforms platforms;
maintainers = with lib.maintainers; [
avnik
raskin
bendlas
jmc-figueira
kira-bruneau
raskin
reckenrode
];
inherit mainProgram;
+10 -2
View File
@@ -90,10 +90,18 @@ let
}
);
baseRelease =
{
staging = "unstable";
yabridge = "yabridge";
}
.${wineRelease} or null;
in
if wineRelease == "staging" then
if baseRelease != null then
callPackage ./staging.nix {
wineUnstable = wine-build wineBuild "unstable";
wineUnstable = (wine-build wineBuild baseRelease).override {
inherit wineRelease;
};
}
else
wine-build wineBuild wineRelease
+50 -11
View File
@@ -120,6 +120,18 @@ rec {
hash = "sha256-wDbsHvR2dHdKX5lFgwIuni62j+j8GLOox55oWzvsibw=";
inherit (stable) patches;
# see https://gitlab.winehq.org/wine/wine-staging
staging = fetchFromGitLab {
inherit version;
hash = "sha256-rXA/55rwQSJR247E4H7cQdTtXRmjomRbls7THV3jfcE=";
domain = "gitlab.winehq.org";
owner = "wine";
repo = "wine-staging";
rev = "v${version}";
disabledPatchsets = [ ];
};
## see http://wiki.winehq.org/Gecko
gecko32 = fetchurl rec {
version = "2.47.4";
@@ -147,8 +159,8 @@ rec {
latest_mono=$(get_latest_lib_version wine-mono)
update_staging() {
staging_url=$(get_source_attr staging.url)
set_source_attr staging hash "\"$(to_sri "$(nix-prefetch-url --unpack "''${staging_url//$1/$2}")")\""
staging_url=$(get_source_attr unstable.staging.url)
set_source_attr unstable.staging hash "\"$(to_sri "$(nix-prefetch-url --unpack "''${staging_url//$1/$2}")")\""
}
autobump unstable "$latest_unstable" "" update_staging
@@ -160,16 +172,43 @@ rec {
'';
};
staging = fetchFromGitLab rec {
# https://gitlab.winehq.org/wine/wine-staging
inherit (unstable) version;
hash = "sha256-rXA/55rwQSJR247E4H7cQdTtXRmjomRbls7THV3jfcE=";
domain = "gitlab.winehq.org";
owner = "wine";
repo = "wine-staging";
rev = "v${version}";
yabridge = fetchurl rec {
# NOTE: This is a pinned version with staging patches; don't forget to update them as well
version = "9.21";
url = "https://dl.winehq.org/wine/source/9.x/wine-${version}.tar.xz";
hash = "sha256-REK0f/2bLqRXEA427V/U5vTYKdnbeaJeYFF1qYjKL/8=";
inherit (stable) patches;
disabledPatchsets = [ ];
# see https://gitlab.winehq.org/wine/wine-staging
staging = fetchFromGitLab {
inherit version;
hash = "sha256-FDNszRUvM1ewE9Ij4EkuihaX0Hf0eTb5r7KQHMdCX3U=";
domain = "gitlab.winehq.org";
owner = "wine";
repo = "wine-staging";
rev = "v${version}";
disabledPatchsets = [ ];
};
## see http://wiki.winehq.org/Gecko
gecko32 = fetchurl rec {
version = "2.47.4";
url = "https://dl.winehq.org/wine/wine-gecko/${version}/wine-gecko-${version}-x86.msi";
hash = "sha256-Js7MR3BrCRkI9/gUvdsHTGG+uAYzGOnvxaf3iYV3k9Y=";
};
gecko64 = fetchurl rec {
version = "2.47.4";
url = "https://dl.winehq.org/wine/wine-gecko/${version}/wine-gecko-${version}-x86_64.msi";
hash = "sha256-5ZC32YijLWqkzx2Ko6o9M3Zv3Uz0yJwtzCCV7LKNBm8=";
};
## see http://wiki.winehq.org/Mono
mono = fetchurl rec {
version = "9.3.0";
url = "https://dl.winehq.org/wine/wine-mono/${version}/wine-mono-${version}-x86.msi";
hash = "sha256-bKLArtCW/57CD69et2xrfX3oLZqIdax92fB5O/nD/TA=";
};
};
wayland = pkgs.lib.warnOnInstantiate "building wine with `wineRelease = \"wayland\"` is deprecated. Wine now builds with the wayland driver by default." stable; # added 2025-01-23
+2 -2
View File
@@ -13,12 +13,12 @@
with callPackage ./util.nix { };
let
patch = (callPackage ./sources.nix { }).staging;
patch = wineUnstable.src.staging;
build-inputs = pkgNames: extra: (mkBuildInputs wineUnstable.pkgArches pkgNames) ++ extra;
in
assert lib.versions.majorMinor wineUnstable.version == lib.versions.majorMinor patch.version;
(wineUnstable.override { wineRelease = "staging"; }).overrideAttrs (self: {
wineUnstable.overrideAttrs (self: {
buildInputs = build-inputs (
[
"perl"
File diff suppressed because it is too large Load Diff
@@ -9,10 +9,10 @@
buildMozillaMach rec {
pname = "firefox";
version = "137.0";
version = "137.0.1";
src = fetchurl {
url = "mirror://mozilla/firefox/releases/${version}/source/firefox-${version}.source.tar.xz";
sha512 = "81a2c0cc14ffc2e49e49379e6c2ab56cfb6e13b66666a64f3abff44a43bb2e7dc17274d325d1c20af062d40bff8063d788d4b2f931a7a646db8b07204ca6b481";
sha512 = "cc2cbe3dd65696849c1b197b908887c111083fa8b5089aa4eae6f33ee404db29c566619c48b77fb495ad7f9dc94a2d9d910e5b2aaf8644db1d00368091f9dcb6";
};
meta = {
+2 -2
View File
@@ -14,13 +14,13 @@
stdenv.mkDerivation (finalAttrs: {
pname = "albert";
version = "0.27.5";
version = "0.27.8";
src = fetchFromGitHub {
owner = "albertlauncher";
repo = "albert";
tag = "v${finalAttrs.version}";
hash = "sha256-rdBNh9TICeOpglaJ5OJbE/f4W/UPqCkhp8H/H2OBTRM=";
hash = "sha256-UZJS61YeieA68PUNgudpjn1iWHCTvhXpt3uXJAkJtCg=";
fetchSubmodules = true;
};
+3 -3
View File
@@ -30,7 +30,7 @@ let
homepage = "https://goauthentik.io/";
license = licenses.mit;
platforms = platforms.linux;
broken = stdenvNoCC.hostPlatform.isAarch64;
broken = stdenvNoCC.buildPlatform != stdenvNoCC.hostPlatform;
maintainers = with maintainers; [
jvanbruegge
risson
@@ -44,7 +44,7 @@ let
sourceRoot = "source/website";
outputHash = "sha256-GIFz1ku0bS/GaWehOp2z9Te9qpWt61DQrw0LA+z/XCk=";
outputHash = "sha256-lPpphGi8l2X/fR9YoJv37piAe82oqSLAKHze8oTrGNc=";
outputHashMode = "recursive";
nativeBuildInputs = [
@@ -54,7 +54,7 @@ let
buildPhase = ''
npm ci --cache ./cache
rm -r ./cache
rm -r ./cache node_modules/@parcel/watcher-linux-* node_modules/.package-lock.json
'';
installPhase = ''
+3 -3
View File
@@ -28,13 +28,13 @@
stdenv.mkDerivation (finalAttrs: {
pname = "bcachefs-tools";
version = "1.20.0";
version = "1.25.1";
src = fetchFromGitHub {
owner = "koverstreet";
repo = "bcachefs-tools";
tag = "v${finalAttrs.version}";
hash = "sha256-WZmT8qYLQBp0lftm4T6BU92xffGmhniQNP7TI5pl4Y8=";
hash = "sha256-P6h0n90akgGoFL292UpYTspq1QjcnBDjwvSGyO91xQg=";
};
nativeBuildInputs = [
@@ -63,7 +63,7 @@ stdenv.mkDerivation (finalAttrs: {
cargoDeps = rustPlatform.fetchCargoVendor {
src = finalAttrs.src;
hash = "sha256-xP3V3Cqb+F33I1fVhp7ru/qBl22ww4oZDUCb1OHBiag=";
hash = "sha256-juXRmI3tz2BXQsRaRRGyBaGqeLk2QHfJb2sKPmWur8s=";
};
makeFlags = [
+3 -3
View File
@@ -8,15 +8,15 @@
rustPlatform.buildRustPackage rec {
pname = "cargo-tally";
version = "1.0.61";
version = "1.0.62";
src = fetchCrate {
inherit pname version;
hash = "sha256-54Hu7n5KD41aywL8IqhO0k7aR0N7yi3QNNTX1sqvGvE=";
hash = "sha256-EZvwjxIw6ixaSvHod7l9178D7MRTk4MrWHPxy+UCgf4=";
};
useFetchCargoVendor = true;
cargoHash = "sha256-1Grjj2uaEjr2YKvkd8cxJfUpR8OYqmtuSvIW4tSdIyM=";
cargoHash = "sha256-aSOEaHlUeP8D0GDdI6iLnuRHFasTt1nM6EGzYxhIPvo=";
buildInputs = lib.optionals stdenv.hostPlatform.isDarwin (
with darwin.apple_sdk_11_0.frameworks;
+3 -3
View File
@@ -8,17 +8,17 @@
rustPlatform.buildRustPackage (finalAttrs: {
pname = "clorinde";
version = "0.14.2";
version = "0.14.3";
src = fetchFromGitHub {
owner = "halcyonnouveau";
repo = "clorinde";
tag = "clorinde-v${finalAttrs.version}";
hash = "sha256-zl4LSDxbvzmfigMCTvaoF1vGbWj/Obce4aHpM0rPqxM=";
hash = "sha256-dMTYYvxqy3ev6TSOyOer23twmtT7g7ZOh2vFD67wy9c=";
};
useFetchCargoVendor = true;
cargoHash = "sha256-05sN5MkwBhpdmVcz0OUwx7h2ZJBjZefj8B9dLvkPZLw=";
cargoHash = "sha256-lJqg20NVZHTOsQplg6vsB4pa2ltsFBFBs//YkOkfBm4=";
cargoBuildFlags = [ "--package=clorinde" ];
@@ -0,0 +1,78 @@
diff --git a/tests/integration/CMakeLists.txt b/tests/integration/CMakeLists.txt
index 623102952bfa..c193d6e405fa 100644
--- a/tests/integration/CMakeLists.txt
+++ b/tests/integration/CMakeLists.txt
@@ -74,11 +74,6 @@ if(TARGET dart-utils)
endif()
if(TARGET dart-utils-urdf)
- if(NOT MSVC)
- dart_add_test("integration" test_DartLoader)
- target_link_libraries(test_DartLoader dart-utils-urdf)
- endif()
-
dart_add_library(SharedLibraryWamIkFast SharedLibraryWamIkFast.hpp SharedLibraryWamIkFast.cpp)
target_link_libraries(SharedLibraryWamIkFast PUBLIC dart)
target_compile_definitions(SharedLibraryWamIkFast PUBLIC IKFAST_NO_MAIN IKFAST_CLIBRARY)
@@ -88,12 +83,6 @@ if(TARGET dart-utils-urdf)
target_link_libraries(GeneratedWamIkFast PUBLIC dart)
target_compile_definitions(GeneratedWamIkFast PUBLIC IKFAST_NO_MAIN IKFAST_CLIBRARY)
target_compile_options(GeneratedWamIkFast PRIVATE -w)
-
- if(BUILD_SHARED_LIBS)
- dart_add_test("integration" test_IkFast)
- target_link_libraries(test_IkFast dart-utils-urdf)
- add_dependencies(test_IkFast GeneratedWamIkFast SharedLibraryWamIkFast)
- endif()
endif()
dart_format_add(
@@ -117,24 +106,8 @@ if(TARGET dart-collision-bullet)
target_link_libraries(test_Raycast dart-collision-bullet)
endif()
-if(TARGET dart-collision-ode)
- # This test doesn't work with FCL because it converts simple shapes to meshes, which makes
- # it difficult to come up with correct test expectations.
- dart_add_test("integration" test_ForceDependentSlip)
- target_link_libraries(test_ForceDependentSlip dart-collision-ode)
-endif()
-
if(TARGET dart-utils)
- dart_add_test("integration" test_Collision)
- target_link_libraries(test_Collision dart-utils)
- if(TARGET dart-collision-bullet)
- target_link_libraries(test_Collision dart-collision-bullet)
- endif()
- if(TARGET dart-collision-ode)
- target_link_libraries(test_Collision dart-collision-ode)
- endif()
-
dart_add_test("integration" test_Dynamics)
target_link_libraries(test_Dynamics dart-utils)
@@ -159,9 +132,4 @@ if(TARGET dart-utils)
target_link_libraries(test_World dart-collision-bullet)
endif()
- if(TARGET dart-utils-urdf)
- dart_add_test("integration" test_ForwardKinematics)
- target_link_libraries(test_ForwardKinematics dart-utils-urdf)
- endif()
-
endif()
diff --git a/tests/regression/CMakeLists.txt b/tests/regression/CMakeLists.txt
index e0dd73c6a461..fa3f7c61c7b0 100644
--- a/tests/regression/CMakeLists.txt
+++ b/tests/regression/CMakeLists.txt
@@ -12,9 +12,6 @@ endif()
if(TARGET dart-utils-urdf)
- dart_add_test("regression" test_Issue838)
- target_link_libraries(test_Issue838 dart-utils-urdf)
-
dart_add_test("regression" test_Issue892)
dart_add_test("regression" test_Issue895)
+154
View File
@@ -0,0 +1,154 @@
{
lib,
stdenv,
fetchFromGitHub,
pythonSupport ? false,
python3Packages,
# nativeBuildInputs
cmake,
pkg-config,
# propagatedBuildInputs
assimp,
blas,
boost,
bullet,
eigen,
fcl,
fmt,
libglut,
nlopt,
imgui,
ipopt,
lapack,
libGL,
libGLU,
ode,
openscenegraph,
pagmo2,
tinyxml-2,
urdfdom,
# checkInputs
gbenchmark,
gtest,
}:
stdenv.mkDerivation (finalAttrs: {
pname = "dartsim";
version = "6.15.0";
src = fetchFromGitHub {
owner = "dartsim";
repo = "dart";
tag = "v${finalAttrs.version}";
hash = "sha256-ik6FwrN5Ta1LinrXpZZc7AmzdFPoLjG07/zo1IZdmgI=";
};
# disable failing tests. CMAKE_CTEST_ARGUMENTS does not work.
patches = [ ./disable-failing-tests.patch ];
postPatch = ''
# https://github.com/dartsim/dart/pull/1904, merged upstream
substituteInPlace tests/benchmark/CMakeLists.txt \
--replace-fail \
"FetchContent_MakeAvailable(benchmark)" \
"find_package(benchmark REQUIRED)"
# https://github.com/dartsim/dart/pull/1907, merged upstream
substituteInPlace python/CMakeLists.txt \
--replace-fail \
"FetchContent_MakeAvailable(pybind11)" \
"find_package(pybind11 CONFIG REQUIRED)"
# fix use of absolute CMake paths in .pc
substituteInPlace CMakeLists.txt \
--replace-fail \
"$""{CMAKE_INSTALL_PREFIX}/$""{CMAKE_INSTALL_LIBDIR}" \
"$""{CMAKE_INSTALL_LIBDIR}"
substituteInPlace cmake/dart.pc.in \
--replace-fail \
"libdir=$""{prefix}/" \
"libdir=" \
--replace-fail \
"includedir=$""{prefix}/" \
"includedir="
# install python bindings
substituteInPlace python/dartpy/CMakeLists.txt \
--replace-fail \
"EXCLUDE_FROM_ALL" \
""
echo "install(TARGETS $""{pybind_module} DESTINATION ${python3Packages.python.sitePackages})" \
>> python/dartpy/CMakeLists.txt
'';
nativeBuildInputs =
[
cmake
pkg-config
]
++ lib.optionals pythonSupport [
python3Packages.python
python3Packages.pybind11
];
propagatedBuildInputs =
[
blas
boost
assimp
bullet
eigen
fcl
fmt
libglut
gbenchmark
nlopt
# requires imgui_impl_opengl2.h
(imgui.override { IMGUI_BUILD_OPENGL2_BINDING = true; })
ipopt
lapack
libGL
libGLU
ode
openscenegraph
pagmo2
tinyxml-2
urdfdom
]
++ lib.optionals pythonSupport [
python3Packages.numpy
];
checkInputs = [
gbenchmark
gtest
];
nativeCheckInputs = lib.optionals pythonSupport [
python3Packages.pytest
python3Packages.pythonImportsCheckHook
];
doCheck = true;
# build unit tests
preCheck = "make tests";
pythonImportsCheck = [ "dartpy" ];
cmakeFlags = [
(lib.cmakeBool "DART_BUILD_DARTPY" pythonSupport)
(lib.cmakeBool "DART_USE_SYSTEM_IMGUI" true)
(lib.cmakeBool "DART_USE_SYSTEM_GOOGLEBENCHMARK" true)
(lib.cmakeBool "DART_USE_SYSTEM_GOOGLETEST" true)
];
meta = {
description = "DART: Dynamic Animation and Robotics Toolkit";
homepage = "https://github.com/dartsim/dart";
changelog = "https://github.com/dartsim/dart/blob/v${finalAttrs.version}/CHANGELOG.md";
license = lib.licenses.bsd2;
maintainers = with lib.maintainers; [ nim65s ];
platforms = lib.platforms.unix ++ lib.platforms.windows;
};
})
+1 -1
View File
@@ -44,7 +44,7 @@ stdenv.mkDerivation {
[
graphene
gtk3
libxml2
(libxml2.override { zlibSupport = true; })
python3
poppler
]
+2 -2
View File
@@ -9,13 +9,13 @@
buildGoModule rec {
pname = "distribution";
version = "3.0.0-rc.4";
version = "3.0.0";
src = fetchFromGitHub {
owner = "distribution";
repo = "distribution";
tag = "v${version}";
hash = "sha256-aDvcwsA1J1S7haNGvb2PikN51PpDqM93NJQKRH/acwM=";
hash = "sha256-myezQTEdH7kkpCoAeZMf5OBxT4Bz8Qx6vCnwim230RY=";
};
vendorHash = null;
+2 -2
View File
@@ -22,13 +22,13 @@
buildGoModule rec {
pname = "ecapture";
version = "1.0.0";
version = "1.0.1";
src = fetchFromGitHub {
owner = "gojue";
repo = "ecapture";
tag = "v${version}";
hash = "sha256-z2cl3yUNUQhLT9bPWApABUIRNdbYqG/7QDwRTvCWvjY=";
hash = "sha256-ZBuilCZKKc2jCLvpvESgJ2vC6awJiImoqTjospoxJdw=";
fetchSubmodules = true;
};
+51
View File
@@ -0,0 +1,51 @@
{
lib,
fetchFromGitHub,
buildGoModule,
versionCheckHook,
nix-update-script,
}:
buildGoModule (finalAttrs: {
pname = "emcee";
version = "0.4.5";
src = fetchFromGitHub {
owner = "loopwork-ai";
repo = "emcee";
tag = "v${finalAttrs.version}";
hash = "sha256-qiH9Om1ChuMpU3CFQkOdJj1uITSI7hojRtXkRF9GSC0=";
};
vendorHash = "sha256-TU6Z06b+ZkiaK2ArNKIhHMwBludThpSo4RLZO/sirK4=";
ldflags = [
"-X main.version=${finalAttrs.version}"
];
__darwinAllowLocalNetworking = true;
nativeInstallCheckInputs = [
versionCheckHook
];
versionCheckProgramArg = [ "--version" ];
doInstallCheck = true;
passthru.updateScript = nix-update-script { };
meta = {
description = "Connect agents to APIs";
longDescription = ''
emcee is a tool that provides a Model Context Protocol (MCP) server
for any web application with an OpenAPI specification.
You can use emcee to connect Claude Desktop
and other apps to external tools and data services, similar to ChatGPT plugins.
'';
homepage = "https://github.com/loopwork-ai/emcee";
changelog = "https://github.com/loopwork-ai/emcee/releases/tag/v${finalAttrs.version}";
license = lib.licenses.asl20;
maintainers = with lib.maintainers; [ genga898 ];
mainProgram = "emcee";
};
})
+1
View File
@@ -119,6 +119,7 @@ stdenv.mkDerivation (finalAttrs: {
openssl
pam
pcre2
protobufc
python3
readline
rtrlib
+1 -1
View File
@@ -107,7 +107,7 @@ class Repo:
)
def flatten_repr(self) -> dict:
return {"fetcher": self.fetcher, "attrs": {**({"hash": self.hash} if hasattr(self, "hash") else {}), **self.args}}
return {"fetcher": self.fetcher, "args": {**({"hash": self.hash} if hasattr(self, "hash") else {}), **self.args}}
def flatten(self, path: str) -> dict:
out = {path: self.flatten_repr()}
+5 -5
View File
@@ -171,11 +171,11 @@ let
linux = stdenv.mkDerivation (finalAttrs: {
inherit pname meta passthru;
version = "135.0.7049.52";
version = "135.0.7049.84";
src = fetchurl {
url = "https://dl.google.com/linux/chrome/deb/pool/main/g/google-chrome-stable/google-chrome-stable_${finalAttrs.version}-1_amd64.deb";
hash = "sha256-SLRwm6XKgnM1xUhs8nVyUCSFhq3yH3fHoN2h8d2gpto=";
hash = "sha256-ZygM2YuML23KPJQ8Kl5f2YqI+0vbXnC3fYk8l8R/nXk=";
};
# With strictDeps on, some shebangs were not being patched correctly
@@ -274,11 +274,11 @@ let
darwin = stdenvNoCC.mkDerivation (finalAttrs: {
inherit pname meta passthru;
version = "135.0.7049.42";
version = "135.0.7049.85";
src = fetchurl {
url = "http://dl.google.com/release2/chrome/acq3myotpqwugwaz3epmxxnjty3q_135.0.7049.42/GoogleChrome-135.0.7049.42.dmg";
hash = "sha256-/m05H4iD32Ro89J9NslEfGh8LMjQYAL989SenKxFNMM=";
url = "http://dl.google.com/release2/chrome/adtorua7m5iaphuubpwxkpgb7qwa_135.0.7049.85/GoogleChrome-135.0.7049.85.dmg";
hash = "sha256-NvCVflxCbMyx4wnbg+3IlO01xZuvzKAVPgg/S629Xls=";
};
dontPatch = true;
@@ -1,10 +1,8 @@
{
lib,
stdenv,
fetchFromGitHub,
rustPlatform,
pkg-config,
Security,
openssl,
}:
@@ -26,19 +24,15 @@ rustPlatform.buildRustPackage rec {
pkg-config
];
buildInputs =
[
openssl
]
++ lib.optionals stdenv.hostPlatform.isDarwin [
Security
];
buildInputs = [
openssl
];
meta = with lib; {
meta = {
description = "Tool to convert Hikvision camera events to MQTT";
homepage = "https://github.com/CornerBit/HikSink";
license = with licenses; [ mit ];
maintainers = with maintainers; [ fab ];
license = lib.licenses.mit;
maintainers = with lib.maintainers; [ fab ];
mainProgram = "hik_sink";
};
}
+50
View File
@@ -0,0 +1,50 @@
{
lib,
stdenv,
boost,
fetchFromGitHub,
openssl,
zlib,
}:
stdenv.mkDerivation {
pname = "i2pd-tools";
version = "2.56.0";
#tries to access the network during the tests, which fails
src = fetchFromGitHub {
owner = "PurpleI2P";
repo = "i2pd-tools";
rev = "33fce4b087d92ee90653460bbe7a07cdc0c7b121";
hash = "sha256-mmCs8AHHKhx1/rDp/Vc1p2W3pufoTa4FcJyJwD919zw=";
fetchSubmodules = true;
};
buildInputs = [
zlib
openssl
boost
];
installPhase = ''
runHook preInstall
mkdir -p $out/bin
for bin in \
routerinfo keygen vain keyinfo regaddr \
regaddr_3ld regaddralias x25519 famtool autoconf;
do
install -Dm755 $bin -t $out/bin
done
runHook postInstall
'';
meta = {
description = "Toolsuite to work with keys and eepsites";
homepage = "https://github.com/PurpleI2P/i2pd-tools";
license = lib.licenses.bsd3;
maintainers = with lib.maintainers; [ MulliganSecurity ];
mainProgram = "i2pd-tools";
};
}
+2 -2
View File
@@ -8,13 +8,13 @@
buildGoModule rec {
pname = "keep-sorted";
version = "0.6.0";
version = "0.6.1";
src = fetchFromGitHub {
owner = "google";
repo = "keep-sorted";
tag = "v${version}";
hash = "sha256-ROvj7w8YMq6+ntx0SWi+HfN4sO6d7RjKWwlb/9gfz8w=";
hash = "sha256-N/fJ0qj7/kQ9Q7ULpQpyhWAWFlnLkTjyNNKg8VhLvi0=";
};
vendorHash = "sha256-HTE9vfjRmi5GpMue7lUfd0jmssPgSOljbfPbya4uGsc=";
+52
View File
@@ -0,0 +1,52 @@
{
lib,
stdenv,
makeWrapper,
jdk21,
jdk ? jdk21,
fetchurl,
nixosTests,
}:
stdenv.mkDerivation (finalAttrs: {
pname = "lavalink";
version = "4.0.8";
src = fetchurl {
url = "https://github.com/lavalink-devs/Lavalink/releases/download/${finalAttrs.version}/Lavalink.jar";
hash = "sha256-G4a9ltPq/L0vcazTQjStTlOOtwrBi37bYUNQHy5CV9Y=";
};
nativeBuildInputs = [
makeWrapper
];
dontUnpack = true;
installPhase = ''
runHook preInstall
makeWrapper ${lib.getExe jdk} $out/bin/lavalink \
--add-flags "-jar $src"
runHook postInstall
'';
passthru.tests = { inherit (nixosTests) lavalink; };
meta = {
description = "Standalone audio sending node based on Lavaplayer and Koe";
longDescription = ''
A standalone audio sending node based on Lavaplayer and Koe. Allows for sending audio without it ever reaching any of your shards.
Being used in production by FredBoat, Dyno, LewdBot, and more.
'';
homepage = "https://lavalink.dev/";
changelog = "https://github.com/lavalink-devs/Lavalink/releases/tag/${finalAttrs.version}";
license = lib.licenses.mit;
maintainers = with lib.maintainers; [ nanoyaki ];
sourceProvenance = [ lib.sourceTypes.binaryBytecode ];
mainProgram = "lavalink";
inherit (jdk.meta) platforms;
};
})
+3 -3
View File
@@ -6,12 +6,12 @@
python3.pkgs.buildPythonPackage rec {
pname = "ledfx";
version = "2.0.105";
version = "2.0.108";
pyproject = true;
src = fetchPypi {
inherit pname version;
hash = "sha256-S/ZlEFgcFiLr0V7g0X0bjWU0YNVzA0JctFaJTK/QkpI=";
hash = "sha256-wfp6u2YIliufjkaLBlLVFw2/dqpHYFAfcow4iyOB2ME=";
};
pythonRelaxDeps = true;
@@ -23,7 +23,7 @@ python3.pkgs.buildPythonPackage rec {
build-system = with python3.pkgs; [
cython
poetry-core
pdm-backend
];
dependencies = with python3.pkgs; [
+14 -10
View File
@@ -20,6 +20,7 @@
rustPlatform,
rustc,
libunistring,
prqlSupport ? stdenv.hostPlatform == stdenv.buildPlatform,
}:
stdenv.mkDerivation (finalAttrs: {
@@ -41,16 +42,19 @@ stdenv.mkDerivation (finalAttrs: {
depsBuildBuild = [ buildPackages.stdenv.cc ];
nativeBuildInputs = [
autoconf
automake
zlib
curl.dev
re2c
cargo
rustPlatform.cargoSetupHook
rustc
];
nativeBuildInputs =
[
autoconf
automake
zlib
curl.dev
re2c
]
++ lib.optionals prqlSupport [
cargo
rustPlatform.cargoSetupHook
rustc
];
buildInputs =
[
+2 -2
View File
@@ -7,11 +7,11 @@
stdenv.mkDerivation rec {
pname = "mlxbf-bootimages";
version = "4.8.0-13249";
version = "4.10.0-13520";
src = fetchurl {
url = "https://linux.mellanox.com/public/repo/bluefield/${version}/bootimages/prod/${pname}-signed_${version}_arm64.deb";
hash = "sha256-VwbngA2UpHtvhCmL21qrebVSNG6/4PbkhnVAmERpek0=";
hash = "sha256-lPclxhKmn1hvGXWI1A+Q1yXK7FZzKUcOtBoXG6KRsCA=";
};
nativeBuildInputs = [
+2 -2
View File
@@ -8,13 +8,13 @@
stdenv.mkDerivation (finalAttrs: {
pname = "open62541pp";
version = "0.17.0";
version = "0.18.0";
src = fetchFromGitHub {
owner = "open62541pp";
repo = "open62541pp";
rev = "v${finalAttrs.version}";
hash = "sha256-593UaEEqWaheqEBUl13ijuC25sNnuPe9a6gbBo7Zo+E=";
hash = "sha256-xFiL+biDETGNwWzbTcfAi3GF1Dj9vvXEj2wJ+GoFz1Q=";
};
cmakeFlags = [
+4 -4
View File
@@ -8,13 +8,13 @@
stdenv,
}:
let
version = "0.22.0";
version = "0.23.1";
parca-src = fetchFromGitHub {
owner = "parca-dev";
repo = "parca";
tag = "v${version}";
hash = "sha256-iuTlKUmugRum0qZRhuw0FR13iE2qrQegTgwpAvgJSXk=";
hash = "sha256-UCYBT+KegoXpMRMoA3iuX8WiXhkX43JVOmhHksH5Pwk=";
};
ui = stdenv.mkDerivation (finalAttrs: {
@@ -24,7 +24,7 @@ let
pnpmDeps = pnpm_9.fetchDeps {
inherit (finalAttrs) pname src version;
hash = "sha256-MVNO24Oksy/qRUmEUoWoviQEo6Eimb18ZnDj5Z1vJkY=";
hash = "sha256-MByoIJtynv38TFNVDdZWjkJJpABCjJU2wBrChxM2rdE=";
};
nativeBuildInputs = [
@@ -56,7 +56,7 @@ buildGoModule rec {
pname = "parca";
src = parca-src;
vendorHash = "sha256-fErrbi3iSJlkguqzL6nH+fzmjxhoYVl1qH7tqRR1F1A=";
vendorHash = "sha256-O7dzdMGZ1l+cmVA3svbh/Ig1SbXXiMwJ7TXmrT2IM+g=";
ldflags = [
"-X=main.version=${version}"
@@ -7,13 +7,13 @@
stdenvNoCC.mkDerivation {
pname = "roddhjav-apparmor-rules";
version = "0-unstable-2025-03-28";
version = "0-unstable-2025-04-07";
src = fetchFromGitHub {
owner = "roddhjav";
repo = "apparmor.d";
rev = "fbb71fb47b39095365ebba057342a4b0330ac477";
hash = "sha256-h1AuaR1MTgRhk4K+dbq2GAtVch8kehFDRFHknQzK3fg=";
rev = "305c2e344fe3ed14d4166211e0d21728702d83bf";
hash = "sha256-KLyjjHahEbM3lOTPLqgT75mhyVWEXJSugraH7kzQDV8=";
};
dontConfigure = true;
+2 -2
View File
@@ -72,14 +72,14 @@ let
];
in
stdenv.mkDerivation rec {
version = "4.4.1";
version = "4.5.0";
pname = "sabnzbd";
src = fetchFromGitHub {
owner = "sabnzbd";
repo = "sabnzbd";
rev = version;
hash = "sha256-7CR2hn+mXd6eKoFjrapZuB+Fpfi1UWzTQK5DnP2303k=";
hash = "sha256-X/ovfhP6QZOmYEfX2YchGWjkLBYZXNFuefXQyzKIW5s=";
};
nativeBuildInputs = [ makeWrapper ];
+4 -4
View File
@@ -62,13 +62,13 @@ in
rustPlatform.buildRustPackage {
pname = "servo";
version = "0-unstable-2025-03-29";
version = "0-unstable-2025-04-08";
src = fetchFromGitHub {
owner = "servo";
repo = "servo";
rev = "5d1c64dba9cf3e65f770370eb17f00ad4114edce";
hash = "sha256-0DuS2WfgWgnxh5qDc/XNL28XxXKnYPQW7F2m4OlANck=";
rev = "4d4f94936f8859f039497df370083fd7ea35fb00";
hash = "sha256-SI3HnKuh6zD07D7SUswfehwXEFkuaZQkqipH0Rlj9Gg=";
# Breaks reproducibility depending on whether the picked commit
# has other ref-names or not, which may change over time, i.e. with
# "ref-names: HEAD -> main" as long this commit is the branch HEAD
@@ -79,7 +79,7 @@ rustPlatform.buildRustPackage {
};
useFetchCargoVendor = true;
cargoHash = "sha256-m6lsXHf7SIgbIt8RyhUkJpd1/nJQMSNRS9uTJ6th9ng=";
cargoHash = "sha256-toVo1QpeMeK8SoQaYU5d+VAd3s22iwRI4caJIpxPP6I=";
# set `HOME` to a temp dir for write access
# Fix invalid option errors during linking (https://github.com/mozilla/nixpkgs-mozilla/commit/c72ff151a3e25f14182569679ed4cd22ef352328)
+2 -2
View File
@@ -5,11 +5,11 @@
}:
python3.pkgs.buildPythonApplication rec {
pname = "seventeenlands";
version = "0.1.42";
version = "0.1.43";
src = fetchPypi {
inherit pname version;
hash = "sha256-P/imV4vvyd6wgjqXzgfIAURFtFhLwX1eS8eiPl79oZk=";
hash = "sha256-oTF4dtMKhx2YR80goKTcyq2P0mxAKLE2Ze5HbMNvyGg=";
};
# No tests
@@ -22,6 +22,23 @@ let
pnpm = pnpm_10;
electron = electron_35;
nodeOS =
{
"linux" = "linux";
"darwin" = "darwin";
}
.${stdenv.hostPlatform.parsed.kernel.name}
or (throw "unsupported platform ${stdenv.hostPlatform.parsed.kernel.name}");
nodeArch =
{
# https://nodejs.org/api/os.html#osarch
"x86_64" = "x64";
"aarch64" = "arm64";
}
.${stdenv.hostPlatform.parsed.cpu.name}
or (throw "unsupported platform ${stdenv.hostPlatform.parsed.cpu.name}");
electron-headers = runCommand "electron-headers" { } ''
mkdir -p $out
tar -C $out --strip-components=1 -xvf ${electron.headers}
@@ -29,7 +46,8 @@ let
libsignal-node = callPackage ./libsignal-node.nix { inherit nodejs; };
ringrtc-bin = callPackage ./ringrtc-bin.nix { };
webrtc = callPackage ./webrtc.nix { };
ringrtc = callPackage ./ringrtc.nix { inherit webrtc; };
# Noto Color Emoji PNG files for emoji replacement; see below.
noto-fonts-color-emoji-png = noto-fonts-color-emoji.overrideAttrs (prevAttrs: {
@@ -145,12 +163,14 @@ stdenv.mkDerivation (finalAttrs: {
die "libsignal-client version mismatch"
fi
if [ "`jq -r '.dependencies."@signalapp/ringrtc"' < package.json`" != "${ringrtc-bin.version}" ]
if [ "`jq -r '.dependencies."@signalapp/ringrtc"' < package.json`" != "${ringrtc.version}" ]
then
die "ringrtc version mismatch"
fi
cp -r ${ringrtc-bin} node_modules/@signalapp/ringrtc/build
mkdir -p node_modules/@signalapp/ringrtc/build
install -D ${ringrtc}/lib/libringrtc${stdenv.hostPlatform.extensions.library} \
node_modules/@signalapp/ringrtc/build/${nodeOS}/libringrtc-${nodeArch}.node
rm -fr node_modules/@signalapp/libsignal-client/prebuilds
cp -r ${libsignal-node}/lib node_modules/@signalapp/libsignal-client/prebuilds
@@ -218,7 +238,8 @@ stdenv.mkDerivation (finalAttrs: {
passthru = {
inherit
libsignal-node
ringrtc-bin
ringrtc
webrtc
sticker-creator
;
tests.application-launch = nixosTests.signal-desktop;
@@ -1,27 +0,0 @@
{
stdenv,
lib,
fetchzip,
autoPatchelfHook,
libpulseaudio,
}:
stdenv.mkDerivation (finalAttrs: {
pname = "ringrtc-bin";
version = "2.50.3";
src = fetchzip {
url = "https://build-artifacts.signal.org/libraries/ringrtc-desktop-build-v${finalAttrs.version}.tar.gz";
hash = "sha256-UJqH/UiT9j36r6fr673CP/Z4lGaSPXIzAkf72YZfExo=";
};
installPhase = ''
cp -r . $out
'';
nativeBuildInputs = [ autoPatchelfHook ];
buildInputs = [ libpulseaudio ];
meta = {
homepage = "https://github.com/signalapp/ringrtc";
license = lib.licenses.agpl3Only;
sourceProvenance = with lib.sourceTypes; [ binaryNativeCode ];
};
})
@@ -0,0 +1,45 @@
{
rustPlatform,
lib,
fetchFromGitHub,
cmake,
protobuf,
webrtc,
}:
rustPlatform.buildRustPackage (finalAttrs: {
pname = "ringrtc";
version = "2.50.3";
src = fetchFromGitHub {
owner = "signalapp";
repo = "ringrtc";
tag = "v${finalAttrs.version}";
hash = "sha256-EuryWZMMTkrDPheVv0wBsH+zL3LylxSSPS+nNnn3cmM=";
};
useFetchCargoVendor = true;
cargoHash = "sha256-/c+tpTh5X05HLqAHsA/YvWxqy7TSUy49g6OtIQg+rMs=";
cargoBuildFlags = [
"-p"
"ringrtc"
"--features"
"electron"
];
doCheck = false;
nativeBuildInputs = [
protobuf
cmake
];
buildInputs = [
webrtc
];
meta = {
homepage = "https://github.com/signalapp/ringrtc";
description = "RingRTC library used by Signal";
license = lib.licenses.agpl3Only;
platforms = lib.platforms.unix;
};
})
@@ -1,5 +1,5 @@
#!/usr/bin/env nix-shell
#!nix-shell -i bash -p bash nix-update common-updater-scripts curl coreutils jq
#!nix-shell -i bash -p bash nix-update common-updater-scripts curl coreutils jq gclient2nix
set -ex
@@ -19,10 +19,12 @@ releaseEpoch=`date -d $releaseDate +%s`
packageJson="`curl_github "https://raw.githubusercontent.com/signalapp/Signal-Desktop/refs/tags/$releaseTag/package.json"`"
latestVersion="`jq -r '.version' <<< $packageJson`"
nodeVersion="`jq -r '.engines.node' <<< $packageJson | head -c2`"
electronVersion="`jq -r '.devDependencies.electron' <<< $packageJson | head -c2`"
nodeVersion="`jq -r '.engines.node' <<< $packageJson | cut -d. -f1`"
electronVersion="`jq -r '.devDependencies.electron' <<< $packageJson | cut -d. -f1`"
libsignalClientVersion=`jq -r '.dependencies."@signalapp/libsignal-client"' <<< $packageJson`
ringrtcVersion=`jq -r '.dependencies."@signalapp/ringrtc"' <<< $packageJson`
ringrtcVersionProperties="`curl_github "https://raw.githubusercontent.com/signalapp/ringrtc/refs/tags/v$ringrtcVersion/config/version.properties"`"
webrtcVersion="`grep --only-matching "^webrtc.version=.*$" <<< $ringrtcVersionProperties | sed "s/webrtc.version=//g"`"
sed -E -i "s/(nodejs_)../\1$nodeVersion/" $SCRIPT_DIR/package.nix
sed -E -i "s/(electron_)../\1$electronVersion/" $SCRIPT_DIR/package.nix
@@ -44,4 +46,9 @@ update-source-version signal-desktop-source.libsignal-node \
--ignore-same-version \
--source-key=npmDeps
update-source-version signal-desktop-source.ringrtc-bin "$ringrtcVersion"
update-source-version signal-desktop-source.ringrtc "$ringrtcVersion"
update-source-version signal-desktop-source.ringrtc \
--ignore-same-version \
--source-key=cargoDeps.vendorStaging
gclient2nix generate "https://github.com/signalapp/webrtc@$webrtcVersion" > $SCRIPT_DIR/webrtc-sources.json
@@ -0,0 +1,364 @@
{
"src": {
"args": {
"hash": "sha256-xKv606lqGgC27sf5WVPxkVRI5wixmRxQvOs1+pgORxc=",
"owner": "signalapp",
"repo": "webrtc",
"rev": "6834g"
},
"fetcher": "fetchFromGitHub"
},
"src/base": {
"args": {
"hash": "sha256-1e9jieGg8q0jrVkxN5chnslHTVkuul6ZAkaNrphF75s=",
"rev": "69f3676cdbd05660c136a6cc3b23383cbabe53d8",
"url": "https://chromium.googlesource.com/chromium/src/base"
},
"fetcher": "fetchFromGitiles"
},
"src/build": {
"args": {
"hash": "sha256-Si7wgZ895XWALVdMLiKoACB8w6H5IUvpKIOdtasfbCs=",
"rev": "05874e6c9429039f1747034af61de1fe2ea1ed06",
"url": "https://chromium.googlesource.com/chromium/src/build"
},
"fetcher": "fetchFromGitiles"
},
"src/buildtools": {
"args": {
"hash": "sha256-XbY2NHW5twzMpACa689F0n3Pie2RJOFeu2JNOM1yERM=",
"rev": "db0eae9640184fb132061f248f6108771a6ea2d4",
"url": "https://chromium.googlesource.com/chromium/src/buildtools"
},
"fetcher": "fetchFromGitiles"
},
"src/ringrtc/opus/src": {
"args": {
"hash": "sha256-Vztq+Z388Welj2cfChumimfEXtVn4zCcrGBedZFoTmM=",
"owner": "xiph",
"repo": "opus",
"rev": "0e30966b198ad28943799eaf5b3b08100b6f70c3"
},
"fetcher": "fetchFromGitHub"
},
"src/testing": {
"args": {
"hash": "sha256-P8zXemUOv6dpElAW7zmiy6L26nPeQk7R08zqz3Iatls=",
"rev": "eac4c18f749488d7232af275405e0e1b67d84cb3",
"url": "https://chromium.googlesource.com/chromium/src/testing"
},
"fetcher": "fetchFromGitiles"
},
"src/third_party": {
"args": {
"hash": "sha256-6Hhx+aLqZgs8/Ykn5YilzsRlqbh48Uj5W5rY5CBMwf8=",
"rev": "9d80a193fbfe8e2f2a29be2efeee93de9a826dcb",
"url": "https://chromium.googlesource.com/chromium/src/third_party"
},
"fetcher": "fetchFromGitiles"
},
"src/third_party/boringssl/src": {
"args": {
"hash": "sha256-glHy/C18/oHy77IUC9uHaMA9IhbcaO0X/Ek+RoFwZFg=",
"rev": "0fa9014d861f024e28fb491ed7b1cfd44103dee7",
"url": "https://boringssl.googlesource.com/boringssl.git"
},
"fetcher": "fetchFromGitiles"
},
"src/third_party/breakpad/breakpad": {
"args": {
"hash": "sha256-kTkwRfaqw5ZCHEvu2YPZ+1vCfekHkY5pY3m9snDN64g=",
"rev": "6b0c5b7ee1988a14a4af94564e8ae8bba8a94374",
"url": "https://chromium.googlesource.com/breakpad/breakpad.git"
},
"fetcher": "fetchFromGitiles"
},
"src/third_party/catapult": {
"args": {
"hash": "sha256-SkF+RIIlU8Vl3AmN6kARkLuVz/X5vygNOtGN2K3Sr+M=",
"rev": "44791916611acec1cd74c492c7453e46d9b0dbd2",
"url": "https://chromium.googlesource.com/catapult.git"
},
"fetcher": "fetchFromGitiles"
},
"src/third_party/ced/src": {
"args": {
"hash": "sha256-ySG74Rj2i2c/PltEgHVEDq+N8yd9gZmxNktc56zIUiY=",
"rev": "ba412eaaacd3186085babcd901679a48863c7dd5",
"url": "https://chromium.googlesource.com/external/github.com/google/compact_enc_det.git"
},
"fetcher": "fetchFromGitiles"
},
"src/third_party/clang-format/script": {
"args": {
"hash": "sha256-whD8isX2ZhLrFzdxHhFP1S/sZDRgyrzLFaVd7OEFqYo=",
"rev": "3c0acd2d4e73dd911309d9e970ba09d58bf23a62",
"url": "https://chromium.googlesource.com/external/github.com/llvm/llvm-project/clang/tools/clang-format.git"
},
"fetcher": "fetchFromGitiles"
},
"src/third_party/colorama/src": {
"args": {
"hash": "sha256-6ZTdPYSHdQOLYMSnE+Tp7PgsVTs3U2awGu9Qb4Rg/tk=",
"rev": "3de9f013df4b470069d03d250224062e8cf15c49",
"url": "https://chromium.googlesource.com/external/colorama.git"
},
"fetcher": "fetchFromGitiles"
},
"src/third_party/crc32c/src": {
"args": {
"hash": "sha256-KBraGaO5LmmPP+p8RuDogGldbTWdNDK+WzF4Q09keuE=",
"rev": "d3d60ac6e0f16780bcfcc825385e1d338801a558",
"url": "https://chromium.googlesource.com/external/github.com/google/crc32c.git"
},
"fetcher": "fetchFromGitiles"
},
"src/third_party/dav1d/libdav1d": {
"args": {
"hash": "sha256-FK3tOLq5NcKQuStY5o8Lv2CXpjYHJm7n+NnyLFMOCxo=",
"rev": "389450f61ea0b2057fc9ea393d3065859c4ba7f2",
"url": "https://chromium.googlesource.com/external/github.com/videolan/dav1d.git"
},
"fetcher": "fetchFromGitiles"
},
"src/third_party/depot_tools": {
"args": {
"hash": "sha256-vlBENaVTtbwDJtSswuszcUlx+icZYJeP6ew6MO1cAv0=",
"rev": "20b9bdcace7ed561d6a75728c85373503473cb6b",
"url": "https://chromium.googlesource.com/chromium/tools/depot_tools.git"
},
"fetcher": "fetchFromGitiles"
},
"src/third_party/ffmpeg": {
"args": {
"hash": "sha256-j5mpWn4j+U4rRlXbq8okUUXrRKycZkiV+UntiS90ChM=",
"rev": "686d6944501a6ee9c849581e3fe343273d4af3f6",
"url": "https://chromium.googlesource.com/chromium/third_party/ffmpeg.git"
},
"fetcher": "fetchFromGitiles"
},
"src/third_party/flatbuffers/src": {
"args": {
"hash": "sha256-tbc45o0MbMvK5XqRUJt5Eg8BU6+TJqlmwFgQhHq6wRM=",
"rev": "8db59321d9f02cdffa30126654059c7d02f70c32",
"url": "https://chromium.googlesource.com/external/github.com/google/flatbuffers.git"
},
"fetcher": "fetchFromGitiles"
},
"src/third_party/fontconfig/src": {
"args": {
"hash": "sha256-W5WIgC6A52kY4fNkbsDEa0o+dfd97Rl5NKfgnIRpI00=",
"rev": "14d466b30a8ab4a9d789977ed94f2c30e7209267",
"url": "https://chromium.googlesource.com/external/fontconfig.git"
},
"fetcher": "fetchFromGitiles"
},
"src/third_party/freetype/src": {
"args": {
"hash": "sha256-Lc2hbmZnnXQa0vzlJCizNBQ5WCOI5sJglTTe5gWVYUA=",
"rev": "f02bffad0fd57f3acfa835c3f2899c5b71ff8be0",
"url": "https://chromium.googlesource.com/chromium/src/third_party/freetype2.git"
},
"fetcher": "fetchFromGitiles"
},
"src/third_party/fuzztest/src": {
"args": {
"hash": "sha256-UYmzjOX8k+CWL+xOIF3NiEL3TRUjS8JflortB2RUT4o=",
"rev": "0021f30508bc7f73fa5270962d022acb480d242f",
"url": "https://chromium.googlesource.com/external/github.com/google/fuzztest.git"
},
"fetcher": "fetchFromGitiles"
},
"src/third_party/google_benchmark/src": {
"args": {
"hash": "sha256-gztnxui9Fe/FTieMjdvfJjWHjkImtlsHn6fM1FruyME=",
"rev": "344117638c8ff7e239044fd0fa7085839fc03021",
"url": "https://chromium.googlesource.com/external/github.com/google/benchmark.git"
},
"fetcher": "fetchFromGitiles"
},
"src/third_party/googletest/src": {
"args": {
"hash": "sha256-Iv/7r79cKC1pFkxPPHK/IHv/HFx18XZ4YVr+C2CX8+M=",
"rev": "62df7bdbc10887e094661e07ec2595b7920376fd",
"url": "https://chromium.googlesource.com/external/github.com/google/googletest.git"
},
"fetcher": "fetchFromGitiles"
},
"src/third_party/grpc/src": {
"args": {
"hash": "sha256-64JEVCx/PCM0dvv7kAQvSjLc0QbRAZVBDzwD/FAV6T8=",
"rev": "822dab21d9995c5cf942476b35ca12a1aa9d2737",
"url": "https://chromium.googlesource.com/external/github.com/grpc/grpc.git"
},
"fetcher": "fetchFromGitiles"
},
"src/third_party/gtest-parallel": {
"args": {
"hash": "sha256-VUuk5tBTh+aU2dxVWUF1FePWlKUJaWSiGSXk/J5zgHw=",
"rev": "96f4f904922f9bf66689e749c40f314845baaac8",
"url": "https://chromium.googlesource.com/external/github.com/google/gtest-parallel"
},
"fetcher": "fetchFromGitiles"
},
"src/third_party/harfbuzz-ng/src": {
"args": {
"hash": "sha256-iR49rfGDKxPObCff1/30hYHpP5FpZ28ROgMZhNk9eFY=",
"rev": "1da053e87f0487382404656edca98b85fe51f2fd",
"url": "https://chromium.googlesource.com/external/github.com/harfbuzz/harfbuzz.git"
},
"fetcher": "fetchFromGitiles"
},
"src/third_party/icu": {
"args": {
"hash": "sha256-7568UHNDOzyTCLy3TAwxZLUrKfB6A1yKA0wVZQJjKoI=",
"rev": "4239b1559d11d4fa66c100543eda4161e060311e",
"url": "https://chromium.googlesource.com/chromium/deps/icu.git"
},
"fetcher": "fetchFromGitiles"
},
"src/third_party/instrumented_libs": {
"args": {
"hash": "sha256-kHKGADAgzlaeckXFbpU1GhJK+zkiRd9XvdtPF6qrQFY=",
"rev": "bb6dbcf2df7a9beb34c3773ef4df161800e3aed9",
"url": "https://chromium.googlesource.com/chromium/third_party/instrumented_libraries.git"
},
"fetcher": "fetchFromGitiles"
},
"src/third_party/jsoncpp/source": {
"args": {
"hash": "sha256-bSLNcoYBz3QCt5VuTR056V9mU2PmBuYBa0W6hFg2m8Q=",
"rev": "42e892d96e47b1f6e29844cc705e148ec4856448",
"url": "https://chromium.googlesource.com/external/github.com/open-source-parsers/jsoncpp.git"
},
"fetcher": "fetchFromGitiles"
},
"src/third_party/libaom/source/libaom": {
"args": {
"hash": "sha256-2XHqNAmv2L3TEFXu4Q6rnASLmuE93QplSVKNqyhlKUk=",
"rev": "840f8797871cc587f7113ea9d2483a1156d57c0e",
"url": "https://aomedia.googlesource.com/aom.git"
},
"fetcher": "fetchFromGitiles"
},
"src/third_party/libc++/src": {
"args": {
"hash": "sha256-7skqaen0XqbRvAGXQ0/3kea3vRInktdP3DOBeIBiGlQ=",
"rev": "6a68fd412b9aecd515a20a7cf84d11b598bfaf96",
"url": "https://chromium.googlesource.com/external/github.com/llvm/llvm-project/libcxx.git"
},
"fetcher": "fetchFromGitiles"
},
"src/third_party/libc++abi/src": {
"args": {
"hash": "sha256-zPm+Rif9fITazDvvm6SvLq8gwcPzPbuaXlRbyYqv7JA=",
"rev": "9a1d90c3b412d5ebeb97a6e33d98e1d0dd923221",
"url": "https://chromium.googlesource.com/external/github.com/llvm/llvm-project/libcxxabi.git"
},
"fetcher": "fetchFromGitiles"
},
"src/third_party/libjpeg_turbo": {
"args": {
"hash": "sha256-qgHXAjCDFxQ+QqJ8pSmI1NUvHvKKTi4MkIe1I/+hUAI=",
"rev": "927aabfcd26897abb9776ecf2a6c38ea5bb52ab6",
"url": "https://chromium.googlesource.com/chromium/deps/libjpeg_turbo.git"
},
"fetcher": "fetchFromGitiles"
},
"src/third_party/libsrtp": {
"args": {
"hash": "sha256-4qEZ9MD97MoqCUlZtbEhIKy+fDO1iIWqyrBsKwkjXTg=",
"rev": "000edd791434c8738455f10e0dd6b268a4852c0b",
"url": "https://chromium.googlesource.com/chromium/deps/libsrtp.git"
},
"fetcher": "fetchFromGitiles"
},
"src/third_party/libunwind/src": {
"args": {
"hash": "sha256-0OBelaxkKdajYXrGgz08nyPZhxqpsnFXiF3m8DGQkDo=",
"rev": "efc3baa2d1ece3630fcfa72bef93ed831bcaec4c",
"url": "https://chromium.googlesource.com/external/github.com/llvm/llvm-project/libunwind.git"
},
"fetcher": "fetchFromGitiles"
},
"src/third_party/libvpx/source/libvpx": {
"args": {
"hash": "sha256-7GInV/uHuK6bUa1dSBuxJn6adyjfoOqSqfmfTvQbAoc=",
"rev": "906334ac1de2b0afa666472dce5545b82c1251fb",
"url": "https://chromium.googlesource.com/webm/libvpx.git"
},
"fetcher": "fetchFromGitiles"
},
"src/third_party/libyuv": {
"args": {
"hash": "sha256-gTNmhYuYmt/JmWSAVbcE4PqG3kW/JaL7XEWXbiNVfMM=",
"rev": "a8e59d207483f75b87dd5fc670e937672cdf5776",
"url": "https://chromium.googlesource.com/libyuv/libyuv.git"
},
"fetcher": "fetchFromGitiles"
},
"src/third_party/llvm-libc/src": {
"args": {
"hash": "sha256-Q0Y/jvAOovOGYTgdDivVQD0CJciuEAt91DCBNNQHwnE=",
"rev": "98ed09318387deb45282ca1c92a384499860b76a",
"url": "https://chromium.googlesource.com/external/github.com/llvm/llvm-project/libc.git"
},
"fetcher": "fetchFromGitiles"
},
"src/third_party/lss": {
"args": {
"hash": "sha256-hE8uZf9Fst66qJkoVYChiB8G41ie+k9M4X0W+5JUSdw=",
"rev": "ce877209e11aa69dcfffbd53ef90ea1d07136521",
"url": "https://chromium.googlesource.com/linux-syscall-support.git"
},
"fetcher": "fetchFromGitiles"
},
"src/third_party/nasm": {
"args": {
"hash": "sha256-SiRXHsUlWXtH6dbDjDjqNAm105ibEB3jOfNtQAM4CaY=",
"rev": "f477acb1049f5e043904b87b825c5915084a9a29",
"url": "https://chromium.googlesource.com/chromium/deps/nasm.git"
},
"fetcher": "fetchFromGitiles"
},
"src/third_party/openh264/src": {
"args": {
"hash": "sha256-S7dS2IZwt4p4ZrF6K7E5HnwKuI3owU2I7vwtu95uTkE=",
"rev": "478e5ab3eca30e600006d5a0a08b176fd34d3bd1",
"url": "https://chromium.googlesource.com/external/github.com/cisco/openh264"
},
"fetcher": "fetchFromGitiles"
},
"src/third_party/perfetto": {
"args": {
"hash": "sha256-WXBjGcWZQWrfSQRVv7NfxVv483cf04rNfmXzqyuy9bk=",
"rev": "e57316a6ae4e85e9bc8ba82a6c6a93eb5d9a72aa",
"url": "https://android.googlesource.com/platform/external/perfetto.git"
},
"fetcher": "fetchFromGitiles"
},
"src/third_party/protobuf-javascript/src": {
"args": {
"hash": "sha256-TmP6xftUVTD7yML7UEM/DB8bcsL5RFlKPyCpcboD86U=",
"rev": "e34549db516f8712f678fcd4bc411613b5cc5295",
"url": "https://chromium.googlesource.com/external/github.com/protocolbuffers/protobuf-javascript"
},
"fetcher": "fetchFromGitiles"
},
"src/third_party/re2/src": {
"args": {
"hash": "sha256-IeANwJlJl45yf8iu/AZNDoiyIvTCZIeK1b74sdCfAIc=",
"rev": "6dcd83d60f7944926bfd308cc13979fc53dd69ca",
"url": "https://chromium.googlesource.com/external/github.com/google/re2.git"
},
"fetcher": "fetchFromGitiles"
},
"src/tools": {
"args": {
"hash": "sha256-o4Q+uDF+TUDlu/bcjBEn3o3UuF5q9h1Vf/gx16bnlYs=",
"rev": "c809c4133185094fbd75508202221ff14fc92f7c",
"url": "https://chromium.googlesource.com/chromium/src/tools"
},
"fetcher": "fetchFromGitiles"
}
}
@@ -0,0 +1,79 @@
{
stdenv,
lib,
ninja,
gn,
python3,
pkg-config,
glib,
alsa-lib,
pulseaudio,
writeShellScriptBin,
gclient2nix,
}:
stdenv.mkDerivation (finalAttrs: {
pname = "signal-webrtc";
version = finalAttrs.gclientDeps."src".path.rev;
gclientDeps = gclient2nix.importGclientDeps ./webrtc-sources.json;
sourceRoot = "src";
preConfigure = ''
echo "$SOURCE_DATE_EPOCH" > build/util/LASTCHANGE.committime
echo "generate_location_tags = true" >> build/config/gclient_args.gni
substituteInPlace build/toolchain/linux/BUILD.gn \
--replace-fail 'toolprefix = "aarch64-linux-gnu-"' 'toolprefix = ""'
patchShebangs build/mac/should_use_hermetic_xcode.py
'';
nativeBuildInputs = [
gn
ninja
(writeShellScriptBin "vpython3" ''
exec python3 "$@"
'')
python3
pkg-config
gclient2nix.gclientUnpackHook
];
buildInputs = [
glib
alsa-lib
pulseaudio
];
gnFlags = [
''target_os="linux"''
"use_sysroot=false"
"is_clang=false"
"treat_warnings_as_errors=false"
# https://github.com/signalapp/ringrtc/blob/main/bin/build-electron
"rtc_build_examples=false"
"rtc_build_tools=false"
"rtc_use_x11=false"
"rtc_enable_sctp=false"
"rtc_libvpx_build_vp9=true"
"rtc_disable_metrics=true"
"rtc_disable_trace_events=true"
"is_debug=false"
"symbol_level=1"
"rtc_include_tests=false"
"rtc_enable_protobuf=false"
];
ninjaFlags = [ "webrtc" ];
installPhase = ''
install -D obj/libwebrtc${stdenv.hostPlatform.extensions.staticLibrary} $out/lib/libwebrtc${stdenv.hostPlatform.extensions.staticLibrary}
'';
meta = {
description = "WebRTC library used by Signal";
homepage = "https://github.com/SignalApp/webrtc";
license = lib.licenses.bsd3;
maintainers = with lib.maintainers; [ ];
platforms = lib.platforms.linux;
};
})
+2 -2
View File
@@ -7,13 +7,13 @@
python3.pkgs.buildPythonApplication rec {
pname = "signal-export";
version = "3.4.1";
version = "3.5.1";
pyproject = true;
src = fetchPypi {
inherit version;
pname = "signal_export";
hash = "sha256-EDRPaxan/41srlD7wxKqkeWgqwHXY8p5PHJ7xD2GiuU=";
hash = "sha256-UhLWSYdJEDhZ1zI3nxhJoqeH8JfR4s9Hdp6fJ4UNROQ=";
};
build-system = with python3.pkgs; [
+85
View File
@@ -0,0 +1,85 @@
{
lib,
stdenv,
fetchFromGitHub,
fetchpatch,
# propagatedNativeBuildInputs
cmake,
qt6Packages,
# propagatedBuildInputs
boost,
cxxopts,
eigen,
glew,
gtest,
libGL,
metis,
tinyxml-2,
zlib,
}:
stdenv.mkDerivation (finalAttrs: {
pname = "sofa";
version = "24.12.00";
src = fetchFromGitHub {
owner = "sofa-framework";
repo = "sofa";
tag = "v${finalAttrs.version}";
hash = "sha256-LeFIM1RJjA2ynimjE8XngOQ8gR7BgqqTZBbDp0KXxs0=";
};
patches = [
# Include missing header for setw / setfill.
# ref. https://github.com/sofa-framework/sofa/pull/5279
# This was merged upstream and can be removed in next version
(fetchpatch {
url = "https://github.com/sofa-framework/sofa/commit/700b6cdd94fe24a51b2a7014fb0fc83e6abe1fbc.patch";
hash = "sha256-czc1u03USQt18d7cMPmXYguBhSb5JOJLplPvoixp+3w=";
})
];
propagatedNativeBuildInputs = [
cmake
qt6Packages.wrapQtAppsHook
];
propagatedBuildInputs = [
boost
cxxopts
eigen
glew
gtest
qt6Packages.libqglviewer
qt6Packages.qtbase
libGL
metis
tinyxml-2
zlib
];
cmakeFlags = [
(lib.cmakeBool "SOFA_ALLOW_FETCH_DEPENDENCIES" false)
];
doCheck = true;
postFixup = lib.optionalString stdenv.hostPlatform.isDarwin ''
install_name_tool -change \
$out/lib/libSceneChecking.${finalAttrs.version}.dylib \
$out/plugins/SceneChecking/lib/libSceneChecking.${finalAttrs.version}.dylib \
$out/bin/.runSofa-${finalAttrs.version}-wrapped
'';
meta = {
description = "Real-time multi-physics simulation with an emphasis on medical simulation";
homepage = "https://github.com/sofa-framework/sofa/";
changelog = "https://github.com/sofa-framework/sofa/blob/v${finalAttrs.version}/CHANGELOG.md";
license = lib.licenses.lgpl21Only;
maintainers = with lib.maintainers; [ nim65s ];
mainProgram = "runSofa";
platforms = lib.platforms.unix ++ lib.platforms.windows;
};
})
+2 -2
View File
@@ -9,13 +9,13 @@
stdenv.mkDerivation (finalAttrs: {
pname = "yarn-berry";
version = "4.8.0";
version = "4.8.1";
src = fetchFromGitHub {
owner = "yarnpkg";
repo = "berry";
tag = "@yarnpkg/cli/${finalAttrs.version}";
hash = "sha256-cNgR0t780/LJA+IIwycro/7AQjWa1tn00bh4ucPjVEc=";
hash = "sha256-JRQVUO5KsaGMmoC99cloW+hbFjgaFLNT3tqA29TVu34=";
};
buildInputs = [
@@ -28,13 +28,13 @@ let
in
stdenv.mkDerivation rec {
pname = "ctranslate2";
version = "4.5.0";
version = "4.6.0";
src = fetchFromGitHub {
owner = "OpenNMT";
repo = "CTranslate2";
rev = "v${version}";
hash = "sha256-2Znrt+TiQf/9YI1HYAikDfqbekAghOvxKoC05S18scQ=";
hash = "sha256-EM2kunqtxo0BTIzrEomfaRsdav7sx6QEOhjDtjjSoYY=";
fetchSubmodules = true;
};
+17 -8
View File
@@ -22,6 +22,8 @@
),
icuSupport ? false,
icu,
zlibSupport ? false,
zlib,
enableShared ? !stdenv.hostPlatform.isMinGW && !stdenv.hostPlatform.isStatic,
enableStatic ? !enableShared,
gnome,
@@ -68,6 +70,9 @@ stdenv.mkDerivation (finalAttrs: {
]
++ lib.optionals (stdenv.hostPlatform.isDarwin && pythonSupport && python ? isPy2 && python.isPy2) [
libintl
]
++ lib.optionals zlibSupport [
zlib
];
propagatedBuildInputs =
@@ -81,14 +86,18 @@ stdenv.mkDerivation (finalAttrs: {
icu
];
configureFlags = [
"--exec-prefix=${placeholder "dev"}"
(lib.enableFeature enableStatic "static")
(lib.enableFeature enableShared "shared")
(lib.withFeature icuSupport "icu")
(lib.withFeature pythonSupport "python")
(lib.optionalString pythonSupport "PYTHON=${python.pythonOnBuildForHost.interpreter}")
] ++ lib.optional enableHttp "--with-http";
configureFlags =
[
"--exec-prefix=${placeholder "dev"}"
(lib.enableFeature enableStatic "static")
(lib.enableFeature enableShared "shared")
(lib.withFeature icuSupport "icu")
(lib.withFeature pythonSupport "python")
(lib.optionalString pythonSupport "PYTHON=${python.pythonOnBuildForHost.interpreter}")
]
# avoid rebuilds, can be merged into list in version bumps
++ lib.optional enableHttp "--with-http"
++ lib.optional zlibSupport "--with-zlib";
installFlags = lib.optionals pythonSupport [
"pythondir=\"${placeholder "py"}/${python.sitePackages}\""
@@ -0,0 +1,32 @@
{
lib,
buildDunePackage,
fetchurl,
zarith,
}:
let
version = "0.6.1";
in
buildDunePackage {
pname = "bitwuzla-cxx";
inherit version;
minimalOCamlVersion = "4.12";
src = fetchurl {
url = "https://github.com/bitwuzla/ocaml-bitwuzla/releases/download/${version}/bitwuzla-cxx-${version}.tbz";
hash = "sha256-QgZy0a4QPVkgiB+lhEw40pE9TeuOOeMowtUb0F+BN6c=";
};
propagatedBuildInputs = [ zarith ];
meta = {
description = "OCaml binding for the SMT solver Bitwuzla C++ API";
homepage = "https://bitwuzla.github.io/";
changelog = "https://raw.githubusercontent.com/bitwuzla/ocaml-bitwuzla/refs/tags/${version}/CHANGES.md";
license = lib.licenses.mit;
maintainers = [ lib.maintainers.vbgl ];
};
}
@@ -20,19 +20,19 @@
buildPythonPackage rec {
inherit (ctranslate2-cpp) pname version src;
format = "setuptools";
pyproject = true;
# https://github.com/OpenNMT/CTranslate2/tree/master/python
sourceRoot = "${src.name}/python";
nativeBuildInputs = [
build-system = [
pybind11
setuptools
];
buildInputs = [ ctranslate2-cpp ];
propagatedBuildInputs = [
dependencies = [
numpy
pyyaml
];
@@ -59,21 +59,6 @@ buildPythonPackage rec {
export HOME=$TMPDIR
'';
disabledTests = [
# AssertionError: assert 'int8' in {'float32'}
"test_get_supported_compute_types"
# Tensorflow (tf) not available in Python 3.12 yet
# To remove when https://github.com/NixOS/nixpkgs/pull/325224 is fixed
"test_opennmt_tf_model_conversion"
"test_opennmt_tf_model_quantization"
"test_opennmt_tf_model_conversion_invalid_vocab"
"test_opennmt_tf_model_conversion_invalid_dir"
"test_opennmt_tf_shared_embeddings_conversion"
"test_opennmt_tf_postnorm_transformer_conversion"
"test_opennmt_tf_gpt_conversion"
"test_opennmt_tf_multi_features"
];
disabledTestPaths = [
# TODO: ModuleNotFoundError: No module named 'opennmt'
"tests/test_opennmt_tf.py"
@@ -0,0 +1,48 @@
{
buildPythonPackage,
fetchFromGitHub,
setuptools,
pythonOlder,
unittestCheckHook,
pandoc,
lib,
}:
let
version = "0.7.0";
in
buildPythonPackage {
pname = "emojis";
inherit version;
pyproject = true;
build-system = [ setuptools ];
disabled = pythonOlder "3.4";
src = fetchFromGitHub {
owner = "alexandrevicenzi";
repo = "emojis";
tag = "v${version}";
hash = "sha256-rr/BM39U1j8EL8b/YojclI4h0NnOCdoMlecR/1f9ISg=";
};
nativeBuildInputs = [
pandoc
];
preBuild = ''
make pandoc
'';
pythonImportsCheck = [ "emojis" ];
nativeCheckInputs = [ unittestCheckHook ];
meta = {
description = "Convert emoji names to emoji characters";
homepage = "https://github.com/alexandrevicenzi/emojis";
changelog = "https://github.com/alexandrevicenzi/emojis/releases/tag/v${version}";
license = lib.licenses.mit;
maintainers = with lib.maintainers; [ amadaluzia ];
};
}
@@ -19,19 +19,19 @@
buildPythonPackage rec {
pname = "granian";
version = "2.2.0";
version = "2.2.2";
pyproject = true;
src = fetchFromGitHub {
owner = "emmett-framework";
repo = "granian";
tag = "v${version}";
hash = "sha256-YQ9+PcKXtSc+wdvhgDfSAfcv/y53oqcrPCEI9dDKFa0=";
hash = "sha256-LIJhhekulLQje6/8g9BIraH8aToPVWoTnWnmgtwLnHA=";
};
cargoDeps = rustPlatform.fetchCargoVendor {
inherit pname version src;
hash = "sha256-XJ61+u5aGQis6YkfASD+WJHEKDBL+2ImqCAuQmm3A/g=";
hash = "sha256-GSPGDVn4WlTJY9CiToI6myuiLcV1j2+LYD9IusDtgUg=";
};
nativeBuildInputs = with rustPlatform; [
@@ -39,14 +39,14 @@
buildPythonPackage rec {
pname = "huggingface-hub";
version = "0.30.1";
version = "0.30.2";
pyproject = true;
src = fetchFromGitHub {
owner = "huggingface";
repo = "huggingface_hub";
tag = "v${version}";
hash = "sha256-jL38Pyih5msrk4uEVbYkBCJyABMYMfIrqZqpMB4GMno=";
hash = "sha256-6nE6iKIC6ymI+NMOw/xQT4l5nshDyPdGI0YhqK7tQRE=";
};
build-system = [ setuptools ];
@@ -93,7 +93,7 @@ buildPythonPackage rec {
keras
];
hf_xet = [
# hf-xet
# hf-xet (unpackaged)
];
};
@@ -21,7 +21,7 @@
buildPythonPackage rec {
pname = "pymodbus";
version = "3.8.6";
version = "3.9.0";
pyproject = true;
disabled = pythonOlder "3.9";
@@ -30,7 +30,7 @@ buildPythonPackage rec {
owner = "pymodbus-dev";
repo = "pymodbus";
tag = "v${version}";
hash = "sha256-AnFPrjY6ukONAeCyHIzhtULm0vNjJugIxtuwACClzOo=";
hash = "sha256-8v48+wnxVBIXJhCn7/oHyoxPN8smWWNY/i5LMHhKUVk=";
};
build-system = [ setuptools ];
@@ -58,14 +58,14 @@
buildPythonPackage rec {
pname = "transformers";
version = "4.50.3";
version = "4.51.1";
pyproject = true;
src = fetchFromGitHub {
owner = "huggingface";
repo = "transformers";
tag = "v${version}";
hash = "sha256-Qou5q7FZJJXO87lgMC5Qttfi5KJWCwuzG5icCEfgs0M=";
hash = "sha256-02HT0GAfEyGgqPvly7EPZX0loSeS2mJQNI87E8WbEGY=";
};
build-system = [ setuptools ];
@@ -134,6 +134,9 @@ buildPythonPackage rec {
flax
optax
];
hf_xet = [
# hf-xet (unpackaged)
];
tokenizers = [ tokenizers ];
ftfy = [ ftfy ];
onnxruntime = [
+32 -27
View File
@@ -1,6 +1,7 @@
{
lib,
callPackage,
config,
fetchFromGitHub,
python3Packages,
fetchpatch,
@@ -40,36 +41,40 @@ let
})
];
in
lib.makeExtensible (self: {
beets = self.beets-stable;
lib.makeExtensible (
self:
{
beets = self.beets-stable;
beets-stable = callPackage ./common.nix rec {
inherit python3Packages extraPatches;
version = "2.2.0";
src = fetchFromGitHub {
owner = "beetbox";
repo = "beets";
tag = "v${version}";
hash = "sha256-jhwXRgUUQJgQ/PLwvY1UfHCJ9UC8DcdBpE/janao0RM=";
beets-stable = callPackage ./common.nix rec {
inherit python3Packages extraPatches;
version = "2.2.0";
src = fetchFromGitHub {
owner = "beetbox";
repo = "beets";
tag = "v${version}";
hash = "sha256-jhwXRgUUQJgQ/PLwvY1UfHCJ9UC8DcdBpE/janao0RM=";
};
};
};
beets-minimal = self.beets.override { disableAllPlugins = true; };
beets-minimal = self.beets.override { disableAllPlugins = true; };
beets-unstable = callPackage ./common.nix {
inherit python3Packages;
version = "2.2.0-unstable-2025-03-12";
src = fetchFromGitHub {
owner = "beetbox";
repo = "beets";
rev = "670a3bcd17a46883c71cf07dd313fcd0dff4be9d";
hash = "sha256-hSY7FhpPL4poOY1/gqk7oLNgQ7KA/MJqx50xOLIP0QA=";
beets-unstable = callPackage ./common.nix {
inherit python3Packages;
version = "2.2.0-unstable-2025-03-12";
src = fetchFromGitHub {
owner = "beetbox";
repo = "beets";
rev = "670a3bcd17a46883c71cf07dd313fcd0dff4be9d";
hash = "sha256-hSY7FhpPL4poOY1/gqk7oLNgQ7KA/MJqx50xOLIP0QA=";
};
};
};
alternatives = callPackage ./plugins/alternatives.nix { beets = self.beets-minimal; };
audible = callPackage ./plugins/audible.nix { beets = self.beets-minimal; };
copyartifacts = callPackage ./plugins/copyartifacts.nix { beets = self.beets-minimal; };
extrafiles = throw "extrafiles is unmaintained since 2020 and broken since beets 2.0.0";
})
alternatives = callPackage ./plugins/alternatives.nix { beets = self.beets-minimal; };
audible = callPackage ./plugins/audible.nix { beets = self.beets-minimal; };
copyartifacts = callPackage ./plugins/copyartifacts.nix { beets = self.beets-minimal; };
}
// lib.optionalAttrs config.allowAliases {
extrafiles = throw "extrafiles is unmaintained since 2020 and broken since beets 2.0.0";
}
)
@@ -199,6 +199,7 @@ stdenv.mkDerivation (finalAttrs: {
mesonFlags =
[
(lib.mesonBool "unit-tests" (stdenv.buildPlatform.canExecute stdenv.hostPlatform))
(lib.mesonBool "bindings" false)
(lib.mesonOption "libstore:store-dir" storeDir)
(lib.mesonOption "libstore:localstatedir" stateDir)
@@ -178,8 +178,8 @@ lib.makeExtensible (
nix_2_26 = commonMeson {
version = "2.26.3";
hash = "sha256-R+HAPvD+AjiyRHZP/elkvka33G499EKT8ntyF/EPPRI=";
self_attribute_name = "nix_2_28";
hash = "sha256-5ZV8YqU8mfFmoAMiUEuBqNwk0T3vUR//x1D12BiYCeY=";
self_attribute_name = "nix_2_26";
};
nix_2_28 = commonMeson {
+3 -6
View File
@@ -1248,11 +1248,11 @@ with pkgs;
};
yabridge = callPackage ../tools/audio/yabridge {
wine = wineWowPackages.staging;
wine = wineWowPackages.yabridge;
};
yabridgectl = callPackage ../tools/audio/yabridgectl {
wine = wineWowPackages.staging;
wine = wineWowPackages.yabridge;
};
yafetch = callPackage ../tools/misc/yafetch {
@@ -2494,10 +2494,6 @@ with pkgs;
buildGoModule = buildGo123Module;
};
hiksink = callPackage ../tools/misc/hiksink {
inherit (darwin.apple_sdk.frameworks) Security;
};
hocr-tools = with python3Packages; toPythonApplication hocr-tools;
hopper = qt5.callPackage ../development/tools/analysis/hopper { };
@@ -19284,6 +19280,7 @@ with pkgs;
stagingFull
wayland
waylandFull
yabridge
fonts
;
}
+2
View File
@@ -116,6 +116,8 @@ let
bitv = callPackage ../development/ocaml-modules/bitv { };
bitwuzla-cxx = callPackage ../development/ocaml-modules/bitwuzla-cxx { };
bjack = callPackage ../development/ocaml-modules/bjack {
inherit (pkgs.darwin.apple_sdk.frameworks) Accelerate CoreAudio;
};
+9
View File
@@ -3096,6 +3096,13 @@ self: super: with self; {
darkdetect = callPackage ../development/python-modules/darkdetect { };
dartsim = toPythonModule (
pkgs.dartsim.override {
pythonSupport = true;
python3Packages = self;
}
);
dasbus = callPackage ../development/python-modules/dasbus { };
dash = callPackage ../development/python-modules/dash { };
@@ -4382,6 +4389,8 @@ self: super: with self; {
emoji = callPackage ../development/python-modules/emoji { };
emojis = callPackage ../development/python-modules/emojis { };
empty-files = callPackage ../development/python-modules/empty-files { };
empy = callPackage ../development/python-modules/empy { };
+1
View File
@@ -119,6 +119,7 @@ let
rtabmap = linux;
saga = linux;
suitesparse = linux;
sunshine = linux;
truecrack-cuda = linux;
tts = linux;
ueberzugpp = linux; # Failed in https://github.com/NixOS/nixpkgs/pull/233581
+7
View File
@@ -1,4 +1,5 @@
{
lib,
stdenv,
config,
callPackage,
@@ -63,4 +64,10 @@ rec {
waylandFull = full.override {
x11Support = false;
};
yabridge =
let
yabridge = base.override { wineRelease = "yabridge"; };
in
if wineBuild == "wineWow" then yabridge else lib.dontDistribute yabridge;
}