{ # 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"; }; home.packages = with pkgs; [ git gnumake gcc ripgrep fd ]; 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 # ''; }; }; }