From 3247e4a8e62753306c0bfccfe76338f949737a86 Mon Sep 17 00:00:00 2001 From: Ryan Yin Date: Fri, 8 Mar 2024 22:53:49 +0800 Subject: [PATCH] refactor: use lib.optionals instead of if...then...else... --- home/base/desktop/cloud/default.nix | 10 +- home/base/desktop/dev-tools.nix | 4 +- home/base/desktop/editors/packages.nix | 4 +- home/base/desktop/terminal/wezterm.nix | 155 ++++++++++++------------- home/base/server/core.nix | 92 +++++++-------- 5 files changed, 129 insertions(+), 136 deletions(-) diff --git a/home/base/desktop/cloud/default.nix b/home/base/desktop/cloud/default.nix index 402a8467..6cfba4da 100644 --- a/home/base/desktop/cloud/default.nix +++ b/home/base/desktop/cloud/default.nix @@ -1,4 +1,8 @@ -{pkgs, ...}: { +{ + lib, + pkgs, + ... +}: { home.packages = with pkgs; [ # general tools @@ -26,12 +30,10 @@ aliyun-cli ] ++ ( - if pkgs.stdenv.isLinux - then [ + lib.optionals pkgs.stdenv.isLinux [ # 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/dev-tools.nix b/home/base/desktop/dev-tools.nix index 37e66b08..73980601 100644 --- a/home/base/desktop/dev-tools.nix +++ b/home/base/desktop/dev-tools.nix @@ -41,8 +41,7 @@ exercism ] ++ ( - if pkgs.stdenv.isLinux - then [ + 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 @@ -57,7 +56,6 @@ wireshark # network analyzer ventoy # create bootable usb ] - else [] ); programs = { diff --git a/home/base/desktop/editors/packages.nix b/home/base/desktop/editors/packages.nix index ceb85214..2ee908ce 100644 --- a/home/base/desktop/editors/packages.nix +++ b/home/base/desktop/editors/packages.nix @@ -129,9 +129,7 @@ (ripgrep.override {withPCRE2 = true;}) # recursively searches directories for a regex pattern ] ++ ( - if pkgs.stdenv.isDarwin - then [] - else [ + lib.optionals pkgs.stdenv.isLinux [ #-- verilog / systemverilog verible gdb diff --git a/home/base/desktop/terminal/wezterm.nix b/home/base/desktop/terminal/wezterm.nix index 596d7cda..9427caf3 100644 --- a/home/base/desktop/terminal/wezterm.nix +++ b/home/base/desktop/terminal/wezterm.nix @@ -18,93 +18,88 @@ # we can add wezterm as a flake input once this PR is merged: # https://github.com/wez/wezterm/pull/3547 - programs.wezterm = - { - enable = false; # disable + programs.wezterm = { + enable = true; # disable - # TODO: Fix: https://github.com/wez/wezterm/issues/4483 - # package = pkgs.wezterm.override { }; + # install wezterm via homebrew on macOS to avoid compilation, dummy package here. + package = + if pkgs.stdenv.isLinux + then pkgs.wezterm + else pkgs.hello; - extraConfig = let - fontsize = - if pkgs.stdenv.isDarwin - then "14.0" - else "13.0"; - in '' - -- Pull in the wezterm API - local wezterm = require 'wezterm' + enableBashIntegration = pkgs.stdenv.isLinux; + enableZshIntegration = pkgs.stdenv.isLinux; - -- This table will hold the configuration. - local config = {} + extraConfig = let + fontsize = + if pkgs.stdenv.isLinux + then "13.0" + else "14.0"; + in '' + -- Pull in the wezterm API + local wezterm = require 'wezterm' - -- In newer versions of wezterm, use the config_builder which will - -- help provide clearer error messages - if wezterm.config_builder then - config = wezterm.config_builder() + -- This table will hold the configuration. + local config = {} + + -- In newer versions of wezterm, use the config_builder which will + -- help provide clearer error messages + if wezterm.config_builder then + config = wezterm.config_builder() + end + + wezterm.on('toggle-opacity', function(window, pane) + local overrides = window:get_config_overrides() or {} + if not overrides.window_background_opacity then + overrides.window_background_opacity = 0.93 + else + overrides.window_background_opacity = nil end + window:set_config_overrides(overrides) + end) - wezterm.on('toggle-opacity', function(window, pane) - local overrides = window:get_config_overrides() or {} - if not overrides.window_background_opacity then - overrides.window_background_opacity = 0.93 - else - overrides.window_background_opacity = nil - end - window:set_config_overrides(overrides) - end) + wezterm.on('toggle-maximize', function(window, pane) + window:maximize() + end) - wezterm.on('toggle-maximize', function(window, pane) - window:maximize() - end) + -- This is where you actually apply your config choices + config.color_scheme = "Catppuccin Mocha" + config.font = wezterm.font_with_fallback { + "JetBrainsMono Nerd Font", + "FiraCode Nerd Font", - -- This is where you actually apply your config choices - config.color_scheme = "Catppuccin Mocha" - config.font = wezterm.font_with_fallback { - "JetBrainsMono Nerd Font", - "FiraCode Nerd Font", - - -- To avoid 'Chinese characters displayed as variant (Japanese) glyphs' - "Source Han Sans SC", - "Source Han Sans TC" - } - - config.hide_tab_bar_if_only_one_tab = true - config.scrollback_lines = 10000 - config.enable_scroll_bar = true - config.term = 'wezterm' - - config.keys = { - -- toggle opacity(CTRL + SHIFT + B) - { - key = 'B', - mods = 'CTRL', - action = wezterm.action.EmitEvent 'toggle-opacity', - }, - { - key = 'M', - mods = 'CTRL', - action = wezterm.action.EmitEvent 'toggle-maximize', - }, - } - config.font_size = ${fontsize} - - -- To resolve issues: - -- 1. https://github.com/ryan4yin/nix-config/issues/26 - -- 2. https://github.com/ryan4yin/nix-config/issues/8 - -- Spawn a nushell in login mode via `bash` - config.default_prog = { '${pkgs.bash}/bin/bash', '--login', '-c', 'nu --login --interactive' } - - return config - ''; - } - // ( - if pkgs.stdenv.isDarwin - then { - # install wezterm via homebrew on macOS to avoid compilation, dummy package here. - # package = pkgs.hello; - enableBashIntegration = false; - enableZshIntegration = false; + -- To avoid 'Chinese characters displayed as variant (Japanese) glyphs' + "Source Han Sans SC", + "Source Han Sans TC" } - else {} - ); + + config.hide_tab_bar_if_only_one_tab = true + config.scrollback_lines = 10000 + config.enable_scroll_bar = true + config.term = 'wezterm' + + config.keys = { + -- toggle opacity(CTRL + SHIFT + B) + { + key = 'B', + mods = 'CTRL', + action = wezterm.action.EmitEvent 'toggle-opacity', + }, + { + key = 'M', + mods = 'CTRL', + action = wezterm.action.EmitEvent 'toggle-maximize', + }, + } + config.font_size = ${fontsize} + + -- To resolve issues: + -- 1. https://github.com/ryan4yin/nix-config/issues/26 + -- 2. https://github.com/ryan4yin/nix-config/issues/8 + -- Spawn a nushell in login mode via `bash` + config.default_prog = { '${pkgs.bash}/bin/bash', '--login', '-c', 'nu --login --interactive' } + + return config + ''; + }; } diff --git a/home/base/server/core.nix b/home/base/server/core.nix index e0d98586..05a31dee 100644 --- a/home/base/server/core.nix +++ b/home/base/server/core.nix @@ -4,59 +4,59 @@ 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 - ncdu # analyzer your disk usage Interactively, via TUI(replacement of `du`) - 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 + ncdu # analyzer your disk usage Interactively, via TUI(replacement of `du`) + 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 - - # productivity - caddy # A webserver with automatic HTTPS via Let's Encrypt(replacement of nginx) - croc # File transfer between computers securely and easily + # 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 + ] # self-hosted nix cache server - attic.packages.${pkgs.system}.attic-client - ]; + ++ lib.optionals pkgs.stdenv.isLinux [attic.packages.${pkgs.system}.attic-client]; programs = { # A modern replacement for ‘ls’