git-nomad 0.7.1

Synchronize work-in-progress git branches in a light weight fashion
{
  description = "git-nomad";

  inputs = {
    nixpkgs.url = "github:NixOS/nixpkgs/nixpkgs-unstable";
    flake-utils.url = "github:numtide/flake-utils";
  };

  outputs = { self, nixpkgs, flake-utils }: let
    eachSystem = fn: flake-utils.lib.eachDefaultSystem (system:
      fn nixpkgs.legacyPackages.${system}
    );
  in eachSystem (pkgs: let
    gitNomadPkg = with pkgs; rustPlatform.buildRustPackage rec {
      pname = "git-nomad";
      version = self.shortRev or self.dirtyShortRev;

      src = self;

      cargoLock = {
        lockFile = ./Cargo.lock;
      };

      buildInputs = lib.optionals stdenv.isDarwin [
        darwin.apple_sdk.frameworks.SystemConfiguration
      ];

      preBuild = ''
        export GIT_NOMAD_BUILD_VERSION='${version}'
      '';

      nativeCheckInputs = [
        git
      ];
    };
  in {
    devShells.default = pkgs.mkShell {
      buildInputs = with pkgs; [
        asciinema
        cargo
        cargo-outdated
        clippy
        doitlive
        figlet
        gdb
        rust-analyzer
        rustc
        rustfmt

        (pkgs.writeShellScriptBin "recordDemo" ''
          asciinema rec --overwrite -c 'doitlive play --commentecho --quiet --shell bash demo.doitlive.sh' demo.asciinema.cast
        '')
      ];
    };

    checks.git-nomad = gitNomadPkg;
    packages.default = gitNomadPkg;
    apps.default = {
      type = "app";
      program = "${gitNomadPkg}/bin/git-nomad";
    };
  });
}