mirror of
https://git.deuxfleurs.fr/Deuxfleurs/garage.git
synced 2024-11-14 12:11:17 +00:00
164 lines
4.5 KiB
Nix
164 lines
4.5 KiB
Nix
{ system ? builtins.currentSystem, }:
|
|
|
|
with import ./nix/common.nix;
|
|
|
|
let
|
|
pkgs = import pkgsSrc {
|
|
inherit system;
|
|
overlays = [ cargo2nixOverlay ];
|
|
};
|
|
kaniko = (import ./nix/kaniko.nix) pkgs;
|
|
manifest-tool = (import ./nix/manifest-tool.nix) pkgs;
|
|
winscp = (import ./nix/winscp.nix) pkgs;
|
|
|
|
in {
|
|
# --- Rust Shell ---
|
|
# Use it to compile Garage
|
|
rust = pkgs.mkShell {
|
|
nativeBuildInputs = with pkgs; [
|
|
#rustPlatform.rust.rustc
|
|
rustPlatform.rust.cargo
|
|
clang
|
|
mold
|
|
#clippy
|
|
rustfmt
|
|
#perl
|
|
#protobuf
|
|
#pkg-config
|
|
#openssl
|
|
file
|
|
#cargo2nix.packages.x86_64-linux.cargo2nix
|
|
];
|
|
};
|
|
|
|
# --- Integration shell ---
|
|
# Use it to test Garage with common S3 clients
|
|
integration = pkgs.mkShell {
|
|
nativeBuildInputs = [
|
|
winscp
|
|
pkgs.s3cmd
|
|
pkgs.awscli2
|
|
pkgs.minio-client
|
|
pkgs.rclone
|
|
pkgs.socat
|
|
pkgs.psmisc
|
|
pkgs.which
|
|
pkgs.openssl
|
|
pkgs.curl
|
|
pkgs.jq
|
|
];
|
|
};
|
|
|
|
# --- Release shell ---
|
|
# A shell built to make releasing easier
|
|
release = pkgs.mkShell {
|
|
shellHook = ''
|
|
function refresh_toolchain {
|
|
pass show deuxfleurs/nix_priv_key > /tmp/nix-signing-key.sec
|
|
nix copy \
|
|
--to 's3://nix?endpoint=garage.deuxfleurs.fr®ion=garage&secret-key=/tmp/nix-signing-key.sec' \
|
|
$(nix-store -qR \
|
|
$(nix-build --no-build-output --no-out-link nix/toolchain.nix))
|
|
rm /tmp/nix-signing-key.sec
|
|
}
|
|
|
|
function refresh_cache {
|
|
pass show deuxfleurs/nix_priv_key > /tmp/nix-signing-key.sec
|
|
for attr in clippy.amd64 test.amd64 pkgs.{amd64,i386,arm,arm64}.{debug,release}; do
|
|
echo "Updating cache for ''${attr}"
|
|
derivation=$(nix-instantiate --attr ''${attr})
|
|
nix copy -j8 \
|
|
--to 's3://nix?endpoint=garage.deuxfleurs.fr®ion=garage&secret-key=/tmp/nix-signing-key.sec' \
|
|
$(nix-store -qR ''${derivation%\!bin})
|
|
done
|
|
rm /tmp/nix-signing-key.sec
|
|
}
|
|
|
|
function refresh_flake_cache {
|
|
pass show deuxfleurs/nix_priv_key > /tmp/nix-signing-key.sec
|
|
for attr in packages.x86_64-linux.default devShell.x86_64-linux; do
|
|
echo "Updating cache for ''${attr}"
|
|
derivation=$(nix path-info --derivation ".#''${attr}")
|
|
nix copy -j8 \
|
|
--to 's3://nix?endpoint=garage.deuxfleurs.fr®ion=garage&secret-key=/tmp/nix-signing-key.sec' \
|
|
$(nix-store -qR ''${derivation})
|
|
done
|
|
rm /tmp/nix-signing-key.sec
|
|
}
|
|
|
|
function to_s3 {
|
|
aws \
|
|
--endpoint-url https://garage.deuxfleurs.fr \
|
|
--region garage \
|
|
s3 cp \
|
|
./result-bin/bin/garage \
|
|
s3://garagehq.deuxfleurs.fr/_releases/''${DRONE_TAG:-$DRONE_COMMIT}/''${TARGET}/garage
|
|
}
|
|
|
|
function to_docker {
|
|
executor \
|
|
--force \
|
|
--customPlatform="''${DOCKER_PLATFORM}" \
|
|
--destination "''${CONTAINER_NAME}:''${CONTAINER_TAG}" \
|
|
--context dir://`pwd` \
|
|
--verbosity=debug
|
|
}
|
|
|
|
function multiarch_docker {
|
|
manifest-tool push from-spec <(cat <<EOF
|
|
image: dxflrs/garage:''${CONTAINER_TAG}
|
|
manifests:
|
|
-
|
|
image: dxflrs/arm64_garage:''${CONTAINER_TAG}
|
|
platform:
|
|
architecture: arm64
|
|
os: linux
|
|
-
|
|
image: dxflrs/amd64_garage:''${CONTAINER_TAG}
|
|
platform:
|
|
architecture: amd64
|
|
os: linux
|
|
-
|
|
image: dxflrs/386_garage:''${CONTAINER_TAG}
|
|
platform:
|
|
architecture: 386
|
|
os: linux
|
|
-
|
|
image: dxflrs/arm_garage:''${CONTAINER_TAG}
|
|
platform:
|
|
architecture: arm
|
|
os: linux
|
|
EOF
|
|
)
|
|
}
|
|
|
|
function refresh_index {
|
|
aws \
|
|
--endpoint-url https://garage.deuxfleurs.fr \
|
|
--region garage \
|
|
s3 ls \
|
|
--recursive \
|
|
s3://garagehq.deuxfleurs.fr/_releases/ \
|
|
> aws-list.txt
|
|
|
|
nix-build nix/build_index.nix
|
|
|
|
aws \
|
|
--endpoint-url https://garage.deuxfleurs.fr \
|
|
--region garage \
|
|
s3 cp \
|
|
result/share/_releases.json \
|
|
s3://garagehq.deuxfleurs.fr/
|
|
|
|
aws \
|
|
--endpoint-url https://garage.deuxfleurs.fr \
|
|
--region garage \
|
|
s3 cp \
|
|
result/share/_releases.html \
|
|
s3://garagehq.deuxfleurs.fr/
|
|
}
|
|
'';
|
|
nativeBuildInputs = [ pkgs.awscli2 kaniko manifest-tool ];
|
|
};
|
|
}
|
|
|