diff --git a/flake.lock b/flake.lock index 0c0b4683..ce93b121 100644 --- a/flake.lock +++ b/flake.lock @@ -351,11 +351,11 @@ "pre-commit-hooks": "pre-commit-hooks" }, "locked": { - "lastModified": 1719068614, - "narHash": "sha256-XTVc7z7HJiX1j4zVCm9+V3223f4FQuNt5lZKgOeMzNA=", + "lastModified": 1719085595, + "narHash": "sha256-Dvk+5eKgRwrTkx8FF6RceQP3+oEtQ+HYHNuM1MLtYcE=", "owner": "cnsta", "repo": "cnixvim", - "rev": "ef0e10e815060ff243ba85d56f63e84f434d2717", + "rev": "4a3f231c6e979b77ccdae4c6766e231b821a50b1", "type": "github" }, "original": { diff --git a/flake.nix b/flake.nix index 6ef717b3..e0d89e6d 100644 --- a/flake.nix +++ b/flake.nix @@ -10,9 +10,9 @@ url = "https://flakehub.com/f/Svenum/Solaar-Flake/*.tar.gz"; inputs.nixpkgs.follows = "nixpkgs"; }; - # Nixvim - nixvim = { - url = "github:cnsta/cnixvim"; + # Neovim Nightly + neovim-nightly-overlay = { + url = "github:nix-community/neovim-nightly-overlay"; inputs.nixpkgs.follows = "nixpkgs"; }; # Home manager diff --git a/home-manager/home.nix b/home-manager/home.nix index ca4871ca..ee91a120 100644 --- a/home-manager/home.nix +++ b/home-manager/home.nix @@ -9,11 +9,7 @@ }: { # You can import other home-manager modules here imports = [ - # If you want to use home-manager modules from other flakes (such as nix-colors): - # inputs.nix-colors.homeManagerModule - - # You can also split up your configuration and import pieces of it here: - # ./nvim.nix + ./neovim ]; nixpkgs = { @@ -58,7 +54,7 @@ xfce.thunar xfce.thunar-volman xfce.thunar-archive-plugin - xarchiver + gnome.file-roller gvfs swaybg wireguard-tools @@ -77,10 +73,6 @@ fastfetch waybar nwg-look - lxappearance - orchis-theme - gruvbox-plus-icons - gruvbox-gtk-theme mullvad-vpn thefuck calcurse @@ -91,27 +83,40 @@ # programs.waybar.enable = true; wayland.windowManager.hyprland = { - # Whether to enable Hyprland wayland compositor enable = true; - # The hyprland package to use package = pkgs.hyprland; - # Whether to enable XWayland xwayland.enable = true; extraConfig = '' ${builtins.readFile ./hypr/hyprland.conf} ''; - # Optional - # Whether to enable hyprland-session.target on hyprland startup systemd.enable = true; }; + + xdg.portal.extraPortals = [pkgs.xdg-desktop-portal-gtk]; home.sessionVariables = { MOZ_ENABLE_WAYLAND = 1; + NIXOS_OZONE_WL = 1; + SDL_VIDEODRIVER = "wayland"; QT_QPA_PLATFORM = "wayland"; - GTK_THEME = "Orchis-Grey-Dark"; + QT_WAYLAND_DISABLE_WINDOWDECORATION = "1"; }; - xdg.portal.extraPortals = [pkgs.xdg-desktop-portal-wlr]; + gtk = { + enable = true; + theme = { + package = pkgs.orchis-theme; + name = "Orchis-Grey-Dark-Compact"; + }; + iconTheme = { + package = pkgs.gruvbox-plus-icons; + name = "Gruvbox-Plus-Dark"; + }; + font = { + name = "FiraCode Nerd Font Light"; + size = 11; + }; + }; programs = { home-manager.enable = true; diff --git a/home-manager/neovim/default.nix b/home-manager/neovim/default.nix new file mode 100644 index 00000000..e8556c61 --- /dev/null +++ b/home-manager/neovim/default.nix @@ -0,0 +1,131 @@ +{ pkgs, ... }: +with pkgs; +let + + tools = [ + fswatch # File watcher utility, replacing libuv.fs_event for neovim 10.0 + fzf + git + sqlite + tree-sitter + ]; + + c = [ + clang + clang-tools + cmake + gcc + gnumake + ]; + + gamedev = [ + # parser, linter and formatter for GDScript + gdtoolkit_3 + gdtoolkit_4 + ]; + + golang = [ + delve # debugger + go + gofumpt + goimports-reviser + golines + gopls + gotools + ]; + + haskell = [ + haskell-language-server + ghc + ]; + + lua = [ + lua-language-server + stylua + ]; + + markup = [ + cbfmt # format codeblocks + codespell + markdownlint-cli + mdformat + typst-lsp + ]; + + nix = [ + alejandra + nixd + nixfmt-rfc-style + nixpkgs-fmt + statix + ]; + + python = [ + black + isort + python311Packages.jedi-language-server + ruff + ruff-lsp + ]; + + rust = [ + rustToolchain + bacon # background code check + ]; + rustToolchain = pkgs.fenix.stable.withComponents [ + "cargo" + "clippy" + "rust-src" + "rustc" + "rustfmt" + "rust-analyzer" + ]; + + shell = [ + nodePackages.bash-language-server + shellcheck + shfmt + ]; + + web = [ + deno + nodePackages.sql-formatter + nodePackages.typescript-language-server + nodejs + prettierd # multi-language formatters + vscode-langservers-extracted + yarn + ]; + + extraPackages = + tools + ++ c + ++ gamedev + ++ golang + ++ haskell + ++ lua + ++ markup + ++ nix + ++ python + ++ rust + ++ shell + ++ web; +in + +{ + # for quick development + home.packages = rust; + + programs.neovim = { + enable = true; + defaultEditor = true; + package = pkgs.neovim-unwrapped; + plugins = with pkgs.vimPlugins; [ telescope-cheat-nvim ]; + inherit extraPackages; + }; + + programs.helix = { + enable = true; + inherit extraPackages; + }; +} diff --git a/nixos/configuration.nix b/nixos/configuration.nix index b234b5e0..5cd50078 100644 --- a/nixos/configuration.nix +++ b/nixos/configuration.nix @@ -89,6 +89,9 @@ pkgs.python312Packages.oauth2 pkgs.python312Packages.httplib2 pkgs.killall + pkgs.alejandra + pkgs.tree-sitter + pkgs.lazygit ]; localBinInPath = true; }; @@ -129,6 +132,12 @@ programs = { solaar.enable = true; + nix-ld.enable = true; + adb.enable = true; + neovim = { + enable = true; + defaultEditor = true; + }; hyprland = { enable = true; xwayland.enable = true;