"#"
This commit is contained in:
83
flake.nix
Normal file
83
flake.nix
Normal file
@@ -0,0 +1,83 @@
|
||||
{
|
||||
description = "josh-sync: bidirectional monorepo ↔ subrepo sync via josh-proxy";
|
||||
|
||||
inputs.nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
|
||||
|
||||
outputs = { self, nixpkgs }:
|
||||
let
|
||||
forAllSystems = nixpkgs.lib.genAttrs [
|
||||
"x86_64-linux"
|
||||
"aarch64-linux"
|
||||
"x86_64-darwin"
|
||||
"aarch64-darwin"
|
||||
];
|
||||
in
|
||||
{
|
||||
packages = forAllSystems (system:
|
||||
let
|
||||
pkgs = nixpkgs.legacyPackages.${system};
|
||||
version = builtins.replaceStrings [ "\n" ] [ "" ] (builtins.readFile ./VERSION);
|
||||
in
|
||||
{
|
||||
default = pkgs.stdenv.mkDerivation {
|
||||
pname = "josh-sync";
|
||||
inherit version;
|
||||
src = ./.;
|
||||
|
||||
nativeBuildInputs = [ pkgs.makeWrapper ];
|
||||
|
||||
installPhase = ''
|
||||
mkdir -p $out/{bin,lib}
|
||||
cp lib/*.sh $out/lib/
|
||||
cp bin/josh-sync $out/bin/
|
||||
chmod +x $out/bin/josh-sync
|
||||
|
||||
wrapProgram $out/bin/josh-sync \
|
||||
--set JOSH_SYNC_ROOT "$out" \
|
||||
--prefix PATH : ${pkgs.lib.makeBinPath [
|
||||
pkgs.bash
|
||||
pkgs.git
|
||||
pkgs.curl
|
||||
pkgs.jq
|
||||
pkgs.yq-go
|
||||
pkgs.openssh
|
||||
pkgs.coreutils
|
||||
pkgs.findutils
|
||||
pkgs.rsync
|
||||
]}
|
||||
'';
|
||||
|
||||
meta = {
|
||||
description = "Bidirectional monorepo ↔ subrepo sync via josh-proxy";
|
||||
license = pkgs.lib.licenses.mit;
|
||||
mainProgram = "josh-sync";
|
||||
};
|
||||
};
|
||||
});
|
||||
|
||||
# devenv module for consumers
|
||||
devenvModules.default = { pkgs, ... }: {
|
||||
packages = [ self.packages.${pkgs.system}.default ];
|
||||
dotenv.disableHint = true;
|
||||
};
|
||||
|
||||
# Dev shell for library contributors
|
||||
devShells = forAllSystems (system:
|
||||
let pkgs = nixpkgs.legacyPackages.${system};
|
||||
in {
|
||||
default = pkgs.mkShell {
|
||||
packages = [
|
||||
pkgs.bash
|
||||
pkgs.git
|
||||
pkgs.curl
|
||||
pkgs.jq
|
||||
pkgs.yq-go
|
||||
pkgs.openssh
|
||||
pkgs.shellcheck
|
||||
pkgs.bats
|
||||
pkgs.rsync
|
||||
];
|
||||
};
|
||||
});
|
||||
};
|
||||
}
|
||||
Reference in New Issue
Block a user