patch GNOME

This commit is contained in:
js0ny 2025-12-05 16:38:10 +00:00
parent 44faec0e2a
commit 33e215b2bf
10 changed files with 126 additions and 103 deletions

View file

@ -16,4 +16,5 @@ in {
programs.fish.shellAliases = zoxideAliases; programs.fish.shellAliases = zoxideAliases;
programs.bash.shellAliases = zoxideAliases; programs.bash.shellAliases = zoxideAliases;
programs.zsh.shellAliases = zoxideAliases; programs.zsh.shellAliases = zoxideAliases;
home.sessionVariables._ZO_EXCLUDE_DIRS = "/sys/*:/nix/*:/dev/*:/tmp/*:/proc/*";
} }

View file

@ -10,4 +10,11 @@
unzip unzip
zip zip
]; ];
# Explicitly define default EDITOR
programs.nano.enable = false;
programs.neovim = {
enable = true;
defaultEditor = true;
viAlias = true;
};
} }

View file

@ -8,9 +8,11 @@
gobject-introspection gobject-introspection
]; ];
environment.gnome.excludePackages = with pkgs; [ environment.gnome.excludePackages = with pkgs; [
evince evince # Document Viewer (Legacy)
totem totem # GNOME Videos (legacy)
papers papers # Document Viewer
gtop tour
baobab # Disk Usage Analyzer, use dust instead
epiphany # GNOME Web
]; ];
} }

View file

@ -11,6 +11,7 @@
pciutils pciutils
usbutils usbutils
v4l-utils v4l-utils
f2fs-tools
]; ];
programs.gpu-screen-recorder.enable = true; programs.gpu-screen-recorder.enable = true;

View file

