blob: 9c2c8f863507cfeabf7f3c858071e55088aadc4b (
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
|
{ lib, pkgs, config, ... }: let
cfg = config._users.${username}.home;
username = "timmy";
email = "tjk@tjkeller.xyz";
fullname = "Tim Keller";
home = "/home/${username}";
userDirs = {
desktop = "${home}";
download = "${home}/dls";
documents = "${home}/docs";
pictures = "${home}/pics";
# Set these as null so they're not created
music = null;
publicShare = null;
templates = null;
videos = null;
#projects = "${home}/docs/src"
};
in {
options._users.${username}.home = {
enable = lib.mkEnableOption "configure home for user ${username}";
#neovim = {
# enableLSP = lib.mkEnableOption "whether to enable lsp";
#};
};
config = lib.mkIf cfg.enable {
# Setup home-manager
home = {
username = username;
homeDirectory = home;
stateVersion = "24.05";
};
# Setup userdirs
xdg.userDirs = {
enable = true;
createDirectories = true;
} // userDirs;
# Setup git
programs.git = {
enable = true;
settings = {
user = {
name = fullname;
email = email;
};
merge.tool = "nvimdiff";
mergetool.nvimdiff = {
cmd = ''nvim -d "$LOCAL" "$MERGED" "$REMOTE"'';
prompt = false;
};
# Unfortunately, this doesn't work for some reason
#url = {
# "ssh://git@publicgit/".insteadOf = "https://git.tjkeller.xyz/";
#};
};
};
# Setup gtk bookmarks
gtk.gtk3.bookmarks = (
lib.mapAttrsToList (name: dir:
lib.mkIf (dir != null) "file://${dir} ${lib.toUpper (lib.substring 0 1 name)}${lib.substring 1 (-1) name}" # Make first letter upper case
) userDirs
);
# Setup neovim
programs._neovim = {
enable = true;
package = pkgs.unstable.neovim;
viAlias = true;
vimAlias = true;
plugins = {
lsp = {
enable = lib.mkDefault true;
languageServers.packages = with pkgs; [
python313Packages.python-lsp-server
some-sass-language-server
svelte-language-server
tailwindcss-language-server
typescript-language-server
vscode-langservers-extracted
];
};
treesitter = let
allTSParserPackages = builtins.filter lib.isDerivation
(builtins.attrValues pkgs.vimPlugins.nvim-treesitter-parsers);
in {
enable = lib.mkDefault true;
parsers.packages = allTSParserPackages;
};
packages.start = with pkgs.vimPlugins; [
autoclose-nvim
blink-cmp
gruvbox-nvim
minitab-nvim
nvim-colorizer-lua
nvim-ts-autotag # depends on treesitter
pkgs.unstable.vimPlugins.rainbow-delimiters-nvim # depends on treesitter
snacks-nvim
];
};
extraPackages = with pkgs; [
gcc # Treesitter requires a C compiler
unzip # For zip, xlsx, etc. files
];
};
};
}
|