{ # Snowfall Lib provides a customized `lib` instance with access to your flake's library # as well as the libraries available from your flake's inputs. lib, # An instance of `pkgs` with your overlays and packages applied is also available. pkgs, # You also have access to your flake's inputs. inputs, # Additional metadata is provided by Snowfall Lib. system, # The system architecture for this host (eg. `x86_64-linux`). target, # The Snowfall Lib target for this system (eg. `x86_64-iso`). format, # A normalized name for the system target (eg. `iso`). virtual, # A boolean to determine whether this system is a virtual target using nixos-generators. systems, # An attribute map of your defined hosts. # All other arguments come from the module system. config, ... }: with lib; let cfg = config.modules.neovim; in { options.modules.neovim = { enable = mkOption { default = false; }; }; config = mkIf cfg.enable { home.sessionVariables = { EDITOR = "nvim"; VISUAL = "nvim"; }; programs.neovim = let toLua = str: '' lua << EOF ${str} EOF ''; in { # https://www.youtube.com/watch?v=YZAnJ0rwREA enable = true; viAlias = true; vimAlias = true; # vimdiffAlias = true; plugins = with pkgs.vimPlugins; [ { plugin = dracula-nvim; config = "colorscheme dracula"; } { plugin = comment-nvim; config = toLua ''require("Comment").setup()''; } # nix file support vim-nix # Syntax highlighting (nvim-treesitter.withPlugins (p: [ p.tree-sitter-nix p.tree-sitter-vim p.tree-sitter-bash p.tree-sitter-lua p.tree-sitter-python p.tree-sitter-json p.tree-sitter-cpp p.tree-sitter-rust ])) ]; extraConfig = '' set clipboard=unnamedplus ''; extraLuaConfig = '' vim.o.termguicolors = true ''; }; }; }