Compare commits

..

10 commits

8 changed files with 404 additions and 113 deletions

View file

@ -62,28 +62,28 @@
# Emacs bindings (Dvorak physical positions) # Emacs bindings (Dvorak physical positions)
# Use Alt-Backspace for delete-word (works everywhere natively) # Use Alt-Backspace for delete-word (works everywhere natively)
control = { # control = {
a = "home"; # C-a → Home # # a = "home"; # C-a → Home
d = "end"; # C-e → End (dvorak 'e' = qwerty 'd') # d = "end"; # C-e → End (dvorak 'e' = qwerty 'd')
r = "up"; # C-p → Up (dvorak 'p' = qwerty 'r') # r = "up"; # C-p → Up (dvorak 'p' = qwerty 'r')
l = "down"; # C-n → Down (dvorak 'n' = qwerty 'l') # l = "down"; # C-n → Down (dvorak 'n' = qwerty 'l')
j = "backspace"; # C-h → Backspace (dvorak 'h' = qwerty 'j') # j = "backspace"; # C-h → Backspace (dvorak 'h' = qwerty 'j')
m = "enter"; # C-m → Enter # m = "enter"; # C-m → Enter
}; # };
# macOS-style Super/Cmd shortcuts (Dvorak physical positions) # # macOS-style Super/Cmd shortcuts (Dvorak physical positions)
meta = { # meta = {
a = "C-a"; # Cmd+a → select all # # a = "C-a"; # Cmd+a → select all
i = "C-i"; # Cmd+c → copy (dvorak 'c' = qwerty 'i') # i = "C-i"; # Cmd+c → copy (dvorak 'c' = qwerty 'i')
k = "C-k"; # Cmd+t → new tab (dvorak 't' = qwerty 'k') # k = "C-k"; # Cmd+t → new tab (dvorak 't' = qwerty 'k')
l = "C-l"; # Cmd+n → new window (dvorak 'n' = qwerty 'l') # l = "C-l"; # Cmd+n → new window (dvorak 'n' = qwerty 'l')
comma = "C-comma"; # Cmd+w → close tab (dvorak 'w' = qwerty ',') # comma = "C-comma"; # Cmd+w → close tab (dvorak 'w' = qwerty ',')
period = "C-period"; # Cmd+v → paste (dvorak 'v' = qwerty '.') # period = "C-period"; # Cmd+v → paste (dvorak 'v' = qwerty '.')
semicolon = "C-semicolon"; # Cmd+s → save (dvorak 's' = qwerty ';') # semicolon = "C-semicolon"; # Cmd+s → save (dvorak 's' = qwerty ';')
slash = "C-slash"; # Cmd+z → undo (dvorak 'z' = qwerty '/') # slash = "C-slash"; # Cmd+z → undo (dvorak 'z' = qwerty '/')
x = "C-x"; # Cmd+q → quit (dvorak 'q' = qwerty 'x') # x = "C-x"; # Cmd+q → quit (dvorak 'q' = qwerty 'x')
b = "C-b"; # Cmd+x → cut (dvorak 'x' = qwerty 'b') # b = "C-b"; # Cmd+x → cut (dvorak 'x' = qwerty 'b')
}; # };
}; };
}; };
}; };
@ -134,23 +134,23 @@
description = "Dustin Swan"; description = "Dustin Swan";
extraGroups = [ "networkmanager" "wheel" ]; extraGroups = [ "networkmanager" "wheel" ];
shell = pkgs.fish; shell = pkgs.fish;
packages = with pkgs; [ # packages = with pkgs; [ ];
# thunderbird
];
}; };
programs.fish.enable = true; programs.fish.enable = true;
programs.steam.enable = true; programs.steam.enable = true;
# programs.xwayland.enable = true;
# programs.hyprland.enable = true;
# programs.niri.enable = true;
# programs.dms-shell.enable = true;
# Allow unfree packages # Allow unfree packages
nixpkgs.config.allowUnfree = true; nixpkgs.config.allowUnfree = true;
# List packages installed in system profile. To search, run: # List packages installed in system profile
# $ nix search wget
environment.systemPackages = with pkgs; [ environment.systemPackages = with pkgs; [
vim vim
git git
# wget
]; ];
# Some programs need SUID wrappers, can be configured further or are # Some programs need SUID wrappers, can be configured further or are
@ -170,21 +170,12 @@
networking.firewall.allowedTCPPorts = [ networking.firewall.allowedTCPPorts = [
24800 # Deskflow 24800 # Deskflow
24801 # Deskflow 24801 # Deskflow
# 47984 # Sunshine
# 47989 # Sunshine
# 47990 # Sunshine
# 48010 # Sunshine
53317 # LocalSend 53317 # LocalSend
]; ];
networking.firewall.allowedUDPPorts = [ networking.firewall.allowedUDPPorts = [
24800 # Deskflow 24800 # Deskflow
24801 # Deskflow 24801 # Deskflow
# 47998 # Sunshine
# 47999 # Sunshine
# 48000 # Sunshine
# 48002 # Sunshine
# 48010 # Sunshine
53317 # LocalSend 53317 # LocalSend
]; ];
# Or disable the firewall altogether. # Or disable the firewall altogether.

