relay filter/appview bootstrap
at main 3.1 kB view raw
1{ 2 description = "Prism - ATProto AppView service for gmstn"; 3 4 inputs = { 5 nixpkgs.url = "github:nixos/nixpkgs/nixpkgs-unstable"; 6 rust-overlay = { 7 url = "github:oxalica/rust-overlay"; 8 inputs.nixpkgs.follows = "nixpkgs"; 9 }; 10 crane.url = "github:ipetkov/crane"; 11 }; 12 13 outputs = 14 { 15 self, 16 nixpkgs, 17 rust-overlay, 18 crane, 19 }: 20 let 21 supportedSystems = [ 22 "x86_64-linux" 23 "aarch64-linux" 24 "x86_64-darwin" 25 "aarch64-darwin" 26 ]; 27 forAllSystems = nixpkgs.lib.genAttrs supportedSystems; 28 29 mkPkgs = 30 system: 31 import nixpkgs { 32 inherit system; 33 overlays = [ rust-overlay.overlays.default ]; 34 }; 35 in 36 { 37 packages = forAllSystems ( 38 system: 39 let 40 pkgs = mkPkgs system; 41 rustToolchain = pkgs.rust-bin.stable.latest.default; 42 craneLib = (crane.mkLib pkgs).overrideToolchain rustToolchain; 43 44 commonArgs = { 45 src = craneLib.cleanCargoSource ./.; 46 strictDeps = true; 47 48 buildInputs = 49 with pkgs; 50 [ 51 openssl 52 postgresql 53 ] 54 ++ pkgs.lib.optionals pkgs.stdenv.isDarwin [ 55 pkgs.apple-sdk 56 ]; 57 58 nativeBuildInputs = with pkgs; [ 59 pkg-config 60 ]; 61 62 SQLX_OFFLINE = "true"; 63 }; 64 65 cargoArtifacts = craneLib.buildDepsOnly commonArgs; 66 67 prism = craneLib.buildPackage ( 68 commonArgs 69 // { 70 inherit cargoArtifacts; 71 } 72 ); 73 in 74 { 75 inherit prism; 76 default = prism; 77 } 78 ); 79 80 devShells = forAllSystems ( 81 system: 82 let 83 pkgs = mkPkgs system; 84 rustToolchain = pkgs.rust-bin.stable.latest.default.override { 85 extensions = [ 86 "rust-src" 87 "rust-analyzer" 88 ]; 89 }; 90 in 91 { 92 default = pkgs.mkShell { 93 buildInputs = 94 with pkgs; 95 [ 96 rustToolchain 97 98 pkg-config 99 openssl 100 101 postgresql 102 sqlx-cli 103 104 docker-client 105 ] 106 ++ pkgs.lib.optionals pkgs.stdenv.isDarwin [ 107 pkgs.apple-sdk 108 ]; 109 110 DATABASE_URL = "postgres://postgres:postgres@localhost:5432/prism"; 111 112 shellHook = '' 113 echo "🔮 Prism development environment" 114 echo "" 115 echo "Available commands:" 116 echo " cargo run - Start the server" 117 echo " cargo test - Run tests (needs Docker)" 118 echo " cargo sqlx - Database migrations" 119 echo "" 120 echo "Database: $DATABASE_URL" 121 ''; 122 }; 123 } 124 ); 125 126 overlays.default = final: prev: { 127 prism = self.packages.${final.stdenv.hostPlatform.system}.prism; 128 }; 129 }; 130}