depot/ops/nixos/lib/home-manager/common.nix
Luke Granger-Brown 02db8ea7cb ops/nixos/lib/hm: support macOS again
The ntfy package expects to have pyobjc available when running under Darwin,
which is currently broken in nixpkgs. There's a fairly involved ongoing effort
to package it again, but in the mean time we just patch out the dep. I'm using
the pushover backend anyway.

To avoid having to rebuild it rather than just fetch from the NixOS cache, I
only override it when running on Darwin.
2021-04-09 18:48:46 +01:00

111 lines
3.2 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)));
in ({
marukuru.port = 20022;
sar1.hostname = "81.131.50.219";
sar1-mon1 = {
user = "eng";
hostname = "172.16.0.9";
proxyJump = "sar1";
};
} // (builtins.listToAttrs [
{ name = allEventBlocks; value = { proxyJump = "sar1"; }; }
]));
};
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;
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
iftop htop jq
(mercurial.overridePythonAttrs (origAttrs: {
propagatedBuildInputs = [python3Packages.hg-evolve depot.nix.pkgs.hg-git];
}))
] ++ lib.optionals isLinux [
iotop
]));
home.stateVersion = "20.09";
}