Use commit of guile-ts supporting TREE_SITTER_GRAMMAR_PATH

This commit is contained in:
Skylar Hill 2023-11-04 18:05:57 -05:00
parent 57ce73370d
commit eff0f10911
1 changed files with 154 additions and 149 deletions

303
guix.scm
View File

@ -8,158 +8,163 @@
(guix build-system gnu) (guix build-system gnu)
(guix download) (guix download)
(guix gexp) (guix gexp)
(guix transformations)
((guix licenses) ((guix licenses)
#:prefix license:) #:prefix license:)
(guix packages) (guix packages)
(srfi srfi-1)) (srfi srfi-1))
(package (define guile-ts-transform
(name "sloth") (options->transformation
(version "0.1-dev") '((with-commit . "guile-ts=266453a"))))
(source
(local-file (package
(dirname (current-filename)) (name "sloth")
#:recursive? #t (version "0.1-dev")
#:select? (λ (file stat) (source
(not (any (λ (my-string) (local-file
(string-contains file my-string)) (dirname (current-filename))
(list ".git" ".dir-locals.el" "guix.scm")))))) #:recursive? #t
(build-system gnu-build-system) #:select? (λ (file stat)
(arguments (not (any (λ (my-string)
(list (string-contains file my-string))
#:make-flags (list ".git" ".dir-locals.el" "guix.scm"))))))
#~(list "GUILE_AUTO_COMPILE=0") (build-system gnu-build-system)
#:phases (arguments
#~(modify-phases %standard-phases (list
(delete 'strip) #:make-flags
(add-before 'configure 'hall-build #~(list "GUILE_AUTO_COMPILE=0")
(λ _ (system* "hall" "build" "-x"))) #:phases
(add-after 'hall-build 'autoreconf #~(modify-phases %standard-phases
(λ _ (system* "autoreconf" "-vif"))) (delete 'strip)
(add-after 'install 'hall-wrap-binaries (add-before 'configure 'hall-build
(λ _ (λ _ (system* "hall" "build" "-x")))
(use-modules (ice-9 ftw)) (add-after 'hall-build 'autoreconf
(define (guile-compiled-dir out version) (λ _ (system* "autoreconf" "-vif")))
(string-append out "/lib/guile/" (add-after 'install 'hall-wrap-binaries
version (λ _
"/site-ccache")) (use-modules (ice-9 ftw))
(define (guile-uncompiled-dir out version) (define (guile-compiled-dir out version)
(string-append out (string-append out "/lib/guile/"
"/share/guile/site" version
(if (string-null? version) "" "/site-ccache"))
"/") (define (guile-uncompiled-dir out version)
version)) (string-append out
(define (guile-dep-path env modules path) "/share/guile/site"
(list env ":" 'prefix (if (string-null? version) ""
(cons modules "/")
(map (λ (input) version))
(string-append input path)) (define (guile-dep-path env modules path)
;; TODO: figure out how to put these in a list shared (list env ":" 'prefix
;; with inputs because DRY (cons modules
(list #$guile-config (map (λ (input)
#$guile-ncurses (string-append input path))
#$guile-ts))))) ;; TODO: figure out how to put these in a list shared
(define bin (string-append #$output "/bin/")) ;; with inputs because DRY
(define site (guile-uncompiled-dir #$output "")) (list #$guile-config
(define version (caddr (scandir site))) #$guile-ncurses
(wrap-program (string-append bin "sloth") #$(guile-ts-transform guile-ts))))))
(guile-dep-path (define bin (string-append #$output "/bin/"))
"GUILE_LOAD_PATH" (define site (guile-uncompiled-dir #$output ""))
(guile-uncompiled-dir #$output version) (define version (caddr (scandir site)))
(guile-uncompiled-dir "" version)) (wrap-program (string-append bin "sloth")
(guile-dep-path (guile-dep-path
"GUILE_LOAD_COMPILED_PATH" "GUILE_LOAD_PATH"
(guile-compiled-dir #$output version) (guile-uncompiled-dir #$output version)
(guile-compiled-dir "" version)) (guile-uncompiled-dir "" version))
(list "TREE_SITTER_GRAMMAR_PATH" ":" '= (guile-dep-path
(map (λ (input) "GUILE_LOAD_COMPILED_PATH"
(string-append input "/lib/tree-sitter")) (guile-compiled-dir #$output version)
;; TODO: figure out how to put these in a list shared (guile-compiled-dir "" version))
;; with inputs because DRY (list "TREE_SITTER_GRAMMAR_PATH" ":" '=
(list #$tree-sitter-bash (map (λ (input)
#$tree-sitter-bibtex (string-append input "/lib/tree-sitter"))
#$tree-sitter-c ;; TODO: figure out how to put these in a list shared
#$tree-sitter-c-sharp ;; with inputs because DRY
#$tree-sitter-clojure (list #$tree-sitter-bash
#$tree-sitter-cmake #$tree-sitter-bibtex
#$tree-sitter-cpp #$tree-sitter-c
#$tree-sitter-css #$tree-sitter-c-sharp
#$tree-sitter-dockerfile #$tree-sitter-clojure
#$tree-sitter-elixir #$tree-sitter-cmake
#$tree-sitter-elm #$tree-sitter-cpp
#$tree-sitter-go #$tree-sitter-css
#$tree-sitter-gomod #$tree-sitter-dockerfile
#$tree-sitter-haskell #$tree-sitter-elixir
#$tree-sitter-heex #$tree-sitter-elm
#$tree-sitter-html #$tree-sitter-go
#$tree-sitter-java #$tree-sitter-gomod
#$tree-sitter-javascript #$tree-sitter-haskell
#$tree-sitter-json #$tree-sitter-heex
#$tree-sitter-julia #$tree-sitter-html
#$tree-sitter-lua #$tree-sitter-java
#$tree-sitter-markdown #$tree-sitter-javascript
#$tree-sitter-markdown-gfm #$tree-sitter-json
#$tree-sitter-meson #$tree-sitter-julia
#$tree-sitter-ocaml #$tree-sitter-lua
#$tree-sitter-org #$tree-sitter-markdown
#$tree-sitter-php #$tree-sitter-markdown-gfm
#$tree-sitter-plantuml #$tree-sitter-meson
#$tree-sitter-python #$tree-sitter-ocaml
#$tree-sitter-r #$tree-sitter-org
#$tree-sitter-racket #$tree-sitter-php
#$tree-sitter-ruby #$tree-sitter-plantuml
#$tree-sitter-rust #$tree-sitter-python
#$tree-sitter-scala #$tree-sitter-r
#$tree-sitter-scheme #$tree-sitter-racket
#$tree-sitter-typescript))))))))) #$tree-sitter-ruby
(native-inputs (list autoconf #$tree-sitter-rust
automake #$tree-sitter-scala
guile-hall #$tree-sitter-scheme
pkg-config #$tree-sitter-typescript)))))))))
texinfo)) (native-inputs (list autoconf
(inputs (list guile-3.0 automake
guile-config guile-hall
guile-ncurses pkg-config
guile-ts texinfo))
tree-sitter-bash (inputs (list guile-3.0
tree-sitter-bibtex guile-config
tree-sitter-c guile-ncurses
tree-sitter-c-sharp (guile-ts-transform guile-ts)
tree-sitter-clojure tree-sitter-bash
tree-sitter-cmake tree-sitter-bibtex
tree-sitter-cpp tree-sitter-c
tree-sitter-css tree-sitter-c-sharp
tree-sitter-dockerfile tree-sitter-clojure
tree-sitter-elixir tree-sitter-cmake
tree-sitter-elm tree-sitter-cpp
tree-sitter-go tree-sitter-css
tree-sitter-gomod tree-sitter-dockerfile
tree-sitter-haskell tree-sitter-elixir
tree-sitter-heex tree-sitter-elm
tree-sitter-html tree-sitter-go
tree-sitter-java tree-sitter-gomod
tree-sitter-javascript tree-sitter-haskell
tree-sitter-json tree-sitter-heex
tree-sitter-julia tree-sitter-html
tree-sitter-lua tree-sitter-java
tree-sitter-markdown tree-sitter-javascript
tree-sitter-markdown-gfm tree-sitter-json
tree-sitter-meson tree-sitter-julia
tree-sitter-ocaml tree-sitter-lua
tree-sitter-org tree-sitter-markdown
tree-sitter-php tree-sitter-markdown-gfm
tree-sitter-plantuml tree-sitter-meson
tree-sitter-python tree-sitter-ocaml
tree-sitter-r tree-sitter-org
tree-sitter-racket tree-sitter-php
tree-sitter-ruby tree-sitter-plantuml
tree-sitter-rust tree-sitter-python
tree-sitter-scala tree-sitter-r
tree-sitter-scheme tree-sitter-racket
tree-sitter-typescript)) tree-sitter-ruby
(synopsis "Text editor based on tree-sitter") tree-sitter-rust
(description tree-sitter-scala
"TODO") tree-sitter-scheme
(home-page "https://git.solarpunk.moe/Sloth/sloth") tree-sitter-typescript))
(license license:gpl3+)) (synopsis "Text editor based on tree-sitter")
(description
"TODO")
(home-page "https://git.solarpunk.moe/Sloth/sloth")
(license license:gpl3+))