Attempt to package up the helpers alongside yama and datman
All checks were successful
ci/woodpecker/push/build Pipeline was successful
ci/woodpecker/push/release Pipeline was successful

This commit is contained in:
Olivier 'reivilibre' 2022-06-02 20:30:22 +01:00
parent 5fd9a72de8
commit ef70e0998e
2 changed files with 94 additions and 5 deletions

50
flake.lock generated
View File

@ -1,5 +1,20 @@
{
"nodes": {
"flake-utils": {
"locked": {
"lastModified": 1653893745,
"narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=",
"owner": "numtide",
"repo": "flake-utils",
"rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1",
"type": "github"
},
"original": {
"owner": "numtide",
"repo": "flake-utils",
"type": "github"
}
},
"naersk": {
"inputs": {
"nixpkgs": "nixpkgs"
@ -46,10 +61,45 @@
"type": "indirect"
}
},
"nixpkgs_3": {
"locked": {
"lastModified": 1654176133,
"narHash": "sha256-XhjUlU+q9LPFM8Z7X3h504vS2FUToCyKhaf5hVF6nsw=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "63f15db5291aec276924d907d3e083e74d68e8b9",
"type": "github"
},
"original": {
"owner": "NixOS",
"repo": "nixpkgs",
"type": "github"
}
},
"poetry2nix": {
"inputs": {
"flake-utils": "flake-utils",
"nixpkgs": "nixpkgs_3"
},
"locked": {
"lastModified": 1653561148,
"narHash": "sha256-JzAttqACdvMOTwkzkJ0jFF8MWIo8Uau4w/XUMyqpnd8=",
"owner": "nix-community",
"repo": "poetry2nix",
"rev": "3b01c3e3dc57d511848d8433153ab67db79640e1",
"type": "github"
},
"original": {
"owner": "nix-community",
"repo": "poetry2nix",
"type": "github"
}
},
"root": {
"inputs": {
"naersk": "naersk",
"nixpkgs": "nixpkgs_2",
"poetry2nix": "poetry2nix",
"utils": "utils"
}
},

View File

@ -4,15 +4,15 @@
inputs = {
utils.url = "github:numtide/flake-utils";
naersk.url = "github:nix-community/naersk";
poetry2nix.url = "github:nix-community/poetry2nix";
};
outputs = { self, nixpkgs, utils, naersk }:
outputs = { self, nixpkgs, utils, naersk, poetry2nix }:
utils.lib.eachDefaultSystem (system: let
pkgs = nixpkgs.legacyPackages."${system}";
naersk-lib = naersk.lib."${system}";
in rec {
# `nix build`
packages.yama = naersk-lib.buildPackage {
rustComponents = naersk-lib.buildPackage {
pname = "yama";
root = ./.;
@ -23,6 +23,45 @@
];
};
mysqlHelper = pkgs.poetry2nix.mkPoetryApplication {
projectDir = ./datman-helper-mysql;
};
postgresHelper = pkgs.poetry2nix.mkPoetryApplication {
projectDir = ./datman-helper-postgres;
};
# We want to produce a package with all of these together, with wrappers that let them
# refer to each other by name (i.e. have each other on the path).
# ATM it's just Datman that needs them on the PATH.
allInOne = pkgs.stdenv.mkDerivation {
name = "datman-aio";
src = "${pkgs.emptyDirectory}";
installPhase = ''
# set -eu
mkdir $out $out/bin
ln -s ${rustComponents}/bin/{yama,datman} $out/bin
ln -s ${mysqlHelper}/bin/datman-helper-mysql-{backup,restore} $out/bin
ln -s ${postgresHelper}/bin/datman-helper-postgres-{backup,restore} $out/bin
runHook postInstall
'';
buildInputs = [ pkgs.makeWrapper ];
postInstall = ''
set -eu
#for fn in $out/bin/{datman,yama,datman-helper-{mysql,postgres}-{backup,restore}}; do
# wrapProgram $fn --suffix PATH : $out/bin
#done
wrapProgram $out/bin/datman --suffix PATH : $out/bin
'';
};
in rec {
# `nix build`
packages.yama = allInOne;
defaultPackage = packages.yama;
# NixOS Modules
@ -32,7 +71,7 @@
# `nix run`
apps.yama = utils.lib.mkApp {
drv = packages.yama;
drv = rustComponents;
};
defaultApp = apps.yama;