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,43 @@
{
stdenv,
unstableGitUpdater,
fetchFromGitHub,
lib,
}:
stdenv.mkDerivation {
pname = "unarc";
version = "0-unstable-2020-06-05";
src = fetchFromGitHub {
owner = "xredor";
repo = "unarc";
rev = "adc333d6cdd76d72da254cc80d766fbbcc683c95";
hash = "sha256-ysOei44P3K+aA+h73DuHlgwTKqQx/Xq8z+DefB6Qhcs=";
};
postPatch = ''
substituteInPlace 'CUI.h' \
--replace-fail 'fgets(answer, 256, stdin);' 'if (!fgets (answer, 256, stdin)) return FALSE;' \
--replace-fail 'printf (help)' 'printf ("%s", help)'
'';
installPhase = ''
runHook preInstall
mkdir -p $out/bin
install -m755 unarc $out/bin
runHook postInstall
'';
passthru.updateScript = unstableGitUpdater { };
meta = {
description = "Unpacker for ArC (FreeArc) archives ('ArC\\1' header)";
homepage = "https://github.com/xredor/unarc";
license = lib.licenses.unfree; # unknown
maintainers = [ lib.maintainers.lucasew ];
mainProgram = "unarc";
};
}

View File

@@ -0,0 +1,150 @@
{
lib,
libiconv,
python3,
fetchFromGitHub,
gitUpdater,
makeWrapper,
rustPlatform,
stdenvNoCC,
e2fsprogs,
erofs-utils,
jefferson,
lz4,
lziprecover,
lzop,
p7zip,
partclone,
sasquatch,
sasquatch-v4be,
simg2img,
ubi_reader,
unar,
upx,
zstd,
versionCheckHook,
}:
let
# These dependencies are only added to PATH
runtimeDeps = [
e2fsprogs
erofs-utils
jefferson
lziprecover
lzop
p7zip
sasquatch
sasquatch-v4be
ubi_reader
simg2img
unar
upx
zstd
lz4
]
++ lib.optional stdenvNoCC.isLinux partclone;
in
python3.pkgs.buildPythonApplication rec {
pname = "unblob";
version = "25.5.26";
pyproject = true;
disabled = python3.pkgs.pythonOlder "3.9";
src = fetchFromGitHub {
owner = "onekey-sec";
repo = "unblob";
tag = version;
hash = "sha256-vTakXZFAcD3cmd+y4CwYg3X4O4NmtOzuqMLWLMX2Duk=";
forceFetchGit = true;
fetchLFS = true;
};
cargoDeps = rustPlatform.fetchCargoVendor {
inherit pname version src;
hash = "sha256-NirDPuAcKuNquMs9mBZoEkQf+QJ+cMd7JXjj1anB9Zw=";
};
strictDeps = true;
build-system = with python3.pkgs; [ poetry-core ];
buildInputs = lib.optionals stdenvNoCC.hostPlatform.isDarwin [ libiconv ];
dependencies = with python3.pkgs; [
arpy
attrs
click
cryptography
dissect-cstruct
lark
lief.py
python3.pkgs.lz4 # shadowed by pkgs.lz4
plotext
pluggy
pyfatfs
pyperscan
python-magic
pyzstd
rarfile
rich
structlog
treelib
];
nativeBuildInputs = with rustPlatform; [
makeWrapper
maturinBuildHook
cargoSetupHook
];
# These are runtime-only CLI dependencies, which are used through
# their CLI interface
pythonRemoveDeps = [
"jefferson"
"ubi-reader"
];
pythonRelaxDeps = [ "lz4" ];
pythonImportsCheck = [ "unblob" ];
makeWrapperArgs = [
"--prefix PATH : ${lib.makeBinPath runtimeDeps}"
];
nativeCheckInputs =
with python3.pkgs;
[
pytestCheckHook
pytest-cov # cannot use stub
versionCheckHook
]
++ runtimeDeps;
versionCheckProgramArg = "--version";
pytestFlags = [
"--no-cov"
];
disabledTests = [
# https://github.com/tytso/e2fsprogs/issues/152
"test_all_handlers[filesystem.extfs]"
];
passthru = {
updateScript = gitUpdater { };
# helpful to easily add these to a nix-shell environment
inherit runtimeDeps;
};
meta = {
description = "Extract files from any kind of container formats";
homepage = "https://unblob.org";
license = lib.licenses.mit;
platforms = lib.platforms.unix;
mainProgram = "unblob";
maintainers = with lib.maintainers; [ vlaci ];
};
}

View File

@@ -0,0 +1,38 @@
{
lib,
rustPlatform,
fetchFromGitHub,
makeWrapper,
calibre,
gitUpdater,
}:
rustPlatform.buildRustPackage rec {
pname = "unbook";
version = "0.9.1";
src = fetchFromGitHub {
owner = "ludios";
repo = "unbook";
rev = version;
hash = "sha256-whWWh/jQ4RkGA3T1VCmt6zhpQQCzh2jASYg69IlfEeo=";
};
cargoHash = "sha256-r4RWcz7TSP7wfo9mu8wfOyy7C4PIWkrSt4RyDY3/lQA=";
nativeBuildInputs = [ makeWrapper ];
postInstall = ''
wrapProgram $out/bin/unbook --prefix PATH : ${lib.makeBinPath [ calibre ]}
'';
passthru.updateScript = gitUpdater { };
meta = with lib; {
description = "Ebook to self-contained-HTML converter";
homepage = "https://unbook.ludios.org";
license = licenses.cc0;
maintainers = with maintainers; [ jmbaur ];
mainProgram = "unbook";
};
}

View File

@@ -0,0 +1,225 @@
{
stdenv,
lib,
fetchFromGitHub,
openssl,
nettle,
expat,
flex,
libevent,
libsodium,
protobufc,
hiredis,
python ? null,
swig,
dns-root-data,
pkg-config,
makeWrapper,
symlinkJoin,
bison,
nixosTests,
#
# By default unbound will not be built with systemd support. Unbound is a very
# common dependency. The transitive dependency closure of systemd also
# contains unbound.
# Since most (all?) (lib)unbound users outside of the unbound daemon usage do
# not need the systemd integration it is likely best to just default to no
# systemd integration.
# For the daemon use-case, that needs to notify systemd, use `unbound-with-systemd`.
#
withSystemd ? false,
systemd ? null,
# optionally support DNS-over-HTTPS as a server
withDoH ? false,
withECS ? false,
withDNSCrypt ? false,
withDNSTAP ? false,
withTFO ? false,
withRedis ? false,
# Avoid .lib depending on lib.getLib openssl
# The build gets a little hacky, so in some cases we disable this approach.
withSlimLib ? stdenv.hostPlatform.isLinux && !stdenv.hostPlatform.isMusl && !withDNSTAP,
# enable support for python plugins in unbound: note this is distinct from pyunbound
# see https://unbound.docs.nlnetlabs.nl/en/latest/developer/python-modules.html
withPythonModule ? false,
# enable support for .so plugins
withDynlibModule ? false,
withLto ? !stdenv.hostPlatform.isStatic && !stdenv.hostPlatform.isMinGW,
withMakeWrapper ? !stdenv.hostPlatform.isMinGW,
libnghttp2,
# for passthru.updateScript
nix-update-script,
# for passthru.tests
gnutls,
}:
stdenv.mkDerivation (finalAttrs: {
pname = "unbound";
version = "1.24.0";
src = fetchFromGitHub {
owner = "NLnetLabs";
repo = "unbound";
tag = "release-${finalAttrs.version}";
hash = "sha256-M5gn18HTgcpqsOZGtxPoQbQd5tPW3T4r0YeMK5Mwgls=";
};
outputs = [
"out"
"lib"
"man"
]; # "dev" would only split ~20 kB
nativeBuildInputs =
lib.optionals withMakeWrapper [ makeWrapper ]
++ lib.optionals withDNSTAP [ protobufc ]
++ [
pkg-config
flex
bison
]
++ lib.optionals withPythonModule [ swig ];
buildInputs = [
openssl
nettle
expat
libevent
]
++ lib.optionals withSystemd [ systemd ]
++ lib.optionals withDoH [ libnghttp2 ]
++ lib.optionals withPythonModule [ python ];
enableParallelBuilding = true;
configureFlags = [
"--with-ssl=${openssl.dev}"
"--with-libexpat=${expat.dev}"
"--with-libevent=${libevent.dev}"
"--localstatedir=/var"
"--sysconfdir=/etc"
"--sbindir=\${out}/bin"
"--with-rootkey-file=${dns-root-data}/root.key"
"--enable-pie"
"--enable-relro-now"
]
++ lib.optionals (!withLto) [
"--disable-flto"
]
++ lib.optionals withSystemd [
"--enable-systemd"
]
++ lib.optionals withPythonModule [
"--with-pythonmodule"
]
++ lib.optionals withDynlibModule [
"--with-dynlibmodule"
]
++ lib.optionals withDoH [
"--with-libnghttp2=${libnghttp2.dev}"
]
++ lib.optionals withECS [
"--enable-subnet"
]
++ lib.optionals withDNSCrypt [
"--enable-dnscrypt"
"--with-libsodium=${
symlinkJoin {
name = "libsodium-full";
paths = [
libsodium.dev
libsodium.out
];
}
}"
]
++ lib.optionals withDNSTAP [
"--enable-dnstap"
]
++ lib.optionals withTFO [
"--enable-tfo-client"
"--enable-tfo-server"
]
++ lib.optionals withRedis [
"--enable-cachedb"
"--with-libhiredis=${hiredis}"
];
PROTOC_C = lib.optionalString withDNSTAP "${protobufc}/bin/protoc-c";
# Remove references to compile-time dependencies that are included in the configure flags
postConfigure =
let
inherit (builtins) storeDir;
in
''
sed -E '/CONFCMDLINE/ s;${storeDir}/[a-z0-9]{32}-;${storeDir}/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-;g' -i config.h
'';
doCheck = true;
postPatch = lib.optionalString withPythonModule ''
substituteInPlace Makefile.in \
--replace "\$(DESTDIR)\$(PYTHON_SITE_PKG)" "$out/${python.sitePackages}"
'';
installFlags = [ "configfile=\${out}/etc/unbound/unbound.conf" ];
postInstall = ''
make unbound-event-install
''
+ lib.optionalString withMakeWrapper ''
wrapProgram $out/bin/unbound-control-setup \
--prefix PATH : ${lib.makeBinPath [ openssl ]}
''
+ lib.optionalString (withMakeWrapper && withPythonModule) ''
wrapProgram $out/bin/unbound \
--prefix PYTHONPATH : "$out/${python.sitePackages}" \
--argv0 $out/bin/unbound
'';
preFixup =
lib.optionalString withSlimLib
# Build libunbound again, but only against nettle instead of openssl.
# This avoids gnutls.out -> unbound.lib -> lib.getLib openssl.
''
appendToVar configureFlags "--with-nettle=${nettle.dev}"
appendToVar configureFlags "--with-libunbound-only"
configurePhase
buildPhase
if [ -n "$doCheck" ]; then
checkPhase
fi
installPhase
''
# get rid of runtime dependencies on $dev outputs
+ ''substituteInPlace "$lib/lib/libunbound.la" ''
+ lib.concatMapStrings (
pkg:
lib.optionalString (
pkg ? dev
) " --replace '-L${pkg.dev}/lib' '-L${pkg.out}/lib' --replace '-R${pkg.dev}/lib' '-R${pkg.out}/lib'"
) (builtins.filter (p: p != null) finalAttrs.buildInputs);
passthru = {
updateScript = nix-update-script {
extraArgs = [
"--version-regex=release-(.+)"
];
};
tests = {
inherit gnutls;
nixos-test = nixosTests.unbound;
nixos-test-exporter = nixosTests.prometheus-exporters.unbound;
};
};
meta = {
description = "Validating, recursive, and caching DNS resolver";
license = lib.licenses.bsd3;
homepage = "https://www.unbound.net";
maintainers = with lib.maintainers; [ Scrumplex ];
platforms = with lib.platforms; unix ++ windows;
};
})

View File

@@ -0,0 +1,78 @@
{
stdenv,
lib,
fetchurl,
copyDesktopItems,
makeDesktopItem,
makeWrapper,
jre,
libGL,
libpulseaudio,
libXxf86vm,
}:
let
version = "4.18.4";
desktopItem = makeDesktopItem {
name = "unciv";
exec = "unciv";
comment = "An open-source Android/Desktop remake of Civ V";
desktopName = "Unciv";
icon = "unciv";
categories = [ "Game" ];
};
desktopIcon = fetchurl {
url = "https://github.com/yairm210/Unciv/blob/${version}/extraImages/Icons/Unciv%20icon%20v6.png?raw=true";
hash = "sha256-Zuz+HGfxjGviGBKTiHdIFXF8UMRLEIfM8f+LIB/xonk=";
};
envLibPath = lib.makeLibraryPath (
lib.optionals stdenv.hostPlatform.isLinux [
libGL
libpulseaudio
libXxf86vm
]
);
in
stdenv.mkDerivation rec {
pname = "unciv";
inherit version;
src = fetchurl {
url = "https://github.com/yairm210/Unciv/releases/download/${version}/Unciv.jar";
hash = "sha256-xF9Y6pil7UZzrN0k/2qZ/FKSj7WudRwF3u167Sz3RyA=";
};
dontUnpack = true;
nativeBuildInputs = [
copyDesktopItems
makeWrapper
];
installPhase = ''
runHook preInstall
makeWrapper ${jre}/bin/java $out/bin/unciv \
--prefix LD_LIBRARY_PATH : "${envLibPath}" \
--prefix PATH : ${lib.makeBinPath [ jre ]} \
--add-flags "-jar ${src}"
install -Dm444 ${desktopIcon} $out/share/icons/hicolor/512x512/apps/unciv.png
runHook postInstall
'';
desktopItems = [ desktopItem ];
meta = with lib; {
description = "Open-source Android/Desktop remake of Civ V";
mainProgram = "unciv";
homepage = "https://github.com/yairm210/Unciv";
maintainers = with maintainers; [ tex ];
sourceProvenance = with sourceTypes; [ binaryBytecode ];
license = licenses.mpl20;
platforms = platforms.all;
};
}

View File

@@ -0,0 +1,60 @@
{
lib,
stdenv,
fetchFromGitHub,
libev,
libX11,
libXext,
libXi,
libXfixes,
pkg-config,
asciidoc,
libxslt,
docbook_xsl,
unstableGitUpdater,
}:
stdenv.mkDerivation {
pname = "unclutter-xfixes";
version = "1.6-unstable-2024-11-25";
src = fetchFromGitHub {
owner = "Airblader";
repo = "unclutter-xfixes";
rev = "0eb7a8f4365c05d09db048bd1a45f8943c1d5da3";
hash = "sha256-ipMifLFCh2vW8D9/KkxWL7W5T5dshRZ5wyQY0wgoaxQ=";
};
nativeBuildInputs = [
pkg-config
asciidoc
libxslt
docbook_xsl
];
buildInputs = [
libev
libX11
libXext
libXi
libXfixes
];
prePatch = ''
substituteInPlace Makefile --replace-fail 'PKG_CONFIG =' 'PKG_CONFIG ?='
'';
makeFlags = [ "CC=${stdenv.cc.targetPrefix}cc" ];
installFlags = [ "PREFIX=$(out)" ];
passthru.updateScript = unstableGitUpdater { };
meta = {
description = "Rewrite of unclutter using the X11 Xfixes extension";
homepage = "https://github.com/Airblader/unclutter-xfixes";
platforms = lib.platforms.unix;
license = lib.licenses.mit;
maintainers = [ lib.maintainers.ryand56 ];
mainProgram = "unclutter";
};
}

View File

@@ -0,0 +1,55 @@
{
lib,
stdenv,
fetchurl,
libX11,
}:
stdenv.mkDerivation rec {
pname = "unclutter";
version = "8";
src = fetchurl {
url = "https://www.ibiblio.org/pub/X11/contrib/utilities/unclutter-${version}.tar.gz";
sha256 = "33a78949a7dedf2e8669ae7b5b2c72067896497820292c96afaa60bb71d1f2a6";
};
buildInputs = [ libX11 ];
buildFlags = [
"CC=${stdenv.cc.targetPrefix}cc"
"CFLAGS=-std=c89"
];
installFlags = [
"DESTDIR=${placeholder "out"}"
"BINDIR=${placeholder "out"}/bin"
"MANPATH=${placeholder "out"}/share/man"
];
installTargets = [
"install"
"install.man"
];
preInstall = ''
mkdir -pv "$out"/{bin,share/man/man1}
'';
meta = with lib; {
description = "Hides mouse pointer while not in use";
longDescription = ''
Unclutter hides your X mouse cursor when you do not need it, to prevent
it from getting in the way. You have only to move the mouse to restore
the mouse cursor. Unclutter is very useful in tiling wm's where you do
not need the mouse often.
Just run it from your .bash_profile like that:
unclutter -idle 1 &
'';
maintainers = [ ];
platforms = platforms.unix;
license = lib.licenses.publicDomain;
mainProgram = "unclutter";
};
}

View File

@@ -0,0 +1,35 @@
{
lib,
buildGoModule,
fetchFromGitHub,
nix-update-script,
}:
buildGoModule {
pname = "unconvert";
version = "0-unstable-2025-02-16";
src = fetchFromGitHub {
owner = "mdempsky";
repo = "unconvert";
rev = "4a038b3d31f56ff5ba511953b745c80a2317e4ae";
hash = "sha256-97H5rlb4buRT6I3OUID8/UARFtCTDhIxnPCkpFF9RDs=";
};
vendorHash = "sha256-Yh33ZvQoMG9YM8bdxlMYEIwH2QMTwv2HSYSmA4C9EpA=";
ldflags = [
"-s"
"-w"
];
passthru.updateScript = nix-update-script { extraArgs = lib.singleton "--version=branch"; };
meta = with lib; {
description = "Remove unnecessary type conversions from Go source";
mainProgram = "unconvert";
homepage = "https://github.com/mdempsky/unconvert";
license = licenses.bsd3;
maintainers = with maintainers; [ kalbasit ];
};
}

View File

@@ -0,0 +1,48 @@
{
lib,
buildGoModule,
fetchFromGitHub,
versionCheckHook,
}:
buildGoModule rec {
pname = "uncover";
version = "1.1.0";
src = fetchFromGitHub {
owner = "projectdiscovery";
repo = "uncover";
tag = "v${version}";
hash = "sha256-BRh25lvk3Zut5M6dedLuSET4514R9j0fUHmamw4rp5U=";
};
vendorHash = "sha256-6TvPKp/P0v/ZJRGRICp77C/8FHupyr9Hy2+zlYc2HIU=";
subPackages = [ "cmd/uncover" ];
nativeInstallCheckInputs = [ versionCheckHook ];
ldflags = [
"-s"
"-w"
];
doInstallCheck = true;
versionCheckProgramArg = "-version";
meta = {
description = "API wrapper to search for exposed hosts";
longDescription = ''
uncover is a go wrapper using APIs of well known search engines to quickly
discover exposed hosts on the internet. It is built with automation in mind,
so you can query it and utilize the results with your current pipeline tools.
Currently, it supports shodan,shodan-internetdb, censys, and fofa search API.
'';
homepage = "https://github.com/projectdiscovery/uncover";
changelog = "https://github.com/projectdiscovery/uncover/releases/tag/v${version}";
license = lib.licenses.mit;
maintainers = with lib.maintainers; [ fab ];
mainProgram = "uncover";
};
}

View File

@@ -0,0 +1,33 @@
{
lib,
stdenv,
fetchFromGitHub,
cmake,
python3,
}:
stdenv.mkDerivation rec {
pname = "uncrustify";
version = "0.81.0";
src = fetchFromGitHub {
owner = "uncrustify";
repo = "uncrustify";
rev = "uncrustify-${version}";
sha256 = "sha256-8KTsrXUYOfqsWSGBAl0mZpGOYr+duFrRB0ITmq2Auqg=";
};
nativeBuildInputs = [
cmake
python3
];
meta = with lib; {
description = "Source code beautifier for C, C++, C#, ObjectiveC, D, Java, Pawn and VALA";
mainProgram = "uncrustify";
homepage = "https://uncrustify.sourceforge.net/";
license = licenses.gpl2Plus;
platforms = platforms.unix;
maintainers = [ maintainers.bjornfor ];
};
}

