about summary refs log tree commit diff stats
path: root/modules/by-name/fo
diff options
context:
space:
mode:
authorBenedikt Peetz <benedikt.peetz@b-peetz.de>2026-05-28 21:43:34 +0200
committerBenedikt Peetz <benedikt.peetz@b-peetz.de>2026-05-28 21:43:58 +0200
commit8e168b3b8d5e1c4d56dee4af671b19c8bea1b4d1 (patch)
treee2b36a26e9d8083e8668dd37f60ace0fa15fb38b /modules/by-name/fo
parentpkgs/{fupdate,lf-make-map,mpdpopm,river-mk-keymap,tskm}: Update (diff)
downloadnixos-config-8e168b3b8d5e1c4d56dee4af671b19c8bea1b4d1.zip
modules/foot: Init
Diffstat (limited to 'modules/by-name/fo')
-rw-r--r--modules/by-name/fo/foot/module.nix82
1 files changed, 82 insertions, 0 deletions
diff --git a/modules/by-name/fo/foot/module.nix b/modules/by-name/fo/foot/module.nix
new file mode 100644
index 00000000..d818aac0
--- /dev/null
+++ b/modules/by-name/fo/foot/module.nix
@@ -0,0 +1,82 @@
+# nixos-config - My current NixOS configuration
+#
+# Copyright (C) 2025 Benedikt Peetz <benedikt.peetz@b-peetz.de>
+# SPDX-License-Identifier: GPL-3.0-or-later
+#
+# This file is part of my nixos-config.
+#
+# You should have received a copy of the License along with this program.
+# If not, see <https://www.gnu.org/licenses/gpl-3.0.txt>.
+{
+  config,
+  lib,
+  libraries,
+  ...
+}: let
+  cfg = config.soispha.foot;
+in {
+  options.soispha.foot = {
+    enable = libraries.base.options.mkEnable "foot terminal";
+  };
+
+  config = lib.mkIf cfg.enable {
+    home-manager.users.soispha = {
+      programs.foot = {
+        enable = true;
+        server.enable = true;
+        settings = {
+          main = {
+            font = "SauceCodePro Nerd Font Mono:size=12";
+            horizontal-letter-offset = -1;
+            vertical-letter-offset = -1;
+          };
+          # environment = {
+          #   COLORTERM = "truecolor";
+          # };
+          "regex:hashes" = {
+            regex = "([a-fA-F0-9]{7,128})";
+            launch = "git show \${match}";
+          };
+          "regex:paths" = {
+            regex = "([^ '\"`=:\\\\[\\\\(]*/)([^/: '\"`\\\\)\\\\]]*)";
+            launch = "ll \${match}";
+          };
+
+          key-bindings = {
+            regex-launch = [
+              "[hashes] Control+h"
+              "[paths] Control+t"
+            ];
+            regex-copy = [
+              "[hashes] Control+Shift+h"
+              "[paths] Control+Shift+t"
+            ];
+          };
+        };
+      };
+
+      systemd.user.services = let
+        footCfg = config.home-manager.users.soispha.programs.foot;
+        inherit (footCfg.server) systemdTarget;
+      in {
+        foot-initial-term = {
+          Unit = {
+            Description = "Fast, lightweight and minimalistic Wayland terminal emulator.";
+            Documentation = "man:foot(1)";
+            PartOf = [systemdTarget];
+            After = [systemdTarget];
+            ConditionEnvironment = "WAYLAND_DISPLAY";
+          };
+
+          Service = {
+            ExecStart = "${lib.getExe' footCfg.package "footclient"}";
+          };
+
+          Install = {
+            WantedBy = [systemdTarget];
+          };
+        };
+      };
+    };
+  };
+}