flake rework

This commit is contained in:
Robin Appelman 2024-01-16 22:39:33 +01:00
commit 6010f814e9
8 changed files with 119 additions and 104 deletions

70
Cargo.lock generated
View file

@ -880,6 +880,41 @@ dependencies = [
"syn 2.0.39",
]
[[package]]
name = "demostf-frontend"
version = "0.1.0"
dependencies = [
"async-session",
"axum",
"config",
"const-fnv1a-hash",
"const-str 0.5.4",
"const_base",
"demostf-build",
"hyper",
"hyperlocal",
"include_dir",
"itertools 0.12.0",
"maud",
"quick-xml",
"rand",
"reqwest",
"sea-query",
"sea-query-binder",
"serde",
"serde-env",
"sqlx",
"steam-openid",
"steamid-ng",
"thiserror",
"time 0.3.20",
"tokio",
"toml 0.8.8",
"tower-http",
"tracing",
"tracing-subscriber",
]
[[package]]
name = "der"
version = "0.7.8"
@ -1110,41 +1145,6 @@ dependencies = [
"syn 1.0.109",
]
[[package]]
name = "frontend"
version = "0.1.0"
dependencies = [
"async-session",
"axum",
"config",
"const-fnv1a-hash",
"const-str 0.5.4",
"const_base",
"demostf-build",
"hyper",
"hyperlocal",
"include_dir",
"itertools 0.12.0",
"maud",
"quick-xml",
"rand",
"reqwest",
"sea-query",
"sea-query-binder",
"serde",
"serde-env",
"sqlx",
"steam-openid",
"steamid-ng",
"thiserror",
"time 0.3.20",
"tokio",
"toml 0.8.8",
"tower-http",
"tracing",
"tracing-subscriber",
]
[[package]]
name = "futures-channel"
version = "0.3.28"

View file

@ -1,5 +1,5 @@
[package]
name = "frontend"
name = "demostf-frontend"
version = "0.1.0"
edition = "2021"

23
docker.nix Normal file
View file

@ -0,0 +1,23 @@
{
dockerTools,
demostf-frontend,
}:
dockerTools.buildLayeredImage {
name = "demostf/frontend";
tag = "latest";
maxLayers = 5;
contents = [
demostf-frontend
dockerTools.caCertificates
];
config = {
Cmd = ["demostf-frontend"];
ExposedPorts = {
"80/tcp" = {};
};
Env = [
"LISTEN_ADDRESS=0.0.0.0"
"LISTEN_PORT=80"
];
};
}

21
flake.lock generated
View file

