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,12 @@
diff --git a/Cargo.toml b/Cargo.toml
index d614a94..674f2d6 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -7,7 +7,6 @@ rust-version = "1.82"
publish = false
[profile.release]
-debug = true
lto = "thin"
codegen-units = 1

View File

@@ -0,0 +1,128 @@
{
stdenv,
lib,
fetchFromGitLab,
nix-update-script,
cargo,
meson,
ninja,
rustPlatform,
rustc,
pkg-config,
glib,
grass-sass,
gtk4,
gtksourceview5,
lcms2,
libadwaita,
gst_all_1,
desktop-file-utils,
appstream-glib,
openssl,
pipewire,
libshumate,
wrapGAppsHook4,
sqlite,
xdg-desktop-portal,
libseccomp,
glycin-loaders,
libwebp,
}:
stdenv.mkDerivation (finalAttrs: {
pname = "fractal";
version = "12.1";
src = fetchFromGitLab {
domain = "gitlab.gnome.org";
owner = "World";
repo = "fractal";
tag = finalAttrs.version;
hash = "sha256-xeB6N4ljXGzysy5RnDRK1wPiIRUSDcl+5BIdp6NO5ZA=";
};
cargoDeps = rustPlatform.fetchCargoVendor {
inherit (finalAttrs) src;
hash = "sha256-CHduzW++BYzasFv/x0Q1T7EaTlo1EqYY2gxQJv+ek0A=";
};
patches = [
# Disable debug symbols in release builds
# The debug symbols are stripped afterwards anyways, and building with them requires extra memory
./disable-debug.patch
];
postPatch = ''
substituteInPlace src/meson.build --replace-fail \
"'src' / rust_target / meson.project_name()" \
"'src' / '${stdenv.hostPlatform.rust.cargoShortTarget}' / rust_target / meson.project_name()"
'';
# Dirty approach to add patches after cargoSetupPostUnpackHook
# We should eventually use a cargo vendor patch hook instead
preConfigure = ''
pushd ../$(stripHash $cargoDeps)/glycin-2.*
patch -p3 < ${glycin-loaders.passthru.glycinPathsPatch}
popd
'';
nativeBuildInputs = [
glib
grass-sass
gtk4
meson
ninja
pkg-config
rustPlatform.bindgenHook
rustPlatform.cargoSetupHook
cargo
rustc
desktop-file-utils
appstream-glib
wrapGAppsHook4
];
buildInputs = [
glib
gtk4
gtksourceview5
lcms2
libadwaita
openssl
pipewire
libshumate
sqlite
xdg-desktop-portal
libseccomp
libwebp
]
++ (with gst_all_1; [
gstreamer
gst-plugins-base
gst-plugins-bad
gst-plugins-good
gst-plugins-rs
]);
preFixup = ''
gappsWrapperArgs+=(
--prefix XDG_DATA_DIRS : "${glycin-loaders}/share"
)
'';
env.CARGO_BUILD_TARGET = stdenv.hostPlatform.rust.rustcTargetSpec;
passthru = {
updateScript = nix-update-script { };
};
meta = {
description = "Matrix group messaging app";
homepage = "https://gitlab.gnome.org/World/fractal";
changelog = "https://gitlab.gnome.org/World/fractal/-/releases/${finalAttrs.version}";
license = lib.licenses.gpl3Plus;
teams = [ lib.teams.gnome ];
platforms = lib.platforms.linux;
mainProgram = "fractal";
};
})

View File

