summary refs log tree commit diff stats
path: root/user/settings/development/base.nix
blob: 83ec0334b659160f95c2cf3087f2af6bd98643ce (plain)
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
131
132
{ config
, pkgs
, ...
}:
{
  imports = [ ../../modules/tabnine.nix ];
  home.packages = with pkgs;
    [
      shellcheck
      shfmt
      dockerfile-language-server-nodejs
      yaml-language-server
      lua-language-server
      taplo # toml
      marksman

      license-cli
      just

      mosh

      curlHTTP3
      xh
      htmlq
      jq
      dasel
      miller
      watchexec
      entr
      personal.projectdo

      litecli

      skopeo
      docker-credential-helpers
      dive
    ] ++ (lib.optionals stdenv.isDarwin [
      lima
      colima
      docker-client
    ]);

  home.sessionVariables = {
    FLY_NO_UPDATE_CHECK = "1";
    MOSH_TITLE_NOPREFIX = "1";
    LIMA_INSTANCE = "nixos";
  };

  programs.emacs.extraPackages = epkgs: (with epkgs; [
    (treesit-grammars.with-grammars (grammars: with grammars; [
      tree-sitter-bash
      tree-sitter-fish
      tree-sitter-just
      tree-sitter-make
      tree-sitter-dockerfile
      tree-sitter-sql
    ]))
  ]);

  editorconfig = {
    enable = true;
    settings = {
      "*" = {
        charset = "utf-8";
        end_of_line = "lf";
        trim_trailing_whitespace = true;
        insert_final_newline = true;
        indent_style = "space";
        indent_size = 2;
        tab_width = 2;
      };
      "*.fish" = {
        indent_size = 4;
      };
      "*.md" = {
        trim_trailing_whitespace = false;
      };
      justfile = {
        indent_style = "tab";
        tab_width = 4;
      };
      Makefile = {
        indent_style = "tab";
        tab_width = 4;
      };
    };
  };

  programs.fish.shellAbbrs = {
    b = { function = "projectdo_build"; };
    r = { function = "projectdo_run"; };
    t = { function = "projectdo_test"; };
    p = { function = "projectdo_tool"; };
  };
  home.shellAliases = {
    j = "just";
    er = "direnv reload";
    ea = "direnv allow";
    ex = "direnv exec";
    es = "direnv status";
    laminarc = "ssh linde laminarc";
  };
  programs.direnv = {
    enable = true;
    nix-direnv = {
      enable = true;
    };
    config = {
      global = {
        disable_stdin = true;
        load_dotenv = true;
        strict_env = true;
        hide_env_diff = true;
      };
      whitelist = {
        prefix = with config.home; [
          "${homeDirectory}/projects/alanpearce.eu"
        ];
      };
    };
    stdlib = ''
      declare -A direnv_layout_dirs
      direnv_layout_dir() {
        echo "''${direnv_layout_dirs[$PWD]:=$(
          local hash="$(${pkgs.coreutils}/bin/sha256sum - <<<"''${PWD}" | cut -c-7)"
      		local path="''${PWD//[^a-zA-Z0-9]/-}"
          echo "${config.xdg.cacheHome}/direnv/layouts/''${hash}''${path}"
        )}"
      }
    '';
  };
}