diff --git a/flake.lock b/flake.lock index 6775cbf..8f5c175 100644 --- a/flake.lock +++ b/flake.lock @@ -1,5 +1,38 @@ { "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": { "inputs": { "flake-compat": "flake-compat", @@ -32,14 +65,13 @@ "nt": [ "nt" ], - "sops-nix": "sops-nix", "systems": [ "systems" ] }, "locked": { - "lastModified": 1772148969, - "narHash": "sha256-1Rib48xxOv5unR6KyBRs1wRoyC8MGguBno75fFGGbPs=", + "lastModified": 1772102584, + "narHash": "sha256-tGcuWO36uW4+BPs8vP/PrMJM/e84Zcn69r1EhzTr/m4=", "path": "/home/me/cry/mk/cerulean", "type": "path" }, @@ -130,6 +162,22 @@ } }, "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": { "lastModified": 1733328505, "narHash": "sha256-NeCCThCEP3eCl2l/+27kNNK7QrwZB1IJCrXfrbv5oqU=", @@ -201,6 +249,28 @@ "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": { "inputs": { "nixpkgs": [ @@ -242,6 +312,325 @@ "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": { "inputs": { "flake-parts": "flake-parts", @@ -365,7 +754,7 @@ }, "nixcord": { "inputs": { - "flake-compat": "flake-compat_3", + "flake-compat": "flake-compat_4", "flake-parts": "flake-parts_2", "nixpkgs": [ "nixpkgs" @@ -387,16 +776,16 @@ }, "nixpkgs": { "locked": { - "lastModified": 1771208521, - "narHash": "sha256-X01Q3DgSpjeBpapoGA4rzKOn25qdKxbPnxHeMLNoHTU=", - "owner": "nixos", + "lastModified": 1771848320, + "narHash": "sha256-0MAd+0mun3K/Ns8JATeHT1sX28faLII5hVLq0L3BdZU=", + "owner": "NixOS", "repo": "nixpkgs", - "rev": "fa56d7d6de78f5a7f997b0ea2bc6efd5868ad9e8", + "rev": "2fc6539b481e1d2569f25f8799236694180c0993", "type": "github" }, "original": { - "owner": "nixos", - "ref": "nixos-25.11", + "owner": "NixOS", + "ref": "nixos-unstable", "repo": "nixpkgs", "type": "github" } @@ -431,6 +820,22 @@ "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": { "locked": { "lastModified": 1771008912, @@ -448,6 +853,22 @@ } }, "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": { "lastModified": 1767313136, "narHash": "sha256-16KkgfdYqjaeRGBaYsNrhPRRENs0qzkQVUooNHtoy2w=", @@ -466,8 +887,8 @@ "nt": { "inputs": { "nix-unit": "nix-unit", - "nixpkgs": "nixpkgs_2", - "systems": "systems_2" + "nixpkgs": "nixpkgs_3", + "systems": "systems_3" }, "locked": { "lastModified": 1770975056, @@ -483,6 +904,29 @@ "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": { "inputs": { "awww": "awww", @@ -490,15 +934,17 @@ "dobutterfliescry-net": "dobutterfliescry-net", "grub2-themes": "grub2-themes", "home-manager": "home-manager", + "hyprland": "hyprland", "mango": "mango", "nix-flatpak": "nix-flatpak", "nixcats": "nixcats", "nixcord": "nixcord", - "nixpkgs": "nixpkgs", + "nixpkgs": "nixpkgs_2", + "nixpkgs-master": "nixpkgs-master", "nixpkgs-unstable": "nixpkgs-unstable", "nt": "nt", "sddm-silent": "sddm-silent", - "systems": "systems_3" + "systems": "systems_4" } }, "rust-overlay": { @@ -563,27 +1009,6 @@ "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": { "flake": false, "locked": { @@ -617,16 +1042,16 @@ }, "systems_2": { "locked": { - "lastModified": 1681028828, - "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "lastModified": 1689347949, + "narHash": "sha256-12tWmuL2zgBgZkdoB6qXZsgJEH9LR3oUgpaQq2RbI80=", "owner": "nix-systems", - "repo": "default", - "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "repo": "default-linux", + "rev": "31732fcf5e8fea42e59c2488ad31a0e651500f68", "type": "github" }, "original": { "owner": "nix-systems", - "repo": "default", + "repo": "default-linux", "type": "github" } }, @@ -645,6 +1070,21 @@ "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": { "inputs": { "nixpkgs": [ @@ -684,6 +1124,47 @@ "repo": "flake-utils", "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", diff --git a/flake.nix b/flake.nix index df36837..3123130 100644 --- a/flake.nix +++ b/flake.nix @@ -2,10 +2,11 @@ description = "im gonna cry again ;-;"; inputs = { - systems.url = "github:nix-systems/default"; + systems.url = "github:nix-systems/default-linux"; nixpkgs.url = "github:nixos/nixpkgs/nixos-25.11"; nixpkgs-unstable.url = "github:NixOS/nixpkgs/nixos-unstable"; + nixpkgs-master.url = "github:NixOS/nixpkgs/master"; home-manager = { 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 = { url = "git+https://codeberg.org/LGFae/awww"; inputs.nixpkgs.follows = "nixpkgs"; diff --git a/groups/cryde/default.nix b/groups/cryde/default.nix index 0229556..0596a01 100644 --- a/groups/cryde/default.nix +++ b/groups/cryde/default.nix @@ -54,20 +54,6 @@ 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 = { enable = true; diff --git a/homes/me/default.nix b/homes/me/default.nix index 154a7b9..ad21f43 100755 --- a/homes/me/default.nix +++ b/homes/me/default.nix @@ -12,6 +12,7 @@ ../modules/term/foot.nix ../modules/editor/helix.nix + ../modules/editor/neovim ../modules/apps/firefox.nix ../modules/apps/thunderbird.nix @@ -35,8 +36,10 @@ homeDirectory = "/home/me"; shellAliases = { - rebuild = "sudo nixos-rebuild switch --flake /home/me/flake --show-trace"; - trybuild = "sudo nixos-rebuild test --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"; + rebuild = "nh os switch ~/flake --show-trace"; + trybuild = "nh os test ~/flake --show-trace"; brip = "batgrep"; # bat + ripgrep man = "batman"; # bat + man }; @@ -165,7 +168,7 @@ gnome-keyring.enable = true; }; # 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 systemd.user.startServices = "sd-switch"; diff --git a/homes/modules/editor/neovim/default.nix b/homes/modules/editor/neovim/default.nix new file mode 100644 index 0000000..c746c1b --- /dev/null +++ b/homes/modules/editor/neovim/default.nix @@ -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 :!-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; + }; + }; + }; + }; + }; + }; +} diff --git a/homes/modules/editor/neovim/init.lua b/homes/modules/editor/neovim/init.lua new file mode 100644 index 0000000..696587c --- /dev/null +++ b/homes/modules/editor/neovim/init.lua @@ -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") diff --git a/homes/modules/editor/neovim/lua/lsp/capabilities.lua b/homes/modules/editor/neovim/lua/lsp/capabilities.lua new file mode 100644 index 0000000..7e9957b --- /dev/null +++ b/homes/modules/editor/neovim/lua/lsp/capabilities.lua @@ -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("rn", vim.lsp.buf.rename, "[R]e[n]ame") + nmap("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("ds", function() + require("telescope.builtin").lsp_document_symbols() + end, "[D]ocument [S]ymbols") + nmap("ws", function() + require("telescope.builtin").lsp_dynamic_workspace_symbols() + end, "[W]orkspace [S]ymbols") + nmap("dd", "Telescope diagnostics bufnr=0", "[D]ocument [D]iagnostics") + nmap("wd", "Telescope diagnostics", "[W]orkspace [D]iagnostics") + end -- TODO: someone who knows the builtin versions of these to do instead help me out please. + + nmap("D", vim.lsp.buf.type_definition, "Type [D]efinition") + nmap("e", vim.diagnostic.open_float, "Show [E]rror") + + -- See `:help K` for why this keymap + nmap("K", vim.lsp.buf.hover, "Hover Documentation") + nmap("", vim.lsp.buf.signature_help, "Signature Documentation") + + -- Lesser used LSP functionality + nmap("gD", vim.lsp.buf.declaration, "[G]oto [D]eclaration") + nmap("wa", vim.lsp.buf.add_workspace_folder, "[W]orkspace [A]dd Folder") + nmap("wr", vim.lsp.buf.remove_workspace_folder, "[W]orkspace [R]emove Folder") + nmap("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 diff --git a/homes/modules/editor/neovim/lua/lsp/completion.lua b/homes/modules/editor/neovim/lua/lsp/completion.lua new file mode 100644 index 0000000..b408f23 --- /dev/null +++ b/homes/modules/editor/neovim/lua/lsp/completion.lua @@ -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 = { + [""] = { "show", "show_documentation", "hide_documentation" }, + [""] = { "hide", "fallback" }, + [""] = { "select_and_accept", "fallback" }, + + [""] = { "select_prev", "fallback_to_mappings" }, + [""] = { "select_next", "fallback_to_mappings" }, + [""] = { "select_prev", "fallback" }, + [""] = { "select_next", "fallback" }, + + [""] = { "scroll_documentation_up", "fallback" }, + [""] = { "scroll_documentation_down", "fallback" }, + + [""] = { "snippet_forward", "fallback" }, + [""] = { "snippet_backward", "fallback" }, + + [""] = { "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, + }, +} diff --git a/homes/modules/editor/neovim/lua/lsp/indentation.lua b/homes/modules/editor/neovim/lua/lsp/indentation.lua new file mode 100644 index 0000000..5deae31 --- /dev/null +++ b/homes/modules/editor/neovim/lua/lsp/indentation.lua @@ -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, +}) diff --git a/homes/modules/editor/neovim/lua/lsp/init.lua b/homes/modules/editor/neovim/lua/lsp/init.lua new file mode 100644 index 0000000..e2d09ed --- /dev/null +++ b/homes/modules/editor/neovim/lua/lsp/init.lua @@ -0,0 +1,6 @@ +require("lze").load({ + { import = "lsp.completion" }, +}) + +require("lsp.indentation") +require("lsp.lsp") diff --git a/homes/modules/editor/neovim/lua/lsp/lsp.lua b/homes/modules/editor/neovim/lua/lsp/lsp.lua new file mode 100644 index 0000000..d115a00 --- /dev/null +++ b/homes/modules/editor/neovim/lua/lsp/lsp.lua @@ -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, + }, +}) diff --git a/homes/modules/editor/neovim/lua/plugins/comment.lua b/homes/modules/editor/neovim/lua/plugins/comment.lua new file mode 100644 index 0000000..caae704 --- /dev/null +++ b/homes/modules/editor/neovim/lua/plugins/comment.lua @@ -0,0 +1,23 @@ +return { + { + "comment.nvim", + event = { "BufReadPost", "BufNewFile" }, + after = function(plugin) + require("Comment").setup({ + toggler = { + line = "cc", + block = "bc", + }, + opleader = { + line = "c", + block = "b", + }, + extra = { + above = "c", + below = "co", + eol = "cA", + }, + }) + end, + }, +} diff --git a/homes/modules/editor/neovim/lua/plugins/dressing.lua b/homes/modules/editor/neovim/lua/plugins/dressing.lua new file mode 100644 index 0000000..42e7280 --- /dev/null +++ b/homes/modules/editor/neovim/lua/plugins/dressing.lua @@ -0,0 +1,5 @@ +return { + { + "dressing.nvim", + }, +} diff --git a/homes/modules/editor/neovim/lua/plugins/format.lua b/homes/modules/editor/neovim/lua/plugins/format.lua new file mode 100644 index 0000000..2cd28a4 --- /dev/null +++ b/homes/modules/editor/neovim/lua/plugins/format.lua @@ -0,0 +1,34 @@ +-- docs -> https://github.com/stevearc/conform.nvim +return { + { + "conform.nvim", + enabled = nixCats("format") or false, + keys = { + { "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" }, "p", function() + conform.format({ + lsp_fallback = false, + async = false, + timeout_ms = 1000, + }) + end, { desc = "Format File (pretty :3)" }) + end, + }, +} diff --git a/homes/modules/editor/neovim/lua/plugins/fyler.lua b/homes/modules/editor/neovim/lua/plugins/fyler.lua new file mode 100644 index 0000000..2737b78 --- /dev/null +++ b/homes/modules/editor/neovim/lua/plugins/fyler.lua @@ -0,0 +1,22 @@ +return { + { + "fyler.nvim", + cmd = { "Fyler" }, + keys = { + { + "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, + }, +} diff --git a/homes/modules/editor/neovim/lua/plugins/init.lua b/homes/modules/editor/neovim/lua/plugins/init.lua new file mode 100644 index 0000000..62de146 --- /dev/null +++ b/homes/modules/editor/neovim/lua/plugins/init.lua @@ -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" }, +}) diff --git a/homes/modules/editor/neovim/lua/plugins/mini-hipatterns.lua b/homes/modules/editor/neovim/lua/plugins/mini-hipatterns.lua new file mode 100644 index 0000000..f41688e --- /dev/null +++ b/homes/modules/editor/neovim/lua/plugins/mini-hipatterns.lua @@ -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, + }, +} diff --git a/homes/modules/editor/neovim/lua/plugins/telescope.lua b/homes/modules/editor/neovim/lua/plugins/telescope.lua new file mode 100644 index 0000000..a61f19c --- /dev/null +++ b/homes/modules/editor/neovim/lua/plugins/telescope.lua @@ -0,0 +1,78 @@ +return { + { + "telescope.nvim", + cmd = { "Telescope" }, + keys = { + { + "f", + function() + return require("telescope.builtin").find_files() + end, + mode = { "n" }, + desc = "Telescope search [F]iles", + }, + { + "tr", + function() + return require("telescope.builtin").oldfiles() + end, + mode = { "n" }, + desc = "[T]elescope search [R]ecent files", + }, + { + "ts", + function() + return require("telescope.builtin").live_grep() + end, + mode = { "n" }, + desc = "[T]elescope [S]earch cwd with grep", + }, + { + "tw", + function() + return require("telescope.builtin").grep_string() + end, + mode = { "n" }, + desc = "[T]elescope search current [W]ord", + }, + { + "tk", + function() + return require("telescope.builtin").keymaps() + end, + mode = { "n" }, + desc = "[T]elescope search [K]eymaps", + }, + { + "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 = { + [""] = actions.move_selection_previous, -- move to prev result + [""] = actions.move_selection_next, -- move to next result + [""] = actions.send_selected_to_qflist + actions.open_qflist, + }, + }, + }, + }) + + pcall(telescope.load_extension, "fzf") + end, + }, +} diff --git a/homes/modules/editor/neovim/lua/plugins/treesitter.lua b/homes/modules/editor/neovim/lua/plugins/treesitter.lua new file mode 100644 index 0000000..55984c7 --- /dev/null +++ b/homes/modules/editor/neovim/lua/plugins/treesitter.lua @@ -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, + }, +} diff --git a/homes/modules/editor/nixvim.nix b/homes/modules/editor/nixvim.nix deleted file mode 100755 index 9197417..0000000 --- a/homes/modules/editor/nixvim.nix +++ /dev/null @@ -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; - }; -} diff --git a/hosts/modules/hyprland/default.nix b/hosts/modules/hyprland/default.nix deleted file mode 100755 index 3029f7c..0000000 --- a/hosts/modules/hyprland/default.nix +++ /dev/null @@ -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) - }; -} diff --git a/hosts/modules/wm/hyprland.nix b/hosts/modules/wm/hyprland.nix index e10eedc..4aa1eb9 100644 --- a/hosts/modules/wm/hyprland.nix +++ b/hosts/modules/wm/hyprland.nix @@ -1,4 +1,11 @@ -{pkgs, ...}: { +{ + inputs, + pkgs, + system, + ... +}: let + # hyprpkgs = inputs.hyprland.packages.${system} +in { environment.defaultPackages = with pkgs; [ hyprsunset ]; @@ -17,9 +24,11 @@ programs = { hyprland = { enable = true; + package = inputs.hyprland.packages.${system}.hyprland; + portalPackage = inputs.hyprland.packages.${system}.xdg-desktop-portal-hyprland; + # withUWSM = true; # Universal Wayland Session Manager xwayland.enable = true; - portalPackage = pkgs.xdg-desktop-portal-hyprland; }; }; } diff --git a/nixpkgs.nix b/nixpkgs.nix index 18fcf98..fa6e201 100644 --- a/nixpkgs.nix +++ b/nixpkgs.nix @@ -11,7 +11,6 @@ (import ./overlays args) ]; config = { - # allowUnfree = false; allowBroken = false; allowUnfreePredicate = pkg: builtins.elem (lib.getName pkg) [ @@ -40,5 +39,16 @@ allowBroken = false; }; }; + + # nixpkgs-master + mpkgs = { + inherit system; + source = inputs.nixpkgs-master; + overlays = []; + config = { + allowUnfree = false; + allowBroken = false; + }; + }; }; }