@ -55,7 +55,7 @@
srm srm
mediainfo mediainfo
exiftool exiftool
ddgr # DuckDuckGo CLI ddgr
jujutsu jujutsu
github-copilot-cli github-copilot-cli
yt-dlp yt-dlp
@ -67,6 +67,7 @@
unar unar
trash-cli trash-cli
aria2 aria2
gocryptfs
] ]
++ ( ++ (
if pkgs.stdenv.isDarwin if pkgs.stdenv.isDarwin

View file

@ -3,46 +3,42 @@
config, config,
lib, lib,
... ...
}: { }: let
home.packages = with pkgs; [ 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 gnome-tweaks
sushi sushi
dconf-editor dconf-editor
gnome-menus gnome-menus
showtime showtime
gobject-introspection gobject-introspection
gnomeExtensions.dash-to-dock ]
gnomeExtensions.caffeine ++ extensions;
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
];
programs.gnome-shell.enable = true; programs.gnome-shell.enable = true;
programs.gnome-shell.extensions = [ programs.gnome-shell.extensions = let
# { package = pkgs.gnomeExtensions.dash-to-dock; } extensionHelper = p: {
{package = pkgs.gnomeExtensions.caffeine;} package = p;
{package = pkgs.gnomeExtensions.logo-menu;} };
{package = pkgs.gnomeExtensions.kimpanel;} in
{package = pkgs.gnomeExtensions.appindicator;} map extensionHelper extensions;
{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;}
];
dconf.settings = { dconf.settings = {
"org/gnome/desktop/interface" = { "org/gnome/desktop/interface" = {
clock-show-seconds = true; clock-show-seconds = true;
clock-show-weekday = true; clock-show-weekday = true;
icon-theme = "${config.my.desktop.style.iconTheme.dark}";
accent-color = "pink"; accent-color = "pink";
show-battery-percentage = true; show-battery-percentage = true;
}; };
@ -69,6 +65,10 @@
"Print" "Print"
]; ];
}; };
"org/gnome/desktop/wm/preferences" = {
# Win + Right Mouse Button to Resize Window
resize-with-right-button = true;
};
"org/gnome/desktop/wm/keybindings" = { "org/gnome/desktop/wm/keybindings" = {
activate-window-menu = ["<Alt>F3"]; activate-window-menu = ["<Alt>F3"];
show-desktop = ["<Super>d"]; show-desktop = ["<Super>d"];
@ -105,9 +105,9 @@
binding = "<Super>e"; binding = "<Super>e";
}; };
"org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom-1" = { "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}"; command = "${lib.getExe config.my.desktop.preferredApps.terminal.package}";
binding = "<Super>r"; binding = "<Super>Return";
}; };
"org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom-2" = { "org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom-2" = {
name = "Open Terminal via Ctrl-Alt-T"; name = "Open Terminal via Ctrl-Alt-T";

View file

@ -23,7 +23,7 @@
"image/png" "image/png"
"image/gif" "image/gif"
"image/bmp" "image/bmp"
"image/avif" # "image/avif"
"image/webp" "image/webp"
]; ];
audio = [ audio = [
@ -74,6 +74,12 @@ in {
"application/vnd.openxmlformats-officedocument.wordprocessingml.document" "application/vnd.openxmlformats-officedocument.wordprocessingml.document"
"application/vnd.openxmlformats-officedocument.presentationml.presentation" "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: # Audio:
# music: elisa: fully featured, good cjk support # music: elisa: fully featured, good cjk support
# audio: mpv: simple and fast # audio: mpv: simple and fast

View file

@ -7,77 +7,78 @@
{pkgs, ...}: let {pkgs, ...}: let
imageTag = "ghcr.io/pdfmathtranslate/pdfmathtranslate-next"; imageTag = "ghcr.io/pdfmathtranslate/pdfmathtranslate-next";
# version = "2.6.4"; # version = "2.6.4";
pdf2zhRunner = pkgs.writeShellScriptBin "pdf2zh" '' mkPdf2zh = {
#!/usr/bin/env bash name,
set -euo pipefail withEnv,
}:
pkgs.writeShellApplication {
inherit name;
runtimeInputs = [pkgs.podman];
text = ''
IMAGE_TAG="${imageTag}" IMAGE_TAG="${imageTag}"
if ! podman image exists "$IMAGE_TAG"; then
echo "[pdf2zh] Pulling image $IMAGE_TAG ..."
podman pull "$IMAGE_TAG"
fi
PODMAN_ENV_ARGS=()
CMD_ARGS=()
${
if withEnv
then ''
API_BASE="''${PDF2ZH_API_BASE:-https://openrouter.ai/api/v1}" API_BASE="''${PDF2ZH_API_BASE:-https://openrouter.ai/api/v1}"
MODEL="''${PDF2ZH_MODEL:-google/gemini-2.5-flash}" MODEL="''${PDF2ZH_MODEL:-google/gemini-2.5-flash}"
if [[ -n "''${PDF2ZH_API_KEY:-}" ]]; then if [[ -n "''${PDF2ZH_API_KEY:-}" ]]; then
API_KEY="$PDF2ZH_API_KEY" API_KEY="$PDF2ZH_API_KEY"
elif [[ -n "''${OPENROUTER_API_KEY:-}" ]]; then elif [[ -n "''${OPENROUTER_API_KEY:-}" ]]; then
API_KEY="$OPENROUTER_API_KEY" API_KEY="$OPENROUTER_API_KEY"
else else
echo "Error: Neither OPENROUTER_API_KEY nor PDF2ZH_API_KEY is set." >&2 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 echo "Please export one of them explicitly." >&2
exit 1 exit 1
fi fi
if ! command -v podman &> /dev/null; then
echo "Error: podman is not installed or not in PATH." >&2
exit 1
fi
if ! podman image exists "$IMAGE_TAG"; then
echo "[pdf2zh] Pulling image $IMAGE_TAG ..."
podman pull "$IMAGE_TAG"
fi
echo "[pdf2zh] Using Model: $MODEL" echo "[pdf2zh] Using Model: $MODEL"
PODMAN_ENV_ARGS+=("-e" "OPENROUTER_API_KEY=$API_KEY")
CMD_ARGS+=(
"--openaicompatible"
"--openai-compatible-model" "$MODEL"
"--openai-compatible-base-url" "$API_BASE"
"--openai-compatible-api-key" "$API_KEY"
)
''
else ""
}
exec podman run \ exec podman run \
--rm \ --rm \
-it \ -it \
-p 7860:7860 \ -p 7860:7860 \
-v "$(pwd):/data" \ -v "$(pwd):/data" \
-w /data \ -w /data \
-e OPENROUTER_API_KEY="$API_KEY" \ "''${PODMAN_ENV_ARGS[@]}" \
"$IMAGE_TAG" \ "$IMAGE_TAG" \
pdf2zh \ pdf2zh \
--openaicompatible \ "''${CMD_ARGS[@]}" \
--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
IMAGE_TAG="${imageTag}"
if ! command -v podman &> /dev/null; then
echo "Error: podman is not installed or not in PATH." >&2
exit 1
fi
if ! podman image exists "$IMAGE_TAG"; then
echo "[pdf2zh] Pulling image $IMAGE_TAG ..."
podman pull "$IMAGE_TAG"
fi
exec podman run \
--rm \
-it \
-p 7860:7860 \
-v "$(pwd):/data" \
-w /data \
"$IMAGE_TAG" \
pdf2zh-unwrapped \
"$@" "$@"
''; '';
};
pdf2zhRunner = mkPdf2zh {
name = "pdf2zh";
withEnv = true;
};
pdf2zhUnwrapped = mkPdf2zh {
name = "pdf2zh-unwrapped";
withEnv = false;
};
descEn = "PDF scientific paper translation with preserved formats"; descEn = "PDF scientific paper translation with preserved formats";
descZh = " AI PDF "; descZh = " AI PDF ";
in { in {

View file

@ -181,6 +181,6 @@ in {
'' ''
else else
lib.hm.dag.entryAfter ["writeBoundary"] '' 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" ""
''; '';
} }

View file

@ -119,5 +119,9 @@
VISUAL = "nvim"; VISUAL = "nvim";
}; };
home.sessionPath = [
"$HOME/.local/bin"
];
home.stateVersion = "25.05"; home.stateVersion = "25.05";
} }