Compare commits
No commits in common. "243c6008c65429d5dee7e16fe9a2237042ea1a3c" and "b81bad5d245ea1dde47b4b89c03515480387bb6d" have entirely different histories.
243c6008c6
...
b81bad5d24
8 changed files with 113 additions and 404 deletions
|
|
@ -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
|
# List packages installed in system profile. To search, run:
|
||||||
|
# $ 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,12 +170,21 @@
|
||||||
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.
|
||||||
|
|
|
||||||
|
|
@ -1,54 +0,0 @@
|
||||||
# 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;
|
|
||||||
}
|
|
||||||
41
home-cli.nix
41
home-cli.nix
|
|
@ -16,6 +16,7 @@ in
|
||||||
};
|
};
|
||||||
|
|
||||||
imports = [
|
imports = [
|
||||||
|
<catppuccin/modules/home-manager>
|
||||||
nixvim.homeModules.nixvim
|
nixvim.homeModules.nixvim
|
||||||
./home-nvim.nix
|
./home-nvim.nix
|
||||||
];
|
];
|
||||||
|
|
@ -31,14 +32,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: pam; harlequin; lazysql; gobang; dblab
|
sqlit-tui # see also: 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. see also: cull
|
dust duf dua # disk usage
|
||||||
doggo # dig
|
doggo # dig
|
||||||
ddev
|
ddev
|
||||||
ngrok
|
ngrok
|
||||||
|
|
@ -88,6 +89,11 @@ 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;
|
||||||
|
|
||||||
|
|
@ -111,29 +117,12 @@ 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"
|
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
@ -170,10 +159,7 @@ 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 = {
|
programs.bat.enable = true;
|
||||||
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;
|
||||||
|
|
@ -259,13 +245,6 @@ 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" ];
|
||||||
|
|
|
||||||
45
home-gui.nix
45
home-gui.nix
|
|
@ -7,8 +7,6 @@
|
||||||
localsend
|
localsend
|
||||||
];
|
];
|
||||||
|
|
||||||
programs.sioyek.enable = true;
|
|
||||||
|
|
||||||
programs.halloy = {
|
programs.halloy = {
|
||||||
enable = true;
|
enable = true;
|
||||||
settings = {
|
settings = {
|
||||||
|
|
@ -26,40 +24,41 @@
|
||||||
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 = 12;
|
font-size = 16;
|
||||||
font-thicken = true;
|
font-thicken = true;
|
||||||
theme = "dark:One Half Dark,light:One Half Light";
|
# theme = "dark:catppuccin-mocha,light:catppuccin-latte"; # TODO: waiting on all cli apps to handle auto switching too
|
||||||
|
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";
|
||||||
# };
|
};
|
||||||
# };
|
};
|
||||||
}
|
}
|
||||||
|
|
|
||||||
127
home-linux.nix
127
home-linux.nix
|
|
@ -1,153 +1,38 @@
|
||||||
{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)
|
|
||||||
];
|
];
|
||||||
|
|
||||||
programs.gnome-shell = {
|
# home.keyboard.options = [ "ctrl:nocaps" "compose:ralt" ];
|
||||||
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 = 34560000;
|
defaultCacheTtl = 86400;
|
||||||
maxCacheTtl = 34560000;
|
maxCacheTtl = 86400;
|
||||||
defaultCacheTtlSsh = 34560000;
|
defaultCacheTtlSsh = 86400;
|
||||||
maxCacheTtlSsh = 34560000;
|
maxCacheTtlSsh = 86400;
|
||||||
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 ];
|
||||||
}
|
}
|
||||||
|
|
|
||||||
40
home-mac.nix
40
home-mac.nix
|
|
@ -8,51 +8,15 @@
|
||||||
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 34560000
|
default-cache-ttl 86400
|
||||||
max-cache-ttl 34560000
|
max-cache-ttl 86400
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
|
||||||
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"
|
||||||
|
|
|
||||||
|
|
@ -1,52 +1,13 @@
|
||||||
{ 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 = {
|
extraConfig.general.unsafe-accounts-conf = true;
|
||||||
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 = {
|
||||||
|
|
@ -71,31 +32,22 @@ in
|
||||||
signByDefault = true;
|
signByDefault = true;
|
||||||
key = "AD11750151C10881970BD943AB49BD6B2B3A6377";
|
key = "AD11750151C10881970BD943AB49BD6B2B3A6377";
|
||||||
};
|
};
|
||||||
passwordCommand = "pass show email/fastmail";
|
passwordCommand = "gpg -dq ${builtins.getEnv "HOME"}/.dustinswan@fastmail.com-password.gpg";
|
||||||
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 = {
|
# backend = "imap";
|
||||||
type = "maildir";
|
# maildir.root-dir = "/Users/dustinswan/Mail/FastMail";
|
||||||
root-dir = "${builtins.getEnv "HOME"}/Mail/FastMail";
|
# message.send.backend = "smtp";
|
||||||
};
|
# sent-folder = "Sent";
|
||||||
|
# draft-folder = "Drafts";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
signature = {
|
signature = {
|
||||||
|
|
@ -117,33 +69,13 @@ in
|
||||||
};
|
};
|
||||||
primary = true;
|
primary = true;
|
||||||
remote = {
|
remote = {
|
||||||
passwordCommand = ["pass" "show" "email/fastmail"];
|
passwordCommand = ["~/dotfiles/bin/decrypt-password" "dustinswan@fastmail.com"];
|
||||||
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"];
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
|
||||||
|
|
@ -8,6 +8,10 @@
|
||||||
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;
|
||||||
|
|
@ -27,25 +31,14 @@
|
||||||
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 = {
|
||||||
|
|
@ -54,19 +47,11 @@
|
||||||
cmp = {
|
cmp = {
|
||||||
enable = true;
|
enable = true;
|
||||||
autoEnableSources = true;
|
autoEnableSources = true;
|
||||||
settings = {
|
settings.sources = [
|
||||||
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;
|
||||||
|
|
@ -84,11 +69,7 @@
|
||||||
csvview.enable = true;
|
csvview.enable = true;
|
||||||
dashboard.enable = true;
|
dashboard.enable = true;
|
||||||
emmet.enable = true;
|
emmet.enable = true;
|
||||||
flash = {
|
flash.enable = true;
|
||||||
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;
|
||||||
|
|
@ -119,7 +100,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;
|
||||||
|
|
@ -140,7 +121,6 @@
|
||||||
settings = {
|
settings = {
|
||||||
highlight = true;
|
highlight = true;
|
||||||
trim_on_write = false;
|
trim_on_write = false;
|
||||||
ft_blocklist = [ "dashboard" ];
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
trouble.enable = true;
|
trouble.enable = true;
|
||||||
|
|
@ -149,5 +129,20 @@
|
||||||
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()
|
||||||
|
# '';
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue