{ config, pkgs, ... }: # minimal config, suitable for servers let user = { name = config.home.username; fullName = "Alexander Kobjolke"; mail = "me@failco.de"; }; myEza = if builtins.hasAttr "eza" pkgs then "eza" else "exa"; in { imports = [ ./programs/neovim/default.nix ./programs/emacs/default.nix ./programs/editorconfig ./programs/jq ./programs/fzf ./programs/git ./programs/jujutsu ./programs/shell ./programs/devenv.nix ]; programs.home-manager.enable = true; home = { stateVersion = "21.05"; sessionPath = [ "$HOME/.local/bin" ]; }; # do not show home-manager notifications news.display = "silent"; home.packages = with pkgs; [ # archives #p7zip #unrar git-absorb git-annex git-annex-remote-rclone tea # command-line frontend for gitea # nix tools nix-index nixfmt-rfc-style # misc fd # better find file # info about files unzip dropbox gotop gnumake ripgrep # better grep pijul sqlite.dev sqlite # editing nil # nix language server shellcheck editorconfig-core-c shfmt (aspellWithDicts ( dicts: with dicts; [ en en-computers en-science de ] )) # system tools htop-vim # htop with vim bindings erdtree # du+tree had sex dua # ncdu but better gopass gopass-jsonapi gopass-hibp gcc cmake graphviz plantuml gnuplot pandoc hledger hledger-web hledger-ui nix-prefetch-git ]; home.extraOutputsToInstall = [ "doc" "info" "devdoc" ]; xdg.enable = true; xdg.configFile.tmux = { target = "tmux/tmux.conf"; text = '' set -g default-terminal "xterm-256color" set-window-option -g xterm-keys on set -ag update-environment "SSH_TTY SSH_CLIENT" set -g prefix C-z set -g status-keys vi setw -g mode-keys vi setw -g aggressive-resize on set -g mouse on # do not wait for a manually entered escape sequence, just forward it immediately set -g escape-time 0 bind-key C-z send-prefix set -g renumber-windows on bind-key T swap-window -t 0 ''; }; xdg.configFile.pijul = { target = "pijul/config.toml"; text = '' [author] name = "${user.name}" full_name = "${user.fullName}" email = "${user.mail}" ''; }; programs = { bash = { enable = true; }; # better cat bat.enable = true; # htop replacement with a nice UI btop.enable = true; # better ls with icons and stuff, maybe also try lsd ${myEza} = { enable = true; icons = "auto"; }; starship = { enable = true; }; direnv = { enable = true; nix-direnv = { enable = true; }; enableZshIntegration = true; enableBashIntegration = true; }; gh = { enable = true; settings.git_protocol = "ssh"; }; gpg = { enable = true; settings = { homedir = "~/.local/share/gnupg"; }; }; helix = { enable = true; settings.theme = "gruvbox"; }; password-store = { enable = true; package = pkgs.gopass; settings = { PASSWORD_STORE_DIR = "$HOME/.local/share/password-store"; }; }; ssh = { enable = true; controlMaster = "auto"; controlPersist = "10m"; }; texlive.enable = true; }; services.gpg-agent = { enable = true; enableSshSupport = true; defaultCacheTtl = 7200; defaultCacheTtlSsh = 7200; }; home.file.".local" = { recursive = true; source = ./local; }; }