(define-module (pantheon packages terminals) #:use-module ((guix licenses) #:prefix license:) #:use-module ((guix build utils) #:select (alist-replace)) #: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) #:use-module (guix build-system go) #:use-module (guix build-system meson) #:use-module (guix build-system pyproject) #:use-module (guix build-system python) #:use-module (guix download) #:use-module (guix git-download) #:use-module (guix gexp) #:use-module (guix packages) #:use-module (guix utils) #:use-module (gnu packages) #:use-module (gnu packages autotools) #:use-module (gnu packages assembly) #:use-module (gnu packages base) #:use-module (gnu packages bash) #:use-module (gnu packages check) #:use-module (gnu packages compression) #:use-module (gnu packages crates-io) #:use-module (gnu packages crates-graphics) #:use-module (gnu packages crypto) #:use-module (gnu packages curl) #:use-module (gnu packages dlang) #:use-module (gnu packages digest) #:use-module (gnu packages docbook) #:use-module (gnu packages fontutils) #:use-module (gnu packages freedesktop) #:use-module (gnu packages fribidi) #:use-module (gnu packages gettext) #:use-module (gnu packages ghostscript) #:use-module (gnu packages gl) #:use-module (gnu packages glib) #:use-module (gnu packages gnome) #:use-module (gnu packages golang) #:use-module (gnu packages golang-build) #:use-module (gnu packages golang-check) #:use-module (gnu packages golang-xyz) #:use-module (gnu packages gtk) #:use-module (gnu packages image) #:use-module (gnu packages libcanberra) #:use-module (gnu packages libevent) #:use-module (gnu packages libunwind) #:use-module (gnu packages linux) #:use-module (gnu packages man) #:use-module (gnu packages ncurses) #:use-module (gnu packages pcre) #:use-module (gnu packages perl) #:use-module (gnu packages perl-check) #:use-module (gnu packages pkg-config) #:use-module (gnu packages popt) #:use-module (gnu packages protobuf) #:use-module (gnu packages python) #:use-module (gnu packages python-build) #:use-module (gnu packages python-check) #:use-module (gnu packages python-xyz) #:use-module (gnu packages qt) #:use-module (gnu packages serialization) #:use-module (gnu packages sphinx) #:use-module (gnu packages ssh) #:use-module (gnu packages textutils) #:use-module (gnu packages tls) #:use-module (gnu packages version-control) #:use-module (gnu packages xdisorg) #:use-module (gnu packages xml) #:use-module (gnu packages xorg) #:use-module (srfi srfi-26)) (define-public python-furo (package (name "python-furo") (version "2024.5.6") (source (origin (method url-fetch) (uri (pypi-uri "furo" version)) (sha256 (base32 "02rb7mdh8nglw5hjzj8v7pfrc08whfs3411mhfwcpg2yc2k0bwl1")))) (build-system pyproject-build-system) (propagated-inputs (list python-beautifulsoup4 python-pygments python-sphinx python-sphinx-basic-ng python-sphinx-theme-builder )) (home-page "") (synopsis "A clean customisable Sphinx documentation theme.") (description "This package provides a clean customisable Sphinx documentation theme.") (license #f))) (define-public python-sphinx-inline-tabs (package (name "python-sphinx-inline-tabs") (version "2023.4.21") (source (origin (method url-fetch) (uri (pypi-uri "sphinx_inline_tabs" version)) (sha256 (base32 "1g5yhdk208i8maippnbnijd1knpai809wl3cbwzqy59cc0zz3wjx")))) (build-system pyproject-build-system) (propagated-inputs (list ;python-furo python-myst-parser python-flit-core python-pytest python-pytest-cov python-pytest-xdist python-sphinx)) ( arguments ( list #:tests? #f)) (home-page "https://github.com/pradyunsg/sphinx-inline-tabs") (synopsis "Add inline tabbed content to your Sphinx documentation.") (description "Add inline tabbed content to your Sphinx documentation.") (license #f))) ;; via gnu/packages/terminals.scm ;; https://github.com/zzkt/guix/blob/endless/channel/zzkt/packages/kitty.scm (define-public go-1.22 (package (inherit go-1.21) (name "go") (version "1.22.0") (source (origin (method git-fetch) (uri (git-reference (url "https://github.com/golang/go") (commit (string-append "go" version)))) (file-name (git-file-name name version)) (sha256 (base32 "00j6sn2zysk5pdzxw1wfdi31wggzw1h1026ah3x3mi85dwsijhjs")))) (arguments (substitute-keyword-arguments (package-arguments go-1.21) ((#:phases phases) #~(modify-phases #$phases ( delete 'check) (replace 'unpatch-perl-shebangs (lambda _ ;; Avoid inclusion of perl in closure by rewriting references ;; to perl input in sourcecode generators and test scripts (substitute* (find-files "src" "\\.pl$") (("^#!.*") "#!/usr/bin/env perl\n")))))))) (native-inputs ;; Go 1.22 and later requires Go 1.20 (min. 1.20.6, which we don't have) ;; as the bootstrap toolchain. (alist-replace "go" (list go-1.21) (package-native-inputs go-1.21))))) ; (define-public go-github-com-google-go-cmp ; (package ; (name "go-github-com-google-go-cmp") ; (version "0.6.0") ; (source ; (origin ; (method git-fetch) ; (uri (git-reference ; (url "https://github.com/google/go-cmp") ; (commit (string-append "v" version)))) ; (file-name (git-file-name name version)) ; (sha256 ; (base32 "1n1j4hi50bl05pyys4i7y417k9g6k1blslj27z327qny7kkdl2ma")))) ; (build-system go-build-system) ; (arguments ; (list ; #:go go-1.22 ; #:import-path "github.com/google/go-cmp")) ; (home-page "https://github.com/google/go-cmp") ; (synopsis "Package for equality of Go values") ; (description ; "This package is intended to be a more powerful and safer alternative to ; @@code{reflect.@code{DeepEqual}} for comparing whether two values are ; semantically equal.") ; (license license:bsd-3))) ; (define-public go-github-com-google-go-cmp-cmp ; (package ; (name "go-github-com-google-go-cmp-cmp") ; (version "0.6.0") ; (source ; (origin ; (method git-fetch) ; (uri (git-reference ; (url "https://github.com/google/go-cmp") ; (commit (string-append "v" version)))) ; (file-name (git-file-name name version)) ; (sha256 ; (base32 "1n1j4hi50bl05pyys4i7y417k9g6k1blslj27z327qny7kkdl2ma")))) ; (build-system go-build-system) ; (arguments ; ( list #:import-path "github.com/google/go-cmp/cmp" ; #:unpack-path "github.com/google/go-cmp" ; #:go go-1.22 ; #:phases ; `(modify-phases %standard-phases ; (replace 'check ; (lambda* (#:key inputs #:allow-other-keys #:rest args) ; (unless ; ;; The tests fail when run with gccgo. ; (false-if-exception (search-input-file inputs "/bin/gccgo")) ; (apply (assoc-ref %standard-phases 'check) args))))))) ; (synopsis "Determine equality of values in Go") ; (description ; "This package is intended to be a more powerful and safer ; alternative to @@code{reflect.DeepEqual} for comparing whether two values are ; semantically equal.") ; (home-page "https://github.com/google/go-cmp") ; (license license:bsd-3))) ; (define-public go-golang-org-x-exp-q ; (package ; (name "go-golang-org-x-exp") ; (version "0.0.0-20240506185415-9bf2ced13842") ; (source ; (origin ; (method git-fetch) ; (uri (git-reference ; (url "https://go.googlesource.com/exp") ; (commit (go-version->git-ref version)))) ; (file-name (git-file-name name version)) ; (sha256 ; (base32 "1r7r0dj9rg1iyzi4dxkg2y4s35px43sx8z3v7dqdzgim8ccf50z4")))) ; (build-system go-build-system) ; (arguments ; (list ; #:go go-1.22 ; #:import-path "golang.org/x/exp")) ; (propagated-inputs `(("go-golang-org-x-tools" ,go-golang-org-x-tools) ; ("go-golang-org-x-mod" ,go-golang-org-x-mod) ; ("go-github-com-google-go-cmp" ,go-github-com-google-go-cmp-cmp))) ; (home-page "https://golang.org/x/exp") ; (synopsis "exp") ; (description ; "This subrepository holds experimental and deprecated (in the @@code{old} ; directory) packages.") ; (license license:bsd-3))) (define-public go-golang-org-x-exp-q (package (name "go-golang-org-x-exp") (version "0.0.0-20240506185415-9bf2ced13842") (source (origin (method git-fetch) (uri (git-reference (url "https://go.googlesource.com/exp") (commit (go-version->git-ref version)))) (file-name (git-file-name name version)) (sha256 (base32 "1r7r0dj9rg1iyzi4dxkg2y4s35px43sx8z3v7dqdzgim8ccf50z4")))) (build-system go-build-system) (arguments ( list #:import-path "golang.org/x/exp" ;; Source-only package #:go go-1.22 #:tests? #f #:phases `(modify-phases %standard-phases (delete 'build)))) (home-page "https://golang.org/x/exp") (synopsis "Experimental and deprecated Go packages") (description "This subrepository holds experimental and deprecated (in the @code{old} directory) packages.") (license license:bsd-3))) (define-public go-github-com-altree-bigfloat (package (name "go-github-com-altree-bigfloat") (version "0.2.0") (source (origin (method git-fetch) (uri (git-reference (url "https://github.com/ALTree/bigfloat") (commit (string-append "v" version)))) (file-name (git-file-name name version)) (sha256 (base32 "1jvqg5w4azwqv0ranir6vhlh6403pn6043jqbwsldan4vj6n5xmh")))) (build-system go-build-system) (arguments (list #:import-path "github.com/ALTree/bigfloat")) (native-inputs (list go-1.22)) (home-page "https://github.com/ALTree/bigfloat") (synopsis "Example") (description "Package bigfloat provides arbitrary-precision natural logarithm and exponentiation for the standard library's @@code{big.Float} type.") (license license:expat))) (define-public go-github-com-bmatcuk-doublestar-v4 (package (name "go-github-com-bmatcuk-doublestar-v4") (version "4.6.1") (source (origin (method git-fetch) (uri (git-reference (url "https://github.com/bmatcuk/doublestar") (commit (string-append "v" version)))) (file-name (git-file-name name version)) (sha256 (base32 "12rf4a9isgg2nh927gikgbmyaynaqp4kjahgscb4qnr04m3vpr41")))) (build-system go-build-system) (arguments (list #:import-path "github.com/bmatcuk/doublestar/v4")) (home-page "https://github.com/bmatcuk/doublestar") (synopsis "doublestar") (description "Path pattern matching and globbing supporting @@code{doublestar} (@@code{**}) patterns.") (license license:expat))) (define-public go-github-com-seancfoley-bintree (package (name "go-github-com-seancfoley-bintree") (version "1.2.3") (source (origin (method git-fetch) (uri (git-reference (url "https://github.com/seancfoley/bintree") (commit (string-append "v" version)))) (file-name (git-file-name name version)) (sha256 (base32 "17faiyfbf8x688ij40d3g80s2z2m5h5w23j92mf2k0ws5g6fi9vx")))) (build-system go-build-system) (arguments (list #:go go-1.18 #:import-path "github.com/seancfoley/bintree/tree" #:unpack-path "github.com/seancfoley/bintree")) (home-page "https://github.com/seancfoley/bintree") (synopsis "bintree") (description "Binary trees and tries") (license license:asl2.0))) (define-public go-github-com-seancfoley-ipaddress-go-ipaddr (package (name "go-github-com-seancfoley-ipaddress-go-ipaddr") (version "1.5.5") (source (origin (method git-fetch) (uri (git-reference (url "https://github.com/seancfoley/ipaddress-go") (commit (string-append "v" version)))) (file-name (git-file-name name version)) (sha256 (base32 "03yz5pb1mgj25i4n90sfqnmwr88872s096pna178g8zh90r55628")))) (build-system go-build-system) (arguments (list #:go go-1.18 #:import-path "github.com/seancfoley/ipaddress-go/ipaddr" #:unpack-path "github.com/seancfoley/ipaddress-go")) (propagated-inputs `(("go-github-com-seancfoley-bintree" ,go-github-com-seancfoley-bintree))) (home-page "https://github.com/seancfoley/ipaddress-go") (synopsis #f) (description "IPAddress is a library for handling IP addresses and subnets, both IPv4 and IPv6.") (license (list license:asl2.0 license:asl2.0)))) (define-public go-github-com-rwcarlsen-goexif-exif (package (name "go-github-com-rwcarlsen-goexif-exif") (version "0.0.0-20190401172101-9e8deecbddbd") (source (origin (method git-fetch) (uri (git-reference (url "https://github.com/rwcarlsen/goexif") (commit (go-version->git-ref version)))) (file-name (git-file-name name version)) (sha256 (base32 "1drqhzplg72lvrf3qmb9awbggnjqp23hwn2pgvksi3spv17kc9h2")))) (build-system go-build-system) (arguments (list #:import-path "github.com/rwcarlsen/goexif/exif" #:unpack-path "github.com/rwcarlsen/goexif")) (home-page "https://github.com/rwcarlsen/goexif") (synopsis "goexif") (description "This package provides decoding of basic exif and tiff encoded data. Still in alpha - no guarantees. Suggestions and pull requests are welcome. Functionality is split into two packages - \"exif\" and \"tiff\" The exif package depends on the tiff package.") (license license:bsd-2))) (define-public go-github-com-rwcarlsen-goexif-tiff (package (name "go-github-com-rwcarlsen-goexif-tiff") (version "0.0.0-20190401172101-9e8deecbddbd") (source (origin (method git-fetch) (uri (git-reference (url "https://github.com/rwcarlsen/goexif") (commit (go-version->git-ref version)))) (file-name (git-file-name name version)) (sha256 (base32 "1drqhzplg72lvrf3qmb9awbggnjqp23hwn2pgvksi3spv17kc9h2")))) (build-system go-build-system) (arguments (list #:import-path "github.com/rwcarlsen/goexif/tiff" #:unpack-path "github.com/rwcarlsen/goexif")) (home-page "https://github.com/rwcarlsen/goexif") (synopsis "goexif") (description "This package provides decoding of basic exif and tiff encoded data. Still in alpha - no guarantees. Suggestions and pull requests are welcome. Functionality is split into two packages - \"exif\" and \"tiff\" The exif package depends on the tiff package.") (license license:bsd-2))) (define-public go-github-com-edwvee-exiffix (package (name "go-github-com-edwvee-exiffix") (version "0.0.0-20240229113213-0dbb146775be") (source (origin (method git-fetch) (uri (git-reference (url "https://github.com/edwvee/exiffix") (commit (go-version->git-ref version)))) (file-name (git-file-name name version)) (sha256 (base32 "1i4p1xnbm04ih2735h58n1p1j6cjmr6d3bfx41862ki0qc12lfn4")))) (build-system go-build-system) (arguments (list #:import-path "github.com/edwvee/exiffix")) (propagated-inputs (list go-golang-org-x-image go-github-com-disintegration-imaging go-github-com-rwcarlsen-goexif-exif go-github-com-rwcarlsen-goexif-tiff)) (home-page "https://github.com/edwvee/exiffix") (synopsis "Exiffix") (description "Exiffix is a one function golang library made to be a replacement for image.Decode to handle orientation stored in EXIF data.") (license license:expat))) (define-public go-github-com-kovidgoyal-imaging (package (name "go-github-com-kovidgoyal-imaging") (version "1.6.3") (source (origin (method git-fetch) (uri (git-reference (url "https://github.com/kovidgoyal/imaging") (commit (string-append "v" version)))) (file-name (git-file-name name version)) (sha256 (base32 "123hfgjzp2401l8rfb3h2agyijj03w2a2sdxcziybmplw4r8pbi3")))) (build-system go-build-system) (arguments (list #:go go-1.21 #:import-path "github.com/kovidgoyal/imaging")) (propagated-inputs `(("go-golang-org-x-image" ,go-golang-org-x-image))) (home-page "https://github.com/kovidgoyal/imaging") (synopsis "Imaging") (description "Package imaging provides basic image processing functions (resize, rotate, crop, brightness/contrast adjustments, etc.).") (license license:expat))) (define-public go-github-com-klauspost-cpuid-v2 (package (name "go-github-com-klauspost-cpuid-v2") (version "2.2.7") (source (origin (method git-fetch) (uri (git-reference (url "https://github.com/klauspost/cpuid") (commit (string-append "v" version)))) (file-name (git-file-name name version)) (sha256 (base32 "0i1y5zgcj350l3idqfxjkcs18ii5w315xjmmabqbqrx27sn8fqh1")))) (build-system go-build-system) (arguments (list #:import-path "github.com/klauspost/cpuid/v2")) (propagated-inputs `(("go-golang-org-x-sys" ,go-golang-org-x-sys))) (home-page "https://github.com/klauspost/cpuid") (synopsis "cpuid") (description "Package cpuid provides information about the CPU running the current program.") (license license:expat))) (define-public go-github-com-zeebo-assert (package (name "go-github-com-zeebo-assert") (version "1.3.1") (source (origin (method git-fetch) (uri (git-reference (url "https://github.com/zeebo/assert") (commit (string-append "v" version)))) (file-name (git-file-name name version)) (sha256 (base32 "0xfklg04ic4xl5q7xy913jzvn2v9bxmrsnm4lyjqznninysgs9xb")))) (build-system go-build-system) (arguments (list #:import-path "github.com/zeebo/assert")) (home-page "https://github.com/zeebo/assert") (synopsis "package assert") (description "See the api docs. There's not a lot of surface area, and that's the goal.") (license license:cc0))) (define-public go-github-com-zeebo-xxh3 (package (name "go-github-com-zeebo-xxh3") (version "1.0.2") (source (origin (method git-fetch) (uri (git-reference (url "https://github.com/zeebo/xxh3") (commit (string-append "v" version)))) (file-name (git-file-name name version)) (sha256 (base32 "1gy666r5v1d1n2cfig9plhyp7z09f06k6mr5lrf0mk6psk6bnwgi")))) (build-system go-build-system) (arguments (list #:import-path "github.com/zeebo/xxh3")) (propagated-inputs `(("go-github-com-zeebo-assert" ,go-github-com-zeebo-assert) ("go-github-com-klauspost-cpuid-v2" ,go-github-com-klauspost-cpuid-v2))) (home-page "https://github.com/zeebo/xxh3") (synopsis "XXH3") (description "This package is a port of the @@url{https://github.com/Cyan4973/@code{xxHash,xxh3}} library to Go.") (license license:bsd-2))) (define-public go-github-com-alecthomas-chroma-v2-13 (package (inherit go-github-com-alecthomas-chroma) (name "go-github-com-alecthomas-chroma-v2-13") (version "2.13.0") (source (origin (method git-fetch) (uri (git-reference (url "https://github.com/alecthomas/chroma") (commit (string-append "v" version)))) (file-name (git-file-name name version)) (sha256 (base32 "1vq53pma340g3v9xb5g8wpj9zvl9jsdshq6gw245f4hczn569sdd")))) (arguments (list #:go go-1.22 #:import-path "github.com/alecthomas/chroma/v2" #:unpack-path "github.com/alecthomas/chroma/v2")) ; )) (propagated-inputs (list go-github-com-dlclark-regexp2)) (native-inputs (list go-github-com-alecthomas-assert-v2 go-github-com-alecthomas-repr)))) (define-public kitty-next (let ((commit "b3cc5aed30c8e83715fa955e9d3183a0e433a9c3") (revision "0")) (package (name "kitty-next") (version (git-version "0.34.1" revision commit)) (home-page "https://sw.kovidgoyal.net/kitty/") (source (origin (method git-fetch) (uri (git-reference (url "https://github.com/kovidgoyal/kitty") (commit commit) (recursive? #t))) (file-name (git-file-name name version)) (sha256 (base32 "0n841kyhbm7icbby575blx75ykac9zj0a3jjy35ymkhqnz5dayq1")) (modules '((guix build utils))) (snippet '(begin ;; patch needed as sphinx-build is used as a python script ;; whereas the guix package uses a bash script launching the ;; python script (substitute* "docs/conf.py" (("(from kitty.constants import str_version)" kitty-imp) (string-append "sys.path.append(\"..\")\n" kitty-imp))) (substitute* "docs/Makefile" (("^SPHINXBUILD[[:space:]]+= (python3.*)$") "SPHINXBUILD = sphinx-build\n")) #t)) ( patches ( list ( plain-file "removeDocBuild.patch" "index 61352c2..560596e 100755 --- a/setup.py +++ b/setup.py @@ -1316,24 +1316,7 @@ def create_linux_bundle_gunk(ddir: str, args: Options) -> None: base = Path(ddir) in_src_launcher = base / (f'{libdir_name}/kitty/kitty/launcher/kitty') launcher = base / 'bin/kitty' - skip_docs = False - if not os.path.exists('docs/_build/html'): - kitten_exe = os.path.join(os.path.dirname(str(launcher)), 'kitten') - if os.path.exists(kitten_exe): - os.environ['KITTEN_EXE_FOR_DOCS'] = kitten_exe - make = 'gmake' if is_freebsd else 'make' - run_tool([make, 'docs']) - else: - if args.skip_building_kitten: - skip_docs = True - print('WARNING: You have chosen to skip building kitten.' - ' This means docs could not be generated and will not be included in the linux package.' - ' You should build kitten and then re-run this build.', file=sys.stderr) - else: - raise SystemExit(f'kitten binary not found at: {kitten_exe}') - if not skip_docs: - copy_man_pages(ddir) - copy_html_docs(ddir) + for (icdir, ext) in {'256x256': 'png', 'scalable': 'svg'}.items(): icdir = os.path.join(ddir, 'share', 'icons', 'hicolor', icdir, 'apps') safe_makedirs(icdir)" ) ) ) )) (build-system go-build-system) (propagated-inputs (list go-golang-org-x-sys go-golang-org-x-exp-q go-github-com-altree-bigfloat go-github-com-bmatcuk-doublestar-v4 go-github-com-seancfoley-ipaddress-go-ipaddr go-github-com-dhowett-go-plist go-github-com-shirou-gopsutil-v3 go-github-com-google-uuid go-github-com-edwvee-exiffix go-github-com-kovidgoyal-imaging go-golang-org-x-image ; go-github-com-alecthomas-chroma-v2 go-github-com-alecthomas-chroma-v2-13 go-github-com-dlclark-regexp2 go-github-com-zeebo-xxh3 )) (native-inputs (list dbus mesa libxcursor libxi libxinerama libxkbcommon libxrandr ncurses ;; for tic command pkg-config ; python-sphinx ; python-sphinx-copybutton ; python-sphinxext-opengraph ; python-sphinx-inline-tabs wayland-protocols go-1.22 simde strace coreutils git)) (inputs (list fontconfig freetype harfbuzz lcms libcanberra startup-notification libpng python-pygments python-wrapper wayland openssl xxhash zlib)) (arguments (list #:go go-1.22 #:import-path "kitty" #:phases #~( begin ( use-modules ( oop goops) ( ice-9 ftw) ( guix build utils)) ( modify-phases %standard-phases (add-before 'check 'fix-home-directory (lambda _ (setenv "HOME" "/tmp"))) (add-before 'build 'fix-gocache-directory (lambda _ (setenv "HOME" "/tmp") (setenv "GOCACHE" "/tmp/.gocache") (setenv "GOPROXY" "direct") (setenv "GOFLAGS" "-buildmode=pie -trimpath -ldflags=-linkmode=external -mod=readonly -modcacherw"))) (delete 'configure) ;no configure script ( add-after 'setup-go-environment 'realIseLinkS ( lambda _ ( define ( readBaseLink file) ( if ( equal? ( stat:type ( lstat file) ) 'symlink ) ( readBaseLink ( let ( ( linkResult ( readlink file) ) ) ( if ( and ( not ( eqv? ( string-length linkResult) 0 ) ) ( equal? ( string-ref linkResult 0 ) #\/ ) ) linkResult ( string-append ( dirname file) "/" linkResult ) ) ) ) file ) ) ( define ( realise dir) ( for-each ( lambda ( fileName) ( let* ( ( path ( string-append dir "/" fileName ) ) ( pathType ( stat:type ( lstat path) ) ) ) ( if ( equal? pathType 'symlink ) ( let* ( ( base ( readBaseLink path) ; ( readlink path) ) ( baseType ( stat:type ( stat base) ) ) ) ( display "SYMLINK ")( display path)( display " -> ")( display base)( display baseType)( newline) ( if ( equal? baseType 'regular ) ( begin ( delete-file path) ( copy-file base path ) ) ( when ( equal? baseType 'directory ) ( begin ( delete-file path) ( copy-recursively base path ) ( realise path ) ) ) ) ) ( when ( equal? pathType 'directory ) ( realise path ) ) ) ) ) ( filter ( lambda ( name) ( not ( member name ( list "." ".." ) ) ) ) ( scandir dir) ) ) ) ( realise ( string-append ( getcwd) "/src/github.com/alecthomas/chroma/v2" ) ) ; ( invoke "ls" "-la" ( string-append ; ( getcwd) ; "/src/github.com/alecthomas/chroma/v2/styles" ; )) ; ( error "") ) ) (replace 'build (lambda* (#:key inputs #:allow-other-keys) ;; The "kitty" sub-directory must be writable prior to ;; configuration (e.g., un-setting updates). ( newline) ; ( display inputs) ( let ( ( chroma ( assoc-ref inputs "go-github-com-alecthomas-chroma-v2-13"))) ( display ( scandir ( string-append chroma ; "/src/styles" "/src/github.com/alecthomas/chroma/v2" ) ) ) ) ( newline) ( let ( ( dir ( string-append ( getcwd) "/src/github.com/alecthomas/chroma/v2/styles" ) )) ( invoke "ls" "-la" dir) ; ( display ; ( map ; ( lambda ; ( name) ; ) ; ( scandir ; dir ; ) ; ) ; ) ) ( newline) (chdir "src/kitty") (for-each make-file-writable (find-files "kitty")) ( invoke "go" "version") (invoke "python3" "setup.py" "linux-package" ;; Do not phone home. "--update-check-interval=0" ;; "--skip-building-kitten" (string-append "--fontconfig-library=" (search-input-file inputs "/lib/libfontconfig.so")) (string-append "--canberra-library=" (search-input-file inputs "/lib/libcanberra.so")) (string-append "--startup-notification-library=" (search-input-file inputs "/lib/libstartup-notification-1.so")) ;; Wayland backend requires EGL, which isn't ;; found out-of-the-box for some reason. (string-append "--egl-library=" (search-input-file inputs "/lib/libEGL.so.1")) ) ) ) (delete 'check) ;; (replace 'check ;; (lambda* (#:key tests? #:allow-other-keys) ;; (when tests? ;; ;; Fix "cannot find kitty executable" error when running ;; ;; tests. ;; (invoke "ls" "-l") ;; (setenv "PATH" (string-append "linux-package/bin:" ;; (getenv "PATH"))) ;; (invoke "python3" "test.py")))) (add-before 'install 'rm-pycache ;; created python cache __pycache__ are non deterministic (lambda _ (let ((pycaches (find-files "linux-package/" "__pycache__" #:directories? #t))) (for-each delete-file-recursively pycaches)))) (delete 'install-license-files) (replace 'install (lambda _ (let* ((obin (string-append #$output "/bin")) (olib (string-append #$output "/lib")) (oshare (string-append #$output "/share"))) (copy-recursively "linux-package/bin" obin) (copy-recursively "linux-package/share" oshare) (copy-recursively "linux-package/lib" olib)))))))) (synopsis "Fast, featureful, GPU based terminal emulator") (description "Kitty is a fast and featureful GPU-based terminal emulator: @itemize @item Offloads rendering to the GPU for lower system load and buttery smooth scrolling. Uses threaded rendering to minimize input latency. @item Supports all modern terminal features: graphics (images), unicode, true-color, OpenType ligatures, mouse protocol, focus tracking, bracketed paste and several new terminal protocol extensions. @item Supports tiling multiple terminal windows side by side in different layouts without needing to use an extra program like tmux. @item Can be controlled from scripts or the shell prompt, even over SSH. @item Has a framework for Kittens, small terminal programs that can be used to extend kitty's functionality. For example, they are used for Unicode input, hints, and side-by-side diff. @item Supports startup sessions which allow you to specify the window/tab layout, working directories and programs to run on startup. @item Allows you to open the scrollback buffer in a separate window using arbitrary programs of your choice. This is useful for browsing the history comfortably in a pager or editor. @end itemize") (license license:gpl3+)))) ; go-github-com-alecthomas-chroma-v2-13 kitty-next