From 3d93f5e624a12bae03dfb2a3879002e744a0c381 Mon Sep 17 00:00:00 2001 From: ryan4yin Date: Sun, 28 May 2023 13:45:30 +0800 Subject: [PATCH] fix: try to make firefox the default browser --- README.md | 2 + home/common/core.nix | 35 +---------- home/common/default.nix | 7 +-- home/linux/common/shell.nix | 31 ++++++++++ home/linux/common/system-tools.nix | 3 +- home/linux/common/xdg.nix | 93 +++++++++++++++++++--------- home/linux/desktop/creative.nix | 1 + home/linux/desktop/default.nix | 4 ++ home/linux/desktop/media.nix | 4 +- home/linux/hyprland/wayland-apps.nix | 13 ++-- home/linux/wayland.nix | 1 + home/linux/x11.nix | 1 + 12 files changed, 120 insertions(+), 75 deletions(-) create mode 100644 home/linux/common/shell.nix diff --git a/README.md b/README.md index 5af05f35..121dd8cc 100644 --- a/README.md +++ b/README.md @@ -14,6 +14,8 @@ This repository is home to the nix code that builds my systems. - auto unlock with `ssh-agent` after login - [People using ssh-agent, how do you unlock it on login? - reddit](https://www.reddit.com/r/NixOS/comments/lsbo9a/people_using_sshagent_how_do_you_unlock_it_on/) - update scripts for i3wm, especially rofi & screenshot +- fix `xdg-open`: after set `firefox.desktop` as defaultApplication, NixOS returned error `no apps installed that can open "https://baidu.com"` +- `Xcursor.size` do not take effect in i3 ## Why Nix? diff --git a/home/common/core.nix b/home/common/core.nix index 264c26de..af147411 100644 --- a/home/common/core.nix +++ b/home/common/core.nix @@ -1,8 +1,6 @@ -{config, pkgs, ...}: let - d = config.xdg.dataHome; - c = config.xdg.configHome; - cache = config.xdg.cacheHome; -in rec { +{config, pkgs, ...}: + +{ home.packages = with pkgs; [ neofetch nnn # terminal file manager @@ -72,10 +70,6 @@ in rec { }; }; - services = { - # syncthing.enable = true; - }; - programs.bash = { enable = true; enableCompletion = true; @@ -84,29 +78,6 @@ in rec { ''; }; - # add environment variables - systemd.user.sessionVariables = { - # clean up ~ - LESSHISTFILE = cache + "/less/history"; - LESSKEY = c + "/less/lesskey"; - WINEPREFIX = d + "/wine"; - - # set this variable make i3 failed to start - # related issue: - # https://github.com/sddm/sddm/issues/871 - # XAUTHORITY = "$XDG_RUNTIME_DIR/Xauthority"; - - # set default applications - BROWSER = "firefox"; - TERMINAL = "alacritty"; - - # enable scrolling in git diff - DELTA_PAGER = "less -R"; - - MANPAGER = "sh -c 'col -bx | bat -l man -p'"; - }; - - home.sessionVariables = systemd.user.sessionVariables; home.shellAliases = { k = "kubectl"; diff --git a/home/common/default.nix b/home/common/default.nix index b4fa4be4..d2b75b19 100644 --- a/home/common/default.nix +++ b/home/common/default.nix @@ -1,8 +1,5 @@ -{config, pkgs, ...}: let - d = config.xdg.dataHome; - c = config.xdg.configHome; - cache = config.xdg.cacheHome; -in rec { +{config, pkgs, ...}: +{ imports = [ ./nushell diff --git a/home/linux/common/shell.nix b/home/linux/common/shell.nix new file mode 100644 index 00000000..ef2aa394 --- /dev/null +++ b/home/linux/common/shell.nix @@ -0,0 +1,31 @@ +{config, ...}: + +let + d = config.xdg.dataHome; + c = config.xdg.configHome; + cache = config.xdg.cacheHome; +in rec { + # add environment variables + systemd.user.sessionVariables = { + # clean up ~ + LESSHISTFILE = cache + "/less/history"; + LESSKEY = c + "/less/lesskey"; + WINEPREFIX = d + "/wine"; + + # set this variable make i3 failed to start + # related issue: + # https://github.com/sddm/sddm/issues/871 + # XAUTHORITY = "$XDG_RUNTIME_DIR/Xauthority"; + + # set default applications + BROWSER = "firefox"; + TERMINAL = "alacritty"; + + # enable scrolling in git diff + DELTA_PAGER = "less -R"; + + MANPAGER = "sh -c 'col -bx | bat -l man -p'"; + }; + + home.sessionVariables = systemd.user.sessionVariables; +} \ No newline at end of file diff --git a/home/linux/common/system-tools.nix b/home/linux/common/system-tools.nix index 4faffde3..ae9af3bc 100644 --- a/home/linux/common/system-tools.nix +++ b/home/linux/common/system-tools.nix @@ -34,6 +34,7 @@ }; services = { - playerctld.enable = true; + # syncthing.enable = true; }; + } diff --git a/home/linux/common/xdg.nix b/home/linux/common/xdg.nix index 65703149..fd3f36f2 100644 --- a/home/linux/common/xdg.nix +++ b/home/linux/common/xdg.nix @@ -2,35 +2,9 @@ # It's a bunch of specifications from freedesktop.org intended to standardize desktops and # other GUI applications on various systems (primarily Unix-like) to be interoperable: # https://www.freedesktop.org/wiki/Specifications/ -{config, pkgs, ...}: let - browser = ["firefox.desktop"]; - - # XDG MIME types - associations = { - "application/x-extension-htm" = browser; - "application/x-extension-html" = browser; - "application/x-extension-shtml" = browser; - "application/x-extension-xht" = browser; - "application/x-extension-xhtml" = browser; - "application/xhtml+xml" = browser; - "text/html" = browser; - "x-scheme-handler/about" = browser; - "x-scheme-handler/ftp" = browser; - "x-scheme-handler/http" = browser; - "x-scheme-handler/https" = browser; - "x-scheme-handler/unknown" = browser; - - "audio/*" = ["mpv.desktop"]; - "video/*" = ["mpv.dekstop"]; - "image/*" = ["imv.desktop"]; - "application/json" = browser; - "application/pdf" = browser; # TODO: pdf viewer - "x-scheme-handler/discord" = ["discord.desktop"]; - "x-scheme-handler/tg" = ["telegramdesktop.desktop"]; - }; -in { +{config, pkgs, ...}: +{ home.packages = with pkgs; [ - xdg-utils xdg-user-dirs ]; @@ -38,9 +12,70 @@ in { enable = true; cacheHome = config.home.homeDirectory + "/.local/cache"; + # manage $XDG_CONFIG_HOME/mimeapps.list + # xdg search all desktop entries from $XDG_DATA_DIRS, check it by command: + # echo $XDG_DATA_DIRS + # the system-level desktop entries can be list by command: + # ls -l /run/current-system/sw/share/applications/ + # the user-level desktop entries can be list by command(user ryan): + # ls /etc/profiles/per-user/ryan/share/applications/ mimeApps = { enable = true; - defaultApplications = associations; + associations.added = + let + browser = ["firefox.desktop"]; + in + { + "application/json" = browser; + "application/pdf" = browser; # TODO: pdf viewer + + "text/html" = browser; + "text/xml" = browser; + "application/xml" = browser; + "application/xhtml+xml" = browser; + "application/xhtml_xml" = browser; + "application/rdf+xml" = browser; + "application/rss+xml" = browser; + "application/x-extension-htm" = browser; + "application/x-extension-html" = browser; + "application/x-extension-shtml" = browser; + "application/x-extension-xht" = browser; + "application/x-extension-xhtml" = browser; + + "x-scheme-handler/about" = browser; + "x-scheme-handler/ftp" = browser; + "x-scheme-handler/http" = browser; + "x-scheme-handler/https" = browser; + "x-scheme-handler/unknown" = browser; + + "x-scheme-handler/discord" = ["discord.desktop"]; + "x-scheme-handler/tg" = ["telegramdesktop.desktop"]; + + "audio/*" = ["mpv.desktop"]; + "video/*" = ["mpv.dekstop"]; + "image/*" = ["imv.desktop"]; + }; + + associations.removed = + let + browser = ["google-chrome.desktop"]; + in + { + "text/html" = browser; + "text/xml" = browser; + "application/xml" = browser; + "application/xhtml+xml" = browser; + "application/xhtml_xml" = browser; + "application/rdf+xml" = browser; + "application/rss+xml" = browser; + "image/gif" = browser; + "image/jpeg" = browser; + "image/png" = browser; + "image/webp" = browser; + "x-scheme-handler/http" = browser; + "x-scheme-handler/https" = browser; + "application/pdf" = browser; + }; }; userDirs = { diff --git a/home/linux/desktop/creative.nix b/home/linux/desktop/creative.nix index 77de5927..91e55a37 100644 --- a/home/linux/desktop/creative.nix +++ b/home/linux/desktop/creative.nix @@ -16,6 +16,7 @@ ]; programs = { + # live streaming obs-studio.enable = true; }; } \ No newline at end of file diff --git a/home/linux/desktop/default.nix b/home/linux/desktop/default.nix index 43948cc9..1cd3f422 100644 --- a/home/linux/desktop/default.nix +++ b/home/linux/desktop/default.nix @@ -9,6 +9,10 @@ # networking wireshark + # e-book viewer(.epub/.mobi/...) + # do not support .pdf + foliate + # instant messaging telegram-desktop discord diff --git a/home/linux/desktop/media.nix b/home/linux/desktop/media.nix index 5de474ca..321367e5 100644 --- a/home/linux/desktop/media.nix +++ b/home/linux/desktop/media.nix @@ -26,7 +26,9 @@ defaultProfiles = ["gpu-hq"]; scripts = [pkgs.mpvScripts.mpris]; }; + }; - obs-studio.enable = true; + services = { + playerctld.enable = true; }; } \ No newline at end of file diff --git a/home/linux/hyprland/wayland-apps.nix b/home/linux/hyprland/wayland-apps.nix index 39b8e43d..8960ed82 100644 --- a/home/linux/hyprland/wayland-apps.nix +++ b/home/linux/hyprland/wayland-apps.nix @@ -1,7 +1,6 @@ { pkgs, nixpkgs-stable, - config, ... }: let pkgs-stable = import nixpkgs-stable { @@ -9,12 +8,6 @@ config.allowUnfree = true; }; in { - home.packages = with pkgs-stable; [ - firefox-wayland # firefox with wayland support - wineWowPackages.wayland - ]; - - # TODO vscode & chrome both have wayland support, but they don't work with fcitx5, need to fix it. programs = { @@ -38,6 +31,12 @@ ]; }; + firefox = { + enable = true; + enableGnomeExtensions = false; + package = pkgs-stable.firefox-wayland; # firefox with wayland support + }; + vscode = { enable = true; # use the stable version diff --git a/home/linux/wayland.nix b/home/linux/wayland.nix index 9b6be550..8f734f61 100644 --- a/home/linux/wayland.nix +++ b/home/linux/wayland.nix @@ -9,6 +9,7 @@ ./fcitx5 ./desktop + ./common/shell.nix ./common/ssh.nix ./common/system-tools.nix ./common/xdg.nix diff --git a/home/linux/x11.nix b/home/linux/x11.nix index 6bc5ea1c..7b4d097a 100644 --- a/home/linux/x11.nix +++ b/home/linux/x11.nix @@ -9,6 +9,7 @@ ./fcitx5 ./desktop + ./common/shell.nix ./common/ssh.nix ./common/system-tools.nix ./common/xdg.nix