add neovim
This commit is contained in:
121
gchannel/packages/neovim.scm
Normal file
121
gchannel/packages/neovim.scm
Normal file
@@ -0,0 +1,121 @@
|
||||
(define-module (gchannel packages neovim)
|
||||
#:use-module ((guix licenses) #:prefix license:)
|
||||
#:use-module (guix gexp)
|
||||
#:use-module (guix packages)
|
||||
#:use-module (guix git-download)
|
||||
#:use-module (gnu packages)
|
||||
#:use-module (gnu packages libevent)
|
||||
#:use-module (gnu packages linux)
|
||||
#:use-module (gnu packages lua)
|
||||
#:use-module (gnu packages jemalloc)
|
||||
#:use-module (gnu packages serialization)
|
||||
#:use-module (gnu packages terminals)
|
||||
#:use-module (gchannel packages tree-sitter)
|
||||
#:use-module (gnu packages pkg-config)
|
||||
#:use-module (guix build-system cmake)
|
||||
#:use-module (gnu packages gettext)
|
||||
#:use-module (gnu packages gperf)
|
||||
#:use-module (guix build cmake-build-system)
|
||||
)
|
||||
|
||||
(define-public neovim
|
||||
(package
|
||||
(name "neovim")
|
||||
(version "0.10.1")
|
||||
(source (origin
|
||||
(method git-fetch)
|
||||
(uri (git-reference
|
||||
(url "https://github.com/neovim/neovim")
|
||||
(commit (string-append "v" version))))
|
||||
(file-name (git-file-name name version))
|
||||
(sha256
|
||||
(base32
|
||||
"1xmncdj6nxa45m0qk3wmnp7b5d0iqqapy1m2vqzv316rr2snxrg4"))))
|
||||
(build-system cmake-build-system)
|
||||
(arguments
|
||||
(list #:modules
|
||||
'((srfi srfi-26) (guix build cmake-build-system)
|
||||
(guix build utils))
|
||||
#:configure-flags
|
||||
#~(list #$@(if (member (if (%current-target-system)
|
||||
(gnu-triplet->nix-system (%current-target-system))
|
||||
(%current-system))
|
||||
(package-supported-systems luajit))
|
||||
'()
|
||||
'("-DPREFER_LUA:BOOL=YES")))
|
||||
#:phases
|
||||
#~(modify-phases %standard-phases
|
||||
(add-after 'unpack 'set-lua-paths
|
||||
(lambda* _
|
||||
(let* ((lua-version "5.1")
|
||||
(lua-cpath-spec (lambda (prefix)
|
||||
(let ((path (string-append
|
||||
prefix
|
||||
"/lib/lua/"
|
||||
lua-version)))
|
||||
(string-append
|
||||
path
|
||||
"/?.so;"
|
||||
path
|
||||
"/?/?.so"))))
|
||||
(lua-path-spec (lambda (prefix)
|
||||
(let ((path (string-append prefix
|
||||
"/share/lua/"
|
||||
lua-version)))
|
||||
(string-append path "/?.lua;"
|
||||
path "/?/?.lua"))))
|
||||
(lua-inputs (list (or #$(this-package-input "lua")
|
||||
#$(this-package-input "luajit"))
|
||||
#$lua5.1-luv
|
||||
#$lua5.1-lpeg
|
||||
#$lua5.1-bitop
|
||||
#$lua5.1-libmpack)))
|
||||
(setenv "LUA_PATH"
|
||||
(string-join (map lua-path-spec lua-inputs) ";"))
|
||||
(setenv "LUA_CPATH"
|
||||
(string-join (map lua-cpath-spec lua-inputs) ";"))
|
||||
#t)))
|
||||
(add-after 'unpack 'prevent-embedding-gcc-store-path
|
||||
(lambda _
|
||||
;; nvim remembers its build options, including the compiler with
|
||||
;; its complete path. This adds gcc to the closure of nvim, which
|
||||
;; doubles its size. We remove the reference here.
|
||||
(substitute* "cmake.config/versiondef.h.in"
|
||||
(("\\$\\{CMAKE_C_COMPILER\\}") "/gnu/store/.../bin/gcc"))
|
||||
#t)))))
|
||||
(inputs (list libuv-for-luv
|
||||
msgpack
|
||||
libtermkey
|
||||
libvterm
|
||||
unibilium
|
||||
jemalloc
|
||||
(if (member (if (%current-target-system)
|
||||
(gnu-triplet->nix-system (%current-target-system))
|
||||
(%current-system))
|
||||
(package-supported-systems luajit))
|
||||
luajit
|
||||
lua-5.1)
|
||||
lua5.1-luv
|
||||
lua5.1-lpeg
|
||||
lua5.1-bitop
|
||||
lua5.1-libmpack
|
||||
tree-sitter))
|
||||
(native-inputs (list pkg-config gettext-minimal gperf))
|
||||
(home-page "https://neovim.io")
|
||||
(synopsis "Fork of vim focused on extensibility and agility")
|
||||
(description
|
||||
"Neovim is a project that seeks to aggressively
|
||||
refactor Vim in order to:
|
||||
|
||||
@itemize
|
||||
@item Simplify maintenance and encourage contributions
|
||||
@item Split the work between multiple developers
|
||||
@item Enable advanced external UIs without modifications to the core
|
||||
@item Improve extensibility with a new plugin architecture
|
||||
@end itemize
|
||||
")
|
||||
;; Neovim is licensed under the terms of the Apache 2.0 license,
|
||||
;; except for parts that were contributed under the Vim license.
|
||||
(license (list license:asl2.0 license:vim))))
|
||||
|
||||
neovim
|
||||
Reference in New Issue
Block a user