generated from me/nix-flake-typst-template
419 lines
11 KiB
Typst
419 lines
11 KiB
Typst
// SPDX-FileCopyrightText: 2025 Ethan Reece <contact@ethanreece.com>
|
|
//
|
|
// SPDX-License-Identifier: MIT
|
|
|
|
#import "@preview/linguify:0.4.2": linguify
|
|
#import "../../../base/lib.typ": item-heading
|
|
#import "../../../base/months/lib.typ": (
|
|
April, August, December, January, July, June, March, May, Present,
|
|
)
|
|
#import "../categories/lib.typ": (
|
|
Course_Group_Project, Course_Group_Projects, Course_Project, Course_Projects,
|
|
Productivity, Research_Lab_Project, Robotics_Team_Project, Senior_Project,
|
|
)
|
|
#import "../education/lib.typ": cvcs-title, utd-title
|
|
#import "../experience/lib.typ": syssec-name, team1790-name
|
|
#import "../skills/lib.typ": (
|
|
C, CSS, C_Sharp_WPF, Cloudflare, Debian, Docker, Docker_Compose, Dokku,
|
|
ExpressJS, GDB, GNU_Make, Git, GitHub, GitLab, Guix, Hetzner,
|
|
JavaScript_ExpressJS, LaTeX, LaTeX_TikZ, Linux, MIPS, MongoDB, MySQL, Nix,
|
|
NixFlakes_devenv, NixFlakes_flake-parts, NixOS, Nix_Flakes, PHP, Pijul,
|
|
PostgreSQL, Proxmox, Python, Python_pwntools, React_SigmaJS, Rust,
|
|
Rust_Tokio_Serde, SOPS, TCP, Tailwind_CSS, Terraform, TypeScript, Typst,
|
|
Valgrind, Verilog, flake-parts, x86,
|
|
)
|
|
|
|
#let lang-data = toml("lang.toml")
|
|
#let l(content) = linguify(content, from: lang-data)
|
|
|
|
#let armcfi-category = Research_Lab_Project
|
|
#let armcfi-location = syssec-name
|
|
#let armcfi-name = l("armcfi")
|
|
#let armcfi-skills = (
|
|
GNU_Make,
|
|
Python,
|
|
NixFlakes_flake-parts,
|
|
Valgrind,
|
|
Linux,
|
|
GitLab,
|
|
)
|
|
#let armcfi-timeframe = [#July 2025 -- #Present]
|
|
|
|
#let armcfi(
|
|
item-heading-above: 0em,
|
|
item-heading-below: 0em,
|
|
) = item-heading(
|
|
title: armcfi-name,
|
|
subtitle: armcfi-category,
|
|
timeframe: armcfi-timeframe,
|
|
location: armcfi-location,
|
|
skills: armcfi-skills,
|
|
above: item-heading-above,
|
|
below: item-heading-below,
|
|
)
|
|
|
|
#let cs2340-mips-category = Course_Project
|
|
#let cs2340-mips-location = utd-title
|
|
#let cs2340-mips-name = l("cs2340-mips")
|
|
#let cs2340-mips-skills = (MIPS,)
|
|
#let cs2340-mips-timeframe = [#January -- #May 2023]
|
|
|
|
#let cs2340-mips(
|
|
item-heading-above: 0em,
|
|
item-heading-below: 0em,
|
|
) = item-heading(
|
|
title: cs2340-mips-name,
|
|
subtitle: cs2340-mips-category,
|
|
timeframe: cs2340-mips-timeframe,
|
|
skills: cs2340-mips-skills,
|
|
location: cs2340-mips-location,
|
|
above: item-heading-above,
|
|
below: item-heading-below,
|
|
)
|
|
|
|
#let cs3377-linux-category = Course_Projects
|
|
#let cs3377-linux-location = utd-title
|
|
#let cs3377-linux-name = l("cs3377-linux")
|
|
#let cs3377-linux-skills = (C, Linux)
|
|
#let cs3377-linux-timeframe = [#August -- #December 2023]
|
|
|
|
#let cs3377-linux(
|
|
item-heading-above: 0em,
|
|
item-heading-below: 0em,
|
|
) = item-heading(
|
|
title: cs3377-linux-name,
|
|
subtitle: cs3377-linux-category,
|
|
timeframe: cs3377-linux-timeframe,
|
|
skills: cs3377-linux-skills,
|
|
location: cs3377-linux-location,
|
|
above: item-heading-above,
|
|
below: item-heading-below,
|
|
)
|
|
|
|
#let cs4341-digitallogic-category = Course_Group_Projects
|
|
#let cs4341-digitallogic-location = utd-title
|
|
#let cs4341-digitallogic-name = l("cs4341-digitallogic")
|
|
#let cs4341-digitallogic-skills = (Verilog, Python)
|
|
#let cs4341-digitallogic-timeframe = [#January -- #May 2024]
|
|
|
|
#let cs4341-digitallogic(
|
|
item-heading-above: 0em,
|
|
item-heading-below: 0em,
|
|
) = item-heading(
|
|
title: cs4341-digitallogic-name,
|
|
subtitle: cs4341-digitallogic-category,
|
|
timeframe: cs4341-digitallogic-timeframe,
|
|
skills: cs4341-digitallogic-skills,
|
|
location: cs4341-digitallogic-location,
|
|
above: item-heading-above,
|
|
below: item-heading-below,
|
|
)
|
|
|
|
#let cs4347-database-category = Course_Project
|
|
#let cs4347-database-location = utd-title
|
|
#let cs4347-database-name = l("cs4347-database")
|
|
#let cs4347-database-skills = (
|
|
PHP,
|
|
MySQL,
|
|
Tailwind_CSS,
|
|
NixFlakes_devenv,
|
|
LaTeX_TikZ,
|
|
Guix,
|
|
)
|
|
#let cs4347-database-timeframe = [#August -- #December 2024]
|
|
|
|
#let cs4347-database(
|
|
item-heading-above: 0em,
|
|
item-heading-below: 0em,
|
|
) = item-heading(
|
|
title: cs4347-database-name,
|
|
subtitle: cs4347-database-category,
|
|
timeframe: cs4347-database-timeframe,
|
|
skills: cs4347-database-skills,
|
|
location: cs4347-database-location,
|
|
above: item-heading-above,
|
|
below: item-heading-below,
|
|
)
|
|
|
|
#let cs4348-computer-category = Course_Project
|
|
#let cs4348-computer-location = utd-title
|
|
#let cs4348-computer-name = l("cs4348-computer")
|
|
#let cs4348-computer-skills = (C, Linux, Pijul)
|
|
#let cs4348-computer-timeframe = [#January -- #May 2024]
|
|
|
|
#let cs4348-computer(
|
|
item-heading-above: 0em,
|
|
item-heading-below: 0em,
|
|
) = item-heading(
|
|
title: cs4348-computer-name,
|
|
subtitle: cs4348-computer-category,
|
|
timeframe: cs4348-computer-timeframe,
|
|
skills: cs4348-computer-skills,
|
|
location: cs4348-computer-location,
|
|
above: item-heading-above,
|
|
below: item-heading-below,
|
|
)
|
|
|
|
#let cs4348-mutex-category = Course_Project
|
|
#let cs4348-mutex-location = utd-title
|
|
#let cs4348-mutex-name = l("cs4348-mutex")
|
|
#let cs4348-mutex-skills = (C, Linux)
|
|
#let cs4348-mutex-timeframe = [#January -- #May 2024]
|
|
|
|
#let cs4348-mutex(
|
|
item-heading-above: 0em,
|
|
item-heading-below: 0em,
|
|
) = item-heading(
|
|
title: cs4348-mutex-name,
|
|
subtitle: cs4348-mutex-category,
|
|
timeframe: cs4348-mutex-timeframe,
|
|
skills: cs4348-mutex-skills,
|
|
location: cs4348-mutex-location,
|
|
above: item-heading-above,
|
|
below: item-heading-below,
|
|
)
|
|
|
|
#let cs4348-scheduling-category = Course_Project
|
|
#let cs4348-scheduling-location = utd-title
|
|
#let cs4348-scheduling-name = l("cs4348-scheduling")
|
|
#let cs4348-scheduling-skills = (C, Linux)
|
|
#let cs4348-scheduling-timeframe = [#January -- #May 2024]
|
|
|
|
#let cs4348-scheduling(
|
|
item-heading-above: 0em,
|
|
item-heading-below: 0em,
|
|
) = item-heading(
|
|
title: cs4348-scheduling-name,
|
|
subtitle: cs4348-scheduling-category,
|
|
timeframe: cs4348-scheduling-timeframe,
|
|
skills: cs4348-scheduling-skills,
|
|
location: cs4348-scheduling-location,
|
|
above: item-heading-above,
|
|
below: item-heading-below,
|
|
)
|
|
|
|
#let cs4459-hacking-category = Course_Projects
|
|
#let cs4459-hacking-location = utd-title
|
|
#let cs4459-hacking-name = l("cs4459-hacking")
|
|
#let cs4459-hacking-skills = (Python_pwntools, x86, GDB, Linux, Git, C)
|
|
#let cs4459-hacking-timeframe = [#January -- #May 2025]
|
|
|
|
#let cs4459-hacking(
|
|
item-heading-above: 0em,
|
|
item-heading-below: 0em,
|
|
) = item-heading(
|
|
title: cs4459-hacking-name,
|
|
subtitle: cs4459-hacking-category,
|
|
timeframe: cs4459-hacking-timeframe,
|
|
skills: cs4459-hacking-skills,
|
|
location: cs4459-hacking-location,
|
|
above: item-heading-above,
|
|
below: item-heading-below,
|
|
)
|
|
|
|
#let cs6378-database-category = Course_Group_Project
|
|
#let cs6378-database-location = utd-title
|
|
#let cs6378-database-name = l("database")
|
|
#let cs6378-database-name-cs6378 = l("cs6378-database")
|
|
#let cs6378-database-skills = (
|
|
Rust_Tokio_Serde,
|
|
Nix_Flakes,
|
|
TCP,
|
|
Linux,
|
|
GitHub,
|
|
LaTeX,
|
|
)
|
|
#let cs6378-database-timeframe = [#April -- #May 2025]
|
|
|
|
#let cs6378-database(
|
|
item-heading-above: 0em,
|
|
item-heading-below: 0em,
|
|
course: true,
|
|
) = item-heading(
|
|
title: if course {
|
|
cs6378-database-name-cs6378
|
|
} else {
|
|
cs6378-database-name
|
|
},
|
|
subtitle: cs6378-database-category,
|
|
timeframe: cs6378-database-timeframe,
|
|
skills: cs6378-database-skills,
|
|
location: cs6378-database-location,
|
|
above: item-heading-above,
|
|
below: item-heading-below,
|
|
)
|
|
|
|
#let cs6378-ordering-category = Course_Projects
|
|
#let cs6378-ordering-location = utd-title
|
|
#let cs6378-ordering-name = l("cs6378-ordering")
|
|
#let cs6378-ordering-skills = (
|
|
Rust,
|
|
Nix_Flakes,
|
|
TCP,
|
|
LaTeX_TikZ,
|
|
Guix,
|
|
Linux,
|
|
Git,
|
|
)
|
|
#let cs6378-ordering-timeframe = [#January -- #April 2025]
|
|
|
|
#let cs6378-ordering(
|
|
item-heading-above: 0em,
|
|
item-heading-below: 0em,
|
|
) = item-heading(
|
|
title: cs6378-ordering-name,
|
|
subtitle: cs6378-ordering-category,
|
|
timeframe: cs6378-ordering-timeframe,
|
|
skills: cs6378-ordering-skills,
|
|
location: cs6378-ordering-location,
|
|
above: item-heading-above,
|
|
below: item-heading-below,
|
|
)
|
|
|
|
#let scoretracker-category = Senior_Project
|
|
#let scoretracker-location = cvcs-title
|
|
#let scoretracker-name = l("scoretracker")
|
|
#let scoretracker-skills = (
|
|
JavaScript_ExpressJS,
|
|
CSS,
|
|
PostgreSQL,
|
|
GitLab,
|
|
Dokku,
|
|
)
|
|
#let scoretracker-timeframe = [#May 2021 -- #March 2022]
|
|
|
|
#let scoretracker(
|
|
item-heading-above: 0em,
|
|
item-heading-below: 0em,
|
|
) = item-heading(
|
|
title: scoretracker-name,
|
|
subtitle: scoretracker-category,
|
|
timeframe: scoretracker-timeframe,
|
|
skills: scoretracker-skills,
|
|
location: scoretracker-location,
|
|
above: item-heading-above,
|
|
below: item-heading-below,
|
|
)
|
|
|
|
#let provviz-category = Research_Lab_Project
|
|
#let provviz-location = syssec-name
|
|
#let provviz-name = l("provviz")
|
|
#let provviz-skills = (
|
|
TypeScript,
|
|
React_SigmaJS,
|
|
Tailwind_CSS,
|
|
ExpressJS,
|
|
Docker_Compose,
|
|
GitLab,
|
|
)
|
|
#let provviz-timeframe = [#June 2025 -- #Present]
|
|
|
|
#let provviz(
|
|
item-heading-above: 0em,
|
|
item-heading-below: 0em,
|
|
) = item-heading(
|
|
title: provviz-name,
|
|
subtitle: provviz-category,
|
|
timeframe: provviz-timeframe,
|
|
location: provviz-location,
|
|
skills: provviz-skills,
|
|
above: item-heading-above,
|
|
below: item-heading-below,
|
|
)
|
|
|
|
#let resume-category = Productivity
|
|
#let resume-name = l("resume")
|
|
#let resume-skills = (Typst, NixFlakes_flake-parts, Linux, Git)
|
|
#let resume-timeframe = [#August 2024 -- #Present]
|
|
|
|
#let resume(item-heading-above: 0em, item-heading-below: 0em) = item-heading(
|
|
title: resume-name,
|
|
subtitle: resume-category,
|
|
timeframe: resume-timeframe,
|
|
skills: resume-skills,
|
|
above: item-heading-above,
|
|
below: item-heading-below,
|
|
)
|
|
|
|
#let server-category = Productivity
|
|
#let server-name = l("server")
|
|
#let server-skills = (
|
|
Linux,
|
|
Docker,
|
|
NixOS,
|
|
Terraform,
|
|
Git,
|
|
Proxmox,
|
|
Hetzner,
|
|
Cloudflare,
|
|
SOPS,
|
|
)
|
|
#let server-timeframe = [2020 -- #Present]
|
|
|
|
#let server(item-heading-above: 0em, item-heading-below: 0em) = item-heading(
|
|
title: server-name,
|
|
subtitle: server-category,
|
|
timeframe: server-timeframe,
|
|
skills: server-skills,
|
|
above: item-heading-above,
|
|
below: item-heading-below,
|
|
)
|
|
|
|
#let syscfg-category = Productivity
|
|
#let syscfg-name = l("syscfg")
|
|
#let syscfg-skills = (
|
|
NixFlakes_flake-parts,
|
|
Linux,
|
|
Terraform,
|
|
SOPS,
|
|
Git,
|
|
)
|
|
#let syscfg-timeframe = [#July 2024 -- #Present]
|
|
|
|
#let syscfg(
|
|
item-heading-above: 0em,
|
|
item-heading-below: 0em,
|
|
) = item-heading(
|
|
title: syscfg-name,
|
|
subtitle: syscfg-category,
|
|
timeframe: syscfg-timeframe,
|
|
skills: syscfg-skills,
|
|
above: item-heading-above,
|
|
below: item-heading-below,
|
|
)
|
|
|
|
#let workspace-category = Productivity
|
|
#let workspace-name = l("workspace")
|
|
#let workspace-skills = (NixFlakes_flake-parts, Linux, Git)
|
|
#let workspace-timeframe = [#July 2025 -- #Present]
|
|
|
|
#let workspace(
|
|
item-heading-above: 0em,
|
|
item-heading-below: 0em,
|
|
) = item-heading(
|
|
title: workspace-name,
|
|
subtitle: workspace-category,
|
|
timeframe: workspace-timeframe,
|
|
skills: workspace-skills,
|
|
above: item-heading-above,
|
|
below: item-heading-below,
|
|
)
|
|
|
|
#let zipversioncontrol-category = Robotics_Team_Project
|
|
#let zipversioncontrol-location = team1790-name
|
|
#let zipversioncontrol-name = l("zipversioncontrol")
|
|
#let zipversioncontrol-skills = (C_Sharp_WPF, Python, Git)
|
|
#let zipversioncontrol-timeframe = [#June 2017 -- #April 2019]
|
|
|
|
#let zipversioncontrol(
|
|
item-heading-above: 0em,
|
|
item-heading-below: 0em,
|
|
) = item-heading(
|
|
title: zipversioncontrol-name,
|
|
subtitle: zipversioncontrol-category,
|
|
timeframe: zipversioncontrol-timeframe,
|
|
skills: zipversioncontrol-skills,
|
|
location: zipversioncontrol-location,
|
|
above: item-heading-above,
|
|
below: item-heading-below,
|
|
)
|