Files
nvim/flake.nix

94 lines
2.5 KiB
Nix
Raw Normal View History

2023-04-02 13:26:27 +03:00
{
description = "NVIM Configuration";
inputs = {
2023-06-20 16:04:32 +03:00
nixpkgs.url = "github:nixos/nixpkgs/nixos-23.05";
2023-04-02 13:26:27 +03:00
flake-utils.url = "github:numtide/flake-utils";
};
outputs = inputs @ {
self,
nixpkgs,
flake-utils,
...
}:
flake-utils.lib.eachDefaultSystem (system: let
pkgs = import nixpkgs {
inherit system;
};
recursiveMerge = attrList: let
f = attrPath:
builtins.zipAttrsWith (n: values:
if pkgs.lib.tail values == []
then pkgs.lib.head values
else if pkgs.lib.all pkgs.lib.isList values
then pkgs.lib.unique (pkgs.lib.concatLists values)
else if pkgs.lib.all pkgs.lib.isAttrs values
then f (attrPath ++ [n]) values
else pkgs.lib.last values);
in
f [] attrList;
in rec {
2023-04-04 17:39:16 +03:00
dependencies = with pkgs; [
ripgrep
2023-09-14 21:03:17 +03:00
fd
2023-04-04 17:39:16 +03:00
git
curl # needed to fetch titles from urls
2023-09-14 21:03:17 +03:00
lazygit
wget
cargo
python310
python310Packages.pip
php82
php82Packages.composer
go
ruby
luarocks
nodejs
zulu #java11
fish
fzf
2023-09-15 13:27:54 +03:00
perl536
perl536Packages.CPAN
2023-04-04 17:39:16 +03:00
];
2023-04-02 13:26:27 +03:00
neovim-augmented = recursiveMerge [
pkgs.neovim-unwrapped
{buildInputs = dependencies;}
];
2023-04-02 13:46:42 +03:00
packages.pwnvim = pkgs.wrapNeovim neovim-augmented {
2023-04-02 13:26:27 +03:00
viAlias = true;
vimAlias = true;
withNodeJs = false;
withPython3 = false;
withRuby = false;
extraPython3Packages = false;
extraMakeWrapperArgs = ''--prefix PATH : "${pkgs.lib.makeBinPath dependencies}"'';
# make sure impatient is loaded before everything else to speed things up
configure = {
customRC =
''
lua << EOF
2023-09-14 21:03:17 +03:00
package.path = "${self}/lua/?.lua;" .. package.path
2023-04-02 13:26:27 +03:00
''
+ pkgs.lib.readFile ./init.lua
+ ''
EOF
'';
2023-09-14 21:03:17 +03:00
# packages.myPlugins = with pkgs.vimPlugins; {
# start = with pkgs.vimPlugins; [];
# opt = with pkgs.vimPlugins; [];
# };
2023-04-02 13:26:27 +03:00
};
};
2023-04-02 13:46:42 +03:00
apps.pwnvim = flake-utils.lib.mkApp {
drv = packages.pwnvim;
name = "pwnvim";
2023-04-02 13:26:27 +03:00
exePath = "/bin/nvim";
};
2023-04-02 13:46:42 +03:00
packages.default = packages.pwnvim;
apps.default = apps.pwnvim;
2023-04-02 13:26:27 +03:00
devShell = pkgs.mkShell {
2023-04-02 13:46:42 +03:00
buildInputs = with pkgs; [packages.pwnvim] ++ dependencies;
2023-04-02 13:26:27 +03:00
};
});
}