diff options
39 files changed, 2952 insertions, 80 deletions
diff --git a/flake.lock b/flake.lock new file mode 100644 index 00000000..f16f16a5 --- /dev/null +++ b/flake.lock @@ -0,0 +1,1073 @@ +{ + "nodes": { + "agenix": { + "inputs": { + "darwin": "darwin", + "home-manager": [ + "home-manager" + ], + "nixpkgs": [ + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1690228878, + "narHash": "sha256-9Xe7JV0krp4RJC9W9W9WutZVlw6BlHTFMiUP/k48LQY=", + "owner": "ryantm", + "repo": "agenix", + "rev": "d8c973fd228949736dedf61b7f8cc1ece3236792", + "type": "github" + }, + "original": { + "owner": "ryantm", + "repo": "agenix", + "type": "github" + } + }, + "beautysh": { + "inputs": { + "nixpkgs": [ + "nixpkgs" + ], + "poetry2nix": [ + "poetry2nix" + ], + "utils": [ + "flake-utils" + ] + }, + "locked": { + "lastModified": 1680308980, + "narHash": "sha256-aUEHV0jk2qIFP3jlsWYWhBbm+w/N9gzH3e4I5DcdB5s=", + "owner": "lovesegfault", + "repo": "beautysh", + "rev": "9845efc3ea3e86cc0d41465d720a47f521b2799c", + "type": "github" + }, + "original": { + "owner": "lovesegfault", + "repo": "beautysh", + "type": "github" + } + }, + "crane": { + "inputs": { + "flake-compat": [ + "flake-compat" + ], + "flake-utils": [ + "flake-utils" + ], + "nixpkgs": [ + "nixpkgs" + ], + "rust-overlay": [ + "rust-overlay" + ] + }, + "locked": { + "lastModified": 1691803597, + "narHash": "sha256-khWW1Owzselq5o816Lb7x624d6QGnv+kpronK3ndkr4=", + "owner": "ipetkov", + "repo": "crane", + "rev": "7809d369710abb17767b624f9e72b500373580bc", + "type": "github" + }, + "original": { + "owner": "ipetkov", + "repo": "crane", + "type": "github" + } + }, + "darwin": { + "inputs": { + "nixpkgs": [ + "agenix", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1673295039, + "narHash": "sha256-AsdYgE8/GPwcelGgrntlijMg4t3hLFJFCRF3tL5WVjA=", + "owner": "lnl7", + "repo": "nix-darwin", + "rev": "87b9d090ad39b25b2400029c64825fc2a8868943", + "type": "github" + }, + "original": { + "owner": "lnl7", + "ref": "master", + "repo": "nix-darwin", + "type": "github" + } + }, + "disko": { + "inputs": { + "nixpkgs": [ + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1692199161, + "narHash": "sha256-GqKApvQ1JCf5DzH/Q+P4nwuHb6MaQGaWTu41lYzveF4=", + "owner": "nix-community", + "repo": "disko", + "rev": "4eed2457b053c4bbad7d90d2b3a1d539c2c9009c", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "disko", + "type": "github" + } + }, + "flake-compat": { + "flake": false, + "locked": { + "lastModified": 1673956053, + "narHash": "sha256-4gtG9iQuiKITOjNQQeQIpoIB6b16fm+504Ch3sNKLd8=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "35bb57c0c8d8b62bbfd284272c928ceb64ddbde9", + "type": "github" + }, + "original": { + "owner": "edolstra", + "repo": "flake-compat", + "type": "github" + } + }, + "flake-parts": { + "inputs": { + "nixpkgs-lib": [ + "lanzaboote", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1680392223, + "narHash": "sha256-n3g7QFr85lDODKt250rkZj2IFS3i4/8HBU2yKHO3tqw=", + "owner": "hercules-ci", + "repo": "flake-parts", + "rev": "dcc36e45d054d7bb554c9cdab69093debd91a0b5", + "type": "github" + }, + "original": { + "owner": "hercules-ci", + "repo": "flake-parts", + "type": "github" + } + }, + "flake-utils": { + "inputs": { + "systems": [ + "systems" + ] + }, + "locked": { + "lastModified": 1689068808, + "narHash": "sha256-6ixXo3wt24N/melDWjq70UuHQLxGV8jZvooRanIHXw0=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "919d646de7be200f3bf08cb76ae1f09402b6f9b4", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake_update": { + "inputs": { + "flake-utils": [ + "flake-utils" + ], + "flake_version_update": [ + "flake_version_update" + ], + "nixpkgs": [ + "nixpkgs" + ], + "shell_library": [ + "shell_library" + ], + "systems": [ + "systems" + ] + }, + "locked": { + "lastModified": 1690979688, + "narHash": "sha256-sjemOoAVKv9G71mOvKT5z6RBKshJE62sSwJv+ozj2to=", + "ref": "refs/heads/prime", + "rev": "3de9c171ffa7b802be517662aac5afb39c42c341", + "revCount": 34, + "type": "git", + "url": "https://codeberg.org/soispha/flake_update.git" + }, + "original": { + "type": "git", + "url": "https://codeberg.org/soispha/flake_update.git" + } + }, + "flake_version_update": { + "inputs": { + "flake-utils": [ + "flake-utils" + ], + "nixpkgs": [ + "nixpkgs" + ], + "systems": [ + "systems" + ] + }, + "locked": { + "lastModified": 1685288691, + "narHash": "sha256-oP6h34oJ8rm6KlUpyZrX+ww3hnoWny2ecrEXxkU7F3c=", + "ref": "refs/heads/prime", + "rev": "e9a97e01eca780bd16e1dbdbd8856b59558f4959", + "revCount": 5, + "type": "git", + "url": "https://codeberg.org/soispha/flake_version_update.git" + }, + "original": { + "type": "git", + "url": "https://codeberg.org/soispha/flake_version_update.git" + } + }, + "generate_firefox_extensions": { + "inputs": { + "crane": [ + "crane" + ], + "flake-utils": [ + "flake-utils" + ], + "nixpkgs": [ + "nixpkgs" + ], + "rust-overlay": [ + "rust-overlay" + ] + }, + "locked": { + "lastModified": 1684560731, + "narHash": "sha256-N6RKBHES7bj6XJ+TLiZTggmFuNIT2SSYKUab4YY/io0=", + "ref": "refs/heads/prime", + "rev": "3ac9f0f8ce9e6bdeb46d07806b6465cb3f80c518", + "revCount": 7, + "type": "git", + "url": "https://codeberg.org/soispha/generate_firefox_extension.git" + }, + "original": { + "type": "git", + "url": "https://codeberg.org/soispha/generate_firefox_extension.git" + } + }, + "gitignore": { + "inputs": { + "nixpkgs": [ + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1660459072, + "narHash": "sha256-8DFJjXG8zqoONA1vXtgeKXy68KdJL5UaXR8NtVMUbx8=", + "owner": "hercules-ci", + "repo": "gitignore.nix", + "rev": "a20de23b925fd8264fd7fad6454652e142fd7f73", + "type": "github" + }, + "original": { + "owner": "hercules-ci", + "repo": "gitignore.nix", + "type": "github" + } + }, + "grades": { + "inputs": { + "crane": [ + "crane" + ], + "flake-utils": [ + "flake-utils" + ], + "nixpkgs": [ + "nixpkgs" + ], + "rust-overlay": [ + "rust-overlay" + ] + }, + "locked": { + "lastModified": 1688237666, + "narHash": "sha256-2q7oy/MtoAFCyd1JlYp3X1WY6kf3CI/mtOzQE+33GcY=", + "ref": "refs/heads/prime", + "rev": "e41b20a28b1a9977a02b7817330fb1bb9615dda5", + "revCount": 50, + "type": "git", + "url": "https://codeberg.org/soispha/grades.git" + }, + "original": { + "type": "git", + "url": "https://codeberg.org/soispha/grades.git" + } + }, + "home-manager": { + "inputs": { + "nixpkgs": [ + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1692260837, + "narHash": "sha256-2FpkX1zl+7ni7djK7NeE1ZGupRUwZgjW+RPCSBgDf4k=", + "owner": "nix-community", + "repo": "home-manager", + "rev": "6a94c1a59737783c282c4031555a289c28b961e4", + "type": "github" + }, + "original": { + "owner": "nix-community", + "ref": "master", + "repo": "home-manager", + "type": "github" + } + }, + "impermanence": { + "locked": { + "lastModified": 1690797372, + "narHash": "sha256-GImz19e33SeVcIvBB7NnhbJSbTpFFmNtWLh7Z85Y188=", + "owner": "nix-community", + "repo": "impermanence", + "rev": "e3a7acd113903269a1b5c8b527e84ce7ee859851", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "impermanence", + "type": "github" + } + }, + "lanzaboote": { + "inputs": { + "crane": [ + "crane" + ], + "flake-compat": [ + "flake-compat" + ], + "flake-parts": "flake-parts", + "flake-utils": [ + "flake-utils" + ], + "nixpkgs": [ + "nixpkgs_stable_release" + ], + "pre-commit-hooks-nix": [ + "pre-commit-hooks" + ], + "rust-overlay": [ + "rust-overlay" + ] + }, + "locked": { + "lastModified": 1682802423, + "narHash": "sha256-Fb5TeRTdvUlo/5Yi2d+FC8a6KoRLk2h1VE0/peMhWPs=", + "owner": "nix-community", + "repo": "lanzaboote", + "rev": "64b903ca87d18cef2752c19c098af275c6e51d63", + "type": "github" + }, + "original": { + "owner": "nix-community", + "ref": "v0.3.0", + "repo": "lanzaboote", + "type": "github" + } + }, + "neovim_config": { + "flake": false, + "locked": { + "lastModified": 1684612007, + "narHash": "sha256-V7pnVTC3cDoyXkQM3/6KL9T9uzKIVoS0HZPzM92XT9k=", + "ref": "refs/heads/prime", + "rev": "0ebe3665717941ce87ade67fba4edad98c38c9a0", + "revCount": 11, + "type": "git", + "url": "https://codeberg.org/soispha/neovim-config.git" + }, + "original": { + "type": "git", + "url": "https://codeberg.org/soispha/neovim-config.git" + } + }, + "nix-flake-tests": { + "locked": { + "lastModified": 1677844186, + "narHash": "sha256-ErJZ/Gs1rxh561CJeWP5bohA2IcTq1rDneu1WT6CVII=", + "owner": "antifuchs", + "repo": "nix-flake-tests", + "rev": "bbd9216bd0f6495bb961a8eb8392b7ef55c67afb", + "type": "github" + }, + "original": { + "owner": "antifuchs", + "repo": "nix-flake-tests", + "type": "github" + } + }, + "nix-github-actions": { + "inputs": { + "nixpkgs": [ + "poetry2nix", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1688870561, + "narHash": "sha256-4UYkifnPEw1nAzqqPOTL2MvWtm3sNGw1UTYTalkTcGY=", + "owner": "nix-community", + "repo": "nix-github-actions", + "rev": "165b1650b753316aa7f1787f3005a8d2da0f5301", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "nix-github-actions", + "type": "github" + } + }, + "nixNeovim": { + "inputs": { + "flake-utils": [ + "flake-utils" + ], + "home-manager": [ + "home-manager" + ], + "nix-flake-tests": "nix-flake-tests", + "nixneovimplugins": [ + "nixNeovimPlugins" + ], + "nixpkgs": [ + "nixpkgs" + ], + "nmd": "nmd", + "nmt": "nmt" + }, + "locked": { + "lastModified": 1692281989, + "narHash": "sha256-b1WPbUNVWahAHvMxWnp+0zzswUj8lReX/c28O2Au2Og=", + "owner": "nixNeovim", + "repo": "nixNeovim", + "rev": "929c6c4a188947801ac354e1c5d110937fca9449", + "type": "github" + }, + "original": { + "owner": "nixNeovim", + "repo": "nixNeovim", + "type": "github" + } + }, + "nixNeovimPlugins": { + "inputs": { + "flake-utils": [ + "flake-utils" + ], + "nixpkgs": [ + "nixpkgs" + ], + "poetry2nix": [ + "poetry2nix" + ] + }, + "locked": { + "lastModified": 1692451981, + "narHash": "sha256-vOTOLbXzCJ/0FR6CSddVAkzXzRPkTp7cKGR4laxZgO0=", + "owner": "soispha", + "repo": "nixNeovimPlugins", + "rev": "a934f6e9ef2bdbcf0a0a181f01e0f6e1580a36a9", + "type": "github" + }, + "original": { + "owner": "soispha", + "repo": "nixNeovimPlugins", + "type": "github" + } + }, + "nixVim": { + "inputs": { + "beautysh": [ + "beautysh" + ], + "flake-utils": [ + "flake-utils" + ], + "nixpkgs": [ + "nixpkgs" + ], + "pre-commit-hooks": [ + "pre-commit-hooks" + ] + }, + "locked": { + "lastModified": 1692350035, + "narHash": "sha256-hcC5vVjbNYzv7hPu3e27jUvt6mBzGIdzoAt2mlZyWvE=", + "owner": "nix-community", + "repo": "nixvim", + "rev": "07af7710e297308a553f09f6ceeb729aa5b5a27c", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "nixvim", + "type": "github" + } + }, + "nixlib": { + "locked": { + "lastModified": 1689469483, + "narHash": "sha256-2SBhY7rZQ/iNCxe04Eqxlz9YK9KgbaTMBssq3/BgdWY=", + "owner": "nix-community", + "repo": "nixpkgs.lib", + "rev": "02fea408f27186f139153e1ae88f8ab2abd9c22c", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "nixpkgs.lib", + "type": "github" + } + }, + "nixos-generators": { + "inputs": { + "nixlib": "nixlib", + "nixpkgs": [ + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1690133435, + "narHash": "sha256-YNZiefETggroaTLsLJG2M+wpF0pJPwiauKG4q48ddNU=", + "owner": "nix-community", + "repo": "nixos-generators", + "rev": "b1171de4d362c022130c92d7c8adc4bf2b83d586", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "nixos-generators", + "type": "github" + } + }, + "nixpkgs": { + "locked": { + "lastModified": 1692356644, + "narHash": "sha256-AYkPFT+CbCVSBmh0WwIzPpwhEJ4Yy3A7JZvUkGJIg5o=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "8ecc900b2f695d74dea35a92f8a9f9b32c8ea33d", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_stable_release": { + "locked": { + "lastModified": 1692339729, + "narHash": "sha256-TUK76/Pqm9qIDjEGd27Lz9EiBIvn5F70JWDmEQ4Y5DQ=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "ae521bd4e460b076a455dca8b13f4151489a725c", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-23.05", + "repo": "nixpkgs", + "type": "github" + } + }, + "nmd": { + "flake": false, + "locked": { + "lastModified": 1687627428, + "narHash": "sha256-7zGfXuNS5RHqhpEdz2fwrtqvF86JRo5U1hrxZSYgcm8=", + "owner": "~rycee", + "repo": "nmd", + "rev": "824a380546b5d0d0eb701ff8cd5dbafb360750ff", + "type": "sourcehut" + }, + "original": { + "owner": "~rycee", + "repo": "nmd", + "type": "sourcehut" + } + }, + "nmt": { + "flake": false, + "locked": { + "lastModified": 1683843030, + "narHash": "sha256-2K9tFpypgSORyUTRAL7MFRKCXU4GykmhIDrrIydtPdI=", + "owner": "jooooscha", + "repo": "nmt", + "rev": "f30b96093eb056f1bcc60199545344b4e4a72c5a", + "type": "github" + }, + "original": { + "owner": "jooooscha", + "repo": "nmt", + "type": "github" + } + }, + "poetry2nix": { + "inputs": { + "flake-utils": [ + "flake-utils" + ], + "nix-github-actions": "nix-github-actions", + "nixpkgs": [ + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1692369730, + "narHash": "sha256-VcCb/XxybOv0Py1Gnhmih9mfwyCUVDds/gID2VcscAo=", + "owner": "nix-community", + "repo": "poetry2nix", + "rev": "e4cd574cac251dd44bdbc77c1e98d790fe27b781", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "poetry2nix", + "type": "github" + } + }, + "pre-commit-hooks": { + "inputs": { + "flake-compat": [ + "flake-compat" + ], + "flake-utils": [ + "flake-utils" + ], + "gitignore": [ + "gitignore" + ], + "nixpkgs": [ + "nixpkgs" + ], + "nixpkgs-stable": [ + "nixpkgs_stable_release" + ] + }, + "locked": { + "lastModified": 1692274144, + "narHash": "sha256-BxTQuRUANQ81u8DJznQyPmRsg63t4Yc+0kcyq6OLz8s=", + "owner": "cachix", + "repo": "pre-commit-hooks.nix", + "rev": "7e3517c03d46159fdbf8c0e5c97f82d5d4b0c8fa", + "type": "github" + }, + "original": { + "owner": "cachix", + "repo": "pre-commit-hooks.nix", + "type": "github" + } + }, + "ragenix": { + "inputs": { + "agenix": [ + "agenix" + ], + "crane": [ + "crane" + ], + "flake-utils": [ + "flake-utils" + ], + "nixpkgs": [ + "nixpkgs" + ], + "rust-overlay": [ + "rust-overlay" + ] + }, + "locked": { + "lastModified": 1682237245, + "narHash": "sha256-xbBR7LNK+d5Yi/D6FXQGc1R6u2VV2nwr/Df5iaEbOEQ=", + "owner": "yaxitech", + "repo": "ragenix", + "rev": "281f68c3d477904f79ff1cd5807a8c226cd80a50", + "type": "github" + }, + "original": { + "owner": "yaxitech", + "repo": "ragenix", + "type": "github" + } + }, + "river_init_lesser": { + "inputs": { + "crane": [ + "crane" + ], + "flake-compat": [ + "flake-compat" + ], + "flake-utils": [ + "flake-utils" + ], + "nixpkgs": [ + "nixpkgs" + ], + "rust-overlay": [ + "rust-overlay" + ] + }, + "locked": { + "lastModified": 1683353540, + "narHash": "sha256-tOf9gfFzWjZxIF/2BAU64aH55xfic6SapKsFqVn6U/8=", + "ref": "refs/heads/prime", + "rev": "aedd2bf8863802443d7b6df94646c239d67b2796", + "revCount": 10, + "type": "git", + "url": "https://codeberg.org/soispha/river_keymap_init.git" + }, + "original": { + "type": "git", + "url": "https://codeberg.org/soispha/river_keymap_init.git" + } + }, + "root": { + "inputs": { + "agenix": "agenix", + "beautysh": "beautysh", + "crane": "crane", + "disko": "disko", + "flake-compat": "flake-compat", + "flake-utils": "flake-utils", + "flake_update": "flake_update", + "flake_version_update": "flake_version_update", + "generate_firefox_extensions": "generate_firefox_extensions", + "gitignore": "gitignore", + "grades": "grades", + "home-manager": "home-manager", + "impermanence": "impermanence", + "lanzaboote": "lanzaboote", + "neovim_config": "neovim_config", + "nixNeovim": "nixNeovim", + "nixNeovimPlugins": "nixNeovimPlugins", + "nixVim": "nixVim", + "nixos-generators": "nixos-generators", + "nixpkgs": "nixpkgs", + "nixpkgs_stable_release": "nixpkgs_stable_release", + "poetry2nix": "poetry2nix", + "pre-commit-hooks": "pre-commit-hooks", + "ragenix": "ragenix", + "river_init_lesser": "river_init_lesser", + "rust-overlay": "rust-overlay", + "serverphone": "serverphone", + "shell_library": "shell_library", + "snap-sync": "snap-sync", + "strip_js_comments": "strip_js_comments", + "systems": "systems", + "templates": "templates", + "user_js": "user_js", + "video_pause": "video_pause", + "yambar_cpu": "yambar_cpu", + "yambar_memory": "yambar_memory" + } + }, + "rust-overlay": { + "inputs": { + "flake-utils": [ + "flake-utils" + ], + "nixpkgs": [ + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1692410823, + "narHash": "sha256-YM1QCenpghNqgleUmoCJUArTuMEBqScyQuhepA6JZaI=", + "owner": "oxalica", + "repo": "rust-overlay", + "rev": "598b2f04ed252eb5808b108d7a10084c0c548753", + "type": "github" + }, + "original": { + "owner": "oxalica", + "repo": "rust-overlay", + "type": "github" + } + }, + "serverphone": { + "inputs": { + "crane": [ + "crane" + ], + "flake-compat": [ + "flake-compat" + ], + "flake-utils": [ + "flake-utils" + ], + "nixpkgs": [ + "nixpkgs" + ], + "rust-overlay": [ + "rust-overlay" + ], + "systems": [ + "systems" + ] + }, + "locked": { + "lastModified": 1686995419, + "narHash": "sha256-rKg1LHgHAf+zOrZd7uObnVAJagXvtERCExvW3VSoCaE=", + "ref": "refs/heads/prime", + "rev": "9432b1352af0d1f189a52afbcedd2cfd09ba4e13", + "revCount": 48, + "type": "git", + "url": "https://codeberg.org/vhack.eu/serverphone.git" + }, + "original": { + "type": "git", + "url": "https://codeberg.org/vhack.eu/serverphone.git" + } + }, + "shell_library": { + "inputs": { + "flake-utils": [ + "flake-utils" + ], + "flake_version_update": [ + "flake_version_update" + ], + "nixpkgs": [ + "nixpkgs" + ], + "systems": [ + "systems" + ] + }, + "locked": { + "lastModified": 1685306243, + "narHash": "sha256-KxWY17X52QPRSgSoOJM6o0E+iwLuno/aJtliSDXP0p4=", + "ref": "refs/heads/prime", + "rev": "1694fd6dd2092d15a732ad74befc3f0ecd8b87f0", + "revCount": 76, + "type": "git", + "url": "https://codeberg.org/soispha/shell_library.git" + }, + "original": { + "type": "git", + "url": "https://codeberg.org/soispha/shell_library.git" + } + }, + "snap-sync": { + "flake": false, + "locked": { + "lastModified": 1653097113, + "narHash": "sha256-jKoGBh8dtS9XZkUuZZcLDqreMUdyVZ16z1+Xc63TC4Q=", + "owner": "qubidt", + "repo": "snap-sync", + "rev": "84e2ad00800cf43d0952b61add7e77797eced82d", + "type": "github" + }, + "original": { + "owner": "qubidt", + "repo": "snap-sync", + "type": "github" + } + }, + "strip_js_comments": { + "inputs": { + "crane": [ + "crane" + ], + "flake-utils": [ + "flake-utils" + ], + "nixpkgs": [ + "nixpkgs" + ], + "tree_sitter_js": "tree_sitter_js" + }, + "locked": { + "lastModified": 1676149199, + "narHash": "sha256-Yitp7KDJfL1xPUeJwoBLNbUJlt03yvC3SsyA8FE1PMA=", + "ref": "refs/heads/prime", + "rev": "1be9cbf4b1a58dbc5164dfb4ddaa862488f7b42d", + "revCount": 9, + "type": "git", + "url": "https://codeberg.org/ene/strip_js_comments.git" + }, + "original": { + "type": "git", + "url": "https://codeberg.org/ene/strip_js_comments.git" + } + }, + "systems": { + "locked": { + "lastModified": 1680978846, + "narHash": "sha256-Gtqg8b/v49BFDpDetjclCYXm8mAnTrUzR0JnE2nv5aw=", + "owner": "nix-systems", + "repo": "x86_64-linux", + "rev": "2ecfcac5e15790ba6ce360ceccddb15ad16d08a8", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "x86_64-linux", + "type": "github" + } + }, + "templates": { + "inputs": { + "flake-utils": [ + "flake-utils" + ], + "nixpkgs": [ + "nixpkgs" + ], + "systems": [ + "systems" + ] + }, + "locked": { + "lastModified": 1687494747, + "narHash": "sha256-E/4JG/Ya4WwQZovo8BLN73WnzELAaG2MPyWp10VHvDg=", + "ref": "refs/heads/prime", + "rev": "602f92ee001608e3fbdd6d574feacb60e0670fa3", + "revCount": 17, + "type": "git", + "url": "https://codeberg.org/soispha/flake-templates.git" + }, + "original": { + "type": "git", + "url": "https://codeberg.org/soispha/flake-templates.git" + } + }, + "tree_sitter_js": { + "flake": false, + "locked": { + "lastModified": 1674585307, + "narHash": "sha256-2SAJBnY8pmynGqB8OVqHeeAKovskO+C/XiJbLTKSlcM=", + "owner": "tree-sitter", + "repo": "tree-sitter-javascript", + "rev": "15e85e80b851983fab6b12dce5a535f5a0df0f9c", + "type": "github" + }, + "original": { + "owner": "tree-sitter", + "repo": "tree-sitter-javascript", + "type": "github" + } + }, + "user_js": { + "flake": false, + "locked": { + "lastModified": 1691983650, + "narHash": "sha256-oA1bIpPc27Kk89n3JGpni7RkcIDRVAsTjUfjRHbKS24=", + "owner": "arkenfox", + "repo": "user.js", + "rev": "915f39959c7e077f00477e6ce34a0f9f9e3e7c6b", + "type": "github" + }, + "original": { + "owner": "arkenfox", + "repo": "user.js", + "type": "github" + } + }, + "video_pause": { + "inputs": { + "crane": [ + "crane" + ], + "flake-utils": [ + "flake-utils" + ], + "nixpkgs": [ + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1681665568, + "narHash": "sha256-MFuebmGkzfThpxHWSJCvii6EHGa2wEwLfZgJL2FduiY=", + "ref": "refs/heads/prime", + "rev": "72c95f998368aa83e574bccebb0ed459656e1239", + "revCount": 3, + "type": "git", + "url": "https://codeberg.org/soispha/video-pause.git" + }, + "original": { + "type": "git", + "url": "https://codeberg.org/soispha/video-pause.git" + } + }, + "yambar_cpu": { + "inputs": { + "crane": [ + "crane" + ], + "flake-utils": [ + "flake-utils" + ], + "nixpkgs": [ + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1678635450, + "narHash": "sha256-AER+dXb9YoFdTLtNRG8PSIFCPo5qiZBSrLHmLkbnanM=", + "ref": "refs/heads/prime", + "rev": "9668588173cbdffa325247a35de93f31e4511f9a", + "revCount": 5, + "type": "git", + "url": "https://codeberg.org/soispha/yambar_cpu.git" + }, + "original": { + "type": "git", + "url": "https://codeberg.org/soispha/yambar_cpu.git" + } + }, + "yambar_memory": { + "inputs": { + "crane": [ + "crane" + ], + "flake-utils": [ + "flake-utils" + ], + "nixpkgs": [ + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1678015290, + "narHash": "sha256-oEZzslefttctJHPhHLVOBPqRh59p51CTmgaKQC+MXn8=", + "ref": "refs/heads/prime", + "rev": "9b273d73f151e7f47cde5ed3feba38797b43619b", + "revCount": 3, + "type": "git", + "url": "https://codeberg.org/soispha/yambar_memory.git" + }, + "original": { + "type": "git", + "url": "https://codeberg.org/soispha/yambar_memory.git" + } + } + }, + "root": "root", + "version": 7 +} diff --git a/flake.nix b/flake.nix index a7fd7576..f875c033 100644 --- a/flake.nix +++ b/flake.nix @@ -42,7 +42,7 @@ }; }; nixNeovimPlugins = { - url = "github:nixNeovim/nixNeovimPlugins"; + url = "github:soispha/nixNeovimPlugins"; inputs = { flake-utils.follows = "flake-utils"; nixpkgs.follows = "nixpkgs"; diff --git a/home-manager/soispha/config/neovim/nixvim/clipboard/default.nix b/home-manager/soispha/config/neovim/nixvim/clipboard/default.nix index 761f0c17..0a686190 100644 --- a/home-manager/soispha/config/neovim/nixvim/clipboard/default.nix +++ b/home-manager/soispha/config/neovim/nixvim/clipboard/default.nix @@ -1,6 +1,6 @@ {...}: { programs.nixvim = { - clipboard.provides = { + clipboard.providers = { wl-copy.enable = true; }; }; diff --git a/home-manager/soispha/config/neovim/nixvim/default.nix b/home-manager/soispha/config/neovim/nixvim/default.nix index f216fb05..a96bc476 100644 --- a/home-manager/soispha/config/neovim/nixvim/default.nix +++ b/home-manager/soispha/config/neovim/nixvim/default.nix @@ -1,39 +1,26 @@ -{ - pkgs, - ... -}: { +{...}: { imports = [ - ./options - ./mappings - ./colorscheme + ./autocmds ./clipboard + ./mappings + ./options + ./plugins ]; programs.nixvim = { enable = true; - defaultEditor = true; - - # to install plugins just activate their modules - plugins = { - lsp = { - enable = true; - hls.enable = true; - rust-analyzer.enable = true; - }; - treesitter = { - enable = true; - indent = true; - }; - mini = { - enable = true; - ai.enable = true; - jump.enable = true; - }; - }; - # Not all plugins have own modules - # You can add missing plugins here - # `pkgs.vimExtraPlugins` is added by the overlay you added at the beginning - # For a list of available plugins, look here: [available plugins](https://github.com/jooooscha/nixpkgs-vim-extra-plugins/blob/main/plugins.md) - extraPlugins = [pkgs.vimExtraPlugins.nightfox-nvim]; + # source: https://www.patorjk.com/software/taag/#p=display&f=ANSI%20Shadow&t=Neovim + extraConfigLuaPre = '' + --------------------------------------------------------------------------- + -- + -- ███╗ ██╗███████╗ ██████╗ ██╗ ██╗██╗███╗ ███╗ + -- ████╗ ██║██╔════╝██╔═══██╗██║ ██║██║████╗ ████║ + -- ██╔██╗ ██║█████╗ ██║ ██║██║ ██║██║██╔████╔██║ + -- ██║╚██╗██║██╔══╝ ██║ ██║╚██╗ ██╔╝██║██║╚██╔╝██║ + -- ██║ ╚████║███████╗╚██████╔╝ ╚████╔╝ ██║██║ ╚═╝ ██║ + -- ╚═╝ ╚═══╝╚══════╝ ╚═════╝ ╚═══╝ ╚═╝╚═╝ ╚═╝ + -- + --------------------------------------------------------------------------- + ''; }; } diff --git a/home-manager/soispha/config/neovim/nixvim/mappings/default.nix b/home-manager/soispha/config/neovim/nixvim/mappings/default.nix index 237319a0..575ad465 100644 --- a/home-manager/soispha/config/neovim/nixvim/mappings/default.nix +++ b/home-manager/soispha/config/neovim/nixvim/mappings/default.nix @@ -13,7 +13,7 @@ }; in { insert = - lib.recursiveUpate { + lib.recursiveUpdate { "hh" = { action = '' function() @@ -29,7 +29,7 @@ ''; desc = "completion trigger/ forward in completen menu"; }; - "<S-Tab>" = { + "<C-Space>" = { action = '' function() local cmp = require('cmp'); @@ -78,6 +78,10 @@ desc = "jump to command line"; }; + "\\f" = { + action = "require('lf').start()"; + desc = "open lf in a floating window"; + }; # Splits "<C-t>" = { diff --git a/home-manager/soispha/config/neovim/nixvim/colorscheme/default.nix b/home-manager/soispha/config/neovim/nixvim/plugins/colorscheme/default.nix index 9864c5cf..9864c5cf 100644 --- a/home-manager/soispha/config/neovim/nixvim/colorscheme/default.nix +++ b/home-manager/soispha/config/neovim/nixvim/plugins/colorscheme/default.nix diff --git a/home-manager/soispha/config/neovim/nixvim/colorscheme/lua/nightfox.lua b/home-manager/soispha/config/neovim/nixvim/plugins/colorscheme/lua/nightfox.lua index 1ca4f743..b00626a2 100644 --- a/home-manager/soispha/config/neovim/nixvim/colorscheme/lua/nightfox.lua +++ b/home-manager/soispha/config/neovim/nixvim/plugins/colorscheme/lua/nightfox.lua @@ -1,4 +1,3 @@ --- Default options require('nightfox').setup({ options = { -- Compiled file's destination location @@ -49,5 +48,3 @@ require('nightfox').setup({ specs = {}, groups = {}, }) - -vim.cmd.colorscheme("duskfox"); diff --git a/home-manager/soispha/config/neovim/nixvim/plugins/default.nix b/home-manager/soispha/config/neovim/nixvim/plugins/default.nix index 150798c3..0622203e 100644 --- a/home-manager/soispha/config/neovim/nixvim/plugins/default.nix +++ b/home-manager/soispha/config/neovim/nixvim/plugins/default.nix @@ -1,5 +1,14 @@ {...}: { imports = [ - ./treesiter + ./colorscheme + ./lf-nvim + ./lsp + ./lualine + ./luasnip + ./nvim-cmp + ./nvim-lint + ./raw_plugins + ./treesitter + ./vim-tex ]; } diff --git a/home-manager/soispha/config/neovim/nixvim/plugins/lf-nvim/default.nix b/home-manager/soispha/config/neovim/nixvim/plugins/lf-nvim/default.nix new file mode 100644 index 00000000..a42c6f33 --- /dev/null +++ b/home-manager/soispha/config/neovim/nixvim/plugins/lf-nvim/default.nix @@ -0,0 +1,8 @@ +{lib, ...}: { + programs.nixvim = { + # TODO package lf-nvim though a module + extraConfigLuaPost = '' + ${lib.strings.fileContents ./lua/lf-nvim.lua} + ''; + }; +} diff --git a/home-manager/soispha/config/neovim/nixvim/plugins/lf-nvim/lua/lf-nvim.lua b/home-manager/soispha/config/neovim/nixvim/plugins/lf-nvim/lua/lf-nvim.lua new file mode 100644 index 00000000..f6b249ce --- /dev/null +++ b/home-manager/soispha/config/neovim/nixvim/plugins/lf-nvim/lua/lf-nvim.lua @@ -0,0 +1,43 @@ +local fn = vim.fn + +-- Defaults +require("lf").setup({ + default_action = "drop", -- default action when `Lf` opens a file + -- TODO document these mappings: + default_actions = { -- default action keybindings + ["<C-t>"] = "tabedit", + ["<C-x>"] = "split", + ["<C-v>"] = "vsplit", + ["<C-o>"] = "tab drop", + }, + + winblend = 10, -- psuedotransparency level + dir = "", -- directory where `lf` starts ('gwd' is git-working-directory, ""/nil is CWD) + direction = "float", -- window type: float horizontal vertical + border = "rounded", -- border kind: single double shadow curved + height = fn.float2nr(fn.round(0.75 * o.lines)), -- height of the *floating* window + width = fn.float2nr(fn.round(0.75 * o.columns)), -- width of the *floating* window + escape_quit = true, -- map escape to the quit command (so it doesn't go into a meta normal mode) + focus_on_open = true, -- focus the current file when opening Lf (experimental) + mappings = true, -- whether terminal buffer mapping is enabled + tmux = false, -- tmux statusline can be disabled on opening of Lf + default_file_manager = true, -- make lf default file manager + disable_netrw_warning = true, -- don't display a message when opening a directory with `default_file_manager` as true + highlights = { -- highlights passed to toggleterm + Normal = { link = "Normal" }, + NormalFloat = { link = 'Normal' }, + FloatBorder = { guifg = "<VALUE>", guibg = "<VALUE>" }, + }, + + -- Layout configurations + layout_mapping = "<M-u>", -- resize window with this key + views = { -- window dimensions to rotate through + { width = 0.800, height = 0.800 }, + { width = 0.600, height = 0.600 }, + { width = 0.950, height = 0.950 }, + { width = 0.500, height = 0.500, col = 0, row = 0 }, + { width = 0.500, height = 0.500, col = 0, row = 0.5 }, + { width = 0.500, height = 0.500, col = 0.5, row = 0 }, + { width = 0.500, height = 0.500, col = 0.5, row = 0.5 }, + } +}) diff --git a/home-manager/soispha/config/neovim/nixvim/plugins/lsp/servers/default.nix b/home-manager/soispha/config/neovim/nixvim/plugins/lsp/servers/default.nix index 8d5cfaf1..dc8210d1 100644 --- a/home-manager/soispha/config/neovim/nixvim/plugins/lsp/servers/default.nix +++ b/home-manager/soispha/config/neovim/nixvim/plugins/lsp/servers/default.nix @@ -1,5 +1,10 @@ {...}: { - programs.nixvim.plugins.lsp.servers = { - - }; + imports = [ + ./servers/bashls.nix + ./servers/ltex.nix + ./servers/lua-ls.nix + ./servers/nil_ls.nix + ./servers/rust-analyzer.nix + ./servers/texlab.nix + ]; } diff --git a/home-manager/soispha/config/neovim/nixvim/plugins/lsp/servers/servers/bashls.nix b/home-manager/soispha/config/neovim/nixvim/plugins/lsp/servers/servers/bashls.nix new file mode 100644 index 00000000..0577a335 --- /dev/null +++ b/home-manager/soispha/config/neovim/nixvim/plugins/lsp/servers/servers/bashls.nix @@ -0,0 +1,5 @@ +{...}: { + programs.nixvim.plugins.lsp.servers = { + bashls.enable = true; + }; +} diff --git a/home-manager/soispha/config/neovim/nixvim/plugins/lsp/servers/servers/ltex.nix b/home-manager/soispha/config/neovim/nixvim/plugins/lsp/servers/servers/ltex.nix new file mode 100644 index 00000000..9fc42473 --- /dev/null +++ b/home-manager/soispha/config/neovim/nixvim/plugins/lsp/servers/servers/ltex.nix @@ -0,0 +1,39 @@ +{...}: { + programs.nixvim.plugins.lsp.servers = { + ltex = let + filetypes = [ + "rust" + "java" + "cpp" + "shell" + "bash" + + "bibtex" + "context" + "context.tex" + "latex" + "tex" + + "html" + "markdown" + "org" + "restructuredtext" + "rsweave" + + "git-commit" + "gitcommit" + ]; + in { + enable = true; + inherit filetypes; + settings = { + enabled = filetypes; + completionEnabled = true; + language = "en-CA"; + additionalRules = { + enablePickyRules = true; + }; + }; + }; + }; +} diff --git a/home-manager/soispha/config/neovim/nixvim/plugins/lsp/servers/servers/lua-ls.nix b/home-manager/soispha/config/neovim/nixvim/plugins/lsp/servers/servers/lua-ls.nix new file mode 100644 index 00000000..5a44b500 --- /dev/null +++ b/home-manager/soispha/config/neovim/nixvim/plugins/lsp/servers/servers/lua-ls.nix @@ -0,0 +1,8 @@ +{...}: { + programs.nixvim.plugins.lsp.servers = { + lua-ls = { + enable = true; + settings.telemetry.enable = false; + }; + }; +} diff --git a/home-manager/soispha/config/neovim/nixvim/plugins/lsp/servers/servers/nil_ls.nix b/home-manager/soispha/config/neovim/nixvim/plugins/lsp/servers/servers/nil_ls.nix new file mode 100644 index 00000000..f0cccbdc --- /dev/null +++ b/home-manager/soispha/config/neovim/nixvim/plugins/lsp/servers/servers/nil_ls.nix @@ -0,0 +1,10 @@ +{...}: { + programs.nixvim.plugins.lsp.servers = { + nil_ls = { + enable = true; + settings = { + formatting.command = ["alejandra"]; + }; + }; + }; +} diff --git a/home-manager/soispha/config/neovim/nixvim/plugins/lsp/servers/servers/rust-analyzer.nix b/home-manager/soispha/config/neovim/nixvim/plugins/lsp/servers/servers/rust-analyzer.nix new file mode 100644 index 00000000..943a8c80 --- /dev/null +++ b/home-manager/soispha/config/neovim/nixvim/plugins/lsp/servers/servers/rust-analyzer.nix @@ -0,0 +1,10 @@ +{...}: { + programs.nixvim.plugins.lsp.servers = { + rust-analyzer = { + enable = true; + settings = { + typing.autoClosingAngleBrackets.enable = true; + }; + }; + }; +} diff --git a/home-manager/soispha/config/neovim/nixvim/plugins/lsp/servers/servers/texlab.nix b/home-manager/soispha/config/neovim/nixvim/plugins/lsp/servers/servers/texlab.nix new file mode 100644 index 00000000..59af8d39 --- /dev/null +++ b/home-manager/soispha/config/neovim/nixvim/plugins/lsp/servers/servers/texlab.nix @@ -0,0 +1,7 @@ +{...}: { + programs.nixvim.plugins.lsp.servers = { + texlab = { + enable = true; + }; + }; +} diff --git a/home-manager/soispha/config/neovim/nixvim/plugins/lualine/default.nix b/home-manager/soispha/config/neovim/nixvim/plugins/lualine/default.nix index 0ec255db..2c95b562 100644 --- a/home-manager/soispha/config/neovim/nixvim/plugins/lualine/default.nix +++ b/home-manager/soispha/config/neovim/nixvim/plugins/lualine/default.nix @@ -46,29 +46,27 @@ ''; }; in { - options = { - icons_enabled = true; - theme = "nightfox"; - component_separators = { - left = ""; - right = ""; - }; - section_separators = { - left = ""; - right = ""; - }; - disabled_filetypes = { - statusline = []; - winbar = []; - }; - ignore_focus = {}; - always_divide_middle = true; - globalstatus = false; - refresh = { - statusline = 1000; - tabline = 1000; - winbar = 1000; - }; + iconsEnabled = true; + theme = "nightfox"; + componentSeparators = { + left = ""; + right = ""; + }; + sectionSeparators = { + left = ""; + right = ""; + }; + disabledFiletypes = { + statusline = []; + winbar = []; + }; + ignoreFocus = {}; + alwaysDivideMiddle = true; + globalstatus = false; + refresh = { + statusline = 1000; + tabline = 1000; + winbar = 1000; }; sections = { lualine_a = ["mode"]; @@ -85,7 +83,7 @@ lualine_y = ["encoding" "fileformat" get_mixed_indent get_trailing_whitespace]; lualine_z = [get_location_of_file]; }; - inactive_sections = { + inactiveSections = { lualine_a = []; lualine_b = []; lualine_c = ["filename"]; @@ -95,7 +93,7 @@ }; tabline = {}; winbar = {}; - inactive_winbar = {}; + inactiveWinbar = {}; # TODO add all installed and supported extensions here extensions = ["fugitive"]; diff --git a/home-manager/soispha/config/neovim/nixvim/plugins/luasnip/default.nix b/home-manager/soispha/config/neovim/nixvim/plugins/luasnip/default.nix new file mode 100644 index 00000000..50a0b94c --- /dev/null +++ b/home-manager/soispha/config/neovim/nixvim/plugins/luasnip/default.nix @@ -0,0 +1,12 @@ +{lib, ...}: { + programs.nixvim = { + plugins.luasnip = { + enable = true; + }; + extraConfigLuaPost = '' + ${lib.strings.fileContents ./lua/luasnip.lua} + require("luasnip.loaders.from_lua").load({paths = "${./lua/snippets}"}) + require("luasnip.loaders.from_lua").lazy_load({paths = "${./lua/snippets}"}) + ''; + }; +} diff --git a/home-manager/soispha/config/neovim/nixvim/plugins/luasnip/lua/luasnip.lua b/home-manager/soispha/config/neovim/nixvim/plugins/luasnip/lua/luasnip.lua new file mode 100644 index 00000000..c7707c69 --- /dev/null +++ b/home-manager/soispha/config/neovim/nixvim/plugins/luasnip/lua/luasnip.lua @@ -0,0 +1,9 @@ +require("luasnip").config.set_config({ + -- Enable auto triggered snippets + enable_autosnippets = true, + + -- Use Tab (or some other key if you prefer) to trigger visual selection + store_selection_keys = "<Tab>", +}) + + diff --git a/home-manager/soispha/config/neovim/nixvim/plugins/luasnip/lua/snippets/all.lua b/home-manager/soispha/config/neovim/nixvim/plugins/luasnip/lua/snippets/all.lua new file mode 100644 index 00000000..2fecd1e7 --- /dev/null +++ b/home-manager/soispha/config/neovim/nixvim/plugins/luasnip/lua/snippets/all.lua @@ -0,0 +1,51 @@ +local get_visual = function(args, parent) + if (#parent.snippet.env.SELECT_RAW > 0) then + return sn(nil, i(1, parent.snippet.env.SELECT_RAW)) + else + return sn(nil, i(1, '')) + end +end +local function char_count_same(c1, c2) + local line = vim.api.nvim_get_current_line() + -- '%'-escape chars to force explicit match (gsub accepts patterns). + -- second return value is number of substitutions. + local _, ct1 = string.gsub(line, '%' .. c1, '') + local _, ct2 = string.gsub(line, '%' .. c2, '') + return ct1 == ct2 +end + +local function even_count(c) + local line = vim.api.nvim_get_current_line() + local _, ct = string.gsub(line, c, '') + return ct % 2 == 0 +end + +local function neg(fn, ...) + return not fn(...) +end + +local function part(fn, ...) + local args = { ... } + return function() return fn(unpack(args)) end +end + +-- This makes creation of pair-type snippets easier. +local function pair(pair_begin, pair_end, expand_func, ...) + -- triggerd by opening part of pair, wordTrig=false to trigger anywhere. + -- ... is used to pass any args following the expand_func to it. + return s({ trig = pair_begin, wordTrig = false, snippetType = "autosnippet" }, { + t({ pair_begin }), d(1, get_visual), t({ pair_end }) + }, { + condition = part(expand_func, part(..., pair_begin, pair_end)) + }) +end + +return { + pair("(", ")", neg, char_count_same), + pair("{", "}", neg, char_count_same), + pair("[", "]", neg, char_count_same), + -- pair("<", ">", neg, char_count_same), + pair("'", "'", neg, even_count), + pair('"', '"', neg, even_count), + pair("`", "`", neg, even_count), +} diff --git a/home-manager/soispha/config/neovim/nixvim/plugins/luasnip/lua/snippets/html/at.lua b/home-manager/soispha/config/neovim/nixvim/plugins/luasnip/lua/snippets/html/at.lua new file mode 100644 index 00000000..8f84fd30 --- /dev/null +++ b/home-manager/soispha/config/neovim/nixvim/plugins/luasnip/lua/snippets/html/at.lua @@ -0,0 +1,28 @@ +local get_visual = function(args, parent) + if (#parent.snippet.env.SELECT_RAW > 0) then + return sn(nil, i(1, parent.snippet.env.SELECT_RAW)) + else + return sn(nil, i(1)) + end +end + +local line_begin = require("luasnip.extras.expand_conditions").line_begin + +return { + -- HEADER + s({ trig = "tr", regTrig = false, wordTrig = true, snippetType = "autosnippet" }, + fmt( + [[ + <tr> + <td><code>{}</code></td> + <th><code>{}</code></th> + </tr> + ]] , + { + d(1, get_visual), + d(2, get_visual), + } + ), + { condition = line_begin } + ), +} diff --git a/home-manager/soispha/config/neovim/nixvim/plugins/luasnip/lua/snippets/html/html.lua b/home-manager/soispha/config/neovim/nixvim/plugins/luasnip/lua/snippets/html/html.lua new file mode 100644 index 00000000..df42314b --- /dev/null +++ b/home-manager/soispha/config/neovim/nixvim/plugins/luasnip/lua/snippets/html/html.lua @@ -0,0 +1,105 @@ +local get_visual = function(args, parent) + if (#parent.snippet.env.SELECT_RAW > 0) then + return sn(nil, i(1, parent.snippet.env.SELECT_RAW)) + else + return sn(nil, i(1)) + end +end + +local line_begin = require("luasnip.extras.expand_conditions").line_begin + +return + { + -- HEADER + s({trig="h([123456])", regTrig=true, wordTrig=false, snippetType="autosnippet"}, + fmt( + [[ + <h{}>{}</h{}> + ]], + { + f( function(_, snip) return snip.captures[1] end ), + d(1, get_visual), + f( function(_, snip) return snip.captures[1] end ), + } + ), + {condition = line_begin} + ), + -- PARAGRAPH + s({trig="pp", snippetType="autosnippet"}, + fmt( + [[ + <p>{}</p> + ]], + { + d(1, get_visual), + } + ), + {condition = line_begin} + ), + -- UNORDERED LIST + s({trig="itt", snippetType="autosnippet"}, + fmt( + [[ + <ul> + <li>{}</li>{} + </ul> + ]], + { + i(1), + i(0) + } + ), + {condition = line_begin} + ), + -- LIST ITEM + s({trig="ii", snippetType="autosnippet"}, + fmt( + [[ + <li>{}</li> + ]], + { + d(1, get_visual), + } + ), + {condition = line_begin} + ), + -- DOCUMENT TEMPLATE + s({trig="base"}, + fmt( + [[ + <!doctype HTML> + <html lang="en"> + <head> + <meta charset="UTF-8"> + <title>{}</title> + </head> + <body> + {} + </body> + </html> + ]], + { + i(1, "FooBar"), + i(0) + } + ), + {condition = line_begin} + ), + -- ANCHOR TAG + s({trig = "([^%l])aa", regTrig = true, wordTrig = false, snippetType="autosnippet"}, + fmt( + [[ + {}<a href="{}">{}</a> + ]], + { + f( function(_, snip) return snip.captures[1] end ), + i(1), + d(2, get_visual), + } + ) + ), + } + + + + diff --git a/home-manager/soispha/config/neovim/nixvim/plugins/luasnip/lua/snippets/nix/delimiter.lua b/home-manager/soispha/config/neovim/nixvim/plugins/luasnip/lua/snippets/nix/delimiter.lua new file mode 100644 index 00000000..12e1df42 --- /dev/null +++ b/home-manager/soispha/config/neovim/nixvim/plugins/luasnip/lua/snippets/nix/delimiter.lua @@ -0,0 +1,24 @@ +local get_visual = function(args, parent) + if (#parent.snippet.env.SELECT_RAW > 0) then + return sn(nil, i(1, parent.snippet.env.SELECT_RAW)) + else + return sn(nil, i(1, '')) + end +end + + +-- Return snippet tables +return +{ + -- LEFT/RIGHT ALL BRACES + s({trig = "cmd;(.*);", regTrig = true, wordTrig = false, snippetType="autosnippet"}, + fmta( + [[<> = builtins.readFile "./cmds/<>.sh";]], + { + f( function(_, snip) return snip.captures[1] end ), + f( function(_, snip) return snip.captures[1] end ), + } + ) + ), +} + diff --git a/home-manager/soispha/config/neovim/nixvim/plugins/luasnip/lua/snippets/tex/delimiter.lua b/home-manager/soispha/config/neovim/nixvim/plugins/luasnip/lua/snippets/tex/delimiter.lua new file mode 100644 index 00000000..36cae366 --- /dev/null +++ b/home-manager/soispha/config/neovim/nixvim/plugins/luasnip/lua/snippets/tex/delimiter.lua @@ -0,0 +1,36 @@ +local get_visual = function(args, parent) + if (#parent.snippet.env.SELECT_RAW > 0) then + return sn(nil, i(1, parent.snippet.env.SELECT_RAW)) + else + return sn(nil, i(1, '')) + end +end + +local translation_table = { + ["("] = ")", + ["{"] = "}", + ["["] = "]", +} + +-- Math context detection +local tex = {} +tex.in_mathzone = function() return vim.fn['vimtex#syntax#in_mathzone']() == 1 end +tex.in_text = function() return not tex.in_mathzone() end + +-- Return snippet tables +return +{ + -- LEFT/RIGHT ALL BRACES + s({trig = "([^%a])l([%(%[%{])", regTrig = true, wordTrig = false, snippetType="autosnippet"}, + fmta( + "<>\\left<><>\\right<>", + { + f( function(_, snip) return snip.captures[1] end ), + f( function(_, snip) return snip.captures[2] end ), + d(1, get_visual), + f( function(_, snip) return translation_table[snip.captures[2]] end ), + } + ) + ), +} + diff --git a/home-manager/soispha/config/neovim/nixvim/plugins/luasnip/lua/snippets/tex/environments.lua b/home-manager/soispha/config/neovim/nixvim/plugins/luasnip/lua/snippets/tex/environments.lua new file mode 100644 index 00000000..e88bc16e --- /dev/null +++ b/home-manager/soispha/config/neovim/nixvim/plugins/luasnip/lua/snippets/tex/environments.lua @@ -0,0 +1,130 @@ +local get_visual = function(args, parent) + if (#parent.snippet.env.SELECT_RAW > 0) then + return sn(nil, i(0, parent.snippet.env.SELECT_RAW)) + else + return sn(nil, i(0, '')) + end +end + +-- Math context detection +local tex = {} +tex.in_mathzone = function() return vim.fn['vimtex#syntax#in_mathzone']() == 1 end +tex.in_text = function() return not tex.in_mathzone() end + +local line_begin = require("luasnip.extras.expand_conditions").line_begin + +-- Return snippet tables +return { + -- EQUATION +-- s({ trig = "nn", snippetType = "autosnippet" }, +-- fmta( +-- [[ +-- \begin{equation*} +-- <> +-- \end{equation*} +-- ]] , +-- { +-- i(0), +-- } +-- ), +-- { condition = line_begin } +-- ), +-- -- SPLIT EQUATION +-- s({ trig = "ss", snippetType = "autosnippet" }, +-- fmta( +-- [[ +-- \begin{equation*} +-- \begin{split} +-- <> +-- \end{split} +-- \end{equation*} +-- ]] , +-- { +-- d(1, get_visual), +-- } +-- ), +-- { condition = line_begin } +-- ), +-- -- ALIGN +-- s({ trig = "all", snippetType = "autosnippet" }, +-- fmta( +-- [[ +-- \begin{align*} +-- <> +-- \end{align*} +-- ]] , +-- { +-- i(0), +-- } +-- ), +-- { condition = line_begin } +-- ), +-- -- ITEMIZE +-- s({ trig = "itt", snippetType = "autosnippet" }, +-- fmta( +-- [[ +-- \begin{itemize} +-- +-- \item <> +-- +-- \end{itemize} +-- ]] , +-- { +-- i(0), +-- } +-- ), +-- { condition = line_begin } +-- ), +-- -- ENUMERATE +-- s({ trig = "enn", snippetType = "autosnippet" }, +-- fmta( +-- [[ +-- \begin{enumerate} +-- +-- \item <> +-- +-- \end{enumerate} +-- ]] , +-- { +-- i(0), +-- } +-- ) +-- ), +-- -- INLINE MATH +-- s({ trig = "([^%l])mm", regTrig = true, wordTrig = false, snippetType = "autosnippet" }, +-- fmta( +-- "<>$<>$", +-- { +-- f(function(_, snip) return snip.captures[1] end), +-- d(1, get_visual), +-- } +-- ) +-- ), +-- -- INLINE MATH ON NEW LINE +-- s({ trig = "^mm", regTrig = true, wordTrig = false, snippetType = "autosnippet" }, +-- fmta( +-- "$<>$", +-- { +-- i(0), +-- })), +-- -- FIGURE +-- s({ trig = "fig" }, +-- fmta( +-- [[ +-- \begin{figure}[htb!] +-- \centering +-- \includegraphics[width=<>\linewidth]{<>} +-- \caption{<>} +-- \label{fig:<>} +-- \end{figure} +-- ]] , +-- { +-- i(1), +-- i(2), +-- i(3), +-- i(4), +-- } +-- ), +-- { condition = line_begin } +-- ), +} diff --git a/home-manager/soispha/config/neovim/nixvim/plugins/luasnip/lua/snippets/tex/fonts.lua b/home-manager/soispha/config/neovim/nixvim/plugins/luasnip/lua/snippets/tex/fonts.lua new file mode 100644 index 00000000..aeddf571 --- /dev/null +++ b/home-manager/soispha/config/neovim/nixvim/plugins/luasnip/lua/snippets/tex/fonts.lua @@ -0,0 +1,110 @@ +local get_visual = function(args, parent) + if (#parent.snippet.env.SELECT_RAW > 0) then + return sn(nil, i(1, parent.snippet.env.SELECT_RAW)) + else + return sn(nil, i(1, '')) + end +end + +-- A logical OR of `line_begin` and the regTrig '[^%a]trig' +function line_begin_or_non_letter(line_to_cursor, matched_trigger) + local line_begin = line_to_cursor:sub(1, -(#matched_trigger + 1)):match("^%s*$") + local non_letter = line_to_cursor:sub(-(#matched_trigger + 1), -(#matched_trigger + 1)):match("[^%a]") + return line_begin or non_letter +end + +-- Math context detection +local tex = {} +tex.in_mathzone = function() return vim.fn['vimtex#syntax#in_mathzone']() == 1 end +tex.in_text = function() return not tex.in_mathzone() end + +local line_begin = function(line_to_cursor, matched_trigger) + -- +1 because `string.sub("abcd", 1, -2)` -> abc + return line_to_cursor:sub(1, -(#matched_trigger + 1)):match("^%s*$") +end + +-- Return snippet tables +return + { +-- -- TYPEWRITER i.e. \texttt +-- s({trig = "([^%a])sd", regTrig = true, wordTrig = false, snippetType="autosnippet", priority=2000}, +-- fmta( +-- "<>\\texttt{<>}", +-- { +-- f( function(_, snip) return snip.captures[1] end ), +-- d(1, get_visual), +-- } +-- ), +-- {condition = tex.in_text} +-- ), +-- -- ITALIC i.e. \textit +-- s({trig = "([^%a])tii", regTrig = true, wordTrig = false, snippetType="autosnippet"}, +-- fmta( +-- "<>\\textit{<>}", +-- { +-- f( function(_, snip) return snip.captures[1] end ), +-- d(1, get_visual), +-- } +-- ) +-- ), +-- -- BOLD i.e. \textbf +-- s({trig = "tbb", snippetType="autosnippet"}, +-- fmta( +-- "\\textbf{<>}", +-- { +-- d(1, get_visual), +-- } +-- ) +-- ), +-- -- MATH ROMAN i.e. \mathrm +-- s({trig = "([^%a])rmm", regTrig = true, wordTrig = false, snippetType="autosnippet"}, +-- fmta( +-- "<>\\mathrm{<>}", +-- { +-- f( function(_, snip) return snip.captures[1] end ), +-- d(1, get_visual), +-- } +-- ) +-- ), +-- -- MATH CALIGRAPHY i.e. \mathcal +-- s({trig = "([^%a])mcc", regTrig = true, wordTrig = false, snippetType="autosnippet"}, +-- fmta( +-- "<>\\mathcal{<>}", +-- { +-- f( function(_, snip) return snip.captures[1] end ), +-- d(1, get_visual), +-- } +-- ) +-- ), +-- -- MATH BOLDFACE i.e. \mathbf +-- s({trig = "([^%a])mbf", regTrig = true, wordTrig = false, snippetType="autosnippet"}, +-- fmta( +-- "<>\\mathbf{<>}", +-- { +-- f( function(_, snip) return snip.captures[1] end ), +-- d(1, get_visual), +-- } +-- ) +-- ), +-- -- MATH BLACKBOARD i.e. \mathbb +-- s({trig = "([^%a])mbb", regTrig = true, wordTrig = false, snippetType="autosnippet"}, +-- fmta( +-- "<>\\mathbb{<>}", +-- { +-- f( function(_, snip) return snip.captures[1] end ), +-- d(1, get_visual), +-- } +-- ) +-- ), +-- -- REGULAR TEXT i.e. \text (in math environments) +-- s({trig = "([^%a])tee", regTrig = true, wordTrig = false, snippetType="autosnippet"}, +-- fmta( +-- "<>\\text{<>}", +-- { +-- f( function(_, snip) return snip.captures[1] end ), +-- d(1, get_visual), +-- } +-- ), +-- { condition = tex.in_mathzone } +-- ), + } diff --git a/home-manager/soispha/config/neovim/nixvim/plugins/luasnip/lua/snippets/tex/greek.lua b/home-manager/soispha/config/neovim/nixvim/plugins/luasnip/lua/snippets/tex/greek.lua new file mode 100644 index 00000000..419e47ef --- /dev/null +++ b/home-manager/soispha/config/neovim/nixvim/plugins/luasnip/lua/snippets/tex/greek.lua @@ -0,0 +1,140 @@ +-- Return snippet tables +return +{ + s({trig=";a", snippetType="autosnippet"}, + { + t("\\alpha"), + }), + s({trig=";b", snippetType="autosnippet"}, + { + t("\\beta"), + }), + s({trig=";g", snippetType="autosnippet"}, + { + t("\\gamma"), + }), + s({trig=";G", snippetType="autosnippet"}, + { + t("\\Gamma"), + }), + s({trig=";d", snippetType="autosnippet"}, + { + t("\\delta"), + }), + s({trig=";D", snippetType="autosnippet"}, + { + t("\\Delta"), + }), + s({trig=";e", snippetType="autosnippet"}, + { + t("\\epsilon"), + }), + s({trig=";ve", snippetType="autosnippet"}, + { + t("\\varepsilon"), + }), + s({trig=";z", snippetType="autosnippet"}, + { + t("\\zeta"), + }), + s({trig=";h", snippetType="autosnippet"}, + { + t("\\eta"), + }), + s({trig=";o", snippetType="autosnippet"}, + { + t("\\theta"), + }), + s({trig=";vo", snippetType="autosnippet"}, + { + t("\\vartheta"), + }), + s({trig=";O", snippetType="autosnippet"}, + { + t("\\Theta"), + }), + s({trig=";k", snippetType="autosnippet"}, + { + t("\\kappa"), + }), + s({trig=";l", snippetType="autosnippet"}, + { + t("\\lambda"), + }), + s({trig=";L", snippetType="autosnippet"}, + { + t("\\Lambda"), + }), + s({trig=";m", snippetType="autosnippet"}, + { + t("\\mu"), + }), + s({trig=";n", snippetType="autosnippet"}, + { + t("\\nu"), + }), + s({trig=";x", snippetType="autosnippet"}, + { + t("\\xi"), + }), + s({trig=";X", snippetType="autosnippet"}, + { + t("\\Xi"), + }), + s({trig=";i", snippetType="autosnippet"}, + { + t("\\pi"), + }), + s({trig=";I", snippetType="autosnippet"}, + { + t("\\Pi"), + }), + s({trig=";r", snippetType="autosnippet"}, + { + t("\\rho"), + }), + s({trig=";s", snippetType="autosnippet"}, + { + t("\\sigma"), + }), + s({trig=";S", snippetType="autosnippet"}, + { + t("\\Sigma"), + }), + s({trig=";t", snippetType="autosnippet"}, + { + t("\\tau"), + }), + s({trig=";f", snippetType="autosnippet"}, + { + t("\\phi"), + }), + s({trig=";vf", snippetType="autosnippet"}, + { + t("\\varphi"), + }), + s({trig=";F", snippetType="autosnippet"}, + { + t("\\Phi"), + }), + s({trig=";c", snippetType="autosnippet"}, + { + t("\\chi"), + }), + s({trig=";p", snippetType="autosnippet"}, + { + t("\\psi"), + }), + s({trig=";P", snippetType="autosnippet"}, + { + t("\\Psi"), + }), + s({trig=";w", snippetType="autosnippet"}, + { + t("\\omega"), + }), + s({trig=";W", snippetType="autosnippet"}, + { + t("\\Omega"), + }), +} diff --git a/home-manager/soispha/config/neovim/nixvim/plugins/luasnip/lua/snippets/tex/math.lua b/home-manager/soispha/config/neovim/nixvim/plugins/luasnip/lua/snippets/tex/math.lua new file mode 100644 index 00000000..e252ad43 --- /dev/null +++ b/home-manager/soispha/config/neovim/nixvim/plugins/luasnip/lua/snippets/tex/math.lua @@ -0,0 +1,537 @@ +local get_visual = function(args, parent) + if (#parent.snippet.env.SELECT_RAW > 0) then + return sn(nil, i(0, parent.snippet.env.SELECT_RAW)) + else + return sn(nil, i(0, '')) + end +end + +-- Math context detection +local tex = {} +tex.in_mathzone = function() return vim.fn['vimtex#syntax#in_mathzone']() == 1 end +tex.in_text = function() return not tex.in_mathzone() end + +-- Return snippet tables +return +{ +-- -- SUPERSCRIPT +-- s({trig = "([%w%)%]%}])'", wordTrig=false, regTrig = true, snippetType="autosnippet"}, +-- fmta( +-- "<>^{<>}", +-- { +-- f( function(_, snip) return snip.captures[1] end ), +-- d(1, get_visual), +-- } +-- ), +-- {condition = tex.in_mathzone} +-- ), +-- -- SUBSCRIPT +-- s({trig = "([%w%)%]%}]);", wordTrig=false, regTrig = true, snippetType="autosnippet"}, +-- fmta( +-- "<>_{<>}", +-- { +-- f( function(_, snip) return snip.captures[1] end ), +-- d(1, get_visual), +-- } +-- ), +-- {condition = tex.in_mathzone} +-- ), +-- -- SUBSCRIPT AND SUPERSCRIPT +-- s({trig = "([%w%)%]%}])__", wordTrig=false, regTrig = true, snippetType="autosnippet"}, +-- fmta( +-- "<>^{<>}_{<>}", +-- { +-- f( function(_, snip) return snip.captures[1] end ), +-- i(1), +-- i(2), +-- } +-- ), +-- {condition = tex.in_mathzone} +-- ), +-- -- TEXT SUBSCRIPT +-- s({trig = 'sd', snippetType="autosnippet", wordTrig=false}, +-- fmta("_{\\mathrm{<>}}", +-- { d(1, get_visual) } +-- ), +-- {condition = tex.in_mathzone} +-- ), +-- -- SUPERSCRIPT SHORTCUT +-- -- Places the first alphanumeric character after the trigger into a superscript. +-- s({trig = '([%w%)%]%}])"([%w])', regTrig = true, wordTrig = false, snippetType="autosnippet"}, +-- fmta( +-- "<>^{<>}", +-- { +-- f( function(_, snip) return snip.captures[1] end ), +-- f( function(_, snip) return snip.captures[2] end ), +-- } +-- ), +-- {condition = tex.in_mathzone} +-- ), +-- -- SUBSCRIPT SHORTCUT +-- -- Places the first alphanumeric character after the trigger into a subscript. +-- s({trig = '([%w%)%]%}]):([%w])', regTrig = true, wordTrig = false, snippetType="autosnippet"}, +-- fmta( +-- "<>_{<>}", +-- { +-- f( function(_, snip) return snip.captures[1] end ), +-- f( function(_, snip) return snip.captures[2] end ), +-- } +-- ), +-- {condition = tex.in_mathzone} +-- ), +-- -- EULER'S NUMBER SUPERSCRIPT SHORTCUT +-- s({trig = '([^%a])ee', regTrig = true, wordTrig = false, snippetType="autosnippet"}, +-- fmta( +-- "<>e^{<>}", +-- { +-- f( function(_, snip) return snip.captures[1] end ), +-- d(1, get_visual) +-- } +-- ), +-- {condition = tex.in_mathzone} +-- ), +-- -- ZERO SUBSCRIPT SHORTCUT +-- s({trig = '([%a%)%]%}])00', regTrig = true, wordTrig = false, snippetType="autosnippet"}, +-- fmta( +-- "<>_{<>}", +-- { +-- f( function(_, snip) return snip.captures[1] end ), +-- t("0") +-- } +-- ), +-- {condition = tex.in_mathzone} +-- ), +-- -- MINUS ONE SUPERSCRIPT SHORTCUT +-- s({trig = '([%a%)%]%}])11', regTrig = true, wordTrig = false, snippetType="autosnippet"}, +-- fmta( +-- "<>_{<>}", +-- { +-- f( function(_, snip) return snip.captures[1] end ), +-- t("-1") +-- } +-- ), +-- {condition = tex.in_mathzone} +-- ), +-- -- J SUBSCRIPT SHORTCUT (since jk triggers snippet jump forward) +-- s({trig = '([%a%)%]%}])JJ', wordTrig = false, regTrig = true, snippetType="autosnippet"}, +-- fmta( +-- "<>_{<>}", +-- { +-- f( function(_, snip) return snip.captures[1] end ), +-- t("j") +-- } +-- ), +-- {condition = tex.in_mathzone} +-- ), +-- -- PLUS SUPERSCRIPT SHORTCUT +-- s({trig = '([%a%)%]%}])%+%+', regTrig = true, wordTrig = false, snippetType="autosnippet"}, +-- fmta( +-- "<>^{<>}", +-- { +-- f( function(_, snip) return snip.captures[1] end ), +-- t("+") +-- } +-- ), +-- {condition = tex.in_mathzone} +-- ), +-- -- COMPLEMENT SUPERSCRIPT +-- s({trig = '([%a%)%]%}])CC', regTrig = true, wordTrig = false, snippetType="autosnippet"}, +-- fmta( +-- "<>^{<>}", +-- { +-- f( function(_, snip) return snip.captures[1] end ), +-- t("\\complement") +-- } +-- ), +-- {condition = tex.in_mathzone} +-- ), +-- -- CONJUGATE (STAR) SUPERSCRIPT SHORTCUT +-- s({trig = '([%a%)%]%}])%*%*', regTrig = true, wordTrig = false, snippetType="autosnippet"}, +-- fmta( +-- "<>^{<>}", +-- { +-- f( function(_, snip) return snip.captures[1] end ), +-- t("*") +-- } +-- ), +-- {condition = tex.in_mathzone} +-- ), +-- -- VECTOR, i.e. \vec +-- s({trig = "([^%a])vv", wordTrig = false, regTrig = true, snippetType="autosnippet"}, +-- fmta( +-- "<>\\vec{<>}", +-- { +-- f( function(_, snip) return snip.captures[1] end ), +-- d(1, get_visual), +-- } +-- ), +-- {condition = tex.in_mathzone} +-- ), +-- -- DEFAULT UNIT VECTOR WITH SUBSCRIPT, i.e. \unitvector_{} +-- s({trig = "([^%a])ue", wordTrig = false, regTrig = true, snippetType="autosnippet"}, +-- fmta( +-- "<>\\unitvector_{<>}", +-- { +-- f( function(_, snip) return snip.captures[1] end ), +-- d(1, get_visual), +-- } +-- ), +-- {condition = tex.in_mathzone} +-- ), +-- -- UNIT VECTOR WITH HAT, i.e. \uvec{} +-- s({trig = "([^%a])uv", wordTrig = false, regTrig = true, snippetType="autosnippet"}, +-- fmta( +-- "<>\\uvec{<>}", +-- { +-- f( function(_, snip) return snip.captures[1] end ), +-- d(1, get_visual), +-- } +-- ), +-- {condition = tex.in_mathzone} +-- ), +-- -- MATRIX, i.e. \vec +-- s({trig = "([^%a])mt", wordTrig = false, regTrig = true, snippetType="autosnippet"}, +-- fmta( +-- "<>\\mat{<>}", +-- { +-- f( function(_, snip) return snip.captures[1] end ), +-- d(1, get_visual), +-- } +-- ), +-- {condition = tex.in_mathzone} +-- ), +-- -- FRACTION +-- s({trig = "([^%a])ff", wordTrig = false, regTrig = true, snippetType="autosnippet"}, +-- fmta( +-- "<>\\frac{<>}{<>}", +-- { +-- f( function(_, snip) return snip.captures[1] end ), +-- d(1, get_visual), +-- i(2), +-- } +-- ), +-- {condition = tex.in_mathzone} +-- ), +-- -- ANGLE +-- s({trig = "([^%a])gg", regTrig = true, wordTrig = false, snippetType="autosnippet"}, +-- fmta( +-- "<>\\ang{<>}", +-- { +-- f( function(_, snip) return snip.captures[1] end ), +-- d(1, get_visual), +-- } +-- ), +-- {condition = tex.in_mathzone} +-- ), +-- -- ABSOLUTE VALUE +-- s({trig = "([^%a])aa", regTrig = true, wordTrig = false, snippetType="autosnippet"}, +-- fmta( +-- "<>\\abs{<>}", +-- { +-- f( function(_, snip) return snip.captures[1] end ), +-- d(1, get_visual), +-- } +-- ), +-- {condition = tex.in_mathzone} +-- ), +-- -- SQUARE ROOT +-- s({trig = "([^%\\])sq", wordTrig = false, regTrig = true, snippetType="autosnippet"}, +-- fmta( +-- "<>\\sqrt{<>}", +-- { +-- f( function(_, snip) return snip.captures[1] end ), +-- d(1, get_visual), +-- } +-- ), +-- {condition = tex.in_mathzone} +-- ), +-- -- BINOMIAL SYMBOL +-- s({trig = "([^%\\])bnn", wordTrig = false, regTrig = true, snippetType="autosnippet"}, +-- fmta( +-- "<>\\binom{<>}{<>}", +-- { +-- f( function(_, snip) return snip.captures[1] end ), +-- i(1), +-- i(2), +-- } +-- ), +-- {condition = tex.in_mathzone} +-- ), +-- -- LOGARITHM WITH BASE SUBSCRIPT +-- s({trig = "([^%a%\\])ll", wordTrig = false, regTrig = true, snippetType="autosnippet"}, +-- fmta( +-- "<>\\log_{<>}", +-- { +-- f( function(_, snip) return snip.captures[1] end ), +-- i(1), +-- } +-- ), +-- {condition = tex.in_mathzone} +-- ), +-- -- DERIVATIVE with denominator only +-- s({trig = "([^%a])dV", wordTrig = false, regTrig = true, snippetType="autosnippet"}, +-- fmta( +-- "<>\\dvOne{<>}", +-- { +-- f( function(_, snip) return snip.captures[1] end ), +-- d(1, get_visual), +-- } +-- ), +-- {condition = tex.in_mathzone} +-- ), +-- -- DERIVATIVE with numerator and denominator +-- s({trig = "([^%a])dvv", wordTrig = false, regTrig = true, snippetType="autosnippet"}, +-- fmta( +-- "<>\\dv{<>}{<>}", +-- { +-- f( function(_, snip) return snip.captures[1] end ), +-- i(1), +-- i(2) +-- } +-- ), +-- {condition = tex.in_mathzone} +-- ), +-- -- DERIVATIVE with numerator, denominator, and higher-order argument +-- s({trig = "([^%a])ddv", wordTrig = false, regTrig = true, snippetType="autosnippet"}, +-- fmta( +-- "<>\\dvN{<>}{<>}{<>}", +-- { +-- f( function(_, snip) return snip.captures[1] end ), +-- i(1), +-- i(2), +-- i(3), +-- } +-- ), +-- {condition = tex.in_mathzone} +-- ), +-- -- PARTIAL DERIVATIVE with denominator only +-- s({trig = "([^%a])pV", wordTrig = false, regTrig = true, snippetType="autosnippet"}, +-- fmta( +-- "<>\\pdvOne{<>}", +-- { +-- f( function(_, snip) return snip.captures[1] end ), +-- d(1, get_visual), +-- } +-- ), +-- {condition = tex.in_mathzone} +-- ), +-- -- PARTIAL DERIVATIVE with numerator and denominator +-- s({trig = "([^%a])pvv", wordTrig = false, regTrig = true, snippetType="autosnippet"}, +-- fmta( +-- "<>\\pdv{<>}{<>}", +-- { +-- f( function(_, snip) return snip.captures[1] end ), +-- i(1), +-- i(2) +-- } +-- ), +-- {condition = tex.in_mathzone} +-- ), +-- -- PARTIAL DERIVATIVE with numerator, denominator, and higher-order argument +-- s({trig = "([^%a])ppv", wordTrig = false, regTrig = true, snippetType="autosnippet"}, +-- fmta( +-- "<>\\pdvN{<>}{<>}{<>}", +-- { +-- f( function(_, snip) return snip.captures[1] end ), +-- i(1), +-- i(2), +-- i(3), +-- } +-- ), +-- {condition = tex.in_mathzone} +-- ), +-- -- SUM with lower limit +-- s({trig = "([^%a])sM", wordTrig = false, regTrig = true, snippetType="autosnippet"}, +-- fmta( +-- "<>\\sum_{<>}", +-- { +-- f( function(_, snip) return snip.captures[1] end ), +-- i(1), +-- } +-- ), +-- {condition = tex.in_mathzone} +-- ), +-- -- SUM with upper and lower limit +-- s({trig = "([^%a])smm", wordTrig = false, regTrig = true, snippetType="autosnippet"}, +-- fmta( +-- "<>\\sum_{<>}^{<>}", +-- { +-- f( function(_, snip) return snip.captures[1] end ), +-- i(1), +-- i(2), +-- } +-- ), +-- {condition = tex.in_mathzone} +-- ), +-- -- INTEGRAL with upper and lower limit +-- s({trig = "([^%a])intt", wordTrig = false, regTrig = true, snippetType="autosnippet"}, +-- fmta( +-- "<>\\int_{<>}^{<>}", +-- { +-- f( function(_, snip) return snip.captures[1] end ), +-- i(1), +-- i(2), +-- } +-- ), +-- {condition = tex.in_mathzone} +-- ), +-- -- BOXED command +-- s({trig = "([^%a])bb", wordTrig = false, regTrig = true, snippetType="autosnippet"}, +-- fmta( +-- "<>\\boxed{<>}", +-- { +-- f( function(_, snip) return snip.captures[1] end ), +-- d(1, get_visual) +-- } +-- ), +-- {condition = tex.in_mathzone} +-- ), +-- -- +-- -- BEGIN STATIC SNIPPETS +-- -- +-- +-- -- DIFFERENTIAL, i.e. \diff +-- s({trig = "df", snippetType="autosnippet", snippetType="autosnippet"}, +-- { +-- t("\\diff"), +-- }, +-- {condition = tex.in_mathzone} +-- ), +-- -- BASIC INTEGRAL SYMBOL, i.e. \int +-- s({trig = "in1", snippetType="autosnippet"}, +-- { +-- t("\\int"), +-- }, +-- {condition = tex.in_mathzone} +-- ), +-- -- DOUBLE INTEGRAL, i.e. \iint +-- s({trig = "in2", snippetType="autosnippet"}, +-- { +-- t("\\iint"), +-- }, +-- {condition = tex.in_mathzone} +-- ), +-- -- TRIPLE INTEGRAL, i.e. \iiint +-- s({trig = "in3", snippetType="autosnippet"}, +-- { +-- t("\\iiint"), +-- }, +-- {condition = tex.in_mathzone} +-- ), +-- -- CLOSED SINGLE INTEGRAL, i.e. \oint +-- s({trig = "oi1", snippetType="autosnippet"}, +-- { +-- t("\\oint"), +-- }, +-- {condition = tex.in_mathzone} +-- ), +-- -- CLOSED DOUBLE INTEGRAL, i.e. \oiint +-- s({trig = "oi2", snippetType="autosnippet"}, +-- { +-- t("\\oiint"), +-- }, +-- {condition = tex.in_mathzone} +-- ), +-- -- GRADIENT OPERATOR, i.e. \grad +-- s({trig = "gdd", snippetType="autosnippet"}, +-- { +-- t("\\grad "), +-- }, +-- {condition = tex.in_mathzone} +-- ), +-- -- CURL OPERATOR, i.e. \curl +-- s({trig = "cll", snippetType="autosnippet"}, +-- { +-- t("\\curl "), +-- }, +-- {condition = tex.in_mathzone} +-- ), +-- -- DIVERGENCE OPERATOR, i.e. \divergence +-- s({trig = "DI", snippetType="autosnippet"}, +-- { +-- t("\\div "), +-- }, +-- {condition = tex.in_mathzone} +-- ), +-- -- LAPLACIAN OPERATOR, i.e. \laplacian +-- s({trig = "laa", snippetType="autosnippet"}, +-- { +-- t("\\laplacian "), +-- }, +-- {condition = tex.in_mathzone} +-- ), +-- -- PARALLEL SYMBOL, i.e. \parallel +-- s({trig = "||", snippetType="autosnippet"}, +-- { +-- t("\\parallel"), +-- } +-- ), +-- -- CDOTS, i.e. \cdots +-- s({trig = "cdd", snippetType="autosnippet"}, +-- { +-- t("\\cdots"), +-- } +-- ), +-- -- LDOTS, i.e. \ldots +-- s({trig = "ldd", snippetType="autosnippet"}, +-- { +-- t("\\ldots"), +-- } +-- ), +-- -- EQUIV, i.e. \equiv +-- s({trig = "eqq", snippetType="autosnippet"}, +-- { +-- t("\\equiv "), +-- } +-- ), +-- -- SETMINUS, i.e. \setminus +-- s({trig = "stm", snippetType="autosnippet"}, +-- { +-- t("\\setminus "), +-- } +-- ), +-- -- SUBSET, i.e. \subset +-- s({trig = "sbb", snippetType="autosnippet"}, +-- { +-- t("\\subset "), +-- } +-- ), +-- -- APPROX, i.e. \approx +-- s({trig = "px", snippetType="autosnippet"}, +-- { +-- t("\\approx "), +-- }, +-- {condition = tex.in_mathzone} +-- ), +-- -- PROPTO, i.e. \propto +-- s({trig = "pt", snippetType="autosnippet"}, +-- { +-- t("\\propto "), +-- }, +-- {condition = tex.in_mathzone} +-- ), +-- -- COLON, i.e. \colon +-- s({trig = "::", snippetType="autosnippet"}, +-- { +-- t("\\colon "), +-- } +-- ), +-- -- IMPLIES, i.e. \implies +-- s({trig = ">>", snippetType="autosnippet"}, +-- { +-- t("\\implies "), +-- } +-- ), +-- -- DOT PRODUCT, i.e. \cdot +-- s({trig = ",.", snippetType="autosnippet"}, +-- { +-- t("\\cdot "), +-- } +-- ), +-- -- CROSS PRODUCT, i.e. \times +-- s({trig = "xx", snippetType="autosnippet"}, +-- { +-- t("\\times "), +-- } +-- ), +} diff --git a/home-manager/soispha/config/neovim/nixvim/plugins/luasnip/lua/snippets/tex/new.lua b/home-manager/soispha/config/neovim/nixvim/plugins/luasnip/lua/snippets/tex/new.lua new file mode 100644 index 00000000..0ca73da4 --- /dev/null +++ b/home-manager/soispha/config/neovim/nixvim/plugins/luasnip/lua/snippets/tex/new.lua @@ -0,0 +1,51 @@ +local get_visual = function(args, parent) + if (#parent.snippet.env.SELECT_RAW > 0) then + return sn(nil, i(1, parent.snippet.env.SELECT_RAW)) + else + return sn(nil, i(1, '')) + end +end +local function char_count_same(c1, c2) + local line = vim.api.nvim_get_current_line() + -- '%'-escape chars to force explicit match (gsub accepts patterns). + -- second return value is number of substitutions. + local _, ct1 = string.gsub(line, '%' .. c1, '') + local _, ct2 = string.gsub(line, '%' .. c2, '') + return ct1 == ct2 +end + +local function even_count(c) + local line = vim.api.nvim_get_current_line() + local _, ct = string.gsub(line, c, '') + return ct % 2 == 0 +end + +local function neg(fn, ...) + return not fn(...) +end + +local function part(fn, ...) + local args = { ... } + return function() return fn(unpack(args)) end +end + +-- This makes creation of pair-type snippets easier. +local function pair(pair_begin, pair_end, expand_func, ...) + -- triggerd by opening part of pair, wordTrig=false to trigger anywhere. + -- ... is used to pass any args following the expand_func to it. + return s({ trig = pair_begin, wordTrig = false, snippetType = "autosnippet" }, { + t({ pair_begin }), d(1, get_visual), t({ pair_end }) + }, { + condition = part(expand_func, part(..., pair_begin, pair_end)) + }) +end + +return { + pair("(", ")", neg, char_count_same), + pair("{", "}", neg, char_count_same), + pair("[", "]", neg, char_count_same), + pair("<", ">", neg, char_count_same), + pair("'", "'", neg, even_count), + pair('"', '"', neg, even_count), + pair("`", "`", neg, even_count), +} diff --git a/home-manager/soispha/config/neovim/nixvim/plugins/luasnip/lua/snippets/tex/static.lua b/home-manager/soispha/config/neovim/nixvim/plugins/luasnip/lua/snippets/tex/static.lua new file mode 100644 index 00000000..b064ce7b --- /dev/null +++ b/home-manager/soispha/config/neovim/nixvim/plugins/luasnip/lua/snippets/tex/static.lua @@ -0,0 +1,94 @@ +local get_visual = function(args, parent) + if (#parent.snippet.env.SELECT_RAW > 0) then + return sn(nil, i(1, parent.snippet.env.SELECT_RAW)) + else + return sn(nil, i(1, '')) + end +end + +local line_begin = require("luasnip.extras.expand_conditions").line_begin + +-- Environment/syntax context detection +local tex = {} +tex.in_mathzone = function() return vim.fn['vimtex#syntax#in_mathzone']() == 1 end +tex.in_text = function() return not tex.in_mathzone() end +tex.in_tikz = function() + local is_inside = vim.fn['vimtex#env#is_inside']("tikzpicture") + return (is_inside[1] > 0 and is_inside[2] > 0) +end + +-- Return snippet tables +return + { +-- s({trig="LL", snippetType="autosnippet"}, +-- { +-- t("& "), +-- } +-- ), +-- s({trig="q"}, +-- { +-- t("\\quad "), +-- } +-- ), +-- s({trig="qq", snippetType="autosnippet"}, +-- { +-- t("\\qquad "), +-- } +-- ), +-- s({trig="np"}, +-- { +-- t("\\newpage"), +-- }, +-- {condition = line_begin} +-- ), +-- s({trig="which", snippetType="autosnippet"}, +-- { +-- t("\\text{ for which } "), +-- }, +-- {condition = tex.in_mathzone} +-- ), +-- s({trig="all", snippetType="autosnippet"}, +-- { +-- t("\\text{ for all } "), +-- }, +-- {condition = tex.in_mathzone} +-- ), +-- s({trig="and", snippetType="autosnippet"}, +-- { +-- t("\\quad \\text{and} \\quad"), +-- }, +-- {condition = tex.in_mathzone} +-- ), +-- s({trig="forall", snippetType="autosnippet"}, +-- { +-- t("\\text{ for all } "), +-- }, +-- {condition = tex.in_mathzone} +-- ), +-- s({trig = "toc", snippetType="autosnippet"}, +-- { +-- t("\\tableofcontents"), +-- }, +-- { condition = line_begin } +-- ), + s({trig="inff", snippetType="autosnippet"}, + { + t("\\infty"), + } + ), + s({trig="ii", snippetType="autosnippet"}, + { + t("\\item "), + }, + { condition = line_begin } + ), + s({trig = "--", snippetType="autosnippet"}, + {t('% --------------------------------------------- %')}, + {condition = line_begin} + ), +-- -- HLINE WITH EXTRA VERTICAL SPACE +-- s({trig = "hl"}, +-- {t('\\hline {\\rule{0pt}{2.5ex}} \\hspace{-7pt}')}, +-- {condition = line_begin} +-- ), + } diff --git a/home-manager/soispha/config/neovim/nixvim/plugins/luasnip/lua/snippets/tex/system.lua b/home-manager/soispha/config/neovim/nixvim/plugins/luasnip/lua/snippets/tex/system.lua new file mode 100644 index 00000000..d551a818 --- /dev/null +++ b/home-manager/soispha/config/neovim/nixvim/plugins/luasnip/lua/snippets/tex/system.lua @@ -0,0 +1,168 @@ +local get_visual = function(args, parent) + if (#parent.snippet.env.SELECT_RAW > 0) then + return sn(nil, i(1, parent.snippet.env.SELECT_RAW)) + else + return sn(nil, i(1, '')) + end +end + +local line_begin = require("luasnip.extras.expand_conditions").line_begin + +-- Math context detection +local tex = {} +tex.in_mathzone = function() return vim.fn['vimtex#syntax#in_mathzone']() == 1 end +tex.in_text = function() return not tex.in_mathzone() end + +-- Return snippet tables +return + { +-- -- ANNOTATE (custom command for annotating equation derivations) +-- s({trig = "ann", snippetType="autosnippet"}, +-- fmta( +-- [[ +-- \annotate{<>}{<>} +-- ]], +-- { +-- i(1), +-- d(2, get_visual), +-- } +-- ) +-- ), +-- -- REFERENCE +-- s({trig = " RR", snippetType="autosnippet", wordTrig=false}, +-- fmta( +-- [[ +-- ~\ref{<>} +-- ]], +-- { +-- d(1, get_visual), +-- } +-- ) +-- ), +-- -- USE A LATEX PACKAGE +-- s({trig = "pack", snippetType="autosnippet"}, +-- fmta( +-- [[ +-- \usepackage{<>} +-- ]], +-- { +-- d(1, get_visual), +-- } +-- ), +-- { condition = line_begin } +-- ), +-- -- INPUT a LaTeX file +-- s({trig = "inn", snippetType="autosnippet"}, +-- fmta( +-- [[ +-- \input{<><>} +-- ]], +-- { +-- i(1, "~/dotfiles/config/latex/templates/"), +-- i(2) +-- } +-- ), +-- { condition = line_begin } +-- ), +-- -- LABEL +-- s({trig = "lbl", snippetType="autosnippet"}, +-- fmta( +-- [[ +-- \label{<>} +-- ]], +-- { +-- d(1, get_visual), +-- } +-- ) +-- ), +-- -- HPHANTOM +-- s({trig = "hpp", snippetType="autosnippet"}, +-- fmta( +-- [[ +-- \hphantom{<>} +-- ]], +-- { +-- d(1, get_visual), +-- } +-- ) +-- ), +-- s({trig = "TODOO", snippetType="autosnippet"}, +-- fmta( +-- [[\TODO{<>}]], +-- { +-- d(1, get_visual), +-- } +-- ) +-- ), +-- s({trig="nc"}, +-- fmta( +-- [[\newcommand{<>}{<>}]], +-- { +-- i(1), +-- i(2) +-- } +-- ), +-- {condition = line_begin} +-- ), +-- s({trig="sii", snippetType="autosnippet"}, +-- fmta( +-- [[\si{<>}]], +-- { +-- i(1), +-- } +-- ) +-- ), +-- s({trig="SI", snippetType="autosnippet"}, +-- fmta( +-- [[\SI{<>}{<>}]], +-- { +-- i(1), +-- i(2) +-- } +-- ) +-- ), +-- s({trig="url"}, +-- fmta( +-- [[\url{<>}]], +-- { +-- d(1, get_visual), +-- } +-- ) +-- ), +-- -- VSPACE +-- s({trig="vs"}, +-- fmta( +-- [[\vspace{<>}]], +-- { +-- d(1, get_visual), +-- } +-- ) +-- ), +-- -- SECTION +-- s({trig="h1", snippetType="autosnippet"}, +-- fmta( +-- [[\section{<>}]], +-- { +-- d(1, get_visual), +-- } +-- ) +-- ), +-- -- SUBSECTION +-- s({trig="h2", snippetType="autosnippet"}, +-- fmta( +-- [[\subsection{<>}]], +-- { +-- d(1, get_visual), +-- } +-- ) +-- ), +-- -- SUBSUBSECTION +-- s({trig="h3", snippetType="autosnippet"}, +-- fmta( +-- [[\subsubsection{<>}]], +-- { +-- d(1, get_visual), +-- } +-- ) +-- ), + } diff --git a/home-manager/soispha/config/neovim/nixvim/plugins/luasnip/lua/snippets/tex/tmp.lua b/home-manager/soispha/config/neovim/nixvim/plugins/luasnip/lua/snippets/tex/tmp.lua new file mode 100644 index 00000000..c0acfb3a --- /dev/null +++ b/home-manager/soispha/config/neovim/nixvim/plugins/luasnip/lua/snippets/tex/tmp.lua @@ -0,0 +1,24 @@ +local get_visual = function(args, parent) + if (#parent.snippet.env.SELECT_RAW > 0) then + return sn(nil, i(1, parent.snippet.env.SELECT_RAW)) + else + return sn(nil, i(1, '')) + end +end + +local line_begin = require("luasnip.extras.expand_conditions").line_begin + +return { + -- s({trig="up"}, + -- fmta( + -- [[ + -- \usepackage<>{<>} + -- ]], + -- { + -- -- c(1, {t(""), sn(nil, {t("["), i(1, "options"), t("]")})}), + -- c(1, {sn(nil, {t("["), i(1, "options"), t("]")}), t("")}), + -- i(2, "name"), + -- } + -- ) + -- ), +} diff --git a/home-manager/soispha/config/neovim/nixvim/plugins/nvim-cmp/default.nix b/home-manager/soispha/config/neovim/nixvim/plugins/nvim-cmp/default.nix new file mode 100644 index 00000000..d464a305 --- /dev/null +++ b/home-manager/soispha/config/neovim/nixvim/plugins/nvim-cmp/default.nix @@ -0,0 +1,47 @@ +{...}: { + programs.nixvim.plugins.nvim-cmp = { + /* + TODO; integrate this: + ```lua + enabled = { + function() + -- disable completion in comments + local context = require 'cmp.config.context' + -- keep command mode completion enabled when cursor is in a comment + -- te + if vim.api.nvim_get_mode().mode == 'c' then + return true + else + return not context.in_treesitter_capture("comment") + and not context.in_syntax_group("Comment") + end + end + }, + ``` + */ + enable = true; + + mapping = { + # TODO add support for desc and which key here + "<C-d>" = { + action = "cmp.mapping.scroll_docs(-4)"; + #desc = "Scroll up by four lines"; + }; + "<C-f>" = { + action = "cmp.mapping.scroll_docs(4)"; + #desc = "Scroll down by four lines"; + }; + "<C-Space>" = { + action = "cmp.mapping.complete()"; + #desc = "Confirm snipped"; + }; + }; + + snippet.expand = "luasnip"; + + sources = [ + {name = "nvim_lsp";} + {name = "luasnip";} + ]; + }; +} diff --git a/home-manager/soispha/config/neovim/nixvim/plugins/nvim-lint/default.nix b/home-manager/soispha/config/neovim/nixvim/plugins/nvim-lint/default.nix new file mode 100644 index 00000000..c55efacc --- /dev/null +++ b/home-manager/soispha/config/neovim/nixvim/plugins/nvim-lint/default.nix @@ -0,0 +1,8 @@ +{lib, ...}: { + programs.nixvim = { + # TODO package nvim-lint though a module + extraConfigLuaPost = '' + ${lib.strings.fileContents ./lua/nvim-lint.lua} + ''; + }; +} diff --git a/home-manager/soispha/config/neovim/nixvim/plugins/nvim-lint/lua/nvim-lint.lua b/home-manager/soispha/config/neovim/nixvim/plugins/nvim-lint/lua/nvim-lint.lua new file mode 100644 index 00000000..812d4827 --- /dev/null +++ b/home-manager/soispha/config/neovim/nixvim/plugins/nvim-lint/lua/nvim-lint.lua @@ -0,0 +1,20 @@ +require('lint').linters_by_ft = { + -- text + markdown = {}, + -- tex = {'chktex'}, -- maybe add some text linters ? + + -- shell + sh = {'shellcheck',}, + bash = {'shellcheck'}, + zsh = {'shellcheck'}, + dash = {'shellcheck'}, + + yaml = {'yamllint'}, + nix = {'nix', 'statix'}, +} + +vim.api.nvim_create_autocmd({ "BufEnter", "BufWritePost" }, { + callback = function() + require("lint").try_lint() + end, +}) diff --git a/home-manager/soispha/config/neovim/nixvim/plugins/raw_plugins/default.nix b/home-manager/soispha/config/neovim/nixvim/plugins/raw_plugins/default.nix new file mode 100644 index 00000000..fdc30d7f --- /dev/null +++ b/home-manager/soispha/config/neovim/nixvim/plugins/raw_plugins/default.nix @@ -0,0 +1,15 @@ +{pkgs, ...}: { + programs.nixvim = { + # Not all plugins have own modules + # You can add missing plugins here + # `pkgs.vimExtraPlugins` is added by the overlay you added at the beginning + # For a list of available plugins, look here: [available plugins](https://github.com/jooooscha/nixpkgs-vim-extra-plugins/blob/main/plugins.md) + extraPlugins = with pkgs.vimExtraPlugins; [ + nightfox-nvim + nvim-lint + lf-nvim + + nvim-toggleterm-lua # required by lf-nvim + ]; + }; +} diff --git a/home-manager/soispha/config/neovim/nixvim/plugins/treesitter/default.nix b/home-manager/soispha/config/neovim/nixvim/plugins/treesitter/default.nix index 7a8a3a26..4aca6887 100644 --- a/home-manager/soispha/config/neovim/nixvim/plugins/treesitter/default.nix +++ b/home-manager/soispha/config/neovim/nixvim/plugins/treesitter/default.nix @@ -1,11 +1,18 @@ {...}: { programs.nixvim.plugins.treesitter = { enable = true; - # A list of parser names; or "all" - # ensure_installed = [ "c" "lua" "rust" ]; - ensure_installed = "all"; - # TODO make this work + ensureInstalled = "all"; + indent = true; + + # inject nixvim specific highlighting (eg in extraConfigLua). + nixvimInjections = true; + + # TODO It would we wonderfull, if we could use treesitter in latex + #disabledLanguages = ["latex"]; + + /* + # TODO this is not supported by the nixVim modlue, nixNeovim supports this though .. highlight = { # `false` will disable the whole extension enable = true; @@ -15,20 +22,18 @@ # Set this to `true` if you depend on 'syntax' being enabled (like for indentation). # Using this option may slow down your editor; and you may see some duplicate highlights. # Instead of true it can also be a list of languages - additional_vim_regex_highlighting = [""]; + additionalVimRegexHighlighting = [""]; }; + */ - indent = { - enable = true; - }; - incremental_selection = { + incrementalSelection = { enable = true; keymaps = { # TODO include these - init_selection = "gnn"; # set to `false` to disable one of the mappings - node_incremental = "grn"; - scope_incremental = "grc"; - node_decremental = "grm"; + initSelection = "gnn"; # set to `false` to disable one of the mappings + nodeIncremental = "grn"; + scopeIncremental = "grc"; + nodeDecremental = "grm"; }; }; }; diff --git a/home-manager/soispha/config/neovim/nixvim/plugins/vim-tex/default.nix b/home-manager/soispha/config/neovim/nixvim/plugins/vim-tex/default.nix new file mode 100644 index 00000000..39825fd3 --- /dev/null +++ b/home-manager/soispha/config/neovim/nixvim/plugins/vim-tex/default.nix @@ -0,0 +1,55 @@ +{...}: { + programs.nixvim = { + options.conceallevel = 0; + + # globals.tex_conceal = "abdmg"; + # globals.tex_flavor = "latex"; + + plugins.vimtex = { + enable = true; + extraConfig = { + view_method = "zathura"; + quickfix_mode = -1; + view_enabled = -1; + tex_conceal = "abdmg"; + tex_flavor = "latex"; + + mappings_disable = { + n = ["tsf" "tsc" "tse" "ts$" "tsd" "tsD"]; + x = ["tsd" "tsD" "tsf"]; + }; + + toc_config = { + name = "TOC"; + layers = ["content" "todo" "include"]; + resize = false; + split_width = 49; + todo_sorted = -1; + show_help = false; + show_numbers = false; + mode = true; + layer_keys = { + content = "C"; + label = "L"; + todo = "j"; + include = "I"; + }; + }; + + compiler_latexmk = { + build_dir = "build"; + callback = false; + continuous = true; + executable = "latexmk"; + hooks = []; + options = [ + "-verbose" + "-file-line-error" + "-synctex=0" + "-interaction=nonstopmode" + ]; + }; + }; + }; + }; +} |