Merge pull request #268619 from tweag/lib-descriptions
[NixPkgs.git] / pkgs / applications / terminal-emulators / rio / default.nix
blob6ebd8f6f521d1c6e1b35640c0d265ff7d74c88d9
1 { lib
2 , stdenv
3 , darwin
4 , fetchFromGitHub
5 , rustPlatform
6 , nixosTests
7 , nix-update-script
9 , autoPatchelfHook
10 , cmake
11 , ncurses
12 , pkg-config
14 , gcc-unwrapped
15 , fontconfig
16 , libGL
17 , vulkan-loader
18 , libxkbcommon
20 , withX11 ? !stdenv.isDarwin
21 , libX11
22 , libXcursor
23 , libXi
24 , libXrandr
25 , libxcb
27 , withWayland ? !stdenv.isDarwin
28 , wayland
30 let
31   rlinkLibs = if stdenv.isDarwin then [
32     darwin.libobjc
33     darwin.apple_sdk_11_0.frameworks.AppKit
34   ] else [
35     (lib.getLib gcc-unwrapped)
36     fontconfig
37     libGL
38     libxkbcommon
39     vulkan-loader
40   ] ++ lib.optionals withX11 [
41     libX11
42     libXcursor
43     libXi
44     libXrandr
45     libxcb
46   ] ++ lib.optionals withWayland [
47     wayland
48   ];
50 rustPlatform.buildRustPackage rec {
51   pname = "rio";
52   version = "0.0.27";
54   src = fetchFromGitHub {
55     owner = "raphamorim";
56     repo = "rio";
57     rev = "v${version}";
58     hash = "sha256-q3Wq7jIYE4g1uPAlpzNWvwUvMy9eN6NQNmPNC4cFmYg=";
59   };
61   cargoHash = "sha256-SP85se+H4jL/cXyvfbFS2lxpNSjuptAIPs3/htcrMcw=";
63   nativeBuildInputs = [
64     ncurses
65   ] ++ lib.optionals stdenv.isLinux [
66     cmake
67     pkg-config
68     autoPatchelfHook
69   ];
71   runtimeDependencies = rlinkLibs;
73   buildInputs = rlinkLibs;
75   outputs = [ "out" "terminfo" ];
77   buildNoDefaultFeatures = true;
78   buildFeatures = [ ]
79     ++ lib.optional withX11 "x11"
80     ++ lib.optional withWayland "wayland";
82   checkFlags = [
83     # Fail to run in sandbox environment.
84     "--skip=screen::context::test"
85   ];
87   postInstall = ''
88     install -D -m 644 misc/rio.desktop -t $out/share/applications
89     install -D -m 644 misc/logo.svg \
90                       $out/share/icons/hicolor/scalable/apps/rio.svg
92     install -dm 755 "$terminfo/share/terminfo/r/"
93     tic -xe rio,rio-direct -o "$terminfo/share/terminfo" misc/rio.terminfo
94     mkdir -p $out/nix-support
95     echo "$terminfo" >> $out/nix-support/propagated-user-env-packages
96   '' + lib.optionalString stdenv.isDarwin ''
97     mkdir $out/Applications/
98     mv misc/osx/Rio.app/ $out/Applications/
99     mkdir $out/Applications/Rio.app/Contents/MacOS/
100     ln -s $out/bin/rio $out/Applications/Rio.app/Contents/MacOS/
101   '';
103   passthru = {
104     updateScript = nix-update-script {
105       extraArgs = [ "--version-regex" "v([0-9.]+)" ];
106     };
108     tests.test = nixosTests.terminal-emulators.rio;
109   };
111   meta = {
112     description = "A hardware-accelerated GPU terminal emulator powered by WebGPU";
113     homepage = "https://raphamorim.io/rio";
114     license = lib.licenses.mit;
115     maintainers = with lib.maintainers; [ otavio oluceps ];
116     platforms = lib.platforms.unix;
117     changelog = "https://github.com/raphamorim/rio/blob/v${version}/CHANGELOG.md";
118     mainProgram = "rio";
119   };