python3Packages.orjson: Disable failing tests on 32 bit
[NixPkgs.git] / pkgs / tools / misc / polar / default.nix
blob022752bbc75d8cd587300ac60caf973aa25885db
1 { lib, stdenv, fetchFromGitHub, ruby, bundlerEnv }:
2 let
4   # To create Gemfile.lock and gemset.nix
5   # > nix-shell -p bundix bundler zlib
6   # > bundle install
7   # > bundix
8   gems = bundlerEnv {
9     name = "polar-env";
10     inherit ruby;
11     gemdir = ./.;
12   };
15 stdenv.mkDerivation rec {
17   pname = "polar";
18   # The package has no releases so let's use the latest commit
19   version = "unstable-2021-01-12";
21   src = fetchFromGitHub {
22     owner = "cmaion";
23     repo = pname;
24     rev = "be15f5f897f8a919dd639009873147dca2a9cea0";
25     sha256 = "0gqkqfrqnrsy6avg372xwqj22yz8g6r2hnzbw6197b1rf7zr1il7";
26   };
28   prePatch = ''
29     for script in polar_*
30     do
31       substituteInPlace $script --replace "#{File.dirname(__FILE__)}/lib" "$out/lib/polar"
32     done
33   '';
34   buildInputs = [ gems ruby ];
36   # See: https://nixos.wiki/wiki/Packaging/Ruby
37   #
38   # Put library content under lib/polar and the raw scripts under share/polar.
39   # Then, wrap the scripts so that they use the correct ruby environment and put
40   # these wrapped executables under bin.
41   installPhase = ''
42     install -Dm644 -t $out/etc/udev/rules.d ./pkg/99-polar.rules
43     mkdir -p $out/{bin,lib/polar,share/polar}
44     cp -r lib/* $out/lib/polar/
45     for script in ./polar_*
46     do
47       raw="$out/share/polar/$script"
48       bin="$out/bin/$script"
49       cp "$script" "$raw"
50       cat > $bin <<EOF
51 #!/bin/sh -e
52 exec ${gems}/bin/bundle exec ${ruby}/bin/ruby "$raw" "\$@"
53 EOF
54       chmod +x $bin
55     done
56   '';
58   meta = with lib; {
59     description = "Command-line tools to interact with Polar watches";
60     longDescription = ''
61       A set of command line tools written in Ruby to interact with Polar watches
62       and decode raw data files.
64       Udev rules can be added as:
66         services.udev.packages = [ pkgs.polar ]
67     '';
68     homepage = "https://github.com/cmaion/polar";
69     license = licenses.gpl3Only;
70     maintainers = with maintainers; [ jluttine ];
71     platforms = platforms.linux;
72   };