├── .envrc ├── bin └── scripts │ ├── shift │ ├── Gemfile │ └── shift.rb │ ├── mit │ ├── Gemfile │ └── mit.rb │ ├── ime │ └── ime.sh │ ├── zlib │ └── zlib.rb │ └── life │ └── life ├── config ├── spotifyd │ └── spotifyd.conf ├── fish │ ├── fish_plugins │ ├── functions │ │ ├── br.fish │ │ ├── run_recker.fish │ │ ├── nlr.fish │ │ ├── nvim_tmux.fish │ │ ├── fzf_prev_open.fish │ │ ├── theme_gruvbox.fish │ │ ├── fish_prompt.fish │ │ └── fish_right_prompt.fish │ ├── config.fish │ ├── completions │ │ └── fisher.fish │ └── themes │ │ └── Catppuccin Mocha.theme ├── wezterm │ ├── wezterm.luaa │ └── wezterm.lua ├── libskk │ └── rules │ │ └── StickyShift │ │ ├── keymap │ │ ├── latin.json │ │ ├── default.json │ │ ├── common.json │ │ ├── wide-latin.json │ │ ├── hankaku-katakana.json │ │ ├── hiragana.json │ │ └── katakana.json │ │ └── metadata.json ├── vim │ ├── .netrwhist │ ├── dpp.toml │ ├── ft.toml │ ├── ddc.vim │ ├── ddu.vim │ ├── dpp.ts │ ├── lsp.toml │ └── dpp_lazy.toml ├── nvim │ ├── lua │ │ ├── utils.lua │ │ └── configs │ │ │ ├── moonbit_lsp.lua │ │ │ ├── cmd.lua │ │ │ ├── tree-sitter.lua │ │ │ ├── kastel.lua │ │ │ ├── keymap.lua │ │ │ ├── ddc.lua │ │ │ ├── lsp.lua │ │ │ └── ddu.lua │ ├── lsp.toml │ ├── ddt.vim │ ├── autoload │ │ └── kastel.vim │ ├── dpp.toml │ ├── ddc.ts │ ├── dpp.ts │ ├── init.lua │ └── ddc.toml ├── lazygit │ └── config.yml ├── cava │ └── shaders │ │ ├── pass_through.vert │ │ ├── northern_lights.frag │ │ └── bar_spectrum.frag ├── rofi │ ├── config.rasi │ └── themes │ │ └── catppuccin-mocha.rasi ├── kitty │ ├── SpaceGray_Eighties.conf │ └── mocha.conf ├── swaylock │ └── config ├── waybar │ ├── mocha.css │ ├── config.bku │ ├── config │ └── style.css ├── ime │ ├── init.lua │ ├── skkeleton.vim │ └── lua │ │ └── ddc.lua ├── hypr │ ├── hyprlock.conf │ └── shader.frag └── conky │ └── conky.conf ├── word_dicts └── dict.txt ├── vsnip ├── .vsnip │ ├── json.json │ ├── lua.json │ ├── toml.json │ ├── python.json │ └── typescript.json ├── toml.json ├── lua.json ├── json.json ├── typescript.json └── python.json ├── czrc ├── Xmodmap ├── packages ├── fonts.nix ├── git.nix ├── security.nix ├── wayland.nix ├── editors.nix ├── terminal.nix ├── development.nix ├── gui-apps.nix ├── utilities.nix ├── misc.nix └── system.nix ├── nirc ├── emacs.d ├── early-init.el └── templates ├── catppuccin.nix ├── treefmt.nix ├── xremap.nix ├── vim ├── dpp.toml ├── ft.toml ├── ddc.vim ├── ddu.vim ├── dpp.ts ├── lsp.toml └── dpp_lazy.toml ├── qpwgraph └── audio.qpwgraph ├── gitconfig ├── .github └── workflows │ └── ci.yaml ├── .gitignore ├── ddskk-config.el ├── LICENSE.md ├── secrets ├── secrets.yaml └── claude-code.env ├── README.md ├── disko.nix ├── pkgs └── lspx │ └── default.nix ├── zshrc ├── hardware-configuration.nix ├── hyprlock.nix ├── nvfetcher.toml ├── tmux.conf ├── hosts └── wsl │ └── default.nix └── flake.nix /.envrc: -------------------------------------------------------------------------------- 1 | use flake 2 | -------------------------------------------------------------------------------- /bin/scripts/shift/Gemfile: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /config/spotifyd/spotifyd.conf: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /word_dicts/dict.txt: -------------------------------------------------------------------------------- 1 | temperature 2 | -------------------------------------------------------------------------------- /config/fish/fish_plugins: -------------------------------------------------------------------------------- 1 | catppuccin/fish 2 | -------------------------------------------------------------------------------- /config/wezterm/wezterm.luaa: -------------------------------------------------------------------------------- 1 | /mnt/c/Users/Coma/.config/wezterm/wezterm.lua -------------------------------------------------------------------------------- /config/fish/functions/br.fish: -------------------------------------------------------------------------------- 1 | /home/coma/.local/share/broot/launcher/fish/br.fish -------------------------------------------------------------------------------- /vsnip/.vsnip/json.json: -------------------------------------------------------------------------------- 1 | /home/coma/.ghq/github.com/Comamoca/dotfiles/vsnip//json.json -------------------------------------------------------------------------------- /vsnip/.vsnip/lua.json: -------------------------------------------------------------------------------- 1 | /home/coma/.ghq/github.com/Comamoca/dotfiles/vsnip//lua.json -------------------------------------------------------------------------------- /vsnip/.vsnip/toml.json: -------------------------------------------------------------------------------- 1 | /home/coma/.ghq/github.com/Comamoca/dotfiles/vsnip//toml.json -------------------------------------------------------------------------------- /config/fish/functions/run_recker.fish: -------------------------------------------------------------------------------- 1 | function run_recker 2 | cd (recker) 3 | end 4 | -------------------------------------------------------------------------------- /czrc: -------------------------------------------------------------------------------- 1 | { 2 | "path": "cz-emoji-japanese", 3 | "skipQuestions": ["scope"] 4 | } 5 | -------------------------------------------------------------------------------- /vsnip/.vsnip/python.json: -------------------------------------------------------------------------------- 1 | /home/coma/.ghq/github.com/Comamoca/dotfiles/vsnip//python.json -------------------------------------------------------------------------------- /vsnip/.vsnip/typescript.json: -------------------------------------------------------------------------------- 1 | /home/coma/.ghq/github.com/Comamoca/dotfiles/vsnip//typescript.json -------------------------------------------------------------------------------- /config/fish/functions/nlr.fish: -------------------------------------------------------------------------------- 1 | function nlr 2 | nix run nixpkgs#$argv[1] -- $argv[2..] 3 | end 4 | -------------------------------------------------------------------------------- /Xmodmap: -------------------------------------------------------------------------------- 1 | clear lock 2 | clear control 3 | 4 | keycode 66 = Control_L 5 | add control = Control_L Control_R 6 | -------------------------------------------------------------------------------- /config/fish/config.fish: -------------------------------------------------------------------------------- 1 | /nix/store/clc35xwqxvnhk3p5zxa7ygd8mxg65mwy-home-manager-files/.config/fish/config.fish -------------------------------------------------------------------------------- /packages/fonts.nix: -------------------------------------------------------------------------------- 1 | { pkgs }: 2 | with pkgs; [ 3 | # Fonts 4 | noto-fonts 5 | noto-fonts-cjk-sans 6 | ] 7 | -------------------------------------------------------------------------------- /bin/scripts/mit/Gemfile: -------------------------------------------------------------------------------- 1 | # frozen_string_literal: true 2 | 3 | source "https://rubygems.org" 4 | 5 | # gem "rails" 6 | -------------------------------------------------------------------------------- /config/libskk/rules/StickyShift/keymap/latin.json: -------------------------------------------------------------------------------- 1 | { 2 | "include": [ 3 | "default/latin", 4 | "common" 5 | ] 6 | } 7 | -------------------------------------------------------------------------------- /nirc: -------------------------------------------------------------------------------- 1 | ; ~/.nirc 2 | 3 | ; fallback when no lock found 4 | defaultAgent=pnpm 5 | 6 | ; for global installs 7 | globalAgent=pnpm 8 | -------------------------------------------------------------------------------- /config/libskk/rules/StickyShift/keymap/default.json: -------------------------------------------------------------------------------- 1 | { 2 | "include": [ 3 | "default/default", 4 | "common" 5 | ] 6 | } 7 | -------------------------------------------------------------------------------- /config/libskk/rules/StickyShift/metadata.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "[AZIK] Sticky Shift", 3 | "description": "Enable Sticky Shift" 4 | } 5 | -------------------------------------------------------------------------------- /config/libskk/rules/StickyShift/keymap/common.json: -------------------------------------------------------------------------------- 1 | { 2 | "define": { 3 | "keymap": { 4 | ":": "upper-;" 5 | } 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /config/libskk/rules/StickyShift/keymap/wide-latin.json: -------------------------------------------------------------------------------- 1 | { 2 | "include": [ 3 | "default/wide-latin", 4 | "common" 5 | ] 6 | } 7 | -------------------------------------------------------------------------------- /config/fish/functions/nvim_tmux.fish: -------------------------------------------------------------------------------- 1 | tmux split-window -v 2 | tmux split-window -h 3 | tmux resize-pane -D 15 4 | tmux select-pane -t 1 5 | nvim 6 | -------------------------------------------------------------------------------- /packages/git.nix: -------------------------------------------------------------------------------- 1 | { pkgs }: 2 | with pkgs; [ 3 | # Git tools 4 | git 5 | delta 6 | lazygit 7 | tig 8 | github-cli 9 | ghq 10 | ] 11 | -------------------------------------------------------------------------------- /packages/security.nix: -------------------------------------------------------------------------------- 1 | { pkgs }: 2 | with pkgs; [ 3 | # Security tools 4 | libsodium 5 | libsecret 6 | keybase 7 | lssecret 8 | pinentry-qt 9 | ] 10 | -------------------------------------------------------------------------------- /packages/wayland.nix: -------------------------------------------------------------------------------- 1 | { pkgs }: 2 | with pkgs; [ 3 | # Wayland tools 4 | qpwgraph 5 | gammastep 6 | showmethekey 7 | 8 | # Audio 9 | # sonic-pi 10 | ] 11 | -------------------------------------------------------------------------------- /config/fish/functions/fzf_prev_open.fish: -------------------------------------------------------------------------------- 1 | function fzf_prev_open 2 | set filename (find . -type f | fzf --preview 'bat --color=always --style=header,grid {}') 3 | nvim (realpath $filename) 4 | end 5 | -------------------------------------------------------------------------------- /emacs.d/early-init.el: -------------------------------------------------------------------------------- 1 | (with-eval-after-load 'scroll-bar 2 | (scroll-bar-mode -1)) 3 | 4 | (with-eval-after-load 'tool-bar 5 | (tool-bar-mode -1)) 6 | 7 | (with-eval-after-load 'menu-bar 8 | (menu-bar-mode -1)) 9 | -------------------------------------------------------------------------------- /config/libskk/rules/StickyShift/keymap/hankaku-katakana.json: -------------------------------------------------------------------------------- 1 | { 2 | "include": [ 3 | "default" 4 | ], 5 | "define": { 6 | "keymap": { 7 | "\\": "set-input-mode-hiragana" 8 | } 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /packages/editors.nix: -------------------------------------------------------------------------------- 1 | { pkgs, emacs', nurpkgs }: 2 | with pkgs; [ 3 | # Editors 4 | vim-full 5 | emacs' 6 | felix 7 | micro 8 | neovim 9 | 10 | # Editor tools 11 | emacs-lsp-booster 12 | tree-sitter 13 | ] 14 | -------------------------------------------------------------------------------- /config/vim/.netrwhist: -------------------------------------------------------------------------------- 1 | let g:netrw_dirhistmax =10 2 | let g:netrw_dirhistcnt =2 3 | let g:netrw_dirhist_2='/home/coma/.ghq/github.com/Comamoca/dotfiles/config/vim' 4 | let g:netrw_dirhist_1='/home/coma/.ghq/github.com/Comamoca/dotfiles/vim' 5 | -------------------------------------------------------------------------------- /vsnip/toml.json: -------------------------------------------------------------------------------- 1 | { 2 | "dpp-plugin": { 3 | "prefix": "plugin", 4 | "body": [ 5 | "[[plugins]]", 6 | "repo = '$1'", 7 | "on_source = '$2'", 8 | "lua_source = \"\"\"", 9 | "\"\"\"" 10 | ] 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /config/nvim/lua/utils.lua: -------------------------------------------------------------------------------- 1 | -- map function likery JavaScript. 2 | local function map(fn, ary) 3 | local a = {} 4 | for i = 1, #ary do 5 | table.insert(a, fn(ary[i], i)) 6 | end 7 | return a 8 | end 9 | 10 | return { 11 | map = map, 12 | } 13 | -------------------------------------------------------------------------------- /vsnip/lua.json: -------------------------------------------------------------------------------- 1 | { 2 | "keymap": { 3 | "prefix": ["keymap"], 4 | "body": "vim.keymap.set($1, $2, $3, {})" 5 | }, 6 | "pirnt": { 7 | "prefix": ["print"], 8 | "body": "vim.print($1)", 9 | "description": "prettry print in neovim embeded" 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /packages/terminal.nix: -------------------------------------------------------------------------------- 1 | { pkgs }: 2 | with pkgs; [ 3 | # Terminal emulators 4 | wezterm 5 | alacritty 6 | kitty 7 | 8 | # Shell tools 9 | starship 10 | just 11 | zellij 12 | tmux 13 | 14 | # File managers 15 | felix-fm 16 | ranger 17 | xfce.thunar 18 | 19 | claude-code 20 | ] 21 | -------------------------------------------------------------------------------- /catppuccin.nix: -------------------------------------------------------------------------------- 1 | { fetchFromGitHub }: 2 | 3 | { 4 | fish = fetchFromGitHub { 5 | name = "fish"; 6 | owner = "catppuccin"; 7 | repo = "fish"; 8 | rev = "1iqmchnz0gglwsxrqcm300754s84gsxrbwmfxh5mdlm16gcr9n5r"; 9 | hash = "sha256-udiU2TOh0lYL7K7ylbt+BGlSDgCjMpy75vQ98C1kFcc="; 10 | }; 11 | } 12 | -------------------------------------------------------------------------------- /packages/development.nix: -------------------------------------------------------------------------------- 1 | { pkgs }: 2 | with pkgs; [ 3 | # Development tools 4 | gleam.bin.latest 5 | deno."2.5.4" 6 | nodejs_24 7 | bun 8 | uv 9 | 10 | # Languages 11 | vlang 12 | clojure 13 | babashka 14 | ruby 15 | 16 | # Common Lisp 17 | # sbcl' 18 | # roswell 19 | # sbclPackages.qlot-cli 20 | ] 21 | -------------------------------------------------------------------------------- /config/libskk/rules/StickyShift/keymap/hiragana.json: -------------------------------------------------------------------------------- 1 | { 2 | "include": [ 3 | "common", 4 | "default/hiragana" 5 | ], 6 | "define": { 7 | "keymap": { 8 | "[": "set-input-mode-katakana", 9 | "q": null, 10 | "Q": "start-preedit insert-kana-ん", 11 | ";": "start-preedit-no-delete" 12 | } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /config/libskk/rules/StickyShift/keymap/katakana.json: -------------------------------------------------------------------------------- 1 | { 2 | "include": [ 3 | "common", 4 | "default/katakana" 5 | ], 6 | "define": { 7 | "keymap": { 8 | "[": "set-input-mode-hiragana", 9 | "q": null, 10 | "Q": "start-preedit insert-kana-ン", 11 | ";": "start-preedit-no-delete" 12 | } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /config/lazygit/config.yml: -------------------------------------------------------------------------------- 1 | customCommands: 2 | - key: "C" 3 | command: "git cz" 4 | description: "commit with commitizen" 5 | context: "files" 6 | loadingText: "opening commitizen commit tool" 7 | output: terminal 8 | gui: 9 | language: "ja" 10 | paging: 11 | colorArg: always 12 | pager: delta --dark --paging=never 13 | -------------------------------------------------------------------------------- /packages/gui-apps.nix: -------------------------------------------------------------------------------- 1 | { pkgs, nurpkgs }: 2 | with pkgs; [ 3 | # Browsers 4 | google-chrome 5 | 6 | # Communication 7 | slack 8 | teams-for-linux 9 | discord 10 | signal-desktop-bin 11 | 12 | # Media 13 | spotify 14 | vlc 15 | imv 16 | 17 | # Utilities 18 | bottles 19 | gnome-pomodoro 20 | termshot 21 | immersed 22 | ] 23 | -------------------------------------------------------------------------------- /treefmt.nix: -------------------------------------------------------------------------------- 1 | { pkgs, ... }: 2 | { 3 | projectRootFile = "flake.nix"; 4 | programs = { 5 | nixfmt.enable = true; 6 | taplo.enable = true; 7 | deno.enable = true; 8 | stylua.enable = true; 9 | }; 10 | 11 | settings.formatter = { 12 | "stylua".options = [ 13 | "--indent-type" 14 | "Spaces" 15 | "--indent-width" 16 | "2" 17 | ]; 18 | }; 19 | } 20 | -------------------------------------------------------------------------------- /config/nvim/lua/configs/moonbit_lsp.lua: -------------------------------------------------------------------------------- 1 | local util = require("lspconfig.util") 2 | 3 | return { 4 | default_config = { 5 | cmd = { "moonbit-lsp" }, 6 | filetypes = { "moonbit" }, 7 | root_dir = util.root_pattern("moon.mod.json"), 8 | }, 9 | docs = { 10 | description = [[ 11 | The moonbit language server. 12 | 13 | ```sh 14 | npm install -g @moonbit/moonbit-lsp 15 | ``` 16 | ]], 17 | }, 18 | } 19 | -------------------------------------------------------------------------------- /vsnip/json.json: -------------------------------------------------------------------------------- 1 | { 2 | "foo": { 3 | "prefix": "foo", 4 | "body": [ 5 | "bar" 6 | ], 7 | "description": "test snippet" 8 | }, 9 | "snip": { 10 | "prefix": "snip", 11 | "body": [ 12 | "\"$1\": {", 13 | "\"prefix\": [\"$2\"],", 14 | "\"body\": [$3],", 15 | "\"description\": \"$4\"", 16 | "}" 17 | ], 18 | "description": "vsnip template" 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /config/cava/shaders/pass_through.vert: -------------------------------------------------------------------------------- 1 | #version 330 2 | 3 | 4 | // Input vertex data, different for all executions of this shader. 5 | layout(location = 0) in vec3 vertexPosition_modelspace; 6 | 7 | // Output data ; will be interpolated for each fragment. 8 | out vec2 fragCoord; 9 | 10 | void main() 11 | { 12 | gl_Position = vec4(vertexPosition_modelspace,1); 13 | fragCoord = (vertexPosition_modelspace.xy+vec2(1,1))/2.0; 14 | } 15 | -------------------------------------------------------------------------------- /packages/utilities.nix: -------------------------------------------------------------------------------- 1 | { pkgs }: 2 | with pkgs; [ 3 | # CLI utilities 4 | tldr 5 | lsd 6 | jnv 7 | jq 8 | dasel 9 | jless 10 | teip 11 | tokei 12 | tree 13 | unar 14 | sd 15 | bat 16 | ripgrep 17 | fd 18 | fzf 19 | 20 | # System tools 21 | htop 22 | bottom 23 | 24 | # Network tools 25 | httpie 26 | wget 27 | curl 28 | k6 29 | 30 | # Monitoring 31 | playerctl 32 | pavucontrol 33 | pulsemixer 34 | ] 35 | -------------------------------------------------------------------------------- /config/nvim/lua/configs/cmd.lua: -------------------------------------------------------------------------------- 1 | vim.api.nvim_create_user_command("Config", "e $MYVIMRC", {}) 2 | vim.api.nvim_create_user_command("Ddutoml", "", {}) 3 | vim.api.nvim_create_user_command("DdcToml", "", {}) 4 | -- vim.api.nvim_create_user_command("DduToml", "e $MYVIMRC", {}) 5 | 6 | vim.api.nvim_create_user_command("Ddu", function(args) 7 | local subcmd = args.args 8 | print(subcmd) 9 | vim.fn["ddu#start"]({ sources = { { name = subcmd } } }) 10 | end, { nargs = 1 }) 11 | -------------------------------------------------------------------------------- /xremap.nix: -------------------------------------------------------------------------------- 1 | { pkgs }: 2 | rec { 3 | xremap-config = { 4 | modmap = [ 5 | { 6 | name = "Global"; 7 | remap = { 8 | Enter = { 9 | held = "Alt_R"; 10 | alone = "Enter"; 11 | }; 12 | KatakanaHiragana = "Ctrl_R"; 13 | Alt_L = "Super_L"; 14 | Super_L = "Alt_L"; 15 | }; 16 | } 17 | ]; 18 | }; 19 | xremap-config-yaml = (pkgs.formats.yaml { }).generate "config.yml" xremap-config; 20 | } 21 | -------------------------------------------------------------------------------- /config/rofi/config.rasi: -------------------------------------------------------------------------------- 1 | configuration{ 2 | modi: "run,drun,window"; 3 | icon-theme: "Oranchelo"; 4 | show-icons: true; 5 | terminal: "alacritty"; 6 | drun-display-format: "{icon} {name}"; 7 | location: 0; 8 | disable-history: false; 9 | hide-scrollbar: true; 10 | display-drun: "  Apps "; 11 | display-run: "  Run "; 12 | display-window: " 󰕰 Window"; 13 | display-Network: " 󰤨 Network"; 14 | sidebar-mode: true; 15 | } 16 | 17 | @theme "catppuccin-mocha" 18 | -------------------------------------------------------------------------------- /vim/dpp.toml: -------------------------------------------------------------------------------- 1 | # dpp.vim 2 | [[plugins]] 3 | repo = 'Shougo/dpp.vim' 4 | 5 | [[plugins]] 6 | repo = "Shougo/dpp-ext-toml" 7 | 8 | [[plugins]] 9 | repo = "Shougo/dpp-ext-lazy" 10 | 11 | [[plugins]] 12 | repo = "Shougo/dpp-ext-installer" 13 | 14 | [[plugins]] 15 | repo = "Shougo/dpp-protocol-git" 16 | 17 | [[plugins]] 18 | repo = "vim-jp/vital.vim" 19 | 20 | [[plugins]] 21 | repo = 'lambdalisue/kensaku.vim' 22 | 23 | # denops.vim 24 | [[plugins]] 25 | repo = 'vim-denops/denops.vim' 26 | 27 | [[plugins]] 28 | repo = 'jxnblk/vim-mdx-js' 29 | -------------------------------------------------------------------------------- /qpwgraph/audio.qpwgraph: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /vsnip/typescript.json: -------------------------------------------------------------------------------- 1 | { 2 | "log": { 3 | "prefix": ["log"], 4 | "body": "console.log($1)" 5 | }, 6 | "arrow": { 7 | "prefix": ["arrow"], 8 | "body": [ 9 | "const $1 = () => {", 10 | "$2", 11 | "}" 12 | ] 13 | }, 14 | "export function": { 15 | "prefix": ["exfn"], 16 | "body": [ 17 | "export functoin $1($2) $3 {", 18 | "}" 19 | ] 20 | }, 21 | "function": { 22 | "prefix": ["fn"], 23 | "body": [ 24 | "functoin $1($2) $3 {", 25 | "}" 26 | ] 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /config/nvim/lsp.toml: -------------------------------------------------------------------------------- 1 | [[plugins]] 2 | repo = 'neovim/nvim-lspconfig' 3 | # on_event = ['BufEnter'] 4 | on_event = ['BufRead', 'CursorHold'] 5 | lua_source = """ 6 | require("configs/lsp") 7 | """ 8 | # on_event = ['LspAttach'] 9 | 10 | # Add `vim.*` in LSP suggestion 11 | [[plugins]] 12 | repo = 'folke/lazydev.nvim' 13 | on_source = 'nvim-lspconfig' 14 | 15 | # Language Server management 16 | # [[plugins]] 17 | # repo = 'williamboman/mason.nvim' 18 | # on_source = 'nvim-lspconfig' 19 | 20 | # [[plugins]] 21 | # repo = 'williamboman/mason-lspconfig.nvim' 22 | # on_source = 'mason.nvim' 23 | # lua_source = """ 24 | # """ 25 | -------------------------------------------------------------------------------- /gitconfig: -------------------------------------------------------------------------------- 1 | [ghq] 2 | root = ~/.ghq 3 | [user] 4 | email = comamoca.dev@gmail.com 5 | name = Comamoca 6 | signingKey = 35CFBFA289634E3ECAC96FCE0C8FA6582E5474A5 7 | [commit] 8 | gpgsign = true 9 | [gpg] 10 | program = gpg 11 | [init] 12 | defaultBranch = main 13 | 14 | [alias] 15 | undo = reset --sort HEAD^ 16 | [http] 17 | postBuffer = 524288000 18 | [credential "https://github.com"] 19 | helper = 20 | helper = !/home/coma/.nix-profile/bin/gh auth git-credential 21 | [credential "https://gist.github.com"] 22 | helper = 23 | helper = !/home/coma/.nix-profile/bin/gh auth git-credential 24 | [github] 25 | user = Comamoca 26 | -------------------------------------------------------------------------------- /packages/misc.nix: -------------------------------------------------------------------------------- 1 | { pkgs, nurpkgs }: 2 | with pkgs; [ 3 | # Misc tools 4 | zenn-cli 5 | comma 6 | nb 7 | w3m 8 | nixVersions.nix_2_28 9 | godot 10 | arduino 11 | meson 12 | act 13 | aider-chat 14 | algia 15 | polybarFull 16 | devenv 17 | libnotify 18 | zf 19 | jo 20 | gitify 21 | kickstart 22 | xsel 23 | nix-search-cli 24 | jwt-cli 25 | nix-prefetch-scripts 26 | vhs 27 | hyperfine 28 | sqlite 29 | graphviz 30 | multimarkdown 31 | wakatime 32 | wakatime-cli 33 | cachix 34 | nix-output-monitor 35 | lazydocker 36 | cmigemo 37 | 38 | # Social 39 | nurpkgs.bsky 40 | ] 41 | -------------------------------------------------------------------------------- /vsnip/python.json: -------------------------------------------------------------------------------- 1 | { 2 | "input-map-int": { 3 | "prefix": ["input;map;int"], 4 | "body": [ 5 | "$1 = map(int, input().split())" 6 | ] 7 | }, 8 | "input-int": { 9 | "prefix": ["input;int"], 10 | "body": ["$1 = int(input())"] 11 | }, 12 | "input-split": { 13 | "prefix": ["input;split"], 14 | "body": ["$1 = input().split()"] 15 | }, 16 | "input-multi-int": { 17 | "prefix": ["input;multi;int;N"], 18 | "body": ["$1 = [int(input()) for i in range($2)]"] 19 | }, 20 | "input-multi": { 21 | "prefix": ["input;multi;str;N"], 22 | "body": ["$1 = [input() for i in range($2)]"] 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /.github/workflows/ci.yaml: -------------------------------------------------------------------------------- 1 | on: 2 | pull_request: 3 | push: 4 | branches: [main] 5 | 6 | jobs: 7 | build: 8 | name: Auto formatting 9 | runs-on: ubuntu-22.04 10 | permissions: 11 | contents: write 12 | steps: 13 | - uses: actions/checkout@v4 14 | - name: Check Nix flake inputs 15 | uses: DeterminateSystems/flake-checker-action@v4 16 | - name: Install Nix 17 | uses: DeterminateSystems/nix-installer-action@v3 18 | - name: Check flake 19 | run: nix flake check 20 | - name: Auto Commit 21 | uses: stefanzweifel/git-auto-commit-action@v5 22 | with: 23 | commit_message: Apply Code Formatter 24 | -------------------------------------------------------------------------------- /config/vim/dpp.toml: -------------------------------------------------------------------------------- 1 | # dpp.vim 2 | [[plugins]] 3 | repo = 'Shougo/dpp.vim' 4 | 5 | [[plugins]] 6 | repo = "Shougo/dpp-ext-toml" 7 | 8 | [[plugins]] 9 | repo = "Shougo/dpp-ext-local" 10 | 11 | [[plugins]] 12 | repo = "Shougo/dpp-ext-lazy" 13 | 14 | [[plugins]] 15 | repo = "Shougo/dpp-ext-installer" 16 | 17 | [[plugins]] 18 | repo = "Shougo/dpp-protocol-git" 19 | 20 | [[plugins]] 21 | repo = "vim-jp/vital.vim" 22 | 23 | [[plugins]] 24 | repo = 'lambdalisue/kensaku.vim' 25 | 26 | # denops.vim 27 | [[plugins]] 28 | repo = 'vim-denops/denops.vim' 29 | 30 | [[plugins]] 31 | repo = 'jxnblk/vim-mdx-js' 32 | 33 | [[plugins]] 34 | repo = 'catppuccin/vim' 35 | name = "catpuccin" 36 | 37 | [[plugins]] 38 | repo = 'joshdick/onedark.vim' 39 | -------------------------------------------------------------------------------- /config/kitty/SpaceGray_Eighties.conf: -------------------------------------------------------------------------------- 1 | background #212121 2 | foreground #bdb9ae 3 | cursor #bbbbbb 4 | selection_background #262e35 5 | color0 #15171c 6 | color8 #545454 7 | color1 #ec5f67 8 | color9 #ff6973 9 | color2 #80a763 10 | color10 #93d393 11 | color3 #fdc253 12 | color11 #ffd156 13 | color4 #5485c0 14 | color12 #4d83d0 15 | color5 #bf83c0 16 | color13 #ff55ff 17 | color6 #57c2c0 18 | color14 #83e8e4 19 | color7 #eeece7 20 | color15 #ffffff 21 | selection_foreground #212121 22 | -------------------------------------------------------------------------------- /bin/scripts/ime/ime.sh: -------------------------------------------------------------------------------- 1 | #! /usr/bin/env nix-shell 2 | #! nix-shell -i bash -p bash 3 | 4 | nvim_bin="$HOME/.nix-profile/bin/nvim" 5 | # nvim_bin="nvim" 6 | 7 | # kitty_bin="$HOME/.nix-profile/bin/kitty" 8 | kitty_bin="kitty" 9 | 10 | if [ $# -ne 1 ]; then 11 | env NVIM_APPNAME=ime $nvim_bin /tmp/clip -c startinsert 12 | head -c -1 /tmp/clip | wl-copy 13 | rm -f /tmp/clip 14 | exit 15 | fi 16 | 17 | if [ "$1" = 'float' ]; then 18 | # $kitty_bin --class Floaterm env NVIM_APPNAME=ime $nvim_bin /tmp/clip -c startinsert 19 | foot -T Floaterm -W 60x13 env NVIM_APPNAME=ime $nvim_bin /tmp/clip -c startinsert 20 | # kitty --class Floaterm env vim /tmp/clip -c startinsert 21 | 22 | if [[ -e /tmp/clip ]]; then 23 | head -c -1 /tmp/clip | wl-copy 24 | rm -f /tmp/clip 25 | fi 26 | fi 27 | -------------------------------------------------------------------------------- /config/nvim/lua/configs/tree-sitter.lua: -------------------------------------------------------------------------------- 1 | local filename = debug.getinfo(1).source:match("[^/]*$") 2 | print(string.format("[[WARN]] @%s loading outside config file.", filename)) 3 | 4 | require("nvim-treesitter.configs").setup({ 5 | ensure_installed = { "c", "lua", "vim", "vimdoc", "query" }, 6 | sync_install = false, 7 | auto_install = true, 8 | ignore_install = { "javascript" }, 9 | 10 | highlight = { 11 | enable = true, 12 | 13 | disable = function(lang, buf) 14 | local max_filesize = 100 * 1024 -- 100 KB 15 | local ok, stats = pcall(vim.loop.fs_stat, vim.api.nvim_buf_get_name(buf)) 16 | if ok and stats and stats.size > max_filesize then 17 | return true 18 | end 19 | end, 20 | 21 | additional_vim_regex_highlighting = false, 22 | }, 23 | }) 24 | -------------------------------------------------------------------------------- /config/swaylock/config: -------------------------------------------------------------------------------- 1 | color=1e1e2e 2 | bs-hl-color=f5e0dc 3 | caps-lock-bs-hl-color=f5e0dc 4 | caps-lock-key-hl-color=a6e3a1 5 | inside-color=00000000 6 | inside-clear-color=00000000 7 | inside-caps-lock-color=00000000 8 | inside-ver-color=00000000 9 | inside-wrong-color=00000000 10 | key-hl-color=a6e3a1 11 | layout-bg-color=00000000 12 | layout-border-color=00000000 13 | layout-text-color=cdd6f4 14 | line-color=00000000 15 | line-clear-color=00000000 16 | line-caps-lock-color=00000000 17 | line-ver-color=00000000 18 | line-wrong-color=00000000 19 | ring-color=b4befe 20 | ring-clear-color=f5e0dc 21 | ring-caps-lock-color=fab387 22 | ring-ver-color=89b4fa 23 | ring-wrong-color=eba0ac 24 | separator-color=00000000 25 | text-color=cdd6f4 26 | text-clear-color=f5e0dc 27 | text-caps-lock-color=fab387 28 | text-ver-color=89b4fa 29 | text-wrong-color=eba0ac -------------------------------------------------------------------------------- /config/fish/completions/fisher.fish: -------------------------------------------------------------------------------- 1 | complete --command fisher --exclusive --long help --description "Print help" 2 | complete --command fisher --exclusive --long version --description "Print version" 3 | complete --command fisher --exclusive --condition __fish_use_subcommand --arguments install --description "Install plugins" 4 | complete --command fisher --exclusive --condition __fish_use_subcommand --arguments update --description "Update installed plugins" 5 | complete --command fisher --exclusive --condition __fish_use_subcommand --arguments remove --description "Remove installed plugins" 6 | complete --command fisher --exclusive --condition __fish_use_subcommand --arguments list --description "List installed plugins matching regex" 7 | complete --command fisher --exclusive --condition "__fish_seen_subcommand_from update remove" --arguments "(fisher list)" 8 | -------------------------------------------------------------------------------- /emacs.d/templates: -------------------------------------------------------------------------------- 1 | fundamental-mode ;; Available everywhere 2 | 3 | (today (format-time-string "%Y-%m-%d")) 4 | 5 | markdown-mode 6 | (diary "---" n 7 | "title: '" (format-time-string "%Y-%m-%d") "の日報'" n 8 | "description: '" (format-time-string "%-m/%-d") "の日報をお届けいたします。'" n 9 | "pubDate: '" (format-time-string "%b %-d %Y")"'" n 10 | "emoji: 🦊" n 11 | "tags: []" n 12 | "draft: false" n 13 | "---" n n 14 | "## 今日やったこと" n n n 15 | "## 明日以降やりたいこと" n) 16 | 17 | (article "---" n 18 | "title: ''" n 19 | "description: ''" n 20 | "pubDate: '" (format-time-string "%b %-d %Y") "'" n 21 | "emoji: 🦊" n 22 | "tags: []" n 23 | "draft: true" n 24 | "---" n n) 25 | 26 | emacs-lisp-mode 27 | 28 | 29 | git-commit-mode 30 | (future (":sparkles: " "( " p " )" " " p )) 31 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | fish_variables 2 | skk 3 | 4 | .direnv 5 | 6 | eln-cache 7 | config/emacs/elpa 8 | 9 | # Emacs 10 | parinfer-rust 11 | *~ 12 | config/emacs/projects 13 | emacs.d/elpa 14 | emacs.d/transient 15 | emacs.d/emojis 16 | 17 | # Nix 18 | result 19 | 20 | *.raw.yaml 21 | 22 | emacs.d/.cache 23 | emacs.d/url 24 | emacs.d/diary 25 | emacs.d/tutorial/ 26 | emacs.d/.lsp-session-v1 27 | emacs.d/.org-id-locations 28 | emacs.d/bookmarks 29 | emacs.d/eshell/ 30 | emacs.d/.authinfo.gpg 31 | emacs.d/games/ 32 | emacs.d/ielm-history.eld 33 | emacs.d/junk/ 34 | emacs.d/memo/ 35 | emacs.d/multisession/ 36 | emacs.d/network-security.data 37 | emacs.d/newsticker/ 38 | emacs.d/org-roam/ 39 | emacs.d/projectile-bookmarks.eld 40 | emacs.d/projects 41 | emacs.d/recentf 42 | emacs.d/request/ 43 | emacs.d/snippets/ 44 | emacs.d/templates/ 45 | emacs.d/tramp 46 | emacs.d/tree-sitter/ 47 | .aider* 48 | -------------------------------------------------------------------------------- /config/fish/themes/Catppuccin Mocha.theme: -------------------------------------------------------------------------------- 1 | # name: 'Catppuccin Mocha' 2 | # url: 'https://github.com/catppuccin/fish' 3 | # preferred_background: 1e1e2e 4 | 5 | fish_color_normal cdd6f4 6 | fish_color_command 89b4fa 7 | fish_color_param f2cdcd 8 | fish_color_keyword f38ba8 9 | fish_color_quote a6e3a1 10 | fish_color_redirection f5c2e7 11 | fish_color_end fab387 12 | fish_color_comment 7f849c 13 | fish_color_error f38ba8 14 | fish_color_gray 6c7086 15 | fish_color_selection --background=313244 16 | fish_color_search_match --background=313244 17 | fish_color_option a6e3a1 18 | fish_color_operator f5c2e7 19 | fish_color_escape eba0ac 20 | fish_color_autosuggestion 6c7086 21 | fish_color_cancel f38ba8 22 | fish_color_cwd f9e2af 23 | fish_color_user 94e2d5 24 | fish_color_host 89b4fa 25 | fish_color_host_remote a6e3a1 26 | fish_color_status f38ba8 27 | fish_pager_color_progress 6c7086 28 | fish_pager_color_prefix f5c2e7 29 | fish_pager_color_completion cdd6f4 30 | fish_pager_color_description 6c7086 -------------------------------------------------------------------------------- /bin/scripts/shift/shift.rb: -------------------------------------------------------------------------------- 1 | #! /usr/bin/env ruby 2 | 3 | require "json" 4 | 5 | EMPTY = "\"[[EMPTY]]\"" 6 | 7 | def get() 8 | get_cmd = "hyprctl -j getoption decoration:screen_shader" 9 | io = IO.popen(get_cmd) 10 | 11 | parsed = JSON.parse(io.gets) 12 | 13 | return parsed["str"] 14 | end 15 | 16 | def set(path) 17 | set_cmd = "hyprctl keyword decoration:screen_shader #{path}" 18 | io = IO.popen(set_cmd) 19 | 20 | return io.gets 21 | end 22 | 23 | def put_status (arg) 24 | puts "Status: #{arg}" 25 | end 26 | 27 | cmd = ARGV[0] 28 | arg = ARGV.length < 2 ? EMPTY : ARGV[1] 29 | 30 | if cmd == "get" then 31 | put_status(get()) 32 | elsif cmd == "set" then 33 | put_status(set(arg)) 34 | elsif ARGV.length <= 0 then 35 | puts " --- hyprshift ---", 36 | "get - Get screen_shader status.", 37 | " hyprshift get", 38 | "set - Set screen_shader status.", 39 | " hyprshift set [path:optional]", 40 | " path: Path to the shader file." 41 | end 42 | -------------------------------------------------------------------------------- /config/nvim/ddt.vim: -------------------------------------------------------------------------------- 1 | command! Ddt call s:create_new_terminal() 2 | 3 | function s:create_new_terminal() 4 | " ターミナルのバッファを連番で管理する 5 | let g:ddt_terminal_id = get(g:, 'ddt_terminal_id', 0) + 1 6 | 7 | call ddt#start(#{ 8 | \ name: t:->get('ddt_ui_terminal_last_name', 9 | \ 'terminal-' .. g:ddt_terminal_id), 10 | \ ui: 'terminal', 11 | \ }) 12 | endfunction 13 | 14 | " nnoremap sD call ddt#ui#terminal#kill_editor() 15 | 16 | " nnoremap Ddu -name=ddt -sync 17 | " \ -ui-param-ff-split=`has('nvim') ? 'floating' : 'horizontal'` 18 | " \ -ui-param-ff-winRow=1 19 | " \ -ui-param-ff-autoResize 20 | " \ -ui-param-ff-cursorPos=`tabpagenr()` 21 | " \ ddt_tab 22 | " " }}} 23 | 24 | 25 | call ddt#custom#patch_global(#{ 26 | \ uiParams: #{ 27 | \ terminal: #{ 28 | \ nvimServer: '~/.cache/nvim/server.pipe', 29 | \ command: ['fish'], 30 | \ promptPattern: has('win32') ? '\f\+>' : '\w*% \?', 31 | \ }, 32 | \ }, 33 | \ }) 34 | -------------------------------------------------------------------------------- /bin/scripts/zlib/zlib.rb: -------------------------------------------------------------------------------- 1 | now = Time.now 2 | year = now.strftime("%Y") 3 | 4 | mit = <<~EOS 5 | Copyright (c) #{year} Comamoca 6 | 7 | This software is provided 'as-is', without any express or implied warranty. 8 | In no event will the authors be held liable for any damages arising from the use of this software. 9 | 10 | Permission is granted to anyone to use this software for any purpose, 11 | including commercial applications, and to alter it and redistribute it 12 | freely, subject to the following restrictions: 13 | 14 | 1. The origin of this software must not be misrepresented; you must not 15 | claim that you wrote the original software. If you use this software 16 | in a product, an acknowledgment in the product documentation would be 17 | appreciated but is not required. 18 | 19 | 2. Altered source versions must be plainly marked as such, and must not be 20 | misrepresented as being the original software. 21 | 22 | 3. This notice may not be removed or altered from any source distribution. 23 | EOS 24 | 25 | puts Dir.pwd 26 | 27 | file = File.open "LICENSE.md", "w" 28 | file.puts(mit) 29 | file.close 30 | -------------------------------------------------------------------------------- /config/waybar/mocha.css: -------------------------------------------------------------------------------- 1 | /* 2 | name: Catppuccin Kitty Mocha 3 | author: Catppuccin Org 4 | license: MIT 5 | upstream: https://github.com/catppuccin/waybar/blob/main/themes/mocha.css 6 | blurb: Soothing pastel theme for the high-spirited! 7 | */ 8 | 9 | @define-color rosewater #f5e0dc; 10 | @define-color flamingo #f2cdcd; 11 | @define-color pink #f5c2e7; 12 | @define-color mauve #cba6f7; 13 | @define-color red #f38ba8; 14 | @define-color maroon #eba0ac; 15 | @define-color peach #fab387; 16 | @define-color yellow #f9e2af; 17 | @define-color green #a6e3a1; 18 | @define-color teal #94e2d5; 19 | @define-color sky #89dceb; 20 | @define-color sapphire #74c7ec; 21 | @define-color blue #89b4fa; 22 | @define-color lavender #b4befe; 23 | @define-color text #cdd6f4; 24 | @define-color subtext1 #bac2de; 25 | @define-color subtext0 #a6adc8; 26 | @define-color overlay2 #9399b2; 27 | @define-color overlay1 #7f849c; 28 | @define-color overlay0 #6c7086; 29 | @define-color surface2 #585b70; 30 | @define-color surface1 #45475a; 31 | @define-color surface0 #313244; 32 | @define-color base #1e1e2e; 33 | @define-color mantle #181825; 34 | @define-color crust #11111b; 35 | -------------------------------------------------------------------------------- /config/cava/shaders/northern_lights.frag: -------------------------------------------------------------------------------- 1 | #version 330 2 | 3 | in vec2 fragCoord; 4 | out vec4 fragColor; 5 | 6 | // bar values. defaults to left channels first (low to high), then right (high to low). 7 | uniform float bars[512]; 8 | 9 | uniform int bars_count; // number of bars (left + right) (configurable) 10 | 11 | uniform vec3 u_resolution; // window resolution, not used here 12 | 13 | //colors, configurable in cava config file 14 | uniform vec3 bg_color; // background color(r,g,b) (0.0 - 1.0), not used here 15 | uniform vec3 fg_color; // foreground color, not used here 16 | 17 | void main() 18 | { 19 | // find which bar to use based on where we are on the x axis 20 | int bar = int(bars_count * fragCoord.x); 21 | 22 | float bar_y = 1.0 - abs((fragCoord.y - 0.5)) * 2.0; 23 | float y = (bars[bar]) * bar_y; 24 | 25 | float bar_x = (fragCoord.x - float(bar) / float(bars_count)) * bars_count; 26 | float bar_r = 1.0 - abs((bar_x - 0.5)) * 2; 27 | 28 | bar_r = bar_r * bar_r * 2; 29 | 30 | // set color 31 | fragColor.r = fg_color.x * y * bar_r; 32 | fragColor.g = fg_color.y * y * bar_r; 33 | fragColor.b = fg_color.z * y * bar_r; 34 | } 35 | -------------------------------------------------------------------------------- /vim/ft.toml: -------------------------------------------------------------------------------- 1 | [[plugins]] 2 | repo = 'liquidz/dps-parinfer' 3 | on_ft = ['clojure', 'lisp', 'fennel', 'janet', 'hy'] 4 | 5 | [[plugins]] 6 | repo = 'zah/nim.vim' 7 | on_ft = 'nim' 8 | 9 | [[plugins]] 10 | repo = 'janet-lang/janet.vim' 11 | on_ft = 'janet' 12 | hook_source = ''' 13 | autocmd FileType janet setlocal sw=2 sts=2 ts=2 et 14 | ''' 15 | 16 | [[plugins]] 17 | repo = 'lark-parser/vim-lark-syntax' 18 | on_ft = 'lark' 19 | 20 | [[plugins]] 21 | repo = 'gleam-lang/gleam.vim' 22 | on_ft = 'gleam' 23 | 24 | [[plugins]] 25 | repo = 'vmchale/dhall-vim' 26 | on_ft = 'dhall' 27 | 28 | [[plugins]] 29 | repo = 'elixir-editors/vim-elixir' 30 | on_ft = ['elixir', 'heex'] 31 | 32 | [[plugins]] 33 | repo = 'mattn/vim-maketable' 34 | on_ft = 'markdown' 35 | 36 | [[plugins]] 37 | repo = 'dhruvasagar/vim-table-mode' 38 | on_ft = 'markdown' 39 | 40 | [[plugins]] 41 | repo = 'DrTom/fsharp-vim' 42 | on_ft = 'fsharp' 43 | 44 | [[plugins]] 45 | repo = 'mxw/vim-jsx' 46 | on_ft = ['jsx'] 47 | 48 | [[plugins]] 49 | repo = 'mattn/emmet-vim' 50 | on_ft = ['html'] 51 | 52 | [[plugins]] 53 | repo = 'rescript-lang/vim-rescript' 54 | on_ft = ['rescript'] 55 | 56 | [[plugins]] 57 | repo = 'jdonaldson/vaxe' 58 | on_ft = ['haxe'] 59 | -------------------------------------------------------------------------------- /config/vim/ft.toml: -------------------------------------------------------------------------------- 1 | [[plugins]] 2 | repo = 'liquidz/dps-parinfer' 3 | on_ft = ['clojure', 'lisp', 'fennel', 'janet', 'hy'] 4 | 5 | [[plugins]] 6 | repo = 'zah/nim.vim' 7 | on_ft = 'nim' 8 | 9 | [[plugins]] 10 | repo = 'janet-lang/janet.vim' 11 | on_ft = 'janet' 12 | hook_source = ''' 13 | autocmd FileType janet setlocal sw=2 sts=2 ts=2 et 14 | ''' 15 | 16 | [[plugins]] 17 | repo = 'lark-parser/vim-lark-syntax' 18 | on_ft = 'lark' 19 | 20 | [[plugins]] 21 | repo = 'gleam-lang/gleam.vim' 22 | on_ft = 'gleam' 23 | 24 | [[plugins]] 25 | repo = 'vmchale/dhall-vim' 26 | on_ft = 'dhall' 27 | 28 | [[plugins]] 29 | repo = 'elixir-editors/vim-elixir' 30 | on_ft = ['elixir', 'heex'] 31 | 32 | [[plugins]] 33 | repo = 'mattn/vim-maketable' 34 | on_ft = 'markdown' 35 | 36 | [[plugins]] 37 | repo = 'dhruvasagar/vim-table-mode' 38 | on_ft = 'markdown' 39 | 40 | [[plugins]] 41 | repo = 'DrTom/fsharp-vim' 42 | on_ft = 'fsharp' 43 | 44 | [[plugins]] 45 | repo = 'mxw/vim-jsx' 46 | on_ft = ['jsx'] 47 | 48 | [[plugins]] 49 | repo = 'mattn/emmet-vim' 50 | on_ft = ['html'] 51 | 52 | [[plugins]] 53 | repo = 'rescript-lang/vim-rescript' 54 | on_ft = ['rescript'] 55 | 56 | [[plugins]] 57 | repo = 'jdonaldson/vaxe' 58 | on_ft = ['haxe'] 59 | -------------------------------------------------------------------------------- /config/nvim/lua/configs/kastel.lua: -------------------------------------------------------------------------------- 1 | vim.api.nvim_create_autocmd("FileType", { 2 | pattern = "gleam", 3 | callback = function() 4 | vim.b.symbol_list = { "->", "|>", "<>", "<-", "_ ->" } 5 | end, 6 | }) 7 | 8 | function _G.symbol_cmp() 9 | local triggers = vim.fn.split("hjklnmfdsavcuiorew", [[\zs]]) 10 | 11 | local comp_list = vim.fn.map(vim.fn.copy(vim.b.symbol_list), function(i, v) 12 | return { word = v, menu = vim.fn.get(triggers, i, "") } 13 | end) 14 | 15 | -- vim.on_key(symbol_select) 16 | 17 | vim.fn.complete(vim.fn.col(".") - 1, comp_list) 18 | end 19 | 20 | function _G.symbol_select(key, typed) 21 | local items = vim.fn.complete_info({ "items" }).items 22 | local idx = vim.fn.indexof(items, function(_, v) 23 | return vim.fn.get(v, "menu", "") == key 24 | end) 25 | 26 | if idx >= 0 then 27 | vim.print(idx) 28 | -- vim.fn.feedkeys("i" .. items[idx].word,"i") 29 | 30 | vim.cmd([[call feedkeys("i\" .. a:items[idx].word, "ni")]]) 31 | 32 | -- vim.print(items[idx].word) 33 | return "" 34 | end 35 | end 36 | 37 | vim.keymap.set("i", ",", function() 38 | return vim.fn.exists("b:symbol_list") and ",lua symbol_cmp()" or "," 39 | end, { expr = true, noremap = true }) 40 | -------------------------------------------------------------------------------- /bin/scripts/mit/mit.rb: -------------------------------------------------------------------------------- 1 | now = Time.now 2 | year = now.strftime("%Y") 3 | 4 | mit = <<~EOS 5 | Copyright #{year} Comamoca 6 | 7 | Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the “Software”), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: 8 | 9 | The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. 10 | 11 | THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 12 | EOS 13 | 14 | puts Dir.pwd 15 | 16 | file = File.open "LICENSE.md", "w" 17 | file.puts(mit) 18 | file.close 19 | -------------------------------------------------------------------------------- /ddskk-config.el: -------------------------------------------------------------------------------- 1 | (setq skk-use-azik t) 2 | (setq skk-sticky-key ";") 3 | 4 | (setq skk-comp-mode t) 5 | (setq skk-dcomp-activate t) 6 | (setq skk-dcomp-multiple-activate t) 7 | 8 | (setq skk-jisyo (cons "~/.skk-jisyo" 'utf-8)) 9 | (setq skk-set-henkan-point-key 10 | (append '(?L) skk-set-henkan-point-key)) 11 | 12 | (setq skk-large-jisyo "~/.skk-dict/SKK-JISYO.L") 13 | (setq skk-extra-jisyo-file-list 14 | (list '("~/.skk-dict/SKK-JISYO.im@sparql.all.utf8" . "utf-8"))) 15 | 16 | (add-hook 'skk-azik-load-hook 17 | (lambda () 18 | (setq skk-rom-kana-rule-list 19 | (skk-del-alist ";" skk-rom-kana-rule-list)) 20 | 21 | (setq skk-rom-kana-rule-list 22 | (skk-del-alist "l" skk-rom-kana-rule-list)) 23 | 24 | (setq skk-rom-kana-rule-list 25 | (skk-del-alist "-" skk-rom-kana-rule-list)) 26 | 27 | (setq skk-rom-kana-rule-list 28 | (skk-del-alist ":" skk-rom-kana-rule-list)) 29 | 30 | (setq skk-rom-kana-rule-list 31 | (skk-del-alist "z-" skk-rom-kana-rule-list)) 32 | 33 | (setq skk-rom-kana-rule-list 34 | (append skk-rom-kana-rule-list 35 | '((";" nil skk-sticky-set-henkan-point) 36 | ("l" nil "っ") 37 | ("z:" nil ":") 38 | ("z-" nil "ー") 39 | ("z " nil " ") 40 | ("z~" nil "〜")))) 41 | )) 42 | -------------------------------------------------------------------------------- /LICENSE.md: -------------------------------------------------------------------------------- 1 | Unlicense (Public Domain) 2 | ============================ 3 | 4 | This is free and unencumbered software released into the public domain. 5 | 6 | Anyone is free to copy, modify, publish, use, compile, sell, or 7 | distribute this software, either in source code form or as a compiled 8 | binary, for any purpose, commercial or non-commercial, and by any 9 | means. 10 | 11 | In jurisdictions that recognize copyright laws, the author or authors 12 | of this software dedicate any and all copyright interest in the 13 | software to the public domain. We make this dedication for the benefit 14 | of the public at large and to the detriment of our heirs and 15 | successors. We intend this dedication to be an overt act of 16 | relinquishment in perpetuity of all present and future rights to this 17 | software under copyright law. 18 | 19 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 20 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 21 | MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. 22 | IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR 23 | OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, 24 | ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR 25 | OTHER DEALINGS IN THE SOFTWARE. 26 | 27 | For more information, please refer to <> 28 | -------------------------------------------------------------------------------- /secrets/secrets.yaml: -------------------------------------------------------------------------------- 1 | spotify-password: ENC[AES256_GCM,data:mNsMxnWTUDfnQlEPJxIgRKXgkJA=,iv:i8rbMcPuU0XRbfX+bMd6OyQwUi5gcpYn4H53GyX5UVo=,tag:hGp22I1DvOEuzZeFyf4OAQ==,type:str] 2 | openrouter: ENC[AES256_GCM,data:Kb4L3/6WbUCRFC/STg0pcw6AIPa7vaVLhjvBGc02O6H/Nk2MNXde3l8LdIzJnpbt2LF0gvIzrsNXpug3K2344/ahYIvMTVfbtg==,iv:isB8ZuutGK1ASCm4M6TffAjDiXDk8ZHcdlE61yRni5k=,tag:Idnu9NWgZitk3p4hP4mjUw==,type:str] 3 | sops: 4 | age: 5 | - recipient: age1y8xtzklz23f95443fmecpxdyc2rkzvdlem6thq654yf2fjj4ncxqnv620k 6 | enc: | 7 | -----BEGIN AGE ENCRYPTED FILE----- 8 | YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBrMStGem90NEZMUTczT1hR 9 | MmxoOWRabkNIRGtQSEwyNkpOY3YzclJOUG5VCk05OGIzTVVESHhaQTdwaFZnQ0VL 10 | NnBhbGxzaVNiZTVCN0tLK2dPeWVhVU0KLS0tIFlZZStINGhoTDczMU84dk03bVBw 11 | KzFMUGRjeVhNZzBiOVJkQ2huSXp1RlkKkoCQl1EpLrDzE9L1q7tgbBOY44jZHqLh 12 | oh8fsR88pJ5iSN5LeMvDU4o33MHdOHNv8aSkC7pqjE8sgXakdDyFCg== 13 | -----END AGE ENCRYPTED FILE----- 14 | lastmodified: "2025-05-31T13:53:40Z" 15 | mac: ENC[AES256_GCM,data:eNAB9N6ClGPou3mV3EFfpB4RPNoPwo5VmOoEslPZmVgzr/KZMojN09ianKIdmjZE8ProkYK8WiucOVJ1sbUtiWrQWUMNx7KN7xw5NLKwtkG/RQBWuCqY5J2CMdIEYXy3/+6mKNVvOOd+cHeOMtcxLB0OLWXMONaeZK/VP4VoCd0=,iv:+2CepD9ddMRFKrOkNI8wr8vdoLmuishOlWEqTsVImuM=,tag:wQJexy2S0IUidemauw2EoA==,type:str] 16 | unencrypted_suffix: _unencrypted 17 | version: 3.10.2 18 | -------------------------------------------------------------------------------- /packages/system.nix: -------------------------------------------------------------------------------- 1 | { pkgs }: 2 | with pkgs; [ 3 | # System packages 4 | acpi 5 | acpid 6 | libapparmor 7 | at 8 | autoconf-archive 9 | autotiling 10 | avahi 11 | b43FirmwareCutter 12 | bison 13 | bluez 14 | bluez-tools 15 | btrfs-progs 16 | bzip2 17 | ccache 18 | cliphist 19 | cloc 20 | conky 21 | coreutils 22 | cpio 23 | linuxKernel.packages.linux_zen.cpupower 24 | cryptsetup 25 | dmraid 26 | dnsmasq 27 | dosfstools 28 | doxygen 29 | e2fsprogs 30 | efibootmgr 31 | exfatprogs 32 | f2fs-tools 33 | ffmpeg 34 | ffmpegthumbnailer 35 | file-roller 36 | flashfocus 37 | font-manager 38 | gd 39 | glava 40 | glow 41 | gnome-epub-thumbnailer 42 | gnome-keyring 43 | gomi 44 | greetd 45 | tuigreet 46 | grim 47 | gvfs 48 | helix 49 | himalaya 50 | inetutils 51 | jfsutils 52 | less 53 | lvm2 54 | man-db 55 | man-pages 56 | mediainfo 57 | p7zip 58 | pass 59 | patch 60 | polkit_gnome 61 | poweralertd 62 | re2c 63 | reiserfsprogs 64 | rlwrap 65 | rofi-power-menu 66 | rsync 67 | siege 68 | slurp 69 | swaybg 70 | swaynotificationcenter 71 | swaylock 72 | squashfsTools 73 | texinfo 74 | usbutils 75 | vhs 76 | wev 77 | wf-recorder 78 | which 79 | wireless-regdb 80 | wl-clipboard 81 | wlay 82 | wlsunset 83 | wofi 84 | fuzzel 85 | wpa_supplicant 86 | xdg-user-dirs 87 | xremap 88 | yq 89 | ] 90 | -------------------------------------------------------------------------------- /config/ime/init.lua: -------------------------------------------------------------------------------- 1 | local jetpack_begin = vim.fn["jetpack#begin"] 2 | local jetpack_end = vim.fn["jetpack#end"] 3 | 4 | local add = vim.fn["jetpack#add"] 5 | 6 | vim.cmd("packadd vim-jetpack") 7 | 8 | jetpack_begin() 9 | add("tani/vim-jetpack", { opt = 1 }) --bootstrap 10 | 11 | -- denops.vim 12 | add("vim-denops/denops.vim") 13 | 14 | -- ddc.vim 15 | add("Shougo/ddc.vim") 16 | add("tani/ddc-fuzzy") 17 | add("Shougo/ddc-ui-native") 18 | add("gamoutatsumi/ddc-emoji") 19 | add("m4xshen/autoclose.nvim") 20 | 21 | -- skkeleton 22 | add("vim-skk/skkeleton") 23 | add("NI57721/skkeleton-azik-kanatable") 24 | 25 | -- colorscheme 26 | add("rebelot/kanagawa.nvim") 27 | 28 | jetpack_end() 29 | 30 | vim.keymap.set("i", "jj", "") 31 | 32 | -- kanagawa.nvim 33 | require("kanagawa").setup({ 34 | compile = true, 35 | undercurl = true, 36 | commentStyle = { italic = true }, 37 | keywordStyle = { italic = true }, 38 | statementStyle = { bold = true }, 39 | transparent = true, 40 | }) 41 | 42 | vim.cmd("colorscheme kanagawa-dragon") 43 | vim.cmd("nnoremap noh") 44 | vim.cmd("nnoremap sv vs") 45 | vim.cmd("nnoremap s ") 46 | vim.cmd("set ignorecase") 47 | vim.cmd("set termguicolors") 48 | vim.keymap.set("n", "", "close", opts) 49 | 50 | -- ddc.vim 51 | require("ddc") 52 | 53 | -- skkeleton 54 | -- require("skkeleton") 55 | vim.cmd("source ~/.config/ime/skkeleton.vim") 56 | vim.opt.clipboard = "unnamedplus" 57 | 58 | -- enable autoclose 59 | require("autoclose").setup() 60 | -------------------------------------------------------------------------------- /config/nvim/autoload/kastel.vim: -------------------------------------------------------------------------------- 1 | " ファイルタイプごとの補完候補の定義自体は変更なし 2 | autocmd Filetype vim let b:symbol_list = ['..=', '=>', '=~#', '!=?'] 3 | autocmd Filetype gleam let b:symbol_list = ['->', '|>', '<>', '<-', '_ ->'] 4 | 5 | " 補完候補を表示する関数 6 | function! s:symbol_cmp() abort 7 | " 補完指定用のキー 順番は要検討 8 | let triggers = 'hjklnmfdsavcuiorew'->split('\zs') 9 | 10 | " b:symbol_listとtriggersを組み合わせて補完リストを構築 11 | " (都度mapするのは効率が悪いかも?) 12 | " :help complete-items も参照 13 | let comp_list = b:symbol_list->copy() 14 | \ ->map({i, v -> {'word': v, 'menu': get(triggers, i, '')}}) 15 | 16 | " ↑ を使って補完発動 17 | call complete(col('.')-1, comp_list) 18 | 19 | " ここからautocmd追加 20 | augroup symbolselect 21 | autocmd! 22 | " 候補展開中にキーが押されたときにs:symbol_select()を実行 23 | autocmd KeyInputPre * call s:symbol_select() 24 | " ↑が永続しないようモード変更時にautocmdを削除 25 | autocmd ModeChanged * autocmd! symbolselect 26 | augroup END 27 | endfunction 28 | 29 | function! s:symbol_select() abort 30 | " 現在の補完のリストは以下の式で取得できる 31 | let items = complete_info(['items']).items 32 | 33 | " 候補リストのmenuと入力されたキー(v:char)を照合 34 | let idx = indexof(items, {_,v -> get(v, 'menu', '') ==# v:char}) 35 | 36 | " menuと対応するキーが押されていたら… 37 | if idx >= 0 38 | " カーソル直前の`,`を削除 39 | let v:char = "\" 40 | " v:charには1文字しか入れられないのでwordの入力にはfeedkeysを使う 41 | call feedkeys(items[idx].word, 'ni') 42 | endif 43 | endfunction 44 | 45 | " 起動用のキーマップは変更なし 46 | inoremap , exists('b:symbol_list') 47 | \ ? ',call symbol_cmp()' 48 | \ : ',' 49 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 |
2 | 3 | ![Repository Stars](https://img.shields.io/github/stars/Comamoca/dotfiles?style=flat-square) 4 | ![Last commit](https://img.shields.io/github/last-commit/Comamoca/dotfiles?style=flat-square) 5 | ![Issues](https://img.shields.io/github/issues/Comamoca/dotfiles?style=flat-square) 6 | ![Open Issues](https://img.shields.io/github/issues-raw/Comamoca/dotfiles?style=flat-square) 7 | ![Bug Issues](https://img.shields.io/github/issues/Comamoca/dotfiles/bug?style=flat-square) 8 | 9 | eyecatch 10 | 11 | # Dotfiles 12 | 13 | This is Comamoca's dotfiles repository. 14 | 15 | Desktop Image 16 | 17 |
18 |
19 | 20 |
21 | 22 |
23 | 24 |
25 | 26 | ## 🔧 Stack 27 | 28 | - NixOS 29 | - fish 30 | - Neovim 31 | - and more... 32 | 33 | ## ⬆️ How to update 34 | 35 | ### ❄ Flake 36 | 37 | ```sh 38 | nix flake update 39 | ``` 40 | 41 | ## ✨ Apply changes 42 | 43 | ### ❄ NixOS 44 | 45 | ```sh 46 | sudo nixos-rebuild switch --flake .#Home 47 | ``` 48 | 49 | ### 🏠 Home manager 50 | 51 | ```sh 52 | home-manager switch --flake .#Home 53 | ``` 54 | 55 | ## 📖 License 56 | 57 | Unlicense 58 | 59 | ### catppuccin 60 | 61 | - [nix](https://github.com/catppuccin/nix) 62 | - [fish](https://github.com/catppuccin/fish) 63 | - [swaync](https://github.com/catppuccin/swaync) 64 | - [bat](https://github.com/catppuccin/bat) 65 | - [kitty](https://github.com/catppuccin/kitty) 66 | - [rofi](https://github.com/catppuccin/rofi) 67 | -------------------------------------------------------------------------------- /disko.nix: -------------------------------------------------------------------------------- 1 | # sudo nix --experimental-features "nix-command flakes" run github:nix-community/disko/latest -- --mode destroy,format,mount disko.nix 2 | { 3 | disko.devices = { 4 | disk = { 5 | main = { 6 | type = "disk"; 7 | content = { 8 | type = "gpt"; 9 | # device = "/dev/disk/by-uuid/c6bcd4ba-1fa7-4d52-aa51-c692063690d7"; 10 | device = "/dev/disk/by-id/root"; 11 | partitions = { 12 | root = { 13 | size = "100%"; 14 | content = { 15 | type = "filesystem"; 16 | format = "ext4"; 17 | mountpoint = "/"; 18 | }; 19 | }; 20 | boot = { 21 | size = "1M"; 22 | type = "EF02"; 23 | }; 24 | ESP = { 25 | size = "1G"; 26 | type = "EF00"; 27 | # device = "/dev/disk/by-uuid/4FA8-76B6"; 28 | device = "/dev/disk/by-id/boot"; 29 | content = { 30 | type = "filesystem"; 31 | format = "vfat"; 32 | mountpoint = "/boot"; 33 | mountOptions = [ 34 | "fmask=0077" 35 | "dmask=0077" 36 | ]; 37 | }; 38 | }; 39 | plainSwap = { 40 | size = "4G"; 41 | content = { 42 | type = "swap"; 43 | discardPolicy = "both"; 44 | resumeDevice = true; 45 | }; 46 | }; 47 | }; 48 | }; 49 | }; 50 | }; 51 | }; 52 | } 53 | -------------------------------------------------------------------------------- /config/ime/skkeleton.vim: -------------------------------------------------------------------------------- 1 | call skkeleton#azik#add_table("jis") 2 | 3 | call skkeleton#config(#{ 4 | \ globalDictionaries: [ "~/.skk-dict/SKK-JISYO.L", 5 | \ "~/.skk-dict/SKK-JISYO.im@sparql.all.utf8" ], 6 | \ databasePath: "~/.vim/skk/database", 7 | \ kanaTable: "azik" 8 | \ }) 9 | 10 | 11 | call skkeleton#register_keymap('henkan', "<", 'purgeCandidate') 12 | call skkeleton#register_keymap('henkan', "X", '') 13 | 14 | call skkeleton#register_keymap('henkan', "", 'purgeCandidate') 15 | call skkeleton#register_keymap('henkan', "X", '') 16 | 17 | call skkeleton#register_keymap('input', ';', 'henkanPoint') 18 | 19 | 20 | autocmd InsertEnter * ++once call skkeleton#register_kanatable('azik', { 21 | \ 'jj': 'escape', 22 | \ '@': 'katakana', 23 | \ "'": 'hankatakana', 24 | \ '': ['じゅん', ''], 25 | \ 'i': ['じ', ''], 26 | \ 'p': ['じょう', ''], 27 | \ 'o': ['じょ', ''], 28 | \ 'k': ['じん', ''], 29 | \ 'u': ['じゅ', ''], 30 | \ 'l': ['っ', ''], 31 | \ 'la': ['', ''], 32 | \ 'li': ['', ''], 33 | \ 'lu': ['', ''], 34 | \ 'le': ['', ''], 35 | \ 'lo': ['', ''], 36 | \ 'xxa': ['ぁ', ''], 37 | \ 'xxi': ['ぃ', ''], 38 | \ 'xxu': ['ぅ', ''], 39 | \ 'xxe': ['ぇ', ''], 40 | \ 'xxo': ['ぉ', ''], 41 | \ 'n': ['ん', ''], 42 | \ 'z=': ['=', ''], 43 | \ 'z~': ['~', ''], 44 | \ 'z ': [' ', ''], 45 | \ 'z:': [':', ''], 46 | \ }) 47 | 48 | 49 | imap (skkeleton-enable) 50 | imap (skkeleton-disable) 51 | -------------------------------------------------------------------------------- /pkgs/lspx/default.nix: -------------------------------------------------------------------------------- 1 | # This package help by @kuuote. Thank you! 2 | { pkgs }: 3 | let 4 | generated = import ../../_sources/generated.nix; 5 | sources = generated { 6 | inherit (pkgs) 7 | fetchurl 8 | fetchgit 9 | fetchFromGitHub 10 | dockerTools 11 | ; 12 | }; 13 | 14 | src = sources.lspx.src; 15 | 16 | deps = 17 | pkgs.runCommand "lspx-deps" 18 | { 19 | inherit src; 20 | nativeBuildInputs = [ 21 | pkgs.deno 22 | ]; 23 | 24 | outputHash = "sha256-cUhCMm0563JNaDQM8NZ1W4oDCy3UjzMp6hP2C0CYncs="; 25 | outputHashAlgo = "sha256"; 26 | outputHashMode = "recursive"; 27 | } 28 | 29 | '' 30 | unpackPhase 31 | cd source 32 | HOME="$(mktemp -d)" 33 | 34 | # deno cache --frozen=true --vendor=true main.ts 35 | deno cache --vendor=true main.ts 36 | 37 | # 一意じゃないと思われるデータの削除 38 | for path in vendor/jsr.io/*/*/meta.json; do 39 | echo '{"versions":{}}' > $path 40 | done 41 | 42 | rm -f node_modules/.deno/.deno.lock.poll 43 | mkdir -p $out 44 | cp -a node_modules $out/ 45 | cp -a vendor $out/ 46 | ''; 47 | 48 | vendored = pkgs.symlinkJoin { 49 | name = "lspx-vendored"; 50 | paths = [ 51 | src 52 | deps 53 | ]; 54 | }; 55 | 56 | rawScript = pkgs.writeShellScriptBin "lspx" '' 57 | deno run --frozen=true --allow-env --allow-run --vendor=true --cached-only --node-modules-dir=manual "${vendored}/main.ts" "$@" 58 | ''; 59 | 60 | in 61 | pkgs.runCommand "lspx" 62 | { 63 | buildInputs = [ pkgs.makeWrapper ]; 64 | } 65 | '' 66 | mkdir -p $out/bin 67 | makeWrapper ${rawScript}/bin/lspx "$out/bin/lspx" 68 | '' 69 | -------------------------------------------------------------------------------- /config/hypr/hyprlock.conf: -------------------------------------------------------------------------------- 1 | $accent = $mauve 2 | $accentAlpha = $mauveAlpha 3 | $font = JetBrainsMono Nerd Font 4 | 5 | # GENERAL 6 | general { 7 | disable_loading_bar = true 8 | hide_cursor = true 9 | } 10 | 11 | # BACKGROUND 12 | background { 13 | monitor = 14 | path = ~/Pictures/wallpaper/wallpaper.jpg 15 | blur_passes = 0 16 | color = $base 17 | } 18 | 19 | # LAYOUT 20 | label { 21 | monitor = 22 | text = Layout: $LAYOUT 23 | color = $text 24 | font_size = 25 25 | font_family = $font 26 | position = 30, -30 27 | halign = left 28 | valign = top 29 | } 30 | 31 | # TIME 32 | label { 33 | monitor = 34 | text = $TIME 35 | color = $text 36 | font_size = 90 37 | font_family = $font 38 | position = -30, 0 39 | halign = right 40 | valign = top 41 | } 42 | 43 | # DATE 44 | label { 45 | monitor = 46 | text = cmd[update:43200000] date +"%A, %d %B %Y" 47 | color = $text 48 | font_size = 25 49 | font_family = $font 50 | position = -30, -150 51 | halign = right 52 | valign = top 53 | } 54 | 55 | # USER AVATAR 56 | image { 57 | monitor = 58 | path = $HOME/.face 59 | size = 100 60 | border_color = $accent 61 | position = 0, 75 62 | halign = center 63 | valign = center 64 | } 65 | 66 | # INPUT FIELD 67 | input-field { 68 | monitor = 69 | size = 300, 60 70 | outline_thickness = 4 71 | dots_size = 0.2 72 | dots_spacing = 0.2 73 | dots_center = true 74 | outer_color = $accent 75 | inner_color = $surface0 76 | font_color = $text 77 | fade_on_empty = false 78 | placeholder_text = 79 | hide_input = false 80 | check_color = $accent 81 | fail_color = $red 82 | fail_text = $FAIL ($ATTEMPTS) 83 | capslock_color = $yellow 84 | position = 0, -47 85 | halign = center 86 | valign = center 87 | } 88 | -------------------------------------------------------------------------------- /zshrc: -------------------------------------------------------------------------------- 1 | # Lines configured by zsh-newuser-install 2 | HISTFILE=~/.histfile 3 | HISTSIZE=1000 4 | SAVEHIST=1000 5 | bindkey -e 6 | # End of lines configured by zsh-newuser-install 7 | # The following lines were added by compinstall 8 | zstyle :compinstall filename '/home/coma/.zshrc' 9 | 10 | autoload -Uz compinit 11 | compinit 12 | # End of lines added by compinstall 13 | 14 | export PATH=$PATH:~/.bin/ 15 | export PATH=$PATH:~/.deno/bin/ 16 | 17 | export GTK_IM_MODULE=fcitx 18 | export QT_IM_MODULE=fcitx 19 | export XMODIFIERS=@im=fcitx 20 | 21 | if [ -z "${WAYLAND_DISPLAY}" ] && [ "${XDG_VTNR}" -eq 1 ]; then 22 | exec sway 23 | fi 24 | 25 | #THIS MUST BE AT THE END OF THE FILE FOR SDKMAN TO WORK!!! 26 | export SDKMAN_DIR="$HOME/.sdkman" 27 | [[ -s "$HOME/.sdkman/bin/sdkman-init.sh" ]] && source "$HOME/.sdkman/bin/sdkman-init.sh" 28 | 29 | # Wasmer 30 | export WASMER_DIR="/home/coma/.wasmer" 31 | [ -s "$WASMER_DIR/wasmer.sh" ] && source "$WASMER_DIR/wasmer.sh" 32 | source "$HOME/.rye/env" 33 | 34 | [ -f "/home/coma/.ghcup/env" ] && source "/home/coma/.ghcup/env" # ghcup-env 35 | # bun completions 36 | [ -s "/home/coma/.bun/_bun" ] && source "/home/coma/.bun/_bun" 37 | 38 | export NVM_DIR="$HOME/.nvm" 39 | [ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm 40 | [ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion" # This loads nvm bash_completion 41 | 42 | # Generated for envman. Do not edit. 43 | [ -s "$HOME/.config/envman/load.sh" ] && source "$HOME/.config/envman/load.sh" 44 | 45 | [ -f ~/.fzf.zsh ] && source ~/.fzf.zsh 46 | 47 | ## [Completion] 48 | ## Completion scripts setup. Remove the following line to uninstall 49 | [[ -f /home/coma/.dart-cli-completion/zsh-config.zsh ]] && . /home/coma/.dart-cli-completion/zsh-config.zsh || true 50 | ## [/Completion] 51 | 52 | -------------------------------------------------------------------------------- /vim/ddc.vim: -------------------------------------------------------------------------------- 1 | call ddc#custom#patch_global('ui', 'pum') 2 | 3 | call ddc#custom#patch_global('sources', [ 4 | \ 'vim-lsp', 5 | \ 'around', 6 | \ 'vsnip', 7 | \ 'file', 8 | \]) 9 | 10 | call ddc#custom#patch_global('sourceOptions', #{ 11 | \ vim-lsp: #{ 12 | \ matchers: ['matcher_head'], 13 | \ mark: 'lsp', 14 | \ }, 15 | \ }) 16 | 17 | call ddc#custom#patch_global('sourceOptions', { 18 | \ '_': { 19 | \ 'matchers': [ 'matcher_fuzzy' ], 20 | \ 'sorters': [ 'sorter_fuzzy' ], 21 | \ 'converters': [ 'converter_fuzzy' ], 22 | \ }, 23 | \ 'around': { 'mark': 'around' }, 24 | \ 'path': { 'mark': 'P' }, 25 | \ 'file': { 26 | \ 'mark': 'F', 27 | \ 'isVolatile': v:true, 28 | \ 'forceCompletionPattern': '\S/\S*', 29 | \ }, 30 | \ 'vsnip': { 'mark': 'vsnip' }, 31 | \}) 32 | 33 | call ddc#custom#patch_filetype([ 'ps1', 'dosbatch', 'autohotkey', 'registry' ], { 34 | \ 'sourceOptions': { 35 | \ 'file': { 36 | \ 'forceCompletionPattern': '\S\\\S*', 37 | \ }, 38 | \ }, 39 | \ 'sourceParams': { 40 | \ 'file': { 41 | \ 'mode': 'win32', 42 | \ }, 43 | \ }, 44 | \ }) 45 | 46 | 47 | call ddc#custom#patch_global('sourceParams', { 48 | \ 'path': { 49 | \ 'cmd': [ 'fd', '--max-depth', '5' ], 50 | \ }, 51 | \ }) 52 | 53 | call ddc#enable() 54 | 55 | " inoremap call pum#map#insert_relative(-1) 56 | inoremap call pum#map#select_relative(+1) 57 | inoremap call pum#map#select_relative(-1) 58 | inoremap call pum#map#confirm() 59 | inoremap call pum#map#cancel() 60 | 61 | " inoremap 62 | " \ pumvisible() ? '' : 63 | " \ (col('.') <= 1 getline('.')[col('.') - 2] =~# '\s') ? 64 | " \ '' : ddc#map#manual_complete() 65 | -------------------------------------------------------------------------------- /config/hypr/shader.frag: -------------------------------------------------------------------------------- 1 | precision mediump float; 2 | varying vec2 v_texcoord; 3 | uniform sampler2D tex; 4 | uniform float temperature; 5 | uniform float temperatureStrength; 6 | 7 | // convert color temperature to RGB 8 | vec3 temperatureToRGB(float temperature) { 9 | temperature /= 100.0; 10 | 11 | float red, green, blue; 12 | 13 | if (temperature <= 66.0) { 14 | red = 255.0; 15 | green = temperature; 16 | green = 99.4708025861 * log(green) - 161.1195681661; 17 | 18 | if (temperature <= 19.0) { 19 | blue = 0.0; 20 | } else { 21 | blue = temperature - 10.0; 22 | blue = 138.5177312231 * log(blue) - 305.0447927307; 23 | } 24 | } else { 25 | red = temperature - 60.0; 26 | red = 329.698727446 * pow(red, -0.1332047592); 27 | green = temperature - 60.0; 28 | green = 288.1221695283 * pow(green, -0.0755148492); 29 | blue = 255.0; 30 | } 31 | 32 | return vec3(clamp(red / 255.0, 0.0, 1.0), clamp(green / 255.0, 0.0, 1.0), clamp(blue / 255.0, 0.0, 1.0)); 33 | } 34 | 35 | void main() { 36 | vec4 pixColor = texture2D(tex, v_texcoord); 37 | 38 | // color temperature 39 | float temperature = 1800.0; 40 | 41 | // Strength of color temperature correction 42 | float temperatureStrength = 0.38; 43 | 44 | // Get RGB correction value corresponding to color temperature 45 | vec3 temperatureRGB = temperatureToRGB(temperature); 46 | 47 | // Interpolate between the original color and color temperature correction value 48 | pixColor.rgb = mix(pixColor.rgb, pixColor.rgb * temperatureRGB, temperatureStrength); 49 | 50 | // Clamp the color (keep it in the range 0.0 - 1.0) 51 | pixColor = clamp(pixColor, 0.0, 1.0); 52 | 53 | gl_FragColor = pixColor; 54 | } 55 | -------------------------------------------------------------------------------- /config/kitty/mocha.conf: -------------------------------------------------------------------------------- 1 | # vim:ft=kitty 2 | 3 | ## name: Catppuccin Kitty Mocha 4 | ## author: Catppuccin Org 5 | ## license: MIT 6 | ## upstream: https://github.com/catppuccin/kitty/blob/main/themes/mocha.conf 7 | ## blurb: Soothing pastel theme for the high-spirited! 8 | 9 | 10 | 11 | # The basic colors 12 | foreground #cdd6f4 13 | background #1e1e2e 14 | selection_foreground #1e1e2e 15 | selection_background #f5e0dc 16 | 17 | # Cursor colors 18 | cursor #f5e0dc 19 | cursor_text_color #1e1e2e 20 | 21 | # URL underline color when hovering with mouse 22 | url_color #f5e0dc 23 | 24 | # Kitty window border colors 25 | active_border_color #b4befe 26 | inactive_border_color #6c7086 27 | bell_border_color #f9e2af 28 | 29 | # OS Window titlebar colors 30 | wayland_titlebar_color system 31 | macos_titlebar_color system 32 | 33 | # Tab bar colors 34 | active_tab_foreground #11111b 35 | active_tab_background #cba6f7 36 | inactive_tab_foreground #cdd6f4 37 | inactive_tab_background #181825 38 | tab_bar_background #11111b 39 | 40 | # Colors for marks (marked text in the terminal) 41 | mark1_foreground #1e1e2e 42 | mark1_background #b4befe 43 | mark2_foreground #1e1e2e 44 | mark2_background #cba6f7 45 | mark3_foreground #1e1e2e 46 | mark3_background #74c7ec 47 | 48 | # The 16 terminal colors 49 | 50 | # black 51 | color0 #45475a 52 | color8 #585b70 53 | 54 | # red 55 | color1 #f38ba8 56 | color9 #f38ba8 57 | 58 | # green 59 | color2 #a6e3a1 60 | color10 #a6e3a1 61 | 62 | # yellow 63 | color3 #f9e2af 64 | color11 #f9e2af 65 | 66 | # blue 67 | color4 #89b4fa 68 | color12 #89b4fa 69 | 70 | # magenta 71 | color5 #f5c2e7 72 | color13 #f5c2e7 73 | 74 | # cyan 75 | color6 #94e2d5 76 | color14 #94e2d5 77 | 78 | # white 79 | color7 #bac2de 80 | color15 #a6adc8 81 | -------------------------------------------------------------------------------- /config/nvim/dpp.toml: -------------------------------------------------------------------------------- 1 | [[plugins]] 2 | repo = 'vim-denops/denops.vim' 3 | hook_source = """ 4 | let g:denops#deno = exepath("deno") 5 | """ 6 | 7 | [[plugins]] 8 | repo = 'stevearc/oil.nvim' 9 | lua_add = ''' 10 | require("oil").setup({ 11 | default_file_explorer = true, 12 | keymaps = { 13 | ["l"] = "actions.select", 14 | [""] = "actions.preview", 15 | ["-"] = "actions.parent", 16 | }, 17 | preview = { 18 | max_width = 0.9, 19 | min_width = { 40, 0.4 }, 20 | width = nil, 21 | max_height = 0.9, 22 | min_height = { 5, 0.1 }, 23 | height = nil, 24 | border = "rounded", 25 | win_options = { 26 | winblend = 0, 27 | }, 28 | update_on_cursor_moved = true, 29 | }, 30 | }) 31 | ''' 32 | 33 | [[plugins]] 34 | repo = "nvim-lua/plenary.nvim" 35 | 36 | # [[plugins]] 37 | # repo = "nordtheme/vim" 38 | 39 | # [[plugins]] 40 | # repo = "rebelot/kanagawa.nvim" 41 | # on_event = ['BufRead', 'CursorHold'] 42 | # lua_add = ''' 43 | # require('kanagawa').setup({ 44 | # compile = true, 45 | # transparent = true 46 | # }) 47 | # ''' 48 | 49 | # [[plugins]] 50 | # repo = 'VDuchauffour/neodark.nvim' 51 | # on_event = ['BufRead', 'CursorHold'] 52 | 53 | # [[plugins]] 54 | # repo = "sainnhe/gruvbox-material" 55 | # on_event = ['BufRead', 'CursorHold'] 56 | 57 | # [[plugins]] 58 | # repo = "dylanaraps/wal.vim" 59 | # on_event = ['BufRead', 'CursorHold'] 60 | 61 | # dpp.vim 62 | [[plugins]] 63 | repo = "Shougo/dpp.vim" 64 | 65 | [[plugins]] 66 | repo = "vim-denops/denops.vim" 67 | 68 | [[plugins]] 69 | repo = "Shougo/dpp-ext-local" 70 | 71 | [[plugins]] 72 | repo = "Shougo/dpp-ext-toml" 73 | 74 | [[plugins]] 75 | repo = "Shougo/dpp-ext-lazy" 76 | 77 | [[plugins]] 78 | repo = "Shougo/dpp-ext-installer" 79 | 80 | [[plugins]] 81 | repo = "Shougo/dpp-protocol-git" 82 | 83 | [[plugins]] 84 | repo = 'folke/lazydev.nvim' 85 | -------------------------------------------------------------------------------- /config/vim/ddc.vim: -------------------------------------------------------------------------------- 1 | call ddc#custom#patch_global('ui', 'pum') 2 | 3 | call ddc#custom#patch_global('sources', [ 4 | \ 'vim-lsp', 5 | \ 'around', 6 | \ 'vsnip', 7 | \ 'file', 8 | \]) 9 | 10 | call ddc#custom#patch_global('sourceOptions', #{ 11 | \ vim-lsp: #{ 12 | \ matchers: ['matcher_head'], 13 | \ mark: 'lsp', 14 | \ }, 15 | \ }) 16 | 17 | call ddc#custom#patch_global('sourceOptions', { 18 | \ '_': { 19 | \ 'matchers': [ 'matcher_fuzzy' ], 20 | \ 'sorters': [ 'sorter_fuzzy' ], 21 | \ 'converters': [ 'converter_fuzzy' ], 22 | \ }, 23 | \ 'around': { 'mark': 'around' }, 24 | \ 'path': { 'mark': 'P' }, 25 | \ 'file': { 26 | \ 'mark': 'F', 27 | \ 'isVolatile': v:true, 28 | \ 'forceCompletionPattern': '\S/\S*', 29 | \ }, 30 | \ 'vsnip': { 'mark': 'vsnip' }, 31 | \}) 32 | 33 | call ddc#custom#patch_filetype([ 'ps1', 'dosbatch', 'autohotkey', 'registry' ], { 34 | \ 'sourceOptions': { 35 | \ 'file': { 36 | \ 'forceCompletionPattern': '\S\\\S*', 37 | \ }, 38 | \ }, 39 | \ 'sourceParams': { 40 | \ 'file': { 41 | \ 'mode': 'win32', 42 | \ }, 43 | \ }, 44 | \ }) 45 | 46 | 47 | call ddc#custom#patch_global('sourceParams', { 48 | \ 'path': { 49 | \ 'cmd': [ 'fd', '--max-depth', '5' ], 50 | \ }, 51 | \ }) 52 | 53 | call ddc#enable() 54 | 55 | " inoremap call pum#map#insert_relative(-1) 56 | inoremap call pum#map#select_relative(+1) 57 | inoremap call pum#map#select_relative(-1) 58 | inoremap call pum#map#confirm() 59 | inoremap pum#visible() ? 'call pum#map#confirm()' : '' 60 | inoremap call pum#map#cancel() 61 | 62 | " inoremap 63 | " \ pumvisible() ? '' : 64 | " \ (col('.') <= 1 getline('.')[col('.') - 2] =~# '\s') ? 65 | " \ '' : ddc#map#manual_complete() 66 | -------------------------------------------------------------------------------- /hardware-configuration.nix: -------------------------------------------------------------------------------- 1 | # Do not modify this file! It was generated by ‘nixos-generate-config’ 2 | # and may be overwritten by future invocations. Please make changes 3 | # to /etc/nixos/configuration.nix instead. 4 | { 5 | config, 6 | lib, 7 | pkgs, 8 | modulesPath, 9 | ... 10 | }: 11 | 12 | { 13 | imports = [ 14 | (modulesPath + "/installer/scan/not-detected.nix") 15 | ]; 16 | 17 | boot.initrd.availableKernelModules = [ 18 | "xhci_pci" 19 | "thunderbolt" 20 | "nvme" 21 | "usbhid" 22 | "usb_storage" 23 | "sd_mod" 24 | "rtsx_pci_sdmmc" 25 | ]; 26 | boot.initrd.kernelModules = [ ]; 27 | boot.kernelModules = [ "kvm-intel" ]; 28 | boot.extraModulePackages = [ ]; 29 | 30 | fileSystems."/" = { 31 | device = "/dev/disk/by-uuid/50b9e8e2-1c3a-41c8-841d-06db58b9eabb"; 32 | fsType = "ext4"; 33 | }; 34 | 35 | fileSystems."/boot" = { 36 | device = "/dev/disk/by-uuid/EFEC-D69C"; 37 | fsType = "vfat"; 38 | options = [ 39 | "fmask=0077" 40 | "dmask=0077" 41 | ]; 42 | }; 43 | 44 | swapDevices = [ 45 | { 46 | device = "/dev/disk/by-uuid/5dc1f85f-e1fa-41da-bb21-1d95b505d2bc"; 47 | # size = 8 * 1024; 48 | } 49 | ]; 50 | 51 | # Enables DHCP on each ethernet and wireless interface. In case of scripted networking 52 | # (the default) this is the recommended approach. When using systemd-networkd it's 53 | # still possible to use this option, but it's recommended to use it in conjunction 54 | # with explicit per-interface declarations with `networking.interfaces..useDHCP`. 55 | networking.useDHCP = lib.mkDefault true; 56 | # networking.interfaces.eno2.useDHCP = lib.mkDefault true; 57 | # networking.interfaces.wlo1.useDHCP = lib.mkDefault true; 58 | 59 | nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux"; 60 | hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware; 61 | } 62 | -------------------------------------------------------------------------------- /bin/scripts/life/life: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | set -euo pipefail 4 | 5 | LIFE_REPO="Comamoca/life" 6 | 7 | show_help() { 8 | cat << 'EOF' 9 | life - Issue management for comamoca/life repository 10 | 11 | USAGE: 12 | life [arguments] 13 | 14 | COMMANDS: 15 | task add Add a new issue to the life repository 16 | 17 | OPTIONS: 18 | -h, --help Show this help message 19 | 20 | EXAMPLES: 21 | life task add 22 | life -h 23 | life --help 24 | EOF 25 | } 26 | 27 | task_add() { 28 | local current_dir 29 | current_dir=$(pwd) 30 | 31 | if ! command -v gh >/dev/null 2>&1; then 32 | echo "Error: gh command not found. Please install GitHub CLI." >&2 33 | exit 1 34 | fi 35 | 36 | local life_repo_dir="$HOME/.ghq/github.com/$LIFE_REPO" 37 | 38 | if [[ ! -d "$life_repo_dir" ]]; then 39 | echo "Error: Repository directory $life_repo_dir not found." >&2 40 | echo "Please clone the repository first: gh repo clone $LIFE_REPO" >&2 41 | exit 1 42 | fi 43 | 44 | pushd "$life_repo_dir" >/dev/null 45 | 46 | trap 'popd >/dev/null' EXIT 47 | 48 | gh issue create 49 | } 50 | 51 | main() { 52 | case "${1:-}" in 53 | "") 54 | show_help 55 | ;; 56 | "-h"|"--help") 57 | show_help 58 | ;; 59 | "task") 60 | case "${2:-}" in 61 | "add") 62 | task_add 63 | ;; 64 | *) 65 | echo "Error: Unknown task command '${2:-}'" >&2 66 | echo "Run 'life --help' for usage information." >&2 67 | exit 1 68 | ;; 69 | esac 70 | ;; 71 | *) 72 | echo "Error: Unknown command '$1'" >&2 73 | echo "Run 'life --help' for usage information." >&2 74 | exit 1 75 | ;; 76 | esac 77 | } 78 | 79 | main "$@" 80 | -------------------------------------------------------------------------------- /secrets/claude-code.env: -------------------------------------------------------------------------------- 1 | #ENC[AES256_GCM,data:ybG3AdQV+wt7k/YJHxfPPQtaMLPOCwO38vtNLl3+zKk9ku51ukWZnIULVru6VrVOzvkH98gZDKVvhgDbTeMlAXIs4rZCa679RmPu1Cg07VFjfLj77VHGnCY=,iv:tX+jTuAxk27Gio2pagFpuicElGgV+1ewl5l7lC22EZc=,tag:gLWamSt4Ljh6sc/mq8R/wA==,type:comment] 2 | #ENC[AES256_GCM,data:B9LnpzFfpTL0yaAn94XWuGdJPvGvch5XYSbGDPdpTXUxTHFEgkRRTRNHq9jh,iv:Vg6bthH+kC0oLsIV342r2lD3GjNsDqiR13wTB2d/zcI=,tag:zJInLnKgECD7fUuAtw92BQ==,type:comment] 3 | #ENC[AES256_GCM,data:ze+xP/5XFGmejLAP4MwiUoNC8z5vE4brSGEwK9Pg2RJcMSiY5Z0rhVY=,iv:O7eVxHm7Yx3KsP9ucj7IJYmijBMk9pZsnExiHhSUcw8=,tag:AL0Vx6T/3PscgiEQk2AvhA==,type:comment] 4 | #ENC[AES256_GCM,data:hUrDtSel5pmWjJnCr65I4MhfAnP47NWZf2w2AgRHjZHDnxCxDgeaT2s+2Y8=,iv:Znv+Ftoq6SEuWurLuIuU+6k8uAJGUT8SPRP0V8xXXI4=,tag:KBbe5kI1F57PDQsjtAP3gA==,type:comment] 5 | LOG_LEVEL=ENC[AES256_GCM,data:hCoZ6dY=,iv:buEEfhCZuKHnnGLi4rIYagPbZizoFTgySIbgdXxbb8E=,tag:P4Ahk/4eWDk/ITT7ni7dUA==,type:str] 6 | #ENC[AES256_GCM,data:kEiuZBVgRApBEnD5rYS68O7rc8vPkc96Gd/eNeY/9DeU77j9xu4wK77Fmg==,iv:pgU/OBJmPct5k3goze6IA09aNGuEi15weSy67XHmMsc=,tag:FTe7lEwROE905Sn+iogJkQ==,type:comment] 7 | #ENC[AES256_GCM,data:hUrDtSel5pmWjJnCr65I4MhfAnP47NWZf2w2AgRHjZHDnxCxDgeaT2s+2Y8=,iv:Znv+Ftoq6SEuWurLuIuU+6k8uAJGUT8SPRP0V8xXXI4=,tag:KBbe5kI1F57PDQsjtAP3gA==,type:comment] 8 | sops_age__list_0__map_enc=-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBJSkFOZTdWNlpiTEVHZ0dm\nSE5vWHhERGpnNWt2bnJhaXpRdkdEVFdEY0ZjClBPdXNhODVDQ012TlNOYjg3SEZo\nZ21yd0J1RWpBdXBKL3FLbXFhdmhlQ2cKLS0tIExYeDRsS00vbmI0WERkZmQ0YVR2\nMVJwa2hkTmxoT29LQkdLUmpObHhyN0kKGnJpgPlYrRP0WeHd7s5tkEns4fyLG5MR\nkfNvNGMk4ELd7NNL3/ZHmujGCe3gSSoAkqWB4781M4cDGibZWkgKxw==\n-----END AGE ENCRYPTED FILE-----\n 9 | sops_age__list_0__map_recipient=age1y8xtzklz23f95443fmecpxdyc2rkzvdlem6thq654yf2fjj4ncxqnv620k 10 | sops_lastmodified=2025-06-24T12:43:17Z 11 | sops_mac=ENC[AES256_GCM,data:yyhKdtDzA92/2xhcGSaV7aZiVBVq9CpMBS5F1dCXaZ7sk951cfyShOVahHt0rhnZJ1Pc+d1qRm4SWRRNttCH28pf8+o4H7qO/X/shv2Xx99A8ZROEVtyHFMPPfxnm1PGni+7Tj4hN4mvsnYgWtcyxPi9EgRDFppz2jprhup7a3c=,iv:0gRMjAm5i/eu07KwrQ7lW6+7xxkHnlk5fkcxqOqcLnY=,tag:vKnuiWnn9VXFGv2d3h2MRw==,type:str] 12 | sops_unencrypted_suffix=_unencrypted 13 | sops_version=3.10.2 14 | -------------------------------------------------------------------------------- /config/nvim/ddc.ts: -------------------------------------------------------------------------------- 1 | import { BaseConfig } from "https://deno.land/x/ddc_vim@v4.0.4/types.ts"; 2 | import { fn } from "https://deno.land/x/ddc_vim@v4.0.4/deps.ts"; 3 | import { ConfigArguments } from "https://deno.land/x/ddc_vim@v4.0.4/base/config.ts"; 4 | 5 | export class Config extends BaseConfig { 6 | override async config(args: ConfigArguments): Promise { 7 | args.contextBuilder.patchGlobal({ 8 | ui: "pum", 9 | sources: [ 10 | "lsp", 11 | "around", 12 | "vsnip", 13 | "file", 14 | "skkeleton", 15 | "emoji", 16 | "dictionary", 17 | ], 18 | sourceOptions: { 19 | "lsp": { 20 | dup: "keep", 21 | mark: "LSP", 22 | forceCompletionPattern: "\\.\\w*|:\\w*|->\\w*", 23 | }, 24 | 25 | skkeleton: { 26 | mark: "SKK", 27 | matchers: [], 28 | sorters: [], 29 | isVolatile: true, 30 | }, 31 | 32 | emoji: { 33 | mark: "emoji", 34 | matchers: ["emoji"], 35 | sorters: [], 36 | }, 37 | 38 | _: { 39 | // matchers: ["matcher_head"], 40 | // sorters: ["sorter_head"], 41 | 42 | matchers: ["matcher_fuzzy"], 43 | sorters: ["sorter_fuzzy"], 44 | converters: ["converter_fuzzy"], 45 | // keywordPattern: "[a-zA-Z_:]\\w*", 46 | keywordPattern: "\\k+", 47 | }, 48 | around: { mark: "around" }, 49 | path: { 50 | mark: "P", 51 | }, 52 | file: { 53 | mark: "F", 54 | isVolatile: true, 55 | forceCompletionPattern: `\S/\S*`, 56 | }, 57 | vsnip: { 58 | mark: "vsnip", 59 | }, 60 | }, 61 | sourceParams: { 62 | lsp: { 63 | // TODO: Vsnip 64 | // "snippetEngine": 65 | enableResolveItem: true, 66 | enableAdditionalTextEdit: true, 67 | sorters: ["sorter_lsp-kind"], 68 | kindLabels: { "Class": "c" }, 69 | }, 70 | }, 71 | postFilters: ["sorter_head"], 72 | }); 73 | } 74 | } 75 | -------------------------------------------------------------------------------- /config/ime/lua/ddc.lua: -------------------------------------------------------------------------------- 1 | local ddc_custom_patch_global = vim.fn["ddc#custom#patch_global"] 2 | 3 | ddc_custom_patch_global("ui", "native") 4 | -- vim.fn["ddc#custom#patch_global"]('completionMenu', 'pum.vim') 5 | 6 | ddc_custom_patch_global("sources", { 7 | -- "nvim-lsp", 8 | -- "lsp", 9 | -- "around", 10 | -- "vsnip", 11 | -- "file", 12 | "skkeleton", 13 | "emoji", 14 | }) 15 | 16 | ddc_custom_patch_global("sourceOptions", { 17 | emoji = { 18 | mark = "emoji", 19 | matchers = { "emoji" }, 20 | sorters = {}, 21 | }, 22 | }) 23 | 24 | ddc_custom_patch_global("sourceOptions", { 25 | skkeleton = { 26 | mark = "SKK", 27 | matchers = {}, 28 | sorters = {}, 29 | isVolatile = true, 30 | }, 31 | }) 32 | 33 | ddc_custom_patch_global("sourceOptions", { 34 | _ = { 35 | -- matchers = { "matcher_head" }, 36 | -- sorters = { "sorter_rank" }, 37 | 38 | matchers = { "matcher_fuzzy" }, 39 | sorters = { "sorter_fuzzy" }, 40 | converters = { "converter_fuzzy" }, 41 | keywordPattern = "[a-zA-Z_:]\\w*", 42 | }, 43 | -- around = { mark = "around" }, 44 | }) 45 | 46 | vim.fn["ddc#custom#patch_filetype"]({ "ps1", "dosbatch", "autohotkey", "registry" }, { 47 | sourceOptions = { 48 | -- file = { 49 | -- forceCompletionPattern = [[\S\\\S*]], 50 | -- }, 51 | }, 52 | sourceParams = { 53 | -- file = { 54 | -- mode = "win32", 55 | -- }, 56 | }, 57 | }) 58 | 59 | -- ddc_custom_patch_global("sourceParams", { 60 | -- ["nvim-lsp"] = { kindLabels = { Class = "c" } }, 61 | -- }) 62 | 63 | -- vim.fn["ddc#enable_terminal_completion"]() 64 | vim.fn["ddc#enable"]() 65 | 66 | vim.cmd([[ 67 | inoremap 68 | \ pumvisible() ? '' : 69 | \ (col('.') <= 1 getline('.')[col('.') - 2] =~# '\s') ? 70 | \ '' : ddc#map#manual_complete() 71 | ]]) 72 | 73 | vim.api.nvim_create_autocmd("InsertEnter", { 74 | callback = function(event) 75 | vim.keymap.set("i", "", function() 76 | if vim.fn.pumvisible() == 1 then 77 | return "" 78 | else 79 | return "" 80 | end 81 | end, { expr = true }) 82 | end, 83 | }) 84 | -------------------------------------------------------------------------------- /config/conky/conky.conf: -------------------------------------------------------------------------------- 1 | conky.config = { 2 | out_to_x = false, 3 | out_to_wayland = true, 4 | 5 | background = true, 6 | use_xft = true, 7 | font = 'Carlito:size=9', 8 | font2 = 'Carlito:bold:size=8', 9 | xftalpha = 1, 10 | update_interval = 1.0, 11 | total_run_times = 0, 12 | own_window = true, 13 | own_window_transparent = true, 14 | own_window_type = 'desktop', 15 | own_window_hints = 'undecorated,below,sticky,skip_taskbar,skip_pager', 16 | double_buffer = true, 17 | minimum_width = 300, minimum_height = 300, 18 | maximum_width = 300, 19 | draw_shades = false, 20 | draw_outline = false, 21 | draw_borders = false, 22 | draw_graph_borders = true, 23 | default_color = 'white', 24 | default_shade_color = 'black', 25 | default_outline_color = 'white', 26 | alignment = 'top_left', 27 | gap_x = 14, 28 | gap_y = 25, 29 | no_buffers = true, 30 | uppercase = false, 31 | cpu_avg_samples = 2, 32 | override_utf8_locale = true, 33 | color1 = '#FFFFFF', 34 | color2 = '#1AB093', 35 | color3 = '#CC0A0A', 36 | own_window_argb_value = 0, 37 | own_window_argb_visual = true, 38 | own_window_colour = '#000000', 39 | }; 40 | 41 | conky.text = [[ 42 | # ${texeci 5 curl -s "https://www.jma.go.jp/bosai/forecast/data/forecast/130000.json" | jq -r '.[0].timeSeries[0].areas[0].weathers[0]'} 43 | 44 | ${hr -3} 45 | ${color1}${texeci 5 curl -s "https://wttr.in/{Yamanashi,Tokyo,Nagano}?d&format=3"} 46 | 47 | # SYSTEME 48 | ${font2}${color2}SYSTEME ${hr 2} 49 | ${font}${color1}Uptime $alignr $uptime 50 | System $alignr NixOS 51 | Kernel $alignr $kernel 52 | Packages $alignr ${execi 10000 pacman -Q | wc -l} 53 | 54 | # CPU 55 | ${font2}${color2}CPU ${hr 2} 56 | 57 | # MEMOIRE 58 | ${font2}${color2}MEMOIRE ${hr 2} 59 | ${font}${color1}RAM${goto 50}$mem / $memmax ${goto 155} $memperc% ${goto 190}${color2}${membar 7} 60 | ${color1}SWAP${goto 50}$swap / $swapmax ${goto 155} $swapperc% ${goto 190}${color2}${swapbar 7} 61 | ${color1}tmp${goto 50}${fs_used /tmp} / ${fs_size /tmp} ${goto 155} ${fs_used_perc /tmp}% ${goto 190}${color2}${fs_bar 7 /tmp} 62 | ]]; 63 | -------------------------------------------------------------------------------- /hyprlock.nix: -------------------------------------------------------------------------------- 1 | { wallpaper }: 2 | { 3 | "$accent" = "$mauve"; 4 | "$accentAlpha" = "$mauveAlpha"; 5 | "$font" = "JetBrainsMono Nerd Font"; 6 | 7 | # GENERAL 8 | "general" = { 9 | "disable_loading_bar" = true; 10 | "hide_cursor" = true; 11 | }; 12 | 13 | # BACKGROUND 14 | "background" = { 15 | "monitor" = ""; 16 | "path" = wallpaper; 17 | "blur_passes" = 0; 18 | "color" = "$base"; 19 | }; 20 | 21 | # LAYOUT 22 | label = [ 23 | { 24 | "monitor" = ""; 25 | "text" = "Layout: $LAYOUT"; 26 | "color" = "$text"; 27 | "font_size" = 25; 28 | "font_family" = "$font"; 29 | "position" = "30, -30"; 30 | "halign" = "left"; 31 | "valign" = "top"; 32 | } 33 | 34 | # TIME 35 | { 36 | "monitor" = ""; 37 | "text" = "$TIME"; 38 | "color" = "$text"; 39 | "font_size" = 90; 40 | "font_family" = "$font"; 41 | "position" = "-30, 0"; 42 | "halign" = "right"; 43 | "valign" = "top"; 44 | } 45 | # DATE 46 | { 47 | "monitor" = ""; 48 | "text" = ''cmd[update:43200000] date +"%A, %d %B %Y"''; 49 | "color" = "$text"; 50 | "font_size" = 25; 51 | "font_family" = "$font"; 52 | "position" = "-30, -150"; 53 | "halign" = "right"; 54 | "valign" = "top"; 55 | } 56 | ]; 57 | 58 | # USER AVATAR 59 | image = { 60 | "monitor" = ""; 61 | "path" = "$HOME/.face"; 62 | "size" = 100; 63 | "border_color" = "$accent"; 64 | "position" = "0, 75"; 65 | "halign" = "center"; 66 | "valign" = "center"; 67 | }; 68 | 69 | # INPUT FIELD 70 | input-field = { 71 | "monitor" = ""; 72 | "size" = ""; 73 | "outline_thickness" = 4; 74 | "dots_size" = 0.2; 75 | "dots_spacing" = 0.2; 76 | "dots_center" = true; 77 | "outer_color" = "$accent"; 78 | "inner_color" = "$surface0"; 79 | "font_color" = "$text"; 80 | "fade_on_empty" = false; 81 | "placeholder_text" = ""; 82 | "hide_input" = false; 83 | "check_color" = "$accent"; 84 | "fail_color" = "$red"; 85 | "fail_text" = "$FAIL ($ATTEMPTS)"; 86 | "capslock_color" = "$yellow"; 87 | "position" = "0, -47"; 88 | "halign" = "center"; 89 | "valign" = "center"; 90 | }; 91 | } 92 | -------------------------------------------------------------------------------- /config/rofi/themes/catppuccin-mocha.rasi: -------------------------------------------------------------------------------- 1 | * { 2 | bg-col: #1e1e2e; 3 | bg-col-light: #1e1e2e; 4 | border-col: #1e1e2e; 5 | selected-col: #1e1e2e; 6 | blue: #89b4fa; 7 | fg-col: #cdd6f4; 8 | fg-col2: #f38ba8; 9 | grey: #6c7086; 10 | 11 | width: 600; 12 | font: "JetBrainsMono Nerd Font 14"; 13 | } 14 | 15 | element-text, element-icon , mode-switcher { 16 | background-color: inherit; 17 | text-color: inherit; 18 | } 19 | 20 | window { 21 | height: 360px; 22 | border: 3px; 23 | border-color: @border-col; 24 | background-color: @bg-col; 25 | } 26 | 27 | mainbox { 28 | background-color: @bg-col; 29 | } 30 | 31 | inputbar { 32 | children: [prompt,entry]; 33 | background-color: @bg-col; 34 | border-radius: 5px; 35 | padding: 2px; 36 | } 37 | 38 | prompt { 39 | background-color: @blue; 40 | padding: 6px; 41 | text-color: @bg-col; 42 | border-radius: 3px; 43 | margin: 20px 0px 0px 20px; 44 | } 45 | 46 | textbox-prompt-colon { 47 | expand: false; 48 | str: ":"; 49 | } 50 | 51 | entry { 52 | padding: 6px; 53 | margin: 20px 0px 0px 10px; 54 | text-color: @fg-col; 55 | background-color: @bg-col; 56 | } 57 | 58 | listview { 59 | border: 0px 0px 0px; 60 | padding: 6px 0px 0px; 61 | margin: 10px 0px 0px 20px; 62 | columns: 2; 63 | lines: 5; 64 | background-color: @bg-col; 65 | } 66 | 67 | element { 68 | padding: 5px; 69 | background-color: @bg-col; 70 | text-color: @fg-col ; 71 | } 72 | 73 | element-icon { 74 | size: 25px; 75 | } 76 | 77 | element selected { 78 | background-color: @selected-col ; 79 | text-color: @fg-col2 ; 80 | } 81 | 82 | mode-switcher { 83 | spacing: 0; 84 | } 85 | 86 | button { 87 | padding: 10px; 88 | background-color: @bg-col-light; 89 | text-color: @grey; 90 | vertical-align: 0.5; 91 | horizontal-align: 0.5; 92 | } 93 | 94 | button selected { 95 | background-color: @bg-col; 96 | text-color: @blue; 97 | } 98 | 99 | message { 100 | background-color: @bg-col-light; 101 | margin: 2px; 102 | padding: 2px; 103 | border-radius: 5px; 104 | } 105 | 106 | textbox { 107 | padding: 6px; 108 | margin: 20px 0px 0px 20px; 109 | text-color: @blue; 110 | background-color: @bg-col-light; 111 | } 112 | -------------------------------------------------------------------------------- /vim/ddu.vim: -------------------------------------------------------------------------------- 1 | const width = &columns * 0.8 2 | const col = &columns * 0.12 3 | 4 | call ddu#custom#patch_global({ 5 | \ 'ui': 'ff', 6 | \ 'sources': [ 7 | \ { 8 | \ 'name': 'file_rec', 9 | \ 'params': { 10 | \ 'ignoredDirectories': ['.git', 'node_modules', 'vendor', '.next'] 11 | \ } 12 | \ } 13 | \ ], 14 | \ 'sourceOptions': { 15 | \ '_': { 16 | \ 'matchers': ['matcher_substring'], 17 | \ }, 18 | \ }, 19 | \ 'filterParams': { 20 | \ 'matcher_fzf': { 21 | \ 'highlightMatched': 'Search', 22 | \ }, 23 | \ }, 24 | \ 'kindOptions': { 25 | \ 'file': { 26 | \ 'defaultAction': 'open', 27 | \ }, 28 | \ 'buffer': { 29 | \ 'defaultAction': 'open', 30 | \ }, 31 | \ 'memos': { 32 | \ 'defaultAction': 'open', 33 | \ } 34 | \ }, 35 | \ 'uiParams': { 36 | \ 'ff': { 37 | \ 'startFilter': v:true, 38 | \ 'prompt': "> ", 39 | \ 'split': "horizontal", 40 | \ 'previewFloating': v:false, 41 | \ 'previewSplit': "vertical", 42 | \ 'previewFloatingBorder': "none", 43 | \ 'previewWidth': width * 0.7, 44 | \ 'previewHeight': col, 45 | \ 'autoAction': { 46 | \ 'name': "preview", 47 | \ }, 48 | \ }, 49 | \ }, 50 | \ }) 51 | 52 | autocmd FileType ddu-ff call s:ddu_my_settings() 53 | function! s:ddu_my_settings() abort 54 | nnoremap 55 | \ call ddu#ui#ff#do_action('itemAction', {'name': 'open'}) 56 | 57 | nnoremap q 58 | \ call ddu#ui#ff#do_action('quit') 59 | 60 | set updatetime=500 61 | autocmd CursorHold * call ddu#ui#ff#do_action('preview') 62 | function! s:preview_hook() abort 63 | call ddu#ui#ff#do_action('preview') 64 | endfunction 65 | endfunction 66 | 67 | autocmd FileType ddu-ff-filter call s:ddu_filter_my_settings() 68 | function! s:ddu_filter_my_settings() abort 69 | nnoremap q 70 | \ call ddu#ui#do_action('closeFilterWindow') 71 | nnoremap 72 | \ call ddu#ui#do_action('closeFilterWindow') 73 | inoremap 74 | \ call ddu#ui#do_action('itemAction') 75 | inoremap 76 | \ call ddu#ui#do_action('closeFilterWindow') 77 | inoremap 78 | \ call ddu#ui#do_action('cursorNext') 79 | inoremap 80 | \ call ddu#ui#do_action('cursorPrevious') 81 | endfunction 82 | -------------------------------------------------------------------------------- /config/vim/ddu.vim: -------------------------------------------------------------------------------- 1 | const width = &columns * 0.8 2 | const col = &columns * 0.12 3 | 4 | call ddu#custom#patch_global({ 5 | \ 'ui': 'ff', 6 | \ 'sources': [ 7 | \ { 8 | \ 'name': 'file_rec', 9 | \ 'params': { 10 | \ 'ignoredDirectories': ['.git', 'node_modules', 'vendor', '.next'] 11 | \ } 12 | \ } 13 | \ ], 14 | \ 'sourceOptions': { 15 | \ '_': { 16 | \ 'matchers': ['matcher_substring'], 17 | \ }, 18 | \ "outline": { 19 | \ 'matchers': ['matcher_kensaku'], 20 | \ } 21 | \ }, 22 | \ 'filterParams': { 23 | \ 'matcher_fzf': { 24 | \ 'highlightMatched': 'Search', 25 | \ }, 26 | \ }, 27 | \ 'kindOptions': { 28 | \ 'file': { 29 | \ 'defaultAction': 'open', 30 | \ }, 31 | \ 'buffer': { 32 | \ 'defaultAction': 'open', 33 | \ }, 34 | \ 'memos': { 35 | \ 'defaultAction': 'open', 36 | \ } 37 | \ }, 38 | \ 'uiParams': { 39 | \ 'ff': { 40 | \ 'startFilter': v:true, 41 | \ 'prompt': "> ", 42 | \ 'split': "horizontal", 43 | \ 'previewFloating': v:false, 44 | \ 'previewSplit': "vertical", 45 | \ 'previewFloatingBorder': "none", 46 | \ 'previewWidth': width * 0.7, 47 | \ 'previewHeight': col, 48 | \ 'autoAction': { 49 | \ 'name': "preview", 50 | \ }, 51 | \ }, 52 | \ }, 53 | \ }) 54 | 55 | autocmd FileType ddu-ff call s:ddu_my_settings() 56 | function! s:ddu_my_settings() abort 57 | nnoremap 58 | \ call ddu#ui#ff#do_action('itemAction', {'name': 'open'}) 59 | 60 | nnoremap q 61 | \ call ddu#ui#ff#do_action('quit') 62 | 63 | set updatetime=500 64 | autocmd CursorHold * call ddu#ui#ff#do_action('preview') 65 | function! s:preview_hook() abort 66 | call ddu#ui#ff#do_action('preview') 67 | endfunction 68 | endfunction 69 | 70 | autocmd FileType ddu-ff-filter call s:ddu_filter_my_settings() 71 | function! s:ddu_filter_my_settings() abort 72 | nnoremap q 73 | \ call ddu#ui#do_action('closeFilterWindow') 74 | nnoremap 75 | \ call ddu#ui#do_action('closeFilterWindow') 76 | inoremap 77 | \ call ddu#ui#do_action('itemAction') 78 | inoremap 79 | \ call ddu#ui#do_action('closeFilterWindow') 80 | inoremap 81 | \ call ddu#ui#do_action('cursorNext') 82 | inoremap 83 | \ call ddu#ui#do_action('cursorPrevious') 84 | endfunction 85 | -------------------------------------------------------------------------------- /config/cava/shaders/bar_spectrum.frag: -------------------------------------------------------------------------------- 1 | #version 330 2 | 3 | in vec2 fragCoord; 4 | out vec4 fragColor; 5 | 6 | // bar values. defaults to left channels first (low to high), then right (high to low). 7 | uniform float bars[512]; 8 | 9 | uniform int bars_count; // number of bars (left + right) (configurable) 10 | uniform int bar_width; // bar width (configurable), not used here 11 | uniform int bar_spacing; // space bewteen bars (configurable) 12 | 13 | uniform vec3 u_resolution; // window resolution 14 | 15 | //colors, configurable in cava config file (r,g,b) (0.0 - 1.0) 16 | uniform vec3 bg_color; // background color 17 | uniform vec3 fg_color; // foreground color 18 | 19 | uniform int gradient_count; 20 | uniform vec3 gradient_colors[8]; // gradient colors 21 | 22 | vec3 normalize_C(float y,vec3 col_1, vec3 col_2, float y_min, float y_max) 23 | { 24 | //create color based on fraction of this color and next color 25 | float yr = (y - y_min) / (y_max - y_min); 26 | return col_1 * (1.0 - yr) + col_2 * yr; 27 | } 28 | 29 | void main() 30 | { 31 | // find which bar to use based on where we are on the x axis 32 | float x = u_resolution.x * fragCoord.x; 33 | int bar = int(bars_count * fragCoord.x); 34 | 35 | //calculate a bar size 36 | float bar_size = u_resolution.x / bars_count; 37 | 38 | //the y coordinate and bar values are the same 39 | float y = bars[bar]; 40 | 41 | // make sure there is a thin line at bottom 42 | if (y * u_resolution.y < 1.0) 43 | { 44 | y = 1.0 / u_resolution.y; 45 | } 46 | 47 | //draw the bar up to current height 48 | if (y > fragCoord.y) 49 | { 50 | //make some space between bars basen on settings 51 | if (x > (bar + 1) * (bar_size) - bar_spacing) 52 | { 53 | fragColor = vec4(bg_color,1.0); 54 | } 55 | else 56 | { 57 | if (gradient_count == 0) 58 | { 59 | fragColor = vec4(fg_color,1.0); 60 | } 61 | else 62 | { 63 | //find which color in the configured gradient we are at 64 | int color = int((gradient_count - 1) * fragCoord.y); 65 | 66 | //find where on y this and next color is supposed to be 67 | float y_min = color / (gradient_count - 1.0); 68 | float y_max = (color + 1.0) / (gradient_count - 1.0); 69 | 70 | //make color 71 | fragColor = vec4(normalize_C(fragCoord.y, gradient_colors[color], gradient_colors[color + 1], y_min, y_max), 1.0); 72 | } 73 | } 74 | } 75 | else 76 | { 77 | fragColor = vec4(bg_color,1.0); 78 | } 79 | } -------------------------------------------------------------------------------- /config/nvim/lua/configs/keymap.lua: -------------------------------------------------------------------------------- 1 | local opts = { silent = true } 2 | local cr = "" 3 | 4 | local keymap = vim.keymap.set 5 | local runCmd = function(map, cmd) 6 | keymap("n", map, cmd .. "", opts) 7 | end 8 | 9 | keymap("n", "", ":noh") 10 | keymap("n", "", "Ddu source") 11 | 12 | keymap("n", "s", "", opts) 13 | keymap("n", "sl", "l", opts) 14 | keymap("n", "sh", "h", opts) 15 | 16 | keymap("i", "jj", "", opts) 17 | 18 | keymap("i", "", "") 19 | 20 | -- keymap("n", "q", "") 21 | 22 | -- keymap("n", "", "{", opts) 23 | -- keymap("n", "", "}", opts) 24 | 25 | keymap("n", "", "{", opts) 26 | keymap("n", "", "}", opts) 27 | 28 | -- keymap("n", "", "Sayonara", opts) 29 | keymap("n", "", "close", opts) 30 | 31 | keymap("n", "f", "Fern . -reveal=% -drawer -toggle -width=23", opts) 32 | 33 | keymap("n", "", "") 34 | 35 | -- for Emacs compativirity 36 | keymap("n", "", "") 37 | 38 | -- comfortable moation 39 | vim.g.comfortable_motion_no_default_key_mappings = 1 40 | 41 | -- keymap('n', '', function() 42 | -- vim.fn["comfortable_motion#flick"](40) 43 | -- end, opts) 44 | -- keymap('n', '', function() 45 | -- vim.fn["comfortable_motion#flick"](-40) 46 | -- end, opts) 47 | 48 | -- runCmd("", ":call comfortable_motion#flick(-70)" .. cr) 49 | -- runCmd("", ":call comfortable_motion#flick(70)" .. cr) 50 | 51 | -- keymap("n", "", "nop") 52 | -- keymap("n", "", "nop") 53 | 54 | keymap("n", "", "") 55 | keymap("n", "", "") 56 | 57 | -- keymap("n", "", "", opts) 58 | -- keymap("n", "", "", opts) 59 | 60 | local function ddu_start(source) 61 | -- call ddu#start({'sources': [{'name': 'buffer'}]}) 62 | return string.format(":call ddu#start({'sources': [{'name': '%s'}]})", source) 63 | end 64 | 65 | -- ddu keymap 66 | keymap("n", "", "Ddu file_external", opts) -- file open 67 | keymap("n", "", "Ddu buffer", opts) -- buffer ope 68 | -- keymap("n", "", function() 69 | -- vim.cmd([[call ddu#start({'sources': [{'name': 'mr'}]})]]) 70 | -- end) 71 | -- keymap("n", "", "Ddu source") -- search sources 72 | 73 | -- call ddu#start({'sources': [{'name': 'buffer'}]}) 74 | keymap("n", "", ddu_start("line"), opts) 75 | keymap("n", "l", ddu_start("lsp_codeAction"), opts) 76 | 77 | keymap("t", "", [[]]) 78 | 79 | vim.api.nvim_create_autocmd("FileType", { 80 | pattern = "help", 81 | callback = function(opts) 82 | vim.api.nvim_buf_set_keymap(0, "n", "gd", "", { silent = true }) 83 | end, 84 | }) 85 | 86 | vim.fn.getwininfo() 87 | 88 | vim.fn.filter(vim.fn.getwininfo(), function(key, val) 89 | return val.quickfix 90 | end) 91 | vim.print() 92 | 93 | -- keymap("n", "q", function() 94 | -- if vim.fn.empty(vim.fn.filter(vim.fn.getwininfo(), "v:val.quickfix")) then 95 | -- vim.cmd("copen") 96 | -- else 97 | -- vim.cmd("cclose") 98 | -- end 99 | -- end) 100 | -------------------------------------------------------------------------------- /vim/dpp.ts: -------------------------------------------------------------------------------- 1 | import { 2 | BaseConfig, 3 | ContextBuilder, 4 | Dpp, 5 | Plugin, 6 | } from "https://deno.land/x/dpp_vim@v1.0.0/types.ts"; 7 | import { Denops, fn } from "https://deno.land/x/dpp_vim@v1.0.0/deps.ts"; 8 | 9 | console.log("dpp.ts is loaded!"); 10 | 11 | export class Config extends BaseConfig { 12 | override async config(args: { 13 | denops: Denops; 14 | contextBuilder: ContextBuilder; 15 | basePath: string; 16 | dpp: Dpp; 17 | }): Promise<{ 18 | plugins: Plugin[]; 19 | stateLines: string[]; 20 | }> { 21 | args.contextBuilder.setGlobal({ 22 | protocols: ["git"], 23 | }); 24 | 25 | type Toml = { 26 | hooks_file?: string; 27 | ftplugins?: Record; 28 | plugins?: Plugin[]; 29 | }; 30 | 31 | type LazyMakeStateResult = { 32 | plugins: Plugin[]; 33 | stateLines: string[]; 34 | }; 35 | 36 | const [context, options] = await args.contextBuilder.get(args.denops); 37 | const dotfilesDir = "~/.vim/"; 38 | 39 | const tomls: Toml[] = []; 40 | 41 | const toml_files: { name: string; lazy: boolean }[] = [ 42 | { name: "dpp.toml", lazy: false }, 43 | { name: "dpp_lazy.toml", lazy: true }, 44 | { name: "lsp.toml", lazy: true }, 45 | { name: "ddu.toml", lazy: true }, 46 | { name: "ddc.toml", lazy: true }, 47 | { name: "ft.toml", lazy: true }, 48 | // { name: "dap.toml", lazy: true }, 49 | ]; 50 | 51 | const toml_promises = toml_files.map(async (toml) => { 52 | console.log(toml); 53 | tomls.push( 54 | await args.dpp.extAction( 55 | args.denops, 56 | context, 57 | options, 58 | "toml", 59 | "load", 60 | { 61 | path: await fn.expand(args.denops, dotfilesDir + toml.name), 62 | options: { 63 | lazy: toml.lazy, 64 | }, 65 | }, 66 | ) as Toml, 67 | ); 68 | }); 69 | 70 | await Promise.all(toml_promises); 71 | 72 | const recordPlugins: Record = {}; 73 | const ftplugins: Record = {}; 74 | const hooksFiles: string[] = []; 75 | 76 | tomls.forEach((toml) => { 77 | for (const plugin of toml.plugins) { 78 | recordPlugins[plugin.name] = plugin; 79 | } 80 | 81 | if (toml.ftplugins) { 82 | for (const filetype of Object.keys(toml.ftplugins)) { 83 | if (ftplugins[filetype]) { 84 | ftplugins[filetype] += `\n${toml.ftplugins[filetype]}`; 85 | } else { 86 | ftplugins[filetype] = toml.ftplugins[filetype]; 87 | } 88 | } 89 | } 90 | 91 | if (toml.hooks_file) { 92 | hooksFiles.push(toml.hooks_file); 93 | } 94 | }); 95 | 96 | const lazyResult = await args.dpp.extAction( 97 | args.denops, 98 | context, 99 | options, 100 | "lazy", 101 | "makeState", 102 | { 103 | plugins: Object.values(recordPlugins), 104 | }, 105 | ) as LazyMakeStateResult; 106 | 107 | // console.log(Object.values(recordPlugins)); 108 | console.log({ 109 | plugins: lazyResult.plugins, 110 | stateLines: lazyResult.stateLines, 111 | }); 112 | 113 | return { 114 | plugins: lazyResult.plugins, 115 | stateLines: lazyResult.stateLines, 116 | }; 117 | } 118 | } 119 | -------------------------------------------------------------------------------- /config/nvim/dpp.ts: -------------------------------------------------------------------------------- 1 | import { 2 | BaseConfig, 3 | ContextBuilder, 4 | Dpp, 5 | Plugin, 6 | } from "https://deno.land/x/dpp_vim@v1.0.0/types.ts"; 7 | import { Denops, fn } from "https://deno.land/x/dpp_vim@v1.0.0/deps.ts"; 8 | 9 | console.log("dpp.ts is loaded!"); 10 | 11 | export class Config extends BaseConfig { 12 | override async config(args: { 13 | denops: Denops; 14 | contextBuilder: ContextBuilder; 15 | basePath: string; 16 | dpp: Dpp; 17 | }): Promise<{ 18 | plugins: Plugin[]; 19 | stateLines: string[]; 20 | }> { 21 | args.contextBuilder.setGlobal({ 22 | protocols: ["git"], 23 | }); 24 | 25 | type Toml = { 26 | hooks_file?: string; 27 | ftplugins?: Record; 28 | plugins?: Plugin[]; 29 | }; 30 | 31 | type LazyMakeStateResult = { 32 | plugins: Plugin[]; 33 | stateLines: string[]; 34 | }; 35 | 36 | const [context, options] = await args.contextBuilder.get(args.denops); 37 | const dotfilesDir = "~/.config/nvim/"; 38 | 39 | const tomls: Toml[] = []; 40 | 41 | const localPlugins = await args.dpp.extAction( 42 | args.denops, 43 | context, 44 | options, 45 | "local", 46 | "local", 47 | { 48 | directory: "/home/coma/.cache/dpp/_generated/nvim-treesitter/", 49 | options: { 50 | merged: false, 51 | }, 52 | }, 53 | ) as Plugin[]; 54 | 55 | const toml_files: { name: string; lazy: boolean }[] = [ 56 | { name: "dpp.toml", lazy: false }, 57 | { name: "dpp_lazy.toml", lazy: true }, 58 | { name: "lsp.toml", lazy: true }, 59 | { name: "ddu.toml", lazy: true }, 60 | { name: "ddc.toml", lazy: true }, 61 | // { name: "ft.toml", lazy: true }, 62 | ]; 63 | 64 | const toml_promises = toml_files.map(async (toml) => { 65 | console.log(toml); 66 | tomls.push( 67 | await args.dpp.extAction( 68 | args.denops, 69 | context, 70 | options, 71 | "toml", 72 | "load", 73 | { 74 | path: await fn.expand(args.denops, dotfilesDir + toml.name), 75 | options: { 76 | lazy: toml.lazy, 77 | }, 78 | }, 79 | ) as Toml, 80 | ); 81 | }); 82 | 83 | await Promise.all(toml_promises); 84 | 85 | const recordPlugins: Record = {}; 86 | const ftplugins: Record = {}; 87 | const hooksFiles: string[] = []; 88 | 89 | tomls.forEach((toml) => { 90 | for (const plugin of toml.plugins) { 91 | recordPlugins[plugin.name] = plugin; 92 | } 93 | 94 | if (toml.ftplugins) { 95 | for (const filetype of Object.keys(toml.ftplugins)) { 96 | if (ftplugins[filetype]) { 97 | ftplugins[filetype] += `\n${toml.ftplugins[filetype]}`; 98 | } else { 99 | ftplugins[filetype] = toml.ftplugins[filetype]; 100 | } 101 | } 102 | } 103 | 104 | if (toml.hooks_file) { 105 | hooksFiles.push(toml.hooks_file); 106 | } 107 | }); 108 | 109 | // localPlugins.forEach((plugin: Plugin) => { 110 | // recordPlugins[plugin.name] = plugin; 111 | // }); 112 | 113 | const lazyResult = await args.dpp.extAction( 114 | args.denops, 115 | context, 116 | options, 117 | "lazy", 118 | "makeState", 119 | { 120 | plugins: Object.values(recordPlugins), 121 | }, 122 | ) as LazyMakeStateResult; 123 | 124 | // console.log(Object.values(recordPlugins)); 125 | 126 | return { 127 | plugins: lazyResult.plugins, 128 | stateLines: lazyResult.stateLines, 129 | }; 130 | } 131 | } 132 | -------------------------------------------------------------------------------- /config/fish/functions/theme_gruvbox.fish: -------------------------------------------------------------------------------- 1 | #!/usr/bin/fish 2 | function theme_gruvbox --description 'Apply gruvbox theme' 3 | set -l mode 'light' 4 | if test (count $argv) -gt 0 5 | set mode $argv[1] 6 | end 7 | 8 | set -g contrast 'medium' 9 | if test (count $argv) -gt 1 10 | set contrast $argv[2] 11 | end 12 | 13 | switch $contrast 14 | case 'soft' 15 | case 'medium' 16 | case 'hard' 17 | case '*' 18 | set_color $fish_color_error 19 | echo 'Unknown contrast $contrast, choose soft, medium or hard' 20 | set_color $fish_color_normal 21 | return 1 22 | end 23 | 24 | switch $mode 25 | case 'light' 26 | __theme_gruvbox_base 27 | __theme_gruvbox_light 28 | case 'dark' 29 | __theme_gruvbox_base 30 | __theme_gruvbox_dark 31 | case '*' 32 | set_color $fish_color_error 33 | echo 'Unknown mode $mode, choose light or dark' 34 | set_color $fish_color_normal 35 | return 1 36 | end 37 | __theme_gruvbox_palette 38 | return 0 39 | end 40 | 41 | function __theme_gruvbox_base 42 | __printf_color 1 'cc/24/1d' 43 | __printf_color 2 '98/97/1a' 44 | __printf_color 3 'd7/99/21' 45 | __printf_color 4 '45/85/88' 46 | __printf_color 5 'b1/62/86' 47 | __printf_color 6 '68/9d/6a' 48 | end 49 | 50 | function __theme_gruvbox_light 51 | set -l bg 'fb/f1/c7' 52 | switch $contrast 53 | case "soft" 54 | set bg 'f2/e5/bc' 55 | case "hard" 56 | set bg 'f9/f5/d7' 57 | end 58 | command printf "\033]11;rgb:$bg\007" 59 | 60 | set -l fg '3c/38/36' 61 | command printf "\033]10;rgb:$fg\007" 62 | 63 | __printf_color 0 $bg 64 | __printf_color 7 '7c/6f/64' 65 | __printf_color 8 '92/83/74' 66 | __printf_color 9 '9d/00/06' 67 | __printf_color 10 '79/74/0e' 68 | __printf_color 11 'b5/76/14' 69 | __printf_color 12 '07/66/78' 70 | __printf_color 13 '8f/3f/71' 71 | __printf_color 14 '42/7b/58' 72 | __printf_color 15 $fg 73 | end 74 | 75 | function __theme_gruvbox_dark 76 | set -l bg '28/28/28' 77 | switch $contrast 78 | case "soft" 79 | set bg '32/30/2f' 80 | case "hard" 81 | set bg '1d/20/21' 82 | end 83 | command printf "\033]11;rgb:$bg\007" 84 | 85 | set -l fg 'eb/db/b2' 86 | command printf "\033]10;rgb:$fg\007" 87 | 88 | __printf_color 0 $bg 89 | __printf_color 7 'a8/99/84' 90 | __printf_color 8 '92/83/74' 91 | __printf_color 9 'fb/59/34' 92 | __printf_color 10 'b8/bb/26' 93 | __printf_color 11 'fa/bd/2f' 94 | __printf_color 12 '83/a5/98' 95 | __printf_color 13 'd3/86/9b' 96 | __printf_color 14 '8e/c0/7c' 97 | __printf_color 15 $fg 98 | end 99 | 100 | function __theme_gruvbox_palette 101 | __printf_color 236 '32/30/2f' 102 | __printf_color 234 '1d/20/21' 103 | 104 | __printf_color 235 '28/28/28' 105 | __printf_color 237 '3c/38/36' 106 | __printf_color 239 '50/49/45' 107 | __printf_color 241 '66/5c/54' 108 | __printf_color 243 '7c/6f/64' 109 | 110 | __printf_color 244 '92/83/74' 111 | __printf_color 245 '92/83/74' 112 | 113 | __printf_color 228 'f2/e5/bc' 114 | __printf_color 230 'f9/f5/d7' 115 | 116 | __printf_color 229 'fb/f1/c7' 117 | __printf_color 223 'eb/db/b2' 118 | __printf_color 250 'd5/c4/a1' 119 | __printf_color 248 'bd/ae/93' 120 | __printf_color 246 'a8/99/84' 121 | 122 | __printf_color 167 'fb/49/34' 123 | __printf_color 142 'b8/bb/26' 124 | __printf_color 214 'fa/bd/2f' 125 | __printf_color 109 '83/a5/98' 126 | __printf_color 175 'd3/86/9b' 127 | __printf_color 108 '8e/c0/7c' 128 | __printf_color 208 'fe/80/19' 129 | 130 | __printf_color 88 '9d/00/06' 131 | __printf_color 100 '79/74/0e' 132 | __printf_color 136 'b5/76/14' 133 | __printf_color 24 '07/66/78' 134 | __printf_color 96 '8f/3f/71' 135 | __printf_color 66 '42/7b/58' 136 | __printf_color 130 'af/3a/03' 137 | end 138 | 139 | function __printf_color 140 | command printf "\033]4;$argv[1];rgb:$argv[2]\007" 141 | end 142 | -------------------------------------------------------------------------------- /config/vim/dpp.ts: -------------------------------------------------------------------------------- 1 | import { 2 | BaseConfig, 3 | ContextBuilder, 4 | Dpp, 5 | Plugin, 6 | } from "https://deno.land/x/dpp_vim@v1.0.0/types.ts"; 7 | import { Denops, fn } from "https://deno.land/x/dpp_vim@v1.0.0/deps.ts"; 8 | 9 | console.log("dpp.ts is loaded!"); 10 | 11 | export class Config extends BaseConfig { 12 | override async config(args: { 13 | denops: Denops; 14 | contextBuilder: ContextBuilder; 15 | basePath: string; 16 | dpp: Dpp; 17 | }): Promise<{ 18 | plugins: Plugin[]; 19 | stateLines: string[]; 20 | }> { 21 | args.contextBuilder.setGlobal({ 22 | protocols: ["git"], 23 | }); 24 | 25 | type Toml = { 26 | hooks_file?: string; 27 | ftplugins?: Record; 28 | plugins?: Plugin[]; 29 | }; 30 | 31 | type LazyMakeStateResult = { 32 | plugins: Plugin[]; 33 | stateLines: string[]; 34 | }; 35 | 36 | const [context, options] = await args.contextBuilder.get(args.denops); 37 | // const dotfilesDir = "~/.vim/"; 38 | const dotfilesDir = "~/.config/vim/"; 39 | 40 | const tomls: Toml[] = []; 41 | 42 | const localPlugins = await args.dpp.extAction( 43 | args.denops, 44 | context, 45 | options, 46 | "local", 47 | "local", 48 | // { 49 | // directory: "/home/coma/.cache/dpp/_generated/nvim-treesitter/", 50 | // options: { 51 | // merged: false, 52 | // }, 53 | // }, 54 | ) as Plugin[]; 55 | 56 | const toml_files: { name: string; lazy: boolean }[] = [ 57 | { name: "dpp.toml", lazy: false }, 58 | { name: "dpp_lazy.toml", lazy: true }, 59 | { name: "lsp.toml", lazy: true }, 60 | { name: "ddu.toml", lazy: true }, 61 | { name: "ddc.toml", lazy: true }, 62 | { name: "ft.toml", lazy: true }, 63 | // { name: "dap.toml", lazy: true }, 64 | ]; 65 | 66 | const toml_promises = toml_files.map(async (toml) => { 67 | console.log(toml); 68 | tomls.push( 69 | await args.dpp.extAction( 70 | args.denops, 71 | context, 72 | options, 73 | "toml", 74 | "load", 75 | { 76 | path: await fn.expand(args.denops, dotfilesDir + toml.name), 77 | options: { 78 | lazy: toml.lazy, 79 | }, 80 | }, 81 | ) as Toml, 82 | ); 83 | }); 84 | 85 | await Promise.all(toml_promises); 86 | 87 | const recordPlugins: Record = {}; 88 | const ftplugins: Record = {}; 89 | const hooksFiles: string[] = []; 90 | 91 | tomls.forEach((toml) => { 92 | for (const plugin of toml.plugins) { 93 | recordPlugins[plugin.name] = plugin; 94 | } 95 | 96 | if (toml.ftplugins) { 97 | for (const filetype of Object.keys(toml.ftplugins)) { 98 | if (ftplugins[filetype]) { 99 | ftplugins[filetype] += `\n${toml.ftplugins[filetype]}`; 100 | } else { 101 | ftplugins[filetype] = toml.ftplugins[filetype]; 102 | } 103 | } 104 | } 105 | 106 | if (toml.hooks_file) { 107 | hooksFiles.push(toml.hooks_file); 108 | } 109 | }); 110 | 111 | // localPlugins.forEach((plugin: Plugin) => { 112 | // recordPlugins[plugin.name] = plugin; 113 | // }); 114 | 115 | const lazyResult = await args.dpp.extAction( 116 | args.denops, 117 | context, 118 | options, 119 | "lazy", 120 | "makeState", 121 | { 122 | plugins: Object.values(recordPlugins), 123 | }, 124 | ) as LazyMakeStateResult; 125 | 126 | // console.log(Object.values(recordPlugins)); 127 | // console.log({ 128 | // plugins: lazyResult.plugins, 129 | // stateLines: lazyResult.stateLines, 130 | // }); 131 | 132 | return { 133 | plugins: lazyResult.plugins, 134 | stateLines: lazyResult.stateLines, 135 | }; 136 | } 137 | } 138 | -------------------------------------------------------------------------------- /nvfetcher.toml: -------------------------------------------------------------------------------- 1 | # lspx 2 | [lspx] 3 | src.git = "https://github.com/thefrontside/lspx" 4 | fetch.github = "thefrontside/lspx" 5 | 6 | # Emacs 7 | [ob-ledger] 8 | src.git = "https://github.com/tkf/org-mode" 9 | fetch.url = "https://raw.githubusercontent.com/tkf/org-mode/refs/heads/master/lisp/ob-ledger.el" 10 | 11 | [kdl-ts-mode] 12 | src.git = "https://github.com/dataphract/kdl-ts-mode" 13 | fetch.url = "https://raw.githubusercontent.com/dataphract/kdl-ts-mode/refs/heads/main/kdl-ts-mode.el" 14 | 15 | [slite] 16 | src.git = "https://github.com/tdrhq/slite" 17 | fetch.url = "https://raw.githubusercontent.com/tdrhq/slite/refs/heads/main/slite.el" 18 | 19 | [hydra-posframe] 20 | src.git = "https://github.com/Ladicle/hydra-posframe" 21 | fetch.github = "Ladicle/hydra-posframe" 22 | 23 | [typst-ts-mode] 24 | src.git = "https://git.sr.ht/~meow_king/typst-ts-mode" 25 | fetch.git = "https://git.sr.ht/~meow_king/typst-ts-mode" 26 | 27 | [typst-mode] 28 | src.git = "https://github.com/Ziqi-Yang/typst-mode.el" 29 | fetch.github = "Ziqi-Yang/typst-mode.el" 30 | 31 | [typst-preview] 32 | src.git = "https://github.com/havarddj/typst-preview.el" 33 | fetch.github = "havarddj/typst-preview.el" 34 | 35 | [org-modern-indent] 36 | src.git = "https://github.com/jdtsmith/org-modern-indent" 37 | fetch.github = "jdtsmith/org-modern-indent" 38 | 39 | [skk-capf] 40 | src.git = "https://github.com/myuhe/skk-capf" 41 | fetch.github = "myuhe/skk-capf" 42 | 43 | [python-mode] 44 | src.git = "https://github.com/emacsmirror/python-mode" 45 | fetch.github = "emacsmirror/python-mode" 46 | 47 | [gleam-mode] 48 | src.git = "https://github.com/gleam-lang/gleam-mode" 49 | fetch.github = "gleam-lang/gleam-mode" 50 | 51 | [org-bullets] 52 | src.git = "https://github.com/sabof/org-bullets" 53 | fetch.github = "sabof/org-bullets" 54 | 55 | [eglot-booster] 56 | src.git = "https://github.com/jdtsmith/eglot-booster" 57 | fetch.github = "jdtsmith/eglot-booster" 58 | 59 | [copilot] 60 | src.git = "https://github.com/copilot-emacs/copilot.el" 61 | fetch.github = "copilot-emacs/copilot.el" 62 | 63 | [folding-mode] 64 | src.git = "https://github.com/magnars/fold-this.el" 65 | fetch.github = "magnars/fold-this.el" 66 | 67 | [scroll-page-without-moving-point] 68 | src.git = "https://github.com/tanrax/scroll-page-without-moving-point.el" 69 | fetch.github = "tanrax/scroll-page-without-moving-point.el" 70 | 71 | 72 | [emacs_fancy_logos] 73 | src.git = "https://github.com/egstatsml/emacs_fancy_logos" 74 | fetch.github = "egstatsml/emacs_fancy_logos" 75 | 76 | [aider] 77 | src.git = "https://github.com/tninja/aider.el" 78 | fetch.github = "tninja/aider.el" 79 | 80 | [digs] 81 | src.git = "https://github.com/zonuexe/digs.el" 82 | fetch.github = "zonuexe/digs.el" 83 | 84 | [mcp] 85 | src.git = "https://github.com/lizqwerscott/mcp.el" 86 | fetch.github = "lizqwerscott/mcp.el" 87 | 88 | [rainbow-delimiters] 89 | src.git = "https://github.com/Fanael/rainbow-delimiters" 90 | fetch.github = "Fanael/rainbow-delimiters" 91 | 92 | [verb] 93 | src.git = "https://github.com/federicotdn/verb" 94 | fetch.github = "federicotdn/verb" 95 | 96 | [quickrun] 97 | src.git = "https://github.com/emacsorphanage/quickrun" 98 | fetch.github = "emacsorphanage/quickrun" 99 | 100 | [smudge] 101 | src.git = "https://github.com/danielfm/smudge" 102 | fetch.github = "danielfm/smudge" 103 | 104 | [smartchr] 105 | src.git = "https://github.com/imakado/emacs-smartchr" 106 | fetch.github = "imakado/emacs-smartchr" 107 | 108 | [claude-code] 109 | src.git = "https://github.com/stevemolitor/claude-code.el" 110 | fetch.github = "stevemolitor/claude-code.el" 111 | 112 | [claude-shell] 113 | src.git = "https://github.com/arminfriedl/claude-shell" 114 | fetch.github = "arminfriedl/claude-shell" 115 | 116 | [claudemacs] 117 | src.git = "https://github.com/cpoile/claudemacs" 118 | fetch.github = "cpoile/claudemacs" 119 | 120 | [zenn-cli] 121 | src.git = "https://github.com/wurly200a/zenn-cli.el" 122 | fetch.github = "wurly200a/zenn-cli.el" 123 | 124 | [gerbil] 125 | src.git = "https://github.com/mighty-gerbils/gerbil" 126 | fetch.url = "https://raw.githubusercontent.com/mighty-gerbils/gerbil/refs/heads/master/etc/gerbil-mode.el" 127 | 128 | [eca] 129 | src.git = "https://github.com/editor-code-assistant/eca-emacs" 130 | fetch.git = "https://github.com/editor-code-assistant/eca-emacs" 131 | -------------------------------------------------------------------------------- /config/fish/functions/fish_prompt.fish: -------------------------------------------------------------------------------- 1 | function fish_prompt 2 | # This prompt shows: 3 | # - green lines if the last return command is OK, red otherwise 4 | # - your user name, in red if root or yellow otherwise 5 | # - your hostname, in cyan if ssh or blue otherwise 6 | # - the current path (with prompt_pwd) 7 | # - date +%X 8 | # - the current virtual environment, if any 9 | # - the current git status, if any, with fish_git_prompt 10 | # - the current battery state, if any, and if your power cable is unplugged, and if you have "acpi" 11 | # - current background jobs, if any 12 | 13 | # It goes from: 14 | # ┬─[nim@Hattori:~]─[11:39:00] 15 | # ╰─>$ echo here 16 | 17 | # To: 18 | # ┬─[nim@Hattori:~/w/dashboard]─[11:37:14]─[V:django20]─[G:master↑1|●1✚1…1]─[B:85%, 05:41:42 remaining] 19 | # │ 2 15054 0% arrêtée sleep 100000 20 | # │ 1 15048 0% arrêtée sleep 100000 21 | # ╰─>$ echo there 22 | # 23 | # 24 | 25 | set -l blue '62F2F7' 26 | set -l retc red 27 | test $status = 0; and set retc $blue 28 | 29 | set -q __fish_git_prompt_showupstream 30 | or set -g __fish_git_prompt_showupstream auto 31 | 32 | function _nim_prompt_wrapper 33 | set retc $argv[1] 34 | set -l field_name $argv[2] 35 | set -l field_value $argv[3] 36 | 37 | set_color normal 38 | set_color $retc 39 | echo -n ' | ' 40 | set_color -o green 41 | set_color normal 42 | test -n $field_name 43 | and echo -n $field_name: 44 | set_color $retc 45 | echo -n $field_value 46 | set_color -o green 47 | end 48 | 49 | set_color $retc 50 | echo -n '╭' 51 | set_color -o green 52 | 53 | if functions -q fish_is_root_user; and fish_is_root_user 54 | set_color -o red 55 | else 56 | set_color -o $blue 57 | end 58 | 59 | echo -n '─ ' $USER'🐺' 60 | set_color -o white 61 | echo -n @ 62 | 63 | if [ -z "$SSH_CLIENT" ] 64 | set_color -o $blue 65 | else 66 | set_color -o cyan 67 | end 68 | 69 | set_color -o $blue 70 | echo -n (prompt_hostname) 71 | set_color -o $blue 72 | echo -n '📁' 73 | echo -n (prompt_pwd) 74 | set_color -o green 75 | 76 | # Date 77 | # _nim_prompt_wrapper $retc '' (date +%X) 78 | _nim_prompt_wrapper $retc '' (date "+%Y/%m/%d %H:%M:%S") 79 | set_color $blue 80 | echo -n ' @Abydos Kivotos' 81 | 82 | # Vi-mode 83 | # The default mode prompt would be prefixed, which ruins our alignment. 84 | function fish_mode_prompt 85 | end 86 | 87 | if test "$fish_key_bindings" = fish_vi_key_bindings 88 | or test "$fish_key_bindings" = fish_hybrid_key_bindings 89 | set -l mode 90 | switch $fish_bind_mode 91 | case default 92 | set mode (set_color --bold red)N 93 | case insert 94 | set mode (set_color --bold green)I 95 | case replace_one 96 | set mode (set_color --bold green)R 97 | echo '[R]' 98 | case replace 99 | set mode (set_color --bold cyan)R 100 | case visual 101 | set mode (set_color --bold magenta)V 102 | end 103 | set mode $mode(set_color normal) 104 | _nim_prompt_wrapper $retc '' $mode 105 | end 106 | 107 | 108 | # Virtual Environment 109 | set -q VIRTUAL_ENV_DISABLE_PROMPT 110 | or set -g VIRTUAL_ENV_DISABLE_PROMPT true 111 | set -q VIRTUAL_ENV 112 | and _nim_prompt_wrapper $retc V (basename "$VIRTUAL_ENV") 113 | 114 | # git 115 | set -l prompt_git (fish_git_prompt '%s') 116 | test -n "$prompt_git" 117 | and _nim_prompt_wrapper $retc  $prompt_git 118 | 119 | # Battery status 120 | type -q acpi 121 | and test (acpi -a 2> /dev/null | string match -r off) 122 | and _nim_prompt_wrapper $retc B (acpi -b | cut -d' ' -f 4-) 123 | 124 | set_color $retc 125 | echo -n ' ─╮' 126 | 127 | # New line 128 | echo 129 | 130 | # Background jobs 131 | set_color normal 132 | 133 | for job in (jobs) 134 | set_color $retc 135 | echo -n '│ ' 136 | set_color brown 137 | echo $job 138 | end 139 | 140 | set_color normal 141 | set_color $retc 142 | echo -n '╰─>' 143 | set_color -o red 144 | set_color normal 145 | end 146 | 147 | # format = """ 148 | # [╭───────── ─────────╮](bold blue) 149 | # [╰──$symbol](bold blue) """ 150 | -------------------------------------------------------------------------------- /config/nvim/lua/configs/ddc.lua: -------------------------------------------------------------------------------- 1 | local ddc_custom_patch_global = vim.fn["ddc#custom#patch_global"] 2 | 3 | local pum_map_select_relative = vim.fn["pum#map#select_relative"] 4 | local pum_map_confirm = vim.fn["pum#map#confirm"] 5 | local pum_map_cancel = vim.fn["pum#map#cancel"] 6 | local pum_visible = vim.fn["pum#visible"] 7 | local pum_entered = vim.fn["pum#entered"] 8 | 9 | ddc_custom_patch_global("ui", "pum") 10 | 11 | ddc_custom_patch_global("sources", { 12 | "lsp", 13 | "around", 14 | "vsnip", 15 | "file", 16 | "skkeleton", 17 | "emoji", 18 | }) 19 | 20 | ddc_custom_patch_global("sourceOptions", { 21 | ["lsp"] = { 22 | dup = "keep", 23 | mark = "LSP", 24 | forceCompletionPattern = "\\.\\w*|:\\w*|->\\w*", 25 | }, 26 | }) 27 | 28 | ddc_custom_patch_global("sourceParams", { 29 | lsp = { 30 | snippetEngine = vim.fn["denops#callback#register"]({ 31 | function(body) 32 | vim.fn["vsnip#anonymous"](body) 33 | end, 34 | }), 35 | enableResolveItem = true, 36 | enableAdditionalTextEdit = true, 37 | sorters = { "sorter_lsp-kind" }, 38 | kindLabels = { Class = "c" }, 39 | }, 40 | }) 41 | 42 | ddc_custom_patch_global("sourceOptions", { 43 | skkeleton = { 44 | mark = "SKK", 45 | matchers = { "skkeleton" }, 46 | sorters = {}, 47 | isVolatile = true, 48 | }, 49 | }) 50 | 51 | ddc_custom_patch_global("sourceOptions", { 52 | emoji = { 53 | mark = "emoji", 54 | matchers = { "emoji" }, 55 | sorters = {}, 56 | }, 57 | }) 58 | 59 | ddc_custom_patch_global("sourceOptions", { 60 | _ = { 61 | -- matchers = { "matcher_head" }, 62 | -- sorters = { "sorter_rank" }, 63 | 64 | matchers = { "matcher_fuzzy" }, 65 | sorters = { "sorter_fuzzy" }, 66 | converters = { "converter_fuzzy" }, 67 | -- keywordPattern = "[a-zA-Z_:]\\w*", 68 | keywordPattern = "\\k+", 69 | }, 70 | around = { mark = "around" }, 71 | path = { 72 | mark = "P", 73 | }, 74 | file = { 75 | mark = "F", 76 | isVolatile = true, 77 | forceCompletionPattern = [[\S/\S*]], 78 | }, 79 | vsnip = { 80 | mark = "vsnip", 81 | }, 82 | }) 83 | 84 | vim.fn["ddc#custom#patch_filetype"]({ "ps1", "dosbatch", "autohotkey", "registry" }, { 85 | sourceOptions = { 86 | file = { 87 | forceCompletionPattern = [[\S\\\S*]], 88 | }, 89 | }, 90 | sourceParams = { 91 | file = { 92 | mode = "win32", 93 | }, 94 | }, 95 | }) 96 | 97 | ddc_custom_patch_global("sourceParams", { 98 | path = { 99 | cmd = { "fd", "--max-depth", "5" }, 100 | }, 101 | }) 102 | 103 | vim.fn["ddc#enable_terminal_completion"]() 104 | vim.fn["ddc#enable"]() 105 | 106 | vim.cmd([[ 107 | inoremap 108 | \ pumvisible() ? '' : 109 | \ (col('.') <= 1 getline('.')[col('.') - 2] =~# '\s') ? 110 | \ '' : ddc#map#manual_complete() 111 | ]]) 112 | 113 | vim.api.nvim_create_autocmd("InsertEnter", { 114 | callback = function(event) 115 | vim.keymap.set({ "i", "s" }, "", function() 116 | return vim.fn["vsnip#available"](1) == 1 and "(vsnip-expand-or-jump)" or "" 117 | end, { expr = true, noremap = false }) 118 | 119 | vim.keymap.set({ "i", "s" }, "", function() 120 | return vim.fn["vsnip#jumpable"](1) == 1 and "(vsnip-jump-next)" or "" 121 | end, { expr = true, noremap = false }) 122 | 123 | vim.keymap.set({ "i", "s" }, "", function() 124 | return vim.fn["vsnip#jumpable"](-1) == 1 and "(vsnip-jump-prev)" or "" 125 | end, { expr = true, noremap = false }) 126 | 127 | vim.keymap.set({ "n", "s" }, "", [[(vsnip-select-text)]], { expr = true, noremap = false }) 128 | vim.keymap.set({ "n", "s" }, "", [[(vsnip-cut-text)]], { expr = true, noremap = false }) 129 | 130 | vim.keymap.set("i", "", function() 131 | pum_map_select_relative(-1) 132 | end, {}) 133 | 134 | vim.keymap.set("i", "", function() 135 | pum_map_select_relative(1) 136 | end, {}) 137 | 138 | vim.keymap.set("i", "", function() 139 | return "call pum#map#confirm()" 140 | end, { expr = true, silent = true }) 141 | 142 | vim.cmd([[imap () ? pum#map#confirm() : "\"]]) 143 | 144 | vim.keymap.set("i", "", function() 145 | if vim.fn["pum#visible"]() then 146 | -- return "call pum#map#confirm()" 147 | return "" 148 | else 149 | return "" 150 | end 151 | end, { expr = true, silent = true }) 152 | end, 153 | }) 154 | -------------------------------------------------------------------------------- /config/waybar/config.bku: -------------------------------------------------------------------------------- 1 | { 2 | "reload_style_on_change": true, 3 | "layer": "top", 4 | "modules-left": [ 5 | "custom/launcher", 6 | "cpu", 7 | "memory", 8 | "tray", 9 | "hyprland/workspaces" 10 | ], 11 | "modules-center": ["custom/media"], 12 | "modules-right": [ 13 | "custom/notification", 14 | "backlight", 15 | "pulseaudio", 16 | "clock", 17 | "battery", 18 | "custom/power" 19 | ], 20 | 21 | "pulseaudio": { 22 | "tooltip": false, 23 | "scroll-step": 5, 24 | "format": "{icon} {volume}%", 25 | "format-muted": " {volume}%", 26 | "on-click": "pactl set-sink-mute @DEFAULT_SINK@ toggle", 27 | "format-icons": { 28 | "default": ["", "", ""] 29 | } 30 | }, 31 | "hyprland/workspaces": { 32 | "format": "{icon}", 33 | "on-scroll-up": "hyprctl dispatch workspace e+1", 34 | "on-scroll-down": "hyprctl dispatch workspace e-1" 35 | }, 36 | "river/tags": { 37 | "num-tags": 6 38 | }, 39 | "network": { 40 | "tooltip": false, 41 | "format-wifi": " {essid}", 42 | "format-ethernet": "" 43 | }, 44 | "backlight": { 45 | "tooltip": false, 46 | "format": " {}%", 47 | "interval": 1, 48 | "on-scroll-up": "light -A 5", 49 | "on-scroll-down": "light -U 5" 50 | }, 51 | "battery": { 52 | "states": { 53 | "good": 95, 54 | "warning": 30, 55 | "critical": 20 56 | }, 57 | "format": "{icon} {capacity}%", 58 | "format-charging": " {capacity}%", 59 | "format-plugged": " {capacity}%", 60 | "format-alt": "{time} {icon}", 61 | "format-icons": ["", "", "", "", ""] 62 | }, 63 | "tray": { 64 | "icon-size": 18, 65 | "spacing": 10 66 | }, 67 | "clock": { 68 | "format": "{:%H:%M}", 69 | "format-alt": "{:%Y/%m/%d %a (%R)}", 70 | "tooltip-format": "{calendar}", 71 | "calendar": { 72 | "mode": "year", 73 | "mode-mon-col": 3, 74 | "weeks-pos": "right", 75 | "on-scroll": 1, 76 | "format": { 77 | "months": "{}", 78 | "days": "{}", 79 | "weeks": "W{}", 80 | "weekdays": "{}", 81 | "today": "{}" 82 | } 83 | }, 84 | "actions": { 85 | "on-click-right": "mode", 86 | "on-click-forward": "tz_up", 87 | "on-click-backward": "tz_down", 88 | "on-scroll-up": "shift_up", 89 | "on-scroll-down": "shift_down" 90 | } 91 | }, 92 | "cpu": { 93 | "interval": 15, 94 | "format": " {}%", 95 | "max-length": 10 96 | }, 97 | "memory": { 98 | "interval": 30, 99 | "format": " {}%", 100 | "max-length": 10 101 | }, 102 | "custom/media": { 103 | "interval": 5, 104 | "format": "{icon} {}", 105 | "max-length": 15, 106 | "format-icons": { 107 | "default": " ", 108 | "spotify": " " 109 | }, 110 | "escape": true, 111 | "exec": "nowplaying", 112 | "on-click": "playerctl play-pause" 113 | }, 114 | "cava": { 115 | // "cava_config": "$HOME/.config/cava/cava.conf", 116 | "autosens": 1, 117 | "sensitivity": 1, 118 | "bars": 14, 119 | "lower_cutoff_freq": 50, 120 | "higher_cutoff_freq": 10000, 121 | "method": "pulse", 122 | "source": "auto", 123 | "stereo": true, 124 | "reverse": false, 125 | "bar_delimiter": 0, 126 | "monstercat": false, 127 | "waves": false, 128 | "noise_reduction": 0.77, 129 | "input_delay": 2, 130 | "format-icons": ["▁", "▂", "▃", "▄", "▅", "▆", "▇", "█"], 131 | "actions": { 132 | "on-click-right": "mode" 133 | } 134 | }, 135 | "custom/launcher": { 136 | "format": "󱘊 ", 137 | "on-click": "rofi -show drun", 138 | "on-click-right": "killall rofi" 139 | }, 140 | "custom/power": { 141 | "format": " ", 142 | "on-click": "rofi -show p -modi p:rofi-power-menu" 143 | }, 144 | "custom/updates": { 145 | "format": "{} Update(s)", 146 | "exec": "checkupdates | wc -l", 147 | "exec-if": "[[ $(checkupdates | wc -l) != 0 ]]", 148 | "interval": 15, 149 | "on-click": "wezterm -- yay -Syu && notify-send 'The system has been updated' " 150 | }, 151 | "bluetooth": { 152 | "format": "{}%", 153 | "exec": "bluetoothctl info | grep 'Battery Percentage' | cut -f 2 -d '(' | sed -z -e 's/)//' -e 's/\n//'", 154 | "interval": 10 155 | }, 156 | "custom/notification": { 157 | "format": " ", 158 | "on-click": "swaync-client -t -sw" 159 | } 160 | } 161 | 162 | -------------------------------------------------------------------------------- /tmux.conf: -------------------------------------------------------------------------------- 1 | # tmux起動時のシェルをzshにするset-option -g default-shell /usr/bin/fish 2 | 3 | # List of plugins 4 | # set -g @plugin 'tmux-plugins/tpm' 5 | # set -g @plugin 'tmux-plugins/tmux-sensible' 6 | 7 | # set -g @plugin 'tmux-plugins/tmux-resurrect' 8 | # set -g @plugin 'tmux-plugins/tmux-continuum' 9 | 10 | # Other examples: 11 | # set -g @plugin 'github_username/plugin_name' 12 | # set -g @plugin 'github_username/plugin_name#branch' 13 | # set -g @plugin 'git@github.com:user/plugin' 14 | # set -g @plugin 'git@bitbucket.com:user/plugin' 15 | 16 | # Initialize TMUX plugin manager (keep this line at the very bottom of tmux.conf) 17 | # run '~/.tmux/plugins/tpm/tpm' 18 | 19 | 20 | # set -g @continuum-boot 'on' 21 | # set -g @continuum-restore 'on' 22 | # set -g @continuum-save-interval '60' 23 | 24 | 25 | set -g terminal-overrides 'xterm' 26 | 27 | set-option -g default-terminal "tmux-256color" 28 | set-option -ga terminal-overrides "tmux-256color" 29 | 30 | # prefixキーをC-qに変更 31 | set -g prefix C-q 32 | 33 | # C-bのキーバインドを解除 34 | unbind C-b 35 | 36 | # ステータスバーをトップに配置する 37 | set-option -g status-position top 38 | 39 | # 左右のステータスバーの長さを決定する 40 | set-option -g status-left-length 90 41 | 42 | set-option -g status-right-length 90 43 | 44 | # #P => ペイン番号 45 | # 最左に表示 46 | set-option -g status-left '#H:[#P]' 47 | 48 | # Wi-Fi、バッテリー残量、現在時刻 49 | # 最右に表示 50 | set-option -g status-right '#(wifi) #(battery --tmux) [%Y-%m-%d(%a) %H:%M:%S]' 51 | 52 | # ステータスバーを1秒毎に描画し直す 53 | set-option -g status-interval 1 54 | 55 | # センタライズ(主にウィンドウ番号など) 56 | # set-option -g status-justify centre 57 | 58 | # # ステータスバーの色を設定する 59 | set-option -g status-bg "#a6da95" 60 | 61 | # # status line の文字色を指定する。 62 | # set-option -g status-fg "colour255" 63 | 64 | 65 | bind h previous-window 66 | bind l next-window 67 | 68 | # vimのキーバインドでペインを移動する 69 | bind H select-pane -L 70 | bind J select-pane -D 71 | bind K select-pane -U 72 | bind L select-pane -R 73 | 74 | 75 | # vimのキーバインドでペインをリサイズする 76 | bind -r M-H resize-pane -L 5 77 | bind -r M-J resize-pane -D 5 78 | bind -r M-K resize-pane -U 5 79 | bind -r M-L resize-pane -R 5 80 | 81 | # | でペインを縦分割する 82 | bind | split-window -h 83 | 84 | # - でペインを縦分割する 85 | bind - split-window -v 86 | 87 | # 番号基準値を変更 88 | set-option -g base-index 1 89 | 90 | # # マウス操作を有効にする 91 | # set-option -g mouse on 92 | # bind -n WheelUpPane if-shell -F -t = "#{mouse_any_flag}" "send-keys -M" "if -Ft= '#{pane_in_mode}' 'send-keys -M' 'copy-mode -e'" 93 | 94 | # コピーモードを設定する 95 | # コピーモードでvimキーバインドを使う 96 | setw -g mode-keys vi 97 | 98 | # 'v' で選択を始める 99 | bind -T copy-mode-vi v send -X begin-selection 100 | 101 | # 'V' で行選択 102 | bind -T copy-mode-vi V send -X select-line 103 | 104 | # 'C-v' で矩形択 105 | bind -T copy-mode-vi C-v send -X rectangle-toggle 106 | 107 | # 'y' でヤンク 108 | bind -T copy-mode-vi y send -X copy-selection 109 | 110 | # 'Y' で行ヤンク 111 | bind -T copy-mode-vi Y send -X copy-line 112 | 113 | # 'C-p'でペースト 114 | bind-key C-p paste-buffer 115 | 116 | # # mouse 117 | set -g mouse on 118 | 119 | # vi copy (clipboard) 120 | set-window-option -g mode-keys vi 121 | 122 | bind-key -T copy-mode-vi v send-keys -X begin-selection 123 | bind-key -T copy-mode-vi C-v send-keys -X rectangle-toggle 124 | bind-key -T copy-mode-vi y send-keys -X copy-pipe-and-cancel "xsel -bi" 125 | bind-key -T copy-mode-vi Enter send-keys -X copy-pipe-and-cancel "xsel -bi" 126 | 127 | # Explicit `C-c` key fires copying the selection 128 | unbind -T copy-mode MouseDragEnd1Pane 129 | unbind -T copy-mode-vi MouseDragEnd1Pane 130 | bind-key -T copy-mode C-c send-keys -X copy-pipe-and-cancel "xsel -bi" 131 | bind-key -T copy-mode-vi C-c send-keys -X copy-pipe-and-cancel "xsel -bi" 132 | 133 | ## esc の効きを良くする 134 | set-option -g escape-time 0 135 | guibg=NONE 136 | 137 | # --- wsl (win32yank) --- 138 | # https://github.com/equalsraf/win32yank 139 | if "which win32yank.exe" "bind-key -T copy-mode-vi y send-keys -X copy-p ipe-and-cancel 'win32yank.exe -i'" 140 | if "which win32yank.exe" "bind-key -T copy-mode-vi Enter send-keys -X copy-p ipe-and-cancel 'win32yank.exe -i'" 141 | # pでペースト 142 | # if "which win32yank.exe" "bind-key p run 'tmux set-buffer -- \"$(win32yank.e xe -o)\"; tmux paste-buffer'" 143 | 144 | 145 | # NOTE: you can use vars with $ and ${} as long as the str is double quoted: "" 146 | # WARNING: hex colors can't contain capital letters 147 | 148 | # --> Catppuccin (Macchiato) 149 | thm_bg="#24273a" 150 | thm_fg="#cad3f5" 151 | thm_cyan="#91d7e3" 152 | thm_black="#1e2030" 153 | thm_gray="#363a4f" 154 | thm_magenta="#c6a0f6" 155 | thm_pink="#f5bde6" 156 | thm_red="#ed8796" 157 | thm_green="#a6da95" 158 | thm_yellow="#eed49f" 159 | thm_blue="#8aadf4" 160 | thm_orange="#f5a97f" 161 | thm_black4="#5b6078" 162 | 163 | # tmuxを256色表示できるようにする 164 | # set -g default-terminal "screen-256color" 165 | # set-option -sa terminal-overrides ',alacritty:RGB' 166 | 167 | # set -g default-shell /usr/bin/fish 168 | -------------------------------------------------------------------------------- /config/waybar/config: -------------------------------------------------------------------------------- 1 | { 2 | "reload_style_on_change": true, 3 | "layer": "top", 4 | "modules-left": [ 5 | "custom/launcher", 6 | "cpu", 7 | "memory", 8 | "tray", 9 | "sway/workspaces" 10 | ], 11 | "modules-center": ["custom/media"], 12 | "modules-right": [ 13 | "custom/notification", 14 | "backlight", 15 | "pulseaudio", 16 | "clock", 17 | "battery", 18 | "custom/power" 19 | ], 20 | 21 | "pulseaudio": { 22 | "tooltip": false, 23 | "scroll-step": 5, 24 | "format": "{icon} {volume}%", 25 | "format-muted": " {volume}%", 26 | "on-click": "pactl set-sink-mute @DEFAULT_SINK@ toggle", 27 | "format-icons": { 28 | "default": ["", "", ""] 29 | } 30 | }, 31 | "sway/workspaces": { 32 | "format": "{icon}", 33 | "on-scroll-up": "hyprctl dispatch workspace e+1", 34 | "on-scroll-down": "hyprctl dispatch workspace e-1" 35 | }, 36 | "hyprland/workspaces": { 37 | "format": "{icon}", 38 | "on-scroll-up": "hyprctl dispatch workspace e+1", 39 | "on-scroll-down": "hyprctl dispatch workspace e-1" 40 | }, 41 | "river/tags": { 42 | "num-tags": 6 43 | }, 44 | "network": { 45 | "tooltip": false, 46 | "format-wifi": " {essid}", 47 | "format-ethernet": "" 48 | }, 49 | "backlight": { 50 | "tooltip": false, 51 | "format": " {}%", 52 | "interval": 1, 53 | "on-scroll-up": "light -A 5", 54 | "on-scroll-down": "light -U 5" 55 | // "on-scroll-up": "brightnessctl -- -c backlight set 5%-", 56 | // "on-scroll-down": "brightnessctl -- -c backlight set +5%" 57 | }, 58 | "battery": { 59 | "states": { 60 | "good": 95, 61 | "warning": 30, 62 | "critical": 20 63 | }, 64 | "format": "{icon} {capacity}%", 65 | "format-charging": " {capacity}%", 66 | "format-plugged": " {capacity}%", 67 | "format-alt": "{time} {icon}", 68 | "format-icons": ["", "", "", "", ""] 69 | }, 70 | "tray": { 71 | "icon-size": 18, 72 | "spacing": 10 73 | }, 74 | "clock": { 75 | "format": "{:%H:%M}", 76 | "format-alt": "{:%Y/%m/%d %a (%R)}", 77 | "tooltip-format": "{:%Y %B}\n{calendar}", 78 | "calendar": { 79 | "mode": "month", 80 | "mode-mon-col": 3, 81 | "weeks-pos": "right", 82 | "on-scroll": 1, 83 | "format": { 84 | "months": "{}", 85 | "days": "{}", 86 | "weekdays": "{}", 87 | "today": "{}" 88 | } 89 | }, 90 | "actions": { 91 | "on-click-right": "mode", 92 | "on-click-forward": "tz_up", 93 | "on-click-backward": "tz_down", 94 | "on-scroll-up": "shift_up", 95 | "on-scroll-down": "shift_down" 96 | } 97 | }, 98 | "cpu": { 99 | "interval": 15, 100 | "format": " {}%", 101 | "max-length": 10 102 | }, 103 | "memory": { 104 | "interval": 30, 105 | "format": " {}%", 106 | "max-length": 10 107 | }, 108 | "custom/media": { 109 | "interval": 5, 110 | "format": "{icon} {}", 111 | "max-length": 30, 112 | "tooltip": false, 113 | "format-icons": { 114 | "default": " ", 115 | "spotify": " " 116 | }, 117 | "escape": true, 118 | "exec": "playerctl metadata --format '{{ title }}'", 119 | "on-click": "playerctl play-pause" 120 | }, 121 | "cava": { 122 | "autosens": 1, 123 | "sensitivity": 1, 124 | "bars": 14, 125 | "lower_cutoff_freq": 50, 126 | "higher_cutoff_freq": 10000, 127 | "method": "pulse", 128 | "source": "auto", 129 | "stereo": true, 130 | "reverse": false, 131 | "bar_delimiter": 0, 132 | "monstercat": false, 133 | "waves": false, 134 | "noise_reduction": 0.77, 135 | "input_delay": 2, 136 | "format-icons": ["▁", "▂", "▃", "▄", "▅", "▆", "▇", "█"], 137 | "actions": { 138 | "on-click-right": "mode" 139 | } 140 | }, 141 | "custom/launcher": { 142 | "format": "", 143 | "tooltip": false, 144 | "on-click": "rofi -show drun", 145 | "on-click-right": "killall rofi" 146 | }, 147 | "custom/power": { 148 | "format": " ", 149 | "on-click": "rofi -show p -modi p:rofi-power-menu" 150 | }, 151 | "custom/updates": { 152 | "format": "{} Update(s)", 153 | "exec": "checkupdates | wc -l", 154 | "exec-if": "[[ $(checkupdates | wc -l) != 0 ]]", 155 | "interval": 15, 156 | "on-click": "wezterm -- yay -Syu && notify-send 'The system has been updated' " 157 | }, 158 | "bluetooth": { 159 | "format": "{}%", 160 | "exec": "bluetoothctl info | grep 'Battery Percentage' | cut -f 2 -d '(' | sed -z -e 's/)//' -e 's/\n//'", 161 | "interval": 10 162 | }, 163 | "custom/notification": { 164 | "tooltip": false, 165 | "format": " ", 166 | "on-click": "swaync-client -t -sw" 167 | } 168 | } 169 | -------------------------------------------------------------------------------- /config/nvim/lua/configs/lsp.lua: -------------------------------------------------------------------------------- 1 | local lspconfig = require("lspconfig") 2 | local server_config = require("lspconfig.configs") 3 | -- local mason = require("mason") 4 | -- local mason_lspconfig = require("mason-lspconfig") 5 | require("lazydev").setup() 6 | require("ddc_source_lsp_setup").setup() 7 | local capabilities = require("ddc_source_lsp").make_client_capabilities() 8 | local lspconfig = require("lspconfig") 9 | 10 | local util = lspconfig.util 11 | 12 | -- server_config.moonbit = require "configs/moonbit_lsp" 13 | server_config.moonbit = require("configs/moonbit_lsp") 14 | 15 | lspconfig.moonbit.setup({}) 16 | lspconfig.metals.setup({}) 17 | 18 | -- when find `gleam.toml` in project root, start gleam lsp server. 19 | if vim.fs.dirname(vim.fs.find({ "gleam.toml" }, { upward = true })[1]) then 20 | lspconfig.gleam.setup({ 21 | capabilities = capabilities, 22 | }) 23 | end 24 | 25 | if vim.fn.executable("racket") then 26 | if vim.fn.expand("%:e") == "ss" then 27 | return 28 | else 29 | require("lspconfig").racket_langserver.setup({}) 30 | end 31 | end 32 | 33 | -- Language server settings 34 | local servers = { 35 | "clangd", 36 | "rust_analyzer", 37 | "pyright", 38 | -- "ts_ls", 39 | "gopls", 40 | "lua_ls", 41 | "nil_ls", 42 | "ruby_lsp", 43 | "gopls", 44 | "denols", 45 | "moonbit", 46 | "vimls", 47 | "efm", 48 | "kotlin_language_server", 49 | "nimls", 50 | "nim_langserver", 51 | "tailwindcss", 52 | "tinymist", 53 | "purescriptls", 54 | "marksman", 55 | "r_language_server", 56 | -- "v_analyzer", 57 | "vls", 58 | "ruff", 59 | "jdtls", 60 | "dockerls", 61 | } 62 | 63 | -- Auto start language servers. 64 | for _, name in ipairs(servers) do 65 | -- for _, name in ipairs(lspconfig.util.available_servers()) do 66 | -- if name == "denols" or name == "tsserver" then 67 | -- local is_node_dir = function() 68 | -- return lspconfig.util.root_pattern("package.json")(vim.fn.getcwd()) 69 | -- end 70 | -- 71 | -- -- ts_ls 72 | -- local ts_opts = {} 73 | -- ts_opts.on_attach = function(client) 74 | -- if not is_node_dir() then 75 | -- client.stop(true) 76 | -- end 77 | -- end 78 | -- lspconfig.ts_ls.setup(ts_opts) 79 | -- 80 | -- -- denols 81 | -- local deno_opts = {} 82 | -- deno_opts.on_attach = function(client) 83 | -- if is_node_dir() then 84 | -- client.stop(true) 85 | -- end 86 | -- end 87 | -- lspconfig.denols.setup(deno_opts) 88 | 89 | -- elseif name == "tailwindcss" then 90 | 91 | if name == "tailwindcss" then 92 | lspconfig.tailwindcss.setup({}) 93 | -- lspconfig[name].setup({}) 94 | lspconfig.tailwindcss.setup({ 95 | init_options = { 96 | rootMarkers = { 97 | ".git/", 98 | }, 99 | }, 100 | }) 101 | elseif name == "efm" then 102 | print("efm") 103 | 104 | lspconfig.efm.setup({ 105 | init_options = { documentFormatting = true }, 106 | single_file_support = true, 107 | filetypes = { "markdown" }, 108 | on_attach = function() 109 | print("efm attached.") 110 | end, 111 | settings = { 112 | rootMarkers = { ".git/" }, 113 | languages = { 114 | markdown = { 115 | { 116 | lintIgnoreExitCode = true, 117 | -- lintCommand = [[textlint -f json ${INPUT} | jq -r '.[] | .filePath as $filePath | .messages[] | "1;\($filePath):\(.line):\(.column):\n2;\(.message | split("\n")[0])\n3;[\(.ruleId)]"']], 118 | lintCommand = "textlint -f unix --stdin --stdin-filename ${INPUT}", 119 | lintStdin = true, 120 | lintFormats = { "%f:%l:%c: %m [%trror/%r]", "%E1;%E%f:%l:%c:", "%C2;%m", "%C3;%m%Z" }, 121 | -- lintFormats = '%f:%l:%c: %m [%trror/%r]', 122 | }, 123 | }, 124 | }, 125 | }, 126 | }) 127 | else 128 | lspconfig[name].setup({}) 129 | end 130 | end 131 | 132 | -- lsp keymaps 133 | vim.keymap.set("n", "K", "lua vim.lsp.buf.hover()") 134 | vim.keymap.set("n", "gf", "lua vim.lsp.buf.formatting()") 135 | vim.keymap.set("n", "gd", "lua vim.lsp.buf.definition()") 136 | vim.keymap.set("n", "gD", "lua vim.lsp.buf.declaration()") 137 | vim.keymap.set("n", "gi", "lua vim.lsp.buf.implementation()") 138 | vim.keymap.set("n", "gt", "lua vim.lsp.buf.type_definition()") 139 | vim.keymap.set("n", "gn", "lua vim.lsp.buf.rename()") 140 | 141 | -- vim.keymap.set('n', 'ga', 'lua vim.lsp.buf.code_action()') 142 | vim.keymap.set("n", "ga", "Ddu lsp_definition") 143 | 144 | vim.keymap.set("n", "ge", "lua vim.diagnostic.open_float()") 145 | vim.keymap.set("n", "g]", "lua vim.diagnostic.goto_next()") 146 | vim.keymap.set("n", "g[", "lua vim.diagnostic.goto_prev()") 147 | 148 | vim.keymap.set("n", "gr", "lua vim.lsp.buf.references()") 149 | vim.keymap.set("n", "gs", "Ddu nvim_lsp_references") 150 | -------------------------------------------------------------------------------- /config/nvim/lua/configs/ddu.lua: -------------------------------------------------------------------------------- 1 | -- require("configs/ddu") 2 | 3 | local keymap = vim.keymap.set 4 | local ddu_custom_patch_global = vim.fn["ddu#custom#patch_global"] 5 | local ddu_custom_action = vim.fn["ddu#custom#action"] 6 | local keymap_opt = { buffer = true, silent = true } 7 | 8 | local columns = vim.opt.columns:get() 9 | local width, col = math.floor(columns * 0.8), math.floor(columns * 0.12) 10 | 11 | ddu_custom_patch_global({ 12 | ui = "ff", 13 | sources = { 14 | { 15 | -- default source 16 | name = "file_external", 17 | params = { 18 | -- ignoredDirectories = { ".venv", ".git", "node_modules", "vendor", ".next" }, 19 | }, 20 | }, 21 | }, 22 | sourceOptions = { 23 | _ = { 24 | -- matchers = { "matcher_substring" }, 25 | matchers = { "merge" }, 26 | sorters = { "sorter_fzf" }, 27 | }, 28 | spotify = { 29 | matchers = { "matcher_kensaku" }, 30 | }, 31 | file_external = { 32 | matchers = { "matcher_kensaku" }, 33 | }, 34 | }, 35 | sourceParams = { 36 | file_external = { 37 | cmd = { vim.fn.expand("~/.nix-profile/bin/fd"), ".", "-H", "-E", ".git", "-t", "f" }, 38 | }, 39 | rg = { 40 | args = { "--column", "--no-heading", "--color", "never" }, 41 | inputType = "migemo", 42 | }, 43 | }, 44 | filterParams = { 45 | merge = { 46 | filters = { 47 | { name = "matcher_kensaku", weight = 1.0 }, 48 | { name = "matcher_fzf", weight = 1.0 }, 49 | }, 50 | }, 51 | matcher_fzf = { 52 | highlightMatched = "Search", 53 | }, 54 | matcher_kensaku = { 55 | highlightMatched = "Search", 56 | }, 57 | }, 58 | kindOptions = { 59 | _ = { 60 | defaultAction = "open", 61 | }, 62 | action = { 63 | defaultAction = "do", 64 | }, 65 | ["custom-list"] = { 66 | defaultAction = "callback", 67 | }, 68 | memos = { 69 | defaultAction = "echo", 70 | }, 71 | spotify = { 72 | defaultAction = "play", 73 | }, 74 | lsp_codeAction = { 75 | defaultAction = "apply", 76 | }, 77 | source = { 78 | defaultAction = "execute", 79 | }, 80 | deol = { 81 | defaultAction = "switch", 82 | -- defaultAction = "new" 83 | }, 84 | }, 85 | uiParams = { 86 | ff = { 87 | prompt = "> ", 88 | -- split = "floating", 89 | previewFloating = false, 90 | previewSplit = "vertical", 91 | previewFloatingBorder = "single", 92 | previewWidth = math.floor((width / 6) * 3), -- 2/5 93 | previewHeight = col, 94 | autoAction = { 95 | name = "preview", 96 | }, 97 | }, 98 | }, 99 | }) 100 | 101 | ddu_custom_patch_global("sourceOptions", { 102 | spotify = { 103 | matchers = { "matcher_kensaku" }, 104 | }, 105 | }) 106 | 107 | -- ddu_custom_patch_global('filterParams', { 108 | -- matcher_kensaku = { 109 | -- highlightMatched = 'Search', 110 | -- }, 111 | -- }) 112 | 113 | -- ddu#custom#action('source', 'buffer', 'bdelete', function('s:deleteBuffer')) 114 | -- ddu_custom_action('ui', 'ff', 'buf_delete', function (args) 115 | 116 | ddu_custom_action("ui", "ff", "custom:buf_delete", function() 117 | -- ddu_custom_action('kind', 'file', 'custom:buf_delete', function (args) 118 | -- local items = args.items 119 | -- local items = vim.fn["ddu#ui#get_items"]() 120 | local item = vim.fn["ddu#ui#get_item"]() 121 | 122 | local action = item["action"] 123 | -- vim.print(action) 124 | 125 | local bufnr = action["bufNr"] 126 | 127 | vim.cmd("bd " .. bufnr) 128 | 129 | return 1 130 | end) 131 | 132 | vim.api.nvim_create_autocmd("FileType", { 133 | pattern = "ddu-ff", 134 | callback = function() 135 | keymap("n", "", "call ddu#ui#do_action('itemAction')", keymap_opt) 136 | keymap("n", "", "call ddu#ui#do_action('toggleSelectItem')", keymap_opt) 137 | keymap("n", "i", "call ddu#ui#do_action('openFilterWindow')", keymap_opt) 138 | keymap("n", "q", "call ddu#ui#do_action('quit')", keymap_opt) 139 | 140 | ------ 141 | 142 | local item = vim.fn["ddu#ui#get_item"]() 143 | local items = vim.fn["ddu#ui#get_items"]() 144 | 145 | local source = vim.fn["ddu#custom#get_current"]()["sources"] 146 | 147 | -- enable keymap when source is buffer. 148 | if #source == 1 and source[1]["name"] == "buffer" then 149 | -- keymap.del("n", "dd") 150 | -- if items == 1 then 151 | -- local bufnr = items[1]["action"]["bufNr"] 152 | -- print(bufnr) 153 | -- -- print(vim.fn["ddu#ui#get_item"]()) 154 | -- end 155 | 156 | keymap("n", "d", "call ddu#ui#do_action('custom:buf_delete')", keymap_opt) 157 | end 158 | 159 | vim.api.nvim_create_autocmd("CursorMoved", { 160 | pattern = "*", 161 | callback = function() 162 | vim.fn["ddu#ui#do_action"]("preview") 163 | end, 164 | }) 165 | end, 166 | }) 167 | 168 | vim.api.nvim_create_autocmd("FileType", { 169 | pattern = "ddu-ff-filter", 170 | callback = function() 171 | keymap("i", "", "close", keymap_opt) 172 | keymap("i", "", "close", keymap_opt) 173 | keymap("n", "", "close", keymap_opt) 174 | keymap("n", "q", "call ddu#ui#do_action('quit')", keymap_opt) 175 | end, 176 | }) 177 | -------------------------------------------------------------------------------- /config/wezterm/wezterm.lua: -------------------------------------------------------------------------------- 1 | local wezterm = require("wezterm") 2 | local act = wezterm.action 3 | local home = "/home/coma/" 4 | 5 | local config = { 6 | colors = { 7 | tab_bar = { 8 | background = "#1b1f2f", 9 | 10 | active_tab = { 11 | bg_color = "#44716a", 12 | fg_color = "#c6c8d1", 13 | intensity = "Normal", 14 | underline = "None", 15 | italic = false, 16 | strikethrough = false, 17 | }, 18 | }, 19 | }, 20 | 21 | ssh_domains = { 22 | { 23 | name = "area149", 24 | remote_address = "160.251.139.143", 25 | username = "root", 26 | }, 27 | }, 28 | audible_bell = "Disabled", 29 | wsl_domains = { 30 | { 31 | name = "WSL:Manjaro", 32 | distribution = "Manjaro", 33 | default_cwd = "/home/coma/", 34 | }, 35 | }, 36 | 37 | window_background_image_hsb = { 38 | -- Darken the background image by reducing it to 1/3rd 39 | brightness = 0.04, 40 | -- You can adjust the hue by scaling its value. 41 | -- a multiplier of 1.0 leaves the value unchanged. 42 | -- hue = 1.0, 43 | 44 | -- You can adjust the saturation also. 45 | saturation = 1.0, 46 | }, 47 | 48 | -- disable_default_key_bindings = true, 49 | color_scheme = "Afterglow", 50 | use_ime = true, 51 | font_size = 16, 52 | font = wezterm.font("UDEV Gothic NFLG"), 53 | 54 | hide_tab_bar_if_only_one_tab = true, 55 | adjust_window_size_when_changing_font_size = false, 56 | 57 | -- disable_default_key_bindings = true, 58 | 59 | -- keys = { 60 | -- Turn off the default CMD-m Hide action, allowing CMD-m to 61 | -- be potentially recognized and handled by the tab 62 | -- } 63 | 64 | leader = { key = "q", mods = "CTRL", timeout_milliseconds = 1000 }, 65 | 66 | keys = { 67 | -- {key="C", mods="SHIFT|CTRL", action="Copy"}, 68 | -- {key="V", mods="SHIFT|CTRL", action="Paste"}, 69 | 70 | { key = "w", mods = "ALT|CTRL", action = wezterm.action.CloseCurrentTab({ confirm = false }) }, 71 | { key = "y", mods = "ALT|CTRL", action = "ActivateCopyMode" }, 72 | 73 | -- { key = "p", mods = "ALT|CTRL", action = wezterm.action({ PasteFrom = "PrimarySelection" }) }, 74 | 75 | { key = "1", mods = "ALT", action = wezterm.action({ ActivateTab = 0 }) }, 76 | { key = "2", mods = "ALT", action = wezterm.action({ ActivateTab = 1 }) }, 77 | { key = "3", mods = "ALT", action = wezterm.action({ ActivateTab = 2 }) }, 78 | { key = "4", mods = "ALT", action = wezterm.action({ ActivateTab = 3 }) }, 79 | { key = "5", mods = "ALT", action = wezterm.action({ ActivateTab = 4 }) }, 80 | { key = "6", mods = "ALT", action = wezterm.action({ ActivateTab = 5 }) }, 81 | { key = "7", mods = "ALT", action = wezterm.action({ ActivateTab = 6 }) }, 82 | { key = "8", mods = "ALT", action = wezterm.action({ ActivateTab = 7 }) }, 83 | { key = "9", mods = "ALT", action = wezterm.action({ ActivateTab = 8 }) }, 84 | { 85 | key = "-", 86 | mods = "ALT", 87 | action = wezterm.action({ 88 | SplitVertical = { domain = "CurrentPaneDomain" }, 89 | }), 90 | }, 91 | { 92 | key = "|", 93 | mods = "ALT|SHIFT", 94 | action = wezterm.action({ 95 | SplitHorizontal = { domain = "CurrentPaneDomain" }, 96 | }), 97 | }, 98 | { key = "t", mods = "LEADER", action = wezterm.action({ SpawnTab = "CurrentPaneDomain" }) }, 99 | { key = "q", mods = "LEADER", action = wezterm.action({ CloseCurrentTab = { confirm = false } }) }, 100 | 101 | -- { key = "e", mods = "ALT", action = wezterm.action({ SpawnTab = "CurrentPaneDomain" }) }, 102 | -- { key = "q", mods = "ALT", action = wezterm.action({ CloseCurrentTab = { confirm = false } }) }, 103 | 104 | { key = "j", mods = "LEADER", action = wezterm.action({ ActivateTabRelative = -1 }) }, 105 | { key = "k", mods = "LEADER", action = wezterm.action({ ActivateTabRelative = 1 }) }, 106 | 107 | { key = "l", mods = "LEADER", action = wezterm.action({ ActivateTabRelative = -1 }) }, 108 | { key = "h", mods = "LEADER", action = wezterm.action({ ActivateTabRelative = 1 }) }, 109 | 110 | -- { key = "l", mods = "LEADER", action = wezterm.action({ ActivatePaneDirection = "Right" }) }, 111 | -- { key = "h", mods = "LEADER", action = wezterm.action({ ActivatePaneDirection = "Left" }) }, 112 | 113 | { key = "h", mods = "ALT|SHIFT", action = wezterm.action({ AdjustPaneSize = { "Left", 1 } }) }, 114 | { key = "l", mods = "ALT|SHIFT", action = wezterm.action({ AdjustPaneSize = { "Right", 1 } }) }, 115 | { key = "k", mods = "ALT|SHIFT", action = wezterm.action({ AdjustPaneSize = { "Up", 1 } }) }, 116 | { key = "j", mods = "ALT|SHIFT", action = wezterm.action({ AdjustPaneSize = { "Down", 1 } }) }, 117 | 118 | { key = "i", mods = "ALT", action = "QuickSelect" }, 119 | { key = "o", mods = "ALT", action = act.ShowTabNavigator }, 120 | }, 121 | } 122 | 123 | if wezterm.target_triple == "x86_64-pc-windows-msvc" then 124 | config.default_prog = { "wsl.exe", "--distribution", "Manjaro", "--exec", "/bin/fish", "-l" } 125 | config.window_background_image = "C:/Users/Coma/wallpapelar/sarah-sheedy-co1YPSazn70-unsplash.jpg" 126 | else 127 | config.default_prog = { "fish" } 128 | -- config.window_background_image = home .. "Pictures/wallpapelar/benjamin-hersh-_69DlG4rMm4-unsplash.jpg" 129 | config.window_background_opacity = 0.80 130 | -- config.enable_wayland = true 131 | config.enable_wayland = false 132 | config.font_size = 14 133 | end 134 | 135 | return config 136 | -------------------------------------------------------------------------------- /vim/lsp.toml: -------------------------------------------------------------------------------- 1 | [[plugins]] 2 | repo = 'prabirshrestha/vim-lsp' 3 | on_event = ['BufRead', 'CursorHold'] 4 | hook_source = ''' 5 | let g:lsp_log_file = expand('/tmp/vim-lsp.log') 6 | let g:lsp_settings_filetype_typescript = [ 7 | \ 'typescript-language-server', 8 | \ 'eslint-language-server', 9 | \ 'deno' 10 | \ ] 11 | let g:lsp_diagnostics_virtual_text_enabled = 1 12 | let g:lsp_diagnostics_virtual_text_insert_mode_enabled = 1 13 | let g:lsp_diagnostics_virtual_text_enabled = "after" 14 | let g:lsp_diagnostics_enabled = 1 15 | 16 | " if executable('gop') 17 | " au User lsp_setup call lsp#register_server({ 18 | " \ 'name': 'Go+ language server', 19 | " \ 'cmd': ["gop", "serve"], 20 | " \ 'allowlist': ['gop'], 21 | " \ }) 22 | " endif 23 | 24 | if executable('moonbit-lsp') 25 | au User lsp_setup call lsp#register_server({ 26 | \ 'name': 'moonbit', 27 | \ 'cmd': ["moonbit-lsp" ], 28 | \ 'allowlist': ['moonbit'], 29 | \ }) 30 | endif 31 | 32 | " if executable('gleam') 33 | " au User lsp_setup call lsp#register_server({ 34 | " \ 'name': 'gleam', 35 | " \ 'cmd': ["gleam", "lsp"], 36 | " \ 'allowlist': ['gleam'], 37 | " \ }) 38 | " endif 39 | 40 | " if executable('glas') 41 | " au User lsp_setup call lsp#register_server({ 42 | " \ 'name': 'glas', 43 | " \ 'cmd': {server_info->['glas', '--stdio']}, 44 | " \ 'whitelist': ['gleam'], 45 | " \ }) 46 | " endif 47 | 48 | if executable('erg') 49 | au User lsp_setup call lsp#register_server({ 50 | \ 'name': 'erg', 51 | \ 'cmd': ["erg", "server"], 52 | \ 'allowlist': ['erg'], 53 | \ }) 54 | endif 55 | 56 | if executable('haxe-lsp') 57 | au User lsp_setup call lsp#register_server({ 58 | \ 'name': 'haxe-language-server', 59 | \ 'cmd': ["haxe-lsp", "--stdio"], 60 | \ 'allowlist': ['haxe'], 61 | \ }) 62 | endif 63 | 64 | if executable('rescript-language-server') 65 | au User lsp_setup call lsp#register_server({ 66 | \ 'name': 'rescript-language-server', 67 | \ 'cmd': ["rescript-language-server", "--stdio"], 68 | \ 'allowlist': ['rescript'], 69 | \ }) 70 | endif 71 | 72 | if executable('nextls') 73 | au User lsp_setup call lsp#register_server({ 74 | \ 'name': 'next_ls', 75 | \ 'cmd': ["nextls", "--stdio"], 76 | \ 'allowlist': ['elixir'], 77 | \ }) 78 | endif 79 | 80 | 81 | if executable('haskell-language-server-wrapper') 82 | au User lsp_setup call lsp#register_server({ 83 | \ 'name': 'haskell-ls', 84 | \ 'cmd': {server_info->['haskell-language-server-wrapper', '--lsp']}, 85 | \ 'root_uri':{server_info->lsp#utils#path_to_uri( 86 | \ lsp#utils#find_nearest_parent_file_directory( 87 | \ lsp#utils#get_buffer_path(), 88 | \ ['.cabal', 'stack.yaml', 'cabal.project', 'package.yaml', 'hie.yaml', '.git'], 89 | \ ))}, 90 | \ 'allowlist': ['haskell', 'lhaskell'], 91 | \ }) 92 | endif 93 | 94 | if executable('janet-lsp') 95 | au User lsp_setup call lsp#register_server({ 96 | \ 'name': 'Janet Language Server', 97 | \ 'cmd': {server_info->['janet-lsp']}, 98 | \ 'whitelist': ['janet'], 99 | \ }) 100 | endif 101 | 102 | function! s:on_lsp_buffer_enabled() abort 103 | setlocal omnifunc=lsp#complete 104 | setlocal signcolumn=yes 105 | if exists('+tagfunc') | setlocal tagfunc=lsp#tagfunc | endif 106 | 107 | nmap gd (lsp-definition) 108 | nmap gs (lsp-document-symbol-search) 109 | nmap gS (lsp-workspace-symbol-search) 110 | nmap gr (lsp-references) 111 | nmap gi (lsp-implementation) 112 | nmap gt (lsp-type-definition) 113 | nmap rn (lsp-rename) 114 | nmap [g (lsp-previous-diagnostic) 115 | nmap ]g (lsp-next-diagnostic) 116 | nmap K (lsp-hover) 117 | " nnoremap lsp#scroll(+4) 118 | " nnoremap lsp#scroll(-4) 119 | 120 | let g:lsp_format_sync_timeout = 0 121 | " autocmd! BufWritePre *.rs,*.go call execute('LspDocumentFormatSync') 122 | 123 | " refer to doc to add more commands 124 | endfunction 125 | 126 | augroup lsp_install 127 | au! 128 | " call s:on_lsp_buffer_enabled only for languages that has the server registered. 129 | autocmd User lsp_buffer_enabled call s:on_lsp_buffer_enabled() 130 | augroup END 131 | 132 | augroup vimspector 133 | autocmd! 134 | autocmd User VimspectorJumpedToFrame * call s:vimspector_my_settings() 135 | augroup END 136 | 137 | function! s:vimspector_my_settings() abort 138 | echom "Vimspector!" 139 | nnoremap r VimspectorContinue 140 | nnoremap s VimspectorStop 141 | nnoremap call vimspector#ToggleBreakpoint() 142 | nnoremap vimspector#Reset() 143 | endfunction 144 | 145 | call lsp#activate() 146 | ''' 147 | 148 | [[plugins]] 149 | repo = 'mattn/vim-lsp-settings' 150 | on_source = 'vim-lsp' 151 | 152 | [[plugins]] 153 | repo = 'dense-analysis/ale' 154 | on_event = ['BufRead', 'CursorHold'] 155 | hook_source = ''' 156 | let g:ale_disable_lsp = 1 157 | 158 | let g:ale_sign_error = ' ' 159 | let g:ale_sign_warning = ' ' 160 | let g:ale_sign_info = ' ' 161 | 162 | let g:ale_fix_on_save = 1 163 | let g:rustfmt_on_save = 0 164 | let g:ale_floating_window_border = ['│', '─', '╭', '╮', '╯', '╰', '│', '─'] 165 | 166 | 167 | let g:ale_fixers = { 168 | \ 'javascript': ['deno'], 169 | \ 'typescript': ['deno'], 170 | \ 'python': ['ruff', 'isort'], 171 | \ 'nix': ['nixfmt', 'nixpkgs-fmt'], 172 | \ 'gleam': ["gleam_format"], 173 | \ } 174 | ''' 175 | -------------------------------------------------------------------------------- /config/vim/lsp.toml: -------------------------------------------------------------------------------- 1 | [[plugins]] 2 | repo = 'prabirshrestha/vim-lsp' 3 | on_event = ['BufRead', 'CursorHold'] 4 | hook_source = ''' 5 | let g:lsp_log_file = expand('/tmp/vim-lsp.log') 6 | let g:lsp_settings_filetype_typescript = [ 7 | \ 'typescript-language-server', 8 | \ 'eslint-language-server', 9 | \ 'deno' 10 | \ ] 11 | let g:lsp_diagnostics_virtual_text_enabled = 1 12 | let g:lsp_diagnostics_virtual_text_insert_mode_enabled = 1 13 | let g:lsp_diagnostics_virtual_text_enabled = "after" 14 | let g:lsp_diagnostics_enabled = 1 15 | 16 | " if executable('gop') 17 | " au User lsp_setup call lsp#register_server({ 18 | " \ 'name': 'Go+ language server', 19 | " \ 'cmd': ["gop", "serve"], 20 | " \ 'allowlist': ['gop'], 21 | " \ }) 22 | " endif 23 | 24 | if executable('moonbit-lsp') 25 | au User lsp_setup call lsp#register_server({ 26 | \ 'name': 'moonbit', 27 | \ 'cmd': ["moonbit-lsp" ], 28 | \ 'allowlist': ['moonbit'], 29 | \ }) 30 | endif 31 | 32 | " if executable('gleam') 33 | " au User lsp_setup call lsp#register_server({ 34 | " \ 'name': 'gleam', 35 | " \ 'cmd': ["gleam", "lsp"], 36 | " \ 'allowlist': ['gleam'], 37 | " \ }) 38 | " endif 39 | 40 | " if executable('glas') 41 | " au User lsp_setup call lsp#register_server({ 42 | " \ 'name': 'glas', 43 | " \ 'cmd': {server_info->['glas', '--stdio']}, 44 | " \ 'whitelist': ['gleam'], 45 | " \ }) 46 | " endif 47 | 48 | if executable('erg') 49 | au User lsp_setup call lsp#register_server({ 50 | \ 'name': 'erg', 51 | \ 'cmd': ["erg", "server"], 52 | \ 'allowlist': ['erg'], 53 | \ }) 54 | endif 55 | 56 | if executable('haxe-lsp') 57 | au User lsp_setup call lsp#register_server({ 58 | \ 'name': 'haxe-language-server', 59 | \ 'cmd': ["haxe-lsp", "--stdio"], 60 | \ 'allowlist': ['haxe'], 61 | \ }) 62 | endif 63 | 64 | if executable('rescript-language-server') 65 | au User lsp_setup call lsp#register_server({ 66 | \ 'name': 'rescript-language-server', 67 | \ 'cmd': ["rescript-language-server", "--stdio"], 68 | \ 'allowlist': ['rescript'], 69 | \ }) 70 | endif 71 | 72 | if executable('nextls') 73 | au User lsp_setup call lsp#register_server({ 74 | \ 'name': 'next_ls', 75 | \ 'cmd': ["nextls", "--stdio"], 76 | \ 'allowlist': ['elixir'], 77 | \ }) 78 | endif 79 | 80 | 81 | if executable('haskell-language-server-wrapper') 82 | au User lsp_setup call lsp#register_server({ 83 | \ 'name': 'haskell-ls', 84 | \ 'cmd': {server_info->['haskell-language-server-wrapper', '--lsp']}, 85 | \ 'root_uri':{server_info->lsp#utils#path_to_uri( 86 | \ lsp#utils#find_nearest_parent_file_directory( 87 | \ lsp#utils#get_buffer_path(), 88 | \ ['.cabal', 'stack.yaml', 'cabal.project', 'package.yaml', 'hie.yaml', '.git'], 89 | \ ))}, 90 | \ 'allowlist': ['haskell', 'lhaskell'], 91 | \ }) 92 | endif 93 | 94 | if executable('janet-lsp') 95 | au User lsp_setup call lsp#register_server({ 96 | \ 'name': 'Janet Language Server', 97 | \ 'cmd': {server_info->['janet-lsp']}, 98 | \ 'whitelist': ['janet'], 99 | \ }) 100 | endif 101 | 102 | function! s:on_lsp_buffer_enabled() abort 103 | setlocal omnifunc=lsp#complete 104 | setlocal signcolumn=yes 105 | if exists('+tagfunc') | setlocal tagfunc=lsp#tagfunc | endif 106 | 107 | nmap gd (lsp-definition) 108 | nmap gs (lsp-document-symbol-search) 109 | nmap gS (lsp-workspace-symbol-search) 110 | nmap gr (lsp-references) 111 | nmap gi (lsp-implementation) 112 | nmap gt (lsp-type-definition) 113 | nmap rn (lsp-rename) 114 | nmap [g (lsp-previous-diagnostic) 115 | nmap ]g (lsp-next-diagnostic) 116 | nmap K (lsp-hover) 117 | " nnoremap lsp#scroll(+4) 118 | " nnoremap lsp#scroll(-4) 119 | 120 | let g:lsp_format_sync_timeout = 0 121 | " autocmd! BufWritePre *.rs,*.go call execute('LspDocumentFormatSync') 122 | 123 | " refer to doc to add more commands 124 | endfunction 125 | 126 | augroup lsp_install 127 | au! 128 | " call s:on_lsp_buffer_enabled only for languages that has the server registered. 129 | autocmd User lsp_buffer_enabled call s:on_lsp_buffer_enabled() 130 | augroup END 131 | 132 | augroup vimspector 133 | autocmd! 134 | autocmd User VimspectorJumpedToFrame * call s:vimspector_my_settings() 135 | augroup END 136 | 137 | function! s:vimspector_my_settings() abort 138 | echom "Vimspector!" 139 | nnoremap r VimspectorContinue 140 | nnoremap s VimspectorStop 141 | nnoremap call vimspector#ToggleBreakpoint() 142 | nnoremap vimspector#Reset() 143 | endfunction 144 | 145 | call lsp#activate() 146 | ''' 147 | 148 | [[plugins]] 149 | repo = 'mattn/vim-lsp-settings' 150 | on_source = 'vim-lsp' 151 | 152 | [[plugins]] 153 | repo = 'dense-analysis/ale' 154 | on_event = ['BufRead', 'CursorHold'] 155 | hook_source = ''' 156 | let g:ale_disable_lsp = 1 157 | 158 | let g:ale_sign_error = ' ' 159 | let g:ale_sign_warning = ' ' 160 | let g:ale_sign_info = ' ' 161 | 162 | let g:ale_fix_on_save = 1 163 | let g:rustfmt_on_save = 0 164 | let g:ale_floating_window_border = ['│', '─', '╭', '╮', '╯', '╰', '│', '─'] 165 | 166 | 167 | let g:ale_fixers = { 168 | \ 'javascript': ['deno'], 169 | \ 'typescript': ['deno'], 170 | \ 'python': ['ruff', 'isort'], 171 | \ 'nix': ['nixfmt', 'nixpkgs-fmt'], 172 | \ 'gleam': ["gleam_format"], 173 | \ } 174 | ''' 175 | -------------------------------------------------------------------------------- /config/fish/functions/fish_right_prompt.fish: -------------------------------------------------------------------------------- 1 | function fish_right_prompt 2 | set -l cmd_status $status 3 | if test $cmd_status -ne 0 4 | echo -n (set_color red)"✘ $cmd_status" 5 | end 6 | 7 | if not command -sq git 8 | set_color normal 9 | return 10 | end 11 | 12 | # Get the git directory for later use. 13 | # Return if not inside a Git repository work tree. 14 | if not set -l git_dir (command git rev-parse --git-dir 2>/dev/null) 15 | set_color normal 16 | return 17 | end 18 | 19 | # Get the current action ("merge", "rebase", etc.) 20 | # and if there's one get the current commit hash too. 21 | set -l commit '' 22 | if set -l action (fish_print_git_action "$git_dir") 23 | set commit (command git rev-parse HEAD 2> /dev/null | string sub -l 7) 24 | end 25 | 26 | # Get either the branch name or a branch descriptor. 27 | set -l branch_detached 0 28 | if not set -l branch (command git symbolic-ref --short HEAD 2>/dev/null) 29 | set branch_detached 1 30 | set branch (command git describe --contains --all HEAD 2>/dev/null) 31 | end 32 | 33 | # Get the commit difference counts between local and remote. 34 | command git rev-list --count --left-right 'HEAD...@{upstream}' 2>/dev/null \ 35 | | read -d \t -l status_ahead status_behind 36 | if test $status -ne 0 37 | set status_ahead 0 38 | set status_behind 0 39 | end 40 | 41 | # Get the stash status. 42 | # (git stash list) is very slow. => Avoid using it. 43 | set -l status_stashed 0 44 | if test -f "$git_dir/refs/stash" 45 | set status_stashed 1 46 | else if test -r "$git_dir/commondir" 47 | read -l commondir <"$git_dir/commondir" 48 | if test -f "$commondir/refs/stash" 49 | set status_stashed 1 50 | end 51 | end 52 | 53 | # git-status' porcelain v1 format starts with 2 letters on each line: 54 | # The first letter (X) denotes the index state. 55 | # The second letter (Y) denotes the working directory state. 56 | # 57 | # The following table presents the possible combinations: 58 | # * The underscore character denotes whitespace. 59 | # * The cell values stand for the following file states: 60 | # a: added 61 | # d: deleted 62 | # m: modified 63 | # r: renamed 64 | # u: unmerged 65 | # t: untracked 66 | # * Cells with more than one letter signify that both states 67 | # are simultaneously the case. This is possible since the git index 68 | # and working directory operate independently of each other. 69 | # * Cells which are empty are unhandled by this code. 70 | # * T (= type change) is undocumented. 71 | # See Git v1.7.8.2 release notes for more information. 72 | # 73 | # \ Y→ 74 | # X \ 75 | # ↓ | A | C | D | M | R | T | U | X | B | ? | _ 76 | # ----+----+----+----+----+----+----+----+----+----+----+---- 77 | # A | u | | ad | am | r | am | u | | | | a 78 | # C | | | ad | am | r | am | u | | | | a 79 | # D | | | u | am | r | am | u | | | | a 80 | # M | | | ad | am | r | am | u | | | | a 81 | # R | r | r | rd | rm | r | rm | ur | r | r | r | r 82 | # T | | | ad | am | r | am | u | | | | a 83 | # U | u | u | u | um | ur | um | u | u | u | u | u 84 | # X | | | | m | r | m | u | | | | 85 | # B | | | | m | r | m | u | | | | 86 | # ? | | | | m | r | m | u | | | t | 87 | # _ | | | d | m | r | m | u | | | | 88 | set -l porcelain_status (command git status --porcelain | string sub -l2) 89 | 90 | set -l status_added 0 91 | if string match -qr '[ACDMT][ MT]|[ACMT]D' $porcelain_status 92 | set status_added 1 93 | end 94 | set -l status_deleted 0 95 | if string match -qr '[ ACMRT]D' $porcelain_status 96 | set status_deleted 1 97 | end 98 | set -l status_modified 0 99 | if string match -qr '[MT]$' $porcelain_status 100 | set status_modified 1 101 | end 102 | set -l status_renamed 0 103 | if string match -qe R $porcelain_status 104 | set status_renamed 1 105 | end 106 | set -l status_unmerged 0 107 | if string match -qr 'AA|DD|U' $porcelain_status 108 | set status_unmerged 1 109 | end 110 | set -l status_untracked 0 111 | if string match -qe '\?\?' $porcelain_status 112 | set status_untracked 1 113 | end 114 | 115 | set_color -o 116 | 117 | if test -n "$branch" 118 | if test $branch_detached -ne 0 119 | set_color brmagenta 120 | else 121 | set_color green 122 | end 123 | echo -n " $branch" 124 | end 125 | if test -n "$commit" 126 | echo -n ' '(set_color yellow)"$commit" 127 | end 128 | if test -n "$action" 129 | set_color normal 130 | echo -n (set_color white)':'(set_color -o brred)"$action" 131 | end 132 | if test $status_ahead -ne 0 133 | echo -n ' '(set_color brmagenta)'⬆' 134 | end 135 | if test $status_behind -ne 0 136 | echo -n ' '(set_color brmagenta)'⬇' 137 | end 138 | if test $status_stashed -ne 0 139 | echo -n ' '(set_color cyan)'✭' 140 | end 141 | if test $status_added -ne 0 142 | echo -n ' '(set_color green)'✚' 143 | end 144 | if test $status_deleted -ne 0 145 | echo -n ' '(set_color red)'✖' 146 | end 147 | if test $status_modified -ne 0 148 | echo -n ' '(set_color blue)'✱' 149 | end 150 | if test $status_renamed -ne 0 151 | echo -n ' '(set_color magenta)'➜' 152 | end 153 | if test $status_unmerged -ne 0 154 | echo -n ' '(set_color yellow)'═' 155 | end 156 | if test $status_untracked -ne 0 157 | echo -n ' '(set_color white)'◼' 158 | end 159 | 160 | set_color normal 161 | end 162 | -------------------------------------------------------------------------------- /vim/dpp_lazy.toml: -------------------------------------------------------------------------------- 1 | [[plugins]] 2 | repo = 'catppuccin/vim' 3 | on_event = ['BufRead', 'CursorHold'] 4 | hook_source = """ 5 | set background=dark 6 | let g:lightline = {'colorscheme': 'catppuccin_mocha'} 7 | catppuccin_mocha 8 | """ 9 | 10 | [[plugins]] 11 | repo = "morhetz/gruvbox" 12 | # on_event = ['BufRead', 'CursorHold'] 13 | hook_source = """ 14 | set background=dark 15 | colorscheme gruvbox 16 | """ 17 | 18 | [[plugins]] 19 | repo = "sainnhe/gruvbox-material" 20 | # on_event = ['BufRead', 'CursorHold'] 21 | hook_source = """ 22 | " set background=dark 23 | " colorscheme gruvbox-material 24 | """ 25 | 26 | [[plugins]] 27 | repo = "tyrannicaltoucan/vim-deep-space" 28 | # on_event = ['BufRead', 'CursorHold'] 29 | hook_source = """ 30 | " colorscheme deep-space 31 | """ 32 | 33 | [[plugins]] 34 | repo = "habamax/vim-habamax" 35 | on_event = ['BufRead', 'CursorHold'] 36 | hook_source = """ 37 | " colorscheme habamax 38 | """ 39 | 40 | [[plugins]] 41 | repo = "cocopon/iceberg.vim" 42 | # on_event = ['BufRead', 'CursorHold'] 43 | 44 | [[plugins]] 45 | repo = "KeitaNakamura/neodark.vim" 46 | on_event = ['BufRead', 'CursorHold'] 47 | hook_source = """ 48 | let g:neodark#terminal_transparent = 1 49 | let g:neodark#italics = 1 50 | """ 51 | 52 | [[plugins]] 53 | repo = "AlessandroYorba/Sierra" 54 | on_event = ['BufRead', 'CursorHold'] 55 | hook_source = """ 56 | " set background=dark 57 | """ 58 | 59 | [[plugins]] 60 | repo = 'catppuccin/vim' 61 | on_event = ['BufRead', 'CursorHold'] 62 | 63 | [[plugins]] 64 | repo = 'sainnhe/edge' 65 | on_event = ['BufRead', 'CursorHold'] 66 | hook_source = """ 67 | set background=dark 68 | " let g:edge_style = 'default' 69 | " let g:edge_dim_foreground = 1 70 | " colorscheme edge 71 | " """ 72 | 73 | # [[plugins]] 74 | # repo = 'mhinz/vim-sayonara' 75 | # on_event = ['BufRead', 'CursorHold'] 76 | # hook_source = """ 77 | # nnoremap Sayonara 78 | # """ 79 | 80 | [[plugins]] 81 | repo = "Shougo/context_filetype.vim" 82 | on_event = ['BufRead', 'CursorHold', "BufReadPre"] 83 | hook_source = ''' 84 | nnoremap p call operator_partedit() 85 | 86 | function! s:operator_partedit() abort 87 | let context = context_filetype#get() 88 | if context.range == [[0, 0], [0, 0]] 89 | echohl WarningMsg 90 | echomsg 'Context is not found' 91 | echohl NONE 92 | return 93 | endif 94 | call partedit#start(context.range[0][0], context.range[1][0], 95 | \ {'filetype': context.filetype}) 96 | nnoremap Q wParteditEnd 97 | endfunction 98 | ''' 99 | 100 | [[plugins]] 101 | repo = 'thinca/vim-partedit' 102 | on_event = ['BufRead', 'CursorHold', "BufReadPre"] 103 | hook_source = ''' 104 | let g:partedit#prefix_pattern = '\s*' 105 | let g:partedit#auto_prefix = 0 106 | ''' 107 | 108 | [[plugins]] 109 | repo = "yuttie/comfortable-motion.vim" 110 | # on_event = ['BufRead', 'CursorHold'] 111 | hook_source = ''' 112 | nnoremap :call comfortable_motion#flick(-70) 113 | nnoremap :call comfortable_motion#flick(70) 114 | 115 | let g:comfortable_motion_no_default_key_mappings = 1 116 | ''' 117 | 118 | [[plugins]] 119 | repo = 'tomtom/tcomment_vim' 120 | on_event = ['BufRead', 'CursorHold'] 121 | hook_source = ''' 122 | call tcomment#type#Define('janet', '# %s') 123 | ''' 124 | 125 | [[plugins]] 126 | repo = 'Shougo/ddc-ui-pum' 127 | on_event = ['InsertEnter'] 128 | 129 | [[plugins]] 130 | repo = 'Shougo/deol.nvim' 131 | on_event = ['BufRead', 'CursorHold'] 132 | 133 | [[plugins]] 134 | repo = 'skanehira/denops-translate.vim' 135 | on_cmd = ['Translate', 'Translate!'] 136 | 137 | # ==================== lightline ==================== 138 | [[plugins]] 139 | repo = 'itchyny/lightline.vim' 140 | on_event = ['BufRead', 'CursorHold'] 141 | hook_source = ''' 142 | " execute("source" .. expand("~/.vim/lightline.vim")) 143 | ''' 144 | 145 | [[plugins]] 146 | repo = 'skanehira/denops-translate.vim' 147 | on_cmd = ['Translate', 'Translate!'] 148 | 149 | [[plugins]] 150 | repo = 'thinca/vim-quickrun' 151 | on_event = ['BufRead', 'CursorHold'] 152 | on_source = ''' 153 | let g:quickrun_config = { 154 | \ "gleam" : { 155 | \ "command": "gleam run", 156 | \ }, 157 | \ "deno" : { 158 | \ "command": "deno run", 159 | \ }, 160 | \ "_" : { 161 | \ "outputter/buffer/split" : ":botright", 162 | \ "outputter/buffer/close_on_empty" : 1 163 | \ }, 164 | \} 165 | 166 | nnoremap quickrun#is_running() ? quickrun#sweep_sessions() : "\" 167 | ''' 168 | 169 | [[plugins]] 170 | repo = 'cohama/lexima.vim' 171 | on_event = ['BufRead', 'CursorHold'] 172 | 173 | [[plugins]] 174 | repo = "jasonccox/vim-wayland-clipboard" 175 | on_event = ['BufRead', 'CursorHold'] 176 | 177 | [[plugins]] 178 | repo = "miyakogi/seiya.vim" 179 | on_event = ["ColorSchemePre", 'BufReadPre', 'CursorHold'] 180 | hook_source = """ 181 | let g:seiya_auto_enable=1 182 | let g:seiya_target_groups = has('nvim') ? ['guibg'] : ['ctermbg'] 183 | """ 184 | 185 | [[plugins]] 186 | repo = "wakatime/vim-wakatime" 187 | on_event = ['BufRead', 'CursorHold'] 188 | 189 | [[plugins]] 190 | repo = "easymotion/vim-easymotion" 191 | on_event = ['BufRead', 'CursorHold'] 192 | hook_source = """ 193 | nmap k (easymotion-overwin-line) 194 | """ 195 | 196 | [[plugins]] 197 | repo = "yuki-yano/fuzzy-motion.vim" 198 | depends = ['denops.vim', 'kensaku.vim'] 199 | on_cmd = ["FuzzyMotion"] 200 | hook_source = """ 201 | let g:fuzzy_motion_matchers = ['fzf', 'kensaku'] 202 | """ 203 | 204 | # [[plugins]] 205 | # repo = 'lambdalisue/kensaku.vim' 206 | # on_event = ['BufRead', 'CursorHold'] 207 | # on_event = ['VimEnter'] 208 | # on_source = 'denops.vim' 209 | 210 | [[plugins]] 211 | repo = "lambdalisue/kensaku-search.vim" 212 | on_event = ['BufRead', 'CursorHold'] 213 | hook_source = """" 214 | cnoremap (kensaku-search-replace) 215 | """ 216 | 217 | [[plugins]] 218 | repo = 'kat0h/bufpreview.vim' 219 | build = 'deno task prepare' 220 | on_cmd = ['PreviewMarkdown', 'PreviewMarkdownStop', 'PreviewMarkdownToggle'] 221 | 222 | [[plugins]] 223 | repo = 'lambdalisue/mr.vim' 224 | on_event = ['BufRead', 'CursorHold'] 225 | 226 | [[plugins]] 227 | repo = 'nathanaelkane/vim-indent-guides' 228 | on_event = ['BufRead', 'CursorHold'] 229 | 230 | # [[plugins]] 231 | # repo = 'sheerun/vim-polyglot' 232 | # on_event = ['BufRead', 'CursorHold'] 233 | 234 | [[plugins]] 235 | repo = 'luochen1990/rainbow' 236 | on_event = ['BufRead', 'CursorHold'] 237 | hook_source = ''' 238 | let g:rainbow_active = 1 239 | ''' 240 | -------------------------------------------------------------------------------- /config/vim/dpp_lazy.toml: -------------------------------------------------------------------------------- 1 | [[plugins]] 2 | repo = 'catppuccin/vim' 3 | on_event = ['BufRead', 'CursorHold'] 4 | hook_source = """ 5 | set background=dark 6 | let g:lightline = {'colorscheme': 'catppuccin_mocha'} 7 | catppuccin_mocha 8 | """ 9 | 10 | [[plugins]] 11 | repo = "morhetz/gruvbox" 12 | # on_event = ['BufRead', 'CursorHold'] 13 | hook_source = """ 14 | set background=dark 15 | colorscheme gruvbox 16 | """ 17 | 18 | [[plugins]] 19 | repo = "sainnhe/gruvbox-material" 20 | # on_event = ['BufRead', 'CursorHold'] 21 | hook_source = """ 22 | " set background=dark 23 | " colorscheme gruvbox-material 24 | """ 25 | 26 | [[plugins]] 27 | repo = "tyrannicaltoucan/vim-deep-space" 28 | # on_event = ['BufRead', 'CursorHold'] 29 | hook_source = """ 30 | " colorscheme deep-space 31 | """ 32 | 33 | [[plugins]] 34 | repo = "habamax/vim-habamax" 35 | on_event = ['BufRead', 'CursorHold'] 36 | hook_source = """ 37 | " colorscheme habamax 38 | """ 39 | 40 | [[plugins]] 41 | repo = "cocopon/iceberg.vim" 42 | # on_event = ['BufRead', 'CursorHold'] 43 | 44 | [[plugins]] 45 | repo = "KeitaNakamura/neodark.vim" 46 | on_event = ['BufRead', 'CursorHold'] 47 | hook_source = """ 48 | let g:neodark#terminal_transparent = 1 49 | let g:neodark#italics = 1 50 | """ 51 | 52 | [[plugins]] 53 | repo = "AlessandroYorba/Sierra" 54 | on_event = ['BufRead', 'CursorHold'] 55 | hook_source = """ 56 | " set background=dark 57 | """ 58 | 59 | [[plugins]] 60 | repo = 'catppuccin/vim' 61 | on_event = ['BufRead', 'CursorHold'] 62 | 63 | [[plugins]] 64 | repo = 'sainnhe/edge' 65 | on_event = ['BufRead', 'CursorHold'] 66 | hook_source = """ 67 | set background=dark 68 | " let g:edge_style = 'default' 69 | " let g:edge_dim_foreground = 1 70 | " colorscheme edge 71 | " """ 72 | 73 | # [[plugins]] 74 | # repo = 'mhinz/vim-sayonara' 75 | # on_event = ['BufRead', 'CursorHold'] 76 | # hook_source = """ 77 | # nnoremap Sayonara 78 | # """ 79 | 80 | [[plugins]] 81 | repo = "Shougo/context_filetype.vim" 82 | on_event = ['BufRead', 'CursorHold', "BufReadPre"] 83 | hook_source = ''' 84 | nnoremap p call operator_partedit() 85 | 86 | function! s:operator_partedit() abort 87 | let context = context_filetype#get() 88 | if context.range == [[0, 0], [0, 0]] 89 | echohl WarningMsg 90 | echomsg 'Context is not found' 91 | echohl NONE 92 | return 93 | endif 94 | call partedit#start(context.range[0][0], context.range[1][0], 95 | \ {'filetype': context.filetype}) 96 | nnoremap Q wParteditEnd 97 | endfunction 98 | ''' 99 | 100 | [[plugins]] 101 | repo = 'thinca/vim-partedit' 102 | on_event = ['BufRead', 'CursorHold', "BufReadPre"] 103 | hook_source = ''' 104 | let g:partedit#prefix_pattern = '\s*' 105 | let g:partedit#auto_prefix = 0 106 | ''' 107 | 108 | [[plugins]] 109 | repo = "yuttie/comfortable-motion.vim" 110 | # on_event = ['BufRead', 'CursorHold'] 111 | hook_source = ''' 112 | nnoremap :call comfortable_motion#flick(-70) 113 | nnoremap :call comfortable_motion#flick(70) 114 | 115 | let g:comfortable_motion_no_default_key_mappings = 1 116 | ''' 117 | 118 | [[plugins]] 119 | repo = 'tomtom/tcomment_vim' 120 | on_event = ['BufRead', 'CursorHold'] 121 | hook_source = ''' 122 | call tcomment#type#Define('janet', '# %s') 123 | ''' 124 | 125 | [[plugins]] 126 | repo = 'Shougo/ddc-ui-pum' 127 | on_event = ['InsertEnter'] 128 | 129 | [[plugins]] 130 | repo = 'Shougo/deol.nvim' 131 | on_event = ['BufRead', 'CursorHold'] 132 | 133 | [[plugins]] 134 | repo = 'skanehira/denops-translate.vim' 135 | on_cmd = ['Translate', 'Translate!'] 136 | 137 | # ==================== lightline ==================== 138 | [[plugins]] 139 | repo = 'itchyny/lightline.vim' 140 | on_event = ['BufRead', 'CursorHold'] 141 | hook_source = ''' 142 | " execute("source" .. expand("~/.vim/lightline.vim")) 143 | ''' 144 | 145 | [[plugins]] 146 | repo = 'skanehira/denops-translate.vim' 147 | on_cmd = ['Translate', 'Translate!'] 148 | 149 | [[plugins]] 150 | repo = 'thinca/vim-quickrun' 151 | on_event = ['BufRead', 'CursorHold'] 152 | on_source = ''' 153 | let g:quickrun_config = { 154 | \ "gleam" : { 155 | \ "command": "gleam run", 156 | \ }, 157 | \ "deno" : { 158 | \ "command": "deno run", 159 | \ }, 160 | \ "_" : { 161 | \ "outputter/buffer/split" : ":botright", 162 | \ "outputter/buffer/close_on_empty" : 1 163 | \ }, 164 | \} 165 | 166 | nnoremap quickrun#is_running() ? quickrun#sweep_sessions() : "\" 167 | ''' 168 | 169 | [[plugins]] 170 | repo = 'cohama/lexima.vim' 171 | on_event = ['BufRead', 'CursorHold'] 172 | 173 | [[plugins]] 174 | repo = "jasonccox/vim-wayland-clipboard" 175 | on_event = ['BufRead', 'CursorHold'] 176 | 177 | [[plugins]] 178 | repo = "miyakogi/seiya.vim" 179 | on_event = ["ColorSchemePre", 'BufReadPre', 'CursorHold'] 180 | hook_source = """ 181 | let g:seiya_auto_enable=1 182 | let g:seiya_target_groups = has('nvim') ? ['guibg'] : ['ctermbg'] 183 | """ 184 | 185 | [[plugins]] 186 | repo = "wakatime/vim-wakatime" 187 | on_event = ['BufRead', 'CursorHold'] 188 | 189 | [[plugins]] 190 | repo = "easymotion/vim-easymotion" 191 | on_event = ['BufRead', 'CursorHold'] 192 | hook_source = """ 193 | nmap k (easymotion-overwin-line) 194 | """ 195 | 196 | [[plugins]] 197 | repo = "yuki-yano/fuzzy-motion.vim" 198 | depends = ['denops.vim', 'kensaku.vim'] 199 | on_cmd = ["FuzzyMotion"] 200 | hook_source = """ 201 | let g:fuzzy_motion_matchers = ['fzf', 'kensaku'] 202 | """ 203 | 204 | # [[plugins]] 205 | # repo = 'lambdalisue/kensaku.vim' 206 | # on_event = ['BufRead', 'CursorHold'] 207 | # on_event = ['VimEnter'] 208 | # on_source = 'denops.vim' 209 | 210 | [[plugins]] 211 | repo = "lambdalisue/kensaku-search.vim" 212 | on_event = ['BufRead', 'CursorHold'] 213 | hook_source = """" 214 | cnoremap (kensaku-search-replace) 215 | """ 216 | 217 | [[plugins]] 218 | repo = 'kat0h/bufpreview.vim' 219 | build = 'deno task prepare' 220 | on_cmd = ['PreviewMarkdown', 'PreviewMarkdownStop', 'PreviewMarkdownToggle'] 221 | 222 | [[plugins]] 223 | repo = 'lambdalisue/mr.vim' 224 | on_event = ['BufRead', 'CursorHold'] 225 | 226 | [[plugins]] 227 | repo = 'nathanaelkane/vim-indent-guides' 228 | on_event = ['BufRead', 'CursorHold'] 229 | 230 | # [[plugins]] 231 | # repo = 'sheerun/vim-polyglot' 232 | # on_event = ['BufRead', 'CursorHold'] 233 | 234 | [[plugins]] 235 | repo = 'luochen1990/rainbow' 236 | on_event = ['BufRead', 'CursorHold'] 237 | hook_source = ''' 238 | let g:rainbow_active = 1 239 | ''' 240 | 241 | [[plugins]] 242 | repo = 'editorconfig/editorconfig-vim' 243 | on_event = ['BufRead', 'CursorHold'] 244 | -------------------------------------------------------------------------------- /config/nvim/init.lua: -------------------------------------------------------------------------------- 1 | if vim.loader then 2 | vim.loader.enable() 3 | end 4 | 5 | -- start prelude 6 | local dpp_src = "$HOME/.cache/dpp/repos/github.com/Shougo/dpp.vim" 7 | vim.opt.runtimepath:prepend(dpp_src) 8 | 9 | local dpp = require("dpp") 10 | -- end prelude 11 | 12 | -- local dpp_base = "~/.cache/dpp/" 13 | local dppBase = "~/.cache/dpp" 14 | local dpp_config = "~/.config/nvim/dpp.ts" 15 | local denops_src = "~/.cache/dpp/repos/github.com/vim-denops/denops.vim" 16 | 17 | local ext_toml = "$HOME/.cache/dpp/repos/github.com/Shougo/dpp-ext-toml" 18 | local ext_lazy = "$HOME/.cache/dpp/repos/github.com/Shougo/dpp-ext-lazy" 19 | local ext_installer = "$HOME/.cache/dpp/repos/github.com/Shougo/dpp-ext-installer" 20 | local ext_git = "$HOME/.cache/dpp/repos/github.com/Shougo/dpp-protocol-git" 21 | 22 | vim.opt.runtimepath:append(ext_toml) 23 | vim.opt.runtimepath:append(ext_lazy) 24 | vim.opt.runtimepath:append(ext_installer) 25 | vim.opt.runtimepath:append(ext_git) 26 | vim.opt.runtimepath:prepend(denops_src) 27 | 28 | -- local fn = vim.fn 29 | 30 | -- dpp.load_state("~/.cache/dpp") 31 | -- dpp.make_state("~/.cache/dpp", "~/.config/nvim/dpp.ts") 32 | 33 | if dpp.load_state(dppBase) then 34 | vim.api.nvim_create_autocmd("User", { 35 | pattern = "DenopsReady", 36 | callback = function() 37 | vim.notify("dpp load_state() is failed") 38 | dpp.make_state(dppBase, dpp_config) 39 | end, 40 | }) 41 | end 42 | 43 | -- call dpp#min#load_state("~/.cache/dpp") 44 | -- call dpp#make_state("~/.cache/dpp", "~/.config/nvim/dpp.ts") 45 | 46 | vim.api.nvim_create_autocmd("User", { 47 | pattern = "Dpp:makeStatePost", 48 | callback = function() 49 | vim.notify("dpp make_state() is done") 50 | end, 51 | }) 52 | 53 | --------------------------------------------------------- 54 | 55 | vim.opt.runtimepath:append(vim.fn.expand("~/.config/nvim")) 56 | 57 | -- autocmd BufRead *.rs let g:rustfmt_autosave = 0 58 | vim.api.nvim_create_autocmd("BufRead", { 59 | pattern = "*.ab", 60 | command = "set filetype=amber", 61 | }) 62 | 63 | vim.api.nvim_create_autocmd("BufRead", { 64 | pattern = "*.astro", 65 | command = "set filetype=astro", 66 | }) 67 | 68 | vim.api.nvim_create_autocmd("BufRead", { 69 | pattern = "*.mbt", 70 | callback = function() 71 | vim.bo.filetype = "moonbit" 72 | 73 | local quickrun_config = vim.g.quickrun_config 74 | local moonbit = vim.fn["moonbit_settings#moonbit_quickrun"]() 75 | 76 | -- Vim scriptとLua間で辞書型/table型を操作するのが上手くいかない 77 | vim.g.quickrun_config["moonbit"] = moonbit 78 | vim.print(vim.g.quickrun_config) 79 | end, 80 | }) 81 | 82 | vim.api.nvim_create_autocmd("BufRead", { 83 | pattern = "rebar.config", 84 | command = "set filetype=erlang", 85 | }) 86 | 87 | vim.cmd("filetype indent plugin on") 88 | vim.cmd("syntax on") 89 | 90 | vim.api.nvim_create_user_command("DppInstall", "call dpp#async_ext_action('installer', 'install')", { nargs = 0 }) 91 | vim.api.nvim_create_user_command("DppUpdate", "call dpp#async_ext_action('installer', 'update')", { nargs = 0 }) 92 | vim.api.nvim_create_user_command("DppMakestate", function(val) 93 | dpp.make_state(dppBase, dpp_config) 94 | end, { nargs = 0 }) 95 | 96 | vim.api.nvim_create_user_command("Ddu", function(args) 97 | local subcmd = args.args 98 | print(subcmd) 99 | vim.fn["ddu#start"]({ sources = { { name = subcmd } } }) 100 | end, { nargs = 1 }) 101 | 102 | vim.api.nvim_create_autocmd({ "BufRead", "CursorHold", "InsertEnter" }, { 103 | callback = function() 104 | vim.opt.clipboard = "unnamedplus" 105 | require("configs/keymap") 106 | -- require("configs/cmd") 107 | 108 | -- vim.cmd("colorscheme gruvbox") 109 | -- vim.cmd("colorscheme wal") 110 | -- vim.cmd("colorscheme nord") 111 | -- vim.cmd("SeiyaEnable") 112 | end, 113 | }) 114 | 115 | -- vim.g.seiya_auto_enable = 1 116 | 117 | vim.cmd("inoremap jj ") 118 | vim.cmd("nnoremap noh") 119 | vim.cmd("nnoremap sv vs") 120 | vim.cmd("nnoremap s ") 121 | vim.cmd("set ignorecase") 122 | vim.cmd("set termguicolors") 123 | 124 | vim.cmd("au FileType * setlocal formatoptions-=r") 125 | vim.cmd("au FileType * setlocal formatoptions-=o") 126 | vim.cmd("au FileType *.hx set ft=haxe") 127 | 128 | vim.cmd("au BufRead .denoflare set filetype=json") 129 | 130 | vim.opt.laststatus = 3 131 | vim.opt.cursorline = true 132 | 133 | -- vim.opt.relativenumber = true 134 | 135 | vim.cmd("set completeopt+=noinsert") 136 | 137 | vim.keymap.set("n", "k", function() 138 | print("Hop!") 139 | end) 140 | 141 | vim.cmd([[const mapleader = " "]]) 142 | 143 | vim.opt.runtimepath:append(vim.fn.expand("~/ghq/github.com/coma/memos.vim")) 144 | vim.opt.runtimepath:append(vim.fn.expand("~/ghq/github.com/Comamoca/vimskey")) 145 | 146 | -- vim.opt.runtimepath:append(vim.fn.expand("~/ghq/github.com/Comamoca/sandbox/fennel_nvim")) 147 | -- vim.opt.runtimepath:append(vim.fn.expand("~/ghq/github.com/Comamoca/sandbox/calc.nvim")) 148 | -- vim.opt.runtimepath:append(vim.fn.expand("~/ghq/github.com/Comamoca/sandbox/calc.nvim")) 149 | 150 | vim.opt.runtimepath:append(vim.fn.expand("~/.ghq/github.com/Comamoca/sandbox/ex_gleam_denops")) 151 | vim.opt.runtimepath:append(vim.fn.expand("~/.ghq/github.com/coma/vim-spotify")) 152 | -- vim.opt.runtimepath:append(vim.fn.expand("~/.ghq/github.com/coma/vim-palette")) 153 | -- vim.opt.runtimepath:append(vim.fn.expand("~/.ghq/github.com/coma/octagon.nvim")) 154 | -- vim.opt.runtimepath:append(vim.fn.expand("~/.ghq/github.com/coma/vim-repl")) 155 | -- vim.opt.runtimepath:append(vim.fn.expand("~/.ghq/github.com/coma/vim-task")) 156 | -- vim.opt.runtimepath:append(vim.fn.expand("~/.ghq/github.com/coma/vim-codecrop")) 157 | 158 | -- ddu local 159 | -- vim.opt.runtimepath:append(vim.fn.expand("~/.ghq/github.com/Shougo/ddu-ui-ff")) 160 | 161 | vim.opt.virtualedit = "none" 162 | 163 | vim.cmd([[let maplocalleader = ' ']]) 164 | 165 | -- vim.opt.runtimepath:append(vim.fn.expand("~/.ghq/github.com/Comamoca/sandbox/ex_gleam_denops")) 166 | -- vim.opt.runtimepath:append(vim.fn.expand("~/.ghq/github.com/coma/vim-yasunori")) 167 | 168 | -- vim.opt.runtimepath:append(vim.fn.expand("~/.ghq/github.com/Comamoca/vim-spotify")) 169 | -- vim.opt.runtimepath:append(vim.fn.expand("~/.ghq/github.com/coma/vim-moonbit-settings")) 170 | 171 | vim.opt.expandtab = true 172 | 173 | -- vim.opt.runtimepath:append(vim.fn.expand("~/.ghq/github.com/coma/vim-junky")) 174 | vim.g.junky_path = "~/.junky" 175 | 176 | -- vim.opt.runtimepath:append(vim.fn.expand("~/.ghq/github.com/Shougo/ddt.vim")) 177 | 178 | -- vim.opt.runtimepath:append(vim.fn.expand("~/.ghq/github.com/coma/vim-morg")) 179 | 180 | vim.opt.foldmethod = "marker" 181 | 182 | vim.api.nvim_create_autocmd("BufEnter", { 183 | pattern = { "*.md", "*.markdown" }, 184 | callback = function() 185 | vim.keymap.set("n", "er", "call morg#run()") 186 | end, 187 | }) 188 | 189 | -- vim.g['denops_server_addr'] = "127.0.0.1:32123" 190 | 191 | -- require("configs/kastel") 192 | -------------------------------------------------------------------------------- /config/waybar/style.css: -------------------------------------------------------------------------------- 1 | /* @import '../../.cache/wal/colors-waybar.css'; */ 2 | 3 | @import './mocha.css'; 4 | 5 | /* @define-color bg #161320; */ 6 | 7 | @define-color critical #BF616A; 8 | 9 | * { 10 | border: none; 11 | border-radius: 10px; 12 | font-family: "JetbrainsMono Nerd Font" ; 13 | font-size: 15px; 14 | min-height: 10px; 15 | } 16 | 17 | #workspaces { 18 | margin-top: 6px; 19 | margin-left: 8px; 20 | } 21 | 22 | #workspaces button { 23 | color: @text; 24 | background: @surface2; 25 | margin-left: 2px; 26 | margin-right: 2px; 27 | } 28 | 29 | #workspaces button.focused { 30 | border-radius: 10px; 31 | color: @mantle; 32 | background: @lavender; 33 | } 34 | 35 | #workspaces button.active { 36 | border-radius: 10px; 37 | color: @mantle; 38 | background: @lavender; 39 | } 40 | 41 | window#waybar { 42 | background: transparent; 43 | } 44 | 45 | window#waybar.hidden { 46 | opacity: 0.2; 47 | } 48 | 49 | #window { 50 | margin-top: 6px; 51 | padding-left: 10px; 52 | padding-right: 10px; 53 | border-radius: 10px; 54 | transition: none; 55 | color: transparent; 56 | background: transparent; 57 | } 58 | 59 | #tags { 60 | margin-top: 6px; 61 | margin-left: 12px; 62 | font-size: 4px; 63 | margin-bottom: 0px; 64 | border-radius: 10px; 65 | background: @background; 66 | transition: none; 67 | } 68 | 69 | #network { 70 | margin-top: 6px; 71 | margin-left: 8px; 72 | padding-left: 10px; 73 | padding-right: 10px; 74 | margin-bottom: 0px; 75 | border-radius: 10px; 76 | transition: none; 77 | color: @background; 78 | background: #bd93f9; 79 | } 80 | 81 | #pulseaudio { 82 | margin-top: 6px; 83 | margin-left: 8px; 84 | padding-left: 10px; 85 | padding-right: 10px; 86 | margin-bottom: 0px; 87 | border-radius: 10px; 88 | transition: none; 89 | color: @text; 90 | background: @transparent; 91 | transition: color 1s linear; 92 | } 93 | 94 | #pulseaudio:hover { 95 | transition: color 0.1s linear; 96 | color: @lavender; 97 | } 98 | 99 | #battery { 100 | margin-top: 6px; 101 | margin-left: 8px; 102 | padding-left: 10px; 103 | padding-right: 10px; 104 | margin-bottom: 0px; 105 | border-radius: 10px; 106 | transition: none; 107 | color: @text; 108 | background: @base; 109 | transition: color 1s linear; 110 | } 111 | 112 | #battery:hover { 113 | transition: color 0.1s linear; 114 | color: @flamingo; 115 | } 116 | 117 | #battery.charging, #battery.plugged { 118 | color: @text; 119 | background-color: @color4; 120 | } 121 | 122 | #battery.critical:not(.charging) { 123 | background-color: @color4; 124 | color: @background; 125 | animation-name: blink; 126 | animation-duration: 0.5s; 127 | animation-timing-function: linear; 128 | animation-iteration-count: infinite; 129 | animation-direction: alternate; 130 | } 131 | 132 | @keyframes blink { 133 | to { 134 | background-color: @critical; 135 | color: @color4; 136 | } 137 | } 138 | 139 | #backlight { 140 | margin-top: 6px; 141 | margin-left: 8px; 142 | padding-left: 10px; 143 | padding-right: 10px; 144 | margin-bottom: 0px; 145 | border-radius: 10px; 146 | transition: none; 147 | color: @text; 148 | background: @base; 149 | transition: color 1s linear; 150 | } 151 | 152 | #backlight:hover { 153 | transition: color 0.1s linear; 154 | color: @yellow; 155 | } 156 | 157 | #clock { 158 | margin-top: 6px; 159 | margin-left: 8px; 160 | padding-left: 10px; 161 | padding-right: 10px; 162 | margin-bottom: 0px; 163 | border-radius: 10px; 164 | transition: none; 165 | color: @text; 166 | background: @bae; 167 | background: @base; 168 | transition: color 1s linear; 169 | } 170 | 171 | #clock:hover { 172 | transition: color 0.1s linear; 173 | color: @maroon ; 174 | } 175 | 176 | 177 | #memory { 178 | margin-top: 6px; 179 | margin-left: 8px; 180 | padding-left: 10px; 181 | margin-bottom: 0px; 182 | padding-right: 10px; 183 | border-radius: 10px; 184 | transition: none; 185 | color: @text; 186 | background: @base; 187 | transition: color 1s linear; 188 | } 189 | 190 | #memory:hover { 191 | transition: color 0.1s linear; 192 | color: @maroon; 193 | } 194 | 195 | #cpu { 196 | margin-top: 6px; 197 | margin-left: 8px; 198 | padding-left: 10px; 199 | margin-bottom: 0px; 200 | padding-right: 10px; 201 | border-radius: 10px; 202 | transition: none; 203 | color: @text; 204 | background: @base; 205 | transition: color 1s linear; 206 | } 207 | 208 | #cpu:hover { 209 | transition: color 0.1s linear; 210 | color: @yellow; 211 | } 212 | 213 | #tray { 214 | margin-top: 6px; 215 | margin-left: 8px; 216 | padding-left: 10px; 217 | margin-bottom: 0px; 218 | padding-right: 10px; 219 | border-radius: 10px; 220 | transition: none; 221 | color: #B5E8E0; 222 | background: @background; 223 | } 224 | 225 | #custom-launcher { 226 | font-size: 24px; 227 | margin-top: 6px; 228 | margin-left: 8px; 229 | padding-left: 10px; 230 | padding-right: 5px; 231 | border-radius: 10px; 232 | transition: none; 233 | color: @blue; 234 | background: @background; 235 | transition: color 1s linear; 236 | } 237 | 238 | #custom-launcher:hover { 239 | transition: color 0.1s linear; 240 | color: @sky; 241 | } 242 | 243 | #custom-power { 244 | font-size: 20px; 245 | margin-top: 6px; 246 | margin-left: 5px; 247 | margin-right: 5px; 248 | padding-left: 5px; 249 | padding-right: 5px; 250 | margin-bottom: 0px; 251 | border-radius: 10px; 252 | transition: none; 253 | color: @text; 254 | background: @base; 255 | transition: color 1s linear; 256 | } 257 | 258 | #custom-power:hover { 259 | transition: color 0.1s linear; 260 | color: @pink; 261 | } 262 | 263 | #custom-wallpaper { 264 | margin-top: 6px; 265 | margin-left: 8px; 266 | padding-left: 10px; 267 | padding-right: 10px; 268 | margin-bottom: 0px; 269 | border-radius: 10px; 270 | transition: none; 271 | color: @background; 272 | background: @color11; 273 | } 274 | 275 | #custom-updates { 276 | margin-top: 6px; 277 | margin-left: 8px; 278 | padding-left: 10px; 279 | padding-right: 10px; 280 | margin-bottom: 0px; 281 | border-radius: 10px; 282 | transition: none; 283 | color: @background; 284 | background: @color11; 285 | } 286 | 287 | #custom-media { 288 | margin-top: 6px; 289 | margin-left: 8px; 290 | padding-left: 10px; 291 | padding-right: 10px; 292 | margin-bottom: 0px; 293 | border-radius: 10px; 294 | transition: none; 295 | color: @text; 296 | background: @base; 297 | transition: color 1s linear; 298 | } 299 | 300 | #custom-media:hover { 301 | transition: color 0.1s linear; 302 | color: @green; 303 | } 304 | 305 | #custom-notification { 306 | font-size: 15px; 307 | margin-top: 6px; 308 | margin-left: 8px; 309 | padding-left: 10px; 310 | padding-right: 5px; 311 | border-radius: 10px; 312 | transition: none; 313 | color: @text; 314 | background: @base; 315 | transition: color 1s linear; 316 | } 317 | 318 | #custom-notification:hover { 319 | transition: color 0.1s linear; 320 | color: @sapphire; 321 | } 322 | -------------------------------------------------------------------------------- /hosts/wsl/default.nix: -------------------------------------------------------------------------------- 1 | { 2 | inputs, 3 | config, 4 | pkgs, 5 | ... 6 | }: 7 | let 8 | xremap = import ./xremap.nix { inherit pkgs; }; 9 | 10 | old-pkgs = import (builtins.fetchTarball { 11 | url = "https://github.com/NixOS/nixpkgs/archive/e89cf1c932006531f454de7d652163a9a5c86668.tar.gz"; 12 | sha256 = "sha256:09cbqscrvsd6p0q8rswwxy7pz1p1qbcc8cdkr6p6q8sx0la9r12c"; 13 | }) { }; 14 | in 15 | { 16 | imports = 17 | [ 18 | # Include the results of the hardware scan. 19 | # ./hardware-configuration.nix 20 | # ./disko.nix 21 | ] 22 | 23 | ++ (with inputs.nixos-hardware.nixosModules; [ 24 | common-pc-ssd 25 | ]); 26 | 27 | fonts = { 28 | packages = with pkgs; [ 29 | udev-gothic-nf 30 | noto-fonts-cjk-serif 31 | noto-fonts-cjk-sans 32 | noto-fonts-emoji 33 | twemoji-color-font 34 | # nerd-fonts 35 | ]; 36 | fontDir.enable = true; 37 | fontconfig = { 38 | defaultFonts = { 39 | serif = [ 40 | "Noto Serif CJK JP" 41 | "Noto Color Emoji" 42 | ]; 43 | sansSerif = [ 44 | "Noto Sans CJK JP" 45 | "Noto Color Emoji" 46 | ]; 47 | monospace = [ 48 | "UDEV Gothic NFLG" 49 | # "JetBrainsMono Nerd Font" 50 | "Noto Color Emoji" 51 | ]; 52 | emoji = [ "Noto Color Emoji" ]; 53 | }; 54 | }; 55 | }; 56 | 57 | nix = { 58 | settings = { 59 | auto-optimise-store = true; 60 | experimental-features = [ 61 | "nix-command" 62 | "flakes" 63 | ]; 64 | trusted-users = [ 65 | "root" 66 | "coma" 67 | ]; 68 | }; 69 | gc = { 70 | automatic = true; 71 | dates = "weekly"; 72 | options = "--delete-older-than 7d"; 73 | }; 74 | }; 75 | 76 | catppuccin.enable = true; 77 | 78 | networking.hostName = "comabook"; # Define your hostname. 79 | # networking.wireless.enable = true; # Enables wireless support via wpa_supplicant. 80 | 81 | # Enable networking 82 | networking.networkmanager.enable = true; 83 | 84 | services.ollama = { 85 | enable = true; 86 | }; 87 | 88 | services.xremap = { 89 | enable = true; 90 | serviceMode = "user"; 91 | userName = "coma"; 92 | 93 | config = xremap.xremap-config; 94 | }; 95 | 96 | # NextDNS 97 | services.nextdns = { 98 | enable = true; 99 | arguments = [ 100 | "-config" 101 | "10.0.3.0/24=abcdef" 102 | "-cache-size" 103 | "10MB" 104 | ]; 105 | }; 106 | 107 | # use NextDNS 108 | networking.nameservers = [ 109 | "2a07:a8c0::f2:3b72" 110 | "2a07:a8c1::f2:3b72" 111 | ]; 112 | 113 | # Set your time zone. 114 | time.timeZone = "Asia/Tokyo"; 115 | 116 | # Select internationalisation properties. 117 | i18n.defaultLocale = "ja_JP.UTF-8"; 118 | 119 | i18n.extraLocaleSettings = { 120 | LC_ADDRESS = "en_US.UTF-8"; 121 | LC_IDENTIFICATION = "en_US.UTF-8"; 122 | LC_MEASUREMENT = "en_US.UTF-8"; 123 | LC_MONETARY = "en_US.UTF-8"; 124 | LC_NAME = "en_US.UTF-8"; 125 | LC_NUMERIC = "en_US.UTF-8"; 126 | LC_PAPER = "en_US.UTF-8"; 127 | LC_TELEPHONE = "en_US.UTF-8"; 128 | LC_TIME = "en_US.UTF-8"; 129 | }; 130 | 131 | # Keybase 132 | services.keybase.enable = true; 133 | 134 | # Enable CUPS to print documents. 135 | services.printing.enable = true; 136 | 137 | # Enable sound with pipewire. 138 | # hardware.pulseaudio.enable = false; 139 | services.pulseaudio.enable = false; 140 | 141 | security.rtkit.enable = true; 142 | services.pipewire = { 143 | enable = true; 144 | alsa.enable = true; 145 | alsa.support32Bit = true; 146 | pulse.enable = true; 147 | }; 148 | 149 | services.displayManager.ly.enable = true; 150 | 151 | # Define a user account. Don't forget to set a password with ‘passwd’. 152 | users.users.coma = { 153 | isNormalUser = true; 154 | description = "Comamoca"; 155 | extraGroups = [ 156 | "networkmanager" 157 | "wheel" 158 | "kvm" 159 | "adbusers" 160 | "plugdev" 161 | "inputs" 162 | ]; 163 | packages = with pkgs; [ 164 | # thunderbird 165 | ]; 166 | shell = pkgs.fish; 167 | }; 168 | 169 | # GnuPG 170 | programs.gnupg.agent = { 171 | enable = true; 172 | pinentryPackage = pkgs.pinentry-gnome3; 173 | # pinentryPackage = pkgs.pinentry-curses; 174 | # pinentryPackage = pkgs.pinentry-gnome3; 175 | # settings = { 176 | # pinentry-program = "${(pkgs.lib.mkForce pkgs.pinentry-gnome3)}"; 177 | # }; 178 | }; 179 | 180 | # Allow unfree packages 181 | nixpkgs.config.allowUnfree = true; 182 | programs = { 183 | neovim = { 184 | enable = true; 185 | defaultEditor = true; # $EDITOR=nvimに設定 186 | viAlias = true; 187 | vimAlias = true; 188 | }; 189 | starship = { 190 | enable = true; 191 | }; 192 | fish = { 193 | enable = true; 194 | }; 195 | }; 196 | 197 | virtualisation = { 198 | docker = { 199 | enable = true; 200 | rootless = { 201 | enable = true; 202 | setSocketVariable = true; 203 | }; 204 | }; 205 | }; 206 | 207 | # services.flatpak.enable = true; 208 | xdg.portal.enable = true; 209 | 210 | # List packages installed in system profile. To search, run: 211 | # $ nix search wget 212 | environment.systemPackages = with pkgs; [ 213 | # gparted 214 | 215 | # showmethekey 216 | 217 | # gnupg 218 | light 219 | 220 | # waybar 221 | 222 | # android-studio 223 | 224 | arduino 225 | arduino-cli 226 | 227 | kitty 228 | 229 | deno 230 | wlogout 231 | # wofiif 232 | 233 | # cursor theme 234 | phinger-cursors 235 | ]; 236 | 237 | # Some programs need SUID wrappers, can be configured further or are 238 | # started in user sessions. 239 | # programs.mtr.enable = true; 240 | # programs.gnupg.agent = { 241 | # enable = true; 242 | # enableSSHSupport = true; 243 | # }; 244 | 245 | # List services that you want to enable: 246 | 247 | # Enable the OpenSSH daemon. 248 | # services.openssh.enable = true; 249 | 250 | programs.nix-ld.enable = true; 251 | 252 | # Android Debug Bridge 253 | # programs.adb.enable = true; 254 | 255 | # Open ports in the firewall. 256 | # networking.firewall.allowedTCPPorts = [ ... ]; 257 | # networking.firewall.allowedUDPPorts = [ ... ]; 258 | # Or disable the firewall altogether. 259 | # networking.firewall.enable = false; 260 | 261 | # This value determines the NixOS release from which the default 262 | # settings for stateful data, like file locations and database versions 263 | # on your system were taken. It‘s perfectly fine and recommended to leave 264 | # this value at the release version of the first install of this system. 265 | # Before changing this value read the documentation for this option 266 | # (e.g. man configuration.nix or on https://nixos.org/nixos/options.html). 267 | system.stateVersion = "24.05"; # Did you read the comment? 268 | } 269 | -------------------------------------------------------------------------------- /flake.nix: -------------------------------------------------------------------------------- 1 | { 2 | #ref: https://github.com/yasunori0418/dotfiles/blob/485eee2794c2e5217823b7bba5201e9f9fe16d1e/flake.nix#L2 3 | description = "My dotfiles, all my effort, my sword."; 4 | 5 | inputs = { 6 | nixpkgs.url = "github:NixOS/nixpkgs/nixpkgs-unstable"; 7 | nixos-hardware.url = "github:NixOS/nixos-hardware/master"; 8 | 9 | chaotic.url = "github:chaotic-cx/nyx/nyxpkgs-unstable"; 10 | 11 | home-manager = { 12 | url = "github:nix-community/home-manager"; 13 | inputs.nixpkgs.follows = "nixpkgs"; 14 | }; 15 | 16 | mozilla-overlay.url = "github:mozilla/nixpkgs-mozilla"; 17 | catppuccin.url = "github:catppuccin/nix"; 18 | treefmt-nix.url = "github:numtide/treefmt-nix"; 19 | neovim-nightly-overlay.url = "github:nix-community/neovim-nightly-overlay"; 20 | emacs-overlay.url = "github:nix-community/emacs-overlay"; 21 | emacs.url = "github:cmacrae/emacs"; 22 | nak.url = "github:comamoca/flake-nak"; 23 | nur-packages.url = "github:Comamoca/nur-packages"; 24 | disko = { 25 | url = "github:nix-community/disko/latest"; 26 | inputs.nixpkgs.follows = "nixpkgs"; 27 | }; 28 | xremap.url = "github:xremap/nix-flake"; 29 | sops-nix.url = "github:Mic92/sops-nix"; 30 | ghostty.url = "github:ghostty-org/ghostty"; 31 | lem.url = "github:lem-project/lem"; 32 | 33 | nix-index-database = { 34 | url = "github:nix-community/nix-index-database"; 35 | inputs.nixpkgs.follows = "nixpkgs"; 36 | }; 37 | 38 | nixos-wsl.url = "github:nix-community/NixOS-WSL/main"; 39 | niri.url = "github:sodiboo/niri-flake"; 40 | deno-overlay.url = "github:haruki7049/deno-overlay"; 41 | 42 | nix-ld = { 43 | url = "github:Mic92/nix-ld"; 44 | inputs.nixpkgs.follows = "nixpkgs"; 45 | }; 46 | 47 | gleam-overlay.url = "github:Comamoca/gleam-overlay"; 48 | }; 49 | 50 | outputs = 51 | { 52 | self, 53 | nixpkgs, 54 | nixos-hardware, 55 | home-manager, 56 | treefmt-nix, 57 | chaotic, 58 | nix-ld, 59 | gleam-overlay, 60 | ... 61 | }@inputs: 62 | let 63 | system = "x86_64-linux"; 64 | pkgs = import nixpkgs { inherit system; config.allowUnfree = true; }; 65 | treefmtEval = treefmt-nix.lib.evalModule pkgs ./treefmt.nix; 66 | 67 | overlays = [ 68 | inputs.neovim-nightly-overlay.overlays.default 69 | (import inputs.emacs-overlay) 70 | inputs.nak.overlays.default 71 | inputs.deno-overlay.overlays.deno-overlay 72 | # (import emacs.overlay) 73 | inputs.mozilla-overlay.overlays.firefox 74 | inputs.niri.overlays.niri 75 | inputs.gleam-overlay.overlays.default 76 | ]; 77 | in 78 | # code = _: s: s; 79 | { 80 | formatter.x86_64-linux = treefmtEval.config.build.wrapper; 81 | 82 | checks.x86_64-linux = { 83 | format = treefmtEval.config.build.wrapper; 84 | }; 85 | 86 | nixosConfigurations = { 87 | WSL = inputs.nixpkgs.lib.nixosSystem rec { 88 | system = "x86_64-linux"; 89 | modules = [ 90 | inputs.nixos-wsl.nixosModules.default 91 | home-manager.nixosModules.home-manager 92 | { 93 | system.stateVersion = "24.05"; 94 | wsl.enable = true; 95 | environment.systemPackages = with pkgs; [ 96 | vim 97 | ]; 98 | } 99 | ]; 100 | }; 101 | 102 | NixOS = inputs.nixpkgs.lib.nixosSystem rec { 103 | system = "x86_64-linux"; 104 | modules = [ 105 | inputs.catppuccin.nixosModules.catppuccin 106 | inputs.nix-index-database.nixosModules.nix-index 107 | # home-manager.nixosModules.home-manager 108 | inputs.xremap.nixosModules.default 109 | inputs.niri.nixosModules.niri 110 | # disko.nixosModules.disko 111 | # ({ config, ... }: { 112 | # # system.stateVersion = config.system.stateVersion; 113 | # disko.devices.disk.main.imageSize = "10G"; 114 | # }) 115 | ./configuration.nix 116 | chaotic.nixosModules.nyx-cache 117 | chaotic.nixosModules.nyx-overlay 118 | chaotic.nixosModules.nyx-registry 119 | nix-ld.nixosModules.nix-ld 120 | { 121 | nixpkgs.overlays = overlays ++ [ 122 | (final: prev: { 123 | xremap = inputs.xremap.packages.${system}.default; 124 | lem-ncurses = inputs.lem.packages.${system}.lem-ncurses; 125 | lem-sdl2 = inputs.lem.packages.${system}.lem-sdl2; 126 | }) 127 | ]; 128 | } 129 | ]; 130 | specialArgs = { 131 | inherit inputs; 132 | }; 133 | }; 134 | }; 135 | 136 | homeConfigurations = { 137 | WSL = inputs.home-manager.lib.homeManagerConfiguration rec { 138 | pkgs = import inputs.nixpkgs { 139 | system = "x86_64-linux"; 140 | config.allowUnfree = true; 141 | }; 142 | extraSpecialArgs = { 143 | inherit inputs; 144 | }; 145 | modules = [ 146 | # ./home.nix 147 | ./home-manager/wsl 148 | inputs.catppuccin.homeModules.catppuccin 149 | inputs.sops-nix.homeManagerModules.sops 150 | inputs.nix-index-database.homeModules.nix-index 151 | { 152 | nixpkgs.overlays = overlays ++ [ 153 | (final: prev: { 154 | xremap = inputs.xremap.packages.${pkgs.system}.default; 155 | }) 156 | ]; 157 | } 158 | ]; 159 | }; 160 | 161 | Home = inputs.home-manager.lib.homeManagerConfiguration rec { 162 | pkgs = import inputs.nixpkgs { 163 | system = "x86_64-linux"; 164 | config.allowUnfree = true; 165 | }; 166 | extraSpecialArgs = { 167 | inherit inputs; 168 | }; 169 | modules = [ 170 | ./home.nix 171 | inputs.catppuccin.homeModules.catppuccin 172 | inputs.sops-nix.homeManagerModules.sops 173 | inputs.nix-index-database.homeModules.nix-index 174 | { 175 | nixpkgs.overlays = overlays ++ [ 176 | (final: prev: { 177 | # nak = inputs.nak.packages.x86_64-linux.default; 178 | ghostty = inputs.ghostty.packages.x86_64-linux.default; 179 | xremap = inputs.xremap.packages.${pkgs.system}.default; 180 | }) 181 | ]; 182 | } 183 | ]; 184 | }; 185 | }; 186 | 187 | devShells.x86_64-linux.default = pkgs.mkShell { 188 | packages = with pkgs; [ 189 | sops 190 | age 191 | 192 | lua-language-server 193 | stylua 194 | nil 195 | ]; 196 | 197 | inputsFrom = [ 198 | ]; 199 | 200 | # shellHook = '' 201 | # export DEBUG=1 202 | # ''; 203 | }; 204 | }; 205 | } 206 | -------------------------------------------------------------------------------- /config/nvim/ddc.toml: -------------------------------------------------------------------------------- 1 | # AutoComplete plugin 2 | [[plugins]] 3 | repo = 'Shougo/ddc.vim' 4 | # on_event = ['InsertEnter'] 5 | on_event = ['BufRead', 'CursorHold'] 6 | # on_event = ['BufEnter'] 7 | depends = ['denops.vim'] 8 | lua_source = ''' 9 | local ddc_custom_patch_global = vim.fn["ddc#custom#patch_global"] 10 | 11 | local pum_map_select_relative = vim.fn["pum#map#select_relative"] 12 | local pum_map_confirm = vim.fn["pum#map#confirm"] 13 | local pum_map_cancel = vim.fn["pum#map#cancel"] 14 | local pum_visible = vim.fn["pum#visible"] 15 | local pum_entered = vim.fn["pum#entered"] 16 | 17 | vim.fn["ddc#custom#load_config"](vim.fn.expand("~/.config/nvim/ddc.ts")) 18 | vim.fn["ddc#enable"]({context_filetype = "treesitter"}) 19 | 20 | -- vim.api.nvim_create_autocmd("InsertEnter", { 21 | -- callback = function(event) 22 | -- end 23 | -- }) 24 | 25 | vim.keymap.set({ "i", "s" }, "", function() 26 | return vim.fn["vsnip#available"](1) == 1 and "(vsnip-expand-or-jump)" or "" 27 | end, { expr = true, noremap = false }) 28 | 29 | vim.keymap.set({ "i", "s" }, "", function() 30 | return vim.fn["vsnip#jumpable"](1) == 1 and "(vsnip-jump-next)" or "" 31 | end, { expr = true, noremap = false }) 32 | 33 | vim.keymap.set({ "i", "s" }, "", function() 34 | return vim.fn["vsnip#jumpable"](-1) == 1 and "(vsnip-jump-prev)" or "" 35 | end, { expr = true, noremap = false }) 36 | 37 | vim.keymap.set("i", "", function() 38 | pum_map_select_relative(-1) 39 | end, {}) 40 | 41 | vim.keymap.set("i", "", function() 42 | pum_map_select_relative(1) 43 | end, {}) 44 | 45 | vim.keymap.set("i", "", function() 46 | return 'call pum#map#confirm()' 47 | end, { expr = true, silent = true }) 48 | 49 | vim.keymap.set("i", "", function() 50 | return pum_visible() and 'call pum#map#confirm()' or '' 51 | end, { expr = true, silent = true }) 52 | 53 | -- vim.keymap.set("i", "", function() 54 | -- return 'call pum#map#confirm()' 55 | -- end, { expr = true, silent = true }) 56 | 57 | -- vim.cmd([[inoremap pum#visible() ? 'call pum#map#confirm()' : '']]) 58 | 59 | -- vim.keymap.set({ "n", "s" }, "", [[(vsnip-select-text)]], { expr = true, noremap = false }) 60 | -- vim.keymap.set({ "n", "s" }, "", [[(vsnip-cut-text)]], { expr = true, noremap = false }) 61 | ''' 62 | 63 | [[plugins]] 64 | repo = 'Shougo/pum.vim' 65 | on_source = 'ddc.vim' 66 | 67 | [[plugins]] 68 | repo = 'Shougo/ddc-ui-pum' 69 | on_source = 'ddc.vim' 70 | 71 | # [[plugins]] 72 | # repo = 'Shougo/ddc-ui-native' 73 | # on_source = 'ddc.vim' 74 | 75 | # [[plugins]] 76 | # repo = "uga-rosa/ddc-source-vsnip" 77 | # on_source = 'ddc.vim' 78 | 79 | [[plugins]] 80 | repo = 'Shougo/ddc-around' 81 | on_source = 'ddc.vim' 82 | 83 | [[plugins]] 84 | repo = 'Shougo/ddc-matcher_head' 85 | on_source = 'ddc.vim' 86 | 87 | [[plugins]] 88 | repo = 'Shougo/ddc-sorter_rank' 89 | on_source = 'ddc.vim' 90 | 91 | [[plugins]] 92 | repo = 'Shougo/ddc-filter-sorter_head' 93 | on_source = 'ddc.vim' 94 | 95 | [[plugins]] 96 | repo = "Shougo/ddc-source-lsp" 97 | on_source = 'nvim-lspconfig' 98 | 99 | [[plugins]] 100 | repo = "uga-rosa/ddc-source-lsp-setup" 101 | on_source = 'nvim-lspconfig' 102 | # on_source = 'ddc.vim' 103 | 104 | [[plugins]] 105 | repo = 'matsui54/denops-signature_help' 106 | # on_source = 'ddc.vim' 107 | lua_source = ''' 108 | vim.fn["signature_help#enable"]() 109 | ''' 110 | 111 | [[plugins]] 112 | repo = 'matsui54/denops-popup-preview.vim' 113 | on_source = 'ddc.vim' 114 | hook_source = ''' 115 | " call popup_preview#enable() 116 | ''' 117 | 118 | [[plugins]] 119 | repo = 'tani/ddc-path' 120 | on_source = 'ddc.vim' 121 | 122 | [[plugins]] 123 | repo = 'LumaKernel/ddc-source-file' 124 | on_source = 'ddc.vim' 125 | 126 | # Snippet Engine 127 | [[plugins]] 128 | repo = 'hrsh7th/vim-vsnip' 129 | on_source = 'ddc.vim' 130 | lua_source = """ 131 | vim.g.vsnip_filetypes = { 132 | javascriptreact = "javascript", 133 | typescriptreact = "typescript", 134 | } 135 | 136 | vim.g.vsnip_snippet_dirs = { 137 | -- vim.fn.expand("~/.cache/dpp/repos/github.com/rafamadriz/friendly-snippets/snippets"), 138 | vim.fn.expand("~/.vsnip/snippets") 139 | } 140 | """ 141 | 142 | [[plugins]] 143 | repo = 'rafamadriz/friendly-snippets' 144 | on_source = 'ddc.vim' 145 | 146 | [[plugins]] 147 | repo = 'tani/ddc-fuzzy' 148 | on_source = 'ddc.vim' 149 | 150 | [[plugins]] 151 | repo = 'matsui54/ddc-matcher_fuzzy' 152 | on_source = 'ddc.vim' 153 | 154 | [[plugins]] 155 | repo = 'uga-rosa/ddc-source-vsnip' 156 | on_source = 'ddc.vim' 157 | 158 | [[plugins]] 159 | repo = 'uga-rosa/denippet.vim' 160 | on_source = 'ddc.vim' 161 | 162 | # SKK 163 | [[plugins]] 164 | repo = "vim-skk/skkeleton" 165 | on_source = 'ddc.vim' 166 | hook_source = ''' 167 | call skkeleton#azik#add_table("jis") 168 | 169 | call skkeleton#config(#{ 170 | \ globalDictionaries: [ "~/.skk-dict/SKK-JISYO.L", "~/.skk-dict/SKK-JISYO.im@sparql.all.utf8" ], 171 | \ databasePath: "~/.vim/skk/database", 172 | \ kanaTable: "azik", 173 | \ eggLikeNewline: v:true 174 | \ }) 175 | 176 | 177 | call skkeleton#register_keymap('henkan', "<", 'purgeCandidate') 178 | call skkeleton#register_keymap('henkan', "X", '') 179 | 180 | call skkeleton#register_keymap('henkan', "", 'purgeCandidate') 181 | call skkeleton#register_keymap('henkan', "X", '') 182 | 183 | call skkeleton#register_keymap('input', ';', 'henkanPoint') 184 | 185 | 186 | autocmd InsertEnter * ++once call skkeleton#register_kanatable('azik', { 187 | \ 'jj': 'escape', 188 | \ '@': 'katakana', 189 | \ '': ['じゅん', ''], 190 | \ 'i': ['じ', ''], 191 | \ 'p': ['じょう', ''], 192 | \ 'o': ['じょ', ''], 193 | \ 'k': ['じん', ''], 194 | \ 'u': ['じゅ', ''], 195 | \ 'l': ['っ', ''], 196 | \ 'la': ['', ''], 197 | \ 'li': ['', ''], 198 | \ 'lu': ['', ''], 199 | \ 'le': ['', ''], 200 | \ 'lo': ['', ''], 201 | \ 'xxa': ['ぁ', ''], 202 | \ 'xxi': ['ぃ', ''], 203 | \ 'xxu': ['ぅ', ''], 204 | \ 'xxe': ['ぇ', ''], 205 | \ 'xxo': ['ぉ', ''], 206 | \ 'n': ['ん', ''], 207 | \ 'z=': ['=', ''], 208 | \ 'z~': ['~', ''], 209 | \ 'z ': [' ', ''], 210 | \ 'z:': [':', ''], 211 | \ }) 212 | 213 | 214 | inoremap (skkeleton-enable) 215 | inoremap (skkeleton-disable) 216 | ''' 217 | 218 | [[plugins]] 219 | repo = 'NI57721/skkeleton-azik-kanatable' 220 | on_source = 'skkeleton' 221 | 222 | [[plugins]] 223 | repo = "gamoutatsumi/ddc-emoji" 224 | on_source = 'skkeleton' 225 | 226 | [[plugins]] 227 | repo = "andymass/vim-matchup" 228 | on_source = "" 229 | 230 | [[plugins]] 231 | repo = 'matsui54/ddc-source-dictionary' 232 | on_source = 'ddc.vim' 233 | hook_source = ''' 234 | call ddc#custom#patch_global('sourceParams', { 235 | \ 'dictionary': { 'dictPaths': [ 236 | \ expand("~/.spell-dict/programming-english-dict"), 237 | \ expand("~/.spell-dict/dict.txt"), 238 | \ ], 239 | \ 'smartCase': v:true, 240 | \ 'isVolatile': v:true, 241 | \ } 242 | \ }) 243 | 244 | call ddc#custom#patch_global('sources', ['dictionary']) 245 | call ddc#custom#patch_global('sourceOptions', { 246 | \ '_': {'matchers': ['matcher_head']}, 247 | \ 'dictionary': {'mark': 'D'}, 248 | \ }) 249 | ''' 250 | --------------------------------------------------------------------------------