From fd9b0ecef4142a62b45404700ba1cff488f84a73 Mon Sep 17 00:00:00 2001 From: Benedikt Peetz Date: Thu, 23 May 2024 13:31:11 +0200 Subject: refactor(modules/home): Setup as "normal" NixOS module --- modules/home/conf/xdg/default.nix | 63 ++++++++++++++++++++++++++++++++++++ modules/home/conf/xdg/url_handler.sh | 18 +++++++++++ modules/home/conf/xdg/xdg_vars.nix | 26 +++++++++++++++ 3 files changed, 107 insertions(+) create mode 100644 modules/home/conf/xdg/default.nix create mode 100755 modules/home/conf/xdg/url_handler.sh create mode 100644 modules/home/conf/xdg/xdg_vars.nix (limited to 'modules/home/conf/xdg') diff --git a/modules/home/conf/xdg/default.nix b/modules/home/conf/xdg/default.nix new file mode 100644 index 00000000..4099720d --- /dev/null +++ b/modules/home/conf/xdg/default.nix @@ -0,0 +1,63 @@ +{ + sysLib, + pkgs, + config, + ... +}: let + url_handler = sysLib.writeShellScript { + name = "url_handler"; + src = ./url_handler.sh; + keepPath = true; + # Naming dependencies for this will be difficult, as it depend on overridden packages. + dependencies = with pkgs; [ + rofi + libnotify + zathura + ]; + replacementStrings = { + ALL_PROJECTS_PIPE = "${config.soispha.taskwarrior.projects.projects_pipe}"; + }; + }; +in { + imports = [ + ./xdg_vars.nix + ]; + + xdg = { + mimeApps = { + enable = true; + defaultApplications = { + "application/pdf" = ["url_handler.desktop"]; + "application/x-pdf" = ["url_handler.desktop"]; + + "text/html" = ["url_handler.desktop"]; + "text/xml" = ["url_handler.desktop"]; + "x-scheme-handler/http" = ["url_handler.desktop"]; + "x-scheme-handler/https" = ["url_handler.desktop"]; + "x-scheme-handler/about" = ["url_handler.desktop"]; + "x-scheme-handler/unknown" = ["url_handler.desktop"]; + }; + }; + desktopEntries = { + url_handler = { + name = "url_handler"; + genericName = "Web Browser"; + exec = "${url_handler}/bin/url_handler %u"; + terminal = false; + categories = [ + "Application" + "Network" + "WebBrowser" + ]; + mimeType = [ + "text/html" + "text/xml" + "x-scheme-handler/http" + "x-scheme-handler/https" + "x-scheme-handler/about" + "x-scheme-handler/unknown" + ]; + }; + }; + }; +} diff --git a/modules/home/conf/xdg/url_handler.sh b/modules/home/conf/xdg/url_handler.sh new file mode 100755 index 00000000..95eedffb --- /dev/null +++ b/modules/home/conf/xdg/url_handler.sh @@ -0,0 +1,18 @@ +#!/usr/bin/env dash + +# shellcheck source=/dev/null +SHELL_LIBRARY_VERSION="2.1.2" . %SHELL_LIBRARY_PATH + +project="$(echo "%ALL_PROJECTS_PIPE|nvim|zathura|" | rofi -sep "|" -dmenu)" + +if [ "$project" = "nvim" ]; then + "$TERMINAL" -e nvim "$1" +elif [ "$project" = "zathura" ]; then + zathura "$1" +elif [ "$project" ]; then + firefox -P "$project" "$1" +else + notify-send "(URL HANDLER) No project selected" && exit 1 +fi + +# vim: ft=sh diff --git a/modules/home/conf/xdg/xdg_vars.nix b/modules/home/conf/xdg/xdg_vars.nix new file mode 100644 index 00000000..3f7d5e00 --- /dev/null +++ b/modules/home/conf/xdg/xdg_vars.nix @@ -0,0 +1,26 @@ +{config, ...}: let + inherit (config.xdg) dataHome; +in { + # Variables that only have to be set because special applications fail to set reasonable + # defaults (mostly understandable because of backwards-compatibility, but yeah) + programs.zsh.sessionVariables = { + CARGO_HOME = "${dataHome}/cargo"; + GRADLE_USER_HOME = "${dataHome}/gradle"; + + #_JAVA_OPTIONS = lib.concatStringsSep " " [ + # ''-Djava.util.prefs.userRoot="${config.xdg.configHome}/java"'' + # ''-Djavafx.cachedir="${config.xdg.cacheHome}/openjfx"'' + # ]; + #GOPATH = "${config.xdg.dataHome}/go"; + #GTK2_RC_FILES = "${config.xdg.configHome}/gtk-2.0/gtkrc"; + #RUSTUP_HOME = "${config.xdg.dataHome}/rustup"; + #NPM_CONFIG_USERCONFIG = "${config.xdg.configHome}/npm/npmrc"; + #NUGET_PACKAGES = "${config.xdg.cacheHome}/NuGetPackages"; + #XAUTHORITY = "${config.xdg.stateHome}/Xauthority"; + #COMPDUMPFILE = "${config.xdg.dataHome}/zsh/.zcompdump}"; + #IPYTHONDIR = "${config.xdg.configHome}/ipython"; + #PARALLEL_HOME = "${config.xdg.configHome}/parallel"; + #STACK_XDG = "1"; + #WINEPREFIX = "${config.xdg.dataHome}/wine"; + }; +} -- cgit 1.4.1