diff options
Diffstat (limited to 'nixpkgs/pkgs/tools/misc/polar/default.nix')
-rw-r--r-- | nixpkgs/pkgs/tools/misc/polar/default.nix | 73 |
1 files changed, 73 insertions, 0 deletions
diff --git a/nixpkgs/pkgs/tools/misc/polar/default.nix b/nixpkgs/pkgs/tools/misc/polar/default.nix new file mode 100644 index 000000000000..022752bbc75d --- /dev/null +++ b/nixpkgs/pkgs/tools/misc/polar/default.nix @@ -0,0 +1,73 @@ +{ lib, stdenv, fetchFromGitHub, ruby, bundlerEnv }: +let + + # To create Gemfile.lock and gemset.nix + # > nix-shell -p bundix bundler zlib + # > bundle install + # > bundix + gems = bundlerEnv { + name = "polar-env"; + inherit ruby; + gemdir = ./.; + }; + +in +stdenv.mkDerivation rec { + + pname = "polar"; + # The package has no releases so let's use the latest commit + version = "unstable-2021-01-12"; + + src = fetchFromGitHub { + owner = "cmaion"; + repo = pname; + rev = "be15f5f897f8a919dd639009873147dca2a9cea0"; + sha256 = "0gqkqfrqnrsy6avg372xwqj22yz8g6r2hnzbw6197b1rf7zr1il7"; + }; + + prePatch = '' + for script in polar_* + do + substituteInPlace $script --replace "#{File.dirname(__FILE__)}/lib" "$out/lib/polar" + done + ''; + buildInputs = [ gems ruby ]; + + # See: https://nixos.wiki/wiki/Packaging/Ruby + # + # Put library content under lib/polar and the raw scripts under share/polar. + # Then, wrap the scripts so that they use the correct ruby environment and put + # these wrapped executables under bin. + installPhase = '' + install -Dm644 -t $out/etc/udev/rules.d ./pkg/99-polar.rules + mkdir -p $out/{bin,lib/polar,share/polar} + cp -r lib/* $out/lib/polar/ + for script in ./polar_* + do + raw="$out/share/polar/$script" + bin="$out/bin/$script" + cp "$script" "$raw" + cat > $bin <<EOF +#!/bin/sh -e +exec ${gems}/bin/bundle exec ${ruby}/bin/ruby "$raw" "\$@" +EOF + chmod +x $bin + done + ''; + + meta = with lib; { + description = "Command-line tools to interact with Polar watches"; + longDescription = '' + A set of command line tools written in Ruby to interact with Polar watches + and decode raw data files. + + Udev rules can be added as: + + services.udev.packages = [ pkgs.polar ] + ''; + homepage = "https://github.com/cmaion/polar"; + license = licenses.gpl3Only; + maintainers = with maintainers; [ jluttine ]; + platforms = platforms.linux; + }; +} |