diff --git a/modules/home-manager/desktop.nix b/modules/home-manager/desktop.nix new file mode 100644 index 0000000..75f0256 --- /dev/null +++ b/modules/home-manager/desktop.nix @@ -0,0 +1,36 @@ +{ + config, + lib, + pkgs, + inputs, + ... +}: +{ + options = { + desktop.enable = lib.mkEnableOption "desktop gui applications"; + }; + + config = lib.mkIf config.desktop.enable { + home.packages = with pkgs; [ + ghostty + google-chrome + zathura + pavucontrol + bolt-launcher + libnotify + bibata-cursors + vesktop + rocketchat-desktop + telegram-desktop + slack + jellyfin-media-player + cider-2 + protonmail-bridge + ledger-live-desktop + ]; + + services.dunst.enable = true; + + home.file.".assets".source = inputs.assets; + }; +} diff --git a/modules/home-manager/dev.nix b/modules/home-manager/dev.nix new file mode 100644 index 0000000..d08f66f --- /dev/null +++ b/modules/home-manager/dev.nix @@ -0,0 +1,37 @@ +{ + config, + lib, + pkgs, + inputs, + ... +}: +let + packages = inputs.self.outputs.packages.${pkgs.stdenv.hostPlatform.system}; +in +{ + options = { + dev.enable = lib.mkEnableOption "development tools"; + }; + + config = lib.mkIf config.dev.enable { + home.packages = [ + pkgs.git + packages.git-linearize + packages.ggman + pkgs.go + pkgs.python3 + pkgs.mdbook + pkgs.marksman + pkgs.mdformat + pkgs.google-cloud-sdk + pkgs.google-cloud-sql-proxy + packages.ahab + pkgs.just + ]; + + programs.direnv = { + enable = true; + nix-direnv.enable = true; + }; + }; +} diff --git a/modules/home-manager/neovim.nix b/modules/home-manager/neovim.nix new file mode 100644 index 0000000..39d9617 --- /dev/null +++ b/modules/home-manager/neovim.nix @@ -0,0 +1,59 @@ +{ + config, + lib, + pkgs, + ... +}: +{ + options = { + neovim = { + enable = lib.mkEnableOption "neovim nightly with lsp support"; + package = lib.mkPackageOption pkgs "neovim" { }; + }; + }; + + config = lib.mkIf config.neovim.enable { + stylix.targets.neovim.enable = false; + programs.neovim = { + enable = true; + vimAlias = true; + defaultEditor = true; + inherit (config.neovim) package; + + extraPackages = with pkgs; [ + # runtime deps + gcc + luajit + nodejs_22 + tree-sitter + gnumake + osc + + # search and diff + fd + ripgrep + bat + delta + + # language servers + pyright + typescript-language-server + lua-language-server + gopls + nil + nixd + + # formatters + nixpkgs-fmt + stylua + ]; + + extraWrapperArgs = [ + "--suffix" + "LD_LIBRARY_PATH" + ":" + "${lib.makeLibraryPath [ pkgs.stdenv.cc.cc.lib ]}" + ]; + }; + }; +} diff --git a/modules/home-manager/shell.nix b/modules/home-manager/shell.nix new file mode 100644 index 0000000..5a4d4f7 --- /dev/null +++ b/modules/home-manager/shell.nix @@ -0,0 +1,26 @@ +{ + config, + lib, + pkgs, + ... +}: +{ + options = { + shell.enable = lib.mkEnableOption "shell utilities"; + }; + + config = lib.mkIf config.shell.enable { + home.packages = with pkgs; [ + starship + fzf + htop + jc + jq + openssl + pv + ripgrep + fd + tmux + ]; + }; +} diff --git a/users/matej/home-manager.nix b/users/matej/home-manager.nix index 949456e..1d11da1 100644 --- a/users/matej/home-manager.nix +++ b/users/matej/home-manager.nix @@ -1,132 +1,25 @@ { - config, - lib, pkgs, inputs, + osConfig, ... }: -let - packages = inputs.self.outputs.packages.${pkgs.stdenv.hostPlatform.system}; -in - { + home.stateVersion = "24.11"; + + # always-on + shell.enable = true; + dev.enable = true; + neovim = { + enable = true; + package = inputs.neovim-nightly-overlay.packages.${pkgs.stdenv.hostPlatform.system}.default; + }; claude = { enable = true; package = inputs.claude-code-overlay.packages.${pkgs.stdenv.hostPlatform.system}.default; }; - home.stateVersion = "24.11"; - - # TODO:(@janezicmatej) do i need this here? - services.dunst.enable = true; - - home.packages = [ - pkgs.bibata-cursors - - pkgs.starship - - # git and co - pkgs.git - packages.git-linearize - packages.ggman - - # cli utils - packages.ahab - pkgs.fzf - pkgs.htop - pkgs.jc - pkgs.jq - pkgs.openssl - pkgs.pv - pkgs.python3 - pkgs.ripgrep - pkgs.fd - pkgs.tmux - pkgs.osc - pkgs.just - - # compilers, toolchains, ... - pkgs.go - # pkgs.gcc - # pkgs.clang - - # need for gcp stuff - pkgs.google-cloud-sdk - pkgs.google-cloud-sql-proxy - - # desktop apps - pkgs.vesktop - pkgs.rocketchat-desktop - pkgs.telegram-desktop - pkgs.slack - pkgs.ghostty - pkgs.google-chrome - pkgs.zathura - pkgs.pavucontrol - pkgs.jellyfin-media-player - pkgs.cider-2 - pkgs.protonmail-bridge - pkgs.ledger-live-desktop - pkgs.bolt-launcher - pkgs.libnotify - - # writing/docs - pkgs.mdbook - pkgs.marksman - pkgs.mdformat - - # security - pkgs.gnupg - pkgs.pass - ]; - - home.file.".assets".source = inputs.assets; - - programs.direnv = { - enable = true; - nix-direnv.enable = true; - }; - - stylix.targets.neovim.enable = false; - programs.neovim = { - enable = true; - vimAlias = true; - defaultEditor = true; - - package = inputs.neovim-nightly-overlay.packages.${pkgs.stdenv.hostPlatform.system}.default; - - extraPackages = with pkgs; [ - # runtime deps - gcc - luajit - nodejs_22 # copilot - - tree-sitter - - # lua_fzf - fd - ripgrep - bat - gnumake - delta - - pyright - typescript-language-server - lua-language-server - gopls - nil - nixd - - nixpkgs-fmt - stylua - ]; - - extraWrapperArgs = [ - "--suffix" - "LD_LIBRARY_PATH" - ":" - "${lib.makeLibraryPath [ pkgs.stdenv.cc.cc.lib ]}" - ]; - }; + # desktop-conditional + desktop.enable = osConfig.desktop.enable; }