aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--contrib/flake.nix169
1 files changed, 88 insertions, 81 deletions
diff --git a/contrib/flake.nix b/contrib/flake.nix
index 86e4b37cfa..d18534215c 100644
--- a/contrib/flake.nix
+++ b/contrib/flake.nix
@@ -3,93 +3,100 @@
inputs = {
nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable";
+ flake-utils.url = "github:numtide/flake-utils";
};
- outputs = { self, nixpkgs }: let
- system = "x86_64-linux";
- legacyPkgs = nixpkgs.legacyPackages."${system}".pkgs;
- pkgs = legacyPkgs;
- in {
-
- packages."${system}" = rec {
-
- neovim = legacyPkgs.neovim-unwrapped.overrideAttrs(oa: {
- version = "master";
- src = ../.;
-
- buildInputs = oa.buildInputs ++ ([
- pkgs.tree-sitter
- ]);
-
- cmakeFlags = oa.cmakeFlags ++ [
- "-DUSE_BUNDLED=OFF"
- ];
- });
-
- # a development binary to help debug issues
- neovim-debug = (neovim.override {
- stdenv = pkgs.llvmPackages_latest.stdenv;
- lua = pkgs.enableDebugging legacyPkgs.luajit;
- }).overrideAttrs(oa:{
- cmakeBuildType="Debug";
- cmakeFlags = oa.cmakeFlags ++ [
- "-DMIN_LOG_LEVEL=0"
- ];
- });
-
- # for neovim developers, very slow
- # brings development tools as well
- neovim-developer = let
- lib = nixpkgs.lib;
- pythonEnv = legacyPkgs.python3;
- luacheck = legacyPkgs.luaPackages.luacheck;
+ 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.tree-sitter
+ ]);
+
+ cmakeFlags = oa.cmakeFlags ++ [
+ "-DUSE_BUNDLED=OFF"
+ ];
+ });
+
+ # a development binary to help debug issues
+ neovim-debug = (neovim.override {
+ stdenv = if pkgs.stdenv.isLinux then pkgs.llvmPackages_latest.stdenv else pkgs.stdenv;
+ lua = pkgs.enableDebugging pkgs.luajit;
+ }).overrideAttrs (oa: {
+ cmakeBuildType = "Debug";
+ cmakeFlags = oa.cmakeFlags ++ [
+ "-DMIN_LOG_LEVEL=0"
+ ];
+ });
+
+ # for neovim developers, very slow
+ # brings development tools as well
+ neovim-developer =
+ let
+ lib = nixpkgs.lib;
+ pythonEnv = pkgs.python3;
+ 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"
+ "-DUSE_BUNDLED=OFF"
+ ] ++ pkgs.stdenv.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"
+ ];
+
+ nativeBuildInputs = oa.nativeBuildInputs ++ (with pkgs; [
+ pythonEnv
+ include-what-you-use # for scripts/check-includes.py
+ jq # jq for scripts/vim-patch.sh -r
+ doxygen
+ ]);
+
+ shellHook = oa.shellHook + ''
+ export NVIM_PYTHON_LOG_LEVEL=DEBUG
+ export NVIM_LOG_FILE=/tmp/nvim.log
+
+ export ASAN_OPTIONS="log_path=./test.log:abort_on_error=1"
+ export UBSAN_OPTIONS=print_stacktrace=1
+ '';
+ });
+ };
+ } //
+ flake-utils.lib.eachDefaultSystem (system:
+ let
+ pkgs = import nixpkgs {
+ overlays = [ self.overlay ];
+ inherit system;
+ };
in
- (neovim-debug.override({doCheck = true;})).overrideAttrs(oa: {
- cmakeFlags = oa.cmakeFlags ++ [
- "-DLUACHECK_PRG=${luacheck}/bin/luacheck"
- "-DMIN_LOG_LEVEL=0"
- "-DENABLE_LTO=OFF"
- "-DUSE_BUNDLED=OFF"
- # https://github.com/google/sanitizers/wiki/AddressSanitizerFlags
- # https://clang.llvm.org/docs/AddressSanitizer.html#symbolizing-the-reports
- "-DCLANG_ASAN_UBSAN=ON"
- ];
-
- nativeBuildInputs = oa.nativeBuildInputs ++ (with pkgs; [
- pythonEnv
- include-what-you-use # for scripts/check-includes.py
- jq # jq for scripts/vim-patch.sh -r
- doxygen
- ]);
-
- shellHook = oa.shellHook + ''
- export NVIM_PYTHON_LOG_LEVEL=DEBUG
- export NVIM_LOG_FILE=/tmp/nvim.log
+ rec {
- export ASAN_OPTIONS="log_path=./test.log:abort_on_error=1"
- export UBSAN_OPTIONS=print_stacktrace=1
- '';
- });
- };
+ packages = with pkgs; {
+ inherit neovim neovim-debug neovim-developer;
+ };
- defaultPackage."${system}" = self.packages."${system}".neovim;
+ defaultPackage = pkgs.neovim;
- overlay = final: prev: {
- inherit (self.packages."${system}") neovim neovim-debug;
- };
+ apps = {
+ nvim = flake-utils.lib.mkApp { drv = pkgs.neovim; name = "nvim"; };
+ nvim-debug = flake-utils.lib.mkApp { drv = pkgs.neovim-debug; name = "nvim"; };
+ };
- apps."${system}" = let
- mkApp = pkg: {
- type = "app";
- program = pkg + "/bin/nvim";
- };
- in {
- nvim = mkApp self.packages."${system}".neovim;
- nvim-debug = mkApp self.packages."${system}".neovim-debug;
- };
+ defaultApp = apps.nvim;
- defaultApp."${system}" = self.apps."${system}".nvim;
-
- devShell."${system}" = self.packages."${system}".neovim-developer;
- };
+ devShell = pkgs.neovim-developer;
+ }
+ );
}