Compare commits

..

No commits in common. "main" and "manager-migration" have entirely different histories.

22 changed files with 161 additions and 563 deletions

View file

@ -3,6 +3,31 @@ packages = ["default"]
[files]
"configs/hypr/work-laptop/hyprland.conf" = "~/.config/hypr/include/work-laptop.conf"
"configs/niri/work-laptop/local.kdl" = "~/.config/niri/include/local.kdl"
[files."configs/niri/config.kdl"]
target = "~/.config/niri/config.kdl"
type = "template"
append = """
window-rule {
match app-id="brave-work"
open-on-workspace "1"
open-focused true
default-column-width {
proportion 0.5
}
}
window-rule {
match app-id="brave-personal"
open-on-workspace "2"
open-focused false
default-column-width {
proportion 0.5
}
}
"""
[variables]

View file

@ -39,4 +39,4 @@ depends = ["niri"]
[default.variables]
[niri.files]
"configs/niri/base" = "~/.config/niri"
"configs/niri" = "~/.config/niri"

View file

@ -1,49 +0,0 @@
packages_file := quote(justfile_directory() / "bootstrap/pkgs_arch.txt")
bootstrap: setup_pacman setup_paru install_packages
install_packages: update_packages
paru -S --needed --noconfirm - < {{ packages_file }}
update_packages:
paru -Syu --noconfirm
clean_orphans:
-sudo pacman -Qdtq | sudo pacman -Rns -
@echo "\n\n{{ BLUE }}The following files are not owned by any package anymore:{{ NORMAL }}"
# setup sudo:
# sudo loop
# show asterisk on password
setup_pacman:
# add automatic updates
sudo sed -i \
-e 's/#\?ParallelDownloads = [0-9]\+/ParallelDownloads = {{ num_cpus() }}/' \
-e 's/#\?Color\+/Color/' \
-e 's/#\?ILoveCandy\+/ILoveCandy/' \
-e 's/#\?VerbosePkgLists\+/VerbosePkgLists/' \
/etc/pacman.conf
setup_paru:
#!/usr/bin/env bash
set -euxo pipefail
if ! command -v paru &> /dev/null ; then
tmp=$(mktemp -d)
sudo pacman -S --needed base-devel
git clone https://aur.archlinux.org/paru.git "$tmp"
cd "$tmp"
makepkg -si
cd -
rm -rf "$tmp"
fi
sudo sed -i \
-e 's/#\?BottomUp\+/BottomUp/' \
-e 's/#\?SudoLoop\+/SudoLoop/' \
-e 's/#\?CombinedUpgrade\+/CombinedUpgrade/' \
-e 's/#\?CleanAfter\+/CleanAfter/' \
-e 's/#\?NewsOnUpgrade\+/NewsOnUpgrade/' \
/etc/paru.conf

View file

@ -1,7 +1,7 @@
syntax = "All"
column_width = 120
line_endings = "Unix"
indent_type = "Spaces"
indent_type = "indent_type"
indent_width = 2
quote_style = "AutoPreferDouble"
call_parentheses = "Always"

View file

@ -1,72 +0,0 @@
age
atuin
brave-bin
bun-bin
catppuccin-cursors-macchiato
catppuccin-gtk-theme-macchiato
catppuccin-sddm-theme-macchiato
celluloid
deno
dotter-rs-bin
dunst
eza
fish
flatpak
fzf
git
gitleaks
gnome-disk-utility
just
kitty
kvantum
kvantum-theme-catppuccin-git
lazygit
limine
limine-mkinitcpio-hook
limine-snapper-sync
lostfiles
lxappearance
ly
nautilus
nautilus-admin-gtk4
nautilus-image-converter
nautilus-open-any-terminal
neovim
noto-fonts
noto-fonts-cjk
noto-fonts-emoji
paccache-hook
plymouth-theme-catppuccin-macchiato-git
podman
pre-commit
pwvucontrol
qt5-wayland
qt6-wayland
rofi
rofi-rbw
rofimoji
rsync
sops
swappy
tailscale
tealdeer
trash-cli
ttf-dejavu
ttf-fira-code
ttf-fira-mono
ttf-fira-sans
ttf-firacode-nerd
ttf-jetbrains-mono-nerd
ttf-ms-win11-auto
ttf-nerd-fonts-symbols-mono
ttf-nunito
ttf-opensans
ttf-roboto
ttf-roboto-mono-nerd
udiskie
vim
wget
yazi
zed
zip
zoxide

