gnu: Add alacritty.
* gnu/packages/terminals.scm (alacritty): New variable. Signed-off-by: Efraim Flashner <efraim@flashner.co.il>
This commit is contained in:
parent
d082ffe2c3
commit
22e928003d
1 changed files with 182 additions and 0 deletions
|
@ -18,6 +18,7 @@
|
|||
;;; Copyright © 2019 Pierre Langlois <pierre.langlois@gmx.com>
|
||||
;;; Copyright © 2019 Brett Gilio <brettg@gnu.org>
|
||||
;;; Copyright © 2020 Jakub Kądziołka <kuba@kadziolka.net>
|
||||
;;; Copyright © 2020 Valentin Ignatev <valentignatev@gmail.com>
|
||||
;;;
|
||||
;;; This file is part of GNU Guix.
|
||||
;;;
|
||||
|
@ -36,6 +37,7 @@
|
|||
|
||||
(define-module (gnu packages terminals)
|
||||
#:use-module ((guix licenses) #:prefix license:)
|
||||
#:use-module (guix build-system cargo)
|
||||
#:use-module (guix build-system cmake)
|
||||
#:use-module (guix build-system gnu)
|
||||
#:use-module (guix build-system glib-or-gtk)
|
||||
|
@ -47,7 +49,9 @@ (define-module (gnu packages terminals)
|
|||
#:use-module (gnu packages)
|
||||
#:use-module (gnu packages autotools)
|
||||
#:use-module (gnu packages check)
|
||||
#:use-module (gnu packages cmake)
|
||||
#:use-module (gnu packages compression)
|
||||
#:use-module (gnu packages crates-io)
|
||||
#:use-module (gnu packages crypto)
|
||||
#:use-module (gnu packages docbook)
|
||||
#:use-module (gnu packages fontutils)
|
||||
|
@ -1141,3 +1145,181 @@ (define-public wterm
|
|||
an st fork using wld. st is a simple terminal emulator for X originally
|
||||
made by suckless.")
|
||||
(license license:x11)))
|
||||
|
||||
(define-public alacritty
|
||||
(package
|
||||
(name "alacritty")
|
||||
(version "0.4.1")
|
||||
(source
|
||||
(origin
|
||||
(method git-fetch)
|
||||
(uri (git-reference
|
||||
(url "https://github.com/jwilm/alacritty.git")
|
||||
(commit (string-append "v" version))))
|
||||
(file-name (git-file-name name version))
|
||||
(sha256
|
||||
(base32 "05jcg33ifngpzw2hdhgb614j87ihhhlqgar0kky183rywg0dxikg"))
|
||||
(modules '((guix build utils)))
|
||||
(snippet
|
||||
;; Don't use a custom location for winit-0.20-alpha6.
|
||||
'(begin (substitute* "Cargo.toml"
|
||||
(("winit .*") ""))
|
||||
#t))))
|
||||
(build-system cargo-build-system)
|
||||
(arguments
|
||||
`(#:cargo-inputs
|
||||
(("rust-clap" ,rust-clap-2)
|
||||
("rust-log" ,rust-log-0.4)
|
||||
("rust-time" ,rust-time-0.1)
|
||||
("rust-env-logger" ,rust-env-logger-0.7)
|
||||
("rust-serde" ,rust-serde-1.0)
|
||||
("rust-serde-yaml" ,rust-serde-yaml-0.8)
|
||||
("rust-serde-json" ,rust-serde-json-1.0)
|
||||
("rust-glutin" ,rust-glutin-0.22) ; adjust 'patch-glutin-libgl-path as needed
|
||||
("rust-notify" ,rust-notify-4)
|
||||
("rust-libc" ,rust-libc-0.2)
|
||||
("rust-unicode-width" ,rust-unicode-width-0.1)
|
||||
("rust-parking-lot" ,rust-parking-lot-0.9)
|
||||
("rust-urlocator" ,rust-urlocator-0.1)
|
||||
("rust-xdg" ,rust-xdg-2.2)
|
||||
("rust-image" ,rust-image-0.22)
|
||||
("rust-dirs" ,rust-dirs-2.0)
|
||||
("rust-x11-dl" ,rust-x11-dl-2)
|
||||
("rust-winapi" ,rust-winapi-0.3)
|
||||
("rust-base64" ,rust-base64-0.11)
|
||||
("rust-bigflags" ,rust-bitflags-1)
|
||||
("rust-fnv" ,rust-fnv-1.0)
|
||||
("rust-mio" ,rust-mio-0.6)
|
||||
("rust-mio-extras" ,rust-mio-extras-2)
|
||||
("rust-terminfo" ,rust-terminfo-0.6)
|
||||
("rust-url" ,rust-url-2.1)
|
||||
("rust-vte" ,rust-vte-0.3)
|
||||
("rust-nix" ,rust-nix-0.15)
|
||||
("rust-miow" ,rust-miow-0.3)
|
||||
("rust-mio-anonymous-pipes" ,rust-mio-anonymous-pipes-0.1)
|
||||
("rust-mio-named-pipes" ,rust-mio-named-pipes-0.1)
|
||||
("rust-signal-hook" ,rust-signal-hook-0.1)
|
||||
("rust-clipboard-win" ,rust-clipboard-win-2.1)
|
||||
("rust-objc" ,rust-objc-0.2)
|
||||
("rust-objc-id" ,rust-objc-id-0.1)
|
||||
("rust-objc-foundation" ,rust-objc-foundation-0.1)
|
||||
("rust-x11-clipboard" ,rust-x11-clipboard-0.4)
|
||||
("rust-smithay-clipboard" ,rust-smithay-clipboard-0.3)
|
||||
("rust-wayland-client" ,rust-wayland-client-0.23)
|
||||
("rust-euclid" ,rust-euclid-0.20)
|
||||
("rust-foreign-types" ,rust-foreign-types-0.5)
|
||||
("rust-servo-fontconfig" ,rust-servo-fontconfig-0.4)
|
||||
("rust-freetype-rs" ,rust-freetype-rs-0.23)
|
||||
("rust-core-foundation" ,rust-core-foundation-0.6)
|
||||
("rust-core-foundation-sys" ,rust-core-foundation-sys-0.6)
|
||||
("rust-core-text" ,rust-core-text-13)
|
||||
("rust-core-graphics" ,rust-core-graphics-0.17)
|
||||
("rust-dwrote" ,rust-dwrote-0.9)
|
||||
("rust-winpty-sys" ,rust-winpty-sys-0.4))
|
||||
#:cargo-development-inputs
|
||||
(("rust-rustc-tools-util" ,rust-rustc-tools-util-0.2)
|
||||
("rust-gl-generator" ,rust-gl-generator-0.14)
|
||||
("rust-andrew" ,rust-andrew-0.2)
|
||||
("rust-smithay-client-toolkit" ,rust-smithay-client-toolkit-0.6)
|
||||
("rust-embed-resource" ,rust-embed-resource-1.3)
|
||||
("rust-http-req" ,rust-http-req-0.5)
|
||||
("rust-zip" ,rust-zip-0.5)
|
||||
("rust-tempfile" ,rust-tempfile-3.1)
|
||||
("rust-named-pipe" ,rust-named-pipe-0.4)
|
||||
("rust-winapi" ,rust-winapi-0.3))
|
||||
#:phases
|
||||
(modify-phases %standard-phases
|
||||
(add-after 'configure 'patch-glutin-libgl-path
|
||||
(lambda* (#:key inputs cargo-inputs vendor-dir #:allow-other-keys)
|
||||
(let* ((glutin-name ,(package-name rust-glutin-0.22))
|
||||
(glutin-version ,(package-version rust-glutin-0.22))
|
||||
(src-api
|
||||
(string-append
|
||||
glutin-name "-" glutin-version ".tar.gz/src/api/"))
|
||||
(mesa (assoc-ref inputs "mesa")))
|
||||
(substitute* (string-append vendor-dir "/" src-api "glx/mod.rs")
|
||||
(("libGL.so") (string-append mesa "/lib/libGL.so")))
|
||||
(substitute* (string-append vendor-dir "/" src-api "egl/mod.rs")
|
||||
(("libEGL.so") (string-append mesa "/lib/libEGL.so")))
|
||||
#t)))
|
||||
(add-after 'configure 'remove-alacritty-vendor
|
||||
(lambda* (#:key vendor-dir #:allow-other-keys)
|
||||
;; We don't want Alacritty to be a dependency of itself
|
||||
;; If we don't delete it from guix-vendor then build will fail
|
||||
;; because Alacritty has a virtual workspace Cargo.toml.
|
||||
(delete-file-recursively
|
||||
(string-append vendor-dir "/alacritty-" ,version ".tar.xz"))
|
||||
#t))
|
||||
(replace 'install
|
||||
(lambda* (#:key inputs outputs #:allow-other-keys)
|
||||
(let* ((out (assoc-ref outputs "out"))
|
||||
(share (string-append out "/share"))
|
||||
(icons (string-append share "/icons/hicolor/scalable/apps"))
|
||||
(tic (string-append (assoc-ref inputs "ncurses") "/bin/tic"))
|
||||
(man (string-append share "/man/man1"))
|
||||
(alacritty-bin "target/release/alacritty"))
|
||||
|
||||
;; Install binary
|
||||
(install-file alacritty-bin (string-append out "/bin"))
|
||||
|
||||
;; Install man pages
|
||||
(mkdir-p man)
|
||||
(copy-file "extra/alacritty.man"
|
||||
(string-append man "/alacritty.1"))
|
||||
|
||||
;; Install desktop file
|
||||
(install-file "extra/linux/alacritty.desktop"
|
||||
(string-append share "/applications"))
|
||||
|
||||
;; Install icon
|
||||
(mkdir-p icons)
|
||||
(copy-file "extra/logo/alacritty-term.svg"
|
||||
(string-append icons "/Alacritty.svg"))
|
||||
|
||||
;; Install terminfo
|
||||
(mkdir-p (string-append share "/terminfo"))
|
||||
;; We don't compile alacritty-common entry because
|
||||
;; it's being used only for inheritance.
|
||||
(invoke tic "-x" "-e" "alacritty,alacritty-direct"
|
||||
"-o" (string-append share "/terminfo/")
|
||||
"extra/alacritty.info")
|
||||
|
||||
;; Install completions
|
||||
(install-file
|
||||
"extra/completions/alacritty.bash"
|
||||
(string-append out "/etc/bash_completion.d"))
|
||||
(install-file
|
||||
"extra/completions/_alacritty"
|
||||
(string-append share "/zsh/site-functions"))
|
||||
(install-file
|
||||
"extra/completions/alacritty.fish"
|
||||
(string-append share "/fish/vendor_completions.d"))
|
||||
#t))))))
|
||||
(inputs
|
||||
`(("expat" ,expat)
|
||||
("fontconfig" ,fontconfig)
|
||||
("freetype" ,freetype)
|
||||
("libx11" ,libx11)
|
||||
("libxcb" ,libxcb)
|
||||
("libxcursor" ,libxcursor)
|
||||
("libxi" ,libxi)
|
||||
("libxkbcommon" ,libxkbcommon)
|
||||
("libxrandr" ,libxrandr)
|
||||
("libxxf86vm" ,libxxf86vm)
|
||||
("wayland" ,wayland)
|
||||
("mesa" ,mesa)))
|
||||
(native-inputs
|
||||
`(("cmake" ,cmake)
|
||||
("ncurses" ,ncurses)
|
||||
("pkg-config" ,pkg-config)
|
||||
("python3" ,python)))
|
||||
(home-page "https://github.com/alacritty/alacritty")
|
||||
(synopsis "GPU-accelerated terminal emulator")
|
||||
(description
|
||||
"Alacritty is a GPU-accelerated terminal emulator with a strong focus on
|
||||
simplicity and performance. With such a strong focus on performance, included
|
||||
features are carefully considered and you can always expect Alacritty to be
|
||||
blazingly fast. By making sane choices for defaults, Alacritty requires no
|
||||
additional setup. However, it does allow configuration of many aspects of the
|
||||
terminal. Note that you need support for OpenGL 3.2 or higher.")
|
||||
(license license:asl2.0)))
|
||||
|
|
Loading…
Reference in a new issue