diff options
Diffstat (limited to 'crn')
-rw-r--r-- | crn/packages/vim.scm | 116 |
1 files changed, 116 insertions, 0 deletions
diff --git a/crn/packages/vim.scm b/crn/packages/vim.scm new file mode 100644 index 0000000..402cdcc --- /dev/null +++ b/crn/packages/vim.scm @@ -0,0 +1,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)))) |