push sheeet
Some checks failed
Periodic Merges (6h) / master → staging-nixos (push) Failing after 12m50s
Periodic Merges (6h) / master → staging-next (push) Failing after 12m54s
Periodic Merges (24h) / merge-base(master,staging) → haskell-updates (push) Failing after 11m54s
Periodic Merges (6h) / staging-next → staging (push) Failing after 12m13s
Periodic Merges (24h) / staging-next-25.05 → staging-25.05 (push) Failing after 13m24s
Periodic Merges (24h) / release-25.05 → staging-next-25.05 (push) Failing after 14m28s

This commit is contained in:
Dark Steveneq
2025-10-09 14:15:47 +02:00
commit 646b892680
49168 changed files with 5897842 additions and 0 deletions

View File

@@ -0,0 +1,63 @@
{
lib,
stdenv,
fetchpatch,
fetchurl,
readline,
bison,
}:
stdenv.mkDerivation rec {
pname = "es";
version = "0.9.2";
src = fetchurl {
url = "https://github.com/wryun/es-shell/releases/download/v${version}/es-${version}.tar.gz";
sha256 = "sha256-ySZIK0IITpA+uHHuHrDO/Ana5vGt64QI3Z6TMDXE9d0=";
};
# The distribution tarball does not have a single top-level directory.
preUnpack = ''
mkdir $name
cd $name
sourceRoot=.
'';
patches = [
(fetchpatch {
# https://github.com/wryun/es-shell/pull/101
name = "new-compiler-issues.patch";
url = "https://github.com/wryun/es-shell/commit/1eafb5fc4be735e59c9a091cc30adbca8f86fd96.patch";
hash = "sha256-0CV1seEiH6PsUnq0akPLiRMy+kIb9qnAK7Ta4I47i60=";
})
];
strictDeps = true;
nativeBuildInputs = [ bison ];
buildInputs = [ readline ];
configureFlags = [ "--with-readline" ];
meta = with lib; {
description = "Extensible shell with higher order functions";
mainProgram = "es";
longDescription = ''
Es is an extensible shell. The language was derived
from the Plan 9 shell, rc, and was influenced by
functional programming languages, such as Scheme,
and the Tcl embeddable programming language.
'';
homepage = "http://wryun.github.io/es-shell/";
license = licenses.publicDomain;
maintainers = with maintainers; [
sjmackenzie
ttuegel
];
platforms = platforms.all;
};
passthru = {
shellPath = "/bin/es";
};
}

View File

@@ -0,0 +1,27 @@
{
lib,
rustPlatform,
fetchFromGitHub,
}:
rustPlatform.buildRustPackage rec {
pname = "esbuild-config";
version = "1.0.1";
src = fetchFromGitHub {
owner = "bpierre";
repo = "esbuild-config";
rev = "v${version}";
hash = "sha256-u3LgecKfgPSN5xMyqBjeAn4/XswM3iEGbZ+JGrVF1Co=";
};
cargoHash = "sha256-OQ7zlcWVu3sS/u0B+Ew6VUS4zxntKU2LF63ZcPRUKW0=";
meta = with lib; {
description = "Config files for esbuild";
homepage = "https://github.com/bpierre/esbuild-config";
license = licenses.mit;
maintainers = with maintainers; [ figsoda ];
mainProgram = "esbuild-config";
};
}

View File

@@ -0,0 +1,62 @@
{
lib,
python3Packages,
fetchFromGitHub,
meson,
ninja,
pkg-config,
gobject-introspection,
blueprint-compiler,
wrapGAppsHook4,
desktop-file-utils,
libadwaita,
gtksourceview5,
}:
python3Packages.buildPythonApplication rec {
pname = "escambo";
version = "0.1.2";
pyproject = false; # built with meson
src = fetchFromGitHub {
owner = "CleoMenezesJr";
repo = "escambo";
rev = version;
hash = "sha256-jMlix8nlCaVLZEhqzb6LRNrD3DUZMTIjqrRKo6nFbQA=";
};
nativeBuildInputs = [
meson
ninja
pkg-config
gobject-introspection
blueprint-compiler
wrapGAppsHook4
desktop-file-utils
];
buildInputs = [
libadwaita
gtksourceview5
];
dependencies = with python3Packages; [
pygobject3
requests
];
dontWrapGApps = true;
preFixup = ''
makeWrapperArgs+=("''${gappsWrapperArgs[@]}")
'';
meta = {
description = "HTTP-based APIs test application for GNOME";
homepage = "https://github.com/CleoMenezesJr/escambo";
license = lib.licenses.gpl3Plus;
mainProgram = "escambo";
maintainers = with lib.maintainers; [ aleksana ];
platforms = lib.platforms.linux;
};
}

View File

@@ -0,0 +1,32 @@
{
lib,
stdenv,
fetchFromGitHub,
openssl,
}:
stdenv.mkDerivation rec {
pname = "eschalot";
version = "1.2.0.20191006";
src = fetchFromGitHub {
owner = "ReclaimYourPrivacy";
repo = "eschalot";
rev = "a45bad5b9a3e4939340ddd8a751ceffa3c0db76a";
sha256 = "1wbi0azc2b57nmmx6c1wmvng70d9ph1s83yhnl5lxaaqaj85h22g";
};
buildInputs = [ openssl ];
installPhase = ''
install -D -t $out/bin eschalot worgen
'';
meta = with lib; {
description = "Tor hidden service name generator";
homepage = src.meta.homepage;
license = licenses.isc;
platforms = platforms.unix;
maintainers = with maintainers; [ dotlambda ];
};
}

