{
  # Snowfall Lib provides a customized `lib` instance with access to your flake's library
  # as well as the libraries available from your flake's inputs.
  lib,
  # You also have access to your flake's inputs.
  inputs,

  # All other arguments come from NixPkgs. You can use `pkgs` to pull packages or helpers
  # programmatically or you may add the named attributes as arguments here.
  pkgs,
  stdenv,
  ...
}:

pkgs.writeShellApplication {
  name = "sos";

  runtimeInputs = with pkgs; [
    nix-output-monitor
    jq
  ];

  # TODO: somehow avoid --no-check-sigs??
  text = ''
    #!/usr/bin/env sh
    # This script performs a nixos system update using the remote builder as remote store.
    # This should improve the system update performance drastically

    echo "########## building... ##########"
    OUT=$(nom build "$FLAKE#nixosConfigurations.$(hostname).config.system.build.toplevel" --store ssh-ng://nix@builder.julian-mutter.de --eval-store auto --json | jq -r '.[0].outputs.out')
    echo "########## output is: $OUT ##########"
    echo "########## downloading... ##########"
    nix copy --no-check-sigs --from ssh-ng://nix@builder.julian-mutter.de "$OUT"

    echo "########## activating... ##########"
    sudo "$OUT"/bin/switch-to-configuration switch
  '';
}