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