about summary refs log tree commit diff stats
path: root/modules/home/conf/xdg
diff options
context:
space:
mode:
authorBenedikt Peetz <benedikt.peetz@b-peetz.de>2024-05-23 13:31:11 +0200
committerBenedikt Peetz <benedikt.peetz@b-peetz.de>2024-05-23 13:33:40 +0200
commitfd9b0ecef4142a62b45404700ba1cff488f84a73 (patch)
treeef6c1f74f05a2220a41ccff4b0890c39229f32f7 /modules/home/conf/xdg
parentrefactor(pkgs): Categorize into `by-name` shards (diff)
downloadnixos-config-fd9b0ecef4142a62b45404700ba1cff488f84a73.tar.gz
nixos-config-fd9b0ecef4142a62b45404700ba1cff488f84a73.zip
refactor(modules/home): Setup as "normal" NixOS module
Diffstat (limited to 'modules/home/conf/xdg')
-rw-r--r--modules/home/conf/xdg/default.nix63
-rwxr-xr-xmodules/home/conf/xdg/url_handler.sh18
-rw-r--r--modules/home/conf/xdg/xdg_vars.nix26
3 files changed, 107 insertions, 0 deletions
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";
+  };
+}