{ 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 rust-analyzer ]; stateVersion = "22.05"; }; services.gpg-agent = { enable = true; enableZshIntegration = true; pinentryFlavor = "gtk2"; }; 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 rust-tools-nvim lua-dev-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 = [[]] }) 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; settings = { format = lib.concatStrings [ "$all" "$directory" "$character" ]; hostname.format = "[$ssh_symbol$hostname]($style) "; }; }; 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; }; }]; }; }; }