From dfcbd5029475d8d9ae2deb94d12634c28a4541b0 Mon Sep 17 00:00:00 2001 From: js0ny Date: Sun, 2 Nov 2025 20:24:17 +0000 Subject: [PATCH] nix:use variables --- misc/browser/surfingkeys.js | 3 +- nixcfgs/modules/home/options.nix | 31 +++++++++++++++++++ nixcfgs/modules/nixos/desktop/de/niri.nix | 9 ++++++ nixcfgs/modules/nixos/desktop/default.nix | 4 +++ nixcfgs/modules/nixos/desktop/fonts.nix | 1 + nixcfgs/users/js0ny/config.nix | 10 ++++++ nixcfgs/users/js0ny/default.nix | 12 ++++++- nixcfgs/users/js0ny/packages/gui.nix | 2 ++ .../users/js0ny/programs/gnome/default.nix | 12 ++++--- nixcfgs/users/js0ny/programs/miniserve.nix | 8 +++-- nixcfgs/users/js0ny/programs/niri.nix | 25 +++++++++++++++ nixcfgs/users/js0ny/programs/plasma.nix | 8 +++-- nixcfgs/users/js0ny/programs/shell/zsh.nix | 5 +++ nixcfgs/users/js0ny/zephyrus.nix | 1 + 14 files changed, 121 insertions(+), 10 deletions(-) create mode 100644 nixcfgs/modules/home/options.nix create mode 100644 nixcfgs/users/js0ny/config.nix create mode 100644 nixcfgs/users/js0ny/programs/niri.nix diff --git a/misc/browser/surfingkeys.js b/misc/browser/surfingkeys.js index f1093fb..7116777 100644 --- a/misc/browser/surfingkeys.js +++ b/misc/browser/surfingkeys.js @@ -202,6 +202,7 @@ const mapLists = { "": "E", "": "R", gi: "i", // Use `gl` to search and focus on input box + i: "gi", // t -> Open Link in New Tab t: "gf", // 缩放 @@ -218,7 +219,7 @@ forwardFactory.map(mapLists); // All other unmapped keys should be defined here // TODO: Add more mouse click keymap -api.unmap("gi"); // conflict with `gi` in `mapLists` +// api.unmap("gi"); // conflict with `gi` in `mapLists` api.unmap("C"); // Use `F` instead (Open Link in New Tab) api.map("g/", "gU"); // Goto Root Domain // TODO: Add SPC keymap as leader (maybe change `,` to `SPC`) diff --git a/nixcfgs/modules/home/options.nix b/nixcfgs/modules/home/options.nix new file mode 100644 index 0000000..abc5260 --- /dev/null +++ b/nixcfgs/modules/home/options.nix @@ -0,0 +1,31 @@ +{ + lib, + config, + ... +}: { + options.currentUser = { + defaultShell = lib.mkOption { + type = lib.types.enum ["zsh" "bash" "fish"]; + default = "zsh"; + description = "The default shell to use."; + }; + + defaultTerminal = lib.mkOption { + type = lib.types.str; + default = "ghostty"; + description = "The default terminal emulator."; + }; + + defaultTerminalRunner = lib.mkOption { + type = lib.types.str; + default = config.currentUser.defaultTerminal; + description = "The default terminal emulator to run CLI softwares directly"; + }; + + iconTheme = lib.mkOption { + type = lib.types.str; + default = "Breeze"; + description = "Default icon theme"; + }; + }; +} diff --git a/nixcfgs/modules/nixos/desktop/de/niri.nix b/nixcfgs/modules/nixos/desktop/de/niri.nix index e01f668..b82f45f 100644 --- a/nixcfgs/modules/nixos/desktop/de/niri.nix +++ b/nixcfgs/modules/nixos/desktop/de/niri.nix @@ -7,7 +7,16 @@ rofimoji rofi-power-menu swaylock-effects + swayidle xwayland-satellite wmname + hyprpolkitagent ]; + fonts.packages = [pkgs.font-awesome]; + xdg.portal = { + extraPortals = with pkgs; [ + kdePackages.xdg-desktop-portal-kde + ]; + config.common.default = ["kde" "wlr"]; + }; } diff --git a/nixcfgs/modules/nixos/desktop/default.nix b/nixcfgs/modules/nixos/desktop/default.nix index fb51438..9feba6c 100644 --- a/nixcfgs/modules/nixos/desktop/default.nix +++ b/nixcfgs/modules/nixos/desktop/default.nix @@ -48,4 +48,8 @@ wl-clipboard libnotify ]; + + xdg.portal = { + wlr.enable = true; + }; } diff --git a/nixcfgs/modules/nixos/desktop/fonts.nix b/nixcfgs/modules/nixos/desktop/fonts.nix index 6a9e237..053886d 100644 --- a/nixcfgs/modules/nixos/desktop/fonts.nix +++ b/nixcfgs/modules/nixos/desktop/fonts.nix @@ -9,6 +9,7 @@ pkgs.nerd-fonts.jetbrains-mono pkgs.nur.repos.definfo.sarasa-term-sc-nerd pkgs.vollkorn + pkgs.font-awesome ]; in { environment.systemPackages = fontPkgs; diff --git a/nixcfgs/users/js0ny/config.nix b/nixcfgs/users/js0ny/config.nix new file mode 100644 index 0000000..8029744 --- /dev/null +++ b/nixcfgs/users/js0ny/config.nix @@ -0,0 +1,10 @@ +{ + currentUser = { + defaultShell = "zsh"; + defaultTerminal = "ghostty"; + defaultTerminalRunner = "alacritty"; + iconTheme = "Papirus"; + }; + currentHost = { + }; +} diff --git a/nixcfgs/users/js0ny/default.nix b/nixcfgs/users/js0ny/default.nix index 182ec3b..c82b612 100644 --- a/nixcfgs/users/js0ny/default.nix +++ b/nixcfgs/users/js0ny/default.nix @@ -1,7 +1,15 @@ # ~/.config/nixcfgs/users/js0ny/default.nix -{pkgs, ...}: let +{ + pkgs, + config, + ... +}: let username = "js0ny"; in { + imports = [ + ../../modules/home/options.nix + ./config.nix + ]; home.username = username; home.homeDirectory = if pkgs.stdenv.isDarwin @@ -12,5 +20,7 @@ in { home-manager ]; + home.sessionVariables.TERMINAL = config.currentUser.defaultTerminal; + home.stateVersion = "25.05"; } diff --git a/nixcfgs/users/js0ny/packages/gui.nix b/nixcfgs/users/js0ny/packages/gui.nix index f6745b3..52380f9 100644 --- a/nixcfgs/users/js0ny/packages/gui.nix +++ b/nixcfgs/users/js0ny/packages/gui.nix @@ -55,6 +55,8 @@ vivaldi rustdesk kdePackages.krdc + kdePackages.breeze + zotero # Email protonmail-bridge diff --git a/nixcfgs/users/js0ny/programs/gnome/default.nix b/nixcfgs/users/js0ny/programs/gnome/default.nix index dda50e1..fe0506f 100644 --- a/nixcfgs/users/js0ny/programs/gnome/default.nix +++ b/nixcfgs/users/js0ny/programs/gnome/default.nix @@ -1,4 +1,8 @@ -{pkgs, ...}: { +{ + pkgs, + config, + ... +}: { home.sessionVariables = { QT_STYLE_OVERRIDE = "adwaita"; }; @@ -42,7 +46,7 @@ "org/gnome/desktop/interface" = { clock-show-seconds = true; clock-show-weekday = true; - icon-theme = "Papirus"; + icon-theme = "${config.currentUser.iconTheme}"; accent-color = "pink"; show-battery-percentage = true; cursor-theme = "Adwaita"; @@ -107,12 +111,12 @@ }; "org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom-1" = { name = "Open Terminal via Win-R"; - command = "ghostty"; + command = "${config.currentUser.defaultTerminal}"; binding = "r"; }; "org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom-2" = { name = "Open Terminal via Ctrl-Alt-T"; - command = "ghostty"; + command = "${config.currentUser.defaultTerminal}"; binding = "t"; }; "org/gnome/settings-daemon/plugins/media-keys" = { diff --git a/nixcfgs/users/js0ny/programs/miniserve.nix b/nixcfgs/users/js0ny/programs/miniserve.nix index 76b1f6f..fade1c2 100644 --- a/nixcfgs/users/js0ny/programs/miniserve.nix +++ b/nixcfgs/users/js0ny/programs/miniserve.nix @@ -1,4 +1,8 @@ -{pkgs, ...}: { +{ + pkgs, + config, + ... +}: { home.packages = [pkgs.miniserve]; home.file.".local/share/kio/servicemenus/miniserve.desktop" = { text = '' @@ -14,7 +18,7 @@ Name=Map Directory to Port 8080 Name[CN]=将目录映射到网上(8080) Icon=network-server - Exec=alacritty -t "miniserve" -e miniserve "%f" --port 8080 + Exec=${config.currentUser.defaultTerminalRunner} -t "miniserve" -e miniserve "%f" --port 8080 ''; }; } diff --git a/nixcfgs/users/js0ny/programs/niri.nix b/nixcfgs/users/js0ny/programs/niri.nix new file mode 100644 index 0000000..6afbc39 --- /dev/null +++ b/nixcfgs/users/js0ny/programs/niri.nix @@ -0,0 +1,25 @@ +{ + config, + pkgs, + ... +}: { + home.file."${config.xdg.configHome}/niri/config.kdl" = { + text = '' + spawn-at-startup "waybar" // Status Bar + spawn-at-startup "dunst" // Notifications + spawn-at-startup "fcitx5" // Input Method + spawn-at-startup "${pkgs.hyprpolkitagent}/libexec/hyprpolkitagent" + spawn-at-startup + input { + xkb {} + numlock + touchpad { + tap + naturalscroll + } + mouse {} + } + ''; + enable = false; # TODO: + }; +} diff --git a/nixcfgs/users/js0ny/programs/plasma.nix b/nixcfgs/users/js0ny/programs/plasma.nix index 6aaecca..2f46c70 100644 --- a/nixcfgs/users/js0ny/programs/plasma.nix +++ b/nixcfgs/users/js0ny/programs/plasma.nix @@ -1,4 +1,8 @@ -{pkgs, ...}: { +{ + pkgs, + config, + ... +}: { home.packages = with pkgs; [ # kdePackages.yakuake krunner-vscodeprojects @@ -20,7 +24,7 @@ position = "center"; }; workspace = { - iconTheme = "Papirus"; + iconTheme = "${config.currentUser.iconTheme}"; colorScheme = "BreezeDark"; }; kwin = { diff --git a/nixcfgs/users/js0ny/programs/shell/zsh.nix b/nixcfgs/users/js0ny/programs/shell/zsh.nix index 573d19e..291de86 100644 --- a/nixcfgs/users/js0ny/programs/shell/zsh.nix +++ b/nixcfgs/users/js0ny/programs/shell/zsh.nix @@ -11,6 +11,7 @@ in { programs.zsh = { enable = true; autocd = true; + # oh-my-zsh.enable = true; autosuggestion.enable = true; historySubstringSearch.enable = true; enableCompletion = true; @@ -42,6 +43,10 @@ in { # # bindkey -M viins '^?' backward-delete-char # bindkey -M viins '^H' backward-kill-word + zstyle ':completion:*' matcher-list 'm:{a-z}={A-Za-z}' 'r:|=*' + + # fzf-tab 模糊匹配 + zstyle ':fzf-tab:*' use-fzf-default-bindings yes source ${pkgs.zsh-fzf-tab}/share/fzf-tab/fzf-tab.plugin.zsh ''; }; diff --git a/nixcfgs/users/js0ny/zephyrus.nix b/nixcfgs/users/js0ny/zephyrus.nix index 816cead..28e6d13 100644 --- a/nixcfgs/users/js0ny/zephyrus.nix +++ b/nixcfgs/users/js0ny/zephyrus.nix @@ -36,6 +36,7 @@ # Desktop Linux ./programs/plasma.nix + ./programs/niri.nix # General Program config ../../modules/home/programs/eza.nix