Add and use alejandra to format Nix files

This commit is contained in:
Oliver Davies 2024-02-13 21:47:56 +00:00
parent b55886673f
commit 98737c69e9
3 changed files with 274 additions and 272 deletions

View file

@ -1,23 +1,34 @@
{ {
inputs.nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable"; inputs.nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
outputs = inputs@{ self, flake-parts, ... }: outputs = inputs @ {
flake-parts.lib.mkFlake { inherit inputs; } { self,
flake-parts,
...
}:
flake-parts.lib.mkFlake {inherit inputs;} {
flake = { flake = {
lib = import ./lib { inherit inputs; }; lib = import ./lib {inherit inputs;};
}; };
systems = [ "x86_64-linux" ]; systems = ["x86_64-linux"];
perSystem = { pkgs, self', system, ... }: perSystem = {
let pkgs,
default = self.lib.mkVimPlugin { inherit system; }; self',
neovim = self.lib.mkNeovim { inherit system; }; system,
in ...
{ }: let
packages = { inherit default neovim; }; default = self.lib.mkVimPlugin {inherit system;};
neovim = self.lib.mkNeovim {inherit system;};
formatter = pkgs.nixpkgs-fmt; in {
devShells.default = pkgs.mkShell {
nativeBuildInputs = [pkgs.just];
}; };
packages = {inherit default neovim;};
formatter = pkgs.alejandra;
};
}; };
} }

View file