View File

@@ -0,0 +1,28 @@
{
lib,
stdenv,
fetchFromGitHub,
}:
stdenv.mkDerivation {
pname = "undaemonize";
version = "0-unstable-2017-07-11";
src = fetchFromGitHub {
repo = "undaemonize";
owner = "nickstenning";
rev = "a181cfd900851543ee1f85fe8f76bc8916b446d4";
sha256 = "1fkrgj3xfhj820qagh5p0rabl8z2hpad6yp984v92h9pgbfwxs33";
};
installPhase = ''
install -D undaemonize $out/bin/undaemonize
'';
meta = {
description = "Tiny helper utility to force programs which insist on daemonizing themselves to run in the foreground";
homepage = "https://github.com/nickstenning/undaemonize";
license = lib.licenses.mit;
maintainers = [ lib.maintainers.canndrew ];
platforms = lib.platforms.linux;
mainProgram = "undaemonize";
};
}

View File

@@ -0,0 +1,34 @@
{
lib,
stdenv,
fetchFromGitHub,
autoreconfHook,
}:
stdenv.mkDerivation (finalAttrs: {
pname = "undbx";
version = "0.22-unstable-2019-02-11";
src = fetchFromGitHub {
owner = "ZungBang";
repo = "undbx";
rev = "5e31c757e137a6409115cac0623d61d384019b7a";
hash = "sha256-leregcv3dv/D3WvFkYyjQePdKi4BgE0aj5PY6JiSKl8=";
};
nativeBuildInputs = [ autoreconfHook ];
postPatch = ''
substituteInPlace Makefile.am \
--replace-fail "-Werror" "" \
--replace-fail "bin_SCRIPTS" "#bin_SCRIPTS"
'';
meta = with lib; {
description = "Extract e-mail messages from Outlook Express DBX files";
homepage = "https://github.com/ZungBang/undbx";
maintainers = with maintainers; [ d3vil0p3r ];
platforms = platforms.unix;
license = licenses.gpl3Plus;
mainProgram = "undbx";
};
})

View File

