Files
Plume/default.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"
'';
};
}