summaryrefslogtreecommitdiff
path: root/modules/shell.nix
diff options
context:
space:
mode:
Diffstat (limited to 'modules/shell.nix')
-rw-r--r--modules/shell.nix75
1 files changed, 75 insertions, 0 deletions
diff --git a/modules/shell.nix b/modules/shell.nix
new file mode 100644
index 0000000..68111ea
--- /dev/null
+++ b/modules/shell.nix
@@ -0,0 +1,75 @@
+{ config
+, pkgs
+, hmLib
+, lib
+, userOptions
+, ...
+}:
+{
+ home.sessionVariables = {
+ EDITOR = "nvim";
+ };
+
+ home.sessionPath = [
+ "${userOptions.userHome}/.cargo/bin"
+ ];
+
+ home.activation.coursierSetup = hmLib.hm.dag.entryAfter [ "writeBoundary" ] ''
+ $DRY_RUN_CMD ${pkgs.coursier}/bin/cs setup --env --jvm 21
+ '';
+
+ programs.fzf = {
+ enable = true;
+ enableZshIntegration = true;
+ };
+
+ programs.zsh = {
+ enable = true;
+ enableCompletion = true;
+ initContent = ''
+ bindkey '\e.' insert-last-word
+ if java_home=$(cs java-home --jvm 21 2>/dev/null); then
+ export JAVA_HOME="$java_home"
+ fi
+ '';
+ plugins = [
+ {
+ name = "fzf-tab";
+ src = pkgs.fetchFromGitHub {
+ owner = "Aloxaf";
+ repo = "fzf-tab";
+ rev = "v1.2.0";
+ sha256 = "0mnsmfv0bx6np2r6pll43h261v7mh2ic1kd08r7jcwyb5xarfvmb";
+ };
+ }
+ ];
+ };
+
+ programs.git = {
+ enable = true;
+ settings = {
+ user = {
+ email = "${userOptions.gitEmail}";
+ name = "${userOptions.gitName}";
+ };
+ pull.rebase = true;
+ merge.conflictstyle = "zdiff3";
+ };
+ };
+
+ services.gpg-agent = {
+ enable = true;
+ };
+
+ programs.tmux = {
+ enable = true;
+ extraConfig = ''
+ set -g default-command "${pkgs.zsh}/bin/zsh"
+ '';
+ };
+
+ programs.starship = {
+ enable = true;
+ enableZshIntegration = true;
+ };
+}