char/sorcery
static-files based git repo viewer
git clone https://git.t4t.associates/char/sorcery
8f07a0e
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 = $ out 22mkdir -p " $ DENO_DIR " 23deno cache --lock=deno.lock build.ts main.tsx historical.tsx highlight.ts git/*.ts 24deno cache npm:pako 25runHook postBuild 26'' ; 27 28installPhase = "true" ; 29outputHashMode = "recursive" ; 30outputHashAlgo = "sha256" ; 31outputHash = "sha256-GPA+e94CEvc/FVohcgY2ev6l2sxORxw0OrphKUQMtKk=" ; 32}; 33 34shlex = pkgs . fetchFromGitHub { 35owner = "char" ; 36repo = "shlex" ; 37rev = "293b7c4bdc3b6c9a3195d226f0d8e92bf4516f96" ; 38hash = "sha256-aL5AJYVjnmvu8BJMD3f1z99e4MGJgNkUrOidWhr27NE=" ; 39}; 40 41sorcery = pkgs . pkgsStatic . rustPlatform . buildRustPackage { 42pname = "sorcery" ; 43version = "0.1.0" ; 44src = ./. ; 45cargoLock = { 46lockFile = ./Cargo.lock ; 47outputHashes . "arbrisseau-0.1.0" = "sha256-J+G8pQr2a6v7LNnn7jh306sRBqh0/uNgH7D8c115rxY=" ; 48}; 49nativeBuildInputs = [ pkgs . deno pkgs . gitMinimal ]; 50 51preBuild = '' 52cp -R ${ denoDeps } deno-dir 53chmod -R u+w deno-dir 54export DENO_DIR = $ PWD /deno-dir 55( cd web && deno task check && deno task test && deno task build) 56'' ; 57 58meta . mainProgram = "sorceryd" ; 59}; 60 61sorcery-ssh = pkgs . stdenv . mkDerivation { 62pname = "sorcery-ssh" ; 63version = "0.1.0" ; 64src = pkgs . lib . fileset . toSource { 65root = ./extra/sorcery-ssh ; 66fileset = pkgs . lib . fileset . unions [ 67./extra/sorcery-ssh/build.zig 68./extra/sorcery-ssh/build.zig.zon 69./extra/sorcery-ssh/src 70]; 71}; 72nativeBuildInputs = [ pkgs . zig ]; 73 74postPatch = '' 75mkdir -p zig-pkg 76ln -s ${ shlex } zig-pkg/shlex-0.1.1-O1DEI5oDAQARcXkYasXdAAsR0riDfb-1_riTtx0vemxN 77'' ; 78 79dontSetZigDefaultFlags = true ; 80zigBuildFlags = [ 81"-Dtarget=x86_64-linux-musl" 82"-Doptimize=ReleaseSafe" 83]; 84zigCheckFlags = [ 85"-Dtarget=x86_64-linux-musl" 86"-Doptimize=ReleaseSafe" 87]; 88doCheck = true ; 89 90meta . mainProgram = "sorcery-ssh" ; 91}; 92 93sorcery-ssh-tui = pkgs . pkgsStatic . rustPlatform . buildRustPackage { 94pname = "sorcery-ssh-tui" ; 95version = "0.1.0" ; 96src = ./extra/sorcery-ssh/tui ; 97cargoLock . lockFile = ./extra/sorcery-ssh/tui/Cargo.lock ; 98meta . mainProgram = "sorcery-ssh-tui" ; 99}; 100in { 101packages .${ system } = { 102default = sorcery ; 103inherit sorcery-ssh sorcery-ssh-tui ; 104}; 105 106devShells .${ system }. default = pkgs . pkgsStatic . mkShell { 107inputsFrom = [ sorcery sorcery-ssh sorcery-ssh-tui ]; 108nativeBuildInputs = [ pkgs . git pkgs . rustfmt pkgs . zig ]; 109CARGO_BUILD_TARGET = pkgs . pkgsStatic . stdenv . hostPlatform . rust . rustcTarget ; 110}; 111}; 112}