View File

@@ -0,0 +1,73 @@
{
lib,
python3Packages,
fetchFromGitHub,
nix-update-script,
ffmpeg-full,
gtk3,
pango,
gobject-introspection,
wrapGAppsHook3,
}:
python3Packages.buildPythonApplication {
pname = "escrotum";
version = "1.0.1-unstable-2020-12-07";
format = "pyproject";
src = fetchFromGitHub {
owner = "Roger";
repo = "escrotum";
rev = "a41d0f11bb6af4f08e724b8ccddf8513d905c0d1";
sha256 = "sha256-z0AyTbOEE60j/883X17mxgoaVlryNtn0dfEB0C18G2s=";
};
buildInputs = [
gtk3
pango
];
nativeBuildInputs = [
gobject-introspection
wrapGAppsHook3
];
build-system = with python3Packages; [
setuptools
];
dependencies = with python3Packages; [
pygobject3
xcffib
pycairo
numpy
];
# Cannot find pango without strictDeps = false
strictDeps = false;
outputs = [
"out"
"man"
];
makeWrapperArgs = [ "--prefix PATH : ${lib.makeBinPath [ ffmpeg-full ]}" ];
postInstall = ''
mkdir -p $man/share/man/man1
cp man/escrotum.1 $man/share/man/man1/
'';
passthru.updateScript = nix-update-script {
extraArgs = [ "--version=branch" ];
};
meta = with lib; {
homepage = "https://github.com/Roger/escrotum";
description = "Linux screen capture using pygtk, inspired by scrot";
platforms = platforms.linux;
maintainers = with maintainers; [ rasendubi ];
license = licenses.gpl3;
mainProgram = "escrotum";
};
}

View File

@@ -0,0 +1,142 @@
{
lib,
stdenv,
fetchFromGitHub,
protobufc,
pkg-config,
fuse3,
meson,
ninja,
libselinux,
jitterentropy,
botan3,
openssl,
libkcapi,
# A more detailed explanation of the following meson build options can be found
# in the source code of esdm.
# A brief explanation is given.
# general options
selinux ? false, # enable selinux support
drngHashDrbg ? true, # set the default drng callback
drngChaCha20 ? false, # set the default drng callback
ais2031 ? false, # set the seeding strategy to be compliant with AIS 20/31
sp80090c ? false, # set compliance with NIST SP800-90C
cryptoBackend ? "builtin", # set backend for hash and drbg operations
linuxDevFiles ? true, # enable linux /dev/random and /dev/urandom support
linuxGetRandom ? true, # enable linux getrandom support
hashSha512 ? false, # set the conditioning hash: SHA2-512
hashSha3_512 ? true, # set the conditioning hash: SHA3-512
openSSLRandProvider ? false, # build ESDM provider for OpenSSL 3.x
botanRng ? false, # build ESDM class for Botan 3.x
# client-related options (handle with care, consult source code and meson options)
# leave as is if in doubt
connectTimeoutExponent ? 28, # (1 << EXPONENT nanoseconds)
rxTxTimeoutExponent ? 28, # (1 << EXPONENT nanoseconds)
reconnectAttempts ? 10, # how often to attempt unix socket connection before giving up
# entropy sources
esJitterRng ? true, # enable support for the entropy source: jitter rng (running in user space)
esJitterRngEntropyRate ? 256, # amount of entropy to account for jitter rng source
esJitterRngKernel ? true, # enable support for the entropy source: jitter rng (running in kernel space)
esJitterRngKernelEntropyRate ? 256, # amount of entropy to account for kernel jitter rng source
esCPU ? true, # enable support for the entropy source: cpu-based entropy
esCPUEntropyRate ? 8, # amount of entropy to account for cpu rng source
esKernel ? true, # enable support for the entropy source: kernel-based entropy
esKernelEntropyRate ? 128, # amount of entropy to account for kernel-based source
esIRQ ? false, # enable support for the entropy source: interrupt-based entropy
esIRQEntropyRate ? 256, # amount of entropy to account for interrupt-based source (only set irq XOR sched != 0)
esSched ? false, # enable support for the entropy source: scheduler-based entropy
esSchedEntropyRate ? 0, # amount of entropy to account for interrupt-based source (only set irq XOR sched != 0)
esHwrand ? true, # enable support for the entropy source: /dev/hwrng
esHwrandEntropyRate ? 128, # amount of entropy to account for /dev/hwrng-based sources
}:
assert drngHashDrbg != drngChaCha20;
assert hashSha512 != hashSha3_512;
assert cryptoBackend == "openssl" || cryptoBackend == "botan" || cryptoBackend == "builtin";
stdenv.mkDerivation rec {
pname = "esdm";
version = "1.2.0";
src = fetchFromGitHub {
owner = "smuellerDD";
repo = "esdm";
rev = "v${version}";
hash = "sha256-5XctrI02pfCgK1P76AaSkMjiQqav6LX3SMjKr4F44sw=";
};
nativeBuildInputs = [
meson
pkg-config
ninja
];
buildInputs =
lib.optional (cryptoBackend == "botan" || botanRng) botan3
++ lib.optional (cryptoBackend == "openssl" || openSSLRandProvider) openssl
++ lib.optional selinux libselinux
++ lib.optional esJitterRng jitterentropy
++ lib.optional linuxDevFiles fuse3
++ lib.optional esJitterRngKernel libkcapi;
propagatedBuildInputs = [ protobufc ];
mesonFlags = [
(lib.mesonBool "b_lto" false)
(lib.mesonBool "fips140" false)
(lib.mesonBool "ais2031" ais2031)
(lib.mesonBool "sp80090c" sp80090c)
(lib.mesonEnable "node" true) # multiple DRNGs
(lib.mesonOption "threading_max_threads" (toString 64))
(lib.mesonOption "crypto_backend" cryptoBackend)
(lib.mesonEnable "linux-devfiles" linuxDevFiles)
(lib.mesonEnable "linux-getrandom" linuxGetRandom)
(lib.mesonOption "client-connect-timeout-exponent" (toString connectTimeoutExponent))
(lib.mesonOption "client-rx-tx-timeout-exponent" (toString rxTxTimeoutExponent))
(lib.mesonOption "client-reconnect-attempts" (toString reconnectAttempts))
(lib.mesonEnable "es_jent" esJitterRng)
(lib.mesonOption "es_jent_entropy_rate" (toString esJitterRngEntropyRate))
(lib.mesonEnable "es_jent_kernel" esJitterRngKernel)
(lib.mesonOption "es_jent_kernel_entropy_rate" (toString esJitterRngKernelEntropyRate))
(lib.mesonEnable "es_cpu" esCPU)
(lib.mesonOption "es_cpu_entropy_rate" (toString esCPUEntropyRate))
(lib.mesonEnable "es_kernel" esKernel)
(lib.mesonOption "es_kernel_entropy_rate" (toString esKernelEntropyRate))
(lib.mesonEnable "es_irq" esIRQ)
(lib.mesonOption "es_irq_entropy_rate" (toString esIRQEntropyRate))
(lib.mesonEnable "es_sched" esSched)
(lib.mesonOption "es_sched_entropy_rate" (toString esSchedEntropyRate))
(lib.mesonEnable "es_hwrand" esHwrand)
(lib.mesonOption "es_hwrand_entropy_rate" (toString esHwrandEntropyRate))
(lib.mesonEnable "hash_sha512" hashSha512)
(lib.mesonEnable "hash_sha3_512" hashSha3_512)
(lib.mesonEnable "selinux" selinux)
(lib.mesonEnable "drng_hash_drbg" drngHashDrbg)
(lib.mesonEnable "drng_chacha20" drngChaCha20)
(lib.mesonEnable "openssl-rand-provider" openSSLRandProvider)
(lib.mesonEnable "botan-rng" botanRng)
];
doCheck = true;
strictDeps = true;
mesonBuildType = "release";
meta = {
homepage = "https://www.chronox.de/esdm.html";
description = "Entropy Source and DRNG Manager in user space";
license = with lib.licenses; [
gpl2Only
bsd3
];
platforms = lib.platforms.linux;
maintainers = with lib.maintainers; [
orichter
thillux
];
};
}