View file

@ -0,0 +1,54 @@
# Do not modify this file! It was generated by nixos-generate-config
# and may be overwritten by future invocations. Please make changes
# to /etc/nixos/configuration.nix instead.
{ config, lib, pkgs, modulesPath, ... }:
{
imports =
[ (modulesPath + "/installer/scan/not-detected.nix")
];
boot.initrd.availableKernelModules = [ "xhci_pci" "ahci" "nvme" "usbhid" "usb_storage" "sd_mod" ];
boot.initrd.kernelModules = [ ];
boot.extraModulePackages = [ ];
# Trying to get suspend working..
# boot.kernelParams = [ "processor.max_cstate=1" ];
boot.kernelParams = [
# "mem_sleep_default=deep" # forces S3 suspend instead of s2idle
# "processor.max_cstate=5" # prevents CPU from going into deep C-states that break resume
# "amd_iommu=off" # optional, can help on some ASUS boards
"btusb.enable_autosuspend=0"
"usbcore.autosuspend=-1"
"btmtk.disable_sco_esco=Y"
];
boot.kernelModules = [ "kvm-amd" "btusb" "btmtk" ];
fileSystems."/" =
{ device = "/dev/mapper/luks-78910c3e-3aec-4122-af7b-8a6e55005f1b";
fsType = "ext4";
};
boot.initrd.luks.devices."luks-78910c3e-3aec-4122-af7b-8a6e55005f1b".device = "/dev/disk/by-uuid/78910c3e-3aec-4122-af7b-8a6e55005f1b";
fileSystems."/boot" =
{ device = "/dev/disk/by-uuid/B0C0-690A";
fsType = "vfat";
options = [ "fmask=0077" "dmask=0077" ];
};
swapDevices = [ ];
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
hardware.cpu.amd.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
# Trying to get Bluetooth working..
boot.kernelPackages = pkgs.linuxPackages_latest;
hardware.enableRedistributableFirmware = true;
hardware.firmware = with pkgs; [
linux-firmware
];
hardware.bluetooth.enable = true;
hardware.bluetooth.powerOnBoot = true;
# services.blueman.enable = true;
}

View file

