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,50 @@
{
lib,
python3,
fetchFromGitHub,
exabgp,
testers,
}:
python3.pkgs.buildPythonApplication rec {
pname = "exabgp";
version = "4.2.25";
format = "pyproject";
src = fetchFromGitHub {
owner = "Exa-Networks";
repo = "exabgp";
tag = version;
hash = "sha256-YBxRDcm4Qt44W3lBHDwdvZq2pXEujbqJDh24JbXthMg=";
};
nativeBuildInputs = with python3.pkgs; [
setuptools
];
pythonImportsCheck = [
"exabgp"
];
nativeCheckInputs = with python3.pkgs; [
pytestCheckHook
];
passthru.tests = {
version = testers.testVersion {
package = exabgp;
};
};
meta = with lib; {
description = "BGP swiss army knife of networking";
homepage = "https://github.com/Exa-Networks/exabgp";
changelog = "https://github.com/Exa-Networks/exabgp/blob/${src.tag}/CHANGELOG.rst";
license = licenses.bsd3;
mainProgram = "exabgp";
maintainers = with maintainers; [
hexa
raitobezarius
];
};
}

View File

@@ -0,0 +1,95 @@
{
lib,
stdenv,
fetchurl,
makeDesktopItem,
imagemagick,
p7zip,
wine,
writeShellScriptBin,
symlinkJoin,
use64 ? false,
}:
let
pname = "exact-audio-copy";
version = "1.8.0";
eac_exe = fetchurl {
url = "http://www.exactaudiocopy.de/eac-${lib.versions.majorMinor version}.exe";
sha256 = "205530cfbfdff82343858f38b0e709e586051fb8900ecd513d7992a3c1ef031b";
};
cygwin = fetchurl {
url = "https://mirrors.kernel.org/sourceware/cygwin/x86_64/release/cygwin/cygwin-3.6.1-1-x86_64.tar.xz";
sha256 = "45d1c76a15426209c20a8d4df813e94fbd17bd5d85ad4d742515ff432400143e";
};
patched_eac = stdenv.mkDerivation {
pname = "patched_eac";
inherit version;
nativeBuildInputs = [
imagemagick
p7zip
];
buildCommand = ''
mkdir -p $out
_tmp=$(mktemp -d)
cd $_tmp
7z x -aoa ${eac_exe}
chmod -R 755 .
cp ${cygwin} cygwin1.tar.xz
tar xf cygwin1.tar.xz
mv usr/bin/cygwin1.dll CDRDAO/
rm -rf usr
rm cygwin1.tar.xz
cp -r * $out
7z x EAC.exe
convert .rsrc/1033/ICON/29.ico -thumbnail 128x128 -alpha on -background none -flatten "$out/eac.ico.128.png"
'';
};
wrapper = writeShellScriptBin pname ''
export WINEPREFIX="''${EXACT_AUDIO_COPY_HOME:-"''${XDG_DATA_HOME:-"''${HOME}/.local/share"}/exact-audio-copy"}/wine"
export WINEARCH=${if use64 then "win64" else "win32"}
export WINEDLLOVERRIDES="mscoree=" # disable mono
export WINEDEBUG=-all
if [ ! -d "$WINEPREFIX" ] ; then
mkdir -p "$WINEPREFIX"
${wine}/bin/wineboot -u
fi
exec ${wine}/bin/wine ${patched_eac}/EAC.exe "$@"
'';
desktopItem = makeDesktopItem {
name = pname;
exec = pname;
comment = "Audio Grabber for CDs";
desktopName = "Exact Audio Copy";
categories = [
"Audio"
"AudioVideo"
];
icon = "${patched_eac}/eac.ico.128.png";
};
in
symlinkJoin {
name = "${pname}-${version}";
paths = [
wrapper
desktopItem
];
meta = with lib; {
description = "Precise CD audio grabber for creating perfect quality rips using CD and DVD drives";
homepage = "https://www.exactaudiocopy.de/";
changelog = "https://www.exactaudiocopy.de/en/index.php/resources/whats-new/whats-new/";
license = licenses.unfree;
maintainers = [ maintainers.brendanreis ];
platforms = wine.meta.platforms;
};
}

View File

@@ -0,0 +1,123 @@
{
stdenv,
lib,
fetchFromGitHub,
gobject-introspection,
makeWrapper,
wrapGAppsHook3,
gtk3,
gst_all_1,
python3,
gettext,
adwaita-icon-theme,
help2man,
keybinder3,
libnotify,
librsvg,
streamripper,
udisks,
webkitgtk_4_1,
iconTheme ? adwaita-icon-theme,
deviceDetectionSupport ? true,
documentationSupport ? true,
notificationSupport ? true,
scalableIconSupport ? true,
translationSupport ? true,
ipythonSupport ? false,
cdMetadataSupport ? false,
lastfmSupport ? false,
lyricsManiaSupport ? false,
multimediaKeySupport ? false,
musicBrainzSupport ? false,
podcastSupport ? false,
streamripperSupport ? false,
wikipediaSupport ? false,
}:
stdenv.mkDerivation rec {
pname = "exaile";
version = "4.1.4";
src = fetchFromGitHub {
owner = "exaile";
repo = "exaile";
rev = version;
sha256 = "sha256-iyK2txutlWe67CyfKuyesBrYQypkS5FOf1ZWUkRCq24=";
};
nativeBuildInputs = [
gobject-introspection
makeWrapper
wrapGAppsHook3
]
++ lib.optionals documentationSupport [
help2man
python3.pkgs.sphinx
python3.pkgs.sphinx-rtd-theme
]
++ lib.optional translationSupport gettext;
buildInputs = [
iconTheme
gtk3
]
++ (with gst_all_1; [
gstreamer
gst-plugins-base
gst-plugins-good
gst-plugins-bad
gst-plugins-ugly
gst-libav
])
++ (with python3.pkgs; [
berkeleydb
dbus-python
mutagen
pygobject3
pycairo
gst-python
])
++ lib.optional deviceDetectionSupport udisks
++ lib.optional notificationSupport libnotify
++ lib.optional scalableIconSupport librsvg
++ lib.optional ipythonSupport python3.pkgs.ipython
++ lib.optional cdMetadataSupport python3.pkgs.discid
++ lib.optional lastfmSupport python3.pkgs.pylast
++ lib.optional lyricsManiaSupport python3.pkgs.lxml
++ lib.optional multimediaKeySupport keybinder3
++ lib.optional (musicBrainzSupport || cdMetadataSupport) python3.pkgs.musicbrainzngs
++ lib.optional podcastSupport python3.pkgs.feedparser
++ lib.optional wikipediaSupport webkitgtk_4_1;
nativeCheckInputs = with python3.pkgs; [
pytest
];
makeFlags = [
"PREFIX=${placeholder "out"}"
];
doCheck = true;
preCheck = ''
substituteInPlace Makefile --replace "PYTHONPATH=$(shell pwd)" "PYTHONPATH=$PYTHONPATH:$(shell pwd)"
export PYTEST="py.test"
export XDG_CACHE_HOME=$(mktemp -d)
'';
postInstall = ''
wrapProgram $out/bin/exaile \
--set PYTHONPATH $PYTHONPATH \
--prefix PATH : ${
lib.makeBinPath ([ python3 ] ++ lib.optionals streamripperSupport [ streamripper ])
}
'';
meta = with lib; {
homepage = "https://www.exaile.org/";
description = "Music player with a simple interface and powerful music management capabilities";
mainProgram = "exaile";
license = licenses.gpl2Only;
maintainers = with maintainers; [ ryneeverett ];
platforms = platforms.all;
};
}

View File

@@ -0,0 +1,67 @@
{
lib,
stdenv,
rustPlatform,
fetchFromGitHub,
just,
libcosmicAppHook,
pciutils,
usbutils,
util-linux,
nix-update-script,
}:
rustPlatform.buildRustPackage (finalAttrs: {
pname = "examine";
version = "1.0.0";
src = fetchFromGitHub {
owner = "cosmic-utils";
repo = "examine";
tag = finalAttrs.version;
hash = "sha256-9xYUJeAYqnDYZzjWM21HuSNDY+ZcUlTdj/g/MUH2A54=";
};
cargoHash = "sha256-BcBCPkahV6+xw+K+Vk4QjwX5QI1j4hNkD9YTyL24iRA=";
nativeBuildInputs = [
just
libcosmicAppHook
];
dontUseJustBuild = true;
dontUseJustCheck = true;
justFlags = [
"--set"
"prefix"
(placeholder "out")
"--set"
"bin-src"
"target/${stdenv.hostPlatform.rust.cargoShortTarget}/release/examine"
];
preFixup = ''
libcosmicAppWrapperArgs+=(--prefix PATH : ${
lib.makeBinPath [
pciutils
usbutils
util-linux
]
})
'';
env.VERGEN_GIT_SHA = finalAttrs.version;
passthru.updateScript = nix-update-script { };
meta = {
changelog = "https://github.com/cosmic-utils/examine/releases/tag/${finalAttrs.version}";
description = "System information viewer for the COSMIC Desktop";
homepage = "https://github.com/cosmic-utils/examine";
license = lib.licenses.gpl3Only;
mainProgram = "examine";
maintainers = with lib.maintainers; [ HeitorAugustoLN ];
platforms = lib.platforms.linux;
sourceProvenance = [ lib.sourceTypes.fromSource ];
};
})

View File

@@ -0,0 +1,65 @@
{
cmake,
doxygen,
fetchFromGitHub,
lib,
jrl-cmakemodules,
pkg-config,
pythonSupport ? false,
python3Packages,
stdenv,
}:
stdenv.mkDerivation (finalAttrs: {
pname = "example-robot-data";
version = "4.3.0";
src = fetchFromGitHub {
owner = "Gepetto";
repo = "example-robot-data";
tag = "v${finalAttrs.version}";
hash = "sha256-i5YU5lcbB3gm8/YrRRiE2NDcLEq7+eF7GtIrJ1DF1cU=";
};
outputs = [
"out"
"doc"
];
strictDeps = true;
nativeBuildInputs = [
cmake
doxygen
pkg-config
]
++ lib.optionals pythonSupport [
python3Packages.python
python3Packages.pythonImportsCheckHook
];
propagatedBuildInputs = [
jrl-cmakemodules
]
++ lib.optionals pythonSupport [ python3Packages.pinocchio ];
cmakeFlags = [ (lib.cmakeBool "BUILD_PYTHON_INTERFACE" pythonSupport) ];
doCheck = true;
# The package expect to find an `example-robot-data/robots` folder somewhere
# either in install prefix or in the sources
# where it can find the meshes for unit tests
preCheck = "ln -s source ../../example-robot-data";
pythonImportsCheck = [ "example_robot_data" ];
meta = with lib; {
description = "Set of robot URDFs for benchmarking and developed examples";
homepage = "https://github.com/Gepetto/example-robot-data";
license = licenses.bsd3;
maintainers = with maintainers; [
nim65s
wegank
];
platforms = platforms.unix;
};
})

View File

@@ -0,0 +1,78 @@
{
lib,
stdenv,
buildGoModule,
fetchFromGitHub,
fetchNpmDeps,
npmHooks,
nodejs,
withUI ? true,
}:
buildGoModule (finalAttrs: {
pname = "exatorrent";
version = "1.3.0";
src = fetchFromGitHub {
owner = "varbhat";
repo = "exatorrent";
tag = "v${finalAttrs.version}";
hash = "sha256-FvL3ekpj1HwARgY3vj0xAwCgDBa97OqtFFY4rSBKr50=";
};
nativeBuildInputs = lib.optionals withUI [
npmHooks.npmConfigHook
nodejs
];
npmRoot = "internal/web";
npmDeps =
if withUI then
fetchNpmDeps {
name = "${finalAttrs.pname}-${finalAttrs.version}-npm-deps";
inherit (finalAttrs) src;
sourceRoot = "${finalAttrs.src.name}/${finalAttrs.npmRoot}";
hash = "sha256-eNrBKTW4KlLNf/Y9NTvGt5r28MG7SLGzUi+p9mOyrmI=";
}
else
null;
preBuild = lib.optionalString withUI ''
pushd "$npmRoot"
npm run build
popd
'';
# I dislike the fact that buildGoModule's fetcher FOD automatically inherits some attrs from the non-FOD part
overrideModAttrs = prev: {
nativeBuildInputs = lib.filter (e: e != npmHooks.npmConfigHook) prev.nativeBuildInputs;
preBuild = "";
};
vendorHash = "sha256-fE+GVQ2HAfElO1UDmDMeu2ca7t5yNs83CXhqgT0t1Js=";
tags = lib.optionals (!withUI) [ "noui" ];
ldflags = [
"-s"
"-w"
]
++ lib.optionals stdenv.hostPlatform.isGnu [
# upstream also tries to compile statically if possible
"-extldflags '-static'"
];
buildInputs = lib.optionals stdenv.hostPlatform.isGnu [
stdenv.cc.libc.static
];
meta = {
changelog = "https://github.com/varbhat/exatorrent/releases/tag/${finalAttrs.src.tag}";
description = "Self-hostable, easy-to-use, lightweight, and feature-rich torrent client written in Go";
homepage = "https://github.com/varbhat/exatorrent/";
license = lib.licenses.gpl3Only;
mainProgram = "exatorrent";
maintainers = with lib.maintainers; [ tomasajt ];
};
})

