backend/flake.nix
2025-05-05 18:17:18 +03:00

74 lines
1.9 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
]
))
fastapi-cli
sqlitestudio
];
};
});
# 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
'';
};
});
};
}