Skip to content

lmms: 1.2.2 -> 0-unstable-2025-01-28#377643

Open
wizardlink wants to merge 1 commit intoNixOS:masterfrom
wizardlink:lmms
Open

lmms: 1.2.2 -> 0-unstable-2025-01-28#377643
wizardlink wants to merge 1 commit intoNixOS:masterfrom
wizardlink:lmms

Conversation

@wizardlink
Copy link
Copy Markdown
Member

@wizardlink wizardlink commented Jan 28, 2025

LMMS 1.2.2 is almost 5 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.

I am quite unsure about the wine dependency I have, it feels wrong to depend on it but I've only found wineWowPackages.minimal having the libraries and properly building 32-bit and 64-bit applications.

closes #297527

Added dependencies:

  • glibc_multi
  • SDL -> SDL2
  • perl540
  • perl540Packages.ListMoreUtils
  • perl540Packages.XMLParser
  • substitute
  • wineWowPackages.minimal
  • libogg

Things done

  • Built on platform(s)
    • x86_64-linux
    • aarch64-linux
    • x86_64-darwin
    • aarch64-darwin
  • For non-Linux: Is sandboxing enabled in nix.conf? (See Nix manual)
    • sandbox = relaxed
    • sandbox = true
  • Tested, as applicable:
  • Tested compilation of all packages that depend on this change using nix-shell -p nixpkgs-review --run "nixpkgs-review rev HEAD". Note: all changes have to be committed, also see nixpkgs-review usage
  • Tested basic functionality of all binary files (usually in ./result/bin/)
  • 25.05 Release Notes (or backporting 24.11 and 25.05 Release notes)
    • (Package updates) Added a release notes entry if the change is major or breaking
    • (Module updates) Added a release notes entry if the change is significant
    • (Module addition) Added a release notes entry if adding a new NixOS module
  • Fits CONTRIBUTING.md.

Add a 👍 reaction to pull requests you find important.

@github-actions github-actions bot added 10.rebuild-darwin: 0 This PR does not cause any packages to rebuild on Darwin. 10.rebuild-linux: 1 This PR causes 1 package to rebuild on Linux. 10.rebuild-linux: 1-10 This PR causes between 1 and 10 packages to rebuild on Linux. labels Jan 29, 2025
@wizardlink
Copy link
Copy Markdown
Member Author

I'm honestly not too sure about the withOptionals argument I require here, because lmms without the optional dependencies doesn't even has ALSA support, but at the same time, packing a wine derivation seems quite expensive for a package. So defining the limits of "optional" for a NixOS package seems tough here for me.

LMMS 1.2.2 is almost 5 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.
@wizardlink
Copy link
Copy Markdown
Member Author

Fixed the merge conflict it had with master.

Copy link
Copy Markdown
Contributor

@acid-bong acid-bong left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Since tags weren't reset/removed, nor source did change, i'd suggest not replacing the version itself with 0, you can use 1.2.2-unstable-DATE.

And probably additionally specify that you moved it to /by-name

@wizardlink
Copy link
Copy Markdown
Member Author

That's true, I had forgotten about that versioning rule. I will abstain from making the change for now though, I don't want to trigger the CI just because of a version change; once reviews come in and my questions are quelled I'll make sure to include that, thanks!

@wegank wegank added the 2.status: merge conflict This PR has merge conflicts with the target branch label Apr 7, 2025
@nixpkgs-ci nixpkgs-ci bot added the 2.status: stale https://github.com/NixOS/nixpkgs/blob/master/.github/STALE-BOT.md label Sep 3, 2025
@auroraanna
Copy link
Copy Markdown
Contributor

auroraanna commented Sep 30, 2025

so the new packages will be lmms and libsForQt5.lmms...

edit: didn't see that the old lmms gets removed

@nixpkgs-ci nixpkgs-ci bot removed the 2.status: stale https://github.com/NixOS/nixpkgs/blob/master/.github/STALE-BOT.md label Sep 30, 2025
Copy link
Copy Markdown
Contributor

@auroraanna auroraanna left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

is wine required for some plugins?

Comment on lines +107 to +116
meta = with lib; {
description = "DAW similar to FL Studio (music production software)";
mainProgram = "lmms";
homepage = "https://lmms.io";
license = licenses.gpl2Plus;
platforms = [
"x86_64-linux"
];
maintainers = with maintainers; [ wizardlink ];
};
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
meta = with lib; {
description = "DAW similar to FL Studio (music production software)";
mainProgram = "lmms";
homepage = "https://lmms.io";
license = licenses.gpl2Plus;
platforms = [
"x86_64-linux"
];
maintainers = with maintainers; [ wizardlink ];
};
meta = {
description = "DAW similar to FL Studio (music production software)";
mainProgram = "lmms";
homepage = "https://lmms.io";
license = lib.licenses.gpl2Plus;
platforms = [
"x86_64-linux"
];
maintainers = with lib.maintainers; [ wizardlink ];
};

