aboutsummaryrefslogtreecommitdiff
path: root/nix/users/fcuny/dev.nix
blob: 7fb8f93157f926f3154916b5f8fd69a379144dcf (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
{
  config,
  pkgs,
  ...
}:
{
  home.packages = with pkgs; [
    aider-chat
    basedpyright
    customPackages.llmPython.llm # llm and claude support
    delve
    dive # explore layers in docker images
    docker
    docker-credential-helpers
    go-tools # collection of tools, https://github.com/dominikh/go-tools
    golangci-lint
    gopls
    nil # nix lsp
    nix-direnv # integration with direnv
    nixfmt-rfc-style # new formatter
    python3
    ruff
    # ruff-lsp
    rustup
    uv
    wireshark
  ];

  # https://wezterm.org/config/lua/general.html
  programs.wezterm = {
    enable = true;
    extraConfig = ''
      local config = {}
      if wezterm.config_builder then
        config = wezterm.config_builder()
      end

      config.color_scheme = 'Catppuccin Macchiato'

      config.scrollback_lines = 10000

      config.font = wezterm.font("Source Code Pro")
      config.font_size = 14.0
      config.line_height = 1.0

      config.window_frame = {
        font = wezterm.font({ family = 'Source Code Pro', weight = 'Bold' }),
        font_size = 11.0,
      }

      config.bold_brightens_ansi_colors = true
      config.window_decorations = 'RESIZE|INTEGRATED_BUTTONS'
      config.window_padding = { left = '0.5cell', right = '0.5cell', top = '0.5cell', bottom = '0.5cell' }
      config.window_background_opacity = 0.97
      config.macos_window_background_blur = 30
      config.default_cursor_style = 'BlinkingBar'

      local act = wezterm.action
      config.keys = {
        -- Override CMD+t to always start new tabs in the home directory.
        { key = 't', mods = 'SUPER', action = act.SpawnCommandInNewTab { cwd = wezterm.home_dir } },
      }

      config.audible_bell = "Disabled"
      config.visual_bell = {
        fade_in_duration_ms = 75,
        fade_out_duration_ms = 75,
        target = 'CursorColor',
      };

      config.term = "xterm-256color"

      config.front_end = "WebGpu"

      -- in order to access menu bar when in fullscreen
      config.native_macos_fullscreen_mode = true

      -- select the pane with the mouse
      config.pane_focus_follows_mouse = true

      -- Set initial size
      config.initial_cols = 120
      config.initial_rows = 36

      -- Since we're managing the binary with nix, no need for this
      config.check_for_updates = false

      wezterm.on('update-status', function(window)
        -- Grab the utf8 character for the "powerline" left facing
        -- solid arrow.
        local SOLID_LEFT_ARROW = utf8.char(0xe0b2)

        -- Grab the current window's configuration, and from it the
        -- palette (this is the combination of your chosen colour scheme
        -- including any overrides).
        local color_scheme = window:effective_config().resolved_palette
        local bg = color_scheme.background
        local fg = color_scheme.foreground

        window:set_right_status(wezterm.format({
          -- First, we draw the arrow...
          { Background = { Color = 'none' } },
          { Foreground = { Color = bg } },
          { Text = SOLID_LEFT_ARROW },
          -- Then we draw our text
          { Background = { Color = bg } },
          { Foreground = { Color = fg } },
          { Text = ' ' .. wezterm.hostname() .. ' ' },
        }))
      end)

      return config
    '';
  };

  programs.go = {
    enable = true;
    goPath = ".local/share/pkg.go";
    goBin = ".local/bin.go";
    goPrivate = [
      "github.rbx.com/*"
      "github.com/fcuny/*"
    ];
  };

  home.sessionPath = [
    config.home.sessionVariables.GOBIN
    "${config.home.homeDirectory}/.local/bin"
  ];
}