From 873f082fe600e8e263685404d6c0007fe0999062 Mon Sep 17 00:00:00 2001 From: moons-14 Date: Wed, 11 Mar 2026 16:40:11 +0900 Subject: [PATCH] nixvim: add dashboard-nvim with project-nvim integration Co-Authored-By: Claude Sonnet 4.6 --- .../home/nixvim/plugins/editor/default.nix | 1 + .../home/nixvim/plugins/editor/project.nix | 18 +++ modules/home/nixvim/plugins/ui/dashboard.nix | 119 ++++++++++++++++++ modules/home/nixvim/plugins/ui/default.nix | 1 + 4 files changed, 139 insertions(+) create mode 100644 modules/home/nixvim/plugins/editor/project.nix create mode 100644 modules/home/nixvim/plugins/ui/dashboard.nix diff --git a/modules/home/nixvim/plugins/editor/default.nix b/modules/home/nixvim/plugins/editor/default.nix index 4808770..8702ad8 100644 --- a/modules/home/nixvim/plugins/editor/default.nix +++ b/modules/home/nixvim/plugins/editor/default.nix @@ -11,5 +11,6 @@ ./trouble.nix ./conform.nix ./surround.nix + ./project.nix ]; } diff --git a/modules/home/nixvim/plugins/editor/project.nix b/modules/home/nixvim/plugins/editor/project.nix new file mode 100644 index 0000000..c79cf80 --- /dev/null +++ b/modules/home/nixvim/plugins/editor/project.nix @@ -0,0 +1,18 @@ +{...}: { + programs.nixvim = { + plugins.project-nvim = { + enable = true; + enableTelescope = true; + settings = { + detection_methods = ["pattern" "lsp"]; + patterns = [ + ".git" + "package.json" + "Cargo.toml" + "flake.nix" + "pyproject.toml" + ]; + }; + }; + }; +} diff --git a/modules/home/nixvim/plugins/ui/dashboard.nix b/modules/home/nixvim/plugins/ui/dashboard.nix new file mode 100644 index 0000000..1516d48 --- /dev/null +++ b/modules/home/nixvim/plugins/ui/dashboard.nix @@ -0,0 +1,119 @@ +{...}: { + programs.nixvim = { + plugins.dashboard-nvim = { + enable = true; + settings = { + theme = "doom"; + config = { + header = [ + "" + " ███╗ ██╗███████╗ ██████╗ ██╗ ██╗██╗███╗ ███╗" + " ████╗ ██║██╔════╝██╔═══██╗██║ ██║██║████╗ ████║" + " ██╔██╗ ██║█████╗ ██║ ██║██║ ██║██║██╔████╔██║" + " ██║╚██╗██║██╔══╝ ██║ ██║╚██╗ ██╔╝██║██║╚██╔╝██║" + " ██║ ╚████║███████╗╚██████╔╝ ╚████╔╝ ██║██║ ╚═╝ ██║" + " ╚═╝ ╚═══╝╚══════╝ ╚═════╝ ╚═══╝ ╚═╝╚═╝ ╚═╝" + "" + " ✦ · ☽ · ✦" + "" + ]; + + center = [ + { + icon = " "; + icon_hl = "DashboardIconFind"; + desc = "Find File"; + desc_hl = "DashboardDesc"; + key = "f"; + key_hl = "DashboardKey"; + action.__raw = "function() require('telescope.builtin').find_files() end"; + } + { + icon = " "; + icon_hl = "DashboardIconRecent"; + desc = "Recent Files"; + desc_hl = "DashboardDesc"; + key = "r"; + key_hl = "DashboardKey"; + action.__raw = "function() require('telescope.builtin').oldfiles() end"; + } + { + icon = " "; + icon_hl = "DashboardIconProject"; + desc = "Recent Projects"; + desc_hl = "DashboardDesc"; + key = "p"; + key_hl = "DashboardKey"; + action.__raw = "function() require('telescope').extensions['projects'].projects() end"; + } + { + icon = " "; + icon_hl = "DashboardIconGrep"; + desc = "Find Word"; + desc_hl = "DashboardDesc"; + key = "g"; + key_hl = "DashboardKey"; + action.__raw = "function() require('telescope.builtin').live_grep() end"; + } + { + icon = " "; + icon_hl = "DashboardIconNew"; + desc = "New File"; + desc_hl = "DashboardDesc"; + key = "n"; + key_hl = "DashboardKey"; + action = "enew"; + } + { + icon = " "; + icon_hl = "DashboardIconDots"; + desc = "Dotfiles"; + desc_hl = "DashboardDesc"; + key = "d"; + key_hl = "DashboardKey"; + action.__raw = "function() require('telescope.builtin').find_files({ cwd = vim.fn.expand('~/dotfiles') }) end"; + } + { + icon = " "; + icon_hl = "DashboardIconQuit"; + desc = "Quit"; + desc_hl = "DashboardDesc"; + key = "q"; + key_hl = "DashboardKey"; + action = "qa"; + } + ]; + + footer = [ + "" + " NixOS · nixvim · Catppuccin Mocha" + ]; + }; + }; + }; + + # Catppuccin Mocha カラーに合わせたハイライト + highlight = { + DashboardHeader = { + fg = "#cba6f7"; + bold = true; + }; + DashboardIconFind = {fg = "#89b4fa";}; + DashboardIconRecent = {fg = "#fab387";}; + DashboardIconProject = {fg = "#94e2d5";}; + DashboardIconGrep = {fg = "#a6e3a1";}; + DashboardIconNew = {fg = "#89dceb";}; + DashboardIconDots = {fg = "#f5c2e7";}; + DashboardIconQuit = {fg = "#f38ba8";}; + DashboardDesc = {fg = "#cdd6f4";}; + DashboardKey = { + fg = "#b4befe"; + bold = true; + }; + DashboardFooter = { + fg = "#7f849c"; + italic = true; + }; + }; + }; +} diff --git a/modules/home/nixvim/plugins/ui/default.nix b/modules/home/nixvim/plugins/ui/default.nix index 3399d49..3610465 100644 --- a/modules/home/nixvim/plugins/ui/default.nix +++ b/modules/home/nixvim/plugins/ui/default.nix @@ -10,5 +10,6 @@ ./barbar.nix ./lightbulb.nix ./colorizer.nix + ./dashboard.nix ]; }