#!/usr/bin/env bash # Eventually convert to haskell, see: # - https://github.com/awakesecurity/nix-deploy/blob/master/src/Main.hs # - http://www.haskellforall.com/2018/08/nixos-in-production.html prefix=$(echo $PWD | sed -e "s|^${CODEROOT:?}/*||g") if [[ "$prefix" == "" ]] then target="$1" else target="$prefix.$1" fi what=$(realpath "${CODEROOT:?}/_/nix/$target") # hack: get the domain from the activation script. there does not seem # to be a way to get it from nix-instantiate where=$(rg -r '$2' -e '(domainname ")(.*)(")' "$what/activate") nix copy --to ssh://root@$where $what ssh root@$where $what/bin/switch-to-configuration switch ssh root@$where nix-env --profile /nix/var/nix/profiles/system --set $what printf "${GRN}good: push: $target${NC}\n"