all repos — nixfiles @ 4b8a6dbe53b4635a332ea98f9b97ac82bc473fa1

System and user configuration, managed by nix and home-manager

user/settings/development/web.nix (view raw)

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
{
  config,
  pkgs,
  lib,
  ...
}:
let
  nixfiles = config.home.homeDirectory + "/projects/alin.ovh/nixfiles";
  direct_symlink =
    path: config.lib.file.mkOutOfStoreSymlink "${nixfiles}/${lib.removePrefix "/" path}";
in
{
  imports = [
    ../../modules/caddy.nix
  ];

  home.packages = with pkgs; [
    vscode-langservers-extracted
    stylelint
    emmet-language-server
    flyctl
  ];
  home.shellAliases = {
    # 0.2.25 current completion command only affects `flyctl`, although `fly` is a link to `flyctl`
    fly = "flyctl";
  };
  programs.emacs.extraPackages =
    epkgs:
    (with epkgs; [
      caddyfile-mode
      emmet-mode
      nginx-mode
      web-mode
      (treesit-grammars.with-grammars (
        grammars: with grammars; [
          tree-sitter-css
          tree-sitter-html
        ]
      ))
    ]);
  programs.nixvim.plugins = {
    lsp.servers = {
      emmet_language_server.enable = true;
      cssls.enable = true;
      html.enable = true;
      jsonls.enable = true;
    };
  };

  programs.zed-editor = {
    extensions = [
      "caddyfile"
    ];
    userSettings = {
      languages = {
        Caddyfile = {
          format_on_save = "on";
          tab_size = 2;
          formatter = {
            external = {
              command = "caddy";
              arguments = [ "fmt" "-c" "-"];
            };
          };
        };
      };
    };
  };

  services.caddy = {
    enable = true;
    configFile = direct_symlink "user/settings/development/web/Caddyfile";
    watch = true;
  };
}