-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathhome.nix
241 lines (237 loc) · 5.86 KB
/
home.nix
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
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
{ config, pkgs, ... }:
let
username = "khassanov";
in
{
home.username = username;
home.homeDirectory = "/home/${username}";
# home.sessionVariables.LOCALES_ARCHIVE = "${pkgs.glibcLocales}/lib/locale/locale-archive";
# home.sessionVariables = {
# # see: https://github.com/NixOS/nixpkgs/issues/38991#issuecomment-400657551
# LOCALE_ARCHIVE_2_11 = "/usr/bin/locale/locale-archive";
# LOCALE_ARCHIVE_2_27 = "${pkgs.glibcLocales}/lib/locale/locale-archive";
# };
# home.language = let
# en = "en_US.UTF-8";
# ru = "ru_RU.UTF-8";
# es = "es_ES.UTF-8";
# in {
# address = ru;
# monetary = ru;
# paper = ru;
# time = en;
# base = en;
# };
# https://gist.github.com/peti/2c818d6cb49b0b0f2fd7c300f8386bc3
programs.home-manager.enable = true;
nixpkgs.config.allowUnfree = true;
home.packages = with pkgs; [
# pianoteq
# wineWowPackages.staging
# nodePackages.tern # wanted by emacs ts layer, but fail HM
# nodePackages.prettier
# tree # fails home-manager service
# python38Packages.ipython
(vagrant.override { withLibvirt = false; }) # temporary fix for xen issue
alacritty
anydesk
awscli2
bmon # network usage monitor
brave
coreutils
discord
docker
docker-compose
eclipses.eclipse-cpp
element-desktop # matrix messaging
evince
firefox
gimp
go-tools
go_bootstrap
goimports
goldendict # dictionary lookup
gotools
htop
hubstaff
jetbrains.idea-ultimate
kompose
kubectl
kubernetes
kubernetes-helm
ledger-live-desktop
libreoffice
minikube
mongodb-compass
ncdu # disk usage
nodejs
nvtop # htop-like monitoring tool for GPU
obs-studio
openshot-qt
openssl
opera
pavucontrol
pciutils
pipenv
postman
python38Packages.pip
qalculate-gtk
qemu
skype
slack
spotify
steam
tdesktop # telegram
teamviewer
termdown
transmission-gtk # torrents
umlet
unrar
viber
virt-manager # qemu GUI
vlc
vokoscreen-ng
wmctrl # X Window manager cli
xclip
yarn
zoom-us
];
programs = {
command-not-found.enable = true;
git = {
enable = true;
package = pkgs.gitAndTools.gitFull;
includes = [{ path = "/home/${username}/Workspace/configuration/dotfiles/.gitconfig"; }];
lfs.enable = true;
};
chromium.enable = true;
neovim = {
enable = true;
viAlias = true;
vimAlias = true;
vimdiffAlias = true;
withNodeJs = true;
withPython = true;
withPython3 = true;
withRuby = true;
plugins = with pkgs.vimPlugins; [
# vim-graphql
# vim-ros
# vim-scheme
# vim-urscript
YouCompleteMe
fzf-vim
indentLine
jellybeans-vim
nerdtree
tagbar
vim-fugitive
vim-gitgutter
vim-go
vim-gutentags
vim-json
vim-nix
vim-toml
vim-xkbswitch
vimspector
];
extraConfig = builtins.readFile ./dotfiles/.vimrc;
extraPackages = with pkgs; [
clang-tools # required by coc-nvim for C-family
rust-analyzer
universal-ctags
xkb-switch # required by vim-xkbswitch
];
# extraPython3Packages = (ps: with ps; [
# pyls-black # required by coc-nvim
# pyls-isort # required by coc-nvim
# pyls-mypy # required by coc-nvim
# ]);
};
tmux = {
enable = true;
plugins = with pkgs; [
tmuxPlugins.cpu
{
plugin = tmuxPlugins.resurrect;
extraConfig = "set -g @resurrect-strategy-nvim 'session'";
}
];
extraConfig = ''
source /home/${username}/Workspace/configuration/dotfiles/.tmux.conf
'';
};
zsh = {
enable = true;
enableAutosuggestions = true;
enableCompletion = true;
oh-my-zsh = {
enable = true;
theme = "candy";
plugins = [ "git" "ssh-agent" "docker" "docker-compose" "vagrant" "man" ];
# extra config for plugins
extraConfig = ''
zstyle :omz:plugins:ssh-agent identities id_ed25519
zstyle :omz:plugins:ssh-agent agent-forwarding on
zstyle :omz:plugins:ssh-agent lifetime 24h
'';
};
# extra config for zsh itself
initExtra = builtins.readFile ./dotfiles/.zshrc;
};
# eclipse = {
# enable = true;
# jvmArgs = [ "-Xmx2048m" ];
# plugins = with eclipses.plugins; [ cdt ];
# # plugins = [ "cdt" ];
# };
# rofi.enable = true;
};
# xsession = {
# enable = true;
# windowManager.xmonad = {
# enable = true;
# enableContribAndExtras = true;
# extraPackages = haskellPackages: [
# haskellPackages.xmonad-contrib
# haskellPackages.xmonad-extras
# haskellPackages.xmonad
# haskellPackages.monad-logger
# ];
# config = ./dotfiles/.xmonad/xmonad.hs;
# };
# };
services.gpg-agent = {
enable = true;
enableSshSupport = true;
};
home.stateVersion = "20.09";
services.emacs = {
enable = true; # emacs daemon mode
client.enable = true; # desktop icon
};
programs.emacs = {
enable = true;
# extraPackages = epkgs: [
# # epkgs.pdf-tools # never works as expected
# # nodePckages.tern
# # pkgs.gocode
# # pkgs.gocode-gomod
# # epkgs.go-guru
# # pkgs.goimports
# # pkgs.go_bootstrap
# # pkgs.goimports
# # pkgs.node
# ];
};
home.file.".emacs.d" = {
source = builtins.fetchGit {
url = "https://github.com/syl20bnr/spacemacs";
ref = "develop";
};
recursive = true;
};
home.file.".spacemacs".source = ./dotfiles/.spacemacs.el;
home.file."./.config/alacritty/alacritty.yml".source = ./dotfiles/alacritty.yml;
home.file.".ideavimrc".source = ./dotfiles/.ideavimrc;
}