{ lib, config, pkgs, ... }:
{
# Let Home Manager install and manage itself.
programs.home-manager.enable = true;
nixpkgs.config.allowUnfree = true;
imports = [
./lib/ipfs.nix
./lib/syncthing.nix
];
home.packages = with pkgs; [
# shell
ripgrep
# dev
fd
# comms
element-desktop
signal-desktop
# media
quodlibet-full
# misc
par2cmdline
fossil
xclip
];
home.shellAliases = {
"ls" = "${pkgs.exa}/bin/exa";
};
programs.broot.enable = true;
programs.direnv.enable = true;
programs.bash = {
enable = true;
enableVteIntegration = true;
historyFile = "${config.xdg.dataHome}/bash/history";
};
programs.zsh = {
enable = true;
dotDir = ".config/zsh";
history.path = "${config.xdg.dataHome}/zsh/history";
initExtraFirst = builtins.readFile ./shell/.zshrc;
oh-my-zsh = {
enable = true;
custom = "${config.xdg.configHome}/zsh/custom";
plugins = [
"scw"
"sudo"
"git"
"zsh-syntax-highlighting" # MUST BE LAST!
];
theme = "candy";
};
};
xdg.configFile."zsh/custom".source = ./shell/zsh_custom;
programs.tmux = {
enable = true;
extraConfig = ''
set -g status on
set -g pane-base-index 1
set -g base-index 1
set -g set-titles on
set -g default-terminal "screen-256color"
set-option -g set-titles-string "#{pane_current_command}"
set-option -g history-limit 1024
set-option -g visual-activity on
set-option -g status-position bottom
set-option -g renumber-windows on
set-window-option -g monitor-activity off
# Status
set -g status-left ""
set -g status-right "#[fg=colour176,bold,bg=colour236,bold] %B #[fg=colour146,bold,bg=colour236,bold]%d, #[fg=colour173,bold,bg=colour236,bold]%Y#[fg=default] #[fg=colour234,bold,bg=colour12,bold] %R "
set -g status-right-length 100
set -g status-bg default
setw -g window-status-format "#[fg=colour236,bold,bg=colour180,bold] #I #[fg=colour180,bold,bg=colour236,bold] #W "
setw -g window-status-current-format "#[fg=colour180,bold,bg=colour236,bold] #I #[fg=colour236,bold,bg=colour180,bold] #W "
'';
};
home.file = {
# dotfiles in the home directory
".config/nix/nix.conf".source = ./config/.config/nix/nix.conf;
};
}