Comment on lines +67 to +90
++ lib.optionals withOptionals [
SDL2
alsa-lib
carla
fltk
fluidsynth
glibc_multi
lame
libgig
libjack2
libogg
libpulseaudio
libsoundio
libvorbis
lilv
lv2
perl540
perl540Packages.ListMoreUtils
perl540Packages.XMLParser
portaudio
sndio
suil
winePackage
];
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

having the default package be without any audio doesn't make sense tbh.
i'd go for having a sensible default package and then allowing people to create the own version by calling the derivation with different arguments.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

like if you really wanted to make the most use of this you could have separate flags for jack, alsa and pulseaudio and then a combined withAudio flag that is the true by default.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

no audio by default on a DAW feels wrong... Should probably at least enable that.

@auroraanna
Copy link
Copy Markdown
Contributor

Since tags weren't reset/removed, nor source did change, i'd suggest not replacing the version itself with 0, you can use 1.2.2-unstable-DATE.

And probably additionally specify that you moved it to /by-name

what do you mean, source didn't change? i think labeling it 1.2.2-xxx is bad, also since 1.2.2 is not the latest version tag, that is an alpha version.

@mio-19 mio-19 mentioned this pull request Oct 11, 2025
13 tasks

linphone = libsForQt5.callPackage ../applications/networking/instant-messengers/linphone { };

