chromium,chromedriver: 129.0.6668.91 -> 129.0.6668.100
[NixPkgs.git] / pkgs / by-name / ne / neovide / package.nix
blobdc49789cf5df9965a909deff824d08a21ca78c1b
1 { lib
2 , rustPlatform
3 , clangStdenv
4 , fetchFromGitHub
5 , linkFarm
6 , fetchgit
7 , runCommand
8 , gn
9 , neovim
10 , ninja
11 , makeWrapper
12 , pkg-config
13 , python3
14 , removeReferencesTo
15 , xcbuild
16 , SDL2
17 , fontconfig
18 , xorg
19 , stdenv
20 , darwin
21 , libglvnd
22 , libxkbcommon
23 , enableWayland ? stdenv.hostPlatform.isLinux
24 , wayland
27 rustPlatform.buildRustPackage.override { stdenv = clangStdenv; } rec {
28   pname = "neovide";
29   version = "0.13.3";
31   src = fetchFromGitHub {
32     owner = "neovide";
33     repo = "neovide";
34     rev = version;
35     hash = "sha256-u10JxMvXC/FIobeolWJElBZuCiJ3xIUg4F0vLom7/S0=";
36   };
38   cargoHash = "sha256-j8++watC7RBc1zn8m7Jg0Zl/iKXSrld+q62GiaLxGCo=";
40   SKIA_SOURCE_DIR =
41     let
42       repo = fetchFromGitHub {
43         owner = "rust-skia";
44         repo = "skia";
45         # see rust-skia:skia-bindings/Cargo.toml#package.metadata skia
46         rev = "m126-0.74.2";
47         hash = "sha256-4l6ekAJy+pG27hBGT6A6LLRwbsyKinJf6PP6mMHwaAs=";
48       };
49       # The externals for skia are taken from skia/DEPS
50       externals = linkFarm "skia-externals" (lib.mapAttrsToList
51         (name: value: { inherit name; path = fetchgit value; })
52         (lib.importJSON ./skia-externals.json));
53     in
54     runCommand "source" { } ''
55       cp -R ${repo} $out
56       chmod -R +w $out
57       ln -s ${externals} $out/third_party/externals
58     ''
59   ;
61   SKIA_GN_COMMAND = "${gn}/bin/gn";
62   SKIA_NINJA_COMMAND = "${ninja}/bin/ninja";
64   nativeBuildInputs = [
65     makeWrapper
66     pkg-config
67     python3 # skia
68     removeReferencesTo
69   ] ++ lib.optionals stdenv.hostPlatform.isDarwin [ xcbuild ];
71   nativeCheckInputs = [ neovim ];
73   buildInputs = [
74     SDL2
75     fontconfig
76     rustPlatform.bindgenHook
77   ] ++ lib.optionals stdenv.hostPlatform.isDarwin [
78     darwin.apple_sdk.frameworks.AppKit
79   ];
81   postFixup = let
82     libPath = lib.makeLibraryPath ([
83       libglvnd
84       libxkbcommon
85       xorg.libXcursor
86       xorg.libXext
87       xorg.libXrandr
88       xorg.libXi
89     ] ++ lib.optionals enableWayland [ wayland ]);
90   in ''
91       # library skia embeds the path to its sources
92       remove-references-to -t "$SKIA_SOURCE_DIR" \
93         $out/bin/neovide
95       wrapProgram $out/bin/neovide \
96         --prefix LD_LIBRARY_PATH : ${libPath}
97     '';
99   postInstall = lib.optionalString stdenv.hostPlatform.isDarwin ''
100     mkdir -p $out/Applications
101     cp -r extra/osx/Neovide.app $out/Applications
102     ln -s $out/bin $out/Applications/Neovide.app/Contents/MacOS
103   '' + lib.optionalString stdenv.hostPlatform.isLinux ''
104     for n in 16x16 32x32 48x48 256x256; do
105       install -m444 -D "assets/neovide-$n.png" \
106         "$out/share/icons/hicolor/$n/apps/neovide.png"
107     done
108     install -m444 -Dt $out/share/icons/hicolor/scalable/apps assets/neovide.svg
109     install -m444 -Dt $out/share/applications assets/neovide.desktop
110   '';
112   disallowedReferences = [ SKIA_SOURCE_DIR ];
114   meta = with lib; {
115     description = "This is a simple graphical user interface for Neovim";
116     mainProgram = "neovide";
117     homepage = "https://github.com/neovide/neovide";
118     changelog = "https://github.com/neovide/neovide/releases/tag/${version}";
119     license = with licenses; [ mit ];
120     maintainers = with maintainers; [ ck3d ];
121     platforms = platforms.linux ++ [ "aarch64-darwin" ];
122   };