Price Hiller
43bcfa0c9f
Some checks failed
Check Formatting of Files / Check-Formatting (push) Has been cancelled
132 lines
3.3 KiB
Nix
132 lines
3.3 KiB
Nix
{
|
|
lib,
|
|
rustPlatform,
|
|
clangStdenv,
|
|
fetchFromGitHub,
|
|
linkFarm,
|
|
fetchgit,
|
|
runCommand,
|
|
gn,
|
|
neovim,
|
|
ninja,
|
|
makeWrapper,
|
|
pkg-config,
|
|
python3,
|
|
removeReferencesTo,
|
|
xcbuild,
|
|
SDL2,
|
|
fontconfig,
|
|
xorg,
|
|
stdenv,
|
|
darwin,
|
|
libglvnd,
|
|
libxkbcommon,
|
|
enableWayland ? stdenv.isLinux,
|
|
wayland,
|
|
}:
|
|
|
|
rustPlatform.buildRustPackage.override { stdenv = clangStdenv; } rec {
|
|
pname = "neovide";
|
|
version = "24fcfc94c30775a6ff08277e76d266d2a1bde62c";
|
|
|
|
src = fetchFromGitHub {
|
|
owner = "neovide";
|
|
repo = "neovide";
|
|
rev = version;
|
|
hash = "sha256-5F9U2sE2CUQGSraWJ5plxvYdH498EQbj9U7DK0chWRU=";
|
|
};
|
|
|
|
cargoHash = "sha256-hV0EWjcb1P1GSlgnhJ6Xy0aUBtCK52mHOqdfr/COQbk=";
|
|
|
|
SKIA_SOURCE_DIR =
|
|
let
|
|
repo = fetchFromGitHub {
|
|
owner = "rust-skia";
|
|
repo = "skia";
|
|
# see rust-skia:skia-bindings/Cargo.toml#package.metadata skia
|
|
rev = "m125-0.72.3";
|
|
hash = "sha256-zlHUJUXukE4CsXwwmVl3KHf9mnNPT8lC/ETEE15Gb4s=";
|
|
};
|
|
# The externals for skia are taken from skia/DEPS
|
|
externals = linkFarm "skia-externals" (
|
|
lib.mapAttrsToList (name: value: {
|
|
inherit name;
|
|
path = fetchgit value;
|
|
}) (lib.importJSON ./skia-externals.json)
|
|
);
|
|
in
|
|
runCommand "source" { } ''
|
|
cp -R ${repo} $out
|
|
chmod -R +w $out
|
|
ln -s ${externals} $out/third_party/externals
|
|
'';
|
|
|
|
SKIA_GN_COMMAND = "${gn}/bin/gn";
|
|
SKIA_NINJA_COMMAND = "${ninja}/bin/ninja";
|
|
|
|
nativeBuildInputs = [
|
|
makeWrapper
|
|
pkg-config
|
|
python3 # skia
|
|
removeReferencesTo
|
|
] ++ lib.optionals stdenv.isDarwin [ xcbuild ];
|
|
|
|
nativeCheckInputs = [ neovim ];
|
|
|
|
buildInputs = [
|
|
SDL2
|
|
fontconfig
|
|
rustPlatform.bindgenHook
|
|
] ++ lib.optionals stdenv.isDarwin [ darwin.apple_sdk.frameworks.AppKit ];
|
|
|
|
postFixup =
|
|
let
|
|
libPath = lib.makeLibraryPath (
|
|
[
|
|
libglvnd
|
|
libxkbcommon
|
|
xorg.libXcursor
|
|
xorg.libXext
|
|
xorg.libXrandr
|
|
xorg.libXi
|
|
]
|
|
++ lib.optionals enableWayland [ wayland ]
|
|
);
|
|
in
|
|
''
|
|
# library skia embeds the path to its sources
|
|
remove-references-to -t "$SKIA_SOURCE_DIR" \
|
|
$out/bin/neovide
|
|
|
|
wrapProgram $out/bin/neovide \
|
|
--prefix LD_LIBRARY_PATH : ${libPath}
|
|
'';
|
|
|
|
postInstall =
|
|
lib.optionalString stdenv.isDarwin ''
|
|
mkdir -p $out/Applications
|
|
cp -r extra/osx/Neovide.app $out/Applications
|
|
ln -s $out/bin $out/Applications/Neovide.app/Contents/MacOS
|
|
''
|
|
+ lib.optionalString stdenv.isLinux ''
|
|
for n in 16x16 32x32 48x48 256x256; do
|
|
install -m444 -D "assets/neovide-$n.png" \
|
|
"$out/share/icons/hicolor/$n/apps/neovide.png"
|
|
done
|
|
install -m444 -Dt $out/share/icons/hicolor/scalable/apps assets/neovide.svg
|
|
install -m444 -Dt $out/share/applications assets/neovide.desktop
|
|
'';
|
|
|
|
disallowedReferences = [ SKIA_SOURCE_DIR ];
|
|
|
|
meta = with lib; {
|
|
description = "This is a simple graphical user interface for Neovim";
|
|
mainProgram = "neovide";
|
|
homepage = "https://github.com/neovide/neovide";
|
|
changelog = "https://github.com/neovide/neovide/releases/tag/${version}";
|
|
license = with licenses; [ mit ];
|
|
maintainers = with maintainers; [ ck3d ];
|
|
platforms = platforms.linux ++ [ "aarch64-darwin" ];
|
|
};
|
|
}
|