about summary refs log tree commit diff
path: root/pkgs/applications/audio/ncmpcpp/default.nix
diff options
context:
space:
mode:
Diffstat (limited to 'pkgs/applications/audio/ncmpcpp/default.nix')
-rw-r--r--pkgs/applications/audio/ncmpcpp/default.nix103
1 files changed, 69 insertions, 34 deletions
diff --git a/pkgs/applications/audio/ncmpcpp/default.nix b/pkgs/applications/audio/ncmpcpp/default.nix
index e2ecb813f5528..fdc377118d276 100644
--- a/pkgs/applications/audio/ncmpcpp/default.nix
+++ b/pkgs/applications/audio/ncmpcpp/default.nix
@@ -1,53 +1,88 @@
-{ lib
-, stdenv
-, fetchurl
-, boost
-, libmpdclient
-, ncurses
-, pkg-config
-, readline
-, libiconv
-, icu
-, curl
-, outputsSupport ? true # outputs screen
-, visualizerSupport ? false, fftw # visualizer screen
-, clockSupport ? true # clock screen
-, taglibSupport ? true, taglib # tag editor
+{
+  lib,
+  stdenv,
+  fetchFromGitHub,
+  boost,
+  libmpdclient,
+  ncurses,
+  pkg-config,
+  readline,
+  libiconv,
+  icu,
+  curl,
+  autoconf,
+  automake,
+  libtool,
+  outputsSupport ? true, # outputs screen
+  visualizerSupport ? false,
+  fftw, # visualizer screen
+  clockSupport ? true, # clock screen
+  taglibSupport ? true,
+  taglib, # tag editor
 }:
 
 stdenv.mkDerivation rec {
   pname = "ncmpcpp";
-  version = "0.9.2";
+  version = "0.10";
 
-  src = fetchurl {
-    url = "https://rybczak.net/ncmpcpp/stable/${pname}-${version}.tar.bz2";
-    sha256 = "sha256-+qv2FXyMsbJKBZryduFi+p+aO5zTgQxDuRKIYMk4Ohs=";
+  src = fetchFromGitHub {
+    owner = "ncmpcpp";
+    repo = "ncmpcpp";
+    rev = "refs/tags/${version}";
+    sha256 = "sha256-HRJQ+IOQ8xP1QkPlLI+VtDUWaI2m0Aw0fCDWHhgsOLY=";
   };
 
   enableParallelBuilding = true;
 
   strictDeps = true;
 
-  configureFlags = [ "BOOST_LIB_SUFFIX=" ]
-    ++ lib.optional outputsSupport "--enable-outputs"
-    ++ lib.optional visualizerSupport "--enable-visualizer --with-fftw"
-    ++ lib.optional clockSupport "--enable-clock"
-    ++ lib.optional taglibSupport "--with-taglib";
+  configureFlags = [
+    "BOOST_LIB_SUFFIX="
+    (lib.enableFeature outputsSupport "outputs")
+    (lib.enableFeature visualizerSupport "enable-visualizer")
+    (lib.withFeature visualizerSupport "fftw")
+    (lib.enableFeature clockSupport "clock")
+    (lib.withFeature taglibSupport "taglib")
+  ];
 
-  nativeBuildInputs = [ pkg-config ]
-    ++ lib.optional taglibSupport taglib;
+  nativeBuildInputs = [
+    autoconf
+    automake
+    libtool
+    pkg-config
+  ];
 
-  buildInputs = [ boost libmpdclient ncurses readline libiconv icu curl ]
-    ++ lib.optional visualizerSupport fftw
+  buildInputs = [
+    boost
+    libmpdclient
+    ncurses
+    readline
+    libiconv
+    icu
+    curl
+  ] ++ lib.optional visualizerSupport fftw
     ++ lib.optional taglibSupport taglib;
 
-  meta = with lib; {
+  preConfigure =
+    ''
+      ./autogen.sh
+    ''
+    + lib.optionalString stdenv.isDarwin ''
+      # std::result_of was removed in c++20 and unusable for clang16
+      substituteInPlace ./configure \
+        --replace-fail "std=c++20" "std=c++17"
+    '';
+
+  meta =  {
     description = "Featureful ncurses based MPD client inspired by ncmpc";
-    homepage    = "https://rybczak.net/ncmpcpp/";
-    changelog   = "https://github.com/ncmpcpp/ncmpcpp/blob/${version}/CHANGELOG.md";
-    license     = licenses.gpl2Plus;
-    maintainers = with maintainers; [ koral lovek323 ];
-    platforms   = platforms.all;
+    homepage = "https://rybczak.net/ncmpcpp/";
+    changelog = "https://github.com/ncmpcpp/ncmpcpp/blob/${version}/CHANGELOG.md";
+    license = lib.licenses.gpl2Plus;
+    maintainers = with lib.maintainers; [
+      koral
+      lovek323
+    ];
+    platforms = lib.platforms.all;
     mainProgram = "ncmpcpp";
   };
 }