diff options
author | Josh Rahm <rahm@google.com> | 2022-10-11 19:00:52 +0000 |
---|---|---|
committer | Josh Rahm <rahm@google.com> | 2022-10-11 19:00:52 +0000 |
commit | 21e2e46242033c7aaa6ccfb23e256680816c063c (patch) | |
tree | f089522cfb145d6e9c8a86a01d8e454ce5501e20 /contrib/flake.nix | |
parent | 179d3ed87b17988f5fe00d8b99f2611a28212be7 (diff) | |
parent | 760b399f6c0c6470daa0663752bd22886997f9e6 (diff) | |
download | rneovim-floattitle.tar.gz rneovim-floattitle.tar.bz2 rneovim-floattitle.zip |
Merge remote-tracking branch 'upstream/master' into floattitlefloattitle
Diffstat (limited to 'contrib/flake.nix')
-rw-r--r-- | contrib/flake.nix | 189 |
1 files changed, 95 insertions, 94 deletions
diff --git a/contrib/flake.nix b/contrib/flake.nix index a1072674ba..cd6242a8d6 100644 --- a/contrib/flake.nix +++ b/contrib/flake.nix @@ -8,130 +8,131 @@ outputs = { self, nixpkgs, flake-utils }: { - overlay = final: prev: - let - pkgs = nixpkgs.legacyPackages.${prev.system}; - in - rec { - neovim = pkgs.neovim-unwrapped.overrideAttrs (oa: { - version = "master"; - src = ../.; - - buildInputs = oa.buildInputs ++ pkgs.lib.optionals pkgs.stdenv.isDarwin (with pkgs.darwin.apple_sdk.frameworks; [ - CoreServices - ]); + overlay = final: prev: rec { + neovim-unwrapped = prev.neovim-unwrapped.override ({ + libvterm-neovim = prev.libvterm-neovim.overrideAttrs (old: { + version = "0.3"; + src = builtins.fetchTarball { + url = "https://www.leonerd.org.uk/code/libvterm/libvterm-0.3.tar.gz"; + sha256 = "0zg6sn5brwrnqaab883pdj0l2swk5askbbwbdam0zq55ikbrzgar"; + }; }); - - # a development binary to help debug issues - neovim-debug = let - stdenv = if pkgs.stdenv.isLinux then pkgs.llvmPackages_latest.stdenv else pkgs.stdenv; - in - ((neovim.override { - lua = pkgs.luajit; - inherit stdenv; - }).overrideAttrs (oa: { - - dontStrip = true; - NIX_CFLAGS_COMPILE = " -ggdb -Og"; - - cmakeBuildType = "Debug"; - cmakeFlags = oa.cmakeFlags ++ [ - "-DMIN_LOG_LEVEL=0" - ]; - - disallowedReferences = []; - })); - - # for neovim developers, beware of the slow binary - neovim-developer = - let - lib = nixpkgs.lib; - luacheck = pkgs.luaPackages.luacheck; - in - (neovim-debug.override ({ doCheck = pkgs.stdenv.isLinux; })).overrideAttrs (oa: { - cmakeFlags = oa.cmakeFlags ++ [ - "-DLUACHECK_PRG=${luacheck}/bin/luacheck" - "-DMIN_LOG_LEVEL=0" - "-DENABLE_LTO=OFF" - ] ++ pkgs.lib.optionals pkgs.stdenv.isLinux [ - # https://github.com/google/sanitizers/wiki/AddressSanitizerFlags - # https://clang.llvm.org/docs/AddressSanitizer.html#symbolizing-the-reports - "-DCLANG_ASAN_UBSAN=ON" - ]; - }); - }; - } // - flake-utils.lib.eachDefaultSystem (system: + }); + + neovim = final.neovim-unwrapped.overrideAttrs (oa: { + version = "master"; + src = ../.; + + buildInputs = oa.buildInputs + ++ final.lib.optionals final.stdenv.isDarwin + (with final.darwin.apple_sdk.frameworks; [ CoreServices ]); + }); + + # a development binary to help debug issues + neovim-debug = let + stdenv = if final.stdenv.isLinux then + final.llvmPackages_latest.stdenv + else + final.stdenv; + in ((neovim.override { + lua = final.luajit; + inherit stdenv; + }).overrideAttrs (oa: { + + dontStrip = true; + NIX_CFLAGS_COMPILE = " -ggdb -Og"; + + cmakeBuildType = "Debug"; + cmakeFlags = oa.cmakeFlags ++ [ "-DMIN_LOG_LEVEL=0" ]; + + disallowedReferences = [ ]; + })); + + # for neovim developers, beware of the slow binary + neovim-developer = let luacheck = final.luaPackages.luacheck; + in (neovim-debug.override ({ + doCheck = final.stdenv.isLinux; + })).overrideAttrs (oa: { + cmakeFlags = oa.cmakeFlags ++ [ + "-DLUACHECK_PRG=${luacheck}/bin/luacheck" + "-DMIN_LOG_LEVEL=0" + "-DENABLE_LTO=OFF" + ] ++ final.lib.optionals final.stdenv.isLinux [ + # https://github.com/google/sanitizers/wiki/AddressSanitizerFlags + # https://clang.llvm.org/docs/AddressSanitizer.html#symbolizing-the-reports + "-DCLANG_ASAN_UBSAN=ON" + ]; + }); + }; + } // flake-utils.lib.eachDefaultSystem (system: let pkgs = import nixpkgs { overlays = [ self.overlay ]; inherit system; }; - pythonEnv = pkgs.python3.withPackages(ps: [ + lua = pkgs.lua5_1; + + pythonEnv = pkgs.python3.withPackages (ps: [ ps.msgpack - ps.flake8 # for 'make pylint' + ps.flake8 # for 'make pylint' ]); - in - rec { - + in { packages = with pkgs; { + default = neovim; inherit neovim neovim-debug neovim-developer; }; checks = { - pylint = pkgs.runCommandNoCC "pylint" { + pylint = pkgs.runCommand "pylint" { nativeBuildInputs = [ pythonEnv ]; preferLocalBuild = true; - } "make -C ${./..} pylint > $out"; + } "make -C ${./..} pylint > $out"; - shlint = pkgs.runCommandNoCC "shlint" { + shlint = pkgs.runCommand "shlint" { nativeBuildInputs = [ pkgs.shellcheck ]; preferLocalBuild = true; - } "make -C ${./..} shlint > $out"; + } "make -C ${./..} shlint > $out"; }; + # kept for backwards-compatibility defaultPackage = pkgs.neovim; - apps = { - nvim = flake-utils.lib.mkApp { drv = pkgs.neovim; name = "nvim"; }; - nvim-debug = flake-utils.lib.mkApp { drv = pkgs.neovim-debug; name = "nvim"; }; - }; - - defaultApp = apps.nvim; - - devShell = let - in - pkgs.neovim-developer.overrideAttrs(oa: { + devShells = { + default = pkgs.neovim-developer.overrideAttrs (oa: { - buildInputs = with pkgs; oa.buildInputs ++ [ + buildInputs = with pkgs; + oa.buildInputs ++ [ cmake + lua.pkgs.luacheck + sumneko-lua-language-server pythonEnv include-what-you-use # for scripts/check-includes.py jq # jq for scripts/vim-patch.sh -r shellcheck # for `make shlint` - doxygen # for script/gen_vimdoc.py + doxygen # for script/gen_vimdoc.py clang-tools # for clangd to find the correct headers ]; - shellHook = oa.shellHook + '' - export NVIM_PYTHON_LOG_LEVEL=DEBUG - export NVIM_LOG_FILE=/tmp/nvim.log - export ASAN_SYMBOLIZER_PATH=${pkgs.llvm_11}/bin/llvm-symbolizer - - # ASAN_OPTIONS=detect_leaks=1 - export ASAN_OPTIONS="log_path=./test.log:abort_on_error=1" - export UBSAN_OPTIONS=print_stacktrace=1 - mkdir -p build/runtime/parser - # nvim looks into CMAKE_INSTALL_DIR. Hack to avoid errors - # when running the functionaltests - mkdir -p outputs/out/share/nvim/syntax - touch outputs/out/share/nvim/syntax/syntax.vim - - # for treesitter functionaltests - mkdir -p runtime/parser - cp -f ${pkgs.tree-sitter.builtGrammars.tree-sitter-c}/parser runtime/parser/c.so - ''; - }); - }); + shellHook = oa.shellHook + '' + export NVIM_PYTHON_LOG_LEVEL=DEBUG + export NVIM_LOG_FILE=/tmp/nvim.log + export ASAN_SYMBOLIZER_PATH=${pkgs.llvm_11}/bin/llvm-symbolizer + + # ASAN_OPTIONS=detect_leaks=1 + export ASAN_OPTIONS="log_path=./test.log:abort_on_error=1" + export UBSAN_OPTIONS=print_stacktrace=1 + mkdir -p build/runtime/parser + # nvim looks into CMAKE_INSTALL_DIR. Hack to avoid errors + # when running the functionaltests + mkdir -p outputs/out/share/nvim/syntax + touch outputs/out/share/nvim/syntax/syntax.vim + + # for treesitter functionaltests + mkdir -p runtime/parser + cp -f ${pkgs.tree-sitter.builtGrammars.tree-sitter-c}/parser runtime/parser/c.so + ''; + }); + }; + }); } |