View File

@@ -0,0 +1,18 @@
diff --git a/package-lock.json b/package-lock.json
index 89dd54f..2f364e4 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -805,9 +805,10 @@
"integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
},
"node_modules/nan": {
- "version": "2.18.0",
- "resolved": "https://registry.npmjs.org/nan/-/nan-2.18.0.tgz",
- "integrity": "sha512-W7tfG7vMOGtD30sHoZSSc/JVYiyDPEyQVso/Zz+/uQd0B0L46gtC+pHha5FFMRpil6fm/AoEcRWyOVi4+E/f8w=="
+ "version": "2.22.0",
+ "resolved": "https://registry.npmjs.org/nan/-/nan-2.22.0.tgz",
+ "integrity": "sha512-nbajikzWTMwsW+eSsNm3QwlOs7het9gGJU5dDZzRTQGk03vyBOauxgI4VakDzE0PtsGTmXPsXTbbjVhRwR5mpw==",
+ "license": "MIT"
},
"node_modules/node-fetch": {
"version": "2.7.0",

View File

@@ -0,0 +1,44 @@
{
lib,
buildNpmPackage,
fetchFromGitHub,
cairo,
pango,
pkg-config,
}:
buildNpmPackage {
pname = "excalidraw_export";
version = "1.1.0";
src = fetchFromGitHub {
owner = "Timmmm";
repo = "excalidraw_export";
rev = "320c8be92f468e5e19564f83e37709b80afc0e46";
hash = "sha256-E5kYI8+hzObd2WNVBd0aQDKMH1Sns539loCQfClJs1Q=";
};
patches = [
# for compatibility with nodejs_22
# generated by running: `npm update nan`
./bump-nan.patch
];
npmDepsHash = "sha256-bU+q83Pmw6+mCF5rTR0DyYstUYVN+YxH9T9H7ZA15so=";
npmBuildScript = "compile";
buildInputs = [
cairo
pango
];
nativeBuildInputs = [ pkg-config ];
meta = {
description = "CLI to export Excalidraw drawings to SVG and PDF";
homepage = "https://github.com/Timmmm/excalidraw_export";
license = lib.licenses.mit;
maintainers = with lib.maintainers; [ venikx ];
mainProgram = "excalidraw_export";
};
}

View File

@@ -0,0 +1,49 @@
{
lib,
stdenvNoCC,
fetchFromGitHub,
woff2,
}:
stdenvNoCC.mkDerivation (finalAttrs: {
pname = "excalifont";
version = "0.18.0";
src = fetchFromGitHub {
owner = "excalidraw";
repo = "excalidraw";
tag = "v${finalAttrs.version}";
hash = "sha256-Nfzh5rNvHP7R418PP44FXD7xNenzmzMHu7RLAdJsE/c=";
};
nativeBuildInputs = [
woff2
];
buildPhase = ''
runHook preBuild
for file in packages/excalidraw/fonts/Excalifont/*.woff2; do
woff2_decompress $file
done
runHook postBuild
'';
installPhase = ''
runHook preInstall
install -D -m 444 packages/excalidraw/fonts/Excalifont/*.ttf -t $out/share/fonts/ttf
install -D -m 444 packages/excalidraw/fonts/Excalifont/*.woff2 -t $out/share/fonts/woff2
runHook postInstall
'';
meta = {
homepage = "https://plus.excalidraw.com/excalifont";
description = "Font based on the original handwritten Virgil font carefully curated to improve legibility while preserving its hand-drawn nature";
platforms = lib.platforms.all;
maintainers = [ ];
license = lib.licenses.ofl;
};
})

View File

@@ -0,0 +1,40 @@
{
lib,
fetchFromGitHub,
python3Packages,
expect,
}:
python3Packages.buildPythonApplication {
pname = "exe2hex";
version = "1.5.2-unstable-2020-04-27";
pyproject = false;
src = fetchFromGitHub {
owner = "g0tmi1k";
repo = "exe2hex";
rev = "e563b353306a0f34d96150b8992f543931f907ea";
hash = "sha256-wriB1k45QWNCIsSb30Z3IilTGZqnc+X1+qkRrxgDxzU=";
};
propagatedBuildInputs = [
expect
];
postPatch = ''
substituteInPlace exe2hex.py \
--replace-fail "/usr/bin/expect" "${lib.getExe expect}"
'';
postInstall = ''
install -Dm 555 exe2hex.py $out/bin/exe2hex
'';
meta = with lib; {
description = "Inline file transfer using in-built Windows tools";
homepage = "https://github.com/g0tmi1k/exe2hex";
mainProgram = "exe2hex";
license = licenses.mit;
maintainers = with maintainers; [ d3vil0p3r ];
};
}

View File

@@ -0,0 +1,78 @@
{
lib,
fetchFromGitHub,
python3Packages,
xorg,
}:
python3Packages.buildPythonApplication rec {
pname = "exegol";
version = "5.1.2";
pyproject = true;
src = fetchFromGitHub {
owner = "ThePorgs";
repo = "Exegol";
tag = version;
hash = "sha256-eoOCVYKHWPsaSxdOF3FTg6dS5JdTSlfNTM6Hrf6KTlc=";
};
build-system = with python3Packages; [ pdm-backend ];
pythonRelaxDeps = [
"rich"
"argcomplete"
"supabase"
];
dependencies =
with python3Packages;
[
argcomplete
cryptography
docker
gitpython
ifaddr
pydantic
pyjwt
pyyaml
requests
rich
supabase
]
++ pyjwt.optional-dependencies.crypto
++ [ xorg.xhost ]
++ lib.optional (!stdenv.hostPlatform.isLinux) tzlocal;
doCheck = true;
pythonImportsCheck = [ "exegol" ];
meta = {
description = "Fully featured and community-driven hacking environment";
longDescription = ''
Exegol is a community-driven hacking environment, powerful and yet
simple enough to be used by anyone in day to day engagements. Exegol is
the best solution to deploy powerful hacking environments securely,
easily, professionally. Exegol fits pentesters, CTF players, bug bounty
hunters, researchers, beginners and advanced users, defenders, from
stylish macOS users and corporate Windows pros to UNIX-like power users.
'';
homepage = "https://github.com/ThePorgs/Exegol";
changelog = "https://github.com/ThePorgs/Exegol/releases/tag/${src.tag}";
license = with lib.licenses; [
gpl3Only
{
fullName = "Exegol Software License (ESL) - Version 1.0";
url = "https://docs.exegol.com/legal/software-license";
# Please use exegol4 if you prefer to avoid the unfree version of Exegol.
free = false;
redistributable = false;
}
];
mainProgram = "exegol";
maintainers = with lib.maintainers; [
_0b11stan
charB66
];
};
}

View File

@@ -0,0 +1,60 @@
{
fetchPypi,
lib,
python3Packages,
xorg,
}:
python3Packages.buildPythonApplication rec {
pname = "exegol";
version = "4.3.11";
pyproject = true;
src = fetchPypi {
inherit pname version;
hash = "sha256-+LnZSFRW7EvG+cPwMStgO6qD4AjOGkLzCarXBrW3Aak=";
};
build-system = with python3Packages; [ pdm-backend ];
pythonRelaxDeps = [
"rich"
"argcomplete"
];
dependencies =
with python3Packages;
[
pyyaml
gitpython
docker
requests
rich
argcomplete
tzlocal
]
++ [ xorg.xhost ];
doCheck = true;
pythonImportsCheck = [ "exegol" ];
meta = {
description = "Fully featured and community-driven hacking environment";
longDescription = ''
Exegol is a community-driven hacking environment, powerful and yet
simple enough to be used by anyone in day to day engagements. Exegol is
the best solution to deploy powerful hacking environments securely,
easily, professionally. Exegol fits pentesters, CTF players, bug bounty
hunters, researchers, beginners and advanced users, defenders, from
stylish macOS users and corporate Windows pros to UNIX-like power users.
'';
homepage = "https://github.com/ThePorgs/Exegol";
changelog = "https://github.com/ThePorgs/Exegol/releases/tag/${version}";
license = lib.licenses.gpl3Only;
mainProgram = "exegol";
maintainers = with lib.maintainers; [
_0b11stan
charB66
];
};
}

View File

@@ -0,0 +1,48 @@
{
lib,
stdenv,
fetchurl,
expat,
zlib,
boost,
libiconv,
}:
stdenv.mkDerivation rec {
pname = "exempi";
version = "2.6.6";
src = fetchurl {
url = "https://libopenraw.freedesktop.org/download/${pname}-${version}.tar.bz2";
sha256 = "sha256-dRO35Cw72QpY132TjGDS6Hxo+BZG58uLEtcf4zQ5HG8=";
};
configureFlags = [
"--with-boost=${boost.dev}"
]
++ lib.optionals (!doCheck) [
"--enable-unittest=no"
];
buildInputs = [
expat
zlib
boost
]
++ lib.optionals stdenv.hostPlatform.isDarwin [
libiconv
];
doCheck = stdenv.hostPlatform.isLinux && stdenv.hostPlatform.is64bit;
dontDisableStatic = doCheck;
enableParallelBuilding = true;
meta = with lib; {
description = "Implementation of XMP (Adobe's Extensible Metadata Platform)";
mainProgram = "exempi";
homepage = "https://libopenraw.freedesktop.org/exempi/";
platforms = platforms.linux ++ platforms.darwin;
license = licenses.bsd3;
};
}

View File

@@ -0,0 +1,72 @@
{
lib,
stdenv,
alsa-lib,
appstream-glib,
cargo,
desktop-file-utils,
fetchFromGitHub,
glib,
gtk4,
libadwaita,
meson,
ninja,
nix-update-script,
pkg-config,
rustPlatform,
rustc,
wrapGAppsHook4,
}:
stdenv.mkDerivation (finalAttrs: {
pname = "exercise-timer";
version = "1.8.5";
src = fetchFromGitHub {
owner = "mfep";
repo = "exercise-timer";
tag = "v${finalAttrs.version}";
hash = "sha256-yparZ9XmHkjwvgpnERpi8hvRXdb8R+kAyFOFl+exXb4=";
fetchLFS = true;
};
cargoDeps = rustPlatform.fetchCargoVendor {
inherit (finalAttrs) pname version src;
hash = "sha256-JObzeiQHEGIDjOung3o8dpaXVcOoJS2v1hyrcS1fqcI=";
};
nativeBuildInputs = [
appstream-glib
cargo
desktop-file-utils
glib
gtk4
meson
ninja
pkg-config
rustPlatform.cargoSetupHook
rustc
wrapGAppsHook4
];
buildInputs = [
alsa-lib
libadwaita
];
doCheck = stdenv.buildPlatform.canExecute stdenv.hostPlatform;
passthru = {
updateScript = nix-update-script { };
};
meta = {
description = "Timer app for high intensity interval training";
homepage = "https://apps.gnome.org/Hiit/";
changelog = "https://github.com/mfep/exercise-timer/blob/v${finalAttrs.version}/CHANGELOG.md";
license = lib.licenses.gpl3Only;
teams = [ lib.teams.gnome-circle ];
mainProgram = "hiit";
platforms = lib.platforms.linux;
};
})

View File

@@ -0,0 +1,47 @@
{
lib,
buildGoModule,
installShellFiles,
fetchFromGitHub,
nix-update-script,
}:
buildGoModule rec {
pname = "exercism";
version = "3.5.8";
src = fetchFromGitHub {
owner = "exercism";
repo = "cli";
tag = "v${version}";
hash = "sha256-vYbOagP3RwqD2+x0Mvve66Xm88jeRVzHU7nsN432j6k=";
};
vendorHash = "sha256-xY3C3emqtPIKyxIN9aEkrLXhTxWNmo0EJXNZVtbtIvs=";
doCheck = false;
subPackages = [ "./exercism" ];
nativeBuildInputs = [ installShellFiles ];
passthru.updateScript = nix-update-script { };
postInstall = ''
installShellCompletion --cmd exercism \
--bash shell/exercism_completion.bash \
--fish shell/exercism.fish \
--zsh shell/exercism_completion.zsh
'';
meta = with lib; {
inherit (src.meta) homepage;
description = "Go based command line tool for exercism.io";
license = licenses.mit;
maintainers = [
maintainers.rbasso
maintainers.nobbz
];
mainProgram = "exercism";
};
}

View File

@@ -0,0 +1,34 @@
{
lib,
stdenv,
fetchFromGitHub,
autoreconfHook,
pkg-config,
fuse,
}:
stdenv.mkDerivation rec {
pname = "exfat";
version = "1.4.0";
src = fetchFromGitHub {
owner = "relan";
repo = "exfat";
rev = "v${version}";
sha256 = "sha256-5m8fiItEOO6piR132Gxq6SHOPN1rAFTuTVE+UI0V00k=";
};
nativeBuildInputs = [
autoreconfHook
pkg-config
];
buildInputs = [ fuse ];
meta = with lib; {
description = "Free exFAT file system implementation";
inherit (src.meta) homepage;
license = licenses.gpl2Plus;
maintainers = with maintainers; [ dywedir ];
platforms = platforms.unix;
};
}

View File

@@ -0,0 +1,34 @@
{
lib,
stdenv,
fetchFromGitHub,
pkg-config,
autoreconfHook,
file,
}:
stdenv.mkDerivation rec {
pname = "exfatprogs";
version = "1.2.9";
src = fetchFromGitHub {
owner = "exfatprogs";
repo = "exfatprogs";
rev = version;
sha256 = "sha256-EENBlf5beuLJ++N7YThxzz2I/FXzb02by3KOUPOuEV4=";
};
nativeBuildInputs = [
pkg-config
autoreconfHook
file
];
meta = with lib; {
description = "exFAT filesystem userspace utilities";
homepage = "https://github.com/exfatprogs/exfatprogs";
license = licenses.gpl2Plus;
maintainers = [ ];
platforms = platforms.linux;
};
}

View File

@@ -0,0 +1,37 @@
{
lib,
buildGoModule,
fetchFromGitHub,
nix-update-script,
}:
buildGoModule rec {
pname = "exhaustive";
version = "0.12.0";
src = fetchFromGitHub {
owner = "nishanths";
repo = "exhaustive";
rev = "v${version}";
hash = "sha256-OLIdtKzCqnBkzdUSIl+UlENeMl3zrBE47pLWPg+6qXw=";
};
vendorHash = "sha256-DyN2z6+lA/163k6TTQZ+ypm9s2EV93zvSo/yKQZXvCg=";
ldflags = [
"-s"
"-w"
];
passthru = {
updateScript = nix-update-script { };
};
meta = with lib; {
description = "Check exhaustiveness of switch statements of enum-like constants in Go code";
mainProgram = "exhaustive";
homepage = "https://github.com/nishanths/exhaustive";
license = licenses.bsd2;
maintainers = with maintainers; [ meain ];
};
}

View File

@@ -0,0 +1,59 @@
{
lib,
python3Packages,
fetchFromGitHub,
meson,
ninja,
pkg-config,
gobject-introspection,
wrapGAppsHook4,
desktop-file-utils,
libadwaita,
}:
python3Packages.buildPythonApplication rec {
pname = "exhibit";
version = "1.2.0";
pyproject = false; # Built with meson
src = fetchFromGitHub {
owner = "Nokse22";
repo = "Exhibit";
rev = "v${version}";
hash = "sha256-yNS6q7XbWda2+so9QRS/c4uYaVPo7b4JCite5nzc3Eo=";
};
nativeBuildInputs = [
meson
ninja
pkg-config
gobject-introspection
wrapGAppsHook4
desktop-file-utils
];
buildInputs = [ libadwaita ];
dependencies = with python3Packages; [
pygobject3
f3d
];
dontWrapGApps = true;
preFixup = ''
makeWrapperArgs+=("''${gappsWrapperArgs[@]}")
'';
meta = {
description = "3D model viewer for the GNOME desktop powered by f3d";
homepage = "https://github.com/Nokse22/Exhibit";
license = with lib.licenses; [
gpl3Plus
cc0
];
mainProgram = "exhibit";
maintainers = with lib.maintainers; [ aleksana ];
platforms = lib.platforms.linux;
};
}

View File

@@ -0,0 +1,54 @@
{
lib,
stdenv,
fetchFromGitHub,
fetchpatch,
autoreconfHook,
pkg-config,
libexif,
popt,
libintl,
}:
stdenv.mkDerivation rec {
pname = "exif";
version = "0.6.22";
src = fetchFromGitHub {
owner = "libexif";
repo = "exif";
rev = "exif-${builtins.replaceStrings [ "." ] [ "_" ] version}-release";
sha256 = "1xlb1gdwxm3rmw7vlrynhvjp9dkwmvw23mxisdbdmma7ah2nda3i";
};
patches = [
(fetchpatch {
name = "CVE-2021-27815.part-1.patch";
url = "https://github.com/libexif/exif/commit/f6334d9d32437ef13dc902f0a88a2be0063d9d1c.patch";
sha256 = "0mfx7l8w3w1c2mn5h5d6s7gdfyd91wnml8v0f19v5sdn70hx5aa4";
})
(fetchpatch {
name = "CVE-2021-27815.part-2.patch";
url = "https://github.com/libexif/exif/commit/eb84b0e3c5f2a86013b6fcfb800d187896a648fa.patch";
sha256 = "11lyvy20maisiyhxgxvm85v5l5ba7p0bpd4m0g4ryli32mrwwy0l";
})
];
nativeBuildInputs = [
autoreconfHook
pkg-config
];
buildInputs = [
libexif
popt
libintl
];
meta = with lib; {
homepage = "https://libexif.github.io";
description = "Utility to read and manipulate EXIF data in digital photographs";
platforms = platforms.unix;
license = licenses.lgpl21Plus;
mainProgram = "exif";
};
}

View File

@@ -0,0 +1,44 @@
{
maven,
fetchFromGitHub,
lib,
makeWrapper,
jre,
}:
maven.buildMavenPackage rec {
pname = "exificient";
version = "1.0.7";
src = fetchFromGitHub {
owner = "EXIficient";
repo = "exificient";
rev = "exificient-${version}";
hash = "sha256-XrlZQf2BamYw8u1S2qQ6jV9mgyCEjBxKqPZCXMJzXmc=";
};
mvnHash = "sha256-/72Pi8WbKhPXu7Zb9r30znY1FHJc7FM42f7uQJqJnWo=";
mvnParameters = "package assembly:single -Dmaven.test.skip=true";
nativeBuildInputs = [ makeWrapper ];
installPhase = ''
runHook preInstall
ls -al target/classes/com/siemens/
mkdir -p $out/bin $out/share/exificient
install -Dm644 target/exificient-jar-with-dependencies.jar $out/share/exificient
makeWrapper ${jre}/bin/java $out/bin/exificient \
--add-flags "-classpath $out/share/exificient/exificient-jar-with-dependencies.jar com.siemens.ct.exi.main.cmd.EXIficientCMD"
runHook postInstall
'';
meta = {
description = "Java implementation of the W3C Efficient Extensible Interchange (EXI) format specification";
homepage = "http://exificient.github.io/";
license = lib.licenses.mit;
maintainers = with lib.maintainers; [ samw ];
mainProgram = "exificient";
};
}

View File

@@ -0,0 +1,33 @@
{
lib,
buildGoModule,
fetchFromGitHub,
}:
buildGoModule rec {
pname = "exiflooter";
version = "1.0.0";
src = fetchFromGitHub {
owner = "aydinnyunus";
repo = "exiflooter";
rev = "v${version}";
hash = "sha256-E7fxV+w8N9xi8UuaKBTZBzPjIHJt9/U+oVIu2+Ond+Y=";
};
vendorHash = "sha256-uV7O2H3gPQ+kFdEHLgM+v+TXn+87QfFwOAEQpnKQIQk=";
ldflags = [
"-s"
"-w"
];
meta = {
description = "Finds geolocation on all image urls and directories";
homepage = "https://github.com/aydinnyunus/exiflooter";
changelog = "https://github.com/aydinnyunus/exifLooter/releases/tag/v${version}";
license = lib.licenses.asl20;
maintainers = with lib.maintainers; [ octodi ];
mainProgram = "exiflooter";
};
}

View File

@@ -0,0 +1,35 @@
{
lib,
stdenv,
fetchFromGitHub,
}:
stdenv.mkDerivation {
pname = "exifprobe";
version = "unstable-2018-06-19";
src = fetchFromGitHub {
owner = "hfiguiere";
repo = "exifprobe";
rev = "ce1ea2bc3dbbe8092b26f41cd89831cafe633d69";
sha256 = "1c1fhc0v1m452lgnfcijnvrc0by06qfbhn3zkliqi60kv8l2isbp";
};
CFLAGS = [ "-O2" ];
installFlags = [ "DESTDIR=$(out)" ];
postInstall = ''
mv $out/usr/bin $out/bin
mv $out/usr/share $out/share
rm -r $out/usr
'';
meta = with lib; {
description = "Tool for reading EXIF data from image files produced by digital cameras";
homepage = "https://github.com/hfiguiere/exifprobe";
license = licenses.bsd2;
maintainers = with maintainers; [ siraben ];
platforms = platforms.unix;
};
}

View File

@@ -0,0 +1,35 @@
{
lib,
stdenv,
fetchurl,
}:
stdenv.mkDerivation rec {
pname = "exiftags";
version = "1.01";
src = fetchurl {
url = "https://johnst.org/sw/exiftags/exiftags-${version}.tar.gz";
sha256 = "194ifl6hybx2a5x8jhlh9i56k3qfc6p2l72z0ii1b7v0bzg48myr";
};
patchPhase = ''
sed -i -e s@/usr/local@$out@ Makefile
'';
preInstall = ''
mkdir -p $out/bin $out/man/man1
'';
meta = {
homepage = "http://johnst.org/sw/exiftags/";
description = "Displays EXIF data from JPEG files";
license = lib.licenses.free;
maintainers = [ ];
platforms = with lib.platforms; unix;
knownVulnerabilities = [
"CVE-2023-50671"
"CVE-2024-42851"
];
};
}

View File

@@ -0,0 +1,207 @@
{
coreutils,
db,
fetchurl,
openssl,
pcre2,
perl,
pkg-config,
lib,
stdenv,
libxcrypt,
procps,
killall,
enableLDAP ? false,
openldap,
enableMySQL ? false,
libmysqlclient,
zlib,
enablePgSQL ? false,
libpq,
enableSqlite ? false,
sqlite,
enableAuthDovecot ? false,
dovecot,
enablePAM ? false,
pam,
enableSPF ? true,
libspf2,
enableDMARC ? true,
opendmarc,
enableRedis ? false,
hiredis,
enableJSON ? false,
jansson,
enableSRS ? false,
}:
let
perl' = perl.withPackages (p: with p; [ FileFcntlLock ]);
in
stdenv.mkDerivation rec {
pname = "exim";
version = "4.98.2";
src = fetchurl {
url = "https://ftp.exim.org/pub/exim/exim4/${pname}-${version}.tar.xz";
hash = "sha256-iLjopnwdtswLHRSBYao25mL0yi/vJdW282lNSQ5C3K4=";
};
enableParallelBuilding = true;
nativeBuildInputs = [ pkg-config ];
buildInputs = [
coreutils
db
openssl
perl'
pcre2
libxcrypt
]
++ lib.optional enableLDAP openldap
++ lib.optionals enableMySQL [
libmysqlclient
zlib
]
++ lib.optional enablePgSQL libpq
++ lib.optionals enableSqlite [
sqlite
sqlite.dev
zlib
]
++ lib.optional enableAuthDovecot dovecot
++ lib.optional enablePAM pam
++ lib.optional enableSPF libspf2
++ lib.optional enableDMARC opendmarc
++ lib.optional enableRedis hiredis
++ lib.optional enableJSON jansson;
configurePhase = ''
runHook preConfigure
sed '
s:^\(BIN_DIRECTORY\)=.*:\1='"$out"'/bin:
s:^\(CONFIGURE_FILE\)=.*:\1=/etc/exim.conf:
s:^\(EXIM_USER\)=.*:\1=ref\:nobody:
s:^\(SPOOL_DIRECTORY\)=.*:\1=/exim-homeless-shelter:
s:^# \(TRANSPORT_LMTP\)=.*:\1=yes:
s:^# \(SUPPORT_MAILDIR\)=.*:\1=yes:
s:^EXIM_MONITOR=.*$:# &:
s:^\(FIXED_NEVER_USERS\)=root$:\1=0:
s:^# \(WITH_CONTENT_SCAN\)=.*:\1=yes:
s:^# \(AUTH_PLAINTEXT\)=.*:\1=yes:
s:^# \(USE_OPENSSL\)=.*:\1=yes:
s:^# \(USE_OPENSSL_PC=openssl\)$:\1:
s:^# \(LOG_FILE_PATH=syslog\)$:\1:
s:^# \(HAVE_IPV6=yes\)$:\1:
s:^# \(CHOWN_COMMAND\)=.*:\1=${coreutils}/bin/chown:
s:^# \(CHGRP_COMMAND\)=.*:\1=${coreutils}/bin/chgrp:
s:^# \(CHMOD_COMMAND\)=.*:\1=${coreutils}/bin/chmod:
s:^# \(MV_COMMAND\)=.*:\1=${coreutils}/bin/mv:
s:^# \(RM_COMMAND\)=.*:\1=${coreutils}/bin/rm:
s:^# \(TOUCH_COMMAND\)=.*:\1=${coreutils}/bin/touch:
s:^# \(PERL_COMMAND\)=.*:\1=${perl'}/bin/perl:
s:^# \(LOOKUP_DSEARCH=yes\)$:\1:
${lib.optionalString enableLDAP ''
s:^# \(LDAP_LIB_TYPE=OPENLDAP2\)$:\1:
s:^# \(LOOKUP_LDAP=yes\)$:\1:
s:^\(LOOKUP_LIBS\)=\(.*\):\1=\2 -lldap -llber:
s:^# \(LOOKUP_LIBS\)=.*:\1=-lldap -llber:
''}
${lib.optionalString enableMySQL ''
s:^# \(LOOKUP_MYSQL=yes\)$:\1:
s:^# \(LOOKUP_MYSQL_PC=libmysqlclient\)$:\1:
s:^\(LOOKUP_LIBS\)=\(.*\):\1=\2 -lmysqlclient -L${libmysqlclient}/lib/mysql -lssl -lm -lpthread -lz:
s:^# \(LOOKUP_LIBS\)=.*:\1=-lmysqlclient -L${libmysqlclient}/lib/mysql -lssl -lm -lpthread -lz:
s:^# \(LOOKUP_INCLUDE\)=.*:\1=-I${libmysqlclient.dev}/include/mysql/:
''}
${lib.optionalString enablePgSQL ''
s:^# \(LOOKUP_PGSQL=yes\)$:\1:
s:^\(LOOKUP_LIBS\)=\(.*\):\1=\2 -lpq -L${libpq}/lib:
s:^# \(LOOKUP_LIBS\)=.*:\1=-lpq -L${libpq}/lib:
''}
${lib.optionalString enableSqlite ''
s:^# \(LOOKUP_SQLITE=yes\)$:\1:
s:^# \(LOOKUP_SQLITE_PC=sqlite3\)$:\1:
s:^\(LOOKUP_LIBS\)=\(.*\):\1=\2 -lsqlite3 -L${sqlite}/lib:
s:^# \(LOOKUP_LIBS\)=.*:\1=-lsqlite3 -L${sqlite}/lib -lssl -lm -lpthread -lz:
s:^# \(LOOKUP_INCLUDE\)=.*:\1=-I${sqlite.dev}/include:
''}
${lib.optionalString enableAuthDovecot ''
s:^# \(AUTH_DOVECOT\)=.*:\1=yes:
''}
${lib.optionalString enableSRS ''
s:^# \(SUPPORT_SRS\)=.*:\1=yes:
''}
${lib.optionalString enablePAM ''
s:^# \(SUPPORT_PAM\)=.*:\1=yes:
s:^\(EXTRALIBS_EXIM\)=\(.*\):\1=\2 -lpam:
s:^# \(EXTRALIBS_EXIM\)=.*:\1=-lpam:
''}
${lib.optionalString enableSPF ''
s:^# \(SUPPORT_SPF\)=.*:\1=yes:
s:^# \(LDFLAGS += -lspf2\):\1:
''}
${lib.optionalString enableDMARC ''
s:^# \(SUPPORT_DMARC\)=.*:\1=yes:
s:^# \(LDFLAGS += -lopendmarc\):\1:
''}
${lib.optionalString enableRedis ''
s:^# \(LOOKUP_REDIS=yes\)$:\1:
s:^\(LOOKUP_LIBS\)=\(.*\):\1=\2 -lhiredis -L${hiredis}/lib/hiredis:
s:^# \(LOOKUP_LIBS\)=.*:\1=-lhiredis -L${hiredis}/lib/hiredis:
s:^\(LOOKUP_INCLUDE\)=\(.*\):\1=\2 -I${hiredis}/include/hiredis/:
s:^# \(LOOKUP_INCLUDE\)=.*:\1=-I${hiredis}/include/hiredis/:
''}
${lib.optionalString enableJSON ''
s:^# \(LOOKUP_JSON=yes\)$:\1:
s:^\(LOOKUP_LIBS\)=\(.*\):\1=\2 -ljansson -L${jansson}/lib:
s:^# \(LOOKUP_LIBS\)=.*:\1=-ljansson -L${jansson}/lib:
s:^\(LOOKUP_INCLUDE\)=\(.*\):\1=\2 -I${jansson}/include:
s:^# \(LOOKUP_INCLUDE\)=.*:\1=-I${jansson}/include:
''}
#/^\s*#.*/d
#/^\s*$/d
' < src/EDITME > Local/Makefile
{
echo EXIWHAT_PS_CMD=${procps}/bin/ps
echo EXIWHAT_MULTIKILL_CMD=${killall}/bin/killall
} >> Local/Makefile
runHook postConfigure
'';
installPhase = ''
runHook preInstall
mkdir -p $out/bin $out/share/man/man8
cp doc/exim.8 $out/share/man/man8
( cd build-Linux-*
cp exicyclog exim_checkaccess exim_dumpdb exim_lock exim_tidydb \
exipick exiqsumm exigrep exim_dbmbuild exim exim_fixdb eximstats \
exinext exiqgrep exiwhat \
$out/bin )
( cd $out/bin
for i in mailq newaliases rmail rsmtp runq sendmail; do
ln -s exim $i
done )
runHook postInstall
'';
meta = {
homepage = "https://exim.org/";
description = "Mail transfer agent (MTA)";
license = with lib.licenses; [
gpl2Plus
bsd3
];
mainProgram = "exim";
platforms = lib.platforms.linux;
maintainers = with lib.maintainers; [ tv ];
teams = [ lib.teams.helsinki-systems ];
changelog = "https://github.com/Exim/exim/blob/exim-${version}/doc/doc-txt/ChangeLog";
};
}

View File

@@ -0,0 +1,118 @@
{
lib,
stdenv,
fetchFromGitHub,
cmake,
doxygen,
gettext,
graphviz,
libxslt,
removeReferencesTo,
libiconv,
brotli,
expat,
inih,
zlib,
libxml2,
python3,
which,
}:
stdenv.mkDerivation rec {
pname = "exiv2";
version = "0.28.7";
outputs = [
"out"
"lib"
"dev"
"doc"
"man"
];
src = fetchFromGitHub {
owner = "exiv2";
repo = "exiv2";
tag = "v${version}";
hash = "sha256-a7nPjDjTcwsQeypARvy2rRsv9jpasSSxSyCTLWNDDtA=";
};
nativeBuildInputs = [
cmake
doxygen
gettext
graphviz
libxslt
removeReferencesTo
];
buildInputs = lib.optionals stdenv.hostPlatform.isDarwin [
libiconv
];
propagatedBuildInputs = [
brotli
expat
inih
zlib
];
nativeCheckInputs = [
libxml2.bin
python3
which
];
cmakeFlags = [
"-DEXIV2_ENABLE_NLS=ON"
"-DEXIV2_BUILD_DOC=ON"
"-DEXIV2_ENABLE_BMFF=ON"
];
buildFlags = [
"all"
"doc"
];
doCheck = true;
preCheck = ''
patchShebangs ../test/
mkdir ../test/tmp
# template.exv_test (test_regression_allfiles.TestAllFiles.template.exv_test) ... ERROR
substituteInPlace ../tests/regression_tests/test_regression_allfiles.py \
--replace-fail '"issue_2403_poc.exv",' '"issue_2403_poc.exv", "template.exv",'
''
+ lib.optionalString stdenv.hostPlatform.isAarch32 ''
# Fix tests on arm
# https://github.com/Exiv2/exiv2/issues/933
rm -f ../tests/bugfixes/github/test_CVE_2018_12265.py
''
+ lib.optionalString stdenv.hostPlatform.isDarwin ''
export DYLD_LIBRARY_PATH=$DYLD_LIBRARY_PATH''${DYLD_LIBRARY_PATH:+:}$PWD/lib
export LC_ALL=C
# disable tests that requires loopback networking
substituteInPlace ../tests/bash_tests/testcases.py \
--replace-fail "def io_test(self):" "def io_disabled(self):"
'';
preFixup = ''
remove-references-to -t ${stdenv.cc.cc} $lib/lib/*.so.*.*.* $out/bin/exiv2
'';
disallowedReferences = [ stdenv.cc.cc ];
# causes redefinition of _FORTIFY_SOURCE
hardeningDisable = [ "fortify3" ];
meta = with lib; {
homepage = "https://exiv2.org";
description = "Library and command-line utility to manage image metadata";
mainProgram = "exiv2";
platforms = platforms.all;
license = licenses.gpl2Plus;
maintainers = with maintainers; [ wegank ];
};
}

View File

@@ -0,0 +1,82 @@
{
lib,
stdenv,
fetchFromGitHub,
python3Packages,
gitUpdater,
}:
python3Packages.buildPythonApplication rec {
pname = "exo";
version = "0.0.14-alpha";
pyproject = true;
src = fetchFromGitHub {
owner = "exo-explore";
repo = "exo";
tag = "v${version}";
hash = "sha256-GoYfpr6oFpreWQtSomOwgfzSoBAbjqGZ1mcc0u9TBl4=";
};
build-system = with python3Packages; [ setuptools ];
pythonRelaxDeps = true;
pythonRemoveDeps = [ "uuid" ];
dependencies = with python3Packages; [
aiohttp
aiohttp-cors
aiofiles
grpcio
grpcio-tools
jinja2
numpy
nuitka
nvidia-ml-py
opencv-python
pillow
prometheus-client
protobuf
psutil
pydantic
requests
rich
scapy
tqdm
transformers
tinygrad
uvloop
];
pythonImportsCheck = [
"exo"
"exo.inference.tinygrad.models"
];
nativeCheckInputs = with python3Packages; [
mlx
pytestCheckHook
];
disabledTestPaths = [
"test/test_tokenizers.py"
];
# Tests require `mlx` which is not supported on linux.
doCheck = stdenv.hostPlatform.isDarwin;
passthru = {
updateScript = gitUpdater {
rev-prefix = "v-";
};
};
meta = {
description = "Run your own AI cluster at home with everyday devices";
homepage = "https://github.com/exo-explore/exo";
changelog = "https://github.com/exo-explore/exo/releases/tag/v${version}";
license = lib.licenses.gpl3Only;
maintainers = with lib.maintainers; [ GaetanLepage ];
mainProgram = "exo";
};
}

View File

@@ -0,0 +1,111 @@
{
stdenv,
lib,
requireFile,
unzip,
glib,
systemd,
nss,
nspr,
gtk3-x11,
pango,
atk,
cairo,
gdk-pixbuf,
xorg,
xorg_sys_opengl,
util-linux,
alsa-lib,
dbus,
at-spi2-atk,
cups,
vivaldi-ffmpeg-codecs,
libpulseaudio,
at-spi2-core,
libxkbcommon,
libgbm,
}:
stdenv.mkDerivation (finalAttrs: {
pname = "exodus";
version = "25.28.4";
src = requireFile {
name = "exodus-linux-x64-${finalAttrs.version}.zip";
url = "https://downloads.exodus.com/releases/exodus-linux-x64-${finalAttrs.version}.zip";
hash = "sha256-AGeFsMHSywC32iaIGI9/VY2YC3gR5bHu33rOWJlyFFM=";
};
nativeBuildInputs = [ unzip ];
installPhase = ''
mkdir -p $out/bin $out/share/applications
cp -r . $out
ln -s $out/Exodus $out/bin/Exodus
ln -s $out/bin/Exodus $out/bin/exodus
ln -s $out/exodus.desktop $out/share/applications
substituteInPlace $out/share/applications/exodus.desktop \
--replace-fail 'Exec=bash -c "cd \\`dirname %k\\` && ./Exodus %u"' "Exec=Exodus %u"
'';
dontPatchELF = true;
dontBuild = true;
preFixup =
let
libPath = lib.makeLibraryPath [
glib
nss
nspr
gtk3-x11
pango
atk
cairo
gdk-pixbuf
xorg.libX11
xorg.libxcb
xorg.libXcomposite
xorg.libXcursor
xorg.libXdamage
xorg.libXext
xorg.libXfixes
xorg.libXi
xorg.libXrender
xorg.libxshmfence
xorg.libXtst
xorg_sys_opengl
util-linux
xorg.libXrandr
xorg.libXScrnSaver
alsa-lib
dbus.lib
at-spi2-atk
at-spi2-core
cups.lib
libpulseaudio
systemd
vivaldi-ffmpeg-codecs
libxkbcommon
libgbm
];
in
''
patchelf \
--set-interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" \
--set-rpath "${libPath}" \
$out/Exodus
'';
meta = with lib; {
homepage = "https://www.exodus.io/";
description = "Top-rated cryptocurrency wallet with Trezor integration and built-in Exchange";
sourceProvenance = with sourceTypes; [ binaryNativeCode ];
license = licenses.unfree;
platforms = platforms.linux;
maintainers = with maintainers; [
mmahut
rople380
Crafter
];
};
})

View File

@@ -0,0 +1,34 @@
{
lib,
stdenv,
fetchFromBitbucket,
}:
stdenv.mkDerivation (finalAttrs: {
pname = "exomizer";
version = "3.1.2";
src = fetchFromBitbucket {
owner = "magli143";
repo = "exomizer";
rev = finalAttrs.version;
hash = "sha256-HMgj6avGKssEUJIIecu+pebF40S9h/vKA39RWw4t6RA=";
};
sourceRoot = "${finalAttrs.src.name}/src";
installPhase = ''
runHook preInstall
install -D exomizer exobasic -t $out/bin
runHook postInstall
'';
meta = {
description = "Compress archives that can still be unpacked by 8-bit systems";
homepage = "https://bitbucket.org/magli143/exomizer/";
license = lib.licenses.unfree;
maintainers = with lib.maintainers; [ matthewcroughan ];
mainProgram = "exomizer";
platforms = lib.platforms.all;
};
})

View File

@@ -0,0 +1,31 @@
{
lib,
stdenv,
fetchurl,
glib,
pkg-config,
}:
stdenv.mkDerivation rec {
version = "2.4.0";
pname = "exonerate";
src = fetchurl {
url = "http://ftp.ebi.ac.uk/pub/software/vertebrategenomics/exonerate/${pname}-${version}.tar.gz";
sha256 = "0hj0m9xygiqsdxvbg79wq579kbrx1mdrabi2bzqz2zn9qwfjcjgq";
};
doCheck = true;
buildInputs = [ glib ];
nativeBuildInputs = [ pkg-config ];
meta = with lib; {
description = "Generic tool for sequence alignment";
homepage = "https://www.ebi.ac.uk/about/vertebrate-genomics/software/exonerate";
license = licenses.gpl3;
maintainers = [ maintainers.bzizou ];
platforms = platforms.unix;
};
}

View File

@@ -0,0 +1,58 @@
{
lib,
buildGoModule,
fetchFromGitHub,
installShellFiles,
}:
buildGoModule rec {
pname = "exoscale-cli";
version = "1.85.4";
src = fetchFromGitHub {
owner = "exoscale";
repo = "cli";
rev = "v${version}";
sha256 = "sha256-rulleAbiwnUABnHLpfHFjGXK3/DxFJLmse3NIClSpMQ=";
};
vendorHash = null;
nativeBuildInputs = [ installShellFiles ];
excludedPackages = [ "internal/integ" ];
ldflags = [
"-s"
"-w"
"-X main.version=${version}"
"-X main.commit=${src.rev}"
];
# we need to rename the resulting binary but can't use buildFlags with -o here
# because these are passed to "go install" which does not recognize -o
postBuild = ''
mv $GOPATH/bin/cli $GOPATH/bin/exo
mkdir -p manpage
$GOPATH/bin/docs --man-page
rm $GOPATH/bin/docs
$GOPATH/bin/completion bash
$GOPATH/bin/completion zsh
rm $GOPATH/bin/completion
'';
postInstall = ''
installManPage manpage/*
installShellCompletion --cmd exo --bash bash_completion --zsh zsh_completion
'';
meta = {
description = "Command-line tool for everything at Exoscale: compute, storage, dns";
homepage = "https://github.com/exoscale/cli";
license = lib.licenses.asl20;
maintainers = with lib.maintainers; [ viraptor ];
mainProgram = "exo";
};
}

View File

@@ -0,0 +1,84 @@
#include <assert.h>
#include <ctype.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
typedef struct { char *data; size_t len, cap; } String;
void resize(String *s, size_t len) {
s->len = len;
if (s->cap < s->len) {
s->cap = s->len * 2;
s->data = (char *)realloc(s->data, s->cap);
assert(s->data);
}
}
void append(String *s, const char *data, size_t len) {
resize(s, s->len + len);
memcpy(s->data + s->len - len, data, len);
}
typedef enum { space = 0, other = 1, backslash = 2, apostrophe = 3, quotation_mark = 4 } CharClass;
typedef enum { outside, unq, unq_esc, sq, sq_esc, dq, dq_esc } State;
// current State -> CharClass -> next State
const State transitions[][5] = {
[outside] = {outside, unq, unq_esc, sq, dq},
[unq] = {outside, unq, unq_esc, sq, dq},
[unq_esc] = {unq, unq, unq, unq, unq},
[sq] = {sq, sq, sq_esc, unq, sq},
[sq_esc] = {sq, sq, sq, sq, sq},
[dq] = {dq, dq, dq_esc, dq, unq},
[dq_esc] = {dq, dq, dq, dq, dq},
};
CharClass charClass(int c) {
return c == '\\' ? backslash : c == '\'' ? apostrophe : c == '"' ? quotation_mark :
isspace(c) ? space : other;
}
// expandArg writes NULL-terminated expansions of `arg', a NULL-terminated
// string, to stdout. If arg does not begin with `@' or does not refer to a
// file, it is written as is. Otherwise the contents of the file are
// recursively expanded. On unexpected EOF in malformed response files an
// incomplete final argument is written, even if it is empty, to parse like GCC.
void expandArg(String *arg) {
FILE *f;
if (arg->data[0] != '@' || !(f = fopen(&arg->data[1], "r"))) {
fwrite(arg->data, 1, arg->len, stdout);
return;
}
resize(arg, 0);
State cur = outside;
int c;
do {
c = fgetc(f);
State next = transitions[cur][charClass(c)];
if ((cur == unq && next == outside) || (cur != outside && c == EOF)) {
append(arg, "", 1);
expandArg(arg);
resize(arg, 0);
} else if (cur == unq_esc || cur == sq_esc || cur == dq_esc ||
(cur == outside ? next == unq : cur == next)) {
char s = c;
append(arg, &s, 1);
}
cur = next;
} while (c != EOF);
fclose(f);
}
int main(int argc, char **argv) {
String arg = { 0 };
while (*++argv) {
resize(&arg, 0);
append(&arg, *argv, strlen(*argv) + 1);
expandArg(&arg);
}
free(arg.data);
return EXIT_SUCCESS;
}

View File

@@ -0,0 +1,43 @@
{ stdenv, lib }:
# A "response file" is a sequence of arguments that is passed via a
# file, rather than via argv[].
# For more information see:
# https://gcc.gnu.org/wiki/Response_Files
# https://www.intel.com/content/www/us/en/docs/dpcpp-cpp-compiler/developer-guide-reference/2023-0/use-response-files.html
stdenv.mkDerivation {
name = "expand-response-params";
src = ./expand-response-params.c;
strictDeps = true;
enableParallelBuilding = true;
# Work around "stdenv-darwin-boot-2 is not allowed to refer to path
# /nix/store/...-expand-response-params.c"
unpackPhase = ''
cp "$src" expand-response-params.c
src=$PWD
'';
buildPhase = ''
NIX_CC_USE_RESPONSE_FILE=0 "$CC" -std=c99 -O3 -o "expand-response-params" expand-response-params.c
'';
installPhase = ''
mkdir -p $prefix/bin
mv expand-response-params${stdenv.hostPlatform.extensions.executable} $prefix/bin/
'';
meta = {
description = "Internal tool used by the nixpkgs wrapper scripts for processing response files";
longDescription = ''
expand-response-params is a tool that allows for obtaining a full list of all
arguments passed in a given compiler command line including those passed via
so-called response files. The nixpkgs wrapper scripts for bintools and C
compilers use it for processing compiler flags. As it is developed in
conjunction with the nixpkgs wrapper scripts, it should be considered as
unstable and subject to change.
'';
license = lib.licenses.mit;
platforms = lib.platforms.all;
mainProgram = "expand-response-params${stdenv.hostPlatform.extensions.executable}";
};
}

View File

@@ -0,0 +1,84 @@
{
lib,
stdenv,
fetchurl,
updateAutotoolsGnuConfigScriptsHook,
# for passthru.tests
python3,
perlPackages,
haskellPackages,
luaPackages,
ocamlPackages,
testers,
}:
# Note: this package is used for bootstrapping fetchurl, and thus
# cannot use fetchpatch! All mutable patches (generated by GitHub or
# cgit) that are needed here should be included directly in Nixpkgs as
# files.
let
version = "2.7.2";
tag = "R_${lib.replaceStrings [ "." ] [ "_" ] version}";
in
stdenv.mkDerivation (finalAttrs: {
pname = "expat";
inherit version;
src = fetchurl {
url =
with finalAttrs;
"https://github.com/libexpat/libexpat/releases/download/${tag}/${pname}-${version}.tar.xz";
hash = "sha256-Ibd4s07IN8KsKFrvNA+ftfoGOoEbIepNJBKpcCyImVw=";
};
strictDeps = true;
nativeBuildInputs = [ updateAutotoolsGnuConfigScriptsHook ];
outputs = [
"out"
"dev"
]; # TODO: fix referrers
outputBin = "dev";
enableParallelBuilding = true;
configureFlags = lib.optional stdenv.hostPlatform.isFreeBSD "--with-pic";
outputMan = "dev"; # tiny page for a dev tool
doCheck = true; # not cross;
preCheck = ''
patchShebangs ./run.sh ./test-driver-wrapper.sh
'';
# CMake files incorrectly calculate library path from dev prefix
# https://github.com/libexpat/libexpat/issues/501
postFixup = ''
substituteInPlace $dev/lib/cmake/expat-${finalAttrs.version}/expat-noconfig.cmake \
--replace "$"'{_IMPORT_PREFIX}' $out
'';
passthru.tests = {
inherit python3;
inherit (python3.pkgs) xmltodict;
inherit (haskellPackages) hexpat;
inherit (perlPackages) XMLSAXExpat XMLParser;
inherit (luaPackages) luaexpat;
inherit (ocamlPackages) ocaml_expat;
pkg-config = testers.hasPkgConfigModules {
package = finalAttrs.finalPackage;
};
};
meta = with lib; {
changelog = "https://github.com/libexpat/libexpat/blob/${tag}/expat/Changes";
homepage = "https://libexpat.github.io/";
description = "Stream-oriented XML parser library written in C";
mainProgram = "xmlwf";
platforms = platforms.all;
license = licenses.mit; # expat version
pkgConfigModules = [ "expat" ];
};
})

View File

@@ -0,0 +1,36 @@
{
lib,
stdenv,
fetchFromGitHub,
cmake,
ninja,
}:
stdenv.mkDerivation rec {
pname = "expected-lite";
version = "0.9.0";
src = fetchFromGitHub {
owner = "martinmoene";
repo = "expected-lite";
rev = "v${version}";
hash = "sha256-LRXxUaDQT5q9dXK2uYFvCgEuGWEHKr95lfdGTGjke0g=";
};
nativeBuildInputs = [
cmake
ninja
];
doCheck = true;
meta = with lib; {
description = ''
Expected objects in C++11 and later in a single-file header-only library
'';
homepage = "https://github.com/martinmoene/expected-lite";
changelog = "https://github.com/martinmoene/expected-lite/blob/${src.rev}/CHANGES.txt";
license = licenses.boost;
maintainers = with maintainers; [ azahi ];
};
}

View File

@@ -0,0 +1,49 @@
{
lib,
stdenv,
buildGoModule,
fetchFromGitHub,
sqlite,
installShellFiles,
}:
buildGoModule rec {
pname = "expenses";
version = "0.2.3";
src = fetchFromGitHub {
owner = "manojkarthick";
repo = "expenses";
rev = "v${version}";
sha256 = "sha256-sqsogF2swMvYZL7Kj+ealrB1AAgIe7ZXXDLRdHL6Q+0=";
};
vendorHash = "sha256-rIcwZUOi6bdfiWZEsRF4kl1reNPPQNuBPHDOo7RQgYo=";
# package does not contain any tests as of v0.2.3
doCheck = false;
nativeBuildInputs = [ installShellFiles ];
buildInputs = [ sqlite ];
ldflags = [
"-s"
"-w"
"-X github.com/manojkarthick/expenses/cmd.Version=${version}"
];
postInstall = lib.optionalString (stdenv.buildPlatform.canExecute stdenv.hostPlatform) ''
installShellCompletion --cmd expenses \
--bash <($out/bin/expenses completion bash) \
--zsh <($out/bin/expenses completion zsh) \
--fish <($out/bin/expenses completion fish)
'';
meta = with lib; {
description = "Interactive command line expense logger";
license = licenses.mit;
maintainers = [ maintainers.manojkarthick ];
mainProgram = "expenses";
};
}

View File

@@ -0,0 +1,75 @@
{
lib,
stdenv,
fetchurl,
fetchpatch,
libtool,
bison,
groff,
ghostscript,
gettext,
acl,
libcap,
lsof,
}:
stdenv.mkDerivation rec {
pname = "explain";
version = "1.4";
src = fetchurl {
url = "mirror://sourceforge/libexplain/libexplain-${version}.tar.gz";
hash = "sha256-KIY7ZezMdJNOI3ysQTZMs8GALDbJ4jGO0EF0YP7oP4A=";
};
patches =
let
debian-src = "https://sources.debian.org/data/main";
debian-ver = "${version}.D001-12";
debian-patch =
fname: hash:
fetchpatch {
name = fname;
url = "${debian-src}/libe/libexplain/${debian-ver}/debian/patches/${fname}";
hash = hash;
};
in
[
(debian-patch "sanitize-bison.patch" "sha256-gU6JG32j2yIOwehZTUSvIr4TSDdlg+p1U3bhfZHMEDY=")
(debian-patch "03_fsflags-4.5.patch" "sha256-ML7Qvf85vEBp+iwm6PSosMAn/frYdEOSHRToEggmR8M=")
(debian-patch "linux5.11.patch" "sha256-N7WwnTfwOxBfIiKntcFOqHTH9r2gd7NMEzic7szzR+Y=")
(debian-patch "termiox-no-more-exists-since-kernel-5.12.patch" "sha256-cocgEYKoDMDnGk9VNQDtgoVxMGnnNpdae0hzgUlacOw=")
(debian-patch "gcc-10.patch" "sha256-YNcYGyOOqPUuwpUpXGcR7zsWbepVg8SAqcVKlxENSQk=")
];
nativeBuildInputs = [
libtool
bison
groff
ghostscript
gettext
];
buildInputs = [
acl
libcap
lsof
];
outputs = [
"bin"
"dev"
"out"
"man"
"doc"
];
meta = with lib; {
description = "Library and utility to explain system call errors";
mainProgram = "explain";
homepage = "https://libexplain.sourceforge.net";
license = licenses.lgpl3Plus;
maintainers = with maintainers; [ McSinyx ];
platforms = platforms.unix;
# never built on aarch64-linux since first introduction in nixpkgs
broken = stdenv.hostPlatform.isLinux && stdenv.hostPlatform.isAarch64;
};
}

View File

@@ -0,0 +1,31 @@
{
lib,
stdenvNoCC,
fetchzip,
}:
stdenvNoCC.mkDerivation (finalAttrs: {
pname = "explex-nf";
version = "0.0.3";
src = fetchzip {
url = "https://github.com/yuru7/Explex/releases/download/v${finalAttrs.version}/Explex_NF_v${finalAttrs.version}.zip";
hash = "sha256-X4CnYT5B7IyG1Z5Ex6CXCfX7Hz3vNb5bP+vq1Vjx8XI=";
};
installPhase = ''
runHook preInstall
install -Dm444 ExplexConsole_NF/*.ttf -t $out/share/fonts/truetype/explex-nf-console
install -Dm444 Explex35Console_NF/*.ttf -t $out/share/fonts/truetype/explex-nf-35console
runHook postInstall
'';
meta = {
description = "Composite font of 0xProto, IBM Plex Sans JP and nerd-fonts";
homepage = "https://github.com/yuru7/Explex";
changelog = "https://github.com/yuru7/Explex/releases/tag/v${finalAttrs.version}";
license = lib.licenses.ofl;
platforms = lib.platforms.all;
maintainers = [ lib.maintainers.r-aizawa ];
};
})

View File

@@ -0,0 +1,33 @@
{
lib,
stdenvNoCC,
fetchzip,
}:
stdenvNoCC.mkDerivation (finalAttrs: {
pname = "explex";
version = "0.0.3";
src = fetchzip {
url = "https://github.com/yuru7/Explex/releases/download/v${finalAttrs.version}/Explex_v${finalAttrs.version}.zip";
hash = "sha256-OUmzF8GrwVgFAMSEiZLvh85nsOw1a0a7B70u2cRXXO8=";
};
installPhase = ''
runHook preInstall
install -Dm444 Explex/*.ttf -t $out/share/fonts/truetype/explex
install -Dm444 Explex35/*.ttf -t $out/share/fonts/truetype/explex-35
install -Dm444 ExplexConsole/*.ttf -t $out/share/fonts/truetype/explex-console
install -Dm444 Explex35Console/*.ttf -t $out/share/fonts/truetype/explex-35console
runHook postInstall
'';
meta = {
description = "Composite font of 0xProto and IBM Plex Sans JP";
homepage = "https://github.com/yuru7/Explex";
changelog = "https://github.com/yuru7/Explex/releases/tag/v${finalAttrs.version}";
license = lib.licenses.ofl;
platforms = lib.platforms.all;
maintainers = [ lib.maintainers.r-aizawa ];
};
})

View File

@@ -0,0 +1,75 @@
{
lib,
fetchFromGitLab,
python3,
}:
with python3.pkgs;
buildPythonApplication rec {
pname = "expliot";
version = "0.11.1";
pyproject = true;
src = fetchFromGitLab {
owner = "expliot_framework";
repo = "expliot";
tag = version;
hash = "sha256-aFJVT5vE9YKirZEINKFzYWDffoVgluoUyvMmOifLq1M=";
};
build-system = [
poetry-core
];
pythonRelaxDeps = [
"cryptography"
"paho-mqtt"
"pynetdicom"
"setuptools"
"xmltodict"
"zeroconf"
];
dependencies = [
aiocoap
awsiotpythonsdk
bluepy
cmd2
cryptography
distro
jsonschema
paho-mqtt
pyi2cflash
pymodbus
pynetdicom
pyparsing
pyspiflash
python-can
python-magic
pyudev
setuptools
upnpy
xmltodict
zeroconf
];
# Project has no tests
doCheck = false;
pythonImportsCheck = [ "expliot" ];
meta = {
description = "IoT security testing and exploitation framework";
longDescription = ''
EXPLIoT is a Framework for security testing and exploiting IoT
products and IoT infrastructure. It provides a set of plugins
(test cases) which are used to perform the assessment and can
be extended easily with new ones. The name EXPLIoT (pronounced
expl-aa-yo-tee) is a pun on the word exploit and explains the
purpose of the framework i.e. IoT exploitation.
'';
homepage = "https://expliot.readthedocs.io/";
license = lib.licenses.agpl3Plus;
maintainers = with lib.maintainers; [ fab ];
mainProgram = "expliot";
};
}

View File

@@ -0,0 +1,48 @@
{
lib,
stdenv,
fetchFromGitLab,
makeWrapper,
}:
stdenv.mkDerivation (finalAttrs: {
pname = "exploitdb";
version = "2025-09-18";
src = fetchFromGitLab {
owner = "exploit-database";
repo = "exploitdb";
tag = finalAttrs.version;
hash = "sha256-+5zXe+64tZD7zjZKXrAuv5ggBRb1ecKzKZSY2Knzklg=";
};
nativeBuildInputs = [ makeWrapper ];
installPhase = ''
runHook preInstall
mkdir -p $out/bin $out/share
cp --recursive . $out/share/exploitdb
substituteInPlace $out/share/exploitdb/.searchsploit_rc \
--replace-fail 'path_array+=("/opt/exploitdb")' 'path_array+=("'$out'/share/exploitdb")' \
--replace-fail 'path_array+=("/opt/exploitdb-papers")' 'path_array+=("'$out'/share/exploitdb")'
makeWrapper $out/share/exploitdb/searchsploit $out/bin/searchsploit
runHook postInstall
'';
meta = {
description = "Archive of public exploits and corresponding vulnerable software";
homepage = "https://gitlab.com/exploit-database/exploitdb";
license = with lib.licenses; [
gpl2Plus
gpl3Plus
mit
];
maintainers = with lib.maintainers; [
applePrincess
fab
];
mainProgram = "searchsploit";
platforms = lib.platforms.unix;
};
})

View File

@@ -0,0 +1,45 @@
{
lib,
stdenv,
buildGoModule,
fetchFromGitHub,
}:
buildGoModule rec {
pname = "exportarr";
version = "2.3.0";
src = fetchFromGitHub {
owner = "onedr0p";
repo = "exportarr";
rev = "v${version}";
hash = "sha256-q1G0auXwmuJI0jecXcNg7PMF/+vZPGT00gLt/Qa86dE=";
};
vendorHash = "sha256-XKIfOKgzJ41gQl/Jd8ZO3oNimZcoIY2d38ZojZAf53c=";
subPackages = [ "cmd/exportarr" ];
CGO_ENABLE = 0;
ldflags = [
"-s"
"-w"
];
tags = lib.optionals stdenv.hostPlatform.isLinux [ "netgo" ];
preCheck = ''
# Run all tests.
unset subPackages
'';
meta = with lib; {
description = "AIO Prometheus Exporter for Sonarr, Radarr or Lidarr";
mainProgram = "exportarr";
homepage = "https://github.com/onedr0p/exportarr";
changelog = "https://github.com/onedr0p/exportarr/releases/tag/${src.rev}";
license = licenses.mit;
maintainers = with maintainers; [ azahi ];
};
}

View File

@@ -0,0 +1,45 @@
{
lib,
python3,
fetchFromGitHub,
}:
python3.pkgs.buildPythonApplication rec {
pname = "exposor";
version = "1.0.0";
pyproject = true;
src = fetchFromGitHub {
owner = "abuyv";
repo = "exposor";
tag = "v${version}";
hash = "sha256-D/AMoLMUUjiKbrDS90GkVLHncMHSmtfjLINf97LEU1w=";
};
postPatch = ''
# File contains unknown property
rm pyproject.toml
'';
build-system = with python3.pkgs; [ setuptools ];
dependencies = with python3.pkgs; [
python-dotenv
pyyaml
requests
];
# Project has no tests
doCheck = false;
pythonImportsCheck = [ "exposor" ];
meta = {
description = "Tool using internet search engines to detect exposed technologies with a unified syntax";
homepage = "https://github.com/abuyv/exposor";
changelog = "https://github.com/abuyv/exposor/releases/tag/v${version}";
license = lib.licenses.mit;
maintainers = with lib.maintainers; [ fab ];
mainProgram = "exposor";
};
}

View File

@@ -0,0 +1,39 @@
{
lib,
buildGoModule,
fetchFromGitHub,
}:
buildGoModule rec {
pname = "expr";
version = "1.17.6";
src = fetchFromGitHub {
owner = "expr-lang";
repo = "expr";
rev = "v${version}";
hash = "sha256-XYKdRIEXOVVXXYdgBKDDl1vzvzntHYtVeDFvMs8ECms=";
};
sourceRoot = "${src.name}/repl";
vendorHash = "sha256-N23oxNppzsH4iD0g3IrOj43ZBb+lEm6BA/G7TUcoKbY=";
ldflags = [
"-s"
"-w"
];
postInstall = ''
mv $out/bin/{repl,expr}
'';
meta = with lib; {
description = "Expression language and expression evaluation for Go";
homepage = "https://github.com/expr-lang/expr";
changelog = "https://github.com/expr-lang/expr/releases/tag/${src.rev}";
license = licenses.mit;
maintainers = with maintainers; [ figsoda ];
mainProgram = "expr";
};
}

View File

@@ -0,0 +1,115 @@
{
autoPatchelfHook,
buildFHSEnv,
dpkg,
fetchurl,
inotify-tools,
lib,
stdenvNoCC,
sysctl,
writeScript,
}:
let
pname = "expressvpn";
clientVersion = "3.52.0";
clientBuild = "2";
version = lib.strings.concatStringsSep "." [
clientVersion
clientBuild
];
expressvpnBase = stdenvNoCC.mkDerivation {
inherit pname version;
src = fetchurl {
url = "https://www.expressvpn.works/clients/linux/expressvpn_${version}-1_amd64.deb";
hash = "sha256-cDZ9R+MA3FXEto518bH4/c1X4W9XxgTvXns7zisylew=";
};
nativeBuildInputs = [
dpkg
autoPatchelfHook
];
dontConfigure = true;
dontBuild = true;
unpackPhase = ''
runHook preUnpack
dpkg --fsys-tarfile $src | tar --extract
runHook postUnpack
'';
installPhase = ''
runHook preInstall
mv usr/ $out/
runHook postInstall
'';
};
expressvpndFHS = buildFHSEnv {
inherit version;
pname = "expressvpnd";
# When connected, it directly creates/deletes resolv.conf to change the DNS entries.
# Since it's running in an FHS environment, it has no effect on actual resolv.conf.
# Hence, place a watcher that updates host resolv.conf when FHS resolv.conf changes.
# Mount the host's resolv.conf to the container's /etc/resolv.conf
runScript = writeScript "${pname}-wrapper" ''
mkdir -p /host/etc
[ -e /host/etc/resolv.conf ] || touch /host/etc/resolv.conf
mount --bind /etc/resolv.conf /host/etc/resolv.conf
mount -o remount,rw /host/etc/resolv.conf
trap "umount /host/etc/resolv.conf" EXIT
while inotifywait /etc 2>/dev/null;
do
cp /etc/resolv.conf /host/etc/resolv.conf;
done &
expressvpnd --client-version ${clientVersion} --client-build ${clientBuild}
'';
# expressvpnd binary has hard-coded the path /sbin/sysctl hence below workaround.
extraBuildCommands = ''
mkdir -p sbin
chmod +w sbin
ln -s ${sysctl}/bin/sysctl sbin/sysctl
'';
# The expressvpnd binary also uses hard-coded paths to the other binaries and files
# it ships with, hence the FHS environment.
targetPkgs =
pkgs: with pkgs; [
expressvpnBase
inotify-tools
iproute2
];
};
in
stdenvNoCC.mkDerivation {
inherit pname version;
dontUnpack = true;
dontConfigure = true;
dontBuild = true;
installPhase = ''
runHook preInstall
mkdir -p $out/bin $out/share
ln -s ${expressvpnBase}/bin/expressvpn $out/bin
ln -s ${expressvpndFHS}/bin/expressvpnd $out/bin
ln -s ${expressvpnBase}/share/{bash-completion,doc,man} $out/share/
runHook postInstall
'';
meta = with lib; {
description = "CLI client for ExpressVPN";
homepage = "https://www.expressvpn.com";
license = licenses.unfree;
platforms = [ "x86_64-linux" ];
maintainers = with maintainers; [ yureien ];
};
}

View File

@@ -0,0 +1,32 @@
{
lib,
stdenv,
fetchFromGitHub,
}:
stdenv.mkDerivation rec {
pname = "exprtk";
version = "0.0.3";
src = fetchFromGitHub {
owner = "ArashPartow";
repo = "exprtk";
rev = version;
hash = "sha256-A4UzNYZZGgTJOw9G4Jg1wJZhxguFRohNEcwmwUOAX18=";
};
dontBuild = true;
installPhase = ''
runHook preInstall
install -Dm644 exprtk.hpp "$out/include/exprtk.hpp"
runHook postInstall
'';
meta = with lib; {
description = "C++ Mathematical Expression Toolkit Library";
homepage = "https://www.partow.net/programming/exprtk/index.html";
license = licenses.mit;
maintainers = [ ];
};
}

View File

@@ -0,0 +1,34 @@
{
lib,
stdenv,
fetchurl,
pkg-config,
openexr,
libpng12,
libjpeg,
}:
stdenv.mkDerivation rec {
pname = "exrtools";
version = "0.4";
src = fetchurl {
url = "http://scanline.ca/exrtools/${pname}-${version}.tar.gz";
sha256 = "0jpkskqs1yjiighab4s91jy0c0qxcscwadfn94xy2mm2bx2qwp4z";
};
nativeBuildInputs = [ pkg-config ];
buildInputs = [
openexr
libpng12
libjpeg
];
meta = with lib; {
description = "Collection of utilities for manipulating OpenEXR images";
homepage = "http://scanline.ca/exrtools";
platforms = platforms.linux;
license = licenses.mit;
maintainers = [ maintainers.juliendehos ];
};
}

View File

@@ -0,0 +1,51 @@
{
lib,
stdenv,
fetchurl,
fetchpatch,
e2fsprogs,
}:
stdenv.mkDerivation (finalAttrs: {
pname = "ext3grep";
version = "0.10.2";
src = fetchurl {
url = "https://storage.googleapis.com/google-code-archive-downloads/v2/code.google.com/ext3grep/ext3grep-${finalAttrs.version}.tar.gz";
hash = "sha256-WG8+k50v/XgvbwBrgaPfLcR3xtoD8h7biGDFxPcZjz4=";
};
nativeBuildInputs = [ e2fsprogs ];
patches = [
(fetchpatch {
url = "https://salsa.debian.org/pkg-security-team/ext3grep/-/raw/6150141b945dd12240629c07ada0a033b275baeb/debian/patches/001_fix-ftbfs-e2fsprogs_1.42-WIP-702.diff";
hash = "sha256-27M+o3vw4eGCFpdqVLXX6b73a8v29yuKphMo8K0xJ3U=";
})
(fetchpatch {
url = "https://salsa.debian.org/pkg-security-team/ext3grep/-/raw/7c4bfb4c19eabaa11e6bf435289bfcd6e6847a9c/debian/patches/002_remove_i_dir_acl.diff";
hash = "sha256-2bdlJ+zlsd7zX3ztV7NOTwSmEZf0N1BM8qJ/5avKX+M=";
})
(fetchpatch {
url = "https://salsa.debian.org/pkg-security-team/ext3grep/-/raw/58d63611bb8dfe5c4eacd568e79914f4f0cb2a0f/debian/patches/005_fix-FTBFS-dh-11.patch";
hash = "sha256-GfiSMRxbGz1gDMfAjo+FRmNIRK1zq96TVkLBO03pzbI=";
})
(fetchpatch {
url = "https://salsa.debian.org/pkg-security-team/ext3grep/-/raw/8bb5322ced9b099d2af73e77d4a84b6e5b1a9f7f/debian/patches/010_fix-spellings.patch";
hash = "sha256-YHUInewf634HaRFUW9djtRZqg7Wdqh/rjp0pbJuOT2M=";
})
(fetchpatch {
url = "https://salsa.debian.org/pkg-security-team/ext3grep/-/raw/662e314abca7d466add8015fc3d2cd49653cffcf/debian/patches/015_fix-clang-build.patch";
hash = "sha256-GctPFpBxdZYi5l2dtFTrFx4cTmDXV8BARvpwK+oxMdc=";
})
];
meta = with lib; {
description = "Tool to investigate an ext3 file system for deleted content and possibly recover it";
mainProgram = "ext3grep";
homepage = "https://code.google.com/archive/p/ext3grep/";
maintainers = with maintainers; [ d3vil0p3r ];
platforms = platforms.linux;
license = licenses.gpl2Plus;
};
})

View File

@@ -0,0 +1,45 @@
{
lib,
stdenv,
fetchFromGitHub,
fuse,
macfuse-stubs,
pkg-config,
which,
}:
stdenv.mkDerivation (finalAttrs: {
pname = "ext4fuse";
version = "0.1.3";
src = fetchFromGitHub {
owner = "gerard";
repo = "ext4fuse";
rev = "v${finalAttrs.version}";
hash = "sha256-bsFo+aaeNceSme9WBUVg4zpE4DzlmLHv+esQIAlTGGU=";
};
nativeBuildInputs = [
pkg-config
which
];
buildInputs = [ (if stdenv.hostPlatform.isDarwin then macfuse-stubs else fuse) ];
installPhase = ''
runHook preInstall
install -Dm555 ext4fuse $out/bin/ext4fuse
runHook postInstall
'';
meta = with lib; {
description = "EXT4 implementation for FUSE";
mainProgram = "ext4fuse";
homepage = "https://github.com/gerard/ext4fuse";
maintainers = with maintainers; [ felixalbrigtsen ];
platforms = platforms.unix;
license = licenses.gpl2Plus;
};
})

View File

@@ -0,0 +1,12 @@
diff --git a/src/recover.c b/src/recover.c
index 41b4aee..30b5d8f 100644
--- a/src/recover.c
+++ b/src/recover.c
@@ -24,6 +24,7 @@
#include <errno.h>
#include <fcntl.h>
#include <utime.h>
+#include <sys/sysmacros.h>
#ifndef O_LARGEFILE
#define O_LARGEFILE 0

View File

@@ -0,0 +1,61 @@
{
lib,
stdenv,
fetchurl,
fetchpatch,
file,
libuuid,
e2fsprogs,
zlib,
bzip2,
}:
stdenv.mkDerivation rec {
version = "0.3.2";
pname = "ext4magic";
src = fetchurl {
url = "mirror://sourceforge/ext4magic/${pname}-${version}.tar.gz";
sha256 = "8d9c6a594f212aecf4eb5410d277caeaea3adc03d35378257dfd017ef20ea115";
};
patches = [
(fetchpatch {
url = "https://sourceforge.net/p/ext4magic/tickets/10/attachment/ext4magic-0.3.2-i_dir_acl.patch";
hash = "sha256-DHXjDQ+kT6uLuPb7ODRHfeRRYVxO5OiRafHFiVrzjKk=";
})
./glibc-fix.patch
(fetchpatch {
url = "https://salsa.debian.org/pkg-security-team/ext4magic/-/raw/0e52341dbe8681a6e1a59d902e5e33ec13be1cbe/debian/patches/fix-segfault-extent-free.patch";
hash = "sha256-MI363/E676E8ZH41k/XnQ2kdWzKAp5uQF/h2FN7X/x8=";
})
];
buildInputs = [
file
libuuid
e2fsprogs
zlib
bzip2
];
installFlags = [ "PREFIX=$(out)" ];
meta = with lib; {
description = "Recover / undelete files from ext3 or ext4 partitions";
longDescription = ''
ext4magic can recover/undelete files from ext3 or ext4 partitions
by retrieving file-information from the filesystem journal.
If the information in the journal are sufficient, ext4magic can
recover the most file types, with original filename, owner and group,
file mode bits and also the old atime/mtime stamps.
It's much more effective and works much better than extundelete.
'';
homepage = "https://ext4magic.sourceforge.net/ext4magic_en.html";
license = licenses.gpl2Plus;
platforms = platforms.linux;
maintainers = [ maintainers.rkoe ];
mainProgram = "ext4magic";
};
}

View File

@@ -0,0 +1,27 @@
{
lib,
fetchFromGitHub,
rustPlatform,
}:
rustPlatform.buildRustPackage rec {
pname = "extest";
version = "1.0.2";
src = fetchFromGitHub {
owner = "Supreeeme";
repo = "extest";
rev = version;
hash = "sha256-qdTF4n3uhkl3WFT+7bAlwCjxBx3ggTN6i3WzFg+8Jrw=";
};
cargoHash = "sha256-82jG4tHqc5FQFGp4NANk2oJjiHc0+ekVdbdWlqjzaj8=";
meta = with lib; {
description = "X11 XTEST reimplementation primarily for Steam Controller on Wayland";
homepage = "https://github.com/Supreeeme/extest";
platforms = platforms.linux;
license = licenses.mit;
maintainers = [ maintainers.puffnfresh ];
};
}

View File

@@ -0,0 +1,43 @@
{
lib,
buildGoModule,
fetchFromGitHub,
installShellFiles,
}:
buildGoModule rec {
pname = "extism-cli";
version = "1.6.3";
src = fetchFromGitHub {
owner = "extism";
repo = "cli";
tag = "v${version}";
hash = "sha256-ioH2s9546/i12jCmE/4km9YqLhiHkj6WLBwmNAAZFUA=";
};
vendorHash = "sha256-51/fzq2j55GHmEx2twb0DSi0AmBS4DbViZzo1c5Xn1M=";
nativeBuildInputs = [ installShellFiles ];
subPackages = [ "./extism" ];
doCheck = false; # Tests require network access
postInstall = ''
local INSTALL="$out/bin/extism"
installShellCompletion --cmd extism \
--bash <($out/bin/extism completion bash) \
--fish <($out/bin/extism completion fish) \
--zsh <($out/bin/extism completion zsh)
'';
meta = with lib; {
description = "Extism CLI is used to manage Extism installations";
homepage = "https://github.com/extism/cli";
license = licenses.bsd3;
maintainers = with maintainers; [ zshipko ];
mainProgram = "extism";
platforms = platforms.all;
};
}

View File

@@ -0,0 +1,47 @@
{
stdenv,
lib,
nixos-container,
openssh,
glibcLocales,
fetchFromGitHub,
}:
stdenv.mkDerivation rec {
pname = "extra-container";
version = "0.13";
src = fetchFromGitHub {
owner = "erikarvstedt";
repo = "extra-container";
rev = version;
hash = "sha256-vgh3TqfkFdnPxREBedw4MQehIDc3N8YyxBOB45n+AvU=";
};
buildCommand = ''
install -D $src/extra-container $out/bin/extra-container
patchShebangs $out/bin
share=$out/share/extra-container
install $src/eval-config.nix -Dt $share
# Use existing PATH for systemctl and machinectl
scriptPath="export PATH=${lib.makeBinPath [ openssh ]}:\$PATH"
sed -i "
s|evalConfig=.*|evalConfig=$share/eval-config.nix|
s|LOCALE_ARCHIVE=.*|LOCALE_ARCHIVE=${glibcLocales}/lib/locale/locale-archive|
2i$scriptPath
2inixosContainer=${nixos-container}/bin
" $out/bin/extra-container
'';
meta = {
description = "Run declarative containers without full system rebuilds";
homepage = "https://github.com/erikarvstedt/extra-container";
changelog = "https://github.com/erikarvstedt/extra-container/blob/${version}/CHANGELOG.md";
license = lib.licenses.mit;
platforms = lib.platforms.linux;
maintainers = [ lib.maintainers.erikarvstedt ];
mainProgram = "extra-container";
};
}

View File

@@ -0,0 +1,35 @@
{
lib,
stdenv,
fetchFromGitHub,
}:
stdenv.mkDerivation rec {
pname = "extrace";
version = "0.9";
src = fetchFromGitHub {
owner = "leahneukirchen";
repo = "extrace";
rev = "v${version}";
hash = "sha256-Jy/Ac3NcqBkW0kHyypMAVUGAQ41qWM96BbLAym06ogM=";
};
makeFlags = [ "PREFIX=${placeholder "out"}" ];
postInstall = ''
install -dm755 "$out/share/licenses/extrace/"
install -m644 LICENSE "$out/share/licenses/extrace/LICENSE"
'';
meta = with lib; {
homepage = "https://github.com/leahneukirchen/extrace";
description = "Trace exec() calls system-wide";
license = with licenses; [
gpl2Plus
bsd2
];
platforms = platforms.linux;
maintainers = [ maintainers.leahneukirchen ];
};
}

View File

@@ -0,0 +1,30 @@
{
lib,
fetchPypi,
python3Packages,
}:
python3Packages.buildPythonApplication rec {
pname = "extract-dtb";
version = "1.2.3";
pyproject = true;
src = fetchPypi {
inherit pname version;
hash = "sha256-g8Dadd0YwE5c/z6Bh/hIGtHsbmoGsgvAQjE/Hfl2+ag=";
};
build-system = with python3Packages; [
setuptools
];
meta = {
description = "Extract device tree blobs (dtb) from kernel images";
homepage = "https://github.com/PabloCastellano/extract-dtb";
changelog = "https://github.com/PabloCastellano/extract-dtb/releases/tag/${version}";
license = lib.licenses.gpl3Plus;
platforms = lib.platforms.linux;
maintainers = with lib.maintainers; [ ungeskriptet ];
mainProgram = "extract-dtb";
};
}

View File

@@ -0,0 +1,50 @@
{
stdenv,
lib,
fetchFromGitHub,
makeWrapper,
perlPackages,
cursesSupport ? true,
uriFindSupport ? true,
}:
let
perlDeps = [
perlPackages.MIMETools
perlPackages.HTMLParser
]
++ lib.optional cursesSupport perlPackages.CursesUI
++ lib.optional uriFindSupport perlPackages.URIFind;
in
stdenv.mkDerivation rec {
pname = "extract_url";
version = "1.6.2";
src = fetchFromGitHub {
owner = "m3m0ryh0l3";
repo = "extracturl";
rev = "v${version}";
sha256 = "05589lp15jmcpbj4y9a3hmf6n2gsqrm4ybcyh3hd4j6pc7hmnhny";
};
nativeBuildInputs = [ makeWrapper ];
buildInputs = [ perlPackages.perl ] ++ perlDeps;
makeFlags = [ "prefix=$(out)" ];
installFlags = [ "INSTALL=install" ];
postFixup = ''
wrapProgram "$out/bin/extract_url" \
--set PERL5LIB "${perlPackages.makeFullPerlPath perlDeps}"
'';
meta = with lib; {
homepage = "https://www.memoryhole.net/~kyle/extract_url/";
description = "Extracts URLs from MIME messages or plain text";
mainProgram = "extract_url";
license = licenses.bsd2;
maintainers = [ maintainers.qyliss ];
platforms = platforms.unix;
};
}

View File

@@ -0,0 +1,15 @@
diff --git a/configure.ac b/configure.ac
index 2e7d562..c8dd741 100644
--- a/configure.ac
+++ b/configure.ac
@@ -7,6 +7,10 @@ AC_INIT([Extract PDFmark], [1.1.1], , [extractpdfmark],
AM_INIT_AUTOMAKE([foreign])
AC_CONFIG_SRCDIR([src/main.cc])
AC_CONFIG_HEADERS([config.h])
+AC_CONFIG_MACRO_DIRS([m4])
+
+AM_GNU_GETTEXT_VERSION([0.25])
+AM_GNU_GETTEXT([external])
PACKAGE_COPYRIGHT="Copyright (C) 2016-2022 Masamichi Hosoda"
PACKAGE_LICENSE="License: GPL3+"

View File

@@ -0,0 +1,53 @@
{
autoreconfHook,
fetchFromGitHub,
ghostscript,
lib,
pkg-config,
poppler,
stdenv,
texlive,
}:
stdenv.mkDerivation rec {
pname = "extractpdfmark";
version = "1.1.1";
src = fetchFromGitHub {
owner = "trueroad";
repo = "extractpdfmark";
rev = "v${version}";
hash = "sha256-pNc/SWAtQWMbB2+lIQkJdBYSZ97iJXK71mS59qQa7Hs=";
};
patches = [
./gettext-0.25.patch
];
strictDeps = true;
nativeBuildInputs = [
autoreconfHook
pkg-config
];
buildInputs = [
poppler
];
doCheck = true;
nativeCheckInputs = [
ghostscript
texlive.combined.scheme-minimal
];
meta = with lib; {
homepage = "https://github.com/trueroad/extractpdfmark";
description = "Extract page mode and named destinations as PDFmark from PDF";
license = licenses.gpl3Plus;
maintainers = [ maintainers.samueltardieu ];
platforms = platforms.all;
mainProgram = "extractpdfmark";
};
}

View File

@@ -0,0 +1,74 @@
{
lib,
stdenv,
fetchurl,
libGLU,
libGL,
libX11,
xorgproto,
tcl,
libglut,
freetype,
sfml_2,
libXi,
libXmu,
libXext,
libXt,
libSM,
libICE,
libpng,
pkg-config,
gettext,
intltool,
}:
stdenv.mkDerivation (finalAttrs: {
version = "0.8.4";
pname = "extremetuxracer";
src = fetchurl {
url = "mirror://sourceforge/extremetuxracer/etr-${finalAttrs.version}.tar.xz";
hash = "sha256-+jKFzAx1Wlr/Up8/LOo1FkgRFMa0uOHsB2n+7/BHc+U=";
};
nativeBuildInputs = [
pkg-config
intltool
];
buildInputs = [
libGLU
libGL
libX11
xorgproto
tcl
libglut
freetype
sfml_2
libXi
libXmu
libXext
libXt
libSM
libICE
libpng
gettext
];
configureFlags = [ "--with-tcl=${tcl}/lib" ];
preConfigure = ''
export NIX_CFLAGS_COMPILE="$NIX_CFLAGS_COMPILE"
'';
meta = {
description = "High speed arctic racing game based on Tux Racer";
longDescription = ''
ExtremeTuxRacer - Tux lies on his belly and accelerates down ice slopes.
'';
license = lib.licenses.gpl2Plus;
homepage = "https://sourceforge.net/projects/extremetuxracer/";
maintainers = [ ];
mainProgram = "etr";
platforms = with lib.platforms; linux;
};
})

View File

@@ -0,0 +1,27 @@
{
lib,
buildGoModule,
fetchFromGitHub,
}:
buildGoModule rec {
pname = "extrude";
version = "0.0.12";
src = fetchFromGitHub {
owner = "liamg";
repo = "extrude";
rev = "v${version}";
hash = "sha256-7gCEBhnNU5CqC5n0KP4Dd/fmddPRwNqyMFXTrRrJjfU=";
};
vendorHash = "sha256-8qjIYPkWtYTvl7wAnefpZAjbNSQLQFqRnGGccYZ8ZmU=";
meta = with lib; {
description = "Tool to analyse binaries for missing security features";
mainProgram = "extrude";
homepage = "https://github.com/liamg/extrude";
license = with licenses; [ mit ];
maintainers = with maintainers; [ fab ];
};
}

View File

@@ -0,0 +1,35 @@
{
lib,
stdenv,
fetchurl,
e2fsprogs,
}:
stdenv.mkDerivation {
version = "0.2.4";
pname = "extundelete";
src = fetchurl {
url = "mirror://sourceforge/extundelete/extundelete-0.2.4.tar.bz2";
sha256 = "1x0r7ylxlp9lbj3d7sqf6j2a222dwy2nfpff05jd6mkh4ihxvyd1";
};
buildInputs = [ e2fsprogs ];
# inode field i_dir_acl was repurposed as i_size_high in e2fsprogs 1.44,
# breaking the build
patchPhase = ''
substituteInPlace src/insertionops.cc \
--replace "Directory ACL:" "High 32 bits of size:" \
--replace "inode.i_dir_acl" "inode.i_size_high"
'';
meta = with lib; {
description = "Utility that can recover deleted files from an ext3 or ext4 partition";
homepage = "https://extundelete.sourceforge.net/";
license = licenses.gpl2Only;
platforms = platforms.linux;
maintainers = [ ];
mainProgram = "extundelete";
};
}

View File

@@ -0,0 +1,75 @@
{
lib,
stdenv,
fetchFromGitHub,
SDL2,
autoconf,
autoconf-archive,
autoreconfHook,
automake,
libogg,
libtool,
libvorbis,
libX11,
pkg-config,
zlib,
enableTools ? false,
}:
stdenv.mkDerivation rec {
pname = "exult";
version = "1.12.0";
src = fetchFromGitHub {
owner = "exult";
repo = "exult";
rev = "v${version}";
hash = "sha256-SZwYaqTTWESNRphXefa3JyH988y3WiaIr12yORhiFow=";
};
# We can't use just DESTDIR because with it we'll have /nix/store/...-exult-1.12.0/nix/store/...-exult-1.12.0/bin
postPatch = ''
substituteInPlace macosx/macosx.am \
--replace-fail DESTDIR NIX_DESTDIR
'';
nativeBuildInputs = [
autoconf
autoconf-archive
autoreconfHook
automake
libtool
pkg-config
];
buildInputs = [
SDL2
libogg
libvorbis
libX11
zlib
];
enableParallelBuilding = true;
makeFlags = [ "NIX_DESTDIR=$(out)" ]; # see postPatch
configureFlags = lib.optional (!enableTools) "--disable-tools";
meta = with lib; {
description = "Recreation of Ultima VII for modern operating systems";
longDescription = ''
Ultima VII, an RPG from the early 1990's, still has a huge following. But,
being a DOS game with a very nonstandard memory manager, it is difficult
to run it on the latest computers. Exult is a project that created an
Ultima VII game engine that runs on modern operating systems, capable of
using the data and graphics files that come with the game. Exult aims to
let those people who own Ultima VII play the game on modern hardware, in
as close to (or perhaps even surpassing) its original splendor as is
possible.
'';
homepage = "http://exult.info";
license = licenses.gpl2Plus;
maintainers = [ ];
mainProgram = "exult";
};
}