diff options
Diffstat (limited to 'nixpkgs/pkgs/development/tools/diesel-cli/default.nix')
-rw-r--r-- | nixpkgs/pkgs/development/tools/diesel-cli/default.nix | 82 |
1 files changed, 82 insertions, 0 deletions
diff --git a/nixpkgs/pkgs/development/tools/diesel-cli/default.nix b/nixpkgs/pkgs/development/tools/diesel-cli/default.nix new file mode 100644 index 000000000000..47b01955868f --- /dev/null +++ b/nixpkgs/pkgs/development/tools/diesel-cli/default.nix @@ -0,0 +1,82 @@ +{ lib +, sqliteSupport ? true +, postgresqlSupport ? true +, mysqlSupport ? true +, rustPlatform +, fetchCrate +, installShellFiles +, pkg-config +, openssl +, stdenv +, Security +, libiconv +, sqlite +, postgresql +, mariadb +, zlib +}: + +assert lib.assertMsg (sqliteSupport == true || postgresqlSupport == true || mysqlSupport == true) + "support for at least one database must be enabled"; + +let + inherit (lib) optional optionals optionalString; +in + +rustPlatform.buildRustPackage rec { + pname = "diesel-cli"; + version = "2.1.1"; + + src = fetchCrate { + inherit version; + crateName = "diesel_cli"; + hash = "sha256-fpvC9C30DJy5ih+sFTTMoiykUHqG6OzDhF9jvix1Ctg="; + }; + + cargoHash = "sha256-nPmUCww8sOJwnG7+uIflLPgT87xPX0s7g0AcuDKhY2I="; + + nativeBuildInputs = [ installShellFiles pkg-config ]; + + buildInputs = [ openssl ] + ++ optional stdenv.isDarwin Security + ++ optional (stdenv.isDarwin && mysqlSupport) libiconv + ++ optional sqliteSupport sqlite + ++ optional postgresqlSupport postgresql + ++ optionals mysqlSupport [ mariadb zlib ]; + + buildNoDefaultFeatures = true; + buildFeatures = optional sqliteSupport "sqlite" + ++ optional postgresqlSupport "postgres" + ++ optional mysqlSupport "mysql"; + + checkPhase = '' + runHook preCheck + '' + optionalString sqliteSupport '' + cargo check --features sqlite + '' + optionalString postgresqlSupport '' + cargo check --features postgres + '' + optionalString mysqlSupport '' + cargo check --features mysql + '' + '' + runHook postCheck + ''; + + postInstall = '' + installShellCompletion --cmd diesel \ + --bash <($out/bin/diesel completions bash) \ + --fish <($out/bin/diesel completions fish) \ + --zsh <($out/bin/diesel completions zsh) + ''; + + # Fix the build with mariadb, which otherwise shows "error adding symbols: + # DSO missing from command line" errors for libz and libssl. + NIX_LDFLAGS = optionalString mysqlSupport "-lz -lssl -lcrypto"; + + meta = with lib; { + description = "Database tool for working with Rust projects that use Diesel"; + homepage = "https://github.com/diesel-rs/diesel/tree/master/diesel_cli"; + license = with licenses; [ mit asl20 ]; + maintainers = with maintainers; [ ]; + mainProgram = "diesel"; + }; +} |