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,40 @@
{
lib,
stdenv,
fetchFromGitHub,
pkg-config,
libnotify,
gdk-pixbuf,
}:
stdenv.mkDerivation rec {
pname = "et";
version = "0.1.2";
src = fetchFromGitHub {
owner = "oxzi";
repo = "et";
rev = version;
sha256 = "0i0lgmnly8n7y4y6pb10pxgxyz8s5zk26k8z1g1578v1wan01lnq";
};
buildInputs = [
libnotify
gdk-pixbuf
];
nativeBuildInputs = [ pkg-config ];
installPhase = ''
mkdir -p $out/bin
cp et $out/bin
cp et-status.sh $out/bin/et-status
'';
meta = with lib; {
description = "Minimal libnotify-based (egg) timer";
homepage = "https://github.com/oxzi/et";
license = licenses.gpl3;
platforms = platforms.unix;
maintainers = with maintainers; [ oxzi ];
};
}

View File

@@ -0,0 +1,33 @@
{
lib,
stdenvNoCC,
fetchFromGitHub,
}:
stdenvNoCC.mkDerivation {
pname = "et-book";
version = "0-unstable-2015-10-05";
src = fetchFromGitHub {
owner = "edwardtufte";
repo = "et-book";
rev = "7e8f02dadcc23ba42b491b39e5bdf16e7b383031";
hash = "sha256-B6ryC9ibNop08TJC/w9LSHHwqV/81EezXsTUJFq8xpo=";
};
installPhase = ''
runHook preInstall
mkdir -p $out/share/fonts/truetype
cp -t $out/share/fonts/truetype source/4-ttf/*.ttf
runHook postInstall
'';
meta = with lib; {
description = "Typeface used in Edward Tuftes books";
license = licenses.mit;
platforms = platforms.all;
maintainers = with maintainers; [ jethro ];
};
}

View File

@@ -0,0 +1,36 @@
{
fetchFromGitHub,
lib,
stdenv,
}:
stdenv.mkDerivation (finalAttrs: {
pname = "eta";
version = "1.0.1";
src = fetchFromGitHub {
owner = "aioobe";
repo = "eta";
rev = "v${finalAttrs.version}";
hash = "sha256-UQ8ZoxFAy5dKtXTLwPolPMd7YJeEjsK639RkGCMY6rU=";
};
outputs = [
"out"
"man"
];
makeFlags = [
"PREFIX=$(out)"
"CC=${stdenv.cc.targetPrefix}cc"
];
meta = {
description = "Tool for monitoring progress and ETA of an arbitrary process";
homepage = "https://github.com/aioobe/eta";
license = lib.licenses.gpl3Only;
mainProgram = "eta";
maintainers = with lib.maintainers; [ heisfer ];
platforms = lib.platforms.linux;
};
})

View File

@@ -0,0 +1,46 @@
{
lib,
buildGoModule,
fetchFromGitHub,
}:
buildGoModule rec {
pname = "etcd";
version = "3.4.37";
src = fetchFromGitHub {
owner = "etcd-io";
repo = "etcd";
rev = "v${version}";
hash = "sha256-PZ+8hlxSwayR1yvjHmStMDur9e1uc2s+YB8qdz+42mA=";
};
proxyVendor = true;
vendorHash = "sha256-VeB0A+freNwgETQMIokiOPWovGq1FANUexnzxVg2aRA=";
preBuild = ''
go mod tidy
'';
buildPhase = ''
runHook preBuild
patchShebangs .
./build
./functional/build
runHook postBuild
'';
doCheck = false;
postInstall = ''
install -Dm755 bin/* bin/functional/cmd/* -t $out/bin
'';
meta = {
description = "Distributed reliable key-value store for the most critical data of a distributed system";
downloadPage = "https://github.com/etcd-io/etcd/";
license = lib.licenses.asl20;
homepage = "https://etcd.io/";
maintainers = [ ];
};
}

View File

@@ -0,0 +1,148 @@
{
applyPatches,
buildGoModule,
fetchFromGitHub,
fetchpatch,
installShellFiles,
k3s,
lib,
nixosTests,
stdenv,
symlinkJoin,
}:
let
version = "3.6.4";
etcdSrcHash = "sha256-otz+06cOD2MVnMZWKId1GN+MeZfnDbdudiYfVCKdzuo=";
etcdCtlVendorHash = "sha256-kTH+s/SY+xwo6kt6iPJ7XDhin0jPk0FBr0eOe/717bE=";
etcdUtlVendorHash = "sha256-P0yx9YMMD9vT7N6LOlo26EAOi+Dj33p3ZjAYEoaL19A=";
etcdServerVendorHash = "sha256-kgbCT1JxI98W89veCItB7ZfW4d9D3/Ip3tOuFKEX9v4=";
src = applyPatches {
src = fetchFromGitHub {
owner = "etcd-io";
repo = "etcd";
tag = "v${version}";
hash = etcdSrcHash;
};
patches = [
(fetchpatch {
url = "https://github.com/etcd-io/etcd/commit/31650ab0c8df43af05fc4c13b48ffee59271eec7.patch";
hash = "sha256-Q94HOLFx2fnb61wMQsAUT4sIBXfxXqW9YEayukQXX18=";
})
];
};
env = {
CGO_ENABLED = 0;
};
meta = {
description = "Distributed reliable key-value store for the most critical data of a distributed system";
downloadPage = "https://github.com/etcd-io/etcd";
license = lib.licenses.asl20;
homepage = "https://etcd.io/";
maintainers = with lib.maintainers; [ dtomvan ];
platforms = lib.platforms.darwin ++ lib.platforms.linux;
};
etcdserver = buildGoModule {
pname = "etcdserver";
inherit
env
meta
src
version
;
vendorHash = etcdServerVendorHash;
__darwinAllowLocalNetworking = true;
modRoot = "./server";
preInstall = ''
mv $GOPATH/bin/{server,etcd}
'';
# We set the GitSHA to `GitNotFound` to match official build scripts when
# git is unavailable. This is to avoid doing a full Git Checkout of etcd.
# User facing version numbers are still available in the binary, just not
# the sha it was built from.
ldflags = [ "-X go.etcd.io/etcd/api/v3/version.GitSHA=GitNotFound" ];
};
etcdutl = buildGoModule {
pname = "etcdutl";
inherit
env
meta
src
version
;
vendorHash = etcdUtlVendorHash;
__darwinAllowLocalNetworking = true;
modRoot = "./etcdutl";
nativeBuildInputs = [ installShellFiles ];
postInstall = lib.optionalString (stdenv.buildPlatform.canExecute stdenv.hostPlatform) ''
for shell in bash fish zsh; do
installShellCompletion --cmd etcdutl \
--$shell <($out/bin/etcdutl completion $shell)
done
'';
};
etcdctl = buildGoModule {
pname = "etcdctl";
inherit
env
meta
src
version
;
vendorHash = etcdCtlVendorHash;
modRoot = "./etcdctl";
nativeBuildInputs = [ installShellFiles ];
postInstall = lib.optionalString (stdenv.buildPlatform.canExecute stdenv.hostPlatform) ''
for shell in bash fish zsh; do
installShellCompletion --cmd etcdctl \
--$shell <($out/bin/etcdctl completion $shell)
done
'';
};
in
symlinkJoin {
name = "etcd-${version}";
inherit meta version;
passthru = {
deps = {
inherit etcdserver etcdutl etcdctl;
};
# Fix-Me: Tests for etcd 3.6 needs work.
# tests = {
# inherit (nixosTests) etcd etcd-cluster;
# k3s = k3s.passthru.tests.etcd;
# };
updateScript = ./update.sh;
};
paths = [
etcdserver
etcdutl
etcdctl
];
}

View File

@@ -0,0 +1,74 @@
#!/usr/bin/env nix-shell
#!nix-shell -i bash -p curl gnugrep gnused jq nurl
set -x -eu -o pipefail
MAJOR_VERSION=3
MINOR_VERSION=6
ETCD_PATH="$(dirname "$0")"
ETCD_VERSION_MAJOR_MINOR=${MAJOR_VERSION}.${MINOR_VERSION}
ETCD_PKG_NAME=etcd_${MAJOR_VERSION}_${MINOR_VERSION}
NIXPKGS_PATH="$(git rev-parse --show-toplevel)"
LATEST_TAG=$(curl ${GITHUB_TOKEN:+" -u \":$GITHUB_TOKEN\""} \
--silent https://api.github.com/repos/etcd-io/etcd/releases \
| jq -r 'map(select(.prerelease == false))' \
| jq -r 'map(.tag_name)' \
| grep "v${ETCD_VERSION_MAJOR_MINOR}." \
| sed 's|[", ]||g' \
| sort -rV | head -n1 )
LATEST_VERSION=$(echo ${LATEST_TAG} | sed 's/^v//')
OLD_VERSION="$(nix-instantiate --eval -E "with import $NIXPKGS_PATH {}; \
$ETCD_PKG_NAME.version or (builtins.parseDrvName $ETCD_PKG_NAME.name).version" | tr -d '"')"
if [ ! "$OLD_VERSION" = "$LATEST_VERSION" ]; then
echo "Attempting to update etcd from $OLD_VERSION to $LATEST_VERSION"
ETCD_SRC_HASH=$(nix-prefetch-url --quiet --unpack https://github.com/etcd-io/etcd/archive/refs/tags/${LATEST_TAG}.tar.gz)
ETCD_SRC_HASH=$(nix hash to-sri --type sha256 $ETCD_SRC_HASH)
setKV () {
sed -i "s|$1 = \".*\"|$1 = \"${2:-}\"|" "$ETCD_PATH/default.nix"
}
setKV version $LATEST_VERSION
setKV etcdSrcHash $ETCD_SRC_HASH
getAndSetVendorHash () {
local EMPTY_HASH="sha256-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=" # Hash from lib.fakeHash
local VENDOR_HASH=$EMPTY_HASH
local PKG_KEY=$1
local INNER_PKG=$2
setKV $PKG_KEY $EMPTY_HASH
set +e
VENDOR_HASH=$(nurl -e "(import ${NIXPKGS_PATH}/. {}).$ETCD_PKG_NAME.passthru.deps.$INNER_PKG.goModules")
set -e
if [ -n "${VENDOR_HASH:-}" ]; then
setKV $PKG_KEY $VENDOR_HASH
else
echo "Update failed. $PKG_KEY is empty."
exit 1
fi
}
getAndSetVendorHash etcdServerVendorHash etcdserver
getAndSetVendorHash etcdUtlVendorHash etcdutl
getAndSetVendorHash etcdCtlVendorHash etcdctl
# `git` flag here is to be used by local maintainers to speed up the bump process
if [ $# -eq 1 ] && [ "$1" = "git" ]; then
git switch -c "package-$ETCD_PKG_NAME-$LATEST_VERSION"
git add "$ETCD_PATH"/default.nix
git commit -m "$ETCD_PKG_NAME: $OLD_VERSION -> $LATEST_VERSION
Release: https://github.com/etcd-io/etcd/releases/tag/$LATEST_TAG"
fi
else
echo "etcd is already up-to-date at $OLD_VERSION"
fi

View File

@@ -0,0 +1,74 @@
{
lib,
fetchFromGitHub,
python3,
withLdap ? false,
withPostgres ? true,
nix-update-script,
nixosTests,
}:
python3.pkgs.buildPythonApplication rec {
pname = "etebase-server";
version = "0.14.2";
format = "setuptools";
src = fetchFromGitHub {
owner = "etesync";
repo = "server";
tag = "v${version}";
hash = "sha256-W2u/d8X8luOzgy1CLNgujnwaoO1pR1QO1Ma7i4CGkdU=";
};
patches = [ ./secret.patch ];
doCheck = false;
propagatedBuildInputs =
with python3.pkgs;
[
aiofiles
django_4
fastapi
msgpack
pynacl
redis
uvicorn
websockets
watchfiles
uvloop
pyyaml
python-dotenv
httptools
typing-extensions
]
++ lib.optional withLdap python-ldap
++ lib.optional withPostgres psycopg2;
postInstall = ''
mkdir -p $out/bin $out/lib
cp manage.py $out/bin/etebase-server
wrapProgram $out/bin/etebase-server --prefix PYTHONPATH : "$PYTHONPATH"
chmod +x $out/bin/etebase-server
'';
passthru.updateScript = nix-update-script { };
passthru.python = python3;
# PYTHONPATH of all dependencies used by the package
passthru.pythonPath = python3.pkgs.makePythonPath propagatedBuildInputs;
passthru.tests = {
nixosTest = nixosTests.etebase-server;
};
meta = {
homepage = "https://github.com/etesync/server";
description = "Etebase (EteSync 2.0) server so you can run your own";
mainProgram = "etebase-server";
changelog = "https://github.com/etesync/server/blob/${version}/ChangeLog.md";
license = lib.licenses.agpl3Only;
maintainers = with lib.maintainers; [
felschr
phaer
];
};
}

View File

@@ -0,0 +1,26 @@
diff --git a/etebase_server/settings.py b/etebase_server/settings.py
index 9baf8d3..501d9f6 100644
--- a/etebase_server/settings.py
+++ b/etebase_server/settings.py
@@ -23,11 +22,6 @@
# Quick-start development settings - unsuitable for production
# See https://docs.djangoproject.com/en/3.0/howto/deployment/checklist/
-# SECURITY WARNING: keep the secret key used in production secret!
-# See secret.py for how this is generated; uses a file 'secret.txt' in the root
-# directory
-SECRET_FILE = os.path.join(BASE_DIR, "secret.txt")
-
# SECURITY WARNING: don't run with debug turned on in production!
DEBUG = True
@@ -143,7 +137,7 @@
section = config["global"]
- SECRET_FILE = section.get("secret_file", SECRET_FILE)
+ SECRET_FILE = section.get("secret_file", None)
STATIC_ROOT = section.get("static_root", STATIC_ROOT)
STATIC_URL = section.get("static_url", STATIC_URL)
MEDIA_ROOT = section.get("media_root", MEDIA_ROOT)

View File

@@ -0,0 +1,65 @@
{
lib,
stdenv,
fetchFromGitHub,
cmake,
gflags,
libsodium,
openssl,
protobuf,
zlib,
catch2,
}:
stdenv.mkDerivation rec {
pname = "eternal-terminal";
version = "6.2.11";
src = fetchFromGitHub {
owner = "MisterTea";
repo = "EternalTerminal";
tag = "et-v${version}";
hash = "sha256-d3mCZQO12NUQjGIOX1FWTLUq+adMTNb9QYCSU3ibZMY=";
};
nativeBuildInputs = [
cmake
];
buildInputs = [
gflags
libsodium
openssl
protobuf
zlib
];
preBuild = ''
mkdir -p ../external_imported/Catch2/single_include/catch2
cp ${catch2}/include/catch2/catch.hpp ../external_imported/Catch2/single_include/catch2/catch.hpp
'';
cmakeFlags = [
"-DDISABLE_VCPKG=TRUE"
"-DDISABLE_SENTRY=TRUE"
"-DDISABLE_CRASH_LOG=TRUE"
];
CXXFLAGS = lib.optionals stdenv.cc.isClang [
"-std=c++17"
];
doCheck = true;
meta = {
description = "Remote shell that automatically reconnects without interrupting the session";
homepage = "https://eternalterminal.dev/";
changelog = "https://github.com/MisterTea/EternalTerminal/releases/tag/et-v${version}";
license = lib.licenses.asl20;
maintainers = with lib.maintainers; [
dezgeg
jshort
];
platforms = lib.platforms.linux ++ lib.platforms.darwin;
};
}

View File

@@ -0,0 +1,50 @@
{
lib,
stdenv,
cmake,
libGL,
SDL2,
SDL2_mixer,
SDL2_net,
fetchFromGitHub,
makeWrapper,
}:
stdenv.mkDerivation rec {
pname = "eternity-engine";
version = "4.02.00";
src = fetchFromGitHub {
owner = "team-eternity";
repo = "eternity";
tag = version;
sha256 = "0dlz7axbiw003bgwk2hl43w8r2bwnxhi042i1xwdiwaja0cpnf5y";
fetchSubmodules = true;
};
nativeBuildInputs = [
cmake
makeWrapper
];
buildInputs = [
libGL
SDL2
SDL2_mixer
SDL2_net
];
installPhase = ''
install -Dm755 eternity/eternity $out/lib/eternity/eternity
cp -r $src/base $out/lib/eternity/base
mkdir $out/bin
makeWrapper $out/lib/eternity/eternity $out/bin/eternity
'';
meta = {
homepage = "https://doomworld.com/eternity";
description = "New school Doom port by James Haley";
mainProgram = "eternity";
license = lib.licenses.gpl3;
platforms = lib.platforms.linux;
maintainers = [ ];
};
}

View File

@@ -0,0 +1,53 @@
{
lib,
stdenv,
nixosTests,
python3Packages,
fetchFromGitHub,
radicale,
}:
python3Packages.buildPythonApplication rec {
pname = "etesync-dav";
version = "0.35.1";
pyproject = true;
src = fetchFromGitHub {
owner = "etesync";
repo = "etesync-dav";
tag = "v${version}";
hash = "sha256-y4BhU2kSn+RWqc5+pJQFhbwfat9cMWD0ED0EXJp25cY=";
};
build-system = with python3Packages; [ setuptools ];
pythonRelaxDeps = [ "radicale" ];
dependencies = with python3Packages; [
appdirs
etebase
etesync
flask
flask-wtf
msgpack
(python3Packages.toPythonModule (radicale.override { python3 = python; }))
requests
requests.optional-dependencies.socks
];
doCheck = false;
passthru.tests = {
inherit (nixosTests) etesync-dav;
};
meta = {
homepage = "https://www.etesync.com";
description = "Secure, end-to-end encrypted, and privacy respecting sync for contacts, calendars and tasks";
mainProgram = "etesync-dav";
license = lib.licenses.gpl3Only;
maintainers = with lib.maintainers; [
valodim
];
broken = stdenv.hostPlatform.isDarwin; # pyobjc-framework-Cocoa is missing
};
}

View File

@@ -0,0 +1,53 @@
{
lib,
stdenv,
fetchFromGitHub,
cmake,
gbenchmark,
gtest,
}:
stdenv.mkDerivation rec {
pname = "ethash";
version = "1.1.0";
src = fetchFromGitHub {
owner = "chfast";
repo = "ethash";
rev = "v${version}";
sha256 = "sha256-sLa+lXC+UvqFEoC/ZfoRlotkNhUaqhLtDKHtbH2xa/k=";
};
nativeBuildInputs = [
cmake
];
nativeCheckInputs = [
gbenchmark
gtest
];
#preConfigure = ''
# sed -i 's/GTest::main//' test/unittests/CMakeLists.txt
# cat test/unittests/CMakeLists.txt
# ln -sfv ${gtest.src}/googletest gtest
#'';
# NOTE: disabling tests due to gtest issue
cmakeFlags = [
"-DHUNTER_ENABLED=OFF"
"-DETHASH_BUILD_TESTS=OFF"
#"-Dbenchmark_DIR=${gbenchmark}/lib/cmake/benchmark"
#"-DGTest_DIR=${gtest.dev}/lib/cmake/GTest"
#"-DGTest_DIR=${gtest.src}/googletest"
#"-DCMAKE_PREFIX_PATH=${gtest.dev}/lib/cmake"
];
meta = with lib; {
description = "PoW algorithm for Ethereum 1.0 based on Dagger-Hashimoto";
homepage = "https://github.com/ethereum/ethash";
platforms = platforms.unix;
maintainers = [ ];
license = licenses.asl20;
};
}

View File

@@ -0,0 +1,42 @@
{
lib,
stdenv,
fetchurl,
pkg-config,
libtool,
gtk3,
libpcap,
popt,
itstool,
libxml2,
}:
stdenv.mkDerivation rec {
pname = "etherape";
version = "0.9.21";
src = fetchurl {
url = "mirror://sourceforge/etherape/etherape-${version}.tar.gz";
sha256 = "sha256-SckN87uIDTxg36xERMqPxdaLqPNrgg7V+Hc4HJoHF1w=";
};
strictDeps = true;
nativeBuildInputs = [
itstool
pkg-config
(lib.getBin libxml2)
];
buildInputs = [
libtool
gtk3
libpcap
popt
];
meta = with lib; {
homepage = "https://etherape.sourceforge.net/";
license = lib.licenses.gpl2Plus;
platforms = with platforms; linux;
maintainers = with maintainers; [ symphorien ];
};
}

View File

@@ -0,0 +1,42 @@
{
autoreconfHook,
lib,
pkg-config,
stdenv,
fetchFromGitLab,
gitUpdater,
}:
stdenv.mkDerivation (finalAttrs: {
pname = "ethercat";
version = "1.6.7";
src = fetchFromGitLab {
owner = "etherlab.org";
repo = "ethercat";
rev = "refs/tags/${finalAttrs.version}";
hash = "sha256-UNd8PLdudI5TMdKKNH6BQP2VQ0LSPvsA/sEYnIuZRRA=";
};
separateDebugInfo = true;
nativeBuildInputs = [
autoreconfHook
pkg-config
];
configureFlags = [
"--enable-userlib=yes"
"--enable-kernel=no"
];
passthru.updateScript = gitUpdater { };
meta = with lib; {
description = "IgH EtherCAT Master for Linux";
homepage = "https://etherlab.org/ethercat";
changelog = "https://gitlab.com/etherlab.org/ethercat/-/blob/${finalAttrs.version}/NEWS";
license = licenses.gpl2Plus;
maintainers = with maintainers; [ stv0g ];
platforms = [ "x86_64-linux" ];
};
})

View File

@@ -0,0 +1,26 @@
{
fetchFromGitHub,
buildGoModule,
lib,
}:
buildGoModule rec {
pname = "etherguard";
version = "0.3.5-f5";
src = fetchFromGitHub {
owner = "KusakabeShi";
repo = "EtherGuard-VPN";
rev = "v${version}";
hash = "sha256-67ocXHf+AN3nyPt4636ZJHGRqWSjkpTiDvU5243urBw=";
};
vendorHash = "sha256-9+zpQ/AhprMMfC4Om64GfQLgms6eluTOB6DdnSTNOlk=";
meta = {
mainProgram = "EtherGuard-VPN";
maintainers = with lib.maintainers; [ xddxdd ];
description = "Layer 2 version of WireGuard with Floyd Warshall implementation in Go";
homepage = "https://github.com/KusakabeShi/EtherGuard-VPN";
license = lib.licenses.mit;
platforms = lib.platforms.linux;
};
}

View File

@@ -0,0 +1,19 @@
diff --git a/src/static/js/pluginfw/installer.ts b/src/static/js/pluginfw/installer.ts
index c605378e1..27e3e487b 100644
--- a/src/static/js/pluginfw/installer.ts
+++ b/src/static/js/pluginfw/installer.ts
@@ -83,7 +83,13 @@ export const checkForMigration = async () => {
try {
await fs.access(installedPluginsPath, fs.constants.F_OK);
} catch (err) {
- await migratePluginsFromNodeModules();
+ logger.info(`${installedPluginsPath} not found, creating using current node modules`);
+ try {
+ await migratePluginsFromNodeModules();
+ } catch (err2) {
+ logger.warn(`unable to create ${installedPluginsPath}, skipping plugin migrations`);
+ return;
+ }
}
/*

View File

@@ -0,0 +1,51 @@
From e881a383b38d4d80ee28c17a14b5de58889245de Mon Sep 17 00:00:00 2001
From: Alexandre Iooss <erdnaxe@crans.org>
Date: Tue, 5 Nov 2024 16:30:33 +0100
Subject: [PATCH] Use temporary directory for esbuild
---
src/node/hooks/express/specialpages.ts | 11 +++++------
diff --git a/src/node/hooks/express/specialpages.ts b/src/node/hooks/express/specialpages.ts
index 2e26eaa0cee..31d5138e67c 100644
--- a/src/node/hooks/express/specialpages.ts
+++ b/src/node/hooks/express/specialpages.ts
@@ -3,6 +3,7 @@
import path from 'node:path';
const eejs = require('../../eejs')
import fs from 'node:fs';
+import os from 'node:os';
const fsp = fs.promises;
const toolbar = require('../../utils/toolbar');
const hooks = require('../../../static/js/pluginfw/hooks');
@@ -89,7 +90,7 @@ const convertTypescript = (content: string) => {
const outputRaw = buildSync({
stdin: {
contents: content,
- resolveDir: path.join(settings.root, 'var','js'),
+ resolveDir: settings.root,
loader: 'js'
},
alias:{
@@ -222,7 +223,7 @@ const convertTypescriptWatched = (content: string, cb: (output:string, hash: str
build({
stdin: {
contents: content,
- resolveDir: path.join(settings.root, 'var','js'),
+ resolveDir: settings.root,
loader: 'js'
},
alias:{
@@ -276,10 +277,8 @@ exports.expressCreateServer = async (hookName: string, args: ArgsExpressType, cb
settings,
})
-
-
- const outdir = path.join(settings.root, 'var','js')
- // Create the outdir if it doesn't exist
+ // Create a temporary directory to store runtime-built JS files
+ const outdir = path.join(os.tmpdir(), 'js');
if (!fs.existsSync(outdir)) {
fs.mkdirSync(outdir);
}

View File

@@ -0,0 +1,97 @@
{
lib,
stdenv,
fetchFromGitHub,
nix-update-script,
pnpm_9,
makeWrapper,
nodejs,
}:
let
pnpm = pnpm_9;
in
stdenv.mkDerivation (finalAttrs: {
pname = "etherpad-lite";
version = "2.5.0";
src = fetchFromGitHub {
owner = "ether";
repo = "etherpad-lite";
tag = "v${finalAttrs.version}";
hash = "sha256-11fNDAR6zmHv1O5nL0GhGJj6eHwDc8zT0Tvrba7qBpw=";
};
patches = [
./outdir.patch
# etherpad expects to read and write $out/lib/var/installed_plugins.json
# FIXME: this patch disables plugin support
./dont-fail-on-plugins-json.patch
];
pnpmDeps = pnpm.fetchDeps {
inherit (finalAttrs) pname version src;
fetcherVersion = 1;
hash = "sha256-PZD55V/3dvNLx39tD4I00IzURhuyqMX4uObnQfnSBtk=";
};
nativeBuildInputs = [
pnpm.configHook
makeWrapper
];
buildInputs = [
nodejs
];
buildPhase = ''
runHook preBuild
NODE_ENV="production" pnpm run build:etherpad
runHook postBuild
'';
preInstall = ''
# remove unnecessary files
rm node_modules/.modules.yaml
CI=true pnpm prune --prod --ignore-scripts
find -type f \( -name "*.d.ts" -o -name "*.map" \) -exec rm -rf {} +
# remove non-deterministic files
rm node_modules/.modules.yaml
'';
# Upstream scripts uses `pnpm run prod` which is equivalent to
# `cross-env NODE_ENV=production node --require tsx/cjs node/server.ts`
installPhase = ''
runHook preInstall
mkdir -p $out/{lib/etherpad-lite,bin}
cp -r node_modules ui src doc admin $out/lib/etherpad-lite
makeWrapper ${lib.getExe nodejs} $out/bin/etherpad-lite \
--inherit-argv0 \
--add-flags "--require tsx/cjs $out/lib/etherpad-lite/node_modules/ep_etherpad-lite/node/server.ts" \
--suffix PATH : "${lib.makeBinPath [ pnpm ]}" \
--set NODE_PATH "$out/lib/node_modules:$out/lib/etherpad-lite/node_modules/ep_etherpad-lite/node_modules" \
--set-default NODE_ENV production
find $out/lib -xtype l -delete
runHook postInstall
'';
passthru.updateScript = nix-update-script { };
meta = {
description = "Modern really-real-time collaborative document editor";
longDescription = ''
Etherpad is a real-time collaborative editor scalable to thousands of simultaneous real time users.
It provides full data export capabilities, and runs on your server, under your control.
'';
homepage = "https://etherpad.org/";
changelog = "https://github.com/ether/etherpad-lite/blob/${finalAttrs.src.rev}/CHANGELOG.md";
maintainers = with lib.maintainers; [
erdnaxe
f2k1de
];
license = lib.licenses.asl20;
mainProgram = "etherpad-lite";
platforms = lib.platforms.unix;
};
})

View File

@@ -0,0 +1,42 @@
{
fetchFromGitHub,
lib,
rustPlatform,
versionCheckHook,
nix-update-script,
}:
rustPlatform.buildRustPackage (finalAttrs: {
pname = "ethersync";
version = "0.8.0";
src = fetchFromGitHub {
owner = "ethersync";
repo = "ethersync";
tag = "v${finalAttrs.version}";
hash = "sha256-GPZD/TshZMr+WeCd4WRN/Ewu7zINSzPNPci52bjsV3E=";
};
sourceRoot = "${finalAttrs.src.name}/daemon";
cargoHash = "sha256-F2wVRha63TOdMCWW3KNaQ8kbYjuYbdY5yKmTHOJqODA=";
nativeInstallCheckInputs = [ versionCheckHook ];
versionCheckProgramArg = "--version";
doInstallCheck = true;
passthru.updateScript = nix-update-script { };
meta = {
description = "Real-time co-editing of local text files";
homepage = "https://ethersync.github.io/ethersync/";
downloadPage = "https://github.com/ethersync/ethersync";
changelog = "https://github.com/ethersync/ethersync/blob/${finalAttrs.src.tag}/CHANGELOG.md";
license = lib.licenses.agpl3Plus;
teams = [ lib.teams.ngi ];
maintainers = with lib.maintainers; [
prince213
ethancedwards8
];
};
})

View File

@@ -0,0 +1,38 @@
{
stdenv,
lib,
fetchFromGitHub,
ncurses,
}:
stdenv.mkDerivation rec {
pname = "ethq";
version = "0.7.0";
src = fetchFromGitHub {
owner = "isc-projects";
repo = "ethq";
tag = "v${builtins.replaceStrings [ "." ] [ "_" ] version}";
hash = "sha256-ye5ep9EM9Sq/NqNZHENPmFZefVBx1BGrPm3YEG1NcSc=";
};
buildInputs = [ ncurses ];
installPhase = ''
runHook preInstall
mkdir -p $out/bin
install -m0755 ethq $out/bin/ethq
runHook postInstall
'';
meta = with lib; {
description = "Ethernet NIC Queue stats viewer";
mainProgram = "ethq";
homepage = "https://github.com/isc-projects/ethq";
license = licenses.mpl20;
platforms = platforms.linux;
maintainers = [ ];
};
}

View File

@@ -0,0 +1,53 @@
{
lib,
stdenv,
fetchurl,
libmnl,
pkg-config,
writeScript,
}:
stdenv.mkDerivation rec {
pname = "ethtool";
version = "6.15";
src = fetchurl {
url = "mirror://kernel/software/network/ethtool/ethtool-${version}.tar.xz";
hash = "sha256-lHfDZRFNkQEgquxTNqHRYZbIM9hIb3xtpnvt71eICt4=";
};
nativeBuildInputs = [
pkg-config
];
buildInputs = [
libmnl
];
enableParallelBuilding = true;
passthru = {
updateScript = writeScript "update-ethtool" ''
#!/usr/bin/env nix-shell
#!nix-shell -i bash -p curl pcre common-updater-scripts
set -eu -o pipefail
# Expect the text in format of '<a href="ethtool-VER.tar.xz">...</a>'
# The page always lists versions newest to oldest. Pick the first one.
new_version="$(curl -s https://mirrors.edge.kernel.org/pub/software/network/ethtool/ |
pcregrep -o1 '<a href="ethtool-([0-9.]+)[.]tar[.]xz">' |
head -n1)"
update-source-version ethtool "$new_version"
'';
};
meta = with lib; {
description = "Utility for controlling network drivers and hardware";
homepage = "https://www.kernel.org/pub/software/network/ethtool/";
license = licenses.gpl2Plus;
platforms = platforms.linux;
maintainers = with maintainers; [ bjornfor ];
mainProgram = "ethtool";
};
}

View File

@@ -0,0 +1,57 @@
{
lib,
stdenv,
fetchurl,
}:
stdenv.mkDerivation {
pname = "etlegacy-assets";
version = "2.83.2";
srcs =
let
fetchAsset =
{ asset, hash }:
fetchurl {
url = "https://mirror.etlegacy.com/etmain/${asset}";
inherit hash;
};
in
[
(fetchAsset {
asset = "pak0.pk3";
hash = "sha256-cSlmsg4GUj/oFBlRZQDkmchrK0/sgjhW3b0zP8s9JuU=";
})
(fetchAsset {
asset = "pak1.pk3";
hash = "sha256-VhD9dJAkQFtEJafOY5flgYe5QdIgku8R1IRLQn31Pl0=";
})
(fetchAsset {
asset = "pak2.pk3";
hash = "sha256-pIq3SaGhKrTZE3KGsfI9ZCwp2lmEWyuvyPZOBSzwbz4=";
})
];
sourceRoot = ".";
unpackCmd = "cp -r $curSrc \${curSrc##*-}";
installPhase = ''
runHook preInstall
mkdir -p $out/lib/etlegacy/etmain
cp -r . $out/lib/etlegacy/etmain/
runHook postInstall
'';
meta = {
description = "ET: Legacy assets only";
homepage = "https://etlegacy.com";
license = with lib.licenses; [ cc-by-nc-sa-30 ];
longDescription = ''
ET: Legacy, an open source project fully compatible client and server
for the popular online FPS game Wolfenstein: Enemy Territory - whose
gameplay is still considered unmatched by many, despite its great age.
'';
maintainers = [ ];
platforms = lib.platforms.linux;
};
}

View File

@@ -0,0 +1,108 @@
{
lib,
stdenv,
writeScriptBin,
fetchFromGitHub,
cjson,
cmake,
curl,
freetype,
glew,
libjpeg,
libogg,
libpng,
libtheora,
libX11,
lua5_4,
minizip,
openal,
SDL2,
sqlite,
zlib,
}:
let
version = "2.83.2";
fakeGit = writeScriptBin "git" ''
if [ "$1" = "describe" ]; then
echo "${version}"
fi
'';
in
stdenv.mkDerivation {
pname = "etlegacy-unwrapped";
inherit version;
src = fetchFromGitHub {
owner = "etlegacy";
repo = "etlegacy";
tag = "v${version}";
hash = "sha256-hZwLYaYV0j3YwFi8KRr4DZV73L2yIwFJ3XqCyq6L7hE=";
};
strictDeps = true;
nativeBuildInputs = [
cmake
fakeGit
];
buildInputs = [
cjson
curl
freetype
glew
libjpeg
libogg
libpng
libtheora
libX11
lua5_4
minizip
openal
SDL2
sqlite
zlib
];
cmakeFlags = [
(lib.cmakeBool "CROSS_COMPILE32" false)
(lib.cmakeFeature "CMAKE_BUILD_TYPE" "Release")
(lib.cmakeBool "BUILD_SERVER" true)
(lib.cmakeBool "BUILD_CLIENT" true)
(lib.cmakeBool "BUNDLED_ZLIB" false)
(lib.cmakeBool "BUNDLED_CJSON" false)
(lib.cmakeBool "BUNDLED_JPEG" false)
(lib.cmakeBool "BUNDLED_LIBS" false)
(lib.cmakeBool "BUNDLED_LIBS_DEFAULT" false)
(lib.cmakeBool "BUNDLED_FREETYPE" false)
(lib.cmakeBool "BUNDLED_OGG_VORBIS" false)
(lib.cmakeBool "BUNDLED_OPENAL" false)
(lib.cmakeBool "BUNDLED_PNG" false)
(lib.cmakeBool "BUNDLED_THEORA" false)
(lib.cmakeBool "BUNDLED_MINIZIP" false)
(lib.cmakeBool "CLIENT_GLVND" true)
(lib.cmakeBool "ENABLE_SSE" true)
(lib.cmakeBool "INSTALL_EXTRA" false)
(lib.cmakeBool "INSTALL_OMNIBOT" false)
(lib.cmakeBool "INSTALL_GEOIP" false)
(lib.cmakeBool "INSTALL_WOLFADMIN" false)
(lib.cmakeBool "FEATURE_AUTOUPDATE" false)
(lib.cmakeBool "FEATURE_RENDERER2" false)
(lib.cmakeFeature "INSTALL_DEFAULT_BASEDIR" "${placeholder "out"}/lib/etlegacy")
(lib.cmakeFeature "INSTALL_DEFAULT_BINDIR" "${placeholder "out"}/bin")
];
meta = {
description = "ET: Legacy is an open source project based on the code of Wolfenstein: Enemy Territory which was released in 2010 under the terms of the GPLv3 license";
homepage = "https://etlegacy.com";
license = with lib.licenses; [ gpl3Plus ];
longDescription = ''
ET: Legacy, an open source project fully compatible client and server
for the popular online FPS game Wolfenstein: Enemy Territory - whose
gameplay is still considered unmatched by many, despite its great age.
'';
maintainers = with lib.maintainers; [
ashleyghooper
];
};
}

View File

@@ -0,0 +1,48 @@
{
lib,
stdenv,
symlinkJoin,
etlegacy-assets,
etlegacy-unwrapped,
makeBinaryWrapper,
}:
symlinkJoin {
name = "etlegacy";
version = "2.83.2";
paths = [
etlegacy-assets
etlegacy-unwrapped
];
nativeBuildInputs = [
makeBinaryWrapper
];
postBuild = ''
wrapProgram $out/bin/etl.* \
--add-flags "+set fs_basepath ${placeholder "out"}/lib/etlegacy"
wrapProgram $out/bin/etlded.* \
--add-flags "+set fs_basepath ${placeholder "out"}/lib/etlegacy"
'';
meta = {
description = "ET: Legacy is an open source project based on the code of Wolfenstein: Enemy Territory which was released in 2010 under the terms of the GPLv3 license";
homepage = "https://etlegacy.com";
license = with lib.licenses; [
gpl3Plus
cc-by-nc-sa-30
];
longDescription = ''
ET: Legacy, an open source project fully compatible client and server
for the popular online FPS game Wolfenstein: Enemy Territory - whose
gameplay is still considered unmatched by many, despite its great age.
'';
mainProgram = "etl." + (if stdenv.hostPlatform.isi686 then "i386" else "x86_64");
maintainers = with lib.maintainers; [
ashleyghooper
];
platforms = lib.platforms.linux;
};
}

View File

@@ -0,0 +1,46 @@
{
lib,
buildGoModule,
fetchFromGitHub,
installShellFiles,
}:
buildGoModule rec {
pname = "ets";
version = "0.3.1";
src = fetchFromGitHub {
owner = "gdubicki";
repo = "ets";
rev = "v${version}";
hash = "sha256-LnNd4rAMJliWKbL4uVl11BAa9FPUcLwVSWnFe1vEk7g=";
};
vendorHash = "sha256-lzukgI/7gxlWHY81MkK1CzpUUaZ4B+4xZ0RSZUpL62c=";
ldflags = [
"-s"
"-w"
"-X main.version=v${version}-nixpkgs"
];
nativeBuildInputs = [ installShellFiles ];
preBuild = ''
rm -rf fixtures
'';
postInstall = ''
installManPage ets.1
'';
doCheck = false;
meta = with lib; {
description = "Command output timestamper";
homepage = "https://github.com/gdubicki/ets/";
license = licenses.mit;
maintainers = with maintainers; [ cameronfyfe ];
mainProgram = "ets";
};
}

View File

@@ -0,0 +1,94 @@
{
lib,
stdenv,
fetchFromGitHub,
fetchpatch2,
cmake,
libpcap,
libnet,
zlib,
curl,
pcre2,
openssl,
ncurses,
glib,
gtk3,
atk,
pango,
flex,
bison,
geoip,
harfbuzz,
pkg-config,
}:
stdenv.mkDerivation rec {
pname = "ettercap";
version = "0.8.3.1";
src = fetchFromGitHub {
owner = "Ettercap";
repo = "ettercap";
rev = "v${version}";
sha256 = "1sdf1ssa81ib6k0mc5m2jzbjl4jd1yv6ahv5dwx2x9w4b2pyqg1c";
};
patches = [
(fetchpatch2 {
name = "curl-8.patch";
url = "https://github.com/Ettercap/ettercap/commit/9ec4066addc49483e40055e0738c2e0ef144702f.diff";
sha256 = "6D8lIxub0OS52BFr42yWRyqS2Q5CrpTLTt6rcItXFMM=";
})
];
strictDeps = true;
nativeBuildInputs = [
cmake
flex
bison
pkg-config
];
buildInputs = [
libpcap
libnet
zlib
curl
pcre2
openssl
ncurses
glib
gtk3
atk
pango
geoip
harfbuzz
];
preConfigure = ''
substituteInPlace CMakeLists.txt --replace /etc \$\{INSTALL_PREFIX\}/etc \
--replace /usr \$\{INSTALL_PREFIX\}
'';
cmakeFlags = [
"-DBUNDLED_LIBS=Off"
"-DGTK3_GLIBCONFIG_INCLUDE_DIR=${glib.out}/lib/glib-2.0/include"
];
# TODO: Remove after the next release (0.8.4 should work without this):
env.NIX_CFLAGS_COMPILE = toString [ "-I${harfbuzz.dev}/include/harfbuzz" ];
meta = with lib; {
description = "Comprehensive suite for man in the middle attacks";
longDescription = ''
Ettercap is a comprehensive suite for man in the middle attacks. It
features sniffing of live connections, content filtering on the fly and
many other interesting tricks. It supports active and passive dissection
of many protocols and includes many features for network and host
analysis.
'';
homepage = "https://www.ettercap-project.org/";
license = licenses.gpl2;
platforms = platforms.unix;
maintainers = with maintainers; [ pSub ];
};
}

View File

@@ -0,0 +1,16 @@
diff --git a/src/Etterna/Singletons/DownloadManager.cpp b/src/Etterna/Singletons/DownloadManager.cpp
index b42ccd30..3606107d 100644
--- a/src/Etterna/Singletons/DownloadManager.cpp
+++ b/src/Etterna/Singletons/DownloadManager.cpp
@@ -6265,7 +6265,10 @@ Download::Install()
{
Core::Platform::requestUserAttention();
Message* msg;
- if (!SongManager::InstallSmzip(m_TempFileName))
+
+ auto path = FILEMAN->ResolvePath(m_TempFileName);
+
+ if (!SongManager::InstallSmzip(path))
msg = new Message("DownloadFailed");
else
msg = new Message("PackDownloaded");

View File

@@ -0,0 +1,109 @@
{
lib,
stdenv,
fetchFromGitHub,
makeDesktopItem,
copyDesktopItems,
# deps
cmake,
pkg-config,
openssl,
libGLU,
xorg,
alsa-lib,
libjack2,
libpulseaudio,
libogg,
sse2neon,
}:
stdenv.mkDerivation (finalAttrs: {
pname = "etterna";
version = "0.74.4";
src = fetchFromGitHub {
owner = "etternagame";
repo = "etterna";
tag = "v${finalAttrs.version}";
hash = "sha256-ZCQt99Qcov/7jGfrSmX9WftaP2U2B1d1APK1mxrUDBs=";
};
patches = [ ./fix-download-manager.patch ];
nativeBuildInputs = [
cmake
pkg-config
copyDesktopItems
];
buildInputs = [
openssl
alsa-lib
libjack2
libpulseaudio
libGLU
libogg
sse2neon
xorg.libXinerama
xorg.libXrandr
xorg.libX11
xorg.libXext # Needed for DPMS
xorg.libXvMC
];
desktopItems = [
(makeDesktopItem {
name = "etterna";
desktopName = "Etterna";
genericName = "Rhythm and dance game";
icon = "etterna";
tryExec = "etterna";
exec = "etterna";
categories = [
"Application"
"Game"
"ArcadeGame"
];
comment = "A cross-platform rhythm video game.";
terminal = false;
})
];
installPhase = ''
runHook preInstall
mkdir -p $out/{bin,share/etterna}
mkdir -p $out/share/applications
# copy select necessary game files into virtual fs
cp -r /build/source/{Announcers,Assets,BGAnimations,BackgroundEffects,BackgroundTransitions,Data,GameTools,NoteSkins,Scripts,Themes} "$out/share/etterna"
# copy binary
cp /build/source/Etterna $out/bin/.etterna-unwrapped
# Install the Icon
install -Dm644 /build/source/Docs/images/etterna-logo-light.svg "$out/share/icons/hicolor/scalable/apps/etterna.svg"
# wacky insertion of wrapper directly into phase, so that $out is set
cat > $out/bin/etterna << EOF
#!${stdenv.shell}
export ETTERNA_ROOT_DIR="\$HOME/.local/share/etterna"
export ETTERNA_ADDITIONAL_ROOT_DIRS="$out/share/etterna"
echo "HOME: \$HOME"
echo "PWD: \$(pwd)"
echo "ETTERNA_ADDITIONAL_ROOT_DIRS: \$ETTERNA_ADDITIONAL_ROOT_DIRS"
exec $out/bin/.etterna-unwrapped "\$@"
EOF
chmod +x $out/bin/etterna
runHook postInstall
'';
cmakeFlags = [ "-D WITH_CRASHPAD=OFF" ];
meta = {
description = "Advanced cross-platform rhythm game focused on keyboard play";
homepage = "https://etternaonline.com";
changelog = "https://github.com/etternagame/etterna/release/tag/v${finalAttrs.version}";
license = lib.licenses.mit;
maintainers = with lib.maintainers; [ alikindsys ];
mainProgram = "etterna";
};
})