aboutsummaryrefslogtreecommitdiff
path: root/modules/users/cli
diff options
context:
space:
mode:
Diffstat (limited to 'modules/users/cli')
-rw-r--r--modules/users/cli/default.nix7
-rw-r--r--modules/users/cli/opencode/default.nix30
-rw-r--r--modules/users/cli/tmux/default.nix55
3 files changed, 92 insertions, 0 deletions
diff --git a/modules/users/cli/default.nix b/modules/users/cli/default.nix
new file mode 100644
index 0000000..98fe1fb
--- /dev/null
+++ b/modules/users/cli/default.nix
@@ -0,0 +1,7 @@
+{ ... }:
+{
+ imports = [
+ ./tmux
+ ./opencode
+ ];
+}
diff --git a/modules/users/cli/opencode/default.nix b/modules/users/cli/opencode/default.nix
new file mode 100644
index 0000000..8c1071d
--- /dev/null
+++ b/modules/users/cli/opencode/default.nix
@@ -0,0 +1,30 @@
+{
+ config,
+ lib,
+ ...
+}:
+let
+ cfg = config.nx.cli.opencode;
+ inherit (lib) mkOption types mkIf;
+in
+{
+
+ options.nx.cli.opencode = {
+ enable = mkOption {
+ description = "opencode open source ai coding agent";
+ type = types.bool;
+ default = false;
+ };
+ };
+
+ config = mkIf cfg.enable {
+ programs.opencode = {
+ enable = true;
+ settings = {
+ theme = "system";
+ share = "disabled";
+ autoupdate = false;
+ };
+ };
+ };
+}
diff --git a/modules/users/cli/tmux/default.nix b/modules/users/cli/tmux/default.nix
new file mode 100644
index 0000000..9259c0b
--- /dev/null
+++ b/modules/users/cli/tmux/default.nix
@@ -0,0 +1,55 @@
+{
+ config,
+ pkgs,
+ lib,
+ ...
+}:
+let
+ inherit (lib) mkOption types mkIf;
+ cfg = config.nx.tmux;
+
+in
+{
+ options.nx.tmux = {
+ enable = mkOption {
+ description = "tmux";
+ type = types.bool;
+ default = config.nx.terminal.multiplexer == "tmux";
+ };
+ };
+ config = mkIf cfg.enable {
+ programs.tmux = {
+ enable = true;
+ keyMode = "vi";
+ secureSocket = true;
+ shell = "${pkgs.${config.nx.terminal.defaultShell}}/bin/${config.nx.terminal.defaultShell}";
+ terminal = "xterm-256color";
+ extraConfig = ''
+ unbind C-b
+ set-option -g prefix C-a
+ bind-key C-a send-prefix
+ bind -n M-Left select-pane -L
+ bind -n M-Right select-pane -R
+ bind -n M-Up select-pane -U
+ bind -n M-Down select-pane -D
+
+ # style
+ set -g status-position top
+ set -g status-justify absolute-centre
+ set -g status-style 'fg=color7 bg=default'
+ set -g status-right ""
+ # set -g status-right ' #(cd #{pane_current_path}; git rev-parse --abbrev-ref HEAD)'
+ # set -g status-right ""
+ set -g status-left '#S'
+ set -g status-left-style 'fg=color8'
+ set -g status-right-length 0
+ set -g status-left-length 100
+ setw -g window-status-current-style 'fg=colour6 bg=default bold'
+ setw -g window-status-current-format '#I:#W '
+ setw -g window-status-style 'fg=color8'
+
+ set -g mouse on
+ '';
+ };
+ };
+}