-
Notifications
You must be signed in to change notification settings - Fork 3
/
flake.nix
129 lines (124 loc) · 3.42 KB
/
flake.nix
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
{
description = "Allow rocks.nvim to help configure your plugins";
inputs = {
nixpkgs.url = "github:NixOS/nixpkgs/nixpkgs-unstable";
rocks-nvim-input.url = "github:nvim-neorocks/rocks.nvim";
flake-parts.url = "github:hercules-ci/flake-parts";
neorocks.url = "github:nvim-neorocks/neorocks";
gen-luarc.url = "github:mrcjkb/nix-gen-luarc-json";
cats-doc.url = "github:mrcjkb/cats-doc";
git-hooks = {
url = "github:cachix/git-hooks.nix";
inputs.nixpkgs.follows = "nixpkgs";
};
};
outputs = inputs @ {
self,
nixpkgs,
rocks-nvim-input,
flake-parts,
neorocks,
gen-luarc,
git-hooks,
...
}: let
plugin-overlay = import ./nix/plugin-overlay.nix {
inherit self inputs;
};
test-overlay = import ./nix/test-overlay.nix {
inherit self inputs;
};
in
flake-parts.lib.mkFlake {inherit inputs;} {
systems = [
"x86_64-linux"
"x86_64-darwin"
"aarch64-darwin"
];
perSystem = {
config,
self',
inputs',
pkgs,
system,
...
}: let
pkgs = import nixpkgs {
inherit system;
overlays = [
neorocks.overlays.default
gen-luarc.overlays.default
rocks-nvim-input.overlays.default
plugin-overlay
test-overlay
];
};
luarc = pkgs.mk-luarc {
nvim = pkgs.neovim-nightly;
plugins = with pkgs.lua51Packages; [
rocks-nvim
nvim-nio
];
};
mk-type-check = luarc:
git-hooks.lib.${system}.run {
src = self;
hooks = {
lua-ls = {
enable = true;
settings.configuration = luarc;
};
};
};
type-check-nightly = mk-type-check luarc;
pre-commit-check = git-hooks.lib.${system}.run {
src = self;
hooks = {
alejandra.enable = true;
stylua.enable = true;
luacheck.enable = true;
editorconfig-checker.enable = true;
panvimdoc = {
enable = true;
name = "panvimdoc";
entry = "${pkgs.panvimdoc}/bin/panvimdoc --project-name rocks-config --toc false --treesitter true --demojify true --description ' Allow rocks.nvim to help configure your plugins.' --input-file";
files = "README.md";
};
};
};
in {
devShells.default = pkgs.integration-nightly.overrideAttrs (oa: {
name = "rocks-dev.nvim devShell";
shellHook = ''
${pre-commit-check.shellHook}
ln -fs ${pkgs.luarc-to-json luarc} .luarc.json
'';
buildInputs =
self.checks.${system}.pre-commit-check.enabledPackages
++ (with pkgs; [
lua-language-server
])
++ oa.buildInputs;
doCheck = false;
});
packages = rec {
default = rocks-config-nvim;
inherit (pkgs.luajitPackages) rocks-config-nvim;
};
checks = {
inherit
pre-commit-check
type-check-nightly
;
inherit
(pkgs)
integration-stable
integration-nightly
;
};
};
flake = {
overlays.default = plugin-overlay;
};
};
}