relay filter/appview bootstrap

Updated nix config stuff

+2 -2
README.md
···
1. 启动数据库:
```bash
-
docker compose up postgres
+
docker compose up postgres tap
# or
-
podman-compose up postgres
+
podman-compose up postgres tap
```
2. 运行数据库迁移:
-19
default.nix
···
-
# stolen from https://github.com/tgirlcloud/nix-templates/blob/main/node/default.nix
-
{ lib, buildNpmPackage }:
-
-
buildNpmPackage {
-
pname = "RENAME ME";
-
version = "0.0.1";
-
-
src = ./.;
-
-
npmDepsHash = lib.fakeHash;
-
-
meta = {
-
description = "PROVIDE ME";
-
homepage = "PROVIDE ME";
-
license = lib.licenses.mit;
-
maintainers = with lib.maintainers; [ ];
-
mainProgram = "example";
-
};
-
}
+41 -4
flake.lock
···
{
"nodes": {
+
"crane": {
+
"locked": {
+
"lastModified": 1765145449,
+
"narHash": "sha256-aBVHGWWRzSpfL++LubA0CwOOQ64WNLegrYHwsVuVN7A=",
+
"owner": "ipetkov",
+
"repo": "crane",
+
"rev": "69f538cdce5955fcd47abfed4395dc6d5194c1c5",
+
"type": "github"
+
},
+
"original": {
+
"owner": "ipetkov",
+
"repo": "crane",
+
"type": "github"
+
}
+
},
"nixpkgs": {
"locked": {
-
"lastModified": 1759977445,
-
"narHash": "sha256-LYr4IDfuihCkFAkSYz5//gT2r1ewcWBYgd5AxPzPLIo=",
+
"lastModified": 1765425892,
+
"narHash": "sha256-jlQpSkg2sK6IJVzTQBDyRxQZgKADC2HKMRfGCSgNMHo=",
"owner": "nixos",
"repo": "nixpkgs",
-
"rev": "2dad7af78a183b6c486702c18af8a9544f298377",
+
"rev": "5d6bdbddb4695a62f0d00a3620b37a15275a5093",
"type": "github"
},
"original": {
···
},
"root": {
"inputs": {
-
"nixpkgs": "nixpkgs"
+
"crane": "crane",
+
"nixpkgs": "nixpkgs",
+
"rust-overlay": "rust-overlay"
+
}
+
},
+
"rust-overlay": {
+
"inputs": {
+
"nixpkgs": [
+
"nixpkgs"
+
]
+
},
+
"locked": {
+
"lastModified": 1765593578,
+
"narHash": "sha256-qbl874bCIy9+OLImdfBfZ9ITUDDjjTAB04Dk4PlZFV0=",
+
"owner": "oxalica",
+
"repo": "rust-overlay",
+
"rev": "348b94ed9ddffccdf1a65582a2dcff0a4a3eeeb4",
+
"type": "github"
+
},
+
"original": {
+
"owner": "oxalica",
+
"repo": "rust-overlay",
+
"type": "github"
}
}
},
+90 -17
flake.nix
···
-
# stolen from https://github.com/tgirlcloud/nix-templates/blob/main/node/flake.nix
{
-
description = "PROVIDE ME";
+
description = "Prism - ATProto AppView service for gmstn";
inputs = {
nixpkgs.url = "github:nixos/nixpkgs/nixpkgs-unstable";
+
rust-overlay = {
+
url = "github:oxalica/rust-overlay";
+
inputs.nixpkgs.follows = "nixpkgs";
+
};
+
crane.url = "github:ipetkov/crane";
};
-
outputs =
-
{ self, nixpkgs }:
+
outputs = { self, nixpkgs, rust-overlay, crane }:
let
-
forAllSystems =
-
function:
-
nixpkgs.lib.genAttrs nixpkgs.lib.systems.flakeExposed (
-
system: function nixpkgs.legacyPackages.${system}
-
);
+
supportedSystems = [ "x86_64-linux" "aarch64-linux" "x86_64-darwin" "aarch64-darwin" ];
+
forAllSystems = nixpkgs.lib.genAttrs supportedSystems;
+
+
mkPkgs = system: import nixpkgs {
+
inherit system;
+
overlays = [ rust-overlay.overlays.default ];
+
};
in
{
-
packages = forAllSystems (pkgs: {
-
example = pkgs.callPackage ./default.nix { };
-
default = self.packages.${pkgs.stdenv.hostPlatform.system}.example;
-
});
+
packages = forAllSystems (system:
+
let
+
pkgs = mkPkgs system;
+
rustToolchain = pkgs.rust-bin.stable.latest.default;
+
craneLib = (crane.mkLib pkgs).overrideToolchain rustToolchain;
+
+
commonArgs = {
+
src = craneLib.cleanCargoSource ./.;
+
strictDeps = true;
+
+
buildInputs = with pkgs; [
+
openssl
+
postgresql
+
] ++ pkgs.lib.optionals pkgs.stdenv.isDarwin [
+
pkgs.darwin.apple_sdk.frameworks.Security
+
pkgs.darwin.apple_sdk.frameworks.SystemConfiguration
+
];
+
+
nativeBuildInputs = with pkgs; [
+
pkg-config
+
];
+
+
SQLX_OFFLINE = "true";
+
};
+
+
cargoArtifacts = craneLib.buildDepsOnly commonArgs;
+
+
prism = craneLib.buildPackage (commonArgs // {
+
inherit cargoArtifacts;
+
});
+
in
+
{
+
inherit prism;
+
default = prism;
+
});
+
+
devShells = forAllSystems (system:
+
let
+
pkgs = mkPkgs system;
+
rustToolchain = pkgs.rust-bin.stable.latest.default.override {
+
extensions = [ "rust-src" "rust-analyzer" ];
+
};
+
in
+
{
+
default = pkgs.mkShell {
+
buildInputs = with pkgs; [
+
rustToolchain
+
+
pkg-config
+
openssl
+
+
postgresql
+
sqlx-cli
+
+
docker-client
+
] ++ pkgs.lib.optionals pkgs.stdenv.isDarwin [
+
pkgs.darwin.apple_sdk.frameworks.Security
+
pkgs.darwin.apple_sdk.frameworks.SystemConfiguration
+
];
-
devShells = forAllSystems (pkgs: {
-
default = pkgs.callPackage ./shell.nix { };
-
});
+
DATABASE_URL = "postgres://postgres:postgres@localhost:5432/prism";
-
overlays.default = final: _: { example = final.callPackage ./default.nix { }; };
+
shellHook = ''
+
echo "🔮 Prism development environment"
+
echo ""
+
echo "Available commands:"
+
echo " cargo run - Start the server"
+
echo " cargo test - Run tests (needs Docker)"
+
echo " cargo sqlx - Database migrations"
+
echo ""
+
echo "Database: $DATABASE_URL"
+
'';
+
};
+
});
+
+
overlays.default = final: prev: {
+
prism = self.packages.${final.stdenv.hostPlatform.system}.prism;
+
};
};
}
-34
shell.nix
···
-
# stolen from https://github.com/tgirlcloud/nix-templates/blob/main/node/shell.nix
-
{
-
mkShellNoCC,
-
-
# extra tooling
-
eslint_d,
-
prettierd,
-
nodejs_24,
-
pnpm,
-
typescript,
-
typescript-language-server,
-
-
callPackage,
-
}:
-
let
-
defaultPackage = callPackage ./default.nix { };
-
in
-
mkShellNoCC {
-
inputsFrom = [ defaultPackage ];
-
-
packages = [
-
eslint_d
-
prettierd
-
nodejs_24
-
pnpm
-
typescript
-
typescript-language-server
-
];
-
-
shellHook = ''
-
eslint_d start # start eslint daemon
-
eslint_d status # inform user about eslint daemon status
-
'';
-
}