summary refs log tree commit diff
path: root/pkgs/os-specific/linux/ffado/default.nix
blob: b93caccc7574a774099f829bf0f38fbb3400b73e (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
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
{ stdenv
, mkDerivation
, dbus
, dbus_cplusplus
, desktop-file-utils
, fetchurl
, glibmm
, kernel
, libavc1394
, libconfig
, libiec61883
, libraw1394
, libxmlxx3
, pkgconfig
, python3
, sconsPackages
, which
, wrapQtAppsHook
}:

let
  inherit (python3.pkgs) pyqt5 dbus-python;
  python = python3.withPackages (pkgs: with pkgs; [ pyqt5 dbus-python ]);
in
mkDerivation rec {
  pname = "ffado";
  version = "2.4.3";

  src = fetchurl {
    url = "http://www.ffado.org/files/libffado-${version}.tgz";
    sha256 = "08bygzv1k6ai0572gv66h7gfir5zxd9klfy74z2pxqp6s5hms58r";
  };

  prePatch = ''
    substituteInPlace ./support/tools/ffado-diag.in \
      --replace /lib/modules/ "/run/booted-system/kernel-modules/lib/modules/"
  '';

  patches = [
    # fix installing metainfo file
    ./fix-build.patch
  ];

  outputs = [ "out" "bin" "dev" ];

  nativeBuildInputs = [
    desktop-file-utils
    sconsPackages.scons_3_1_2
    pkgconfig
    which
    python
    pyqt5
    wrapQtAppsHook
  ];

  prefixKey = "PREFIX=";
  sconsFlags = [
    "DEBUG=False"
    "ENABLE_ALL=True"
    "BUILD_TESTS=True"
    "WILL_DEAL_WITH_XDG_MYSELF=True"
    "BUILD_MIXER=True"
    "UDEVDIR=${placeholder "out"}/lib/udev/rules.d"
    "PYPKGDIR=${placeholder "out"}/${python3.sitePackages}"
    "BINDIR=${placeholder "bin"}/bin"
    "INCLUDEDIR=${placeholder "dev"}/include"
    "PYTHON_INTERPRETER=${python.interpreter}"
  ];

  buildInputs = [
    dbus
    dbus_cplusplus
    glibmm
    libavc1394
    libconfig
    libiec61883
    libraw1394
    libxmlxx3
    python
  ];

  enableParallelBuilding = true;
  dontWrapQtApps = true;

  postInstall = ''
    desktop="$bin/share/applications/ffado-mixer.desktop"
    install -DT -m 444 support/xdg/ffado.org-ffadomixer.desktop $desktop
    substituteInPlace "$desktop" \
      --replace Exec=ffado-mixer "Exec=$bin/bin/ffado-mixer" \
      --replace hi64-apps-ffado ffado-mixer
    install -DT -m 444 support/xdg/hi64-apps-ffado.png "$bin/share/icons/hicolor/64x64/apps/ffado-mixer.png"

    # prevent build tools from leaking into closure
    echo 'See `nix-store --query --tree ${placeholder "out"}`.' > $out/lib/libffado/static_info.txt
  '';

  preFixup = ''
    wrapQtApp $bin/bin/ffado-mixer
  '';

  meta = with stdenv.lib; {
    homepage = "http://www.ffado.org";
    description = "FireWire audio drivers";
    license = licenses.gpl3;
    maintainers = with maintainers; [ goibhniu michojel ];
    platforms = platforms.linux;
  };
}