nixpkgs/pkgs/applications/graphics/rx/default.nix
2019-09-29 23:58:05 +02:00

59 lines
1.6 KiB
Nix

{ stdenv, rustPlatform, fetchFromGitHub, makeWrapper
, cmake, pkgconfig
, xorg ? null
, vulkan-loader ? null }:
assert stdenv.isLinux -> xorg != null;
assert stdenv.isLinux -> vulkan-loader != null;
let
graphicsBackend = if stdenv.isDarwin then "metal" else "vulkan";
in
with stdenv.lib;
rustPlatform.buildRustPackage rec {
pname = "rx";
version = "0.2.0";
src = fetchFromGitHub {
owner = "cloudhead";
repo = pname;
rev = "v${version}";
sha256 = "0f6cw8zqr45bprj8ibhp89bb2a077g4zinfrdn943csdmh47qzcl";
};
cargoSha256 = "05bqsw0nw24xysq86qa3hx9b5ncf50wfxsgpy388yrs2dfnphwlx";
nativeBuildInputs = [ cmake pkgconfig makeWrapper ];
buildInputs = optionals stdenv.isLinux
(with xorg; [
# glfw-sys dependencies:
libX11 libXrandr libXinerama libXcursor libXi libXext
]);
cargoBuildFlags = [ "--features=${graphicsBackend}" ];
# TODO: better to factor that into the rust platform
checkPhase = ''
runHook preCheck
echo "Running cargo test"
cargo test --features=${graphicsBackend}
runHook postCheck
'';
postInstall = optional stdenv.isLinux ''
mkdir -p $out/share/applications
cp $src/rx.desktop $out/share/applications
wrapProgram $out/bin/rx --prefix LD_LIBRARY_PATH : ${vulkan-loader}/lib
'';
meta = {
description = "Modern and extensible pixel editor implemented in Rust";
homepage = "https://cloudhead.io/rx/";
license = licenses.gpl3;
maintainers = with maintainers; [ minijackson ];
platforms = with platforms; (linux ++ darwin ++ windows);
inherit version;
};
}