@ -1,15 +1,11 @@
{ inputs }: {inputs}: let
let
inherit (inputs.nixpkgs) legacyPackages; inherit (inputs.nixpkgs) legacyPackages;
in in rec {
rec { mkVimPlugin = {system}: let
mkVimPlugin = { system }: inherit (pkgs) vimUtils;
let inherit (vimUtils) buildVimPlugin;
inherit (pkgs) vimUtils; pkgs = legacyPackages.${system};
inherit (vimUtils) buildVimPlugin; in
pkgs = legacyPackages.${system};
in
buildVimPlugin { buildVimPlugin {
name = "opdavies"; name = "opdavies";
postInstall = '' postInstall = ''
@ -25,266 +21,263 @@ rec {
src = ../.; src = ../.;
}; };
mkNeovimPlugins = { system }: mkNeovimPlugins = {system}: let
let inherit (pkgs) vimPlugins;
inherit (pkgs) vimPlugins;
pkgs = (import inputs.nixpkgs { pkgs = import inputs.nixpkgs {
inherit system; inherit system;
config.allowUnfree = true; config.allowUnfree = true;
}); };
customVim = { customVim = {
tabline-vim = pkgs.vimUtils.buildVimPlugin { tabline-vim = pkgs.vimUtils.buildVimPlugin {
name = "tabline-vim"; name = "tabline-vim";
src = pkgs.fetchFromGitHub { src = pkgs.fetchFromGitHub {
owner = "mkitt"; owner = "mkitt";
repo = "tabline.vim"; repo = "tabline.vim";
rev = "69c9698a3240860adaba93615f44778a9ab724b4"; rev = "69c9698a3240860adaba93615f44778a9ab724b4";
sha256 = "51b8PxyKqBdeIvmmZyF2hpMBjkyrlZDdTB1opr5JZ7Y="; sha256 = "51b8PxyKqBdeIvmmZyF2hpMBjkyrlZDdTB1opr5JZ7Y=";
};
};
toggle-checkbox-nvim = pkgs.vimUtils.buildVimPlugin {
name = "toggle-checkbox-nvim";
src = pkgs.fetchFromGitHub {
owner = "opdavies";
repo = "toggle-checkbox.nvim";
rev = "main";
sha256 = "4YSEagQnLK5MBl2z53e6sOBlCDm220GYVlc6A+HNywg=";
};
};
vim-caser = pkgs.vimUtils.buildVimPlugin {
name = "vim-caser";
src = pkgs.fetchFromGitHub {
owner = "arthurxavierx";
repo = "vim-caser";
rev = "6bc9f41d170711c58e0157d882a5fe8c30f34bf6";
sha256 = "PXAY01O/cHvAdWx3V/pyWFeiV5qJGvLcAKhl5DQc0Ps=";
};
};
vim-heritage = pkgs.vimUtils.buildVimPlugin {
name = "vim-heritage";
src = pkgs.fetchFromGitHub {
owner = "jessarcher";
repo = "vim-heritage";
rev = "cffa05c78c0991c998adc4504d761b3068547db6";
sha256 = "Lebe5V1XFxn4kSZ+ImZ69Vst9Nbc0N7eA9IzOCijFS0=";
};
};
vim-textobj-xmlattr = pkgs.vimUtils.buildVimPlugin {
name = "vim-textobj-xmlattr";
src = pkgs.fetchFromGitHub {
owner = "whatyouhide";
repo = "vim-textobj-xmlattr";
rev = "694a297f1d75fd527e87da9769f3c6519a87ebb1";
sha256 = "+91FVP95oh00flINdltqx6qJuijYo56tHIh3J098G2Q=";
};
};
vim-zoom = pkgs.vimUtils.buildVimPlugin {
name = "vim-zoom";
src = pkgs.fetchFromGitHub {
owner = "dhruvasagar";
repo = "vim-zoom";
rev = "01c737005312c09e0449d6518decf8cedfee32c7";
sha256 = "/ADzScsG0u6RJbEtfO23Gup2NYdhPkExqqOPVcQa7aQ=";
};
}; };
}; };
opdavies-nvim = mkVimPlugin { inherit system; }; toggle-checkbox-nvim = pkgs.vimUtils.buildVimPlugin {
in name = "toggle-checkbox-nvim";
[ src = pkgs.fetchFromGitHub {
customVim.tabline-vim owner = "opdavies";
customVim.vim-caser repo = "toggle-checkbox.nvim";
customVim.vim-heritage rev = "main";
customVim.vim-textobj-xmlattr sha256 = "4YSEagQnLK5MBl2z53e6sOBlCDm220GYVlc6A+HNywg=";
customVim.vim-zoom };
vimPlugins.vim-visual-star-search };
# { vim-caser = pkgs.vimUtils.buildVimPlugin {
# plugin = customVim.toggle-checkbox-nvim; name = "vim-caser";
# type = "lua"; src = pkgs.fetchFromGitHub {
# config = '' owner = "arthurxavierx";
# vim.keymap.set("n", "<leader>t", ":lua require('toggle-checkbox').toggle()<CR>") repo = "vim-caser";
# ''; rev = "6bc9f41d170711c58e0157d882a5fe8c30f34bf6";
# } sha256 = "PXAY01O/cHvAdWx3V/pyWFeiV5qJGvLcAKhl5DQc0Ps=";
};
};
vimPlugins.harpoon vim-heritage = pkgs.vimUtils.buildVimPlugin {
vimPlugins.refactoring-nvim name = "vim-heritage";
vimPlugins.comment-nvim src = pkgs.fetchFromGitHub {
vimPlugins.dial-nvim owner = "jessarcher";
vimPlugins.gitsigns-nvim repo = "vim-heritage";
vimPlugins.impatient-nvim rev = "cffa05c78c0991c998adc4504d761b3068547db6";
vimPlugins.nvim-web-devicons sha256 = "Lebe5V1XFxn4kSZ+ImZ69Vst9Nbc0N7eA9IzOCijFS0=";
vimPlugins.rest-nvim };
vimPlugins.undotree };
vimPlugins.vim-easy-align
vimPlugins.vim-eunuch
vimPlugins.vim-highlightedyank
vimPlugins.vim-nix
vimPlugins.vim-obsession
vimPlugins.vim-pasta
vimPlugins.vim-polyglot
vimPlugins.vim-projectionist
vimPlugins.vim-repeat
vimPlugins.vim-sleuth
vimPlugins.vim-surround
vimPlugins.vim-terraform
vimPlugins.vim-textobj-user
vimPlugins.vim-tmux-navigator
vimPlugins.vim-unimpaired
vimPlugins.lualine-nvim vim-textobj-xmlattr = pkgs.vimUtils.buildVimPlugin {
name = "vim-textobj-xmlattr";
src = pkgs.fetchFromGitHub {
owner = "whatyouhide";
repo = "vim-textobj-xmlattr";
rev = "694a297f1d75fd527e87da9769f3c6519a87ebb1";
sha256 = "+91FVP95oh00flINdltqx6qJuijYo56tHIh3J098G2Q=";
};
};
# { vim-zoom = pkgs.vimUtils.buildVimPlugin {
# plugin = vimPlugins.vim-sort-motion; name = "vim-zoom";
# type = "lua"; src = pkgs.fetchFromGitHub {
# config = '' owner = "dhruvasagar";
# vim.g.sort_motion_flags = "ui" repo = "vim-zoom";
# ''; rev = "01c737005312c09e0449d6518decf8cedfee32c7";
# } sha256 = "/ADzScsG0u6RJbEtfO23Gup2NYdhPkExqqOPVcQa7aQ=";
# { };
# plugin = vimPlugins.treesj; };
# type = "lua"; };
# config = ''
# require "treesj".setup {}
# '';
# }
vimPlugins.vim-sort-motion
vimPlugins.treesj
# Testing opdavies-nvim = mkVimPlugin {inherit system;};
vimPlugins.vim-test in [
customVim.tabline-vim
customVim.vim-caser
customVim.vim-heritage
customVim.vim-textobj-xmlattr
customVim.vim-zoom
vimPlugins.vim-visual-star-search
# Git # {
vimPlugins.vim-fugitive # plugin = customVim.toggle-checkbox-nvim;
vimPlugins.vim-rhubarb # type = "lua";
# config = ''
# vim.keymap.set("n", "<leader>t", ":lua require('toggle-checkbox').toggle()<CR>")
# '';
# }
# Debugging vimPlugins.harpoon
vimPlugins.nvim-dap vimPlugins.refactoring-nvim
vimPlugins.nvim-dap-ui vimPlugins.comment-nvim
vimPlugins.nvim-dap-virtual-text vimPlugins.dial-nvim
vimPlugins.gitsigns-nvim
vimPlugins.impatient-nvim
vimPlugins.nvim-web-devicons
vimPlugins.rest-nvim
vimPlugins.undotree
vimPlugins.vim-easy-align
vimPlugins.vim-eunuch
vimPlugins.vim-highlightedyank
vimPlugins.vim-nix
vimPlugins.vim-obsession
vimPlugins.vim-pasta
vimPlugins.vim-polyglot
vimPlugins.vim-projectionist
vimPlugins.vim-repeat
vimPlugins.vim-sleuth
vimPlugins.vim-surround
vimPlugins.vim-terraform
vimPlugins.vim-textobj-user
vimPlugins.vim-tmux-navigator
vimPlugins.vim-unimpaired
# Treesitter vimPlugins.lualine-nvim
vimPlugins.nvim-treesitter.withAllGrammars
vimPlugins.nvim-treesitter-context
vimPlugins.nvim-treesitter-textobjects
# LSP, linting and formatting # {
vimPlugins.conform-nvim # plugin = vimPlugins.vim-sort-motion;
vimPlugins.lsp-status-nvim # type = "lua";
vimPlugins.none-ls-nvim # config = ''
vimPlugins.nvim-lspconfig # vim.g.sort_motion_flags = "ui"
# '';
# }
# {
# plugin = vimPlugins.treesj;
# type = "lua";
# config = ''
# require "treesj".setup {}
# '';
# }
vimPlugins.vim-sort-motion
vimPlugins.treesj
# Completion # Testing
vimPlugins.cmp-buffer vimPlugins.vim-test
vimPlugins.cmp-cmdline
vimPlugins.cmp-nvim-lsp
vimPlugins.cmp-nvim-lsp-signature-help
vimPlugins.cmp-path
vimPlugins.cmp-tabnine
vimPlugins.cmp-treesitter
vimPlugins.cmp-vsnip
vimPlugins.cmp_luasnip
vimPlugins.lspkind-nvim
vimPlugins.nvim-cmp
vimPlugins.phpactor
# Snippets # Git
vimPlugins.friendly-snippets vimPlugins.vim-fugitive
vimPlugins.luasnip vimPlugins.vim-rhubarb
# Telescope # Debugging
vimPlugins.plenary-nvim vimPlugins.nvim-dap
vimPlugins.popup-nvim vimPlugins.nvim-dap-ui
vimPlugins.telescope-file-browser-nvim vimPlugins.nvim-dap-virtual-text
vimPlugins.telescope-frecency-nvim
vimPlugins.telescope-fzf-native-nvim
vimPlugins.telescope-live-grep-args-nvim
vimPlugins.telescope-nvim
vimPlugins.telescope-ui-select-nvim
# Databases # Treesitter
vimPlugins.vim-dadbod vimPlugins.nvim-treesitter.withAllGrammars
vimPlugins.vim-dadbod-ui vimPlugins.nvim-treesitter-context
vimPlugins.vim-dadbod-completion vimPlugins.nvim-treesitter-textobjects
vimPlugins.vim-floaterm # LSP, linting and formatting
vimPlugins.conform-nvim
vimPlugins.lsp-status-nvim
vimPlugins.none-ls-nvim
vimPlugins.nvim-lspconfig
# # Markdown # Completion
# { vimPlugins.cmp-buffer
# plugin = vimPlugins.markdown-preview-nvim; vimPlugins.cmp-cmdline
# type = "lua"; vimPlugins.cmp-nvim-lsp
# config = '' vimPlugins.cmp-nvim-lsp-signature-help
# vim.g.mkdp_refresh_slow = 1 vimPlugins.cmp-path
# ''; vimPlugins.cmp-tabnine
# } vimPlugins.cmp-treesitter
vimPlugins.cmp-vsnip
vimPlugins.cmp_luasnip
vimPlugins.lspkind-nvim
vimPlugins.nvim-cmp
vimPlugins.phpactor
# Themes # Snippets
vimPlugins.catppuccin-nvim vimPlugins.friendly-snippets
vimPlugins.luasnip
# Wiki # Telescope
vimPlugins.vimwiki vimPlugins.plenary-nvim
vimPlugins.popup-nvim
vimPlugins.telescope-file-browser-nvim
vimPlugins.telescope-frecency-nvim
vimPlugins.telescope-fzf-native-nvim
vimPlugins.telescope-live-grep-args-nvim
vimPlugins.telescope-nvim
vimPlugins.telescope-ui-select-nvim
# Configuration. # Databases
opdavies-nvim vimPlugins.vim-dadbod
]; vimPlugins.vim-dadbod-ui
vimPlugins.vim-dadbod-completion
mkExtraPackages = { system }: vimPlugins.vim-floaterm
let
inherit (pkgs) nodePackages;
pkgs = (import inputs.nixpkgs { # # Markdown
inherit system; # {
# plugin = vimPlugins.markdown-preview-nvim;
# type = "lua";
# config = ''
# vim.g.mkdp_refresh_slow = 1
# '';
# }
config.allowUnfree = true; # Themes
}); vimPlugins.catppuccin-nvim
in
[
# Languages
nodePackages.typescript
pkgs.php81
# Language servers # Wiki
nodePackages."@tailwindcss/language-server" vimPlugins.vimwiki
nodePackages.bash-language-server
nodePackages.dockerfile-language-server-nodejs
nodePackages.grammarly-languageserver
nodePackages.intelephense
nodePackages.typescript-language-server
nodePackages.vls
nodePackages.volar
nodePackages.vscode-langservers-extracted
nodePackages.vue-language-server
nodePackages.yaml-language-server
pkgs.ansible-language-server
pkgs.gopls
pkgs.lua-language-server
pkgs.nixd
pkgs.phpactor
pkgs.rnix-lsp
pkgs.terraform-ls
# Formatters # Configuration.
pkgs.black opdavies-nvim
pkgs.nodePackages.prettier ];
pkgs.stylua
# Tools mkExtraPackages = {system}: let
pkgs.html-tidy inherit (pkgs) nodePackages;
pkgs.lazygit
pkgs.lazydocker pkgs = import inputs.nixpkgs {
pkgs.nnn inherit system;
pkgs.nodePackages.markdownlint-cli
pkgs.proselint config.allowUnfree = true;
pkgs.shellcheck };
]; in [
# Languages
nodePackages.typescript
pkgs.php81
# Language servers
nodePackages."@tailwindcss/language-server"
nodePackages.bash-language-server
nodePackages.dockerfile-language-server-nodejs
nodePackages.grammarly-languageserver
nodePackages.intelephense
nodePackages.typescript-language-server
nodePackages.vls
nodePackages.volar
nodePackages.vscode-langservers-extracted
nodePackages.vue-language-server
nodePackages.yaml-language-server
pkgs.ansible-language-server
pkgs.gopls
pkgs.lua-language-server
pkgs.nixd
pkgs.phpactor
pkgs.rnix-lsp
pkgs.terraform-ls
# Formatters
pkgs.alejandra
pkgs.black
pkgs.nodePackages.prettier
pkgs.stylua
# Tools
pkgs.html-tidy
pkgs.lazygit
pkgs.lazydocker
pkgs.nnn
pkgs.nodePackages.markdownlint-cli
pkgs.proselint
pkgs.shellcheck
];
mkExtraConfig = '' mkExtraConfig = ''
lua << EOF lua << EOF
@ -292,31 +285,28 @@ rec {
EOF EOF
''; '';
mkNeovim = { system }: mkNeovim = {system}: let
let inherit (pkgs) lib neovim;
inherit (pkgs) lib neovim; extraPackages = mkExtraPackages {inherit system;};
extraPackages = mkExtraPackages { inherit system; }; pkgs = legacyPackages.${system};
pkgs = legacyPackages.${system}; start = mkNeovimPlugins {inherit system;};
start = mkNeovimPlugins { inherit system; }; in
in
neovim.override { neovim.override {
configure = { configure = {
customRC = mkExtraConfig; customRC = mkExtraConfig;
packages.main = { inherit start; }; packages.main = {inherit start;};
}; };
extraMakeWrapperArgs = ''--suffix PATH : "${lib.makeBinPath extraPackages}"''; extraMakeWrapperArgs = ''--suffix PATH : "${lib.makeBinPath extraPackages}"'';
}; };
mkHomeManager = { system }: mkHomeManager = {system}: let
let extraConfig = mkExtraConfig;
extraConfig = mkExtraConfig; extraPackages = mkExtraPackages {inherit system;};
extraPackages = mkExtraPackages { inherit system; }; plugins = mkNeovimPlugins {inherit system;};
plugins = mkNeovimPlugins { inherit system; }; in {
in inherit extraConfig extraPackages plugins;
{
inherit extraConfig extraPackages plugins;
enable = true; enable = true;
}; };
} }

View file

@ -11,6 +11,7 @@ null_ls.setup {
sources = { sources = {
code_actions.gitsigns, code_actions.gitsigns,
formatting.alejandra,
formatting.black, formatting.black,
formatting.markdownlint, formatting.markdownlint,
formatting.phpcbf.with { formatting.phpcbf.with {