@@ -0,0 +1,36 @@
{
lib,
stdenvNoCC,
fetchzip,
}:
stdenvNoCC.mkDerivation (finalAttrs: {
pname = "fragment-mono";
version = "1.21";
src = fetchzip {
url = "https://github.com/weiweihuanghuang/fragment-mono/releases/download/${finalAttrs.version}/fragment-mono-${finalAttrs.version}.zip";
hash = "sha256-H5s4rYDN2d0J+zVRgBzg8vfZXCA/jjHrGBV8o8Dxutc=";
};
installPhase = ''
runHook preInstall
install -Dm644 fonts/ttf/*.ttf -t $out/share/fonts/truetype
runHook postInstall
'';
meta = {
homepage = "https://github.com/weiweihuanghuang/fragment-mono";
description = "Helvetica Monospace Coding Font";
changelog = "https://github.com/weiweihuanghuang/fragment-mono/releases/tag/${finalAttrs.version}";
longDescription = ''
Fragment Mono is a monospaced coding version of Helvetica created
by modifying and extending Nimbus Sans by URW Design Studio.
'';
license = lib.licenses.ofl;
platforms = lib.platforms.all;
maintainers = [ lib.maintainers.noahgitsham ];
};
})

View File

@@ -0,0 +1,85 @@
{
lib,
stdenv,
fetchFromGitLab,
appstream-glib,
cargo,
dbus,
desktop-file-utils,
git,
glib,
gtk4,
libadwaita,
meson,
ninja,
nix-update-script,
openssl,
pkg-config,
rustPlatform,
rustc,
sqlite,
transmission_4,
wrapGAppsHook4,
}:
stdenv.mkDerivation rec {
pname = "fragments";
version = "3.0.1";
src = fetchFromGitLab {
domain = "gitlab.gnome.org";
owner = "World";
repo = "Fragments";
rev = version;
hash = "sha256-lTOO6ZQWImaFqYZ3qerYYHWj/eOLYU/2k2Wh/ju9Njw=";
};
cargoDeps = rustPlatform.fetchCargoVendor {
inherit pname version src;
hash = "sha256-i77LHbaAURxWrEpuR40jRkUGPk8wZR+q3DB+rzH3sEc=";
};
nativeBuildInputs = [
appstream-glib
desktop-file-utils
git
meson
ninja
pkg-config
wrapGAppsHook4
rustPlatform.cargoSetupHook
cargo
rustc
];
buildInputs = [
dbus
glib
gtk4
libadwaita
openssl
sqlite
];
preFixup = ''
gappsWrapperArgs+=(
--prefix PATH : "${lib.makeBinPath [ transmission_4 ]}"
)
'';
passthru = {
updateScript = nix-update-script { };
};
meta = with lib; {
homepage = "https://gitlab.gnome.org/World/Fragments";
description = "Easy to use BitTorrent client for the GNOME desktop environment";
maintainers = with maintainers; [
emilytrau
];
teams = [ lib.teams.gnome-circle ];
license = licenses.gpl3Plus;
platforms = platforms.linux;
mainProgram = "fragments";
};
}

View File

@@ -0,0 +1,140 @@
{
lib,
stdenv,
fetchurl,
writeText,
graphviz,
doxygen,
ocamlPackages,
ltl2ba,
coq,
why3,
gdk-pixbuf,
wrapGAppsHook3,
}:
let
mkocamlpath = p: "${p}/lib/ocaml/${ocamlPackages.ocaml.version}/site-lib";
runtimeDeps = with ocamlPackages; [
apron.dev
bigarray-compat
biniou
camlzip
easy-format
menhirLib
mlgmpidl
num
ocamlgraph
ppx_deriving
ppx_deriving_yojson
ppx_import
stdlib-shims
why3.dev
re
result
seq
sexplib
sexplib0
parsexp
base
unionFind
yojson
zarith
];
ocamlpath = lib.concatMapStringsSep ":" mkocamlpath runtimeDeps;
in
stdenv.mkDerivation rec {
pname = "frama-c";
version = "31.0";
slang = "Gallium";
src = fetchurl {
url = "https://frama-c.com/download/frama-c-${version}-${slang}.tar.gz";
hash = "sha256-qUOE8A1TeRy7S02Dq0Fge8cZYtQkYfAtcRFsT/bcpWc=";
};
preConfigure = ''
substituteInPlace src/dune --replace-warn " bytes " " "
'';
postConfigure = "patchShebangs ivette/api.sh";
strictDeps = true;
nativeBuildInputs = [
wrapGAppsHook3
]
++ (with ocamlPackages; [
ocaml
findlib
dune_3
menhir
]);
buildInputs = with ocamlPackages; [
dune-site
dune-configurator
ocamlgraph
yojson
menhirLib
lablgtk3
lablgtk3-sourceview3
coq
graphviz
zarith
apron
why3
mlgmpidl
doxygen
ppx_deriving
ppx_deriving_yaml
ppx_deriving_yojson
gdk-pixbuf
unionFind
];
buildPhase = ''
runHook preBuild
dune build -j$NIX_BUILD_CORES --release @install
runHook postBuild
'';
installFlags = [ "PREFIX=$(out)" ];
preFixup = ''
gappsWrapperArgs+=(--prefix OCAMLPATH ':' ${ocamlpath}:$out/lib/)
'';
# Allow loading of external Frama-C plugins
setupHook = writeText "setupHook.sh" ''
addFramaCPath () {
if test -d "''$1/lib/frama-c/plugins"; then
export FRAMAC_PLUGIN="''${FRAMAC_PLUGIN-}''${FRAMAC_PLUGIN:+:}''$1/lib/frama-c/plugins"
export OCAMLPATH="''${OCAMLPATH-}''${OCAMLPATH:+:}''$1/lib/frama-c/plugins"
fi
if test -d "''$1/lib/frama-c"; then
export OCAMLPATH="''${OCAMLPATH-}''${OCAMLPATH:+:}''$1/lib/frama-c"
fi
if test -d "''$1/share/frama-c/"; then
export FRAMAC_EXTRA_SHARE="''${FRAMAC_EXTRA_SHARE-}''${FRAMAC_EXTRA_SHARE:+:}''$1/share/frama-c"
fi
}
addEnvHooks "$targetOffset" addFramaCPath
'';
meta = {
description = "Extensible and collaborative platform dedicated to source-code analysis of C software";
homepage = "http://frama-c.com/";
license = lib.licenses.lgpl21;
maintainers = with lib.maintainers; [
thoughtpolice
amiddelk
];
platforms = lib.platforms.unix;
};
}

View File

@@ -0,0 +1,38 @@
{
enableX11 ? true,
lib,
stdenv,
fetchurl,
pkg-config,
xorg,
}:
stdenv.mkDerivation rec {
pname = "frame";
version = "2.5.0";
src = fetchurl {
url = "https://launchpad.net/frame/trunk/v${version}/+download/${pname}-${version}.tar.xz";
sha256 = "bc2a20cd3ac1e61fe0461bd3ee8cb250dbcc1fa511fad0686d267744e9c78f3a";
};
nativeBuildInputs = [ pkg-config ];
buildInputs = [
stdenv
]
++ lib.optionals enableX11 [
xorg.xorgserver
xorg.libX11
xorg.libXext
xorg.libXi
];
configureFlags = lib.optional enableX11 "--with-x11";
meta = {
homepage = "https://launchpad.net/frame";
description = "Handles the buildup and synchronization of a set of simultaneous touches";
mainProgram = "frame-test-x11";
license = lib.licenses.gpl3;
platforms = lib.platforms.linux;
};
}

View File

@@ -0,0 +1,43 @@
{
lib,
fetchurl,
appimageTools,
makeWrapper,
}:
let
pname = "framesh";
version = "0.6.11";
src = fetchurl {
url = "https://github.com/floating/frame/releases/download/v${version}/Frame-${version}.AppImage";
hash = "sha256-t60jsA4ojXF805OUrqIOdk8eP9PlwA/g0XxEBCahmb4=";
};
appimageContents = appimageTools.extractType2 {
inherit pname version src;
};
in
appimageTools.wrapType2 {
inherit pname version src;
nativeBuildInputs = [ makeWrapper ];
extraInstallCommands = ''
install -m 444 -D ${appimageContents}/frame.desktop $out/share/applications/frame.desktop
install -m 444 -D ${appimageContents}/frame.png \
$out/share/icons/hicolor/512x512/apps/frame.png
wrapProgram "$out/bin/${pname}" \
--add-flags "\''${NIXOS_OZONE_WL:+\''${WAYLAND_DISPLAY:+--ozone-platform=wayland --enable-features=WaylandWindowDecorations --enable-wayland-ime=true}}"
substituteInPlace $out/share/applications/frame.desktop \
--replace 'Exec=AppRun' 'Exec=${pname}'
'';
meta = {
description = "Native web3 interface that lets you sign data, securely manage accounts and transparently interact with dapps via web3 protocols like Ethereum and IPFS";
homepage = "https://frame.sh/";
downloadPage = "https://github.com/floating/frame/releases";
license = lib.licenses.gpl3Only;
platforms = [ "x86_64-linux" ];
maintainers = with lib.maintainers; [ nook ];
};
}

View File

@@ -0,0 +1,38 @@
{
lib,
rustPlatform,
fetchFromGitHub,
pkg-config,
udev,
}:
rustPlatform.buildRustPackage rec {
pname = "framework-tool";
version = "0.4.5";
src = fetchFromGitHub {
owner = "FrameworkComputer";
repo = "framework-system";
tag = "v${version}";
hash = "sha256-WhdKU6vyOm5R9RInw9Fj8gELztLn4m5rFGgHbnItguU=";
};
cargoHash = "sha256-A7/Q4p26W0AzqlLguL2OJtmm7dAsBU/Yb636ScYXrPs=";
nativeBuildInputs = [ pkg-config ];
buildInputs = [ udev ];
meta = {
description = "Swiss army knife for Framework laptops";
homepage = "https://github.com/FrameworkComputer/framework-system";
license = lib.licenses.bsd3;
platforms = [ "x86_64-linux" ];
maintainers = with lib.maintainers; [
nickcao
leona
kloenk
johnazoidberg
];
mainProgram = "framework_tool";
};
}

View File

@@ -0,0 +1,27 @@
{
lib,
buildGoModule,
fetchFromGitHub,
}:
buildGoModule rec {
pname = "frangipanni";
version = "0.5.0";
src = fetchFromGitHub {
owner = "birchb1024";
repo = "frangipanni";
rev = "v${version}";
sha256 = "sha256-jIXyqwZWfCBSDTTodHTct4V5rjYv7h4Vcw7cXOFk17w=";
};
vendorHash = "sha256-TSN5M/UCTtfoTf1hDCfrJMCFdSwL/NVXssgt4aefom8=";
meta = with lib; {
description = "Convert lines of text into a tree structure";
mainProgram = "frangipanni";
homepage = "https://github.com/birchb1024/frangipanni";
license = licenses.mit;
maintainers = with maintainers; [ siraben ];
};
}

View File

@@ -0,0 +1,139 @@
{
lib,
stdenv,
buildGoModule,
fetchFromGitHub,
php,
brotli,
watcher,
testers,
frankenphp,
cctools,
darwin,
libiconv,
pkg-config,
makeBinaryWrapper,
runCommand,
writeText,
}:
let
phpEmbedWithZts = php.override {
embedSupport = true;
ztsSupport = true;
staticSupport = stdenv.hostPlatform.isDarwin;
zendSignalsSupport = false;
zendMaxExecutionTimersSupport = stdenv.hostPlatform.isLinux;
};
phpUnwrapped = phpEmbedWithZts.unwrapped;
phpConfig = "${phpUnwrapped.dev}/bin/php-config";
pieBuild = stdenv.hostPlatform.isMusl;
in
buildGoModule rec {
pname = "frankenphp";
version = "1.9.1";
src = fetchFromGitHub {
owner = "dunglas";
repo = "frankenphp";
tag = "v${version}";
hash = "sha256-zkB/kN6noCkUyUsXAbaWeRq1fpNErTcZPzDRoRp+LtM=";
};
sourceRoot = "${src.name}/caddy";
# frankenphp requires C code that would be removed with `go mod tidy`
# https://github.com/golang/go/issues/26366
proxyVendor = true;
vendorHash = "sha256-scL015vSSfhuK06UZFRxK0Sk9dG6W3AOuFSPTogTCfI=";
buildInputs = [
phpUnwrapped
brotli
watcher
]
++ phpUnwrapped.buildInputs;
nativeBuildInputs = [
makeBinaryWrapper
]
++ lib.optionals stdenv.hostPlatform.isDarwin [
pkg-config
cctools
darwin.autoSignDarwinBinariesHook
];
subPackages = [ "frankenphp" ];
tags = [
"cgo"
"netgo"
"ousergo"
"static_build"
"nobadger"
"nomysql"
"nopgx"
];
ldflags = [
"-s"
"-w"
"-X 'github.com/caddyserver/caddy/v2.CustomVersion=FrankenPHP ${version} PHP ${phpUnwrapped.version} Caddy'"
# pie mode is only available with pkgsMusl, it also automatically add -buildmode=pie to $GOFLAGS
]
++ (lib.optional pieBuild [ "-static-pie" ]);
preBuild = ''
export CGO_CFLAGS="$(${phpConfig} --includes)"
export CGO_LDFLAGS="-DFRANKENPHP_VERSION=${version} \
$(${phpConfig} --ldflags) \
$(${phpConfig} --libs)"
''
+ lib.optionalString stdenv.hostPlatform.isDarwin ''
# replace hard-code homebrew path
substituteInPlace ../frankenphp.go \
--replace "-L/opt/homebrew/opt/libiconv/lib" "-L${libiconv}/lib"
'';
preFixup = ''
mkdir -p $out/lib
ln -s "${phpEmbedWithZts}/lib/php.ini" "$out/lib/frankenphp.ini"
wrapProgram $out/bin/frankenphp --set-default PHP_INI_SCAN_DIR $out/lib
'';
doCheck = false;
passthru = {
php = phpEmbedWithZts;
tests = {
# TODO: real NixOS test with Symfony application
version = testers.testVersion {
inherit version;
package = frankenphp;
command = "frankenphp version";
};
phpinfo =
runCommand "php-cli-phpinfo"
{
phpScript = writeText "phpinfo.php" ''
<?php phpinfo();
'';
}
''
${lib.getExe frankenphp} php-cli $phpScript > $out
'';
};
};
meta = {
changelog = "https://github.com/dunglas/frankenphp/releases/tag/v${version}";
description = "Modern PHP app server";
homepage = "https://github.com/dunglas/frankenphp";
license = lib.licenses.mit;
mainProgram = "frankenphp";
maintainers = with lib.maintainers; [
gaelreyrol
];
platforms = lib.platforms.linux ++ lib.platforms.darwin;
};
}

View File

@@ -0,0 +1,32 @@
{
lib,
stdenvNoCC,
fetchzip,
}:
stdenvNoCC.mkDerivation rec {
pname = "fraunces";
version = "1.000";
src = fetchzip {
url = "https://github.com/undercasetype/Fraunces/releases/download/${version}/UnderCaseType_Fraunces_${version}.zip";
hash = "sha256-hu2G4Fs2I3TMEy/EBFnc88Pv3c8Mpc5rm3OwVvol7gQ=";
};
installPhase = ''
runHook preInstall
install -Dm644 */static/otf/*.otf -t $out/share/fonts/opentype
install -Dm644 */static/ttf/*.ttf */*.ttf -t $out/share/fonts/truetype
runHook postInstall
'';
meta = with lib; {
description = "Display, Old Style soft-serif typeface inspired by early 20th century typefaces";
homepage = "https://github.com/undercasetype/Fraunces";
license = licenses.ofl;
maintainers = [ ];
platforms = platforms.all;
};
}

View File

@@ -0,0 +1,56 @@
{
lib,
rustPlatform,
fetchCrate,
libxml2,
ncurses,
zlib,
features ? [
"use_jemalloc"
"allow_avx2"
"unstable"
],
}:
# Don't allow LLVM support until https://github.com/ezrosent/frawk/issues/115 is resolved.
assert lib.assertMsg (
!(lib.elem "default" features || lib.elem "llvm_backend" features)
) "LLVM support has been dropped due to LLVM 12 EOL.";
rustPlatform.buildRustPackage rec {
pname = "frawk";
version = "0.4.8";
src = fetchCrate {
inherit pname version;
hash = "sha256-wPnMJDx3aF1Slx5pjLfii366pgNU3FJBdznQLuUboYA=";
};
cargoHash = "sha256-VraFR3Mp4mPh+39hw88R0q1p5iNkcQzvhRVNPwSxzU0=";
buildInputs = [
libxml2
ncurses
zlib
];
buildNoDefaultFeatures = true;
buildFeatures = features;
preBuild = lib.optionalString (lib.elem "default" features || lib.elem "unstable" features) ''
export RUSTC_BOOTSTRAP=1
'';
# depends on cpu instructions that may not be available on builders
doCheck = false;
meta = {
description = "Small programming language for writing short programs processing textual data";
mainProgram = "frawk";
homepage = "https://github.com/ezrosent/frawk";
changelog = "https://github.com/ezrosent/frawk/releases/tag/v${version}";
license = with lib.licenses; [
mit # or
asl20
];
maintainers = with lib.maintainers; [ figsoda ];
};
}

View File

@@ -0,0 +1,28 @@
{
lib,
rustPlatform,
fetchFromGitHub,
}:
rustPlatform.buildRustPackage rec {
pname = "fre";
version = "0.4.1";
src = fetchFromGitHub {
owner = "camdencheek";
repo = "fre";
rev = "v${version}";
hash = "sha256-cYqEPohqUmewvBUoGJQfa4ATxw2uny5+nUKtNzrxK38=";
};
cargoHash = "sha256-07qKG4ju2UOkTcgWAl2U0uqQZyiosK1UH/M2BvwMAaU=";
meta = {
description = "CLI tool for tracking your most-used directories and files";
homepage = "https://github.com/camdencheek/fre";
changelog = "https://github.com/camdencheek/fre/blob/${version}/CHANGELOG.md";
license = with lib.licenses; [ mit ];
maintainers = with lib.maintainers; [ gaykitty ];
mainProgram = "fre";
};
}

View File

@@ -0,0 +1,41 @@
{
lib,
stdenv,
fetchFromGitHub,
boca,
smooth,
systemd,
wrapGAppsHook3,
}:
stdenv.mkDerivation rec {
pname = "freac";
version = "1.1.7";
src = fetchFromGitHub {
owner = "enzo1982";
repo = "freac";
rev = "v${version}";
sha256 = "sha256-bHoRxxhSM7ipRkiBG7hEa1Iw8Z3tOHQ/atngC/3X1a4=";
};
buildInputs = [
boca
smooth
systemd
wrapGAppsHook3
];
makeFlags = [
"prefix=$(out)"
];
meta = with lib; {
description = "Audio converter and CD ripper with support for various popular formats and encoders";
license = licenses.gpl2Plus;
homepage = "https://www.freac.org/";
maintainers = with maintainers; [ shamilton ];
platforms = platforms.linux;
};
}

View File

@@ -0,0 +1,28 @@
{
lib,
fetchFromGitHub,
rustPlatform,
}:
rustPlatform.buildRustPackage rec {
pname = "frece";
version = "1.0.6";
src = fetchFromGitHub {
owner = "YodaEmbedding";
repo = "frece";
rev = "v${version}";
sha256 = "sha256-CAiIqT5KuzrqbV9FVK3nZUe8MDs2KDdsKplJMI7rN9w=";
};
cargoHash = "sha256-4d1bgkwzC0jFD21Yb8mbnLXTqXTRsJPsMPidSRY4GVw=";
meta = with lib; {
description = "Maintain a database sorted by frecency (frequency + recency)";
mainProgram = "frece";
homepage = "https://github.com/YodaEmbedding/frece";
license = licenses.mit;
platforms = platforms.linux;
maintainers = [ ];
};
}

View File

@@ -0,0 +1,106 @@
{
lib,
stdenv,
fetchFromGitea,
alsa-lib,
copyDesktopItems,
wrapGAppsHook3,
makeDesktopItem,
pkg-config,
}:
stdenv.mkDerivation (finalAttrs: {
pname = "free42";
version = "3.3.8";
src = fetchFromGitea {
domain = "codeberg.org";
owner = "thomasokken";
repo = "free42";
tag = "v${finalAttrs.version}";
hash = "sha256-L6WZM5/+ujM6hv85ppt9YiqHLkd0vYFx3nFVcJwzEBM=";
};
nativeBuildInputs = [
copyDesktopItems
pkg-config
wrapGAppsHook3
];
buildInputs = [ alsa-lib ];
postPatch = ''
sed -i -e "s|/bin/ls|ls|" gtk/Makefile
'';
dontConfigure = true;
desktopItems = [
(makeDesktopItem {
name = "com.thomasokken.free42bin";
desktopName = "Free42Bin";
genericName = "Calculator";
exec = "free42bin";
type = "Application";
comment = "A software clone of HP-42S Calculator";
icon = "free42";
categories = [
"Utility"
"Calculator"
];
})
(makeDesktopItem {
name = "com.thomasokken.free42dec";
desktopName = "Free42Dec";
genericName = "Calculator";
exec = "free42dec";
type = "Application";
comment = "A software clone of HP-42S Calculator";
icon = "free42";
categories = [
"Utility"
"Calculator"
];
})
];
buildPhase = ''
runHook preBuild
make -C gtk cleaner
make --jobs=$NIX_BUILD_CORES -C gtk
make -C gtk clean
make --jobs=$NIX_BUILD_CORES -C gtk BCD_MATH=1
runHook postBuild
'';
installPhase = ''
runHook preInstall
install --directory $out/bin \
$out/share/doc/free42 \
$out/share/free42/skins \
$out/share/icons/hicolor/48x48/apps \
$out/share/icons/hicolor/128x128/apps
install -m755 gtk/free42dec gtk/free42bin $out/bin
install -m644 README $out/share/doc/free42/README
install -m644 gtk/icon-48x48.xpm $out/share/icons/hicolor/48x48/apps/free42.xpm
install -m644 gtk/icon-128x128.xpm $out/share/icons/hicolor/128x128/apps/free42.xpm
install -m644 skins/* $out/share/free42/skins
runHook postInstall
'';
meta = {
homepage = "https://thomasokken.com/free42/";
changelog = "https://thomasokken.com/free42/history.html";
description = "Software clone of HP-42S Calculator";
license = with lib.licenses; [ gpl2Only ];
maintainers = [ ];
mainProgram = "free42dec";
platforms = with lib.platforms; unix;
};
})

View File

@@ -0,0 +1,32 @@
{
lib,
stdenv,
fetchurl,
openal,
testers,
}:
stdenv.mkDerivation (finalAttrs: {
pname = "freealut";
version = "1.1.0";
src = fetchurl {
url = "http://www.openal.org/openal_webstf/downloads/freealut-${finalAttrs.version}.tar.gz";
sha256 = "0kzlil6112x2429nw6mycmif8y6bxr2cwjcvp18vh6s7g63ymlb0";
};
buildInputs = [
openal
];
passthru.tests.pkg-config = testers.testMetaPkgConfig finalAttrs.finalPackage;
meta = {
homepage = "https://openal.org/";
description = "Free implementation of OpenAL's ALUT standard";
mainProgram = "freealut-config";
license = lib.licenses.lgpl2;
pkgConfigModules = [ "freealut" ];
platforms = lib.platforms.unix;
};
})

View File

@@ -0,0 +1,46 @@
{
lib,
stdenv,
fetchFromGitHub,
zlib,
bzip2,
xz,
}:
stdenv.mkDerivation rec {
pname = "freebayes";
version = "1.3.1";
src = fetchFromGitHub {
name = "freebayes-${version}-src";
owner = "ekg";
repo = "freebayes";
tag = "v${version}";
sha256 = "035nriknjqq8gvil81vvsmvqwi35v80q8h1cw24vd1gdyn1x7bys";
fetchSubmodules = true;
};
buildInputs = [
zlib
bzip2
xz
];
# Workaround build failure on -fno-common toolchains like upstream
# gcc-10. Otherwise build fails as:
# ld: foomatic_rip-options.o:/build/foomatic-filters-4.0.17/options.c:49: multiple definition of `cupsfilter';
# foomatic_rip-foomaticrip.o:/build/foomatic-filters-4.0.17/foomaticrip.c:158: first defined here
env.NIX_CFLAGS_COMPILE = "-fcommon";
installPhase = ''
install -vD bin/freebayes bin/bamleftalign scripts/* -t $out/bin
'';
meta = with lib; {
description = "Bayesian haplotype-based polymorphism discovery and genotyping";
license = licenses.mit;
homepage = "https://github.com/ekg/freebayes";
maintainers = with maintainers; [ jdagilliland ];
platforms = [ "x86_64-linux" ];
};
}

View File

@@ -0,0 +1,41 @@
{
lib,
stdenv,
fetchFromGitHub,
libnetfilter_queue,
libnfnetlink,
}:
stdenv.mkDerivation {
pname = "freebind";
version = "2017-12-27";
src = fetchFromGitHub {
owner = "blechschmidt";
repo = "freebind";
rev = "9a13d6f9c12aeea4f6d3513ba2461d34f841f278";
sha256 = "1iv2xiz9w8hbz684caw50fn4a9vc8ninfgaqafkh9sa8mzpfzcqr";
};
buildInputs = [
libnetfilter_queue
libnfnetlink
];
postPatch = ''
substituteInPlace preloader.c --replace /usr/local/ $out/
substituteInPlace Makefile --replace /usr/local/ $out/
'';
preInstall = ''
mkdir -p $out/bin $out/lib
'';
meta = with lib; {
description = "IPv4 and IPv6 address rate limiting evasion tool";
homepage = "https://github.com/blechschmidt/freebind";
license = licenses.gpl3;
platforms = platforms.linux;
maintainers = [ ];
};
}

View File

@@ -0,0 +1,58 @@
commit c534a831c2f7186ebabe4e17f1e1df6d11ebff89
Author: Samuel Rounce <me@samuelrounce.co.uk>
Date: Thu Sep 5 22:17:21 2024 +0100
[PATCH] NIXOS: don't ignore PYTHONPATH
On NixOS or rather within nixpkgs we provide the runtime Python
packages via the PYTHONPATH environment variable. FreeCAD tries its
best to ignore Python environment variables that are being inherited
from the environment. For Python versions >=3.11 it also tries to
initialize the interpreter config without any environmental data. We
have to initialize the configuration *with* the information from the
environment for our packaging to work.
Upstream has purposely isolated the environments AFAIK and thus
shouldn't accept this patch (as is). What they might accept (once
support for older Python versions has been dropped) is removing the
PYTHONPATH specific putenv calls.
---
src/Base/Interpreter.cpp | 1 +
src/Main/MainGui.cpp | 3 ---
2 files changed, 1 insertion(+), 3 deletions(-)
diff --git a/src/Base/Interpreter.cpp b/src/Base/Interpreter.cpp
index 2bdc54ccff..ee4f7fc070 100644
--- a/src/Base/Interpreter.cpp
+++ b/src/Base/Interpreter.cpp
@@ -593,6 +593,7 @@ void initInterpreter(int argc, char* argv[])
PyConfig config;
PyConfig_InitIsolatedConfig(&config);
config.isolated = 0;
+ config.use_environment = 1;
config.user_site_directory = 1;
status = PyConfig_SetBytesArgv(&config, argc, argv);
diff --git a/src/Main/MainGui.cpp b/src/Main/MainGui.cpp
index 36087cffd6..89d49d2cc6 100644
--- a/src/Main/MainGui.cpp
+++ b/src/Main/MainGui.cpp
@@ -114,10 +114,8 @@ int main(int argc, char** argv)
// See https://forum.freecad.org/viewtopic.php?f=18&t=20600
// See Gui::Application::runApplication()
putenv("LC_NUMERIC=C");
- putenv("PYTHONPATH=");
#elif defined(FC_OS_MACOSX)
(void)QLocale::system();
- putenv("PYTHONPATH=");
#elif defined(__MINGW32__)
const char* mingw_prefix = getenv("MINGW_PREFIX");
const char* py_home = getenv("PYTHONHOME");
@@ -125,7 +123,6 @@ int main(int argc, char** argv)
_putenv_s("PYTHONHOME", mingw_prefix);
}
#else
- _putenv("PYTHONPATH=");
// https://forum.freecad.org/viewtopic.php?f=4&t=18288
// https://forum.freecad.org/viewtopic.php?f=3&t=20515
const char* fc_py_home = getenv("FC_PYTHONHOME");

View File

@@ -0,0 +1,7 @@
--- a/src/3rdParty/OndselSolver/OndselSolver.pc.in
+++ b/src/3rdParty/OndselSolver/OndselSolver.pc.in
@@ -3,2 +3,2 @@
-libdir=${exec_prefix}/@CMAKE_INSTALL_LIBDIR@
-includedir=${prefix}/@CMAKE_INSTALL_INCLUDEDIR@
+libdir=@CMAKE_INSTALL_LIBDIR@
+includedir=@CMAKE_INSTALL_INCLUDEDIR@

View File

@@ -0,0 +1,26 @@
diff --git a/src/Gui/PreferencePages/DlgSettingsEditor.cpp b/src/Gui/PreferencePages/DlgSettingsEditor.cpp
index 0dda987..01568f1 100755
--- a/src/Gui/PreferencePages/DlgSettingsEditor.cpp
+++ b/src/Gui/PreferencePages/DlgSettingsEditor.cpp
@@ -288,7 +288,9 @@ void DlgSettingsEditor::loadSettings()
QStringList fixedFamilyNames;
for (const auto& name : familyNames) {
if (QFontDatabase().isFixedPitch(name)) {
- if (name.compare(QLatin1String("8514oem"), Qt::CaseInsensitive) != 0) {
+ if (name.compare(QLatin1String("8514oem"), Qt::CaseInsensitive) != 0
+ && name.compare(QLatin1String("cursor.pcf"), Qt::CaseInsensitive) != 0)
+ {
fixedFamilyNames.append(name);
}
}
@@ -298,7 +300,9 @@ void DlgSettingsEditor::loadSettings()
QStringList fixedFamilyNames;
for (const auto& name : familyNames) {
if (QFontDatabase::isFixedPitch(name)) {
- if (name.compare(QLatin1String("8514oem"), Qt::CaseInsensitive) != 0) {
+ if (name.compare(QLatin1String("8514oem"), Qt::CaseInsensitive) != 0
+ && name.compare(QLatin1String("cursor.pcf"), Qt::CaseInsensitive) != 0)
+ {
fixedFamilyNames.append(name);
}
}

View File

@@ -0,0 +1,7 @@
This package supports the following parameters:
- withWayland (default: true): when false, set QT_QPA_PLATFORM to xcb
- spaceNavSupport (enabled by default on Linux): whether to enable
[spacenavd support](https://spacenav.sourceforge.net/)
- ifcSupport (default: false): whether to enable ifc support through
ifcopenshell

View File

@@ -0,0 +1,98 @@
{
runCommand,
buildEnv,
makeWrapper,
lib,
python311,
writeShellScript,
}:
let
wrapPathsStr =
flag: values:
builtins.concatStringsSep " " (
builtins.concatMap (p: [
"--add-flags"
flag
"--add-flags"
p
]) values
);
wrapCfgStr =
typ: val:
let
installer = writeShellScript "insteller-${typ}" ''
dst="$HOME/.config/FreeCAD/${typ}.cfg"
if [ ! -f "$dst" ]; then
mkdir -p "$(dirname "$dst")"
cp --no-preserve=mode,ownership '${val}' "$dst"
fi
'';
in
lib.optionalString (val != null) "--run ${installer}";
pythonsProcessed = map (
pyt:
if builtins.isString pyt then
pyt
else if builtins.isFunction pyt then
"${(python311.withPackages pyt)}/lib/python3.11/site-packages"
else
throw "Expected string or function as python paths for freecad"
);
makeCustomizable =
freecad:
freecad
// {
customize =
{
name ? freecad.name,
modules ? [ ],
pythons ? [ ],
makeWrapperFlags ? [ ],
userCfg ? null,
systemCfg ? null,
}:
let
modulesStr = wrapPathsStr "--module-path" modules;
pythonsStr = wrapPathsStr "--python-path" (pythonsProcessed pythons);
makeWrapperFlagsStr = builtins.concatStringsSep " " (map (f: "'${f}'") makeWrapperFlags);
userCfgStr = wrapCfgStr "user" userCfg;
systemCfgStr = wrapCfgStr "system" systemCfg;
bin = runCommand "${name}-bin" { nativeBuildInputs = [ makeWrapper ]; } ''
mkdir -p "$out/bin"
for exe in FreeCAD{,Cmd}; do
if [[ ! -e ${freecad}/bin/$exe ]]; then
echo "No binary $exe in freecad package"
false
fi
dest="$out/bin/$exe";
makeWrapper "${freecad}/bin/$exe" "$dest" \
--inherit-argv0 \
${modulesStr} \
${pythonsStr} \
${userCfgStr} \
${systemCfgStr} \
${makeWrapperFlagsStr}
done
ln -s FreeCAD $out/bin/freecad
ln -s FreeCADCmd $out/bin/freecadcmd
'';
in
makeCustomizable (buildEnv {
inherit name;
paths = [
(lib.lowPrio freecad)
bin
];
});
override = f: makeCustomizable (freecad.override f);
overrideAttrs = f: makeCustomizable (freecad.overrideAttrs f);
};
in
{
inherit makeCustomizable;
}

View File

@@ -0,0 +1,212 @@
{
lib,
callPackage,
cmake,
coin3d,
doxygen,
eigen,
fetchFromGitHub,
fetchpatch,
fmt,
gfortran,
gts,
hdf5,
libGLU,
libredwg,
libspnav,
libXmu,
medfile,
ninja,
ode,
opencascade-occt,
pkg-config,
python3Packages,
spaceNavSupport ? stdenv.hostPlatform.isLinux,
stdenv,
swig,
vtk,
wrapGAppsHook3,
xercesc,
yaml-cpp,
zlib,
qt6,
nix-update-script,
gmsh,
which,
}:
let
pythonDeps = with python3Packages; [
boost
gitpython # for addon manager
ifcopenshell
matplotlib
opencamlib
pivy
ply # for openSCAD file support
pybind11
pycollada
pyside6
python
pyyaml # (at least for) PyrateWorkbench
scipy
shiboken6
];
freecad-utils = callPackage ./freecad-utils.nix { };
in
freecad-utils.makeCustomizable (
stdenv.mkDerivation (finalAttrs: {
pname = "freecad";
version = "1.0.2";
src = fetchFromGitHub {
owner = "FreeCAD";
repo = "FreeCAD";
tag = finalAttrs.version;
hash = "sha256-J//O/ABMFa3TFYwR0wc8d1UTA5iSFnEP2thOjuCN+uE=";
fetchSubmodules = true;
};
nativeBuildInputs = [
cmake
ninja
pkg-config
gfortran
swig
doxygen
wrapGAppsHook3
qt6.wrapQtAppsHook
];
buildInputs = [
coin3d
eigen
fmt
gts
hdf5
libGLU
libXmu
medfile
ode
vtk
xercesc
yaml-cpp
zlib
opencascade-occt
qt6.qtbase
qt6.qtsvg
qt6.qttools
qt6.qtwayland
qt6.qtwebengine
]
++ pythonDeps
++ lib.optionals spaceNavSupport [ libspnav ];
patches = [
./0001-NIXOS-don-t-ignore-PYTHONPATH.patch
./0002-FreeCad-OndselSolver-pkgconfig.patch
# https://github.com/FreeCAD/FreeCAD/pull/21710
./0003-FreeCad-fix-font-load-crash.patch
(fetchpatch {
url = "https://github.com/FreeCAD/FreeCAD/commit/8e04c0a3dd9435df0c2dec813b17d02f7b723b19.patch?full_index=1";
hash = "sha256-H6WbJFTY5/IqEdoi5N+7D4A6pVAmZR4D+SqDglwS18c=";
})
# Inform Coin to use EGL when on Wayland
# https://github.com/FreeCAD/FreeCAD/pull/21917
(fetchpatch {
url = "https://github.com/FreeCAD/FreeCAD/commit/60aa5ff3730d77037ffad0c77ba96b99ef0c7df3.patch?full_index=1";
hash = "sha256-K6PWQ1U+/fsjDuir7MiAKq71CAIHar3nKkO6TKYl32k=";
})
];
postPatch = ''
substituteInPlace src/Mod/Fem/femmesh/gmshtools.py \
--replace-fail 'self.gmsh_bin = "gmsh"' 'self.gmsh_bin = "${lib.getExe gmsh}"'
'';
cmakeFlags = [
"-Wno-dev" # turns off warnings which otherwise makes it hard to see what is going on
"-DBUILD_DRAWING=ON"
"-DBUILD_FLAT_MESH:BOOL=ON"
"-DINSTALL_TO_SITEPACKAGES=OFF"
"-DFREECAD_USE_PYBIND11=ON"
"-DBUILD_QT5=OFF"
"-DBUILD_QT6=ON"
"-DSHIBOKEN_INCLUDE_DIR=${python3Packages.shiboken6}/include"
"-DSHIBOKEN_LIBRARY=Shiboken6::libshiboken"
(
"-DPYSIDE_INCLUDE_DIR=${python3Packages.pyside6}/include"
+ ";${python3Packages.pyside6}/include/PySide6/QtCore"
+ ";${python3Packages.pyside6}/include/PySide6/QtWidgets"
+ ";${python3Packages.pyside6}/include/PySide6/QtGui"
)
"-DPYSIDE_LIBRARY=PySide6::pyside6"
];
# This should work on both x86_64, and i686 linux
preBuild = ''
export NIX_LDFLAGS="-L${gfortran.cc.lib}/lib64 -L${gfortran.cc.lib}/lib $NIX_LDFLAGS";
'';
dontWrapGApps = true;
qtWrapperArgs =
let
binPath = lib.makeBinPath [
libredwg
which # for locating tools
];
in
[
"--set COIN_GL_NO_CURRENT_CONTEXT_CHECK 1"
"--prefix PATH : ${binPath}"
"--prefix PYTHONPATH : ${python3Packages.makePythonPath pythonDeps}"
"\${gappsWrapperArgs[@]}"
];
postFixup = ''
mv $out/share/doc $out
ln -s $out/doc $out/share/doc
ln -s $out/bin/FreeCAD $out/bin/freecad
ln -s $out/bin/FreeCADCmd $out/bin/freecadcmd
'';
passthru = {
tests = callPackage ./tests { };
updateScript = nix-update-script {
extraArgs = [
"--version-regex"
"([0-9.]+)"
];
};
};
meta = {
homepage = "https://www.freecad.org";
description = "General purpose Open Source 3D CAD/MCAD/CAx/CAE/PLM modeler";
longDescription = ''
FreeCAD is an open-source parametric 3D modeler made primarily to design
real-life objects of any size. Parametric modeling allows you to easily
modify your design by going back into your model history and changing its
parameters.
FreeCAD allows you to sketch geometry constrained 2D shapes and use them
as a base to build other objects. It contains many components to adjust
dimensions or extract design details from 3D models to create high quality
production ready drawings.
FreeCAD is designed to fit a wide range of uses including product design,
mechanical engineering and architecture. Whether you are a hobbyist, a
programmer, an experienced CAD user, a student or a teacher, you will feel
right at home with FreeCAD.
'';
license = lib.licenses.lgpl2Plus;
maintainers = with lib.maintainers; [
srounce
grimmauld
];
platforms = lib.platforms.linux;
};
})
)

View File

@@ -0,0 +1,7 @@
{
callPackage,
}:
{
python-path = callPackage ./python-path.nix { };
modules = callPackage ./modules.nix { };
}

View File

@@ -0,0 +1,42 @@
{
freecad,
runCommand,
writeTextFile,
}:
let
mkModule =
n:
writeTextFile {
name = "module-${n}";
destination = "/Init.py";
text = ''
import sys
import os
out = os.environ['out']
f = open(out + "/module-${n}.touch", "w")
f.write("module-${n}");
f.close()
'';
};
module-1 = mkModule "1";
module-2 = mkModule "2";
freecad-customized = freecad.customize {
modules = [
module-1
module-2
];
};
in
runCommand "freecad-test-modules"
{
nativeBuildInputs = [ freecad-customized ];
}
''
mkdir $out
HOME="$(mktemp -d)" FreeCADCmd --log-file $out/freecad.log -c "sys.exit(0)" </dev/null
test -f $out/module-1.touch
test -f $out/module-2.touch
grep -q 'Initializing ${module-1}... done' $out/freecad.log
grep -q 'Initializing ${module-2}... done' $out/freecad.log
''

View File

@@ -0,0 +1,18 @@
{
freecad,
runCommand,
}:
# Check that things such as argument parsing still work correctly with
# the above PYTHONPATH patch. Previously the patch used above changed
# the `PyConfig_InitIsolatedConfig` to `PyConfig_InitPythonConfig`,
# which caused the built-in interpreter to attempt (and fail) to doubly
# parse argv. This should catch if that ever regresses and also ensures
# that PYTHONPATH is still respected enough for the FreeCAD console to
# successfully run and check that it was included in `sys.path`.
runCommand "freecad-test-console"
{
nativeBuildInputs = [ freecad ];
}
''
HOME="$(mktemp -d)" PYTHONPATH="$(pwd)/test" FreeCADCmd --log-file $out -c "if not '$(pwd)/test' in sys.path: sys.exit(1)" </dev/null
''

View File

@@ -0,0 +1,94 @@
{
lib,
stdenv,
fetchurl,
cmake,
cmocka,
gmp,
gperf,
ninja,
perl,
pkg-config,
python3,
rinutils,
}:
stdenv.mkDerivation (finalAttrs: {
pname = "freecell-solver";
version = "6.14.0";
src = fetchurl {
url = "https://fc-solve.shlomifish.org/downloads/fc-solve/freecell-solver-${finalAttrs.version}.tar.xz";
hash = "sha256-HREl2FQivNUhEC18sefIS3aGP+RF3SGHn5d53Gss59w=";
};
outputs = [
"out"
"dev"
"doc"
"man"
];
pythonPath = with python3.pkgs; [
cffi
pysol-cards
random2
six
];
nativeBuildInputs = [
cmake
cmocka
gperf
ninja
perl
pkg-config
python3
]
++ (
with perl.pkgs;
TaskFreecellSolverTesting.buildInputs
++ [
GamesSolitaireVerify
HTMLTemplate
Moo
PathTiny
StringShellQuote
TaskFreecellSolverTesting
TemplateToolkit
TextTemplate
]
)
++ [ python3.pkgs.wrapPython ]
++ finalAttrs.pythonPath;
buildInputs = [
gmp
rinutils
];
strictDeps = true;
cmakeFlags = [
(lib.cmakeBool "FCS_WITH_TEST_SUITE" false) # needs freecell-solver
(lib.cmakeBool "BUILD_STATIC_LIBRARY" false)
];
postFixup = ''
wrapPythonProgramsIn "$out/bin" "$out $pythonPath"
'';
meta = {
homepage = "https://fc-solve.shlomifish.org/";
description = "FreeCell automatic solver";
longDescription = ''
FreeCell Solver is a program that automatically solves layouts of Freecell
and similar variants of Card Solitaire such as Eight Off, Forecell, and
Seahaven Towers, as well as Simple Simon boards.
'';
license = lib.licenses.mit;
mainProgram = "fc-solve";
maintainers = [ ];
platforms = lib.platforms.unix;
};
})

View File

@@ -0,0 +1,52 @@
{
lib,
stdenv,
fetchFromGitHub,
bison,
cmake,
flex,
pkg-config,
gnutls,
libgcrypt,
libidn2,
lksctp-tools,
unstableGitUpdater,
}:
stdenv.mkDerivation (finalAttrs: {
pname = "freediameter";
version = "1.5.0-unstable-2025-03-16";
src = fetchFromGitHub {
owner = "freeDiameter";
repo = "freeDiameter";
rev = "8e525acdfd439995f3e8e26d5a802fc4ad95d24c";
hash = "sha256-ai2R8scP++tdPh303RAl0qdIpehzFoyykAuAyl2w3MA=";
};
strictDeps = true;
nativeBuildInputs = [
bison
cmake
flex
pkg-config
];
buildInputs = [
gnutls
libgcrypt
libidn2
lksctp-tools
];
passthru.updateScript = unstableGitUpdater { };
meta = {
description = "Implementation of the Diameter Protocol";
homepage = "https://github.com/freeDiameter/freeDiameter";
license = lib.licenses.bsd3;
platforms = lib.platforms.unix;
teams = with lib.teams; [ ngi ];
maintainers = [ ];
};
})

View File

@@ -0,0 +1,88 @@
{
lib,
stdenv,
fetchurl,
SDL,
SDL_mixer,
SDL_image,
SDL_ttf,
SDL_gfx,
pkg-config,
intltool,
fontconfig,
libzip,
zip,
zlib,
}:
let
version = "1.08.20121209";
freedink_data = stdenv.mkDerivation rec {
pname = "freedink-data";
inherit version;
src = fetchurl {
url = "mirror://gnu/freedink/${pname}-${version}.tar.gz";
sha256 = "1mhns09l1s898x18ahbcy9gabrmgsr8dv7pm0a2ivid8mhxahn1j";
};
prePatch = "substituteInPlace Makefile --replace /usr/local $out";
};
in
stdenv.mkDerivation rec {
pname = "freedink";
inherit version;
src = fetchurl {
url = "mirror://gnu/freedink/${pname}-${version}.tar.gz";
sha256 = "19xximbcm6506kvpf3s0q96697kmzca3yrjdr6dgphklp33zqsqr";
};
nativeBuildInputs = [
pkg-config
intltool
];
buildInputs = [
SDL
SDL_mixer
SDL_image
SDL_ttf
SDL_gfx
fontconfig
libzip
zip
zlib
];
preConfigure = ''
# Build fails on Linux with windres.
export ac_cv_prog_ac_ct_WINDRES=
'';
postInstall = ''
mkdir -p "$out/share/"
ln -s ${freedink_data}/share/dink "$out/share/"
'';
enableParallelBuilding = true;
meta = {
description = "Free, portable and enhanced version of the Dink Smallwood game engine";
longDescription = ''
GNU FreeDink is a new and portable version of the Dink Smallwood
game engine, which runs the original game as well as its D-Mods,
with close compatibility, under multiple platforms.
'';
homepage = "https://www.gnu.org/software/freedink/"; # Formerly http://www.freedink.org
license = lib.licenses.gpl3Plus;
maintainers = [ ];
platforms = lib.platforms.all;
hydraPlatforms = lib.platforms.linux; # sdl-config times out on darwin
};
}

View File

@@ -0,0 +1,79 @@
{
lib,
stdenv,
fetchFromGitHub,
makeDesktopItem,
copyDesktopItems,
imagemagick,
autoreconfHook,
SDL,
SDL_mixer,
SDL_image,
SDL_gfx,
libvorbis,
libjpeg,
libpng,
zlib,
}:
stdenv.mkDerivation rec {
pname = "freedroid";
version = "1.2.1";
src = fetchFromGitHub {
owner = "ReinhardPrix";
repo = "FreedroidClassic";
rev = "release-${version}";
sha256 = "027wns25nyyc8afyhyp5a8wn13x9nlzmnqzqyyma1055xjy5imis";
};
nativeBuildInputs = [
copyDesktopItems
imagemagick
autoreconfHook
];
buildInputs = [
SDL
SDL_image
SDL_gfx
SDL_mixer
libjpeg
libpng
libvorbis
zlib
];
postPatch = ''
touch NEWS
'';
postInstall = ''
mkdir -p $out/share/icons/hicolor/32x32/apps
convert graphics/paraicon.bmp $out/share/icons/hicolor/32x32/apps/freedroid.png
'';
desktopItems = [
(makeDesktopItem {
name = pname;
exec = pname;
icon = pname;
desktopName = "Freedroid Classic";
comment = "A clone of the classic game 'Paradroid' on Commodore 64";
categories = [
"Game"
"ArcadeGame"
];
})
];
meta = with lib; {
description = "Clone of the classic game 'Paradroid' on Commodore 64";
mainProgram = "freedroid";
homepage = "https://github.com/ReinhardPrix/FreedroidClassic";
license = licenses.gpl2Only;
maintainers = with maintainers; [ iblech ];
platforms = platforms.unix;
# Builds but fails to render to the screen at runtime.
broken = stdenv.hostPlatform.isDarwin;
};
}

View File

@@ -0,0 +1,15 @@
Do not embed paths to build-only depends (-I...SDL2-dev and friends)
into savefile lua comments.
--- a/src/savestruct_internal.c
+++ b/src/savestruct_internal.c
@@ -571,8 +571,8 @@ void save_game_data(struct auto_string *strout)
autostr_append(strout,
"SAVEGAME: %s %s %s;sizeof(tux_t)=%d;sizeof(enemy)=%d;sizeof(bullet)=%d\n",
SAVEGAME_VERSION, SAVEGAME_REVISION, VERSION, (int)sizeof(tux_t), (int)sizeof(enemy), (int)sizeof(bullet));
- autostr_append(strout, "BUILD_CFLAGS: %s\n", BUILD_CFLAGS);
- autostr_append(strout, "BUILD_LDFLAGS: %s\n", BUILD_LDFLAGS);
+ autostr_append(strout, "BUILD_CFLAGS: %s\n", "<hidden>");
+ autostr_append(strout, "BUILD_LDFLAGS: %s\n", "<hidden>");
autostr_append(strout, "VERSION: %s\n", freedroid_version);
autostr_append(strout, "--]]\n");

View File

@@ -0,0 +1,109 @@
{
fetchurl,
lib,
stdenv,
pkg-config,
gettext,
glew,
python3,
SDL,
SDL_image,
SDL_gfx,
SDL_mixer,
libogg,
libvorbis,
lua5_3,
libjpeg,
libpng,
zlib,
libiconv,
}:
let
version = "1.0";
in
stdenv.mkDerivation {
pname = "freedroidrpg";
inherit version;
src = fetchurl {
url = "ftp://ftp.osuosl.org/pub/freedroid/freedroidRPG-${lib.versions.majorMinor version}/freedroidRPG-${version}.tar.gz";
hash = "sha256-eZW3C1lCSOoU0bTvWVOXpgGDAxyZFjsBwainDM7zu88=";
};
patches = [
# Do not embed build flags in the binary to reduce closure size.
./drop-build-deps.patch
];
nativeBuildInputs = [
pkg-config
gettext
python3
];
buildInputs = [
glew
SDL
SDL_image
SDL_gfx
SDL_mixer
libogg
libvorbis
lua5_3
libjpeg
libpng
zlib
]
++ lib.optional stdenv.hostPlatform.isDarwin libiconv;
env.SDL_CONFIG = lib.getExe' (lib.getDev SDL) "sdl-config";
enableParallelBuilding = true;
meta = with lib; {
description = "Isometric 3D RPG similar to game Diablo";
mainProgram = "freedroidRPG";
longDescription = ''
<para>
FreedroidRPG is an original isometric 3D role playing game
taking place in the future, on Earth. It features action and
dialogs.
</para>
<para>
The game tells the story of a world destroyed by a conflict between
robots and their human masters. Play as Tux in a quest to save the
world from the murderous rebel bots who know no mercy. You get to
choose which path you wish to follow, and freedom of choice is
everywhere in the game.
</para>
<para>
FreedroidRPG features a real time combat system with melee and
ranged weapons, fairly similar to the proprietary game Diablo.
There is an innovative system of programs that can be run in order
to take control of enemy robots, alter their behavior, or improve one's
characteristics. You can use over 50 different kinds of items and
fight countless enemies on your way to your destiny. An advanced
dialog system provides story background and immersive role
playing situations.
</para>
<para>
The game is complete, fully playable, and can provide about
12 hours of fun. It is still being actively developed, and
help is welcome in many areas. People having - or trying to acquire -
programming, map editing, or writing skills will find FreedroidRPG
to be an exciting, fast-moving project in which they can fully
express their creativity.
</para>
'';
homepage = "https://www.freedroid.org/";
license = licenses.gpl2Plus;
maintainers = [ ];
platforms = platforms.unix;
hydraPlatforms = platforms.linux; # sdl-config times out on darwin
};
}

View File

@@ -0,0 +1,28 @@
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index 38b3b262..3be9bfee 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -146,21 +146,16 @@ if(APPLE)
TARGET FreeDV
POST_BUILD
COMMAND rm -rf dist_tmp FreeDV.dmg || true
- COMMAND DYLD_LIBRARY_PATH=${CODEC2_BUILD_DIR}/src:${portaudio_BINARY_DIR}:${samplerate_BINARY_DIR}/src:${Python3_ROOT_DIR}:${DYLD_LIBRARY_PATH} ${CMAKE_SOURCE_DIR}/macdylibbundler/dylibbundler ARGS -od -b -x FreeDV.app/Contents/MacOS/FreeDV -d FreeDV.app/Contents/libs -p @loader_path/../libs/ -i /usr/lib -s ${CODEC2_BUILD_DIR}/src -s ${CMAKE_BINARY_DIR}/codec2_build/src ${PORTAUDIO_BUNDLE_ARG} -s ${samplerate_BINARY_DIR}/src -s ${rade_BINARY_DIR}/src -s ${Python3_ROOT_DIR}
+ COMMAND DYLD_LIBRARY_PATH=${CODEC2_BUILD_DIR}/src:${portaudio_BINARY_DIR}:${samplerate_BINARY_DIR}/src:${DYLD_LIBRARY_PATH} ${CMAKE_SOURCE_DIR}/macdylibbundler/dylibbundler ARGS -od -b -x FreeDV.app/Contents/MacOS/FreeDV -d FreeDV.app/Contents/libs -p @loader_path/../libs/ -i /usr/lib -s ${CODEC2_BUILD_DIR}/src -s ${CMAKE_BINARY_DIR}/codec2_build/src ${PORTAUDIO_BUNDLE_ARG} -s ${samplerate_BINARY_DIR}/src -s ${rade_BINARY_DIR}/src
COMMAND cp ARGS ${CMAKE_CURRENT_SOURCE_DIR}/freedv.icns FreeDV.app/Contents/Resources
COMMAND rm ARGS -rf FreeDV.app/Contents/Frameworks
COMMAND mkdir ARGS FreeDV.app/Contents/Frameworks
- COMMAND cp ARGS -a ${Python3_ROOT_DIR}/../../../Python.framework FreeDV.app/Contents/Frameworks
- COMMAND install_name_tool ARGS -add_rpath @loader_path/../Frameworks/Python.framework FreeDV.app/Contents/libs/librade*.dylib
COMMAND cp ARGS ../rade_src/radae_*e.py FreeDV.app/Contents/Resources
COMMAND cp ARGS -a ../rade_src/radae FreeDV.app/Contents/Resources
COMMAND cp ARGS -a ../rade_src/model19_check3 FreeDV.app/Contents/Resources
- # Precompile Python code to improve startup time
- COMMAND cd FreeDV.app/Contents/Resources && ../Frameworks/Python.framework/Versions/Current/bin/python3 -c "import radae_txe\; import radae_rxe\;" && cd ../../..
-
# Codesign binary so that it can execute
- COMMAND codesign --force --options runtime --timestamp --entitlements ${CMAKE_CURRENT_SOURCE_DIR}/entitlements.plist --sign ${MACOS_CODESIGN_IDENTITY} ${CMAKE_CURRENT_BINARY_DIR}/FreeDV.app `find ${CMAKE_CURRENT_BINARY_DIR}/FreeDV.app -name '*.so' -o -name '*.dylib'` `find ${CMAKE_CURRENT_BINARY_DIR}/FreeDV.app/Contents/Frameworks/Python.framework/Versions/3.12/bin -name 'Python' -o -name 'python3.12*'` `find ${CMAKE_CURRENT_BINARY_DIR}/FreeDV.app/Contents/Frameworks/Python.framework/ -name 'Python'` ${CMAKE_CURRENT_BINARY_DIR}/FreeDV.app/Contents/MacOS/FreeDV ${CMAKE_CURRENT_BINARY_DIR}/FreeDV.app/Contents/Frameworks/Python.framework/Versions/3.12/lib/python3.12/site-packages/torch/bin/* ${CMAKE_CURRENT_BINARY_DIR}/FreeDV.app/Contents/Frameworks/Python.framework/Versions/3.12/Python
+ COMMAND codesign --force --options runtime --timestamp --entitlements ${CMAKE_CURRENT_SOURCE_DIR}/entitlements.plist --sign ${MACOS_CODESIGN_IDENTITY} ${CMAKE_CURRENT_BINARY_DIR}/FreeDV.app `find ${CMAKE_CURRENT_BINARY_DIR}/FreeDV.app -name '*.so' -o -name '*.dylib'`
)
if (MACOS_CODESIGN_KEYCHAIN_PROFILE)

View File

@@ -0,0 +1,155 @@
{
lib,
stdenv,
fetchFromGitHub,
cmake,
pkg-config,
python3,
libopus,
macdylibbundler,
makeWrapper,
darwin,
codec2,
libpulseaudio,
libsamplerate,
libsndfile,
lpcnet,
portaudio,
speexdsp,
hamlib_4,
wxGTK32,
sioclient,
dbus,
apple-sdk_15,
nix-update-script,
}:
let
radaeSrc = fetchFromGitHub {
owner = "drowe67";
repo = "radae";
rev = "2354cd2a4b3af60c7feb1c0d6b3d6dd7417c2ac9";
hash = "sha256-yEr/OCXV83qXi89QHXMrUtQ2UwNOsijQMN35Or2JP+Y=";
};
in
stdenv.mkDerivation (finalAttrs: {
pname = "freedv";
version = "2.0.1";
src = fetchFromGitHub {
owner = "drowe67";
repo = "freedv-gui";
tag = "v${finalAttrs.version}";
hash = "sha256-+hVh5GgSz8MWib10dVV6gx9EvocvLAJm2Eid/4y//2E=";
};
patches = [
./no-framework.patch
];
postPatch = ''
cp -R ${radaeSrc} radae
chmod -R u+w radae
substituteInPlace radae/cmake/BuildOpus.cmake \
--replace-fail "https://gitlab.xiph.org/xiph/opus/-/archive/main/opus-main.tar.gz" "${libopus.src}" \
--replace-fail "./autogen.sh && " ""
substituteInPlace cmake/BuildRADE.cmake \
--replace-fail "GIT_REPOSITORY https://github.com/drowe67/radae.git" "URL $(realpath radae)" \
--replace-fail "GIT_TAG main" ""
patchShebangs test/test_*.sh
substituteInPlace cmake/CheckGit.cmake \
--replace-fail "git describe --abbrev=4 --always HEAD" "echo v${finalAttrs.version}"
''
+ lib.optionalString stdenv.hostPlatform.isDarwin ''
substituteInPlace CMakeLists.txt \
--replace-fail "-Wl,-ld_classic" ""
substituteInPlace src/CMakeLists.txt \
--replace-fail "\''${CMAKE_SOURCE_DIR}/macdylibbundler/dylibbundler" "dylibbundler"
sed -i "/codesign/d;/hdiutil/d" src/CMakeLists.txt
'';
nativeBuildInputs = [
cmake
pkg-config
python3
]
++ lib.optionals stdenv.hostPlatform.isDarwin [
(macdylibbundler.overrideAttrs {
# incompatible with darwin.sigtool in Nixpkgs
postPatch = ''
substituteInPlace src/Utils.cpp \
--replace-fail "--deep --preserve-metadata=entitlements,requirements,flags,runtime" ""
'';
})
makeWrapper
darwin.autoSignDarwinBinariesHook
darwin.sigtool
];
buildInputs = [
codec2
libsamplerate
libsndfile
lpcnet
speexdsp
hamlib_4
wxGTK32
sioclient
python3.pkgs.numpy
]
++ (
if stdenv.hostPlatform.isLinux then
[
libpulseaudio
dbus
]
else if stdenv.hostPlatform.isDarwin then
[
apple-sdk_15
]
else
[
portaudio
]
);
cmakeFlags = [
(lib.cmakeBool "USE_INTERNAL_CODEC2" false)
(lib.cmakeBool "USE_STATIC_DEPS" false)
(lib.cmakeBool "UNITTEST" true)
(lib.cmakeBool "USE_NATIVE_AUDIO" (with stdenv.hostPlatform; isLinux || isDarwin))
];
env.NIX_CFLAGS_COMPILE = "-I${codec2.src}/src";
doCheck = false;
postInstall = ''
install -Dm755 rade_build/src/librade.* -t $out/lib
''
+ lib.optionalString stdenv.hostPlatform.isDarwin ''
mkdir -p $out/Applications
mv $out/bin/FreeDV.app $out/Applications
makeWrapper $out/Applications/FreeDV.app/Contents/MacOS/FreeDV $out/bin/freedv
'';
passthru.updateScript = nix-update-script {
extraArgs = [
# avoid prereleases
"--version-regex"
''^v(\d\.\d\.\d(\.\d)?)$''
];
};
meta = {
homepage = "https://freedv.org/";
description = "Digital voice for HF radio";
license = lib.licenses.lgpl21Only;
maintainers = with lib.maintainers; [
mvs
wegank
];
platforms = lib.platforms.unix;
mainProgram = "freedv";
};
})

View File

@@ -0,0 +1,48 @@
diff --git a/FreeFileSync/Source/Makefile b/FreeFileSync/Source/Makefile
index 9d81055..aed0f30 100644
--- a/FreeFileSync/Source/Makefile
+++ b/FreeFileSync/Source/Makefile
@@ -1,5 +1,5 @@
CXX ?= g++
-exeName = FreeFileSync_$(shell arch)
+exeName = FreeFileSync
CXXFLAGS += -std=c++23 -pipe -DWXINTL_NO_GETTEXT_MACRO -I../.. -I../../zenXml -include "zen/i18n.h" -include "zen/warn_static.h" \
-Wall -Wfatal-errors -Wmissing-include-dirs -Wswitch-enum -Wcast-align -Wnon-virtual-dtor -Wno-unused-function -Wshadow -Wno-maybe-uninitialized \
@@ -17,9 +17,10 @@ LDFLAGS += `pkg-config --libs libcurl` -lidn2
CXXFLAGS += `pkg-config --cflags libssh2`
LDFLAGS += `pkg-config --libs libssh2`
-CXXFLAGS += `pkg-config --cflags gtk+-2.0`
+CXXFLAGS += `pkg-config --cflags gtk+-3.0`
+LDFLAGS += `pkg-config --libs gtk+-3.0`
#treat as system headers so that warnings are hidden:
-CXXFLAGS += -isystem/usr/include/gtk-2.0
+CXXFLAGS += -isystem@gtk3-dev@/include/gtk-3.0
#support for SELinux (optional)
SELINUX_EXISTING=$(shell pkg-config --exists libselinux && echo YES)
diff --git a/FreeFileSync/Source/RealTimeSync/Makefile b/FreeFileSync/Source/RealTimeSync/Makefile
index 0be46c9..f510284 100644
--- a/FreeFileSync/Source/RealTimeSync/Makefile
+++ b/FreeFileSync/Source/RealTimeSync/Makefile
@@ -1,5 +1,5 @@
CXX ?= g++
-exeName = RealTimeSync_$(shell arch)
+exeName = RealTimeSync
CXXFLAGS += -std=c++23 -pipe -DWXINTL_NO_GETTEXT_MACRO -I../../.. -I../../../zenXml -include "zen/i18n.h" -include "zen/warn_static.h" \
-Wall -Wfatal-errors -Wmissing-include-dirs -Wswitch-enum -Wcast-align -Wnon-virtual-dtor -Wno-unused-function -Wshadow -Wno-maybe-uninitialized \
@@ -8,9 +8,10 @@ CXXFLAGS += -std=c++23 -pipe -DWXINTL_NO_GETTEXT_MACRO -I../../.. -I../../../zen
LDFLAGS += -s `wx-config --libs std, aui, richtext --debug=no` -pthread
-CXXFLAGS += `pkg-config --cflags gtk+-2.0`
+CXXFLAGS += `pkg-config --cflags gtk+-3.0`
+LDFLAGS += `pkg-config --libs gtk+-3.0`
#treat as system headers so that warnings are hidden:
-CXXFLAGS += -isystem/usr/include/gtk-2.0
+CXXFLAGS += -isystem@gtk3-dev@/include/gtk-3.0
cppFiles=
cppFiles+=application.cpp

View File

@@ -0,0 +1,152 @@
{
lib,
stdenv,
fetchurl,
replaceVars,
fetchDebianPatch,
copyDesktopItems,
pkg-config,
wrapGAppsHook3,
unzip,
curl,
glib,
gtk3,
libidn2,
libssh2,
openssl,
wxwidgets_3_3,
makeDesktopItem,
}:
let
wxwidgets_3_3' = wxwidgets_3_3.overrideAttrs (
finalAttrs: previousAttrs: {
patches = [
./wxcolorhook.patch
];
}
);
in
stdenv.mkDerivation (finalAttrs: {
pname = "freefilesync";
version = "14.5";
src = fetchurl {
url = "https://freefilesync.org/download/FreeFileSync_${finalAttrs.version}_Source.zip";
# The URL only redirects to the file on the second attempt
postFetch = ''
rm -f "$out"
tryDownload "$url" "$out"
'';
hash = "sha256-+qfj1zf3V5xxtvXgCa0QDDRhEPQ3Qzii5eKiMySuUUY=";
};
sourceRoot = ".";
patches = [
# Disable loading of the missing Animal.dat
./skip-missing-Animal.dat.patch
# Fix build with GTK 3
(replaceVars ./Makefile.patch {
gtk3-dev = lib.getDev gtk3;
})
# Fix build with vanilla wxWidgets
(fetchDebianPatch {
pname = "freefilesync";
version = "13.7";
debianRevision = "1";
patch = "Disable_wxWidgets_uncaught_exception_handling.patch";
hash = "sha256-Fem7eDDKSqPFU/t12Jco8OmYC8FM9JgB4/QVy/ouvbI=";
})
];
nativeBuildInputs = [
copyDesktopItems
pkg-config
wrapGAppsHook3
unzip
];
buildInputs = [
curl
glib
gtk3
libidn2
libssh2
openssl
wxwidgets_3_3'
];
env.NIX_CFLAGS_COMPILE = toString [
# Undef g_object_ref on GLib 2.56+
"-DGLIB_VERSION_MIN_REQUIRED=GLIB_VERSION_2_54"
"-DGLIB_VERSION_MAX_ALLOWED=GLIB_VERSION_2_54"
# Define libssh2 constants
"-DMAX_SFTP_READ_SIZE=30000"
"-DMAX_SFTP_OUTGOING_SIZE=30000"
];
buildPhase = ''
runHook preBuild
chmod +w FreeFileSync/Build
cd FreeFileSync/Source
make -j$NIX_BUILD_CORES
cd RealTimeSync
make -j$NIX_BUILD_CORES
cd ../../..
runHook postBuild
'';
installPhase = ''
runHook preInstall
mkdir -p $out
cp -R FreeFileSync/Build/* $out
mv $out/{Bin,bin}
mkdir -p $out/share/pixmaps
unzip -j $out/Resources/Icons.zip '*Sync.png' -d $out/share/pixmaps
runHook postInstall
'';
desktopItems = [
(makeDesktopItem rec {
name = "FreeFileSync";
desktopName = name;
genericName = "Folder Comparison and Synchronization";
icon = name;
exec = name;
categories = [
"Utility"
"FileTools"
];
})
(makeDesktopItem rec {
name = "RealTimeSync";
desktopName = name;
genericName = "Automated Synchronization";
icon = name;
exec = name;
categories = [
"Utility"
"FileTools"
];
})
];
meta = with lib; {
description = "Open Source File Synchronization & Backup Software";
homepage = "https://freefilesync.org";
license = [
licenses.gpl3Only
licenses.openssl
licenses.curl
licenses.bsd3
];
maintainers = with maintainers; [ wegank ];
platforms = platforms.linux;
};
})

View File

@@ -0,0 +1,57 @@
diff --git a/FreeFileSync/Source/ui/gui_generated.cpp b/FreeFileSync/Source/ui/gui_generated.cpp
index a40eea3..23ec896 100644
--- a/FreeFileSync/Source/ui/gui_generated.cpp
+++ b/FreeFileSync/Source/ui/gui_generated.cpp
@@ -5573,8 +5573,6 @@ AboutDlgGenerated::AboutDlgGenerated( wxWindow* parent, wxWindowID id, const wxS
wxBoxSizer* bSizer183;
bSizer183 = new wxBoxSizer( wxHORIZONTAL );
- m_bitmapAnimalSmall = new wxStaticBitmap( m_panelDonate, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxDefaultSize, 0 );
- bSizer183->Add( m_bitmapAnimalSmall, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5 );
wxPanel* m_panel39;
m_panel39 = new wxPanel( m_panelDonate, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL );
@@ -5587,13 +5585,11 @@ AboutDlgGenerated::AboutDlgGenerated( wxWindow* parent, wxWindowID id, const wxS
m_staticTextDonate->Wrap( -1 );
m_staticTextDonate->SetForegroundColour( wxColour( 0, 0, 0 ) );
- bSizer184->Add( m_staticTextDonate, 0, wxALIGN_CENTER_HORIZONTAL|wxLEFT|wxALIGN_CENTER_VERTICAL, 10 );
m_panel39->SetSizer( bSizer184 );
m_panel39->Layout();
bSizer184->Fit( m_panel39 );
- bSizer183->Add( m_panel39, 1, wxTOP|wxBOTTOM|wxRIGHT|wxEXPAND, 5 );
m_panelDonate->SetSizer( bSizer183 );
diff --git a/FreeFileSync/Source/ui/small_dlgs.cpp b/FreeFileSync/Source/ui/small_dlgs.cpp
index 933fe81..734201f 100644
--- a/FreeFileSync/Source/ui/small_dlgs.cpp
+++ b/FreeFileSync/Source/ui/small_dlgs.cpp
@@ -137,9 +137,6 @@ AboutDlg::AboutDlg(wxWindow* parent) : AboutDlgGenerated(parent)
wxImage::AddHandler(new wxJPEGHandler /*ownership passed*/); //activate support for .jpg files
- wxImage animalImg(utfTo<wxString>(appendPath(getResourceDirPath(), Zstr("Animal.dat"))), wxBITMAP_TYPE_JPEG);
- convertToVanillaImage(animalImg);
- assert(animalImg.IsOk());
//--------------------------------------------------------------------------
//have animal + text match *final* dialog width
@@ -150,13 +147,11 @@ AboutDlg::AboutDlg(wxWindow* parent) : AboutDlgGenerated(parent)
#endif
{
- const int imageWidth = (m_panelDonate->GetSize().GetWidth() - 5 - 5 - 5 /* grey border*/) / 2;
- const int textWidth = m_panelDonate->GetSize().GetWidth() - 5 - 5 - 5 - imageWidth;
+ const int textWidth = m_panelDonate->GetSize().GetWidth();
- setImage(*m_bitmapAnimalSmall, shrinkImage(animalImg, wxsizeToScreen(imageWidth), -1 /*maxHeight*/));
m_staticTextDonate->Show();
- m_staticTextDonate->Wrap(textWidth - 10 /*left gap*/); //wrap *after* changing font size
+ m_staticTextDonate->Wrap(textWidth - 20); //wrap *after* changing font size
}
//--------------------------------------------------------------------------

View File

@@ -0,0 +1,50 @@
diff --git a/include/wx/settings.h b/include/wx/settings.h
index 3967b98b46..8d7f3d2870 100644
--- a/include/wx/settings.h
+++ b/include/wx/settings.h
@@ -13,6 +13,8 @@
#include "wx/colour.h"
#include "wx/font.h"
+#include <memory>
+
class WXDLLIMPEXP_FWD_CORE wxWindow;
// possible values for wxSystemSettings::GetFont() parameter
@@ -241,9 +243,28 @@ public:
// include the declaration of the real platform-dependent class
// ----------------------------------------------------------------------------
+struct wxColorHook
+{
+ virtual ~wxColorHook() {}
+ virtual wxColor getColor(wxSystemColour index) const = 0;
+};
+WXDLLIMPEXP_CORE inline std::unique_ptr<wxColorHook>& refGlobalColorHook()
+{
+ static std::unique_ptr<wxColorHook> globalColorHook;
+ return globalColorHook;
+}
+
class WXDLLIMPEXP_CORE wxSystemSettings : public wxSystemSettingsNative
{
public:
+ static wxColour GetColour(wxSystemColour index)
+ {
+ if (refGlobalColorHook())
+ return refGlobalColorHook()->getColor(index);
+
+ return wxSystemSettingsNative::GetColour(index);
+ }
+
#ifdef __WXUNIVERSAL__
// in wxUniversal we want to use the theme standard colours instead of the
// system ones, otherwise wxSystemSettings is just the same as
@@ -264,7 +285,6 @@ public:
// Value
static wxSystemScreenType ms_screen;
-
};
#endif

View File

@@ -0,0 +1,37 @@
{
lib,
stdenvNoCC,
fetchzip,
}:
stdenvNoCC.mkDerivation rec {
pname = "freefont-ttf";
version = "20120503";
src = fetchzip {
url = "mirror://gnu/freefont/freefont-ttf-${version}.zip";
hash = "sha256-K3kVHGcDTxQ7N7XqSdwRObriVkBoBYPKHbyYrYvm7VU=";
};
installPhase = ''
runHook preInstall
mkdir -p $out/share/fonts/truetype
mv *.ttf $out/share/fonts/truetype
runHook postInstall
'';
meta = {
description = "GNU Free UCS Outline Fonts";
longDescription = ''
The GNU Freefont project aims to provide a set of free outline
(PostScript Type0, TrueType, OpenType...) fonts covering the ISO
10646/Unicode UCS (Universal Character Set).
'';
homepage = "https://www.gnu.org/software/freefont/";
license = lib.licenses.gpl3Plus;
platforms = lib.platforms.all;
maintainers = [ ];
};
}

View File

@@ -0,0 +1,73 @@
{
lib,
stdenv,
fetchurl,
fetchpatch,
libICE,
libXext,
libXi,
libXrandr,
libXxf86vm,
libGLX,
libGLU,
cmake,
testers,
}:
stdenv.mkDerivation (finalAttrs: {
pname = "freeglut";
version = "3.6.0";
src = fetchurl {
url = "mirror://sourceforge/freeglut/freeglut-${finalAttrs.version}.tar.gz";
sha256 = "sha256-nD1NZRb7+gKA7ck8d2mPtzA+RDwaqvN9Jp4yiKbD6lI=";
};
patches = [
(fetchpatch {
name = "freeglut-fix-cmake-4.patch";
url = "https://github.com/freeglut/freeglut/commit/2294389397912c9a6505a88221abb7dca0a4fb79.patch";
hash = "sha256-buNhlVUbDekklnar6KFWN/GUKE+jMEqTGrY3LY0LwVs=";
})
];
outputs = [
"out"
"dev"
];
nativeBuildInputs = [ cmake ];
buildInputs = [
libICE
libXext
libXi
libXrandr
libXxf86vm
libGLU
];
cmakeFlags = lib.optionals stdenv.hostPlatform.isDarwin [
"-DOPENGL_INCLUDE_DIR=${lib.getInclude libGLX}/include"
"-DOPENGL_gl_LIBRARY:FILEPATH=${lib.getLib libGLX}/lib/libGL.dylib"
"-DFREEGLUT_BUILD_DEMOS:BOOL=OFF"
];
passthru.tests.pkg-config = testers.testMetaPkgConfig finalAttrs.finalPackage;
meta = with lib; {
description = "Create and manage windows containing OpenGL contexts";
longDescription = ''
FreeGLUT is an open source alternative to the OpenGL Utility Toolkit
(GLUT) library. GLUT (and hence FreeGLUT) allows the user to create and
manage windows containing OpenGL contexts on a wide range of platforms
and also read the mouse, keyboard and joystick functions. FreeGLUT is
intended to be a full replacement for GLUT, and has only a few
differences.
'';
homepage = "https://freeglut.sourceforge.net/";
license = licenses.mit;
pkgConfigModules = [ "glut" ];
platforms = platforms.all;
maintainers = [ maintainers.bjornfor ];
};
})

View File

@@ -0,0 +1,13 @@
diff -rupN --no-dereference freeimage-svn-r1909-FreeImage-trunk/Source/FreeImage/PluginICO.cpp freeimage-svn-r1909-FreeImage-trunk-new/Source/FreeImage/PluginICO.cpp
--- freeimage-svn-r1909-FreeImage-trunk/Source/FreeImage/PluginICO.cpp 2023-09-28 19:34:45.524031668 +0200
+++ freeimage-svn-r1909-FreeImage-trunk-new/Source/FreeImage/PluginICO.cpp 2023-09-28 19:34:47.717009813 +0200
@@ -301,6 +301,9 @@ LoadStandardIcon(FreeImageIO *io, fi_han
int width = bmih.biWidth;
int height = bmih.biHeight / 2; // height == xor + and mask
unsigned bit_count = bmih.biBitCount;
+ if (bit_count != 1 && bit_count != 2 && bit_count != 4 && bit_count != 8 && bit_count != 16 && bit_count != 24 && bit_count != 32) {
+ return NULL;
+ }
unsigned line = CalculateLine(width, bit_count);
unsigned pitch = CalculatePitch(line);

View File

@@ -0,0 +1,14 @@
diff -rupN --no-dereference freeimage-svn-r1909-FreeImage-trunk/Source/FreeImage/PSDParser.cpp freeimage-svn-r1909-FreeImage-trunk-new/Source/FreeImage/PSDParser.cpp
--- freeimage-svn-r1909-FreeImage-trunk/Source/FreeImage/PSDParser.cpp 2023-09-28 19:34:47.287014100 +0200
+++ freeimage-svn-r1909-FreeImage-trunk-new/Source/FreeImage/PSDParser.cpp 2023-09-28 19:34:47.832008666 +0200
@@ -780,6 +780,10 @@ int psdThumbnail::Read(FreeImageIO *io,
FreeImage_Unload(_dib);
}
+ if (_WidthBytes != _Width * _BitPerPixel / 8) {
+ throw "Invalid PSD image";
+ }
+
if(_Format == 1) {
// kJpegRGB thumbnail image
_dib = FreeImage_LoadFromHandle(FIF_JPEG, io, handle);

View File

@@ -0,0 +1,21 @@
diff -rupN --no-dereference freeimage-svn-r1909-FreeImage-trunk/Source/FreeImage/PSDParser.cpp freeimage-svn-r1909-FreeImage-trunk-new/Source/FreeImage/PSDParser.cpp
--- freeimage-svn-r1909-FreeImage-trunk/Source/FreeImage/PSDParser.cpp 2023-09-28 19:34:47.936007630 +0200
+++ freeimage-svn-r1909-FreeImage-trunk-new/Source/FreeImage/PSDParser.cpp 2023-09-28 19:34:47.940007590 +0200
@@ -1466,6 +1466,7 @@ FIBITMAP* psdParser::ReadImageData(FreeI
const unsigned dstBpp = (depth == 1) ? 1 : FreeImage_GetBPP(bitmap)/8;
const unsigned dstLineSize = FreeImage_GetPitch(bitmap);
BYTE* const dst_first_line = FreeImage_GetScanLine(bitmap, nHeight - 1);//<*** flipped
+ const unsigned dst_buffer_size = dstLineSize * nHeight;
BYTE* line_start = new BYTE[lineSize]; //< fileline cache
@@ -1481,6 +1482,9 @@ FIBITMAP* psdParser::ReadImageData(FreeI
const unsigned channelOffset = GetChannelOffset(bitmap, c) * bytes;
BYTE* dst_line_start = dst_first_line + channelOffset;
+ if (channelOffset + lineSize > dst_buffer_size) {
+ throw "Invalid PSD image";
+ }
for(unsigned h = 0; h < nHeight; ++h, dst_line_start -= dstLineSize) {//<*** flipped
io->read_proc(line_start, lineSize, 1, handle);
ReadImageLine(dst_line_start, line_start, lineSize, dstBpp, bytes);

View File

@@ -0,0 +1,19 @@
diff -rupN --no-dereference freeimage-svn-r1909-FreeImage-trunk/Source/Metadata/Exif.cpp freeimage-svn-r1909-FreeImage-trunk-new/Source/Metadata/Exif.cpp
--- freeimage-svn-r1909-FreeImage-trunk/Source/Metadata/Exif.cpp 2023-09-28 19:34:45.003036859 +0200
+++ freeimage-svn-r1909-FreeImage-trunk-new/Source/Metadata/Exif.cpp 2023-09-28 19:34:47.505011926 +0200
@@ -770,8 +770,13 @@ jpeg_read_exif_dir(FIBITMAP *dib, const
//
const WORD entriesCount0th = ReadUint16(msb_order, ifd0th);
-
- DWORD next_offset = ReadUint32(msb_order, DIR_ENTRY_ADDR(ifd0th, entriesCount0th));
+
+ const BYTE* de_addr = DIR_ENTRY_ADDR(ifd0th, entriesCount0th);
+ if(de_addr+4 >= (BYTE*)(dwLength + ifd0th - tiffp)) {
+ return TRUE; //< no thumbnail
+ }
+
+ DWORD next_offset = ReadUint32(msb_order, de_addr);
if((next_offset == 0) || (next_offset >= dwLength)) {
return TRUE; //< no thumbnail
}

View File

@@ -0,0 +1,15 @@
diff -rupN --no-dereference freeimage-svn-r1909-FreeImage-trunk/Source/FreeImage/PluginTIFF.cpp freeimage-svn-r1909-FreeImage-trunk-new/Source/FreeImage/PluginTIFF.cpp
--- freeimage-svn-r1909-FreeImage-trunk/Source/FreeImage/PluginTIFF.cpp 2023-09-28 19:34:47.713009853 +0200
+++ freeimage-svn-r1909-FreeImage-trunk-new/Source/FreeImage/PluginTIFF.cpp 2023-09-28 19:34:48.043006563 +0200
@@ -2142,6 +2142,11 @@ Load(FreeImageIO *io, fi_handle handle,
uint32_t tileRowSize = (uint32_t)TIFFTileRowSize(tif);
uint32_t imageRowSize = (uint32_t)TIFFScanlineSize(tif);
+ if (width / tileWidth * tileRowSize * 8 > bitspersample * samplesperpixel * width) {
+ free(tileBuffer);
+ throw "Corrupted tiled TIFF file";
+ }
+
// In the tiff file the lines are saved from up to down
// In a DIB the lines must be saved from down to up

View File

@@ -0,0 +1,14 @@
diff -rupN --no-dereference freeimage-svn-r1909-FreeImage-trunk/Source/FreeImage/PluginTIFF.cpp freeimage-svn-r1909-FreeImage-trunk-new/Source/FreeImage/PluginTIFF.cpp
--- freeimage-svn-r1909-FreeImage-trunk/Source/FreeImage/PluginTIFF.cpp 2023-09-28 19:34:47.501011966 +0200
+++ freeimage-svn-r1909-FreeImage-trunk-new/Source/FreeImage/PluginTIFF.cpp 2023-09-28 19:34:47.610010879 +0200
@@ -372,6 +372,10 @@ static void
ReadPalette(TIFF *tiff, uint16_t photometric, uint16_t bitspersample, FIBITMAP *dib) {
RGBQUAD *pal = FreeImage_GetPalette(dib);
+ if (!pal) {
+ return;
+ }
+
switch(photometric) {
case PHOTOMETRIC_MINISBLACK: // bitmap and greyscale image types
case PHOTOMETRIC_MINISWHITE:

View File

@@ -0,0 +1,14 @@
diff -rupN --no-dereference freeimage-svn-r1909-FreeImage-trunk/Source/FreeImage/PluginJPEG.cpp freeimage-svn-r1909-FreeImage-trunk-new/Source/FreeImage/PluginJPEG.cpp
--- freeimage-svn-r1909-FreeImage-trunk/Source/FreeImage/PluginJPEG.cpp 2024-03-10 14:22:17.818579271 +0100
+++ freeimage-svn-r1909-FreeImage-trunk-new/Source/FreeImage/PluginJPEG.cpp 2024-03-10 14:22:18.776573816 +0100
@@ -1086,6 +1086,10 @@ Load(FreeImageIO *io, fi_handle handle,
jpeg_read_header(&cinfo, TRUE);
+ if (cinfo.image_width > JPEG_MAX_DIMENSION || cinfo.image_height > JPEG_MAX_DIMENSION) {
+ throw FI_MSG_ERROR_DIB_MEMORY;
+ }
+
// step 4: set parameters for decompression
unsigned int scale_denom = 1; // fraction by which to scale image

View File

@@ -0,0 +1,16 @@
diff -rupN --no-dereference freeimage-svn-r1909-FreeImage-trunk/Source/FreeImage/PluginTIFF.cpp freeimage-svn-r1909-FreeImage-trunk-new/Source/FreeImage/PluginTIFF.cpp
--- freeimage-svn-r1909-FreeImage-trunk/Source/FreeImage/PluginTIFF.cpp 2024-03-10 14:22:18.669574426 +0100
+++ freeimage-svn-r1909-FreeImage-trunk-new/Source/FreeImage/PluginTIFF.cpp 2024-03-10 14:22:18.673574403 +0100
@@ -1484,6 +1484,12 @@ Load(FreeImageIO *io, fi_handle handle,
(int)bitspersample, (int)samplesperpixel, (int)photometric);
throw (char*)NULL;
}
+ if (planar_config == PLANARCONFIG_SEPARATE && bitspersample < 8) {
+ FreeImage_OutputMessageProc(s_format_id,
+ "Unable to handle this format: bitspersample = 8, TIFFTAG_PLANARCONFIG = PLANARCONFIG_SEPARATE"
+ );
+ throw (char*)NULL;
+ }
// ---------------------------------------------------------------------------------

View File

@@ -0,0 +1,15 @@
Fix build with libtiff 4.4.0 by not using a private libtiff API.
Patch by Kurt Schwehr: https://sourceforge.net/p/freeimage/discussion/36109/thread/2018fdc6e7/
diff -ru a/Source/Metadata/XTIFF.cpp b/Source/Metadata/XTIFF.cpp
--- a/Source/Metadata/XTIFF.cpp
+++ b/Source/Metadata/XTIFF.cpp
@@ -749,7 +749,7 @@
continue;
}
// type of storage may differ (e.g. rationnal array vs float array type)
- if((unsigned)_TIFFDataSize(tif_tag_type) != FreeImage_TagDataWidth(tag_type)) {
+ if((unsigned)TIFFFieldSetGetSize(fld) != FreeImage_TagDataWidth(tag_type)) {
// skip tag or _TIFFmemcpy will fail
continue;
}

View File

@@ -0,0 +1,170 @@
{
lib,
stdenv,
fetchsvn,
cctools,
libtiff,
libpng,
zlib,
libwebp,
libraw,
openexr,
openjpeg,
libjpeg,
jxrlib,
pkg-config,
fixDarwinDylibNames,
}:
stdenv.mkDerivation (finalAttrs: {
pname = "freeimage";
version = "3.18.0-unstable-2024-04-18";
src = fetchsvn {
url = "svn://svn.code.sf.net/p/freeimage/svn/";
rev = "1911";
hash = "sha256-JznVZUYAbsN4FplnuXxCd/ITBhH7bfGKWXep2A6mius=";
};
sourceRoot = "${finalAttrs.src.name}/FreeImage/trunk";
# Ensure that the bundled libraries are not used at all
prePatch = ''
rm -rf Source/Lib* Source/OpenEXR Source/ZLib
'';
# Tell patch to work with trailing carriage returns
patchFlags = [
"-p1"
"--binary"
];
patches = [
./unbundle.diff
./CVE-2020-24292.patch
./CVE-2020-24293.patch
./CVE-2020-24295.patch
./CVE-2021-33367.patch
./CVE-2021-40263.patch
./CVE-2021-40266.patch
./CVE-2023-47995.patch
./CVE-2023-47997.patch
];
postPatch = ''
# To support cross compilation, use the correct `pkg-config`.
substituteInPlace Makefile.fip \
--replace "pkg-config" "$PKG_CONFIG"
substituteInPlace Makefile.gnu \
--replace "pkg-config" "$PKG_CONFIG"
''
+ lib.optionalString (stdenv.hostPlatform.isDarwin && stdenv.hostPlatform.isAarch64) ''
# Upstream Makefile hardcodes i386 and x86_64 architectures only
substituteInPlace Makefile.osx --replace "x86_64" "arm64"
'';
nativeBuildInputs = [
pkg-config
]
++ lib.optionals stdenv.hostPlatform.isDarwin [
cctools
fixDarwinDylibNames
];
buildInputs = [
libtiff
libtiff.dev_private
libpng
zlib
libwebp
libraw
openexr
openjpeg
libjpeg
libjpeg.dev_private
jxrlib
];
postBuild = lib.optionalString (!stdenv.hostPlatform.isDarwin) ''
make -f Makefile.fip
'';
INCDIR = "${placeholder "out"}/include";
INSTALLDIR = "${placeholder "out"}/lib";
preInstall = ''
mkdir -p $INCDIR $INSTALLDIR
''
# Workaround for Makefiles.osx not using ?=
+ lib.optionalString stdenv.hostPlatform.isDarwin ''
makeFlagsArray+=( "INCDIR=$INCDIR" "INSTALLDIR=$INSTALLDIR" )
'';
postInstall =
lib.optionalString (!stdenv.hostPlatform.isDarwin) ''
make -f Makefile.fip install
''
+ lib.optionalString stdenv.hostPlatform.isDarwin ''
ln -s $out/lib/libfreeimage.3.dylib $out/lib/libfreeimage.dylib
'';
enableParallelBuilding = true;
meta = {
description = "Open Source library for accessing popular graphics image file formats";
homepage = "http://freeimage.sourceforge.net/";
license = with lib.licenses; [
freeimage
gpl2Only
gpl3Only
];
knownVulnerabilities = [
"CVE-2024-31570"
"CVE-2024-28584"
"CVE-2024-28583"
"CVE-2024-28582"
"CVE-2024-28581"
"CVE-2024-28580"
"CVE-2024-28579"
"CVE-2024-28578"
"CVE-2024-28577"
"CVE-2024-28576"
"CVE-2024-28575"
"CVE-2024-28574"
"CVE-2024-28573"
"CVE-2024-28572"
"CVE-2024-28571"
"CVE-2024-28570"
"CVE-2024-28569"
"CVE-2024-28568"
"CVE-2024-28567"
"CVE-2024-28566"
"CVE-2024-28565"
"CVE-2024-28564"
"CVE-2024-28563"
"CVE-2024-28562"
"CVE-2024-9029"
# "CVE-2023-47997"
"CVE-2023-47996"
# "CVE-2023-47995"
"CVE-2023-47994"
"CVE-2023-47993"
"CVE-2023-47992"
# "CVE-2021-40266"
"CVE-2021-40265"
"CVE-2021-40264"
# "CVE-2021-40263"
"CVE-2021-40262"
# "CVE-2021-33367"
# "CVE-2020-24295"
"CVE-2020-24294"
# "CVE-2020-24293"
# "CVE-2020-24292"
"CVE-2020-21426"
"CVE-2019-12214"
"CVE-2019-12212"
];
maintainers = [ ];
platforms = with lib.platforms; unix;
};
})

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,68 @@
{
buildPackages,
fetchurl,
lib,
stdenv,
libgcrypt,
readline,
libgpg-error,
}:
stdenv.mkDerivation rec {
version = "1.6.16";
pname = "freeipmi";
src = fetchurl {
url = "mirror://gnu/freeipmi/${pname}-${version}.tar.gz";
sha256 = "sha256-W872u562gOSbSjYjV5kwrOeJn1OSWyBF/p+RrWkEER0=";
};
depsBuildBuild = [ buildPackages.stdenv.cc ];
buildInputs = [
libgcrypt
readline
libgpg-error
];
configureFlags = [
# Device permissions are set by udev/kernel, so don't restrict them unnecessarily
"--with-dont-check-for-root"
]
++ lib.optionals (stdenv.buildPlatform != stdenv.hostPlatform) [
"ac_cv_file__dev_urandom=true"
"ac_cv_file__dev_random=true"
];
# Fix GCC 14 build.
# https://savannah.gnu.org/bugs/?65203
env.NIX_CFLAGS_COMPILE = "-Wno-error=implicit-function-declaration";
doCheck = true;
meta = {
description = "Implementation of the Intelligent Platform Management Interface";
longDescription = ''
GNU FreeIPMI provides in-band and out-of-band IPMI software based on
the IPMI v1.5/2.0 specification. The IPMI specification defines a
set of interfaces for platform management and is implemented by a
number vendors for system management. The features of IPMI that
most users will be interested in are sensor monitoring, system event
monitoring, power control, and serial-over-LAN (SOL). The FreeIPMI
tools and libraries listed below should provide users with the
ability to access and utilize these and many other features. A
number of useful features for large HPC or cluster environments have
also been implemented into FreeIPMI. See the README or FAQ for more
info.
'';
homepage = "https://www.gnu.org/software/freeipmi/";
downloadPage = "https://www.gnu.org/software/freeipmi/download.html";
license = lib.licenses.gpl3Plus;
maintainers = with lib.maintainers; [ raskin ];
platforms = lib.platforms.gnu ++ lib.platforms.linux; # arbitrary choice
};
}

View File

@@ -0,0 +1,76 @@
{
lib,
stdenv,
fetchurl,
ant,
jdk8,
jre8,
makeWrapper,
stripJavaArchivesHook,
}:
stdenv.mkDerivation (finalAttrs: {
pname = "freemind";
version = "1.0.1";
src = fetchurl {
url = "mirror://sourceforge/freemind/freemind-src-${finalAttrs.version}.tar.gz";
hash = "sha256-AYKFEmsn6uc5K4w7+1E/Jb1wuZB0QOXrggnyC0+9hhk=";
};
nativeBuildInputs = [
ant
jdk8
makeWrapper
stripJavaArchivesHook
];
postPatch = ''
# disable the <buildnumer> task because it would edit version.properties
# and add a "last edited" header to it, which is non-deterministic
sed -i '/<buildnumber/d' build.xml
# replace dependency on `which`
substituteInPlace freemind.sh \
--replace-fail "which" "type -p"
'';
preConfigure = ''
chmod +x *.sh
patchShebangs *.sh
'';
# Workaround for javac encoding errors
# Note: not sure if this is still needed
env.JAVA_TOOL_OPTIONS = "-Dfile.encoding=UTF8";
buildPhase = ''
runHook preBuild
ant build
runHook postBuild
'';
installPhase = ''
runHook preInstall
ant dist -Ddist=$out/share/freemind
runHook postInstall
'';
postFixup = ''
makeWrapper $out/share/freemind/freemind.sh $out/bin/freemind \
--set JAVA_HOME ${jre8}
'';
meta = {
description = "Mind-mapping software";
homepage = "https://freemind.sourceforge.net/wiki/index.php/Main_Page";
mainProgram = "freemind";
maintainers = with lib.maintainers; [ tomasajt ];
license = lib.licenses.gpl2Plus;
platforms = lib.platforms.linux;
sourceProvenance = with lib.sourceTypes; [
fromSource
binaryBytecode # source bundles dependencies as jars
];
};
})

View File

@@ -0,0 +1,61 @@
{
stdenv,
lib,
fetchFromGitHub,
cmake,
libusb1,
pkg-config,
libglut,
libGLU,
libGL,
libXi,
libXmu,
}:
stdenv.mkDerivation rec {
pname = "freenect";
version = "0.7.5";
src = fetchFromGitHub {
owner = "OpenKinect";
repo = "libfreenect";
rev = "v${version}";
sha256 = "sha256-PpJGFWrlQ5sK7TJxQNoPujw1MxWRjphvblwOqnF+mSg=";
};
buildInputs = [
libusb1
libglut
libGLU
libGL
libXi
libXmu
];
nativeBuildInputs = [
cmake
pkg-config
];
# see https://aur.archlinux.org/cgit/aur.git/commit/PKGBUILD?h=libfreenect&id=0d17db49ba64bcb9e3a4eed61cf55c9a5ceb97f1
patchPhase =
lib.concatMapStrings
(x: ''
substituteInPlace ${x} --replace "{GLUT_LIBRARY}" "{GLUT_LIBRARIES}"
'')
[
"examples/CMakeLists.txt"
"wrappers/cpp/CMakeLists.txt"
];
meta = {
description = "Drivers and libraries for the Xbox Kinect device on Windows, Linux, and macOS";
homepage = "http://openkinect.org";
license = with lib.licenses; [
gpl2
asl20
];
maintainers = with lib.maintainers; [ bennofs ];
platforms = with lib.platforms; linux ++ darwin;
};
}

531
pkgs/by-name/fr/freenet/deps.json generated Normal file
View File

@@ -0,0 +1,531 @@
{
"!comment": "This is a nixpkgs Gradle dependency lockfile. For more details, refer to the Gradle section in the nixpkgs manual.",
"!version": 1,
"https:/": {
"mvn.freenetproject.org/org/freenetproject#freenet-ext/29": {
"jar": "sha256-MvKz1r7t9UE36i+aPr72dmbXafCWawjNF/19tZuk158="
},
"repo.maven.apache.org/maven2/com/android/tools#common/22.7.2": {
"jar": "sha256-6ttGKrkD+J2cPRFUxxHwRni3mSHGgmjTQYuba/NEMk4=",
"pom": "sha256-8zhO5T3Z3fYzOUMDUs3/+WY225ZP0mzxaNvVOt8fSQg="
},
"repo.maven.apache.org/maven2/com/android/tools#dvlib/22.7.2": {
"jar": "sha256-/a4X4WbglSc1P37HGgt/PZPMBhxkf8p73ZZjJjO7Z+s=",
"pom": "sha256-Q1HWW5dIC0kjSGhulIFI7Hp/AOVXbZjC9DHPIBxDSpw="
},
"repo.maven.apache.org/maven2/com/android/tools#sdk-common/22.7.2": {
"jar": "sha256-l/7SZpQEdLQTNBcmSalIWvV6Qqmsmrcm2S27X6SjPpU=",
"pom": "sha256-Ln4pJV6PBhvVs706Vj7/nqu2xqmLSIHwlpzklOkrhD4="
},
"repo.maven.apache.org/maven2/com/android/tools#sdklib/22.7.2": {
"jar": "sha256-qFsaBA/dxaWEWjBuaOK4qx/+LFMS4buyoosTvxOE7RU=",
"pom": "sha256-mGlFT4xtSEwnyYC4eIETnMx/7/Q+7g+MGkhtsbXUPSM="
},
"repo.maven.apache.org/maven2/com/android/tools/build#builder-model/0.9.2": {
"jar": "sha256-Utfe2Ho/LgcOOyj3IdFPXtik4s6cVFlT2C3cp0XQ/pU=",
"pom": "sha256-8F2KJ7WoFcgydCbzj7DeW6zpgmAAtE4iR+vTxtcnw28="
},
"repo.maven.apache.org/maven2/com/android/tools/build#builder-test-api/0.9.2": {
"jar": "sha256-+i52Ho1fu3bUsVJVeE2nx89qaGW03e1IDXpCxvjqbgo=",
"pom": "sha256-c2xEI3eXn7+LDkxMnGSI6Gg7In6VIXekA6LH+4SB2Fg="
},
"repo.maven.apache.org/maven2/com/android/tools/build#builder/0.9.2": {
"jar": "sha256-Vbz5bMADnI7bU9GRVeq+1NfgGgkbZv6zrbb/acJ59Bk=",
"pom": "sha256-UaLeg+swvMwBEbTd3mkxvswC5HwpuqNgm9ErCm7kvvg="
},
"repo.maven.apache.org/maven2/com/android/tools/build#gradle/0.9.2": {
"jar": "sha256-gX/QEcuyw4yF/39EWHwTsUCoRUrfk3/Do/KKZggULII=",
"pom": "sha256-DCk9CiNuuQYLtf32UJGE98BPy2xFGXbKkS0LysbBt7Y="
},
"repo.maven.apache.org/maven2/com/android/tools/build#manifest-merger/22.7.2": {
"jar": "sha256-KUCCoJLJeibyMtC+EhCamQj7pI/dOfdkWTI2nONiD5Q=",
"pom": "sha256-yTWvDWMw7Lk41paAn7mIG5hMz07owjDEUP8nqVNIFv0="
},
"repo.maven.apache.org/maven2/com/android/tools/build/builder-model/0.9.2/builder-model-0.9.2.jar": {
"asc": "sha256-mvzW7dRcRrToD9jWhsDp1nwq2XVTZeOUx5/CYFLukfQ="
},
"repo.maven.apache.org/maven2/com/android/tools/build/builder-model/0.9.2/builder-model-0.9.2.pom": {
"asc": "sha256-n958l8bKaQ1Qx2r+bcAlndat8CwvZbZiNe+cxPi2MMQ="
},
"repo.maven.apache.org/maven2/com/android/tools/build/builder-test-api/0.9.2/builder-test-api-0.9.2.jar": {
"asc": "sha256-6v/kcHV6Usj90eieQgOgMl2b3q1LS1i6KJQItY/o2cg="
},
"repo.maven.apache.org/maven2/com/android/tools/build/builder-test-api/0.9.2/builder-test-api-0.9.2.pom": {
"asc": "sha256-Crh44ObdpB0SJ+h9M7pWIE/bYK4l5rrx0fak28HgSNI="
},
"repo.maven.apache.org/maven2/com/android/tools/build/builder/0.9.2/builder-0.9.2.jar": {
"asc": "sha256-ztAiK1VbDcSvFZ0j9rXrFVNf33Rhzrm8wzn5gPGvfzk="
},
"repo.maven.apache.org/maven2/com/android/tools/build/builder/0.9.2/builder-0.9.2.pom": {
"asc": "sha256-syEEuQm2v5Z8NNGANlh/myoZfi4OaIjjk4Al3x5ljYw="
},
"repo.maven.apache.org/maven2/com/android/tools/build/gradle/0.9.2/gradle-0.9.2.jar": {
"asc": "sha256-qyO5UMul04CKVrdOCBB+ouP1H03GgG9GFYI0dksRNHo="
},
"repo.maven.apache.org/maven2/com/android/tools/build/gradle/0.9.2/gradle-0.9.2.pom": {
"asc": "sha256-IgxhubDsggD6cinAXDC2WgyKq0rQpE7mQHSnTdkhKNE="
},
"repo.maven.apache.org/maven2/com/android/tools/build/gradle/maven-metadata": {
"xml": {
"groupId": "com.android.tools.build",
"lastUpdated": "20170306221012",
"release": "2.3.0"
}
},
"repo.maven.apache.org/maven2/com/android/tools/build/manifest-merger/22.7.2/manifest-merger-22.7.2.jar": {
"asc": "sha256-l7sOFoQMAzDBHZmJAI4oAcEMEj8IZDkULMZpj4+RkEE="
},
"repo.maven.apache.org/maven2/com/android/tools/build/manifest-merger/22.7.2/manifest-merger-22.7.2.pom": {
"asc": "sha256-jHFCoJT3Vklk1CHcU5htftAxjHayTF3PQp0/BAhI2BA="
},
"repo.maven.apache.org/maven2/com/android/tools/common/22.7.2/common-22.7.2.jar": {
"asc": "sha256-n/wISK1w475HWWyAVpyFf0vfrZk+SuDoJPnab+1N2kE="
},
"repo.maven.apache.org/maven2/com/android/tools/common/22.7.2/common-22.7.2.pom": {
"asc": "sha256-TFNSXpxIshBScNQNWSba6QOuxtEQai2OdOBohuCgKzI="
},
"repo.maven.apache.org/maven2/com/android/tools/ddms#ddmlib/22.7.2": {
"jar": "sha256-NZ5F7s1IkUbifaIimc7nOzYL1Ox/wCfb2zXKys5BOfk=",
"pom": "sha256-YrMjYBcQ4UiBuJ/LDEJ/DfnNbewtmiY+F17jMt8iMXY="
},
"repo.maven.apache.org/maven2/com/android/tools/ddms/ddmlib/22.7.2/ddmlib-22.7.2.jar": {
"asc": "sha256-vSgCnTMlLGziMsAKCJKTne+asEEe8K8R+poeHCmL+hI="
},
"repo.maven.apache.org/maven2/com/android/tools/ddms/ddmlib/22.7.2/ddmlib-22.7.2.pom": {
"asc": "sha256-FnOAxy4OttUH0A1K72JWeH+siIglSW68ArW9oQhdJIc="
},
"repo.maven.apache.org/maven2/com/android/tools/dvlib/22.7.2/dvlib-22.7.2.jar": {
"asc": "sha256-WgfgmfP4gV9Y3me/FSkYjHmm5QXHO2P1GqFTNsVXGJM="
},
"repo.maven.apache.org/maven2/com/android/tools/dvlib/22.7.2/dvlib-22.7.2.pom": {
"asc": "sha256-PIx3iCiWEA/GYUfT0L+Y+lhfa98ssDWLSjWl1qF5okA="
},
"repo.maven.apache.org/maven2/com/android/tools/external/lombok#lombok-ast/0.2.2": {
"jar": "sha256-Ww2J1DBMXGFGDkijsPMTf3EitDOBuLtQWr9HzF/bmoE=",
"pom": "sha256-iuaeannJXNEvRP80ak/B1wrnLTlkqnk3cTbGPIv0074="
},
"repo.maven.apache.org/maven2/com/android/tools/external/lombok/lombok-ast/0.2.2/lombok-ast-0.2.2.jar": {
"asc": "sha256-ubvH9/JIm1E4JxKsA2I8gmKSgedhyQrehjbtKvkvXuk="
},
"repo.maven.apache.org/maven2/com/android/tools/external/lombok/lombok-ast/0.2.2/lombok-ast-0.2.2.pom": {
"asc": "sha256-h86LTl/gH52T3cqAVBNuNX6F4EgX2y2aXWGQ3ie0R1o="
},
"repo.maven.apache.org/maven2/com/android/tools/layoutlib#layoutlib-api/22.7.2": {
"jar": "sha256-X/eOSXu1N9Hi9toYoVGvyQZ7Cj6Q6KQvHJldOxd0kSw=",
"pom": "sha256-dyDIj0DkMDb+tWMd2uEnO8XSwURDnqGK3/p0J3LzHnM="
},
"repo.maven.apache.org/maven2/com/android/tools/layoutlib/layoutlib-api/22.7.2/layoutlib-api-22.7.2.jar": {
"asc": "sha256-3tXQc62IfKonpENS1sEbBJap0hhdcUSqWbkpvu/vyFs="
},
"repo.maven.apache.org/maven2/com/android/tools/layoutlib/layoutlib-api/22.7.2/layoutlib-api-22.7.2.pom": {
"asc": "sha256-C09wcRuPuH4qsmXkncBSeO0Z2GZxKPOQQvJDQwfMBZ4="
},
"repo.maven.apache.org/maven2/com/android/tools/lint#lint-api/22.7.2": {
"jar": "sha256-1faoCgpY1ycOFmiZGr+akAkteBBqy1qDRGddCv71Tv4=",
"pom": "sha256-gs32TSJflZ0SMJzK4k21b17zmJzn27TrE/oEW01RaQM="
},
"repo.maven.apache.org/maven2/com/android/tools/lint#lint-checks/22.7.2": {
"jar": "sha256-Hrp9wZ3RAhpR3BkT5obPwe4yrP3e26H3NZf2X6ghXzM=",
"pom": "sha256-5/n3/kXskHm5S/kCh6xSbyGQ6/vJyU3LJsGhsG2+uM8="
},
"repo.maven.apache.org/maven2/com/android/tools/lint#lint/22.7.2": {
"jar": "sha256-vyzGoCzhz2/wdqBBo6GC8G8chqZfU/vR69VK/cxqjrg=",
"pom": "sha256-PPoEnyzLSe5u7n55c5WjqGrpizxkIIINKEb+B6bqKlc="
},
"repo.maven.apache.org/maven2/com/android/tools/lint/lint-api/22.7.2/lint-api-22.7.2.jar": {
"asc": "sha256-YH4XVrtDVk9Gey/I60RSUWWu0QtFFSCZpg6O5h87CIw="
},
"repo.maven.apache.org/maven2/com/android/tools/lint/lint-api/22.7.2/lint-api-22.7.2.pom": {
"asc": "sha256-5UjETgtrLCNiMvg+uWqet4FnrvoLiQq3wITS6oGX13o="
},
"repo.maven.apache.org/maven2/com/android/tools/lint/lint-checks/22.7.2/lint-checks-22.7.2.jar": {
"asc": "sha256-P0Kq4YSaRD91xQCOWv7WO6Ae7Kv0DQpf0icYXPEkssU="
},
"repo.maven.apache.org/maven2/com/android/tools/lint/lint-checks/22.7.2/lint-checks-22.7.2.pom": {
"asc": "sha256-uR2CLmzh+m7mAA5SDvS5eeGlIveZmzpLpfDsW1CHIps="
},
"repo.maven.apache.org/maven2/com/android/tools/lint/lint/22.7.2/lint-22.7.2.jar": {
"asc": "sha256-k1lNA9bAtAVz6GA00rkJusVIoUiNn+J+hXvUch7SYyQ="
},
"repo.maven.apache.org/maven2/com/android/tools/lint/lint/22.7.2/lint-22.7.2.pom": {
"asc": "sha256-Q16Lx4njfrT0vUR4/oCA6AZ9XjBOV2F7YW0HxTEBu/s="
},
"repo.maven.apache.org/maven2/com/android/tools/sdk-common/22.7.2/sdk-common-22.7.2.jar": {
"asc": "sha256-F7wcwNMx92sutxXHVpsI8vkvHiXngBvbpwbF5teMCr4="
},
"repo.maven.apache.org/maven2/com/android/tools/sdk-common/22.7.2/sdk-common-22.7.2.pom": {
"asc": "sha256-HAG4PLQozpyFKT1Z4RWJbkqCcLdqKIX1jMzq7xEdVYs="
},
"repo.maven.apache.org/maven2/com/android/tools/sdklib/22.7.2/sdklib-22.7.2.jar": {
"asc": "sha256-y7XVQ5ikgdTJx/9DxBCcFFBLefGH8eUEXM8i6xNj6Dc="
},
"repo.maven.apache.org/maven2/com/android/tools/sdklib/22.7.2/sdklib-22.7.2.pom": {
"asc": "sha256-LdpmibFMCP7bk1qQd7r7pdSfSEVX1fItSq/A3XYohvs="
},
"repo.maven.apache.org/maven2/com/google/guava#guava-parent/15.0": {
"pom": "sha256-9RllyaeD1msuchhUmHcfYJsJcQik/g9xfPwzCBWV2js="
},
"repo.maven.apache.org/maven2/com/google/guava#guava/15.0": {
"jar": "sha256-ejRXV3DuvGClR2YW42dqbLbyl1x4xBXipgFKxyS6V4M=",
"pom": "sha256-lxBXG7i0qZL0X/gKSOL+Ws7cdD6/iD1M/cuSBgIruFs="
},
"repo.maven.apache.org/maven2/com/google/guava/guava-parent/15.0/guava-parent-15.0.pom": {
"asc": "sha256-GTlOaEPTfDFHy1xkMncIK2RKh3V0ltThkNvZ/iTKQPw="
},
"repo.maven.apache.org/maven2/com/google/guava/guava/15.0/guava-15.0.jar": {
"asc": "sha256-O+b5j21kF4SwFWVKdhyosCbDa8YDmyir0I3dFePvdoU="
},
"repo.maven.apache.org/maven2/com/google/guava/guava/15.0/guava-15.0.pom": {
"asc": "sha256-6UQa9fz5vuf/GA+ByIcpViliI9pUc8+rjRzHVJL/iCw="
},
"repo.maven.apache.org/maven2/com/squareup#javawriter/2.2.1": {
"jar": "sha256-HIIW3l9u2UaerpQhAybEt/5hFmvlAnaOkCd5xqe6vOo=",
"pom": "sha256-XNmnCSuBlmCSc4cBpL28LkoDm/r8E6NcfKCYEc+7MPA="
},
"repo.maven.apache.org/maven2/com/squareup/javawriter/2.2.1/javawriter-2.2.1.jar": {
"asc": "sha256-3Yy6yNGFQ/RrvC9/hh9/Sng320M+zSdgydw2D0IICO0="
},
"repo.maven.apache.org/maven2/com/squareup/javawriter/2.2.1/javawriter-2.2.1.pom": {
"asc": "sha256-NPDWZzyuLZPDZkxtM3X4fNkrcOgBlA25Ur4bQLv7QAg="
},
"repo.maven.apache.org/maven2/commons-codec#commons-codec/1.4": {
"jar": "sha256-aqQjTHTzoQNXUaJYIlRYZ8jDcnElpkK24ElmXRhjYxs=",
"pom": "sha256-9fMAaUIboBPna+znYEB9zIACJGHclVXcvXX9sG2aQI8="
},
"repo.maven.apache.org/maven2/commons-codec/commons-codec/1.4/commons-codec-1.4.jar": {
"asc": "sha256-nnSvNrWBCQnQHrEmCToDzejnbXJImQrPe+ffRPCgipw="
},
"repo.maven.apache.org/maven2/commons-codec/commons-codec/1.4/commons-codec-1.4.pom": {
"asc": "sha256-4YgQcyQZ5ziWdGwzeWxMn/oOM2UdYLrhq5wUtjjKJPc="
},
"repo.maven.apache.org/maven2/commons-logging#commons-logging/1.1.1": {
"jar": "sha256-zm+RPK0fDbOq1wGG1lxbx//Mmpnj/o4LE3MSgZ98Ni8=",
"pom": "sha256-0PLhbQVOi7l63ZyiZSXrI0b2koCfzSooeH2ozrPDXug="
},
"repo.maven.apache.org/maven2/commons-logging/commons-logging/1.1.1/commons-logging-1.1.1.jar": {
"asc": "sha256-wY7phz0hNTOPi8YInSBZ+DH75wcqsAYvq6svJABO8BY="
},
"repo.maven.apache.org/maven2/commons-logging/commons-logging/1.1.1/commons-logging-1.1.1.pom": {
"asc": "sha256-5O+8adBtGElIn97Mi2kMVHXSJlNDj0C1uc2txt/HcJs="
},
"repo.maven.apache.org/maven2/io/pebbletemplates#pebble-project/3.1.5": {
"pom": "sha256-TSnFtsOFqJp3c0S4sPjcKe/j+q06e5f4faJfAnOnOJM="
},
"repo.maven.apache.org/maven2/io/pebbletemplates#pebble/3.1.5": {
"jar": "sha256-0lOm3eWeE4aYqqruVGRh0vH2yL0qo47N00ffF8+Q1vA=",
"pom": "sha256-kGnsr9XZc4ey9mNXp1X5Ghv4kZC0yHZ6zyCJDlFAuzc="
},
"repo.maven.apache.org/maven2/io/pebbletemplates/pebble-project/3.1.5/pebble-project-3.1.5.pom": {
"asc": "sha256-xVWh8tfwv8bCI1PiVOOgDx3O/fpvFTTdScy5Zw2Q/To="
},
"repo.maven.apache.org/maven2/io/pebbletemplates/pebble/3.1.5/pebble-3.1.5.jar": {
"asc": "sha256-cFF8mZganRCeN3NneTDN1q23v7gpiaQmqF1xB+gDf1Y="
},
"repo.maven.apache.org/maven2/io/pebbletemplates/pebble/3.1.5/pebble-3.1.5.pom": {
"asc": "sha256-qzOpaSYC/oOoJLkeqRdWDoFp1tMNERW/eZM7y2yJ90M="
},
"repo.maven.apache.org/maven2/junit#junit/4.13.2": {
"jar": "sha256-jklbY0Rp1k+4rPo0laBly6zIoP/1XOHjEAe+TBbcV9M=",
"pom": "sha256-Vptpd+5GA8llwcRsMFj6bpaSkbAWDraWTdCSzYnq3ZQ="
},
"repo.maven.apache.org/maven2/junit/junit/4.13.2/junit-4.13.2.jar": {
"asc": "sha256-qFOPh/WLb1S3ps7/0BJisILDiWIrCIbFIIeN4e+56rk="
},
"repo.maven.apache.org/maven2/junit/junit/4.13.2/junit-4.13.2.pom": {
"asc": "sha256-gIzTYDjanf/1IzpX45EvG3BKlDTnp02va57XpLBi9d0="
},
"repo.maven.apache.org/maven2/kxml2#kxml2/2.3.0": {
"pom": "sha256-CVvyT0be2d4LZsqdZx3PVPj2FbqVFQsaMTw0dcVf1qU="
},
"repo.maven.apache.org/maven2/net/java/dev/jna#jna-platform/4.5.2": {
"jar": "sha256-8dAMFn2JIcbiPGJu+fHDrgvkc8lcaP+gErx65VqH4tY=",
"pom": "sha256-+mLh78vRkHG+SzftEFPa3AymCICzmA9Yq9SX8qnxPQU="
},
"repo.maven.apache.org/maven2/net/java/dev/jna#jna/4.5.2": {
"jar": "sha256-DI63rPZyYWVteQBRkd66ujtr9d1gpDc1okVCk4Hb7P8=",
"pom": "sha256-nfQrTM73BF1uT7ZLg3bdCS3XTZc3zGSVx2mO7MvTxE8="
},
"repo.maven.apache.org/maven2/net/java/dev/jna/jna-platform/4.5.2/jna-platform-4.5.2.jar": {
"asc": "sha256-mCY0PWlQJMB6IzgJ1xaO/nJZJZC0PDYDYwIjLKzaTcg="
},
"repo.maven.apache.org/maven2/net/java/dev/jna/jna-platform/4.5.2/jna-platform-4.5.2.pom": {
"asc": "sha256-Jpde2ET9nK96bRMGPKRXJD8naBJCRtNLZS5/J1f8AVc="
},
"repo.maven.apache.org/maven2/net/java/dev/jna/jna/4.5.2/jna-4.5.2.jar": {
"asc": "sha256-9KXn9EXk1JJdLNAxXt23tC4ZvAc8YyQcPUtAhmPRy30="
},
"repo.maven.apache.org/maven2/net/java/dev/jna/jna/4.5.2/jna-4.5.2.pom": {
"asc": "sha256-EgEfn4uqaMa1yS1oAC6BYwnERayRmBUfNiN0vAMGAqI="
},
"repo.maven.apache.org/maven2/net/sf/kxml#kxml2/2.3.0": {
"jar": "sha256-8mTdn3mh/eEM5ezFMiHv8kvkyTMcgwt9UvLwintjPeI=",
"pom": "sha256-Mc5gb06VGJNimbsNJ8l4+mHhhf0d58mHT+lZpT40poU="
},
"repo.maven.apache.org/maven2/net/sf/proguard#proguard-base/4.10": {
"jar": "sha256-pCU0cXeR5+2oMDYTNzWP4siLCRmAEfnu0epVkfNUTyQ=",
"pom": "sha256-iYTsEfuzfC9fj1aDRT2mLVtGYU8VxVBxJUH9isYqnWs="
},
"repo.maven.apache.org/maven2/net/sf/proguard#proguard-gradle/4.10": {
"jar": "sha256-ijb/GXYIYcPPWijb4aadk+aEfi5aadg5PQhkQv8R0Ms=",
"pom": "sha256-kZNouji8XuG6t3YYOqf2HKBaDg1syDbiOhByk59mK5E="
},
"repo.maven.apache.org/maven2/net/sf/proguard#proguard-parent/4.10": {
"pom": "sha256-31W088lOxk4iyZFZ/VmWktA9VNdaFRMXMqovUDOeLGM="
},
"repo.maven.apache.org/maven2/net/sf/proguard/proguard-base/4.10/proguard-base-4.10.jar": {
"asc": "sha256-TL4/Aaaoj77RknIIiDFg34ZvkkmI92HUjA38kfABdc0="
},
"repo.maven.apache.org/maven2/net/sf/proguard/proguard-base/4.10/proguard-base-4.10.pom": {
"asc": "sha256-KzDBhyCZaQn/l1lk5J1qSUDpC2l96x3lUkv6HiiPu0k="
},
"repo.maven.apache.org/maven2/net/sf/proguard/proguard-gradle/4.10/proguard-gradle-4.10.jar": {
"asc": "sha256-nsPmzDnUqRzyKzVolwnP+R8YgVDziMqZaR82RolwmK0="
},
"repo.maven.apache.org/maven2/net/sf/proguard/proguard-gradle/4.10/proguard-gradle-4.10.pom": {
"asc": "sha256-xLysB82xpC/dbOBFGqBK0sa6vitiUpSKmGAN7wbidX8="
},
"repo.maven.apache.org/maven2/net/sf/proguard/proguard-parent/4.10/proguard-parent-4.10.pom": {
"asc": "sha256-QyzAPExvQl0zxiS6j2eZJxPoiAA3RAl4X8FM3OD4+GI="
},
"repo.maven.apache.org/maven2/org/apache#apache/4": {
"pom": "sha256-npMjomuo6yOU7+8MltMbcN9XCAhjDcFHyrHnNUHMUZQ="
},
"repo.maven.apache.org/maven2/org/apache/apache/4/apache-4.pom": {
"asc": "sha256-aAalIBTrcoWtABbZ1280b5N7+qINywPWWTtR2Gw9pak="
},
"repo.maven.apache.org/maven2/org/apache/commons#commons-compress/1.0": {
"jar": "sha256-CehOeXeMoboVtzNll6MhRX/CJb1dQfe0aTXSeSL8KnQ=",
"pom": "sha256-O4swzTU6QIV7IEMRzGQVBLATSET8lhOMIkMlniAo/5E="
},
"repo.maven.apache.org/maven2/org/apache/commons#commons-parent/11": {
"pom": "sha256-ueAwbzk0YBBbij+lEFJQxSkbHvqpmVSs4OwceDEJoCo="
},
"repo.maven.apache.org/maven2/org/apache/commons#commons-parent/5": {
"pom": "sha256-i9YywAvfgKfeNsIrYPEkUsFH2Oyi8A151maZ6+faoCo="
},
"repo.maven.apache.org/maven2/org/apache/commons/commons-compress/1.0/commons-compress-1.0.jar": {
"asc": "sha256-IEO1Qm7Y1AdNkfT99t+8mqQ7KwPoLSEBlc8Ups3nUyY="
},
"repo.maven.apache.org/maven2/org/apache/commons/commons-compress/1.0/commons-compress-1.0.pom": {
"asc": "sha256-tuFXfC5uycG29GlxwmhjY65JuNabajDXHLJbGdAQjlE="
},
"repo.maven.apache.org/maven2/org/apache/commons/commons-parent/11/commons-parent-11.pom": {
"asc": "sha256-hgEzyW2ItIA1+P6i6cHRWr3bILkS2ynh/pyNFS4/OLM="
},
"repo.maven.apache.org/maven2/org/apache/commons/commons-parent/5/commons-parent-5.pom": {
"asc": "sha256-6ZA2PdnME62+KkCoEMHjJMBZRWLlGefwiMyaMJLIiLQ="
},
"repo.maven.apache.org/maven2/org/apache/httpcomponents#httpclient/4.1.1": {
"jar": "sha256-6uUm0Ipmeb9soTjUWgAFsgum7EpAJ4i+gQlwcTyOR1E=",
"pom": "sha256-rboX2TSKl9TOBfKCZ5cP2BlcYaVssG1eDdFfr/YP4qc="
},
"repo.maven.apache.org/maven2/org/apache/httpcomponents#httpcomponents-client/4.1": {
"pom": "sha256-UhW2SHmMbI2bnN42QtO/taTMiUt8hBEAQ1Ln3l0RmCc="
},
"repo.maven.apache.org/maven2/org/apache/httpcomponents#httpcomponents-client/4.1.1": {
"pom": "sha256-R1KE5emVUm1+dxUTSgdBLOctWYUEY0I4P13kGIoCKlM="
},
"repo.maven.apache.org/maven2/org/apache/httpcomponents#httpcomponents-core/4.1": {
"pom": "sha256-T3l//Zw9FW3g2+wf0eY+n9hYSpPHBDV2VT38twb2TeQ="
},
"repo.maven.apache.org/maven2/org/apache/httpcomponents#httpcore/4.1": {
"jar": "sha256-POON5R9OJGaMbRhAV6jQhUH56BXS0xnQ9GLwgwkrKc8=",
"pom": "sha256-T8hq+jjpyfqwmcz0XCvHQ9RT5qsiJJCr/oZxl1w8cyc="
},
"repo.maven.apache.org/maven2/org/apache/httpcomponents#httpmime/4.1": {
"jar": "sha256-MWKVZhSOikdoiuQ7Qgq8Ps14PtFbM768AIJL8kybFao=",
"pom": "sha256-2zzZW+wQAWBeFlPyhD6FQucS+iu2cv2cjBrOhsV2c9E="
},
"repo.maven.apache.org/maven2/org/apache/httpcomponents#project/4.1.1": {
"pom": "sha256-IbtNRN/1TjOjfBGvaYWacUICrgCWmqtUU+unJ2aI+Ow="
},
"repo.maven.apache.org/maven2/org/apache/httpcomponents/httpclient/4.1.1/httpclient-4.1.1.jar": {
"asc": "sha256-IBjcWIUV/O4A7rHpXO+Jd64Lm+d4W7xYU+Nv00kCXeg="
},
"repo.maven.apache.org/maven2/org/apache/httpcomponents/httpclient/4.1.1/httpclient-4.1.1.pom": {
"asc": "sha256-YezBIVduwFwXabNCrrZn7oEFO1tLJ5ztz+RJHqGWjLE="
},
"repo.maven.apache.org/maven2/org/apache/httpcomponents/httpcomponents-client/4.1.1/httpcomponents-client-4.1.1.pom": {
"asc": "sha256-bKJv92oBSHgdXHI884xvZ22L38qboC1BKWO08HUrz0Y="
},
"repo.maven.apache.org/maven2/org/apache/httpcomponents/httpcomponents-client/4.1/httpcomponents-client-4.1.pom": {
"asc": "sha256-EutH7JPGE7OMO4mOsWpAIw9j9shsWd+obgCKe+Vx2KU="
},
"repo.maven.apache.org/maven2/org/apache/httpcomponents/httpcomponents-core/4.1/httpcomponents-core-4.1.pom": {
"asc": "sha256-dXFGZMsRHYLkjBv4QBH8mr1U5xm1fytTKAb2KFE2FEY="
},
"repo.maven.apache.org/maven2/org/apache/httpcomponents/httpcore/4.1/httpcore-4.1.jar": {
"asc": "sha256-xqZuKzF6klaO0bD8bXE5tyiWkO1Hpe9387qt/AJcs54="
},
"repo.maven.apache.org/maven2/org/apache/httpcomponents/httpcore/4.1/httpcore-4.1.pom": {
"asc": "sha256-ovZWk6l1FQsg0C65j4H3srHRuqGYZ1QWLE72AsmnPPk="
},
"repo.maven.apache.org/maven2/org/apache/httpcomponents/httpmime/4.1/httpmime-4.1.jar": {
"asc": "sha256-QJ5DghXtPl2nissIn4G6sZHdPngQHL7iCn7H7BxM5Yw="
},
"repo.maven.apache.org/maven2/org/apache/httpcomponents/httpmime/4.1/httpmime-4.1.pom": {
"asc": "sha256-tWXRxOIKfwDlekZQPv6Dsyo82VgiFRwpoPA9c7xxqFA="
},
"repo.maven.apache.org/maven2/org/apache/httpcomponents/project/4.1.1/project-4.1.1.pom": {
"asc": "sha256-RC9FuVR7UWWSIVwOci4aF3BPeHZAaAP4hSyXhU1ahFY="
},
"repo.maven.apache.org/maven2/org/bouncycastle#bcpkix-jdk15on/1.48": {
"jar": "sha256-U0czNrTlqtd5aKGLFsVNFc28Q/Plehh4eZ7faUHQujc=",
"pom": "sha256-v3z/mqxILUKuuKFVHQDrZ81DbsjNThJuyKHgnITdIX0="
},
"repo.maven.apache.org/maven2/org/bouncycastle#bcprov-jdk15on/1.48": {
"jar": "sha256-gEt+Ljuax3Hf07Q94WZmrGAI+GAPSPKN3JTjmhFOIog=",
"pom": "sha256-KRIr50qOwbT8VB49opmL62Irw4wEuovx9Vk4aReCeYI="
},
"repo.maven.apache.org/maven2/org/bouncycastle#bcprov-jdk15on/1.59": {
"jar": "sha256-HDHkTjMdJeRtKTs+juLQcCimfbAR50yyRDKFrtHVnIU=",
"pom": "sha256-QeZGb3GwjQXw0+tdhFXATl42hpxjXhFq4Nt04oAD7OU="
},
"repo.maven.apache.org/maven2/org/bouncycastle/bcpkix-jdk15on/1.48/bcpkix-jdk15on-1.48.jar": {
"asc": "sha256-6tXbsLOuaFcz7tQZL5gydPf5nC4ghFFt49OXSkQEZEA="
},
"repo.maven.apache.org/maven2/org/bouncycastle/bcpkix-jdk15on/1.48/bcpkix-jdk15on-1.48.pom": {
"asc": "sha256-bx8bIFid6sxY9CdeW+Hs97+FLy1DscS6wC9u+P63LT0="
},
"repo.maven.apache.org/maven2/org/bouncycastle/bcprov-jdk15on/1.48/bcprov-jdk15on-1.48.jar": {
"asc": "sha256-f9qKQ9gEnRNI3dvoQpvrTFO6QEZM8hTDXNg3G5/N104="
},
"repo.maven.apache.org/maven2/org/bouncycastle/bcprov-jdk15on/1.48/bcprov-jdk15on-1.48.pom": {
"asc": "sha256-fzInz+bfjfvS6HWuYgtz9P6KEXK0tRt+r+weNqVS/Yw="
},
"repo.maven.apache.org/maven2/org/bouncycastle/bcprov-jdk15on/1.59/bcprov-jdk15on-1.59.jar": {
"asc": "sha256-ICEPWOGva/aukTU8MqzkEKgtMKCLlHROqYt5HOYJ5mk="
},
"repo.maven.apache.org/maven2/org/bouncycastle/bcprov-jdk15on/1.59/bcprov-jdk15on-1.59.pom": {
"asc": "sha256-F6lDq/sfWn2DvCZzOpgvKvxByFso/1OSOHPNtCKIF78="
},
"repo.maven.apache.org/maven2/org/eclipse/jdt/core/compiler#ecj/4.2.2": {
"jar": "sha256-THTfiGENZzssdL9bSLYoS65C+biA8K2JqK2mn+hKDXA=",
"pom": "sha256-sh7YTnfE/FhyYqADSzUx+vt+WxGlMWqbjKo/47fqYj0="
},
"repo.maven.apache.org/maven2/org/eclipse/jdt/core/compiler/ecj/4.2.2/ecj-4.2.2.jar": {
"asc": "sha256-4EsxB+k8PkrYaQC659GD+f17mBEi6FQqihlswUFZGjg="
},
"repo.maven.apache.org/maven2/org/eclipse/jdt/core/compiler/ecj/4.2.2/ecj-4.2.2.pom": {
"asc": "sha256-tnaW/JMy9jqxXze2MoL0xsIQL/K6fiiyBA6EfrsCUfc="
},
"repo.maven.apache.org/maven2/org/hamcrest#hamcrest-core/1.3": {
"jar": "sha256-Zv3vkelzk0jfeglqo4SlaF9Oh1WEzOiThqekclHE2Ok=",
"pom": "sha256-/eOGp5BRc6GxA95quCBydYS1DQ4yKC4nl3h8IKZP+pM="
},
"repo.maven.apache.org/maven2/org/hamcrest#hamcrest-parent/1.3": {
"pom": "sha256-bVNflO+2Y722gsnyelAzU5RogAlkK6epZ3UEvBvkEps="
},
"repo.maven.apache.org/maven2/org/hamcrest#hamcrest/3.0": {
"jar": "sha256-XWa2pKaAdVy27XyxBPp4Ne9kRmdYb/Bzet65d8Oezbw=",
"module": "sha256-mhBVNzjTWME+a69Zeb8sGlSQ7uScLcas8xcPzKCSDd4=",
"pom": "sha256-SgSmgTO/MkYfR7ilPI7p30zi9JoNrZeUvOhxe+5brDE="
},
"repo.maven.apache.org/maven2/org/hamcrest/hamcrest-core/1.3/hamcrest-core-1.3.jar": {
"asc": "sha256-YNmOD50t5Jur372FbCQ67ZeNG0jNA/+j3Y+8SGmGGXc="
},
"repo.maven.apache.org/maven2/org/hamcrest/hamcrest-core/1.3/hamcrest-core-1.3.pom": {
"asc": "sha256-l6OtfH63FxpqJBn5YBbgEATt+c7SkwBtlz8QhThi7kM="
},
"repo.maven.apache.org/maven2/org/hamcrest/hamcrest-parent/1.3/hamcrest-parent-1.3.pom": {
"asc": "sha256-0Iq1QfQtuRW9U8CAaXL08S6msdH/wJeUYMQ6H5ql0aY="
},
"repo.maven.apache.org/maven2/org/hamcrest/hamcrest/3.0/hamcrest-3.0.jar": {
"asc": "sha256-RneFTdkbhb4gYFeggKnn7GGxx9bwh1oPKhaV+rOSPiw="
},
"repo.maven.apache.org/maven2/org/hamcrest/hamcrest/3.0/hamcrest-3.0.module": {
"asc": "sha256-/J6pffAL2DCSbrZPuO6qDMktPg9RjMZutKGFyEU7aTI="
},
"repo.maven.apache.org/maven2/org/mockito#mockito-core/1.9.5": {
"jar": "sha256-+XSDuglEufoTOqKWOHZN2+rbUew9vAIHTFj6LK7NB/o=",
"pom": "sha256-9DIR3AoX/PzVBDCr1bx0e2/SOu9FaWgrZc8rrw8gcnw="
},
"repo.maven.apache.org/maven2/org/mockito/mockito-core/1.9.5/mockito-core-1.9.5.jar": {
"asc": "sha256-eIfgc49Zw5Oqx+vVeB66zTNKoBvixcE6KDkf7Aav6Lo="
},
"repo.maven.apache.org/maven2/org/mockito/mockito-core/1.9.5/mockito-core-1.9.5.pom": {
"asc": "sha256-rfCK39qLfToRTlvgFQpZnFMEYMCZqDtcFd1KvNjpwbo="
},
"repo.maven.apache.org/maven2/org/objenesis#objenesis/1.0": {
"jar": "sha256-xWlLVdklJ0eTgvJUGZs8ax2HgPZSrWHpylmRmIf0kag=",
"pom": "sha256-JInYiwSZ9V5173Xw8lBUV8cSxc+oR8maRvjes+fqPOs="
},
"repo.maven.apache.org/maven2/org/objenesis/objenesis/1.0/objenesis-1.0.jar": {
"asc": "sha256-3mmf2B0Qzgs7ymDdqIa2Viw3V+DZa/nhNlnbG5+Jctw="
},
"repo.maven.apache.org/maven2/org/objenesis/objenesis/1.0/objenesis-1.0.pom": {
"asc": "sha256-qcTqne8ZjjbFkMP5t/2gwG0i/dVrTD+SjTHY0Wn7IqA="
},
"repo.maven.apache.org/maven2/org/ow2#ow2/1.3": {
"pom": "sha256-USFcZ9LAaNi30vb4D1E3KgmAdd7MxEjUvde5h7qDKPs="
},
"repo.maven.apache.org/maven2/org/ow2/asm#asm-analysis/4.0": {
"jar": "sha256-3VOXq69XIxBJrLEBxFHlmKlHpd0YKYMneVNc/cK68U4=",
"pom": "sha256-7U8zeG58CrtuaOYcK047V7WLFOqu/ewxtwkCXja3/Hg="
},
"repo.maven.apache.org/maven2/org/ow2/asm#asm-parent/4.0": {
"pom": "sha256-QFr+Cu5AfJEcXkqoCpSdtVOS8XleE8oCrnKdFV30rBg="
},
"repo.maven.apache.org/maven2/org/ow2/asm#asm-tree/4.0": {
"jar": "sha256-2LAWoiBbLhQdtCbAQdKubQ1ButBQBioqUXWiWdNkF9o=",
"pom": "sha256-eskVIWBDQDSQMyuS1unIoqd5QIyy1kgdqdOjXtGKLvw="
},
"repo.maven.apache.org/maven2/org/ow2/asm#asm/4.0": {
"jar": "sha256-+y3ekCCke7AkxD2d4KlOc6vveTvwjwE1TMl8stLiqVc=",
"pom": "sha256-5jzvroWeRrEtOd1Yh3oZ+JN0pM6xvLE2Fz+nbUfXhtc="
},
"repo.maven.apache.org/maven2/org/ow2/asm/asm-analysis/4.0/asm-analysis-4.0.jar": {
"asc": "sha256-3a/+snWLUZFPxcIcazh0kRrFMkBveZi4KH96bF7wzfI="
},
"repo.maven.apache.org/maven2/org/ow2/asm/asm-analysis/4.0/asm-analysis-4.0.pom": {
"asc": "sha256-qq5cOCS/6PDbcjQEO/oiw/vBd9uOr+KUYikDHuHyzCk="
},
"repo.maven.apache.org/maven2/org/ow2/asm/asm-parent/4.0/asm-parent-4.0.pom": {
"asc": "sha256-eonTcSxLVAyUxUyG6KXF04wV9IO1MoHzL7hpcKE9i6E="
},
"repo.maven.apache.org/maven2/org/ow2/asm/asm-tree/4.0/asm-tree-4.0.jar": {
"asc": "sha256-LZuPDX8KrSvgD7DfnRyoENbfW8oGMqiazi3MtugqBTA="
},
"repo.maven.apache.org/maven2/org/ow2/asm/asm-tree/4.0/asm-tree-4.0.pom": {
"asc": "sha256-pZUFC8L/8axy7jgRmvHo0E5/X9wWWLpjh43D6X3p4Sg="
},
"repo.maven.apache.org/maven2/org/ow2/asm/asm/4.0/asm-4.0.jar": {
"asc": "sha256-6k6hHuOMwtShQlN69KEfZe6t1U84URL8qA9zpF2EQC4="
},
"repo.maven.apache.org/maven2/org/ow2/asm/asm/4.0/asm-4.0.pom": {
"asc": "sha256-Chrj2eVc9d/X29xW6MDTXx9jyiT/FA8BnHMOONKFGFw="
},
"repo.maven.apache.org/maven2/org/ow2/ow2/1.3/ow2-1.3.pom": {
"asc": "sha256-EKqTTnapQPgeFNBNoK+2aBGNwuHZZMHbwpEutEQO7ZE="
},
"repo.maven.apache.org/maven2/org/slf4j#slf4j-api/1.7.25": {
"jar": "sha256-GMSgCV1cHaa4F1kudnuyPSndL1YK1033X/OWHb3iW3k=",
"pom": "sha256-fNnXoLXZPf1GGhSIkbQ1Cc9AOpx/n7SQYNNVTfHIHh4="
},
"repo.maven.apache.org/maven2/org/slf4j#slf4j-parent/1.7.25": {
"pom": "sha256-GPXFISDbA26I1hNviDnIMtB0vdqVx1bG9CkknS21SsY="
},
"repo.maven.apache.org/maven2/org/slf4j/slf4j-api/1.7.25/slf4j-api-1.7.25.jar": {
"asc": "sha256-BKW7pnBF865e25U5DhApCyET6bbeguvQzwxwcHbPCeI="
},
"repo.maven.apache.org/maven2/org/slf4j/slf4j-api/1.7.25/slf4j-api-1.7.25.pom": {
"asc": "sha256-aZiuTbgrIvslBuWIqOBhSJKQhuk2sGcbXeKuR04sqws="
},
"repo.maven.apache.org/maven2/org/slf4j/slf4j-parent/1.7.25/slf4j-parent-1.7.25.pom": {
"asc": "sha256-BwwQsg8JhBbRGGrCjXUJdZtHcIjBm332csOEmX92IeU="
},
"repo.maven.apache.org/maven2/org/sonatype/oss#oss-parent/7": {
"pom": "sha256-tR+IZ8kranIkmVV/w6H96ne9+e9XRyL+kM5DailVlFQ="
},
"repo.maven.apache.org/maven2/org/unbescape#unbescape/1.1.6.RELEASE": {
"jar": "sha256-WXz4fVsaTzhbnRzsl0t7SDq7PuhfxbP4tir45L7JXCw=",
"pom": "sha256-AgOVYrsyfVQcDwUHZ+kYmPo4l0eSZojMITvRG8dRJ9E="
},
"repo.maven.apache.org/maven2/org/unbescape/unbescape/1.1.6.RELEASE/unbescape-1.1.6.RELEASE.jar": {
"asc": "sha256-qz5rvOGRW+6t/VyP982ODE4t6IBemafD8LBYvd7tVRU="
},
"repo.maven.apache.org/maven2/org/unbescape/unbescape/1.1.6.RELEASE/unbescape-1.1.6.RELEASE.pom": {
"asc": "sha256-WnZ7/qjsZQszhpIN2ZZ0ceoGqs1M7P78Y+aKREUuE5k="
}
}
}

View File

@@ -0,0 +1,22 @@
#! @bash@/bin/bash
set -eo pipefail
PATH=@coreutils@/bin:$PATH
export CLASSPATH=@CLASSPATH@
export FREENET_HOME="$HOME/.local/share/freenet"
if [ -n "$XDG_DATA_HOME" ] ; then
FREENET_HOME="$XDG_DATA_HOME/freenet"
fi
mkdir -p -- $FREENET_HOME
cp -u -- @seednodes@/seednodes.fref $FREENET_HOME/seednodes.fref
chmod u+rw -- $FREENET_HOME/seednodes.fref
cd -- $FREENET_HOME
# The `--add-opens` lines are needed to get the WebOfTrust plugin to work.
exec @jre@/bin/java -Xmx1024M \
--add-opens java.base/java.lang=ALL-UNNAMED \
--add-opens java.base/java.nio=ALL-UNNAMED \
--add-opens java.base/sun.nio.ch=ALL-UNNAMED \
freenet.node.NodeStarter "$@"

View File

@@ -0,0 +1,104 @@
{
lib,
stdenv,
fetchurl,
fetchFromGitHub,
jdk_headless,
jre,
gradle_8,
bash,
coreutils,
replaceVars,
nixosTests,
writeText,
}:
let
gradle = gradle_8;
jdk = jdk_headless;
freenet_ext = fetchurl {
url = "https://github.com/freenet/fred/releases/download/build01495/freenet-ext.jar";
hash = "sha256-MvKz1r7t9UE36i+aPr72dmbXafCWawjNF/19tZuk158=";
};
seednodes = fetchFromGitHub {
name = "freenet-seednodes";
owner = "hyphanet";
repo = "seedrefs";
rev = "8e8b3574b63e649e03f67d23d3dfa461b7a0ba4a";
hash = "sha256-OCXBfhgheOH8XZjUhvJpNQ1I73rCwUfgyl/xkZt3JeM=";
postFetch = ''
cat $out/* > $out/seednodes.fref
'';
};
in
stdenv.mkDerivation rec {
pname = "freenet";
version = "01503";
src = fetchFromGitHub {
owner = "freenet";
repo = "fred";
tag = "build${version}";
hash = "sha256-SjHQssCwPjSoaxsLmaov4bRoz+6XSlHfiOoxWxlRn60=";
};
nativeBuildInputs = [
gradle
jdk
];
wrapper = replaceVars ./freenetWrapper {
inherit
bash
coreutils
jre
seednodes
;
# replaced in installPhase
CLASSPATH = null;
};
mitmCache = gradle.fetchDeps {
inherit pname;
data = ./deps.json;
};
# using reproducible archives breaks the build
gradleInitScript = writeText "empty-init-script.gradle" "";
gradleFlags = [ "-Dorg.gradle.java.home=${jdk}" ];
gradleBuildTask = "jar";
installPhase = ''
runHook preInstall
install -Dm644 build/libs/freenet.jar $out/share/freenet/freenet.jar
ln -s ${freenet_ext} $out/share/freenet/freenet-ext.jar
mkdir -p $out/bin
install -Dm755 ${wrapper} $out/bin/freenet
export CLASSPATH="$(find ${mitmCache} -name "*.jar"| sort | grep -v bcprov-jdk15on-1.48.jar|tr $'\n' :):$out/share/freenet/freenet-ext.jar:$out/share/freenet/freenet.jar"
substituteInPlace $out/bin/freenet \
--subst-var-by CLASSPATH "$CLASSPATH"
runHook postInstall
'';
passthru.tests = {
inherit (nixosTests) freenet;
};
meta = {
description = "Decentralised and censorship-resistant network";
homepage = "https://freenetproject.org/";
sourceProvenance = with lib.sourceTypes; [ binaryBytecode ];
license = lib.licenses.gpl2Plus;
maintainers = with lib.maintainers; [ nagy ];
platforms = with lib.platforms; linux;
changelog = "https://github.com/freenet/fred/blob/build${version}/NEWS.md";
mainProgram = "freenet";
};
}

View File

@@ -0,0 +1,80 @@
{
lib,
stdenv,
rustPlatform,
fetchFromGitLab,
makeDesktopItem,
installShellFiles,
dejavu_fonts,
SDL2,
SDL2_ttf,
SDL2_image,
}:
let
pname = "freenukum";
description = "Clone of the original Duke Nukum 1 Jump'n Run game";
desktopItem = makeDesktopItem {
desktopName = pname;
name = pname;
exec = pname;
icon = pname;
comment = description;
categories = [
"Game"
"ArcadeGame"
"ActionGame"
];
genericName = pname;
};
in
rustPlatform.buildRustPackage rec {
inherit pname;
version = "0.4.0";
src = fetchFromGitLab {
domain = "salsa.debian.org";
owner = "silwol";
repo = "freenukum";
rev = "v${version}";
hash = "sha256-Tk9n2gPwyPin6JZ4RSO8d/+xVpEz4rF8C2eGKwrAXU0=";
};
cargoHash = "sha256-lQZ9Z/1tbL7BeLmGxJXNUvrXsOGtgzGXNt6WYGezxi0=";
nativeBuildInputs = [
installShellFiles
];
buildInputs = [
SDL2
SDL2_ttf
SDL2_image
];
postPatch = ''
substituteInPlace src/graphics.rs \
--replace /usr $out
'';
postInstall = ''
mkdir -p $out/share/fonts/truetype/dejavu
ln -sf \
${dejavu_fonts}/share/fonts/truetype/DejaVuSans.ttf \
$out/share/fonts/truetype/dejavu/DejaVuSans.ttf
mkdir -p $out/share/doc/freenukum
install -Dm644 README.md CHANGELOG.md $out/share/doc/freenukum/
installManPage doc/freenukum.6
install -Dm644 "${desktopItem}/share/applications/"* -t $out/share/applications/
'';
meta = {
description = "Clone of the original Duke Nukum 1 Jump'n Run game";
homepage = "https://salsa.debian.org/silwol/freenukum";
changelog = "https://salsa.debian.org/silwol/freenukum/-/blob/v${version}/CHANGELOG.md";
license = lib.licenses.agpl3Plus;
maintainers = with lib.maintainers; [ _0x4A6F ];
broken = stdenv.hostPlatform.isDarwin;
};
}

View File

@@ -0,0 +1,6 @@
#!@shell@
if [ -e ~/.config/freeorion/config.xml ]; then
@libxsltBin@/bin/xsltproc -o ~/.config/freeorion/config.xml @out@/share/freeorion/fix-paths.xslt ~/.config/freeorion/config.xml
fi
exit 0

View File

@@ -0,0 +1,13 @@
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" omit-xml-declaration="no" indent="yes" />
<xsl:template match='node() | @*'>
<xsl:copy>
<xsl:apply-templates select='node() | @*'/>
</xsl:copy>
</xsl:template>
<xsl:template match='//text()[starts-with(., "@nixStore@")]'>
<xsl:value-of select='concat("@out@", substring-after(substring-after(., "@nixStore@"), "/"))'/>
</xsl:template>
</xsl:stylesheet>

View File

@@ -0,0 +1,94 @@
{
lib,
stdenv,
fetchFromGitHub,
cmake,
doxygen,
graphviz,
makeWrapper,
boost,
SDL2,
python3,
freetype,
openal,
libogg,
libvorbis,
zlib,
libpng,
libtiff,
libjpeg,
libGLU,
libGL,
glew,
libxslt,
}:
stdenv.mkDerivation (finalAttrs: {
pname = "freeorion";
version = "0.5.1.1";
src = fetchFromGitHub {
owner = "freeorion";
repo = "freeorion";
tag = "v${finalAttrs.version}";
hash = "sha256-0z3EPiSlViWQzpUu6+4IZ3ih0pbwdkZWAiVPsVcJr8o=";
};
buildInputs = [
(boost.override {
enablePython = true;
python = python3;
})
(python3.withPackages (p: with p; [ pycodestyle ]))
SDL2
freetype
glew
libGL
libGLU
libjpeg
libogg
libpng
libtiff
libvorbis
openal
zlib
];
nativeBuildInputs = [
cmake
doxygen
graphviz
makeWrapper
];
# as of 0.5.0.1 FreeOrion doesn't work with "-DOpenGL_GL_PREFERENCE=GLVND"
cmakeFlags = [ "-DOpenGL_GL_PREFERENCE=LEGACY" ];
postInstall = ''
mkdir -p $out/libexec
# We need final slashes for XSLT replace to work properly
substitute ${./fix-paths.xslt} $out/share/freeorion/fix-paths.xslt \
--subst-var-by nixStore "$NIX_STORE/" \
--subst-var-by out "$out/"
substitute ${./fix-paths.sh} $out/libexec/fix-paths \
--subst-var-by libxsltBin ${libxslt.bin} \
--subst-var-by shell ${stdenv.shell} \
--subst-var out
chmod +x $out/libexec/fix-paths
wrapProgram $out/bin/freeorion \
--run $out/libexec/fix-paths \
--prefix LD_LIBRARY_PATH : $out/lib/freeorion
'';
meta = with lib; {
description = "Free, open source, turn-based space empire and galactic conquest (4X) computer game";
homepage = "https://www.freeorion.org/";
license = with licenses; [
gpl2Only
cc-by-sa-30
];
platforms = platforms.linux;
maintainers = with maintainers; [ tex ];
};
})

View File

@@ -0,0 +1,29 @@
{
lib,
stdenv,
fetchurl,
}:
stdenv.mkDerivation rec {
pname = "freepats";
version = "20060219";
src = fetchurl {
url = "https://freepats.zenvoid.org/freepats-${version}.tar.bz2";
sha256 = "12iw36rd94zirll96cd5k0va7p5hxmf2shvjlhzihcmjaw8flq82";
};
installPhase = ''mkdir "$out"; cp -r . "$out"'';
meta = with lib; {
description = "Instrument patches, for MIDI synthesizers";
longDescription = ''
Freepats is a project to create a free and open set of instrument
patches, in any format, that can be used with softsynths.
'';
homepage = "https://freepats.zenvoid.org/";
license = licenses.gpl2;
platforms = platforms.all;
maintainers = [ maintainers.bjornfor ];
};
}

1489
pkgs/by-name/fr/freeplane/deps.json generated Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,108 @@
{
stdenvNoCC,
lib,
fetchFromGitHub,
makeBinaryWrapper,
makeDesktopItem,
jdk17,
gradle_8,
which,
copyDesktopItems,
}:
let
pname = "freeplane";
version = "1.12.12";
jdk = jdk17;
gradle = gradle_8;
src = fetchFromGitHub {
owner = "freeplane";
repo = "freeplane";
rev = "release-${version}";
hash = "sha256-8VFHJ3rEHzCuIYhz6o2LYzlybRZo6n7XGIM0D7BZUkU=";
};
in
stdenvNoCC.mkDerivation (finalAttrs: {
inherit pname version src;
nativeBuildInputs = [
makeBinaryWrapper
jdk
gradle
copyDesktopItems
];
mitmCache = gradle.fetchDeps {
inherit pname;
data = ./deps.json;
};
gradleFlags = [
"-Dorg.gradle.java.home=${jdk}"
"-x"
"test"
];
# share/freeplane/core/org.freeplane.core/META-INF doesn't
# always get generated with parallel building enabled
enableParallelBuilding = false;
preBuild = "mkdir -p freeplane/build";
gradleBuildTask = "build";
desktopItems = [
(makeDesktopItem {
name = "freeplane";
desktopName = "freeplane";
genericName = "Mind-mapper";
exec = "freeplane";
icon = "freeplane";
comment = finalAttrs.meta.description;
mimeTypes = [
"application/x-freemind"
"application/x-freeplane"
"text/x-troff-mm"
];
categories = [
"2DGraphics"
"Chart"
"Graphics"
"Office"
];
})
];
installPhase = ''
runHook preInstall
mkdir -p $out/bin $out/share
cp -a ./BIN/. $out/share/freeplane
makeWrapper $out/share/freeplane/freeplane.sh $out/bin/freeplane \
--set FREEPLANE_BASE_DIR $out/share/freeplane \
--set JAVA_HOME ${jdk} \
--prefix PATH : ${
lib.makeBinPath [
jdk
which
]
} \
--prefix _JAVA_AWT_WM_NONREPARENTING : 1 \
--prefix _JAVA_OPTIONS " " "-Dawt.useSystemAAFontSettings=gasp"
runHook postInstall
'';
meta = {
description = "Mind-mapping software";
homepage = "https://freeplane.org/";
license = lib.licenses.gpl2Plus;
platforms = lib.platforms.linux;
maintainers = with lib.maintainers; [ chaduffy ];
mainProgram = "freeplane";
};
})

View File

@@ -0,0 +1,59 @@
{
lib,
stdenv,
fetchurl,
libjpeg,
libGLU,
libGL,
libglut,
zlib,
cmake,
libX11,
libxml2,
libpng,
libXxf86vm,
}:
stdenv.mkDerivation rec {
pname = "freepv";
version = "0.3.0";
src = fetchurl {
url = "mirror://sourceforge/freepv/freepv-${version}.tar.gz";
sha256 = "1w19abqjn64w47m35alg7bcdl1p97nf11zn64cp4p0dydihmhv56";
};
nativeBuildInputs = [ cmake ];
buildInputs = [
libjpeg
libGLU
libGL
libglut
zlib
libX11
libxml2
libpng
libXxf86vm
];
postPatch = ''
sed -i -e '/GECKO/d' CMakeLists.txt
sed -i -e '/mozilla/d' src/CMakeLists.txt
sed -i -e '1i \
#include <cstdio>' src/libfreepv/OpenGLRenderer.cpp
sed -i -e '1i \
#include <cstring>' src/libfreepv/Image.cpp
substituteInPlace src/libfreepv/Action.h \
--replace NULL nullptr
substituteInPlace src/libfreepv/pngReader.cpp \
--replace png_set_gray_1_2_4_to_8 png_set_expand_gray_1_2_4_to_8
'';
env.NIX_CFLAGS_COMPILE = "-fpermissive -Wno-narrowing";
meta = {
description = "Open source panorama viewer using GL";
homepage = "https://freepv.sourceforge.net/";
license = [ lib.licenses.lgpl21 ];
};
}

View File

@@ -0,0 +1,116 @@
{
lib,
stdenv,
fetchFromGitHub,
autoreconfHook,
bsd-finger,
perl,
talloc,
linkOpenssl ? true,
openssl,
withCap ? true,
libcap,
withCollectd ? false,
collectd,
withJson ? false,
json_c,
withLdap ? true,
openldap,
withMemcached ? false,
libmemcached,
withMysql ? false,
libmysqlclient,
withPostgresql ? false,
libpq,
withPcap ? true,
libpcap,
withRedis ? false,
hiredis,
withRest ? false,
curl,
withSqlite ? true,
sqlite,
withYubikey ? false,
libyubikey,
}:
assert withRest -> withJson;
stdenv.mkDerivation rec {
pname = "freeradius";
version = "3.2.7";
src = fetchFromGitHub {
owner = "FreeRADIUS";
repo = "freeradius-server";
tag = "release_${lib.replaceStrings [ "." ] [ "_" ] version}";
hash = "sha256-FG0/quBB5Q/bdYQqkFaZc/BhcIC/n2uVstlIGe4EPvE=";
};
nativeBuildInputs = [ autoreconfHook ];
buildInputs = [
openssl
talloc
bsd-finger
perl
]
++ lib.optional withCap libcap
++ lib.optional withCollectd collectd
++ lib.optional withJson json_c
++ lib.optional withLdap openldap
++ lib.optional withMemcached libmemcached
++ lib.optional withMysql libmysqlclient
++ lib.optional withPostgresql libpq
++ lib.optional withPcap libpcap
++ lib.optional withRedis hiredis
++ lib.optional withRest curl
++ lib.optional withSqlite sqlite
++ lib.optional withYubikey libyubikey;
configureFlags = [
"--sysconfdir=/etc"
"--localstatedir=/var"
]
++ lib.optional (!linkOpenssl) "--with-openssl=no";
postPatch = ''
substituteInPlace src/main/checkrad.in \
--replace "/usr/bin/finger" "${bsd-finger}/bin/finger"
'';
# By default, freeradius will generate Diffie-Hellman parameters and
# self-signed TLS certificates during installation. We don't want
# this, for several reasons:
# - reproducibility (random generation)
# - we don't want _anybody_ to use a cert where the private key is on our public binary cache!
# - we don't want the certs to change each time the package is rebuilt
# So let's avoid anything getting into our output.
makeFlags = [ "LOCAL_CERT_FILES=" ];
installFlags = [
"sysconfdir=\${out}/etc"
"localstatedir=\${TMPDIR}"
"INSTALL_CERT_FILES=" # see comment at makeFlags
];
outputs = [
"out"
"dev"
"man"
"doc"
];
meta = with lib; {
homepage = "https://freeradius.org/";
description = "Modular, high performance free RADIUS suite";
license = licenses.gpl2Plus;
maintainers = with maintainers; [
sheenobu
];
platforms = with platforms; linux;
};
}
## TODO: include windbind optionally (via samba?)
## TODO: include oracle optionally
## TODO: include ykclient optionally

View File

@@ -0,0 +1,209 @@
{
stdenv,
lib,
fetchFromGitHub,
cmake,
writableTmpDirAsHomeHook,
docbook-xsl-nons,
libxslt,
pkg-config,
alsa-lib,
faac,
faad2,
ffmpeg,
fuse3,
glib,
openh264,
openssl,
pcre2,
pkcs11helper,
uriparser,
zlib,
libX11,
libXcursor,
libXdamage,
libXdmcp,
libXext,
libXi,
libXinerama,
libXrandr,
libXrender,
libXtst,
libXv,
libxkbcommon,
libxkbfile,
wayland,
wayland-scanner,
icu,
libunwind,
orc,
cairo,
cjson,
libusb1,
libpulseaudio,
cups,
pcsclite,
SDL2,
SDL2_ttf,
SDL2_image,
systemd,
libjpeg_turbo,
libkrb5,
libopus,
buildServer ? true,
nocaps ? false,
withUnfree ? false,
# tries to compile and run generate_argument_docbook.c
withManPages ? stdenv.buildPlatform.canExecute stdenv.hostPlatform,
gnome-remote-desktop,
remmina,
}:
stdenv.mkDerivation (finalAttrs: {
pname = "freerdp";
version = "3.17.1";
src = fetchFromGitHub {
owner = "FreeRDP";
repo = "FreeRDP";
rev = finalAttrs.version;
hash = "sha256-KAlxpoGOqvHTqKkb/yMrquSckFfMXgbEfxr2IuLPZFQ=";
};
postPatch = ''
# skip NIB file generation on darwin
substituteInPlace "client/Mac/CMakeLists.txt" "client/Mac/cli/CMakeLists.txt" \
--replace-fail "if(NOT IS_XCODE)" "if(FALSE)"
substituteInPlace "libfreerdp/freerdp.pc.in" \
--replace-fail "Requires:" "Requires: @WINPR_PKG_CONFIG_FILENAME@"
substituteInPlace client/SDL/SDL2/dialogs/{sdl_input.cpp,sdl_select.cpp,sdl_widget.cpp,sdl_widget.hpp} \
--replace-fail "<SDL_ttf.h>" "<SDL2/SDL_ttf.h>"
''
+ lib.optionalString (pcsclite != null) ''
substituteInPlace "winpr/libwinpr/smartcard/smartcard_pcsc.c" \
--replace-fail "libpcsclite.so" "${lib.getLib pcsclite}/lib/libpcsclite.so"
''
+ lib.optionalString nocaps ''
substituteInPlace "libfreerdp/locale/keyboard_xkbfile.c" \
--replace-fail "RDP_SCANCODE_CAPSLOCK" "RDP_SCANCODE_LCONTROL"
'';
nativeBuildInputs = [
cmake
libxslt
docbook-xsl-nons
pkg-config
wayland-scanner
writableTmpDirAsHomeHook
];
buildInputs = [
cairo
cjson
cups
faad2
ffmpeg
glib
icu
libX11
libXcursor
libXdamage
libXdmcp
libXext
libXi
libXinerama
libXrandr
libXrender
libXtst
libXv
libjpeg_turbo
libkrb5
libopus
libpulseaudio
libunwind
libusb1
libxkbcommon
libxkbfile
openh264
openssl
orc
pcre2
pcsclite
pkcs11helper
SDL2
SDL2_ttf
SDL2_image
uriparser
zlib
]
++ lib.optionals stdenv.hostPlatform.isLinux [
alsa-lib
fuse3
systemd
wayland
wayland-scanner
]
++ lib.optionals withUnfree [
faac
];
# https://github.com/FreeRDP/FreeRDP/issues/8526#issuecomment-1357134746
cmakeFlags = [
"-Wno-dev"
(lib.cmakeFeature "CMAKE_INSTALL_LIBDIR" "lib")
(lib.cmakeFeature "DOCBOOKXSL_DIR" "${docbook-xsl-nons}/xml/xsl/docbook")
]
++ lib.mapAttrsToList lib.cmakeBool {
BUILD_TESTING = false; # false is recommended by upstream
WITH_CAIRO = cairo != null;
WITH_CUPS = cups != null;
WITH_FAAC = withUnfree && faac != null;
WITH_FAAD2 = faad2 != null;
WITH_FUSE = stdenv.hostPlatform.isLinux && fuse3 != null;
WITH_JPEG = libjpeg_turbo != null;
WITH_KRB5 = libkrb5 != null;
WITH_OPENH264 = openh264 != null;
WITH_OPUS = libopus != null;
WITH_OSS = false;
WITH_MANPAGES = withManPages;
WITH_PCSC = pcsclite != null;
WITH_PULSE = libpulseaudio != null;
WITH_SERVER = buildServer;
WITH_WEBVIEW = false; # avoid introducing webkit2gtk-4.0
WITH_VAAPI = false; # false is recommended by upstream
WITH_X11 = true;
}
++ lib.optionals (!stdenv.buildPlatform.canExecute stdenv.hostPlatform) [
(lib.cmakeBool "SDL_USE_COMPILED_RESOURCES" false)
];
env.NIX_CFLAGS_COMPILE = toString (
lib.optionals stdenv.hostPlatform.isDarwin [
"-include AudioToolbox/AudioToolbox.h"
]
++ lib.optionals stdenv.cc.isClang [
"-Wno-error=incompatible-function-pointer-types"
]
);
passthru.tests = {
inherit remmina;
inherit gnome-remote-desktop;
};
meta = {
description = "Remote Desktop Protocol Client";
longDescription = ''
FreeRDP is a client-side implementation of the Remote Desktop Protocol (RDP)
following the Microsoft Open Specifications.
'';
homepage = "https://www.freerdp.com/";
license = lib.licenses.asl20;
maintainers = with lib.maintainers; [ peterhoeg ];
platforms = lib.platforms.unix;
};
})

1241
pkgs/by-name/fr/freerouting/deps.json generated Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,81 @@
{
lib,
stdenv,
fetchFromGitHub,
makeBinaryWrapper,
makeDesktopItem,
jdk,
gradle,
copyDesktopItems,
jre,
}:
stdenv.mkDerivation (finalAttrs: {
pname = "freerouting";
version = "2.1.0";
src = fetchFromGitHub {
owner = "freerouting";
repo = "freerouting";
tag = "v${finalAttrs.version}";
hash = "sha256-K4fwbvSPuKAAnIcTDBSAI1/6HuCB7c9rCGTJcyAj5dQ=";
};
gradleBuildTask = "executableJar";
nativeBuildInputs = [
makeBinaryWrapper
jdk
gradle
copyDesktopItems
];
mitmCache = gradle.fetchDeps {
inherit (finalAttrs) pname;
data = ./deps.json;
};
__darwinAllowLocalNetworking = true;
installPhase = ''
runHook preInstall
mkdir -p $out/{bin,share/freerouting}
cp build/libs/freerouting-executable.jar $out/share/freerouting
makeWrapper ${lib.getExe jre} $out/bin/freerouting \
--add-flags "-jar $out/share/freerouting/freerouting-executable.jar"
install -Dm644 ${finalAttrs.src}/design/icon/freerouting_icon_256x256_v1.png \
$out/share/icons/hicolor/256x256/apps/freerouting.png
runHook postInstall
'';
desktopItems = [
(makeDesktopItem {
name = finalAttrs.pname;
exec = "freerouting";
icon = "freerouting";
desktopName = "Freerouting";
comment = finalAttrs.meta.description;
categories = [
"Electricity"
"Engineering"
"Graphics"
];
})
];
meta = {
description = "Advanced PCB auto-router";
homepage = "https://www.freerouting.org";
changelog = "https://github.com/freerouting/freerouting/releases/tag/v${finalAttrs.version}";
longDescription = ''
Freerouting is an advanced autorouter for all PCB programs that support
the standard Specctra or Electra DSN interface. '';
license = lib.licenses.gpl3Only;
maintainers = with lib.maintainers; [ srounce ];
platforms = with lib.platforms; linux ++ darwin;
mainProgram = "freerouting";
};
})

View File

@@ -0,0 +1,60 @@
{
lib,
stdenv,
fetchFromGitHub,
fetchpatch,
autoreconfHook,
libtool,
pkg-config,
libxml2,
json_c,
testers,
}:
stdenv.mkDerivation (finalAttrs: {
pname = "freesasa";
version = "2.1.2";
src = fetchFromGitHub {
owner = "mittinatten";
repo = "freesasa";
tag = finalAttrs.version;
fetchSubmodules = true;
hash = "sha256-OH1/GGFtMBnHuoOu3pdR+ohVO1m0I/jmCZbxPQ0C0jo=";
};
patches = [
(fetchpatch {
# https://github.com/mittinatten/freesasa/issues/85
name = "fix-linker-error.patch";
url = "https://github.com/mittinatten/freesasa/commit/d5898c13af0f272697726c567a22f1c48af53d62.patch";
includes = [ "src/Makefile.am" ];
hash = "sha256-NA4jMue9ATxP+A0tYIptwz0qCXTmAqoMRBsi5d5uv3E=";
})
];
nativeBuildInputs = [
autoreconfHook
libtool
pkg-config
];
buildInputs = [
json_c
libxml2
];
passthru.tests = {
version = testers.testVersion { package = finalAttrs.finalPackage; };
};
meta = {
description = "C-library for calculating Solvent Accessible Surface Areas";
homepage = "https://github.com/mittinatten/freesasa";
changelog = "https://github.com/mittinatten/freesasa/blob/${finalAttrs.src.rev}/CHANGELOG.md";
license = lib.licenses.mit;
maintainers = with lib.maintainers; [ natsukium ];
mainProgram = "freesasa";
platforms = lib.platforms.unix;
};
})

View File

@@ -0,0 +1,15 @@
diff --git a/sweep.h b/sweep.h
index 198349d..549f39f 100644
--- a/sweep.h
+++ b/sweep.h
@@ -32,6 +32,10 @@
#include <string.h>
#endif /* HAVE_STRING_H */
+#ifdef HAVE_STRINGS_H
+#include <strings.h>
+#endif /* HAVE_STRINGS_H */
+
#ifdef HAVE_GETOPT_H
#include <getopt.h>
#endif /* HAVE_GETOPT_H */

View File

@@ -0,0 +1,13 @@
diff --git a/logs.c b/logs.c
index 5e87f52..29ad433 100644
--- a/logs.c
+++ b/logs.c
@@ -128,7 +128,7 @@ static void log_display(const char *mesg) {
// Display the message on the screen.
if (log_win) {
wclear(log_win);
- mvwprintw(log_win, 0, 0, mesg);
+ mvwprintw(log_win, 0, 0, "%s", mesg);
wnoutrefresh(log_win);
wrefresh(log_win);
}

View File

@@ -0,0 +1,12 @@
diff --git a/configure.ac b/configure.ac
index ae08308..5262e56 100644
--- a/configure.ac
+++ b/configure.ac
@@ -32,7 +32,6 @@ AC_TYPE_SIZE_T
AC_TYPE_UID_T
# Checks for library functions.
-AC_FUNC_MALLOC
AC_CHECK_FUNCS([alarm getcwd memset mkdir setlocale strdup strncasecmp
fileno flock lockf getopt getopt_long])

View File

@@ -0,0 +1,66 @@
{
fetchFromGitHub,
ncurses,
lib,
stdenv,
autoconf,
automake,
pkg-config,
installShellFiles,
}:
stdenv.mkDerivation {
pname = "freesweep";
version = "1.0.2-unstable-2024-04-19";
src = fetchFromGitHub {
owner = "rwestlund";
repo = "freesweep";
rev = "68c0ee5b29d1087d216d95875a7036713cd25fc0";
hash = "sha256-ZnAH7mIuBMFLdrtJOY8PzNbxv+GDEFAgyEtWCpTH2Us=";
};
# These patches are sent upstream in github:rwestlund/freesweep#18
patches = [
# strncasecmp and friends are declared in strings.h and not string.h on
# systems with HAVE_STRINGS_H
./0001-include-strings.h.patch
# Fixes a potential format string vulnerability and makes it compile with
# -Wformat-security
./0002-fix-Wformat-security.patch
# autoconf believes systems that handle malloc(0) differently from glibc
# have a bad malloc implementation and will replace calls to malloc with
# rpl_malloc. freesweep does not define rpl_malloc so this macro prevents
# building for such systems, the easiest solution is to remove this macro
./0003-remove-ac_func_malloc.patch
];
nativeBuildInputs = [
autoconf
automake
pkg-config
installShellFiles
];
buildInputs = [ ncurses ];
enableParallelBuilding = true;
preConfigure = "./autogen.sh";
installPhase = ''
runHook preInstall
install -D -m 0555 freesweep $out/bin/freesweep
install -D -m 0444 sweeprc $out/share/sweeprc
installManPage freesweep.6
runHook postInstall
'';
meta = {
description = "Console minesweeper-style game written in C for Unix-like systems";
mainProgram = "freesweep";
homepage = "https://github.com/rwestlund/freesweep";
license = lib.licenses.gpl2Only;
maintainers = with lib.maintainers; [ lzcunt ];
platforms = lib.platforms.unix;
};
}

View File

@@ -0,0 +1,250 @@
{
libopus,
opusfile,
libopusenc,
libogg,
libctb,
gsmlib,
lua,
curl,
ffmpeg,
libmysqlclient,
libpq,
spandsp3,
sofia_sip,
libks,
}:
let
mk = path: inputs: { inherit path inputs; };
in
# TODO: many of these are untested and missing required inputs
{
applications = {
abstraction = mk "applications/mod_abstraction" [ ];
av = mk "applications/mod_av" [ ffmpeg ];
avmd = mk "applications/mod_avmd" [ ];
bert = mk "applications/mod_bert" [ ];
blacklist = mk "applications/mod_blacklist" [ ];
callcenter = mk "applications/mod_callcenter" [ ];
cidlookup = mk "applications/mod_cidlookup" [ ];
cluechoo = mk "applications/mod_cluechoo" [ ];
commands = mk "applications/mod_commands" [ ];
conference = mk "applications/mod_conference" [ ];
curl = mk "applications/mod_curl" [ curl ];
cv = mk "applications/mod_cv" [ ];
db = mk "applications/mod_db" [ ];
directory = mk "applications/mod_directory" [ ];
distributor = mk "applications/mod_distributor" [ ];
dptools = mk "applications/mod_dptools" [ ];
easyroute = mk "applications/mod_easyroute" [ ];
enum = mk "applications/mod_enum" [ ];
esf = mk "applications/mod_esf" [ ];
esl = mk "applications/mod_esl" [ ];
expr = mk "applications/mod_expr" [ ];
fifo = mk "applications/mod_fifo" [ ];
fsk = mk "applications/mod_fsk" [ ];
fsv = mk "applications/mod_fsv" [ ];
hash = mk "applications/mod_hash" [ ];
hiredis = mk "applications/mod_hiredis" [ ];
httapi = mk "applications/mod_httapi" [ ];
http_cache = mk "applications/mod_http_cache" [ ];
ladspa = mk "applications/mod_ladspa" [ ];
lcr = mk "applications/mod_lcr" [ ];
memcache = mk "applications/mod_memcache" [ ];
mongo = mk "applications/mod_mongo" [ ];
mp4 = mk "applications/mod_mp4" [ ];
mp4v2 = mk "applications/mod_mp4v2" [ ];
nibblebill = mk "applications/mod_nibblebill" [ ];
oreka = mk "applications/mod_oreka" [ ];
osp = mk "applications/mod_osp" [ ];
prefix = mk "applications/mod_prefix" [ ];
rad_auth = mk "applications/mod_rad_auth" [ ];
redis = mk "applications/mod_redis" [ ];
rss = mk "applications/mod_rss" [ ];
signalwire = mk "applications/mod_signalwire" [ ];
sms = mk "applications/mod_sms" [ ];
sms_flowroute = mk "applications/mod_sms_flowroute" [ ];
snapshot = mk "applications/mod_snapshot" [ ];
snom = mk "applications/mod_snom" [ ];
sonar = mk "applications/mod_sonar" [ ];
soundtouch = mk "applications/mod_soundtouch" [ ];
spandsp = mk "applications/mod_spandsp" [ spandsp3 ];
spy = mk "applications/mod_spy" [ ];
stress = mk "applications/mod_stress" [ ];
translate = mk "applications/mod_translate" [ ];
valet_parking = mk "applications/mod_valet_parking" [ ];
video_filter = mk "applications/mod_video_filter" [ ];
vmd = mk "applications/mod_vmd" [ ];
voicemail = mk "applications/mod_voicemail" [ ];
voicemail_ivr = mk "applications/mod_voicemail_ivr" [ ];
};
ast_tts = {
cepstral = mk "ast_tts/mod_cepstral" [ ];
flite = mk "ast_tts/mod_flite" [ ];
pocketsphinx = mk "ast_tts/mod_pocketsphinx" [ ];
tts_commandline = mk "ast_tts/mod_tts_commandline" [ ];
unimrcp = mk "ast_tts/mod_unimrcp" [ ];
};
codecs = {
amr = mk "codecs/mod_amr" [ ];
amrwb = mk "codecs/mod_amrwb" [ ];
b64 = mk "codecs/mod_b64" [ ];
bv = mk "codecs/mod_bv" [ ];
clearmode = mk "codecs/mod_clearmode" [ ];
codec2 = mk "codecs/mod_codec2" [ ];
com_g729 = mk "codecs/mod_com_g729" [ ];
dahdi_codec = mk "codecs/mod_dahdi_codec" [ ];
g723_1 = mk "codecs/mod_g723_1" [ ];
g729 = mk "codecs/mod_g729" [ ];
h26x = mk "codecs/mod_h26x" [ ];
ilbc = mk "codecs/mod_ilbc" [ ];
isac = mk "codecs/mod_isac" [ ];
mp4v = mk "codecs/mod_mp4v" [ ];
opus = mk "codecs/mod_opus" [ libopus ];
sangoma_codec = mk "codecs/mod_sangoma_codec" [ ];
silk = mk "codecs/mod_silk" [ ];
siren = mk "codecs/mod_siren" [ ];
theora = mk "codecs/mod_theora" [ ];
};
databases = {
mariadb = mk "databases/mod_mariadb" [ libmysqlclient ];
pgsql = mk "databases/mod_pgsql" [ libpq ];
};
dialplans = {
asterisk = mk "dialplans/mod_dialplan_asterisk" [ ];
directory = mk "dialplans/mod_dialplan_directory" [ ];
xml = mk "dialplans/mod_dialplan_xml" [ ];
};
directories = {
ldap = mk "directories/mod_ldap" [ ];
};
endpoints = {
alsa = mk "endpoints/mod_alsa" [ ];
dingaling = mk "endpoints/mod_dingaling" [ ];
gsmopen = mk "endpoints/mod_gsmopen" [
gsmlib
libctb
];
h323 = mk "endpoints/mod_h323" [ ];
khomp = mk "endpoints/mod_khomp" [ ];
loopback = mk "endpoints/mod_loopback" [ ];
opal = mk "endpoints/mod_opal" [ ];
portaudio = mk "endpoints/mod_portaudio" [ ];
rtc = mk "endpoints/mod_rtc" [ ];
rtmp = mk "endpoints/mod_rtmp" [ ];
skinny = mk "endpoints/mod_skinny" [ ];
sofia = mk "endpoints/mod_sofia" [ sofia_sip ];
verto = mk "endpoints/mod_verto" [ libks ];
};
event_handlers = {
amqp = mk "event_handlers/mod_amqp" [ ];
cdr_csv = mk "event_handlers/mod_cdr_csv" [ ];
cdr_mongodb = mk "event_handlers/mod_cdr_mongodb" [ ];
cdr_pg_csv = mk "event_handlers/mod_cdr_pg_csv" [ ];
cdr_sqlite = mk "event_handlers/mod_cdr_sqlite" [ ];
erlang_event = mk "event_handlers/mod_erlang_event" [ ];
event_multicast = mk "event_handlers/mod_event_multicast" [ ];
event_socket = mk "event_handlers/mod_event_socket" [ ];
fail2ban = mk "event_handlers/mod_fail2ban" [ ];
format_cdr = mk "event_handlers/mod_format_cdr" [ ];
json_cdr = mk "event_handlers/mod_json_cdr" [ ];
radius_cdr = mk "event_handlers/mod_radius_cdr" [ ];
odbc_cdr = mk "event_handlers/mod_odbc_cdr" [ ];
kazoo = mk "event_handlers/mod_kazoo" [ ];
rayo = mk "event_handlers/mod_rayo" [ ];
smpp = mk "event_handlers/mod_smpp" [ ];
snmp = mk "event_handlers/mod_snmp" [ ];
event_zmq = mk "event_handlers/mod_event_zmq" [ ];
};
formats = {
imagick = mk "formats/mod_imagick" [ ];
local_stream = mk "formats/mod_local_stream" [ ];
native_file = mk "formats/mod_native_file" [ ];
opusfile = mk "formats/mod_opusfile" [
libopus
opusfile
libopusenc
libogg
];
png = mk "formats/mod_png" [ ];
portaudio_stream = mk "formats/mod_portaudio_stream" [ ];
shell_stream = mk "formats/mod_shell_stream" [ ];
shout = mk "formats/mod_shout" [ ];
sndfile = mk "formats/mod_sndfile" [ ];
ssml = mk "formats/mod_ssml" [ ];
tone_stream = mk "formats/mod_tone_stream" [ ];
vlc = mk "formats/mod_vlc" [ ];
webm = mk "formats/mod_webm" [ ];
};
languages = {
basic = mk "languages/mod_basic" [ ];
java = mk "languages/mod_java" [ ];
lua = mk "languages/mod_lua" [ lua ];
managed = mk "languages/mod_managed" [ ];
perl = mk "languages/mod_perl" [ ];
python = mk "languages/mod_python" [ ];
v8 = mk "languages/mod_v8" [ ];
yaml = mk "languages/mod_yaml" [ ];
};
loggers = {
console = mk "loggers/mod_console" [ ];
graylog2 = mk "loggers/mod_graylog2" [ ];
logfile = mk "loggers/mod_logfile" [ ];
syslog = mk "loggers/mod_syslog" [ ];
raven = mk "loggers/mod_raven" [ ];
};
say = {
de = mk "say/mod_say_de" [ ];
en = mk "say/mod_say_en" [ ];
es = mk "say/mod_say_es" [ ];
es_ar = mk "say/mod_say_es_ar" [ ];
fa = mk "say/mod_say_fa" [ ];
fr = mk "say/mod_say_fr" [ ];
he = mk "say/mod_say_he" [ ];
hr = mk "say/mod_say_hr" [ ];
hu = mk "say/mod_say_hu" [ ];
it = mk "say/mod_say_it" [ ];
ja = mk "say/mod_say_ja" [ ];
nl = mk "say/mod_say_nl" [ ];
pl = mk "say/mod_say_pl" [ ];
pt = mk "say/mod_say_pt" [ ];
ru = mk "say/mod_say_ru" [ ];
sv = mk "say/mod_say_sv" [ ];
th = mk "say/mod_say_th" [ ];
zh = mk "say/mod_say_zh" [ ];
};
timers = {
posix_timer = mk "timers/mod_posix_timer" [ ];
timerfd = mk "timers/mod_timerfd" [ ];
};
xml_int = {
cdr = mk "xml_int/mod_xml_cdr" [ ];
curl = mk "xml_int/mod_xml_curl" [ curl ];
ldap = mk "xml_int/mod_xml_ldap" [ ];
radius = mk "xml_int/mod_xml_radius" [ ];
rpc = mk "xml_int/mod_xml_rpc" [ ];
scgi = mk "xml_int/mod_xml_scgi" [ ];
# experimental
odbc = mk "../../contrib/mod/xml_int/mod_xml_odbc" [ ];
};
freetdm = mk "../../libs/freetdm/mod_freetdm" [ ];
}

View File

@@ -0,0 +1,198 @@
{
fetchFromGitHub,
stdenv,
lib,
pkg-config,
autoreconfHook,
ncurses,
gnutls,
readline,
openssl,
perl,
sqlite,
libjpeg,
speex,
pcre,
libuuid,
ldns,
libedit,
yasm,
which,
libsndfile,
libtiff,
libxcrypt,
callPackage,
modules ? null,
nixosTests,
}:
let
availableModules = callPackage ./modules.nix { };
# the default list from v1.8.7, except with applications/mod_signalwire also disabled
defaultModules =
mods:
with mods;
[
applications.commands
applications.conference
applications.db
applications.dptools
applications.enum
applications.esf
applications.expr
applications.fifo
applications.fsv
applications.hash
applications.httapi
applications.sms
applications.spandsp
applications.valet_parking
applications.voicemail
applications.curl
codecs.amr
codecs.b64
codecs.g723_1
codecs.g729
codecs.h26x
codecs.opus
databases.mariadb
databases.pgsql
dialplans.asterisk
dialplans.xml
endpoints.loopback
endpoints.rtc
endpoints.skinny
endpoints.sofia
endpoints.verto
event_handlers.cdr_csv
event_handlers.cdr_sqlite
event_handlers.event_socket
formats.local_stream
formats.native_file
formats.png
formats.sndfile
formats.tone_stream
languages.lua
loggers.console
loggers.logfile
loggers.syslog
say.en
xml_int.cdr
xml_int.rpc
xml_int.scgi
]
++ lib.optionals stdenv.hostPlatform.isLinux [ endpoints.gsmopen ];
enabledModules = (if modules != null then modules else defaultModules) availableModules;
modulesConf =
let
lst = map (mod: mod.path) enabledModules;
str = lib.strings.concatStringsSep "\n" lst;
in
builtins.toFile "modules.conf" str;
in
stdenv.mkDerivation rec {
pname = "freeswitch";
version = "1.10.12";
src = fetchFromGitHub {
owner = "signalwire";
repo = "freeswitch";
rev = "v${version}";
hash = "sha256-uOO+TpKjJkdjEp4nHzxcHtZOXqXzpkIF3dno1AX17d8=";
};
postPatch = ''
patchShebangs libs/libvpx/build/make/rtcd.pl
substituteInPlace libs/libvpx/build/make/configure.sh \
--replace AS=\''${AS} AS=yasm
# Disable advertisement banners
for f in src/include/cc.h libs/esl/src/include/cc.h; do
{
echo 'const char *cc = "";'
echo 'const char *cc_s = "";'
} > $f
done
'';
strictDeps = true;
nativeBuildInputs = [
pkg-config
autoreconfHook
perl
which
yasm
];
buildInputs = [
openssl
ncurses
gnutls
readline
libjpeg
sqlite
pcre
speex
ldns
libedit
libsndfile
libtiff
libuuid
libxcrypt
]
++ lib.unique (lib.concatMap (mod: mod.inputs) enabledModules);
enableParallelBuilding = true;
env.NIX_CFLAGS_COMPILE = toString [
"-Wno-error"
# https://github.com/signalwire/freeswitch/issues/2495
"-Wno-incompatible-pointer-types"
];
# Using c++14 because of build error
# gsm_at.h:94:32: error: ISO C++17 does not allow dynamic exception specifications
CXXFLAGS = "-std=c++14";
CFLAGS = "-D_ANSI_SOURCE";
hardeningDisable = [ "format" ];
preConfigure = ''
./bootstrap.sh
cp "${modulesConf}" modules.conf
'';
postInstall = ''
# helper for compiling modules... not generally useful; also pulls in perl dependency
rm "$out"/bin/fsxs
# include configuration templates
cp -r conf $out/share/freeswitch/
'';
passthru.tests.freeswitch = nixosTests.freeswitch;
meta = {
description = "Cross-Platform Scalable FREE Multi-Protocol Soft Switch";
homepage = "https://freeswitch.org/";
license = lib.licenses.mpl11;
maintainers = with lib.maintainers; [ mikaelfangel ];
platforms = with lib.platforms; unix;
broken = stdenv.hostPlatform.isDarwin;
};
}

View File

@@ -0,0 +1,60 @@
{
lib,
stdenv,
fetchurl,
guile,
pkg-config,
glib,
loudmouth,
gmp,
libidn,
readline,
libtool,
libunwind,
ncurses,
curl,
jansson,
texinfo,
argp-standalone,
}:
stdenv.mkDerivation rec {
pname = "freetalk";
version = "4.2";
src = fetchurl {
url = "mirror://gnu/freetalk/freetalk-${version}.tar.gz";
hash = "sha256-u1tPKacGry+JGYeAIgDia3N7zs5EM4FyQZdV8e7htYA=";
};
nativeBuildInputs = [
pkg-config
texinfo
];
buildInputs = [
guile
glib
loudmouth
gmp
libidn
readline
libtool
libunwind
ncurses
curl
jansson
]
++ lib.optionals stdenv.hostPlatform.isDarwin [
argp-standalone
];
env.NIX_LDFLAGS = lib.optionalString stdenv.hostPlatform.isDarwin "-largp";
meta = with lib; {
description = "Console XMPP client";
mainProgram = "freetalk";
license = licenses.gpl3Plus;
maintainers = with maintainers; [ raskin ];
platforms = platforms.unix;
downloadPage = "https://www.gnu.org/software/freetalk/";
};
}

View File

@@ -0,0 +1,13 @@
diff --git i/configure.ac w/configure.ac
index bb07bba1..c4e15d53 100644
--- i/configure.ac
+++ w/configure.ac
@@ -20,6 +20,8 @@ AM_INIT_AUTOMAKE([dist-bzip2 parallel-tests subdir-objects foreign])
m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES(yes)])
AC_CONFIG_HEADERS(include/config.h)
AC_CONFIG_MACRO_DIR([m4])
+AM_GNU_GETTEXT_VERSION([0.25])
+AM_GNU_GETTEXT([external])
dnl configuration directory will be /usr/local/etc
AC_PREFIX_DEFAULT(/usr/local)

View File

@@ -0,0 +1,47 @@
{
lib,
stdenv,
fetchurl,
autoreconfHook,
pkg-config,
openssl,
odbcSupport ? true,
unixODBC ? null,
}:
assert odbcSupport -> unixODBC != null;
# Work is in progress to move to cmake so revisit that later
stdenv.mkDerivation rec {
pname = "freetds";
version = "1.5.6";
src = fetchurl {
url = "https://www.freetds.org/files/stable/${pname}-${version}.tar.bz2";
hash = "sha256-2twI5prvFFI/2u4JFw1Z2vG2QT6NWFjQnJSWZ0ugjFc=";
};
patches = [
./gettext-0.25.patch
];
buildInputs = [
openssl
]
++ lib.optional odbcSupport unixODBC;
nativeBuildInputs = [
autoreconfHook
pkg-config
];
meta = {
description = "Libraries to natively talk to Microsoft SQL Server and Sybase databases";
homepage = "https://www.freetds.org";
changelog = "https://github.com/FreeTDS/freetds/releases/tag/v${version}";
license = lib.licenses.lgpl2;
maintainers = with lib.maintainers; [ peterhoeg ];
platforms = lib.platforms.all;
};
}

View File

@@ -0,0 +1,64 @@
{
lib,
stdenv,
fetchzip,
ant,
jdk8,
sharutils,
stripJavaArchivesHook,
}:
stdenv.mkDerivation (finalAttrs: {
pname = "freetts";
version = "1.2.2";
src = fetchzip {
url = "mirror://sourceforge/freetts/freetts-${finalAttrs.version}-src.zip";
hash = "sha256-+bhM0ErEZVnmcz5CBqn/AeGaOhKnCjZzGeqgO/89wms=";
stripRoot = false;
};
nativeBuildInputs = [
ant
jdk8
sharutils
stripJavaArchivesHook
];
sourceRoot = "${finalAttrs.src.name}/freetts-${finalAttrs.version}";
buildPhase = ''
runHook preBuild
pushd lib
sed -i -e "s/more/cat/" jsapi.sh
echo y | sh jsapi.sh
popd
ln -s . src
ant
runHook postBuild
'';
installPhase = ''
runHook preInstall
install -Dm644 lib/*.jar -t $out/lib
runHook postInstall
'';
meta = {
description = "Text to speech system based on Festival written in Java";
longDescription = ''
Text to speech system based on Festival written in Java.
Can be used in combination with KDE accessibility.
'';
homepage = "http://freetts.sourceforge.net";
license = lib.licenses.bsdOriginal;
maintainers = with lib.maintainers; [ sander ];
sourceProvenance = with lib.sourceTypes; [
fromSource
binaryBytecode # jsapi.jar is bundled in a self-extracting shell-script
];
};
})

View File

@@ -0,0 +1,121 @@
{
lib,
stdenvNoCC,
fetchFromGitHub,
fetchYarnDeps,
replaceVars,
makeDesktopItem,
nodejs,
yarnConfigHook,
yarnBuildHook,
makeShellWrapper,
copyDesktopItems,
electron,
nixosTests,
}:
let
description = "Open Source YouTube app for privacy";
in
stdenvNoCC.mkDerivation (finalAttrs: {
pname = "freetube";
version = "0.23.9";
src = fetchFromGitHub {
owner = "FreeTubeApp";
repo = "FreeTube";
tag = "v${finalAttrs.version}-beta";
hash = "sha256-KTVGmYlDOqugTbC4YQcoTUW+Ja9y1H6mwULrMkZVI0Y=";
};
# Darwin requires writable Electron dist
postUnpack =
if stdenvNoCC.hostPlatform.isDarwin then
''
cp -r ${electron.dist} electron-dist
chmod -R u+w electron-dist
''
else
''
ln -s ${electron.dist} electron-dist
'';
patches = [
(replaceVars ./patch-build-script.patch {
electron-version = electron.version;
})
];
yarnOfflineCache = fetchYarnDeps {
yarnLock = "${finalAttrs.src}/yarn.lock";
hash = "sha256-CnOxWA36D9x+p/Xx6sE865MSyTgPt054SX+ASr9K7zI=";
};
nativeBuildInputs = [
nodejs
yarnConfigHook
yarnBuildHook
makeShellWrapper
copyDesktopItems
];
installPhase = ''
runHook preInstall
''
+ lib.optionalString stdenvNoCC.hostPlatform.isLinux ''
mkdir -p $out/share/freetube
cp -r build/*-unpacked/{locales,resources{,.pak}} -t $out/share/freetube
makeWrapper ${lib.getExe electron} $out/bin/freetube \
--add-flags "$out/share/freetube/resources/app.asar" \
--add-flags "\''${NIXOS_OZONE_WL:+\''${WAYLAND_DISPLAY:+--ozone-platform-hint=auto --enable-features=WaylandWindowDecorations --enable-wayland-ime=true}}"
install -D _icons/icon.svg $out/share/icons/hicolor/scalable/apps/freetube.svg
''
+ lib.optionalString stdenvNoCC.hostPlatform.isDarwin ''
mkdir -p $out/Applications
cp -r build/mac*/FreeTube.app $out/Applications
ln -s "$out/Applications/FreeTube.app/Contents/MacOS/FreeTube" $out/bin/freetube
''
+ ''
runHook postInstall
'';
desktopItems = [
(makeDesktopItem {
name = "freetube";
desktopName = "FreeTube";
comment = description;
exec = "freetube %U";
terminal = false;
type = "Application";
icon = "freetube";
startupWMClass = "FreeTube";
mimeTypes = [ "x-scheme-handler/freetube" ];
categories = [ "Network" ];
})
];
passthru.tests = nixosTests.freetube;
meta = {
inherit description;
homepage = "https://freetubeapp.io/";
license = lib.licenses.agpl3Only;
maintainers = with lib.maintainers; [
ryneeverett
pentane
ryand56
sigmasquadron
ddogfoodd
];
badPlatforms = [
# output app is called "Electron.app" while derivation expects "FreeTube.app"
#see: https://github.com/NixOS/nixpkgs/pull/384596#issuecomment-2677141349
lib.systems.inspect.patterns.isDarwin
];
inherit (electron.meta) platforms;
mainProgram = "freetube";
};
})

View File

@@ -0,0 +1,13 @@
diff --git a/_scripts/ebuilder.config.js b/_scripts/ebuilder.config.js
index 5b79d961..9f5945d2 100644
--- a/_scripts/ebuilder.config.js
+++ b/_scripts/ebuilder.config.js
@@ -1,6 +1,8 @@
const { name, productName } = require('../package.json')
const config = {
+ electronVersion: "@electron-version@",
+ electronDist: "electron-dist",
appId: `io.freetubeapp.${name}`,
copyright: 'Copyleft © 2020-2024 freetubeapp@protonmail.com',
// asar: false,

View File

@@ -0,0 +1,12 @@
Index: freetype-2.10.0/include/freetype/config/ftoption.h
--- a/include/freetype/config/ftoption.h
+++ b/include/freetype/config/ftoption.h
@@ -126,7 +126,7 @@ FT_BEGIN_HEADER
* macro is not defined, FreeType offers alternative LCD rendering
* technology that produces excellent output without LCD filtering.
*/
-/* #define FT_CONFIG_OPTION_SUBPIXEL_RENDERING */
+#define FT_CONFIG_OPTION_SUBPIXEL_RENDERING
/**************************************************************************

View File

@@ -0,0 +1,20 @@
Index: freetype-2.10.0/modules.cfg
===================================================================
--- freetype-2.10.0.orig/modules.cfg
+++ freetype-2.10.0/modules.cfg
@@ -120,6 +120,6 @@ AUX_MODULES += cache
# TrueType GX/AAT table validation. Needs ftgxval.c below.
#
-# AUX_MODULES += gxvalid
+AUX_MODULES += gxvalid
# Support for streams compressed with gzip (files with suffix .gz).
#
@@ -143,6 +143,6 @@ AUX_MODULES += bzip2
# OpenType table validation. Needs ftotval.c below.
#
-# AUX_MODULES += otvalid
+AUX_MODULES += otvalid
# Auxiliary PostScript driver component to share common code.
#

View File

@@ -0,0 +1,147 @@
{
lib,
stdenv,
fetchurl,
buildPackages,
pkgsHostHost,
pkg-config,
which,
makeWrapper,
zlib,
bzip2,
brotli,
libpng,
gnumake,
glib,
# FreeType supports LCD filtering (colloquially referred to as sub-pixel rendering).
# LCD filtering is also known as ClearType and covered by several Microsoft patents.
# This option allows it to be disabled. See http://www.freetype.org/patents.html.
useEncumberedCode ? true,
# for passthru.tests
cairo,
fontforge,
ghostscript,
graphicsmagick,
gtk3,
harfbuzz,
imagemagick,
pango,
poppler,
python3,
qt5,
texmacs,
ttfautohint,
testers,
__flattenIncludeHackHook,
}:
stdenv.mkDerivation (finalAttrs: {
pname = "freetype";
version = "2.13.3";
src =
let
inherit (finalAttrs) pname version;
in
fetchurl {
url = "mirror://savannah/${pname}/${pname}-${version}.tar.xz";
sha256 = "sha256-BVA1BmbUJ8dNrrhdWse7NTrLpfdpVjlZlTEanG8GMok=";
};
propagatedBuildInputs = [
zlib
bzip2
brotli
libpng
]; # needed when linking against freetype
# dependence on harfbuzz is looser than the reverse dependence
nativeBuildInputs = [
pkg-config
which
__flattenIncludeHackHook
]
++ lib.optional (!stdenv.hostPlatform.isWindows) makeWrapper
# FreeType requires GNU Make, which is not part of stdenv on FreeBSD.
++ lib.optional (!stdenv.hostPlatform.isLinux) gnumake;
patches = [
./enable-table-validation.patch
]
++ lib.optional useEncumberedCode ./enable-subpixel-rendering.patch;
outputs = [
"out"
"dev"
];
configureFlags = [
"--bindir=$(dev)/bin"
"--enable-freetype-config"
];
# native compiler to generate building tool
CC_BUILD = "${buildPackages.stdenv.cc}/bin/cc";
# The asm for armel is written with the 'asm' keyword.
CFLAGS =
lib.optionalString stdenv.hostPlatform.isAarch32 "-std=gnu99"
+ lib.optionalString stdenv.hostPlatform.is32bit " -D_FILE_OFFSET_BITS=64";
enableParallelBuilding = true;
doCheck = true;
# pkgsCross.mingwW64.pkg-config doesn't build
# makeWrapper doesn't cross-compile to windows #120726
postInstall = ''
substituteInPlace $dev/bin/freetype-config \
--replace ${buildPackages.pkg-config} ${pkgsHostHost.pkg-config}
''
+ lib.optionalString (!stdenv.hostPlatform.isMinGW) ''
wrapProgram "$dev/bin/freetype-config" \
--set PKG_CONFIG_PATH "$PKG_CONFIG_PATH:$dev/lib/pkgconfig"
'';
passthru.tests = {
inherit
cairo
fontforge
ghostscript
graphicsmagick
gtk3
harfbuzz
imagemagick
pango
poppler
texmacs
ttfautohint
;
inherit (python3.pkgs) freetype-py;
inherit (qt5) qtbase;
pkg-config = testers.testMetaPkgConfig finalAttrs.finalPackage;
};
meta = with lib; {
description = "Font rendering engine";
mainProgram = "freetype-config";
longDescription = ''
FreeType is a portable and efficient library for rendering fonts. It
supports TrueType, Type 1, CFF fonts, and WOFF, PCF, FNT, BDF and PFR
fonts. It has a bytecode interpreter and has an automatic hinter called
autofit which can be used instead of hinting instructions included in
fonts.
'';
homepage = "https://www.freetype.org/";
changelog = "https://gitlab.freedesktop.org/freetype/freetype/-/raw/VER-${
builtins.replaceStrings [ "." ] [ "-" ] finalAttrs.version
}/docs/CHANGES";
license = licenses.gpl2Plus; # or the FreeType License (BSD + advertising clause)
platforms = platforms.all;
pkgConfigModules = [ "freetype2" ];
maintainers = with maintainers; [ ttuegel ];
};
})

View File

@@ -0,0 +1,76 @@
{
lib,
stdenv,
fetchFromGitHub,
pkg-config,
freetype,
fluidsynth,
SDL,
SDL_gfx,
SDL_ttf,
liblo,
libxml2,
alsa-lib,
libjack2,
libvorbis,
libSM,
libsndfile,
libogg,
libX11,
nettle,
}:
stdenv.mkDerivation (finalAttrs: {
pname = "freewheeling";
version = "0.6.6";
src = fetchFromGitHub {
owner = "free-wheeling";
repo = "freewheeling";
tag = "v${finalAttrs.version}";
hash = "sha256-xEZBE/7nUvK2hruqP6QQzlsIDmuniPZg7JEJkCEvzvU=";
};
nativeBuildInputs = [ pkg-config ];
buildInputs = [
freetype
fluidsynth
SDL
SDL_gfx
SDL_ttf
liblo
libxml2
libjack2
alsa-lib
libvorbis
libsndfile
libogg
libSM
libX11
nettle
];
env.NIX_CFLAGS_COMPILE = "-I${lib.getDev libxml2}/include/libxml2";
meta = {
description = "Live looping instrument with JACK and MIDI support";
longDescription = ''
Freewheeling allows us to build repetitive grooves
by sampling and directing loops from within spirited improvisation.
It works because, down to the core, it's built around
improv. We leave mice and menus, and dive into our own process
of making sound.
Freewheeling runs under macOS and Linux, and is open source
software, released under the GNU GPL license.
'';
homepage = "https://freewheeling.sourceforge.net";
license = lib.licenses.gpl2;
maintainers = [ lib.maintainers.sepi ];
platforms = lib.platforms.linux;
mainProgram = "fweelin";
};
})

View File

@@ -0,0 +1,46 @@
{
lib,
stdenv,
fetchurl,
validatePkgConfig,
expat,
minizip,
zlib,
libiconv,
}:
stdenv.mkDerivation rec {
pname = "freexl";
version = "2.0.0";
src = fetchurl {
url = "https://www.gaia-gis.it/gaia-sins/freexl-${version}.tar.gz";
hash = "sha256-F2cF8d5Yq3we679cbeRqt2/Ni4VlCNvSj1ZI98bhp/A=";
};
nativeBuildInputs = [ validatePkgConfig ];
buildInputs = [
expat
minizip
zlib
]
++ lib.optional stdenv.hostPlatform.isDarwin libiconv;
enableParallelBuilding = true;
doCheck = true;
meta = with lib; {
description = "Library to extract valid data from within an Excel (.xls) spreadsheet";
homepage = "https://www.gaia-gis.it/fossil/freexl";
# They allow any of these
license = with licenses; [
gpl2Plus
lgpl21Plus
mpl11
];
platforms = platforms.unix;
maintainers = with maintainers; [ sikmir ];
};
}

View File

@@ -0,0 +1,37 @@
{
lib,
stdenv,
buildGoModule,
fetchFromGitHub,
}:
buildGoModule rec {
pname = "freeze";
version = "1.3";
src = fetchFromGitHub {
owner = "optiv";
repo = "Freeze";
rev = "v${version}";
hash = "sha256-BE5MvCU+NfEccauOdWNty/FwMiWwLttPh7eE9+UzEMY=";
};
vendorHash = "sha256-R8kdFweMhAUjJ8zJ7HdF5+/vllbNmARdhU4hOw4etZo=";
ldflags = [
"-s"
"-w"
];
postInstall = lib.optionalString (!stdenv.hostPlatform.isDarwin) ''
mv $out/bin/Freeze $out/bin/freeze
'';
meta = with lib; {
description = "Payload toolkit for bypassing EDRs";
mainProgram = "freeze";
homepage = "https://github.com/optiv/Freeze";
license = licenses.mit;
maintainers = with maintainers; [ fab ];
};
}

View File

@@ -0,0 +1,27 @@
{
lib,
buildGoModule,
fetchFromGitHub,
}:
buildGoModule rec {
pname = "frei";
version = "0.4.0";
src = fetchFromGitHub {
owner = "alexcoder04";
repo = "frei";
rev = "v${version}";
sha256 = "sha256-QVoRiqQt4DJK07YcCPplxigpgIqjDeQVYyDK/KQ7gbo=";
};
vendorHash = null;
meta = with lib; {
description = "Modern replacement for free";
homepage = "https://github.com/alexcoder04/frei";
license = licenses.gpl3Only;
maintainers = with maintainers; [ infinidoge ];
mainProgram = "frei";
};
}

View File

@@ -0,0 +1,51 @@
{
lib,
config,
stdenv,
fetchFromGitHub,
cairo,
cmake,
opencv,
pkg-config,
cudaSupport ? config.cudaSupport,
cudaPackages,
}:
stdenv.mkDerivation rec {
pname = "frei0r-plugins";
version = "2.4.0";
src = fetchFromGitHub {
owner = "dyne";
repo = "frei0r";
rev = "v${version}";
hash = "sha256-95d1aXfCq4mPccY8VKmO7jkX57li6OVSwtfIf9459n4=";
};
nativeBuildInputs = [
cmake
pkg-config
];
buildInputs = [
cairo
opencv
]
++ lib.optionals cudaSupport [
cudaPackages.cuda_cudart
cudaPackages.cuda_nvcc
];
postInstall = lib.optionalString stdenv.hostPlatform.isDarwin ''
for f in $out/lib/frei0r-1/*.so* ; do
ln -s $f "''${f%.*}.dylib"
done
'';
meta = with lib; {
homepage = "https://frei0r.dyne.org";
description = "Minimalist, cross-platform, shared video plugins";
license = licenses.gpl2Plus;
maintainers = [ ];
platforms = platforms.unix;
};
}

View File

@@ -0,0 +1,30 @@
{
lib,
rustPlatform,
fetchCrate,
}:
rustPlatform.buildRustPackage rec {
pname = "french-numbers";
version = "1.2.0";
src = fetchCrate {
inherit pname version;
hash = "sha256-6mcqT0RZddHlzjyZzx0JGTfCRcQ2UQ3Qlmk0VVNzsnI=";
};
cargoHash = "sha256-HtgJsvl+BkvTapGxi7B/0QMEUolOw4gGndj4/9w7Z4Y=";
cargoBuildFlags = [ "--features=cli" ];
meta = with lib; {
description = "Represent numbers in French language";
homepage = "https://github.com/evenfurther/french-numbers";
license = with licenses; [
asl20 # or
mit
];
mainProgram = "french-numbers";
maintainers = with maintainers; [ samueltardieu ];
};
}

View File

@@ -0,0 +1,75 @@
{
lib,
stdenv,
fetchFromGitHub,
fetchpatch,
qt5,
}:
stdenv.mkDerivation (finalAttrs: {
pname = "frequest";
version = "1.2a";
srcs = [
(fetchFromGitHub {
owner = "fabiobento512";
name = "frequest";
repo = "FRequest";
rev = "v${finalAttrs.version}";
hash = "sha256-fdn3MK5GWBOhJjpMtRaytO9EsVzz6KJknDhqWtAyXCc=";
})
# The application depends on hard-coded relative paths to ../CommonLibs and ../CommonUtils.
# See https://github.com/fabiobento512/FRequest/wiki/Building-FRequest for more info.
# Upstream provides no tags for these dependencies, use latest commit on their `master` branch.
# Changing the name of these srcs will break the build.
(fetchFromGitHub {
owner = "fabiobento512";
name = "CommonLibs";
repo = "CommonLibs";
rev = "d3906931bb06ddf4194ff711a59e1dcff80fa82f";
hash = "sha256-iLJJ95yJ+VjNPuk8fNEDvYBI0db0rcfJF12a9azGv1Y=";
})
(fetchFromGitHub {
owner = "fabiobento512";
name = "CommonUtils";
repo = "CommonUtils";
rev = "53970984f6538d78350be1b9426032bcb5bcf818";
hash = "sha256-nRv9DriSOuAiWhy+KkOVNEz5oSgNNNJZqk8sNwgbx8U=";
})
];
sourceRoot = "frequest";
patches = [
# This fix has been merged upstream into the develop branch, but it was not released yet. It can be removed once a new version is released.
(fetchpatch {
name = "Change-desktop-icon-name";
url = "https://github.com/fabiobento512/FRequest/commit/22e98970b78f6d9ca0037c39c2492e93e836abff.patch";
hash = "sha256-YoI68SPMHD4bAgjWpn6eSda3Oon8bevbiwTx1JFFm40=";
})
];
buildInputs = [
qt5.qtbase
];
nativeBuildInputs = [
qt5.wrapQtAppsHook
qt5.qmake
];
# Without this, nothing gets installed in $out.
postInstall = ''
install -D FRequest $out/bin/FRequest
install -D LinuxAppImageDeployment/frequest.desktop $out/share/applications/frequest.desktop
install -D LinuxAppImageDeployment/frequest_icon.png $out/share/icons/hicolor/128x128/apps/frequest_icon.png
'';
meta = {
description = "Fast, lightweight and opensource desktop application to make HTTP(s) requests";
homepage = "https://fabiobento512.github.io/FRequest";
license = lib.licenses.gpl3Plus;
maintainers = with lib.maintainers; [ eliandoran ];
platforms = lib.platforms.linux;
mainProgram = "frequest";
};
})

View File

@@ -0,0 +1,69 @@
{
lib,
stdenv,
fetchFromGitHub,
python3Packages,
lilypond,
}:
python3Packages.buildPythonApplication rec {
pname = "frescobaldi";
version = "3.3.0";
format = "setuptools";
src = fetchFromGitHub {
owner = "wbsoft";
repo = "frescobaldi";
tag = "v${version}";
sha256 = "sha256-Q6ruthNcpjLlYydUetkuTECiCIzu055bw40O8BPGq/A=";
};
propagatedBuildInputs = with python3Packages; [
qpageview
lilypond
pygame
python-ly
sip4
pyqt5
poppler-qt5
pyqtwebengine
];
nativeBuildInputs = [ python3Packages.pyqtwebengine.wrapQtAppsHook ];
# Needed because source is fetched from git
preBuild = ''
make -C i18n
make -C linux
'';
# no tests in shipped with upstream
doCheck = false;
dontWrapQtApps = true;
makeWrapperArgs = [
"\${qtWrapperArgs[@]}"
];
meta = with lib; {
homepage = "https://frescobaldi.org/";
description = "LilyPond sheet music text editor";
longDescription = ''
Powerful text editor with syntax highlighting and automatic completion,
Music view with advanced Point & Click, Midi player to proof-listen
LilyPond-generated MIDI files, Midi capturing to enter music,
Powerful Score Wizard to quickly setup a music score, Snippet Manager
to store and apply text snippets, templates or scripts, Use multiple
versions of LilyPond, automatically selects the correct version, Built-in
LilyPond documentation browser and built-in User Guide, Smart
layout-control functions like coloring specific objects in the PDF,
MusicXML import, Modern user iterface with configurable colors,
fonts and keyboard shortcuts
'';
license = licenses.gpl2Plus;
maintainers = with maintainers; [ sepi ];
platforms = platforms.all;
broken = stdenv.hostPlatform.isDarwin; # never built on Hydra https://hydra.nixos.org/job/nixpkgs/trunk/frescobaldi.x86_64-darwin
mainProgram = "frescobaldi";
};
}

View File

@@ -0,0 +1,30 @@
{
lib,
rustPlatform,
fetchFromGitHub,
}:
rustPlatform.buildRustPackage rec {
pname = "freshfetch";
version = "0.2.0";
src = fetchFromGitHub {
owner = "k4rakara";
repo = "freshfetch";
rev = "v${version}";
sha256 = "1l9zngr5l12g71j85iyph4jjri3crxc2pi9q0gczrrzvs03439mn";
};
cargoHash = "sha256-LKltHVig33zUSWoRgCb1BgeKiJsDnlYEuPfQfrnhafI=";
# freshfetch depends on rust nightly features
RUSTC_BOOTSTRAP = 1;
meta = with lib; {
description = "Fresh take on neofetch";
homepage = "https://github.com/k4rakara/freshfetch";
license = licenses.mit;
maintainers = with maintainers; [ figsoda ];
mainProgram = "freshfetch";
};
}

View File

@@ -0,0 +1,74 @@
{
lib,
blueprint-compiler,
cargo,
desktop-file-utils,
fetchFromGitHub,
glib,
gtk4,
libadwaita,
meson,
ninja,
nix-update-script,
pkg-config,
rustPlatform,
rustc,
stdenv,
wrapGAppsHook4,
}:
stdenv.mkDerivation (finalAttrs: {
pname = "fretboard";
version = "9.1";
src = fetchFromGitHub {
owner = "bragefuglseth";
repo = "fretboard";
rev = "v${finalAttrs.version}";
hash = "sha256-LTUZPOecX1OiLcfdiY/P2ffq91QcnFjW6knM9H/Z+Lc=";
};
cargoDeps = rustPlatform.fetchCargoVendor {
inherit (finalAttrs) pname version src;
hash = "sha256-Gl78z9FR/sB14uFDLKgnfN4B5yOi6A6MH64gDXcLiWA=";
};
nativeBuildInputs = [
blueprint-compiler
cargo
desktop-file-utils
meson
ninja
pkg-config
rustPlatform.cargoSetupHook
rustc
wrapGAppsHook4
];
buildInputs = [
glib
gtk4
libadwaita
];
env.NIX_CFLAGS_COMPILE = toString (
lib.optionals stdenv.cc.isClang [
"-Wno-error=incompatible-function-pointer-types"
]
);
passthru = {
updateScript = nix-update-script { };
};
meta = {
changelog = "https://github.com/bragefuglseth/fretboard/releases/tag/v${finalAttrs.version}";
description = "Look up guitar chords";
homepage = "https://apps.gnome.org/Fretboard/";
license = lib.licenses.gpl3Plus;
mainProgram = "fretboard";
teams = [ lib.teams.gnome-circle ];
platforms = lib.platforms.unix;
broken = stdenv.hostPlatform.isDarwin;
};
})

View File

@@ -0,0 +1,62 @@
{
lib,
stdenv,
buildPackages,
fetchurl,
meson,
ninja,
pkg-config,
fixDarwinDylibNames,
python3,
testers,
}:
stdenv.mkDerivation (finalAttrs: {
pname = "fribidi";
version = "1.0.16";
outputs = [
"out"
"dev"
"devdoc"
];
# NOTE: Only URL tarball has "Have pre-generated man pages: true", which works-around upstream usage of some rare ancient `c2man` fossil application.
src = fetchurl {
url =
with finalAttrs;
"https://github.com/fribidi/fribidi/releases/download/v${version}/${pname}-${version}.tar.xz";
sha256 = "sha256-GxzeWyNdQEeekb4vDoijCeMhTIq0cOyKJ0TYKlqeoFw=";
};
postPatch = ''
patchShebangs test
'';
nativeBuildInputs = [
meson
ninja
pkg-config
]
++ lib.optional stdenv.hostPlatform.isDarwin fixDarwinDylibNames;
depsBuildBuild = [ buildPackages.stdenv.cc ];
doCheck = true;
nativeCheckInputs = [ python3 ];
passthru.tests = {
pkg-config = testers.hasPkgConfigModules {
package = finalAttrs.finalPackage;
};
};
meta = with lib; {
homepage = "https://github.com/fribidi/fribidi";
description = "GNU implementation of the Unicode Bidirectional Algorithm (bidi)";
mainProgram = "fribidi";
license = licenses.lgpl21;
platforms = platforms.unix;
pkgConfigModules = [ "fribidi" ];
};
})

View File

@@ -0,0 +1,56 @@
{
lib,
stdenv,
fetchFromGitHub,
sbcl,
libX11,
libXpm,
libICE,
libSM,
libXt,
libXau,
libXdmcp,
}:
stdenv.mkDerivation rec {
pname = "fricas";
version = "1.3.12";
src = fetchFromGitHub {
owner = "fricas";
repo = "fricas";
rev = version;
sha256 = "sha256-GUGJR65K1bPC0D36l4Yyj3GOsWtUrSKLu6JnlfjHzDc=";
};
buildInputs = [
sbcl
libX11
libXpm
libICE
libSM
libXt
libXau
libXdmcp
];
# Remove when updating to next version
configurePhase = ''
runHook preConfigure
./configure --prefix=$out --with-lisp='sbcl --dynamic-space-size 3072'
runHook postConfigure
'';
dontStrip = true;
meta = {
homepage = "https://fricas.github.io";
description = "Advanced computer algebra system";
license = lib.licenses.bsd3;
platforms = lib.platforms.linux;
maintainers = [ lib.maintainers.sprock ];
};
}

View File

@@ -0,0 +1,43 @@
{
lib,
fetchPypi,
python3Packages,
}:
python3Packages.buildPythonApplication rec {
pname = "frida-tools";
version = "14.4.5";
format = "pyproject";
src = fetchPypi {
inherit pname version;
hash = "sha256-sId91KB2qLasJHsfrS6Nfqctn0kCPS6ieNwtfheai8M=";
};
build-system = with python3Packages; [
setuptools
];
pythonRelaxDeps = [
"frida"
"websockets"
];
dependencies = with python3Packages; [
pygments
prompt-toolkit
colorama
frida-python
websockets
];
meta = {
description = "Dynamic instrumentation toolkit for developers, reverse-engineers, and security researchers (client tools)";
homepage = "https://www.frida.re/";
maintainers = with lib.maintainers; [ s1341 ];
license = with lib.licenses; [
lgpl2Plus
wxWindowsException31
];
};
}

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