summary refs log tree commit diff
path: root/pkgs/applications/audio/hivelytracker/default.nix
blob: 4cf20e3c898528be48d2d7ba78423340e7898988 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
{ lib
, stdenv
, fetchFromGitHub
, pkg-config
, makeWrapper
, SDL
, SDL_image
, SDL_ttf
, gtk2
, glib
}:

stdenv.mkDerivation rec {
  pname = "hivelytracker";
  version = "unstable-2020-08-19";

  src = fetchFromGitHub {
    owner = "pete-gordon";
    repo = "hivelytracker";
    rev = "c8e3c7a5ee9f4a07cb4a941caecf7e4c4f4d40e0";
    sha256 = "1nqianlf1msir6wqwapi7ys1vbmf6aik58wa54b6cn5v6kwxh75a";
  };

  nativeBuildInputs = [
    pkg-config
    makeWrapper
  ];

  buildInputs = [
    SDL
    SDL_image
    SDL_ttf
    gtk2
    glib
  ];

  makeFlags = [
    "-C sdl"
    "-f Makefile.linux"
    "PREFIX=$(out)"
  ];

  # TODO: try to exclude gtk and glib from darwin builds
  NIX_CFLAGS_COMPILE = [
    "-I${SDL}/include/SDL"
    "-I${SDL_image}/include/SDL"
    "-I${SDL_ttf}/include/SDL"
    "-I${gtk2.dev}/include/gtk-2.0"
    "-I${glib.dev}/include/glib-2.0"
  ];

  # Also build the hvl2wav tool
  postBuild = ''
    make -C hvl2wav
  '';

  postInstall = ''
    # https://github.com/pete-gordon/hivelytracker/issues/43
    # Ideally we should patch the sources, but the program can't open
    # files passed as arguments anyway, so this works well enough until the
    # issue is fixed.
    wrapProgram $out/bin/hivelytracker \
      --run "cd $out/share/hivelytracker"

    # Also install the hvl2wav tool
    install -Dm755 hvl2wav/hvl2wav $out/bin/hvl2wav
  '';

  meta = with lib; {
    homepage = "http://www.hivelytracker.co.uk/";
    downloadPage = "http://www.hivelytracker.co.uk/downl.php";
    description = "Chip music tracker based upon the AHX format";
    longDescription = ''
      Hively Tracker is a tracker program based upon the AHX format created in
      the mid '90s by Dexter and Pink of Abyss. The format was relatively
      popular, and many songs were created and used in scene productions and
      games. AHX was designed to create a very SID-like sound on the Amiga.

      HivelyTracker can import and export modules and instruments in the AHX
      format, but it also improves on AHX in several ways and therefore has
      its own instrument and module formats.
    '';
    license = licenses.bsd3;
    platforms = platforms.all;
    maintainers = with maintainers; [ fgaz ];
    broken = stdenv.isDarwin; # TODO: try to use xcbuild
  };
}