nixpkgs/pkgs/applications/editors/vim/full.nix
Ihar Hrachyshka dd0f03a56c treewide: remove usage of deprecated apple_sdk framework stubs
They are not doing anything right now. This is in preparation for their
complete removal from the tree.

Note: several changes that affect the derivation inputs (e.g. removal of
references to stub paths in build instructions) were left out. They will
be cleaned up the next iteration and will require special care.

Note: this PR is a result of a mix of ugly regex (not AST) based
automation and some manual labor. For reference, the regex automation
part was hacked in: https://github.com/booxter/nix-clean-apple_sdk

Signed-off-by: Ihar Hrachyshka <ihar.hrachyshka@gmail.com>
2025-04-19 20:28:20 -04:00

230 lines
6.5 KiB
Nix

{
source ? "default",
callPackage,
lib,
stdenv,
ncurses,
pkg-config,
gettext,
writeText,
config,
glib,
gtk2-x11,
gtk3-x11,
lua,
python3,
perl,
tcl,
ruby,
libX11,
libXext,
libSM,
libXpm,
libXt,
libXaw,
libXau,
libXmu,
libsodium,
libICE,
vimPlugins,
makeWrapper,
wrapGAppsHook3,
libobjc,
features ? "huge", # One of tiny, small, normal, big or huge
wrapPythonDrv ? false,
guiSupport ? config.vim.gui or (if stdenv.hostPlatform.isDarwin then "gtk2" else "gtk3"),
luaSupport ? config.vim.lua or true,
perlSupport ? config.vim.perl or false, # Perl interpreter
pythonSupport ? config.vim.python or true, # Python interpreter
rubySupport ? config.vim.ruby or true, # Ruby interpreter
nlsSupport ? config.vim.nls or false, # Enable NLS (gettext())
tclSupport ? config.vim.tcl or false, # Include Tcl interpreter
multibyteSupport ? config.vim.multibyte or false, # Enable multibyte editing support
cscopeSupport ? config.vim.cscope or true, # Enable cscope interface
netbeansSupport ? config.netbeans or true, # Enable NetBeans integration support.
ximSupport ? config.vim.xim or true, # less than 15KB, needed for deadkeys
darwinSupport ? config.vim.darwin or false, # Enable Darwin support
ftNixSupport ? config.vim.ftNix or true, # Add nix indentation support from vim-nix (not needed for basic syntax highlighting)
sodiumSupport ? config.vim.sodium or true, # Enable sodium based encryption
}:
let
nixosRuntimepath = writeText "nixos-vimrc" ''
set nocompatible
syntax on
function! NixosPluginPath()
let seen = {}
for p in reverse(split($NIX_PROFILES))
for d in split(glob(p . '/share/vim-plugins/*'))
let pluginname = substitute(d, ".*/", "", "")
if !has_key(seen, pluginname)
exec 'set runtimepath^='.d
let after = d."/after"
if isdirectory(after)
exec 'set runtimepath^='.after
endif
let seen[pluginname] = 1
endif
endfor
endfor
endfunction
execute NixosPluginPath()
if filereadable("/etc/vimrc")
source /etc/vimrc
elseif filereadable("/etc/vim/vimrc")
source /etc/vim/vimrc
endif
'';
common = callPackage ./common.nix { };
in
stdenv.mkDerivation {
pname = "vim-full";
inherit (common)
version
outputs
postPatch
hardeningDisable
enableParallelBuilding
meta
;
src = builtins.getAttr source {
default = common.src; # latest release
};
patches = [ ./cflags-prune.diff ];
configureFlags =
[
"--with-features=${features}"
"--disable-xsmp" # XSMP session management
"--disable-xsmp_interact" # XSMP interaction
"--disable-workshop" # Sun Visual Workshop support
"--disable-sniff" # Sniff interface
"--disable-hangulinput" # Hangul input support
"--disable-fontset" # X fontset output support
"--disable-acl" # ACL support
"--disable-gpm" # GPM (Linux mouse daemon)
"--disable-mzschemeinterp"
"--disable-gtk_check"
"--disable-gtk2_check"
"--disable-gnome_check"
"--disable-motif_check"
"--disable-athena_check"
"--disable-nextaf_check"
"--disable-carbon_check"
"--disable-gtktest"
]
++ lib.optionals (stdenv.hostPlatform != stdenv.buildPlatform) [
"vim_cv_toupper_broken=no"
"--with-tlib=ncurses"
"vim_cv_terminfo=yes"
"vim_cv_tgetent=zero" # it does on native anyway
"vim_cv_tty_group=tty"
"vim_cv_tty_mode=0660"
"vim_cv_getcwd_broken=no"
"vim_cv_stat_ignores_slash=yes"
"vim_cv_memmove_handles_overlap=yes"
]
++ lib.optional (guiSupport == "gtk2" || guiSupport == "gtk3") "--enable-gui=${guiSupport}"
++ lib.optional stdenv.hostPlatform.isDarwin (
if darwinSupport then "--enable-darwin" else "--disable-darwin"
)
++ lib.optionals luaSupport [
"--with-lua-prefix=${lua}"
"--enable-luainterp"
]
++ lib.optionals lua.pkgs.isLuaJIT [
"--with-luajit"
]
++ lib.optionals pythonSupport [
"--enable-python3interp=yes"
"--with-python3-config-dir=${python3}/lib"
# Disables Python 2
"--disable-pythoninterp"
]
++ lib.optional nlsSupport "--enable-nls"
++ lib.optional perlSupport "--enable-perlinterp"
++ lib.optional rubySupport "--enable-rubyinterp"
++ lib.optional tclSupport "--enable-tclinterp"
++ lib.optional multibyteSupport "--enable-multibyte"
++ lib.optional cscopeSupport "--enable-cscope"
++ lib.optional netbeansSupport "--enable-netbeans"
++ lib.optional ximSupport "--enable-xim"
++ lib.optional sodiumSupport "--enable-sodium";
nativeBuildInputs =
[
pkg-config
]
++ lib.optional wrapPythonDrv makeWrapper
++ lib.optional nlsSupport gettext
++ lib.optional perlSupport perl
++ lib.optional (guiSupport == "gtk3") wrapGAppsHook3;
buildInputs =
[
ncurses
glib
]
# All X related dependencies
++ lib.optionals (guiSupport == "gtk2" || guiSupport == "gtk3") [
libSM
libICE
libX11
libXext
libXpm
libXt
libXaw
libXau
libXmu
]
++ lib.optional (guiSupport == "gtk2") gtk2-x11
++ lib.optional (guiSupport == "gtk3") gtk3-x11
++ lib.optionals darwinSupport [
libobjc
]
++ lib.optional luaSupport lua
++ lib.optional pythonSupport python3
++ lib.optional tclSupport tcl
++ lib.optional rubySupport ruby
++ lib.optional sodiumSupport libsodium;
# error: '__declspec' attributes are not enabled; use '-fdeclspec' or '-fms-extensions' to enable support for __declspec attributes
env.NIX_CFLAGS_COMPILE = lib.optionalString stdenv.hostPlatform.isDarwin "-fdeclspec";
preConfigure = lib.optionalString ftNixSupport ''
cp ${vimPlugins.vim-nix.src}/ftplugin/nix.vim runtime/ftplugin/nix.vim
cp ${vimPlugins.vim-nix.src}/indent/nix.vim runtime/indent/nix.vim
'';
preInstall = ''
mkdir -p $out/share/applications $out/share/icons/{hicolor,locolor}/{16x16,32x32,48x48}/apps
'';
postInstall =
''
ln -s $out/bin/vim $out/bin/vi
''
+ lib.optionalString stdenv.hostPlatform.isLinux ''
ln -sfn '${nixosRuntimepath}' "$out"/share/vim/vimrc
'';
postFixup =
common.postFixup
+ lib.optionalString wrapPythonDrv ''
wrapProgram "$out/bin/vim" --prefix PATH : "${python3}/bin" \
--set NIX_PYTHONPATH "${python3}/${python3.sitePackages}"
'';
dontStrip = true;
}