@ -16,7 +16,6 @@ in
}; };
imports = [ imports = [
<catppuccin/modules/home-manager>
nixvim.homeModules.nixvim nixvim.homeModules.nixvim
./home-nvim.nix ./home-nvim.nix
]; ];
@ -32,14 +31,14 @@ in
poppler-utils # pdftotext poppler-utils # pdftotext
xan # e.g. xan slice 3,2 file.csv | xan behead | xan view -An; see also: csvi xan # e.g. xan slice 3,2 file.csv | xan behead | xan view -An; see also: csvi
doxx # read docx files doxx # read docx files
sqlit-tui # see also: harlequin; lazysql; gobang; dblab sqlit-tui # see also: pam; harlequin; lazysql; gobang; dblab
# snitch # see also: bandwhich # snitch # see also: bandwhich
epy # ebook reader. see also: erp; bookokrat; lue epy # ebook reader. see also: erp; bookokrat; lue
# mimic # tts engine, used by epy # mimic # tts engine, used by epy
posting # see also: httpie, yapi, sled, Yaak (GUI), Bruno (GUI) posting # see also: httpie, yapi, sled, Yaak (GUI), Bruno (GUI)
croc magic-wormhole # transfer files croc magic-wormhole # transfer files
# calcure # calendar cli app, can point to ics files or URL # calcure # calendar cli app, can point to ics files or URL
dust duf dua # disk usage dust duf dua # disk usage. see also: cull
doggo # dig doggo # dig
ddev ddev
ngrok ngrok
@ -89,11 +88,6 @@ in
xdg.enable = true; xdg.enable = true;
catppuccin = {
enable = true;
flavor = "mocha";
zed.enable = false;
};
programs.home-manager.enable = true; programs.home-manager.enable = true;
@ -117,12 +111,29 @@ in
# open # highlight: o -> open; ctrl-o -> $EDITOR; S -> web search # open # highlight: o -> open; ctrl-o -> $EDITOR; S -> web search
vim-tmux-navigator # ctrl-h, -j, -k, -l -> move between tmux and vim splits vim-tmux-navigator # ctrl-h, -j, -k, -l -> move between tmux and vim splits
# extrakto # prefix tab -> fuzzy find text on screen; enter to copy; tab to paste # extrakto # prefix tab -> fuzzy find text on screen; enter to copy; tab to paste
fingers # prefix F -> copy/open/edit items on screen by letter # fingers # prefix F -> copy/open/edit items on screen by letter
]; ];
# Remove that SHELL thing when fixed upstream # Remove that SHELL thing when fixed upstream
extraConfig = '' extraConfig = ''
set -ag terminal-overrides ",xterm-256color:RGB" set -ag terminal-overrides ",xterm-256color:RGB"
set -g default-command "$SHELL" set -g default-command "$SHELL"
# Status bar - inherits terminal fg/bg so it follows light/dark mode
set -g status-style "bg=default,fg=default"
set -g status-justify centre
set -g status-left ""
set -g status-right ""
set -g window-status-format " #I "
set -g window-status-current-format " #I "
set -g window-status-current-style "bold,reverse"
set -g window-status-style "dim"
# Pane borders
set -g pane-border-style "fg=brightblack"
set -g pane-active-border-style "fg=white"
# Messages
set -g message-style "bg=default,fg=default,bold"
''; '';
}; };
@ -159,7 +170,10 @@ in
programs.nix-search-tv.enable = true; programs.nix-search-tv.enable = true;
# programs.fzf.enable = true; # used by other apps, tmux, etc. # programs.fzf.enable = true; # used by other apps, tmux, etc.
programs.zoxide.enable = true; programs.zoxide.enable = true;
programs.bat.enable = true; programs.bat = {
enable = true;
config.theme = "ansi";
};
programs.ripgrep.enable = true; programs.ripgrep.enable = true;
programs.ripgrep-all.enable = true; programs.ripgrep-all.enable = true;
programs.yazi.enable = true; programs.yazi.enable = true;
@ -245,6 +259,13 @@ in
programs.gpg.enable = true; programs.gpg.enable = true;
programs.password-store = {
enable = true;
settings = {
PASSWORD_STORE_DIR = "$HOME/.password-store";
};
};
programs.keychain = { programs.keychain = {
enable = true; enable = true;
keys = [ "id_rsa" "id_rsa_mr" "2B3A6377" ]; keys = [ "id_rsa" "id_rsa_mr" "2B3A6377" ];

View file

@ -7,6 +7,8 @@
localsend localsend
]; ];
programs.sioyek.enable = true;
programs.halloy = { programs.halloy = {
enable = true; enable = true;
settings = { settings = {
@ -24,41 +26,40 @@
programs.ghostty = { programs.ghostty = {
enable = true; enable = true;
installBatSyntax = false; installBatSyntax = false;
package = pkgs.ghostty-bin;
settings = { settings = {
font-family = "Iosevka NFM"; font-family = "Iosevka NFM";
font-size = 16; font-size = 12;
font-thicken = true; font-thicken = true;
# theme = "dark:catppuccin-mocha,light:catppuccin-latte"; # TODO: waiting on all cli apps to handle auto switching too theme = "dark:One Half Dark,light:One Half Light";
theme = "catppuccin-mocha";
background-opacity = 0.95; background-opacity = 0.95;
background-blur-radius = 15; background-blur-radius = 15;
window-padding-x = 12; window-padding-x = 12;
window-padding-y = 8; window-padding-y = 8;
window-padding-balance = true; window-padding-balance = true;
macos-titlebar-style = "tabs"; macos-titlebar-style = "tabs";
window-theme = "auto";
macos-option-as-alt = "left"; macos-option-as-alt = "left";
copy-on-select = "clipboard"; copy-on-select = "clipboard";
}; };
}; };
programs.zed-editor = { # programs.zed-editor = {
enable = true; # enable = true;
userSettings = { # userSettings = {
vim_mode = true; # vim_mode = true;
theme = { # theme = {
mode = "system"; # mode = "system";
light = "Catppuccin Latte"; # light = "Catppuccin Latte";
dark = "Catppuccin Frappé"; # dark = "Catppuccin Frappé";
}; # };
buffer_font_size = 16; # buffer_font_size = 16;
buffer_font_family = "Iosevka Nerd Font Mono"; # buffer_font_family = "Iosevka Nerd Font Mono";
vim = { # vim = {
enable_vim_sneak = true; # enable_vim_sneak = true;
use_smartcase_find = true; # use_smartcase_find = true;
}; # };
format_on_save = "off"; # format_on_save = "off";
}; # };
}; # };
} }

View file

@ -1,38 +1,153 @@
{pkgs, lib, ... }: {pkgs, lib, ... }:
let
secrets = import ./secrets.nix;
in
{ {
home.homeDirectory = "/home/dustinswan"; home.homeDirectory = "/home/dustinswan";
home.packages = with pkgs; [ home.packages = with pkgs; [
# retroarch gimp blender # retroarch gimp blender
brave brave
ghostty # ghostty
bitwarden-desktop bitwarden-desktop
nerd-fonts.iosevka nerd-fonts.iosevka
high-tide tidal-hifi high-tide tidal-hifi
deskflow deskflow
sunshine sunshine
# steam # added as a system package, so it actually works
# wl-clipboard # For Wayland clipboard (wl-copy, wl-paste)
]; ];
# home.keyboard.options = [ "ctrl:nocaps" "compose:ralt" ]; programs.gnome-shell = {
enable = true;
extensions = with pkgs.gnomeExtensions; [
{ package = caffeine; }
{ package = vitals; }
{ package = appindicator; }
{ package = syncthing-indicator; }
{ package = blur-my-shell; }
{ package = media-controls; }
];
};
dconf.settings = {
# Custom keybinding for Vicinae
"org/gnome/settings-daemon/plugins/media-keys" = {
custom-keybindings = [
"/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom0/"
];
};
"org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom0" = {
name = "Vicinae";
command = "vicinae toggle";
binding = "<Super>space";
};
# Extension settings
"org/gnome/shell/extensions/vitals" = {
show-gpu = true;
};
"org/gnome/shell/extensions/caffeine" = {
show-indicator = "always";
};
"org/gnome/shell/extensions/blur-my-shell" = {
settings-version = 2;
};
};
programs.vicinae = { programs.vicinae = {
enable = true; enable = true;
systemd = {
enable = true;
autoStart = true;
};
}; };
services.syncthing = { services.syncthing = {
enable = true; enable = true;
settings = {
devices = {
"Desktop" = { id = secrets.syncthing.desktop; };
"Laptop" = { id = secrets.syncthing.laptop; };
"Phone" = { id = secrets.syncthing.phone; };
};
folders = {
"Camera" = {
id = "sm-n950u-photos";
path = "~/Camera";
devices = [ "Laptop" "Phone" ];
};
"Sync" = {
path = "~/Sync";
devices = [ "Laptop" "Phone" ];
};
"Passwords" = {
path = "~/.password-store";
devices = [ "Laptop" ];
};
};
};
}; };
services.gpg-agent = { services.gpg-agent = {
enable = true; enable = true;
enableSshSupport = true; enableSshSupport = true;
defaultCacheTtl = 86400; defaultCacheTtl = 34560000;
maxCacheTtl = 86400; maxCacheTtl = 34560000;
defaultCacheTtlSsh = 86400; defaultCacheTtlSsh = 34560000;
maxCacheTtlSsh = 86400; maxCacheTtlSsh = 34560000;
pinentry.package = pkgs.pinentry-all; pinentry.package = pkgs.pinentry-all;
}; };
services.mbsync = {
enable = true;
frequency = "*:0/15"; # every 15 minutes
};
services.vdirsyncer = {
enable = true;
frequency = "*:0/15"; # every 15 minutes
};
# Niri config - imported from separate file
# xdg.configFile."niri/config.kdl".source = ./niri-config.kdl;
# wayland.windowManager.hyprland = {
# enable = true;
# settings = {
# "$mod" = "ALT";
# input = {
# kb_layout = "us";
# kb_variant = "dvorak";
# };
# # general = {
# # gaps_in = 0;
# # gaps_out = 0;
# # border_size = 2;
# # "col.active_border" = "rgba(89b4faaa)"; # Example color
# # "col.inactive_border" = "rgba(303030aa)";
# # };
# # decoration = {
# # shadow_offset = "0 5";
# # "col.shadow" = "rgba(00000099)";
# # };
# # bindm = [ # Mouse bindings
# # "$mod, mouse:272, movewindow"
# # "$mod, mouse:273, resizewindow"
# # ];
# bind = [ # Keyboard bindings
# # "$mod, Q, killactive,"
# # "$mod, M, exit," # Exit Hyprland
# # "$mod, E, exec, firefox" # Open Firefox
# "$mod, Enter, exec, ghostty"
# ];
# exec-once = [ # Run once on startup
# "vicinae server &"
# ];
# };
# };
imports = [ ./home-cli.nix ./home-gui.nix ./home-mail.nix ]; imports = [ ./home-cli.nix ./home-gui.nix ./home-mail.nix ];
} }

View file

@ -8,15 +8,51 @@
terminal-notifier terminal-notifier
]; ];
programs.ghostty.package = pkgs.ghostty-bin;
programs.ghostty.settings.font-size = 16;
home.file.gpg-agent = { home.file.gpg-agent = {
target = ".gnupg/gpg-agent.conf"; target = ".gnupg/gpg-agent.conf";
text = '' text = ''
pinentry-program ${pkgs.pinentry_mac}/Applications/pinentry-mac.app/Contents/MacOS/pinentry-mac pinentry-program ${pkgs.pinentry_mac}/Applications/pinentry-mac.app/Contents/MacOS/pinentry-mac
default-cache-ttl 86400 default-cache-ttl 34560000
max-cache-ttl 86400 max-cache-ttl 34560000
''; '';
}; };
services.imapnotify.enable = true;
# Add PATH to imapnotify service so it can find pass
launchd.agents.imapnotify-FastMail.config.EnvironmentVariables = {
PATH = "${pkgs.pass}/bin:${pkgs.gnupg}/bin:/usr/bin:/bin";
};
launchd.agents.mbsync = {
enable = true;
config = {
ProgramArguments = [ "${pkgs.isync}/bin/mbsync" "-a" ];
StartInterval = 900; # every 15 minutes
StandardOutPath = "/tmp/mbsync.log";
StandardErrorPath = "/tmp/mbsync.err";
EnvironmentVariables = {
PATH = "${pkgs.pass}/bin:${pkgs.gnupg}/bin:/usr/bin:/bin";
};
};
};
launchd.agents.vdirsyncer = {
enable = true;
config = {
ProgramArguments = [ "${pkgs.vdirsyncer}/bin/vdirsyncer" "sync" ];
StartInterval = 900; # every 15 minutes
StandardOutPath = "/tmp/vdirsyncer.log";
StandardErrorPath = "/tmp/vdirsyncer.err";
EnvironmentVariables = {
PATH = "${pkgs.pass}/bin:${pkgs.gnupg}/bin:/usr/bin:/bin";
};
};
};
# https://codeberg.org/adamcstephens/dotfiles/src/commit/e14f35f6e9a9cb9174016948c512c0db364e0dec/apps/fish/init.fish # https://codeberg.org/adamcstephens/dotfiles/src/commit/e14f35f6e9a9cb9174016948c512c0db364e0dec/apps/fish/init.fish
programs.fish.shellInit = '' programs.fish.shellInit = ''
fenv source "$HOME/.nix-profile/etc/profile.d/hm-session-vars.sh" fenv source "$HOME/.nix-profile/etc/profile.d/hm-session-vars.sh"

