{ mkUtils = {pkgs, ...}: { commitAndPushFiles = { message, files ? [], }: jobArgs: jobArgs // { before_script = (jobArgs.before_script or []) ++ [ '' echo -e "\\e[0Ksection_start:`date +%s`:commit_setup[collapsed=true]\\r\\e[0KSetting up commitAndPushFiles" eval "$(ssh-agent -s)" >/dev/null; mkdir -p ~/.ssh; touch ~/.ssh/known_hosts; ssh-keyscan -t rsa $CI_SERVER_HOST >> ~/.ssh/known_hosts; echo "$GIT_SSH_PRIV_KEY" | tr -d '\r' | ssh-add - >/dev/null; git config --global user.email "$GIT_EMAIL" >/dev/null; git config --global user.name "$GIT_NAME" >/dev/null; export CI_PUSH_REPO=`echo $CI_REPOSITORY_URL | sed -e "s|.*@\(.*\)|git@\1|" -e "s|/|:|"`; git remote rm origin && git remote add origin ''${CI_PUSH_REPO} echo -e "\\e[0Ksection_end:`date +%s`:commit_setup\\r\\e[0K" '' ]; script = let addScript = if builtins.length files == 0 then "" else "git add ${builtins.concatStringsSep " " files}"; in (jobArgs.script or []) ++ [ '' echo -e "\\e[0Ksection_start:`date +%s`:commit[collapsed=true]\\r\\e[0KCommiting & pushing changes if necessary" ${addScript} git diff --cached --exit-code >/dev/null && echo "Nothing to commit" || git commit -m "${message}" --no-verify; git push --tags origin ''${GIT_SOURCE_REF:-HEAD}:''${GIT_TARGET_REF:-$CI_COMMIT_REF_NAME} -o ci.skip echo -e "\\e[0Ksection_end:`date +%s`:commit\\r\\e[0K" '' ]; nix.deps = (jobArgs.nix.deps or []) ++ [pkgs.openssh pkgs.gitMinimal pkgs.gnused]; }; }; }