109 lines
2.2 KiB
Nix
109 lines
2.2 KiB
Nix
{
|
|
sources ? import ./npins,
|
|
system ? builtins.currentSystem,
|
|
pkgs ? import sources.nixpkgs { inherit system; },
|
|
nix-utils ? import sources.nix-utils { },
|
|
env ? "Debug",
|
|
}:
|
|
let
|
|
pname = "Plume";
|
|
port = 7000;
|
|
deps = nix-utils.output.lib.nuget.deps;
|
|
dotnet-sdk = pkgs.dotnetCorePackages.sdk_10_0;
|
|
dotnet-runtime = pkgs.dotnetCorePackages.aspnetcore_10_0;
|
|
|
|
# Usage: export NETRC="$(agenix -d netrc.age)" in `./nix/secrets`
|
|
netrcConfig = builtins.getEnv "NETRC";
|
|
|
|
version =
|
|
let
|
|
clean = pkgs.lib.removeSuffix "\n";
|
|
version = builtins.readFile ./.version;
|
|
in
|
|
clean version;
|
|
|
|
# Packages
|
|
python-packages = (
|
|
pkgs.python3.withPackages (py: [
|
|
py.matplotlib
|
|
py.scipy
|
|
py.numpy
|
|
py.pandas
|
|
py.netcdf4
|
|
])
|
|
);
|
|
in
|
|
rec {
|
|
packages.plume = pkgs.callPackage ./nix/package.nix {
|
|
inherit
|
|
deps
|
|
env
|
|
pname
|
|
version
|
|
dotnet-sdk
|
|
dotnet-runtime
|
|
netrcConfig
|
|
;
|
|
};
|
|
|
|
containers.plume = pkgs.dockerTools.buildLayeredImage {
|
|
name = "Plume";
|
|
tag = "latest";
|
|
created = "now";
|
|
|
|
contents = [
|
|
python-packages
|
|
packages.plume
|
|
pkgs.dockerTools.caCertificates
|
|
]
|
|
++ pkgs.lib.optionals (env == "Debug") [
|
|
pkgs.busybox
|
|
pkgs.dockerTools.binSh
|
|
];
|
|
|
|
extraCommands = ''
|
|
mkdir -m 0777 tmp
|
|
mkdir -p ./app
|
|
cp -r ${packages.plume}/lib/Plume/* ./app/
|
|
'';
|
|
|
|
config = {
|
|
env = [
|
|
"MPLCONFIGDIR=/tmp"
|
|
"PYTHONPATH=/app"
|
|
];
|
|
cmd = [ "Plume.Server" ];
|
|
workingDir = "/app";
|
|
};
|
|
};
|
|
|
|
shell = pkgs.mkShellNoCC {
|
|
packages = with pkgs; [
|
|
bun
|
|
dive
|
|
dotnet-sdk
|
|
fantomas
|
|
fsautocomplete
|
|
npins
|
|
singularity
|
|
];
|
|
|
|
DOTNET_ROOT = "${dotnet-sdk}/share/dotnet";
|
|
|
|
LOG_LEVEL = "verbose";
|
|
SERVER_PORT = port + 85;
|
|
TILT_PORT = port + 50;
|
|
|
|
# Fixes `Build Failed: failed to dial gRPC: unable to upgrade to h2c`
|
|
DOCKER_BUILDKIT = 0;
|
|
# NOTE(mrtz): Needed for tilt podman compat.
|
|
DOCKER_HOST = "unix:///run/user/1000/podman/podman.sock";
|
|
|
|
shellHook = ''
|
|
export APP_ENV=$USER
|
|
export APP_NAME="plume"
|
|
export APP_NAMESPACE="$USER-plume"
|
|
'';
|
|
};
|
|
}
|