From b0e481a1f19315d567b3422f12bd965dcd0d6d9c Mon Sep 17 00:00:00 2001 From: Ryan Yin Date: Wed, 6 Dec 2023 10:44:45 +0800 Subject: [PATCH] fix: package collisions --- home/base/desktop/cloud/default.nix | 9 +- home/base/desktop/development.nix | 63 +++++---- home/base/desktop/neovim/default.nix | 198 ++++++++++++++------------- home/linux/base/system-tools.nix | 13 -- home/linux/desktop/default.nix | 4 - modules/darwin/apps.nix | 2 +- modules/nixos/core-desktop.nix | 12 +- 7 files changed, 148 insertions(+), 153 deletions(-) diff --git a/home/base/desktop/cloud/default.nix b/home/base/desktop/cloud/default.nix index 6cefa860..7fae9f42 100644 --- a/home/base/desktop/cloud/default.nix +++ b/home/base/desktop/cloud/default.nix @@ -16,8 +16,9 @@ # aliyun aliyun-cli - ]; - - programs = { - }; + ] ++ (if pkgs.stdenv.isLinux then [ + # cloud tools that nix do not have cache for. + terraform + terraformer # generate terraform configs from existing cloud resources + ] else []); } diff --git a/home/base/desktop/development.nix b/home/base/desktop/development.nix index b6fa3371..4832999c 100644 --- a/home/base/desktop/development.nix +++ b/home/base/desktop/development.nix @@ -8,33 +8,28 @@ # Basic settings for development environment # # Please avoid to install language specific packages here(globally), - # instead, install them independently using dev-templates: - # https://github.com/the-nix-way/dev-templates + # instead, install them: + # 1. per IDE, such as `programs.neovim.extraPackages` + # 2. per-project, using https://github.com/the-nix-way/dev-templates # ############################################################# home.packages = with pkgs; [ - pkgs-unstable.devbox + (python311.withPackages ( + ps: + with ps; [ + ipython + pandas + requests + pyquery + pyyaml + ] + )) - # DO NOT install build tools for C/C++ and others, set it per project by devShell instead - gnumake # used by this repo, to simplify the deployment - jdk17 # used to run some java based tools(.jar) - gradle - maven - spring-boot-cli - - # scheme related - guile - - # python - (python311.withPackages (ps: - with ps; [ - ipython - pandas - requests - pyquery - pyyaml - ])) + cargo # rust package manager + go + jdk17 + guile # scheme language # db related dbeaver @@ -46,11 +41,29 @@ # embedded development minicom - # other tools - bfg-repo-cleaner # remove large files from git history + # misc + pkgs-unstable.devbox + glow # markdown previewer + fzf + gdu # disk usage analyzer, required by AstroNvim + ripgrep # fast search tool, required by AstroNvim's 'fw'( is space key) + bfg-repo-cleaner # remove large files from git history k6 # load testing tool protobuf # protocol buffer compiler - ]; + ] ++ (if pkgs.stdenv.isLinux then [ + # Automatically trims your branches whose tracking remote refs are merged or gone + # It's really useful when you work on a project for a long time. + git-trim + + # need to run `conda-install` before using it + # need to run `conda-shell` before using command `conda` + # conda is not available for MacOS + conda + + mitmproxy # http/https proxy tool + insomnia # REST client + wireshark # network analyzer + ] else []); programs = { direnv = { diff --git a/home/base/desktop/neovim/default.nix b/home/base/desktop/neovim/default.nix index 36c861fa..eb906e5e 100644 --- a/home/base/desktop/neovim/default.nix +++ b/home/base/desktop/neovim/default.nix @@ -34,7 +34,108 @@ withPython3 = true; withNodeJs = true; - extraPackages = with pkgs; []; + + # Extra packages only available to nvim(won't pollute the global home environment) + extraPackages = with pkgs; + [ + #-- c/c++ + cmake + cmake-language-server + gnumake + checkmake + gcc # c/c++ compiler, required by nvim-treesitter! + llvmPackages.clang-unwrapped # c/c++ tools with clang-tools such as clangd + gdb + lldb + + #-- python + nodePackages.pyright # python language server + python311Packages.black # python formatter + python311Packages.ruff-lsp + + #-- rust + rust-analyzer + cargo # rust package manager + rustfmt + + #-- zig + zls + + #-- nix + nil + rnix-lsp + # nixd + statix # Lints and suggestions for the nix programming language + deadnix # Find and remove unused code in .nix source files + alejandra # Nix Code Formatter + + #-- golang + go + gomodifytags + iferr # generate error handling code for go + impl # generate function implementation for go + gotools # contains tools like: godoc, goimports, etc. + gopls # go language server + delve # go debugger + + # -- java + jdk17 + gradle + maven + spring-boot-cli + + #-- lua + stylua + lua-language-server + + #-- bash + nodePackages.bash-language-server + shellcheck + shfmt + + #-- javascript/typescript --# + nodePackages.typescript + nodePackages.typescript-language-server + # HTML/CSS/JSON/ESLint language servers extracted from vscode + nodePackages.vscode-langservers-extracted + nodePackages."@tailwindcss/language-server" + + #-- CloudNative + nodePackages.dockerfile-language-server-nodejs + # terraform # install via brew on macOS + terraform-ls + jsonnet + jsonnet-language-server + hadolint # Dockerfile linter + + #-- Others + taplo # TOML language server / formatter / validator + nodePackages.yaml-language-server + sqlfluff # SQL linter + actionlint # GitHub Actions linter + buf # protoc plugin for linting and formatting + proselint # English prose linter + guile # scheme language + + #-- Misc + tree-sitter # common language parser/highlighter + nodePackages.prettier # common code formatter + marksman # language server for markdown + glow # markdown previewer + fzf + + #-- Optional Requirements: + gdu # disk usage analyzer, required by AstroNvim + ripgrep # fast search tool, required by AstroNvim's 'fw'( is space key) + ] + ++ ( + if pkgs.stdenv.isDarwin + then [] + else [ + #-- verilog / systemverilog + verible + ] + ); # currently we use lazy.nvim as neovim's package manager, so comment this one. # plugins = with pkgs.vimPlugins; [ @@ -42,99 +143,4 @@ # ]; }; }; - home = { - packages = with pkgs; - [ - #-- c/c++ - cmake - cmake-language-server - gnumake - checkmake - gcc # c/c++ compiler, required by nvim-treesitter! - llvmPackages.clang-unwrapped # c/c++ tools with clang-tools such as clangd - gdb - # lldb # TODO - fix python3.11's package conflict - six.py - - #-- python - nodePackages.pyright # python language server - python311Packages.black # python formatter - python311Packages.ruff-lsp - - #-- rust - rust-analyzer - cargo # rust package manager - rustfmt - - #-- zig - zls - - #-- nix - nil - rnix-lsp - # nixd - statix # Lints and suggestions for the nix programming language - deadnix # Find and remove unused code in .nix source files - alejandra # Nix Code Formatter - - #-- golang - go - gomodifytags - iferr # generate error handling code for go - impl # generate function implementation for go - gotools # contains tools like: godoc, goimports, etc. - gopls # go language server - delve # go debugger - - #-- lua - stylua - lua-language-server - - #-- bash - nodePackages.bash-language-server - shellcheck - shfmt - - #-- javascript/typescript --# - nodePackages.typescript - nodePackages.typescript-language-server - # HTML/CSS/JSON/ESLint language servers extracted from vscode - nodePackages.vscode-langservers-extracted - nodePackages."@tailwindcss/language-server" - - #-- CloudNative - nodePackages.dockerfile-language-server-nodejs - # terraform # install via brew on macOS - terraform-ls - jsonnet - jsonnet-language-server - hadolint # Dockerfile linter - - #-- Others - taplo # TOML language server / formatter / validator - nodePackages.yaml-language-server - sqlfluff # SQL linter - actionlint # GitHub Actions linter - buf # protoc plugin for linting and formatting - proselint # English prose linter - - #-- Misc - tree-sitter # common language parser/highlighter - nodePackages.prettier # common code formatter - marksman # language server for markdown - glow # markdown previewer - fzf - - #-- Optional Requirements: - gdu # disk usage analyzer, required by AstroNvim - ripgrep # fast search tool, required by AstroNvim's 'fw'( is space key) - ] - ++ ( - if pkgs.stdenv.isDarwin - then [] - else [ - #-- verilog / systemverilog - verible - ] - ); - }; } diff --git a/home/linux/base/system-tools.nix b/home/linux/base/system-tools.nix index 8000be06..c9dc15f0 100644 --- a/home/linux/base/system-tools.nix +++ b/home/linux/base/system-tools.nix @@ -1,14 +1,6 @@ {pkgs, ...}: { # Linux Only Packages, not available on Darwin home.packages = with pkgs; [ - # Automatically trims your branches whose tracking remote refs are merged or gone - # It's really useful when you work on a project for a long time. - git-trim - - # cloud tools that nix do not have cache for. - terraform - terraformer # generate terraform configs from existing cloud resources - nmon iotop iftop @@ -17,11 +9,6 @@ libnotify wireguard-tools # manage wireguard vpn manually, via wg-quick - # need to run `conda-install` before using it - # need to run `conda-shell` before using command `conda` - # conda is not available for MacOS - conda - # system call monitoring strace # system call monitoring ltrace # library call monitoring diff --git a/home/linux/desktop/default.nix b/home/linux/desktop/default.nix index b705284a..9a7274b2 100644 --- a/home/linux/desktop/default.nix +++ b/home/linux/desktop/default.nix @@ -11,9 +11,6 @@ home.packages = with pkgs; [ # GUI apps - insomnia # REST client - wireshark # network analyzer - # e-book viewer(.epub/.mobi/...) # do not support .pdf foliate @@ -29,7 +26,6 @@ # misc flameshot - mitmproxy # http/https proxy tool ventoy # multi-boot usb creator ]; diff --git a/modules/darwin/apps.nix b/modules/darwin/apps.nix index 870bc426..ace10f3b 100644 --- a/modules/darwin/apps.nix +++ b/modules/darwin/apps.nix @@ -34,6 +34,7 @@ ]; # Homebrew Mirror + # NOTE: is only useful when you run `brew install` manually! (not via nix-darwin) environment.variables = { HOMEBREW_API_DOMAIN = "https://mirrors.tuna.tsinghua.edu.cn/homebrew-bottles/api"; HOMEBREW_BOTTLE_DOMAIN = "https://mirrors.tuna.tsinghua.edu.cn/homebrew-bottles"; @@ -136,7 +137,6 @@ # Development "insomnia" # REST client "wireshark" # network analyzer - "temurin17" # JDK 17 "jdk-mission-control" # Java Mission Control "google-cloud-sdk" # Google Cloud SDK ]; diff --git a/modules/nixos/core-desktop.nix b/modules/nixos/core-desktop.nix index 1d528aaf..fe93f5ec 100644 --- a/modules/nixos/core-desktop.nix +++ b/modules/nixos/core-desktop.nix @@ -31,16 +31,8 @@ environment.systemPackages = with pkgs; [ parted ventoy - # python, some times I may need to use python with root permission. - (python310.withPackages (ps: - with ps; [ - ipython - pandas - requests - pyquery - pyyaml - ] - )) + gnumake + psmisc # killall/pstree/prtstat/fuser/... colmena # nixos's remote deployment tool pulseaudio # provides `pactl`, which is required by some apps(e.g. sonic-pi)