diff --git a/flake.lock b/flake.lock index 666cc9c..b525feb 100644 --- a/flake.lock +++ b/flake.lock @@ -24,11 +24,11 @@ "flake-compat": { "flake": false, "locked": { - "lastModified": 1696426674, - "narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=", + "lastModified": 1732722421, + "narHash": "sha256-HRJ/18p+WoXpWJkcdsk9St5ZiukCqSDgbOGFa8Okehg=", "owner": "edolstra", "repo": "flake-compat", - "rev": "0f9255e01c2351cc7d116c072cb317785dd33b33", + "rev": "9ed2ac151eada2306ca8c418ebd97807bb08f6ac", "type": "github" }, "original": { @@ -75,11 +75,11 @@ ] }, "locked": { - "lastModified": 1730504689, - "narHash": "sha256-hgmguH29K2fvs9szpq2r3pz2/8cJd2LPS+b4tfNFCwE=", + "lastModified": 1733269028, + "narHash": "sha256-kVq/jAKKtbvWwbL9wf0SKDxtxsC5Gb+nlIYEFnyXhGA=", "owner": "hercules-ci", "repo": "flake-parts", - "rev": "506278e768c2a08bec68eb62932193e341f55c90", + "rev": "e37654df08605b510ad84eceaafcc7248495e843", "type": "github" }, "original": { @@ -135,11 +135,11 @@ "systems": "systems" }, "locked": { - "lastModified": 1726560853, - "narHash": "sha256-X6rJYSESBVr3hBoH0WbKE5KvhPU5bloyZ2L4K60/fPQ=", + "lastModified": 1731533236, + "narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=", "owner": "numtide", "repo": "flake-utils", - "rev": "c1dfcf08411b08f6b8615f7d8971a2bfa81d5e8a", + "rev": "11707dc2f618dd54ca8739b309ec4fc024de578b", "type": "github" }, "original": { @@ -162,11 +162,11 @@ ] }, "locked": { - "lastModified": 1731363552, - "narHash": "sha256-vFta1uHnD29VUY4HJOO/D6p6rxyObnf+InnSMT4jlMU=", + "lastModified": 1732021966, + "narHash": "sha256-mnTbjpdqF0luOkou8ZFi2asa1N3AA2CchR/RqCNmsGE=", "owner": "cachix", "repo": "git-hooks.nix", - "rev": "cd1af27aa85026ac759d5d3fccf650abe7e1bbf0", + "rev": "3308484d1a443fc5bc92012435d79e80458fe43c", "type": "github" }, "original": { @@ -192,11 +192,11 @@ ] }, "locked": { - "lastModified": 1730814269, - "narHash": "sha256-fWPHyhYE6xvMI1eGY3pwBTq85wcy1YXqdzTZF+06nOg=", + "lastModified": 1732021966, + "narHash": "sha256-mnTbjpdqF0luOkou8ZFi2asa1N3AA2CchR/RqCNmsGE=", "owner": "cachix", "repo": "git-hooks.nix", - "rev": "d70155fdc00df4628446352fc58adc640cd705c2", + "rev": "3308484d1a443fc5bc92012435d79e80458fe43c", "type": "github" }, "original": { @@ -278,11 +278,11 @@ ] }, "locked": { - "lastModified": 1731535640, - "narHash": "sha256-2EckCJn4wxran/TsRiCOFcmVpep2m9EBKl99NBh2GnM=", + "lastModified": 1733317578, + "narHash": "sha256-anN/LcP5IuqEARvhPETg1vnbyG3IQ0wdvSAYEJfIQzA=", "owner": "nix-community", "repo": "home-manager", - "rev": "35b055009afd0107b69c286fca34d2ad98940d57", + "rev": "ad48eb25cd0b00ce730da00fa1f8e6e6c27b397d", "type": "github" }, "original": { @@ -299,11 +299,11 @@ ] }, "locked": { - "lastModified": 1731235328, - "narHash": "sha256-NjavpgE9/bMe/ABvZpyHIUeYF1mqR5lhaep3wB79ucs=", + "lastModified": 1733175814, + "narHash": "sha256-zFOtOaqjzZfPMsm1mwu98syv3y+jziAq5DfWygaMtLg=", "owner": "nix-community", "repo": "home-manager", - "rev": "60bb110917844d354f3c18e05450606a435d2d10", + "rev": "bf23fe41082aa0289c209169302afd3397092f22", "type": "github" }, "original": { @@ -350,11 +350,11 @@ "nixpkgs": "nixpkgs" }, "locked": { - "lastModified": 1731500640, - "narHash": "sha256-bxtcbR33ftcSA+7+E52i+cqWAdoCQNFpxR1180HRX48=", + "lastModified": 1733314815, + "narHash": "sha256-FxQzRALeGEfZg7ZA+ArlGBbs3Jtwd7Tr7+E6iucHKDA=", "owner": "nix-community", "repo": "neovim-nightly-overlay", - "rev": "1329ddcc318e77e4629eb629d39f7f7c9b2632f6", + "rev": "7545e949aa9bc2396130191100f1fbf9765bc448", "type": "github" }, "original": { @@ -366,11 +366,11 @@ "neovim-src": { "flake": false, "locked": { - "lastModified": 1731454739, - "narHash": "sha256-ihuASDo2BVZpUpsW6Z8Ll/xvczRPgGT/EGrrNt7NnwU=", + "lastModified": 1733247868, + "narHash": "sha256-TGXXXV/jWUBF2ZBiYt6RKIvUGpsefDe/RSXnUzejxMU=", "owner": "neovim", "repo": "neovim", - "rev": "1128d75550fa0b481b8953a194bae890d733a166", + "rev": "ae93c7f369a174f3d738ab55030de2c9dfc10c57", "type": "github" }, "original": { @@ -386,11 +386,11 @@ ] }, "locked": { - "lastModified": 1731454423, - "narHash": "sha256-TtwvgFxUa0wyptLhQbKaixgNW1UXf3+TDqfX3Kp63oM=", + "lastModified": 1733302587, + "narHash": "sha256-iIJoFsmQp0/nWRhO5c9uCGN4z2ZAJlYfqzyNBoiwASc=", "owner": "LnL7", "repo": "nix-darwin", - "rev": "6c71c49e2448e51ad830ed211024e6d0edc50116", + "rev": "e7a71f8ec55564f54791e0bd9274f2910c86f8f2", "type": "github" }, "original": { @@ -407,11 +407,11 @@ ] }, "locked": { - "lastModified": 1731153869, - "narHash": "sha256-3Ftf9oqOypcEyyrWJ0baVkRpvQqroK/SVBFLvU3nPuc=", + "lastModified": 1733105089, + "narHash": "sha256-Qs3YmoLYUJ8g4RkFj2rMrzrP91e4ShAioC9s+vG6ENM=", "owner": "lnl7", "repo": "nix-darwin", - "rev": "5c74ab862c8070cbf6400128a1b56abb213656da", + "rev": "c6b65d946097baf3915dd51373251de98199280d", "type": "github" }, "original": { @@ -422,11 +422,11 @@ }, "nixos-hardware": { "locked": { - "lastModified": 1731403644, - "narHash": "sha256-T9V7CTucjRZ4Qc6pUEV/kpgNGzQbHWfGcfK6JJLfUeI=", + "lastModified": 1733217105, + "narHash": "sha256-fc6jTzIwCIVWTX50FtW6AZpuukuQWSEbPiyg6ZRGWFY=", "owner": "NixOS", "repo": "nixos-hardware", - "rev": "f6581f1c3b137086e42a08a906bdada63045f991", + "rev": "cceee0a31d2f01bcc98b2fbd591327c06a4ea4f9", "type": "github" }, "original": { @@ -438,11 +438,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1731245184, - "narHash": "sha256-vmLS8+x+gHRv1yzj3n+GTAEObwmhxmkkukB2DwtJRdU=", + "lastModified": 1733097829, + "narHash": "sha256-9hbb1rqGelllb4kVUCZ307G2k3/UhmA8PPGBoyuWaSw=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "aebe249544837ce42588aa4b2e7972222ba12e8f", + "rev": "2c15aa59df0017ca140d9ba302412298ab4bf22a", "type": "github" }, "original": { @@ -454,11 +454,11 @@ }, "nixpkgs_2": { "locked": { - "lastModified": 1731139594, - "narHash": "sha256-IigrKK3vYRpUu+HEjPL/phrfh7Ox881er1UEsZvw9Q4=", + "lastModified": 1733212471, + "narHash": "sha256-M1+uCoV5igihRfcUKrr1riygbe73/dzNnzPsmaLCmpo=", "owner": "nixos", "repo": "nixpkgs", - "rev": "76612b17c0ce71689921ca12d9ffdc9c23ce40b2", + "rev": "55d15ad12a74eb7d4646254e13638ad0c4128776", "type": "github" }, "original": { @@ -483,11 +483,11 @@ "treefmt-nix": "treefmt-nix" }, "locked": { - "lastModified": 1731527733, - "narHash": "sha256-12OpSgbLDiKmxvBXwVracIfGI9FpjFyHpa1r0Ho+NFA=", + "lastModified": 1733220378, + "narHash": "sha256-tWCskBne7LigfeXRWnUFJKKTLOYmmdqiwdqom2Sml1s=", "owner": "nix-community", "repo": "nixvim", - "rev": "f11a877bcc1d66cc8bd7990c704f91c1e99c7d08", + "rev": "78bfbf7b7eb7a1b6cf42e199547de55a55ba2cea", "type": "github" }, "original": { @@ -506,11 +506,11 @@ ] }, "locked": { - "lastModified": 1731060242, - "narHash": "sha256-43yLsOm/wxBbfYSNDWVJeVv5Ij+23X3BIjFUfsdx/6M=", + "lastModified": 1733006402, + "narHash": "sha256-BC1CecAQISV5Q4LZK72Gx0+faemOwaChiD9rMVfDPoA=", "owner": "NuschtOS", "repo": "search", - "rev": "ef493352f9e1f051e01a55c062731503a6b36b4e", + "rev": "16307548b7a1247291c84ae6a12c0aacb07dfba2", "type": "github" }, "original": { @@ -552,11 +552,11 @@ ] }, "locked": { - "lastModified": 1730321837, - "narHash": "sha256-vK+a09qq19QNu2MlLcvN4qcRctJbqWkX7ahgPZ/+maI=", + "lastModified": 1732894027, + "narHash": "sha256-2qbdorpq0TXHBWbVXaTqKoikN4bqAtAplTwGuII+oAc=", "owner": "numtide", "repo": "treefmt-nix", - "rev": "746901bb8dba96d154b66492a29f5db0693dbfcc", + "rev": "6209c381904cab55796c5d7350e89681d3b2a8ef", "type": "github" }, "original": { diff --git a/hosts/macbook/configuration.nix b/hosts/macbook/configuration.nix index b8410cf..0e62d2d 100644 --- a/hosts/macbook/configuration.nix +++ b/hosts/macbook/configuration.nix @@ -7,6 +7,7 @@ imports = [ inputs.home-manager.darwinModules.default ../../modules/nix-darwin/system.nix + ../../modules/nix-darwin/aerospace.nix ]; nixpkgs.hostPlatform = "aarch64-darwin"; @@ -48,6 +49,9 @@ cmd - return : kitty ''; }; + aerospace = { + enable = true; + }; }; home-manager = { diff --git a/hosts/macbook/home.nix b/hosts/macbook/home.nix index 1ddccb6..e99b334 100644 --- a/hosts/macbook/home.nix +++ b/hosts/macbook/home.nix @@ -15,6 +15,7 @@ ../../modules/home-manager/kubernetes.nix ../../modules/home-manager/nix-index.nix ../../modules/home-manager/bitwarden.nix + ../../modules/home-manager/latex.nix ]; home.username = "mthomson"; home.homeDirectory = "/Users/mthomson"; @@ -51,9 +52,19 @@ enable = true; settings.updates.auto_update = true; }; + helix = { + enable = true; + }; + neovide = { + enable = true; + settings = {}; + }; }; home.packages = with pkgs; [ + slides + graph-easy + obsidian ]; programs.home-manager.enable = true; diff --git a/modules/home-manager/kitty/default.nix b/modules/home-manager/kitty/default.nix index fe05582..0fc35f8 100644 --- a/modules/home-manager/kitty/default.nix +++ b/modules/home-manager/kitty/default.nix @@ -8,18 +8,18 @@ font = { name = "JetBrainsMono Nerd Font Mono"; size = 12; - package = pkgs.nerdfonts.override {fonts = ["JetBrainsMono"];}; + package = pkgs.nerd-fonts.jetbrains-mono; }; shellIntegration = { enableZshIntegration = true; }; - themeFile = "kanagawa"; + themeFile = "Modus_Vivendi"; # darwinLaunchOptions = [ # "--single-instance" # ]; - settings = { - background_opacity = "0.9"; - background_blur = 5; - }; + # settings = { + # background_opacity = "0.9"; + # background_blur = 5; + # }; }; } diff --git a/modules/home-manager/latex.nix b/modules/home-manager/latex.nix new file mode 100644 index 0000000..5b4e0a3 --- /dev/null +++ b/modules/home-manager/latex.nix @@ -0,0 +1,11 @@ +{ + pkgs, + config, + ... +}: { + programs = { + texlive = { + enable = true; + }; + }; +} diff --git a/modules/home-manager/nixvim/default.nix b/modules/home-manager/nixvim/default.nix index 1f1a4dd..1a87a06 100644 --- a/modules/home-manager/nixvim/default.nix +++ b/modules/home-manager/nixvim/default.nix @@ -2,6 +2,7 @@ inputs, pkgs, config, +lib, ... }: { imports = [ @@ -15,11 +16,12 @@ config, programs.nixvim = { enable = true; + package = inputs.neovim-nightly-overlay.packages.${pkgs.system}.default; defaultEditor = true; vimdiffAlias = true; colorschemes = { - kanagawa = { + modus = { enable = true; }; }; @@ -87,6 +89,27 @@ config, key = "zn"; action = "ZkNew"; } + # quickfix/location list + { + mode = "n"; + key = "]q"; + action = "cnextzz"; + } + { + mode = "n"; + key = "[q"; + action = "cprevzz"; + } + { + mode = "n"; + key = "]l"; + action = "lnextzz"; + } + { + mode = "n"; + key = "[l"; + action = "lprevzz"; + } # gitsigns { mode = "n"; @@ -284,6 +307,9 @@ config, sleuth = { enable = true; }; + spectre = { + enable = true; + }; treesitter = { enable = true; folding = true; @@ -327,6 +353,7 @@ config, ai = { n_lines = 500; }; + splitjoin = {}; surround = {}; statusline = { use_icons = true; @@ -334,6 +361,7 @@ config, comment = {}; trailspace = {}; pick = {}; + jump = {}; }; }; zk = { @@ -342,9 +370,36 @@ config, picker = "minipick"; }; }; - render-markdown = { + obsidian = { enable = true; + settings = { + completion = { + min_chars = 1; + nvim_cmp = true; + }; + notes_subir = "notes"; + new_notes_location = "notes_subdir"; + templates = { + folder = "templates"; + }; + workspaces = [ + { + name = "personal"; + path = "~/vaults/personal"; + } + ]; + picker = { + name = "mini.pick"; + }; + daily_notes = { + folder = "dailies"; + default_tags = [ "type/daily" ]; + }; + }; }; + # render-markdown = { + # enable = true; + # }; friendly-snippets = { enable = true; }; @@ -359,7 +414,6 @@ config, }; cmp = { enable = true; - settings = { snippet = { expand = '' @@ -470,6 +524,9 @@ config, bashls = { enable = true; }; + clangd = { + enable = true; + }; }; keymaps = { diagnostic = { @@ -497,6 +554,12 @@ config, }; }; }; + nvim-jdtls = { + enable = true; + cmd = [ + (lib.getExe pkgs.jdt-language-server) + ]; + }; }; }; } diff --git a/modules/home-manager/nushell.nix b/modules/home-manager/nushell.nix index 6143282..67d678f 100644 --- a/modules/home-manager/nushell.nix +++ b/modules/home-manager/nushell.nix @@ -12,6 +12,12 @@ }; nushell = { enable = true; + extraConfig = '' + edit_mode: vim + ''; + }; + direnv = { + enableNushellIntegration = true; }; zoxide = { enable = true; diff --git a/modules/home-manager/tmux/default.nix b/modules/home-manager/tmux/default.nix index d00d357..74f67f1 100644 --- a/modules/home-manager/tmux/default.nix +++ b/modules/home-manager/tmux/default.nix @@ -8,7 +8,6 @@ { programs = { tmux = { - shell = "${pkgs.zsh}/bin/zsh"; enable = true; shortcut = "Space"; mouse = true; diff --git a/modules/nix-darwin/aerospace.nix b/modules/nix-darwin/aerospace.nix new file mode 100644 index 0000000..ebb5d94 --- /dev/null +++ b/modules/nix-darwin/aerospace.nix @@ -0,0 +1,185 @@ +{ + services = { + aerospace = { + enable = true; + settings = { + # You can use it to add commands that run after login to macOS user session. + # 'start-at-login' needs to be 'true' for 'after-login-command' to work + # Available commands: https://nikitabobko.github.io/AeroSpace/commands + after-login-command = []; + + # You can use it to add commands that run after AeroSpace startup. + # 'after-startup-command' is run after 'after-login-command' + # Available commands : https://nikitabobko.github.io/AeroSpace/commands + after-startup-command = []; + + # Start AeroSpace at login + start-at-login = false; + + # Normalizations. See: https://nikitabobko.github.io/AeroSpace/guide#normalization + enable-normalization-flatten-containers = true; + enable-normalization-opposite-orientation-for-nested-containers = true; + + # See: https://nikitabobko.github.io/AeroSpace/guide#layouts + # The 'accordion-padding' specifies the size of accordion padding + # You can set 0 to disable the padding feature + accordion-padding = 30; + + # Possible values: tiles|accordion + default-root-container-layout = "tiles"; + + # Possible values: horizontal|vertical|auto + # 'auto' means: wide monitor (anything wider than high) gets horizontal orientation, + # tall monitor (anything higher than wide) gets vertical orientation + default-root-container-orientation = "auto"; + + # Mouse follows focus when focused monitor changes + # Drop it from your config, if you don't like this behavior + # See https://nikitabobko.github.io/AeroSpace/guide#on-focus-changed-callbacks + # See https://nikitabobko.github.io/AeroSpace/commands#move-mouse + # Fallback value (if you omit the key): on-focused-monitor-changed = [] + on-focused-monitor-changed = ["move-mouse monitor-lazy-center"]; + + # You can effectively turn off macOS "Hide application" (cmd-h) feature by toggling this flag + # Useful if you don't use this macOS feature, but accidentally hit cmd-h or cmd-alt-h key + # Also see: https://nikitabobko.github.io/AeroSpace/goodies#disable-hide-app + automatically-unhide-macos-hidden-apps = false; + + key-mapping = { + # Possible values: (qwerty|dvorak) + # See https://nikitabobko.github.io/AeroSpace/guide#key-mapping + preset = "qwerty"; + }; + + # Gaps between windows (inner-*) and between monitor edges (outer-*). + # Possible values: + # - Constant: gaps.outer.top = 8 + # - Per monitor: gaps.outer.top = [{ monitor.main = 16 }, { monitor."some-pattern" = 32 }, 24] + # In this example, 24 is a default value when there is no match. + # Monitor pattern is the same as for 'workspace-to-monitor-force-assignment'. + # See: https://nikitabobko.github.io/AeroSpace/guide#assign-workspaces-to-monitors + gaps = { + inner.horizontal = 8; + inner.vertical = 8; + outer.left = 8; + outer.bottom = 8; + outer.top = 8; + outer.right = 8; + }; + + mode = { + main.binding = { + # See: https://nikitabobko.github.io/AeroSpace/commands#layout + alt-slash = "layout tiles horizontal vertical"; + alt-comma = "layout accordion horizontal vertical"; + + # See: https://nikitabobko.github.io/AeroSpace/commands#focus + alt-h = "focus left"; + alt-j = "focus down"; + alt-k = "focus up"; + alt-l = "focus right"; + + # See: https://nikitabobko.github.io/AeroSpace/commands#move + alt-shift-h = "move left"; + alt-shift-j = "move down"; + alt-shift-k = "move up"; + alt-shift-l = "move right"; + + # See: https://nikitabobko.github.io/AeroSpace/commands#resize + alt-shift-minus = "resize smart -50"; + alt-shift-equal = "resize smart +50"; + + # See: https://nikitabobko.github.io/AeroSpace/commands#workspace + alt-1 = "workspace 1"; + alt-2 = "workspace 2"; + alt-3 = "workspace 3"; + alt-4 = "workspace 4"; + alt-5 = "workspace 5"; + alt-6 = "workspace 6"; + alt-7 = "workspace 7"; + alt-8 = "workspace 8"; + alt-9 = "workspace 9"; + alt-a = "workspace A"; # In your config, you can drop workspace bindings that you don"t need + alt-b = "workspace B"; + alt-c = "workspace C"; + alt-d = "workspace D"; + alt-e = "workspace E"; + alt-f = "workspace F"; + alt-g = "workspace G"; + alt-i = "workspace I"; + alt-m = "workspace M"; + alt-n = "workspace N"; + alt-o = "workspace O"; + alt-p = "workspace P"; + alt-q = "workspace Q"; + alt-r = "workspace R"; + alt-s = "workspace S"; + alt-t = "workspace T"; + alt-u = "workspace U"; + alt-v = "workspace V"; + alt-w = "workspace W"; + alt-x = "workspace X"; + alt-y = "workspace Y"; + alt-z = "workspace Z"; + + # See: https://nikitabobko.github.io/AeroSpace/commands#move-node-to-workspace + alt-shift-1 = "move-node-to-workspace 1"; + alt-shift-2 = "move-node-to-workspace 2"; + alt-shift-3 = "move-node-to-workspace 3"; + alt-shift-4 = "move-node-to-workspace 4"; + alt-shift-5 = "move-node-to-workspace 5"; + alt-shift-6 = "move-node-to-workspace 6"; + alt-shift-7 = "move-node-to-workspace 7"; + alt-shift-8 = "move-node-to-workspace 8"; + alt-shift-9 = "move-node-to-workspace 9"; + alt-shift-a = "move-node-to-workspace A"; + alt-shift-b = "move-node-to-workspace B"; + alt-shift-c = "move-node-to-workspace C"; + alt-shift-d = "move-node-to-workspace D"; + alt-shift-e = "move-node-to-workspace E"; + alt-shift-f = "move-node-to-workspace F"; + alt-shift-g = "move-node-to-workspace G"; + alt-shift-i = "move-node-to-workspace I"; + alt-shift-m = "move-node-to-workspace M"; + alt-shift-n = "move-node-to-workspace N"; + alt-shift-o = "move-node-to-workspace O"; + alt-shift-p = "move-node-to-workspace P"; + alt-shift-q = "move-node-to-workspace Q"; + alt-shift-r = "move-node-to-workspace R"; + alt-shift-s = "move-node-to-workspace S"; + alt-shift-t = "move-node-to-workspace T"; + alt-shift-u = "move-node-to-workspace U"; + alt-shift-v = "move-node-to-workspace V"; + alt-shift-w = "move-node-to-workspace W"; + alt-shift-x = "move-node-to-workspace X"; + alt-shift-y = "move-node-to-workspace Y"; + alt-shift-z = "move-node-to-workspace Z"; + + # See: https://nikitabobko.github.io/AeroSpace/commands#workspace-back-and-forth + alt-tab = "workspace-back-and-forth"; + # See: https://nikitabobko.github.io/AeroSpace/commands#move-workspace-to-monitor + alt-shift-tab = "move-workspace-to-monitor --wrap-around next"; + + # See: https://nikitabobko.github.io/AeroSpace/commands#mode + alt-shift-semicolon = "mode service"; + }; + + service.binding = { + esc = ["reload-config" "mode main"]; + r = ["flatten-workspace-tree" "mode main"]; # reset layout + f = ["layout floating tiling" "mode main"]; # Toggle between floating and tiling layout + backspace = ["close-all-windows-but-current" "mode main"]; + + # sticky is not yet supported https://github.com/nikitabobko/AeroSpace/issues/2 + #s = ["layout sticky tiling" "mode main"] + + alt-shift-h = ["join-with left" "mode main"]; + alt-shift-j = ["join-with down" "mode main"]; + alt-shift-k = ["join-with up" "mode main"]; + alt-shift-l = ["join-with right" "mode main"]; + }; + }; + }; + }; + }; +}