-
Notifications
You must be signed in to change notification settings - Fork 1
/
flake.nix
75 lines (65 loc) · 1.93 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
{
description = "My own Neovim flake";
inputs = {
nixpkgs = {
url = "github:NixOS/nixpkgs";
};
neovim = {
url = "github:neovim/neovim/stable?dir=contrib";
inputs.nixpkgs.follows = "nixpkgs";
};
nixd.url = "github:nix-community/nixd";
flash-nvim = {
url = "github:folke/flash.nvim";
flake = false;
};
github-nvim-theme = {
url = "github:projekt0n/github-nvim-theme";
flake = false;
};
nvim-treesitter-sexp = {
url = "github:PaterJason/nvim-treesitter-sexp";
flake = false;
};
flake-parts.url = "github:hercules-ci/flake-parts";
};
outputs = inputs @ {flake-parts, ...}:
flake-parts.lib.mkFlake {inherit inputs;} {
systems = [
"x86_64-linux"
"aarch64-darwin"
];
perSystem = {system, ...}: let
overlayFlakeInputs = prev: final: {
neovim = inputs.neovim.packages.${prev.stdenv.hostPlatform.system}.neovim;
};
pkgs = import inputs.nixpkgs {
inherit system;
overlays = [overlayFlakeInputs inputs.nixd.overlays.default];
};
dependencies = import ./runtimeDeps.nix {inherit pkgs;};
overlayDefaultNeovim = prev: final: {
defaultNeovim = import ./packages/default.nix {
pkgs = final;
lib = inputs.nixpkgs.lib;
runtimeDeps = dependencies;
inherit inputs;
};
};
finalPkgs = import inputs.nixpkgs {
inherit system;
overlays = [overlayFlakeInputs overlayDefaultNeovim];
};
in {
formatter = pkgs.alejandra;
packages.default = finalPkgs.defaultNeovim;
apps.default = {
type = "app";
program = "${finalPkgs.defaultNeovim}/bin/nvim";
};
devShells.default = finalPkgs.mkShell {
buildInputs = with finalPkgs; [defaultNeovim] ++ dependencies;
};
};
};
}