Merge master into staging-next

This commit is contained in:
nixpkgs-ci[bot]
2026-02-14 06:14:50 +00:00
committed by GitHub
44 changed files with 568 additions and 246 deletions
+19 -1
View File
@@ -1228,7 +1228,7 @@
name = "Alex Chapman";
};
alexfmpe = {
email = "alexandre.fmp.esteves@gmail.com";
email = "alexfmpe@proton.me";
github = "alexfmpe";
githubId = 2335822;
name = "Alexandre Esteves";
@@ -2154,6 +2154,12 @@
githubId = 58516559;
name = "Alexander Rezvov";
};
argos_nothing = {
email = "argosnothing@gmail.com";
github = "argosnothing";
githubId = 225423001;
name = "Argos Nothing";
};
argrat = {
email = "n.bertazzo@protonmail.com";
github = "brtz-cs";
@@ -15234,6 +15240,12 @@
githubId = 78693624;
name = "llakala";
};
llehouerou = {
email = "laurent@lehouerou.net";
github = "llehouerou";
githubId = 3669155;
name = "Laurent Le Houerou";
};
lluchs = {
email = "lukas.werling@gmail.com";
github = "lluchs";
@@ -22971,6 +22983,12 @@
matrix = "@emma:rory.gay"; # preferred
name = "Rory&";
};
rosebeats = {
name = "Sophie Doiron";
email = "sophie.d21401@gmail.com";
github = "rosebeats";
githubId = 39890784;
};
rosehobgoblin = {
name = "J. L. Bowden";
github = "rosehobgoblin";
+2 -2
View File
@@ -18,13 +18,13 @@
buildNpmPackage rec {
pname = "basedpyright";
version = "1.37.4";
version = "1.38.0";
src = fetchFromGitHub {
owner = "detachhead";
repo = "basedpyright";
tag = "v${version}";
hash = "sha256-BTqsymgthJH1gIakSrDBx3Hxthm48kLPc85IjreX1vA=";
hash = "sha256-bLlo4+GbsrrTeZIVI9awPQE5XQdXQI4MShclR1M46VI=";
};
npmDepsHash = "sha256-aZ9kfkW+S6Hjt59Z4Fc5joghs7OQ32354IYevFuKNeo=";
+3 -3
View File
@@ -11,16 +11,16 @@
}:
rustPlatform.buildRustPackage (finalAttrs: {
pname = "biome";
version = "2.3.14";
version = "2.3.15";
src = fetchFromGitHub {
owner = "biomejs";
repo = "biome";
rev = "@biomejs/biome@${finalAttrs.version}";
hash = "sha256-MNxIdarZMEZx4pWd+pB/7i+Pd3k8yekgW73ZrolYCGc=";
hash = "sha256-HRiQohI6bnV+U9c+XILOWmjGb1tQDJd3CBFNGzJuJ/4=";
};
cargoHash = "sha256-i8GMK4xwFreHtVvnuZdeGAAyQTMwb5y9LU5/2usWc18=";
cargoHash = "sha256-l1eew5KmT0tpVSLmWquodoYlMavQYbyxmZxl6IRnC48=";
nativeBuildInputs = [ pkg-config ];
+5 -5
View File
@@ -3,24 +3,24 @@
let
pname = "brave";
version = "1.86.148";
version = "1.87.186";
allArchives = {
aarch64-linux = {
url = "https://github.com/brave/brave-browser/releases/download/v${version}/brave-browser_${version}_arm64.deb";
hash = "sha256-86VeBM2kKbuQ+/FAq24X4DdkAUOFzlGg52cAosMExzo=";
hash = "sha256-MyTYIna4cT9cH/meKyCg97v8g6bYpGK7x8q/ibHNDOE=";
};
x86_64-linux = {
url = "https://github.com/brave/brave-browser/releases/download/v${version}/brave-browser_${version}_amd64.deb";
hash = "sha256-VLJLU9hgKX7MwhxdFLyaPTmOb6+AEsJze40EePVd+Ug=";
hash = "sha256-d07fttXvvrDPdVCEOAZpwkLrya4elfN/jBFNf+YFtkA=";
};
aarch64-darwin = {
url = "https://github.com/brave/brave-browser/releases/download/v${version}/brave-v${version}-darwin-arm64.zip";
hash = "sha256-fYHd1TMN8kWzhchcCLxgU1M3frxCkvE7uITIdiopSU4=";
hash = "sha256-MI3MesRZv3hpXvyayj3dFtC70Z9tneeaeQbv4BneSO8=";
};
x86_64-darwin = {
url = "https://github.com/brave/brave-browser/releases/download/v${version}/brave-v${version}-darwin-x64.zip";
hash = "sha256-a37FTE/qi37d+pGrtkZWVqKaMXzLyIO/ppV4k9hz0uE=";
hash = "sha256-c03bQ3gZzkA+QfDcGBmljUoaWfxz+0c4lm8ifqhPtxg=";
};
};
+2 -2
View File
@@ -39,13 +39,13 @@ let
in
stdenv.mkDerivation (finalAttrs: {
pname = "cinnamon-session";
version = "6.6.2";
version = "6.6.3";
src = fetchFromGitHub {
owner = "linuxmint";
repo = "cinnamon-session";
tag = finalAttrs.version;
hash = "sha256-5Cbx0SNBcTovRvxwPSqR4SM/FBLXrfkS5RZGXeU1ULY=";
hash = "sha256-fmeLywpM4QhgyiX68E+4vosUK2WKGVJ1Cx8pYdOnb+k=";
};
buildInputs = [
@@ -0,0 +1,100 @@
{
lib,
stdenv,
fetchurl,
dpkg,
autoPatchelfHook,
makeWrapper,
perl,
gnused,
ghostscript,
file,
coreutils,
gnugrep,
which,
}:
let
arches = [
"x86_64"
"i686"
];
runtimeDeps = [
ghostscript
file
gnused
gnugrep
coreutils
which
];
in
stdenv.mkDerivation (finalAttrs: {
pname = "cups-brother-mfcl2710dw";
version = "4.0.0-1";
nativeBuildInputs = [
dpkg
makeWrapper
autoPatchelfHook
];
buildInputs = [ perl ];
dontUnpack = true;
src = fetchurl {
url = "https://download.brother.com/welcome/dlf103526/mfcl2710dwpdrv-${finalAttrs.version}.i386.deb";
hash = "sha256-OOTvbCuyxw4k01CTMuBqG2boMN13q5xC7LacaweGmyw=";
};
installPhase = ''
runHook preInstall
mkdir -p $out
dpkg-deb -x $src $out
# delete unnecessary files for the current architecture
''
+ lib.concatMapStrings (arch: ''
echo Deleting files for ${arch}
rm -r "$out/opt/brother/Printers/MFCL2710DW/lpd/${arch}"
'') (builtins.filter (arch: arch != stdenv.hostPlatform.linuxArch) arches)
+ ''
# bundled scripts don't understand the arch subdirectories for some reason
ln -s \
"$out/opt/brother/Printers/MFCL2710DW/lpd/${stdenv.hostPlatform.linuxArch}/"* \
"$out/opt/brother/Printers/MFCL2710DW/lpd/"
# Fix global references and replace auto discovery mechanism with hardcoded values
substituteInPlace $out/opt/brother/Printers/MFCL2710DW/lpd/lpdfilter \
--replace-fail /opt "$out/opt" \
--replace-fail "my \$BR_PRT_PATH =" "my \$BR_PRT_PATH = \"$out/opt/brother/Printers/MFCL2710DW\"; #" \
--replace-fail "PRINTER =~" "PRINTER = \"MFCL2710DW\"; #"
# Make sure all executables have the necessary runtime dependencies available
find "$out" -executable -and -type f | while read file; do
wrapProgram "$file" --prefix PATH : "${lib.makeBinPath runtimeDeps}"
done
# Symlink filter and ppd into a location where CUPS will discover it
mkdir -p $out/lib/cups/filter $out/share/cups/model
ln -s \
$out/opt/brother/Printers/MFCL2710DW/lpd/lpdfilter \
$out/lib/cups/filter/brother_lpdwrapper_MFCL2710DW
ln -s \
$out/opt/brother/Printers/MFCL2710DW/cupswrapper/brother-MFCL2710DW-cups-en.ppd \
$out/share/cups/model/
runHook postInstall
'';
meta = {
homepage = "http://www.brother.com/";
description = "Brother MFC-L2710DW printer driver";
sourceProvenance = with lib.sourceTypes; [ binaryNativeCode ];
license = lib.licenses.unfree;
platforms = map (arch: "${arch}-linux") arches;
maintainers = with lib.maintainers; [ rosebeats ];
};
})
+3 -3
View File
@@ -12,6 +12,7 @@
let
pname = "everest";
version = "6170";
rev = "62ef4d0c36f433fa3a26502eabe6cda5ff205fbc";
phome = "$out/lib/Celeste";
in
buildDotnetModule {
@@ -20,7 +21,7 @@ buildDotnetModule {
src = fetchFromGitHub {
owner = "EverestAPI";
repo = "Everest";
rev = "62ef4d0c36f433fa3a26502eabe6cda5ff205fbc";
inherit rev;
fetchSubmodules = true;
# TODO: use leaveDotGit = true and modify external/MonoMod in postFetch to please SourceLink
# Microsoft.SourceLink.Common.targets(53,5): warning : Source control information is not available - the generated source link is empty.
@@ -71,8 +72,7 @@ buildDotnetModule {
preBuild = ''
# See .azure-pipelines/prebuild.ps1
sed -i 's|0\.0\.0-dev|1.${version}.0-nixos-'$(git rev-parse --short=5 HEAD)'|' Celeste.Mod.mm/Mod/Everest/Everest.cs
cat Celeste.Mod.mm/Mod/Everest/Everest.cs
sed -i 's|0\.0\.0-dev|1.${version}.0-nixos-${lib.substring 0 5 rev}|' Celeste.Mod.mm/Mod/Everest/Everest.cs
cat <<-EOF > Celeste.Mod.mm/Mod/Helpers/EverestVersion.cs
namespace Celeste.Mod.Helpers {
internal static class EverestBuild${version} {
+2 -2
View File
@@ -61,13 +61,13 @@
}:
stdenv.mkDerivation (finalAttrs: {
pname = "fastfetch";
version = "2.58.0";
version = "2.59.0";
src = fetchFromGitHub {
owner = "fastfetch-cli";
repo = "fastfetch";
tag = finalAttrs.version;
hash = "sha256-kWMR2qtwgzpYZmbqkpNkII6MuMFb13jkBtI/1pdgSgE=";
hash = "sha256-XnVSVf9dFWJLmMDsXNclWCnMTwigVORXYhcpxTgEWuY=";
};
outputs = [
+3 -3
View File
@@ -9,16 +9,16 @@
buildGoModule (finalAttrs: {
pname = "gdu";
version = "5.32.0";
version = "5.33.0";
src = fetchFromGitHub {
owner = "dundee";
repo = "gdu";
tag = "v${finalAttrs.version}";
hash = "sha256-E//6rO3LsGLLNrPFVi/R3njkhOI1GnM9mGI/AIcVG/Q=";
hash = "sha256-DotSJ7fz70lQH21evxA4Sy4Al7xcWpKtQJM7/Fp0fvY=";
};
vendorHash = "sha256-xtw7CKpXEvjpfDQ9x0coLmfTQPy+NiWfrKL8l5vFS9o=";
vendorHash = "sha256-cusc2ckY3RJTFYY4swuHhJvl9L5uuWKOWokrk2ylSFo=";
nativeBuildInputs = [
installShellFiles
@@ -20,14 +20,14 @@ let
in
stdenv.mkDerivation (finalAttrs: {
pname = "incus-ui-canonical";
version = "0.19.3";
version = "0.19.4";
src = fetchFromGitHub {
owner = "zabbly";
repo = "incus-ui-canonical";
# only use tags prefixed by incus- they are the tested fork versions
tag = "incus-${finalAttrs.version}";
hash = "sha256-wibBuvGABMGTjuYFYjV9mbNVNXm78LX9VAgM2H8b7e4=";
hash = "sha256-B/05tQbiqpi5gzoHjFVTS7CHwuO2xSHHSu76/fNjRug=";
};
offlineCache = fetchYarnDeps {
@@ -1,23 +0,0 @@
diff --git a/kitsas/kirjaus/kirjauswg.cpp b/kitsas/kirjaus/kirjauswg.cpp
--- a/kitsas/kirjaus/kirjauswg.cpp
+++ b/kitsas/kirjaus/kirjauswg.cpp
@@ -499,7 +499,7 @@ void KirjausWg::paivita(bool muokattu, int virheet, const Euro &debet, const Eu
} else if( virheet & Tosite::EITASMAAPVM) {
ui->varoTeksti->setText( tr("Debet ja kredit eivät täsmää jokaisella päivämäärällä."));
} else if( debet ) {
- ui->varoTeksti->setText( tr("Summa %L1 €").arg(debet,0,'f',2) );
+ ui->varoTeksti->setText( tr("Summa %L1 €").arg(debet.toDouble(),0,'f',2) );
}
diff --git a/kitsas/selaus/tositeselausmodel.cpp b/kitsas/selaus/tositeselausmodel.cpp
--- a/kitsas/selaus/tositeselausmodel.cpp
+++ b/kitsas/selaus/tositeselausmodel.cpp
@@ -18,6 +18,7 @@
#include <QSqlQuery>
#include <QDebug>
+#include <QJsonValue>
#include <QSqlError>
#include "db/yhteysmodel.h"
+8 -12
View File
@@ -2,28 +2,23 @@
lib,
stdenv,
fetchFromGitHub,
qt6,
poppler,
libzip,
pkg-config,
poppler,
qt6,
}:
stdenv.mkDerivation (finalAttrs: {
pname = "kitsas";
version = "5.9";
version = "5.11.1";
src = fetchFromGitHub {
owner = "artoh";
repo = "kitupiikki";
rev = "v${finalAttrs.version}";
hash = "sha256-4FCfpUFfi+N207SEAKz8nLpVS8MxfmDwM6r6i5pyqEM=";
tag = "v${finalAttrs.version}";
hash = "sha256-ZU6b7Yl/dE0vk8UfyEVXtpt4ANnuKInvJ/RZYbIZj+Y=";
};
patches = [
# Fix Qt 6.10 compatibility: QString::arg() no longer accepts Euro type directly
./fix-qt610-euro-arg.patch
];
nativeBuildInputs = [
pkg-config
qt6.qmake
@@ -62,11 +57,12 @@ stdenv.mkDerivation (finalAttrs: {
'';
meta = {
homepage = "https://github.com/artoh/kitupiikki";
changelog = "https://github.com/artoh/kitupiikki/releases/tag/v${finalAttrs.version}";
description = "Accounting tool suitable for Finnish associations and small business";
homepage = "https://github.com/artoh/kitupiikki";
license = lib.licenses.gpl3Plus;
mainProgram = "kitsas";
maintainers = [ ];
license = lib.licenses.gpl3Plus;
platforms = lib.platforms.unix;
};
})
+2 -2
View File
@@ -18,13 +18,13 @@
stdenv.mkDerivation (finalAttrs: {
pname = "leptonica";
version = "1.85.0";
version = "1.87.0";
src = fetchFromGitHub {
owner = "DanBloomBerg";
repo = "leptonica";
rev = finalAttrs.version;
hash = "sha256-meiSi0qL4i/KCMe5wsRK1/mbuRLHUb55DDOnxkrXZSs=";
hash = "sha256-d67gxWmWN3WfSPuHrjpC+emLyQswJbKV7gzm7D4bpI0=";
};
nativeBuildInputs = [
+2 -2
View File
@@ -78,7 +78,7 @@ let
in
effectiveStdenv.mkDerivation (finalAttrs: {
pname = "llama-cpp";
version = "7898";
version = "7966";
outputs = [
"out"
@@ -89,7 +89,7 @@ effectiveStdenv.mkDerivation (finalAttrs: {
owner = "ggml-org";
repo = "llama.cpp";
tag = "b${finalAttrs.version}";
hash = "sha256-ST7hhE5lWOm46WS+k9lkHJqVQpz8squwHZWE2/XG6MY=";
hash = "sha256-ivGqCSBVDmDTal4MecJCWoghqEua3WgT4XmUzm7QGIc=";
leaveDotGit = true;
postFetch = ''
git -C "$out" rev-parse --short HEAD > $out/COMMIT
+7 -4
View File
@@ -2,17 +2,18 @@
lib,
stdenv,
fetchFromGitHub,
nix-update-script,
}:
stdenv.mkDerivation rec {
pname = "m-cli";
version = "2.0.5";
version = "2.0.7";
src = fetchFromGitHub {
owner = "rgcr";
repo = "m-cli";
rev = "v${version}";
sha256 = "sha256-41o7RoRlHwAmzSREDhQpq2Lchkz8QPxJRqN42ShUJb8=";
tag = "v${version}";
sha256 = "sha256-a/X7HaShb8mXJIYtTDxEPN4DcskUDourRFgHnOXksYM=";
};
dontBuild = true;
@@ -37,6 +38,8 @@ stdenv.mkDerivation rec {
install -Dt "$out/share/zsh/site-functions/" -m444 completions/zsh/_m
'';
passthru.updateScript = nix-update-script { };
meta = {
description = "Swiss Army Knife for macOS";
inherit (src.meta) homepage;
@@ -44,7 +47,7 @@ stdenv.mkDerivation rec {
license = lib.licenses.mit;
platforms = lib.platforms.darwin;
maintainers = [ ];
maintainers = with lib.maintainers; [ anish ];
mainProgram = "m";
};
}
+44
View File
@@ -0,0 +1,44 @@
{
lib,
rustPlatform,
fetchFromGitHub,
pkg-config,
dbus,
}:
rustPlatform.buildRustPackage (finalAttrs: {
pname = "nono";
version = "0.4.1";
src = fetchFromGitHub {
owner = "always-further";
repo = "nono";
tag = "v${finalAttrs.version}";
hash = "sha256-siZK9ELU5RsX2Dc1T8LpOFNVR0Qo3xJ2LfIrqb6abSk=";
};
cargoHash = "sha256-3xuZMXX9YTHY4HsFuOdzbykqOVH/PWuFyLhPbl7baqY=";
nativeBuildInputs = [
pkg-config
];
buildInputs = [
dbus
];
meta = {
description = "Secure, kernel-enforced sandbox for AI agents, MCP and LLM workloads";
homepage = "https://github.com/always-further/nono";
changelog = "https://github.com/always-further/nono/blob/${finalAttrs.src.rev}/CHANGELOG.md";
license = lib.licenses.asl20;
maintainers = with lib.maintainers; [
jk
];
mainProgram = "nono";
# https://github.com/always-further/nono#platform-support
platforms = lib.platforms.linux ++ lib.platforms.darwin;
};
})
+55
View File
@@ -0,0 +1,55 @@
{
lib,
rustPlatform,
fetchFromGitHub,
pkg-config,
openssl,
makeWrapper,
bat,
fzf,
xdg-utils,
nix-update-script,
}:
rustPlatform.buildRustPackage (finalAttrs: {
pname = "noogle-search";
version = "0.2.0";
src = fetchFromGitHub {
owner = "argosnothing";
repo = "noogle-search";
tag = "v${finalAttrs.version}";
hash = "sha256-js3jBZsyukleQW2BwggfYUvKCdS8pBTjD6ysWyMUtpI=";
};
cargoHash = "sha256-axqFE5ZEiVP8PzFTtW5mbyyYcR4q9g3LX/0i6y+cgy8=";
nativeBuildInputs = [
makeWrapper
pkg-config
];
buildInputs = [
openssl
];
postInstall = ''
wrapProgram $out/bin/noogle-search \
--prefix PATH : ${
lib.makeBinPath [
bat
fzf
xdg-utils
]
}
'';
passthru.updateScript = nix-update-script { };
meta = {
description = "Search Noogle functions with fzf";
homepage = "https://github.com/argosnothing/noogle-search";
license = lib.licenses.gpl3Plus;
mainProgram = "noogle-search";
maintainers = with lib.maintainers; [ argos_nothing ];
};
})
@@ -27,13 +27,13 @@ let
in
stdenv.mkDerivation (finalAttrs: {
pname = "opentelemetry-cpp";
version = "1.24.0";
version = "1.25.0";
src = fetchFromGitHub {
owner = "open-telemetry";
repo = "opentelemetry-cpp";
rev = "v${finalAttrs.version}";
hash = "sha256-rVR8JWNoT5mxIgzynY8VzlZ4QxhWIEFBqogi+WFDcF0=";
hash = "sha256-/iuAv8UcRYkuQjV6Hgs1HHqW0SSVH+By5narF+vy7JU=";
};
patches = [
@@ -9,13 +9,13 @@
stdenv.mkDerivation (finalAttrs: {
pname = "plasma-panel-colorizer";
version = "6.7.0";
version = "6.8.0";
src = fetchFromGitHub {
owner = "luisbocanegra";
repo = "plasma-panel-colorizer";
tag = "v${finalAttrs.version}";
hash = "sha256-YAWSVH5cpllNz50pYbq3ceGaLOYOkwMsE5s/MfzP18A=";
hash = "sha256-HsivJaF+5s+OFoCwerQCAYIgKtdCIIXI1EgAwJjwAPk=";
};
nativeBuildInputs = [
+3 -3
View File
@@ -26,14 +26,14 @@
stdenv.mkDerivation (finalAttrs: {
pname = "s7";
version = "11.7-unstable-2026-02-05";
version = "11.7-unstable-2026-02-12";
src = fetchFromGitLab {
domain = "cm-gitlab.stanford.edu";
owner = "bil";
repo = "s7";
rev = "19e0128d82ac4d11d1ff0352d8c2dfd87e91effd";
hash = "sha256-CRp/Q9OngkGytuNGqgx2T/ASUSAbil+O9UZa0S+NwDA=";
rev = "7ce9e00589f550f9abc30c84e163c34ed1f511fe";
hash = "sha256-gcOFlW5usE7oBqFAmOCEVoXTQNCbMQ0jPR3roN5ZcPk=";
};
buildInputs =
+49
View File
@@ -0,0 +1,49 @@
{
lib,
stdenv,
buildGoModule,
fetchFromGitHub,
alsa-lib,
pkg-config,
versionCheckHook,
nix-update-script,
}:
buildGoModule (finalAttrs: {
pname = "waves";
version = "0.1.41";
src = fetchFromGitHub {
owner = "llehouerou";
repo = "waves";
tag = "v${finalAttrs.version}";
hash = "sha256-F3ZJSaL8e8TO2J0k3p33zrqMwurw6xIA+AuloNp3Zw0=";
};
vendorHash = "sha256-jUwA7KOHceuwSUMDzex8MHCBYvMPRkfkyk5THvXsF+M=";
nativeBuildInputs = lib.optionals stdenv.hostPlatform.isLinux [ pkg-config ];
buildInputs = lib.optionals stdenv.hostPlatform.isLinux [ alsa-lib ];
ldflags = [
"-s"
"-w"
"-X main.version=${finalAttrs.version}"
];
doCheck = !stdenv.hostPlatform.isDarwin;
nativeInstallCheckInputs = [ versionCheckHook ];
doInstallCheck = true;
passthru.updateScript = nix-update-script { };
meta = {
description = "Keyboard-driven terminal music player with Soulseek integration, Last.fm scrobbling, and radio mode";
homepage = "https://github.com/llehouerou/waves";
changelog = "https://github.com/llehouerou/waves/releases/tag/v${finalAttrs.version}";
license = lib.licenses.gpl3Plus;
maintainers = with lib.maintainers; [ llehouerou ];
mainProgram = "waves";
};
})
+63 -133
View File
@@ -1,55 +1,50 @@
{
stdenv,
writeText,
elixir,
erlang,
hex,
beamCopySourceHook,
beamModuleInstallHook,
mixBuildDirHook,
mixCompileHook,
mixAppConfigPatchHook,
lib,
stdenv,
writeText,
}:
{
name,
version,
src,
buildInputs ? [ ],
nativeBuildInputs ? [ ],
erlangCompilerOptions ? [ ],
# Deterministic Erlang builds remove full system paths from debug information
# among other things to keep builds more reproducible. See their docs for more:
# https://www.erlang.org/doc/man/compile
erlangDeterministicBuilds ? true,
beamDeps ? [ ],
propagatedBuildInputs ? [ ],
postPatch ? "",
compilePorts ? false,
meta ? { },
enableDebugInfo ? false,
mixEnv ? "prod",
mixTarget ? "host",
removeConfig ? true,
# A config directory that is considered for all the dependencies of an app, typically in $src/config/
# This was initially added, as some of Mobilizon's dependencies need to access the config at build time.
appConfigPath ? null,
...
}@attrs:
lib.extendMkDerivation {
constructDrv = stdenv.mkDerivation;
excludeDrvArgNames = [
"mixEnv"
];
extendDrvArgs =
finalAttrs:
{
beamDeps ? [ ],
mixEnv ? "prod",
mixTarget ? "host",
assert appConfigPath != null -> removeConfig;
# Allow passing compile time config instead of an empty config
appConfigPath ? null,
let
shell =
drv:
stdenv.mkDerivation {
name = "interactive-shell-${drv.name}";
buildInputs = [ drv ];
};
enableDebugInfo ? false,
erlangCompilerOptions ? [ ],
# Deterministic Erlang builds remove full system paths from debug information
# among other things to keep builds more reproducible. See their docs for more:
# https://www.erlang.org/doc/man/compile
erlangDeterministicBuilds ? true,
...
}@args:
{
name = "erlang${erlang.version}-${args.name}-${finalAttrs.version}";
pkg =
self:
stdenv.mkDerivation (
attrs
// {
name = "${name}-${version}";
inherit version src;
env = {
ERL_COMPILER_OPTIONS =
let
options = erlangCompilerOptions ++ lib.optionals erlangDeterministicBuilds [ "deterministic" ];
in
"[${lib.concatStringsSep "," options}]";
MIX_ENV = mixEnv;
MIX_TARGET = mixTarget;
@@ -57,103 +52,38 @@ let
MIX_DEBUG = if enableDebugInfo then 1 else 0;
HEX_OFFLINE = 1;
__darwinAllowLocalNetworking = true;
ERL_COMPILER_OPTIONS =
let
options = erlangCompilerOptions ++ lib.optionals erlangDeterministicBuilds [ "deterministic" ];
in
"[${lib.concatStringsSep "," options}]";
LANG = if stdenv.hostPlatform.isLinux then "C.UTF-8" else "C";
LC_CTYPE = if stdenv.hostPlatform.isLinux then "C.UTF-8" else "UTF-8";
# add to ERL_LIBS so other modules can find at runtime.
# http://erlang.org/doc/man/code.html#code-path
# Mix also searches the code path when compiling with the --no-deps-check flag
setupHook = attrs.setupHook or writeText "setupHook.sh" ''
addToSearchPath ERL_LIBS "$1/lib/erlang/lib"
'';
# some hooks need name-version, but we've overridden name above for the nix package
beamModuleName = args.name;
};
buildInputs = buildInputs ++ [ ];
nativeBuildInputs = nativeBuildInputs ++ [
elixir
hex
];
propagatedBuildInputs = propagatedBuildInputs ++ beamDeps;
__darwinAllowLocalNetworking = true;
configurePhase =
attrs.configurePhase or ''
runHook preConfigure
# add to ERL_LIBS so other modules can find at runtime.
# http://erlang.org/doc/man/code.html#code-path
# Mix also searches the code path when compiling with the --no-deps-check flag
# This is used by package builders such as mixRelease
setupHook = writeText "setupHook.sh" ''
addToSearchPath ERL_LIBS "$1/lib/erlang/lib"
'';
${./mix-configure-hook.sh}
${lib.optionalString (removeConfig && isNull appConfigPath)
# By default, we don't want to include whatever config a dependency brings; per
# https://hexdocs.pm/elixir/main/Config.html, config is application specific.
''
rm -rf config
mkdir config
''
}
${lib.optionalString (!isNull appConfigPath)
# Some more tightly-coupled dependencies do depend on the config of the application
# they're being built for.
''
rm -rf config
cp -r ${appConfigPath} config
''
}
nativeBuildInputs = (args.nativeBuildInputs or [ ]) ++ [
elixir
hex
runHook postConfigure
'';
beamCopySourceHook
beamModuleInstallHook
mixBuildDirHook
mixCompileHook
mixAppConfigPatchHook
];
buildPhase =
attrs.buildPhase or ''
runHook preBuild
export HEX_HOME="$TEMPDIR/hex"
export MIX_HOME="$TEMPDIR/mix"
mix compile --no-deps-check
runHook postBuild
'';
propagatedBuildInputs = (args.propagatedBuildInputs or [ ]) ++ beamDeps;
installPhase =
attrs.installPhase or ''
runHook preInstall
# This uses the install path convention established by nixpkgs maintainers
# for all beam packages. Changing this will break compatibility with other
# builder functions like buildRebar3 and buildErlangMk.
mkdir -p "$out/lib/erlang/lib/${name}-${version}"
# Some packages like db_connection will use _build/shared instead of
# honoring the $MIX_ENV variable.
for reldir in _build/{$MIX_BUILD_PREFIX,shared}/lib/${name}/{src,ebin,priv,include} ; do
if test -d $reldir ; then
# Some builds produce symlinks (eg: phoenix priv dircetory). They must
# be followed with -H flag.
cp -Hrt "$out/lib/erlang/lib/${name}-${version}" "$reldir"
fi
done
# Copy the source so it can be used by dependent packages. For example,
# phoenix applications need the source of phoenix and phoenix_html to
# build javascript and css assets.
mkdir -p $out/src
cp -r "$src/." "$out/src"
runHook postInstall
'';
# stripping does not have any effect on beam files
# it is however needed for dependencies with NIFs like bcrypt for example
dontStrip = false;
passthru = {
packageName = name;
env = shell self;
inherit beamDeps;
};
}
);
in
lib.fix pkg
passthru = (args.passthru or { }) // {
inherit beamDeps;
};
};
}
+12
View File
@@ -11,6 +11,9 @@ let
callPackageWithScope =
scope: drv: args:
lib.callPackageWith scope drv args;
callPackagesWithScope =
scope: drv: args:
lib.callPackagesWith scope drv args;
mkScope = scope: pkgs // scope;
packages =
@@ -18,6 +21,7 @@ let
let
defaultScope = mkScope self;
callPackage = drv: args: callPackageWithScope defaultScope drv args;
callPackages = drv: args: callPackagesWithScope defaultScope drv args;
in
rec {
inherit callPackage erlang;
@@ -95,6 +99,14 @@ let
# without helper functions buildRebar3 and buildMix.
hex = callPackage ./hex { };
webdriver = callPackage ./webdriver { };
inherit (callPackages ./hooks { })
beamCopySourceHook
beamModuleInstallHook
mixBuildDirHook
mixCompileHook
mixAppConfigPatchHook
;
};
in
makeExtensible packages
@@ -0,0 +1,16 @@
# shellcheck shell=bash
#
# Copy the source so it can be used by mix projects to assemble `deps`
# do this before building to avoid build artifacts but after patching
# to include any user modifications to the source
beamCopySourceHook() {
echo "Executing beamCopySourceHook"
mkdir -p "$out/src"
cp -r "." "$out/src"
echo "Finished beamCopySourceHook"
}
postPatchHooks+=(beamCopySourceHook)
@@ -0,0 +1,25 @@
# shellcheck shell=bash
#
# This uses the install path convention established by nixpkgs maintainers
# for all beam packages. Changing this will break compatibility with other
# builder functions like buildRebar3 and buildErlangMk.
beamModuleInstallHook() {
echo "Executing beamModuleInstallHook"
mkdir -p "$out/lib/erlang/lib/${beamModuleName}-${version}"
for reldir in _build/{$MIX_BUILD_PREFIX,shared}/lib/${beamModuleName}/{src,ebin,priv,include}; do
if test -d "$reldir"; then
# Some builds produce symlinks (eg: phoenix priv directory). They must
# be followed with -H flag.
cp -vHrt "$out/lib/erlang/lib/${beamModuleName}-${version}" "$reldir"
fi
done
echo "Finished beamModuleInstallHook"
}
if [ -z "${dontBeamModuleInstall-}" ] && [ -z "${installPhase-}" ]; then
installPhase=beamModuleInstallHook
fi
@@ -0,0 +1,22 @@
{ makeSetupHook }:
{
beamCopySourceHook = makeSetupHook {
name = "beam-copy-source-hook.sh";
} ./beam-copy-source-hook.sh;
beamModuleInstallHook = makeSetupHook {
name = "beam-module-install-hook.sh";
} ./beam-module-install-hook.sh;
mixBuildDirHook = makeSetupHook {
name = "mix-configure-hook.sh";
} ./mix-build-dir-hook.sh;
mixCompileHook = makeSetupHook {
name = "mix-compile-hook.sh";
} ./mix-compile-hook.sh;
mixAppConfigPatchHook = makeSetupHook {
name = "mix-config-patch-hook.sh";
} ./mix-app-config-patch-hook.sh;
}
@@ -0,0 +1,19 @@
# shellcheck shell=bash
#
# We don't want to include whatever config a dependency brings; per
# https://hexdocs.pm/elixir/main/Config.html, config is application specific.
mixAppConfigPatchHook() {
echo "Executing mixAppConfigPatchHook"
rm -rvf config
# But we still need a way to provide config for deps that need compile time config
if [ ! -z "${appConfigPath}" ]; then
ln -sf "${appConfigPath}" config
fi
echo "Finished mixAppConfigPatchHook"
}
prePatchHooks+=(mixAppConfigPatchHook)
+26
View File
@@ -0,0 +1,26 @@
# shellcheck shell=bash
#
# Symlink all dependencies found in ERL_LIBS since Elixir does not honor ERL_LIBS
mixBuildDirHook() {
echo "Executing mixBuildDirHook"
mkdir -p _build/"$MIX_BUILD_PREFIX"/lib
while read -r -d ':' lib; do
for dir in "$lib"/*; do
# Strip version number for directory name if it exists, so naming of
# all libs matches what mix's expectation.
dest=$(basename "$dir" | cut -d '-' -f1)
build_dir="_build/$MIX_BUILD_PREFIX/lib/$dest"
# Symlink libs to _build so that mix can find them when compiling.
# This is what allows mix to compile the package without searching
# for dependencies over the network.
ln -sv "$dir" "$build_dir"
done
done <<<"$ERL_LIBS:"
echo "Finished mixBuildDirHook"
}
preConfigureHooks+=(mixBuildDirHook)
+20
View File
@@ -0,0 +1,20 @@
# shellcheck shell=bash
mixCompileHook() {
echo "Executing mixCompileHook"
runHook preBuild
local flagsArray=()
concatTo flagsArray mixCompileFlags
mix compile --no-deps-check "${flagsArray[@]}"
runHook postBuild
echo "Finished mixCompileHook"
}
if [ -z "${dontMixCompile-}" ] && [ -z "${buildPhase-}" ]; then
buildPhase=mixCompileHook
fi
@@ -1,18 +1,5 @@
# shellcheck shell=bash
# this hook will symlink all dependencies found in ERL_LIBS
# since Elixir 1.12.2 elixir does not look into ERL_LIBS for
# elixir depencencies anymore, so those have to be symlinked to the _build directory
mkdir -p _build/"$MIX_BUILD_PREFIX"/lib
while read -r -d ':' lib; do
for dir in "$lib"/*; do
# Strip version number for directory name if it exists, so naming of
# all libs matches what mix's expectation.
dest=$(basename "$dir" | cut -d '-' -f1)
build_dir="_build/$MIX_BUILD_PREFIX/lib/$dest"
((MIX_DEBUG == 1)) && echo "Linking $dir to $build_dir"
# Symlink libs to _build so that mix can find them when compiling.
# This is what allows mix to compile the package without searching
# for dependencies over the network.
ln -s "$dir" "$build_dir"
done
done <<< "$ERL_LIBS:"
# Added 2026-02-12 for external users
echo "mix-configure-hook.sh has been removed and is now a setup hook.
Add 'beamPackages.mixBuildDirHook' to 'nativeBuildInputs' instead.
" >&2
exit 1
@@ -16,6 +16,7 @@
gnused,
gnugrep,
gawk,
mixBuildDirHook,
}@inputs:
{
@@ -108,6 +109,7 @@ stdenv.mkDerivation (
elixir
hex
git
mixBuildDirHook
]
++
# Mix deps
@@ -171,8 +173,6 @@ stdenv.mkDerivation (
attrs.configurePhase or ''
runHook preConfigure
${./mix-configure-hook.sh}
# This is needed for projects that have a specific compile step
# the dependency needs to be compiled in order for the task
# to be available.
@@ -186,13 +186,12 @@ stdenv.mkDerivation (
${lib.optionalString (mixNixDeps != { }) ''
mkdir -p deps
${lib.concatMapStringsSep "\n" (dep: ''
dep_name=$(basename ${dep} | cut -d '-' -f2)
dep_path="deps/$dep_name"
${lib.concatMapAttrsStringSep "\n" (name: dep: ''
dep_path="deps/${name}"
if [ -d "${dep}/src" ]; then
ln -s ${dep}/src $dep_path
ln -sv ${dep}/src $dep_path
fi
'') (builtins.attrValues mixNixDeps)}
'') mixNixDeps}
''}
# Symlink deps to build root. Similar to above, but allows for mixFodDeps
@@ -31,6 +31,6 @@ buildDunePackage (finalAttrs: {
homepage = "https://github.com/c-cube/ocaml-bigstring";
description = "Bigstring built on top of bigarrays, and convenient functions";
license = lib.licenses.bsd2;
maintainers = [ lib.maintainers.alexfmpe ];
maintainers = [ ];
};
})
@@ -34,7 +34,6 @@ buildDunePackage (finalAttrs: {
description = "Network connection establishment library";
license = lib.licenses.isc;
maintainers = with lib.maintainers; [
alexfmpe
vbgl
];
homepage = "https://github.com/mirage/ocaml-conduit";
@@ -33,6 +33,6 @@ buildDunePackage (finalAttrs: {
objects or exceptions in depth and without risk.
'';
license = lib.licenses.lgpl21Plus;
maintainers = with lib.maintainers; [ alexfmpe ];
maintainers = [ ];
};
})
@@ -33,6 +33,6 @@ buildDunePackage rec {
homepage = "https://smondet.gitlab.io/genspio-doc/";
description = "Typed EDSL to generate POSIX Shell scripts";
license = lib.licenses.asl20;
maintainers = [ lib.maintainers.alexfmpe ];
maintainers = [ ];
};
}
@@ -36,7 +36,7 @@ buildDunePackage rec {
description = "Bindings to Signal11's hidapi library";
homepage = "https://github.com/vbmithr/ocaml-hidapi";
license = lib.licenses.isc;
maintainers = [ lib.maintainers.alexfmpe ];
maintainers = [ ];
mainProgram = "ocaml-hid-enumerate";
};
}
@@ -31,7 +31,6 @@ buildDunePackage {
meta = macaddr.meta // {
description = "Library for manipulation of IP (and MAC) address representations";
maintainers = with lib.maintainers; [
alexfmpe
ericbmerritt
];
};
@@ -28,6 +28,6 @@ buildDunePackage rec {
homepage = "https://github.com/mirage/ocaml-ipaddr";
description = "Library for manipulation of MAC address representations";
license = lib.licenses.isc;
maintainers = [ lib.maintainers.alexfmpe ];
maintainers = [ ];
};
}
@@ -43,7 +43,7 @@ stdenv.mkDerivation rec {
homepage = "http://www.hammerlab.org/docs/sosa/master/index.html";
description = "Sane OCaml String API";
license = lib.licenses.isc;
maintainers = [ lib.maintainers.alexfmpe ];
maintainers = [ ];
broken = !(lib.versionOlder ocaml.version "4.02");
};
}
@@ -14,14 +14,14 @@
buildPythonPackage (finalAttrs: {
pname = "elevenlabs";
version = "2.33.1";
version = "2.35.0";
pyproject = true;
src = fetchFromGitHub {
owner = "elevenlabs";
repo = "elevenlabs-python";
tag = "v${finalAttrs.version}";
hash = "sha256-fOVoKiAQfZ3+59onGzkTmXAhgJnoDQJvMBrwIIgZwhY=";
hash = "sha256-8O/gpG0XAJeD6g52mdO7T43NBHfpctuHm8mu4CVvZ78=";
};
build-system = [ poetry-core ];
@@ -11,13 +11,13 @@
}:
let
pname = "lazy-imports";
version = "1.1.0";
version = "1.2.0";
src = fetchFromGitHub {
owner = "bachorp";
repo = "lazy-imports";
tag = version;
hash = "sha256-KtKqR/e0ldpsrz3dyY1ehF4cM5k7jDziiB+8uV0HEwc=";
hash = "sha256-3TKhPMtViebdFTR3timf0ulXMdKrpQZ22gj891xQHVI=";
};
in
buildPythonPackage {
@@ -34,14 +34,14 @@
buildPythonPackage (finalAttrs: {
pname = "pylance";
version = "2.0.0";
version = "2.0.1";
pyproject = true;
src = fetchFromGitHub {
owner = "lancedb";
repo = "lance";
tag = "v${finalAttrs.version}";
hash = "sha256-VxhRdyPhVVRRiYu2h7ospxLSpXCz0a6LgjJCGcqJVcU=";
hash = "sha256-KuUXo7GyC78U5RG6orW0X7a/B/0e9TbLpbTc7KXpxF8=";
};
sourceRoot = "${finalAttrs.src.name}/python";
@@ -53,7 +53,7 @@ buildPythonPackage (finalAttrs: {
src
sourceRoot
;
hash = "sha256-toIyApf/v0h45rZjfJRAStU9TZGmB+cCChObzjVr1Hs=";
hash = "sha256-dq5HK0yS/nnI7cqpsS51KnQus8KJ2mHsxmlgi8601gk=";
};
nativeBuildInputs = [
@@ -67,6 +67,30 @@ stdenv.mkDerivation (finalAttrs: {
url = "https://github.com/ROCm/ROCR-Runtime/commit/41bfc66aef437a5b349f71105fa4b907cc7e17d5.patch";
hash = "sha256-A7VhPR3eSsmjq2cTBSjBIz9i//WiNjoXm0EsRKtF+ns=";
})
(fetchpatch {
# [PATCH] hsakmt: bump vgpr count for gfx1151 (#1807) (#1986)
# We apply only the change that adds a GFX_VERSION_GFX1151 define but
# *not* the default vgpr change which causes crashes on old kernels
# This was later partially reverted in # [PATCH] Revert "hsakmt: bump vgpr count for gfx1151 (#1807) (#1986)"
name = "rocr-runtime-gfx1151-vgpr.patch";
url = "https://github.com/ROCm/rocm-systems/commit/09ba45b3f43ec333a84a0ca178fcd1e3ea9400a9.patch";
relative = "projects/rocr-runtime";
includes = [ "libhsakmt/src/libhsakmt.h" ];
hash = "sha256-/V5i+sr88n7fK4yNjR/FpY0ZpiEG5xAD6Oq+9ZOikd4=";
})
(fetchpatch {
# [PATCH] hsakmt: Expose and use CWSR and Control stack sizes (#2200)
# Fixes potential mismatches between stack sizes configured in amdgpu kernel module
# and userspace by relying on kernel value when available
# Falls back to hardcoded size based on ISA if kernel is too old. For gfx1151, also prints:
# WARNING: KFD ABI 1.20+ is recommended … This may result in faults, crashes and other application instability
# This allows new kernels to work with this runtime detection mechanism
# Only gfx1151 warns loudly because only it has had the size updated in kernel…
name = "rocr-runtime-kernel-stack-size.patch";
url = "https://github.com/ROCm/rocm-systems/commit/7037a71f311c021974fafd13727dfefd8a1cc79d.patch";
relative = "projects/rocr-runtime";
hash = "sha256-EbDxuEvNu0fyQJZmqq0fbcCdNtaEWUbmyPLvcfqDPjc=";
})
# This causes a circular dependency, aqlprofile relies on hsa-runtime64
# which is part of rocm-runtime
# Worked around by having rocprofiler load aqlprofile directly
+2
View File
@@ -40,6 +40,7 @@ mixRelease rec {
// {
fast_html = prev.fast_html.override {
nativeBuildInputs = [ cmake ];
dontUseCmakeConfigure = true;
};
ex_cldr = prev.ex_cldr.overrideAttrs (old: {
# We have to use the GitHub sources, as it otherwise tries to download
@@ -146,6 +147,7 @@ mixRelease rec {
${lib.getExe nixfmt} pkgs/servers/mobilizon/mix.nix
'';
elixirPackage = beamPackages.elixir;
inherit mixNixDeps;
};
meta = {