From dc4b9cacfc86cade7c89904ed266d342ea6214a4 Mon Sep 17 00:00:00 2001 From: David Wronek Date: Fri, 20 Mar 2026 07:11:56 +0100 Subject: [PATCH 1/5] itgmania: add myself as maintainer I play this game as well and would like to adopt maintainership. Signed-off-by: David Wronek --- pkgs/by-name/it/itgmania/package.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/pkgs/by-name/it/itgmania/package.nix b/pkgs/by-name/it/itgmania/package.nix index f17bc900481b..ed3eb8f1d7b5 100644 --- a/pkgs/by-name/it/itgmania/package.nix +++ b/pkgs/by-name/it/itgmania/package.nix @@ -91,6 +91,7 @@ stdenv.mkDerivation (finalAttrs: { maintainers = with lib.maintainers; [ ftsimas maxwell-lt + ungeskriptet ]; mainProgram = "itgmania"; }; From 9db4a5b6a4c9c8a40f9fb5c225a695c6fd5c0a77 Mon Sep 17 00:00:00 2001 From: David Wronek Date: Fri, 20 Mar 2026 07:12:37 +0100 Subject: [PATCH 2/5] itgmania: add nix-update-script Signed-off-by: David Wronek --- pkgs/by-name/it/itgmania/package.nix | 3 +++ 1 file changed, 3 insertions(+) diff --git a/pkgs/by-name/it/itgmania/package.nix b/pkgs/by-name/it/itgmania/package.nix index ed3eb8f1d7b5..ac45effff3f1 100644 --- a/pkgs/by-name/it/itgmania/package.nix +++ b/pkgs/by-name/it/itgmania/package.nix @@ -19,6 +19,7 @@ udev, makeWrapper, makeDesktopItem, + nix-update-script, }: stdenv.mkDerivation (finalAttrs: { @@ -83,6 +84,8 @@ stdenv.mkDerivation (finalAttrs: { }) ]; + passthru.updateScript = nix-update-script { }; + meta = { homepage = "https://www.itgmania.com/"; description = "Fork of StepMania 5.1, improved for the post-ITG community"; From 0179c4859ca0618b1ee105b25ab4db15579f4ca7 Mon Sep 17 00:00:00 2001 From: David Wronek Date: Fri, 20 Mar 2026 07:15:13 +0100 Subject: [PATCH 3/5] itgmaniaPackages: init Add a new package scope for ITGmania. Themes and other extensions can be added here to allow configuring ITGmania declaratively using the extraPackages argument. Signed-off-by: David Wronek --- pkgs/by-name/it/itgmania/package.nix | 104 +++--------------- pkgs/by-name/it/itgmania/packages.nix | 10 ++ .../it/itgmania/themes/arrowcloud-theme.nix | 31 ++++++ .../it/itgmania/themes/digital-dance.nix | 31 ++++++ pkgs/by-name/it/itgmania/themes/itg2-sm5.nix | 31 ++++++ .../by-name/it/itgmania/themes/itg3encore.nix | 32 ++++++ .../it/itgmania/themes/zmod-simply-love.nix | 34 ++++++ pkgs/by-name/it/itgmania/unwrapped.nix | 96 ++++++++++++++++ pkgs/top-level/all-packages.nix | 2 + 9 files changed, 280 insertions(+), 91 deletions(-) create mode 100644 pkgs/by-name/it/itgmania/packages.nix create mode 100644 pkgs/by-name/it/itgmania/themes/arrowcloud-theme.nix create mode 100644 pkgs/by-name/it/itgmania/themes/digital-dance.nix create mode 100644 pkgs/by-name/it/itgmania/themes/itg2-sm5.nix create mode 100644 pkgs/by-name/it/itgmania/themes/itg3encore.nix create mode 100644 pkgs/by-name/it/itgmania/themes/zmod-simply-love.nix create mode 100644 pkgs/by-name/it/itgmania/unwrapped.nix diff --git a/pkgs/by-name/it/itgmania/package.nix b/pkgs/by-name/it/itgmania/package.nix index ac45effff3f1..8899ba8140f0 100644 --- a/pkgs/by-name/it/itgmania/package.nix +++ b/pkgs/by-name/it/itgmania/package.nix @@ -1,101 +1,23 @@ { - lib, - stdenv, - fetchFromGitHub, - cmake, - nasm, - pkg-config, - copyDesktopItems, - alsa-lib, - glew, - glib, - gtk3, - libmad, - libogg, - libpulseaudio, - libusb-compat-0_1, - libvorbis, - libxtst, - udev, + symlinkJoin, makeWrapper, - makeDesktopItem, - nix-update-script, + itgmaniaPackages, + extraPackages ? [ ], }: +let + unwrapped = itgmaniaPackages.itgmania-unwrapped; +in +symlinkJoin { + inherit (unwrapped) pname version meta; -stdenv.mkDerivation (finalAttrs: { - pname = "itgmania"; - version = "1.2.0"; + paths = [ unwrapped ] ++ extraPackages; - src = fetchFromGitHub { - owner = "itgmania"; - repo = "itgmania"; - tag = "v${finalAttrs.version}"; - fetchSubmodules = true; - hash = "sha256-RkV/OIDudt2XemhaFRY7IA5o7Q2w+j01tauD7KpzYpA="; - }; + nativeBuildInputs = [ makeWrapper ]; - nativeBuildInputs = [ - cmake - nasm - pkg-config - makeWrapper - copyDesktopItems - ]; - - buildInputs = [ - alsa-lib - glew - glib - gtk3 - libmad - libogg - libpulseaudio - libusb-compat-0_1 - libvorbis - libxtst - udev - ]; - - cmakeFlags = lib.optionals (!stdenv.hostPlatform.isx86) [ "-DWITH_MINIMAID=off" ]; - - postInstall = '' + postBuild = '' makeWrapper $out/itgmania/itgmania $out/bin/itgmania \ --chdir $out/itgmania - - mkdir -p $out/share/icons/hicolor/scalable/apps/ - ln -s $out/itgmania/Data/logo.svg $out/share/icons/hicolor/scalable/apps/itgmania.svg ''; - desktopItems = [ - (makeDesktopItem { - name = "itgmania"; - desktopName = "ITGmania"; - genericName = "Rhythm and dance game"; - tryExec = "itgmania"; - exec = "itgmania"; - terminal = false; - icon = "itgmania"; - type = "Application"; - comment = "A cross-platform rhythm video game."; - categories = [ - "Game" - "ArcadeGame" - ]; - }) - ]; - - passthru.updateScript = nix-update-script { }; - - meta = { - homepage = "https://www.itgmania.com/"; - description = "Fork of StepMania 5.1, improved for the post-ITG community"; - platforms = lib.platforms.linux; - license = lib.licenses.mit; - maintainers = with lib.maintainers; [ - ftsimas - maxwell-lt - ungeskriptet - ]; - mainProgram = "itgmania"; - }; -}) + passthru.unwrapped = unwrapped; +} diff --git a/pkgs/by-name/it/itgmania/packages.nix b/pkgs/by-name/it/itgmania/packages.nix new file mode 100644 index 000000000000..257fe5e1fd86 --- /dev/null +++ b/pkgs/by-name/it/itgmania/packages.nix @@ -0,0 +1,10 @@ +{ lib, newScope }: +lib.makeScope newScope (self: { + itgmania-unwrapped = self.callPackage ./unwrapped.nix { }; + # Themes + arrowcloud-theme = self.callPackage ./themes/arrowcloud-theme.nix { }; + digital-dance = self.callPackage ./themes/digital-dance.nix { }; + itg2-sm5 = self.callPackage ./themes/itg2-sm5.nix { }; + itg3encore = self.callPackage ./themes/itg3encore.nix { }; + zmod-simply-love = self.callPackage ./themes/zmod-simply-love.nix { }; +}) diff --git a/pkgs/by-name/it/itgmania/themes/arrowcloud-theme.nix b/pkgs/by-name/it/itgmania/themes/arrowcloud-theme.nix new file mode 100644 index 000000000000..08ed6cecd731 --- /dev/null +++ b/pkgs/by-name/it/itgmania/themes/arrowcloud-theme.nix @@ -0,0 +1,31 @@ +{ + lib, + stdenv, + fetchFromGitHub, + nix-update-script, +}: +stdenv.mkDerivation (finalAttrs: { + pname = "arrowcloud-theme"; + version = "20260328"; + + src = fetchFromGitHub { + owner = "Arrow-Cloud"; + repo = "theme"; + tag = "v${finalAttrs.version}"; + hash = "sha256-9BND3IUIc5uMBxzw+Pn/59jBKBK/xGWrOIgcIYIQvgk="; + }; + + postInstall = '' + mkdir -p "$out/itgmania/Themes/Arrow Cloud" + mv * "$out/itgmania/Themes/Arrow Cloud" + ''; + + passthru.updateScript = nix-update-script { extraArgs = [ "--use-github-releases" ]; }; + + meta = { + description = "Arrow Cloud's fork of Zmod"; + homepage = "https://github.com/Arrow-Cloud/theme"; + license = lib.licenses.gpl3Plus; + maintainers = with lib.maintainers; [ ungeskriptet ]; + }; +}) diff --git a/pkgs/by-name/it/itgmania/themes/digital-dance.nix b/pkgs/by-name/it/itgmania/themes/digital-dance.nix new file mode 100644 index 000000000000..9061c8a7e7e0 --- /dev/null +++ b/pkgs/by-name/it/itgmania/themes/digital-dance.nix @@ -0,0 +1,31 @@ +{ + lib, + stdenv, + fetchFromCodeberg, + nix-update-script, +}: +stdenv.mkDerivation (finalAttrs: { + pname = "digital-dance"; + version = "1.1.3-unstable-2026-04-19"; + + src = fetchFromCodeberg { + owner = "JNero"; + repo = "Digital-Dance-ITGMania"; + rev = "bfce7a6d719189a3eec1577b54256941e8d602a5"; + hash = "sha256-yrXdU73Jokm+nMMi8mtxdEL5+xuFj4sHIW+/nulcJJI="; + }; + + postInstall = '' + mkdir -p "$out/itgmania/Themes/Digital Dance" + mv * "$out/itgmania/Themes/Digital Dance" + ''; + + passthru.updateScript = nix-update-script { extraArgs = [ "--version=branch" ]; }; + + meta = { + description = "Theme for ITGMania to (hopefully) utilize all of it's features and more"; + homepage = "https://codeberg.org/JNero/Digital-Dance-ITGMania"; + license = lib.licenses.gpl3Plus; + maintainers = with lib.maintainers; [ ungeskriptet ]; + }; +}) diff --git a/pkgs/by-name/it/itgmania/themes/itg2-sm5.nix b/pkgs/by-name/it/itgmania/themes/itg2-sm5.nix new file mode 100644 index 000000000000..5234bfea09e5 --- /dev/null +++ b/pkgs/by-name/it/itgmania/themes/itg2-sm5.nix @@ -0,0 +1,31 @@ +{ + lib, + stdenv, + fetchFromGitHub, + nix-update-script, +}: +stdenv.mkDerivation (finalAttrs: { + pname = "itg2-sm5"; + version = "1.1.0-unstable-2025-10-08"; + + src = fetchFromGitHub { + owner = "JoseVarelaP"; + repo = "In-The-Groove2-SM5"; + rev = "e25f1a44efa55cd2247891f40633403910b75d21"; + hash = "sha256-FMyT7ZA/1cqiClXDvD7CmJlOFaaWnPLuOuei6fsbzg8="; + }; + + postInstall = '' + mkdir -p "$out/itgmania/Themes/ITG2-SM5" + mv * "$out/itgmania/Themes/ITG2-SM5" + ''; + + passthru.updateScript = nix-update-script { extraArgs = [ "--version=branch" ]; }; + + meta = { + description = "Semi-Conversion/Recreation of In The Groove 1 & 2 to StepMania 5"; + homepage = "https://github.com/JoseVarelaP/In-The-Groove2-SM5"; + license = lib.licenses.gpl3Plus; + maintainers = with lib.maintainers; [ ungeskriptet ]; + }; +}) diff --git a/pkgs/by-name/it/itgmania/themes/itg3encore.nix b/pkgs/by-name/it/itgmania/themes/itg3encore.nix new file mode 100644 index 000000000000..8999a8209e14 --- /dev/null +++ b/pkgs/by-name/it/itgmania/themes/itg3encore.nix @@ -0,0 +1,32 @@ +{ + lib, + stdenv, + fetchFromGitHub, + nix-update-script, +}: +stdenv.mkDerivation (finalAttrs: { + pname = "itg3encore"; + version = "0-unstable-2026-04-21"; + + src = fetchFromGitHub { + owner = "DarkBahamut162"; + repo = "itg3encore"; + rev = "bb9e9bb9bfb09ba7df586d5b5cc1f4813bbea8e7"; + hash = "sha256-dih1MeORhNgh3pV7eQLsbhnkiVIE7rQnIWWJFALHoG0="; + }; + + postInstall = '' + mkdir -p "$out/itgmania/Themes/ITG3Encore" + mv * "$out/itgmania/Themes/ITG3Encore" + ''; + + passthru.updateScript = nix-update-script { extraArgs = [ "--version=branch" ]; }; + + meta = { + description = "An upgraded port of ITG3's Encore theme"; + homepage = "https://github.com/DarkBahamut162/itg3encore"; + # https://github.com/DarkBahamut162/itg3encore/issues/16 + license = lib.licenses.unfree; + maintainers = with lib.maintainers; [ ungeskriptet ]; + }; +}) diff --git a/pkgs/by-name/it/itgmania/themes/zmod-simply-love.nix b/pkgs/by-name/it/itgmania/themes/zmod-simply-love.nix new file mode 100644 index 000000000000..3d57f82120fa --- /dev/null +++ b/pkgs/by-name/it/itgmania/themes/zmod-simply-love.nix @@ -0,0 +1,34 @@ +{ + lib, + stdenv, + fetchFromGitHub, + nix-update-script, +}: +stdenv.mkDerivation (finalAttrs: { + pname = "zmod-simply-love"; + version = "5.8.1-april"; + + src = fetchFromGitHub { + owner = "zarzob"; + repo = "Simply-Love-SM5"; + tag = finalAttrs.version; + hash = "sha256-4EkCR9M8xip2b8ddWyUIom2HM72Ba8KdVodIyc5h4p8="; + }; + + postInstall = '' + mkdir -p "$out/itgmania/Themes/Zmod Simply Love" + mv * "$out/itgmania/Themes/Zmod Simply Love" + ''; + + passthru.updateScript = nix-update-script { extraArgs = [ "--use-github-releases" ]; }; + + meta = { + description = "Zmod fork of Simply Love"; + homepage = "https://github.com/zarzob/Simply-Love-SM5"; + license = lib.licenses.gpl3Plus; + maintainers = with lib.maintainers; [ + maxwell-lt + ungeskriptet + ]; + }; +}) diff --git a/pkgs/by-name/it/itgmania/unwrapped.nix b/pkgs/by-name/it/itgmania/unwrapped.nix new file mode 100644 index 000000000000..8b05abdf17fa --- /dev/null +++ b/pkgs/by-name/it/itgmania/unwrapped.nix @@ -0,0 +1,96 @@ +{ + lib, + stdenv, + fetchFromGitHub, + cmake, + nasm, + pkg-config, + copyDesktopItems, + alsa-lib, + glew, + glib, + gtk3, + libmad, + libogg, + libpulseaudio, + libusb-compat-0_1, + libvorbis, + libxtst, + udev, + makeDesktopItem, + nix-update-script, +}: + +stdenv.mkDerivation (finalAttrs: { + pname = "itgmania"; + version = "1.2.0"; + + src = fetchFromGitHub { + owner = "itgmania"; + repo = "itgmania"; + tag = "v${finalAttrs.version}"; + fetchSubmodules = true; + hash = "sha256-RkV/OIDudt2XemhaFRY7IA5o7Q2w+j01tauD7KpzYpA="; + }; + + nativeBuildInputs = [ + cmake + nasm + pkg-config + copyDesktopItems + ]; + + buildInputs = [ + alsa-lib + glew + glib + gtk3 + libmad + libogg + libpulseaudio + libusb-compat-0_1 + libvorbis + libxtst + udev + ]; + + cmakeFlags = lib.optionals (!stdenv.hostPlatform.isx86) [ "-DWITH_MINIMAID=off" ]; + + postInstall = '' + mkdir -p $out/share/icons/hicolor/scalable/apps/ + ln -s $out/itgmania/Data/logo.svg $out/share/icons/hicolor/scalable/apps/itgmania.svg + ''; + + desktopItems = [ + (makeDesktopItem { + name = "itgmania"; + desktopName = "ITGmania"; + genericName = "Rhythm and dance game"; + tryExec = "itgmania"; + exec = "itgmania"; + terminal = false; + icon = "itgmania"; + type = "Application"; + comment = "A cross-platform rhythm video game."; + categories = [ + "Game" + "ArcadeGame" + ]; + }) + ]; + + passthru.updateScript = nix-update-script { }; + + meta = { + homepage = "https://www.itgmania.com/"; + description = "Fork of StepMania 5.1, improved for the post-ITG community"; + platforms = lib.platforms.linux; + license = lib.licenses.mit; + maintainers = with lib.maintainers; [ + ftsimas + maxwell-lt + ungeskriptet + ]; + mainProgram = "itgmania"; + }; +}) diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 30e09f146f38..21e83b09bc2a 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -6642,6 +6642,8 @@ with pkgs; ''; }); + itgmaniaPackages = recurseIntoAttrs (callPackage ../by-name/it/itgmania/packages.nix { }); + itk_5_2 = callPackage ../development/libraries/itk/5.2.x.nix { enableRtk = false; }; From 8bcc75c90a046d2692ee3bd72d1ad683cd945d9e Mon Sep 17 00:00:00 2001 From: David Wronek Date: Wed, 1 Apr 2026 20:22:54 +0200 Subject: [PATCH 4/5] itgmania: 1.2.0 -> 1.2.1 Signed-off-by: David Wronek --- pkgs/by-name/it/itgmania/unwrapped.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/by-name/it/itgmania/unwrapped.nix b/pkgs/by-name/it/itgmania/unwrapped.nix index 8b05abdf17fa..b18d2b7ad010 100644 --- a/pkgs/by-name/it/itgmania/unwrapped.nix +++ b/pkgs/by-name/it/itgmania/unwrapped.nix @@ -23,14 +23,14 @@ stdenv.mkDerivation (finalAttrs: { pname = "itgmania"; - version = "1.2.0"; + version = "1.2.1"; src = fetchFromGitHub { owner = "itgmania"; repo = "itgmania"; tag = "v${finalAttrs.version}"; fetchSubmodules = true; - hash = "sha256-RkV/OIDudt2XemhaFRY7IA5o7Q2w+j01tauD7KpzYpA="; + hash = "sha256-bTABfTflWasuXvX+YPciUIICAFVROk/SgeClgrTUjkQ="; }; nativeBuildInputs = [ From 411c45caa46d0bdd95d0aa71f828a721a40a9a46 Mon Sep 17 00:00:00 2001 From: David Wronek Date: Fri, 3 Apr 2026 20:06:08 +0200 Subject: [PATCH 5/5] itgmania: fix version string It showed up as 1.2.1-BETA-UNKNOWN before. Signed-off-by: David Wronek --- pkgs/by-name/it/itgmania/unwrapped.nix | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/pkgs/by-name/it/itgmania/unwrapped.nix b/pkgs/by-name/it/itgmania/unwrapped.nix index b18d2b7ad010..f0d65de916e3 100644 --- a/pkgs/by-name/it/itgmania/unwrapped.nix +++ b/pkgs/by-name/it/itgmania/unwrapped.nix @@ -54,7 +54,11 @@ stdenv.mkDerivation (finalAttrs: { udev ]; - cmakeFlags = lib.optionals (!stdenv.hostPlatform.isx86) [ "-DWITH_MINIMAID=off" ]; + cmakeFlags = [ + "-DWITH_FULL_RELEASE=on" + "-DWITH_NIGHTLY_RELEASE=off" + ] + ++ lib.optionals (!stdenv.hostPlatform.isx86) [ "-DWITH_MINIMAID=off" ]; postInstall = '' mkdir -p $out/share/icons/hicolor/scalable/apps/