From 7cd9c571fef9b05e6b3dab4c3deb66dff5754bf2 Mon Sep 17 00:00:00 2001 From: technofab Date: Fri, 26 Jan 2024 14:55:03 +0100 Subject: [PATCH] feat: add utilities --- flake.nix | 3 +++ utils.nix | 42 ++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 45 insertions(+) create mode 100644 utils.nix diff --git a/flake.nix b/flake.nix index 08fb217..f28f790 100644 --- a/flake.nix +++ b/flake.nix @@ -14,6 +14,9 @@ ]; systems = import systems; flake = { + imports = [ + ./utils.nix + ]; flakeModule = ./flakeModule.nix; }; perSystem = { diff --git a/utils.nix b/utils.nix new file mode 100644 index 0000000..9b9352e --- /dev/null +++ b/utils.nix @@ -0,0 +1,42 @@ +{...}: { + mkUtils = {pkgs, ...}: { + commitAndPushFiles = { + message, + files ? [], + }: jobArgs: + jobArgs + // { + before_script = [ + '' + eval "$(ssh-agent -s)" >/dev/null; + 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} + '' + ]; + script = + (jobArgs.script or []) + ++ ( + if builtins.length files == 0 + then [] + else [ + '' + git add ${builtins.concatStringsSep " " files} + '' + ] + ) + ++ [ + '' + 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 + '' + ]; + deps = (jobArgs.deps or []) ++ [pkgs.openssh pkgs.gitMinimal pkgs.gnused]; + }; + }; +}