View file

@ -1,13 +1,52 @@
{ ... }: { pkgs, lib, ... }:
let
# Cross-platform opener command
openCmd = if pkgs.stdenv.isDarwin then "open" else "${pkgs.xdg-utils}/bin/xdg-open";
in
{ {
programs.mbsync.enable = true; programs.mbsync.enable = true;
programs.msmtp.enable = true; programs.msmtp.enable = true;
programs.himalaya.enable = true; programs.himalaya.enable = true;
programs.vdirsyncer.enable = true; programs.vdirsyncer.enable = true;
programs.khard.enable = true;
programs.notmuch = {
enable = true;
new = {
tags = [ "new" ];
};
hooks = {
preNew = "mbsync -a";
};
};
accounts.email.accounts.FastMail.notmuch.enable = true;
programs.aerc = { programs.aerc = {
enable = true; enable = true;
extraConfig.general.unsafe-accounts-conf = true; extraConfig = {
general.unsafe-accounts-conf = true;
ui = {
mouse-enabled = true;
threading-enabled = true;
};
compose = {
address-book-cmd = "khard email --parsable '%s'";
};
# viewer = {
# alternatives = "text/html,text/plain";
# };
filters = {
"text/plain" = "cat";
"text/html" = "${pkgs.w3m}/bin/w3m -T text/html -cols $(tput cols) -dump -o display_image=false -o display_link_number=true";
};
openers = {
"text/html" = "${openCmd}";
"text/plain" = "less -R";
"application/pdf" = "${openCmd}";
"image/*" = "${openCmd}";
};
};
}; };
accounts.email = { accounts.email = {
@ -32,22 +71,31 @@
signByDefault = true; signByDefault = true;
key = "AD11750151C10881970BD943AB49BD6B2B3A6377"; key = "AD11750151C10881970BD943AB49BD6B2B3A6377";
}; };
passwordCommand = "gpg -dq ${builtins.getEnv "HOME"}/.dustinswan@fastmail.com-password.gpg"; passwordCommand = "pass show email/fastmail";
mbsync = { mbsync = {
enable = true; enable = true;
create = "maildir"; create = "maildir";
expunge = "maildir"; expunge = "maildir";
}; };
imapnotify = {
enable = true;
boxes = [ "INBOX" ];
onNotify = "${pkgs.isync}/bin/mbsync FastMail:INBOX";
onNotifyPost = let
notifyCmd = if pkgs.stdenv.isDarwin
then "${pkgs.terminal-notifier}/bin/terminal-notifier -title 'New Mail' -message 'FastMail INBOX' -sound default"
else "${pkgs.libnotify}/bin/notify-send 'New Mail' 'FastMail INBOX'";
in notifyCmd;
};
msmtp.enable = true; msmtp.enable = true;
aerc.enable = true; aerc.enable = true;
himalaya = { himalaya = {
enable = true; enable = true;
settings = { settings = {
# backend = "imap"; backend = {
# maildir.root-dir = "/Users/dustinswan/Mail/FastMail"; type = "maildir";
# message.send.backend = "smtp"; root-dir = "${builtins.getEnv "HOME"}/Mail/FastMail";
# sent-folder = "Sent"; };
# draft-folder = "Drafts";
}; };
}; };
signature = { signature = {
@ -69,13 +117,33 @@
}; };
primary = true; primary = true;
remote = { remote = {
passwordCommand = ["~/dotfiles/bin/decrypt-password" "dustinswan@fastmail.com"]; passwordCommand = ["pass" "show" "email/fastmail"];
type = "caldav"; type = "caldav";
url = "https://caldav.fastmail.com/dav/"; url = "https://caldav.fastmail.com/dav/";
userName = "dustinswan@fastmail.com"; userName = "dustinswan@fastmail.com";
}; };
vdirsyncer = { vdirsyncer = {
enable = true; enable = true;
collections = ["from a" "from b"];
};
};
};
};
accounts.contact = {
basePath = "Contacts";
accounts = {
FastMail = {
khard.enable = true;
remote = {
passwordCommand = ["pass" "show" "email/fastmail"];
type = "carddav";
url = "https://carddav.fastmail.com/dav/";
userName = "dustinswan@fastmail.com";
};
vdirsyncer = {
enable = true;
collections = ["from a" "from b"];
}; };
}; };
}; };

