lmms: 1.2.2 -> 1.2.2-unstable-2026-04-21

LMMS 1.2.2 is 6 years old and the software has undergone many changes
since then, unfortunately however, no branches or tags are being made as
the software progresses so we stay as close to git as possible.

Co-authored-by: Alexandre Cavalheiro S. Tiago da Silva <contact@thewizard.link>
This commit is contained in:
jaredmontoya
2026-04-23 10:18:17 +02:00
co-authored by Alexandre Cavalheiro S. Tiago da Silva
parent d44d5d5252
commit a37c00f048
6 changed files with 285 additions and 105 deletions
-99
View File
@@ -1,99 +0,0 @@
{
lib,
stdenv,
fetchFromGitHub,
fetchpatch,
cmake,
pkg-config,
wrapQtAppsHook,
alsa-lib ? null,
carla ? null,
fftwFloat,
fltk_1_3,
fluidsynth ? null,
lame ? null,
libgig ? null,
libjack2 ? null,
libpulseaudio ? null,
libsamplerate,
libsoundio ? null,
libsndfile,
libvorbis ? null,
portaudio ? null,
qtbase,
qtx11extras,
qttools,
SDL ? null,
}:
stdenv.mkDerivation (finalAttrs: {
pname = "lmms";
version = "1.2.2";
src = fetchFromGitHub {
owner = "LMMS";
repo = "lmms";
rev = "v${finalAttrs.version}";
sha256 = "006hwv1pbh3y5whsxkjk20hsbgwkzr4dawz43afq1gil69y7xpda";
fetchSubmodules = true;
};
nativeBuildInputs = [
cmake
qttools
pkg-config
wrapQtAppsHook
];
buildInputs = [
carla
alsa-lib
fftwFloat
fltk_1_3
fluidsynth
lame
libgig
libjack2
libpulseaudio
libsamplerate
libsndfile
libsoundio
libvorbis
portaudio
qtbase
qtx11extras
SDL # TODO: switch to SDL2 in the next version
];
patches = [
(fetchpatch {
url = "https://raw.githubusercontent.com/archlinux/svntogit-community/cf64acc45e3264c6923885867e2dbf8b7586a36b/trunk/lmms-carla-export.patch";
sha256 = "sha256-wlSewo93DYBN2PvrcV58dC9kpoo9Y587eCeya5OX+j4=";
})
];
prePatch = ''
# Update CMake minimum required version and policies
substituteInPlace CMakeLists.txt --replace 'CMAKE_MINIMUM_REQUIRED(VERSION 2.8.7)' 'CMAKE_MINIMUM_REQUIRED(VERSION 3.10)'
substituteInPlace CMakeLists.txt --replace 'CMAKE_POLICY(SET CMP0026 OLD)' 'CMAKE_POLICY(SET CMP0026 NEW)'
substituteInPlace CMakeLists.txt --replace 'CMAKE_POLICY(SET CMP0050 OLD)' 'CMAKE_POLICY(SET CMP0050 NEW)'
substituteInPlace CMakeLists.txt --replace 'GET_TARGET_PROPERTY(BIN2RES bin2res LOCATION)' 'SET(BIN2RES $<TARGET_FILE:bin2res>)'
'';
cmakeFlags = [
"-DWANT_QT5=ON"
]
++ lib.optionals (lib.versionOlder finalAttrs.version "11.4") [
# Fix the build with CMake 4.
"-DCMAKE_POLICY_VERSION_MINIMUM=3.5"
];
meta = {
description = "DAW similar to FL Studio (music production software)";
mainProgram = "lmms";
homepage = "https://lmms.io";
license = lib.licenses.gpl2Plus;
platforms = lib.platforms.linux;
maintainers = [ ];
};
})
+8
View File
@@ -0,0 +1,8 @@
{ lmms }:
lmms.override {
withSoundio = true;
withPortAudio = true;
withSndio = true;
withWine = true;
}
@@ -0,0 +1,38 @@
From 9d05021c4e9370f7e1b8c7595a18ae2b98895a60 Mon Sep 17 00:00:00 2001
From: "Alexandre Cavalheiro S. Tiago da Silva" <contact@thewizard.link>
Date: Tue, 28 Jan 2025 18:36:47 -0300
Subject: [PATCH] fix!: add unique string to FindWine for replacement in nixos
---
cmake/modules/FindWine.cmake | 8 ++++++++
1 file changed, 8 insertions(+)
diff --git a/cmake/modules/FindWine.cmake b/cmake/modules/FindWine.cmake
index eeef8d9c2..c04ee4a35 100644
--- a/cmake/modules/FindWine.cmake
+++ b/cmake/modules/FindWine.cmake
@@ -13,6 +13,13 @@
# WINE_64_FLAGS - 64-bit linker flags
#
+set(WINE_INCLUDE_DIR @WINE_LOCATION@/include)
+set(WINE_BUILD @WINE_LOCATION@/bin/winebuild)
+set(WINE_CXX @WINE_LOCATION@/bin/wineg++)
+set(WINE_GCC @WINE_LOCATION@/bin/winegcc)
+set(WINE_32_LIBRARY_DIRS @WINE_LOCATION@/lib/wine/i386-unix)
+set(WINE_64_LIBRARY_DIRS @WINE_LOCATION@/lib/wine/x86_64-unix)
+
MACRO(_findwine_find_flags output expression result)
STRING(REPLACE " " ";" WINEBUILD_FLAGS "${output}")
FOREACH(FLAG ${WINEBUILD_FLAGS})
@@ -32,6 +39,7 @@ ENDMACRO()
# Prefer newest wine first
list(APPEND WINE_LOCATIONS
+ @WINE_LOCATION@
/opt/wine-staging
/opt/wine-devel
/opt/wine-stable
--
2.47.1
@@ -0,0 +1,49 @@
Use modern CMake imported target for libgig to ensure proper RPATH propagation.
The old-style link_directories()/link_libraries() pattern does not propagate
library paths to the install RPATH, causing libgig.so to not be found at
runtime when it is installed in a non-standard directory (e.g. lib/libgig/).
Using IMPORTED_TARGET with pkg_check_modules creates a PkgConfig::GIG target
that carries include dirs, library paths, and link flags, and CMake correctly
propagates these to the install RPATH via target_link_libraries().
Also set CMAKE_INSTALL_RPATH_USE_LINK_PATH in the GigPlayer scope, since the
upstream code only sets it in src/CMakeLists.txt which does not apply to the
sibling plugins/ directory.
diff -ruN a/CMakeLists.txt b/CMakeLists.txt
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -550,7 +550,7 @@
# check for libgig
If(WANT_GIG)
- PKG_CHECK_MODULES(GIG gig)
+ PKG_CHECK_MODULES(GIG IMPORTED_TARGET gig)
IF(GIG_FOUND)
SET(LMMS_HAVE_GIG TRUE)
SET(STATUS_GIG "OK")
diff -ruN a/plugins/GigPlayer/CMakeLists.txt b/plugins/GigPlayer/CMakeLists.txt
--- a/plugins/GigPlayer/CMakeLists.txt
+++ b/plugins/GigPlayer/CMakeLists.txt
@@ -1,17 +1,16 @@
if(LMMS_HAVE_GIG)
INCLUDE(BuildPlugin)
- include_directories(SYSTEM ${GIG_INCLUDE_DIRS})
SET(CMAKE_AUTOUIC ON)
+ SET(CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE)
# Required for not crashing loading files with libgig
add_compile_options("-fexceptions")
- link_directories(${GIG_LIBRARY_DIRS})
- link_libraries(${GIG_LIBRARIES})
build_plugin(gigplayer
GigPlayer.cpp GigPlayer.h PatchesDialog.cpp PatchesDialog.h PatchesDialog.ui
MOCFILES GigPlayer.h PatchesDialog.h
EMBEDDED_RESOURCES "${CMAKE_CURRENT_SOURCE_DIR}/*.png"
)
+ target_link_libraries(gigplayer PkgConfig::GIG)
target_link_libraries(gigplayer SampleRate::samplerate)
endif(LMMS_HAVE_GIG)
+190
View File
@@ -0,0 +1,190 @@
{
lib,
stdenv,
fetchFromGitHub,
replaceVars,
unstableGitUpdater,
cmake,
pkg-config,
alsa-lib,
carla,
fftwFloat,
fltk,
fluidsynth,
glibc_multi,
lame,
libgig,
libjack2,
libogg,
libpulseaudio,
libsForQt5,
libsamplerate,
libsoundio,
libsndfile,
libvorbis,
lilv,
lv2,
perl5,
perl5Packages,
portaudio,
qt5,
sndio,
SDL2,
suil,
wineWow64Packages,
withALSA ? true,
withPulseAudio ? true,
withSoundio ? false,
withPortAudio ? false,
withSndio ? false,
withJACK ? true,
withSDL ? true,
withOggVorbis ? true,
withMP3Lame ? true,
withSoundFont ? true,
withZyn ? true,
withSWH ? true,
withSID ? true,
withGIG ? true,
withLV2 ? true,
withVST ? true,
withCarla ? true,
withWine ? false,
}:
let
winePackages =
if lib.isDerivation wineWow64Packages then wineWow64Packages else wineWow64Packages.minimal;
in
stdenv.mkDerivation (finalAttrs: {
pname = "lmms";
version = "1.2.2-unstable-2026-04-21";
src = fetchFromGitHub {
owner = "LMMS";
repo = "lmms";
rev = "fc3dfda961a7923326d2b0d5747e5d8fd941af98";
hash = "sha256-q8w1CgM2QnkCIOUJlv8r+2zMKl+brbNKoAkhDJEhaN0=";
fetchSubmodules = true;
};
strictDeps = true;
__structuredAttrs = true;
nativeBuildInputs = [
cmake
libsForQt5.qt5.qttools
pkg-config
qt5.wrapQtAppsHook
];
buildInputs = [
fftwFloat
libsForQt5.qt5.qtbase
libsForQt5.qt5.qtsvg
libsForQt5.qt5.qtx11extras
libsamplerate
libsndfile
]
++ lib.optionals withALSA [
alsa-lib
]
++ lib.optionals withPulseAudio [
libpulseaudio
]
++ lib.optionals withSoundio [
libsoundio
]
++ lib.optionals withPortAudio [
portaudio
]
++ lib.optionals withSndio [
sndio
]
++ lib.optionals withJACK [
libjack2
]
++ lib.optionals withSDL [
SDL2
]
++ lib.optionals withOggVorbis [
libogg
libvorbis
]
++ lib.optionals withMP3Lame [
lame
]
++ lib.optionals withSoundFont [
fluidsynth
]
++ lib.optionals withZyn [
fltk
]
++ lib.optionals (withSWH || withSID) [
perl5
perl5Packages.ListMoreUtils
perl5Packages.XMLParser
]
++ lib.optionals withGIG [
libgig
]
++ lib.optionals withLV2 [
lilv
lv2
suil
]
++ lib.optionals withCarla [
carla
]
++ lib.optionals withWine [
glibc_multi
winePackages
];
patches = [
# Use modern CMake imported target for libgig so that its non-standard
# library path (lib/libgig/) is properly propagated to the install RPATH.
./0002-fix-gigplayer-linking.patch
]
++ lib.optionals withWine [
(replaceVars ./0001-fix-add-unique-string-to-FindWine-for-replacement-in.patch {
WINE_LOCATION = winePackages;
})
];
cmakeFlags = [
# Fix the build with CMake 4.
"-DCMAKE_POLICY_VERSION_MINIMUM=3.5"
(lib.cmakeBool "WANT_ALSA" withALSA)
(lib.cmakeBool "WANT_PULSEAUDIO" withPulseAudio)
(lib.cmakeBool "WANT_SOUNDIO" withSoundio)
(lib.cmakeBool "WANT_PORTAUDIO" withPortAudio)
(lib.cmakeBool "WANT_SNDIO" withSndio)
(lib.cmakeBool "WANT_JACK" withJACK)
(lib.cmakeBool "WANT_WEAKJACK" withJACK)
(lib.cmakeBool "WANT_SDL" withSDL)
(lib.cmakeBool "WANT_OGGVORBIS" withOggVorbis)
(lib.cmakeBool "WANT_MP3LAME" withMP3Lame)
(lib.cmakeBool "WANT_SF2" withSoundFont)
(lib.cmakeBool "WANT_GIG" withGIG)
(lib.cmakeBool "WANT_SID" withSID)
(lib.cmakeBool "WANT_SWH" withSWH)
(lib.cmakeBool "WANT_LV2" withLV2)
(lib.cmakeBool "WANT_VST" withVST)
(lib.cmakeBool "WANT_CARLA" withCarla)
];
passthru.updateScript = unstableGitUpdater { };
meta = {
description = "DAW similar to FL Studio (music production software)";
mainProgram = "lmms";
homepage = "https://lmms.io";
license = lib.licenses.gpl2Plus;
platforms = lib.platforms.linux;
maintainers = with lib.maintainers; [
wizardlink
jaredmontoya
];
};
})
-6
View File
@@ -9885,12 +9885,6 @@ with pkgs;
withFonts = true;
};
lmms = libsForQt5.callPackage ../applications/audio/lmms {
lame = null;
libsoundio = null;
portaudio = null;
};
luminanceHDR = callPackage ../applications/graphics/luminance-hdr {
openexr = openexr_2;
};