140 lines
3.9 KiB
Nix
140 lines
3.9 KiB
Nix
{ config, configName, depot, lib, pkgs, ... }:
|
|
let
|
|
inherit (pkgs.stdenv.hostPlatform) isDarwin isLinux;
|
|
in
|
|
{
|
|
imports = [ ./ntfy.nix ];
|
|
|
|
programs.ntfy = {
|
|
enable = true;
|
|
package = if isDarwin then pkgs.ntfy.overrideAttrs (oldAttrs: {
|
|
postPatch = ''
|
|
substituteInPlace setup.py \
|
|
--replace '"darwin"' '"darwin-disabled"'
|
|
'';
|
|
}) else pkgs.ntfy;
|
|
settings = {
|
|
backends = [ "pushover" ];
|
|
pushover = {
|
|
user_key = depot.ops.secrets.pushover.userKey;
|
|
api_token = depot.ops.secrets.pushover.tokens.depot;
|
|
};
|
|
};
|
|
};
|
|
|
|
home.username = "lukegb";
|
|
home.homeDirectory = if isDarwin then "/Users/lukegb" else "/home/lukegb";
|
|
home.file = {
|
|
".hgrc".source = ./hgrc;
|
|
};
|
|
home.sessionVariables = {
|
|
EDITOR = "vim";
|
|
VISUAL = "vim";
|
|
};
|
|
|
|
programs.ssh = {
|
|
enable = true;
|
|
forwardAgent = true;
|
|
matchBlocks = let
|
|
allEventBlocks = (lib.concatStringsSep " " (builtins.map (n: "172.${toString n}.*.*") (lib.range 16 31)));
|
|
blast-tmpl = ip: {
|
|
user = "root";
|
|
port = 888;
|
|
hostname = ip;
|
|
extraOptions.setEnv = "TERM=xterm-256color";
|
|
};
|
|
in ({
|
|
sar1 = {
|
|
hostname = "172.16.0.1";
|
|
extraOptions.setEnv = "TERM=xterm-256color";
|
|
};
|
|
su-cinema-ernie = {
|
|
user = "lukegb";
|
|
hostname = "su-cinema-ernie.su.ic.ac.uk";
|
|
port = 8080;
|
|
};
|
|
su-cinema-ernie-root = {
|
|
user = "root";
|
|
hostname = "su-cinema-ernie.su.ic.ac.uk";
|
|
port = 8080;
|
|
};
|
|
|
|
blast-worker1 = blast-tmpl "10.200.69.10";
|
|
blast-worker2 = blast-tmpl "10.200.69.11";
|
|
blast-csgo1 = blast-tmpl "10.200.69.12";
|
|
blast-csgo2 = blast-tmpl "10.200.69.13";
|
|
|
|
whitby = {
|
|
hostname = "whitby.tvl.fyi";
|
|
};
|
|
} // (builtins.listToAttrs [
|
|
{
|
|
name = allEventBlocks;
|
|
value = {
|
|
extraOptions.setEnv = "TERM=xterm-256color";
|
|
};
|
|
}
|
|
]));
|
|
};
|
|
|
|
programs.bash = {
|
|
enable = true;
|
|
enableVteIntegration = !isDarwin;
|
|
|
|
initExtra = ''
|
|
function join_by { local IFS="$1"; shift; echo "$*"; }
|
|
|
|
if [[ -z "$LAUNCH_SHLVL" ]]; then
|
|
export LAUNCH_SHLVL="$SHLVL"
|
|
fi
|
|
export LAUNCH_DEPTH="$(expr $SHLVL - $LAUNCH_SHLVL)"
|
|
export LAUNCH_DEPTH_STR=""
|
|
if [[ "$LAUNCH_DEPTH" > 0 ]]; then
|
|
if [[ "$PATH" == /nix/store/* ]]; then
|
|
declare -a RECENT_PKGS
|
|
while read -rd: pathseg; do
|
|
if [[ "$pathseg" != /nix/store/* ]]; then
|
|
break
|
|
fi
|
|
RECENT_PKGS+=("$(echo "$pathseg" | sed -E -e 's,^/nix/store/[a-z0-9]+-,,' -e 's,/.*$,,' -e 's,-[0-9.]+$,,')")
|
|
done <<< $PATH
|
|
RECENT_PKG="$(join_by ":" "''${RECENT_PKGS[@]}")"
|
|
if [[ "''${#RECENT_PKG}" > 32 ]]; then
|
|
RECENT_PKGS="''${RECENT_PKGS[0]}"
|
|
fi
|
|
if [[ ! -z "$RECENT_PKG" ]]; then
|
|
LAUNCH_DEPTH_STR="[$RECENT_PKG] "
|
|
fi
|
|
fi
|
|
if [[ -z "$LAUNCH_DEPTH_STR" ]]; then
|
|
LAUNCH_DEPTH_STR="[$LAUNCH_DEPTH] "
|
|
fi
|
|
fi
|
|
export PS1="\n\[\033[1;32m\]$LAUNCH_DEPTH_STR[\[\e]0;\u@\h: \w\a\]\u@\h:\w]\$ \[\033[0m\]"
|
|
'';
|
|
};
|
|
programs.vim.enable = true;
|
|
programs.vim.packageConfigurable = pkgs.vim_configurable.override {
|
|
guiSupport = false;
|
|
};
|
|
|
|
home.packages = (with pkgs; ([
|
|
ripgrep
|
|
whois
|
|
dnsutils
|
|
] ++ lib.optionals (configName != null) [
|
|
# This only applies to "external" users of this config.
|
|
(writeShellScriptBin "home-manager" ''
|
|
#!/bin/sh
|
|
exec "${home-manager}/bin/home-manager" -f "${config.home.homeDirectory}/depot/home-manager-ext.nix" -A "${configName}" "$@"
|
|
'')
|
|
rxvt_unicode.terminfo tmux rsync libarchive tcpdump restic
|
|
alacritty.terminfo kitty.terminfo
|
|
iftop htop jq
|
|
depot.nix.pkgs.mercurial
|
|
] ++ lib.optionals isLinux [
|
|
iotop
|
|
]));
|
|
|
|
home.stateVersion = "20.09";
|
|
}
|