{ pkgs, lib, config, ... }: let cfg = config.soispha.programs.nvim; in { imports = [ ./autocmds ./clipboard ./mappings ./options ./plgs ]; options.soispha.programs.nvim = { enable = lib.mkEnableOption "custom nvim config"; shell = lib.mkOption { type = lib.types.package; description = "The package to use for the shell in :!"; }; }; config = lib.mkIf cfg.enable { home-manager.users.soispha = { home.sessionVariables = { EDITOR = "nvim"; VISUAL = "nvim"; CODEEDITOR = "nvim"; }; programs.nixvim = { enable = true; # source: https://www.patorjk.com/software/taag/#p=display&f=ANSI%20Shadow&t=Neovim extraConfigLuaPre = lib.mkBefore '' --------------------------------------------------------------------------- -- -- ███╗ ██╗███████╗ ██████╗ ██╗ ██╗██╗███╗ ███╗ -- ████╗ ██║██╔════╝██╔═══██╗██║ ██║██║████╗ ████║ -- ██╔██╗ ██║█████╗ ██║ ██║██║ ██║██║██╔████╔██║ -- ██║╚██╗██║██╔══╝ ██║ ██║╚██╗ ██╔╝██║██║╚██╔╝██║ -- ██║ ╚████║███████╗╚██████╔╝ ╚████╔╝ ██║██║ ╚═╝ ██║ -- ╚═╝ ╚═══╝╚══════╝ ╚═════╝ ╚═══╝ ╚═╝╚═╝ ╚═╝ -- --------------------------------------------------------------------------- ''; extraPackages = with pkgs; [ /* These are mostly linters and formatters used for different file types. Including them here is fine, as they are not necessarily-sync able to different people. */ # nix alejandra statix # yaml yamllint # shell shellcheck shfmt ]; }; }; }; }