View File

@@ -0,0 +1,65 @@
{
lib,
stdenv,
fetchFromGitHub,
asciidoctor,
gawk,
gnused,
runtimeShell,
binlore,
esh,
}:
stdenv.mkDerivation rec {
pname = "esh";
version = "0.1.1";
src = fetchFromGitHub {
owner = "jirutka";
repo = "esh";
rev = "v${version}";
sha256 = "1ddaji5nplf1dyvgkrhqjy8m5djaycqcfhjv30yprj1avjymlj6w";
};
nativeBuildInputs = [ asciidoctor ];
buildInputs = [
gawk
gnused
];
makeFlags = [
"prefix=$(out)"
"DESTDIR="
];
postPatch = ''
patchShebangs .
substituteInPlace esh \
--replace '"/bin/sh"' '"${runtimeShell}"' \
--replace '"awk"' '"${gawk}/bin/awk"' \
--replace 'sed' '${gnused}/bin/sed'
substituteInPlace tests/test-dump.exp \
--replace '#!/bin/sh' '#!${runtimeShell}'
'';
doCheck = true;
checkTarget = "test";
# working around a bug in file. Was fixed in
# file 5.41-5.43 but regressed in 5.44+
# see https://bugs.astron.com/view.php?id=276
# "can" verdict because of `-s SHELL` arg
passthru.binlore.out = binlore.synthesize esh ''
execer can bin/esh
'';
meta = with lib; {
description = "Simple templating engine based on shell";
mainProgram = "esh";
homepage = "https://github.com/jirutka/esh";
license = licenses.mit;
maintainers = with maintainers; [ mnacamura ];
platforms = platforms.unix;
};
}

15293
pkgs/by-name/es/eslint/package-lock.json generated Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,44 @@
{
lib,
buildNpmPackage,
fetchFromGitHub,
nix-update-script,
stdenv,
}:
buildNpmPackage rec {
pname = "eslint";
version = "9.35.0";
src = fetchFromGitHub {
owner = "eslint";
repo = "eslint";
tag = "v${version}";
hash = "sha256-Ml/TeVvNcq6GyNklwn2/uURUDrJsMCNZcLEx6sLKPiI=";
};
# NOTE: Generating lock-file
# arch = [ x64 arm64 ]
# platform = [ darwin linux]
# npm install --package-lock-only --arch=<arch> --platform=<os>
# darwin seems to generate a cross platform compatible lockfile
postPatch = ''
cp ${./package-lock.json} package-lock.json
'';
npmDepsHash = "sha256-+dgbWi4Z+2BWLwOv3sTQ2YFrONFyBHmxyc3FFLmStb8=";
npmInstallFlags = [ "--omit=dev" ];
dontNpmBuild = true;
dontNpmPrune = true;
passthru.updateScript = nix-update-script {
extraArgs = [ "--generate-lockfile" ];
};
meta = {
description = "Find and fix problems in your JavaScript code";
homepage = "https://eslint.org";
license = lib.licenses.mit;
maintainers = [ lib.maintainers.onny ];
};
}

