1{
2  description = "Developmet flake for nvimpager";
3  inputs = {
4    nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable";
5    flake-utils.url = "github:numtide/flake-utils";
6    neovim.url = "github:nix-community/neovim-nightly-overlay";
7  };
8
9  outputs = { self, nixpkgs, flake-utils, neovim, ... }: {
10    overlay = final: prev: {
11      nvimpager = prev.nvimpager.overrideAttrs (oa: {
12        version = "dev";
13        src = ./.;
14      });
15    };
16  }
17  //
18  flake-utils.lib.eachDefaultSystem (system:
19  let
20    stable = import nixpkgs { overlays = [ self.overlay ]; inherit system; };
21    nightly = import nixpkgs { overlays = [ neovim.overlay self.overlay ]; inherit system; };
22    mkShell = pkgs: pkgs.mkShell {
23      inputsFrom = [ pkgs.nvimpager ];
24      packages = with pkgs; [
25        lua51Packages.luacov
26        git
27        tmux
28        hyperfine
29      ];
30      shellHook = ''
31        # to find nvimpager lua code in the current dir
32        export LUA_PATH=./?.lua''${LUA_PATH:+\;}$LUA_PATH
33        # fix for my terminal in a pure shell
34        if [ "$TERM" = xterm-termite ]; then
35          export TERM=xterm
36        fi
37        '';
38      };
39  in rec {
40    packages = {
41      nvimpager = stable.nvimpager;
42      nvimpager-with-nightly-neovim = nightly.nvimpager;
43    };
44    defaultPackage = stable.nvimpager;
45    apps.nvimpager = flake-utils.lib.mkApp { drv = stable.nvimpager; name = "nvimpager"; };
46    defaultApp = apps.nvimpager;
47    devShell = devShells.stable;
48    devShells = {
49      stable = mkShell stable;
50      nightly = mkShell nightly;
51    };
52  }
53  );
54}
55