nixos-config/home/alex/cli.nix

214 lines
3.8 KiB
Nix

{ 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;
enableDefaultConfig = false;
matchBlocks = {
"*" = {
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;
};
}