From fbc7e8999f449dd1dadcf763ed1dcd552f6507fd Mon Sep 17 00:00:00 2001 From: Michael Thomson Date: Wed, 25 Jun 2025 15:44:35 -0400 Subject: [PATCH] update --- flake.lock | 306 +++--- hosts/macbook/configuration.nix | 2 + hosts/macbook/home.nix | 2 + modules/home-manager/emacs/default.nix | 7 +- modules/home-manager/emacs/emacs/init.el | 1102 +++++++++++----------- modules/home-manager/kitty.nix | 2 +- modules/home-manager/nixcats/default.nix | 1 + modules/home-manager/nixcats/init.lua | 2 + modules/home-manager/stylix.nix | 2 + 9 files changed, 729 insertions(+), 697 deletions(-) diff --git a/flake.lock b/flake.lock index 1ce4e49..d768841 100644 --- a/flake.lock +++ b/flake.lock @@ -20,11 +20,11 @@ ] }, "locked": { - "lastModified": 1745357003, - "narHash": "sha256-jYwzQkv1r7HN/4qrAuKp+NR4YYNp2xDrOX5O9YVqkWo=", + "lastModified": 1750372185, + "narHash": "sha256-lVBKxd9dsZOH1fA6kSE5WNnt8e+09fN+NL/Q3BjTWHY=", "owner": "hyprwm", "repo": "aquamarine", - "rev": "a19cf76ee1a15c1c12083fa372747ce46387289f", + "rev": "7cef49d261cbbe537e8cb662485e76d29ac4cbca", "type": "github" }, "original": { @@ -38,11 +38,11 @@ "fromYaml": "fromYaml" }, "locked": { - "lastModified": 1745523430, - "narHash": "sha256-EAYWV+kXbwsH+8G/8UtmcunDeKwLwSOyfcmzZUkWE/c=", + "lastModified": 1746562888, + "narHash": "sha256-YgNJQyB5dQiwavdDFBMNKk1wyS77AtdgDk/VtU6wEaI=", "owner": "SenchoPens", "repo": "base16.nix", - "rev": "58bfe2553d937d8af0564f79d5b950afbef69717", + "rev": "806a1777a5db2a1ef9d5d6f493ef2381047f2b89", "type": "github" }, "original": { @@ -70,11 +70,11 @@ "base16-helix": { "flake": false, "locked": { - "lastModified": 1736852337, - "narHash": "sha256-esD42YdgLlEh7koBrSqcT7p2fsMctPAcGl/+2sYJa2o=", + "lastModified": 1748408240, + "narHash": "sha256-9M2b1rMyMzJK0eusea0x3lyh3mu5nMeEDSc4RZkGm+g=", "owner": "tinted-theming", "repo": "base16-helix", - "rev": "03860521c40b0b9c04818f2218d9cc9efc21e7a5", + "rev": "6c711ab1a9db6f51e2f6887cc3345530b33e152e", "type": "github" }, "original": { @@ -103,11 +103,11 @@ "firefox-gnome-theme": { "flake": false, "locked": { - "lastModified": 1744642301, - "narHash": "sha256-5A6LL7T0lttn1vrKsNOKUk9V0ittdW0VEqh6AtefxJ4=", + "lastModified": 1748383148, + "narHash": "sha256-pGvD/RGuuPf/4oogsfeRaeMm6ipUIznI2QSILKjKzeA=", "owner": "rafaelmardojai", "repo": "firefox-gnome-theme", - "rev": "59e3de00f01e5adb851d824cf7911bd90c31083a", + "rev": "4eb2714fbed2b80e234312611a947d6cb7d70caf", "type": "github" }, "original": { @@ -134,11 +134,11 @@ }, "flake-compat_2": { "locked": { - "lastModified": 1733328505, - "narHash": "sha256-NeCCThCEP3eCl2l/+27kNNK7QrwZB1IJCrXfrbv5oqU=", + "lastModified": 1747046372, + "narHash": "sha256-CIVLLkVgvHYbgI2UpXvIIBJ12HWgX+fjA8Xf8PUmqCY=", "owner": "edolstra", "repo": "flake-compat", - "rev": "ff81ac966bb2cae68946d5ed5fc4994f96d0ffec", + "rev": "9100a0f413b0c601e0533d1d94ffd501ce2e7885", "type": "github" }, "original": { @@ -154,6 +154,27 @@ "nixpkgs" ] }, + "locked": { + "lastModified": 1749398372, + "narHash": "sha256-tYBdgS56eXYaWVW3fsnPQ/nFlgWi/Z2Ymhyu21zVM98=", + "owner": "hercules-ci", + "repo": "flake-parts", + "rev": "9305fe4e5c2a6fcf5ba6a3ff155720fbe4076569", + "type": "github" + }, + "original": { + "owner": "hercules-ci", + "repo": "flake-parts", + "type": "github" + } + }, + "flake-parts_2": { + "inputs": { + "nixpkgs-lib": [ + "stylix", + "nixpkgs" + ] + }, "locked": { "lastModified": 1743550720, "narHash": "sha256-hIshGgKZCgWh6AYJpJmRgFdR3WUbkY04o82X05xqQiY=", @@ -168,28 +189,6 @@ "type": "github" } }, - "flake-parts_2": { - "inputs": { - "nixpkgs-lib": [ - "stylix", - "nur", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1733312601, - "narHash": "sha256-4pDvzqnegAfRkPwO3wmwBhVi/Sye1mzps0zHWYnP88c=", - "owner": "hercules-ci", - "repo": "flake-parts", - "rev": "205b12d8b7cd4802fbcb8e8ef6a0f1408781a4f9", - "type": "github" - }, - "original": { - "owner": "hercules-ci", - "repo": "flake-parts", - "type": "github" - } - }, "flake-utils": { "inputs": { "systems": "systems_2" @@ -208,27 +207,6 @@ "type": "github" } }, - "flake-utils_2": { - "inputs": { - "systems": [ - "stylix", - "systems" - ] - }, - "locked": { - "lastModified": 1731533236, - "narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "11707dc2f618dd54ca8739b309ec4fc024de578b", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" - } - }, "fromYaml": { "flake": false, "locked": { @@ -258,11 +236,11 @@ ] }, "locked": { - "lastModified": 1742649964, - "narHash": "sha256-DwOTp7nvfi8mRfuL1escHDXabVXFGT1VlPD1JHrtrco=", + "lastModified": 1747372754, + "narHash": "sha256-2Y53NGIX2vxfie1rOW0Qb86vjRZ7ngizoo+bnXU9D9k=", "owner": "cachix", "repo": "git-hooks.nix", - "rev": "dcf5072734cb576d2b0c59b2ac44f5050b5eac82", + "rev": "80479b6ec16fefd9c1db3ea13aeb038c60530f46", "type": "github" }, "original": { @@ -318,16 +296,16 @@ "gnome-shell": { "flake": false, "locked": { - "lastModified": 1732369855, - "narHash": "sha256-JhUWbcYPjHO3Xs3x9/Z9RuqXbcp5yhPluGjwsdE2GMg=", + "lastModified": 1744584021, + "narHash": "sha256-0RJ4mJzf+klKF4Fuoc8VN8dpQQtZnKksFmR2jhWE1Ew=", "owner": "GNOME", "repo": "gnome-shell", - "rev": "dadd58f630eeea41d645ee225a63f719390829dc", + "rev": "52c517c8f6c199a1d6f5118fae500ef69ea845ae", "type": "github" }, "original": { "owner": "GNOME", - "ref": "47.2", + "ref": "48.1", "repo": "gnome-shell", "type": "github" } @@ -339,11 +317,11 @@ ] }, "locked": { - "lastModified": 1746413188, - "narHash": "sha256-i6BoiQP0PasExESQHszC0reQHfO6D4aI2GzOwZMOI20=", + "lastModified": 1750798083, + "narHash": "sha256-DTCCcp6WCFaYXWKFRA6fiI2zlvOLCf5Vwx8+/0R8Wc4=", "owner": "nix-community", "repo": "home-manager", - "rev": "8a318641ac13d3bc0a53651feaee9560f9b2d89a", + "rev": "ff31a4677c1a8ae506aa7e003a3dba08cb203f82", "type": "github" }, "original": { @@ -360,11 +338,11 @@ ] }, "locked": { - "lastModified": 1746369725, - "narHash": "sha256-m3ai7LLFYsymMK0uVywCceWfUhP0k3CALyFOfcJACqE=", + "lastModified": 1748737919, + "narHash": "sha256-5kvBbLYdp+n7Ftanjcs6Nv+UO6sBhelp6MIGJ9nWmjQ=", "owner": "nix-community", "repo": "home-manager", - "rev": "1a1793f6d940d22c6e49753548c5b6cb7dc5545d", + "rev": "5675a9686851d9626560052a032c4e14e533c1fa", "type": "github" }, "original": { @@ -389,11 +367,11 @@ ] }, "locked": { - "lastModified": 1745948457, - "narHash": "sha256-lzTV10FJTCGNtMdgW5YAhCAqezeAzKOd/97HbQK8GTU=", + "lastModified": 1749155331, + "narHash": "sha256-XR9fsI0zwLiFWfqi/pdS/VD+YNorKb3XIykgTg4l1nA=", "owner": "hyprwm", "repo": "hyprcursor", - "rev": "ac903e80b33ba6a88df83d02232483d99f327573", + "rev": "45fcc10b4c282746d93ec406a740c43b48b4ef80", "type": "github" }, "original": { @@ -418,11 +396,11 @@ ] }, "locked": { - "lastModified": 1745015490, - "narHash": "sha256-apEJ9zoSzmslhJ2vOKFcXTMZLUFYzh1ghfB6Rbw3Low=", + "lastModified": 1750371717, + "narHash": "sha256-cNP+bVq8m5x2Rl6MTjwfQLCdwbVmKvTH7yqVc1SpiJM=", "owner": "hyprwm", "repo": "hyprgraphics", - "rev": "60754910946b4e2dc1377b967b7156cb989c5873", + "rev": "15c6f8f3a567fec9a0f732cd310a7ff456deef88", "type": "github" }, "original": { @@ -447,11 +425,11 @@ "xdph": "xdph" }, "locked": { - "lastModified": 1746536008, - "narHash": "sha256-JCelAgqaJu8z5ESjxri7ogT/h3NhJWi1U7A1WEVLsKc=", + "lastModified": 1750848152, + "narHash": "sha256-m7DxFbU9YgPxFlQ6iH6zDreXT3IfUVxZZAdkdvN9yz8=", "owner": "hyprwm", "repo": "Hyprland", - "rev": "708a7c24ef2c137c04c2473ee6b3f841ed5a1d8b", + "rev": "f4f090e4b2f9f0bba5408cbd135d2fff1990be1d", "type": "github" }, "original": { @@ -477,11 +455,11 @@ ] }, "locked": { - "lastModified": 1746496640, - "narHash": "sha256-/QJ3WBWGj14Ll7d2C6pvabVZwznDk7E5XgVY1bI3VeY=", + "lastModified": 1750799801, + "narHash": "sha256-Oqn6gHIVfgkzzuigwNk9UZbgKdyzAzU/JoywB6z1O+M=", "owner": "hyprwm", "repo": "hyprland-plugins", - "rev": "eab6921631b4943e78859714964d2b9bf81724eb", + "rev": "c1fdf38bfcd716130ce022cf21a1fca7582482d1", "type": "github" }, "original": { @@ -502,11 +480,11 @@ ] }, "locked": { - "lastModified": 1743714874, - "narHash": "sha256-yt8F7NhMFCFHUHy/lNjH/pjZyIDFNk52Q4tivQ31WFo=", + "lastModified": 1749046714, + "narHash": "sha256-kymV5FMnddYGI+UjwIw8ceDjdeg7ToDVjbHCvUlhn14=", "owner": "hyprwm", "repo": "hyprland-protocols", - "rev": "3a5c2bda1c1a4e55cc1330c782547695a93f05b2", + "rev": "613878cb6f459c5e323aaafe1e6f388ac8a36330", "type": "github" }, "original": { @@ -534,11 +512,11 @@ ] }, "locked": { - "lastModified": 1737634706, - "narHash": "sha256-nGCibkfsXz7ARx5R+SnisRtMq21IQIhazp6viBU8I/A=", + "lastModified": 1749154592, + "narHash": "sha256-DO7z5CeT/ddSGDEnK9mAXm1qlGL47L3VAHLlLXoCjhE=", "owner": "hyprwm", "repo": "hyprland-qt-support", - "rev": "8810df502cdee755993cb803eba7b23f189db795", + "rev": "4c8053c3c888138a30c3a6c45c2e45f5484f2074", "type": "github" }, "original": { @@ -570,11 +548,11 @@ ] }, "locked": { - "lastModified": 1745951494, - "narHash": "sha256-2dModE32doiyQMmd6EDAQeZnz+5LOs6KXyE0qX76WIg=", + "lastModified": 1750371812, + "narHash": "sha256-D868K1dVEACw17elVxRgXC6hOxY+54wIEjURztDWLk8=", "owner": "hyprwm", "repo": "hyprland-qtutils", - "rev": "4be1d324faf8d6e82c2be9f8510d299984dfdd2e", + "rev": "b13c7481e37856f322177010bdf75fccacd1adc8", "type": "github" }, "original": { @@ -599,11 +577,11 @@ ] }, "locked": { - "lastModified": 1745357019, - "narHash": "sha256-q/C3qj9FWHQenObXuw/nGIT8iIsWFjgmcQYcA+ZfpPs=", + "lastModified": 1750371198, + "narHash": "sha256-/iuJ1paQOBoSLqHflRNNGyroqfF/yvPNurxzcCT0cAE=", "owner": "hyprwm", "repo": "hyprlang", - "rev": "397600c42b8d7a443a5b4e92aa15f46650a90f18", + "rev": "cee01452bca58d6cadb3224e21e370de8bc20f0b", "type": "github" }, "original": { @@ -624,11 +602,11 @@ ] }, "locked": { - "lastModified": 1745975815, - "narHash": "sha256-s3GzsRxBL/N/xYgUXZhQh4t62uR1BN4zxXgWBtJ3lWM=", + "lastModified": 1750371096, + "narHash": "sha256-JB1IeJ41y7kWc/dPGV6RMcCUM0Xj2NEK26A2Ap7EM9c=", "owner": "hyprwm", "repo": "hyprutils", - "rev": "05878d9470c9e5cbc8807813f9ec2006627a0ca0", + "rev": "38f3a211657ce82a1123bf19402199b67a410f08", "type": "github" }, "original": { @@ -649,11 +627,11 @@ ] }, "locked": { - "lastModified": 1739870480, - "narHash": "sha256-SiDN5BGxa/1hAsqhgJsS03C3t2QrLgBT8u+ENJ0Qzwc=", + "lastModified": 1750371869, + "narHash": "sha256-lGk4gLjgZQ/rndUkzmPYcgbHr8gKU5u71vyrjnwfpB4=", "owner": "hyprwm", "repo": "hyprwayland-scanner", - "rev": "206367a08dc5ac4ba7ad31bdca391d098082e64b", + "rev": "aa38edd6e3e277ae6a97ea83a69261a5c3aab9fd", "type": "github" }, "original": { @@ -676,16 +654,16 @@ ] }, "locked": { - "lastModified": 1737371634, - "narHash": "sha256-fTVAWzT1UMm1lT+YxHuVPtH+DATrhYfea3B0MxG/cGw=", + "lastModified": 1748294338, + "narHash": "sha256-FVO01jdmUNArzBS7NmaktLdGA5qA3lUMJ4B7a05Iynw=", "owner": "NuschtOS", "repo": "ixx", - "rev": "a1176e2a10ce745ff8f63e4af124ece8fe0b1648", + "rev": "cc5f390f7caf265461d4aab37e98d2292ebbdb85", "type": "github" }, "original": { "owner": "NuschtOS", - "ref": "v0.0.7", + "ref": "v0.0.8", "repo": "ixx", "type": "github" } @@ -697,11 +675,11 @@ ] }, "locked": { - "lastModified": 1746254942, - "narHash": "sha256-Y062AuRx6l+TJNX8wxZcT59SSLsqD9EedAY0mqgTtQE=", + "lastModified": 1750618568, + "narHash": "sha256-w9EG5FOXrjXGfbqCcQg9x1lMnTwzNDW5BMXp8ddy15E=", "owner": "LnL7", "repo": "nix-darwin", - "rev": "760a11c87009155afa0140d55c40e7c336d62d7a", + "rev": "1dd19f19e4b53a1fd2e8e738a08dd5fe635ec7e5", "type": "github" }, "original": { @@ -763,11 +741,11 @@ }, "nixCats": { "locked": { - "lastModified": 1745981676, - "narHash": "sha256-KGkNQbZaX+1KKBjUoltOby36+rH2CPNLFpm1blZ5Li4=", + "lastModified": 1750385661, + "narHash": "sha256-JpIEf5IrOzMTjowkxB6kgh4AK3Dp9i/T9G4w2ZiKMgQ=", "owner": "BirdeeHub", "repo": "nixCats-nvim", - "rev": "a4b78fc624b31b68536cdead4699c27bcb9e655a", + "rev": "04379fef2fbd4c9d8f4c9a6203cef135ab0b1acd", "type": "github" }, "original": { @@ -778,11 +756,11 @@ }, "nixos-hardware": { "locked": { - "lastModified": 1746468201, - "narHash": "sha256-hSOSlrvMJwGr8hX/gc0mnhUf5UIClMDUAadfXlSXzfc=", + "lastModified": 1750837715, + "narHash": "sha256-2m1ceZjbmgrJCZ2PuQZaK4in3gcg3o6rZ7WK6dr5vAA=", "owner": "NixOS", "repo": "nixos-hardware", - "rev": "6aabf68429c0a414221d1790945babfb6a0bd068", + "rev": "98236410ea0fe204d0447149537a924fb71a6d4f", "type": "github" }, "original": { @@ -794,11 +772,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1746141548, - "narHash": "sha256-IgBWhX7A2oJmZFIrpRuMnw5RAufVnfvOgHWgIdds+hc=", + "lastModified": 1750365781, + "narHash": "sha256-XE/lFNhz5lsriMm/yjXkvSZz5DfvKJLUjsS6pP8EC50=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "f02fddb8acef29a8b32f10a335d44828d7825b78", + "rev": "08f22084e6085d19bcfb4be30d1ca76ecb96fe54", "type": "github" }, "original": { @@ -842,11 +820,11 @@ }, "nixpkgs_2": { "locked": { - "lastModified": 1746461020, - "narHash": "sha256-7+pG1I9jvxNlmln4YgnlW4o+w0TZX24k688mibiFDUE=", + "lastModified": 1750741721, + "narHash": "sha256-Z0djmTa1YmnGMfE9jEe05oO4zggjDmxOGKwt844bUhE=", "owner": "nixos", "repo": "nixpkgs", - "rev": "3730d8a308f94996a9ba7c7138ede69c1b9ac4ae", + "rev": "4b1164c3215f018c4442463a27689d973cffd750", "type": "github" }, "original": { @@ -858,11 +836,11 @@ }, "nixpkgs_3": { "locked": { - "lastModified": 1745930157, - "narHash": "sha256-y3h3NLnzRSiUkYpnfvnS669zWZLoqqI6NprtLQ+5dck=", + "lastModified": 1748460289, + "narHash": "sha256-7doLyJBzCllvqX4gszYtmZUToxKvMUrg45EUWaUYmBg=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "46e634be05ce9dc6d4db8e664515ba10b78151ae", + "rev": "96ec055edbe5ee227f28cdbc3f1ddf1df5965102", "type": "github" }, "original": { @@ -878,14 +856,15 @@ "nixpkgs": [ "nixpkgs" ], - "nuschtosSearch": "nuschtosSearch" + "nuschtosSearch": "nuschtosSearch", + "systems": "systems_3" }, "locked": { - "lastModified": 1746536883, - "narHash": "sha256-EJax0aiJIVJlqF7QyAefZ9fi1HgGcm7U1rBkcm2Z3Ps=", + "lastModified": 1750855714, + "narHash": "sha256-vgvO/5WL6n1kIVucgyiMcQfsI+WKt1/YoZDEonZw9fo=", "owner": "nix-community", "repo": "nixvim", - "rev": "c26f5c2e31c1da895bf9289783ff8e2fe3637ca0", + "rev": "e7e6cfd32b09b7218f8759e349824b7aecd7dec5", "type": "github" }, "original": { @@ -950,7 +929,10 @@ }, "nur": { "inputs": { - "flake-parts": "flake-parts_2", + "flake-parts": [ + "stylix", + "flake-parts" + ], "nixpkgs": [ "stylix", "nixpkgs" @@ -958,11 +940,11 @@ "treefmt-nix": "treefmt-nix" }, "locked": { - "lastModified": 1746056780, - "narHash": "sha256-/emueQGaoT4vu0QjU9LDOG5roxRSfdY0K2KkxuzazcM=", + "lastModified": 1748730660, + "narHash": "sha256-5LKmRYKdPuhm8j5GFe3AfrJL8dd8o57BQ34AGjJl1R0=", "owner": "nix-community", "repo": "NUR", - "rev": "d476cd0972dd6242d76374fcc277e6735715c167", + "rev": "2c0bc52fe14681e9ef60e3553888c4f086e46ecb", "type": "github" }, "original": { @@ -981,11 +963,11 @@ ] }, "locked": { - "lastModified": 1745046075, - "narHash": "sha256-8v4y6k16Ra/fiecb4DxhsoOGtzLKgKlS+9/XJ9z0T2I=", + "lastModified": 1749730855, + "narHash": "sha256-L3x2nSlFkXkM6tQPLJP3oCBMIsRifhIDPMQQdHO5xWo=", "owner": "NuschtOS", "repo": "search", - "rev": "066afe8643274470f4a294442aadd988356a478f", + "rev": "8dfe5879dd009ff4742b668d9c699bc4b9761742", "type": "github" }, "original": { @@ -1004,11 +986,11 @@ ] }, "locked": { - "lastModified": 1742649964, - "narHash": "sha256-DwOTp7nvfi8mRfuL1escHDXabVXFGT1VlPD1JHrtrco=", + "lastModified": 1749636823, + "narHash": "sha256-WUaIlOlPLyPgz9be7fqWJA5iG6rHcGRtLERSCfUDne4=", "owner": "cachix", "repo": "git-hooks.nix", - "rev": "dcf5072734cb576d2b0c59b2ac44f5050b5eac82", + "rev": "623c56286de5a3193aa38891a6991b28f9bab056", "type": "github" }, "original": { @@ -1055,13 +1037,13 @@ "base16-vim": "base16-vim", "firefox-gnome-theme": "firefox-gnome-theme", "flake-compat": "flake-compat_2", - "flake-utils": "flake-utils_2", + "flake-parts": "flake-parts_2", "git-hooks": "git-hooks", "gnome-shell": "gnome-shell", "home-manager": "home-manager_2", "nixpkgs": "nixpkgs_3", "nur": "nur", - "systems": "systems_3", + "systems": "systems_4", "tinted-foot": "tinted-foot", "tinted-kitty": "tinted-kitty", "tinted-schemes": "tinted-schemes", @@ -1069,11 +1051,11 @@ "tinted-zed": "tinted-zed" }, "locked": { - "lastModified": 1746542234, - "narHash": "sha256-kBlPMNZXPzDG4HUmdqYpvjvVYkoDdDrVvO14cKgHaiU=", + "lastModified": 1750862951, + "narHash": "sha256-oUhnj0mzeSAX3IFaWn6LKLbmuFeNd7ulIAkxf0Jc07A=", "owner": "danth", "repo": "stylix", - "rev": "965865bc36033ead241e107f486418e6f600d58b", + "rev": "37b8c5f68086f36a109074c3fedebbbf8c20ecda", "type": "github" }, "original": { @@ -1127,6 +1109,21 @@ "type": "github" } }, + "systems_4": { + "locked": { + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default", + "type": "github" + } + }, "tinted-foot": { "flake": false, "locked": { @@ -1147,28 +1144,27 @@ "tinted-kitty": { "flake": false, "locked": { - "lastModified": 1716423189, - "narHash": "sha256-2xF3sH7UIwegn+2gKzMpFi3pk5DlIlM18+vj17Uf82U=", + "lastModified": 1735730497, + "narHash": "sha256-4KtB+FiUzIeK/4aHCKce3V9HwRvYaxX+F1edUrfgzb8=", "owner": "tinted-theming", "repo": "tinted-kitty", - "rev": "eb39e141db14baef052893285df9f266df041ff8", + "rev": "de6f888497f2c6b2279361bfc790f164bfd0f3fa", "type": "github" }, "original": { "owner": "tinted-theming", "repo": "tinted-kitty", - "rev": "eb39e141db14baef052893285df9f266df041ff8", "type": "github" } }, "tinted-schemes": { "flake": false, "locked": { - "lastModified": 1744974599, - "narHash": "sha256-Fg+rdGs5FAgfkYNCs74lnl8vkQmiZVdBsziyPhVqrlY=", + "lastModified": 1748180480, + "narHash": "sha256-7n0XiZiEHl2zRhDwZd/g+p38xwEoWtT0/aESwTMXWG4=", "owner": "tinted-theming", "repo": "schemes", - "rev": "28c26a621123ad4ebd5bbfb34ab39421c0144bdd", + "rev": "87d652edd26f5c0c99deda5ae13dfb8ece2ffe31", "type": "github" }, "original": { @@ -1180,11 +1176,11 @@ "tinted-tmux": { "flake": false, "locked": { - "lastModified": 1745111349, - "narHash": "sha256-udV+nHdpqgkJI9D0mtvvAzbqubt9jdifS/KhTTbJ45w=", + "lastModified": 1748740859, + "narHash": "sha256-OEM12bg7F4N5WjZOcV7FHJbqRI6jtCqL6u8FtPrlZz4=", "owner": "tinted-theming", "repo": "tinted-tmux", - "rev": "e009f18a01182b63559fb28f1c786eb027c3dee9", + "rev": "57d5f9683ff9a3b590643beeaf0364da819aedda", "type": "github" }, "original": { @@ -1259,11 +1255,11 @@ ] }, "locked": { - "lastModified": 1745871725, - "narHash": "sha256-M24SNc2flblWGXFkGQfqSlEOzAGZnMc9QG3GH4K/KbE=", + "lastModified": 1750372504, + "narHash": "sha256-VBeZb1oqZM1cqCAZnFz/WyYhO8aF/ImagI7WWg/Z3Og=", "owner": "hyprwm", "repo": "xdg-desktop-portal-hyprland", - "rev": "76bbf1a6b1378e4ab5230bad00ad04bc287c969e", + "rev": "400308fc4f9d12e0a93e483c2e7a649e12af1a92", "type": "github" }, "original": { diff --git a/hosts/macbook/configuration.nix b/hosts/macbook/configuration.nix index 4d71060..5a87c82 100644 --- a/hosts/macbook/configuration.nix +++ b/hosts/macbook/configuration.nix @@ -18,6 +18,8 @@ networking.hostName = "macbook"; + system.primaryUser = "mthomson"; + nix.settings = { trusted-users = ["mthomson"]; diff --git a/hosts/macbook/home.nix b/hosts/macbook/home.nix index fcf7b9a..f8da748 100644 --- a/hosts/macbook/home.nix +++ b/hosts/macbook/home.nix @@ -53,6 +53,8 @@ ]) azure-functions-core-tools dotnet-sdk + watchman + typescript-language-server ]; programs.home-manager.enable = true; diff --git a/modules/home-manager/emacs/default.nix b/modules/home-manager/emacs/default.nix index 3659e97..9027eb3 100644 --- a/modules/home-manager/emacs/default.nix +++ b/modules/home-manager/emacs/default.nix @@ -9,7 +9,6 @@ tree-sitter fd ripgrep - vue-language-server typescript-language-server typescript nodejs @@ -24,8 +23,8 @@ ]; }; services.emacs.enable = true; - home.file.".config/emacs" = { - source = ./emacs; - recursive = true; + home.file.".config/emacs/init.el" = { + source = config.lib.file.mkOutOfStoreSymlink /Users/mthomson/dev/personal/nixos/modules/home-manager/emacs/emacs/init.el; + # recursive = true; }; } diff --git a/modules/home-manager/emacs/emacs/init.el b/modules/home-manager/emacs/emacs/init.el index 5940e75..9f81cbe 100644 --- a/modules/home-manager/emacs/emacs/init.el +++ b/modules/home-manager/emacs/emacs/init.el @@ -1,427 +1,619 @@ -;; The default is 800 kilobytes. Measured in bytes. -(setq gc-cons-threshold (* 50 1000 1000)) +;; performance enhancements +(setq gc-cons-threshold #x40000000) -(defun start/org-babel-tangle-config () - "Automatically tangle our Emacs.org config file when we save it. Credit to Emacs From Scratch for this one!" - (when (string-equal (file-name-directory (buffer-file-name)) - (expand-file-name user-emacs-directory)) - ;; Dynamic scoping to the rescue - (let ((org-confirm-babel-evaluate nil)) - (org-babel-tangle)))) +(setq read-process-output-max (* 1024 1024 4)) -(add-hook 'org-mode-hook (lambda () (add-hook 'after-save-hook #'start/org-babel-tangle-config))) +;; disable package.el on startup +(setq package-enable-at-startup nil) -(require 'use-package-ensure) ;; Load use-package-always-ensure -(setq use-package-always-ensure t) ;; Always ensures that a package is installed -(setq package-archives '(("melpa" . "https://melpa.org/packages/") ;; Sets default package repositories - ("org" . "https://orgmode.org/elpa/") - ("elpa" . "https://elpa.gnu.org/packages/") - ("nongnu" . "https://elpa.nongnu.org/nongnu/"))) ;; For Eat Terminal +;; bootstrap `straight.el` +(defvar bootstrap-version) +(let ((bootstrap-file + (expand-file-name + "straight/repos/straight.el/bootstrap.el" + (or (bound-and-true-p straight-base-dir) + user-emacs-directory))) + (bootstrap-version 7)) + (unless (file-exists-p bootstrap-file) + (with-current-buffer + (url-retrieve-synchronously + "https://raw.githubusercontent.com/radian-software/straight.el/develop/install.el" + 'silent 'inhibit-cookies) + (goto-char (point-max)) + (eval-print-last-sexp))) + (load bootstrap-file nil 'nomessage)) +(straight-use-package 'use-package) + +;; add MELPA +(require 'package) +(add-to-list 'package-archives '("melpa" . "https://melpa.org/packages/") t) + +;; EMACS +(use-package emacs + :ensure nil + :custom + (column-number-mode t) + (auto-save-default nil) + (create-lockfiles nil) + (display-line-numbers-type 'relative) + (global-auto-revert-non-file-buffers t) + (history-length 25) + (inhibit-startup-message t) + (initial-scratch-message "") + (ispell-dictionary "en_US") + (make-backup-files nil) + (pixel-scroll-precision-mode t) + (pixel-scroll-precision-use-momentum nil) + (ring-bell-function 'ignore) + (split-width-threshold 300) + (switch-to-buffer-obey-display-actions t) + (tab-always-indent t) + (tab-width 4) + ;; (treesit-font-lock-level 4) + (truncate-lines t) + (use-dialog-box nil) + (use-short-answers t) + ;;(warning-minimum-level :emergency) + + :hook + (prog-mode . display-line-numbers-mode) + + :config + (defun skip-these-buffers (_window buffer _bury-or-kill) + "Function for `switch-to-prev-buffer-skip'." + (string-match "\\*[^*]+\\*" (buffer-name buffer))) + (setq switch-to-prev-buffer-skip 'skip-these-buffers) + + (set-face-attribute 'default nil :family "JetBrainsMono Nerd Font" :height 120) + + (setq custom-file (locate-user-emacs-file "custom-vars.el")) + (load custom-file 'noerror 'nomessage) + + :init + (tool-bar-mode -1) + (menu-bar-mode -1) + (scroll-bar-mode -1) + (global-hl-line-mode 1) + (global-auto-revert-mode 1) + (indent-tabs-mode -1) + (recentf-mode 1) + (savehist-mode 1) + (save-place-mode 1) + (winner-mode 1) + (xterm-mouse-mode 1) + (file-name-shadow-mode 1) + (load-theme 'modus-operandi t)) + +(use-package eldoc + :ensure nil + :init + (global-eldoc-mode)) + +(use-package flymake + :ensure nil + :defer t + :hook (prog-mode . flymake-mode)) + +(use-package org + :ensure nil + :defer t + :custom + (org-return-follows-link t) + (org-hide-emphasis-markers t) + (org-capture-templates + `(("i" "Inbox" entry (file "inbox.org") + ,(concat "* TODO %?\n" + "/Entered on/ %U")) + ("@" "Inbox [mu4e]" entry (file "inbox.org") + ,(concat "* TODO Process \"%a\" %?\n" + "/Entered on/ %U")))) + (org-refile-use-outline-path 'file) + (org-outline-path-complete-in-steps nil) + :config + (setq org-directory "~/org") + ;;(setq org-agenda-files (list "everything.org")) + (add-to-list 'org-tags-exclude-from-inheritance "project") + :hook + (org-mode . org-indent-mode) + :init + (require 'org-tempo)) + +(use-package org-roam + :ensure t + :straight t + :custom + (org-roam-directory (file-truename "~/org")) + (org-roam-capture-templates + '(("d" "default" plain "%?" + :target (file+head "%<%Y%m%d%H%M%S>-${slug}.org" + "#+title: ${title}\n") + :unnarrowed t))) + :bind (("C-c n l" . org-roam-buffer-toggle) + ("C-c n f" . org-roam-node-find) + ("C-c n g" . org-roam-graph) + ("C-c n i" . org-roam-node-insert) + ("C-c n c" . org-roam-capture) + ;; Dailies + ("C-c n j" . org-roam-dailies-capture-today)) + :config + ;; If you're using a vertical completion framework, you might want a more informative completion interface + (setq org-roam-node-display-template (concat "${title:*} " (propertize "${tags:10}" 'face 'org-tag))) + (org-roam-db-autosync-mode) + ;; If using org-roam-protocol + (require 'org-roam-protocol) + (defun mthomson/project-files () + "Return a list of note files containing 'project' tag." ; + (seq-uniq + (seq-map + #'car + (org-roam-db-query + [:select [nodes:file] + :from tags + :left-join nodes + :on (= tags:node-id nodes:id) + :where (like tag (quote "%\"project\"%"))])))) + + (defun mthomson/agenda-files-update (&rest _) + "Update the value of `org-agenda-files'." + (setq org-agenda-files (mthomson/project-files)) + (setq org-refile-targets + '((nil :maxlevel . 3) + (org-agenda-files :maxlevel . 3)))) + + (advice-add 'org-agenda :before #'mthomson/agenda-files-update) + (advice-add 'org-todo-list :before #'mthomson/agenda-files-update) + (advice-add 'org-refile :before #'mthomson/agenda-files-update)) + +(use-package org-superstar + :ensure t + :straight t + :hook + (org-mode . org-superstar-mode)) + +(use-package which-key + :ensure nil + :defer t + :hook + (after-init . which-key-mode)) + +(use-package nerd-icons + :ensure t + :straight t + :defer t) + +(use-package nerd-icons-dired + :ensure t + :straight t + :defer t + :hook + (dired-mode . nerd-icons-dired-mode)) + +(use-package doom-modeline + :ensure t + :config + (display-battery-mode t) + (display-time-mode t) + :init (doom-modeline-mode 1)) (use-package evil - :init ;; Execute code Before a package is loaded - (evil-mode) - :config ;; Execute code After a package is loaded - (evil-set-initial-state 'eat-mode 'insert) ;; Set initial state in eat terminal to insert mode - :custom ;; Customization of package custom variables - (evil-want-keybinding nil) ;; Disable evil bindings in other modes (It's not consistent and not good) - (evil-want-C-u-scroll t) ;; Set C-u to scroll up - (evil-want-C-i-jump nil) ;; Disables C-i jump - (evil-undo-system 'undo-redo) ;; C-r to redo - (org-return-follows-link t) ;; Sets RETURN key in org-mode to follow links - ;; Unmap keys in 'evil-maps. If not done, org-return-follows-link will not work - :bind (:map evil-motion-state-map - ("SPC" . nil) - ("RET" . nil) - ("TAB" . nil))) -(use-package evil-collection - :after evil + :ensure t + :straight t + :defer t + :hook + (after-init . evil-mode) + :init + (setq evil-want-integration t) + (setq evil-want-keybinding nil) + (setq evil-want-C-u-scroll t) + (setq evil-want-C-u-delete t) :config - ;; Setting where to use evil-collection - ;; (setq evil-collection-mode-list '(dired ibuffer magit corfu vertico consult)) - (evil-collection-init)) + (evil-set-undo-system 'undo-tree) + (evil-set-leader 'normal (kbd "SPC")) + (evil-set-leader 'visual (kbd "SPC"))) + +(use-package evil-collection + :defer t + :straight t + :ensure t + :custom + (evil-collection-want-find-usages-bindings t) + :hook + (evil-mode . evil-collection-init)) + +(use-package evil-surround + :ensure t + :straight t + :after evil-collection + :config + (global-evil-surround-mode 1)) + +(use-package evil-matchit + :ensure t + :straight t + :after evil-collection + :config + (global-evil-matchit-mode 1)) + +(use-package undo-tree + :defer t + :ensure t + :straight t + :hook + (after-init . global-undo-tree-mode) + :init + (setq undo-tree-visualizer-timestamps t + undo-tree-visualizer-diff t + undo-limit 800000 + undo-strong-limit 12000000 + undo-outer-limit 120000000) + :config + (setq undo-tree-history-directory-alist '(("." . "~/.config/emacs/.cache/undo")))) (use-package general + :ensure t + :straight t :config - (general-evil-setup) - ;; Set up 'SPC' as the leader key - (general-create-definer start/leader-keys - :states '(normal insert visual motion emacs) - :keymaps 'override - :prefix "SPC" ;; Set leader key - :global-prefix "C-SPC") ;; Set global leader key + (defun mthomson/lsp-describe-and-jump () + "Show hover documentation and jump to *lsp-help* buffer." + (interactive) + (lsp-describe-thing-at-point) + (let ((help-buffer "*lsp-help*")) + (when (get-buffer help-buffer) + (switch-to-buffer-other-window help-buffer)))) + (general-evil-setup t) - (start/leader-keys - "." '(find-file :wk "Find file") - "TAB" '(comment-line :wk "Comment lines")) + (general-define-key + :states 'normal + "] d" '(flymake-goto-next-error :wk "Goto next error") + "[ d" '(flymake-goto-prev-error :wk "Goto prev error") + "] c" '(diff-hl-next-hunk :wk "Goto next hunk") + "[ c" '(diff-hl-previous-hunk :wk "Goto prev hunk") + "K" '(mthomson/lsp-describe-and-jump :wk "Describe")) - (start/leader-keys - "p" '(:ignore t :wk "Project") - "p p" '(project-switch-project :wk "Switch project") - "p f" '(project-find-file :wk "Find file") - "p g" '(project-find-regexp :wk "Grep file") - "p s" '(project-eshell :wk "Shell") - "p c" '(project-compile :wk "Compile") - "p b" '(project-switch-to-buffer :wk "Buffers") - "p K" '(project-kill-buffers :wk "Kill all buffers")) + (general-define-key + :states 'normal + :predicate 'lsp-mode + "g r" '(lsp-find-references :wk "Go to references") + "g d" '(lsp-find-definition :wk "Go to definition") + "g D" '(lsp-find-declaration :wk "Go to declaration") + "g I" '(lsp-find-implementation :wk "Go to implementation") + "g t" '(lsp-find-type-definition :wk "Go to type definition") + "K" '(mthomson/lsp-describe-and-jump :wk "Describe")) - (start/leader-keys + (general-create-definer my-leader-def + :states '(normal insert visual motion emacs) + :keymaps 'override + :prefix "SPC" + :global-prefix "C-SPC") + (my-leader-def "f" '(:ignore t :wk "Find") - "f c" '((lambda () (interactive) (find-file "~/.config/emacs/config.org")) :wk "Edit emacs config") + "f c" '((lambda () (interactive) (find-file "~/.config/emacs/init.el")) :wk "Edit emacs config") "f r" '(consult-recent-file :wk "Recent files") - "f f" '(consult-fd :wk "Fd search for files") + "f f" '(consult-find :wk "Find Files") "f g" '(consult-ripgrep :wk "Ripgrep search in files") "f l" '(consult-line :wk "Find line") "f i" '(consult-imenu :wk "Imenu buffer locations")) - (start/leader-keys - "b" '(:ignore t :wk "Buffer Bookmarks") - "b b" '(consult-buffer :wk "Switch buffer") - "b k" '(kill-current-buffer :wk "Kill this buffer") - "b i" '(ibuffer :wk "Ibuffer") - "b n" '(next-buffer :wk "Next buffer") - "b p" '(previous-buffer :wk "Previous buffer") - "b r" '(revert-buffer :wk "Reload buffer") - "b j" '(consult-bookmark :wk "Bookmark jump")) + (my-leader-def + "c" '(:ignore t :wk "Code") + "c a" '(lsp-execute-code-action :wk "Code actions")) - (start/leader-keys - "d" '(:ignore t :wk "Dired") - "d v" '(dired :wk "Open dired") - "d j" '(dired-jump :wk "Dired jump to current")) + (my-leader-def + "h" '(:ignore t :wk "Help") + "h v" '(describe-variable :wk "Describe variable") + "h f" '(describe-function :wk "Describe function") + "h k" '(describe-key :wk "Describe key")) - (start/leader-keys - "e" '(:ignore t :wk "Languages Eglot") - "e e" '(eglot-reconnect :wk "Eglot Reconnect") - "e d" '(eldoc-doc-buffer :wk "Eldoc Buffer") - "e f" '(eglot-format :wk "Eglot Format") - "e l" '(consult-flymake :wk "Consult Flymake") - "e r" '(eglot-rename :wk "Eglot Rename") - "e i" '(xref-find-definitions :wk "Find defintion") - "e v" '(:ignore t :wk "Elisp") - "e v b" '(eval-buffer :wk "Evaluate elisp in buffer") - "e v r" '(eval-region :wk "Evaluate elisp in region")) + (my-leader-def + "p" '(:ignore t :wk "Project") + "p b" '(consult-project-buffer :wk "Project buffers") + "p p" '(project-switch-project :wk "Project switch") + "p f" '(project-find-file :wk "Project find file") + "p g" '(project-find-regexp :wk "Project grep file") + "p k" '(project-kill-buffers :wk "Project kill buffers") + "p d" '(project-dired :wk "Project dired")) - (start/leader-keys + (my-leader-def + "x" '(:ignore t :wk "Flymake") + "x x" '(consult-flymake :wk "Show diagnostics")) + + (my-leader-def "g" '(:ignore t :wk "Git") - "g g" '(magit-status :wk "Magit status")) + "g g" '(magit-status :wk "Magit status") + "g l" '(magit-log-current :wk "Magit log")) - (start/leader-keys - "h" '(:ignore t :wk "Help") ;; To get more help use C-h commands (describe variable, function, etc.) - "h q" '(save-buffers-kill-emacs :wk "Quit Emacs and Daemon") - "h r" '((lambda () (interactive) - (load-file "~/.config/emacs/init.el")) - :wk "Reload Emacs config")) + (my-leader-def + "u" '(undo-tree-visualize :wk "Undo-tree"))) - (start/leader-keys - "s" '(:ignore t :wk "Show") - "s e" '(eat :wk "Eat terminal")) - - (start/leader-keys - "t" '(:ignore t :wk "Toggle") - "t t" '(visual-line-mode :wk "Toggle truncated lines (wrap)") - "t l" '(display-line-numbers-mode :wk "Toggle line numbers")) - - (start/leader-keys - "o" '(:ignore t :wk "Org") - "o c" '(org-capture :wk "Capture note") - "o e" '(find-file "~/RoamNotes/everything.org" :wk "Open notes"))) - -(use-package emacs - :custom - (menu-bar-mode nil) ;; Disable the menu bar - (scroll-bar-mode nil) ;; Disable the scroll bar - (tool-bar-mode nil) ;; Disable the tool bar - ;;(inhibit-startup-screen t) ;; Disable welcome screen - - (delete-selection-mode t) ;; Select text and delete it by typing. - (electric-indent-mode nil) ;; Turn off the weird indenting that Emacs does by default. - (electric-pair-mode t) ;; Turns on automatic parens pairing - - (blink-cursor-mode nil) ;; Don't blink cursor - (global-auto-revert-mode t) ;; Automatically reload file and show changes if the file has changed - - ;;(dired-kill-when-opening-new-dired-buffer t) ;; Dired don't create new buffer - ;;(recentf-mode t) ;; Enable recent file mode - - ;;(global-visual-line-mode t) ;; Enable truncated lines - ;;(display-line-numbers-type 'relative) ;; Relative line numbers - (global-display-line-numbers-mode t) ;; Display line numbers - - (mouse-wheel-progressive-speed nil) ;; Disable progressive speed when scrolling - (scroll-conservatively 10) ;; Smooth scrolling - (scroll-margin 8) - - (tab-width 4) - - (make-backup-files nil) ;; Stop creating ~ backup files - (auto-save-default nil) ;; Stop creating # auto save files +(use-package vertico + :ensure t + :straight t :hook - (prog-mode . (lambda () (hs-minor-mode t))) ;; Enable folding hide/show globally - :config - ;; Move customization variables to a separate file and load it, avoid filling up init.el with unnecessary variables - (setq custom-file (locate-user-emacs-file "custom-vars.el")) - (load custom-file 'noerror 'nomessage) - :bind ( - ([escape] . keyboard-escape-quit) ;; Makes Escape quit prompts (Minibuffer Escape) - ) - ;; Fix general.el leader key not working instantly in messages buffer with evil mode - :ghook ('after-init-hook - (lambda (&rest _) - (when-let ((messages-buffer (get-buffer "*Messages*"))) - (with-current-buffer messages-buffer - (evil-normalize-keymaps)))) - nil nil t) - ) + (after-init . vertico-mode)) -(use-package gruvbox-theme - :config - (load-theme 'modus-vivendi t)) ;; We need to add t to trust this package - -(add-to-list 'default-frame-alist '(alpha-background . 90)) ;; For all new frames henceforth - -(set-face-attribute 'default nil - :font "JetBrainsMono Nerd Font" ;; Set your favorite type of font or download JetBrains Mono - :height 120 - :weight 'medium) -;; This sets the default font on all graphical frames created after restarting Emacs. -;; Does the same thing as 'set-face-attribute default' above, but emacsclient fonts -;; are not right unless I also add this method of setting the default font. - -;;(add-to-list 'default-frame-alist '(font . "JetBrains Mono")) ;; Set your favorite font -(setq-default line-spacing 0.12) - -(use-package emacs - :bind - ("C-+" . text-scale-increase) - ("C--" . text-scale-decrease) - ("" . text-scale-increase) - ("" . text-scale-decrease)) - -(use-package doom-modeline - :init (doom-modeline-mode 1) +(use-package orderless + :ensure t + :straight t :custom - (doom-modeline-height 25) ;; Sets modeline height - (doom-modeline-bar-width 5) ;; Sets right bar width - (doom-modeline-persp-name t) ;; Adds perspective name to modeline - (doom-modeline-persp-icon t)) ;; Adds folder icon next to persp name + (completion-styles '(orderless partial-completion basic)) + (completion-category-defaults nil) + (completion-category-overrides '((file (styles partial-completion))))) -(use-package project - :ensure nil) - -(use-package envrc +(use-package marginalia + :ensure t + :straight t :hook - (after-init . envrc-global-mode)) + (after-init . marginalia-mode)) -(use-package eglot - :ensure nil ;; Don't install eglot because it's now built-in - :hook ((c-ts-mode - c++-ts-mode - go-ts-mode - java-ts-mode - vue-mode - rust-ts-mode - typescript-ts-mode) - . eglot-ensure) - :custom - ;; Good default - (eglot-events-buffer-size 0) ;; No event buffers (Lsp server logs) - (eglot-autoshutdown t);; Shutdown unused servers. - (eglot-report-progress nil) ;; Disable ls:init - (eglot-connect-timeout 120) - ;; Manual lsp servers - :config - (add-to-list 'eglot-server-programs - `(vue-mode . ("vue-language-server" "--stdio" :initializationOptions - (:typescript (:tsdk "/Users/mthomson/dev/work/westjet/profile-app-spa/node_modules/typescript/lib") - :vue (:hybridMode :json-false))))) - (add-to-list 'eglot-server-programs - `(typescript-ts-mode . ("vue-language-server" "--stdio" :initializationOptions - (:typescript (:tsdk "/Users/mthomson/dev/work/westjet/profile-app-spa/node_modules/typescript/lib") - :vue (:hybridMode :json-false))))) - ) +(use-package consult + :ensure t + :straight t + :defer t) -(use-package eldoc-box +(use-package embark + :ensure t + :straight t + :defer t) + +(use-package embark-consult + :ensure t + :straight t :hook - (eglot-managed-mode . eldoc-box-hover-at-point-mode) - :custom - (eldoc-box-prettify-ts-errors t)) - -(use-package yasnippet-snippets - :hook (prog-mode . yas-minor-mode)) - -(use-package exec-path-from-shell - :init - ;; (setq exec-path-from-shell-arguments nil) - (add-to-list 'exec-path "/etc/profiles/per-user/mthomson/bin") - (exec-path-from-shell-initialize)) - -(use-package treesit - :ensure nil) + (embark-collect-mode . consult-preview-at-point-mode)) (use-package treesit-auto :ensure t - :commands global-treesit-auto-mode + :straight t + :after emacs :custom (treesit-auto-install 'prompt) :config (treesit-auto-add-to-auto-mode-alist 'all) (global-treesit-auto-mode)) -;; (add-to-list 'load-path (concat user-emacs-directory "vue-ts-mode")) -;; (require 'vue-ts-mode) - -;; (use-package vue-mode) - -(use-package web-mode +(use-package corfu :ensure t - :mode - (("\\.phtml\\'" . web-mode) - ("\\.php\\'" . web-mode) - ("\\.tpl\\'" . web-mode) - ("\\.[agj]sp\\'" . web-mode) - ("\\.as[cp]x\\'" . web-mode) - ("\\.erb\\'" . web-mode) - ("\\.mustache\\'" . web-mode) - ("\\.djhtml\\'" . web-mode))) - -(use-package flymake-eslint - :hook - (web-mode . (lambda() (flymake-eslint-enable))) + :straight t :custom - (flymake-eslint-defer-binary-check t)) + (corfu-auto t) + (corfu-auto-prefix 1) + (corfu-popupinfo-mode t) + (corfu-popupinfo-delay 0.5) + (corfu-on-exact-match nil) + :init + (global-corfu-mode)) -(define-derived-mode vue-mode web-mode "Vue") -(add-to-list 'auto-mode-alist '("\\.vue\\'" . vue-mode)) +(use-package nerd-icons-corfu + :ensure t + :straight t + :after corfu + :init (add-to-list 'corfu-margin-formatters #'nerd-icons-corfu-formatter)) +;; Add extensions -(use-package nix-mode - :mode "\\.nix\\'") +(use-package cape + :ensure t + :straight t + :bind ("C-c p" . cape-prefix-map) + :init + (add-hook 'completion-at-point-functions #'cape-dabbrev) + (add-hook 'completion-at-point-functions #'cape-file) + (add-hook 'completion-at-point-functions #'cape-elisp-block)) -(use-package rust-mode) - -(use-package org - :ensure nil - :custom - (org-todo-keywords - (quote ((sequence "TODO(t)" "NEXT(n)" "|" "DONE(d)") - (sequence "WAITING(w@/!)" "HOLD(h@/!)" "|" "CANCELLED(c@/!)" "MEETING")))) - (org-todo-keyword-faces - (quote (("TODO" :foreground "red" :weight bold) - ("NEXT" :foreground "blue" :weight bold) - ("DONE" :foreground "forest green" :weight bold) - ("WAITING" :foreground "orange" :weight bold) - ("HOLD" :foreground "magenta" :weight bold) - ("CANCELLED" :foreground "forest green" :weight bold) - ("MEETING" :foreground "forest green" :weight bold)))) - (org-treat-insert-todo-heading-as-state-change t) - (org-log-into-drawer t) - (org-directory "~/RoamNotes") - (org-log-done 'time) - - ;; capture config - (org-capture-templates - `(("t" "Task" entry (file+headline "everything.org" "Inbox") - ,(concat "* TODO %? :task:\n" - "Entered on %U")) - ("m" "Meeting" entry (file+headline "everything.org" "Inbox") - ,(concat "* MEETING %? :meeting:\n" - "<%<%Y-%m-%d %a %H:00>>")) - ("j" "Journal" entry (file+olp+datetree "everything.org" "Journal") - "* %?\n%T") - ("@" "Inbox [mu4e]" entry (file+headline "everything.org" "Inbox") - ,(concat "* TODO Process \"%a\" %?\n" - "Entered on %U")))) - - ;; Refile - (org-refile-use-outline-path 'file) - (org-outline-path-complete-in-steps nil) - (org-refile-targets (quote ((nil :maxlevel . 9) - (org-agenda-files :maxlevel . 9)))) - - ;; agenda config - (org-agenda-files (list "everything.org")) - (org-agenda-custom-commands - '(("g" "Get Things Done (GTD)" - ((agenda "" - ((org-agenda-skip-function - '(org-agenda-skip-entry-if 'deadline)) - (org-deadline-warning-days 0))) - (todo "NEXT" - ((org-agenda-skip-function - '(org-agenda-skip-entry-if 'deadline)) - (org-agenda-prefix-format " %i %-12:c [%e] ") - (org-agenda-overriding-header "\nTasks\n"))) - (agenda nil - ((org-agenda-entry-types '(:deadline)) - (org-agenda-format-date "") - (org-deadline-warning-days 7) - (org-agenda-skip-function - '(org-agenda-skip-entry-if 'notregexp "\\* NEXT")) - (org-agenda-overriding-header "\nDeadlines"))) - (tags-todo "inbox" - ((org-agenda-prefix-format " %?-12t% s") - (org-agenda-overriding-header "\nInbox\n"))) - (tags "CLOSED>=\"\"" - ((org-agenda-overriding-header "\nCompleted today\n"))))))) - :config - (add-to-list 'org-modules 'org-habit t) - :hook - (org-mode . org-indent-mode) ;; Indent text - ;; The following prevents <> from auto-pairing when electric-pair-mode is on. - ;; Otherwise, org-tempo is broken when you try to " "S-")) - - ;; For some commands and buffer sources it is useful to configure the - ;; :preview-key on a per-command basis using the `consult-customize' macro. - ;; (consult-customize - ;; consult-theme :preview-key '(:debounce 0.2 any) - ;; consult-ripgrep consult-git-grep consult-grep - ;; consult-bookmark consult-recent-file consult-xref - ;; consult--source-bookmark consult--source-file-register - ;; consult--source-recent-file consult--source-project-recent-file - ;; :preview-key "M-." - ;; :preview-key '(:debounce 0.4 any)) - - ;; By default `consult-project-function' uses `project-root' from project.el. - ;; Optionally configure a different project root function. - ;;;; 1. project.el (the default) - ;; (setq consult-project-function #'consult--default-project--function) - ;;;; 2. vc.el (vc-root-dir) - ;; (setq consult-project-function (lambda (_) (vc-root-dir))) - ;;;; 3. locate-dominating-file - ;; (setq consult-project-function (lambda (_) (locate-dominating-file "." ".git"))) - ;;;; 4. projectile.el (projectile-project-root) - ;; (autoload 'projectile-project-root "projectile") - ;; (setq consult-project-function (lambda (_) (projectile-project-root))) - ;;;; 5. No project support - ;; (setq consult-project-function nil) - ) - -(use-package diminish) - -(use-package rainbow-delimiters - :hook (prog-mode . rainbow-delimiters-mode)) - -(use-package which-key - :ensure nil ;; Don't install which-key because it's now built-in - :init - (which-key-mode 1) - :diminish - :custom - (which-key-side-window-location 'bottom) - (which-key-sort-order #'which-key-key-order-alpha) ;; Same as default, except single characters are sorted alphabetically - (which-key-sort-uppercase-first nil) - (which-key-add-column-padding 1) ;; Number of spaces to add to the left of each column - (which-key-min-display-lines 6) ;; Increase the minimum lines to display, because the default is only 1 - (which-key-idle-delay 0.8) ;; Set the time delay (in seconds) for the which-key popup to appear - (which-key-max-description-length 25) - (which-key-allow-imprecise-window-fit nil)) ;; Fixes which-key window slipping out in Emacs Daemon - -;; PDF tools -(use-package pdf-tools) - -;; Make gc pauses faster by decreasing the threshold. -(setq gc-cons-threshold (* 2 1000 1000)) -;; Increase the amount of data which Emacs reads from the process -(setq read-process-output-max (* 1024 1024)) ;; 1mb + (provide 'init) +;;; init.el ends here diff --git a/modules/home-manager/kitty.nix b/modules/home-manager/kitty.nix index 903f493..d04daee 100644 --- a/modules/home-manager/kitty.nix +++ b/modules/home-manager/kitty.nix @@ -10,7 +10,7 @@ # size = 12; # }; font = { - # name = "JetBrainsMono Nerd Font Mono"; + # name = "JetBrainsMono Nerd Font"; size = 12; # package = pkgs.nerd-fonts.jetbrains-mono; }; diff --git a/modules/home-manager/nixcats/default.nix b/modules/home-manager/nixcats/default.nix index 8aac347..1bb8e5b 100644 --- a/modules/home-manager/nixcats/default.nix +++ b/modules/home-manager/nixcats/default.nix @@ -74,6 +74,7 @@ in { oil-nvim plenary-nvim vim-tmux-navigator + friendly-snippets ]; }; diff --git a/modules/home-manager/nixcats/init.lua b/modules/home-manager/nixcats/init.lua index c419da1..0aa1a07 100644 --- a/modules/home-manager/nixcats/init.lua +++ b/modules/home-manager/nixcats/init.lua @@ -672,6 +672,7 @@ require('lze').load { end, before = function(_) vim.lsp.config('*', { + capabilities = require('blink.cmp').get_lsp_capabilities(), on_attach = lsp_on_attach, }) end, @@ -707,6 +708,7 @@ require('lze').load { "ts_ls", enabled = nixCats('typescript') or false, lsp = { + on_attach = lsp_on_attach, filetypes = { "javascript", "javascriptreact", "javascript.jsx", "typescript", "typescriptreact", "typescript.tsx", "vue" }, init_options = { plugins = { diff --git a/modules/home-manager/stylix.nix b/modules/home-manager/stylix.nix index 99a48e3..86804ac 100644 --- a/modules/home-manager/stylix.nix +++ b/modules/home-manager/stylix.nix @@ -33,5 +33,7 @@ lib, name = "Noto Color Emoji"; }; }; + + targets.emacs.enable = false; }; }