neovim-flake/flake.nix

87 lines
2 KiB
Nix

{
description = "A minimal and productive Neovim configuration.";
inputs = {
nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable";
nixvim = {
url = "github:nix-community/nixvim";
inputs.nixpkgs.follows = "nixpkgs";
};
flake-parts.url = "github:hercules-ci/flake-parts";
# Neovim plugins
render-markdown = {
url = "github:MeanderingProgrammer/render-markdown.nvim";
flake = false;
};
satellite = {
url = "github:lewis6991/satellite.nvim";
flake = false;
};
haskell-tools = {
url = "github:mrcjkb/haskell-tools.nvim";
flake = false;
};
lsp-progress = {
url = "github:linrongbin16/lsp-progress.nvim";
flake = false;
};
cellular-automaton = {
url = "github:Eandrju/cellular-automaton.nvim";
flake = false;
};
typst-preview = {
url = "github:chomosuke/typst-preview.nvim";
flake = false;
};
};
outputs =
{
nixvim,
flake-parts,
...
}@inputs:
flake-parts.lib.mkFlake { inherit inputs; } {
systems = [
"x86_64-linux"
"aarch64-linux"
"x86_64-darwin"
"aarch64-darwin"
];
perSystem =
{
pkgs,
system,
...
}:
let
nixvimLib = nixvim.lib.${system};
nixvim' = nixvim.legacyPackages.${system};
nixvimModule = {
inherit pkgs;
extraSpecialArgs = {
inherit inputs;
};
module = import ./config;
};
nvim = nixvim'.makeNixvimWithModule nixvimModule;
in
{
formatter = pkgs.nixfmt-rfc-style;
checks = {
default = nixvimLib.check.mkTestDerivationFromNixvimModule nixvimModule;
};
packages = {
default = nvim;
vimg = pkgs.writeScriptBin "vimg" ''
#!/bin/sh
${nvim}/bin/nvim +Neogit
'';
};
};
};
}