View file

@ -8,10 +8,6 @@
withNodeJs = true; withNodeJs = true;
withRuby = true; withRuby = true;
colorschemes.catppuccin.enable = true;
colorschemes.catppuccin.settings.transparent_background = true;
colorschemes.catppuccin.settings.flavour = "auto";
opts = { opts = {
number = true; number = true;
ignorecase = true; ignorecase = true;
@ -31,14 +27,25 @@
maplocalleader = " "; maplocalleader = " ";
}; };
autoCmd = [
{
event = [ "BufRead" "BufNewFile" ];
pattern = [ "*.cg" ];
command = "setlocal tabstop=2 shiftwidth=2";
}
];
keymaps = [ keymaps = [
{ key = "<leader>e"; action = "<cmd>Neotree toggle<cr>"; } { key = "<leader>e"; action = "<cmd>Neotree toggle<cr>"; }
{ key = "<leader>f"; action = "<cmd>Tv files<cr>"; } { key = "<leader>f"; action = "<cmd>Tv files<cr>"; }
{ key = "<leader>/"; action = "<cmd>Tv text<cr>"; } { key = "<leader>/"; action = "<cmd>Tv text<cr>"; }
{ key = "<leader>bd"; action = "<cmd>bdelete<cr>"; } { key = "<leader>bd"; action = "<cmd>bdelete<cr>"; }
{ key = "<leader>nd"; action = "<cmd>NoiceDismiss<cr>"; } { key = "<leader>nd"; action = "<cmd>NoiceDismiss<cr>"; }
{ key = "<leader>xx"; action = "<cmd>Trouble diagnostics toggle<cr>"; }
{ key = "<S-l>"; action = "<cmd>bnext<cr>"; } { key = "<S-l>"; action = "<cmd>bnext<cr>"; }
{ key = "<S-h>"; action = "<cmd>bprev<cr>"; } { key = "<S-h>"; action = "<cmd>bprev<cr>"; }
{ key = "s"; mode = [ "n" "x" "o" ]; action.__raw = "function() require('flash').jump() end"; options.desc = "Flash"; }
{ key = "S"; mode = [ "n" "x" "o" ]; action.__raw = "function() require('flash').treesitter() end"; options.desc = "Flash Treesitter"; }
]; ];
plugins = { plugins = {
@ -47,11 +54,19 @@
cmp = { cmp = {
enable = true; enable = true;
autoEnableSources = true; autoEnableSources = true;
settings.sources = [ settings = {
sources = [
{ name = "nvim_lsp"; } { name = "nvim_lsp"; }
{ name = "path"; } { name = "path"; }
{ name = "buffer"; } { name = "buffer"; }
]; ];
mapping = {
"<Tab>" = "cmp.mapping.select_next_item()";
"<S-Tab>" = "cmp.mapping.select_prev_item()";
"<CR>" = "cmp.mapping.confirm({ select = false })";
"<C-e>" = "cmp.mapping.abort()";
};
};
}; };
cmp-nvim-lsp.enable = true; cmp-nvim-lsp.enable = true;
cmp-buffer.enable = true; cmp-buffer.enable = true;
@ -69,7 +84,11 @@
csvview.enable = true; csvview.enable = true;
dashboard.enable = true; dashboard.enable = true;
emmet.enable = true; emmet.enable = true;
flash.enable = true; flash = {
enable = true;
settings.jump.autojump = true;
# settings.modes.search.enabled = true;
};
gitsigns.enable = true; gitsigns.enable = true;
lazygit.enable = true; lazygit.enable = true;
lint.enable = true; lint.enable = true;
@ -100,7 +119,7 @@
}; };
# lsp-format.enable = true; # lsp-format.enable = true;
lsp-lines.enable = true; lsp-lines.enable = true;
markview.enable = true; # markview.enable = true;
neo-tree.enable = true; neo-tree.enable = true;
notify.enable = true; notify.enable = true;
nix.enable = true; nix.enable = true;
@ -121,6 +140,7 @@
settings = { settings = {
highlight = true; highlight = true;
trim_on_write = false; trim_on_write = false;
ft_blocklist = [ "dashboard" ];
}; };
}; };
trouble.enable = true; trouble.enable = true;
@ -129,20 +149,5 @@
web-devicons.enable = true; web-devicons.enable = true;
which-key.enable = true; which-key.enable = true;
}; };
# extraPlugins = [(pkgs.vimUtils.buildVimPlugin {
# name = "vim-lumen";
# src = pkgs.fetchFromGitHub {
# owner = "f-person";
# repo = "auto-dark-mode.nvim";
# rev = "4531f8b2b09ed8f0b8875a706419f9cecda1d969";
# hash = "sha256-JPoyRRwDJ9KOGWnqOEG4VkEX4rJHFhFYV3bwS9F2f9E=";
# };
# })];
# extraConfigLua = ''
# local auto_dark_mode = require('auto-dark-mode')
# auto_dark_mode.setup()
# '';
}; };
} }