Nix configurations for my homelab
1{ pkgs, ... }:
2{
3 nixpkgs.overlays = [
4 (final: prev: {
5 kakoune-unwrapped = prev.kakoune-unwrapped.overrideAttrs (
6 finalAttrs: prevAttrs: {
7 patches = [
8 (prev.writeText "escript.patch" ''
9 diff --git a/rc/filetype/erlang.kak b/rc/filetype/erlang.kak
10 index 35b60cf2..3e42263d 100644
11 --- a/rc/filetype/erlang.kak
12 +++ b/rc/filetype/erlang.kak
13 @@ -6,7 +6,7 @@
14
15 # Detection
16 # ‾‾‾‾‾‾‾‾‾
17 -hook global BufCreate .*[.](erl|hrl) %{
18 +hook global BufCreate .*[.](erl|escript|hrl) %{
19 set-option buffer filetype erlang
20 }
21
22 @@ -31,6 +31,7 @@ provide-module erlang %[
23 add-highlighter shared/erlang regions
24 add-highlighter shared/erlang/default default-region group
25
26 +add-highlighter shared/erlang/shebang region ^#! $ fill meta
27 add-highlighter shared/erlang/comment region '(?<!\$)%' '$' fill comment
28 add-highlighter shared/erlang/attribute_atom_single_quoted region %{-'} %{(?<!\\)(?:\\\\)*'(?=[\( \.])} fill builtin
29 add-highlighter shared/erlang/attribute region '\b-[a-z][\w@]*(?=[\( \.])' '\K' fill builtin
30 '')
31 ];
32 }
33 );
34 kakoune-lsp = prev.kakoune-lsp.overrideAttrs (
35 finalAttrs: prevAttrs: {
36 patches = prevAttrs.patches ++ [
37 (prev.writeText "erlang-elp" ''
38 diff --git a/rc/servers.kak b/rc/servers.kak
39 index afedb57..8d961e7 100644
40 --- a/rc/servers.kak
41 +++ b/rc/servers.kak
42 @@ -124,10 +124,9 @@ hook -group lsp-filetype-elvish global BufSetOption filetype=elvish %{
43
44 hook -group lsp-filetype-erlang global BufSetOption filetype=erlang %{
45 set-option buffer lsp_servers %{
46 - [erlang_ls]
47 + [elp]
48 root_globs = ["rebar.config", "erlang.mk", ".git", ".hg"]
49 - # See https://github.com/erlang-ls/erlang_ls.git for more information and
50 - # how to configure. This default config should work in most cases though.
51 + args = [ "server" ]
52 }
53 }
54 '')
55 ];
56 }
57 );
58 })
59 ];
60
61 environment = {
62 sessionVariables = {
63 EDITOR = "kak";
64 VISUAL = "kak";
65 };
66 systemPackages = with pkgs; [
67 file
68 kakoune-unwrapped
69 ];
70 };
71
72 users.users.mou.packages = with pkgs; [
73 kakoune-lsp
74 shellcheck
75 ];
76}