summaryrefslogtreecommitdiff
path: root/mod/misc
diff options
context:
space:
mode:
authorKleidi Bujari <mail@4kb.net>2025-01-24 12:30:55 -0500
committerKleidi Bujari <mail@4kb.net>2025-01-24 12:30:55 -0500
commitc2196e5b168ccf86aa4da0f27298589a65e416cb (patch)
tree11ee1df7e8d8c2e00208cfe2c718c37651c28118 /mod/misc
parent32f4cb5cbba313b7af2fce46139c04d9469cb72a (diff)
downloaddepot-c2196e5b168ccf86aa4da0f27298589a65e416cb.tar.gz
depot-c2196e5b168ccf86aa4da0f27298589a65e416cb.tar.bz2
depot-c2196e5b168ccf86aa4da0f27298589a65e416cb.zip
simplify cv build
Diffstat (limited to 'mod/misc')
-rw-r--r--mod/misc/cv/cv.typ127
-rw-r--r--mod/misc/cv/default.nix17
-rw-r--r--mod/misc/cv/template.typ211
3 files changed, 130 insertions, 225 deletions
diff --git a/mod/misc/cv/cv.typ b/mod/misc/cv/cv.typ
index e243796..1120e39 100644
--- a/mod/misc/cv/cv.typ
+++ b/mod/misc/cv/cv.typ
@@ -1,11 +1,134 @@
-#import "template.typ": *
+#let resume(
+ author: "",
+ email: "",
+ github: "",
+ personal-site: "",
+ accent-color: "#000000",
+ font: "New Computer Modern",
+ body,
+) = {
+ set document(author: author, title: author)
+ set text(
+ // LaTeX style font
+ font: font,
+ size: 10pt,
+ lang: "en",
+ ligatures: false
+ )
+
+ set page(
+ margin: (0.5in),
+ paper: "us-letter",
+ )
+
+ show link: underline
+ show link: set text(
+ fill: rgb(accent-color),
+ )
+
+ show heading.where(level: 2): it => [
+ #pad(top: 0pt, bottom: -10pt, [#smallcaps(it.body)])
+ #line(length: 100%, stroke: 1pt)
+ ]
+
+ // Accent Color Styling
+ show heading: set text(
+ fill: rgb(accent-color),
+ )
+
+ show heading.where(level: 1): it => [
+ #set align(left)
+ #set text(
+ weight: 700,
+ size: 20pt,
+ )
+ #pad(it.body)
+ ]
+
+ [= #(author)]
+
+ let contact-item(value, prefix: "", link-type: "") = {
+ if value != "" {
+ if link-type != "" {
+ link(link-type + value)[#(prefix + value)]
+ } else {
+ value
+ }
+ }
+ }
+
+ // Personal Info
+ pad(
+ top: 0.25em,
+ align(left)[
+ #{
+ let items = (
+ contact-item(email, link-type: "mailto:"),
+ contact-item(github, link-type: "https://"),
+ contact-item(personal-site, link-type: "https://"),
+ )
+ items.filter(x => x != none).join(" | ")
+ }
+ ],
+ )
+
+ set par(justify: true)
+
+ body
+}
+
+#let generic-two-by-two(
+ top-left: "",
+ top-right: "",
+ bottom-left: "",
+ bottom-right: "",
+) = {
+ [
+ #top-left #h(1fr) #top-right \
+ #bottom-left #h(1fr) #bottom-right
+ ]
+}
+
+#let dates-helper(
+ start-date: "",
+ end-date: "",
+) = {
+ start-date + " " + $dash.em$ + " " + end-date
+}
+
+#let edu(
+ institution: "",
+ dates: "",
+ degree: "",
+ location: "",
+) = {
+ generic-two-by-two(
+ top-left: strong(institution),
+ top-right: location,
+ bottom-left: emph(degree),
+ bottom-right: emph(dates),
+ )
+}
+
+#let work(
+ title: "",
+ dates: "",
+ company: "",
+ location: "",
+) = {
+ generic-two-by-two(
+ top-left: strong(title),
+ top-right: dates,
+ bottom-left: company,
+ bottom-right: emph(location),
+ )
+}
#show: resume.with(
author: "Kleidi Bujari",
email: "mail@4kb.net",
github: "github.com/kbujari",
personal-site: "4kb.net",
- paper: "us-letter",
)
== Education
diff --git a/mod/misc/cv/default.nix b/mod/misc/cv/default.nix
index 805d880..b663475 100644
--- a/mod/misc/cv/default.nix
+++ b/mod/misc/cv/default.nix
@@ -1,13 +1,6 @@
-{ pkgs, ... }: pkgs.stdenvNoCC.mkDerivation {
- pname = "cv";
- version = "1.0";
+{ pkgs, ... }:
- src = ./.;
-
- nativeBuildInputs = with pkgs; [ typst ];
- buildPhase = "typst compile cv.typ";
- installPhase = ''
- mkdir -p $out/share
- cp cv.pdf $out/share
- '';
-}
+pkgs.runCommand "cv" { } ''
+ mkdir -p $out/share
+ ${pkgs.typst}/bin/typst compile ${./cv.typ} $out/share/cv.pdf
+''
diff --git a/mod/misc/cv/template.typ b/mod/misc/cv/template.typ
deleted file mode 100644
index 4b07fba..0000000
--- a/mod/misc/cv/template.typ
+++ /dev/null
@@ -1,211 +0,0 @@
-#let resume(
- author: "",
- pronouns: "",
- location: "",
- email: "",
- github: "",
- linkedin: "",
- phone: "",
- personal-site: "",
- accent-color: "#000000",
- font: "New Computer Modern",
- paper: "us-letter",
- body,
-) = {
-
- // Sets document metadata
- set document(author: author, title: author)
-
- // Document-wide formatting, including font and margins
- set text(
- // LaTeX style font
- font: font,
- size: 10pt,
- lang: "en",
- // Disable ligatures so ATS systems do not get confused when parsing fonts.
- ligatures: false
- )
-
- // Reccomended to have 0.5in margin on all sides
- set page(
- margin: (0.5in),
- paper: paper,
- )
-
- // Link styles
- show link: underline
-
-
- // Small caps for section titles
- show heading.where(level: 2): it => [
- #pad(top: 0pt, bottom: -10pt, [#smallcaps(it.body)])
- #line(length: 100%, stroke: 1pt)
- ]
-
- // Accent Color Styling
- show heading: set text(
- fill: rgb(accent-color),
- )
-
- show link: set text(
- fill: rgb(accent-color),
- )
-
- // Name will be aligned left, bold and big
- show heading.where(level: 1): it => [
- #set align(left)
- #set text(
- weight: 700,
- size: 20pt,
- )
- #pad(it.body)
- ]
-
- // Level 1 Heading
- [= #(author)]
-
- // Personal Info Helper
- let contact-item(value, prefix: "", link-type: "") = {
- if value != "" {
- if link-type != "" {
- link(link-type + value)[#(prefix + value)]
- } else {
- value
- }
- }
- }
-
- // Personal Info
- pad(
- top: 0.25em,
- align(left)[
- #{
- let items = (
- contact-item(pronouns),
- contact-item(phone),
- contact-item(location),
- contact-item(email, link-type: "mailto:"),
- contact-item(github, link-type: "https://"),
- contact-item(linkedin, link-type: "https://"),
- contact-item(personal-site, link-type: "https://"),
- )
- items.filter(x => x != none).join(" | ")
- }
- ],
- )
-
- // Main body.
- set par(justify: true)
-
- body
-}
-
-// Generic two by two component for resume
-#let generic-two-by-two(
- top-left: "",
- top-right: "",
- bottom-left: "",
- bottom-right: "",
-) = {
- [
- #top-left #h(1fr) #top-right \
- #bottom-left #h(1fr) #bottom-right
- ]
-}
-
-// Generic one by two component for resume
-#let generic-one-by-two(
- left: "",
- right: "",
-) = {
- [
- #left #h(1fr) #right
- ]
-}
-
-// Cannot just use normal --- ligature becuase ligatures are disabled for good reasons
-#let dates-helper(
- start-date: "",
- end-date: "",
-) = {
- start-date + " " + $dash.em$ + " " + end-date
-}
-
-// Section components below
-#let edu(
- institution: "",
- dates: "",
- degree: "",
- gpa: "",
- location: "",
-) = {
- generic-two-by-two(
- top-left: strong(institution),
- top-right: location,
- bottom-left: emph(degree),
- bottom-right: emph(dates),
- )
-}
-
-#let work(
- title: "",
- dates: "",
- company: "",
- location: "",
-) = {
- generic-two-by-two(
- top-left: strong(title),
- top-right: dates,
- bottom-left: company,
- bottom-right: emph(location),
- )
-}
-
-#let project(
- role: "",
- name: "",
- url: "",
- dates: "",
-) = {
- generic-one-by-two(
- left: {
- if role == "" {
- [*#name* #if url != "" and dates != "" [ (#link("https://" + url)[#url])]]
- } else {
- [*#role*, #name #if url != "" and dates != "" [ (#link("https://" + url)[#url])]]
- }
- },
- right: {
- if dates == "" and url != "" {
- link("https://" + url)[#url]
- } else {
- dates
- }
- },
- )
-}
-
-#let certificates(
- name: "",
- issuer: "",
- url: "",
- date: "",
-) = {
- [
- *#name*, #issuer
- #if url != "" {
- [ (#link("https://" + url)[#url])]
- }
- #h(1fr) #date
- ]
-}
-
-#let extracurriculars(
- activity: "",
- dates: "",
-) = {
- generic-one-by-two(
- left: strong(activity),
- right: dates,
- )
-}