{ inputs, pkgs, lib, config, ... }: let themes = import "${inputs.nvim}/themes.nix" pkgs; plugins = themes.${config.nvim.colorscheme}; in { imports = [ inputs.nvim.homeModules.default ]; options.nvim.colorscheme = lib.mkOption { type = lib.types.enum (lib.attrNames themes); default = "zenwritten"; }; config = lib.mkIf config.nvim.enable { nvim.packageDefinitions.merge.nvim = _: { categories.colorscheme = config.nvim.colorscheme; }; home = { sessionVariables = { EDITOR = "nvim"; SUDO_EDITOR = "nvim"; SYSTEMD_EDITOR = "nvim"; PAGER = "nvimpager"; MANWIDTH = "80"; }; packages = with pkgs; [ nvimpager ]; }; xdg.configFile = lib.listToAttrs ( map ( package: lib.nameValuePair "nvimpager/pack/themes/opt/${package.pname}" { source = package; } ) plugins ) // { "nvimpager/init.lua".text = '' vim.g.theme = "${config.nvim.colorscheme}" vim.g.theme_packs = ${lib.generators.toLua { } (map (package: package.pname) plugins)} dofile("${./nvimpager.lua}") ''; }; }; }