Compare commits
4 commits
75e3422941
...
423e9e13b2
| Author | SHA1 | Date | |
|---|---|---|---|
| 423e9e13b2 | |||
| f4afbbee14 | |||
| b795d6ca9a | |||
| c9fa3dbe4c |
23 changed files with 1486 additions and 118 deletions
561
flake.lock
generated
561
flake.lock
generated
|
|
@ -1,5 +1,38 @@
|
||||||
{
|
{
|
||||||
"nodes": {
|
"nodes": {
|
||||||
|
"aquamarine": {
|
||||||
|
"inputs": {
|
||||||
|
"hyprutils": [
|
||||||
|
"hyprland",
|
||||||
|
"hyprutils"
|
||||||
|
],
|
||||||
|
"hyprwayland-scanner": [
|
||||||
|
"hyprland",
|
||||||
|
"hyprwayland-scanner"
|
||||||
|
],
|
||||||
|
"nixpkgs": [
|
||||||
|
"hyprland",
|
||||||
|
"nixpkgs"
|
||||||
|
],
|
||||||
|
"systems": [
|
||||||
|
"hyprland",
|
||||||
|
"systems"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1771610171,
|
||||||
|
"narHash": "sha256-+DeInuhbm6a6PpHDNUS7pozDouq2+8xSDefoNaZLW0E=",
|
||||||
|
"owner": "hyprwm",
|
||||||
|
"repo": "aquamarine",
|
||||||
|
"rev": "7f9eb087703ec4acc6b288d02fa9ea3db803cd3d",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "hyprwm",
|
||||||
|
"repo": "aquamarine",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
"awww": {
|
"awww": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"flake-compat": "flake-compat",
|
"flake-compat": "flake-compat",
|
||||||
|
|
@ -32,14 +65,13 @@
|
||||||
"nt": [
|
"nt": [
|
||||||
"nt"
|
"nt"
|
||||||
],
|
],
|
||||||
"sops-nix": "sops-nix",
|
|
||||||
"systems": [
|
"systems": [
|
||||||
"systems"
|
"systems"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1772148969,
|
"lastModified": 1772102584,
|
||||||
"narHash": "sha256-1Rib48xxOv5unR6KyBRs1wRoyC8MGguBno75fFGGbPs=",
|
"narHash": "sha256-tGcuWO36uW4+BPs8vP/PrMJM/e84Zcn69r1EhzTr/m4=",
|
||||||
"path": "/home/me/cry/mk/cerulean",
|
"path": "/home/me/cry/mk/cerulean",
|
||||||
"type": "path"
|
"type": "path"
|
||||||
},
|
},
|
||||||
|
|
@ -130,6 +162,22 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"flake-compat_3": {
|
"flake-compat_3": {
|
||||||
|
"flake": false,
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1767039857,
|
||||||
|
"narHash": "sha256-vNpUSpF5Nuw8xvDLj2KCwwksIbjua2LZCqhV1LNRDns=",
|
||||||
|
"owner": "NixOS",
|
||||||
|
"repo": "flake-compat",
|
||||||
|
"rev": "5edf11c44bc78a0d334f6334cdaf7d60d732daab",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "NixOS",
|
||||||
|
"repo": "flake-compat",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"flake-compat_4": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1733328505,
|
"lastModified": 1733328505,
|
||||||
"narHash": "sha256-NeCCThCEP3eCl2l/+27kNNK7QrwZB1IJCrXfrbv5oqU=",
|
"narHash": "sha256-NeCCThCEP3eCl2l/+27kNNK7QrwZB1IJCrXfrbv5oqU=",
|
||||||
|
|
@ -201,6 +249,28 @@
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"gitignore": {
|
||||||
|
"inputs": {
|
||||||
|
"nixpkgs": [
|
||||||
|
"hyprland",
|
||||||
|
"pre-commit-hooks",
|
||||||
|
"nixpkgs"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1709087332,
|
||||||
|
"narHash": "sha256-HG2cCnktfHsKV0s4XW83gU3F57gaTljL9KNSuG6bnQs=",
|
||||||
|
"owner": "hercules-ci",
|
||||||
|
"repo": "gitignore.nix",
|
||||||
|
"rev": "637db329424fd7e46cf4185293b9cc8c88c95394",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "hercules-ci",
|
||||||
|
"repo": "gitignore.nix",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
"grub2-themes": {
|
"grub2-themes": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"nixpkgs": [
|
"nixpkgs": [
|
||||||
|
|
@ -242,6 +312,325 @@
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"hyprcursor": {
|
||||||
|
"inputs": {
|
||||||
|
"hyprlang": [
|
||||||
|
"hyprland",
|
||||||
|
"hyprlang"
|
||||||
|
],
|
||||||
|
"nixpkgs": [
|
||||||
|
"hyprland",
|
||||||
|
"nixpkgs"
|
||||||
|
],
|
||||||
|
"systems": [
|
||||||
|
"hyprland",
|
||||||
|
"systems"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1753964049,
|
||||||
|
"narHash": "sha256-lIqabfBY7z/OANxHoPeIrDJrFyYy9jAM4GQLzZ2feCM=",
|
||||||
|
"owner": "hyprwm",
|
||||||
|
"repo": "hyprcursor",
|
||||||
|
"rev": "44e91d467bdad8dcf8bbd2ac7cf49972540980a5",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "hyprwm",
|
||||||
|
"repo": "hyprcursor",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"hyprgraphics": {
|
||||||
|
"inputs": {
|
||||||
|
"hyprutils": [
|
||||||
|
"hyprland",
|
||||||
|
"hyprutils"
|
||||||
|
],
|
||||||
|
"nixpkgs": [
|
||||||
|
"hyprland",
|
||||||
|
"nixpkgs"
|
||||||
|
],
|
||||||
|
"systems": [
|
||||||
|
"hyprland",
|
||||||
|
"systems"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1770511807,
|
||||||
|
"narHash": "sha256-suKmSbSk34uPOJDTg/GbPrKEJutzK08vj0VoTvAFBCA=",
|
||||||
|
"owner": "hyprwm",
|
||||||
|
"repo": "hyprgraphics",
|
||||||
|
"rev": "7c75487edd43a71b61adb01cae8326d277aab683",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "hyprwm",
|
||||||
|
"repo": "hyprgraphics",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"hyprland": {
|
||||||
|
"inputs": {
|
||||||
|
"aquamarine": "aquamarine",
|
||||||
|
"hyprcursor": "hyprcursor",
|
||||||
|
"hyprgraphics": "hyprgraphics",
|
||||||
|
"hyprland-guiutils": "hyprland-guiutils",
|
||||||
|
"hyprland-protocols": "hyprland-protocols",
|
||||||
|
"hyprlang": "hyprlang",
|
||||||
|
"hyprutils": "hyprutils",
|
||||||
|
"hyprwayland-scanner": "hyprwayland-scanner",
|
||||||
|
"hyprwire": "hyprwire",
|
||||||
|
"nixpkgs": "nixpkgs",
|
||||||
|
"pre-commit-hooks": "pre-commit-hooks",
|
||||||
|
"systems": "systems_2",
|
||||||
|
"xdph": "xdph"
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1772129629,
|
||||||
|
"narHash": "sha256-vUCMHuxPNd7PKy1mQsjRUDIHvI4eMbbJxl/iNwzWmGM=",
|
||||||
|
"owner": "hyprwm",
|
||||||
|
"repo": "Hyprland",
|
||||||
|
"rev": "70cdd819e4bee3c4dcea6961d32e61e6afe4eeb0",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "hyprwm",
|
||||||
|
"repo": "Hyprland",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"hyprland-guiutils": {
|
||||||
|
"inputs": {
|
||||||
|
"aquamarine": [
|
||||||
|
"hyprland",
|
||||||
|
"aquamarine"
|
||||||
|
],
|
||||||
|
"hyprgraphics": [
|
||||||
|
"hyprland",
|
||||||
|
"hyprgraphics"
|
||||||
|
],
|
||||||
|
"hyprlang": [
|
||||||
|
"hyprland",
|
||||||
|
"hyprlang"
|
||||||
|
],
|
||||||
|
"hyprtoolkit": "hyprtoolkit",
|
||||||
|
"hyprutils": [
|
||||||
|
"hyprland",
|
||||||
|
"hyprutils"
|
||||||
|
],
|
||||||
|
"hyprwayland-scanner": [
|
||||||
|
"hyprland",
|
||||||
|
"hyprwayland-scanner"
|
||||||
|
],
|
||||||
|
"nixpkgs": [
|
||||||
|
"hyprland",
|
||||||
|
"nixpkgs"
|
||||||
|
],
|
||||||
|
"systems": [
|
||||||
|
"hyprland",
|
||||||
|
"systems"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1767023960,
|
||||||
|
"narHash": "sha256-R2HgtVS1G3KSIKAQ77aOZ+Q0HituOmPgXW9nBNkpp3Q=",
|
||||||
|
"owner": "hyprwm",
|
||||||
|
"repo": "hyprland-guiutils",
|
||||||
|
"rev": "c2e906261142f5dd1ee0bfc44abba23e2754c660",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "hyprwm",
|
||||||
|
"repo": "hyprland-guiutils",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"hyprland-protocols": {
|
||||||
|
"inputs": {
|
||||||
|
"nixpkgs": [
|
||||||
|
"hyprland",
|
||||||
|
"nixpkgs"
|
||||||
|
],
|
||||||
|
"systems": [
|
||||||
|
"hyprland",
|
||||||
|
"systems"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1765214753,
|
||||||
|
"narHash": "sha256-P9zdGXOzToJJgu5sVjv7oeOGPIIwrd9hAUAP3PsmBBs=",
|
||||||
|
"owner": "hyprwm",
|
||||||
|
"repo": "hyprland-protocols",
|
||||||
|
"rev": "3f3860b869014c00e8b9e0528c7b4ddc335c21ab",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "hyprwm",
|
||||||
|
"repo": "hyprland-protocols",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"hyprlang": {
|
||||||
|
"inputs": {
|
||||||
|
"hyprutils": [
|
||||||
|
"hyprland",
|
||||||
|
"hyprutils"
|
||||||
|
],
|
||||||
|
"nixpkgs": [
|
||||||
|
"hyprland",
|
||||||
|
"nixpkgs"
|
||||||
|
],
|
||||||
|
"systems": [
|
||||||
|
"hyprland",
|
||||||
|
"systems"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1771866172,
|
||||||
|
"narHash": "sha256-fYFoXhQLrm1rD8vSFKQBOEX4OGCuJdLt1amKfHd5GAw=",
|
||||||
|
"owner": "hyprwm",
|
||||||
|
"repo": "hyprlang",
|
||||||
|
"rev": "0b219224910e7642eb0ed49f0db5ec3d008e3e41",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "hyprwm",
|
||||||
|
"repo": "hyprlang",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"hyprtoolkit": {
|
||||||
|
"inputs": {
|
||||||
|
"aquamarine": [
|
||||||
|
"hyprland",
|
||||||
|
"hyprland-guiutils",
|
||||||
|
"aquamarine"
|
||||||
|
],
|
||||||
|
"hyprgraphics": [
|
||||||
|
"hyprland",
|
||||||
|
"hyprland-guiutils",
|
||||||
|
"hyprgraphics"
|
||||||
|
],
|
||||||
|
"hyprlang": [
|
||||||
|
"hyprland",
|
||||||
|
"hyprland-guiutils",
|
||||||
|
"hyprlang"
|
||||||
|
],
|
||||||
|
"hyprutils": [
|
||||||
|
"hyprland",
|
||||||
|
"hyprland-guiutils",
|
||||||
|
"hyprutils"
|
||||||
|
],
|
||||||
|
"hyprwayland-scanner": [
|
||||||
|
"hyprland",
|
||||||
|
"hyprland-guiutils",
|
||||||
|
"hyprwayland-scanner"
|
||||||
|
],
|
||||||
|
"nixpkgs": [
|
||||||
|
"hyprland",
|
||||||
|
"hyprland-guiutils",
|
||||||
|
"nixpkgs"
|
||||||
|
],
|
||||||
|
"systems": [
|
||||||
|
"hyprland",
|
||||||
|
"hyprland-guiutils",
|
||||||
|
"systems"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1764592794,
|
||||||
|
"narHash": "sha256-7CcO+wbTJ1L1NBQHierHzheQGPWwkIQug/w+fhTAVuU=",
|
||||||
|
"owner": "hyprwm",
|
||||||
|
"repo": "hyprtoolkit",
|
||||||
|
"rev": "5cfe0743f0e608e1462972303778d8a0859ee63e",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "hyprwm",
|
||||||
|
"repo": "hyprtoolkit",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"hyprutils": {
|
||||||
|
"inputs": {
|
||||||
|
"nixpkgs": [
|
||||||
|
"hyprland",
|
||||||
|
"nixpkgs"
|
||||||
|
],
|
||||||
|
"systems": [
|
||||||
|
"hyprland",
|
||||||
|
"systems"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1771271487,
|
||||||
|
"narHash": "sha256-41gEiUS0Pyw3L/ge1l8MXn61cK14VAhgWB/JV8s/oNI=",
|
||||||
|
"owner": "hyprwm",
|
||||||
|
"repo": "hyprutils",
|
||||||
|
"rev": "340a792e3b3d482c4ae5f66d27a9096bdee6d76d",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "hyprwm",
|
||||||
|
"repo": "hyprutils",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"hyprwayland-scanner": {
|
||||||
|
"inputs": {
|
||||||
|
"nixpkgs": [
|
||||||
|
"hyprland",
|
||||||
|
"nixpkgs"
|
||||||
|
],
|
||||||
|
"systems": [
|
||||||
|
"hyprland",
|
||||||
|
"systems"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1770501770,
|
||||||
|
"narHash": "sha256-NWRM6+YxTRv+bT9yvlhhJ2iLae1B1pNH3mAL5wi2rlQ=",
|
||||||
|
"owner": "hyprwm",
|
||||||
|
"repo": "hyprwayland-scanner",
|
||||||
|
"rev": "0bd8b6cde9ec27d48aad9e5b4deefb3746909d40",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "hyprwm",
|
||||||
|
"repo": "hyprwayland-scanner",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"hyprwire": {
|
||||||
|
"inputs": {
|
||||||
|
"hyprutils": [
|
||||||
|
"hyprland",
|
||||||
|
"hyprutils"
|
||||||
|
],
|
||||||
|
"nixpkgs": [
|
||||||
|
"hyprland",
|
||||||
|
"nixpkgs"
|
||||||
|
],
|
||||||
|
"systems": [
|
||||||
|
"hyprland",
|
||||||
|
"systems"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1771606233,
|
||||||
|
"narHash": "sha256-F3PLUqQ/TwgR70U+UeOqJnihJZ2EuunzojYC4g5xHr0=",
|
||||||
|
"owner": "hyprwm",
|
||||||
|
"repo": "hyprwire",
|
||||||
|
"rev": "06c7f1f8c4194786c8400653c4efc49dc14c0f3a",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "hyprwm",
|
||||||
|
"repo": "hyprwire",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
"mango": {
|
"mango": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"flake-parts": "flake-parts",
|
"flake-parts": "flake-parts",
|
||||||
|
|
@ -365,7 +754,7 @@
|
||||||
},
|
},
|
||||||
"nixcord": {
|
"nixcord": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"flake-compat": "flake-compat_3",
|
"flake-compat": "flake-compat_4",
|
||||||
"flake-parts": "flake-parts_2",
|
"flake-parts": "flake-parts_2",
|
||||||
"nixpkgs": [
|
"nixpkgs": [
|
||||||
"nixpkgs"
|
"nixpkgs"
|
||||||
|
|
@ -387,16 +776,16 @@
|
||||||
},
|
},
|
||||||
"nixpkgs": {
|
"nixpkgs": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1771208521,
|
"lastModified": 1771848320,
|
||||||
"narHash": "sha256-X01Q3DgSpjeBpapoGA4rzKOn25qdKxbPnxHeMLNoHTU=",
|
"narHash": "sha256-0MAd+0mun3K/Ns8JATeHT1sX28faLII5hVLq0L3BdZU=",
|
||||||
"owner": "nixos",
|
"owner": "NixOS",
|
||||||
"repo": "nixpkgs",
|
"repo": "nixpkgs",
|
||||||
"rev": "fa56d7d6de78f5a7f997b0ea2bc6efd5868ad9e8",
|
"rev": "2fc6539b481e1d2569f25f8799236694180c0993",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
"owner": "nixos",
|
"owner": "NixOS",
|
||||||
"ref": "nixos-25.11",
|
"ref": "nixos-unstable",
|
||||||
"repo": "nixpkgs",
|
"repo": "nixpkgs",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
|
|
@ -431,6 +820,22 @@
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"nixpkgs-master": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1772170669,
|
||||||
|
"narHash": "sha256-ClBvX0YzaJOaGZInNi0e3mFknzr/rAdwKbWrjO1j1sg=",
|
||||||
|
"owner": "NixOS",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"rev": "ee234284495a7ff3ecffb062595102fdc4fbe617",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "NixOS",
|
||||||
|
"ref": "master",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
"nixpkgs-unstable": {
|
"nixpkgs-unstable": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1771008912,
|
"lastModified": 1771008912,
|
||||||
|
|
@ -448,6 +853,22 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"nixpkgs_2": {
|
"nixpkgs_2": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1771903837,
|
||||||
|
"narHash": "sha256-sdaqdnsQCv3iifzxwB22tUwN/fSHoN7j2myFW5EIkGk=",
|
||||||
|
"owner": "nixos",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"rev": "e764fc9a405871f1f6ca3d1394fb422e0a0c3951",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "nixos",
|
||||||
|
"ref": "nixos-25.11",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"nixpkgs_3": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1767313136,
|
"lastModified": 1767313136,
|
||||||
"narHash": "sha256-16KkgfdYqjaeRGBaYsNrhPRRENs0qzkQVUooNHtoy2w=",
|
"narHash": "sha256-16KkgfdYqjaeRGBaYsNrhPRRENs0qzkQVUooNHtoy2w=",
|
||||||
|
|
@ -466,8 +887,8 @@
|
||||||
"nt": {
|
"nt": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"nix-unit": "nix-unit",
|
"nix-unit": "nix-unit",
|
||||||
"nixpkgs": "nixpkgs_2",
|
"nixpkgs": "nixpkgs_3",
|
||||||
"systems": "systems_2"
|
"systems": "systems_3"
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1770975056,
|
"lastModified": 1770975056,
|
||||||
|
|
@ -483,6 +904,29 @@
|
||||||
"url": "https://tearforge.net/cry/nt"
|
"url": "https://tearforge.net/cry/nt"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"pre-commit-hooks": {
|
||||||
|
"inputs": {
|
||||||
|
"flake-compat": "flake-compat_3",
|
||||||
|
"gitignore": "gitignore",
|
||||||
|
"nixpkgs": [
|
||||||
|
"hyprland",
|
||||||
|
"nixpkgs"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1771858127,
|
||||||
|
"narHash": "sha256-Gtre9YoYl3n25tJH2AoSdjuwcqij5CPxL3U3xysYD08=",
|
||||||
|
"owner": "cachix",
|
||||||
|
"repo": "git-hooks.nix",
|
||||||
|
"rev": "49bbbfc218bf3856dfa631cead3b052d78248b83",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "cachix",
|
||||||
|
"repo": "git-hooks.nix",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
"root": {
|
"root": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"awww": "awww",
|
"awww": "awww",
|
||||||
|
|
@ -490,15 +934,17 @@
|
||||||
"dobutterfliescry-net": "dobutterfliescry-net",
|
"dobutterfliescry-net": "dobutterfliescry-net",
|
||||||
"grub2-themes": "grub2-themes",
|
"grub2-themes": "grub2-themes",
|
||||||
"home-manager": "home-manager",
|
"home-manager": "home-manager",
|
||||||
|
"hyprland": "hyprland",
|
||||||
"mango": "mango",
|
"mango": "mango",
|
||||||
"nix-flatpak": "nix-flatpak",
|
"nix-flatpak": "nix-flatpak",
|
||||||
"nixcats": "nixcats",
|
"nixcats": "nixcats",
|
||||||
"nixcord": "nixcord",
|
"nixcord": "nixcord",
|
||||||
"nixpkgs": "nixpkgs",
|
"nixpkgs": "nixpkgs_2",
|
||||||
|
"nixpkgs-master": "nixpkgs-master",
|
||||||
"nixpkgs-unstable": "nixpkgs-unstable",
|
"nixpkgs-unstable": "nixpkgs-unstable",
|
||||||
"nt": "nt",
|
"nt": "nt",
|
||||||
"sddm-silent": "sddm-silent",
|
"sddm-silent": "sddm-silent",
|
||||||
"systems": "systems_3"
|
"systems": "systems_4"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"rust-overlay": {
|
"rust-overlay": {
|
||||||
|
|
@ -563,27 +1009,6 @@
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"sops-nix": {
|
|
||||||
"inputs": {
|
|
||||||
"nixpkgs": [
|
|
||||||
"cerulean",
|
|
||||||
"nixpkgs"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1772048434,
|
|
||||||
"narHash": "sha256-/wA0OaH6kZ/pFA+nXR/tvg5oupOmEDmMS5us79JT60o=",
|
|
||||||
"owner": "Mic92",
|
|
||||||
"repo": "sops-nix",
|
|
||||||
"rev": "334daa7c273dd8bf7a0cd370e4e16022b64e55e9",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "Mic92",
|
|
||||||
"repo": "sops-nix",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"spectrum": {
|
"spectrum": {
|
||||||
"flake": false,
|
"flake": false,
|
||||||
"locked": {
|
"locked": {
|
||||||
|
|
@ -617,16 +1042,16 @@
|
||||||
},
|
},
|
||||||
"systems_2": {
|
"systems_2": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1681028828,
|
"lastModified": 1689347949,
|
||||||
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
|
"narHash": "sha256-12tWmuL2zgBgZkdoB6qXZsgJEH9LR3oUgpaQq2RbI80=",
|
||||||
"owner": "nix-systems",
|
"owner": "nix-systems",
|
||||||
"repo": "default",
|
"repo": "default-linux",
|
||||||
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
|
"rev": "31732fcf5e8fea42e59c2488ad31a0e651500f68",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
"owner": "nix-systems",
|
"owner": "nix-systems",
|
||||||
"repo": "default",
|
"repo": "default-linux",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
@ -645,6 +1070,21 @@
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"systems_4": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1689347949,
|
||||||
|
"narHash": "sha256-12tWmuL2zgBgZkdoB6qXZsgJEH9LR3oUgpaQq2RbI80=",
|
||||||
|
"owner": "nix-systems",
|
||||||
|
"repo": "default-linux",
|
||||||
|
"rev": "31732fcf5e8fea42e59c2488ad31a0e651500f68",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "nix-systems",
|
||||||
|
"repo": "default-linux",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
"treefmt-nix": {
|
"treefmt-nix": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"nixpkgs": [
|
"nixpkgs": [
|
||||||
|
|
@ -684,6 +1124,47 @@
|
||||||
"repo": "flake-utils",
|
"repo": "flake-utils",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
"xdph": {
|
||||||
|
"inputs": {
|
||||||
|
"hyprland-protocols": [
|
||||||
|
"hyprland",
|
||||||
|
"hyprland-protocols"
|
||||||
|
],
|
||||||
|
"hyprlang": [
|
||||||
|
"hyprland",
|
||||||
|
"hyprlang"
|
||||||
|
],
|
||||||
|
"hyprutils": [
|
||||||
|
"hyprland",
|
||||||
|
"hyprutils"
|
||||||
|
],
|
||||||
|
"hyprwayland-scanner": [
|
||||||
|
"hyprland",
|
||||||
|
"hyprwayland-scanner"
|
||||||
|
],
|
||||||
|
"nixpkgs": [
|
||||||
|
"hyprland",
|
||||||
|
"nixpkgs"
|
||||||
|
],
|
||||||
|
"systems": [
|
||||||
|
"hyprland",
|
||||||
|
"systems"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1761431178,
|
||||||
|
"narHash": "sha256-xzjC1CV3+wpUQKNF+GnadnkeGUCJX+vgaWIZsnz9tzI=",
|
||||||
|
"owner": "hyprwm",
|
||||||
|
"repo": "xdg-desktop-portal-hyprland",
|
||||||
|
"rev": "4b8801228ff958d028f588f0c2b911dbf32297f9",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "hyprwm",
|
||||||
|
"repo": "xdg-desktop-portal-hyprland",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"root": "root",
|
"root": "root",
|
||||||
|
|
|
||||||
11
flake.nix
11
flake.nix
|
|
@ -2,10 +2,11 @@
|
||||||
description = "im gonna cry again ;-;";
|
description = "im gonna cry again ;-;";
|
||||||
|
|
||||||
inputs = {
|
inputs = {
|
||||||
systems.url = "github:nix-systems/default";
|
systems.url = "github:nix-systems/default-linux";
|
||||||
|
|
||||||
nixpkgs.url = "github:nixos/nixpkgs/nixos-25.11";
|
nixpkgs.url = "github:nixos/nixpkgs/nixos-25.11";
|
||||||
nixpkgs-unstable.url = "github:NixOS/nixpkgs/nixos-unstable";
|
nixpkgs-unstable.url = "github:NixOS/nixpkgs/nixos-unstable";
|
||||||
|
nixpkgs-master.url = "github:NixOS/nixpkgs/master";
|
||||||
|
|
||||||
home-manager = {
|
home-manager = {
|
||||||
url = "github:nix-community/home-manager/release-25.11";
|
url = "github:nix-community/home-manager/release-25.11";
|
||||||
|
|
@ -33,6 +34,14 @@
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
hyprland = {
|
||||||
|
url = "github:hyprwm/Hyprland";
|
||||||
|
inputs = {
|
||||||
|
# nixpkgs.follows = "nixpkgs";
|
||||||
|
# systems.follows = "systems";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
awww = {
|
awww = {
|
||||||
url = "git+https://codeberg.org/LGFae/awww";
|
url = "git+https://codeberg.org/LGFae/awww";
|
||||||
inputs.nixpkgs.follows = "nixpkgs";
|
inputs.nixpkgs.follows = "nixpkgs";
|
||||||
|
|
|
||||||
|
|
@ -54,20 +54,6 @@
|
||||||
|
|
||||||
mango.enable = true;
|
mango.enable = true;
|
||||||
|
|
||||||
neovim = {
|
|
||||||
enable = true;
|
|
||||||
defaultEditor = true;
|
|
||||||
viAlias = true;
|
|
||||||
vimAlias = true;
|
|
||||||
configure = {
|
|
||||||
customRC = ''
|
|
||||||
set number
|
|
||||||
set tabstop=4
|
|
||||||
set shiftwidth=4
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
# Thunar also uses: `services.tumbler` & `services.gvfs`
|
# Thunar also uses: `services.tumbler` & `services.gvfs`
|
||||||
thunar = {
|
thunar = {
|
||||||
enable = true;
|
enable = true;
|
||||||
|
|
|
||||||
|
|
@ -12,6 +12,7 @@
|
||||||
../modules/term/foot.nix
|
../modules/term/foot.nix
|
||||||
|
|
||||||
../modules/editor/helix.nix
|
../modules/editor/helix.nix
|
||||||
|
../modules/editor/neovim
|
||||||
|
|
||||||
../modules/apps/firefox.nix
|
../modules/apps/firefox.nix
|
||||||
../modules/apps/thunderbird.nix
|
../modules/apps/thunderbird.nix
|
||||||
|
|
@ -35,8 +36,10 @@
|
||||||
homeDirectory = "/home/me";
|
homeDirectory = "/home/me";
|
||||||
|
|
||||||
shellAliases = {
|
shellAliases = {
|
||||||
rebuild = "sudo nixos-rebuild switch --flake /home/me/flake --show-trace";
|
# rebuild = "sudo nixos-rebuild switch --flake /home/me/flake --show-trace";
|
||||||
trybuild = "sudo nixos-rebuild test --flake /home/me/flake --show-trace";
|
# trybuild = "sudo nixos-rebuild test --flake /home/me/flake --show-trace";
|
||||||
|
rebuild = "nh os switch ~/flake --show-trace";
|
||||||
|
trybuild = "nh os test ~/flake --show-trace";
|
||||||
brip = "batgrep"; # bat + ripgrep
|
brip = "batgrep"; # bat + ripgrep
|
||||||
man = "batman"; # bat + man
|
man = "batman"; # bat + man
|
||||||
};
|
};
|
||||||
|
|
@ -165,7 +168,7 @@
|
||||||
gnome-keyring.enable = true;
|
gnome-keyring.enable = true;
|
||||||
};
|
};
|
||||||
# the ssh-agent won't set this for itself...
|
# the ssh-agent won't set this for itself...
|
||||||
systemd.user.sessionVariables.SSH_AUTH_SOCK = "$XDG_RUNTIME_DIR/ssh-agent";
|
# systemd.user.sessionVariables.SSH_AUTH_SOCK = "$XDG_RUNTIME_DIR/ssh-agent";
|
||||||
# Nicely reload system units when changing configs
|
# Nicely reload system units when changing configs
|
||||||
systemd.user.startServices = "sd-switch";
|
systemd.user.startServices = "sd-switch";
|
||||||
|
|
||||||
|
|
|
||||||
247
homes/modules/editor/neovim/default.nix
Normal file
247
homes/modules/editor/neovim/default.nix
Normal file
|
|
@ -0,0 +1,247 @@
|
||||||
|
# TODO: look into changing to this:
|
||||||
|
# https://github.com/BirdeeHub/nix-wrapper-modules
|
||||||
|
{
|
||||||
|
inputs,
|
||||||
|
pkgs,
|
||||||
|
mpkgs,
|
||||||
|
...
|
||||||
|
}: let
|
||||||
|
inherit
|
||||||
|
(inputs.nixcats)
|
||||||
|
utils
|
||||||
|
;
|
||||||
|
in {
|
||||||
|
imports = [
|
||||||
|
inputs.nixcats.homeModule
|
||||||
|
];
|
||||||
|
|
||||||
|
config = {
|
||||||
|
# this value, nixCats is the defaultPackageName you pass to mkNixosModules
|
||||||
|
# it will be the namespace for your options.
|
||||||
|
nixCats = {
|
||||||
|
enable = true;
|
||||||
|
nixpkgs_version = inputs.nixpkgs-unstable;
|
||||||
|
# this will add the overlays from ./overlays and also,
|
||||||
|
# add any plugins in inputs named "plugins-pluginName" to pkgs.neovimPlugins
|
||||||
|
# It will not apply to overall system, just nixCats.
|
||||||
|
addOverlays =
|
||||||
|
# (import ./overlays inputs) ++
|
||||||
|
[
|
||||||
|
(utils.standardPluginOverlay inputs)
|
||||||
|
];
|
||||||
|
# see the packageDefinitions below.
|
||||||
|
# This says which of those to install.
|
||||||
|
packageNames = ["cryvim"];
|
||||||
|
|
||||||
|
luaPath = "${./.}";
|
||||||
|
|
||||||
|
# the .replace vs .merge options are for modules based on existing configurations,
|
||||||
|
# they refer to how multiple categoryDefinitions get merged together by the module.
|
||||||
|
# for useage of this section, refer to :h nixCats.flake.outputs.categories
|
||||||
|
categoryDefinitions.replace = {
|
||||||
|
pkgs,
|
||||||
|
settings,
|
||||||
|
categories,
|
||||||
|
extra,
|
||||||
|
name,
|
||||||
|
mkNvimPlugin,
|
||||||
|
...
|
||||||
|
} @ packageDef: {
|
||||||
|
lspsAndRuntimeDeps = with pkgs; {
|
||||||
|
general = [
|
||||||
|
ripgrep
|
||||||
|
fd
|
||||||
|
];
|
||||||
|
treesitter = [
|
||||||
|
tree-sitter
|
||||||
|
];
|
||||||
|
lang = {
|
||||||
|
lua = [
|
||||||
|
lua-language-server
|
||||||
|
stylua
|
||||||
|
];
|
||||||
|
nix = [
|
||||||
|
nil
|
||||||
|
nix-doc # TODO: i forgot what this is for
|
||||||
|
nixfmt
|
||||||
|
];
|
||||||
|
rust = [
|
||||||
|
cargo
|
||||||
|
mpkgs.rust-analyzer
|
||||||
|
rustfmt
|
||||||
|
];
|
||||||
|
zig = [
|
||||||
|
pkgs.zls # FIX: using spkgs version as zls is broken rn ;-;
|
||||||
|
];
|
||||||
|
elixir = [
|
||||||
|
elixir-ls
|
||||||
|
];
|
||||||
|
gleam = [
|
||||||
|
gleam
|
||||||
|
];
|
||||||
|
haskell = [
|
||||||
|
haskell-language-server
|
||||||
|
ormolu
|
||||||
|
];
|
||||||
|
java = [
|
||||||
|
jdt-language-server
|
||||||
|
javaPackages.compiler.openjdk17
|
||||||
|
javaPackages.compiler.openjdk21
|
||||||
|
];
|
||||||
|
protobuf = [
|
||||||
|
protols
|
||||||
|
buf
|
||||||
|
];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
startupPlugins = with pkgs.vimPlugins; {
|
||||||
|
general = [
|
||||||
|
lze
|
||||||
|
plenary-nvim
|
||||||
|
nvim-notify
|
||||||
|
nvim-web-devicons
|
||||||
|
base16-nvim
|
||||||
|
mini-nvim
|
||||||
|
];
|
||||||
|
treesitter = [
|
||||||
|
nvim-treesitter-textobjects
|
||||||
|
nvim-treesitter.withAllGrammars
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
|
optionalPlugins = with pkgs.vimPlugins; {
|
||||||
|
general = [
|
||||||
|
];
|
||||||
|
ui = [
|
||||||
|
dressing-nvim
|
||||||
|
];
|
||||||
|
qol = [
|
||||||
|
undotree
|
||||||
|
mini-hipatterns
|
||||||
|
];
|
||||||
|
telescope = [
|
||||||
|
telescope-nvim
|
||||||
|
telescope-fzf-native-nvim
|
||||||
|
telescope-ui-select-nvim
|
||||||
|
];
|
||||||
|
fyler = [
|
||||||
|
fyler-nvim
|
||||||
|
];
|
||||||
|
lsp = [
|
||||||
|
nvim-lspconfig
|
||||||
|
];
|
||||||
|
completion = [
|
||||||
|
blink-cmp
|
||||||
|
nvim-cmp
|
||||||
|
luasnip
|
||||||
|
friendly-snippets
|
||||||
|
cmp_luasnip
|
||||||
|
cmp-buffer
|
||||||
|
cmp-path
|
||||||
|
cmp-nvim-lua
|
||||||
|
cmp-nvim-lsp
|
||||||
|
cmp-cmdline
|
||||||
|
cmp-nvim-lsp-signature-help
|
||||||
|
cmp-cmdline-history
|
||||||
|
lspkind-nvim
|
||||||
|
];
|
||||||
|
format = [
|
||||||
|
conform-nvim
|
||||||
|
];
|
||||||
|
comment = [
|
||||||
|
comment-nvim
|
||||||
|
];
|
||||||
|
lang = {
|
||||||
|
java = [
|
||||||
|
nvim-jdtls
|
||||||
|
];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
# shared libraries to be added to LD_LIBRARY_PATH
|
||||||
|
# variable available to nvim runtime
|
||||||
|
sharedLibraries = {
|
||||||
|
general = with pkgs; [
|
||||||
|
# libgit2
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
|
environmentVariables = {
|
||||||
|
lang = {
|
||||||
|
rust.lsp = {
|
||||||
|
# it literally won't see the rust-analyzer provided to it
|
||||||
|
# if you don't use an envrionment variable to tell it
|
||||||
|
RUST_ANALYZER_CMD = "${mpkgs.rust-analyzer}/bin/rust-analyzer";
|
||||||
|
};
|
||||||
|
elixir.lsp = {
|
||||||
|
ELIXIR_LS_CMD = "${pkgs.elixir-ls}/scripts/language_server.sh";
|
||||||
|
};
|
||||||
|
java.lsp = {
|
||||||
|
JAVA_HOME = "${pkgs.javaPackages.compiler.openjdk17}";
|
||||||
|
OPENJDK_17 = "${pkgs.javaPackages.compiler.openjdk17}";
|
||||||
|
OPENJDK_21 = "${pkgs.javaPackages.compiler.openjdk21}";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
extraWrapperArgs = {};
|
||||||
|
# lists of the functions you would have passed to
|
||||||
|
# python.withPackages or lua.withPackages
|
||||||
|
|
||||||
|
# get the path to this python environment
|
||||||
|
# in your lua config via
|
||||||
|
# vim.g.python3_host_prog
|
||||||
|
# or run from nvim terminal via :!<packagename>-python3
|
||||||
|
extraPython3Packages = {};
|
||||||
|
# populates $LUA_PATH and $LUA_CPATH
|
||||||
|
extraLuaPackages = {};
|
||||||
|
};
|
||||||
|
|
||||||
|
# see :help nixCats.flake.outputs.packageDefinitions
|
||||||
|
packageDefinitions.replace = {
|
||||||
|
# these are the names of your packages
|
||||||
|
# you can include as many as you wish.
|
||||||
|
cryvim = {pkgs, ...}: {
|
||||||
|
# they contain a settings set defined above
|
||||||
|
# see :help nixCats.flake.outputs.settings
|
||||||
|
settings = {
|
||||||
|
wrapRc = true;
|
||||||
|
# IMPORTANT:
|
||||||
|
# your alias may not conflict with your other packages.
|
||||||
|
aliases = [
|
||||||
|
"cvim"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
# and a set of categories that you want
|
||||||
|
# (and other information to pass to lua)
|
||||||
|
categories = {
|
||||||
|
general = true;
|
||||||
|
|
||||||
|
ui = true;
|
||||||
|
qol = true;
|
||||||
|
telescope = true;
|
||||||
|
fyler = true;
|
||||||
|
lsp = true;
|
||||||
|
completion = true;
|
||||||
|
treesitter = true;
|
||||||
|
format = true;
|
||||||
|
comment = true;
|
||||||
|
|
||||||
|
lang = {
|
||||||
|
lua = true;
|
||||||
|
nix = true;
|
||||||
|
rust = true;
|
||||||
|
zig = true;
|
||||||
|
elixir = true;
|
||||||
|
gleam = true;
|
||||||
|
haskell = true;
|
||||||
|
java = true;
|
||||||
|
protobuf = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
9
homes/modules/editor/neovim/init.lua
Normal file
9
homes/modules/editor/neovim/init.lua
Normal file
|
|
@ -0,0 +1,9 @@
|
||||||
|
vim.g.mapleader = " "
|
||||||
|
|
||||||
|
vim.opt.termguicolors = true -- use terminal colors
|
||||||
|
vim.opt.relativenumber = true
|
||||||
|
vim.opt.wrap = false
|
||||||
|
vim.opt.colorcolumn = "80"
|
||||||
|
|
||||||
|
require("plugins")
|
||||||
|
require("lsp")
|
||||||
66
homes/modules/editor/neovim/lua/lsp/capabilities.lua
Normal file
66
homes/modules/editor/neovim/lua/lsp/capabilities.lua
Normal file
|
|
@ -0,0 +1,66 @@
|
||||||
|
local M = {}
|
||||||
|
|
||||||
|
function M.on_attach(_, bufnr)
|
||||||
|
-- we create a function that lets us more easily define mappings specific
|
||||||
|
-- for LSP related items. It sets the mode, buffer and description for us each time.
|
||||||
|
|
||||||
|
local nmap = function(keys, func, desc)
|
||||||
|
if desc then
|
||||||
|
desc = "LSP: " .. desc
|
||||||
|
end
|
||||||
|
|
||||||
|
vim.keymap.set("n", keys, func, { buffer = bufnr, desc = desc })
|
||||||
|
end
|
||||||
|
|
||||||
|
nmap("<leader>rn", vim.lsp.buf.rename, "[R]e[n]ame")
|
||||||
|
nmap("<leader>ca", vim.lsp.buf.code_action, "[C]ode [A]ction")
|
||||||
|
|
||||||
|
nmap("gd", vim.lsp.buf.definition, "[G]oto [D]efinition")
|
||||||
|
|
||||||
|
-- NOTE: why are these functions that call the telescope builtin?
|
||||||
|
-- because otherwise they would load telescope eagerly when this is defined.
|
||||||
|
-- due to us using the on_require handler to make sure it is available.
|
||||||
|
if nixCats("general.telescope") then
|
||||||
|
nmap("gr", function()
|
||||||
|
require("telescope.builtin").lsp_references()
|
||||||
|
end, "[G]oto [R]eferences")
|
||||||
|
nmap("gI", function()
|
||||||
|
require("telescope.builtin").lsp_implementations()
|
||||||
|
end, "[G]oto [I]mplementation")
|
||||||
|
nmap("<leader>ds", function()
|
||||||
|
require("telescope.builtin").lsp_document_symbols()
|
||||||
|
end, "[D]ocument [S]ymbols")
|
||||||
|
nmap("<leader>ws", function()
|
||||||
|
require("telescope.builtin").lsp_dynamic_workspace_symbols()
|
||||||
|
end, "[W]orkspace [S]ymbols")
|
||||||
|
nmap("<leader>dd", "<cmd>Telescope diagnostics bufnr=0<CR>", "[D]ocument [D]iagnostics")
|
||||||
|
nmap("<leader>wd", "<cmd>Telescope diagnostics<CR>", "[W]orkspace [D]iagnostics")
|
||||||
|
end -- TODO: someone who knows the builtin versions of these to do instead help me out please.
|
||||||
|
|
||||||
|
nmap("<leader>D", vim.lsp.buf.type_definition, "Type [D]efinition")
|
||||||
|
nmap("<leader>e", vim.diagnostic.open_float, "Show [E]rror")
|
||||||
|
|
||||||
|
-- See `:help K` for why this keymap
|
||||||
|
nmap("K", vim.lsp.buf.hover, "Hover Documentation")
|
||||||
|
nmap("<C-k>", vim.lsp.buf.signature_help, "Signature Documentation")
|
||||||
|
|
||||||
|
-- Lesser used LSP functionality
|
||||||
|
nmap("gD", vim.lsp.buf.declaration, "[G]oto [D]eclaration")
|
||||||
|
nmap("<leader>wa", vim.lsp.buf.add_workspace_folder, "[W]orkspace [A]dd Folder")
|
||||||
|
nmap("<leader>wr", vim.lsp.buf.remove_workspace_folder, "[W]orkspace [R]emove Folder")
|
||||||
|
nmap("<leader>wl", function()
|
||||||
|
print(vim.inspect(vim.lsp.buf.list_workspace_folders()))
|
||||||
|
end, "[W]orkspace [L]ist Folders")
|
||||||
|
|
||||||
|
-- Create a command `:Format` local to the LSP buffer
|
||||||
|
vim.api.nvim_buf_create_user_command(bufnr, "Format", function(_)
|
||||||
|
vim.lsp.buf.format()
|
||||||
|
end, { desc = "Format current buffer with LSP" })
|
||||||
|
end
|
||||||
|
|
||||||
|
function M.get(server_name)
|
||||||
|
local capabilities = require("blink.cmp").get_lsp_capabilities()
|
||||||
|
|
||||||
|
return capabilities
|
||||||
|
end
|
||||||
|
return M
|
||||||
103
homes/modules/editor/neovim/lua/lsp/completion.lua
Normal file
103
homes/modules/editor/neovim/lua/lsp/completion.lua
Normal file
|
|
@ -0,0 +1,103 @@
|
||||||
|
return {
|
||||||
|
{
|
||||||
|
"friendly-snippets",
|
||||||
|
dep_of = { "blink.cmp" },
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"blink.cmp",
|
||||||
|
event = { "InsertEnter", "CmdlineEnter" },
|
||||||
|
on_require = "blink",
|
||||||
|
load = function(name)
|
||||||
|
vim.cmd.packadd(name)
|
||||||
|
end,
|
||||||
|
after = function(plugin)
|
||||||
|
local blink = require("blink.cmp")
|
||||||
|
|
||||||
|
blink.setup({
|
||||||
|
keymap = {
|
||||||
|
["<C-space>"] = { "show", "show_documentation", "hide_documentation" },
|
||||||
|
["<C-e>"] = { "hide", "fallback" },
|
||||||
|
["<C-y>"] = { "select_and_accept", "fallback" },
|
||||||
|
|
||||||
|
["<C-k>"] = { "select_prev", "fallback_to_mappings" },
|
||||||
|
["<C-j>"] = { "select_next", "fallback_to_mappings" },
|
||||||
|
["<Up>"] = { "select_prev", "fallback" },
|
||||||
|
["<Down>"] = { "select_next", "fallback" },
|
||||||
|
|
||||||
|
["<C-b>"] = { "scroll_documentation_up", "fallback" },
|
||||||
|
["<C-f>"] = { "scroll_documentation_down", "fallback" },
|
||||||
|
|
||||||
|
["<Tab>"] = { "snippet_forward", "fallback" },
|
||||||
|
["<S-Tab>"] = { "snippet_backward", "fallback" },
|
||||||
|
|
||||||
|
["<C-S-k>"] = { "show_signature", "hide_signature", "fallback" },
|
||||||
|
},
|
||||||
|
|
||||||
|
appearance = {
|
||||||
|
nerd_font_variant = "mono",
|
||||||
|
},
|
||||||
|
|
||||||
|
sources = {
|
||||||
|
default = { "lsp", "path", "snippets", "buffer" },
|
||||||
|
providers = {
|
||||||
|
lsp = {
|
||||||
|
name = "LSP",
|
||||||
|
module = "blink.cmp.sources.lsp",
|
||||||
|
enabled = true,
|
||||||
|
},
|
||||||
|
path = {
|
||||||
|
name = "Path",
|
||||||
|
module = "blink.cmp.sources.path",
|
||||||
|
enabled = true,
|
||||||
|
},
|
||||||
|
snippets = {
|
||||||
|
name = "Snippets",
|
||||||
|
module = "blink.cmp.sources.snippets",
|
||||||
|
enabled = true,
|
||||||
|
},
|
||||||
|
buffer = {
|
||||||
|
name = "Buffer",
|
||||||
|
module = "blink.cmp.sources.buffer",
|
||||||
|
enabled = true,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
|
||||||
|
completion = {
|
||||||
|
accept = {
|
||||||
|
auto_brackets = {
|
||||||
|
enabled = true,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
|
||||||
|
menu = {
|
||||||
|
border = "rounded",
|
||||||
|
max_height = 12,
|
||||||
|
scrolloff = 2,
|
||||||
|
|
||||||
|
draw = {
|
||||||
|
columns = {
|
||||||
|
{ "kind_icon", gap = 1 },
|
||||||
|
{ "label", "label_description", gap = 1 },
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
|
||||||
|
documentation = {
|
||||||
|
auto_show = false,
|
||||||
|
window = {
|
||||||
|
border = "rounded",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
|
||||||
|
signature = {
|
||||||
|
enabled = true,
|
||||||
|
window = {
|
||||||
|
border = "rounded",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
})
|
||||||
|
end,
|
||||||
|
},
|
||||||
|
}
|
||||||
20
homes/modules/editor/neovim/lua/lsp/indentation.lua
Normal file
20
homes/modules/editor/neovim/lua/lsp/indentation.lua
Normal file
|
|
@ -0,0 +1,20 @@
|
||||||
|
vim.api.nvim_create_autocmd("FileType", {
|
||||||
|
pattern = { "lua", "nix", "gleam" },
|
||||||
|
callback = function()
|
||||||
|
vim.opt_local.shiftwidth = 2
|
||||||
|
vim.opt_local.tabstop = 2
|
||||||
|
vim.opt_local.expandtab = true
|
||||||
|
end,
|
||||||
|
})
|
||||||
|
|
||||||
|
vim.api.nvim_create_autocmd("User", {
|
||||||
|
pattern = "TelescopePreviewerLoaded",
|
||||||
|
callback = function(args)
|
||||||
|
local ft = args.data.filetype
|
||||||
|
if vim.tbl_contains({ "lua", "nix", "gleam", "rust" }, ft) then
|
||||||
|
vim.bo.shiftwidth = 2
|
||||||
|
vim.bo.tabstop = 2
|
||||||
|
vim.bo.expandtab = true
|
||||||
|
end
|
||||||
|
end,
|
||||||
|
})
|
||||||
6
homes/modules/editor/neovim/lua/lsp/init.lua
Normal file
6
homes/modules/editor/neovim/lua/lsp/init.lua
Normal file
|
|
@ -0,0 +1,6 @@
|
||||||
|
require("lze").load({
|
||||||
|
{ import = "lsp.completion" },
|
||||||
|
})
|
||||||
|
|
||||||
|
require("lsp.indentation")
|
||||||
|
require("lsp.lsp")
|
||||||
134
homes/modules/editor/neovim/lua/lsp/lsp.lua
Normal file
134
homes/modules/editor/neovim/lua/lsp/lsp.lua
Normal file
|
|
@ -0,0 +1,134 @@
|
||||||
|
local servers = {}
|
||||||
|
|
||||||
|
servers.lua_ls = {
|
||||||
|
settings = {
|
||||||
|
Lua = {
|
||||||
|
formatters = {
|
||||||
|
ignoreComments = false,
|
||||||
|
},
|
||||||
|
signatureHelp = { enable = true },
|
||||||
|
diagnostics = {
|
||||||
|
globals = { "nixCats", "vim" },
|
||||||
|
-- disable = { 'missing-fields' },
|
||||||
|
},
|
||||||
|
workspace = {
|
||||||
|
-- make the server aware of the neovim runtime files
|
||||||
|
library = vim.api.nvim_get_runtime_file("", true),
|
||||||
|
checkThirdParty = false,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
telemetry = { enabled = false },
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
servers.nil_ls = {
|
||||||
|
settings = {},
|
||||||
|
}
|
||||||
|
|
||||||
|
local rust_analyzer_cmd = os.getenv("RUST_ANALYZER_CMD")
|
||||||
|
servers.rust_analyzer = {
|
||||||
|
cmd = { rust_analyzer_cmd },
|
||||||
|
settings = {
|
||||||
|
server = {
|
||||||
|
-- For debugging rust-analyzer, to see log location do :LspInfo in neovim
|
||||||
|
-- extraEnv = { {["RA_LOG"]="project_model=debug"} },
|
||||||
|
},
|
||||||
|
cargo = {
|
||||||
|
allFeatures = false,
|
||||||
|
allTargets = false,
|
||||||
|
buildScripts = { enable = true },
|
||||||
|
target = "x86_64-unknown-linux-gnu",
|
||||||
|
},
|
||||||
|
diagnostics = {
|
||||||
|
enable = true,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
servers.zls = {
|
||||||
|
settings = {},
|
||||||
|
}
|
||||||
|
|
||||||
|
local elixir_ls_cmd = os.getenv("ELIXIR_LS_CMD")
|
||||||
|
servers.elixirls = {
|
||||||
|
cmd = { elixir_ls_cmd },
|
||||||
|
settings = {},
|
||||||
|
}
|
||||||
|
|
||||||
|
servers.gleam = {
|
||||||
|
settings = {},
|
||||||
|
}
|
||||||
|
|
||||||
|
servers.hls = {
|
||||||
|
settings = {},
|
||||||
|
}
|
||||||
|
|
||||||
|
local java_home = os.getenv("JAVA_HOME")
|
||||||
|
servers.jdtls = {
|
||||||
|
settings = {
|
||||||
|
java = {
|
||||||
|
contentProvider = { preferred = "fernflower" },
|
||||||
|
configuration = {
|
||||||
|
runtimes = {
|
||||||
|
{
|
||||||
|
name = "OpenJDK 17",
|
||||||
|
path = os.getenv("OPENJDK_17"),
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name = "OpenJDK 21",
|
||||||
|
path = os.getenv("OPENJDK_21"),
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
servers.protols = {
|
||||||
|
settings = {},
|
||||||
|
}
|
||||||
|
|
||||||
|
-- Taken from nixCats example:
|
||||||
|
-- If you were to comment out this autocommand
|
||||||
|
-- and instead pass the on attach function directly to
|
||||||
|
-- nvim-lspconfig, it would do the same thing.
|
||||||
|
-- come to think of it, it might be better because then lspconfig doesnt have to be called before lsp attach?
|
||||||
|
-- but you would still end up triggering on a FileType event anyway, so, it makes little difference.
|
||||||
|
vim.api.nvim_create_autocmd("LspAttach", {
|
||||||
|
group = vim.api.nvim_create_augroup("nixCats-lsp-attach", { clear = true }),
|
||||||
|
callback = function(event)
|
||||||
|
require("lsp.capabilities").on_attach(vim.lsp.get_client_by_id(event.data.client_id), event.buf)
|
||||||
|
end,
|
||||||
|
})
|
||||||
|
|
||||||
|
require("lze").load({
|
||||||
|
{
|
||||||
|
"nvim-lspconfig",
|
||||||
|
event = "FileType",
|
||||||
|
after = function(plugin)
|
||||||
|
-- Just register configs, don't enable yet
|
||||||
|
for server_name, cfg in pairs(servers) do
|
||||||
|
vim.lsp.config(server_name, {
|
||||||
|
capabilities = require("lsp.capabilities").get(server_name),
|
||||||
|
settings = (cfg or {}).settings,
|
||||||
|
filetypes = (cfg or {}).filetypes,
|
||||||
|
cmd = (cfg or {}).cmd,
|
||||||
|
root_pattern = (cfg or {}).root_pattern,
|
||||||
|
})
|
||||||
|
end
|
||||||
|
|
||||||
|
-- Enable on-demand per filetype
|
||||||
|
for server_name, cfg in pairs(servers) do
|
||||||
|
local filetypes = cfg.filetypes or vim.lsp.config[server_name].filetypes
|
||||||
|
if filetypes then
|
||||||
|
vim.api.nvim_create_autocmd("FileType", {
|
||||||
|
pattern = filetypes,
|
||||||
|
callback = function()
|
||||||
|
vim.lsp.enable(server_name)
|
||||||
|
end,
|
||||||
|
})
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end,
|
||||||
|
},
|
||||||
|
})
|
||||||
23
homes/modules/editor/neovim/lua/plugins/comment.lua
Normal file
23
homes/modules/editor/neovim/lua/plugins/comment.lua
Normal file
|
|
@ -0,0 +1,23 @@
|
||||||
|
return {
|
||||||
|
{
|
||||||
|
"comment.nvim",
|
||||||
|
event = { "BufReadPost", "BufNewFile" },
|
||||||
|
after = function(plugin)
|
||||||
|
require("Comment").setup({
|
||||||
|
toggler = {
|
||||||
|
line = "<leader>cc",
|
||||||
|
block = "<leader>bc",
|
||||||
|
},
|
||||||
|
opleader = {
|
||||||
|
line = "<leader>c",
|
||||||
|
block = "<leader>b",
|
||||||
|
},
|
||||||
|
extra = {
|
||||||
|
above = "<leader>c<S-o>",
|
||||||
|
below = "<leader>co",
|
||||||
|
eol = "<leader>cA",
|
||||||
|
},
|
||||||
|
})
|
||||||
|
end,
|
||||||
|
},
|
||||||
|
}
|
||||||
5
homes/modules/editor/neovim/lua/plugins/dressing.lua
Normal file
5
homes/modules/editor/neovim/lua/plugins/dressing.lua
Normal file
|
|
@ -0,0 +1,5 @@
|
||||||
|
return {
|
||||||
|
{
|
||||||
|
"dressing.nvim",
|
||||||
|
},
|
||||||
|
}
|
||||||
34
homes/modules/editor/neovim/lua/plugins/format.lua
Normal file
34
homes/modules/editor/neovim/lua/plugins/format.lua
Normal file
|
|
@ -0,0 +1,34 @@
|
||||||
|
-- docs -> https://github.com/stevearc/conform.nvim
|
||||||
|
return {
|
||||||
|
{
|
||||||
|
"conform.nvim",
|
||||||
|
enabled = nixCats("format") or false,
|
||||||
|
keys = {
|
||||||
|
{ "<leader>p", desc = "Format File (pretty :3)" },
|
||||||
|
},
|
||||||
|
after = function(plugin)
|
||||||
|
local conform = require("conform")
|
||||||
|
|
||||||
|
conform.setup({
|
||||||
|
formatters_by_ft = {
|
||||||
|
lua = nixCats("lang.lua") and { "stylua" } or nil,
|
||||||
|
nix = nixCats("lang.nix") and { "nixfmt" } or nil,
|
||||||
|
rust = nixCats("lang.rust") and { "rustfmt", lsp_format = "fallback" } or nil,
|
||||||
|
haskell = nixCats("lang.haskell") and { "ormolu" } or nil,
|
||||||
|
proto = nixCats("lang.protobuf") and { "buf" } or nil,
|
||||||
|
},
|
||||||
|
format_on_save = {
|
||||||
|
timeout_ms = 500,
|
||||||
|
},
|
||||||
|
})
|
||||||
|
|
||||||
|
vim.keymap.set({ "n", "v" }, "<leader>p", function()
|
||||||
|
conform.format({
|
||||||
|
lsp_fallback = false,
|
||||||
|
async = false,
|
||||||
|
timeout_ms = 1000,
|
||||||
|
})
|
||||||
|
end, { desc = "Format File (pretty :3)" })
|
||||||
|
end,
|
||||||
|
},
|
||||||
|
}
|
||||||
22
homes/modules/editor/neovim/lua/plugins/fyler.lua
Normal file
22
homes/modules/editor/neovim/lua/plugins/fyler.lua
Normal file
|
|
@ -0,0 +1,22 @@
|
||||||
|
return {
|
||||||
|
{
|
||||||
|
"fyler.nvim",
|
||||||
|
cmd = { "Fyler" },
|
||||||
|
keys = {
|
||||||
|
{
|
||||||
|
"<leader>tf",
|
||||||
|
function()
|
||||||
|
return require("fyler").toggle({ kind = "split_right" })
|
||||||
|
end,
|
||||||
|
mode = { "n" },
|
||||||
|
desc = "Open [F]yler",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
load = function(name)
|
||||||
|
vim.cmd.packadd(name)
|
||||||
|
end,
|
||||||
|
after = function(plugin)
|
||||||
|
local fyler = require("fyler").setup()
|
||||||
|
end,
|
||||||
|
},
|
||||||
|
}
|
||||||
9
homes/modules/editor/neovim/lua/plugins/init.lua
Normal file
9
homes/modules/editor/neovim/lua/plugins/init.lua
Normal file
|
|
@ -0,0 +1,9 @@
|
||||||
|
require("lze").load({
|
||||||
|
{ import = "plugins.dressing" },
|
||||||
|
{ import = "plugins.telescope" },
|
||||||
|
{ import = "plugins.treesitter" },
|
||||||
|
{ import = "plugins.fyler" },
|
||||||
|
{ import = "plugins.mini-hipatterns" },
|
||||||
|
{ import = "plugins.format" },
|
||||||
|
{ import = "plugins.comment" },
|
||||||
|
})
|
||||||
76
homes/modules/editor/neovim/lua/plugins/mini-hipatterns.lua
Normal file
76
homes/modules/editor/neovim/lua/plugins/mini-hipatterns.lua
Normal file
|
|
@ -0,0 +1,76 @@
|
||||||
|
return {
|
||||||
|
{
|
||||||
|
"mini.hipatterns",
|
||||||
|
after = function(plugin)
|
||||||
|
local hipatterns = require("mini.hipatterns")
|
||||||
|
|
||||||
|
-- Returns hex color group for matching short hex color.
|
||||||
|
--
|
||||||
|
---@param match string
|
||||||
|
---@return string
|
||||||
|
local hex_color_short = function(_, match)
|
||||||
|
local style = "fg" -- 'fg' or 'bg', for extmark_opts_inline use 'fg'
|
||||||
|
local r, g, b = match:sub(2, 2), match:sub(3, 3), match:sub(4, 4)
|
||||||
|
local hex = string.format("#%s%s%s%s%s%s", r, r, g, g, b, b)
|
||||||
|
return hipatterns.compute_hex_color_group(hex, style)
|
||||||
|
end
|
||||||
|
|
||||||
|
-- Returns hex color group for matching alpha hex color.
|
||||||
|
--
|
||||||
|
---@param match string
|
||||||
|
---@return string
|
||||||
|
local hex_color_alpha = function(_, match)
|
||||||
|
local style = "fg" -- 'fg' or 'bg', for extmark_opts_inline use 'fg'
|
||||||
|
local r, g, b = match:sub(2, 3), match:sub(4, 5), match:sub(6, 7)
|
||||||
|
local hex = string.format("#%s%s%s", r, g, b)
|
||||||
|
return hipatterns.compute_hex_color_group(hex, style)
|
||||||
|
end
|
||||||
|
|
||||||
|
-- Returns extmark opts for highlights with virtual inline text.
|
||||||
|
--
|
||||||
|
---@param data table Includes `hl_group`, `full_match` and more.
|
||||||
|
---@return table
|
||||||
|
local extmark_opts_inline = function(_, _, data)
|
||||||
|
return {
|
||||||
|
virt_text = { { "", data.hl_group } },
|
||||||
|
virt_text_pos = "inline",
|
||||||
|
right_gravity = false,
|
||||||
|
}
|
||||||
|
end
|
||||||
|
|
||||||
|
-- Returns extmark opts for highlights with virtual inline text.
|
||||||
|
--
|
||||||
|
---@param data table Includes `hl_group`, `full_match` and more.
|
||||||
|
---@return table
|
||||||
|
local extmark_opts_inline_alpha = function(_, _, data)
|
||||||
|
return {
|
||||||
|
virt_text = { { "", data.hl_group } },
|
||||||
|
virt_text_pos = "inline",
|
||||||
|
right_gravity = false,
|
||||||
|
}
|
||||||
|
end
|
||||||
|
|
||||||
|
hipatterns.setup({
|
||||||
|
highlighters = {
|
||||||
|
-- #rrggbb
|
||||||
|
hex_color = hipatterns.gen_highlighter.hex_color({
|
||||||
|
style = "inline",
|
||||||
|
inline_text = "",
|
||||||
|
}),
|
||||||
|
-- #rgb
|
||||||
|
hex_color_short = {
|
||||||
|
pattern = "#%x%x%x%f[%X]",
|
||||||
|
group = hex_color_short,
|
||||||
|
extmark_opts = extmark_opts_inline,
|
||||||
|
},
|
||||||
|
-- #rrggbbaa
|
||||||
|
hex_color_alpha = {
|
||||||
|
pattern = "#%x%x%x%x%x%x%x%x%f[%X]",
|
||||||
|
group = hex_color_alpha,
|
||||||
|
extmark_opts = extmark_opts_inline_alpha,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
})
|
||||||
|
end,
|
||||||
|
},
|
||||||
|
}
|
||||||
78
homes/modules/editor/neovim/lua/plugins/telescope.lua
Normal file
78
homes/modules/editor/neovim/lua/plugins/telescope.lua
Normal file
|
|
@ -0,0 +1,78 @@
|
||||||
|
return {
|
||||||
|
{
|
||||||
|
"telescope.nvim",
|
||||||
|
cmd = { "Telescope" },
|
||||||
|
keys = {
|
||||||
|
{
|
||||||
|
"<leader>f",
|
||||||
|
function()
|
||||||
|
return require("telescope.builtin").find_files()
|
||||||
|
end,
|
||||||
|
mode = { "n" },
|
||||||
|
desc = "Telescope search [F]iles",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"<leader>tr",
|
||||||
|
function()
|
||||||
|
return require("telescope.builtin").oldfiles()
|
||||||
|
end,
|
||||||
|
mode = { "n" },
|
||||||
|
desc = "[T]elescope search [R]ecent files",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"<leader>ts",
|
||||||
|
function()
|
||||||
|
return require("telescope.builtin").live_grep()
|
||||||
|
end,
|
||||||
|
mode = { "n" },
|
||||||
|
desc = "[T]elescope [S]earch cwd with grep",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"<leader>tw",
|
||||||
|
function()
|
||||||
|
return require("telescope.builtin").grep_string()
|
||||||
|
end,
|
||||||
|
mode = { "n" },
|
||||||
|
desc = "[T]elescope search current [W]ord",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"<leader>tk",
|
||||||
|
function()
|
||||||
|
return require("telescope.builtin").keymaps()
|
||||||
|
end,
|
||||||
|
mode = { "n" },
|
||||||
|
desc = "[T]elescope search [K]eymaps",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"<leader>tb",
|
||||||
|
function()
|
||||||
|
return require("telescope.builtin").buffers()
|
||||||
|
end,
|
||||||
|
mode = { "n" },
|
||||||
|
desc = "[T]elescope search [B]uffers",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
load = function(name)
|
||||||
|
vim.cmd.packadd(name)
|
||||||
|
vim.cmd.packadd("telescope-fzf-native.nvim")
|
||||||
|
end,
|
||||||
|
after = function(plugin)
|
||||||
|
local telescope = require("telescope")
|
||||||
|
local actions = require("telescope.actions")
|
||||||
|
|
||||||
|
telescope.setup({
|
||||||
|
defaults = {
|
||||||
|
mappings = {
|
||||||
|
i = {
|
||||||
|
["<C-k>"] = actions.move_selection_previous, -- move to prev result
|
||||||
|
["<C-j>"] = actions.move_selection_next, -- move to next result
|
||||||
|
["<C-q>"] = actions.send_selected_to_qflist + actions.open_qflist,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
})
|
||||||
|
|
||||||
|
pcall(telescope.load_extension, "fzf")
|
||||||
|
end,
|
||||||
|
},
|
||||||
|
}
|
||||||
95
homes/modules/editor/neovim/lua/plugins/treesitter.lua
Normal file
95
homes/modules/editor/neovim/lua/plugins/treesitter.lua
Normal file
|
|
@ -0,0 +1,95 @@
|
||||||
|
-- to help me write this after nvim-treesitter updated, i used:
|
||||||
|
-- https://github.com/BirdeeHub/nixCats-nvim/blob/3c9bc4d7123e1b48d92f25ba505b889af541e897/templates/example/lua/myLuaConf/plugins/treesitter.lua
|
||||||
|
|
||||||
|
return {
|
||||||
|
{
|
||||||
|
"nvim-treesitter",
|
||||||
|
lazy = false,
|
||||||
|
after = function(plugin)
|
||||||
|
--@param buf integer
|
||||||
|
--@param language string
|
||||||
|
local function treesitter_try_attach(buf, language)
|
||||||
|
--check if parser exists and load it
|
||||||
|
if not vim.treesitter.language.add(language) then
|
||||||
|
return
|
||||||
|
end
|
||||||
|
|
||||||
|
-- enables syntax highlight and other treesitter features
|
||||||
|
vim.treesitter.start(buf, language)
|
||||||
|
|
||||||
|
-- enables treesitter based folds
|
||||||
|
vim.wo.foldexpr = "v:lua.vim.treesitter.foldexpr()"
|
||||||
|
|
||||||
|
-- enables treesiter based indentation
|
||||||
|
vim.bo.indentexpr = "v:lua.require'nvim-treesitter'.indentexpr()"
|
||||||
|
end
|
||||||
|
|
||||||
|
local available_parsers = require("nvim-treesitter").get_available()
|
||||||
|
vim.api.nvim_create_autocmd("FileType", {
|
||||||
|
callback = function(args)
|
||||||
|
local buf, filetype = args.buf, args.match
|
||||||
|
local language = vim.treesitter.language.get_lang(filetype)
|
||||||
|
if not language then
|
||||||
|
return
|
||||||
|
end
|
||||||
|
|
||||||
|
local installed_parsers = require("nvim-treesitter").get_installed("parsers")
|
||||||
|
|
||||||
|
if vim.tbl_contains(installed_parsers, language) then
|
||||||
|
-- enable the parser if it is installed
|
||||||
|
treesitter_try_attach(buf, language)
|
||||||
|
elseif vim.tbl_contains(available_parsers, language) then
|
||||||
|
-- if a parser is available in `nvim-treesitter` enable it after ensuring it is installed
|
||||||
|
require("nvim-treesitter").install(language):await(function()
|
||||||
|
treesitter_try_attach(buf, language)
|
||||||
|
end)
|
||||||
|
else
|
||||||
|
-- try to enable treesitter features in case the parser exists but is not available from `nvim-treesitter`
|
||||||
|
treesitter_try_attach(buf, language)
|
||||||
|
end
|
||||||
|
end,
|
||||||
|
})
|
||||||
|
end,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"nvim-treesitter-textobjects",
|
||||||
|
lazy = false,
|
||||||
|
before = function(plugin)
|
||||||
|
vim.g.no_plugin_maps = true
|
||||||
|
end,
|
||||||
|
after = function(plugin)
|
||||||
|
require("nvim-treesitter-textobjects").setup({
|
||||||
|
select = {
|
||||||
|
lookahead = true,
|
||||||
|
selection_modes = {
|
||||||
|
["@parameter.outer"] = "v", -- charwise
|
||||||
|
["@function.outer"] = "V", -- linewise
|
||||||
|
},
|
||||||
|
include_surrounding_whitespace = false,
|
||||||
|
},
|
||||||
|
})
|
||||||
|
|
||||||
|
-- keymaps
|
||||||
|
vim.keymap.set({ "x", "o" }, "am", function()
|
||||||
|
require("nvim-treesitter-textobjects.select").select_textobject("@function.outer", "textobjects")
|
||||||
|
end)
|
||||||
|
vim.keymap.set({ "x", "o" }, "im", function()
|
||||||
|
require("nvim-treesitter-textobjects.select").select_textobject("@function.inner", "textobjects")
|
||||||
|
end)
|
||||||
|
vim.keymap.set({ "x", "o" }, "ac", function()
|
||||||
|
require("nvim-treesitter-textobjects.select").select_textobject("@class.outer", "textobjects")
|
||||||
|
end)
|
||||||
|
vim.keymap.set({ "x", "o" }, "ic", function()
|
||||||
|
require("nvim-treesitter-textobjects.select").select_textobject("@class.inner", "textobjects")
|
||||||
|
end)
|
||||||
|
-- You can also use captures from other query groups like `locals.scm`
|
||||||
|
vim.keymap.set({ "x", "o" }, "as", function()
|
||||||
|
require("nvim-treesitter-textobjects.select").select_textobject("@local.scope", "locals")
|
||||||
|
end)
|
||||||
|
|
||||||
|
-- NOTE: for more textobjects options, see the following link.
|
||||||
|
-- This template is using the new `main` branch of the repo.
|
||||||
|
-- https://github.com/nvim-treesitter/nvim-treesitter-textobjects/tree/main
|
||||||
|
end,
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
@ -1,24 +0,0 @@
|
||||||
{
|
|
||||||
config,
|
|
||||||
pkgs,
|
|
||||||
...
|
|
||||||
}: {
|
|
||||||
programs.nixvim = {
|
|
||||||
enable = true;
|
|
||||||
# TODO: allow clipboard to be configurable based on system clipboard
|
|
||||||
colorschemes.dracula.enable = true;
|
|
||||||
plugins = {
|
|
||||||
lualine.enable = true;
|
|
||||||
treesitter.enable = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
opts = {
|
|
||||||
number = true;
|
|
||||||
tabstop = 4;
|
|
||||||
softtabstop = 4;
|
|
||||||
shiftwidth = 4;
|
|
||||||
};
|
|
||||||
|
|
||||||
clipboard.providers.wl-copy.enable = true;
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
@ -1,33 +0,0 @@
|
||||||
# NOTE: hyprland must be enabled in BOTH your host config (for running hyprland)
|
|
||||||
# and your home-manager config (for managing hyprland's config files)
|
|
||||||
{
|
|
||||||
pkgs,
|
|
||||||
config,
|
|
||||||
lib,
|
|
||||||
...
|
|
||||||
}: {
|
|
||||||
options.hyprland = {
|
|
||||||
enable = lib.mkEnableOption "Hyprland";
|
|
||||||
};
|
|
||||||
|
|
||||||
config = lib.mkIf config.hyprland.enable {
|
|
||||||
programs.hyprland = {
|
|
||||||
enable = true;
|
|
||||||
portalPackage = pkgs.xdg-desktop-portal-hyprland;
|
|
||||||
#package = inputs.hyprland.packages.${pkgs.system}.hyprland;
|
|
||||||
xwayland.enable = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
xdg.portal = {
|
|
||||||
enable = true;
|
|
||||||
wlr.enable = true;
|
|
||||||
|
|
||||||
# extraPortals = with pkgs; [
|
|
||||||
# xdg-desktop-portal-hyprland
|
|
||||||
# # xdg-desktop-portal-gtk
|
|
||||||
# ];
|
|
||||||
};
|
|
||||||
|
|
||||||
# TODO: finish this (I didn't like the dotfiles I was getting inspo from and stopped)
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
@ -1,4 +1,11 @@
|
||||||
{pkgs, ...}: {
|
{
|
||||||
|
inputs,
|
||||||
|
pkgs,
|
||||||
|
system,
|
||||||
|
...
|
||||||
|
}: let
|
||||||
|
# hyprpkgs = inputs.hyprland.packages.${system}
|
||||||
|
in {
|
||||||
environment.defaultPackages = with pkgs; [
|
environment.defaultPackages = with pkgs; [
|
||||||
hyprsunset
|
hyprsunset
|
||||||
];
|
];
|
||||||
|
|
@ -17,9 +24,11 @@
|
||||||
programs = {
|
programs = {
|
||||||
hyprland = {
|
hyprland = {
|
||||||
enable = true;
|
enable = true;
|
||||||
|
package = inputs.hyprland.packages.${system}.hyprland;
|
||||||
|
portalPackage = inputs.hyprland.packages.${system}.xdg-desktop-portal-hyprland;
|
||||||
|
|
||||||
# withUWSM = true; # Universal Wayland Session Manager
|
# withUWSM = true; # Universal Wayland Session Manager
|
||||||
xwayland.enable = true;
|
xwayland.enable = true;
|
||||||
portalPackage = pkgs.xdg-desktop-portal-hyprland;
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
||||||
12
nixpkgs.nix
12
nixpkgs.nix
|
|
@ -11,7 +11,6 @@
|
||||||
(import ./overlays args)
|
(import ./overlays args)
|
||||||
];
|
];
|
||||||
config = {
|
config = {
|
||||||
# allowUnfree = false;
|
|
||||||
allowBroken = false;
|
allowBroken = false;
|
||||||
allowUnfreePredicate = pkg:
|
allowUnfreePredicate = pkg:
|
||||||
builtins.elem (lib.getName pkg) [
|
builtins.elem (lib.getName pkg) [
|
||||||
|
|
@ -40,5 +39,16 @@
|
||||||
allowBroken = false;
|
allowBroken = false;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
# nixpkgs-master
|
||||||
|
mpkgs = {
|
||||||
|
inherit system;
|
||||||
|
source = inputs.nixpkgs-master;
|
||||||
|
overlays = [];
|
||||||
|
config = {
|
||||||
|
allowUnfree = false;
|
||||||
|
allowBroken = false;
|
||||||
|
};
|
||||||
|
};
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue