aboutsummaryrefslogtreecommitdiffstats
path: root/modules/home/soispha/conf/xdg
diff options
context:
space:
mode:
authorBenedikt Peetz <benedikt.peetz@b-peetz.de>2024-05-20 16:06:57 +0200
committerBenedikt Peetz <benedikt.peetz@b-peetz.de>2024-05-20 16:14:24 +0200
commit5156e1aae36a153be98b6832ab3ced7be2b2faee (patch)
tree3f050d3bc567af4c72f87e0925d21c3521436e45 /modules/home/soispha/conf/xdg
parentrefactor(hm/conf/zsh): Remove old zsh-prompt file (diff)
downloadnixos-config-5156e1aae36a153be98b6832ab3ced7be2b2faee.zip
refactor(hm): Rename to `modules/home`
Diffstat (limited to 'modules/home/soispha/conf/xdg')
-rw-r--r--modules/home/soispha/conf/xdg/default.nix63
-rwxr-xr-xmodules/home/soispha/conf/xdg/url_handler.sh18
-rw-r--r--modules/home/soispha/conf/xdg/xdg_vars.nix26
3 files changed, 107 insertions, 0 deletions
diff --git a/modules/home/soispha/conf/xdg/default.nix b/modules/home/soispha/conf/xdg/default.nix
new file mode 100644
index 00000000..4099720d
--- /dev/null
+++ b/modules/home/soispha/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/soispha/conf/xdg/url_handler.sh b/modules/home/soispha/conf/xdg/url_handler.sh
new file mode 100755
index 00000000..95eedffb
--- /dev/null
+++ b/modules/home/soispha/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/soispha/conf/xdg/xdg_vars.nix b/modules/home/soispha/conf/xdg/xdg_vars.nix
new file mode 100644
index 00000000..3f7d5e00
--- /dev/null
+++ b/modules/home/soispha/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";
+ };
+}