@ -18,26 +18,6 @@
"type": "github"
}
},
"naersk": {
"inputs": {
"nixpkgs": [
"nixpkgs"
]
},
"locked": {
"lastModified": 1698420672,
"narHash": "sha256-/TdeHMPRjjdJub7p7+w55vyABrsJlt5QkznPYy55vKA=",
"owner": "nix-community",
"repo": "naersk",
"rev": "aeb58d5e8faead8980a807c840232697982d47b9",
"type": "github"
},
"original": {
"owner": "nix-community",
"repo": "naersk",
"type": "github"
}
},
"nixpkgs": {
"locked": {
"lastModified": 1705433086,
@ -87,7 +67,6 @@
},
"root": {
"inputs": {
"naersk": "naersk",
"nixpkgs": "nixpkgs",
"npmlock2nix": "npmlock2nix",
"rust-overlay": "rust-overlay",

View file

@ -3,8 +3,6 @@
utils.url = "github:numtide/flake-utils";
nixpkgs.url = "nixpkgs/release-23.11";
rust-overlay.url = "github:oxalica/rust-overlay";
naersk.url = "github:nix-community/naersk";
naersk.inputs.nixpkgs.follows = "nixpkgs";
npmlock2nix.url = "github:nix-community/npmlock2nix";
npmlock2nix.flake = false;
};
@ -14,7 +12,6 @@
nixpkgs,
utils,
rust-overlay,
naersk,
npmlock2nix,
}:
utils.lib.eachDefaultSystem (system: let
@ -23,61 +20,26 @@
(final: prev: {
npmlock2nix = final.callPackage npmlock2nix {};
})
(import ./overlay.nix)
(final: prev: {
demostf-frontend-toolchain = final.rust-bin.nightly."2024-01-16".default;
})
];
pkgs = (import nixpkgs) {
inherit system overlays;
};
inherit (pkgs) lib callPackage dockerTools;
inherit (lib.sources) sourceByRegex;
src = sourceByRegex ./. ["Cargo.*" "(src|build|images|script|style|.sqlx)(/.*)?"];
nodeSrc = sourceByRegex ./. ["package.*"];
toolchain = pkgs.rust-bin.nightly."2024-01-16".default;
naersk' = callPackage naersk {
rustc = toolchain;
cargo = toolchain;
};
in rec {
packages = rec {
node_modules = pkgs.npmlock2nix.v2.node_modules {
src = nodeSrc;
nodejs = pkgs.nodejs_20;
};
frontend = naersk'.buildPackage {
pname = "demostf-frontend";
root = src;
preBuild = ''
ln -s ${node_modules}/node_modules .
'';
nativeBuildInputs = with pkgs; [pkg-config openssl];
};
docker = dockerTools.buildLayeredImage {
name = "demostf/frontend";
tag = "latest";
maxLayers = 5;
contents = [
frontend
dockerTools.caCertificates
];
config = {
Cmd = ["frontend"];
ExposedPorts = {
"80/tcp" = {};
};
Env = [
"LISTEN_ADDRESS=0.0.0.0"
"LISTEN_PORT=80"
];
};
};
node_modules = pkgs.demostf-frontend-node-modules;
frontend = pkgs.demostf-frontend;
docker = pkgs.demostf-frontend-docker;
default = frontend;
};
devShells.default = pkgs.mkShell {
OPENSSL_NO_VENDOR = 1;
nativeBuildInputs = with pkgs; [
toolchain
demostf-frontend-toolchain
bacon
cargo-edit
cargo-outdated

10
node_modules.nix Normal file
View file

@ -0,0 +1,10 @@
{
npmlock2nix,
nodejs_20,
lib,
}: let
inherit (lib.sources) sourceByRegex;
in npmlock2nix.v2.node_modules {
src = sourceByRegex ./. ["package.*"];
nodejs = nodejs_20;
}

5
overlay.nix Normal file
View file

@ -0,0 +1,5 @@
prev: final: {
demostf-frontend-node-modules = final.callPackage ./node_modules.nix {};
demostf-frontend = final.callPackage ./package.nix {};
demostf-frontend-docker = final.callPackage ./docker.nix {};
}

36
package.nix Normal file
View file

@ -0,0 +1,36 @@
{
stdenv,
makeRustPlatform,
lib,
demostf-frontend-toolchain,
pkg-config,
openssl,
demostf-frontend-node-modules,
}: let
inherit (lib.sources) sourceByRegex;
rustPlatform = makeRustPlatform {
rustc = demostf-frontend-toolchain;
cargo = demostf-frontend-toolchain;
};
in
rustPlatform.buildRustPackage rec {
pname = "demostf-frontend";
version = "0.1.0";
src = sourceByRegex ./. ["Cargo.*" "(src|build|images|script|style|.sqlx)(/.*)?"];
buildInputs = [openssl];
nativeBuildInputs = [pkg-config];
preBuild = ''
ln -s ${demostf-frontend-node-modules}/node_modules .
'';
cargoLock = {
lockFile = ./Cargo.lock;
outputHashes = {
"jsx-dom-expressions-0.1.0" = "sha256-k5lLHS2umLRwZU0gaszrqCesDAxFVQXMfScT4Ry0SkI=";
};
};
}