Skip to content

Instantly share code, notes, and snippets.

@0xc1c4da
Last active May 25, 2023 17:01
Show Gist options
  • Save 0xc1c4da/dde33944696de119ab4d98177ab1c873 to your computer and use it in GitHub Desktop.
Save 0xc1c4da/dde33944696de119ab4d98177ab1c873 to your computer and use it in GitHub Desktop.
WIP Nix Package for Plugdata
{ lib, stdenv, cmake, pkg-config, fetchFromGitHub, ensureNewerSourcesForZipFilesHook,
xorg, freetype, alsa-lib, curl, webkitgtk, pcre, pcre2, freeglut,
util-linux, libselinux, libsepol, libthai, libdatrie, libxkbcommon, libepoxy,
libsoup, libsysprof-capture, sqlite, libpsl, python3 }:
# Test with
# nix-shell -E 'with import <nixpkgs> { }; callPackage ./default.nix { }'
# echo "src = $src" && cd $(mktemp -d) && unpackPhase && cd *
# mkdir build && cd build
# cmake -DENABLE_TESTING=0 -G"Unix Makefiles" ..
# cmake --build . --config Release
# ../Plugins/Standalone/plugdata
# Works!
# Build Issues
# nix-build -E 'with import <nixpkgs> {}; callPackage ./default.nix {}'
# JUCE Assertion failure in juce_Font.cpp:477
# JUCE Assertion failure in juce_Font.cpp:477
# JUCE Assertion failure in juce_File.cpp:977
# JUCE Assertion failure in juce_File.cpp:977
# JUCE Assertion failure in juce_File.cpp:977
# JUCE Assertion failure in juce_File.cpp:977
# JUCE Assertion failure in juce_TemporaryFile.cpp:114
# JUCE Assertion failure in juce_TemporaryFile.cpp:114
# JUCE Assertion failure in FileSystemWatcher.cxx:365
# JUCE Assertion failure in juce_TemporaryFile.cpp:114
# JUCE Assertion failure in juce_TemporaryFile.cpp:114
# JUCE Assertion failure in juce_TemporaryFile.cpp:114
# JUCE Assertion failure in juce_Thread.cpp:43
# Some issue creating files? They already exist and/or can't be created
# https://github.com/juce-framework/JUCE/blob/master/modules/juce_core/files/juce_File.cpp#L977
# https://github.com/juce-framework/JUCE/blob/master/modules/juce_core/files/juce_TemporaryFile.cpp#L114
# https://github.com/juce-framework/JUCE/blob/master/modules/juce_core/threads/juce_Thread.cpp#L43
# gcc7Stdenv / stdenv / ccacheStdenv
stdenv.mkDerivation rec {
name = "plugdata";
version = "0.7.1";
src = fetchFromGitHub {
owner = "plugdata-team";
repo = name;
rev = "v${version}";
sha256 = "sha256-156y/L2mNh/09UhsRk0etQyhr8K2Ry61SnFAKlXssLc=";
fetchSubmodules = true;
};
nativeBuildInputs = [ cmake pkg-config ensureNewerSourcesForZipFilesHook ];
buildInputs = [
xorg.libX11 xorg.libXrandr xorg.libXext xorg.libXinerama xorg.libXrender xorg.libXcursor xorg.libXdmcp xorg.libXtst xorg.libXcomposite
freetype alsa-lib curl webkitgtk pcre pcre2 freeglut
util-linux libselinux libsepol libthai libdatrie libxkbcommon libepoxy
libsoup libsysprof-capture sqlite libpsl
python3
];
configurePhase = ''
mkdir build && cd build
cmake -DENABLE_TESTING=0 -G"Unix Makefiles" ..
'';
buildPhase = ''
cmake --build . --config Release
'';
installPhase = ''
mkdir -p $out/bin && mkdir -p $out/lib/{vst3,lv2,clap}
mv ../Plugins/Standalone/* $out/bin
mv ../Plugins/VST3/* $out/lib/vst3/*
mv ../Plugins/LV2/* $out/lib/lv2/*
mv ../Plugins/CLAP/* $out/lib/clap/*
'';
meta = with lib; {
description = "plugdata is a free/open-source visual programming environment for audio experimentation, prototyping and education, based on pure-data.";
homepage = "https://plugdata.org";
license = licenses.gpl3Plus;
platforms = [ "x86_64-linux" ];
maintainers = with maintainers; [ ];
};
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment