about summary refs log tree commit diff
path: root/nixpkgs/pkgs/applications/misc/golden-cheetah/default.nix
diff options
context:
space:
mode:
Diffstat (limited to 'nixpkgs/pkgs/applications/misc/golden-cheetah/default.nix')
-rw-r--r--nixpkgs/pkgs/applications/misc/golden-cheetah/default.nix84
1 files changed, 84 insertions, 0 deletions
diff --git a/nixpkgs/pkgs/applications/misc/golden-cheetah/default.nix b/nixpkgs/pkgs/applications/misc/golden-cheetah/default.nix
new file mode 100644
index 000000000000..9cc9b3bf6d47
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/golden-cheetah/default.nix
@@ -0,0 +1,84 @@
+{ lib, fetchFromGitHub, nix-update-script, mkDerivation
+, qtbase, qtsvg, qtserialport, qtwebengine, qtmultimedia, qttools
+, qtconnectivity, qtcharts, libusb-compat-0_1, gsl, blas
+, bison, flex, zlib, qmake, makeDesktopItem, wrapQtAppsHook
+}:
+
+let
+  desktopItem = makeDesktopItem {
+    name = "goldencheetah";
+    exec = "GoldenCheetah";
+    icon = "goldencheetah";
+    desktopName = "GoldenCheetah";
+    genericName = "GoldenCheetah";
+    comment = "Performance software for cyclists, runners and triathletes";
+    categories = [ "Utility" ];
+  };
+in mkDerivation rec {
+  pname = "golden-cheetah";
+  version = "3.6";
+
+  src = fetchFromGitHub {
+    owner = "GoldenCheetah";
+    repo = "GoldenCheetah";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-Ntim1/ZPaTPCHQ5p8xF5LWpqq8+OgkPfaQqqysv9j/c=";
+  };
+
+  buildInputs = [
+    qtbase
+    qtsvg
+    qtserialport
+    qtwebengine
+    qtmultimedia
+    qttools
+    zlib
+    qtconnectivity
+    qtcharts
+    libusb-compat-0_1
+    gsl
+    blas
+  ];
+  nativeBuildInputs = [ flex wrapQtAppsHook qmake bison ];
+
+  patches = [
+    # allow building with bison 3.7
+    # Included in https://github.com/GoldenCheetah/GoldenCheetah/pull/3590,
+    # which is periodically rebased but pre 3.6 release, as it'll break other CI systems
+    ./0001-Fix-building-with-bison-3.7.patch
+  ];
+
+  NIX_LDFLAGS = "-lz -lgsl -lblas";
+
+  qtWrapperArgs = [ "--prefix" "LD_LIBRARY_PATH" ":" "${zlib.out}/lib" ];
+
+  preConfigure = ''
+    cp src/gcconfig.pri.in src/gcconfig.pri
+    cp qwt/qwtconfig.pri.in qwt/qwtconfig.pri
+    sed -i 's,^#QMAKE_LRELEASE.*,QMAKE_LRELEASE = ${qttools.dev}/bin/lrelease,' src/gcconfig.pri
+    sed -i 's,^#LIBUSB_INSTALL.*,LIBUSB_INSTALL = ${libusb-compat-0_1},' src/gcconfig.pri
+    sed -i 's,^#LIBUSB_INCLUDE.*,LIBUSB_INCLUDE = ${libusb-compat-0_1.dev}/include,' src/gcconfig.pri
+    sed -i 's,^#LIBUSB_LIBS.*,LIBUSB_LIBS = -L${libusb-compat-0_1}/lib -lusb,' src/gcconfig.pri
+  '';
+
+  installPhase = ''
+    runHook preInstall
+
+    mkdir -p $out/bin
+    cp src/GoldenCheetah $out/bin
+    install -Dm644 "${desktopItem}/share/applications/"* -t $out/share/applications/
+    install -Dm644 src/Resources/images/gc.png $out/share/pixmaps/goldencheetah.png
+
+    runHook postInstall
+  '';
+
+  passthru.updateScript = nix-update-script { };
+
+  meta = {
+    description = "Performance software for cyclists, runners and triathletes. Built from source and without API tokens";
+    mainProgram = "GoldenCheetah";
+    platforms = lib.platforms.linux;
+    maintainers = with lib.maintainers; [ adamcstephens ];
+    license = lib.licenses.gpl2Plus;
+  };
+}