aboutsummaryrefslogtreecommitdiff
path: root/shell.nix
diff options
context:
space:
mode:
authorAlex Auvolat <alex@adnab.me>2024-02-07 19:23:32 +0100
committerAlex Auvolat <alex@adnab.me>2024-02-09 11:10:13 +0100
commit9900368380513d8b898d6ac4116e09525341c11b (patch)
treeabf29928dd78eac2fb481f8a277bb3364d9d6ce9 /shell.nix
parente4a43bfd592c149af8e3eac58ab317a518f0968a (diff)
downloadgarage-9900368380513d8b898d6ac4116e09525341c11b.tar.gz
garage-9900368380513d8b898d6ac4116e09525341c11b.zip
[nix-improvements] modernize Nix infrastructure
Diffstat (limited to 'shell.nix')
-rw-r--r--shell.nix135
1 files changed, 61 insertions, 74 deletions
diff --git a/shell.nix b/shell.nix
index 6d6cc68f..bd150743 100644
--- a/shell.nix
+++ b/shell.nix
@@ -5,87 +5,36 @@ 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 {
+in
+{
+ # --- Dev shell inherited from flake.nix ---
+ devShell = devShells.default;
+
+ # --- Continuous integration shell ---
+ # The shell used for all CI jobs (along with devShell)
+ ci = 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 = [
+ kaniko
+ manifest-tool
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 {
+ awscli2
+ file
+ s3cmd
+ minio-client
+ rclone
+ socat
+ psmisc
+ which
+ openssl
+ curl
+ jq
+ ];
shellHook = ''
- function refresh_toolchain {
- pass show deuxfleurs/nix_priv_key > /tmp/nix-signing-key.sec
- nix copy \
- --to 's3://nix?endpoint=garage.deuxfleurs.fr&region=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&region=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&region=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 \
@@ -167,7 +116,45 @@ in {
s3://garagehq.deuxfleurs.fr/
}
'';
- nativeBuildInputs = [ pkgs.awscli2 kaniko manifest-tool ];
+
+ };
+
+ # --- Cache shell ---
+ # A shell for refreshing caches
+ cache = pkgs.mkShell {
+ shellHook = ''
+ function refresh_toolchain {
+ pass show deuxfleurs/nix_priv_key > /tmp/nix-signing-key.sec
+ nix copy -j8 \
+ --to 's3://nix?endpoint=garage.deuxfleurs.fr&region=garage&secret-key=/tmp/nix-signing-key.sec' \
+ $(nix-store -qR \
+ $(nix-build -j8 --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}.release; do
+ echo "Updating cache for ''${attr}"
+ nix copy -j8 \
+ --to 's3://nix?endpoint=garage.deuxfleurs.fr&region=garage&secret-key=/tmp/nix-signing-key.sec' \
+ $(nix path-info ''${attr} --file default.nix --derivation --recursive | sed 's/\.drv$/.drv^*/')
+
+ 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 devShells.x86_64-linux.default; do
+ echo "Updating cache for ''${attr}"
+ nix copy -j8 \
+ --to 's3://nix?endpoint=garage.deuxfleurs.fr&region=garage&secret-key=/tmp/nix-signing-key.sec' \
+ ".#''${attr}"
+ done
+ rm /tmp/nix-signing-key.sec
+ }
+ '';
};
}