Merge pull request #185858 from aidalgol/soundux

soundux: init at 0.2.7
This commit is contained in:
Sandro
2022-12-06 10:16:48 +01:00
committed by GitHub
5 changed files with 245 additions and 0 deletions
+142
View File
@@ -0,0 +1,142 @@
{ lib
, stdenv
, fetchFromGitHub
, cmake
, pkg-config
, makeBinaryWrapper
, pipewire
, libpulseaudio
, libappindicator
, libstartup_notification
, openssl
, libwnck
, pcre
, util-linux
, libselinux
, libsepol
, libthai
, libdatrie
, xorg
, libxkbcommon
, libepoxy
, dbus
, at-spi2-core
, nlohmann_json
, fancypp
, httplib
, semver-cpp
, webkitgtk
, yt-dlp
, ffmpeg
, lsb-release
}:
stdenv.mkDerivation rec {
pname = "soundux";
version = "0.2.7";
src = fetchFromGitHub {
owner = "Soundux";
repo = "Soundux";
rev = version;
sha256 = "sha256-aSCsg6nJt6F+6O7UeXnvYva0vllTfsxK/cjaeOhObZY=";
fetchSubmodules = true;
};
nativeBuildInputs = [
cmake
pkg-config
makeBinaryWrapper
];
buildInputs = [
pipewire
libpulseaudio
libappindicator
openssl
libwnck
pcre
util-linux
libselinux
libsepol
libthai
libdatrie
xorg.libXdmcp
xorg.libXtst
xorg.libXres
libxkbcommon
libepoxy
dbus
at-spi2-core
nlohmann_json
fancypp
httplib
semver-cpp
libstartup_notification
webkitgtk
yt-dlp
ffmpeg
];
postPatch = ''
# cannot be overwritten with variables
substituteInPlace CMakeLists.txt \
--replace "set(CMAKE_INSTALL_PREFIX \"/opt/soundux\" CACHE PATH \"Install path prefix, prepended onto install directories.\" FORCE)" "" \
--replace "/usr/share" "$out/usr/share"
substituteInPlace src/ui/impl/webview/webview.cpp \
--replace "/usr/share/pixmaps/soundux.png" "$out/share/pixmaps/soundux.png"
'';
# We need to append /opt to our CMAKE_INSTALL_PREFIX
dontAddPrefix = true;
preConfigure = ''
# This needs to be set in preConfigure to access the $prefix variable
export cmakeFlags="-DCMAKE_INSTALL_PREFIX=$prefix/opt $cmakeFlags"
# Replace some fetched submodules with symlinks nix packages.
rm -rf \
lib/json \
lib/fancypp \
lib/lib-httplib \
lib/semver
ln -s ${nlohmann_json} lib/json
ln -s ${fancypp} lib/fancypp
ln -s ${httplib} lib/lib-httplib
ln -s ${semver-cpp} lib/semver
'';
# Somehow some of the install destination paths in the build system still
# gets transformed to point to /var/empty/share, even though they are at least
# relative to the nix output directory with our earlier patching.
postInstall = ''
mv "$out/var/empty/share" "$out"
rm -rf "$out/var"
mkdir "$out/bin"
ln -s "$out/opt/soundux" "$out/bin"
substituteInPlace "$out/share/applications/soundux.desktop" \
--replace "/opt/soundux/soundux" "soundux"
'';
postFixup = let
rpaths = lib.makeLibraryPath [libwnck pipewire libpulseaudio];
in ''
# Wnck, PipeWire, and PulseAudio are dlopen-ed by Soundux, so they do
# not end up on the RPATH during the build process.
patchelf --add-rpath "${rpaths}" "$out/opt/soundux-${version}"
# Work around upstream bug https://github.com/Soundux/Soundux/issues/435
wrapProgram "$out/bin/soundux" \
--set WEBKIT_DISABLE_COMPOSITING_MODE 1 \
--prefix PATH : ${lib.makeBinPath [ yt-dlp ffmpeg lsb-release ]} \
'';
meta = with lib; {
description = "A cross-platform soundboard.";
homepage = "https://soundux.rocks/";
license = licenses.gpl3Plus;
platforms = platforms.linux;
maintainers = with maintainers; [ aidalgol ];
};
}
@@ -0,0 +1,31 @@
{ lib
, stdenvNoCC
, fetchFromGitHub
}:
stdenvNoCC.mkDerivation rec {
pname = "fancypp";
version = "unstable-2021-04-08";
src = fetchFromGitHub {
owner = "Curve";
repo = "fancypp";
rev = "ede7f712a08f7c66ff4a5590ad94a477c48850a5";
sha256 = "sha256-E2JsQnvrqrZFYo+xBJr7xDCoPnRQftqUjjBpZzFvIic=";
};
# Header-only library.
dontBuild = true;
installPhase = ''
mkdir "$out"
cp -r include "$out"
'';
meta = with lib; {
description = "Tiny C++ Library for terminal colors and more!";
homepage = "https://github.com/Curve/fancypp";
maintainers = with maintainers; [ aidalgol ];
license = licenses.mit;
};
}
@@ -0,0 +1,31 @@
{ lib
, stdenvNoCC
, fetchFromGitHub
}:
stdenvNoCC.mkDerivation rec {
pname = "httplib";
version = "0.11.1";
src = fetchFromGitHub {
owner = "yhirose";
repo = "cpp-httplib";
rev = "v${version}";
sha256 = "sha256-rsElqtoRz/sOXpAsfSJbMlwIKdaGJkSZfKHzB/wMhY8=";
};
# Header-only library.
dontBuild = true;
installPhase = ''
mkdir -p "$out/include"
cp -r httplib.h "$out/include"
'';
meta = with lib; {
description = "A C++ header-only HTTP/HTTPS server and client library";
homepage = "https://github.com/yhirose/cpp-httplib";
maintainers = with maintainers; [ aidalgol ];
license = licenses.mit;
};
}
@@ -0,0 +1,31 @@
{ lib
, stdenvNoCC
, fetchFromGitHub
}:
stdenvNoCC.mkDerivation rec {
pname = "semver-cpp";
version = "0.3.0";
src = fetchFromGitHub {
owner = "Neargye";
repo = "semver";
rev = "v${version}";
sha256 = "sha256-nRWmY/GJtSkPJIW7i7/eIr/YtfyvYhJVZBRIDXUC7xg=";
};
# Header-only library.
dontBuild = true;
installPhase = ''
mkdir "$out"
cp -r include "$out"
'';
meta = with lib; {
description = "Semantic Versioning for modern C++";
homepage = "https://github.com/Neargye/semver";
maintainers = with maintainers; [ aidalgol ];
license = licenses.mit;
};
}
+10
View File
@@ -18944,6 +18944,8 @@ with pkgs;
factor-lang-scope = callPackage ../development/compilers/factor-lang/scope.nix { };
factor-lang = factor-lang-scope.interpreter;
fancypp = callPackage ../development/libraries/fancypp { };
far2l = callPackage ../applications/misc/far2l {
stdenv = if stdenv.cc.isClang then llvmPackages.stdenv else stdenv;
inherit (darwin.apple_sdk.frameworks) IOKit Carbon Cocoa AudioToolbox OpenGL;
@@ -19248,6 +19250,8 @@ with pkgs;
graphinder = callPackage ../tools/security/graphinder { };
httplib = callPackage ../development/libraries/httplib { };
icon-lang = callPackage ../development/interpreters/icon-lang { };
libgit2 = callPackage ../development/libraries/libgit2 {
@@ -22470,6 +22474,8 @@ with pkgs;
seasocks = callPackage ../development/libraries/seasocks { };
semver-cpp = callPackage ../development/libraries/semver-cpp { };
serd = callPackage ../development/libraries/serd {};
serf = callPackage ../development/libraries/serf {
@@ -24216,6 +24222,10 @@ with pkgs;
boost = boost172;
};
soundux = callPackage ../applications/audio/soundux {
yt-dlp = yt-dlp.override { withAlias = true; };
};
tomcat_connectors = callPackage ../servers/http/apache-modules/tomcat-connectors { };
tomcat-native = callPackage ../servers/http/tomcat/tomcat-native.nix { };