{ config, configName, depot, lib, pkgs, ... }: let inherit (pkgs.stdenv.hostPlatform) isDarwin isLinux; kitty-terminfo = pkgs.mkDerivation { pname = "kitty-terminfo"; inherit (pkgs.kitty) version src; dontBuild = true; installPhase = '' runHook preInstall install -d $out/share/terminfo export TERMINFO=$out/share/terminfo tic terminfo/kitty.terminfo runHook postInstall ''; }; 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; } // (lib.optionalAttrs isDarwin { ".terminfo".source = "${depot.nix.pkgs.terminfos}/share/terminfo"; }); 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"; }; blast-jump-tmpl = ip: via: (blast-tmpl ip) // { proxyJump = via; }; 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.109.10"; blast-worker1-jump = blast-jump-tmpl "10.200.109.10" "blast-csgo1-jump"; blast-worker2 = blast-tmpl "10.200.109.11"; blast-worker2-jump = blast-jump-tmpl "10.200.109.11" "blast-csgo2-jump"; blast-csgo1 = blast-tmpl "10.200.109.12"; blast-csgo1-jump = blast-jump-tmpl "10.222.0.2" "bvm-netbox"; blast-csgo2 = blast-tmpl "10.200.109.13"; blast-csgo2-jump = blast-jump-tmpl "10.222.0.3" "bvm-netbox"; whitby = { hostname = "whitby.tvl.fyi"; }; github = { user = "git"; hostname = "github.com"; identityFile = "~/.ssh/keys/github"; }; } // (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}" "$@" '') tmux rsync libarchive tcpdump restic depot.nix.pkgs.terminfos iftop htop jq depot.nix.pkgs.mercurial ] ++ lib.optionals isLinux [ iotop ])); # No manuals. manual.manpages.enable = false; manual.json.enable = false; manual.html.enable = false; home.stateVersion = "20.09"; }