website/flake.nix
Snorre Ettrup Altschul 4e7d9d321c
All checks were successful
Restart Website Service / restart_service (push) Successful in 29s
added automatic built date in corner
2025-04-01 22:10:17 +02:00

79 lines
2.1 KiB
Nix

{
description = "Flake for mc rust proxy";
inputs = {
nixpkgs.url = "github:nixos/nixpkgs?ref=nixos-unstable";
rust-overlay = {
url = "github:oxalica/rust-overlay";
inputs.nixpkgs.follows = "nixpkgs";
};
};
outputs = {
self,
nixpkgs,
rust-overlay,
}: let
# rust-overlay = import rust-overlay;
system = "x86_64-linux";
pkgs =
import nixpkgs
{
inherit system;
overlays = [rust-overlay.overlays.default];
};
in {
devShells.${system}.default = pkgs.mkShell {
buildInputs = with pkgs; [
rust-bin.nightly.latest.default
rust-analyzer
];
# shellHook = ''
# echo "Hello from nix dev shell"
# '';
};
formatter.${system} = pkgs.alejandra;
packages.${system}.default = pkgs.rustPlatform.buildRustPackage rec {
pname = "webbisitey-${version}";
version = "0.1.0";
src = ./src/..;
runtime = ./public;
# Cargo cant download dependencies at build time, so this downloads them through nix
cargoDeps = pkgs.rustPlatform.importCargoLock {
lockFile = "${src}/Cargo.lock";
};
# we need rust to compile
nativeBuildInputs = [
pkgs.makeWrapper
pkgs.rust-bin.nightly.latest.default
];
# build the thing
buildPhase = ''
runHook preBuild
cargo build -r
mkdir -p $out/bin
cp target/release/webbisitey $out/bin
runHook postBuild
'';
# move the files
installPhase = ''
makeWrapper $out/bin/webbisitey $out/bin/webbisitey-wrapped --run 'cd $(dirname $0)'; # im too lazy to add a path argument so cd into the correct folder so it can serve files.
cp -r $runtime $out/bin/public
substituteInPlace $out/bin/public/index.html --replace "{{{VERSION}}}" "Built $(date +%Y-%m-%d\ %H:%M:%S)"
'';
meta = {
description = "Website server backend";
license = pkgs.lib.licenses.mit;
mainProgram = "webbisitey-wrapped"; # we want to run the wrapped version
};
};
};
}