From 9a16f1016003be579c7efbe6a05ae98c3910cd40 Mon Sep 17 00:00:00 2001 From: "Emma [it/its]@Rory&" Date: Sun, 10 Dec 2023 22:25:22 +0100 Subject: [PATCH] Add nix support --- .gitignore | 3 +- .idea/.gitignore | 5 + .idea/codeStyles/Project.xml | 148 +++++++++++++++++++ .idea/codeStyles/codeStyleConfig.xml | 5 + .idea/inspectionProfiles/Project_Default.xml | 11 ++ .idea/jsLibraryMappings.xml | 6 + .idea/jsLinters/eslint.xml | 6 + .idea/misc.xml | 6 + .idea/modules.xml | 8 + .idea/prettier.xml | 6 + .idea/server.iml | 14 ++ .idea/vcs.xml | 6 + assets/schemas.json | Bin 18300690 -> 18378642 bytes flake.lock | Bin 0 -> 1497 bytes flake.nix | 35 +++++ flake.template.nix | 35 +++++ nix-build-test.sh | 3 + nix-rebuild-flake.sh | 4 + package.json | 10 ++ tsconfig.json | 4 +- 20 files changed, 311 insertions(+), 4 deletions(-) create mode 100644 .idea/.gitignore create mode 100644 .idea/codeStyles/Project.xml create mode 100644 .idea/codeStyles/codeStyleConfig.xml create mode 100644 .idea/inspectionProfiles/Project_Default.xml create mode 100644 .idea/jsLibraryMappings.xml create mode 100644 .idea/jsLinters/eslint.xml create mode 100644 .idea/misc.xml create mode 100644 .idea/modules.xml create mode 100644 .idea/prettier.xml create mode 100644 .idea/server.iml create mode 100644 .idea/vcs.xml create mode 100644 flake.lock create mode 100644 flake.nix create mode 100644 flake.template.nix create mode 100755 nix-build-test.sh create mode 100755 nix-rebuild-flake.sh diff --git a/.gitignore b/.gitignore index bc780d640..69fcafd43 100644 --- a/.gitignore +++ b/.gitignore @@ -13,9 +13,10 @@ assets/cacheMisses .vscode/settings.json build +result *.log *.log.ansi *.tmp tmp/ -dump/ \ No newline at end of file +dump/ diff --git a/.idea/.gitignore b/.idea/.gitignore new file mode 100644 index 000000000..b58b603fe --- /dev/null +++ b/.idea/.gitignore @@ -0,0 +1,5 @@ +# Default ignored files +/shelf/ +/workspace.xml +# Editor-based HTTP Client requests +/httpRequests/ diff --git a/.idea/codeStyles/Project.xml b/.idea/codeStyles/Project.xml new file mode 100644 index 000000000..50497ca0a --- /dev/null +++ b/.idea/codeStyles/Project.xml @@ -0,0 +1,148 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/codeStyles/codeStyleConfig.xml b/.idea/codeStyles/codeStyleConfig.xml new file mode 100644 index 000000000..79ee123c2 --- /dev/null +++ b/.idea/codeStyles/codeStyleConfig.xml @@ -0,0 +1,5 @@ + + + + \ No newline at end of file diff --git a/.idea/inspectionProfiles/Project_Default.xml b/.idea/inspectionProfiles/Project_Default.xml new file mode 100644 index 000000000..22cdf9bd9 --- /dev/null +++ b/.idea/inspectionProfiles/Project_Default.xml @@ -0,0 +1,11 @@ + + + + \ No newline at end of file diff --git a/.idea/jsLibraryMappings.xml b/.idea/jsLibraryMappings.xml new file mode 100644 index 000000000..1ee68b188 --- /dev/null +++ b/.idea/jsLibraryMappings.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/.idea/jsLinters/eslint.xml b/.idea/jsLinters/eslint.xml new file mode 100644 index 000000000..541945bb0 --- /dev/null +++ b/.idea/jsLinters/eslint.xml @@ -0,0 +1,6 @@ + + + + + \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml new file mode 100644 index 000000000..28a804d89 --- /dev/null +++ b/.idea/misc.xml @@ -0,0 +1,6 @@ + + + + + \ No newline at end of file diff --git a/.idea/modules.xml b/.idea/modules.xml new file mode 100644 index 000000000..fbd90b4d4 --- /dev/null +++ b/.idea/modules.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/.idea/prettier.xml b/.idea/prettier.xml new file mode 100644 index 000000000..b0c1c68fb --- /dev/null +++ b/.idea/prettier.xml @@ -0,0 +1,6 @@ + + + + + \ No newline at end of file diff --git a/.idea/server.iml b/.idea/server.iml new file mode 100644 index 000000000..6186bc99d --- /dev/null +++ b/.idea/server.iml @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml new file mode 100644 index 000000000..35eb1ddfb --- /dev/null +++ b/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/assets/schemas.json b/assets/schemas.json index a0ab1697c99e4bad5533af3b5d5feaa87e003ecc..e5e0b5230cfbb776db22f81ae1b350d93339ae95 100644 GIT binary patch delta 15990 zcmc(m>syr95x}1pc5%5cuv|psqF8QH6oY6H1TGCDC`zKDXhe%bD7ve#0nwmh0~w`X`VWjBe&+)Z&-2@vIcLth z?>SpB+Nr4M`c6??A{{rm7bbizDqY23ys5Kk?xr;&wcM;qDCKwMBJz>NN3y6FfBXEb zB0~&h`Aifu&efTVg!|skqP*WCLX@Y^SBQjm$5~=un2ArNcKK#8y1_>!Hq=yG3eV3R zCRED&?L@*tClB-#W(g_?UuHs>V)!!IQD;_jbde0Ai{uzxWOjqe3=}glfnrx=2Jl6@ zOeGXY&1_)shJrB1!5bFWTsigNrm!Te&`n`|h$-1GCfG6+xP@2~Hs}^&`@o4W=6Dq( zrP>loOiHzLVvL#0=S%Gfdpuw2(93H!X>tIQCKZ}AIkxj=J3#LU0eUA4&^v2c%_4H_ z6S)}G?lgl~2Nz-@#yYrObK#t8FFylpiEMzw#%M`7q(rVqGRmpw9pO8sf0Hgl+(Uvop3OH{xsreIDNj)WX7$8 zVy?~dA$+km%TLA|^RpU1cvj<&&uRkBu$l##t-!rCfS8W%t$`o2c6Fgl4xRw2CxOJz zQS~IKl()OQ)Q?V?0i#o9;^>s%FT7coH|ar{JPVb{uNCl`yQ^M7Ys`Yo*0Aka=*LtH1ER))s0^i2-BEQZ%N-o@TAHAhQC@OJj*&p?PWCNme~LHpUV0=-8N$ z#cRIVn*cX^m*LIcUz_qyvtYaB5N!7w47Pj2$ZO7xcmr}H5-~So#YWz2M`W&mh|HB3 zk@@D8NvumNz2;3wuUUoZHE)^l?j6moZ$Wcw5;nIcXY*#eWH=d0hJTAC!@slP{iLwXNXN(>87-_cOpsX)X^k1gJDAqE z#*ekwVA7VqgZ!@XE5p6~uHx&zsuJCK9A0~^n>`r-Dajl?FreJS@Qui5H( zE?7O^j8@No-^pqg-6e$zk#$w(C{pUHLPfFN@+p;`CXS+9FIS3V@2;2t-9C9lK6d*Q z3^BGLI-~MiSwL(-zma!ZYx054OoNc;=ak{UPg zntiu7g75ZI=)1jX32*amIo<><$G^aqa^U^|}*O%DmrMvIWnF#Pt)DdUUKk=)FtT7AEuv;?7-TD=A7IU|r zV_xanBj-SSqy@D{&Oc=h9Bewy6Bp2?qcxQES*`K|b4#eV`kMF#>#Z(oS>t|bZwb8! zEuojNCG@h6)ec>0mx(s)O1pBF*E~{s1x8A*;z()x2(LM&u^nO>uVGB%^+8^9dGB>7 z@BJ3bdv6T!nmcSepu_eicG%uxHd8|b&#-@^XISSLZ_K$FosgSx8*?-6Tw#4$gT2*v zh%Ve)-OZcr7w^|)U^vrFe20cJJr7t@E@*HS1JdgQuz=ol|#%e%@8&OhOkFy2z&eu>(^hPViP~0MdmQ`cD-uPFs$111Xt~O zdXDvrn4p_43MkS&C7xlCZX}3R52gbn#B($q_;2Dg)}C_A??*W1H;Tvn#u`{-7G$;t zUEcLLAM1z^68SI=Oon~#WYMDYI(O@oVWC{zZg*9?WTO0vLiPXuQsp(nsj@rVU9@#5f_}^+S1(Z8NHo|=ngwd5 zRLfdf^_(W9M1!5AnbTx1@m?EMOL}{W1_wza=~WW%6%V!6-jP~~y%V((duNH>>aqRq Ld$G#I;{Bfhc*?&2 delta 4883 zcmaKvd010d7Qnw30fER83_&p@T2LBUR8*)EigjTG;|zj@0fJ-QkP4#6bjsKQE_kLQ z1`Tpy7!=V~#8}_38t3Avgzx%y>`Mq<_UEY27 z?QOkdxp(lUWyW^lOHsQ&%XIW{(C18E!!l%JcBB0inmI!2RK7WlogAxM2a- z+sruTXuZv%iO|BNkXvEF8Hu?SmSYJcQp%niWLA)J$C6`(DR-<}oPVD$S_)QDF=rH7 zNo|UM69{?zn~a`y9_L7dabwhhkMBu@5N2>{ z-^s@3``EES$MzsrzBt8|*|!KX_Ty&~IcrVy9;&3*@SvsX-aCF@ALxB}8HuEey9t5WGKWsg=t*`w81_GpcfuGCW%2cD|6=&6eL zrt6SI$AcvLU6e$xn>&H3gOv|}B`Z@(C+XWHevqVJ$4S5>ec}Y7D*m2ZSewXMj|*#) z-Xv#(4MamV@I8cAdOt66$niS4o@rCBS%cKWe zH^0aE8*bhF{!P+gkK)8GEVQ&R>cG^|Qoi$zzZ7ZDlmn7+`V4b#HYHr<%*qp&yRx?M zuf6hC+Du||;%2z947tpl*)Ns7&N5D2Q~mnWanEFKOlD`g6;}FUjR(t_G0U3uoDHAO zLUT7x+wUS3#sQb25c6cM zg*^K59kUdy+}}g?^0uL%a#n2Z7?I#Wk|$VtQ0QR(sIBtXIJbWR2q%-+&X8v*fKARvA#2E=dcrPr3O zK650P^0#reqbWbLlV0{*16}1S)MD2E@!)akRXhDZs$ho1UoS_tl?|3dfD zB6{y)oi@c{SaH3GvmaMnKhQ*XnQPE#a}YaiN6L1JM0f(t$b*Pka!xE|z z4s$-ns)SGa$-~_%Eve)aNGdskNhPI^>9?w~xfGPm|3+o=(H44b9X0zDj+%XjN6kJz zO~+8o{2UZB%TO`%*k*c~LRTJx(3RyFy7Kr#G6v&@IXu@N=TzWx{TDOk)S4O6Ea9Q? z3(lAL(0HPcemINzPC!v#B^LGJ_jEy544zcE(0smzW5DL~XQ&N|ZzJ=1&v0sSUhmls1r>wwESAuvI>-4MyHw{p z=q_hPo`yommpbpy1~Sy2a_74_IzamkNd!1{D6G2HFA#JP-j zJFc7|%BC=$PMx9rM4bCM}3g{)W?x(a9}OXhU4w0^;Ip zC@#L^gbZL}%e0f}HkynA840y361vZRh-e ze$xA^=-vF~x{40E579v#7#-9(YYMgeASAn!(}f|~4<69PbXPxs?&@yrt~L$Rp}hMh z$h-d|=H2i4nT+vjkq65jLa^*743_owlN$8T>*f56{qy=R)B6Z7#u~P#^l={H_LTl% zhR36%A3RD1(4*w>1^VGGZF&r)O;512>8T%SFn%f)XC8c(dGPs(gM*7EQlnRBoybpg zT5 zKjZhFzxTe^o58?IH5Y~RdGJ~<>ZMHBS`160l8<6tR%uomyHeMRsxV^H6yHBvjKSdT z)A7SebhH-y9loVVSYc+GE2-KYNC3nXxPWx08dWU6XT_?;UNPk3;d)ex46S_jv`>>C zvvH88^GeE}6Z&m-dq>uB~chkPJk4F4x(3ovT=-EUEuFG`{W3 ze`xI?Y>AI{IH}rY>)3YjN`DaaA;rGcnsa}G<;cLm;A+lDcK>@i4pnkHkIX1u79)(u z({#@lljpH2;vRq0P8W6$J9j$S7X8r~jIoR;5F|uQhCTrvMjmpb5C|Aa$Xw=nQgCjg z_B5&kcmC$gxk}j>U5nJkuuKcX!sKGeE?lEW%ZX{Z*2YT7#YwdD+aKpnz(H-Bgf5pS zj30B|Mf0kdUxFGxKqYHv{u=#pN zaNiiK-LO+=F?C_#Lb5V3w&TaJaE1v8FmuBols;wwo& l-YdfLk6L>O5B}88c9flCCJygLjI$Map>$dYh1|T|`~i5veb@j1 literal 0 HcmV?d00001 diff --git a/flake.nix b/flake.nix new file mode 100644 index 000000000..f0f6389a1 --- /dev/null +++ b/flake.nix @@ -0,0 +1,35 @@ +{ + description = "Spacebar server, written in Typescript."; + + inputs.nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable"; + inputs.flake-utils.url = "github:numtide/flake-utils"; + + outputs = { self, nixpkgs, flake-utils }: + flake-utils.lib.eachSystem flake-utils.lib.allSystems (system: + let + pkgs = import nixpkgs { + inherit system; + }; + in rec { + packages.default = pkgs.buildNpmPackage { + pname = "spacebar-server-ts"; + src = ./.; + name = "spacebar-server-ts"; + meta.mainProgram = "start-bundle"; + + #nativeBuildInputs = with pkgs; [ python3 ]; + npmDepsHash = "sha256-9yyOPogFi71Dcm7DKe4FJJz9d6uDtJsliDR+b32KKvA="; + #makeCacheWritable = true; + postPatch = '' + substituteInPlace package.json --replace 'npx patch-package' '${pkgs.nodePackages.patch-package}/bin/patch-package' + ''; + }; + devShell = pkgs.mkShell { + buildInputs = with pkgs; [ + nodejs + nodePackages.typescript + ]; + }; + } + ); +} diff --git a/flake.template.nix b/flake.template.nix new file mode 100644 index 000000000..d1d30d7be --- /dev/null +++ b/flake.template.nix @@ -0,0 +1,35 @@ +{ + description = "Spacebar server, written in Typescript."; + + inputs.nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable"; + inputs.flake-utils.url = "github:numtide/flake-utils"; + + outputs = { self, nixpkgs, flake-utils }: + flake-utils.lib.eachSystem flake-utils.lib.allSystems (system: + let + pkgs = import nixpkgs { + inherit system; + }; + in rec { + packages.default = pkgs.buildNpmPackage { + pname = "spacebar-server-ts"; + src = ./.; + name = "spacebar-server-ts"; + meta.mainProgram = "start-bundle"; + + #nativeBuildInputs = with pkgs; [ python3 ]; + npmDepsHash = "$NPM_HASH"; + #makeCacheWritable = true; + postPatch = '' + substituteInPlace package.json --replace 'npx patch-package' '${pkgs.nodePackages.patch-package}/bin/patch-package' + ''; + }; + devShell = pkgs.mkShell { + buildInputs = with pkgs; [ + nodejs + nodePackages.typescript + ]; + }; + } + ); +} diff --git a/nix-build-test.sh b/nix-build-test.sh new file mode 100755 index 000000000..5c6914620 --- /dev/null +++ b/nix-build-test.sh @@ -0,0 +1,3 @@ +#!/usr/bin/env sh +#nix build --update-input pnpm2nix --debugger --ignore-try +nix build --debugger --ignore-try --print-out-paths --print-build-logs --http2 "$@" diff --git a/nix-rebuild-flake.sh b/nix-rebuild-flake.sh new file mode 100755 index 000000000..08f55840b --- /dev/null +++ b/nix-rebuild-flake.sh @@ -0,0 +1,4 @@ +#!/usr/bin/env nix-shell +#!nix-shell -i "bash -x" -p bash +DEPS_HASH=`nix run nixpkgs#prefetch-npm-deps -- package-lock.json` +sed 's/$NPM_HASH/'${DEPS_HASH/\//\\\/}'/g' flake.template.nix > flake.nix diff --git a/package.json b/package.json index 3994670b5..7e48f745d 100644 --- a/package.json +++ b/package.json @@ -35,6 +35,16 @@ "imports": { "#*": "./dist/*/index.js" }, + "files": [ + "dist", + "assets" + ], + "bin": { + "start-bundle": "dist/bundle/start.js", + "start-api": "dist/api/start.js", + "start-cdn": "dist/cdn/start.js", + "start-gateway": "dist/gateway/start.js" + }, "homepage": "https://spacebar.chat", "devDependencies": { "@types/amqplib": "^0.8.2", diff --git a/tsconfig.json b/tsconfig.json index 63b5e96cb..1e3e9d59a 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -41,9 +41,7 @@ } /* Specify a set of entries that re-map imports to additional lookup locations. */, // "rootDirs": [], /* Allow multiple folders to be treated as one when resolving modules. */ // "typeRoots": [], /* Specify multiple folders that act like './node_modules/@types'. */ - "types": [ - "node" - ] /* Specify type package names to be included without being referenced in a source file. */, + "types": ["node"] /* Specify type package names to be included without being referenced in a source file. */, // "allowUmdGlobalAccess": true, /* Allow accessing UMD globals from modules. */ // "moduleSuffixes": [], /* List of file name suffixes to search when resolving a module. */ "resolveJsonModule": true /* Enable importing .json files. */,