Merge pull request #25 from snaakey/nix

fix nix package and add nix binary cache
This commit is contained in:
Gaspard Wierzbinski 2024-08-25 13:11:24 +02:00 committed by GitHub
commit a3817564f7
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
6 changed files with 89 additions and 22 deletions

View file

@ -1,5 +1,19 @@
{
"nodes": {
"flake-compat": {
"locked": {
"lastModified": 1696426674,
"narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=",
"rev": "0f9255e01c2351cc7d116c072cb317785dd33b33",
"revCount": 57,
"type": "tarball",
"url": "https://api.flakehub.com/f/pinned/edolstra/flake-compat/1.0.1/018afb31-abd1-7bff-a5e4-cff7e18efb7a/source.tar.gz"
},
"original": {
"type": "tarball",
"url": "https://flakehub.com/f/edolstra/flake-compat/1.tar.gz"
}
},
"flake-utils": {
"inputs": {
"systems": "systems"
@ -20,11 +34,11 @@
},
"nixpkgs": {
"locked": {
"lastModified": 1723703277,
"narHash": "sha256-nk0RaUB5f68BwtXAYy3WAjqFhVKqIl9Z89RGycTa2vk=",
"lastModified": 1724395761,
"narHash": "sha256-zRkDV/nbrnp3Y8oCADf5ETl1sDrdmAW6/bBVJ8EbIdQ=",
"owner": "nixos",
"repo": "nixpkgs",
"rev": "8b908192e64224420e2d59dfd9b2e4309e154c5d",
"rev": "ae815cee91b417be55d43781eb4b73ae1ecc396c",
"type": "github"
},
"original": {
@ -36,6 +50,7 @@
},
"root": {
"inputs": {
"flake-compat": "flake-compat",
"flake-utils": "flake-utils",
"nixpkgs": "nixpkgs"
}

View file

@ -3,15 +3,24 @@
inputs = {
nixpkgs.url = "github:nixos/nixpkgs/nixpkgs-unstable";
flake-compat.url = "https://flakehub.com/f/edolstra/flake-compat/1.tar.gz";
flake-utils.url = "github:numtide/flake-utils";
};
outputs = { self, nixpkgs, flake-utils }: {
nixConfig = {
extra-substituters = [
"https://cache.kyouma.net"
];
extra-trusted-public-keys = [
"cache.kyouma.net:Frjwu4q1rnwE/MnSTmX9yx86GNA/z3p/oElGvucLiZg="
];
};
outputs = { self, nixpkgs, flake-utils, ... }: {
hydraJobs = {
inherit (self) packages;
};
} // flake-utils.lib.eachDefaultSystem (system:
let
} // flake-utils.lib.eachSystem [ "x86_64-linux" "aarch64-linux" ] (system: let
pkgs = import nixpkgs {
inherit system;
};
@ -20,7 +29,15 @@
versiajs = pkgs.callPackage ./nix/package.nix {};
default = self.packages.${system}.versiajs;
};
}) // flake-utils.lib.eachDefaultSystem (system: let
pkgs = import nixpkgs {
inherit system;
};
in {
apps.update-modules = {
type = "app";
program = self.packages.${system}.versiajs.passthru.updateScript;
};
devShells = {
default = pkgs.mkShell {
buildInputs = with pkgs; [

View file

@ -1,6 +0,0 @@
{ lib }: {
x86_64-linux = "sha256-T/U9altP5HFzmULtsuvHQIXQXDCmQEAau8KFN8J5i/8=";
x86_64-darwin = lib.fakeHash;
aarch64-linux = "sha256-6ZzrYI2G+7q9Efgu5iKhZB3bT2C7T5fk4I/t5glpQYA=";
aarch64-darwin = lib.fakeHash;
}

View file

@ -1,24 +1,29 @@
{
lib,
stdenv,
fetchFromGitHub,
bun,
callPackage,
nodeHashes ? callPackage ./nodeHashes.nix { inherit lib; },
modulesSrc ? callPackage ./source.nix {},
nodePackages_latest,
makeBinaryWrapper,
}:
assert lib.assertMsg (
with builtins; hashFile "sha256" ../bun.lockb == hashFile "sha256" "${modulesSrc.src}/bun.lockb"
) "bun.lockb has changed. Please run 'nix run .#apps.x86_64-linux.update-modules'";
stdenv.mkDerivation (finalAttrs: {
pname = "versiajs";
version = "0.7.0";
src = ../.;
node_modules = stdenv.mkDerivation {
pname = "${finalAttrs.pname}-node_modules";
versiajsModules = stdenv.mkDerivation (modulesAttrs: {
pname = "${finalAttrs.pname}-modules";
inherit (finalAttrs) version src;
inherit (finalAttrs) version;
src = modulesSrc.src;
nativeBuildInputs = with nodePackages_latest; [ bun nodejs typescript ];
@ -35,9 +40,9 @@ stdenv.mkDerivation (finalAttrs: {
dontFixup = true;
outputHash = nodeHashes.${stdenv.system};
outputHash = modulesSrc.outputHash.${stdenv.system};
outputHashMode = "recursive";
};
});
nativeBuildInputs = [ bun ];
@ -48,7 +53,7 @@ stdenv.mkDerivation (finalAttrs: {
configurePhase = ''
runHook preConfigure
cp -r ${finalAttrs.node_modules}/node_modules .
cp -r ${finalAttrs.versiajsModules}/node_modules .
runHook postConfigure
'';
@ -80,11 +85,13 @@ stdenv.mkDerivation (finalAttrs: {
runHook postInstall
'';
passthru.updateScript = ./update.sh;
meta = {
description = "A new federated server written with TypeScript and Bun ";
homepage = "https://lysand.org";
license = with lib.licenses; [ agpl3Plus ];
maintainers = with lib.maintainers; [ snaki ];
platforms = [ "x86_64-linux" "x86_64-darwin" "aarch64-linux" "aarch64-darwin" ];
platforms = [ "x86_64-linux" "aarch64-linux" ];
};
})

13
nix/source.nix Normal file
View file

@ -0,0 +1,13 @@
{
lib,
fetchFromGitHub,
}: {
outputHash.x86_64-linux = "sha256-SbOgLEdrKA7MwkiUvmenXyfbwgrKsq3AYo4Rjlqn0YA=";
outputHash.aarch64-linux = "sha256-KJBsOhtDOmW/EVFgZF1TNB5G7mSeRZs18zwZlh1MsUM=";
src = fetchFromGitHub {
owner = "lysand-org";
repo = "server";
rev = "832f72160f574f86c8a8897e5dcb3d6382d8192c";
hash = "sha256-BaojznCj0WWA0KkDMLjjlYikwpn975arGLyd0lFBXm0=";
};
}

21
nix/update.sh Executable file
View file

@ -0,0 +1,21 @@
#!/usr/bin/env nix-shell
#! nix-shell -i bash -p nix-prefetch-github
set -euo pipefail
SOURCE=$(nix-prefetch-github --nix lysand-org server | tail -n 6)
cat > ./nix/source.nix << EOF
{
lib,
fetchFromGitHub,
}: {
outputHash.x86_64-linux = lib.fakeHash;
outputHash.aarch64-linux = lib.fakeHash;
src = fetchFromGitHub {
${SOURCE};
}
EOF
echo "Done."
echo "Please update the attributes of 'outputHash' in nix/source.nix."