From ff6d0c0089464522774ab1381e2b5becf6f59832 Mon Sep 17 00:00:00 2001 From: krizej <60076189+krizej@users.noreply.github.com> Date: Wed, 24 Jul 2024 19:01:46 +0200 Subject: [PATCH] alacritty sixel --- pkgs/alacritty-sixel.nix | 127 +++++++++++++++++++++++++++++++++++++++ pkgs/default.nix | 1 + programs/alacritty.nix | 3 +- 3 files changed, 130 insertions(+), 1 deletion(-) create mode 100644 pkgs/alacritty-sixel.nix diff --git a/pkgs/alacritty-sixel.nix b/pkgs/alacritty-sixel.nix new file mode 100644 index 0000000..69d93ba --- /dev/null +++ b/pkgs/alacritty-sixel.nix @@ -0,0 +1,127 @@ +{ stdenv +, lib +, fetchFromGitHub +, rustPlatform +, nixosTests + +, cmake +, installShellFiles +, makeWrapper +, ncurses +, pkg-config +, python3 +, scdoc + +, expat +, fontconfig +, freetype +, libGL +, xorg +, libxkbcommon +, wayland +, xdg-utils + +}: +let + rpathLibs = [ + expat + fontconfig + freetype + ] ++ lib.optionals stdenv.isLinux [ + libGL + xorg.libX11 + xorg.libXcursor + xorg.libXi + xorg.libXrandr + xorg.libXxf86vm + xorg.libxcb + libxkbcommon + wayland + ]; +in +rustPlatform.buildRustPackage rec { + pname = "alacritty"; + version = "0.13.2"; + + src = fetchFromGitHub { + owner = "ayosec"; + repo = pname; + rev = "6c4910fd20c7bab08b3bcee00eed4b5e4b37ef08"; + hash = "sha256-84rdjQzWNupN5dJsK6Txfl+EARXmkMIQ4TyfjIP1hTE="; + }; + + cargoHash = "sha256-F9NiVbTIVOWUXnHtIUvxlZ5zvGtgz/AAyAhyS4w9f9I="; + + nativeBuildInputs = [ + cmake + installShellFiles + makeWrapper + ncurses + pkg-config + python3 + scdoc + ]; + + buildInputs = rpathLibs + ++ lib.optionals stdenv.isDarwin [ + ]; + + outputs = [ "out" "terminfo" ]; + + postPatch = lib.optionalString stdenv.isLinux '' + substituteInPlace alacritty/src/config/ui_config.rs \ + --replace xdg-open ${xdg-utils}/bin/xdg-open + ''; + + checkFlags = [ "--skip=term::test::mock_term" ]; # broken on aarch64 + + postInstall = ( + if stdenv.isDarwin then '' + mkdir $out/Applications + cp -r extra/osx/Alacritty.app $out/Applications + ln -s $out/bin $out/Applications/Alacritty.app/Contents/MacOS + '' else '' + install -D extra/linux/Alacritty.desktop -t $out/share/applications/ + install -D extra/linux/org.alacritty.Alacritty.appdata.xml -t $out/share/appdata/ + install -D extra/logo/compat/alacritty-term.svg $out/share/icons/hicolor/scalable/apps/Alacritty.svg + + # patchelf generates an ELF that binutils' "strip" doesn't like: + # strip: not enough room for program headers, try linking with -N + # As a workaround, strip manually before running patchelf. + $STRIP -S $out/bin/alacritty + + patchelf --add-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" + install -dm 755 "$out/share/man/man5" + + scdoc < extra/man/alacritty.1.scd | gzip -c > $out/share/man/man1/alacritty.1.gz + scdoc < extra/man/alacritty-msg.1.scd | gzip -c > $out/share/man/man1/alacritty-msg.1.gz + scdoc < extra/man/alacritty.5.scd | gzip -c > $out/share/man/man5/alacritty.5.gz + scdoc < extra/man/alacritty-bindings.5.scd | gzip -c > $out/share/man/man5/alacritty-bindings.5.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 + ''; + + dontPatchELF = true; + + passthru.tests.test = nixosTests.terminal-emulators.alacritty; + + meta = with lib; { + description = "Cross-platform, GPU-accelerated terminal emulator"; + homepage = "https://github.com/alacritty/alacritty"; + license = licenses.asl20; + mainProgram = "alacritty"; + maintainers = with maintainers; [ Br1ght0ne mic92 ]; + platforms = platforms.unix; + changelog = "https://github.com/alacritty/alacritty/blob/v${version}/CHANGELOG.md"; + }; +} diff --git a/pkgs/default.nix b/pkgs/default.nix index d27cdb0..b8a8af2 100644 --- a/pkgs/default.nix +++ b/pkgs/default.nix @@ -12,6 +12,7 @@ sddm-i3-theme = callPackage ./sddm-i3-theme.nix {}; ericw-tools-latest = callPackage ./ericw-tools-latest.nix {}; i3status = prevPkgs.i3status.overrideAttrs (_: { patches = [ ../files/i3status.patch ]; }); + alacritty-sixel = callPackage ./alacritty-sixel.nix {}; vkquake = prevPkgs.vkquake.overrideAttrs (prev: { version = "1.31.1"; src = pkgs.fetchFromGitHub { diff --git a/programs/alacritty.nix b/programs/alacritty.nix index 6ba17ed..a49e846 100644 --- a/programs/alacritty.nix +++ b/programs/alacritty.nix @@ -1,6 +1,7 @@ -{ ... }: +{ pkgs, ... }: { home-manager.users.krizej.programs.alacritty = { + package = pkgs.alacritty-sixel; enable = true; settings = { font.size = 10;