Compare commits
No commits in common. "tlater/update" and "master" have entirely different histories.
tlater/upd
...
master
18 changed files with 8492 additions and 15668 deletions
|
|
@ -1,2 +0,0 @@
|
||||||
# Switch to nixfmt formatting
|
|
||||||
82c1d22d3dd74fb5da489162a9d4caba9ab3baba
|
|
||||||
75
flake.lock
generated
75
flake.lock
generated
|
|
@ -2,18 +2,16 @@
|
||||||
"nodes": {
|
"nodes": {
|
||||||
"dream2nix": {
|
"dream2nix": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"nixpkgs": [
|
"nixpkgs": "nixpkgs",
|
||||||
"nixpkgs"
|
|
||||||
],
|
|
||||||
"purescript-overlay": "purescript-overlay",
|
"purescript-overlay": "purescript-overlay",
|
||||||
"pyproject-nix": "pyproject-nix"
|
"pyproject-nix": "pyproject-nix"
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1763413832,
|
"lastModified": 1735160684,
|
||||||
"narHash": "sha256-dkqBwDXiv8MPoFyIvOuC4bVubAP+TlVZUkVMB78TTSg=",
|
"narHash": "sha256-n5CwhmqKxifuD4Sq4WuRP/h5LO6f23cGnSAuJemnd/4=",
|
||||||
"owner": "nix-community",
|
"owner": "nix-community",
|
||||||
"repo": "dream2nix",
|
"repo": "dream2nix",
|
||||||
"rev": "5658fba3a0b6b7d5cb0460b949651f64f644a743",
|
"rev": "8ce6284ff58208ed8961681276f82c2f8f978ef4",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
|
@ -30,11 +28,11 @@
|
||||||
"rust-analyzer-src": "rust-analyzer-src"
|
"rust-analyzer-src": "rust-analyzer-src"
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1763621140,
|
"lastModified": 1737181903,
|
||||||
"narHash": "sha256-nx0zy/+yR57FwloXmatf3CaXgzA4zJqIFbplnpaKn/Y=",
|
"narHash": "sha256-lvp77MhGzSN+ICd0MugppCjQR6cmlM2iAC5cjy2ZsaA=",
|
||||||
"owner": "nix-community",
|
"owner": "nix-community",
|
||||||
"repo": "fenix",
|
"repo": "fenix",
|
||||||
"rev": "d4e14d370b4763c67ea02a39f01f5366297d61cb",
|
"rev": "ac79bb490b8c1af4bbc587b84c76f9527d6b14f7",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
|
@ -61,15 +59,34 @@
|
||||||
},
|
},
|
||||||
"nixpkgs": {
|
"nixpkgs": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1763334038,
|
"lastModified": 1729850857,
|
||||||
"narHash": "sha256-3FzFzhmeuKK2dLv6pm6rC1QTcukVe+xcLpKOrE5Fx5g=",
|
"narHash": "sha256-WvLXzNNnnw+qpFOmgaM3JUlNEH+T4s22b5i2oyyCpXE=",
|
||||||
"rev": "4c8cdd5b1a630e8f72c9dd9bf582b1afb3127d2c",
|
"owner": "NixOS",
|
||||||
"type": "tarball",
|
"repo": "nixpkgs",
|
||||||
"url": "https://releases.nixos.org/nixos/25.05/nixos-25.05.812880.4c8cdd5b1a63/nixexprs.tar.xz?lastModified=1763334038&rev=4c8cdd5b1a630e8f72c9dd9bf582b1afb3127d2c"
|
"rev": "41dea55321e5a999b17033296ac05fe8a8b5a257",
|
||||||
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
"type": "tarball",
|
"owner": "NixOS",
|
||||||
"url": "https://channels.nixos.org/nixos-25.05/nixexprs.tar.xz"
|
"ref": "nixpkgs-unstable",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"nixpkgs_2": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1737165118,
|
||||||
|
"narHash": "sha256-s40Kk/OulP3J/1JvC3VT16U4r/Xw6Qdi7SRw3LYkPWs=",
|
||||||
|
"owner": "nixos",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"rev": "6a3ae7a5a12fb8cac2d59d7df7cbd95f9b2f0566",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "nixos",
|
||||||
|
"ref": "nixos-24.11",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"purescript-overlay": {
|
"purescript-overlay": {
|
||||||
|
|
@ -96,22 +113,18 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"pyproject-nix": {
|
"pyproject-nix": {
|
||||||
"inputs": {
|
"flake": false,
|
||||||
"nixpkgs": [
|
|
||||||
"dream2nix",
|
|
||||||
"nixpkgs"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1752481895,
|
"lastModified": 1702448246,
|
||||||
"narHash": "sha256-luVj97hIMpCbwhx3hWiRwjP2YvljWy8FM+4W9njDhLA=",
|
"narHash": "sha256-hFg5s/hoJFv7tDpiGvEvXP0UfFvFEDgTdyHIjDVHu1I=",
|
||||||
"owner": "pyproject-nix",
|
"owner": "davhau",
|
||||||
"repo": "pyproject.nix",
|
"repo": "pyproject.nix",
|
||||||
"rev": "16ee295c25107a94e59a7fc7f2e5322851781162",
|
"rev": "5a06a2697b228c04dd2f35659b4b659ca74f7aeb",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
"owner": "pyproject-nix",
|
"owner": "davhau",
|
||||||
|
"ref": "dream2nix",
|
||||||
"repo": "pyproject.nix",
|
"repo": "pyproject.nix",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
|
|
@ -120,17 +133,17 @@
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"dream2nix": "dream2nix",
|
"dream2nix": "dream2nix",
|
||||||
"fenix": "fenix",
|
"fenix": "fenix",
|
||||||
"nixpkgs": "nixpkgs"
|
"nixpkgs": "nixpkgs_2"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"rust-analyzer-src": {
|
"rust-analyzer-src": {
|
||||||
"flake": false,
|
"flake": false,
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1763555010,
|
"lastModified": 1737140097,
|
||||||
"narHash": "sha256-SG8PRrLir8RkXdyBm/NnuUo3WqS7HW6ltJLZnAWjBjA=",
|
"narHash": "sha256-m4SN8DeKzsP10EQFS7+2zgGfCrMhTfTt1H0QRNesD08=",
|
||||||
"owner": "rust-lang",
|
"owner": "rust-lang",
|
||||||
"repo": "rust-analyzer",
|
"repo": "rust-analyzer",
|
||||||
"rev": "636c3aa24ec6762347c334c030b5034c351d6e05",
|
"rev": "f61bfa4d7feb84d07538d361fe77d34a29e3b375",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
|
|
||||||
38
flake.nix
38
flake.nix
|
|
@ -2,11 +2,8 @@
|
||||||
description = "tlater.net web server";
|
description = "tlater.net web server";
|
||||||
|
|
||||||
inputs = {
|
inputs = {
|
||||||
nixpkgs.url = "https://channels.nixos.org/nixos-25.05/nixexprs.tar.xz";
|
nixpkgs.url = "github:nixos/nixpkgs/nixos-24.11";
|
||||||
dream2nix = {
|
dream2nix.url = "github:nix-community/dream2nix";
|
||||||
url = "github:nix-community/dream2nix";
|
|
||||||
inputs.nixpkgs.follows = "nixpkgs";
|
|
||||||
};
|
|
||||||
|
|
||||||
fenix = {
|
fenix = {
|
||||||
url = "github:nix-community/fenix";
|
url = "github:nix-community/fenix";
|
||||||
|
|
@ -14,22 +11,19 @@
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
outputs =
|
outputs = {
|
||||||
{
|
|
||||||
self,
|
self,
|
||||||
nixpkgs,
|
nixpkgs,
|
||||||
dream2nix,
|
dream2nix,
|
||||||
fenix,
|
fenix,
|
||||||
}:
|
}: let
|
||||||
let
|
|
||||||
# At the moment, we only deploy to x86_64-linux. Update when we
|
# At the moment, we only deploy to x86_64-linux. Update when we
|
||||||
# care about another platform.
|
# care about another platform.
|
||||||
system = "x86_64-linux";
|
system = "x86_64-linux";
|
||||||
pkgs = nixpkgs.legacyPackages.${system};
|
pkgs = nixpkgs.legacyPackages.${system};
|
||||||
fenixPkgs = fenix.packages.${system};
|
fenixPkgs = fenix.packages.${system};
|
||||||
ownPkgs = self.packages.${system};
|
ownPkgs = self.packages.${system};
|
||||||
in
|
in {
|
||||||
{
|
|
||||||
packages.${system} = dream2nix.lib.importPackages {
|
packages.${system} = dream2nix.lib.importPackages {
|
||||||
projectRoot = ./.;
|
projectRoot = ./.;
|
||||||
projectRootFile = "flake.nix";
|
projectRootFile = "flake.nix";
|
||||||
|
|
@ -41,25 +35,19 @@
|
||||||
};
|
};
|
||||||
|
|
||||||
apps.${system} = {
|
apps.${system} = {
|
||||||
default =
|
default = let
|
||||||
let
|
|
||||||
inherit (ownPkgs) server templates;
|
inherit (ownPkgs) server templates;
|
||||||
inherit (pkgs) writeShellScript;
|
inherit (pkgs) writeShellScript;
|
||||||
in
|
in {
|
||||||
{
|
|
||||||
type = "app";
|
type = "app";
|
||||||
program = builtins.toString (
|
program = builtins.toString (writeShellScript "tlaternet-webserver" ''
|
||||||
writeShellScript "tlaternet-webserver" ''
|
|
||||||
${server}/bin/tlaternet-webserver --template-directory ${templates}
|
${server}/bin/tlaternet-webserver --template-directory ${templates}
|
||||||
''
|
'');
|
||||||
);
|
|
||||||
};
|
};
|
||||||
|
|
||||||
update =
|
update = let
|
||||||
let
|
|
||||||
update-script = pkgs.callPackage ./nix/update.nix {inherit self;};
|
update-script = pkgs.callPackage ./nix/update.nix {inherit self;};
|
||||||
in
|
in {
|
||||||
{
|
|
||||||
type = "app";
|
type = "app";
|
||||||
program = "${update-script}/bin/update";
|
program = "${update-script}/bin/update";
|
||||||
};
|
};
|
||||||
|
|
@ -85,6 +73,8 @@
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
checks.${system} = import ./nix/checks { inherit self pkgs; };
|
checks.${system} = import ./nix/checks {
|
||||||
|
inherit self pkgs;
|
||||||
|
};
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,8 +1,9 @@
|
||||||
{ pkgs, self }:
|
|
||||||
let
|
|
||||||
callPackage = pkgs.lib.callPackageWith (pkgs // { inherit self; });
|
|
||||||
in
|
|
||||||
{
|
{
|
||||||
|
pkgs,
|
||||||
|
self,
|
||||||
|
}: let
|
||||||
|
callPackage = pkgs.lib.callPackageWith (pkgs // {inherit self;});
|
||||||
|
in {
|
||||||
lintNix = callPackage ./lint-nix.nix {};
|
lintNix = callPackage ./lint-nix.nix {};
|
||||||
openHomepage = callPackage ./open-homepage.nix {};
|
openHomepage = callPackage ./open-homepage.nix {};
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -2,11 +2,10 @@
|
||||||
self,
|
self,
|
||||||
lib,
|
lib,
|
||||||
stdenv,
|
stdenv,
|
||||||
nixfmt-rfc-style,
|
alejandra,
|
||||||
deadnix,
|
deadnix,
|
||||||
statix,
|
statix,
|
||||||
}:
|
}: let
|
||||||
let
|
|
||||||
inherit (lib) sourceFilesBySuffices;
|
inherit (lib) sourceFilesBySuffices;
|
||||||
in
|
in
|
||||||
stdenv.mkDerivation {
|
stdenv.mkDerivation {
|
||||||
|
|
@ -18,14 +17,10 @@ stdenv.mkDerivation {
|
||||||
|
|
||||||
name = "lint-nix";
|
name = "lint-nix";
|
||||||
src = sourceFilesBySuffices self [".nix"];
|
src = sourceFilesBySuffices self [".nix"];
|
||||||
checkInputs = [
|
checkInputs = [alejandra deadnix statix];
|
||||||
nixfmt-rfc-style
|
|
||||||
deadnix
|
|
||||||
statix
|
|
||||||
];
|
|
||||||
checkPhase = ''
|
checkPhase = ''
|
||||||
mkdir -p $out
|
mkdir -p $out
|
||||||
nixfmt --strict --check . | tee $out/nixfmt.log
|
alejandra --check . | tee $out/alejandra.log
|
||||||
deadnix --fail | tee $out/deadnix.log
|
deadnix --fail | tee $out/deadnix.log
|
||||||
statix check | tee $out/statix.log
|
statix check | tee $out/statix.log
|
||||||
'';
|
'';
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,7 @@
|
||||||
{ self, nixosTest }:
|
{
|
||||||
|
self,
|
||||||
|
nixosTest,
|
||||||
|
}:
|
||||||
nixosTest {
|
nixosTest {
|
||||||
name = "open-homepage";
|
name = "open-homepage";
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,14 +1,18 @@
|
||||||
{ self, system }:
|
{
|
||||||
{ config, lib, ... }:
|
self,
|
||||||
let
|
system,
|
||||||
|
}: {
|
||||||
|
config,
|
||||||
|
lib,
|
||||||
|
...
|
||||||
|
}: let
|
||||||
inherit (lib) mkEnableOption mkIf mkOption;
|
inherit (lib) mkEnableOption mkIf mkOption;
|
||||||
inherit (lib.types) str int;
|
inherit (lib.types) str int;
|
||||||
inherit (lib.strings) escapeShellArgs;
|
inherit (lib.strings) escapeShellArgs;
|
||||||
inherit (self.packages.${system}) server templates;
|
inherit (self.packages.${system}) server templates;
|
||||||
|
|
||||||
cfg = config.services.tlaternet-webserver;
|
cfg = config.services.tlaternet-webserver;
|
||||||
in
|
in {
|
||||||
{
|
|
||||||
options = {
|
options = {
|
||||||
services.tlaternet-webserver = {
|
services.tlaternet-webserver = {
|
||||||
enable = mkEnableOption "tlaternet web server";
|
enable = mkEnableOption "tlaternet web server";
|
||||||
|
|
@ -56,21 +60,14 @@ in
|
||||||
ProtectKernelModules = true;
|
ProtectKernelModules = true;
|
||||||
ProtectKernelLogs = true;
|
ProtectKernelLogs = true;
|
||||||
ProtectControlGroups = true;
|
ProtectControlGroups = true;
|
||||||
RestrictAddressFamilies = [
|
RestrictAddressFamilies = ["AF_UNIX" "AF_INET" "AF_INET6"];
|
||||||
"AF_UNIX"
|
|
||||||
"AF_INET"
|
|
||||||
"AF_INET6"
|
|
||||||
];
|
|
||||||
RestrictNamespaces = true;
|
RestrictNamespaces = true;
|
||||||
LockPersonality = true;
|
LockPersonality = true;
|
||||||
MemoryDenyWriteExecute = true;
|
MemoryDenyWriteExecute = true;
|
||||||
RestrictRealtime = true;
|
RestrictRealtime = true;
|
||||||
RestrictSUIDSGID = true;
|
RestrictSUIDSGID = true;
|
||||||
SystemCallArchitectures = "native";
|
SystemCallArchitectures = "native";
|
||||||
SystemCallFilter = [
|
SystemCallFilter = ["@system-service" "~@privileged @resources @setuid @keyring"];
|
||||||
"@system-service"
|
|
||||||
"~@privileged @resources @setuid @keyring"
|
|
||||||
];
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
|
||||||
|
|
@ -6,25 +6,20 @@
|
||||||
git,
|
git,
|
||||||
nix,
|
nix,
|
||||||
yq-go,
|
yq-go,
|
||||||
}:
|
}: let
|
||||||
let
|
|
||||||
selfPackages = self.packages.${system};
|
selfPackages = self.packages.${system};
|
||||||
inherit (selfPackages.server.config.deps) cargo;
|
inherit (selfPackages.server.config.deps) cargo;
|
||||||
inherit (selfPackages.templates.config.deps) npm;
|
inherit (selfPackages.templates.config.deps) npm;
|
||||||
|
|
||||||
npm-check-updates =
|
npm-check-updates =
|
||||||
(builtins.elemAt (lib.attrValues selfPackages.templates.config.nodejs-granular-v3.deps.npm-check-updates) 0)
|
(builtins.elemAt (lib.attrValues
|
||||||
.package-func.result;
|
selfPackages.templates.config.nodejs-granular-v3.deps.npm-check-updates)
|
||||||
|
0)
|
||||||
|
.package-func
|
||||||
|
.result;
|
||||||
in
|
in
|
||||||
writeShellApplication {
|
writeShellApplication {
|
||||||
name = "update";
|
name = "update";
|
||||||
runtimeInputs = [
|
runtimeInputs = [cargo git nix npm npm-check-updates yq-go];
|
||||||
cargo
|
|
||||||
git
|
|
||||||
nix
|
|
||||||
npm
|
|
||||||
npm-check-updates
|
|
||||||
yq-go
|
|
||||||
];
|
|
||||||
text = builtins.readFile ./scripts/update.sh;
|
text = builtins.readFile ./scripts/update.sh;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
891
packages/server/Cargo.lock
generated
891
packages/server/Cargo.lock
generated
File diff suppressed because it is too large
Load diff
|
|
@ -1,26 +1,16 @@
|
||||||
{ dream2nix, lib, ... }:
|
{dream2nix, ...}: {
|
||||||
{
|
|
||||||
imports = [
|
imports = [
|
||||||
dream2nix.modules.dream2nix.rust-cargo-lock
|
dream2nix.modules.dream2nix.rust-cargo-lock
|
||||||
dream2nix.modules.dream2nix.rust-cargo-vendor
|
dream2nix.modules.dream2nix.rust-cargo-vendor
|
||||||
dream2nix.modules.dream2nix.rust-crane
|
dream2nix.modules.dream2nix.rust-crane
|
||||||
];
|
];
|
||||||
|
|
||||||
deps =
|
deps = {fenix, ...}: {
|
||||||
{ fenix, ... }:
|
|
||||||
{
|
|
||||||
deps.cargo = fenix.stable.minimalToolchain;
|
deps.cargo = fenix.stable.minimalToolchain;
|
||||||
};
|
};
|
||||||
|
|
||||||
inherit
|
name = "tlaternet-webserver";
|
||||||
((lib.pipe ./Cargo.toml [
|
version = "0.1.0";
|
||||||
builtins.readFile
|
|
||||||
builtins.fromTOML
|
|
||||||
]).package
|
|
||||||
)
|
|
||||||
name
|
|
||||||
version
|
|
||||||
;
|
|
||||||
|
|
||||||
mkDerivation = {
|
mkDerivation = {
|
||||||
src = ./.;
|
src = ./.;
|
||||||
|
|
|
||||||
|
|
@ -3,24 +3,15 @@
|
||||||
config,
|
config,
|
||||||
lib,
|
lib,
|
||||||
...
|
...
|
||||||
}:
|
}: {
|
||||||
{
|
|
||||||
imports = [
|
imports = [
|
||||||
dream2nix.modules.dream2nix.nodejs-package-json-v3
|
dream2nix.modules.dream2nix.nodejs-package-json-v3
|
||||||
dream2nix.modules.dream2nix.nodejs-granular-v3
|
dream2nix.modules.dream2nix.nodejs-granular-v3
|
||||||
dream2nix.modules.dream2nix.nodejs-devshell-v3
|
dream2nix.modules.dream2nix.nodejs-devshell-v3
|
||||||
];
|
];
|
||||||
|
|
||||||
deps =
|
deps = {nixpkgs, ...}: {
|
||||||
{ nixpkgs, ... }:
|
inherit (nixpkgs) pkg-config runCommandLocal rsync vips yj;
|
||||||
{
|
|
||||||
inherit (nixpkgs)
|
|
||||||
pkg-config
|
|
||||||
runCommandLocal
|
|
||||||
rsync
|
|
||||||
vips
|
|
||||||
yj
|
|
||||||
;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
name = "tlaternet-templates";
|
name = "tlaternet-templates";
|
||||||
|
|
|
||||||
File diff suppressed because it is too large
Load diff
1
packages/templates/lock.json
Symbolic link
1
packages/templates/lock.json
Symbolic link
|
|
@ -0,0 +1 @@
|
||||||
|
package-lock.json
|
||||||
11668
packages/templates/package-lock.json
generated
11668
packages/templates/package-lock.json
generated
File diff suppressed because it is too large
Load diff
|
|
@ -7,59 +7,55 @@ private: true
|
||||||
|
|
||||||
dependencies:
|
dependencies:
|
||||||
# Libraries
|
# Libraries
|
||||||
gl-matrix: ^3.4.4 # To help with 3D math in WebGL code
|
gl-matrix: ^3.4.3 # To help with 3D math in WebGL code
|
||||||
classnames: ^2.5.1 # To manage CSS class names in react code
|
classnames: ^2.5.1 # To manage CSS class names in react code
|
||||||
|
|
||||||
# Fonts
|
# Fonts
|
||||||
hack-font: ^3.3.0
|
hack-font: ^3.3.0
|
||||||
'@fontsource/arimo': ^5.2.8
|
'@fontsource/arimo': ^5.0.18
|
||||||
'@fontsource/nunito': ^5.2.7
|
'@fontsource/nunito': ^5.0.16
|
||||||
'@fortawesome/fontawesome-free': ^7.1.0
|
'@fortawesome/fontawesome-free': ^6.5.1
|
||||||
|
|
||||||
# Frameworks for static content
|
# Frameworks for static content
|
||||||
bulma: ^1.0.4
|
bulma: ^0.9.4
|
||||||
|
|
||||||
# React-redux stuff
|
# React-redux stuff
|
||||||
react: ^19.2.0
|
react: ^18.2.0
|
||||||
react-dom: ^19.2.0
|
react-dom: ^18.2.0
|
||||||
react-use-error-boundary: ^3.0.0 # TODO(tlater): Remove when react implement their own
|
react-use-error-boundary: ^3.0.0 # TODO(tlater): Remove when react implement their own
|
||||||
redux: ^5.0.1
|
redux: ^5.0.1
|
||||||
'@reduxjs/toolkit': ^2.10.1
|
'@reduxjs/toolkit': ^2.0.1
|
||||||
react-redux: ^9.2.0
|
react-redux: ^9.0.4
|
||||||
|
|
||||||
devDependencies:
|
devDependencies:
|
||||||
# Parcel & plugins
|
# Parcel & plugins
|
||||||
parcel: ^2.16.1
|
parcel: ^2.10.3
|
||||||
'@parcel/transformer-sass': ^2.16.1
|
'@parcel/transformer-sass': ^2.10.3
|
||||||
'@parcel/transformer-glsl': ^2.16.1
|
'@parcel/transformer-glsl': ^2.10.3
|
||||||
|
|
||||||
# Build tools
|
# Build tools
|
||||||
typescript: ^5.9.3
|
typescript: ^5.3.3
|
||||||
sass: ^1.94.2
|
sass: ^1.69.6
|
||||||
posthtml-extend: ^0.6.5
|
posthtml-extend: ^0.6.5
|
||||||
posthtml-favicons: ^1.4.0
|
posthtml-favicons: ^1.4.0
|
||||||
posthtml-include: ^2.0.1
|
posthtml-include: ^1.7.4
|
||||||
posthtml-markdownit: ^3.1.2
|
posthtml-markdownit: ^1.3.1
|
||||||
|
|
||||||
'@babel/preset-env': ^7.28.5
|
'@babel/preset-env': ^7.23.7
|
||||||
|
|
||||||
'@fontsource-utils/scss': ^0.2.2
|
|
||||||
'@fontsource-variable/arimo': ^5.2.8
|
|
||||||
'@fontsource-variable/nunito': ^5.2.7
|
|
||||||
|
|
||||||
# Type shims
|
# Type shims
|
||||||
'@types/react-dom': ^19.2.3
|
'@types/react-dom': ^18.2.18
|
||||||
'@types/react-redux': ^7.1.34
|
'@types/react-redux': ^7.1.33
|
||||||
|
|
||||||
# Dev tools
|
# Dev tools
|
||||||
npm-check-updates: ^19.1.2
|
npm-check-updates: ^16.14.12
|
||||||
prettier: ^3.6.2
|
prettier: ^3.1.1
|
||||||
typescript-language-server: ^5.1.3
|
typescript-language-server: ^4.2.0
|
||||||
typescript-eslint-language-service: ^5.0.5
|
typescript-eslint-language-service: ^5.0.5
|
||||||
eslint: ^9.39.1
|
eslint: ^8.56.0
|
||||||
'@typescript-eslint/parser': ^8.47.0
|
'@typescript-eslint/parser': ^6.17.0
|
||||||
'@typescript-eslint/eslint-plugin': ^8.47.0
|
'@typescript-eslint/eslint-plugin': ^6.17.0
|
||||||
vscode-langservers-extracted: ^4.10.0
|
vscode-langservers-extracted: ^4.8.0
|
||||||
|
|
||||||
scripts:
|
scripts:
|
||||||
# Dev workflow
|
# Dev workflow
|
||||||
|
|
@ -90,23 +86,23 @@ posthtml:
|
||||||
root: src
|
root: src
|
||||||
posthtml-include:
|
posthtml-include:
|
||||||
root: src
|
root: src
|
||||||
# posthtml-favicons:
|
posthtml-favicons:
|
||||||
# root: src
|
root: src
|
||||||
# outDir: ./dist/
|
outDir: ./dist/
|
||||||
# configuration:
|
configuration:
|
||||||
# appName: tlater.net
|
appName: tlater.net
|
||||||
# appShortName: tlater.net
|
appShortName: tlater.net
|
||||||
# appDescription: tlater's home page
|
appDescription: tlater's home page
|
||||||
# developerName: Tristan Daniël Maat
|
developerName: Tristan Daniël Maat
|
||||||
# developerURL: https://tlater.net
|
developerURL: https://tlater.net
|
||||||
# dir: auto
|
dir: auto
|
||||||
# lang: en-US
|
lang: en-US
|
||||||
# background: '#0f0f0f'
|
background: '#0f0f0f'
|
||||||
# theme_color: '#99d1ce'
|
theme_color: '#99d1ce'
|
||||||
# appleStatusBarStyle: black-translucent
|
appleStatusBarStyle: black-translucent
|
||||||
# display: browser
|
display: browser
|
||||||
# orientation: any
|
orientation: any
|
||||||
# start_url: https://tlater.net
|
start_url: https://tlater.net
|
||||||
# version: "1.0"
|
version: "1.0"
|
||||||
# icons:
|
icons:
|
||||||
# favicons: true
|
favicons: true
|
||||||
|
|
|
||||||
|
|
@ -1,52 +1,45 @@
|
||||||
@use "sass:color";
|
@use "sass:color";
|
||||||
@use "./_fonts";
|
@use "./_fonts";
|
||||||
|
|
||||||
|
@import "~/node_modules/bulma/sass/utilities/initial-variables.sass";
|
||||||
|
@import "~/node_modules/bulma/sass/utilities/functions.sass";
|
||||||
|
|
||||||
$black: #0f0f0f;
|
$black: #0f0f0f;
|
||||||
$green: #2aa889;
|
|
||||||
$grey-light: #dddddd;
|
|
||||||
$primary: #99d1ce;
|
|
||||||
$text: $grey-light;
|
|
||||||
$grey-darker: #11151c;
|
$grey-darker: #11151c;
|
||||||
|
$grey-light: #dddddd;
|
||||||
|
$white: #ffffff;
|
||||||
|
|
||||||
@use "bulma/sass" with (
|
$red: #dc322f;
|
||||||
$family-sans-serif: "Nunito",
|
$orange: #d26937;
|
||||||
$family-monospace: "Hack",
|
$yellow: #b58900;
|
||||||
|
$blue: #195466;
|
||||||
|
$cyan: #599cab;
|
||||||
|
$green: #2aa889;
|
||||||
|
|
||||||
$black: $black,
|
$primary: #99d1ce;
|
||||||
$grey-darker: $grey-darker,
|
$link: $green;
|
||||||
$grey-light: $grey-light,
|
$link-hover: color.scale($green, $lightness: +10%);
|
||||||
$white: #ffffff,
|
$link-active: color.scale($green, $lightness: +10%);
|
||||||
|
$link-focus: color.scale($green, $lightness: +10%);
|
||||||
|
$input-color: $grey-light;
|
||||||
|
$input-placeholder-color: $grey-light; // Some opacity is applied to this
|
||||||
|
|
||||||
$red: #dc322f,
|
$weight-normal: 400;
|
||||||
$orange: #d26937,
|
|
||||||
$yellow: #b58900,
|
|
||||||
$blue: #195466,
|
|
||||||
$cyan: #599cab,
|
|
||||||
$green: $green,
|
|
||||||
|
|
||||||
$primary: $primary,
|
$scheme-main: $black;
|
||||||
$link: $green,
|
|
||||||
// $link-hover: color.scale($green, $lightness: +10%),
|
|
||||||
// $link-active: color.scale($green, $lightness: +10%),
|
|
||||||
// $link-focus: color.scale($green, $lightness: +10%),
|
|
||||||
// $input-color: $grey-light,
|
|
||||||
$input-placeholder-color: $grey-light, // Some opacity is applied to this
|
|
||||||
|
|
||||||
$weight-normal: 400,
|
$family-sans-serif: Nunito, $family-sans-serif;
|
||||||
|
$family-monospace: Hack, $family-monospace;
|
||||||
|
|
||||||
$scheme-main: $black,
|
$text: $grey-light;
|
||||||
|
$text-strong: $primary;
|
||||||
|
$label-color: $text;
|
||||||
|
|
||||||
$text: $grey-light,
|
$content-heading-color: $text;
|
||||||
$text-strong: $primary,
|
$hr-background-color: $grey-light;
|
||||||
$label-color: $text,
|
$hr-height: 1px;
|
||||||
|
|
||||||
$content-heading-color: $text,
|
|
||||||
$hr-background-color: $grey-light,
|
|
||||||
$hr-height: 1px,
|
|
||||||
|
|
||||||
$pre-background: $grey-darker
|
|
||||||
);
|
|
||||||
|
|
||||||
|
$pre-background: $grey-darker;
|
||||||
|
|
||||||
@import "~/node_modules/bulma";
|
@import "~/node_modules/bulma";
|
||||||
@import "./_navbar";
|
@import "./_navbar";
|
||||||
|
|
|
||||||
|
|
@ -1,11 +1,7 @@
|
||||||
@use "npm:@fontsource-utils/scss/src/mixins.scss" as fontsource with (
|
@use "~/node_modules/@fontsource/nunito/scss/mixins" as Nunito;
|
||||||
$display: auto
|
@use "~/node_modules/@fontsource/arimo/scss/mixins" as Arimo;
|
||||||
);
|
|
||||||
@use "npm:@fontsource-variable/arimo/scss/metadata.scss" as arimo;
|
|
||||||
@use "npm:@fontsource-variable/nunito/scss/metadata.scss" as nunito;
|
|
||||||
|
|
||||||
@include fontsource.faces(
|
@include Nunito.faces(
|
||||||
$metadata: nunito.$metadata,
|
|
||||||
$weights: (
|
$weights: (
|
||||||
300,
|
300,
|
||||||
400,
|
400,
|
||||||
|
|
@ -13,36 +9,36 @@
|
||||||
600,
|
600,
|
||||||
700,
|
700,
|
||||||
),
|
),
|
||||||
$subsets: latin,
|
$display: auto,
|
||||||
$styles: (
|
$styles: (
|
||||||
normal,
|
normal,
|
||||||
italic,
|
italic,
|
||||||
),
|
),
|
||||||
$family: "Nunito",
|
$directory: "npm:@fontsource/nunito/files"
|
||||||
$directory: "npm:@fontsource-variable/nunito/files"
|
|
||||||
);
|
);
|
||||||
|
|
||||||
@include fontsource.faces(
|
@include Arimo.faces(
|
||||||
$metadata: arimo.$metadata,
|
|
||||||
$weights: 400,
|
$weights: 400,
|
||||||
$subsets: latin,
|
$display: auto,
|
||||||
$styles: normal,
|
$styles: normal,
|
||||||
$family: "Arimo",
|
$directory: "npm:@fontsource/arimo/files"
|
||||||
$directory: "npm:@fontsource-variable/arimo/files"
|
|
||||||
);
|
);
|
||||||
|
|
||||||
// Hack *does* come with its own CSS, but it's broken and hasn't seen
|
// Hack *does* come with its own CSS, but it's broken and hasn't seen
|
||||||
// a release since https://github.com/source-foundry/Hack/issues/467
|
// a release since https://github.com/source-foundry/Hack/issues/467
|
||||||
// was resolved.
|
// was resolved.
|
||||||
|
|
||||||
$variants: regular normal, bold normal, italic italic, bolditalic italic;
|
$variants: regular 400 normal, bold 700 normal, italic 400 italic,
|
||||||
|
bolditalic 700 italic;
|
||||||
|
|
||||||
@each $name, $style in $variants {
|
@each $name, $weight, $style in $variants {
|
||||||
@font-face {
|
@font-face {
|
||||||
font-family: "Hack";
|
font-family: "Hack";
|
||||||
|
src: url("npm:hack-font/build/web/fonts/hack-#{$name}-subset.woff2?sha=3114f1256")
|
||||||
|
format("woff2"),
|
||||||
|
url("npm:hack-font/build/web/fonts/hack-#{$name}-subset.woff?sha=3114f1256")
|
||||||
|
format("woff");
|
||||||
|
font-weight: $weight;
|
||||||
font-style: $style;
|
font-style: $style;
|
||||||
font-display: auto;
|
|
||||||
font-weight: 400 700;
|
|
||||||
src: url("npm:hack-font/build/web/fonts/hack-#{$name}-subset.woff2") format("woff2-variations");
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -5,17 +5,17 @@
|
||||||
font-family: Arimo;
|
font-family: Arimo;
|
||||||
|
|
||||||
&:hover {
|
&:hover {
|
||||||
// background-color: $dark !important;
|
background-color: $dark !important;
|
||||||
// color: $white !important;
|
color: $white !important;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
& .navbar-start > .navbar-item {
|
& .navbar-start > .navbar-item {
|
||||||
// color: rgba($white, 0.75);
|
color: rgba($white, 0.75);
|
||||||
|
|
||||||
&:hover {
|
&:hover {
|
||||||
// background-color: $dark !important;
|
background-color: $dark !important;
|
||||||
// color: $white !important;
|
color: $white !important;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,9 +1,7 @@
|
||||||
@use "npm:@fortawesome/fontawesome-free/scss/_variables.scss" with (
|
$fa-font-path: "npm:@fortawesome/fontawesome-free/webfonts";
|
||||||
$font-path: "npm:@fortawesome/fontawesome-free/webfonts",
|
|
||||||
);
|
|
||||||
|
|
||||||
@use "npm:@fortawesome/fontawesome-free/scss/fontawesome";
|
@import "~/node_modules/@fortawesome/fontawesome-free/scss/fontawesome";
|
||||||
@use "npm:@fortawesome/fontawesome-free/scss/solid";
|
@import "~/node_modules/@fortawesome/fontawesome-free/scss/solid";
|
||||||
|
|
||||||
.is-border-box {
|
.is-border-box {
|
||||||
box-sizing: border-box !important;
|
box-sizing: border-box !important;
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue