about summary refs log tree commit diff
path: root/pkgs/applications/audio
diff options
context:
space:
mode:
authorVladimír Čunát <vcunat@gmail.com>2016-05-08 21:24:48 +0200
committerVladimír Čunát <vcunat@gmail.com>2016-05-08 21:24:48 +0200
commit65a9fa8cdccdd7cf4737d0362789d25cc824400d (patch)
treebd109a65b1cd166d44eff9f6acd22cc7c1b60fde /pkgs/applications/audio
parent62fc8859c10dd18b005b9bcaa0b429103d7661d9 (diff)
parent6054c9f217a8db8219d5a63bcb2c275bc13962f0 (diff)
downloadnixlib-65a9fa8cdccdd7cf4737d0362789d25cc824400d.tar
nixlib-65a9fa8cdccdd7cf4737d0362789d25cc824400d.tar.gz
nixlib-65a9fa8cdccdd7cf4737d0362789d25cc824400d.tar.bz2
nixlib-65a9fa8cdccdd7cf4737d0362789d25cc824400d.tar.lz
nixlib-65a9fa8cdccdd7cf4737d0362789d25cc824400d.tar.xz
nixlib-65a9fa8cdccdd7cf4737d0362789d25cc824400d.tar.zst
nixlib-65a9fa8cdccdd7cf4737d0362789d25cc824400d.zip
Merge branch 'master' into staging
Diffstat (limited to 'pkgs/applications/audio')
-rw-r--r--pkgs/applications/audio/CharacterCompressor/default.nix8
-rw-r--r--pkgs/applications/audio/CompBus/default.nix8
-rw-r--r--pkgs/applications/audio/LazyLimiter/default.nix8
-rw-r--r--pkgs/applications/audio/MBdistortion/default.nix8
-rw-r--r--pkgs/applications/audio/RhythmDelay/default.nix8
-rw-r--r--pkgs/applications/audio/constant-detune-chorus/default.nix16
-rw-r--r--pkgs/applications/audio/deadbeef/default.nix11
-rw-r--r--pkgs/applications/audio/faust/faust1git.nix210
-rw-r--r--pkgs/applications/audio/faust/faust2lv2gui.nix14
-rw-r--r--pkgs/applications/audio/faustCompressors/default.nix39
-rw-r--r--pkgs/applications/audio/fmit/default.nix26
-rw-r--r--pkgs/applications/audio/i-score/default.nix85
12 files changed, 395 insertions, 46 deletions
diff --git a/pkgs/applications/audio/CharacterCompressor/default.nix b/pkgs/applications/audio/CharacterCompressor/default.nix
index 3501e04aa97d..5c28de3c60a7 100644
--- a/pkgs/applications/audio/CharacterCompressor/default.nix
+++ b/pkgs/applications/audio/CharacterCompressor/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchFromGitHub, faust2jack, faust2lv2 }:
+{ stdenv, fetchFromGitHub, faust2jaqt, faust2lv2gui }:
 stdenv.mkDerivation rec {
   name = "CharacterCompressor-${version}";
   version = "0.2";
@@ -10,11 +10,11 @@ stdenv.mkDerivation rec {
     sha256 = "0fvi8m4nshcxypn4jgxhnh7pxp68wshhav3k8wn3il7qpw71pdxi";
   };
 
-  buildInputs = [ faust2jack faust2lv2 ];
+  buildInputs = [ faust2jaqt faust2lv2gui ];
 
   buildPhase = ''
-    faust2jack -t 99999 CharacterCompressor.dsp
-    faust2lv2 -t 99999 CharacterCompressor.dsp
+    faust2jaqt -t 99999 CharacterCompressor.dsp
+    faust2lv2 -gui -t 99999 CharacterCompressor.dsp
   '';
 
   installPhase = ''
diff --git a/pkgs/applications/audio/CompBus/default.nix b/pkgs/applications/audio/CompBus/default.nix
index 497d1ef5243f..25175f271622 100644
--- a/pkgs/applications/audio/CompBus/default.nix
+++ b/pkgs/applications/audio/CompBus/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchFromGitHub, faust2jack, faust2lv2 }:
+{ stdenv, fetchFromGitHub, faust2jaqt, faust2lv2gui }:
 stdenv.mkDerivation rec {
   name = "CompBus-${version}";
   version = "1.1.02";
@@ -10,13 +10,13 @@ stdenv.mkDerivation rec {
     sha256 = "025vi60caxk3j2vxxrgbc59xlyr88vgn7k3127s271zvpyy7apwh";
   };
 
-  buildInputs = [ faust2jack faust2lv2 ];
+  buildInputs = [ faust2jaqt faust2lv2gui ];
 
   buildPhase = ''
     for f in *.dsp;
     do
-      faust2jack -t 99999 $f
-      faust2lv2 -t 99999 $f
+      faust2jaqt -t 99999 $f
+      faust2lv2 -gui -t 99999 $f
     done
   '';
 
diff --git a/pkgs/applications/audio/LazyLimiter/default.nix b/pkgs/applications/audio/LazyLimiter/default.nix
index d400bea33796..16aca9c3d328 100644
--- a/pkgs/applications/audio/LazyLimiter/default.nix
+++ b/pkgs/applications/audio/LazyLimiter/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchFromGitHub, faust2jack, faust2lv2 }:
+{ stdenv, fetchFromGitHub, faust2jaqt, faust2lv2gui }:
 stdenv.mkDerivation rec {
   name = "LazyLimiter-${version}";
   version = "0.3.01";
@@ -10,11 +10,11 @@ stdenv.mkDerivation rec {
     sha256 = "1yx9d5cakmqbiwb1j9v2af9h5lqzahl3kaamnyk71cf4i8g7zp3l";
   };
 
-  buildInputs = [ faust2jack faust2lv2 ];
+  buildInputs = [ faust2jaqt faust2lv2gui ];
 
   buildPhase = ''
-    faust2jack -t 99999 LazyLimiter.dsp
-    faust2lv2 -t 99999 LazyLimiter.dsp
+    faust2jaqt -t 99999 LazyLimiter.dsp
+    faust2lv2 -gui -t 99999 LazyLimiter.dsp
   '';
 
   installPhase = ''
diff --git a/pkgs/applications/audio/MBdistortion/default.nix b/pkgs/applications/audio/MBdistortion/default.nix
index c70ab5782597..aa71fff41c57 100644
--- a/pkgs/applications/audio/MBdistortion/default.nix
+++ b/pkgs/applications/audio/MBdistortion/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchFromGitHub, faust2jack, faust2lv2 }:
+{ stdenv, fetchFromGitHub, faust2jaqt, faust2lv2gui }:
 stdenv.mkDerivation rec {
   name = "MBdistortion-${version}";
   version = "1.1";
@@ -10,11 +10,11 @@ stdenv.mkDerivation rec {
     sha256 = "1rmvfi48hg8ybfw517zgj3fjj2xzckrmv8x131i26vj0fv7svjsp";
   };
 
-  buildInputs = [ faust2jack faust2lv2 ];
+  buildInputs = [ faust2jaqt faust2lv2gui ];
 
   buildPhase = ''
-    faust2jack -t 99999 MBdistortion.dsp
-    faust2lv2 -t 99999 MBdistortion.dsp
+    faust2jaqt -t 99999 MBdistortion.dsp
+    faust2lv2 -gui -t 99999 MBdistortion.dsp
   '';
 
   installPhase = ''
diff --git a/pkgs/applications/audio/RhythmDelay/default.nix b/pkgs/applications/audio/RhythmDelay/default.nix
index e0cfff7c906e..05d3b4f193e5 100644
--- a/pkgs/applications/audio/RhythmDelay/default.nix
+++ b/pkgs/applications/audio/RhythmDelay/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchFromGitHub, faust2jack, faust2lv2 }:
+{ stdenv, fetchFromGitHub, faust2jaqt, faust2lv2gui }:
 stdenv.mkDerivation rec {
   name = "RhythmDelay-${version}";
   version = "2.0";
@@ -10,11 +10,11 @@ stdenv.mkDerivation rec {
     sha256 = "0n938nm08mf3lz92k6v07k1469xxzmfkgclw40jgdssfcfa16bn7";
   };
 
-  buildInputs = [ faust2jack faust2lv2 ];
+  buildInputs = [ faust2jaqt faust2lv2gui ];
 
   buildPhase = ''
-    faust2jack -t 99999 RhythmDelay.dsp
-    faust2lv2 -t 99999 RhythmDelay.dsp
+    faust2jaqt -t 99999 RhythmDelay.dsp
+    faust2lv2 -gui -t 99999 RhythmDelay.dsp
   '';
 
   installPhase = ''
diff --git a/pkgs/applications/audio/constant-detune-chorus/default.nix b/pkgs/applications/audio/constant-detune-chorus/default.nix
index 54fe4c866d50..0f53d1259113 100644
--- a/pkgs/applications/audio/constant-detune-chorus/default.nix
+++ b/pkgs/applications/audio/constant-detune-chorus/default.nix
@@ -1,27 +1,27 @@
-{ stdenv, fetchFromGitHub, faust2jack, faust2lv2 }:
+{ stdenv, fetchFromGitHub, faust2jaqt, faust2lv2gui }:
 stdenv.mkDerivation rec {
   name = "constant-detune-chorus-${version}";
-  version = "0.1.01";
+  version = "0.1.2";
 
   src = fetchFromGitHub {
     owner = "magnetophon";
     repo = "constant-detune-chorus";
     rev = "v${version}";
-    sha256 = "1z8aj1a36ix9jizk9wl06b3i98hrkg47qxqp8vx930r624pc5z86";
+    sha256 = "1ks2k6pflqyi2cs26bnbypphyrrgn0xf31l31kgx1qlilyc57vln";
   };
 
-  buildInputs = [ faust2jack faust2lv2 ];
+  buildInputs = [ faust2jaqt faust2lv2gui ];
 
   buildPhase = ''
-    faust2jack -t 99999 constant-detune-chorus.dsp
-    faust2lv2 -t 99999 constant-detune-chorus.dsp
+    faust2jaqt -t 99999 ConstantDetuneChorus.dsp
+    faust2lv2 -gui -t 99999 ConstantDetuneChorus.dsp
   '';
 
   installPhase = ''
     mkdir -p $out/bin
-    cp constant-detune-chorus $out/bin/
+    cp ConstantDetuneChorus $out/bin/
     mkdir -p $out/lib/lv2
-    cp -r constant-detune-chorus.lv2/ $out/lib/lv2
+    cp -r ConstantDetuneChorus.lv2/ $out/lib/lv2
   '';
 
   meta = {
diff --git a/pkgs/applications/audio/deadbeef/default.nix b/pkgs/applications/audio/deadbeef/default.nix
index 43aba89213f2..07f9e565c2a0 100644
--- a/pkgs/applications/audio/deadbeef/default.nix
+++ b/pkgs/applications/audio/deadbeef/default.nix
@@ -1,7 +1,7 @@
 { stdenv, fetchurl, intltool, pkgconfig, fetchpatch, jansson
 # deadbeef can use either gtk2 or gtk3
 , gtk2Support ? false, gtk2 ? null
-, gtk3Support ? true, gtk3 ? null, gsettings_desktop_schemas ? null, makeWrapper ? null
+, gtk3Support ? true, gtk3 ? null, gsettings_desktop_schemas ? null, wrapGAppsHook ? null
 # input plugins
 , vorbisSupport ? true, libvorbis ? null
 , mp123Support ? true, libmad ? null
@@ -30,7 +30,7 @@
 
 assert gtk2Support || gtk3Support;
 assert gtk2Support -> gtk2 != null;
-assert gtk3Support -> gtk3 != null && gsettings_desktop_schemas != null && makeWrapper != null;
+assert gtk3Support -> gtk3 != null && gsettings_desktop_schemas != null && wrapGAppsHook != null;
 assert vorbisSupport -> libvorbis != null;
 assert mp123Support -> libmad != null;
 assert flacSupport -> flac != null;
@@ -85,15 +85,10 @@ stdenv.mkDerivation rec {
     ;
 
   nativeBuildInputs = with stdenv.lib; [ intltool pkgconfig ]
-    ++ optional gtk3Support makeWrapper;
+    ++ optional gtk3Support wrapGAppsHook;
 
   enableParallelBuilding = true;
 
-  postInstall = if !gtk3Support then "" else ''
-    wrapProgram "$out/bin/deadbeef" \
-      --prefix XDG_DATA_DIRS : "$GSETTINGS_SCHEMAS_PATH"
-  '';
-
   meta = with stdenv.lib; {
     description = "Ultimate Music Player for GNU/Linux";
     homepage = "http://deadbeef.sourceforge.net/";
diff --git a/pkgs/applications/audio/faust/faust1git.nix b/pkgs/applications/audio/faust/faust1git.nix
new file mode 100644
index 000000000000..5b769aa621e8
--- /dev/null
+++ b/pkgs/applications/audio/faust/faust1git.nix
@@ -0,0 +1,210 @@
+{ stdenv
+, coreutils
+, fetchgit
+, makeWrapper
+, pkgconfig
+}:
+
+with stdenv.lib.strings;
+
+let
+
+  version = "2016-04-27";
+
+  src = fetchgit {
+    url = "git://git.code.sf.net/p/faudiostream/code";
+    rev = "931fca3e649f99ef09025d37bd6a7dc70a03e6f6";
+    sha256 = "05yam8jfdnziysvpxa5w118k5bbl103vamyqgka6vyhjjizp1nx7";
+  };
+
+  meta = with stdenv.lib; {
+    homepage = http://faust.grame.fr/;
+    downloadPage = http://sourceforge.net/projects/faudiostream/files/;
+    license = licenses.gpl2;
+    platforms = platforms.linux;
+    maintainers = with maintainers; [ magnetophon pmahoney ];
+  };
+
+  faust = stdenv.mkDerivation {
+
+    name = "faust-${version}";
+
+    inherit src;
+
+    buildInputs = [ makeWrapper ];
+
+    passthru = {
+      inherit wrap wrapWithBuildEnv;
+    };
+
+    preConfigure = ''
+      makeFlags="$makeFlags prefix=$out"
+
+      # The faust makefiles use 'system ?= $(shell uname -s)' but nix
+      # defines 'system' env var, so undefine that so faust detects the
+      # correct system.
+      unset system
+    '';
+
+    # Remove most faust2appl scripts since they won't run properly
+    # without additional paths setup. See faust.wrap,
+    # faust.wrapWithBuildEnv.
+    postInstall = ''
+      # syntax error when eval'd directly
+      pattern="faust2!(svg)"
+      (shopt -s extglob; rm "$out"/bin/$pattern)
+    '';
+
+    postFixup = ''
+      # Set faustpath explicitly.
+      substituteInPlace "$out"/bin/faustpath \
+        --replace "/usr/local /usr /opt /opt/local" "$out"
+
+      # The 'faustoptflags' is 'source'd into other faust scripts and
+      # not used as an executable, so patch 'uname' usage directly
+      # rather than use makeWrapper.
+      substituteInPlace "$out"/bin/faustoptflags \
+        --replace uname "${coreutils}/bin/uname"
+
+      # wrapper for scripts that don't need faust.wrap*
+      for script in "$out"/bin/faust2*; do
+        wrapProgram "$script" \
+          --prefix PATH : "$out"/bin
+      done
+    '';
+
+    meta = meta // {
+      description = "A functional programming language for realtime audio signal processing";
+      longDescription = ''
+        FAUST (Functional Audio Stream) is a functional programming
+        language specifically designed for real-time signal processing
+        and synthesis. FAUST targets high-performance signal processing
+        applications and audio plug-ins for a variety of platforms and
+        standards.
+        The Faust compiler translates DSP specifications into very
+        efficient C++ code. Thanks to the notion of architecture,
+        FAUST programs can be easily deployed on a large variety of
+        audio platforms and plugin formats (jack, alsa, ladspa, maxmsp,
+        puredata, csound, supercollider, pure, vst, coreaudio) without
+        any change to the FAUST code.
+
+        This package has just the compiler, libraries, and headers.
+        Install faust2* for specific faust2appl scripts.
+      '';
+    };
+
+  };
+
+  # Default values for faust2appl.
+  faust2ApplBase =
+    { baseName
+    , dir ? "tools/faust2appls"
+    , scripts ? [ baseName ]
+    , ...
+    }@args:
+
+    args // {
+      name = "${baseName}-${version}";
+
+      inherit src;
+
+      configurePhase = ":";
+
+      buildPhase = ":";
+
+      installPhase = ''
+        runHook preInstall
+
+        mkdir -p "$out/bin"
+        for script in ${concatStringsSep " " scripts}; do
+          cp "${dir}/$script" "$out/bin/"
+        done
+
+        runHook postInstall
+      '';
+
+      postInstall = ''
+        # For the faust2appl script, change 'faustpath' and
+        # 'faustoptflags' to absolute paths.
+        for script in "$out"/bin/*; do
+          substituteInPlace "$script" \
+            --replace ". faustpath" ". '${faust}/bin/faustpath'" \
+            --replace ". faustoptflags" ". '${faust}/bin/faustoptflags'"
+        done
+      '';
+
+      meta = meta // {
+        description = "The ${baseName} script, part of faust functional programming language for realtime audio signal processing";
+      };
+    };
+
+  # Some 'faust2appl' scripts, such as faust2alsa, run faust to
+  # generate cpp code, then invoke the c++ compiler to build the code.
+  # This builder wraps these scripts in parts of the stdenv such that
+  # when the scripts are called outside any nix build, they behave as
+  # if they were running inside a nix build in terms of compilers and
+  # paths being configured (e.g. rpath is set so that compiled
+  # binaries link to the libs inside the nix store)
+  #
+  # The function takes two main args: the appl name (e.g.
+  # 'faust2alsa') and an optional list of propagatedBuildInputs. It
+  # returns a derivation that contains only the bin/${appl} script,
+  # wrapped up so that it will run as if it was inside a nix build
+  # with those build inputs.
+  #
+  # The build input 'faust' is automatically added to the
+  # propagatedBuildInputs.
+  wrapWithBuildEnv =
+    { baseName
+    , propagatedBuildInputs ? [ ]
+    , ...
+    }@args:
+
+    stdenv.mkDerivation ((faust2ApplBase args) // {
+
+      buildInputs = [ makeWrapper pkgconfig ];
+
+      propagatedBuildInputs = [ faust ] ++ propagatedBuildInputs;
+
+      postFixup = ''
+
+        # export parts of the build environment
+        for script in "$out"/bin/*; do
+          wrapProgram "$script" \
+            --set FAUSTLIB "${faust}/lib/faust" \
+            --set FAUSTINC "${faust}/include/faust" \
+            --prefix PATH : "$PATH" \
+            --prefix PKG_CONFIG_PATH : "$PKG_CONFIG_PATH" \
+            --set NIX_CFLAGS_COMPILE "\"$NIX_CFLAGS_COMPILE\"" \
+            --set NIX_LDFLAGS "\"$NIX_LDFLAGS\""
+        done
+      '';
+    });
+
+  # Builder for 'faust2appl' scripts, such as faust2firefox that
+  # simply need to be wrapped with some dependencies on PATH.
+  #
+  # The build input 'faust' is automatically added to the PATH.
+  wrap =
+    { baseName
+    , runtimeInputs ? [ ]
+    , ...
+    }@args:
+
+    let
+
+      runtimePath = concatStringsSep ":" (map (p: "${p}/bin") ([ faust ] ++ runtimeInputs));
+
+    in stdenv.mkDerivation ((faust2ApplBase args) // {
+
+      buildInputs = [ makeWrapper ];
+
+      postFixup = ''
+        for script in "$out"/bin/*; do
+          wrapProgram "$script" --prefix PATH : "${runtimePath}"
+        done
+      '';
+
+    });
+
+in faust
diff --git a/pkgs/applications/audio/faust/faust2lv2gui.nix b/pkgs/applications/audio/faust/faust2lv2gui.nix
new file mode 100644
index 000000000000..af20bb1d7450
--- /dev/null
+++ b/pkgs/applications/audio/faust/faust2lv2gui.nix
@@ -0,0 +1,14 @@
+{ boost
+, faust1git
+, lv2
+, qt4
+
+}:
+
+faust1git.wrapWithBuildEnv {
+
+  baseName = "faust2lv2";
+
+  propagatedBuildInputs = [ boost lv2 qt4 ];
+
+}
diff --git a/pkgs/applications/audio/faustCompressors/default.nix b/pkgs/applications/audio/faustCompressors/default.nix
new file mode 100644
index 000000000000..ea0680568db6
--- /dev/null
+++ b/pkgs/applications/audio/faustCompressors/default.nix
@@ -0,0 +1,39 @@
+{ stdenv, fetchFromGitHub, faust2jaqt, faust2lv2gui }:
+stdenv.mkDerivation rec {
+  name = "faustCompressors-${version}";
+  version = "0.1.1";
+
+  src = fetchFromGitHub {
+    owner = "magnetophon";
+    repo = "faustCompressors";
+    rev = "v${version}";
+    sha256 = "0x5nd2cjhknb4aclhkkjaywx75bi2wj22prgv8n47czi09jcj0jb";
+  };
+
+  buildInputs = [ faust2jaqt faust2lv2gui ];
+
+  buildPhase = ''
+    for f in *.dsp;
+    do
+      faust2jaqt -double -t 99999 $f
+      faust2lv2 -double -gui -t 99999 $f
+    done
+  '';
+
+  installPhase = ''
+    mkdir -p $out/lib/lv2
+    mv *.lv2/ $out/lib/lv2
+    mkdir -p $out/bin
+    for f in $(find . -executable -type f);
+    do
+      cp $f $out/bin/
+    done
+  '';
+
+  meta = {
+    description = "A collection of bread and butter compressors";
+    homepage = https://github.com/magnetophon/faustCompressors;
+    license = stdenv.lib.licenses.gpl3;
+    maintainers = [ stdenv.lib.maintainers.magnetophon ];
+  };
+}
diff --git a/pkgs/applications/audio/fmit/default.nix b/pkgs/applications/audio/fmit/default.nix
index d99e2e577ebb..db17ca8553c8 100644
--- a/pkgs/applications/audio/fmit/default.nix
+++ b/pkgs/applications/audio/fmit/default.nix
@@ -7,33 +7,39 @@ assert alsaSupport -> alsaLib != null;
 assert jackSupport -> libjack2 != null;
 assert portaudioSupport -> portaudio != null;
 
+with stdenv.lib;
+
 stdenv.mkDerivation rec {
   name = "fmit-${version}";
-  version = "1.0.13";
+  version = "1.0.15";
 
   src = fetchFromGitHub {
-    sha256 = "04cj70q60sqns68nvw4zfy6078x4cc2q1y2y13z3rs5n80jw27by";
+    sha256 = "0bakqwgl7xx6khs8993w10a8kvlbr7sbqdaljbsmy8y8mjd6inqb";
     rev = "v${version}";
     repo = "fmit";
     owner = "gillesdegottex";
   };
 
-  buildInputs = [ fftw freeglut mesa_glu qtbase qtmultimedia qmakeHook ]
-    ++ stdenv.lib.optionals alsaSupport [ alsaLib ]
-    ++ stdenv.lib.optionals jackSupport [ libjack2 ]
-    ++ stdenv.lib.optionals portaudioSupport [ portaudio ];
+  buildInputs = [ fftw qtbase qtmultimedia qmakeHook ]
+    ++ optionals alsaSupport [ alsaLib ]
+    ++ optionals jackSupport [ libjack2 ]
+    ++ optionals portaudioSupport [ portaudio ];
+
+  postPatch = ''
+    substituteInPlace fmit.pro --replace '$$FMITVERSIONGITPRO' '${version}'
+  '';
 
   preConfigure = ''
     qmakeFlags="$qmakeFlags \
-      CONFIG+=${stdenv.lib.optionalString alsaSupport "acs_alsa"} \
-      CONFIG+=${stdenv.lib.optionalString jackSupport "acs_jack"} \
-      CONFIG+=${stdenv.lib.optionalString portaudioSupport "acs_portaudio"} \
+      CONFIG+=${optionalString alsaSupport "acs_alsa"} \
+      CONFIG+=${optionalString jackSupport "acs_jack"} \
+      CONFIG+=${optionalString portaudioSupport "acs_portaudio"} \
       PREFIXSHORTCUT=$out"
   '';
 
   enableParallelBuilding = true;
 
-  meta = with stdenv.lib; {
+  meta = {
     description = "Free Musical Instrument Tuner";
     longDescription = ''
       FMIT is a graphical utility for tuning musical instruments, with error
diff --git a/pkgs/applications/audio/i-score/default.nix b/pkgs/applications/audio/i-score/default.nix
new file mode 100644
index 000000000000..8bf85ac24b02
--- /dev/null
+++ b/pkgs/applications/audio/i-score/default.nix
@@ -0,0 +1,85 @@
+{
+  boost,
+  cln,
+  cmake,
+  fetchgit,
+  gcc5,
+  ginac,
+  jamomacore,
+  kde5,
+  libsndfile,
+  ninja,
+  portaudio,
+  qtbase,
+  qtdeclarative,
+  qtimageformats,
+  qtsvg,
+  qttools,
+  qtwebsockets,
+  rtaudio,
+  stdenv
+}:
+
+stdenv.mkDerivation rec {
+  version = "1.0.0-a67";
+  name = "i-score-${version}";
+
+  src = fetchgit {
+    url = "https://github.com/OSSIA/i-score.git";
+    rev = "ede2453b139346ae46702b5e2643c5488f8c89fb";
+    sha256 = "04li771nj0k8gym7vg6rnawjkp2f6d5m5mby26h0k6ksf7hg7h70";
+    leaveDotGit = true;
+    deepClone = true;
+  };
+
+  buildInputs = [
+    boost
+    cln
+    cmake
+    ginac
+    gcc5
+    jamomacore
+    kde5.kdnssd
+    libsndfile
+    ninja
+    portaudio
+    qtbase
+    qtdeclarative
+    qtimageformats
+    qtsvg
+    qttools
+    qtwebsockets
+    rtaudio
+  ];
+
+  cmakeFlags = [
+    "-GNinja"
+    "-DISCORE_CONFIGURATION=static-release"
+    "-DISCORE_ENABLE_LTO=OFF"
+    "-DISCORE_BUILD_FOR_PACKAGE_MANAGER=True"
+  ];
+
+  patchPhase = ''
+    sed -e '77d' -i CMake/modules/GetGitRevisionDescription.cmake
+  '';
+
+  preConfigure = ''
+    export CMAKE_PREFIX_PATH="$CMAKE_PREFIX_PATH:$(echo "${jamomacore}/jamoma/share/cmake/Jamoma")"
+  '';
+
+  preBuild = ''
+    ninja
+  '';
+
+  installPhase = ''
+    cmake --build . --target install
+  '';
+
+  meta = {
+    description = "An interactive sequencer for the intermedia arts";
+    homepage = http://i-score.org/;
+    license = stdenv.lib.licenses.cecill20;
+    maintainers = [ stdenv.lib.maintainers.magnetophon ];
+    platforms = stdenv.lib.platforms.linux;
+  };
+}