80 lines
2.1 KiB
Nix
80 lines
2.1 KiB
Nix
{
|
|
description = "Backend development flake";
|
|
inputs.nixpkgs.url = "github:nixos/nixpkgs/nixpkgs-unstable";
|
|
outputs = {nixpkgs, ... }: let
|
|
forAllSystems = nixpkgs.lib.genAttrs [
|
|
"aarch64-linux"
|
|
"i686-linux"
|
|
"x86_64-linux"
|
|
"aarch64-darwin"
|
|
"x86_64-darwin"
|
|
];
|
|
in {
|
|
devShells = forAllSystems (system: let
|
|
pkgs = import nixpkgs {
|
|
inherit system;
|
|
config = {
|
|
android_sdk.accept_license = true;
|
|
allowUnfree = true;
|
|
};
|
|
};
|
|
in {
|
|
default = pkgs.mkShell {
|
|
packages = with pkgs; [
|
|
(python312.withPackages (
|
|
ppkgs:
|
|
with python312Packages; [
|
|
pip # python package manager
|
|
fastapi # web framework
|
|
pandas # data manipulation
|
|
pydantic # data validation
|
|
uvicorn # ASGI server
|
|
sqlalchemy # ORM
|
|
python-multipart # fastapi multipart form data
|
|
jwt
|
|
psycopg2-binary
|
|
passlib
|
|
]
|
|
))
|
|
fastapi-cli
|
|
sqlitestudio
|
|
];
|
|
shellHook = ''
|
|
docker compose down
|
|
docker compose up -d
|
|
'';
|
|
};
|
|
});
|
|
# app for backing up the data
|
|
apps = forAllSystems (system: let
|
|
pkgs = import nixpkgs {
|
|
inherit system;
|
|
config = {
|
|
android_sdk.accept_license = true;
|
|
allowUnfree = true;
|
|
};
|
|
};
|
|
in {
|
|
default = pkgs.fastapi-cli;
|
|
backup-db = pkgs.writeShellApplication {
|
|
name = "backup-db";
|
|
runtimeInputs = [ pkgs.zip ];
|
|
text = ''
|
|
# date
|
|
DATE=$(date +%Y-%m-%d)
|
|
# backup directory
|
|
BACKUP_DIR=~/aifred-backup/
|
|
# create backup directory if it doesn't exist
|
|
mkdir -p $BACKUP_DIR
|
|
|
|
# backup file name
|
|
BACKUP_FILE=$BACKUP_DIR/backup-$DATE.zip
|
|
zip -r $BACKUP_FILE data/
|
|
|
|
# move backup file to backup directory
|
|
mv #BACKUP_FILE $BACKUP_DIR
|
|
'';
|
|
};
|
|
});
|
|
};
|
|
}
|