View File

@@ -0,0 +1,36 @@
{
lib,
buildNpmPackage,
fetchFromGitHub,
eslint_d,
testers,
}:
buildNpmPackage rec {
pname = "eslint_d";
version = "14.3.0";
src = fetchFromGitHub {
owner = "mantoni";
repo = "eslint_d.js";
rev = "v${version}";
hash = "sha256-Mu3dSgRIC2L9IImKixJfaUsltlajY0cYdXOSikNQuPo=";
};
npmDepsHash = "sha256-nZ9q+Xmd8JLs+xYEO1TVbDEmQl2UwR9D9OWqVChNHhw=";
dontNpmBuild = true;
passthru.tests.version = testers.testVersion {
package = eslint_d;
version = src.rev;
};
meta = with lib; {
description = "Makes eslint the fastest linter on the planet";
homepage = "https://github.com/mantoni/eslint_d.js";
license = licenses.mit;
maintainers = [ maintainers.ehllie ];
mainProgram = "eslint_d";
};
}

View File

@@ -0,0 +1,29 @@
{
lib,
fetchFromGitHub,
rustPlatform,
}:
rustPlatform.buildRustPackage rec {
pname = "esp-generate";
version = "0.5.0";
src = fetchFromGitHub {
owner = "esp-rs";
repo = "esp-generate";
rev = "v${version}";
hash = "sha256-rvgmmG0LhRb+eRdqmlCf514lzV0QGWPaJ8pnlTnxfvo=";
};
cargoHash = "sha256-ai8FUKHK/iHeUEgklZEDAMKoorXVDxGSZVrB7LahVV8=";
meta = {
description = "Template generation tool to create no_std applications targeting Espressif's chips";
homepage = "https://github.com/esp-rs/esp-generate";
license = with lib.licenses; [
mit # or
asl20
];
maintainers = [ lib.maintainers.eymeric ];
};
}

View File

@@ -0,0 +1,151 @@
{
lib,
coreutils,
fetchFromGitHub,
rustPlatform,
pkg-config,
extra-cmake-modules,
dbus,
libX11,
libxcb,
libXi,
libXtst,
libnotify,
libxkbcommon,
libpng,
openssl,
xclip,
xdotool,
setxkbmap,
wl-clipboard,
wxGTK32,
makeWrapper,
stdenv,
waylandSupport ? false,
x11Support ? stdenv.hostPlatform.isLinux,
testers,
}:
# espanso does not support building with both X11 and Wayland support at the same time
assert stdenv.hostPlatform.isLinux -> x11Support != waylandSupport;
assert stdenv.hostPlatform.isDarwin -> !x11Support;
assert stdenv.hostPlatform.isDarwin -> !waylandSupport;
rustPlatform.buildRustPackage (finalAttrs: {
pname = "espanso";
version = "2.2-unstable-2024-05-14";
src = fetchFromGitHub {
owner = "espanso";
repo = "espanso";
rev = "8daadcc949c35a7b7aa20b7f544fdcff83e2c5f7";
hash = "sha256-4MArENBmX6tDVLZE1O8cuJe7A0R+sLZoxBkDvIwIVZ4=";
};
cargoHash = "sha256-2Hf492/xZ/QGqDYbjiZep/FX8bPyEuoxkMJ4qnMqu+c=";
nativeBuildInputs = [
extra-cmake-modules
pkg-config
makeWrapper
wxGTK32
];
# Ref: https://github.com/espanso/espanso/blob/78df1b704fe2cc5ea26f88fdc443b6ae1df8a989/scripts/build_binary.rs#LL49C3-L62C4
buildNoDefaultFeatures = true;
buildFeatures = [
"modulo"
]
++ lib.optionals waylandSupport [
"wayland"
]
++ lib.optionals stdenv.hostPlatform.isLinux [
"vendored-tls"
]
++ lib.optionals stdenv.hostPlatform.isDarwin [
"native-tls"
];
buildInputs = [
libpng
wxGTK32
]
++ lib.optionals stdenv.hostPlatform.isLinux [
openssl
dbus
libnotify
libxkbcommon
]
++ lib.optionals waylandSupport [
wl-clipboard
]
++ lib.optionals x11Support [
libXi
libXtst
libX11
libxcb
xclip
xdotool
];
postPatch = lib.optionalString stdenv.hostPlatform.isDarwin ''
substituteInPlace scripts/create_bundle.sh \
--replace-fail target/mac/ $out/Applications/ \
--replace-fail /bin/echo ${coreutils}/bin/echo
patchShebangs scripts/create_bundle.sh
substituteInPlace espanso/src/res/macos/Info.plist \
--replace-fail "<string>espanso</string>" "<string>${placeholder "out"}/Applications/Espanso.app/Contents/MacOS/espanso</string>"
substituteInPlace espanso/src/path/macos.rs espanso/src/path/linux.rs \
--replace-fail '"/usr/local/bin/espanso"' '"${placeholder "out"}/bin/espanso"'
substituteInPlace espanso-modulo/build.rs \
--replace-fail '"--with-libpng=builtin"' '"--with-libpng=sys"'
'';
# Some tests require networking
doCheck = false;
postInstall =
if stdenv.hostPlatform.isDarwin then
''
EXEC_PATH=$out/bin/espanso BUILD_ARCH=current ${stdenv.shell} ./scripts/create_bundle.sh
''
else
''
wrapProgram $out/bin/espanso \
--prefix PATH : ${
lib.makeBinPath (
lib.optionals stdenv.hostPlatform.isLinux [
libnotify
setxkbmap
]
++ lib.optionals waylandSupport [
wl-clipboard
]
++ lib.optionals x11Support [
xclip
]
)
}
'';
passthru.tests.version = testers.testVersion {
package = finalAttrs.finalPackage;
# remove when updating to a release version
version = "2.2.1";
};
meta = with lib; {
description = "Cross-platform Text Expander written in Rust";
mainProgram = "espanso";
homepage = "https://espanso.org";
license = licenses.gpl3Plus;
maintainers = with maintainers; [
kimat
n8henrie
];
platforms = platforms.unix;
longDescription = ''
Espanso detects when you type a keyword and replaces it while you're typing.
'';
};
})

