nix: refactor flake to avoid building `jj` for the dev shell
We don't actually need `jj` itself in the development shell. But having it in
the overlay significantly increases the time it takes to build the shell.
in
{
overlays.default = (final: prev: {
- jujutsu = final.callPackage
- (
- { stdenv
- , lib
- , fetchFromGitHub
- , rustPlatform
- , pkg-config
- , openssl
- , dbus
- , sqlite
- , file
- , gzip
- , makeWrapper
- , Security
- , SystemConfiguration
- , libiconv
- , installShellFiles
- }:
-
- rustPlatform.buildRustPackage rec {
+ jujutsu = self.packages.${final.system}.jujutsu;
+ });
+ } //
+ (foreachSystem (system:
+ let
+ pkgs = import nixpkgs {
+ inherit system;
+ overlays = [
+ rust-overlay.overlays.default
+ ];
+ };
+ in
+ {
+ packages.${system} = {
+ jujutsu = pkgs.rustPlatform.buildRustPackage rec {
pname = "jujutsu";
version = "unstable-${self.shortRev or "dirty"}";
buildNoDefaultFeatures = true;
buildFeatures = [ "jujutsu-lib/legacy-thrift" ];
-
- src = self;
-
+ src = ./.;
cargoLock = {
- lockFile = "${self}/Cargo.lock";
+ lockFile = ./Cargo.lock;
};
- nativeBuildInputs = [
+ nativeBuildInputs = with pkgs; [
gzip
installShellFiles
makeWrapper
pkg-config
];
- buildInputs = [ openssl dbus sqlite ]
+ buildInputs = with pkgs; [ openssl dbus sqlite ]
++ lib.optionals stdenv.isDarwin [
- Security
- SystemConfiguration
+ darwin.apple_sdk.frameworks.Security
+ darwin.apple_sdk.frameworks.SystemConfiguration
libiconv
];
postInstall = ''
$out/bin/jj debug completion --zsh > ./completions.zsh
installShellCompletion --zsh --name _${pname} ./completions.zsh
'';
- }
- )
- {
- inherit (final.darwin.apple_sdk.frameworks) Security SystemConfiguration;
};
- });
- } //
- (foreachSystem (system:
- let
- pkgs = import nixpkgs {
- inherit system;
- overlays = [
- self.overlays.default
- rust-overlay.overlays.default
- ];
- };
- in
- {
- packages.${system} = {
- jujutsu = pkgs.jujutsu;
default = self.packages.${system}.jujutsu;
};
apps.${system}.default = {
type = "app";
- program = "${pkgs.jujutsu}/bin/jj";
+ program = "${self.packages.${system}.jujutsu}/bin/jj";
};
- checks.${system}.jujutsu = pkgs.jujutsu.overrideAttrs ({ ... }: {
+ checks.${system}.jujutsu = self.packages.${system}.jujutsu.overrideAttrs ({ ... }: {
cargoBuildType = "debug";
cargoCheckType = "debug";
preCheck = ''
