selfprivacy-rest-api/flake.nix

53 lines
1.7 KiB
Nix
Raw Normal View History

2023-09-17 22:09:00 +00:00
{
description = "SelfPrivacy API flake";
2023-09-17 22:09:00 +00:00
inputs.nixpkgs.url = "github:nixos/nixpkgs";
2023-09-17 22:09:00 +00:00
outputs = { self, nixpkgs, ... }:
let
system = "x86_64-linux";
pkgs = nixpkgs.legacyPackages.${system};
selfprivacy-graphql-api = pkgs.callPackage ./default.nix {
pythonPackages = pkgs.python310Packages;
};
in
{
packages.${system}.default = selfprivacy-graphql-api;
nixosModules.default = {
imports = [
(import ./nixos/module.nix self.packages.${system}.default)
./nixos/config.nix
];
};
devShells.${system}.default = pkgs.mkShell {
packages =
let
# TODO is there a better way to get environment for VS Code?
python3 =
nixpkgs.lib.findFirst (p: p.pname == "python3") (abort "wtf")
self.packages.${system}.default.propagatedBuildInputs;
python-env =
python3.withPackages
(_: self.packages.${system}.default.propagatedBuildInputs);
in
with pkgs; [
python-env
black
rclone
redis
restic
];
shellHook = ''
# envs set with export and as attributes are treated differently.
# for example. printenv <Name> will not fetch the value of an attribute.
export USE_REDIS_PORT=6379
pkill redis-server
sleep 2
setsid redis-server --bind 127.0.0.1 --port $USE_REDIS_PORT >/dev/null 2>/dev/null &
# maybe set more env-vars
'';
};
2023-09-17 22:09:00 +00:00
};
nixConfig.bash-prompt = ''\n\[\e[1;32m\][\[\e[0m\]\[\e[1;34m\]SP devshell\[\e[0m\]\[\e[1;32m\]:\w]\$\[\[\e[0m\] '';
2023-09-17 22:09:00 +00:00
}