From 14371701272a7772303f3b7e0d2f9c49fc51e4d8 Mon Sep 17 00:00:00 2001 From: Ryan Yin Date: Mon, 11 Mar 2024 14:16:19 +0800 Subject: [PATCH] refactor: remove broken packages via overlays --- home/base/desktop/cloud/default.nix | 53 +++--- home/base/desktop/dev-tools.nix | 68 ++++---- home/base/desktop/editors/packages.nix | 224 ++++++++++++------------- home/base/server/core.nix | 93 +++++----- modules/darwin/broken-packages.nix | 32 ++++ 5 files changed, 243 insertions(+), 227 deletions(-) create mode 100644 modules/darwin/broken-packages.nix diff --git a/home/base/desktop/cloud/default.nix b/home/base/desktop/cloud/default.nix index 52b47634..5e183d07 100644 --- a/home/base/desktop/cloud/default.nix +++ b/home/base/desktop/cloud/default.nix @@ -3,35 +3,30 @@ pkgs, ... }: { - home.packages = with pkgs; - [ - # infrastructure as code - # pulumi - # pulumictl - # tf2pulumi - # crd2pulumi - # pulumiPackages.pulumi-random - # pulumiPackages.pulumi-command - # pulumiPackages.pulumi-aws-native - # pulumiPackages.pulumi-language-go - # pulumiPackages.pulumi-language-python - # pulumiPackages.pulumi-language-nodejs + home.packages = with pkgs; [ + # infrastructure as code + # pulumi + # pulumictl + # tf2pulumi + # crd2pulumi + # pulumiPackages.pulumi-random + # pulumiPackages.pulumi-command + # pulumiPackages.pulumi-aws-native + # pulumiPackages.pulumi-language-go + # pulumiPackages.pulumi-language-python + # pulumiPackages.pulumi-language-nodejs - # aws - awscli2 - ssm-session-manager-plugin # Amazon SSM Session Manager Plugin - aws-iam-authenticator - eksctl + # aws + awscli2 + ssm-session-manager-plugin # Amazon SSM Session Manager Plugin + aws-iam-authenticator + eksctl - # aliyun - aliyun-cli - ] - ++ ( - lib.optionals pkgs.stdenv.isLinux [ - # cloud tools that nix do not have cache for. - terraform - terraformer # generate terraform configs from existing cloud resources - packer # machine image builder - ] - ); + # aliyun + aliyun-cli + # cloud tools that nix do not have cache for. + terraform + terraformer # generate terraform configs from existing cloud resources + packer # machine image builder + ]; } diff --git a/home/base/desktop/dev-tools.nix b/home/base/desktop/dev-tools.nix index 73980601..8253618e 100644 --- a/home/base/desktop/dev-tools.nix +++ b/home/base/desktop/dev-tools.nix @@ -14,49 +14,45 @@ # ############################################################# - home.packages = with pkgs; - [ - colmena # nixos's remote deployment tool + home.packages = with pkgs; [ + colmena # nixos's remote deployment tool - # db related - dbeaver - mycli - pgcli - mongosh - sqlite + # db related + dbeaver + mycli + pgcli + mongosh + sqlite - # embedded development - minicom + # embedded development + minicom - # ai related - python311Packages.huggingface-hub # huggingface-cli + # ai related + python311Packages.huggingface-hub # huggingface-cli - # misc - pkgs-unstable.devbox - bfg-repo-cleaner # remove large files from git history - k6 # load testing tool - protobuf # protocol buffer compiler + # misc + pkgs-unstable.devbox + bfg-repo-cleaner # remove large files from git history + k6 # load testing tool + protobuf # protocol buffer compiler - # solve coding extercises - learn by doing - exercism - ] - ++ ( - lib.optionals pkgs.stdenv.isLinux [ - # 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 + # solve coding extercises - learn by doing + exercism - # need to run `conda-install` before using it - # need to run `conda-shell` before using command `conda` - # conda is not available for MacOS - conda + # 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 - mitmproxy # http/https proxy tool - insomnia # REST client - wireshark # network analyzer - ventoy # create bootable usb - ] - ); + # 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 + ventoy # create bootable usb + ]; programs = { direnv = { diff --git a/home/base/desktop/editors/packages.nix b/home/base/desktop/editors/packages.nix index f2545d38..70c1817b 100644 --- a/home/base/desktop/editors/packages.nix +++ b/home/base/desktop/editors/packages.nix @@ -5,133 +5,129 @@ ''; }; - home.packages = with pkgs; - [ - #-- c/c++ - cmake - cmake-language-server - gnumake - checkmake - # c/c++ compiler, required by nvim-treesitter! - gcc - # c/c++ tools with clang-tools, the unwrapped version won't - # add alias like `cc` and `c++`, so that it won't conflict with gcc - llvmPackages.clang-unwrapped - lldb + home.packages = with pkgs; [ + #-- c/c++ + cmake + cmake-language-server + gnumake + checkmake + # c/c++ compiler, required by nvim-treesitter! + gcc + # c/c++ tools with clang-tools, the unwrapped version won't + # add alias like `cc` and `c++`, so that it won't conflict with gcc + llvmPackages.clang-unwrapped + lldb - #-- python - nodePackages.pyright # python language server - (python311.withPackages ( - ps: - with ps; [ - ruff-lsp - black # python formatter + #-- python + nodePackages.pyright # python language server + (python311.withPackages ( + ps: + with ps; [ + ruff-lsp + black # python formatter - jupyter - ipython - pandas - requests - pyquery - pyyaml + jupyter + ipython + pandas + requests + pyquery + pyyaml - ## emacs's lsp-bridge dependenciesge - epc - orjson - sexpdata - six - setuptools - paramiko - rapidfuzz - ] - )) + ## emacs's lsp-bridge dependenciesge + epc + orjson + sexpdata + six + setuptools + paramiko + rapidfuzz + ] + )) - #-- rust - rust-analyzer - cargo # rust package manager - rustfmt + #-- rust + rust-analyzer + cargo # rust package manager + rustfmt - #-- 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 + #-- 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 + #-- 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 + # -- java + jdk17 + gradle + maven + spring-boot-cli - #-- lua - stylua - lua-language-server + #-- lua + stylua + lua-language-server - #-- bash - nodePackages.bash-language-server - shellcheck - shfmt + #-- bash + nodePackages.bash-language-server + shellcheck + shfmt - #-- javascript/typescript --# - nodePackages.nodejs - nodePackages.typescript - nodePackages.typescript-language-server - # HTML/CSS/JSON/ESLint language servers extracted from vscode - nodePackages.vscode-langservers-extracted - nodePackages."@tailwindcss/language-server" - emmet-ls + #-- javascript/typescript --# + nodePackages.nodejs + nodePackages.typescript + nodePackages.typescript-language-server + # HTML/CSS/JSON/ESLint language servers extracted from vscode + nodePackages.vscode-langservers-extracted + nodePackages."@tailwindcss/language-server" + emmet-ls - # -- Lisp like Languages - guile - racket-minimal - fnlfmt # fennel + # -- Lisp like Languages + guile + racket-minimal + fnlfmt # fennel - #-- 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 + #-- 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 - pandoc # document converter - hugo # static site generator + #-- Misc + tree-sitter # common language parser/highlighter + nodePackages.prettier # common code formatter + marksman # language server for markdown + glow # markdown previewer + fzf + pandoc # document converter + hugo # static site generator - #-- Optional Requirements: - gdu # disk usage analyzer, required by AstroNvim - (ripgrep.override {withPCRE2 = true;}) # recursively searches directories for a regex pattern + #-- Optional Requirements: + gdu # disk usage analyzer, required by AstroNvim + (ripgrep.override {withPCRE2 = true;}) # recursively searches directories for a regex pattern - #-- CloudNative - nodePackages.dockerfile-language-server-nodejs - # terraform # install via brew on macOS - terraform-ls - jsonnet-language-server - hadolint # Dockerfile linter - ] - ++ ( - lib.optionals pkgs.stdenv.isLinux [ - jsonnet - #-- zig - zls - #-- verilog / systemverilog - verible - gdb - ] - ); + #-- CloudNative + nodePackages.dockerfile-language-server-nodejs + # terraform # install via brew on macOS + terraform-ls + jsonnet + jsonnet-language-server + hadolint # Dockerfile linter + + #-- zig + zls + #-- verilog / systemverilog + verible + gdb + ]; } diff --git a/home/base/server/core.nix b/home/base/server/core.nix index 8dfb1c90..b4694b48 100644 --- a/home/base/server/core.nix +++ b/home/base/server/core.nix @@ -4,61 +4,58 @@ nur-ryan4yin, ... }: { - home.packages = with pkgs; - [ - # Misc - tldr - cowsay - gnupg - gnumake + home.packages = with pkgs; [ + # Misc + tldr + cowsay + gnupg + gnumake - # Morden cli tools, replacement of grep/sed/... + # Morden cli tools, replacement of grep/sed/... - # Interactively filter its input using fuzzy searching, not limit to filenames. - fzf - # search for files by name, faster than find - fd - # search for files by its content, replacement of grep - (ripgrep.override {withPCRE2 = true;}) + # Interactively filter its input using fuzzy searching, not limit to filenames. + fzf + # search for files by name, faster than find + fd + # search for files by its content, replacement of grep + (ripgrep.override {withPCRE2 = true;}) - # A fast and polyglot tool for code searching, linting, rewriting at large scale - # supported languages: only some mainstream languages currently(do not support nix/nginx/yaml/toml/...) - ast-grep + # A fast and polyglot tool for code searching, linting, rewriting at large scale + # supported languages: only some mainstream languages currently(do not support nix/nginx/yaml/toml/...) + ast-grep - sad # CLI search and replace, just like sed, but with diff preview. - yq-go # yaml processer https://github.com/mikefarah/yq - just # a command runner like make, but simpler - delta # A viewer for git and diff output - lazygit # Git terminal UI. - hyperfine # command-line benchmarking tool - gping # ping, but with a graph(TUI) - doggo # DNS client for humans - duf # Disk Usage/Free Utility - a better 'df' alternative - du-dust # A more intuitive version of `du` in rust - gdu # disk usage analyzer(replacement of `du`) + sad # CLI search and replace, just like sed, but with diff preview. + yq-go # yaml processer https://github.com/mikefarah/yq + just # a command runner like make, but simpler + delta # A viewer for git and diff output + lazygit # Git terminal UI. + hyperfine # command-line benchmarking tool + gping # ping, but with a graph(TUI) + doggo # DNS client for humans + duf # Disk Usage/Free Utility - a better 'df' alternative + du-dust # A more intuitive version of `du` in rust + gdu # disk usage analyzer(replacement of `du`) - # nix related - # - # it provides the command `nom` works just like `nix - # with more details log output - nix-output-monitor - hydra-check # check hydra(nix's build farm) for the build status of a package - nix-index # A small utility to index nix store paths - nix-init # generate nix derivation from url - # https://github.com/nix-community/nix-melt - nix-melt # A TUI flake.lock viewer - # https://github.com/utdemir/nix-tree - nix-tree # A TUI to visualize the dependency graph of a nix derivation + # nix related + # + # it provides the command `nom` works just like `nix + # with more details log output + nix-output-monitor + hydra-check # check hydra(nix's build farm) for the build status of a package + nix-index # A small utility to index nix store paths + nix-init # generate nix derivation from url + # https://github.com/nix-community/nix-melt + nix-melt # A TUI flake.lock viewer + # https://github.com/utdemir/nix-tree + nix-tree # A TUI to visualize the dependency graph of a nix derivation - # productivity - caddy # A webserver with automatic HTTPS via Let's Encrypt(replacement of nginx) - croc # File transfer between computers securely and easily - ] + # productivity + caddy # A webserver with automatic HTTPS via Let's Encrypt(replacement of nginx) + croc # File transfer between computers securely and easily # self-hosted nix cache server - ++ lib.optionals (pkgs.system != "x86_64-darwin") [ - attic.packages.${pkgs.system}.attic-client - ncdu # analyzer your disk usage Interactively, via TUI(replacement of `du`) - ]; + attic.packages.${pkgs.system}.attic-client + ncdu # analyzer your disk usage Interactively, via TUI(replacement of `du`) + ]; programs = { # A modern replacement for ‘ls’ diff --git a/modules/darwin/broken-packages.nix b/modules/darwin/broken-packages.nix new file mode 100644 index 00000000..ae696830 --- /dev/null +++ b/modules/darwin/broken-packages.nix @@ -0,0 +1,32 @@ +{lib, ...}: +# =================================================================== +# Remove packages that are not well supported for the Darwin platform +# =================================================================== +let + brokenPackages = [ + "terraform" + "terraformer" + "packer" + "git-trim" + "conda" + "mitmproxy" + "insomnia" + "wireshark" + "ventoy" + "jsonnet" + "zls" + "verible" + "gdb" + ]; +in { + nixpkgs.overlays = [ + (_: super: let + removeUnwantedPackages = pname: + lib.warn "the ${pname} has been removed on the darwin platform" + super.emptyDirectory; + in + lib.genAttrs + brokenPackages + removeUnwantedPackages) + ]; +}