View File

@@ -0,0 +1,48 @@
{
stdenv,
lib,
meson,
ninja,
espeak-ng,
fetchFromGitHub,
pkg-config,
ronn,
alsa-lib,
systemd,
}:
stdenv.mkDerivation rec {
pname = "espeakup";
version = "0.90";
src = fetchFromGitHub {
owner = "linux-speakup";
repo = "espeakup";
rev = "v${version}";
hash = "sha256-Qjdg1kParsnpb8Lv51wXLdrLufxtbBTsP8B3t53islI=";
};
nativeBuildInputs = [
meson
ninja
pkg-config
ronn
];
buildInputs = [
espeak-ng
alsa-lib
systemd
];
PKG_CONFIG_SYSTEMD_SYSTEMDSYSTEMUNITDIR = "${placeholder "out"}/lib/systemd/system";
meta = with lib; {
homepage = "https://github.com/linux-speakup/espeakup";
description = "Lightweight connector for espeak-ng and speakup";
license = licenses.gpl3Plus;
maintainers = with maintainers; [ ethindp ];
platforms = with platforms; linux;
mainProgram = "espeakup";
};
}

View File

@@ -0,0 +1,60 @@
{
lib,
rustPlatform,
fetchFromGitHub,
pkg-config,
installShellFiles,
stdenv,
nix-update-script,
openssl,
}:
rustPlatform.buildRustPackage rec {
pname = "espflash";
version = "4.1.0";
src = fetchFromGitHub {
owner = "esp-rs";
repo = "espflash";
tag = "v${version}";
hash = "sha256-9ijQngCFm2ssX258nomgy84KEjib2nHVlQ2HG3prjqQ=";
};
nativeBuildInputs = [
pkg-config
installShellFiles
];
# Needed to get openssl-sys to use pkg-config.
env.OPENSSL_NO_VENDOR = 1;
buildInputs = [ openssl ];
cargoHash = "sha256-vNGO2eWHwHcjhAZ9hrIkX3T4XYxYEvlb3R+JEVbXMZg=";
cargoBuildFlags = [
"--exclude xtask"
"--workspace"
];
postInstall = lib.optionalString (stdenv.buildPlatform.canExecute stdenv.hostPlatform) ''
installShellCompletion --cmd espflash \
--bash <($out/bin/espflash completions bash) \
--zsh <($out/bin/espflash completions zsh) \
--fish <($out/bin/espflash completions fish)
'';
passthru.updateScript = nix-update-script { };
meta = {
description = "Serial flasher utility for Espressif SoCs and modules based on esptool.py";
homepage = "https://github.com/esp-rs/espflash";
changelog = "https://github.com/esp-rs/espflash/blob/v${version}/CHANGELOG.md";
mainProgram = "espflash";
license = with lib.licenses; [
mit # or
asl20
];
maintainers = with lib.maintainers; [ matthiasbeyer ];
};
}

View File

@@ -0,0 +1,60 @@
{
lib,
buildPythonPackage,
fetchFromGitHub,
fetchNpmDeps,
# build-system
setuptools,
nodejs,
npmHooks,
}:
buildPythonPackage rec {
pname = "esphome-dashboard";
version = "20250814.0";
pyproject = true;
src = fetchFromGitHub {
owner = "esphome";
repo = "dashboard";
rev = "refs/tags/${version}";
hash = "sha256-WQsyv3s3LKKOwYEkX5GcAPnbH061q1ts7TU4HU6I8CI=";
};
npmDeps = fetchNpmDeps {
inherit src;
hash = "sha256-ShuJPS7qP2XZ3lwJrFeKRkQwX7tvyiC/0L7sGn0cMn8=";
};
build-system = [ setuptools ];
nativeBuildInputs = [
nodejs
npmHooks.npmConfigHook
];
postPatch = ''
# https://github.com/esphome/dashboard/pull/639
patchShebangs script/build
'';
preBuild = ''
script/build
'';
# no tests
doCheck = false;
pythonImportsCheck = [
"esphome_dashboard"
];
meta = with lib; {
description = "ESPHome dashboard";
homepage = "https://esphome.io/";
license = with licenses; [ asl20 ];
maintainers = with maintainers; [ hexa ];
};
}

View File

