#!/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=${PWD/$CODEROOT} if [[ "$prefix" == "" ]] then target="$1" else target="$prefix.$1" fi what=$(realpath "${CODEROOT:?}/_/nix/$target") # hack: get the domain from the systemd service. there does not seem to be a way # to get it from nix-instantiate. (or, maybe i should put this in bild --plan?) where=$(rg --only-matching --replace '$2' --regexp '(domainname ")(.*)(")' \ "$what/etc/systemd/system/domainname.service") nix copy --to ssh://"$USER"@"$where" "$what" ssh "$USER"@"$where" sudo "$what"/bin/switch-to-configuration switch ssh "$USER"@"$where" sudo nix-env --profile /nix/var/nix/profiles/system --set "$what" echo "${GRN}good: push: $target${NC}"