View file

@ -2,5 +2,7 @@ if status is-interactive
# Commands to run in interactive sessions can go here
zoxide init --cmd cd fish | source
atuin init fish | source
mise activate fish | source
end

View file

@ -1,7 +0,0 @@
function envsource
for line in (cat $argv | grep -v '^#')
set item (string split -m 1 '=' $line)
set -gx $item[1] $item[2]
echo "Exported key $item[1]"
end
end

View file

@ -1,10 +1,7 @@
theme = Catppuccin Macchiato
font-family = JetBrainsMono Nerd Font
theme = catppuccin-macchiato
# Common
keybind = global:ctrl+shift+x=toggle_quick_terminal
keybind = ctrl+space>o=write_selection_file:open
keybind = ctrl+space>shift+o=write_selection_file:paste

View file

@ -1,7 +1,7 @@
general {
lock_cmd = pidof hyprlock || hyprlock # avoid starting multiple hyprlock instances.
before_sleep_cmd = loginctl lock-session # lock before suspend.
after_sleep_cmd = niri msg action power-on-monitors # to avoid having to press a key twice to turn on the display.
after_sleep_cmd = hyprctl dispatch dpms on # to avoid having to press a key twice to turn on the display.
}
listener {
@ -24,8 +24,8 @@ listener {
listener {
timeout = 330 # 5.5min
on-timeout = niri msg action power-off-monitors # screen off when timeout has passed
on-resume = niri msg action power-on-monitors && brightnessctl -r # screen on when activity is detected after timeout has fired.
on-timeout = hyprctl dispatch dpms off # screen off when timeout has passed
on-resume = hyprctl dispatch dpms on && brightnessctl -r # screen on when activity is detected after timeout has fired.
}
listener {

View file

@ -1,120 +0,0 @@
lines 30
#: The number of lines shown in the panel. Ignored for background,
#: centered, and vertical panels. If it has the suffix px then it sets
#: the height of the panel in pixels instead of lines.
columns 200
#: The number of columns shown in the panel. Ignored for background,
#: centered, and horizontal panels. If it has the suffix px then it
#: sets the width of the panel in pixels instead of columns.
edge top
#: Which edge of the screen to place the panel on. Note that some
#: window managers (such as i3) do not support placing docked windows
#: on the left and right edges. The value background means make the
#: panel the "desktop wallpaper". Note that when using sway if you set
#: a background in your sway config it will cover the background drawn
#: using this kitten. Additionally, there are three more values:
#: center, center-sized and none. The value center anchors the panel
#: to all sides and covers the entire display (on macOS the part of
#: the display not covered by titlebar and dock). The panel can be
#: shrunk and placed using the margin parameters. The value none
#: anchors the panel to the top left corner and should be placed using
#: the margin parameters. Its size is set by lines and columns. The
#: value center-sized is just like none except that the panel is
#: centered instead of in the top left corner and the margins have no
#: effect.
background_opacity 1
#: The background opacity of the window. This works the same as the
#: kitty option of the same name, it is present here as it has a
#: different default value for the quick access terminal.
# hide_on_focus_loss no
#: Hide the window when it loses keyboard focus automatically. Using
#: this option will force focus_policy to on-demand.
# grab_keyboard no
#: Grab the keyboard. This means global shortcuts defined in the OS
#: will be passed to kitty instead. Useful if you want to create an OS
#: modal window. How well this works depends on the OS/window
#: manager/desktop environment. On Wayland it works only if the
#: compositor implements the inhibit-keyboard-shortcuts protocol
#: <https://wayland.app/protocols/keyboard-shortcuts-inhibit-
#: unstable-v1>. On macOS Apple doesn't allow applications to grab the
#: keyboard without special permissions, so it doesn't work.
margin_left 50
#: Set the left margin for the panel, in pixels. Has no effect for
#: right edge panels. Only works on macOS and Wayland compositors that
#: supports the wlr layer shell protocol.
margin_right 50
#: Set the right margin for the panel, in pixels. Has no effect for
#: left edge panels. Only works on macOS and Wayland compositors that
#: supports the wlr layer shell protocol.
margin_top 10
#: Set the top margin for the panel, in pixels. Has no effect for
#: bottom edge panels. Only works on macOS and Wayland compositors
#: that supports the wlr layer shell protocol.
# margin_bottom 0
#: Set the bottom margin for the panel, in pixels. Has no effect for
#: top edge panels. Only works on macOS and Wayland compositors that
#: supports the wlr layer shell protocol.
# kitty_conf
#: Path to config file to use for kitty when drawing the window. Can
#: be specified multiple times. By default, the normal kitty.conf is
#: used. Relative paths are resolved with respect to the kitty config
#: directory.
kitty_override window_padding_width=0 8
#: Override individual kitty configuration options, can be specified
#: multiple times. Syntax: kitty_override name=value. For example:
#: kitty_override font_size=20.
app_id kitty-quick-access
#: On Wayland set the namespace of the layer shell surface. On X11 set
#: the WM_CLASS assigned to the quick access window. (Linux only)
# output_name
#: The panel can only be displayed on a single monitor (output) at a
#: time. This allows you to specify which output is used, by name. If
#: not specified the compositor will choose an output automatically,
#: typically the last output the user interacted with or the primary
#: monitor. Run kitten panel --output-name list to get a list of
#: available outputs. Use listjson for a json encoded output. Note
#: that on Wayland the output can only be set at panel creation time,
#: it cannot be changed after creation, nor is there anyway to display
#: a single panel on all outputs. Please complain to the Wayland
#: developers about this.
# start_as_hidden no
#: Whether to start the quick access terminal hidden. Useful if you
#: are starting it as part of system startup.
# focus_policy exclusive
#: On a Wayland compositor that supports the wlr layer shell protocol,
#: specify the focus policy for keyboard interactivity with the panel.
#: Please refer to the wlr layer shell protocol documentation for more
#: details. Note that different Wayland compositors behave very
#: differently with exclusive, your mileage may vary. On macOS,
#: exclusive and on-demand are currently the same.

View file

@ -155,8 +155,8 @@ gui:
# Config relating to git
git:
# See https://github.com/jesseduffield/lazygit/blob/master/docs/Custom_Pagers.md
pagers:
- # Value of the --color arg in the git diff command. Some pagers want this to be set to 'always' and some want it set to 'never'
paging:
# Value of the --color arg in the git diff command. Some pagers want this to be set to 'always' and some want it set to 'never'
colorArg: always
# e.g.
# diff-so-fancy
@ -406,7 +406,7 @@ keybinding:
viewResetOptions: D
fetch: f
toggleTreeView: '`'
openMergeOptions: M
openMergeTool: M
openStatusFilter: <c-b>
copyFileInfoToClipboard: "y"
branches:

View file

@ -1,11 +1,10 @@
include "include/local.kdl"
// ╭─────────────────────────────────────────────────────────╮
// │ Windows Rules │
// ╰─────────────────────────────────────────────────────────╯
window-rule {
// This regular expression is intentionally made as specific as possible,
// since this is the default config, and we want no false positives.
// You can get away with just app-id="wezterm" f you want.
// You can get away with just app-id="wezterm" if you want.
match app-id="^org\\.wezfurlong\\.wezterm$"
default-column-width {
@ -17,11 +16,6 @@ window-rule {
match app-id="^brave-.*-Default$"
// Extensions popup open-floating true
}
// Full width window
window-rule {
match app-id="beekeeper-studio"
open-maximized true
}
window-rule {
match app-id="^org\\.keepassxc\\.KeePassXC$"
match app-id="^org\\.gnome\\.World\\.Secrets$"
@ -33,7 +27,7 @@ window-rule {
match app-id="brave-browser"
match at-startup=true
default-column-width {
proportion 0.5
proportion 0.75
}
}
window-rule {
@ -44,20 +38,9 @@ window-rule {
geometry-corner-radius 4
clip-to-geometry true
}
layer-rule {
match namespace="kitty-quick-access"
geometry-corner-radius 12
shadow {
on
spread 10
softness 20
offset x=-10 y=10
}
}
// ╭─────────────────────────────────────────────────────────╮
// │ Auto Start Apps │
// ╰─────────────────────────────────────────────────────────╯
spawn-at-startup "./fix_float.py"
spawn-at-startup "/usr/lib/pam_kwallet_init"
spawn-at-startup "udieskie"
spawn-at-startup "brave"
@ -100,20 +83,14 @@ binds {
Mod+Return hotkey-overlay-title="Open a Terminal: kitty" {
spawn "kitty"
}
Mod+Shift+Return hotkey-overlay-title="Open Quick Terminal" {
spawn "kitten" "quick_access_terminal"
}
Mod+Shift+E hotkey-overlay-title="Open Code Editor" {
spawn-sh "kitten quick_access_terminal --instance-group editor-choice fish -c \"zeditor (zoxide query -i)\""
}
Mod+D hotkey-overlay-title="Run an Application: Rofi" {
spawn "rofi" "-show" "drun" "-run-command" "uwsm app -- {cmd}"
}
XF86AudioRaiseVolume allow-when-locked=true {
spawn-sh "wpctl set-volume @DEFAULT_AUDIO_SINK@ 0.025+"
spawn-sh "wpctl set-volume @DEFAULT_AUDIO_SINK@ 0.1+"
}
XF86AudioLowerVolume allow-when-locked=true {
spawn-sh "wpctl set-volume @DEFAULT_AUDIO_SINK@ 0.025-"
spawn-sh "wpctl set-volume @DEFAULT_AUDIO_SINK@ 0.1-"
}
XF86AudioMute allow-when-locked=true {
spawn-sh "wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle"
@ -152,10 +129,10 @@ binds {
focus-window-or-workspace-up
}
Mod+Right {
focus-column-or-monitor-right
focus-column-right
}
Mod+H {
focus-column-or-monitor-left
focus-column-left
}
Mod+J {
focus-window-or-workspace-down
@ -164,7 +141,7 @@ binds {
focus-window-or-workspace-up
}
Mod+L {
focus-column-or-monitor-right
focus-column-right
}
Mod+Shift+Left {
move-column-left
@ -404,6 +381,10 @@ binds {
Mod+Escape allow-inhibiting=false {
toggle-keyboard-shortcuts-inhibit
}
// The quit action will show a confirmation dialog to avoid accidental exits.
Mod+Shift+E {
quit
}
Ctrl+Alt+Delete {
quit
}
@ -424,10 +405,16 @@ environment {
TERMINAL "/usr/bin/kitty"
}
// ── Display Options ─────────────────────────────────────────────────
output "eDP-1" {
off
}
output "HDMI-A-1" {
scale 1
mode "3440x1440"
}
output "DP-1" {
variable-refresh-rate on-demand=true
}
// ── Input Options ───────────────────────────────────────────────────
input {
keyboard {

View file

@ -1,124 +0,0 @@
#!/usr/bin/python3
"""
Like open-float, but dynamically. Floats a window when it matches the rules.
Some windows don't have the right title and app-id when they open, and only set
them afterward. This script is like open-float for those windows.
Usage: fill in the RULES array below, then run the script.
"""
import json
import os
import re
from dataclasses import dataclass, field
from socket import AF_UNIX, SHUT_WR, socket
@dataclass(kw_only=True)
class Match:
title: str | None = None
app_id: str | None = None
def matches(self, window):
if self.title is None and self.app_id is None:
return False
matched = True
if self.title is not None:
matched &= re.search(self.title, window["title"]) is not None
if self.app_id is not None:
matched &= re.search(self.app_id, window["app_id"]) is not None
return matched
@dataclass
class Rule:
match: list[Match] = field(default_factory=list)
exclude: list[Match] = field(default_factory=list)
def matches(self, window):
if len(self.match) > 0 and not any(m.matches(window) for m in self.match):
return False
if any(m.matches(window) for m in self.exclude):
return False
return True
# Write your rules here. One Rule() = one window-rule {}.
RULES = [
# window-rule {} with one match.
Rule([Match(title="Bitwarden", app_id="^brave-.*-Default$")]),
# window-rule {} with one match and one exclude.
# Rule(
# [Match(title="rs")],
# exclude=[Match(app_id="Alacritty")],
# ),
# window-rule {} with two matches.
# Rule(
# [
# Match(app_id="^foot$"),
# Match(app_id="^mpv$"),
# ]
# ),
]
if len(RULES) == 0:
print("fill in the RULES list, then run the script")
exit()
niri_socket = socket(AF_UNIX)
niri_socket.connect(os.environ["NIRI_SOCKET"])
file = niri_socket.makefile("rw")
_ = file.write('"EventStream"')
file.flush()
niri_socket.shutdown(SHUT_WR)
windows = {}
def send(request):
with socket(AF_UNIX) as niri_socket:
niri_socket.connect(os.environ["NIRI_SOCKET"])
file = niri_socket.makefile("rw")
_ = file.write(json.dumps(request))
file.flush()
def float(id: int):
send({"Action": {"MoveWindowToFloating": {"id": id}}})
send({"Action": {"SetWindowWidth": {"id": id, "change": {"SetProportion": 20}}}})
send({"Action": {"SetWindowHeight": {"id": id, "change": {"SetProportion": 50}}}})
def update_matched(win):
win["matched"] = False
if existing := windows.get(win["id"]):
win["matched"] = existing["matched"]
matched_before = win["matched"]
win["matched"] = any(r.matches(win) for r in RULES)
if win["matched"] and not matched_before:
print(f"floating title={win['title']}, app_id={win['app_id']}")
float(win["id"])
for line in file:
event = json.loads(line)
if changed := event.get("WindowsChanged"):
for win in changed["windows"]:
update_matched(win)
windows = {win["id"]: win for win in changed["windows"]}
elif changed := event.get("WindowOpenedOrChanged"):
win = changed["window"]
update_matched(win)
windows[win["id"]] = win
elif changed := event.get("WindowClosed"):
del windows[changed["id"]]

View file

@ -1,32 +0,0 @@
window-rule {
match app-id="brave-work"
open-on-workspace "1"
open-focused true
default-column-width {
proportion 0.5
}
}
window-rule {
match app-id="brave-personal"
open-on-workspace "2"
open-focused false
default-column-width {
proportion 0.5
}
}
output "HDMI-A-1" {
scale 1
mode "3440x1440"
focus-at-startup
position x=1920 y=0
}
output "eDP-1" {
mode "1920x1080@60.000"
position x=0 y=720
layout {
default-column-width {
proportion 1.0
}
}
}

View file

@ -16,7 +16,6 @@ end
vim.opt.rtp:prepend(lazypath)
require("aleidk.options")
require("aleidk.commands")
require("aleidk.autocmds")
require("aleidk.keymaps")

View file

@ -11,8 +11,7 @@
"hardtime.nvim": { "branch": "main", "commit": "3541ad24faff78274669eceaf130502eb7f1261a" },
"lazy.nvim": { "branch": "main", "commit": "6c3bda4aca61a13a9c63f1c1d1b16b9d3be90d7a" },
"lazydev.nvim": { "branch": "main", "commit": "f59bd14a852ca43db38e3662395354cb2a9b13e0" },
"mason-lspconfig.nvim": { "branch": "main", "commit": "b1d9a914b02ba5660f1e272a03314b31d4576fe2" },
"mason.nvim": { "branch": "main", "commit": "ad7146aa61dcaeb54fa900144d768f040090bff0" },
"mason.nvim": { "branch": "main", "commit": "e2f7f9044ec30067bc11800a9e266664b88cda22" },
"mini.nvim": { "branch": "main", "commit": "94cae4660a8b2d95dbbd56e1fbc6fcfa2716d152" },
"neogen": { "branch": "main", "commit": "dc50715c009f89b8111197fd2f282f6042daa7ea" },
"nui.nvim": { "branch": "main", "commit": "de740991c12411b663994b2860f1a4fd0937c130" },
@ -20,7 +19,7 @@
"nvim-dap-view": { "branch": "main", "commit": "390dae6bf67f3342ebb481159932ef0fe54822ba" },
"nvim-dap-virtual-text": { "branch": "master", "commit": "fbdb48c2ed45f4a8293d0d483f7730d24467ccb6" },
"nvim-lint": { "branch": "master", "commit": "6b46370d02cd001509a765591a3ffc481b538794" },
"nvim-lspconfig": { "branch": "master", "commit": "c8503e63c6afab3ed34b49865a4a4edbb1ebf4a8" },
"nvim-lspconfig": { "branch": "master", "commit": "f47cd681d7cb6048876a2e908b6d8ba1e530d152" },
"nvim-treesitter": { "branch": "main", "commit": "802195d8f1980db25a7a39a55f9a25df21756c73" },
"nvim-treesitter-context": { "branch": "master", "commit": "66a9b5fa9e806918b5fe3dba00c6cce7e230abd2" },
"nvim-treesitter-textobjects": { "branch": "main", "commit": "1b2d85d3de6114c4bcea89ffb2cd1ce9e3a19931" },

View file

@ -1,11 +0,0 @@
vim.api.nvim_create_user_command("SopsDecrypt", function(args)
vim.cmd([[! sops decrypt -i %]])
end, {
desc = "Decrypt current file with sops",
})
vim.api.nvim_create_user_command("SopsEncrypt", function(args)
vim.cmd([[! sops encrypt -i %]])
end, {
desc = "Decrypt current file with sops",
})

View file

@ -10,7 +10,7 @@ vim.o.diffopt = "vertical,closeoff,filler"
local opt = vim.opt
vim.schedule(function()
vim.opt.clipboard = "unnamedplus"
vim.opt.clipboard = 'unnamedplus'
end)
-- opt.shortmess:append({ W = true, I = true, c = true }) -- INFO: this control the format of some messages
@ -28,9 +28,9 @@ opt.formatoptions = "jcroqlnt" -- tcqj
opt.grepformat = "%f:%l:%c:%m"
opt.grepprg = "rg --vimgrep"
opt.ignorecase = true -- Ignore case
opt.inccommand = "split" -- Preview substitutions live, as you type!
opt.inccommand = 'split' -- Preview substitutions live, as you type!
opt.mouse = "a" -- Enable mouse mode
opt.nrformats = "blank,bin,hex"
opt.nrformats = 'blank,bin,hex'
opt.number = true -- Print line number
opt.pumblend = 10 -- Popup blend
opt.pumheight = 10 -- Maximum number of entries in a popup
@ -56,8 +56,8 @@ opt.updatetime = 200 -- Save swap file and trigger CursorHold
opt.wildmode = "longest,list:full" -- Command-line completion mode
opt.winminwidth = 5 -- Minimum window width
opt.wrap = false -- Disable line wrap
vim.o.completeopt = "noselect,menu,menuone,noinsert,popup"
vim.o.winborder = "rounded"
vim.o.completeopt = 'noselect,menu,menuone,noinsert,popup'
vim.o.winborder = 'rounded'
vim.o.sessionoptions = "blank,buffers,curdir,folds,help,tabpages,winsize,winpos,terminal,localoptions"
@ -130,20 +130,18 @@ vim.filetype.add({
mdx = "mdx",
log = "log",
conf = "conf",
-- env = "dotenv",
env = "dotenv",
},
-- Detect and apply filetypes based on the entire filename
filename = {
-- [".env"] = "dotenv",
[".env"] = "dotenv",
["env"] = "dotenv",
["tsconfig.json"] = "jsonc",
},
-- Detect and apply filetypes based on certain patterns of the filenames
pattern = {
-- INFO: Match filenames like - ".env.example", ".env.local" and so on
-- ["%.env%.[%w_.-]+"] = "dotenv",
["compose.*%.ya?ml"] = "yaml.docker-compose",
["docker-compose.*%.ya?ml"] = "yaml.docker-compose",
["%.env%.[%w_.-]+"] = "dotenv",
[".*%.blade%.php"] = "blade",
[".*%.hurl.*"] = "hurl",
[".*/hypr/.*%.conf"] = "hyprlang",
@ -157,16 +155,27 @@ vim.filetype.add({
vim.lsp.config("rust-analyzer", {
tools = {
code_actions = {
ui_select_fallback = true,
},
},
ui_select_fallback = true
}
}
})
vim.g.markdown_fenced_languages = {
"ts=typescript",
}
vim.lsp.enable("denols")
vim.lsp.enable({
"bashls",
"biome",
"fish_lsp",
"gleam",
"gopls",
"hyprls",
"intelephense",
"jsonls",
"kotlin_lsp",
"lua_ls",
"nushell",
"pyright",
"ruff",
-- "rust_analyzer", -- managed by rustacean.nvim
})
vim.lsp.inlay_hint.enable(true)

View file

@ -1,13 +1,10 @@
return {
{
"mason-org/mason-lspconfig.nvim",
opts = {},
dependencies = {
{ "mason-org/mason.nvim", opts = {} },
"neovim/nvim-lspconfig",
},
},
'neovim/nvim-lspconfig',
'tpope/vim-sleuth', -- Detect tabstop and shiftwidth automatically
{
"mason-org/mason.nvim",
opts = {}
},
{
"ckolkey/ts-node-action",
dependencies = { "nvim-treesitter" },

View file

@ -1,25 +1,24 @@
return {
{
"mrcjkb/rustaceanvim",
version = "^6", -- Recommended
'mrcjkb/rustaceanvim',
version = '^6', -- Recommended
lazy = false, -- This plugin is already lazy
},
{
-- `lazydev` configures Lua LSP for your Neovim config, runtime and plugins
-- used for completion, annotations and signatures of Neovim apis
"folke/lazydev.nvim",
ft = "lua",
'folke/lazydev.nvim',
ft = 'lua',
opts = {
library = {
-- Load luvit types when the `vim.uv` word is found
{ path = "${3rd}/luv/library", words = { "vim%.uv" } },
{ path = "${3rd}/luv/library", words = { "vim%.uv" } }
},
},
},
{
"pmizio/typescript-tools.nvim",
enabled = false,
dependencies = { "nvim-lua/plenary.nvim", "neovim/nvim-lspconfig" },
opts = {},
},
}
}

View file

@ -4,12 +4,11 @@ return {
lazy = false,
dependencies = { "MunifTanjim/nui.nvim" },
keys = {
{ "<leader>uH", "<CMD>Hardtime toggle<CR>", desc = "Toggle hardtime" },
{ "<leader>uH", "<CMD>Hardtime toggle<CR>", desc = "Toggle hardtime" }
},
opts = {
max_count = 10,
disable_mouse = false,
restriction_mode = "hint",
},
},
}