@@ -0,0 +1,13 @@
diff --git a/esphome/components/esp32/post_build.py.script b/esphome/components/esp32/post_build.py.script
index c99521423..e29821d7e 100644
--- a/esphome/components/esp32/post_build.py.script
+++ b/esphome/components/esp32/post_build.py.script
@@ -88,8 +88,6 @@ def merge_factory_bin(source, target, env):
output_path = firmware_path.with_suffix(".factory.bin")
python_exe = f'"{env.subst("$PYTHONEXE")}"'
cmd = [
- python_exe,
- "-m",
"esptool",
"--chip",
chip,

View File

@@ -0,0 +1,199 @@
{
lib,
stdenv,
callPackage,
python3Packages,
fetchFromGitHub,
installShellFiles,
platformio,
esptool,
git,
inetutils,
versionCheckHook,
nixosTests,
}:
let
python = python3Packages.python.override {
self = python;
packageOverrides = self: super: {
esphome-dashboard = self.callPackage ./dashboard.nix { };
paho-mqtt = super.paho-mqtt.overridePythonAttrs (oldAttrs: rec {
version = "1.6.1";
src = fetchFromGitHub {
inherit (oldAttrs.src) owner repo;
tag = "v${version}";
hash = "sha256-9nH6xROVpmI+iTKXfwv2Ar1PAmWbEunI3HO0pZyK6Rg=";
};
build-system = with self; [ setuptools ];
doCheck = false;
});
};
};
in
python.pkgs.buildPythonApplication rec {
pname = "esphome";
version = "2025.9.3";
pyproject = true;
src = fetchFromGitHub {
owner = "esphome";
repo = "esphome";
tag = version;
hash = "sha256-9x4uf0gHCGYLq0gr0MoAp0sk9p82zdH41PaELph0fv0=";
};
patches = [
# Use the esptool executable directly in the ESP32 post build script, that
# gets executed by platformio. This is required, because platformio uses its
# own python environment through `python -m esptool` and then fails to find
# the esptool library.
./esp32-post-build-esptool-reference.patch
];
build-system = with python.pkgs; [
setuptools
];
nativeBuildInputs = [
installShellFiles
];
pythonRelaxDeps = true;
pythonRemoveDeps = [
"esptool"
"platformio"
];
postPatch = ''
substituteInPlace pyproject.toml \
--replace-fail "setuptools==80.9.0" "setuptools" \
--replace-fail "wheel>=0.43,<0.46" "wheel"
'';
# Remove esptool and platformio from requirements
env.ESPHOME_USE_SUBPROCESS = "";
# esphome has optional dependencies it does not declare, they are
# loaded when certain config blocks are used.
# They have validation functions like:
# - validate_cryptography_installed for the wifi component
dependencies = with python.pkgs; [
aioesphomeapi
argcomplete
cairosvg
click
colorama
cryptography
esphome-dashboard
esphome-glyphsets
freetype-py
icmplib
jinja2
kconfiglib
packaging
paho-mqtt
pillow
platformio
protobuf
puremagic
pyparsing
pyserial
pyyaml
requests
ruamel-yaml
tornado
tzdata
tzlocal
voluptuous
];
makeWrapperArgs = [
# platformio is used in esphome/platformio_api.py
# esptool is used in esphome/__main__.py
# git is used in esphome/writer.py
# inetutils is used in esphome/dashboard/status/ping.py
"--prefix PATH : ${
lib.makeBinPath [
platformio
esptool
git
inetutils
]
}"
"--prefix PYTHONPATH : ${python.pkgs.makePythonPath dependencies}" # will show better error messages
"--prefix LD_LIBRARY_PATH : ${lib.makeLibraryPath [ stdenv.cc.cc ]}"
"--set ESPHOME_USE_SUBPROCESS ''"
# https://github.com/NixOS/nixpkgs/issues/362193
"--set PROTOCOL_BUFFERS_PYTHON_IMPLEMENTATION 'python'"
];
# Needed for tests
__darwinAllowLocalNetworking = true;
nativeCheckInputs =
with python3Packages;
[
hypothesis
mock
pytest-asyncio
pytest-cov-stub
pytest-mock
pytestCheckHook
]
++ [ versionCheckHook ];
disabledTestPaths = [
# platformio builds; requires networking for dependency resolution
"tests/integration"
];
preCheck = ''
export PATH=$PATH:$out/bin
'';
postInstall =
let
argcomplete = lib.getExe' python3Packages.argcomplete "register-python-argcomplete";
in
''
installShellCompletion --cmd esphome \
--bash <(${argcomplete} --shell bash esphome) \
--zsh <(${argcomplete} --shell zsh esphome) \
--fish <(${argcomplete} --shell fish esphome)
'';
doInstallCheck = true;
disabledTests = [
# tries to import platformio, which is wrapped in an fhsenv
"test_clean_build"
"test_clean_build_empty_cache_dir"
# AssertionError: Expected 'run_external_command' to have been called once. Called 0 times.
"test_run_platformio_cli_sets_environment_variables"
];
versionCheckProgramArg = "--version";
passthru = {
dashboard = python.pkgs.esphome-dashboard;
updateScript = callPackage ./update.nix { };
tests = { inherit (nixosTests) esphome; };
};
meta = {
changelog = "https://github.com/esphome/esphome/releases/tag/${version}";
description = "Make creating custom firmwares for ESP32/ESP8266 super easy";
homepage = "https://esphome.io/";
license = with lib.licenses; [
mit # The C++/runtime codebase of the ESPHome project (file extensions .c, .cpp, .h, .hpp, .tcc, .ino)
gpl3Only # The python codebase and all other parts of this codebase
];
maintainers = with lib.maintainers; [
hexa
];
mainProgram = "esphome";
};
}

View File