lmms = libsForQt5.callPackage ../applications/audio/lmms {
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Where is the new lmms added?

Copy link
Copy Markdown
Contributor

@auroraanna auroraanna Oct 11, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

under pkgs/by-name/lm/lmms is the derivation. it automatically gets a package named lmms that way.

Copy link
Copy Markdown
Member

@dotlambda dotlambda left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please update to a commit including LMMS/lmms@c91c81e so we can fix #450908.

in
stdenv.mkDerivation {
pname = "lmms";
version = "0-unstable-2025-01-28";
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
version = "0-unstable-2025-01-28";
version = "1.2.2-unstable-2025-01-28";

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

it is called 1.3.0-alpha in program

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

That doesn't matter.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Unstable is versioned as date and last release tag. So yes, 1.2.2-unstable-... is the way

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

That doesn't matter.

presumably because the github release page says the release 1.3.0-alpha.1 may be changed at any time without notice? as in, it's not really a version at all…

owner = "LMMS";
repo = "lmms";
rev = "2c674eca3accbc6dab6f5aacbf34f7bd85af767e";
sha256 = "sha256-jq3Wog5BHBWIq5iLEBrHWIvYSzmKsCdb63Nu7j9kJRY=";
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
sha256 = "sha256-jq3Wog5BHBWIq5iLEBrHWIvYSzmKsCdb63Nu7j9kJRY=";
hash = "sha256-jq3Wog5BHBWIq5iLEBrHWIvYSzmKsCdb63Nu7j9kJRY=";

@dotlambda dotlambda linked an issue Oct 11, 2025 that may be closed by this pull request
3 tasks
@mio-19
Copy link
Copy Markdown
Contributor

mio-19 commented Oct 12, 2025

On the current lmms latest commit if withOptionals=true we need to clone a wine git repo and patch https://github.com/LMMS/lmms/blob/807751dc4dce53583ecf4140b67a5dc343c789a7/plugins/VstBase/CMakeLists.txt#L55

After this change I am able to build lmms with withOptionals=true https://github.com/mio-19/nurpkgs/blob/c5a0d1d1ae08a63a99378c26c91a5af45ac0ba17/pkgs/lmms/0001-wine-path-patch.patch https://github.com/mio-19/nurpkgs/blob/c5a0d1d1ae08a63a99378c26c91a5af45ac0ba17/pkgs/lmms/package.nix#L40

@mio-19
Copy link
Copy Markdown
Contributor

mio-19 commented Oct 12, 2025

I'm honestly not too sure about the withOptionals argument I require here, because lmms without the optional dependencies doesn't even has ALSA support, but at the same time, packing a wine derivation seems quite expensive for a package. So defining the limits of "optional" for a NixOS package seems tough here for me.

How about providing the necessary support by default and offering an lmms-minimal package without Wine or other dependencies?

in
stdenv.mkDerivation {
pname = "lmms";
version = "0-unstable-2025-01-28";
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Unstable is versioned as date and last release tag. So yes, 1.2.2-unstable-... is the way

];

patches = lib.optionals withOptionals [
(substitute {
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

isn't replaceVars preferred over substitute?

Comment on lines +67 to +90
++ lib.optionals withOptionals [
SDL2
alsa-lib
carla
fltk
fluidsynth
glibc_multi
lame
libgig
libjack2
libogg
libpulseaudio
libsoundio
libvorbis
lilv
lv2
perl540
perl540Packages.ListMoreUtils
perl540Packages.XMLParser
portaudio
sndio
suil
winePackage
];
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

no audio by default on a DAW feels wrong... Should probably at least enable that.

@BeatLink
Copy link
Copy Markdown

Any updates on this?

@wizardlink
Copy link
Copy Markdown
Member Author

Yes, I went through this MR's recent comments, so I'll be making adjustments on the coming days - had been quite busy. o/

@MultisampledNight
Copy link
Copy Markdown
Contributor

Thanks for the work you're doing either way! ^^

@denisfalqueto
Copy link
Copy Markdown
Contributor

Since tags weren't reset/removed, nor source did change, i'd suggest not replacing the version itself with 0, you can use 1.2.2-unstable-DATE.
And probably additionally specify that you moved it to /by-name

what do you mean, source didn't change? i think labeling it 1.2.2-xxx is bad, also since 1.2.2 is not the latest version tag, that is an alpha version.

I agree with that! If a codebase is tagged with a version, that implies that a new version is being opened for contribution. So a better version forward would be 1-unstable or smh.

@denisfalqueto
Copy link
Copy Markdown
Contributor

LMMS build is broken in nixpkgs-unstable.

CMake Error at CMakeLists.txt:1 (CMAKE_MINIMUM_REQUIRED):
  Compatibility with CMake < 3.5 has been removed from CMake.

  Update the VERSION argument <min> value.  Or, use the <min>...<max> syntax
  to tell CMake that the project requires at least <min> but has been updated
  to work with policies introduced by <max> or earlier.

  Or, add -DCMAKE_POLICY_VERSION_MINIMUM=3.5 to try configuring anyway.

There is a bug report upstream: LMMS/lmms#7822 and a reference to a PR on upstream's upstream... lukas-w/qt5-x11embed#7

I believe we should patch the nix derivation to apply a cmake minimum version, until lmms solves that bug themselves.

@LordGrimmauld
Copy link
Copy Markdown
Contributor

So a better version forward would be 1-unstable or smh.

No. Our documentation says "latest upstream version preceding that commit", followed by unstable and date, see https://github.com/NixOS/nixpkgs/tree/master/pkgs#versioning. This is how package trackers such as https://repology.org consume our data. Breaking with this pattern is wrong and bad. 1.2.2 -> 0-... would be considered a downgrade by our versioning logic, which this is not. I will block anything that does not fulfill those requirements.

I believe we should patch the nix derivation to apply a cmake minimum version

This is being done in this PR? I am confused what you are implying, other than "yes, do these changes"

There is a bug report upstream: LMMS/lmms#7822 and a reference to a PR on upstream's upstream... lukas-w/qt5-x11embed#7

Thank you for the extra context!

@denisfalqueto
Copy link
Copy Markdown
Contributor

No. Our documentation says "latest upstream version preceding that commit", followed by unstable and date, see https://github.com/NixOS/nixpkgs/tree/master/pkgs#versioning. This is how package trackers such as https://repology.org consume our data. Breaking with this pattern is wrong and bad. 1.2.2 -> 0-... would be considered a downgrade by our versioning logic, which this is not. I will block anything that does not fulfill those requirements.

Thanks for the information, I didn't know there was a ruling about that.

I believe we should patch the nix derivation to apply a cmake minimum version

This is being done in this PR? I am confused what you are implying, other than "yes, do these changes"

Yes, the fix is being pulled through LMMS master branch. They already updated their version of qt5-x11embedded, so it seems everything will be alright. I'll have to wait for this current PR to be merged. Lmms on nixpkgs-unstable is broken right now...

Thank you for the extra context!

You're welcome and I thank you for all your contributions for Nix!

@mio-19
Copy link
Copy Markdown
Contributor

mio-19 commented Nov 1, 2025

LMMS build is broken in nixpkgs-unstable.

CMake Error at CMakeLists.txt:1 (CMAKE_MINIMUM_REQUIRED):
  Compatibility with CMake < 3.5 has been removed from CMake.

  Update the VERSION argument <min> value.  Or, use the <min>...<max> syntax
  to tell CMake that the project requires at least <min> but has been updated
  to work with policies introduced by <max> or earlier.

  Or, add -DCMAKE_POLICY_VERSION_MINIMUM=3.5 to try configuring anyway.

There is a bug report upstream: LMMS/lmms#7822 and a reference to a PR on upstream's upstream... lukas-w/qt5-x11embed#7

I believe we should patch the nix derivation to apply a cmake minimum version, until lmms solves that bug themselves.

I have tried this approach, however it still doesn't build. See #449868

I tried this pr's changes. With lmms updated to recent git commits, it builds. https://github.com/mio-19/nurpkgs/tree/main/pkgs/lmms

@Necoro Necoro mentioned this pull request Nov 7, 2025
3 tasks
@kira-bruneau kira-bruneau added 0.kind: ZHF Fixes Fixes during the Zero Hydra Failures (ZHF) campaign and removed 0.kind: ZHF Fixes Fixes during the Zero Hydra Failures (ZHF) campaign labels Nov 8, 2025
@kira-bruneau
Copy link
Copy Markdown
Contributor

It looks like compatibility with CMake 4 was fixed in #459874.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

2.status: merge conflict This PR has merge conflicts with the target branch 10.rebuild-darwin: 0 This PR does not cause any packages to rebuild on Darwin. 10.rebuild-linux: 1-10 This PR causes between 1 and 10 packages to rebuild on Linux. 10.rebuild-linux: 1 This PR causes 1 package to rebuild on Linux.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Build failure: lmms - cmake 4.0 Package request: LMMS Alpha Version (1.3.0)