From 33e215b2bf26141820d2d9eb9a836b542ba3caec Mon Sep 17 00:00:00 2001 From: js0ny Date: Fri, 5 Dec 2025 16:38:10 +0000 Subject: [PATCH] patch GNOME --- nixcfgs/modules/home/programs/zoxide.nix | 1 + nixcfgs/modules/nixos/core/packages.nix | 7 + nixcfgs/modules/nixos/desktop/de/gnome.nix | 10 +- .../modules/nixos/desktop/host-machine.nix | 1 + nixcfgs/users/js0ny/packages/cli.nix | 3 +- .../js0ny/programs/desktop/gnome/default.nix | 70 +++++----- nixcfgs/users/js0ny/programs/mime.nix | 8 +- .../users/js0ny/programs/pdf2zh/container.nix | 123 +++++++++--------- nixcfgs/users/js0ny/programs/rime.nix | 2 +- nixcfgs/users/js0ny/zephyrus.nix | 4 + 10 files changed, 126 insertions(+), 103 deletions(-) diff --git a/nixcfgs/modules/home/programs/zoxide.nix b/nixcfgs/modules/home/programs/zoxide.nix index dfe37bb..cfc3992 100644 --- a/nixcfgs/modules/home/programs/zoxide.nix +++ b/nixcfgs/modules/home/programs/zoxide.nix @@ -16,4 +16,5 @@ in { programs.fish.shellAliases = zoxideAliases; programs.bash.shellAliases = zoxideAliases; programs.zsh.shellAliases = zoxideAliases; + home.sessionVariables._ZO_EXCLUDE_DIRS = "/sys/*:/nix/*:/dev/*:/tmp/*:/proc/*"; } diff --git a/nixcfgs/modules/nixos/core/packages.nix b/nixcfgs/modules/nixos/core/packages.nix index 3dd4dab..1996e65 100644 --- a/nixcfgs/modules/nixos/core/packages.nix +++ b/nixcfgs/modules/nixos/core/packages.nix @@ -10,4 +10,11 @@ unzip zip ]; +# Explicitly define default EDITOR + programs.nano.enable = false; + programs.neovim = { + enable = true; + defaultEditor = true; + viAlias = true; + }; } diff --git a/nixcfgs/modules/nixos/desktop/de/gnome.nix b/nixcfgs/modules/nixos/desktop/de/gnome.nix index f80ecfc..e898041 100644 --- a/nixcfgs/modules/nixos/desktop/de/gnome.nix +++ b/nixcfgs/modules/nixos/desktop/de/gnome.nix @@ -8,9 +8,11 @@ gobject-introspection ]; environment.gnome.excludePackages = with pkgs; [ - evince - totem - papers - gtop + evince # Document Viewer (Legacy) + totem # GNOME Videos (legacy) + papers # Document Viewer + tour + baobab # Disk Usage Analyzer, use dust instead + epiphany # GNOME Web ]; } diff --git a/nixcfgs/modules/nixos/desktop/host-machine.nix b/nixcfgs/modules/nixos/desktop/host-machine.nix index 11511f7..05f06f5 100644 --- a/nixcfgs/modules/nixos/desktop/host-machine.nix +++ b/nixcfgs/modules/nixos/desktop/host-machine.nix @@ -11,6 +11,7 @@ pciutils usbutils v4l-utils + f2fs-tools ]; programs.gpu-screen-recorder.enable = true; diff --git a/nixcfgs/users/js0ny/packages/cli.nix b/nixcfgs/users/js0ny/packages/cli.nix index 523e16e..7d72945 100644 --- a/nixcfgs/users/js0ny/packages/cli.nix +++ b/nixcfgs/users/js0ny/packages/cli.nix @@ -55,7 +55,7 @@ srm mediainfo exiftool - ddgr # DuckDuckGo CLI + ddgr jujutsu github-copilot-cli yt-dlp @@ -67,6 +67,7 @@ unar trash-cli aria2 + gocryptfs ] ++ ( if pkgs.stdenv.isDarwin diff --git a/nixcfgs/users/js0ny/programs/desktop/gnome/default.nix b/nixcfgs/users/js0ny/programs/desktop/gnome/default.nix index 5670985..d564877 100644 --- a/nixcfgs/users/js0ny/programs/desktop/gnome/default.nix +++ b/nixcfgs/users/js0ny/programs/desktop/gnome/default.nix @@ -3,46 +3,42 @@ config, lib, ... -}: { - home.packages = with pkgs; [ - gnome-tweaks - sushi - dconf-editor - gnome-menus - showtime - gobject-introspection - gnomeExtensions.dash-to-dock - gnomeExtensions.caffeine - gnomeExtensions.logo-menu - gnomeExtensions.kimpanel - gnomeExtensions.clipboard-indicator - gnomeExtensions.advanced-alttab-window-switcher - gnomeExtensions.paperwm - gnomeExtensions.blur-my-shell - gnomeExtensions.appindicator - gnomeExtensions.gsconnect - gnomeExtensions.resource-monitor - gnomeExtensions.lunar-calendar +}: let + extensions = with pkgs.gnomeExtensions; [ + # dash-to-dock + caffeine + logo-menu + kimpanel + appindicator + gsconnect + clipboard-indicator + advanced-alttab-window-switcher + resource-monitor + lunar-calendar ]; +in { + home.packages = with pkgs; + [ + gnome-tweaks + sushi + dconf-editor + gnome-menus + showtime + gobject-introspection + ] + ++ extensions; programs.gnome-shell.enable = true; - programs.gnome-shell.extensions = [ - # { package = pkgs.gnomeExtensions.dash-to-dock; } - {package = pkgs.gnomeExtensions.caffeine;} - {package = pkgs.gnomeExtensions.logo-menu;} - {package = pkgs.gnomeExtensions.kimpanel;} - {package = pkgs.gnomeExtensions.appindicator;} - {package = pkgs.gnomeExtensions.gsconnect;} - {package = pkgs.gnomeExtensions.clipboard-indicator;} - {package = pkgs.gnomeExtensions.advanced-alttab-window-switcher;} - {package = pkgs.gnomeExtensions.resource-monitor;} - {package = pkgs.gnomeExtensions.lunar-calendar;} - ]; + programs.gnome-shell.extensions = let + extensionHelper = p: { + package = p; + }; + in + map extensionHelper extensions; dconf.settings = { "org/gnome/desktop/interface" = { clock-show-seconds = true; clock-show-weekday = true; - icon-theme = "${config.my.desktop.style.iconTheme.dark}"; accent-color = "pink"; show-battery-percentage = true; }; @@ -69,6 +65,10 @@ "Print" ]; }; + "org/gnome/desktop/wm/preferences" = { + # Win + Right Mouse Button to Resize Window + resize-with-right-button = true; + }; "org/gnome/desktop/wm/keybindings" = { activate-window-menu = ["F3"]; show-desktop = ["d"]; @@ -105,9 +105,9 @@ binding = "e"; }; "org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom-1" = { - name = "Open Terminal via Win-R"; + name = "Open Terminal via Win-CR"; command = "${lib.getExe config.my.desktop.preferredApps.terminal.package}"; - binding = "r"; + binding = "Return"; }; "org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom-2" = { name = "Open Terminal via Ctrl-Alt-T"; diff --git a/nixcfgs/users/js0ny/programs/mime.nix b/nixcfgs/users/js0ny/programs/mime.nix index 5931d11..72eb36a 100644 --- a/nixcfgs/users/js0ny/programs/mime.nix +++ b/nixcfgs/users/js0ny/programs/mime.nix @@ -23,7 +23,7 @@ "image/png" "image/gif" "image/bmp" - "image/avif" + # "image/avif" "image/webp" ]; audio = [ @@ -74,6 +74,12 @@ in { "application/vnd.openxmlformats-officedocument.wordprocessingml.document" "application/vnd.openxmlformats-officedocument.presentationml.presentation" ] + // { + # NOTE: + # Gwenview cannot open avif images properly + # See: https://github.com/NixOS/nixpkgs/issues/351863 + "image/avif" = "org.gnome.Loupe.desktop;mpv.desktop"; + } # Audio: # music: elisa: fully featured, good cjk support # audio: mpv: simple and fast diff --git a/nixcfgs/users/js0ny/programs/pdf2zh/container.nix b/nixcfgs/users/js0ny/programs/pdf2zh/container.nix index 8af15ca..94f3e8d 100644 --- a/nixcfgs/users/js0ny/programs/pdf2zh/container.nix +++ b/nixcfgs/users/js0ny/programs/pdf2zh/container.nix @@ -7,77 +7,78 @@ {pkgs, ...}: let imageTag = "ghcr.io/pdfmathtranslate/pdfmathtranslate-next"; # version = "2.6.4"; - pdf2zhRunner = pkgs.writeShellScriptBin "pdf2zh" '' - #!/usr/bin/env bash - set -euo pipefail + mkPdf2zh = { + name, + withEnv, + }: + pkgs.writeShellApplication { + inherit name; - IMAGE_TAG="${imageTag}" + runtimeInputs = [pkgs.podman]; - API_BASE="''${PDF2ZH_API_BASE:-https://openrouter.ai/api/v1}" - MODEL="''${PDF2ZH_MODEL:-google/gemini-2.5-flash}" - if [[ -n "''${PDF2ZH_API_KEY:-}" ]]; then - API_KEY="$PDF2ZH_API_KEY" - elif [[ -n "''${OPENROUTER_API_KEY:-}" ]]; then - API_KEY="$OPENROUTER_API_KEY" - else - echo "Error: Neither OPENROUTER_API_KEY nor PDF2ZH_API_KEY is set." >&2 - echo "Please export one of them explicitly or use a .env file helper." >&2 - exit 1 - fi + text = '' - if ! command -v podman &> /dev/null; then - echo "Error: podman is not installed or not in PATH." >&2 - exit 1 - fi + IMAGE_TAG="${imageTag}" - if ! podman image exists "$IMAGE_TAG"; then - echo "[pdf2zh] Pulling image $IMAGE_TAG ..." - podman pull "$IMAGE_TAG" - fi + if ! podman image exists "$IMAGE_TAG"; then + echo "[pdf2zh] Pulling image $IMAGE_TAG ..." + podman pull "$IMAGE_TAG" + fi - echo "[pdf2zh] Using Model: $MODEL" + PODMAN_ENV_ARGS=() + CMD_ARGS=() - exec podman run \ - --rm \ - -it \ - -p 7860:7860 \ - -v "$(pwd):/data" \ - -w /data \ - -e OPENROUTER_API_KEY="$API_KEY" \ - "$IMAGE_TAG" \ - pdf2zh \ - --openaicompatible \ - --openai-compatible-model "$MODEL" \ - --openai-compatible-base-url "$API_BASE" \ - --openai-compatible-api-key "$API_KEY" \ - "$@" - ''; - pdf2zhUnwrapped = pkgs.writeShellScriptBin "pdf2zh-unwrapped" '' - #!/usr/bin/env bash - set -euo pipefail + ${ + if withEnv + then '' + API_BASE="''${PDF2ZH_API_BASE:-https://openrouter.ai/api/v1}" + MODEL="''${PDF2ZH_MODEL:-google/gemini-2.5-flash}" - IMAGE_TAG="${imageTag}" + if [[ -n "''${PDF2ZH_API_KEY:-}" ]]; then + API_KEY="$PDF2ZH_API_KEY" + elif [[ -n "''${OPENROUTER_API_KEY:-}" ]]; then + API_KEY="$OPENROUTER_API_KEY" + else + echo "Error: Neither OPENROUTER_API_KEY nor PDF2ZH_API_KEY is set." >&2 + echo "Please export one of them explicitly." >&2 + exit 1 + fi - if ! command -v podman &> /dev/null; then - echo "Error: podman is not installed or not in PATH." >&2 - exit 1 - fi + echo "[pdf2zh] Using Model: $MODEL" - if ! podman image exists "$IMAGE_TAG"; then - echo "[pdf2zh] Pulling image $IMAGE_TAG ..." - podman pull "$IMAGE_TAG" - fi + PODMAN_ENV_ARGS+=("-e" "OPENROUTER_API_KEY=$API_KEY") - exec podman run \ - --rm \ - -it \ - -p 7860:7860 \ - -v "$(pwd):/data" \ - -w /data \ - "$IMAGE_TAG" \ - pdf2zh-unwrapped \ - "$@" - ''; + CMD_ARGS+=( + "--openaicompatible" + "--openai-compatible-model" "$MODEL" + "--openai-compatible-base-url" "$API_BASE" + "--openai-compatible-api-key" "$API_KEY" + ) + '' + else "" + } + + exec podman run \ + --rm \ + -it \ + -p 7860:7860 \ + -v "$(pwd):/data" \ + -w /data \ + "''${PODMAN_ENV_ARGS[@]}" \ + "$IMAGE_TAG" \ + pdf2zh \ + "''${CMD_ARGS[@]}" \ + "$@" + ''; + }; + pdf2zhRunner = mkPdf2zh { + name = "pdf2zh"; + withEnv = true; + }; + pdf2zhUnwrapped = mkPdf2zh { + name = "pdf2zh-unwrapped"; + withEnv = false; + }; descEn = "PDF scientific paper translation with preserved formats"; descZh = "基于 AI 完整保留排版的 PDF 文档全文双语翻译"; in { diff --git a/nixcfgs/users/js0ny/programs/rime.nix b/nixcfgs/users/js0ny/programs/rime.nix index 4728cc5..082e56e 100644 --- a/nixcfgs/users/js0ny/programs/rime.nix +++ b/nixcfgs/users/js0ny/programs/rime.nix @@ -181,6 +181,6 @@ in { '' else lib.hm.dag.entryAfter ["writeBoundary"] '' - # ${pkgs.kdePackages.qttools}/bin/qdbus org.fcitx.Fcitx5 /controller org.fcitx.Fcitx.Controller1.SetConfig "fcitx://onfig/addon/rime/deploy" "" + # ${pkgs.kdePackages.qttools}/bin/qdbus org.fcitx.Fcitx5 /controller org.fcitx.Fcitx.Controller1.SetConfig "fcitx://config/addon/rime/deploy" "" ''; } diff --git a/nixcfgs/users/js0ny/zephyrus.nix b/nixcfgs/users/js0ny/zephyrus.nix index 58cb930..0fdfc50 100644 --- a/nixcfgs/users/js0ny/zephyrus.nix +++ b/nixcfgs/users/js0ny/zephyrus.nix @@ -119,5 +119,9 @@ VISUAL = "nvim"; }; + home.sessionPath = [ + "$HOME/.local/bin" + ]; + home.stateVersion = "25.05"; }