summaryrefslogtreecommitdiff
path: root/flake.nix
diff options
context:
space:
mode:
Diffstat (limited to 'flake.nix')
-rw-r--r--flake.nix73
1 files changed, 51 insertions, 22 deletions
diff --git a/flake.nix b/flake.nix
index 2076939..1ca32d2 100644
--- a/flake.nix
+++ b/flake.nix
@@ -4,6 +4,7 @@
inputs = {
nixpkgs.url = "github:NixOS/nixpkgs/nixpkgs-unstable";
flake-parts.url = "github:hercules-ci/flake-parts";
+ crane.url = "github:ipetkov/crane";
};
outputs =
@@ -11,6 +12,7 @@
self,
nixpkgs,
flake-parts,
+ crane,
...
}:
flake-parts.lib.mkFlake { inherit inputs; } {
@@ -28,9 +30,35 @@
...
}:
let
- version = builtins.head (lib.splitString "\n" (builtins.readFile ./version));
- revision = lib.toString (self.shortRev or self.dirtyShortRev or "unknown");
- mkPackage =
+ craneLib = crane.mkLib pkgs;
+ src = craneLib.cleanCargoSource ./.;
+ commonArgs = {
+ inherit src;
+ strictDeps = true;
+ };
+ cargoArtifacts = craneLib.buildDepsOnly commonArgs;
+ crate = craneLib.buildPackage (
+ commonArgs
+ // {
+ inherit cargoArtifacts;
+ nativeBuildInputs = [
+ pkgs.coreutils
+ pkgs.postgresql
+ ];
+ meta.mainProgram = "temp-postgres";
+ VERGEN_GIT_SHA =
+ if self ? shortRev then
+ self.shortRev
+ else if self ? dirtyShortRev then
+ lib.strings.removeSuffix "-dirty" self.dirtyShortRev
+ else
+ "unknown";
+ VERGEN_GIT_DIRTY = if self ? dirtyShortRev then "true" else "false";
+ }
+ );
+ version = crate.version;
+ revision = self.shortRev or self.dirtyShortRev or "unknown";
+ wrap =
{
postgresql,
suffix ? "",
@@ -38,19 +66,11 @@
pkgs.stdenv.mkDerivation {
name = "temp-postgres-${version}-${revision}${suffix}";
version = "${version}-${revision}";
- src = lib.cleanSource (
- builtins.path {
- path = ./.;
- name = "temp-postgres";
- }
- );
nativeBuildInputs = [ pkgs.makeBinaryWrapper ];
- installPhase = ''
+ buildCommand = ''
mkdir -p $out/bin
- cp temp-postgres.sh $out/bin/temp-postgres
- mkdir -p $out/man/man1
- cp temp-postgres.1 $out/man/man1/temp-postgres.1
- wrapProgram $out/bin/temp-postgres --prefix PATH : ${lib.makeBinPath [ postgresql ]}
+ makeWrapper ${crate}/bin/temp-postgres $out/bin/temp-postgres \
+ --prefix PATH : ${lib.makeBinPath [ postgresql ]}
'';
};
postgresqlVersions = lib.mapAttrs' (
@@ -58,7 +78,7 @@
let
postgresqlVersion = lib.removePrefix "postgresql_" name;
in
- lib.nameValuePair "temp-postgres_${postgresqlVersion}" (mkPackage {
+ lib.nameValuePair "temp-postgres_${postgresqlVersion}" (wrap {
postgresql = drv;
suffix = "_${postgresqlVersion}";
})
@@ -67,24 +87,33 @@
{
packages = {
default = self'.packages.temp-postgres;
- temp-postgres = mkPackage { postgresql = pkgs.postgresql; };
+ temp-postgres = wrap { postgresql = pkgs.postgresql; };
+ temp-postgres-unwrapped = crate;
}
// postgresqlVersions;
- formatter = pkgs.nixfmt-tree;
-
devShells.default = pkgs.mkShell {
nativeBuildInputs = with pkgs; [
- gnumake
- gzip
- mandoc
+ cargo
+ cargo-audit
+ cargo-deny
+ cargo-edit
+ clippy
+ just
+ nixfmt
postgresql
- shellcheck
+ rust-analyzer
+ rustc
+ rustfmt
+ taplo
+ watchexec
];
shellHook = ''
export FLAKE=${self}
'';
};
+
+ formatter = pkgs.nixfmt-tree;
};
};
}
Generated by cgit. See skreutz.com for my tech blog and contact information.