@@ -0,0 +1,35 @@
{
lib,
stdenvNoCC,
fetchzip,
}:
stdenvNoCC.mkDerivation {
pname = "undefined-medium";
version = "1.3";
src = fetchzip {
url = "https://github.com/andirueckel/undefined-medium/archive/v1.3.zip";
hash = "sha256-cVdk6a0xijAQ/18W5jalqRS7IiPufMJW27Scns+nbEY=";
};
installPhase = ''
runHook preInstall
install -Dm644 fonts/otf/*.otf -t $out/share/fonts/opentype
runHook postInstall
'';
meta = with lib; {
homepage = "https://undefined-medium.com/";
description = "Pixel grid-based monospace typeface";
longDescription = ''
undefined medium is a free and open-source pixel grid-based
monospace typeface suitable for programming, writing, and
whatever else you can think of its pretty undefined.
'';
license = licenses.ofl;
platforms = platforms.all;
};
}

View File

@@ -0,0 +1,48 @@
{
lib,
python3Packages,
fetchFromGitLab,
}:
python3Packages.buildPythonApplication rec {
pname = "undertime";
version = "4.3.0";
pyproject = true;
src = fetchFromGitLab {
owner = "anarcat";
repo = "undertime";
tag = version;
hash = "sha256-sQI+fpg5PFGCsS9xikMTi4Ad76TayP13UgZag6CRBxE=";
};
nativeBuildInputs = with python3Packages; [
setuptools
setuptools-scm
];
dependencies = with python3Packages; [
dateparser
ephem
pytz
pyyaml
termcolor
tabulate
tzlocal
];
meta = {
changelog = "https://gitlab.com/anarcat/undertime/-/raw/${version}/debian/changelog";
description = "Pick a meeting time across timezones from the commandline";
homepage = "https://gitlab.com/anarcat/undertime";
longDescription = ''
Undertime draws a simple 24 hour table of matching times across
different timezones or cities, outlining waking hours. This allows
picking an ideal meeting date across multiple locations for teams
working internationally.
'';
license = lib.licenses.agpl3Only;
mainProgram = "undertime";
maintainers = with lib.maintainers; [ dvn0 ];
};
}

View File

@@ -0,0 +1,37 @@
{
lib,
fetchFromGitHub,
python3Packages,
}:
python3Packages.buildPythonApplication rec {
pname = "undervolt";
version = "0.4.0";
pyproject = true;
src = fetchFromGitHub {
owner = "georgewhewell";
repo = "undervolt";
rev = version;
hash = "sha256-G+CK/lnZXkQdyNZPqY9P3owVJsd22H3K8wSpjHFG0ow=";
};
build-system = with python3Packages; [ setuptools ];
pythonImportsCheck = [ "undervolt" ];
meta = with lib; {
homepage = "https://github.com/georgewhewell/undervolt/";
description = "Program for undervolting Intel CPUs on Linux";
mainProgram = "undervolt";
longDescription = ''
Undervolt is a program for undervolting Intel CPUs under Linux. It works in a similar
manner to the Windows program ThrottleStop (i.e, MSR 0x150). You can apply a fixed
voltage offset to one of 5 voltage planes, and override your systems temperature
target (CPU will throttle when this temperature is reached).
'';
license = licenses.gpl2Only;
platforms = [ "x86_64-linux" ];
};
}

View File

@@ -0,0 +1,43 @@
{
lib,
stdenv,
chromedriver,
python3,
testers,
}:
stdenv.mkDerivation (finalAttrs: {
pname = "undetected-chromedriver";
inherit (chromedriver) version;
nativeBuildInputs = [ (python3.withPackages (ps: [ ps.undetected-chromedriver ])) ];
buildCommand = ''
export HOME=$(mktemp -d)
cp ${chromedriver}/bin/chromedriver .
chmod +w chromedriver
python <<EOF
import logging
from undetected_chromedriver.patcher import Patcher
logging.basicConfig(level=logging.DEBUG)
success = Patcher(executable_path="chromedriver").patch()
assert success, "Failed to patch ChromeDriver"
EOF
install -D -m 0555 chromedriver $out/bin/undetected-chromedriver
'';
passthru.tests.version = testers.testVersion { package = finalAttrs.finalPackage; };
meta = chromedriver.meta // {
description = "Custom Selenium ChromeDriver that passes all bot mitigation systems";
mainProgram = "undetected-chromedriver";
maintainers = [ ];
};
})

View File

@@ -0,0 +1,82 @@
{
lib,
stdenvNoCC,
fetchFromGitHub,
fetchpatch,
coreutils,
gnused,
libnotify,
pulseaudio,
sound-theme-freedesktop,
xprop,
}:
stdenvNoCC.mkDerivation {
pname = "undistract-me";
version = "0-unstable-2020-08-09";
src = fetchFromGitHub {
owner = "jml";
repo = "undistract-me";
rev = "2f8ac25c6ad8efcf160d2b480825b1cbb6772aab";
hash = "sha256-Qw7Cu9q0ZgK/RTvyDdHM5N3eBaKjtYqYH0J+hKMUZX8=";
};
patches = [
# Don't block the terminal when notification sound is played
#
# See https://github.com/jml/undistract-me/pull/69
(fetchpatch {
url = "https://github.com/jml/undistract-me/commit/2356ebbe8bf2bcb4b95af1ae2bcdc786ce7cc6e8.patch";
sha256 = "sha256-Ij3OXTOnIQsYhKVmqjChhN1q4ASZ7waOkfQTTp5XfPo=";
})
# Fix showing notifications when using Wayland apps with XWayland
# running, or connection to X server fails.
#
# NOTE: Without a real X server, notifications will not be
# suppressed when the window running the command is focused.
#
# See https://github.com/jml/undistract-me/pull/71
(fetchpatch {
url = "https://github.com/jml/undistract-me/commit/3f4ceaf5a4eba8e3cb02236c48247f87e3d1124f.patch";
sha256 = "sha256-9AK9Jp3TXJ75Y+jwZXlwQ6j54FW1rOBddoktrm0VX68=";
})
];
strictDeps = true;
# Patch in dependencies. Can't use makeWrapper because the bash
# functions will be sourced and invoked in a different environment
# for each command invocation.
postPatch = ''
for script in *.bash *.sh; do
substituteInPlace "$script" \
--replace /usr/share/undistract-me "$out/share/undistract-me" \
--replace basename ${coreutils}/bin/basename \
--replace 'cut ' '${coreutils}/bin/cut ' \
--replace date ${coreutils}/bin/date \
--replace dirname ${coreutils}/bin/dirname \
--replace sed ${gnused}/bin/sed \
--replace notify-send ${libnotify}/bin/notify-send \
--replace paplay ${pulseaudio}/bin/paplay \
--replace /usr/share/sounds/freedesktop ${sound-theme-freedesktop}/share/sounds/freedesktop \
--replace xprop ${xprop}/bin/xprop
done
'';
installPhase = ''
mkdir -p "$out/share/undistract-me" "$out/etc/profile.d" "$out/share/licenses/undistract-me"
cp long-running.bash "$out/share/undistract-me"
cp preexec.bash "$out/share/undistract-me"
cp undistract-me.sh "$out/etc/profile.d"
cp LICENSE "$out/share/licenses/undistract-me"
'';
meta = with lib; {
description = "Notifies you when long-running terminal commands complete";
homepage = "https://github.com/jml/undistract-me";
license = licenses.mit;
maintainers = with maintainers; [ kira-bruneau ];
};
}

View File

@@ -0,0 +1,47 @@
{
lib,
stdenv,
fetchFromGitHub,
zlib,
bzip2,
lzfse,
xz,
pkg-config,
}:
stdenv.mkDerivation {
pname = "undmg";
version = "1.1.0-unstable-2024-08-02";
src = fetchFromGitHub {
owner = "matthewbauer";
repo = "undmg";
rev = "0d92602b694f810fa4b137d87c743f345b303a14";
hash = "sha256-eLxI3enf8EAgQePXvWxw8kOMr7KP2Q1Rsxy++v16zQI=";
};
nativeBuildInputs = [ pkg-config ];
buildInputs = [
zlib
bzip2
lzfse
xz
];
setupHook = ./setup-hook.sh;
makeFlags = [ "PREFIX=$(out)" ];
meta = {
description = "Extract a DMG file";
homepage = "https://github.com/matthewbauer/undmg";
license = lib.licenses.gpl3;
mainProgram = "undmg";
maintainers = with lib.maintainers; [
matthewbauer
lnl7
];
platforms = lib.platforms.all;
};
}

View File

@@ -0,0 +1,5 @@
unpackCmdHooks+=(_tryUnpackDmg)
_tryUnpackDmg() {
if ! [[ "$curSrc" =~ \.dmg$ ]]; then return 1; fi
undmg "$curSrc"
}

View File

@@ -0,0 +1,40 @@
{
lib,
buildGoModule,
fetchFromGitea,
gnumake,
}:
let
version = "1.2.3";
hash = "sha256-hyP85pYtXxucAliilUt9Y2qnrfPeSjeGsYEFJndJWyA=";
src = fetchFromGitea {
domain = "git.jakstys.lt";
owner = "motiejus";
repo = "undocker";
rev = "v${version}";
hash = hash;
};
in
buildGoModule {
pname = "undocker";
inherit version src;
nativeBuildInputs = [ gnumake ];
buildPhase = "make VSN=v${version} VSNHASH=${hash} undocker";
installPhase = "install -D undocker $out/bin/undocker";
vendorHash = null;
meta = with lib; {
homepage = "https://git.jakstys.lt/motiejus/undocker";
description = "CLI tool to convert a Docker image to a flattened rootfs tarball";
license = licenses.asl20;
maintainers = with maintainers; [
jordanisaacs
motiejus
];
mainProgram = "undocker";
};
}

View File

@@ -0,0 +1,37 @@
{
lib,
fetchFromGitHub,
stdenvNoCC,
nodejs,
}:
stdenvNoCC.mkDerivation {
pname = "undollar";
version = "1.0.0-unstable-2018-09-14";
src = fetchFromGitHub {
owner = "xtyrrell";
repo = "undollar";
# Upstream has no tagged version
rev = "27e5f0f87ddc4c9b58fe02a68e83a601078ebb43";
hash = "sha256-2nudiUh8B5tSg3TeKh1FEJaf8MJ18/IkYikFD07c4Pw=";
};
installPhase = ''
runHook preInstall
mkdir -p $out/bin
mv undollar.js $out/bin/$
substituteInPlace $out/bin/$ \
--replace-fail "/usr/bin/env node" "${lib.getExe nodejs}"
runHook postInstall
'';
meta = {
description = "Eat the dollar sign in the command you just pasted into your terminal";
mainProgram = "$";
homepage = "https://github.com/xtyrrell/undollar";
license = lib.licenses.mit;
maintainers = with lib.maintainers; [ pyrox0 ];
inherit (nodejs.meta) platforms;
};
}

View File

@@ -0,0 +1,35 @@
{
lib,
buildGoModule,
fetchFromSourcehut,
ffmpeg,
makeWrapper,
}:
buildGoModule rec {
pname = "unflac";
version = "1.3";
src = fetchFromSourcehut {
owner = "~ft";
repo = "unflac";
rev = version;
sha256 = "sha256-xJEVrzooNcS3zEKeF6DB7ZRZEjHfC7dGKgQfswxbD+U=";
};
vendorHash = "sha256-IQHxEYv6l8ORoX+a3Szox9tS2fyBk0tpK+Q1AsWohX0=";
nativeBuildInputs = [ makeWrapper ];
postFixup = ''
wrapProgram $out/bin/unflac --prefix PATH : "${lib.makeBinPath [ ffmpeg ]}"
'';
meta = with lib; {
description = "Command line tool for fast frame accurate audio image + cue sheet splitting";
homepage = "https://sr.ht/~ft/unflac/";
license = licenses.mit;
platforms = platforms.all;
maintainers = with maintainers; [ felipeqq2 ];
mainProgram = "unflac";
};
}

View File

@@ -0,0 +1,35 @@
{
lib,
stdenvNoCC,
fetchurl,
}:
stdenvNoCC.mkDerivation rec {
pname = "unfonts-core";
version = "1.0.2-080608";
src = fetchurl {
url = "https://kldp.net/unfonts/release/2607-un-fonts-core-${version}.tar.gz";
hash = "sha256-OwpydPmqt+jw8ZOMAacOFYF2bVG0lLoUVoPzesVXkY4=";
};
installPhase = ''
runHook preInstall
install -m444 -Dt $out/share/fonts/truetype *.ttf
runHook postInstall
'';
meta = with lib; {
homepage = "https://kldp.net/unfonts/";
description = "Korean Hangul typeface collection";
longDescription = ''
The Un-fonts come from the HLaTeX as type1 fonts in 1998 by Koaunghi Un, he made type1 fonts to use with Korean TeX (HLaTeX) in the late 1990's and released it under the GPL license.
They were converted to TrueType with the FontForge (PfaEdit) by Won-kyu Park in 2003.
'';
license = licenses.gpl2;
platforms = platforms.all;
};
}

View File

@@ -0,0 +1,85 @@
{
fetchFromGitHub,
fetchpatch2,
lib,
stdenv,
flex,
bison,
autoreconfHook,
pkg-config,
libtirpc,
versionCheckHook,
nix-update-script,
}:
stdenv.mkDerivation rec {
pname = "unfs3";
version = "0.10.0";
src = fetchFromGitHub {
owner = "unfs3";
repo = "unfs3";
rev = "refs/tags/unfs3-${version}";
hash = "sha256-5iAriIutBhwyZVS7AG2fnkrHOI7pNAKfYv062Cy0WXw=";
};
patches = [
# Fix implicit declaration warning with GCC 14
(fetchpatch2 {
url = "https://gitlab.alpinelinux.org/alpine/aports/-/raw/152dc14a65a89f253294cc5b4c96cf0d6658711a/main/unfs3/implicit.patch";
hash = "sha256-zrF87fJhc8mDgIs0vsMoqIHYQPtKWn2XMBSePvHOByA=";
})
];
nativeBuildInputs = [
flex
bison
autoreconfHook
pkg-config
];
buildInputs = [ libtirpc ];
configureFlags = [ "--disable-shared" ];
doCheck = false; # no test suite
nativeInstallCheckInputs = [
versionCheckHook
];
versionCheckProgram = "${placeholder "out"}/bin/unfsd";
versionCheckProgramArg = "-h";
doInstallCheck = true;
passthru = {
updateScript = nix-update-script {
extraArgs = [
"--version-regex"
"${pname}-(.*)"
];
};
};
meta = {
description = "User-space NFSv3 file system server";
longDescription = ''
UNFS3 is a user-space implementation of the NFSv3 server
specification. It provides a daemon for the MOUNT and NFS
protocols, which are used by NFS clients for accessing files on the
server.
'';
# The old http://unfs3.sourceforge.net/ has a <meta>
# http-equiv="refresh" pointing here, so we can assume that
# whoever controls the old URL approves of the "unfs3" github
# account.
homepage = "https://unfs3.github.io/";
changelog = "https://raw.githubusercontent.com/unfs3/unfs3/unfs3-${version}/NEWS";
mainProgram = "unfsd";
license = lib.licenses.bsd3;
platforms = lib.platforms.unix;
maintainers = [ ];
};
}

View File

@@ -0,0 +1,38 @@
{
fetchFromGitHub,
lib,
nix-update-script,
versionCheckHook,
rustPlatform,
}:
rustPlatform.buildRustPackage (finalAttrs: {
pname = "unftp";
version = "0.15.1";
src = fetchFromGitHub {
owner = "bolcom";
repo = "unftp";
tag = "v${finalAttrs.version}";
hash = "sha256-M6+4AYE2Wls2+LoPx3LSLHIWgWu9SMOIaNLVbXWKqGY=";
};
cargoHash = "sha256-P3TjRzo1TJE1LW+jbF0HOWeVXYsvwaZ+5CI+kH4jZNQ=";
nativeInstallCheckInputs = [
versionCheckHook
];
versionCheckProgramArg = "--version";
doInstallCheck = true;
passthru = {
updateScript = nix-update-script { };
};
meta = {
description = "FTP(S) server with a couple of twists written in Rust";
homepage = "https://unftp.rs/";
license = lib.licenses.asl20;
maintainers = with lib.maintainers; [ aiyion ];
mainProgram = "unftp";
};
})

View File

@@ -0,0 +1,37 @@
{
lib,
buildGoModule,
fetchFromGitHub,
}:
buildGoModule rec {
pname = "unfurl";
version = "0.4.3";
src = fetchFromGitHub {
owner = "tomnomnom";
repo = "unfurl";
rev = "v${version}";
hash = "sha256-7aLe5d8ku5llfJ2xh8fT56vqj12/CJ1ez3Vte2PF8KQ=";
};
vendorHash = "sha256-Kpd916+jjGvw56N122Ej4CXVcv1/xr1THkjsrhkIy+U=";
ldflags = [
"-s"
"-w"
];
# tests tries to download a list of tlds from the internet
postPatch = ''
echo com > /tmp/.tlds
'';
meta = with lib; {
description = "Pull out bits of URLs provided on stdin";
mainProgram = "unfurl";
homepage = "https://github.com/tomnomnom/unfurl";
license = licenses.mit;
maintainers = with maintainers; [ figsoda ];
};
}

View File

@@ -0,0 +1,33 @@
{
lib,
buildNpmPackage,
fetchFromGitHub,
}:
buildNpmPackage rec {
pname = "ungit";
version = "1.5.28";
src = fetchFromGitHub {
owner = "FredrikNoren";
repo = "ungit";
rev = "v${version}";
hash = "sha256-zLc+qzbbaQs6Y3NJFHupxyZ0QfuM/VW97dFESR+5dVQ=";
};
npmDepsHash = "sha256-pYOBdCb6G24JBGWOhd4fyVEEUn19D9t/GxjjIi/2ya0=";
env = {
ELECTRON_SKIP_BINARY_DOWNLOAD = true;
PUPPETEER_SKIP_DOWNLOAD = true;
};
meta = {
changelog = "https://github.com/FredrikNoren/ungit/blob/${src.rev}/CHANGELOG.md";
description = "Git made easy";
homepage = "https://github.com/FredrikNoren/ungit";
license = lib.licenses.mit;
mainProgram = "ungit";
maintainers = [ ];
};
}

View File

@@ -0,0 +1,60 @@
{
fetchFromGitHub,
lib,
python3Packages,
unhide,
}:
python3Packages.buildPythonApplication rec {
pname = "unhide-gui";
version = "20240510";
format = "other";
src = fetchFromGitHub {
owner = "YJesus";
repo = "Unhide";
tag = "v${version}";
hash = "sha256-CcS/rR/jPgbcF09aM4l6z52kwFhdQI1VZOyDF2/X6Us=";
};
propagatedBuildInputs = with python3Packages; [ tkinter ];
buildInputs = [ unhide ];
postPatch = ''
substituteInPlace unhideGui.py \
--replace-fail "\This" "This" \
--replace-fail "__credits__" "#__credits__" \
--replace-fail "./unhide-linux" "${unhide}/bin/unhide-linux" \
--replace-fail "./unhide-tcp" "${unhide}/bin/unhide-tcp"
'';
installPhase = ''
runHook preInstall
mkdir -p $out/{bin,share/unhideGui}
cp -R *.py $out/share/unhideGui
runHook postInstall
'';
fixupPhase = ''
runHook preFixup
makeWrapper "${python3Packages.python.interpreter}" "$out/bin/unhideGui" \
--set PYTHONPATH "$PYTHONPATH" \
--add-flags "$out/share/unhideGui/unhideGui.py"
runHook postFixup
'';
meta = {
description = "Forensic tool to find hidden processes and TCP/UDP ports by rootkits, LKMs or other hiding technique";
homepage = "https://github.com/YJesus/Unhide";
changelog = "https://github.com/YJesus/Unhide/blob/${src.rev}/NEWS";
license = lib.licenses.gpl3Only;
maintainers = with lib.maintainers; [ tochiaha ];
mainProgram = "unhide-gui";
platforms = lib.platforms.all;
};
}

View File

@@ -0,0 +1,64 @@
{
lib,
stdenv,
fetchFromGitHub,
fetchurl,
cmake,
iproute2,
lsof,
net-tools,
pkg-config,
procps,
psmisc,
}:
let
makefile = fetchurl {
url = "https://gitlab.archlinux.org/archlinux/packaging/packages/unhide/-/raw/27c25ad5e1c6123e89f1f35423a0d50742ae69e9/Makefile";
hash = "sha256-bSo3EzpcsFmVvwyPgjCCDOJLbzNpxJ6Eptp2hNK7ZXk=";
};
in
stdenv.mkDerivation (finalAttrs: {
pname = "unhide";
version = "20240510";
src = fetchFromGitHub {
owner = "YJesus";
repo = "Unhide";
tag = "v${finalAttrs.version}";
hash = "sha256-CcS/rR/jPgbcF09aM4l6z52kwFhdQI1VZOyDF2/X6Us=";
};
postPatch = ''
cp ${makefile} Makefile
'';
dontConfigure = true;
makeFlags = [ "PREFIX=${placeholder "out"}" ];
strictDeps = true;
nativeBuildInputs = [
cmake
pkg-config
];
buildInputs = [
iproute2
lsof
net-tools
procps
psmisc
];
meta = {
description = "Forensic tool to find hidden processes and TCP/UDP ports by rootkits/LKMs";
homepage = "https://github.com/YJesus/Unhide";
changelog = "https://github.com/YJesus/Unhide/blob/${finalAttrs.src.rev}/NEWS";
license = lib.licenses.gpl3Only;
maintainers = with lib.maintainers; [ tochiaha ];
mainProgram = "unhide";
platforms = lib.platforms.all;
};
})

View File

@@ -0,0 +1,38 @@
diff --git a/src/main.rs b/src/main.rs
index 357a33b..7073497 100644
--- a/src/main.rs
+++ b/src/main.rs
@@ -1,4 +1,4 @@
-use std::env;
+use std::path::PathBuf;
mod devices;
@@ -8,12 +8,23 @@ fn main() -> Result<(), std::io::Error> {
configs: vec![]
};
- let mut config_path = env::current_exe()?;
- config_path.pop();
- config_path.push("uni-sync.json");
+ let mut config_path = PathBuf::from("/etc/uni-sync/uni-sync.json");
if !config_path.exists() {
- std::fs::write(&config_path, serde_json::to_string_pretty(&configs).unwrap())?;
+ match std::fs::create_dir_all(config_path.parent().unwrap()) {
+ Ok(result) => result,
+ Err(_) => {
+ println!("Please run uni-sync with elevated permissions.");
+ std::process::exit(0);
+ }
+ };
+ match std::fs::write(&config_path, serde_json::to_string_pretty(&configs).unwrap()) {
+ Ok(result) => result,
+ Err(_) => {
+ println!("Please run uni-sync with elevated permissions.");
+ std::process::exit(0);
+ }
+ };
}
let config_content = std::fs::read_to_string(&config_path).unwrap();

View File

@@ -0,0 +1,14 @@
diff --git a/src/main.rs b/src/main.rs
index f07cc64..357a33b 100644
--- a/src/main.rs
+++ b/src/main.rs
@@ -20,7 +20,7 @@ fn main() -> Result<(), std::io::Error> {
configs = serde_json::from_str::<devices::Configs>(&config_content).unwrap();
let new_configs = devices::run(configs);
- std::fs::write(&config_path, serde_json::to_string_pretty(&new_configs).unwrap())?;
+ std::fs::write(&config_path, serde_json::to_string_pretty(&new_configs).unwrap());
Ok(())
}
\ No newline at end of file

View File

@@ -0,0 +1,36 @@
{
lib,
fetchFromGitHub,
rustPlatform,
pkg-config,
libudev-zero,
}:
rustPlatform.buildRustPackage {
pname = "uni-sync";
version = "0.2.0";
src = fetchFromGitHub {
owner = "EightB1ts";
repo = "uni-sync";
rev = "ca349942c06fabcc028ce24e79fc6ce7c758452b";
hash = "sha256-K2zX3rKtTaKO6q76xlxX+rDLL0gEsJ2l8x/s1vsp+ZQ=";
};
nativeBuildInputs = [ pkg-config ];
buildInputs = [ libudev-zero ];
patches = [
./config_path.patch
./ignore_read-only_filesystem.patch
];
cargoHash = "sha256-Qb0TPpYGDjsqHkI4B8QRz5c9rqZ+H98YjOg5K++zpBg=";
meta = with lib; {
description = "Synchronization tool for Lian Li Uni Controllers";
homepage = "https://github.com/EightB1ts/uni-sync";
license = licenses.mit;
maintainers = with maintainers; [ yunfachi ];
mainProgram = "uni-sync";
};
}

View File

@@ -0,0 +1,74 @@
{
lib,
stdenv,
fetchurl,
perl,
kbd,
bdftopcf,
libfaketime,
xorg,
}:
stdenv.mkDerivation {
name = "uni-vga";
src = fetchurl {
url = "http://www.inp.nsk.su/~bolkhov/files/fonts/univga/uni-vga.tgz";
sha256 = "05sns8h5yspa7xkl81ri7y1yxf5icgsnl497f3xnaryhx11s2rv6";
};
nativeBuildInputs = [
bdftopcf
libfaketime
xorg.fonttosfnt
xorg.mkfontscale
]
++ lib.optionals stdenv.hostPlatform.isLinux [
perl
kbd
];
postPatch = "patchShebangs .";
buildPhase = ''
# convert font to compressed pcf
bdftopcf u_vga16.bdf | gzip -c -9 -n > u_vga16.pcf.gz
# convert bdf font to otb
faketime -f "1970-01-01 00:00:01" \
fonttosfnt -v -o u_vga16.otb u_vga16.bdf
''
+ lib.optionalString stdenv.hostPlatform.isLinux ''
# convert font to compressed psf
./bdf2psf.pl -s UniCyrX.sfm u_vga16.bdf \
| psfaddtable - UniCyrX.sfm - \
| gzip -c -9 -n > u_vga16.psf.gz
'';
installPhase = ''
# install pcf and otb (for X11 and GTK applications)
install -m 644 -D *.otb *.pcf.gz -t "$out/share/fonts"
mkfontdir "$out/share/fonts"
# install bdf font
install -m 644 -D *.bdf -t "$bdf/share/fonts"
mkfontdir "$bdf/share/fonts"
''
+ lib.optionalString stdenv.hostPlatform.isLinux ''
# install psf (for linux virtual terminal)
install -m 644 -D *.psf.gz -t "$out/share/consolefonts"
'';
outputs = [
"out"
"bdf"
];
meta = with lib; {
description = "Unicode VGA font";
maintainers = [ maintainers.ftrvxmtrx ];
homepage = "http://www.inp.nsk.su/~bolkhov/files/fonts/univga/";
license = licenses.mit;
};
}

View File

@@ -0,0 +1,34 @@
{
lib,
buildGoModule,
fetchFromGitHub,
}:
buildGoModule rec {
pname = "uni";
version = "2.8.0";
src = fetchFromGitHub {
owner = "arp242";
repo = "uni";
tag = "v${version}";
hash = "sha256-LSmQtndWBc7wCYBnyaeDb4Le4PQPcSO8lTp+CSC2jbc=";
};
vendorHash = "sha256-4w5L5Zg0LJX2v4mqLLjAvEdh3Ad69MLa97SR6RY3fT4=";
ldflags = [
"-s"
"-w"
"-X=main.version=${version}"
];
meta = {
homepage = "https://github.com/arp242/uni";
description = "Query the Unicode database from the commandline, with good support for emojis";
changelog = "https://github.com/arp242/uni/releases/tag/v${version}";
license = lib.licenses.mit;
maintainers = with lib.maintainers; [ chvp ];
mainProgram = "uni";
};
}

View File

@@ -0,0 +1,52 @@
{
lib,
stdenv,
fetchurl,
}:
stdenv.mkDerivation rec {
pname = "uni2ascii";
version = "4.20";
src = fetchurl {
url = "https://billposer.org/Software/Downloads/uni2ascii-${version}.tar.gz";
hash = "sha256-7tjYOpwdLb0NfKTFJRmYg9cxfWiLQhtXjQmKJ7b/cFY=";
};
patches = [
(fetchurl {
url = "https://github.com/Homebrew/formula-patches/raw/bb92449ad6b3878b4d6f472237152df28080df86/uni2ascii/uni2ascii-4.20.patch";
hash = "sha256-JQpSntoTbQ7fnmO5Km/pX071360/lOb9jYdxOK2oV/g=";
})
];
meta = {
license = lib.licenses.gpl3;
homepage = "http://billposer.org/Software/uni2ascii.html";
description = "Converts between UTF-8 and many 7-bit ASCII equivalents and back";
longDescription = ''
This package provides conversion in both directions between UTF-8
Unicode and more than thirty 7-bit ASCII equivalents, including
RFC 2396 URI format and RFC 2045 Quoted Printable format, the
representations used in HTML, SGML, XML, OOXML, the Unicode
standard, Rich Text Format, POSIX portable charmaps, POSIX locale
specifications, and Apache log files, and the escapes used for
including Unicode in Ada, C, Common Lisp, Java, Pascal, Perl,
Postscript, Python, Scheme, and Tcl.
Such ASCII equivalents are useful when including Unicode text in
program source, when debugging, and when entering text into web
programs that can handle the Unicode character set but are not
8-bit safe. For example, MovableType, the blog software, truncates
posts as soon as it encounters a byte with the high bit
set. However, if Unicode is entered in the form of HTML numeric
character entities, Movable Type will not garble the post.
It also provides ways of converting non-ASCII characters to
similar ASCII characters, e.g. by stripping diacritics.
'';
maintainers = [ ];
platforms = lib.platforms.all;
};
}

View File

@@ -0,0 +1,41 @@
{
stdenv,
lib,
fetchFromGitHub,
libtool,
pkg-config,
perl,
ncurses,
autoreconfHook,
}:
stdenv.mkDerivation rec {
pname = "unibilium";
version = "2.1.2";
src = fetchFromGitHub {
owner = "neovim";
repo = "unibilium";
rev = "v${version}";
sha256 = "sha256-6bFZtR8TUZJembRBj6wUUCyurUdsn3vDGnCzCti/ESc=";
};
strictDeps = true;
enableParallelBuilding = true;
nativeBuildInputs = [
autoreconfHook
pkg-config
perl
libtool
];
buildInputs = [ ncurses ];
meta = with lib; {
homepage = "https://github.com/neovim/unibilium";
description = "Very basic terminfo library";
license = licenses.lgpl3Plus;
platforms = platforms.linux ++ platforms.darwin;
maintainers = with maintainers; [ pSub ];
};
}

View File

@@ -0,0 +1,39 @@
{
lib,
stdenvNoCC,
fetchurl,
unzip,
}:
stdenvNoCC.mkDerivation rec {
pname = "unicode-character-database";
version = "16.0.0";
src = fetchurl {
url = "https://www.unicode.org/Public/zipped/${version}/UCD.zip";
sha256 = "sha256-yG3YHysUpDsMwGSqX4mqckE4aAHjXFnHmE5XmDJjTrI=";
};
nativeBuildInputs = [
unzip
];
sourceRoot = ".";
installPhase = ''
runHook preInstall
mkdir -p $out/share/unicode
cp -r * $out/share/unicode
rm $out/share/unicode/env-vars
runHook postInstall
'';
meta = with lib; {
description = "Unicode Character Database";
homepage = "https://www.unicode.org/";
license = licenses.unicode-dfs-2016;
platforms = platforms.all;
};
}

View File

@@ -0,0 +1,64 @@
{
lib,
stdenvNoCC,
fetchurl,
symlinkJoin,
}:
let
version = "17.0";
fetchData =
{ suffix, hash }:
stdenvNoCC.mkDerivation {
pname = "unicode-emoji-${suffix}";
inherit version;
src = fetchurl {
url = "https://www.unicode.org/Public/emoji/${version}/emoji-${suffix}.txt";
inherit hash;
};
dontUnpack = true;
installPhase = ''
runHook preInstall
installDir="$out/share/unicode/emoji"
mkdir -p "$installDir"
cp "$src" "$installDir/emoji-${suffix}.txt"
runHook postInstall
'';
};
srcs = {
emoji-sequences = fetchData {
suffix = "sequences";
hash = "sha256-M1txywy3BISmMxoXYzGmg+LOafAdZOtAPu5mnE1XA5g=";
};
emoji-test = fetchData {
suffix = "test";
hash = "sha256-EYHEVX845REBhFBFD51CV02qiA0TQ9WsYfE0h34+veU=";
};
emoji-zwj-sequences = fetchData {
suffix = "zwj-sequences";
hash = "sha256-WyVEHa7SMisGjF5wzaUilGpPAnTfhkRFoZZakuX8XK0=";
};
};
in
symlinkJoin {
name = "unicode-emoji-${version}";
paths = lib.attrValues srcs;
passthru = srcs;
meta = {
description = "Unicode Emoji Data Files";
homepage = "https://home.unicode.org/emoji/";
license = lib.licenses.unicode-dfs-2016;
platforms = lib.platforms.all;
};
}

View File

@@ -0,0 +1,34 @@
{
lib,
stdenvNoCC,
fetchurl,
}:
stdenvNoCC.mkDerivation (finalAttrs: {
pname = "unicode-idna";
version = "16.0.0";
src = fetchurl {
url = "https://www.unicode.org/Public/idna/${finalAttrs.version}/IdnaMappingTable.txt";
hash = "sha256-bbLvTtNfOz3nTrwuAEBKlgf3bUmfV2uNQEPPFPHtF1w=";
};
dontUnpack = true;
installPhase = ''
runHook preInstall
mkdir -p $out/share/unicode/idna
cp -r $src $out/share/unicode/idna/IdnaMappingTable.txt
runHook postInstall
'';
meta = {
description = "Unicode IDNA compatible processing data";
homepage = "http://www.unicode.org/reports/tr46/";
license = lib.licenses.unicode-dfs-2016;
maintainers = with lib.maintainers; [ jopejoe1 ];
platforms = lib.platforms.all;
};
})

View File

@@ -0,0 +1,49 @@
{
lib,
fetchFromGitHub,
fetchurl,
python3Packages,
installShellFiles,
gitUpdater,
}:
python3Packages.buildPythonApplication rec {
pname = "unicode";
version = "2.9";
pyproject = true;
src = fetchFromGitHub {
owner = "garabik";
repo = "unicode";
rev = "v${version}";
sha256 = "sha256-FHAlZ5HID/FE9+YR7Dmc3Uh7E16QKORoD8g9jgTeQdY=";
};
ucdtxt = fetchurl {
url = "https://www.unicode.org/Public/16.0.0/ucd/UnicodeData.txt";
sha256 = "sha256-/1jlgjvQlRZlZKAG5H0RETCBPc+L8jTvefpRqHDttI8=";
};
nativeBuildInputs = [ installShellFiles ];
build-system = with python3Packages; [ setuptools ];
postFixup = ''
substituteInPlace "$out/bin/.unicode-wrapped" \
--replace-fail "/usr/share/unicode/UnicodeData.txt" "$ucdtxt"
'';
postInstall = ''
installManPage paracode.1 unicode.1
'';
passthru.updateScript = gitUpdater { rev-prefix = "v"; };
meta = {
description = "Display unicode character properties";
homepage = "https://github.com/garabik/unicode";
license = lib.licenses.gpl3;
maintainers = [ lib.maintainers.woffs ];
platforms = lib.platforms.all;
};
}

View File

@@ -0,0 +1,5 @@
{
python3Packages,
}:
with python3Packages;
toPythonApplication unicodeit

View File

@@ -0,0 +1,68 @@
{
lib,
stdenv,
libX11,
libxcrypt,
fetchFromGitHub,
coreutils,
libpng,
xorg,
freetype,
zlib,
libjpeg,
openssl,
}:
stdenv.mkDerivation (finalAttrs: {
pname = "unicon-lang";
version = "13.2-unstable-2025-06-02";
src = fetchFromGitHub {
owner = "uniconproject";
repo = "unicon";
rev = "cf3b53b9578a004a52146a7adadc2a9409426624";
hash = "sha256-+4HSLnVTLdBVnKqWhOrx4XHTs3mRlM6n2ISQ+C1g3Ns=";
};
postPatch = ''
substituteInPlace tests/Makefile --replace-fail "/bin/echo" "${coreutils}/bin/echo"
substituteInPlace tests/Makedefs --replace-fail "/bin/echo" "${coreutils}/bin/echo"
'';
buildInputs = [
libxcrypt
# compression
zlib
# graphics
libX11
libjpeg
libpng
xorg.libXft
freetype
# ssl
openssl
];
hardeningDisable = [ "fortify" ];
# Issues when building plugins and running tests on aarch
enableParallelBuilding = false;
doCheck = true;
checkTarget = "Test";
doInstallCheck = true;
installCheckPhase = ''
runHook preInstallCheck
$out/bin/unicon -version
runHook postInstallCheck
'';
meta = {
description = "Very high level, goal-directed, object-oriented, general purpose applications language";
maintainers = [ ];
platforms = lib.platforms.linux;
license = lib.licenses.gpl2;
homepage = "http://www.unicon.org";
};
})

View File

@@ -0,0 +1,44 @@
{
lib,
stdenv,
cmake,
fetchFromGitHub,
pkg-config,
}:
stdenv.mkDerivation rec {
pname = "unicorn-angr";
# Version must follow what angr requires
version = "2.0.1.post1";
src = fetchFromGitHub {
owner = "unicorn-engine";
repo = "unicorn";
tag = version;
hash = "sha256-Jz5C35rwnDz0CXcfcvWjkwScGNQO1uijF7JrtZhM7mI=";
};
nativeBuildInputs = [
cmake
pkg-config
];
# Ensure the linker is using atomic when compiling for RISC-V, otherwise fails
NIX_LDFLAGS = lib.optionalString stdenv.hostPlatform.isRiscV "-latomic";
cmakeFlags = lib.optionals (stdenv.hostPlatform.isDarwin && stdenv.hostPlatform.isAarch64) [
# Some x86 tests are interrupted by signal 10
"-DCMAKE_CTEST_ARGUMENTS=--exclude-regex;test_x86"
];
doCheck = true;
meta = with lib; {
description = "Lightweight multi-platform CPU emulator library";
homepage = "https://www.unicorn-engine.org";
license = licenses.gpl2Only;
maintainers = with maintainers; [ fab ];
platforms = platforms.unix;
broken = stdenv.hostPlatform.isDarwin;
};
}

View File

@@ -0,0 +1,48 @@
{
lib,
stdenv,
cctools,
cmake,
fetchFromGitHub,
pkg-config,
}:
stdenv.mkDerivation rec {
pname = "unicorn";
version = "2.1.4";
src = fetchFromGitHub {
owner = "unicorn-engine";
repo = "unicorn";
tag = version;
hash = "sha256-jEQXjYlLUdKrKPL4XfSbixn2KWJlNG7IYQveF4jDgl4=";
};
nativeBuildInputs = [
cmake
pkg-config
]
++ lib.optionals stdenv.hostPlatform.isDarwin [
cctools
];
# Ensure the linker is using atomic when compiling for RISC-V, otherwise fails
NIX_LDFLAGS = lib.optionalString stdenv.hostPlatform.isRiscV "-latomic";
cmakeFlags = lib.optionals (stdenv.hostPlatform.isDarwin && stdenv.hostPlatform.isAarch64) [
# Some x86 tests are interrupted by signal 10
"-DCMAKE_CTEST_ARGUMENTS=--exclude-regex;test_x86"
];
doCheck = true;
meta = with lib; {
description = "Lightweight multi-platform CPU emulator library";
homepage = "https://www.unicorn-engine.org";
license = licenses.gpl2Only;
platforms = platforms.unix;
maintainers = with maintainers; [
thoughtpolice
];
};
}

View File

@@ -0,0 +1,36 @@
{
lib,
buildGoModule,
fetchFromGitHub,
nix-update-script,
}:
buildGoModule rec {
pname = "uniex";
version = "0.1.8";
src = fetchFromGitHub {
owner = "paepckehh";
repo = "uniex";
tag = "v${version}";
hash = "sha256-+wcAm3UFRs70HJ64emuWNnyroUhFHUPsaMQPCaMAexg=";
};
vendorHash = "sha256-s/oWtYziUtSKDQmvDxWznqynlKmWxwt5jAAT5xl+gqo=";
ldflags = [
"-s"
"-w"
];
passthru.updateScript = nix-update-script { };
meta = {
changelog = "https://github.com/paepckehh/uniex/releases/tag/v${version}";
homepage = "https://paepcke.de/uniex";
description = "Unifi controller device inventory exporter, analyses all device and stat records for complete records";
license = lib.licenses.bsd3;
mainProgram = "uniex";
maintainers = with lib.maintainers; [ paepcke ];
};
}

View File

@@ -0,0 +1,28 @@
{
lib,
stdenv,
fetchurl,
}:
stdenv.mkDerivation rec {
pname = "unifdef";
version = "2.12";
src = fetchurl {
url = "https://dotat.at/prog/unifdef/unifdef-${version}.tar.xz";
sha256 = "00647bp3m9n01ck6ilw6r24fk4mivmimamvm4hxp5p6wxh10zkj3";
};
makeFlags = [
"prefix=$(out)"
"DESTDIR="
];
meta = with lib; {
homepage = "https://dotat.at/prog/unifdef/";
description = "Selectively remove C preprocessor conditionals";
license = licenses.bsd2;
platforms = platforms.unix;
maintainers = with maintainers; [ orivej ];
};
}

View File

@@ -0,0 +1,61 @@
{
lib,
fetchFromGitHub,
fetchpatch,
python3,
}:
python3.pkgs.buildPythonApplication rec {
pname = "unifi-protect-backup";
version = "0.11.0";
pyproject = true;
src = fetchFromGitHub {
owner = "ep1cman";
repo = "unifi-protect-backup";
tag = "v${version}";
hash = "sha256-t4AgPFqKS6u9yITIkUUB19/SxVwR7X8Cc01oPx3M+E0=";
};
patches = [
# Switch to using UIProtect library, https://github.com/ep1cman/unifi-protect-backup/pull/160
(fetchpatch {
name = "switch-uiprotect.patch";
url = "https://github.com/ep1cman/unifi-protect-backup/commit/ccf2cde27229ade5c70ebfa902f289bf1a439f64.patch";
hash = "sha256-kogl/crvLE+7t9DLTuZqeW3/WB5/sytWDgbndoBw+RQ=";
})
];
pythonRelaxDeps = [
"aiorun"
"aiosqlite"
"click"
"uiprotect"
];
nativeBuildInputs = with python3.pkgs; [ poetry-core ];
propagatedBuildInputs = with python3.pkgs; [
aiocron
aiolimiter
aiorun
aiosqlite
apprise
async-lru
click
expiring-dict
python-dateutil
uiprotect
];
nativeCheckInputs = with python3.pkgs; [ pytestCheckHook ];
meta = {
description = "Python tool to backup unifi event clips in realtime";
homepage = "https://github.com/ep1cman/unifi-protect-backup";
changelog = "https://github.com/ep1cman/unifi-protect-backup/blob/v${version}/CHANGELOG.md";
license = lib.licenses.mit;
teams = [ lib.teams.helsinki-systems ];
mainProgram = "unifi-protect-backup";
};
}

View File

@@ -0,0 +1,55 @@
{
lib,
stdenvNoCC,
dpkg,
fetchurl,
nixosTests,
systemd,
autoPatchelfHook,
}:
stdenvNoCC.mkDerivation (finalAttrs: {
pname = "unifi-controller";
version = "9.4.19";
# see https://community.ui.com/releases / https://www.ui.com/download/unifi
src = fetchurl {
url = "https://dl.ui.com/unifi/${finalAttrs.version}/unifi_sysvinit_all.deb";
hash = "sha256-lbveHJjORpARa+EU54OtvIk7x1WFGKrwFWL3b+A35XA=";
};
nativeBuildInputs = [
dpkg
autoPatchelfHook
];
buildInputs = [
systemd
];
installPhase = ''
runHook preInstall
mkdir -p $out
cp -ar usr/lib/unifi/{dl,lib,webapps} $out
runHook postInstall
'';
passthru.tests = { inherit (nixosTests) unifi; };
meta = with lib; {
homepage = "https://www.ui.com";
description = "Controller for Ubiquiti UniFi access points";
sourceProvenance = with sourceTypes; [ binaryBytecode ];
license = licenses.unfree;
platforms = [
"x86_64-linux"
"aarch64-linux"
];
maintainers = with maintainers; [
globin
patryk27
];
};
})

View File

@@ -0,0 +1,27 @@
{
lib,
fetchFromGitHub,
buildGoModule,
}:
buildGoModule rec {
pname = "unifiedpush-common-proxies";
version = "2.0.1";
src = fetchFromGitHub {
owner = "unifiedpush";
repo = "common-proxies";
rev = "v${version}";
sha256 = "sha256-pMzKK18FZCqJ86nqXfOT7tKCqIw6P0ioxRUi72aef0A=";
};
vendorHash = "sha256-wVZR/h0AtwZ1eo7EoRKNzaS2Wp0X01e2u3Ugmsnj644=";
meta = with lib; {
description = "Set of rewrite proxies and gateways for UnifiedPush";
homepage = "https://github.com/UnifiedPush/common-proxies";
license = licenses.mit;
maintainers = [ ];
mainProgram = "up_rewrite";
};
}

View File

@@ -0,0 +1,31 @@
{
lib,
stdenvNoCC,
fetchurl,
}:
stdenvNoCC.mkDerivation (finalAttrs: {
pname = "unifont-csur";
version = "16.0.03";
src = fetchurl {
url = "https://unifoundry.com/pub/unifont/unifont-${finalAttrs.version}/font-builds/unifont_csur-${finalAttrs.version}.otf";
hash = "sha256-41MXxHHohZFm42LMePmLSZp3bytsxMJmWh/0psIgWt4=";
};
dontUnpack = true;
installPhase = ''
runHook preInstall
install -Dm644 $src $out/share/fonts/truetype/unifont_csur.ttf
runHook postInstall
'';
meta = {
description = "Unifont CSUR - Private Use Area font covering ConScript Unicode Registry";
homepage = "https://unifoundry.com/unifont/";
license = lib.licenses.gpl2Plus;
platforms = lib.platforms.all;
maintainers = [ lib.maintainers.qxrein ];
};
})

View File

@@ -0,0 +1,76 @@
{
lib,
stdenv,
fetchurl,
xorg,
libfaketime,
}:
stdenv.mkDerivation (finalAttrs: {
pname = "unifont";
version = "16.0.03";
otf = fetchurl {
url = "mirror://gnu/unifont/unifont-${finalAttrs.version}/unifont-${finalAttrs.version}.otf";
hash = "sha256-9TnyHLrjkWoJP4GdNsR3EtVwGshtrO2KaOzPe9nTPAw=";
};
pcf = fetchurl {
url = "mirror://gnu/unifont/unifont-${finalAttrs.version}/unifont-${finalAttrs.version}.pcf.gz";
hash = "sha256-ysKULOBusx4n7NfYRAzEoRfqaTNn5JtjigTVmb7wozY=";
};
bdf = fetchurl {
url = "mirror://gnu/unifont/unifont-${finalAttrs.version}/unifont-${finalAttrs.version}.bdf.gz";
hash = "sha256-fz0WZKwcBR9ZoaE2DdZU942CwkamiMNC6GPOx/a6ldQ=";
};
nativeBuildInputs = [
libfaketime
xorg.fonttosfnt
xorg.mkfontscale
];
dontUnpack = true;
buildPhase = ''
runHook preBuild
# convert pcf font to otb
faketime -f "1970-01-01 00:00:01" \
fonttosfnt -g 2 -m 2 -v -o "unifont.otb" "${finalAttrs.pcf}"
runHook postBuild
'';
installPhase = ''
runHook preInstall
# install otb fonts
install -m 644 -D unifont.otb "$out/share/fonts/unifont.otb"
mkfontdir "$out/share/fonts"
# install pcf, otf, and bdf fonts
install -m 644 -D ${finalAttrs.pcf} $out/share/fonts/unifont.pcf.gz
install -m 644 -D ${finalAttrs.otf} $out/share/fonts/opentype/unifont.otf
gunzip -c ${finalAttrs.bdf} > $out/share/fonts/unifont.bdf
cd "$out/share/fonts"
mkfontdir
mkfontscale
runHook postInstall
'';
meta = with lib; {
description = "Unicode font for Base Multilingual Plane";
homepage = "https://unifoundry.com/unifont/";
# Basically GPL2+ with font exception.
license = with lib.licenses; [
gpl2Plus
fontException
];
maintainers = [ maintainers.rycee ];
platforms = platforms.all;
};
})

View File

@@ -0,0 +1,38 @@
{
lib,
stdenvNoCC,
fetchurl,
}:
stdenvNoCC.mkDerivation rec {
pname = "unifont_upper";
version = "16.0.03";
src = fetchurl {
url = "mirror://gnu/unifont/unifont-${version}/${pname}-${version}.otf";
hash = "sha256-ACW+6xiQAd9QMidqJ2MQGTkYbW9fvateIR2FyoM7rIs=";
};
dontUnpack = true;
installPhase = ''
runHook preInstall
install -Dm644 $src $out/share/fonts/opentype/unifont_upper.otf
runHook postInstall
'';
meta = with lib; {
description = "Unicode font for glyphs above the Unicode Basic Multilingual Plane";
homepage = "https://unifoundry.com/unifont/";
# Basically GPL2+ with font exception.
license = with lib.licenses; [
gpl2Plus
fontException
];
maintainers = [ maintainers.mathnerd314 ];
platforms = platforms.all;
};
}

View File

@@ -0,0 +1,108 @@
{
lib,
stdenv,
fetchurl,
makeWrapper,
libX11,
libXext,
libXrandr,
freetype,
fontconfig,
libXrender,
libXinerama,
autoPatchelfHook,
libglvnd,
openal,
imagemagick,
makeDesktopItem,
}:
let
version = "4.0";
arch =
if stdenv.hostPlatform.system == "x86_64-linux" then
"x64"
else if stdenv.hostPlatform.system == "i686-linux" then
"x86"
else
throw "Unsupported platform ${stdenv.hostPlatform.system}";
desktopItem = makeDesktopItem {
name = "Heaven";
exec = "heaven";
genericName = "A GPU Stress test tool from the UNIGINE";
icon = "Heaven";
desktopName = "Heaven Benchmark";
};
in
stdenv.mkDerivation {
pname = "unigine-heaven";
inherit version;
src = fetchurl {
url = "https://assets.unigine.com/d/Unigine_Heaven-${version}.run";
sha256 = "19rndwwxnb9k2nw9h004hyrmr419471s0fp25yzvvc6rkd521c0v";
};
installPhase = ''
sh $src --target $name
mkdir -p $out/lib/unigine/heaven/bin
mkdir -p $out/bin
mkdir -p $out/share/applications/
mkdir -p $out/share/icons/hicolor
install -m 0755 $name/bin/browser_${arch} $out/lib/unigine/heaven/bin
install -m 0755 $name/bin/libApp{Stereo,Surround,Wall}_${arch}.so $out/lib/unigine/heaven/bin
install -m 0755 $name/bin/libGPUMonitor_${arch}.so $out/lib/unigine/heaven/bin
install -m 0755 $name/bin/libQt{Core,Gui,Network,WebKit,Xml}Unigine_${arch}.so.4 $out/lib/unigine/heaven/bin
install -m 0755 $name/bin/libUnigine_${arch}.so $out/lib/unigine/heaven/bin
install -m 0755 $name/bin/heaven_${arch} $out/lib/unigine/heaven/bin
install -m 0755 $name/heaven $out/bin/heaven
cp -R $name/data $name/documentation $out/lib/unigine/heaven
wrapProgram $out/bin/heaven --prefix LD_LIBRARY_PATH : ${libglvnd}/lib:$out/bin:${openal}/lib --run "cd $out/lib/unigine/heaven/"
convert $out/lib/unigine/heaven/data/launcher/icon.png -resize 128x128 $out/share/icons/Heaven.png
for RES in 16 24 32 48 64 128 256
do
mkdir -p $out/share/icons/hicolor/"$RES"x"$RES"/apps
convert $out/lib/unigine/heaven/data/launcher/icon.png -resize "$RES"x"$RES" $out/share/icons/hicolor/"$RES"x"$RES"/apps/Heaven.png
done
ln -s ${desktopItem}/share/applications/* $out/share/applications
'';
nativeBuildInputs = [
autoPatchelfHook
makeWrapper
imagemagick
];
buildInputs = [
libX11
stdenv.cc.cc
libXext
libXrandr
freetype
fontconfig
libXrender
libXinerama
];
dontUnpack = true;
meta = {
description = "Unigine Heaven GPU benchmarking tool";
homepage = "https://benchmark.unigine.com/heaven";
sourceProvenance = with lib.sourceTypes; [ binaryNativeCode ];
license = lib.licenses.unfree;
maintainers = [ lib.maintainers.BarinovMaxim ];
platforms = [
"x86_64-linux"
"i686-linux"
];
mainProgram = "heaven";
};
}

View File

@@ -0,0 +1,146 @@
{
lib,
stdenv,
fetchurl,
# Build-time dependencies
makeWrapper,
file,
makeDesktopItem,
imagemagick,
copyDesktopItems,
# Runtime dependencies
fontconfig,
freetype,
libX11,
libXext,
libXinerama,
libXrandr,
libXrender,
libglvnd,
openal,
}:
let
version = "1.0";
arch =
if stdenv.hostPlatform.system == "x86_64-linux" then
"x64"
else if stdenv.hostPlatform.system == "i686-linux" then
"x86"
else
throw "Unsupported platform ${stdenv.hostPlatform.system}";
in
stdenv.mkDerivation rec {
pname = "unigine-valley";
inherit version;
src = fetchurl {
url = "https://assets.unigine.com/d/Unigine_Valley-${version}.run";
sha256 = "sha256-XwyL0kMRGFURgrq79fHCD7FOekB4lpckDcr1RkQ2YPQ=";
};
sourceRoot = "Unigine_Valley-${version}";
instPath = "lib/unigine/valley";
nativeBuildInputs = [
file
makeWrapper
imagemagick
copyDesktopItems
];
libPath = lib.makeLibraryPath [
stdenv.cc.cc # libstdc++.so.6
fontconfig
freetype
libX11
libXext
libXinerama
libXrandr
libXrender
libglvnd
openal
];
unpackPhase = ''
runHook preUnpack
cp $src extractor.run
chmod +x extractor.run
./extractor.run --target $sourceRoot
runHook postUnpack
'';
postPatch = ''
# Patch ELF files.
elfs=$(find bin -type f | xargs file | grep ELF | cut -d ':' -f 1)
for elf in $elfs; do
patchelf --set-interpreter ${stdenv.cc.libc}/lib/ld-linux-x86-64.so.2 $elf || true
done
'';
installPhase = ''
runHook preInstall
instdir=$out/${instPath}
mkdir -p $out/share/icons/hicolor $out/share/applications $out/bin $instdir/bin
# Install executables and libraries
install -m 0755 bin/browser_${arch} $instdir/bin
install -m 0755 bin/libApp{Stereo,Surround,Wall}_${arch}.so $instdir/bin
install -m 0755 bin/libGPUMonitor_${arch}.so $instdir/bin
install -m 0755 bin/libQt{Core,Gui,Network,WebKit,Xml}Unigine_${arch}.so.4 $instdir/bin
install -m 0755 bin/libUnigine_${arch}.so $instdir/bin
install -m 0755 bin/valley_${arch} $instdir/bin
install -m 0755 valley $instdir
install -m 0755 valley $out/bin/valley
# Install other files
cp -R data documentation $instdir
# Install and wrap executable
wrapProgram $out/bin/valley \
--chdir "$instdir" \
--prefix LD_LIBRARY_PATH : /run/opengl-driver/lib:$instdir/bin:$libPath
# Make desktop Icon
convert $out/lib/unigine/valley/data/launcher/icon.png -resize 128x128 $out/share/icons/Valley.png
for RES in 16 24 32 48 64 128 256
do
mkdir -p $out/share/icons/hicolor/"$RES"x"$RES"/apps
convert $out/lib/unigine/valley/data/launcher/icon.png -resize "$RES"x"$RES" $out/share/icons/hicolor/"$RES"x"$RES"/apps/Valley.png
done
runHook postInstall
'';
desktopItems = [
(makeDesktopItem {
name = "Valley";
exec = "valley";
genericName = "A GPU Stress test tool from the UNIGINE";
icon = "Valley";
desktopName = "Valley Benchmark";
})
];
stripDebugList = [ "${instPath}/bin" ];
meta = {
description = "Unigine Valley GPU benchmarking tool";
homepage = "https://unigine.com/products/benchmarks/valley/";
sourceProvenance = with lib.sourceTypes; [ binaryNativeCode ];
license = lib.licenses.unfree; # see also: $out/$instPath/documentation/License.pdf
maintainers = [ ];
platforms = [
"x86_64-linux"
"i686-linux"
];
mainProgram = "valley";
};
}

View File

@@ -0,0 +1,44 @@
{
lib,
stdenv,
fetchurl,
unzip,
}:
stdenv.mkDerivation rec {
pname = "unihan-database";
version = "15.1.0";
src = fetchurl {
url = "https://www.unicode.org/Public/zipped/${version}/Unihan.zip";
hash = "sha256-oCJmEOMkvPeErDgOEfTL9TPuHms9AosJkb+MDcP4WFM=";
};
nativeBuildInputs = [
unzip
];
sourceRoot = "source";
unpackPhase = ''
runHook preUnpack
unzip $src -d $sourceRoot
runHook postUnpack
'';
installPhase = ''
runHook preInstall
mkdir -p $out/share/unicode
cp -r * $out/share/unicode
runHook postInstall
'';
meta = with lib; {
description = "Unicode Han Database";
homepage = "https://www.unicode.org/";
license = licenses.unicode-dfs-2016;
platforms = platforms.all;
};
}

View File

@@ -0,0 +1,57 @@
{
lib,
rustPlatform,
fetchFromGitHub,
installShellFiles,
makeBinaryWrapper,
stdenv,
pkg-config,
openssl,
nmap,
}:
rustPlatform.buildRustPackage rec {
pname = "unimap";
version = "0.7.0";
src = fetchFromGitHub {
owner = "Edu4rdSHL";
repo = "unimap";
rev = version;
hash = "sha256-QQZNeZUB6aHnYz7B7uqL8I9gkk4JvQJ4TD9NxECd6JA=";
};
cargoHash = "sha256-1haSdmhK14XvKunSbj9jPTuHJK5tWdzdFAqxhg2TI0s=";
nativeBuildInputs = [
installShellFiles
makeBinaryWrapper
]
++ lib.optionals (stdenv.hostPlatform.isAarch && stdenv.hostPlatform.isLinux) [
pkg-config
];
# only depends on openssl on aarch/arm linux
buildInputs = lib.optionals (stdenv.hostPlatform.isAarch && stdenv.hostPlatform.isLinux) [
openssl
];
env = lib.optionalAttrs (stdenv.hostPlatform.isAarch && stdenv.hostPlatform.isLinux) {
OPENSSL_NO_VENDOR = true;
};
postInstall = ''
installManPage unimap.1
wrapProgram $out/bin/unimap \
--prefix PATH : ${lib.makeBinPath [ nmap ]}
'';
meta = with lib; {
description = "Scan only once by IP address and reduce scan times with Nmap for large amounts of data";
homepage = "https://github.com/Edu4rdSHL/unimap";
changelog = "https://github.com/Edu4rdSHL/unimap/releases/tag/${src.rev}";
license = licenses.gpl3Plus;
maintainers = with maintainers; [ figsoda ];
mainProgram = "unimap";
};
}

View File

@@ -0,0 +1,37 @@
{
lib,
python3Packages,
fetchFromGitHub,
}:
python3Packages.buildPythonApplication {
pname = "unimatrix";
version = "0-unstable-2023-04-25";
pyproject = false;
src = fetchFromGitHub {
owner = "will8211";
repo = "unimatrix";
rev = "65793c237553bf657af2f2248d2a2dc84169f5c4";
hash = "sha256-fiaVEc0rtZarUQlUwe1V817qWRx4LnUyRD/j2vWX5NM=";
};
installPhase = ''
runHook preInstall
install -Dm755 ./unimatrix.py $out/bin/unimatrix
runHook postInstall
'';
dontConfigure = true;
dontBuild = true;
meta = with lib; {
description = ''Python script to simulate the display from "The Matrix" in terminal'';
homepage = "https://github.com/will8211/unimatrix";
license = licenses.gpl3Only;
maintainers = with maintainers; [ anomalocaris ];
mainProgram = "unimatrix";
};
}

View File

@@ -0,0 +1,64 @@
{
nix-update-script,
lib,
stdenv,
fetchFromGitHub,
cmake,
pkg-config,
fuse3,
}:
stdenv.mkDerivation rec {
pname = "unionfs-fuse";
version = "3.7";
src = fetchFromGitHub {
owner = "rpodgorny";
repo = "unionfs-fuse";
tag = "v${version}";
hash = "sha256-wha1AMwJMbC5rZBE4ybeOmH7Dq4p5YdMJDCT/a3B6cI=";
};
patches = [
# Prevent the unionfs daemon from being killed during
# shutdown. See
# https://www.freedesktop.org/wiki/Software/systemd/RootStorageDaemons/
# for details.
./prevent-kill-on-shutdown.patch
];
postPatch = lib.optionalString stdenv.hostPlatform.isDarwin ''
substituteInPlace CMakeLists.txt \
--replace '/usr/local/include/osxfuse/fuse' '${lib.getDev fuse3}/include/fuse'
'';
nativeBuildInputs = [
cmake
pkg-config
];
buildInputs = [ fuse3 ];
# Put the unionfs mount helper in place as mount.unionfs-fuse. This makes it
# possible to do:
# mount -t unionfs-fuse none /dest -o dirs=/source1=RW,/source2=RO
#
# This must be done in preConfigure because the build process removes
# helper from the source directory during the build.
preConfigure = lib.optionalString (!stdenv.hostPlatform.isDarwin) ''
mkdir -p $out/sbin
cp -a mount.unionfs $out/sbin/mount.unionfs-fuse
substituteInPlace $out/sbin/mount.unionfs-fuse --replace mount.fuse ${fuse3}/sbin/mount.fuse3
substituteInPlace $out/sbin/mount.unionfs-fuse --replace unionfs $out/bin/unionfs
'';
passthru.updateScript = nix-update-script { };
meta = {
broken = stdenv.hostPlatform.isDarwin;
description = "FUSE UnionFS implementation";
homepage = "https://github.com/rpodgorny/unionfs-fuse";
license = lib.licenses.bsd3;
platforms = lib.platforms.unix;
maintainers = [ lib.maintainers.orivej ];
};
}

View File

@@ -0,0 +1,14 @@
diff -ru -x '*~' unionfs-fuse-0.26-orig/src/unionfs.c unionfs-fuse-0.26/src/unionfs.c
--- unionfs-fuse-0.26-orig/src/unionfs.c 2012-09-11 00:06:32.000000000 +0200
+++ unionfs-fuse-0.26/src/unionfs.c 2014-05-21 14:22:03.597861805 +0200
@@ -831,6 +831,10 @@
}
#endif
+ /* Prevent systemd's shutdown from killing us. */
+ if (access("/etc/initrd-release", F_OK) >= 0)
+ argv[0][0] = '@';
+
umask(0);
int res = fuse_main(args.argc, args.argv, &unionfs_oper, NULL);
RETURN(uopt.doexit ? uopt.retval : res);

View File

@@ -0,0 +1,47 @@
{
stdenv,
fetchFromGitHub,
lib,
fzf,
xclip,
}:
stdenv.mkDerivation (finalAttrs: {
pname = "unipicker";
version = "2.0.1";
src = fetchFromGitHub {
owner = "jeremija";
repo = "unipicker";
rev = "v${finalAttrs.version}";
hash = "sha256-Br9nCK5eWoSN1i4LM2F31B62L9vuN5KzjS9pC9lq9oM=";
};
buildInputs = [
fzf
xclip
];
preInstall = ''
substituteInPlace unipicker \
--replace-fail "/etc/unipickerrc" "$out/etc/unipickerrc" \
--replace-fail "fzf" "${fzf}/bin/fzf"
substituteInPlace unipickerrc \
--replace-fail "/usr/local" "$out" \
--replace-fail "fzf" "${fzf}/bin/fzf"
'';
makeFlags = [
"PREFIX=${placeholder "out"}"
"DESTDIR=${placeholder "out"}"
];
meta = {
description = "CLI utility for searching unicode characters by description and optionally copying them to clipboard";
homepage = "https://github.com/jeremija/unipicker";
license = lib.licenses.mit;
maintainers = with lib.maintainers; [ sigmanificient ];
platforms = lib.platforms.unix;
mainProgram = "unipicker";
};
})

View File

@@ -0,0 +1,33 @@
{
lib,
fetchFromGitHub,
rustPlatform,
}:
rustPlatform.buildRustPackage rec {
pname = "unison-fsmonitor";
version = "0.3.8";
src = fetchFromGitHub {
owner = "autozimu";
repo = "unison-fsmonitor";
rev = "v${version}";
hash = "sha256-1W05b9s0Pg2LzNu0mFo/JKpPw0QORqZkXhbbSuCZIUo=";
};
cargoHash = "sha256-FhENsOGv4jN9A0HS0TIPJMiXA4mYBL668jyckVNGOKc=";
checkFlags = [
# accesses /usr/bin/env
"--skip=test_follow_link"
];
meta = {
homepage = "https://github.com/autozimu/unison-fsmonitor";
description = "fsmonitor implementation for darwin";
license = lib.licenses.mit;
maintainers = with lib.maintainers; [ nevivurn ];
platforms = lib.platforms.darwin;
mainProgram = "unison-fsmonitor";
};
}

View File

@@ -0,0 +1,93 @@
{
lib,
autoPatchelfHook,
fetchurl,
gmp,
less,
makeWrapper,
libb2,
ncurses6,
openssl,
stdenv,
zlib,
}:
stdenv.mkDerivation (finalAttrs: {
pname = "unison-code-manager";
version = "0.5.49";
src =
{
aarch64-darwin = fetchurl {
url = "https://github.com/unisonweb/unison/releases/download/release/${finalAttrs.version}/ucm-macos-arm64.tar.gz";
hash = "sha256-ydrSqSaHJcL5DX2voAcUfHn3Y0QRo8CyvYHNZrTMmhI=";
};
x86_64-darwin = fetchurl {
url = "https://github.com/unisonweb/unison/releases/download/release/${finalAttrs.version}/ucm-macos-x64.tar.gz";
hash = "sha256-qd+cDB9FnfOija0xeF0GMBIZu2JAjlax/nPtfORzhlM=";
};
aarch64-linux = fetchurl {
url = "https://github.com/unisonweb/unison/releases/download/release/${finalAttrs.version}/ucm-linux-arm64.tar.gz";
hash = "sha256-5QPG6JkciD3iI7WVPB6p3NEO/ZNEBgpRe30XT1op4K8=";
};
x86_64-linux = fetchurl {
url = "https://github.com/unisonweb/unison/releases/download/release/${finalAttrs.version}/ucm-linux-x64.tar.gz";
hash = "sha256-LiW1Ugaaz1LzVDmfpSkiwtRYMhuv7XeNGEnFc9HndWg=";
};
}
.${stdenv.hostPlatform.system} or (throw "Unsupported platform ${stdenv.hostPlatform.system}");
# The tarball is just the prebuilt binary, in the archive root.
sourceRoot = ".";
dontBuild = true;
dontConfigure = true;
nativeBuildInputs = [
makeWrapper
]
++ lib.optional (!stdenv.hostPlatform.isDarwin) autoPatchelfHook;
buildInputs = lib.optionals (!stdenv.hostPlatform.isDarwin) [
gmp
ncurses6
zlib
];
installPhase = ''
mkdir -p $out/{bin,lib}
mv ui $out/ui
mv unison $out/unison
makeWrapper $out/unison/unison $out/bin/ucm \
--prefix LD_LIBRARY_PATH : ${
lib.makeLibraryPath [
libb2
openssl
]
} \
--prefix PATH ":" "${lib.makeBinPath [ less ]}" \
--set UCM_WEB_UI "$out/ui"
'';
meta = with lib; {
description = "Modern, statically-typed purely functional language";
homepage = "https://unisonweb.org/";
license = with licenses; [
mit
bsd3
];
mainProgram = "ucm";
maintainers = with maintainers; [
ceedubs
sellout
virusdave
];
platforms = [
"x86_64-darwin"
"x86_64-linux"
"aarch64-darwin"
"aarch64-linux"
];
sourceProvenance = with sourceTypes; [ binaryNativeCode ];
};
})

View File

@@ -0,0 +1,75 @@
{
lib,
stdenv,
fetchFromGitHub,
ocamlPackages,
copyDesktopItems,
makeDesktopItem,
wrapGAppsHook3,
gsettings-desktop-schemas,
enableX11 ? !stdenv.hostPlatform.isDarwin,
}:
stdenv.mkDerivation (finalAttrs: {
pname = "unison";
version = "2.53.7";
src = fetchFromGitHub {
owner = "bcpierce00";
repo = "unison";
rev = "v${finalAttrs.version}";
hash = "sha256-QmYcxzsnbRDQdqkLh82OLWrLF6v3qzf1aOIcnz0kwEk=";
};
strictDeps = true;
nativeBuildInputs = [
ocamlPackages.ocaml
ocamlPackages.findlib
]
++ lib.optionals enableX11 [
copyDesktopItems
wrapGAppsHook3
];
buildInputs = lib.optionals enableX11 [
gsettings-desktop-schemas
ocamlPackages.lablgtk3
];
makeFlags = [
"PREFIX=$(out)"
]
++ lib.optionals (!ocamlPackages.ocaml.nativeCompilers) [ "NATIVE=false" ];
postInstall = lib.optionalString enableX11 ''
install -D $src/icons/U.svg $out/share/icons/hicolor/scalable/apps/unison.svg
'';
dontStrip = !ocamlPackages.ocaml.nativeCompilers;
desktopItems = lib.optional enableX11 (makeDesktopItem {
name = finalAttrs.pname;
desktopName = "Unison";
comment = "Bidirectional file synchronizer";
genericName = "File synchronization tool";
exec = "unison-gui";
icon = "unison";
categories = [
"Utility"
"FileTools"
"GTK"
];
startupNotify = true;
startupWMClass = "Unison";
});
meta = {
homepage = "https://www.cis.upenn.edu/~bcpierce/unison/";
description = "Bidirectional file synchronizer";
license = lib.licenses.gpl3Plus;
maintainers = with lib.maintainers; [ nevivurn ];
platforms = lib.platforms.unix;
broken = stdenv.hostPlatform.isDarwin && enableX11; # unison-gui and uimac are broken on darwin
mainProgram = if enableX11 then "unison-gui" else "unison";
};
})

View File

@@ -0,0 +1,99 @@
{
lib,
stdenv,
fetchFromGitHub,
nixosTests,
which,
pcre2,
withPython3 ? true,
python3,
ncurses,
withPHP82 ? true,
php82,
withPerl ? true,
perl,
withRuby_3_1 ? true,
ruby_3_1,
withRuby_3_2 ? false,
ruby_3_2,
withSSL ? true,
openssl ? null,
withIPv6 ? true,
withDebug ? false,
}:
let
phpConfig = {
embedSupport = true;
apxs2Support = false;
systemdSupport = false;
phpdbgSupport = false;
cgiSupport = false;
fpmSupport = false;
};
php82-unit = php82.override phpConfig;
inherit (lib) optional optionals optionalString;
in
stdenv.mkDerivation rec {
version = "1.35.0";
pname = "unit";
src = fetchFromGitHub {
owner = "nginx";
repo = "unit";
rev = version;
sha256 = "sha256-0cMtU7wmy8GFKqxS8fXPIrMljYXBHzoxrUJCOJSzLMA=";
};
nativeBuildInputs = [ which ];
buildInputs = [
pcre2.dev
]
++ optionals withPython3 [
python3
ncurses
]
++ optional withPHP82 php82-unit
++ optional withPerl perl
++ optional withRuby_3_1 ruby_3_1
++ optional withRuby_3_2 ruby_3_2
++ optional withSSL openssl;
configureFlags = [
"--control=unix:/run/unit/control.unit.sock"
"--pid=/run/unit/unit.pid"
"--user=unit"
"--group=unit"
]
++ optional withSSL "--openssl"
++ optional (!withIPv6) "--no-ipv6"
++ optional withDebug "--debug";
# Optionally add the PHP derivations used so they can be addressed in the configs
usedPhp82 = optionals withPHP82 php82-unit;
postConfigure = ''
${optionalString withPython3 "./configure python --module=python3 --config=python3-config --lib-path=${python3}/lib"}
${optionalString withPHP82 "./configure php --module=php82 --config=${php82-unit.unwrapped.dev}/bin/php-config --lib-path=${php82-unit}/lib"}
${optionalString withPerl "./configure perl --module=perl --perl=${perl}/bin/perl"}
${optionalString withRuby_3_1 "./configure ruby --module=ruby31 --ruby=${ruby_3_1}/bin/ruby"}
${optionalString withRuby_3_2 "./configure ruby --module=ruby32 --ruby=${ruby_3_2}/bin/ruby"}
'';
passthru.tests = {
unit-perl = nixosTests.unit-perl;
unit-php = nixosTests.unit-php;
};
meta = with lib; {
description = "Dynamic web and application server, designed to run applications in multiple languages";
mainProgram = "unitd";
homepage = "https://unit.nginx.org/";
license = licenses.asl20;
platforms = platforms.linux;
maintainers = with maintainers; [ izorkin ];
};
}

View File

@@ -0,0 +1,42 @@
{
lib,
stdenv,
fetchFromGitHub,
cmake,
# This is the baseType needed by scipp - the main package that depends on
# this package.
baseType ? "uint64_t",
}:
stdenv.mkDerivation (finalAttrs: {
pname = "units-llnl";
version = "0.13.1";
src = fetchFromGitHub {
owner = "LLNL";
repo = "units";
tag = "v${finalAttrs.version}";
hash = "sha256-thJnBT+wQPF9obzXk/T6H9lvPEAH5REx3YhBXEd7n7c=";
fetchSubmodules = true;
};
nativeBuildInputs = [
cmake
];
cmakeFlags = [
(lib.cmakeBool "BUILD_SHARED_LIBS" true)
(lib.cmakeFeature "UNITS_BASE_TYPE" baseType)
];
doCheck = true;
meta = {
description = "Run-time C++ library for working with units of measurement and conversions between them and with string representations of units and measurements";
homepage = "https://github.com/llnl/units";
changelog = "https://github.com/llnl/units/blob/${finalAttrs.src.tag}/CHANGELOG.md";
license = lib.licenses.bsd3;
maintainers = with lib.maintainers; [ doronbehar ];
mainProgram = "units-llnl";
platforms = lib.platforms.all;
};
})

View File

@@ -0,0 +1,77 @@
{
lib,
fetchurl,
python3,
readline,
stdenv,
enableCurrenciesUpdater ? true,
}:
let
pythonEnv = python3.withPackages (p: [
p.requests
]);
in
stdenv.mkDerivation (finalAttrs: {
pname = "units";
version = "2.24";
src = fetchurl {
url = "mirror://gnu/units/units-${finalAttrs.version}.tar.gz";
hash = "sha256-HlAsTt+s8gspKEcWxy5d21GklaI2XXsD55YElMSgyQI=";
};
outputs = [
"out"
"info"
"man"
];
buildInputs = [
readline
]
++ lib.optionals enableCurrenciesUpdater [
pythonEnv
];
prePatch = lib.optionalString enableCurrenciesUpdater ''
substituteInPlace units_cur \
--replace "#!/usr/bin/env python" ${pythonEnv}/bin/python
'';
postInstall = lib.optionalString enableCurrenciesUpdater ''
cp units_cur ${placeholder "out"}/bin/
'';
doCheck = true;
meta = {
homepage = "https://www.gnu.org/software/units/";
description = "Unit conversion tool";
longDescription = ''
GNU Units converts quantities expressed in various systems of measurement
to their equivalents in other systems of measurement. Like many similar
programs, it can handle multiplicative scale changes. It can also handle
nonlinear conversions such as Fahrenheit to Celsius or wire gauge, and it
can convert from and to sums of units, such as converting between meters
and feet plus inches.
Beyond simple unit conversions, GNU Units can be used as a general-purpose
scientific calculator that keeps track of units in its calculations. You
can form arbitrary complex mathematical expressions of dimensions
including sums, products, quotients, powers, and even roots of
dimensions. Thus you can ensure accuracy and dimensional consistency when
working with long expressions that involve many different units that may
combine in complex ways.
The units are defined in an external data file. You can use the extensive
data file that comes with this program, or you can provide your own data
file to suit your needs. You can also use your own data file to supplement
the standard data file.
'';
license = with lib.licenses; [ gpl3Plus ];
mainProgram = "units";
maintainers = [ ];
platforms = lib.platforms.all;
};
})

View File

@@ -0,0 +1,51 @@
{
lib,
stdenv,
fetchFromGitHub,
fetchpatch,
cmake,
}:
stdenv.mkDerivation rec {
pname = "unittest-cpp";
version = "2.0.0";
src = fetchFromGitHub {
owner = "unittest-cpp";
repo = "unittest-cpp";
rev = "v${version}";
sha256 = "0sxb3835nly1jxn071f59fwbdzmqi74j040r81fanxyw3s1azw0i";
};
patches = [
# GCC12 Patch
(fetchpatch {
url = "https://github.com/unittest-cpp/unittest-cpp/pull/185/commits/f361c2a1034c02ba8059648f9a04662d6e2b5553.patch";
hash = "sha256-xyhV2VBelw/uktUXSZ3JBxgG+8/Mout/JiXEZVV2+2Y=";
})
];
# Fix the build with CMake 4.
postPatch = ''
substituteInPlace CMakeLists.txt \
--replace-fail \
'cmake_minimum_required(VERSION 2.8.1)' \
'cmake_minimum_required(VERSION 3.10)'
'';
# Fix 'Version:' setting in .pc file. TODO: remove once upstreamed:
# https://github.com/unittest-cpp/unittest-cpp/pull/188
cmakeFlags = [ "-DPACKAGE_VERSION=${version}" ];
nativeBuildInputs = [ cmake ];
doCheck = false;
meta = {
homepage = "https://github.com/unittest-cpp/unittest-cpp";
description = "Lightweight unit testing framework for C++";
license = lib.licenses.mit;
maintainers = [ ];
platforms = lib.platforms.unix;
};
}

View File

@@ -0,0 +1,18 @@
diff --git a/meson.build b/meson.build
index 6585129..9489aef 100644
--- a/meson.build
+++ b/meson.build
@@ -64,10 +64,10 @@ unity_dep = declare_dependency(
if not meson.is_subproject()
pkg = import('pkgconfig')
pkg.generate(
- name: meson.project_name(),
+ unity_lib,
version: meson.project_version(),
- libraries: [ unity_lib ],
- description: 'C Unit testing framework.'
+ subdirs: 'unity',
+ extra_cflags: unity_args,
)
endif

View File

@@ -0,0 +1,124 @@
{
lib,
stdenv,
fetchFromGitHub,
fetchpatch2,
meson,
ninja,
ruby,
python3,
nix-update-script,
testers,
iniparser,
validatePkgConfig,
# Adds test groups and extra CLI flags.
buildFixture ? false,
# Adds the ablilty to track malloc and free calls.
# Note that if fixtures are enabled, this option is ignored
# and will always be enabled.
buildMemory ? buildFixture,
# Adds double precision floating point assertions
supportDouble ? false,
}:
let
# On newer versions of Clang, Weverything is too much of everything.
ignoredErrors = [
"-Wno-unsafe-buffer-usage"
"-Wno-reserved-identifier"
"-Wno-extra-semi-stmt"
];
in
stdenv.mkDerivation (finalAttrs: {
pname = "unity-test";
version = "2.6.1";
src = fetchFromGitHub {
owner = "ThrowTheSwitch";
repo = "Unity";
tag = "v${finalAttrs.version}";
hash = "sha256-g0ubq7RxGQmL1R6vz9RIGJpVWYsgrZhsTWSrL1ySEug=";
};
patches = [
# The meson file does not have the subdir set correctly
(fetchpatch2 {
url = "https://patch-diff.githubusercontent.com/raw/ThrowTheSwitch/Unity/pull/771.patch";
hash = "sha256-r8ldVb7WrzVwTC2CtGul9Jk4Rzt+6ejk+paYAfFlR5M=";
})
# Fix up the shebangs in the auto directory as not all are correct
(fetchpatch2 {
url = "https://patch-diff.githubusercontent.com/raw/ThrowTheSwitch/Unity/pull/790.patch";
hash = "sha256-K+OxMe/ZMXPPjZXjGhgc5ULLN7plBwL0hV5gwmgA3FM=";
})
];
postPatch = ''
patchShebangs --build auto
'';
outputs = [
"out"
"dev"
];
strictDeps = true;
nativeBuildInputs = [
meson
ninja
python3
validatePkgConfig
];
# For the helper shebangs
buildInputs = [
python3
ruby
];
mesonFlags = [
(lib.mesonBool "extension_memory" buildMemory)
(lib.mesonBool "extension_fixture" buildFixture)
(lib.mesonBool "support_double" supportDouble)
];
doCheck = true;
checkPhase = ''
runHook preCheck
make -C../test -j $NIX_BUILD_CORES ${lib.optionalString stdenv.cc.isClang "CC=clang"} E="-Weverything ${lib.escapeShellArgs ignoredErrors}" test
runHook postCheck
'';
# Various helpers
postInstall = ''
mkdir -p "$out/share"
install -Dm755 ../auto/* -t "$out/share/"
'';
passthru = {
updateScript = nix-update-script { };
tests = {
inherit iniparser;
pkg-config = testers.hasPkgConfigModules {
package = finalAttrs.finalPackage;
versionCheck = true;
};
};
};
meta = {
description = "Unity Unit Testing Framework";
homepage = "https://www.throwtheswitch.org/unity";
changelog = "https://github.com/ThrowTheSwitch/Unity/releases/tag/v${finalAttrs.version}";
license = lib.licenses.mit;
platforms = lib.platforms.all;
pkgConfigModules = [ "unity" ];
maintainers = with lib.maintainers; [
i01011001
RossSmyth
];
};
})

View File

@@ -0,0 +1,162 @@
{
lib,
stdenv,
fetchurl,
dpkg,
makeWrapper,
buildFHSEnv,
extraPkgs ? pkgs: [ ],
extraLibs ? pkgs: [ ],
}:
stdenv.mkDerivation rec {
pname = "unityhub";
version = "3.14.3";
src = fetchurl {
url = "https://hub-dist.unity3d.com/artifactory/hub-debian-prod-local/pool/main/u/unity/unityhub_amd64/unityhub-amd64-${version}.deb";
hash = "sha256-nivAj3WWd3x0O1ixAkycdtEjyIr0sJ0JKA5BUbwkSi8=";
};
nativeBuildInputs = [
dpkg
makeWrapper
];
fhsEnv = buildFHSEnv {
pname = "${pname}-fhs-env";
inherit version;
runScript = "";
targetPkgs =
pkgs:
with pkgs;
[
# Unity Hub binary dependencies
xorg.libXrandr
xdg-utils
# GTK filepicker
gsettings-desktop-schemas
hicolor-icon-theme
# Bug Reporter dependencies
fontconfig
freetype
lsb-release
]
++ extraPkgs pkgs;
multiPkgs =
pkgs:
with pkgs;
[
# Unity Hub ldd dependencies
cups
gtk3
expat
libxkbcommon
lttng-ust_2_12
krb5
alsa-lib
nss
libdrm
libgbm
nspr
atk
dbus
at-spi2-core
pango
xorg.libXcomposite
xorg.libXext
xorg.libXdamage
xorg.libXfixes
xorg.libxcb
xorg.libxshmfence
xorg.libXScrnSaver
xorg.libXtst
# Unity Hub additional dependencies
libva
openssl
cairo
libnotify
libuuid
libsecret
udev
libappindicator
wayland
cpio
icu
libpulseaudio
# Unity Editor dependencies
libglvnd # provides ligbl
xorg.libX11
xorg.libXcursor
glib
gdk-pixbuf
libxml2_13
zlib
clang
git # for git-based packages in unity package manager
# Unity Editor 6000 specific dependencies
harfbuzz
vulkan-loader
# Unity Bug Reporter specific dependencies
xorg.libICE
xorg.libSM
# Fonts used by built-in and third party editor tools
corefonts
dejavu_fonts
liberation_ttf
]
++ extraLibs pkgs;
};
dontConfigure = true;
dontBuild = true;
installPhase = ''
runHook preInstall
mkdir -p $out
mv opt/ usr/share/ $out
# `/opt/unityhub/unityhub` is a shell wrapper that runs `/opt/unityhub/unityhub-bin`
# which we don't need and overwrite with our own wrapper that uses the fhs env.
makeWrapper ${fhsEnv}/bin/${pname}-fhs-env $out/opt/unityhub/unityhub \
--add-flags $out/opt/unityhub/unityhub-bin \
--argv0 unityhub
mkdir -p $out/bin
ln -s $out/opt/unityhub/unityhub $out/bin/unityhub
# Replace absolute path in desktop file to correctly point to nix store
substituteInPlace $out/share/applications/unityhub.desktop \
--replace-fail /opt/unityhub/unityhub $out/opt/unityhub/unityhub
# This file is used by auto updater to determine whether this install is
# a .deb, .rpm, etc. Remove this to disable the auto updater, which auto
# downloads the update, in addition to being useless.
rm $out/opt/unityhub/resources/package-type
runHook postInstall
'';
passthru.updateScript = ./update.sh;
meta = {
description = "Official Unity3D app to download and manage Unity Projects and installations";
homepage = "https://unity.com/";
downloadPage = "https://unity.com/unity-hub";
changelog = "https://unity.com/unity-hub/release-notes#${version}";
license = lib.licenses.unfree;
maintainers = with lib.maintainers; [ huantian ];
platforms = [ "x86_64-linux" ];
sourceProvenance = with lib.sourceTypes; [ binaryNativeCode ];
};
}

View File

@@ -0,0 +1,13 @@
#!/usr/bin/env nix-shell
#!nix-shell -i bash -p curl common-updater-scripts
# set -euo pipefail
new_version="$(curl https://hub-dist.unity3d.com/artifactory/hub-debian-prod-local/dists/stable/main/binary-amd64/Packages --silent | sed -nE "s/^Version: ([0-9]+\.[0-9]+\.[0-9]+)$/\1/p" | sort -V | tail -n 1)"
old_version="$(sed -nE 's/^\s*version = "([0-9]+\.[0-9]+\.[0-9]+)";$/\1/p' ./package.nix)"
if [[ "$new_version" == "$old_version" ]]; then
echo "Up to date"
exit 0
fi
update-source-version unityhub "$new_version"

View File

@@ -0,0 +1,78 @@
{
android-tools,
clang,
expat,
fetchFromGitHub,
fontconfig,
freetype,
lib,
libglvnd,
libxkbcommon,
makeWrapper,
mold,
nix-update-script,
pkg-config,
rustPlatform,
wayland,
writableTmpDirAsHomeHook,
xorg,
}:
rustPlatform.buildRustPackage (finalAttrs: {
pname = "universal-android-debloater";
version = "1.1.2";
src = fetchFromGitHub {
owner = "Universal-Debloater-Alliance";
repo = "universal-android-debloater-next-generation";
tag = "v${finalAttrs.version}";
hash = "sha256-DapPUvkI4y159gYbSGJQbbDfW+C0Ggvaxo45Qj3mLrQ=";
};
cargoHash = "sha256-eXbReRi/0h4UyJwIMI3GfHcQzX1E5Spoa4moMXtrBng=";
buildInputs = [
expat
fontconfig
freetype
];
nativeBuildInputs = [
makeWrapper
mold
pkg-config
];
nativeCheckInputs = [
clang
writableTmpDirAsHomeHook
];
postInstall = ''
wrapProgram $out/bin/uad-ng --prefix LD_LIBRARY_PATH : ${
lib.makeLibraryPath [
fontconfig
freetype
libglvnd
libxkbcommon
wayland
xorg.libX11
xorg.libXcursor
xorg.libXi
xorg.libXrandr
]
} --suffix PATH : ${lib.makeBinPath [ android-tools ]}
'';
passthru.updateScript = nix-update-script { };
meta = {
changelog = "https://github.com/Universal-Debloater-Alliance/universal-android-debloater-next-generation/releases/tag/v${finalAttrs.version}";
description = "Tool to debloat non-rooted Android devices";
homepage = "https://github.com/Universal-Debloater-Alliance/universal-android-debloater-next-generation";
license = lib.licenses.gpl3Only;
mainProgram = "uad-ng";
maintainers = with lib.maintainers; [ lavafroth ];
platforms = lib.platforms.linux;
};
})

View File

@@ -0,0 +1,14 @@
This small Nix-specific patch removes a source of impurity from source code,
namely the date and time of compilation.
diff -Naur uctags-old/main/options.c uctags-new/main/options.c
--- uctags-old/main/options.c 1969-12-31 21:00:01.000000000 -0300
+++ uctags-new/main/options.c 2022-11-06 11:43:00.028550121 -0300
@@ -1609,7 +1609,6 @@
printf ("Universal Ctags is derived from Exuberant Ctags.\n");
printf ("Exuberant Ctags 5.8, Copyright (C) 1996-2009 Darren Hiebert\n");
- printf (" Compiled: %s, %s\n", __DATE__, __TIME__);
printf (" URL: %s\n", PROGRAM_URL);
printFeatureList ();

View File

@@ -0,0 +1,94 @@
{
lib,
stdenv,
autoreconfHook,
buildPackages,
coreutils,
fetchFromGitHub,
jansson,
libiconv,
perl,
pkg-config,
python3,
libseccomp,
libyaml,
pcre2,
libxml2,
}:
stdenv.mkDerivation (finalAttrs: {
pname = "universal-ctags";
version = "6.2.0";
src = fetchFromGitHub {
owner = "universal-ctags";
repo = "ctags";
rev = "v${finalAttrs.version}";
hash = "sha256-M2MuVWUsN9kBRF4OAavTYQGPUYvzNmP30AWnW1SendU=";
};
depsBuildBuild = [
buildPackages.stdenv.cc
];
nativeBuildInputs = [
autoreconfHook
perl
pkg-config
(python3.withPackages (p: [ p.docutils ]))
];
buildInputs = [
libyaml
pcre2
libxml2
jansson
]
++ lib.optional stdenv.hostPlatform.isDarwin libiconv
++ lib.optional stdenv.hostPlatform.isLinux libseccomp;
configureFlags = [ "--enable-tmpdir=/tmp" ];
patches = [
./000-nixos-specific.patch
];
postPatch = ''
substituteInPlace Tmain/utils.sh \
--replace /bin/echo ${coreutils}/bin/echo
# fails on sandbox
rm -fr Tmain/ptag-proc-cwd.d/
patchShebangs misc/*
'';
# some tools like 'zoekt' want an unambiguous binary name, so give it to them
postInstall = ''
ln -s $out/bin/ctags $out/bin/universal-ctags
'';
doCheck = true;
checkFlags = [
"man-test"
"tlib"
"tmain"
"tutil"
"units"
];
meta = with lib; {
homepage = "https://docs.ctags.io/en/latest/";
description = "Maintained ctags implementation";
longDescription = ''
Universal Ctags (abbreviated as u-ctags) is a maintained implementation of
ctags. ctags generates an index (or tag) file of language objects found in
source files for programming languages. This index makes it easy for text
editors and other tools to locate the indexed items.
'';
license = licenses.gpl2Plus;
maintainers = [ ];
platforms = platforms.all;
mainProgram = "ctags";
priority = 1; # over the emacs implementation
};
})

View File

@@ -0,0 +1,88 @@
{
lib,
resholve,
fetchurl,
gawk,
bash,
binutils,
coreutils,
file,
findutils,
glibc,
gnugrep,
gnused,
net-tools,
openssh,
postgresql,
ps,
util-linux,
which,
}:
# resholve does not yet support `finalAttrs` call pattern hence `rec`
# https://github.com/abathur/resholve/issues/107
resholve.mkDerivation rec {
pname = "unix-privesc-check";
version = "1.4";
src = fetchurl {
url = "https://pentestmonkey.net/tools/unix-privesc-check/unix-privesc-check-${version}.tar.gz";
hash = "sha256-4fhef2n6ut0jdWo9dqDj2GSyHih2O2DOLmGBKQ0cGWk=";
};
patches = [
./unix-privesc-check.patch # https://github.com/NixOS/nixpkgs/pull/287629#issuecomment-1944428796
];
solutions = {
unix-privesc-check = {
scripts = [ "bin/unix-privesc-check" ];
interpreter = "${bash}/bin/bash";
inputs = [
gawk
bash
binutils # for strings command
coreutils
file
findutils # for xargs command
glibc # for ldd command
gnugrep
gnused
net-tools
openssh
postgresql # for psql command
ps
util-linux # for swapon command
which
];
fake = {
external = [
"lanscan" # lanscan exists only for HP-UX OS
"mount" # Getting same error described in https://github.com/abathur/resholve/issues/29
"passwd" # Getting same error described in https://github.com/abathur/resholve/issues/29
];
};
execer = [
"cannot:${glibc.bin}/bin/ldd"
"cannot:${postgresql}/bin/psql"
"cannot:${openssh}/bin/ssh-add"
"cannot:${util-linux.bin}/bin/swapon"
];
};
};
installPhase = ''
runHook preInstall
install -Dm 755 unix-privesc-check $out/bin/unix-privesc-check
runHook postInstall
'';
meta = with lib; {
description = "Find misconfigurations that could allow local unprivilged users to escalate privileges to other users or to access local apps";
mainProgram = "unix-privesc-check";
homepage = "https://pentestmonkey.net/tools/audit/unix-privesc-check";
maintainers = with maintainers; [ d3vil0p3r ];
platforms = platforms.unix;
license = licenses.gpl2Plus;
};
}

View File

@@ -0,0 +1,20 @@
--- a/unix-privesc-check 2024-02-14 20:21:24.725453661 +0100
+++ b/unix-privesc-check 2024-02-14 20:21:46.577446690 +0100
@@ -484,17 +484,6 @@
# Set path so we can access usual directories. HPUX and some linuxes don't have sbin in the path.
PATH=$PATH:/usr/bin:/bin:/sbin:/usr/sbin; export PATH
-# Check dependent programs are installed
-# Assume "which" is installed!
-PROGS="ls awk grep cat mount xargs file ldd strings"
-for PROG in $PROGS; do
- which $PROG 2>&1 > /dev/null
- if [ ! $? = "0" ]; then
- echo "ERROR: Dependend program '$PROG' is mising. Can't run. Sorry!"
- exit 1
- fi
-done
-
banner
section "Recording hostname"

View File

@@ -0,0 +1,30 @@
{
lib,
stdenv,
fetchurl,
}:
stdenv.mkDerivation rec {
pname = "unixODBC";
version = "2.3.12";
src = fetchurl {
urls = [
"ftp://ftp.unixodbc.org/pub/unixODBC/${pname}-${version}.tar.gz"
"https://www.unixodbc.org/${pname}-${version}.tar.gz"
];
sha256 = "sha256-8hBQFEXOIb9ge6Ue+MEl4Q4i3/3/7Dd2RkYt9fAZFew=";
};
configureFlags = [
"--disable-gui"
"--sysconfdir=/etc"
];
meta = with lib; {
description = "ODBC driver manager for Unix";
homepage = "https://www.unixodbc.org/";
license = licenses.lgpl2;
platforms = platforms.unix;
};
}

View File

@@ -0,0 +1,108 @@
diff --git a/UnixBench/Run b/UnixBench/Run
index 34d2c72..130b56e 100755
--- a/UnixBench/Run
+++ b/UnixBench/Run
@@ -81,23 +81,23 @@ my $longIterCount = 10;
my $shortIterCount = 3;
# C compiler to use in compilation tests.
-my $cCompiler = 'gcc';
+my $cCompiler = 'cc -w';
# Establish full paths to directories. These need to be full pathnames
# (or do they, any more?). They can be set in env.
# variable names are the first parameter to getDir() below.
# Directory where the test programs live.
-my $BINDIR = getDir('UB_BINDIR', $FindBin::Bin . "/pgms");
+my $BINDIR = getDir('UB_BINDIR', '@out@/libexec/pgms');
# Temp directory, for temp files.
-my $TMPDIR = getDir('UB_TMPDIR', $FindBin::Bin . "/tmp");
+my $TMPDIR = getDir('UB_TMPDIR', "$ENV{'PWD'}/unixbench/temp");
# Directory to put results in.
-my $RESULTDIR = getDir('UB_RESULTDIR', $FindBin::Bin . "/results");
+my $RESULTDIR = getDir('UB_RESULTDIR', "$ENV{'PWD'}/unixbench/results");
# Directory where the tests are executed.
-my $TESTDIR = getDir('UB_TESTDIR', $FindBin::Bin . "/testdir");
+my $TESTDIR = getDir('UB_TESTDIR', '@out@/share/testdir');
############################################################################
@@ -330,19 +330,19 @@ my $testParams = {
"logmsg" => "Shell Scripts (1 concurrent)",
"cat" => 'system',
"prog" => "${BINDIR}/looper",
- "options" => "60 \"${BINDIR}/multi.sh\" 1",
+ "options" => "60 \"${BINDIR}/multi.sh\" 1 ${TMPDIR} ${TESTDIR}",
},
"shell8" => {
"logmsg" => "Shell Scripts (8 concurrent)",
"cat" => 'system',
"prog" => "${BINDIR}/looper",
- "options" => "60 \"${BINDIR}/multi.sh\" 8",
+ "options" => "60 \"${BINDIR}/multi.sh\" 8 ${TMPDIR} ${TESTDIR}",
},
"shell16" => {
"logmsg" => "Shell Scripts (16 concurrent)",
"cat" => 'system',
"prog" => "${BINDIR}/looper",
- "options" => "60 \"${BINDIR}/multi.sh\" 16",
+ "options" => "60 \"${BINDIR}/multi.sh\" 16 ${TMPDIR} ${TESTDIR}",
},
##########################
@@ -434,7 +434,7 @@ my $testParams = {
"logmsg" => "C Compiler Throughput ($cCompiler)",
"cat" => 'misc',
"prog" => "${BINDIR}/looper",
- "options" => "60 $cCompiler cctest.c",
+ "options" => "60 $cCompiler $TESTDIR/cctest.c -o $TMPDIR/cctest",
},
"arithoh" => {
"logmsg" => "Arithoh",
@@ -873,16 +873,6 @@ sub preChecks {
# Set the language.
$ENV{'LANG'} = $language;
- # Check that the required files are in the proper places.
- my $make = $ENV{MAKE} || "make";
- system("$make check");
- if ($? != 0) {
- system("$make all");
- if ($? != 0) {
- abortRun("\"$make all\" failed");
- }
- }
-
# Create a script to kill this run.
system("echo \"kill -9 $$\" > \"${TMPDIR}/kill_run\"");
chmod(0755, $TMPDIR . "/kill_run");
@@ -923,7 +913,10 @@ sub parseArgs {
$params->{'copies'} = [ ];
}
push(@{$params->{'copies'}}, shift(@words));
- } else {
+ } elsif ($word eq "--help" || $word eq "-h") {
+ print "Run: please see ubench(1) for available options\n";
+ exit 0;
+ }else {
die("Run: unknown option $word\n");
}
}
diff --git a/UnixBench/pgms/multi.sh b/UnixBench/pgms/multi.sh
index 72e8716..d2f5f48 100755
--- a/UnixBench/pgms/multi.sh
+++ b/UnixBench/pgms/multi.sh
@@ -15,7 +15,8 @@
###############################################################################
ID="@(#)multi.sh:3.4 -- 5/15/91 19:30:24";
instance=1
-sort_src=sort.src
+sort_src=$3/sort.src
+cd $2
work_factor=${MULTI_SH_WORK_FACTOR:-1}
if [ $work_factor -gt 1 ]; then
inputs=

View File

@@ -0,0 +1,116 @@
{
lib,
stdenv,
fetchFromGitHub,
makeWrapper,
pandoc,
installShellFiles,
perl,
xorg,
libGLX,
coreutils,
unixtools,
runtimeShell,
targetPackages,
gnugrep,
gawk,
withGL ? true,
withX11perf ? true,
}:
stdenv.mkDerivation rec {
pname = "unixbench";
version = "unstable-2023-02-27";
src = fetchFromGitHub {
owner = "kdlucas";
repo = "byte-unixbench";
rev = "a07fcc03264915c624f0e4818993c5b4df3fa703";
hash = "sha256-gmRWAqE9/HBb0S9rK0DXoaCoiGbtat0gmdeozhbv0NI=";
};
patches = [
./common.patch
];
patchFlags = [ "-p2" ];
sourceRoot = "${src.name}/UnixBench";
postPatch = ''
substituteInPlace Makefile \
--replace "-Wa,-q" ""
'';
nativeBuildInputs = [
makeWrapper
pandoc
installShellFiles
];
buildInputs = [
perl
]
++ lib.optionals withGL [
xorg.libX11
xorg.libXext
libGLX
];
runtimeDependencies = [
coreutils
unixtools.net-tools
unixtools.locale
targetPackages.stdenv.cc
gnugrep
gawk
]
++ lib.optionals withX11perf [
xorg.x11perf
];
makeFlags = [
"CC=${stdenv.cc.targetPrefix}cc"
]
++ lib.optionals withGL [
"GRAPHIC_TESTS=defined"
];
installPhase = ''
runHook preInstall
mkdir -p $out/{bin,libexec,share}
install -D Run $out/bin/ubench
cp -r pgms $out/libexec/
cp -r testdir $out/share/
runHook postInstall
'';
postInstall = ''
substituteInPlace USAGE \
--replace 'Run"' 'ubench"' \
--replace './Run' 'ubench' \
--replace 'Run ' 'ubench '
pandoc -f rst -t man USAGE -o ubench.1
installManPage ubench.1
'';
preFixup = ''
substituteInPlace $out/libexec/pgms/multi.sh \
--replace '/bin/sh "$' '${runtimeShell} "$'
substituteInPlace $out/bin/ubench \
--subst-var out
wrapProgram $out/bin/ubench \
--prefix PATH : ${lib.makeBinPath runtimeDependencies}
'';
meta = with lib; {
description = "Basic indicator of the performance of a Unix-like system";
homepage = "https://github.com/kdlucas/byte-unixbench";
license = licenses.gpl2Plus;
mainProgram = "ubench";
maintainers = with maintainers; [ aleksana ];
platforms = platforms.unix;
};
}

View File

@@ -0,0 +1,70 @@
{
lib,
stdenv,
fetchurl,
libpulseaudio,
alsa-lib,
pkg-config,
qt5,
ncurses,
autoreconfHook,
}:
stdenv.mkDerivation (finalAttrs: {
pname = "unixcw";
version = "3.6.1";
src = fetchurl {
url = "mirror://sourceforge/unixcw/unixcw-${finalAttrs.version}.tar.gz";
hash = "sha256-Cvg4VSFL+QtMDRSSIYhKtEWPOFfDiXLUKNrr87rdbjI=";
};
patches = [
# fix pkg-config searching for ncurses
# yoinked from gentoo (https://gitweb.gentoo.org/repo/gentoo.git/tree/media-radio/unixcw/files/unixcw-3.6-tinfo.patch), with modifications
./unixcw-3.6-tinfo.patch
];
postPatch = ''
substituteInPlace src/cwcp/Makefile.am \
--replace-fail '-lcurses' '-lncurses'
'';
nativeBuildInputs = [
autoreconfHook
pkg-config
qt5.wrapQtAppsHook
];
buildInputs = [
libpulseaudio
alsa-lib
qt5.qtbase
ncurses
];
CFLAGS = "-lasound -lpulse-simple";
meta = {
description = "Sound characters as Morse code on the soundcard or console speaker";
longDescription = ''
unixcw is a project providing libcw library and a set of programs
using the library: cw, cwgen, cwcp and xcwcp.
The programs are intended for people who want to learn receiving
and sending Morse code.
unixcw is developed and tested primarily on GNU/Linux system.
cw reads characters from an input file, or from standard input,
and sounds each valid character as Morse code on either the system sound card,
or the system console speaker.
After it sounds a character, cw echoes it to standard output.
The input stream can contain embedded command strings.
These change the parameters used when sounding the Morse code.
cw reports any errors in embedded commands
'';
homepage = "https://unixcw.sourceforge.net";
maintainers = [ lib.maintainers.mafo ];
license = lib.licenses.gpl2Plus;
platforms = lib.platforms.linux;
};
})

View File

@@ -0,0 +1,20 @@
--- a/configure.ac 2017-03-07 13:31:46.074580930 +0100
+++ b/configure.ac 2017-03-07 13:33:25.640924331 +0100
@@ -347,7 +347,7 @@
AC_DEFINE([LIBCW_WITH_PULSEAUDIO], [1], [Define as 1 if your build machine can support PulseAudio.])
fi
-
+PKG_PROG_PKG_CONFIG
if test "$enable_cwcp" = "no" ; then
WITH_CWCP='no'
@@ -355,6 +355,7 @@
AC_CHECK_LIB(curses, initscr)
- if test $ac_cv_lib_curses_initscr = 'yes' ; then
+ if true ; then
WITH_CWCP='yes'
+ PKG_CHECK_MODULES(ncurses, ncurses, [NCURSES_LIB="$ncurses_LIBS"], )
else
WITH_CWCP='no'
AC_MSG_WARN([Cannot find libcurses - unable to build cwcp])

View File

@@ -0,0 +1,111 @@
{
stdenv,
cmake,
fetchFromGitHub,
freetype,
pkg-config,
SDL2,
libpng,
libjpeg,
zlib,
libogg,
libvorbis,
libarchive,
iconv,
openssl,
curl,
libcpr,
rapidjson,
libX11,
libGL,
writeShellScriptBin,
makeDesktopItem,
lib,
copyDesktopItems,
}:
stdenv.mkDerivation (finalAttrs: {
pname = "unnamed-sdvx-clone";
version = "0.6.0";
src = fetchFromGitHub {
owner = "Drewol";
repo = "unnamed-sdvx-clone";
tag = "v${finalAttrs.version}";
fetchSubmodules = true;
hash = "sha256-wuf7xZztoxzNQJzlJOfH/Dc25/717NevBx7E0RDybho=";
};
nativeBuildInputs = [
cmake
pkg-config
copyDesktopItems
];
buildInputs = [
freetype
SDL2
libpng
libjpeg
zlib
libogg
libvorbis
libarchive
iconv
openssl
curl
libcpr
rapidjson
libX11
libGL
];
cmakeFlags = [
"-DUSE_SYSTEM_CPR=ON"
"-DCMAKE_BUILD_TYPE=Release"
];
# Wrapper script because the things are hardcoded so we just
# change the game directory via the built in option uhhhhh
wrapperScript = writeShellScriptBin "usc-game-wrapped" ''
DATA_PATH="''${XDG_CONFIG_HOME:-$HOME/.local/share}/usc"
mkdir -p $DATA_PATH
cp -r @out@/bin/audio $DATA_PATH
cp -r @out@/bin/fonts $DATA_PATH
cp -r @out@/bin/skins $DATA_PATH
cp -r @out@/bin/LightPlugins $DATA_PATH
find $DATA_PATH -type d -exec chmod 755 {} +
find $DATA_PATH -type f -exec chmod 644 {} +
@out@/bin/usc-game -gamedir="$DATA_PATH"
'';
desktopItems = [
(makeDesktopItem {
name = "Unnamed SDVX Clone";
exec = "usc-game-wrapped";
comment = "Unnamed SDVX Clone";
desktopName = "Unnamed SDVX Clone";
categories = [ "Game" ];
})
];
installPhase = ''
runHook preInstall
mkdir -p $out/bin
substituteAll $wrapperScript/bin/usc-game-wrapped $out/bin/usc-game-wrapped
chmod +x $out/bin/usc-game-wrapped
mkdir $out/share
cp -r /build/source/bin $out
runHook postInstall
'';
meta = {
description = "Game based on K-Shoot MANIA and Sound Voltex";
license = lib.licenses.mit;
maintainers = with lib.maintainers; [ sako ];
platforms = lib.platforms.linux;
mainProgram = "usc-game-wrapped";
};
})

View File

@@ -0,0 +1,37 @@
{
lib,
stdenvNoCC,
fetchurl,
_7zz,
}:
stdenvNoCC.mkDerivation (finalAttrs: {
pname = "unnaturalscrollwheels";
version = "1.3.0";
src = fetchurl {
url = "https://github.com/ther0n/UnnaturalScrollWheels/releases/download/${finalAttrs.version}/UnnaturalScrollWheels-${finalAttrs.version}.dmg";
sha256 = "1c6vlf0kc7diz0hb1fmrqaj7kzzfvr65zcchz6xv5cxf0md4n70r";
};
sourceRoot = ".";
# APFS format is unsupported by undmg
nativeBuildInputs = [ _7zz ];
installPhase = ''
runHook preInstall
mkdir -p $out/Applications
cp -r *.app $out/Applications
runHook postInstall
'';
meta = with lib; {
description = "Invert scroll direction for physical scroll wheels";
homepage = "https://github.com/ther0n/UnnaturalScrollWheels";
license = licenses.gpl3Plus;
sourceProvenance = with lib.sourceTypes; [ binaryNativeCode ];
maintainers = with maintainers; [ emilytrau ];
platforms = platforms.darwin;
};
})

View File

@@ -0,0 +1,25 @@
diff --git a/configure b/configure
index 8fca0b9cb..5d9ee20ac 100755
--- a/configure
+++ b/configure
@@ -8239,13 +8239,13 @@ printf '%s\n' "no" >&6; }
fi
-if test "$HAVE_COL" != "yes" ; then
- if test $host_os != mingw32; then
- as_fn_error $? "Couldn't find 'col'" "$LINENO" 5
- else
- as_fn_error $? "Couldn't find 'col' (install 'util-linux' in Cygwin)" "$LINENO" 5
- fi
-fi
+#if test "$HAVE_COL" != "yes" ; then
+# if test $host_os != mingw32; then
+# as_fn_error $? "Couldn't find 'col'" "$LINENO" 5
+# else
+# as_fn_error $? "Couldn't find 'col' (install 'util-linux' in Cygwin)" "$LINENO" 5
+# fi
+#fi
if test $host_os != mingw32; then
{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for pseudo random number device" >&5

View File

@@ -0,0 +1,88 @@
{
lib,
stdenv,
fetchFromGitHub,
util-linux,
ncurses,
flex,
bison,
lua5_4,
}:
stdenv.mkDerivation {
pname = "unnethack";
version = "6.0.14";
src = fetchFromGitHub {
owner = "UnNetHack";
repo = "UnNetHack";
# releases are not tagged
rev = "c8c1a467bb114fc7cb9967d20ebf389e11e1e7fd";
hash = "sha256-45sybOM2zCPCCuHGZ5sEeJzkgcwvi3MhgOC1v1kRwWg=";
};
patches = [
# util-linux does not contains "col" binary on Darwin. Only needed for documentation build.
# https://github.com/util-linux/util-linux/commit/8886d84e25a457702b45194d69a47313f76dc6bc
./disable-col-check.patch
];
buildInputs = [
ncurses
lua5_4
];
nativeBuildInputs = [
util-linux
flex
bison
];
configureFlags = [
"--enable-curses-graphics"
"--disable-tty-graphics"
"--with-owner=no"
"--with-group=no"
"--with-gamesdir=/tmp/unnethack"
];
makeFlags = [ "GAMEPERM=744" ];
enableParallelBuilding = true;
postInstall = ''
cp -r /tmp/unnethack $out/share/unnethack/profile
mv $out/bin/unnethack $out/bin/.wrapped_unnethack
cat <<EOF >$out/bin/unnethack
#! ${stdenv.shell} -e
if [ ! -d ~/.unnethack ]; then
mkdir -p ~/.unnethack
cp -r $out/share/unnethack/profile/* ~/.unnethack
chmod -R +w ~/.unnethack
fi
ln -s ~/.unnethack /tmp/unnethack
cleanup() {
rm -rf /tmp/unnethack
}
trap cleanup EXIT
$out/bin/.wrapped_unnethack
EOF
chmod +x $out/bin/unnethack
'';
meta = {
description = "Fork of NetHack";
mainProgram = "unnethack";
homepage = "https://unnethack.wordpress.com/";
license = with lib.licenses; [
gpl3Only
cc-by-sa-30
publicDomain
];
platforms = lib.platforms.all;
maintainers = [ ];
};
}

View File

@@ -0,0 +1,49 @@
{
lib,
stdenv,
fetchFromGitHub,
libreoffice-unwrapped,
asciidoc,
makeWrapper,
# whether to install odt2pdf/odt2doc/... symlinks to unoconv
installSymlinks ? true,
}:
stdenv.mkDerivation rec {
pname = "unoconv";
version = "0.9.0";
src = fetchFromGitHub {
owner = "unoconv";
repo = "unoconv";
rev = version;
sha256 = "1akx64686in8j8arl6vsgp2n3bv770q48pfv283c6fz6wf9p8fvr";
};
nativeBuildInputs = [
asciidoc
makeWrapper
];
preBuild = ''
makeFlags=prefix="$out"
'';
postInstall = ''
sed -i "s|/usr/bin/env python.*|${libreoffice-unwrapped.python.interpreter}|" "$out/bin/unoconv"
wrapProgram "$out/bin/unoconv" \
--set-default UNO_PATH "${libreoffice-unwrapped}/lib/libreoffice/program/"
''
+ lib.optionalString installSymlinks ''
make install-links prefix="$out"
'';
meta = with lib; {
description = "Convert between any document format supported by LibreOffice/OpenOffice";
homepage = "http://dag.wieers.com/home-made/unoconv/";
license = licenses.gpl2Only;
platforms = platforms.linux;
maintainers = [ maintainers.bjornfor ];
mainProgram = "unoconv";
};
}

View File

@@ -0,0 +1,47 @@
From 9f69077286540c75a245b44f6fd7b7cd03da2d44 Mon Sep 17 00:00:00 2001
From: Freya Murphy <freya@freyacat.org>
Date: Sun, 20 Jul 2025 11:53:51 -0400
Subject: [PATCH 1/3] disable git rev check
---
vue.config.js | 21 +++------------------
1 file changed, 3 insertions(+), 18 deletions(-)
diff --git a/vue.config.js b/vue.config.js
index 04b61d3..559b119 100644
--- a/vue.config.js
+++ b/vue.config.js
@@ -1,27 +1,12 @@
const webpack = require('webpack')
const { execSync } = require('child_process')
-const git_branch = execSync('git rev-parse --abbrev-ref HEAD').toString()
-
var build_info = {
- 'process.env.BUILD_BRANCH': JSON.stringify(
- git_branch.trim()
- ),
+ 'process.env.BUILD_BRANCH': "@git_branch@",
'process.env.BUILD_DATE': JSON.stringify(new Date().toISOString()),
'process.env.BUILD_PLATFORM': JSON.stringify(process.platform),
- 'process.env.BUILD_GIT_REVISION': JSON.stringify(
- execSync('git rev-parse HEAD').toString().trim()
- )
-}
-
-try {
- const git_remote = execSync(`git config --get branch.${git_branch.trim()}.remote`).toString()
- const git_remote_url = execSync(`git config --get remote.${git_remote.trim()}.url`).toString()
-
- build_info['process.env.BUILD_GIT_REMOTE'] = JSON.stringify(git_remote_url.trim())
-} catch (e) {
- build_info['process.env.BUILD_GIT_REMOTE'] = JSON.stringify("(no remote)")
- console.warn("No git remote")
+ 'process.env.BUILD_GIT_REVISION': "@git_revision@",
+ 'process.env.BUILD_GIT_REMOTE': "@git_remote@",
}
module.exports = {
--
2.50.1

View File

@@ -0,0 +1,63 @@
From 03ab3354eb9acb41c271238e7b9a5e77570809ae Mon Sep 17 00:00:00 2001
From: Freya Murphy <freya@freyacat.org>
Date: Sun, 20 Jul 2025 12:06:21 -0400
Subject: [PATCH 2/3] disable update check
---
src/components/SystemPages/Settings.vue | 15 +++++++++------
src/components/UIElements/Updater.vue | 13 +------------
2 files changed, 10 insertions(+), 18 deletions(-)
diff --git a/src/components/SystemPages/Settings.vue b/src/components/SystemPages/Settings.vue
index 3371358..47c5ea6 100644
--- a/src/components/SystemPages/Settings.vue
+++ b/src/components/SystemPages/Settings.vue
@@ -598,12 +598,15 @@ export default {
label: "Use system window decorations",
desc: "Use OS-native window decorations instead of the electron title bar. <strong>Will restart the application.</strong>",
platform_whitelist: ['electron']
- }, {
- model: "allowSysUpdateNotifs",
- label: "Update notifications",
- desc: "Unless this setting is disabled, the collection will check to see if there's a new version of the app available when it starts up and alert you if there is.",
- platform_whitelist: ['electron']
- }, {
+ },
+ // MOD: patch out update notifs
+ // {
+ // model: "allowSysUpdateNotifs",
+ // label: "Update notifications",
+ // desc: "Unless this setting is disabled, the collection will check to see if there's a new version of the app available when it starts up and alert you if there is.",
+ // platform_whitelist: ['electron']
+ // },
+ {
model: "useTabbedBrowsing",
label: "Tabbed Browsing",
desc: "By default, the web app only shows one page at a time, like a standard website. This setting re-enables the in-app tab bar, and the app will store your tabs in settings.",
diff --git a/src/components/UIElements/Updater.vue b/src/components/UIElements/Updater.vue
index 6b3f677..d9bae45 100644
--- a/src/components/UIElements/Updater.vue
+++ b/src/components/UIElements/Updater.vue
@@ -73,18 +73,7 @@ export default {
watch: {
},
mounted(){
- const is_flatpak = !!(process.env.container)
- if (this.$localData.settings.allowSysUpdateNotifs && !is_flatpak) {
- const now = new Date()
- const last_checked = new Date(this.$localData.settings.lastCheckedUpdate)
- const one_day = (12 * 60 * 60 * 1000)
- if (last_checked == "Invalid Date" || now - last_checked > one_day) {
- this.doUpdateCheck()
- this.$localData.settings.lastCheckedUpdate = now.toISOString()
- } else {
- this.$logger.info("Skipping update check, already checked", last_checked)
- }
- }
+ // MOD: patch out update check
}
}
</script>
--
2.50.1

View File

@@ -0,0 +1,101 @@
From 6be6ba5922363b478eca447135cd2421f8c598ab Mon Sep 17 00:00:00 2001
From: Freya Murphy <freya@freyacat.org>
Date: Sun, 20 Jul 2025 12:01:12 -0400
Subject: [PATCH 3/3] make compatible with native electron
---
src/background.js | 15 +++++----------
src/components/SystemPages/Settings.vue | 12 +++++++-----
src/components/UIElements/MediaEmbed.vue | 20 ++------------------
3 files changed, 14 insertions(+), 33 deletions(-)
diff --git a/src/background.js b/src/background.js
index d75c5fc..6fa2256 100644
--- a/src/background.js
+++ b/src/background.js
@@ -314,16 +314,8 @@ if (assetDir === undefined) {
is_first_run = true
} else {
try {
- if (store.has('settings.ruffleFallback') && store.get('settings.ruffleFallback') === true) {
- logger.info("Ruffle fallback enabled, disabling ppapi-level flash player")
- } else {
- // Pick the appropriate flash plugin for the user's platform
- const flashPath = getFlashPath()
-
- if (fs.existsSync(flashPath)) {
- app.commandLine.appendSwitch('ppapi-flash-path', flashPath)
- } else throw Error(`Flash plugin not located at ${flashPath}`)
- }
+ // MOD: always use ruffle
+ logger.info("Ruffle fallback enabled, disabling ppapi-level flash player")
if (store.has('settings.smoothScrolling') && store.get('settings.smoothScrolling') === false)
app.commandLine.appendSwitch('disable-smooth-scrolling')
@@ -755,6 +747,9 @@ async function createWindow () {
autoHideMenuBar: true,
webPreferences: {
nodeIntegration: process.env.ELECTRON_NODE_INTEGRATION,
+ // MOD: disable isolation to get
+ // collection to work with electron 35
+ contextIsolation: false,
enableRemoteModule: true,
plugins: true,
webviewTag: true
diff --git a/src/components/SystemPages/Settings.vue b/src/components/SystemPages/Settings.vue
index 47c5ea6..5630625 100644
--- a/src/components/SystemPages/Settings.vue
+++ b/src/components/SystemPages/Settings.vue
@@ -619,11 +619,13 @@ export default {
label: "Reduce Motion",
desc: "Attempts to reduce the amount of automatic motion in the comic by replacing animated gifs with a manual scrubber, and requiring an explicit click before playing Flash animations.",
platform_whitelist: ['electron']
- }, {
- model: "ruffleFallback",
- label: "Ruffle flash emulation fallback",
- desc: "If the built-in flash player is non-functional, use the <a href='https://ruffle.rs/'>Ruffle</a> Flash emulator in place of Flash."
- }
+ },
+ // MOD: always use ruffle
+ // {
+ // model: "ruffleFallback",
+ // label: "Ruffle flash emulation fallback",
+ // desc: "If the built-in flash player is non-functional, use the <a href='https://ruffle.rs/'>Ruffle</a> Flash emulator in place of Flash."
+ // }
],
retconList: [
{
diff --git a/src/components/UIElements/MediaEmbed.vue b/src/components/UIElements/MediaEmbed.vue
index 760fec4..53f34ff 100644
--- a/src/components/UIElements/MediaEmbed.vue
+++ b/src/components/UIElements/MediaEmbed.vue
@@ -156,24 +156,8 @@ export default {
return ret
},
ruffleEmbed() {
- // At some point between 2025.3.14 and 2025.4.13 ruffle stopped supporting our old runtime. Damn. -->
- if (this.$localData.settings.ruffleFallback) {
- if (this.$isWebApp) {
- return '<script src="https://unpkg.com/@ruffle-rs/ruffle"><\/script>'
- } else {
- // 0.1.0-nightly.2024.04.13 OK
- // ...
- // 0.1.0-nightly.2024.07.19 OK
- // 0.1.0-nightly.2024.07.20 scale issue
- // ...
- // 0.1.0-nightly.2025.04.07 scale issue
- // 0.1.0-nightly.2025.04.13 syntax issue
- // return '<script src="https://unpkg.com/@ruffle-rs/ruffle@0.1.0-nightly.2024.7.19"><\/script>'
- return `<script src="${this.$getResourceURL("assets://js/ruffle/ruffle.js")}"><\/script>`
- }
- } else {
- return '<!-- Using real flash -->'
- }
+ // MOD: always use ruffle
+ return `<script src="${this.$getResourceURL("assets://js/ruffle/ruffle.js")}"><\/script>`
},
flashSrc() {
return `
--
2.50.1

View File

@@ -0,0 +1,21 @@
directories:
output: dist_electron
buildResources: build
app: dist_electron/bundled
files:
- filter:
- '**'
extends: null
appId: com.bambosh.unofficialhomestuckcollection
productName: The Unofficial Homestuck Collection
copyright: Copyright © 2025 GiovanH
protocols:
name: Unofficial Homestuck Collection
role: Viewer
schemes:
- mspa
linux:
asarUnpack:
- '**/*.node'
maintainer: GiovanH <uhscollection@icloud.com>
category: game

View File

@@ -0,0 +1,117 @@
{
lib,
stdenv,
electron,
fetchFromGitHub,
fetchurl,
fetchYarnDeps,
fixup-yarn-lock,
replaceVars,
writableTmpDirAsHomeHook,
makeWrapper,
nodejs,
yarn,
libglvnd,
}:
stdenv.mkDerivation (finalAttrs: {
pname = "unofficial-homestuck-collection";
version = "2.7.2";
src = fetchFromGitHub {
owner = "GiovanH";
repo = "unofficial-homestuck-collection";
rev = "v${finalAttrs.version}";
hash = "sha256-0RPZfXdcdBo1OxJU3eSRF7fEO5EYMyJCcAZLEqzDMRk=";
};
patches = [
(replaceVars ./0001-disable-git-rev-check.patch {
git_branch = "'main'";
git_revision = "'${finalAttrs.src.rev}'";
git_remote = "'${finalAttrs.src.url}'";
})
./0002-disable-update-check.patch
./0003-make-compatible-with-native-electron.patch
];
offlineCache = fetchYarnDeps {
yarnLock = "${finalAttrs.src}/yarn.lock";
hash = "sha256-mo5Ir/pLoqc6K/0AOJqKC0yup7vx9UrNfQ+casIgBCo=";
};
nativeBuildInputs = [
fixup-yarn-lock
makeWrapper
nodejs
writableTmpDirAsHomeHook
yarn
];
configurePhase = ''
runHook preConfigure
# setup yarn
fixup-yarn-lock yarn.lock
yarn config --offline set ignore-engines true
yarn config --offline set yarn-offline-mirror $offlineCache
yarn install --offline --frozen-lockfile --ignore-scripts --no-progress
patchShebangs node_modules
# fixup node_modules
echo > node_modules/phantomjs-prebuilt/install.js
echo > node_modules/electron/index.js
runHook postConfigure
'';
buildPhase = ''
runHook preBuild
make src/imods.tar.gz
make src/js/crc_imods.json
env NODE_OPTIONS=--max_old_space_size=8192 \
yarn run vue-cli-service electron:build \
--dir \
-c.electronDist=${electron.dist} \
-c.electronVersion=${electron.version} \
--config ${./electron-builder.yml}
runHook postBuild
'';
installPhase = ''
runHook preInstall
for i in 16x16 24x24 48x48 64x64 128x128 256x256 512x512; do
install -Dm644 build/icons/$i.png $out/share/icons/hicolor/$i/apps/dev.bambosh.UnofficialHomestuckCollection.png
done
install -Dm644 build/dev.bambosh.UnofficialHomestuckCollection.metainfo.xml $out/share/metainfo/dev.bambosh.UnofficialHomestuckCollection.metainfo.xml
install -Dm644 build/dev.bambosh.UnofficialHomestuckCollection.desktop $out/share/applications/dev.bambosh.UnofficialHomestuckCollection.desktop
install -d $out/bin $out/share/unofficial-homestuck-collection
cp -r dist_electron/*-unpacked/{locales,resources{,.pak}} $out/share/unofficial-homestuck-collection
makeWrapper ${lib.getExe electron} $out/bin/unofficial-homestuck-collection \
--add-flags $out/share/unofficial-homestuck-collection/resources/app.asar \
--add-flags "\''${NIXOS_OZONE_WL:+\''${WAYLAND_DISPLAY:+--ozone-platform-hint=auto --enable-features=WaylandWindowDecorations}}" \
--add-flags --no-sandbox \
--set LD_LIBRARY_PATH "${
lib.makeLibraryPath [
libglvnd
]
}" \
--inherit-argv0
runHook postInstall
'';
meta = {
description = "Offline collection of Homestuck and its related works (ruffle only)";
homepage = "https://homestuck.giovanh.com/unofficial-homestuck-collection/";
changelog = "https://github.com/GiovanH/unofficial-homestuck-collection/releases/tag/v${finalAttrs.version}";
license = lib.licenses.gpl3Plus;
maintainers = with lib.maintainers; [
kenshineto
];
mainProgram = "unofficial-homestuck-collection";
platforms = lib.platforms.linux;
};
})

View File

@@ -0,0 +1,32 @@
{
stdenv,
lib,
fetchFromGitHub,
cmake,
ninja,
}:
stdenv.mkDerivation (finalAttrs: {
pname = "unordered-dense";
version = "4.6.0";
src = fetchFromGitHub {
owner = "martinus";
repo = "unordered_dense";
tag = "v${finalAttrs.version}";
hash = "sha256-PgrbNHodhFruGP6n6MZ3FtFTyyNRCIEytChFUbbiZOU=";
};
nativeBuildInputs = [
cmake
ninja
];
meta = {
description = "Fast & densely stored hashmap and hashset based on robin-hood backward shift deletion";
homepage = "https://github.com/martinus/unordered_dense";
changelog = "https://github.com/martinus/unordered_dense/releases/tag/${finalAttrs.src.tag}";
maintainers = with lib.maintainers; [ marcin-serwin ];
license = lib.licenses.mit;
platforms = lib.platforms.all;
};
})

View File

@@ -0,0 +1,67 @@
{
stdenv,
lib,
fetchFromGitLab,
installShellFiles,
makeWrapper,
perl,
unzip,
gzip,
file,
# extractors which are added to unps PATH
extraBackends ? [ ],
}:
let
runtime_bins = [
file
unzip
gzip
]
++ extraBackends;
in
stdenv.mkDerivation (finalAttrs: {
pname = "unp";
version = "2.0";
src = fetchFromGitLab {
domain = "salsa.debian.org";
owner = "blade";
repo = "unp";
tag = "debian/${finalAttrs.version}";
hash = "sha256-6lYyKnNUkz9PKdn++zHe2SMdFsgaajStIdSaenbXIRo=";
};
nativeBuildInputs = [
installShellFiles
makeWrapper
];
buildInputs = [ perl ];
dontConfigure = true;
dontBuild = true;
installPhase = ''
runHook preInstall
installBin unp ucat
installManPage debian/unp.1
wrapProgram $out/bin/unp \
--prefix PATH : ${lib.makeBinPath runtime_bins}
wrapProgram $out/bin/ucat \
--prefix PATH : ${lib.makeBinPath runtime_bins}
runHook postInstall
'';
meta = {
description = "Command line tool for unpacking archives easily";
homepage = "https://packages.qa.debian.org/u/unp.html";
license = with lib.licenses; [ gpl2Only ];
maintainers = [ lib.maintainers.timor ];
platforms = lib.platforms.all;
};
})

View File

@@ -0,0 +1,33 @@
{
lib,
fetchFromGitHub,
buildGoModule,
}:
buildGoModule rec {
pname = "unpackerr";
version = "0.14.5";
src = fetchFromGitHub {
owner = "davidnewhall";
repo = "unpackerr";
rev = "v${version}";
sha256 = "sha256-uQwpdgV6ksouW9JTuiiuQjxBGOE/ypDW769kNJgWrHw=";
};
vendorHash = "sha256-wWIw0gNn5tqRq0udzPy/n2OkiIVESpSotOSn2YlBNS4=";
ldflags = [
"-s"
"-w"
"-X golift.io/version.Version=${version}"
];
meta = with lib; {
description = "Extracts downloads for Radarr, Sonarr, Lidarr - Deletes extracted files after import";
homepage = "https://github.com/davidnewhall/unpackerr";
maintainers = [ ];
license = licenses.mit;
mainProgram = "unpackerr";
};
}

View File

@@ -0,0 +1,61 @@
{
lib,
stdenv,
fetchurl,
# build
meson,
ninja,
pkg-config,
# docs
sphinx,
# runtime
buildPackages,
ffmpeg-headless,
# tests
nixosTests,
}:
stdenv.mkDerivation rec {
pname = "unpaper";
version = "7.0.0";
src = fetchurl {
url = "https://www.flameeyes.eu/files/${pname}-${version}.tar.xz";
hash = "sha256-JXX7vybCJxnRy4grWWAsmQDH90cRisEwiD9jQZvkaoA=";
};
outputs = [
"out"
"man"
];
nativeBuildInputs = [
buildPackages.libxslt.bin
meson
ninja
pkg-config
sphinx
];
buildInputs = [
ffmpeg-headless
];
passthru.tests = {
inherit (nixosTests) paperless;
};
meta = {
homepage = "https://www.flameeyes.eu/projects/unpaper";
changelog = "https://github.com/unpaper/unpaper/blob/unpaper-${version}/NEWS";
description = "Post-processing tool for scanned sheets of paper";
license = lib.licenses.gpl2Only;
platforms = lib.platforms.all;
mainProgram = "unpaper";
maintainers = [ lib.maintainers.rycee ];
};
}

View File

@@ -0,0 +1,29 @@
{
lib,
buildGoModule,
fetchFromGitHub,
}:
buildGoModule {
pname = "unparam";
version = "0-unstable-2025-03-01";
src = fetchFromGitHub {
owner = "mvdan";
repo = "unparam";
rev = "0df0534333a487d07b143c1b2c2e0046671d2d63";
hash = "sha256-k/BgHvjB3fXz4CWTHRFja/EiGlof/c80jhRb91FaINs=";
};
vendorHash = "sha256-Q7q0NZgofxChaSpYL5dS4NDadwfrXlLtkG/F7tGJuhA=";
subPackages = [ "." ];
meta = with lib; {
description = "Find unused parameters in Go";
homepage = "https://github.com/mvdan/unparam";
license = licenses.bsd3;
maintainers = with maintainers; [ SuperSandro2000 ];
mainProgram = "unparam";
};
}

View File

@@ -0,0 +1,39 @@
{
lib,
fetchFromGitHub,
rustPlatform,
}:
rustPlatform.buildRustPackage rec {
pname = "unpfs";
version = "0-unstable-2021-04-23";
src = fetchFromGitHub {
owner = "pfpacket";
repo = "rust-9p";
rev = "6d9b62aa182c5764e00b96f93109feb605d9eac9";
sha256 = "sha256-zyDkUb+bFsVnxAE4UODbnRtDim7gqUNuY22vuxMsLZM=";
};
sourceRoot = "${src.name}/example/unpfs";
cargoHash = "sha256-jRe1lgzfhzBUsS6wwwlqxxomap2TIDOyF3YBv20GJ14=";
RUSTC_BOOTSTRAP = 1;
postInstall = ''
install -D -m 0444 ../../README* -t "$out/share/doc/${pname}"
install -D -m 0444 ../../LICEN* -t "$out/share/doc/${pname}"
'';
meta = with lib; {
description = "9P2000.L server implementation in Rust";
homepage = "https://github.com/pfpacket/rust-9p";
license = licenses.bsd3;
maintainers = with maintainers; [ raskin ];
# macOS build fails: https://github.com/pfpacket/rust-9p/issues/7
platforms = with platforms; linux;
mainProgram = "unpfs";
};
}

View File

@@ -0,0 +1,36 @@
{
lib,
buildGoModule,
fetchFromGitHub,
nixosTests,
}:
buildGoModule rec {
pname = "unpoller";
version = "2.15.4";
src = fetchFromGitHub {
owner = "unpoller";
repo = "unpoller";
rev = "v${version}";
hash = "sha256-srAskagINMPWG+k6bbUD+8QZyD7C3PbsApQfeEF01NE=";
};
vendorHash = "sha256-kS+UUD6lexYAy7so7DGq6PiOYHSwLFcOw7+KC2jIlMg=";
ldflags = [
"-w"
"-s"
"-X golift.io/version.Version=${version}"
];
passthru.tests = { inherit (nixosTests.prometheus-exporters) unpoller; };
meta = {
description = "Collect ALL UniFi Controller, Site, Device & Client Data - Export to InfluxDB or Prometheus";
homepage = "https://github.com/unpoller/unpoller";
changelog = "https://github.com/unpoller/unpoller/releases/tag/v${version}";
license = lib.licenses.mit;
maintainers = with lib.maintainers; [ Frostman ];
};
}

View File

@@ -0,0 +1,48 @@
{
lib,
stdenv,
fetchFromGitLab,
autoreconfHook,
libarchive,
pkg-config,
}:
stdenv.mkDerivation (finalAttrs: {
pname = "unrar-free";
version = "0.3.1-unstable-2024-09-19";
src = fetchFromGitLab {
owner = "bgermann";
repo = "unrar-free";
rev = "a7f9a157276ae68987fb44fe5ccf4f4255eb0a5e";
hash = "sha256-aCO1vklG5MneEiqS/IBvC09YrvWa+OndfvCblDFKA1E=";
};
nativeBuildInputs = [
autoreconfHook
pkg-config
];
buildInputs = [ libarchive ];
setupHook = ./setup-hook.sh;
meta = {
description = "Free utility to extract files from RAR archives";
longDescription = ''
unrar-free is a free software version of the non-free unrar utility.
This program is a simple command-line front-end to libarchive, and can list
and extract RAR archives but also other formats supported by libarchive.
It does not rival the non-free unrar in terms of features, but
special care has been taken to ensure it meets most user's needs.
'';
homepage = "https://gitlab.com/bgermann/unrar-free";
license = lib.licenses.gpl2Plus;
mainProgram = "unrar-free";
maintainers = with lib.maintainers; [ thiagokokada ];
platforms = lib.platforms.unix;
broken = stdenv.hostPlatform.isDarwin;
};
})

View File

@@ -0,0 +1,5 @@
unpackCmdHooks+=(_tryUnrarFree)
_tryUnrarFree() {
if ! [[ "$curSrc" =~ \.rar$ ]]; then return 1; fi
unrar-free -x "$curSrc" >/dev/null
}

Some files were not shown because too many files have changed in this diff Show More