blob: 402cdcccad6ea7fcc5f13a8d0558f35bc3a1586a (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
|
(define-module (crn packages vim)
#:use-module ((guix licenses) #:prefix license:) #:use-module (guix packages)
#:use-module (guix gexp)
#:use-module (guix utils)
#:use-module (guix download)
#:use-module (guix git-download)
#:use-module (guix build-system cmake)
#:use-module (gnu packages)
#:use-module (gnu packages gettext)
#:use-module (gnu packages gperf)
#:use-module (gnu packages jemalloc)
#:use-module (gnu packages libevent)
#:use-module (gnu packages lua)
#:use-module (gnu packages pkg-config)
#:use-module (gnu packages serialization)
#:use-module (gnu packages terminals))
(define-public neovim
(package
(name "neovim")
(version "0.10.2")
(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
"0r5mjfsgrllxi44i9k6lb8b99rpzrwhkg18aiqmby8wwzflbqdy3"))))
(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
(specification->package "tree-sitter@0.24.3")))
(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))))
|