export type GitSource = { resolver: "git"; repository: string; commit: string; }; export type LockedResourceKind = "interface" | "package"; export type LockedResource = { kind: LockedResourceKind; binding: string; source: GitSource; }; export type QuixosRepositoryLock = { formatVersion: 1; quixos: GitSource; resources: LockedResource[]; }; export type NixGitInput = { type: "git"; url: string; ref: string; rev: string; }; export const RETENTION_TAG_PREFIX = "refs/tags/quixos-reachability/"; export const retentionTagForCommit = (commit: string): string => `${RETENTION_TAG_PREFIX}${commit.toLowerCase()}`; export const nixGitInput = (source: GitSource): NixGitInput => ({ type: "git", url: source.repository, ref: retentionTagForCommit(source.commit), rev: source.commit.toLowerCase(), });