forks/sorcery
git clone https://git.gae.moe/forks/sorcery
90f94f2
main
1{ 2description = "Sorcery, a static Git forge" ; 3 4inputs . nixpkgs . url = "github:NixOS/nixpkgs/nixpkgs-unstable" ; 5 6outputs = { nixpkgs , ...} : 7let 8system = "x86_64-linux" ; 9pkgs = import nixpkgs { inherit system ; }; 10 11denoDeps = pkgs . stdenvNoCC . mkDerivation { 12pname = "sorcery-web-deps" ; 13version = "0.1.0" ; 14src = ./web ; 15nativeBuildInputs = [ pkgs . deno ]; 16dontConfigure = true ; 17dontFixup = true ; 18 19buildPhase = '' 20runHook preBuild 21export DENO_DIR = $ TMPDIR /deno-cache 22export DENO_NO_UPDATE_CHECK =1 23deno cache --frozen --lock=deno.lock *.ts *.tsx git/*.ts 24runHook postBuild 25'' ; 26 27installPhase = '' 28runHook preInstall 29mkdir -p " $ out " 30cp -R " $ DENO_DIR "/{npm,remote} " $ out /" 31deno run --no-config --no-lock --allow-read --allow-write ${ ./nix/normalize-deno-cache.ts } " $ out " deno.lock 32runHook postInstall 33'' ; 34outputHashMode = "recursive" ; 35outputHashAlgo = "sha256" ; 36outputHash = "sha256-9t3jyDDbzL/GgTHfo5J8p7Atb4wCpkXlYEwimm7DXa0=" ; 37}; 38 39shlex = pkgs . fetchFromGitHub { 40owner = "char" ; 41repo = "shlex" ; 42rev = "293b7c4bdc3b6c9a3195d226f0d8e92bf4516f96" ; 43hash = "sha256-aL5AJYVjnmvu8BJMD3f1z99e4MGJgNkUrOidWhr27NE=" ; 44}; 45 46sorcery = pkgs . pkgsStatic . rustPlatform . buildRustPackage { 47pname = "sorcery" ; 48version = "0.1.0" ; 49src = ./. ; 50cargoLock = { 51lockFile = ./Cargo.lock ; 52outputHashes . "arbrisseau-0.1.0" = "sha256-vvHdwNWSV2QVvJ+5a0dW5rAYIHcuVlQW6ME+B+uCH5k=" ; 53}; 54nativeBuildInputs = [ pkgs . deno pkgs . gitMinimal ]; 55 56preBuild = '' 57cp -R ${ denoDeps } deno-dir 58chmod -R u+w deno-dir 59export DENO_DIR = $ PWD /deno-dir 60( cd web && deno task check && deno task test && deno task build) 61'' ; 62 63meta . mainProgram = "sorceryd" ; 64}; 65 66sorcery-ssh = pkgs . stdenv . mkDerivation { 67pname = "sorcery-ssh" ; 68version = "0.1.0" ; 69src = pkgs . lib . fileset . toSource { 70root = ./extra/sorcery-ssh ; 71fileset = pkgs . lib . fileset . unions [ 72./extra/sorcery-ssh/build.zig 73./extra/sorcery-ssh/build.zig.zon 74./extra/sorcery-ssh/src 75]; 76}; 77nativeBuildInputs = [ pkgs . zig ]; 78 79postPatch = '' 80mkdir -p zig-pkg 81ln -s ${ shlex } zig-pkg/shlex-0.1.1-O1DEI5oDAQARcXkYasXdAAsR0riDfb-1_riTtx0vemxN 82'' ; 83 84dontSetZigDefaultFlags = true ; 85zigBuildFlags = [ 86"-Dtarget=x86_64-linux-musl" 87"-Doptimize=ReleaseSafe" 88]; 89zigCheckFlags = [ 90"-Dtarget=x86_64-linux-musl" 91"-Doptimize=ReleaseSafe" 92]; 93doCheck = true ; 94 95meta . mainProgram = "sorcery-ssh" ; 96}; 97 98sorcery-ssh-tui = pkgs . pkgsStatic . rustPlatform . buildRustPackage { 99pname = "sorcery-ssh-tui" ; 100version = "0.1.0" ; 101src = ./extra/sorcery-ssh/tui ; 102cargoLock . lockFile = ./extra/sorcery-ssh/tui/Cargo.lock ; 103meta . mainProgram = "sorcery-ssh-tui" ; 104}; 105in { 106packages .${ system } = { 107default = sorcery ; 108inherit sorcery-ssh sorcery-ssh-tui ; 109}; 110 111devShells .${ system }. default = pkgs . pkgsStatic . mkShell { 112inputsFrom = [ sorcery sorcery-ssh sorcery-ssh-tui ]; 113nativeBuildInputs = [ pkgs . git pkgs . rustfmt pkgs . zig ]; 114CARGO_BUILD_TARGET = pkgs . pkgsStatic . stdenv . hostPlatform . rust . rustcTarget ; 115}; 116}; 117}