From d3d7eb358603b929e7b4539d59964c9064c05510 Mon Sep 17 00:00:00 2001 From: Ivan Malison Date: Wed, 4 Feb 2026 17:15:27 -0800 Subject: [PATCH] Manage mimeapps via home-manager --- dotfiles/config/mimeapps.list | 21 --------------------- nixos/desktop.nix | 5 +++-- nixos/home-manager.nix | 34 +++++++++++++++++++++++++++++++++- nixos/xremap.nix | 32 ++++++++++++++++++++++++++++++++ 4 files changed, 68 insertions(+), 24 deletions(-) delete mode 100644 dotfiles/config/mimeapps.list create mode 100644 nixos/xremap.nix diff --git a/dotfiles/config/mimeapps.list b/dotfiles/config/mimeapps.list deleted file mode 100644 index 389934d3..00000000 --- a/dotfiles/config/mimeapps.list +++ /dev/null @@ -1,21 +0,0 @@ -[Added Associations] -video/x-matroska=vlc.desktop; -audio/flac=vlc.desktop; -image/jpeg=feh.desktop; -video/x-msvideo=vlc.desktop; -text/vnd.trolltech.linguist=vlc.desktop; -audio/mpeg=vlc.desktop; -application/pdf=okularApplication_pdf.desktop; -image/png=okularApplication_kimgio.desktop; -video/mp4=vlc.desktop;org.gnome.Totem.desktop; -x-scheme-handler/magnet=userapp-transmission-gtk-24GQLZ.desktop; -element=element-desktop.desktop - -[Default Applications] -text/html=google-chrome.desktop -x-scheme-handler/http=google-chrome.desktop -x-scheme-handler/https=google-chrome.desktop -x-scheme-handler/about=google-chrome.desktop -x-scheme-handler/unknown=google-chrome.desktop -x-scheme-handler/magnet=userapp-transmission-gtk-24GQLZ.desktop -x-scheme-handler/element=element-desktop.desktop diff --git a/nixos/desktop.nix b/nixos/desktop.nix index 4762e12d..25caa292 100644 --- a/nixos/desktop.nix +++ b/nixos/desktop.nix @@ -5,6 +5,7 @@ makeEnable config "myModules.desktop" true { ./fonts.nix ./hyprland.nix ./keyd.nix + ./xremap.nix ]; services.xserver = { @@ -62,6 +63,7 @@ makeEnable config "myModules.desktop" true { kdePackages.dolphin feh + gthumb firefox cheese kdePackages.kleopatra @@ -82,8 +84,7 @@ makeEnable config "myModules.desktop" true { simplescreenrecorder skippy-xd synergy - # TODO: reenable - # transmission_3-gtk + transmission_4-gtk vlc thunar diff --git a/nixos/home-manager.nix b/nixos/home-manager.nix index adef61f8..57003f70 100644 --- a/nixos/home-manager.nix +++ b/nixos/home-manager.nix @@ -1,4 +1,4 @@ -{ pkgs, ... }: +{ pkgs, lib, nixos, ... }: { # Automatic garbage collection of old home-manager generations nix.gc = { @@ -20,6 +20,38 @@ static_history = [] ''; + xdg.mimeApps = lib.mkIf nixos.config.myModules.desktop.enable { + enable = true; + + associations.added = { + "video/x-matroska" = "vlc.desktop"; + "audio/flac" = "vlc.desktop"; + "image/jpeg" = "feh.desktop"; + "video/x-msvideo" = "vlc.desktop"; + "text/vnd.trolltech.linguist" = "vlc.desktop"; + "audio/mpeg" = "vlc.desktop"; + "application/pdf" = "okularApplication_pdf.desktop"; + "image/png" = "okularApplication_kimgio.desktop"; + "video/mp4" = [ "vlc.desktop" "org.gnome.Totem.desktop" ]; + "x-scheme-handler/magnet" = "userapp-transmission-gtk-24GQLZ.desktop"; + "element" = "element-desktop.desktop"; + }; + + defaultApplications = { + "text/html" = "google-chrome.desktop"; + "x-scheme-handler/http" = "google-chrome.desktop"; + "x-scheme-handler/https" = "google-chrome.desktop"; + "x-scheme-handler/about" = "google-chrome.desktop"; + "x-scheme-handler/unknown" = "google-chrome.desktop"; + "x-scheme-handler/magnet" = "userapp-transmission-gtk-24GQLZ.desktop"; + "x-scheme-handler/element" = "element-desktop.desktop"; + }; + + defaultApplicationPackages = [ + pkgs.gthumb + ]; + }; + xsession = { enable = true; preferStatusNotifierItems = true; diff --git a/nixos/xremap.nix b/nixos/xremap.nix new file mode 100644 index 00000000..99df653a --- /dev/null +++ b/nixos/xremap.nix @@ -0,0 +1,32 @@ +{ config, lib, pkgs, makeEnable, ... }: +makeEnable config "myModules.xremap" true { + hardware.uinput.enable = true; + boot.kernelModules = [ "uinput" ]; + + services.udev.extraRules = lib.mkAfter '' + KERNEL=="uinput", GROUP="input", TAG+="uaccess" + ''; + + environment.etc."xremap/config.yml".text = '' + keymap: + - name: Chrome emacs-ish + application: + only: [Google-chrome, Google-chrome-stable, google-chrome, Chromium, chromium] + remap: + C-a: Home + C-e: End + Alt-b: C-Left + Alt-f: C-Right + ''; + + environment.systemPackages = [ pkgs.xremap ]; + + systemd.user.services.xremap = { + description = "xremap key remapper"; + wantedBy = [ "default.target" ]; + serviceConfig = { + ExecStart = "${pkgs.xremap}/bin/xremap /etc/xremap/config.yml --watch"; + Restart = "on-failure"; + }; + }; +}