312 lines
6.8 KiB
Nix
312 lines
6.8 KiB
Nix
{ config, lib, pkgs, user, ... }:
|
|
|
|
{
|
|
home = {
|
|
username = "${user}";
|
|
homeDirectory = "/home/${user}";
|
|
|
|
packages = with pkgs; [
|
|
bat
|
|
firefox
|
|
jq
|
|
htop
|
|
ripgrep
|
|
pavucontrol
|
|
gnumake
|
|
unzip
|
|
gcc
|
|
slack
|
|
thunderbird
|
|
signal-desktop
|
|
tdesktop
|
|
whatsapp-for-linux
|
|
nextcloud-client
|
|
keepassxc
|
|
direnv
|
|
tree
|
|
light
|
|
|
|
# LSP
|
|
sumneko-lua-language-server
|
|
rnix-lsp
|
|
terraform-ls
|
|
tflint
|
|
nodePackages.bash-language-server
|
|
];
|
|
|
|
stateVersion = "22.05";
|
|
};
|
|
|
|
services.gpg-agent = {
|
|
enable = true;
|
|
enableZshIntegration = true;
|
|
pinentryFlavor = "gnome3";
|
|
};
|
|
|
|
programs = {
|
|
fzf = {
|
|
enable = true;
|
|
enableZshIntegration = true;
|
|
};
|
|
|
|
git = {
|
|
enable = true;
|
|
extraConfig = {
|
|
user.private.name = "Michael Mandl";
|
|
user.private.email = "mandlm@molez.net";
|
|
user.private.signingkey = "4AA25D647AA54CC7";
|
|
|
|
user.swp.name = "Michael Mandl";
|
|
user.swp.email = "mandl@vi-bim.de";
|
|
user.swp.signingkey = "4E60F44227F611B4";
|
|
|
|
core.editor = "nvim";
|
|
fetch.writeCommitGraph = true;
|
|
format.pretty = "format:%C(yellow)%h %Cblue%>(12)%ad %C(red)%G? %Cgreen%<(7,trunc)%aN%Cred%d %Creset%s";
|
|
init.defaultBranch = "main";
|
|
log.date = "relative";
|
|
pull.rebase = true;
|
|
rebase.autostash = true;
|
|
rerere.enabled = true;
|
|
worktree.guessRemote = true;
|
|
};
|
|
|
|
aliases = {
|
|
identity = "! git config user.name \"$(git config user.$1.name)\"; git config user.email \"$(git config user.$1.email)\"; git config user.signingkey \"$(git config user.$1.signingkey)\"; git config commit.gpgsign \"true\"; :";
|
|
};
|
|
|
|
ignores = [
|
|
".env"
|
|
".direnv"
|
|
"*.swp"
|
|
];
|
|
};
|
|
|
|
kitty = {
|
|
enable = true;
|
|
theme = "Solarized Dark";
|
|
font = {
|
|
name = "DejaVu Sans Mono";
|
|
size = 12;
|
|
};
|
|
};
|
|
|
|
neovim = {
|
|
enable = true;
|
|
plugins = with pkgs.vimPlugins; [
|
|
# theme
|
|
nvim-solarized-lua
|
|
|
|
delimitMate
|
|
vim-bbye
|
|
ansible-vim
|
|
|
|
# session handling
|
|
vim-obsession
|
|
vim-prosession
|
|
|
|
nvim-web-devicons
|
|
nvim-treesitter
|
|
markdown-preview-nvim # use({ "iamcco/markdown-preview.nvim", run = ":call mkdp#util#install()" })
|
|
toggleterm-nvim
|
|
nvim-notify
|
|
comment-nvim
|
|
lualine-nvim
|
|
tabline-nvim
|
|
indent-blankline-nvim
|
|
plenary-nvim
|
|
|
|
# git
|
|
gitsigns-nvim
|
|
vim-fugitive
|
|
gv-vim
|
|
|
|
# snippets
|
|
friendly-snippets
|
|
luasnip
|
|
|
|
# auto-completion
|
|
nvim-cmp
|
|
cmp-nvim-lsp
|
|
cmp-buffer
|
|
cmp-path
|
|
cmp-cmdline
|
|
cmp-nvim-lua
|
|
cmp_luasnip
|
|
cmp-calc
|
|
|
|
# telescope
|
|
telescope-nvim
|
|
telescope-fzf-native-nvim
|
|
telescope-ui-select-nvim
|
|
|
|
# LSP
|
|
nvim-lspconfig
|
|
lsp-status-nvim
|
|
];
|
|
|
|
extraConfig = ''
|
|
lua << EOF
|
|
${builtins.readFile ./nvim/lua/keymaps.lua }
|
|
${builtins.readFile ./nvim/lua/options.lua }
|
|
${builtins.readFile ./nvim/lua/plugins/treesitter.lua }
|
|
${builtins.readFile ./nvim/lua/plugins/lspconfig.lua }
|
|
|
|
require("toggleterm").setup({ size = 32, open_mapping = [[<F4>]] })
|
|
|
|
require("notify").setup({ stages = "fade" })
|
|
vim.notify = require("notify")
|
|
|
|
require('Comment').setup({})
|
|
|
|
require('lualine').setup({
|
|
options = { globalstatus = true },
|
|
sections = {
|
|
lualine_c = { { "filename", path = 1 }, "require('lsp-status').status()" }
|
|
},
|
|
extensions = { "toggleterm" }
|
|
})
|
|
|
|
require('tabline').setup({ enable = true, options = { show_bufnr = true, show_filename_only = true }})
|
|
|
|
require("indent_blankline").setup {
|
|
char = "┊",
|
|
buftype_exclude = { "terminal", "help", "nofile" },
|
|
filetype_exclude = { 'help', 'packer' },
|
|
show_trailing_blankline_indent = false
|
|
}
|
|
|
|
require('gitsigns').setup()
|
|
|
|
require("luasnip.loaders.from_vscode").lazy_load()
|
|
|
|
${builtins.readFile ./nvim/lua/plugins/nvim-cmp.lua }
|
|
${builtins.readFile ./nvim/lua/plugins/telescope.lua }
|
|
|
|
${builtins.readFile ./nvim/lua/themes.lua }
|
|
EOF
|
|
'';
|
|
};
|
|
|
|
tmux = {
|
|
enable = true;
|
|
newSession = true;
|
|
keyMode = "vi";
|
|
|
|
extraConfig = ''
|
|
set-option -g status off
|
|
'';
|
|
|
|
plugins = with pkgs.tmuxPlugins; [
|
|
vim-tmux-navigator
|
|
tmux-colors-solarized
|
|
];
|
|
};
|
|
|
|
gpg = {
|
|
enable = true;
|
|
mutableKeys = false;
|
|
mutableTrust = false;
|
|
publicKeys = [{
|
|
source = ./gnupg/pubring.asc;
|
|
trust = "ultimate";
|
|
}];
|
|
};
|
|
|
|
zsh = {
|
|
enable = true;
|
|
enableSyntaxHighlighting = true;
|
|
history.size = 10000;
|
|
|
|
oh-my-zsh = {
|
|
enable = true;
|
|
plugins = [ "direnv" "tmux" "vi-mode" ];
|
|
};
|
|
|
|
localVariables = {
|
|
ZSH_TMUX_AUTOSTART = true;
|
|
ZSH_TMUX_AUTOCONNECT = true;
|
|
ZSH_TMUX_UNICODE = true;
|
|
};
|
|
};
|
|
|
|
starship = {
|
|
enable = true;
|
|
};
|
|
|
|
i3status-rust = {
|
|
enable = true;
|
|
bars = {
|
|
default = {
|
|
theme = "solarized-dark";
|
|
icons = "awesome";
|
|
|
|
blocks = [
|
|
{
|
|
block = "memory";
|
|
display_type = "memory";
|
|
format_mem = "{mem_used_percents}";
|
|
}
|
|
{
|
|
block = "cpu";
|
|
interval = 1;
|
|
format = "{barchart} {frequency}";
|
|
}
|
|
{
|
|
block = "load";
|
|
interval = 1;
|
|
format = "{1m}";
|
|
}
|
|
{
|
|
block = "battery";
|
|
hide_missing = true;
|
|
format = "{time} ({percentage})";
|
|
}
|
|
{
|
|
block = "time";
|
|
interval = 60;
|
|
format = "%a %d.%m %R";
|
|
}
|
|
];
|
|
};
|
|
};
|
|
};
|
|
|
|
home-manager.enable = true;
|
|
};
|
|
|
|
xsession.windowManager.i3 = {
|
|
enable = true;
|
|
config = {
|
|
modifier = "Mod4";
|
|
terminal = "${pkgs.kitty}/bin/kitty";
|
|
|
|
fonts = {
|
|
names = [ "DejaVu Sans Mono" ];
|
|
size = 12.0;
|
|
};
|
|
|
|
window = {
|
|
titlebar = false;
|
|
border = 0;
|
|
};
|
|
|
|
floating = {
|
|
titlebar = false;
|
|
border = 0;
|
|
};
|
|
|
|
bars = [{
|
|
mode = "hide";
|
|
position = "top";
|
|
statusCommand = "${pkgs.i3status-rust}/bin/i3status-rs ~/.config/i3status-rust/config-default.toml";
|
|
|
|
fonts = {
|
|
names = [ "DejaVu Sans Mono" ];
|
|
size = 12.0;
|
|
};
|
|
}];
|
|
};
|
|
};
|
|
}
|