From 6bd6a13e51e88b455385b8063c8c2aee07053fd4 Mon Sep 17 00:00:00 2001 From: xeals Date: Thu, 15 Oct 2020 22:38:34 +1100 Subject: [PATCH] alacritty-ligatures: override upstream directly The old method was having the alacritty build copy-pasted into the repo and making minor changes. This worked but isn't really feasible as it doesn't incoroprate upstream (build) changes without noticing. This commit finally works out how to override buildRustPackage to set the Cargo dependency. --- default.nix | 25 ++- .../applications/misc/alacritty/ligatures.nix | 145 ------------------ 2 files changed, 21 insertions(+), 149 deletions(-) delete mode 100644 pkgs/applications/misc/alacritty/ligatures.nix diff --git a/default.nix b/default.nix index 6d3aa1d..dd4a7d3 100644 --- a/default.nix +++ b/default.nix @@ -15,11 +15,28 @@ rec { overlays = import ./overlays; # nixpkgs overlays # Alacritty with the unmerged ligature patches applied. - alacritty-ligatures = pkgs.callPackage ./pkgs/applications/misc/alacritty/ligatures.nix { + alacritty-ligatures = (pkgs.alacritty.override { + # Requires a minimum of 1.41, and this is the only version on both stable + # and unstable channels right now. inherit (pkgs.rustPackages_1_44) rustPlatform; - inherit (pkgs.xorg) libXcursor libXxf86vm libXi; - inherit (pkgs.darwin.appls_sdk.frameworks) AppKit CoreGraphics CoreServices CoreText Foundation OpenGL; - }; + }).overrideAttrs (oldAttrs: rec { + pname = "${oldAttrs.pname}-ligatures"; + version = "0.6.0.20201015"; + + src = pkgs.fetchFromGitHub { + owner = "zenixls2"; + repo = "alacritty"; + fetchSubmodules = true; + rev = "30ebb4303229acbfdbbf00a84a9c46973c4e0334"; + sha256 = "1c0951zs1h2d6fjnxixfms3913m1c6yvgmcizgd9gfgx59ghpafi"; + }; + + cargoDeps = oldAttrs.cargoDeps.overrideAttrs (pkgs.lib.const { + name = "${pname}-${version}-vendor"; + inherit src; + outputHash = "1zvj8hdlc3fii1ffwkigvxjigwx53vls543pgcv3a2bw4sn1ky1k"; + }); + }); amdgpu-fan = pkgs.callPackage ./pkgs/tools/misc/amdgpu-fan { }; diff --git a/pkgs/applications/misc/alacritty/ligatures.nix b/pkgs/applications/misc/alacritty/ligatures.nix deleted file mode 100644 index 19e6b94..0000000 --- a/pkgs/applications/misc/alacritty/ligatures.nix +++ /dev/null @@ -1,145 +0,0 @@ -{ stdenv -, lib -, fetchFromGitHub -, rustPlatform - -, cmake -, gzip -, installShellFiles -, makeWrapper -, ncurses -, pkgconfig -, python3 - -, expat -, fontconfig -, freetype -, libGL -, libX11 -, libXcursor -, libXi -, libXrandr -, libXxf86vm -, libxcb -, libxkbcommon -, wayland -, xdg_utils - - # Darwin Frameworks -, AppKit -, CoreGraphics -, CoreServices -, CoreText -, Foundation -, OpenGL -}: -let - rpathLibs = [ - expat - fontconfig - freetype - stdenv.cc.cc.lib # libstdc++.so.6 - libGL - libX11 - libXcursor - libXi - libXrandr - libXxf86vm - libxcb - ] ++ lib.optionals stdenv.isLinux [ - libxkbcommon - wayland - ]; - triple = - if stdenv.isLinux - then "${stdenv.platform.kernelArch}-unknown-linux-gnu" - else "x86_64-apple-darwin"; -in - -# https://github.com/alacritty/alacritty/issues/4049#issuecomment-665664761 -assert builtins.compareVersions rustPlatform.rust.rustc.version "1.43.0" >= 0; - -rustPlatform.buildRustPackage rec { - pname = "alacritty-ligatures"; - version = "0.5.0.20200908"; - - src = fetchFromGitHub { - owner = "zenixls2"; - repo = "alacritty"; - fetchSubmodules = true; - rev = "693de26a9fe9bc1252a721a6ba50ef4b34500d33"; - sha256 = "0ybmn6fjn59nnk94bwr19d3rasf5x4c7wp2fynw9s69mm4ryz0n4"; - }; - - cargoSha256 = "10ma465wy2n39l5pl3a9mz0lfxwgqbgla6s7dskzj1i1vnq2n2dy"; - - nativeBuildInputs = [ - cmake - gzip - installShellFiles - makeWrapper - ncurses - pkgconfig - python3 - ]; - - buildInputs = rpathLibs - ++ lib.optionals stdenv.isDarwin [ - AppKit - CoreGraphics - CoreServices - CoreText - Foundation - OpenGL - ]; - - outputs = [ "out" "terminfo" ]; - - postPatch = '' - substituteInPlace alacritty/src/config/mouse.rs \ - --replace xdg-open ${xdg_utils}/bin/xdg-open - ''; - - postBuild = lib.optionalString stdenv.isDarwin "make app"; - - installPhase = '' - runHook preInstall - - install -D target/${triple}/release/alacritty $out/bin/alacritty - - '' + ( - if stdenv.isDarwin then '' - mkdir $out/Applications - cp -r target/${triple}/release/osx/Alacritty.app $out/Applications/Alacritty.app - '' else '' - install -D extra/linux/Alacritty.desktop -t $out/share/applications/ - install -D extra/logo/alacritty-term.svg $out/share/icons/hicolor/scalable/apps/Alacritty.svg - patchelf --set-rpath "${lib.makeLibraryPath rpathLibs}" $out/bin/alacritty - '' - ) + '' - - installShellCompletion --zsh extra/completions/_alacritty - installShellCompletion --bash extra/completions/alacritty.bash - installShellCompletion --fish extra/completions/alacritty.fish - - install -dm 755 "$out/share/man/man1" - gzip -c extra/alacritty.man > "$out/share/man/man1/alacritty.1.gz" - - install -dm 755 "$terminfo/share/terminfo/a/" - tic -xe alacritty,alacritty-direct -o "$terminfo/share/terminfo" extra/alacritty.info - mkdir -p $out/nix-support - echo "$terminfo" >> $out/nix-support/propagated-user-env-packages - - runHook postInstall - ''; - - dontPatchELF = true; - - meta = with lib; { - description = "A cross-platform, GPU-accelerated terminal emulator"; - homepage = "https://github.com/alacritty/alacritty"; - license = licenses.asl20; - maintainers = with maintainers; [ filalex77 mic92 cole-h ma27 ]; - platforms = platforms.unix; - }; -}