mirror of https://github.com/clickscodes/nucleus
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
72 lines
2.1 KiB
72 lines
2.1 KiB
{
|
|
description = "A basic flake with a shell";
|
|
inputs.nixpkgs.follows = "clicks-server/nixpkgs";
|
|
inputs.flake-utils.url = "github:numtide/flake-utils";
|
|
inputs.clicks-server.url = "git+ssh://git@github.com/clicksminuteper/nixfiles";
|
|
inputs.pnpm2nix.url = "git+ssh://git@github.com/clicksminuteper/pnpm2nix";
|
|
|
|
inputs.pnpm2nix.inputs.nixpkgs.follows = "nixpkgs";
|
|
|
|
outputs = { self, nixpkgs, flake-utils, clicks-server, pnpm2nix }:
|
|
flake-utils.lib.eachDefaultSystem (system: let
|
|
pkgs = nixpkgs.legacyPackages.${system};
|
|
nodejs = pkgs.nodejs_20;
|
|
nodePackages = pkgs.nodePackages_latest;
|
|
lib = pkgs.lib;
|
|
in rec {
|
|
devShells.default = pkgs.mkShell {
|
|
packages = [ nodejs nodePackages.pnpm pkgs.pkg-config pkgs.fontconfig.dev ];
|
|
shellHook = ''
|
|
unset name
|
|
export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:${lib.makeSearchPath "/lib/pkgconfig" [
|
|
pkgs.pixman
|
|
pkgs.cairo.dev
|
|
pkgs.libpng.dev
|
|
pkgs.gnome2.pango.dev
|
|
pkgs.glib.dev
|
|
pkgs.harfbuzz.dev
|
|
pkgs.freetype.dev
|
|
]}
|
|
'';
|
|
};
|
|
|
|
packages.env = lib.pipe {
|
|
src = ./.;
|
|
} [
|
|
(pnpm2nix.mkPnpmPackage.${system})
|
|
(pnpm2nix.mkPnpmEnv.${system})
|
|
];
|
|
|
|
packages.default = let
|
|
packageJSON = (builtins.fromJSON (builtins.readFile ./package.json));
|
|
in pkgs.stdenv.mkDerivation {
|
|
pname = "nucleus";
|
|
version = packageJSON.version;
|
|
|
|
src = ./.;
|
|
|
|
buildInputs = [ packages.env nodejs nodePackages.pnpm ];
|
|
nativeBuildInputs = [ packages.env nodePackages.pnpm ];
|
|
|
|
buildPhase = ''
|
|
pnpm run build
|
|
'';
|
|
|
|
installPhase = ''
|
|
cp dist $out
|
|
mkdir -p $out/bin
|
|
echo "#!/usr/bin/env bash\ncd $out\n${packageJSON.scripts.start}" > $out/bin/nucleus
|
|
'';
|
|
};
|
|
|
|
dockerImage = let
|
|
nucleus = packages.default;
|
|
in pkgs.dockerTools.streamLayeredImage {
|
|
name = "nucleus";
|
|
tag = "latest";
|
|
contents = [ nucleus ];
|
|
config.Cmd = [ "${nucleus}/bin/nucleus" ];
|
|
};
|
|
});
|
|
}
|