@@ -0,0 +1,33 @@
{
writeShellScript,
lib,
curl,
jq,
git,
gnugrep,
gnused,
nix-update,
}:
writeShellScript "update-esphome" ''
PATH=${
lib.makeBinPath [
curl
gnugrep
gnused
jq
git
nix-update
]
}
LATEST=$(curl https://api.github.com/repos/esphome/esphome/releases/latest | jq -r '.name')
echo "Latest version: $LATEST"
DASHBOARD_VERSION=$(curl https://raw.githubusercontent.com/esphome/esphome/$LATEST/requirements.txt | \
grep "esphome-dashboard==" | sed "s/.*=//")
echo "Dashboard version: $DASHBOARD_VERSION"
nix-update esphome.dashboard --version $DASHBOARD_VERSION
nix-update esphome --version $LATEST
''

View File

@@ -0,0 +1,49 @@
{
lib,
fetchFromGitHub,
cmake,
stdenv,
nix-update-script,
}:
stdenv.mkDerivation rec {
pname = "espresso";
version = "2.4";
src = fetchFromGitHub {
owner = "chipsalliance";
repo = "espresso";
rev = "v${version}";
hash = "sha256-z5By57VbmIt4sgRgvECnLbZklnDDWUA6fyvWVyXUzsI=";
};
nativeBuildInputs = [ cmake ];
doCheck = true;
outputs = [
"out"
"man"
];
passthru.updateScript = nix-update-script { };
meta = with lib; {
description = "Multi-valued PLA minimization";
# from manual
longDescription = ''
Espresso takes as input a two-level representation of a
two-valued (or multiple-valued) Boolean function, and produces a
minimal equivalent representation. The algorithms used are new and
represent an advance in both speed and optimality of solution in
heuristic Boolean minimization.
'';
homepage = "https://github.com/chipsalliance/espresso";
maintainers = with maintainers; [ pineapplehunter ];
mainProgram = "espresso";
platforms = lib.platforms.all;
# The license is not provided in the GitHub repo,
# so until there's an update on the license, it is marked as unfree.
# See: https://github.com/chipsalliance/espresso/issues/4
license = licenses.unfree;
};
}

View File

@@ -0,0 +1,33 @@
{
lib,
stdenv,
fetchFromGitHub,
}:
stdenv.mkDerivation rec {
pname = "esptool-ck";
version = "0.4.13";
src = fetchFromGitHub {
owner = "igrr";
repo = "esptool-ck";
rev = "0.4.13";
sha256 = "1cb81b30a71r7i0gmkh2qagfx9lhq0myq5i37fk881bq6g7i5n2k";
};
makeFlags = [ "VERSION=${version}" ];
installPhase = ''
mkdir -p $out/bin
cp esptool $out/bin
'';
meta = with lib; {
description = "ESP8266/ESP32 build helper tool";
homepage = "https://github.com/igrr/esptool-ck";
license = licenses.gpl2Plus;
maintainers = [ maintainers.dezgeg ];
platforms = platforms.linux;
mainProgram = "esptool";
};
}

View File

@@ -0,0 +1,126 @@
{
lib,
fetchFromGitHub,
python3Packages,
softhsm,
installShellFiles,
}:
python3Packages.buildPythonApplication rec {
pname = "esptool";
version = "5.1.0";
pyproject = true;
src = fetchFromGitHub {
owner = "espressif";
repo = "esptool";
tag = "v${version}";
hash = "sha256-pdkL/QfrrTs/NdXlsr+2Yo+r8UTFLkxw4E6XGDAt1yE=";
};
postPatch = ''
patchShebangs ci
substituteInPlace test/test_espsecure_hsm.py \
--replace-fail "/usr/lib/softhsm" "${lib.getLib softhsm}/lib/softhsm"
'';
build-system = with python3Packages; [
setuptools
];
dependencies = with python3Packages; [
bitstring
click
cryptography
intelhex
pyserial
pyyaml
reedsolo
rich-click
];
optional-dependencies = with python3Packages; {
hsm = [ python-pkcs11 ];
};
nativeBuildInputs = [
installShellFiles
];
postInstall = ''
rm -v $out/bin/*.py
''
+
lib.strings.concatMapStrings
(
cmd:
# Unfortunately, espsecure and espefuse do not run in cross-compilation
lib.optionalString
(
python3Packages.stdenv.buildPlatform.canExecute python3Packages.stdenv.hostPlatform
|| cmd == "esptool"
)
''
installShellCompletion --cmd ${cmd} \
--bash <(_${lib.toUpper cmd}_COMPLETE=bash_source $out/bin/${cmd}) \
--zsh <(_${lib.toUpper cmd}_COMPLETE=zsh_source $out/bin/${cmd}) \
--fish <(_${lib.toUpper cmd}_COMPLETE=fish_source $out/bin/${cmd})
''
)
[
"esptool"
"espsecure"
"espefuse"
];
nativeCheckInputs =
with python3Packages;
[
pyelftools
pytestCheckHook
requests
softhsm
]
++ lib.flatten (lib.attrValues optional-dependencies);
preCheck = ''
export PATH="$out/bin:$PATH"
'';
pytestFlags = [
"-m"
"host_test"
];
disabledTests = [
# remove the deprecated .py entrypoints, because our wrapper tries to
# import esptool and finds esptool.py in $out/bin, which breaks.
"test_esptool_py"
"test_espefuse_py"
"test_espsecure_py"
"test_esp_rfc2217_server_py"
];
postCheck = ''
export SOFTHSM2_CONF=$(mktemp)
echo "directories.tokendir = $(mktemp -d)" > "$SOFTHSM2_CONF"
./ci/setup_softhsm2.sh
pytest test/test_espsecure_hsm.py
'';
meta = {
changelog = "https://github.com/espressif/esptool/blob/${src.tag}/CHANGELOG.md";
description = "ESP8266 and ESP32 serial bootloader utility";
homepage = "https://github.com/espressif/esptool";
license = lib.licenses.gpl2Plus;
maintainers = with lib.maintainers; [
dezgeg
dotlambda
];
teams = [ lib.teams.lumiguide ];
platforms = with lib.platforms; linux ++ darwin;
mainProgram = "esptool";
};
}

View File

@@ -0,0 +1,81 @@
{
lib,
rustPlatform,
fetchFromGitHub,
pkg-config,
installShellFiles,
bzip2,
openssl,
xz,
zstd,
stdenv,
testers,
writableTmpDirAsHomeHook,
nix-update-script,
}:
rustPlatform.buildRustPackage (finalAttrs: {
pname = "espup";
version = "0.16.0";
src = fetchFromGitHub {
owner = "esp-rs";
repo = "espup";
tag = "v${finalAttrs.version}";
hash = "sha256-blEjUFBzkwplwZgTAtI84MCHvxujNF1WsPJJezRNjxQ=";
};
cargoHash = "sha256-Y6Y+62lJ3k6GMkU82CDkTt1Prd3UrtBKqA5Spctochw=";
nativeBuildInputs = [
pkg-config
installShellFiles
];
buildInputs = [
bzip2
openssl
xz
zstd
];
env = {
OPENSSL_NO_VENDOR = true;
ZSTD_SYS_USE_PKG_CONFIG = true;
};
nativeCheckInputs = [ writableTmpDirAsHomeHook ];
checkFlags = [
# makes network calls
"--skip=toolchain::rust::tests::test_xtensa_rust_parse_version"
];
postInstall = lib.optionalString (stdenv.buildPlatform.canExecute stdenv.hostPlatform) ''
installShellCompletion --cmd espup \
--bash <($out/bin/espup completions bash) \
--fish <($out/bin/espup completions fish) \
--zsh <($out/bin/espup completions zsh)
'';
passthru = {
updateScript = nix-update-script { };
tests.version = testers.testVersion {
package = finalAttrs.finalPackage;
};
};
meta = {
description = "Tool for installing and maintaining Espressif Rust ecosystem";
homepage = "https://github.com/esp-rs/espup/";
license = with lib.licenses; [
mit
asl20
];
maintainers = with lib.maintainers; [
knightpp
beeb
];
mainProgram = "espup";
};
})

View File

@@ -0,0 +1,47 @@
{
lib,
stdenv,
fetchurl,
}:
let
arch_table = {
"x86_64-linux" = "linux-x86_64";
"i686-linux" = "linux-i686";
};
sha_table = {
"x86_64-linux" = "d9902aadac4f442992877945da2a6fe8d6ea6b0de314ca8ac0c28dc5f253f7d8";
"i686-linux" = "46deb0a053b4910c4e68737a7b6556ff5360260c8f86652f91a0130445f5c949";
};
throwSystem = throw "Unsupported system: ${stdenv.system}";
arch = arch_table.${stdenv.system} or throwSystem;
in
stdenv.mkDerivation rec {
pname = "essentia-extractor";
version = "2.1_beta2";
src = fetchurl {
url = "https://ftp.acousticbrainz.org/pub/acousticbrainz/essentia-extractor-v${version}-${arch}.tar.gz";
sha256 = sha_table.${stdenv.system} or throwSystem;
};
unpackPhase = "unpackFile $src ; export sourceRoot=.";
installPhase = ''
mkdir -p $out/bin
cp streaming_extractor_music $out/bin
'';
meta = with lib; {
homepage = "https://acousticbrainz.org/download";
description = "AcousticBrainz audio feature extractor";
license = licenses.agpl3Plus;
maintainers = with maintainers; [ lovesegfault ];
platforms = [
"x86_64-linux"
"i686-linux"
];
mainProgram = "streaming_extractor_music";
};
}

View File

@@ -0,0 +1,51 @@
{
stdenv,
fetchFromGitHub,
pkg-config,
libGL,
glfw,
soil,
lib,
}:
stdenv.mkDerivation {
pname = "esshader";
version = "0-unstable-2020-08-09";
src = fetchFromGitHub {
owner = "cmcsun";
repo = "esshader";
rev = "506eb02f3de52d3d1f4d81ac9ee145655216dee5";
sha256 = "sha256-euxJw7CqOwi6Ndzalps37kDr5oOIL3tZICCfmxsujfk=";
};
postPatch = ''
substituteInPlace config.mk \
--replace "-lGLESv2" "-lGL -lGLESv2"
'';
nativeBuildInputs = [
pkg-config
];
buildInputs = [
libGL
glfw
soil
];
installPhase = ''
mkdir -p $out/bin
cp -a esshader $out/bin/
'';
meta = with lib; {
description = "Offline ShaderToy-compatible GLSL shader viewer using OpenGL ES 2.0";
homepage = "https://github.com/cmcsun/esshader";
license = licenses.mit;
maintainers = with maintainers; [ astro ];
platforms = lib.platforms.unix;
# never built on aarch64-darwin, x86_64-darwin since first introduction in nixpkgs
broken = stdenv.hostPlatform.isDarwin;
mainProgram = "esshader";
};
}