From c28aa9495103c939626bca6a3818791e85f8e8d2 Mon Sep 17 00:00:00 2001 From: Nick Date: Mon, 24 Mar 2025 01:21:46 -0500 Subject: [PATCH] feat: init --- .direnv/bin/nix-direnv-reload | 19 ++++ .envrc | 1 + .gitignore | 4 + flake.lock | 185 ++++++++++++++++++++++++++++++++++ flake.nix | 28 +++++ parts/config/devshells.nix | 26 +++++ parts/config/pre-commit.nix | 7 ++ parts/default.nix | 24 +++++ src/resume.pdf | Bin 0 -> 18734 bytes src/resume.typ | 55 ++++++++++ src/template.typ | 54 ++++++++++ 11 files changed, 403 insertions(+) create mode 100755 .direnv/bin/nix-direnv-reload create mode 100644 .envrc create mode 100644 .gitignore create mode 100755 flake.lock create mode 100755 flake.nix create mode 100755 parts/config/devshells.nix create mode 100755 parts/config/pre-commit.nix create mode 100755 parts/default.nix create mode 100644 src/resume.pdf create mode 100644 src/resume.typ create mode 100644 src/template.typ diff --git a/.direnv/bin/nix-direnv-reload b/.direnv/bin/nix-direnv-reload new file mode 100755 index 0000000..fa8b276 --- /dev/null +++ b/.direnv/bin/nix-direnv-reload @@ -0,0 +1,19 @@ +#!/usr/bin/env bash +set -e +if [[ ! -d "/home/nick/Files/Projects/resume" ]]; then + echo "Cannot find source directory; Did you move it?" + echo "(Looking for "/home/nick/Files/Projects/resume")" + echo 'Cannot force reload with this script - use "direnv reload" manually and then try again' + exit 1 +fi + +# rebuild the cache forcefully +_nix_direnv_force_reload=1 direnv exec "/home/nick/Files/Projects/resume" true + +# Update the mtime for .envrc. +# This will cause direnv to reload again - but without re-building. +touch "/home/nick/Files/Projects/resume/.envrc" + +# Also update the timestamp of whatever profile_rc we have. +# This makes sure that we know we are up to date. +touch -r "/home/nick/Files/Projects/resume/.envrc" "/home/nick/Files/Projects/resume/.direnv"/*.rc diff --git a/.envrc b/.envrc new file mode 100644 index 0000000..3550a30 --- /dev/null +++ b/.envrc @@ -0,0 +1 @@ +use flake diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..5c063be --- /dev/null +++ b/.gitignore @@ -0,0 +1,4 @@ +.direnv +.pre-commit-config.yaml +.vscode +*.pdf diff --git a/flake.lock b/flake.lock new file mode 100755 index 0000000..160ae72 --- /dev/null +++ b/flake.lock @@ -0,0 +1,185 @@ +{ + "nodes": { + "devshell": { + "inputs": { + "nixpkgs": "nixpkgs" + }, + "locked": { + "lastModified": 1741473158, + "narHash": "sha256-kWNaq6wQUbUMlPgw8Y+9/9wP0F8SHkjy24/mN3UAppg=", + "owner": "numtide", + "repo": "devshell", + "rev": "7c9e793ebe66bcba8292989a68c0419b737a22a0", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "devshell", + "type": "github" + } + }, + "flake-compat": { + "flake": false, + "locked": { + "lastModified": 1696426674, + "narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "0f9255e01c2351cc7d116c072cb317785dd33b33", + "type": "github" + }, + "original": { + "owner": "edolstra", + "repo": "flake-compat", + "type": "github" + } + }, + "flake-parts": { + "inputs": { + "nixpkgs-lib": "nixpkgs-lib" + }, + "locked": { + "lastModified": 1741352980, + "narHash": "sha256-+u2UunDA4Cl5Fci3m7S643HzKmIDAe+fiXrLqYsR2fs=", + "owner": "hercules-ci", + "repo": "flake-parts", + "rev": "f4330d22f1c5d2ba72d3d22df5597d123fdb60a9", + "type": "github" + }, + "original": { + "id": "flake-parts", + "type": "indirect" + } + }, + "flake-root": { + "locked": { + "lastModified": 1723604017, + "narHash": "sha256-rBtQ8gg+Dn4Sx/s+pvjdq3CB2wQNzx9XGFq/JVGCB6k=", + "owner": "srid", + "repo": "flake-root", + "rev": "b759a56851e10cb13f6b8e5698af7b59c44be26e", + "type": "github" + }, + "original": { + "owner": "srid", + "repo": "flake-root", + "type": "github" + } + }, + "gitignore": { + "inputs": { + "nixpkgs": [ + "pre-commit-hooks-nix", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1709087332, + "narHash": "sha256-HG2cCnktfHsKV0s4XW83gU3F57gaTljL9KNSuG6bnQs=", + "owner": "hercules-ci", + "repo": "gitignore.nix", + "rev": "637db329424fd7e46cf4185293b9cc8c88c95394", + "type": "github" + }, + "original": { + "owner": "hercules-ci", + "repo": "gitignore.nix", + "type": "github" + } + }, + "nixpkgs": { + "locked": { + "lastModified": 1722073938, + "narHash": "sha256-OpX0StkL8vpXyWOGUD6G+MA26wAXK6SpT94kLJXo6B4=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "e36e9f57337d0ff0cf77aceb58af4c805472bfae", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-lib": { + "locked": { + "lastModified": 1740877520, + "narHash": "sha256-oiwv/ZK/2FhGxrCkQkB83i7GnWXPPLzoqFHpDD3uYpk=", + "owner": "nix-community", + "repo": "nixpkgs.lib", + "rev": "147dee35aab2193b174e4c0868bd80ead5ce755c", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "nixpkgs.lib", + "type": "github" + } + }, + "nixpkgs_2": { + "locked": { + "lastModified": 1741379970, + "narHash": "sha256-Wh7esNh7G24qYleLvgOSY/7HlDUzWaL/n4qzlBePpiw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "36fd87baa9083f34f7f5027900b62ee6d09b1f2f", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_3": { + "locked": { + "lastModified": 1730768919, + "narHash": "sha256-8AKquNnnSaJRXZxc5YmF/WfmxiHX6MMZZasRP6RRQkE=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "a04d33c0c3f1a59a2c1cb0c6e34cd24500e5a1dc", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "pre-commit-hooks-nix": { + "inputs": { + "flake-compat": "flake-compat", + "gitignore": "gitignore", + "nixpkgs": "nixpkgs_3" + }, + "locked": { + "lastModified": 1741379162, + "narHash": "sha256-srpAbmJapkaqGRE3ytf3bj4XshspVR5964OX5LfjDWc=", + "owner": "cachix", + "repo": "pre-commit-hooks.nix", + "rev": "b5a62751225b2f62ff3147d0a334055ebadcd5cc", + "type": "github" + }, + "original": { + "owner": "cachix", + "repo": "pre-commit-hooks.nix", + "type": "github" + } + }, + "root": { + "inputs": { + "devshell": "devshell", + "flake-parts": "flake-parts", + "flake-root": "flake-root", + "nixpkgs": "nixpkgs_2", + "pre-commit-hooks-nix": "pre-commit-hooks-nix" + } + } + }, + "root": "root", + "version": 7 +} diff --git a/flake.nix b/flake.nix new file mode 100755 index 0000000..5115b35 --- /dev/null +++ b/flake.nix @@ -0,0 +1,28 @@ +{ + description = "Typst Environment"; + + inputs = { + devshell.url = "github:numtide/devshell"; + flake-root.url = "github:srid/flake-root"; + nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable"; + pre-commit-hooks-nix.url = "github:cachix/pre-commit-hooks.nix"; + }; + + outputs = + inputs@{ + nixpkgs, + flake-parts, + self, + ... + }: + flake-parts.lib.mkFlake { inherit inputs; } { + imports = [ + inputs.devshell.flakeModule + inputs.flake-root.flakeModule + inputs.pre-commit-hooks-nix.flakeModule + ./parts + ]; + + systems = nixpkgs.lib.systems.flakeExposed; + }; +} diff --git a/parts/config/devshells.nix b/parts/config/devshells.nix new file mode 100755 index 0000000..adee003 --- /dev/null +++ b/parts/config/devshells.nix @@ -0,0 +1,26 @@ +{ + pkgs, + config, + ... +}: +{ + devShells = { + default = pkgs.mkShell { + packages = builtins.attrValues { + inherit (pkgs) + just + nil + typst + tinymist + typstyle + yamlfmt + nixfmt-rfc-style + ; + # inherit (pkgs.nodePackages) + # "@commitlint/config-conventional" + # ; + }; + }; + shellHook = "${config.pre-commit.installationScript}"; + }; +} diff --git a/parts/config/pre-commit.nix b/parts/config/pre-commit.nix new file mode 100755 index 0000000..a41ffa6 --- /dev/null +++ b/parts/config/pre-commit.nix @@ -0,0 +1,7 @@ +{ + pre-commit.settings.hooks = { + nixfmt.enable = true; + commitizen.enable = true; + statix.enable = true; + }; +} diff --git a/parts/default.nix b/parts/default.nix new file mode 100755 index 0000000..93ccb77 --- /dev/null +++ b/parts/default.nix @@ -0,0 +1,24 @@ +{ + perSystem = + { + pkgs, + lib, + config, + self', + ... + }: + let + configPath = ./config; + + devshellImports = + let + files = builtins.attrNames (builtins.readDir configPath); + in + map (name: configPath + "/${name}") ( + builtins.filter (name: builtins.match ".*\\.nix$" name != null) files + ); + in + { + imports = devshellImports; + }; +} diff --git a/src/resume.pdf b/src/resume.pdf new file mode 100644 index 0000000000000000000000000000000000000000..25ae52fa2486928d4e488f532056d2aa5f109ee9 GIT binary patch literal 18734 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 VNh~S>r&&V_10ypoRaIAiHvk3~5x4*V literal 0 HcmV?d00001 diff --git a/src/resume.typ b/src/resume.typ new file mode 100644 index 0000000..0228adc --- /dev/null +++ b/src/resume.typ @@ -0,0 +1,55 @@ +#import "template.typ": * + +#set page( + paper: "a6", + margin: (x: 1.8cm, y: 1.5cm), +) +#set text( + font: "New Computer Modern", + size: 5pt +) +#set par( + justify: true, + leading: 0.52em, +) + +#chunk(( + text(size: 10pt)[Nick Hiebert], + divider, + job( + company: "upRootNutrition", + title: "Content Creator, Programmer", + dates: "Nov 2024 - Present", + location: "Winnipeg, MB", + details: ( + "Develop evidence-based content related to nutrition science.", + "Conduct in-depth investigations into nutrition science for clients.", + "Mentor clients on research methodologies and interpretation." + ) + ), + job( + company: "The Nutrivore", + title: "Content Creator", + dates: "Jan 2018 - Nov 2024", + location: "Winnipeg, MB", + details: ( + "Develop evidence-based content related to nutrition science.", + "Conduct in-depth investigations into nutrition science for clients.", + "Mentor clients on research methodologies and interpretation." + ) + ) + ) +) + +#list(( + edu( + institute: "University of Manitoba", + cert: "Human Nutritional Science", + year: "2011" + ), + edu( + institute: "Studio 11 Inc", + cert: "Audio Production", + year: "2008" + ) +)) diff --git a/src/template.typ b/src/template.typ new file mode 100644 index 0000000..abb8888 --- /dev/null +++ b/src/template.typ @@ -0,0 +1,54 @@ +#let chunk(content) = { + stack( + spacing: 1.5em, + ..content + ) +} + +#let list(content) = { + stack( + spacing: 0.75em, + ..content + ) +} + +#let divider = { + pad(y: 0.5em)[ + #align(center, line(length: 100%, stroke: 0.25pt)) + ] +} + +#let job( + company: "", + title: "", + dates: "", + location: "", + details: () +) = { + block(spacing: 0.75em)[ + #stack( + spacing: 0.75em, + [ + #text(weight: "bold")[#company, #location] #h(0.5em) + #text(style: "italic")[— #title] + ], + [#dates], + [ + #pad(left: 1.5em)[ + #list(details.map(detail => [• #detail])) + ] + ] + ) + ] +} + +#let edu( + institute: "", + cert: "", + year: "" +) = { + block(spacing: 0.75em)[ + #text(weight: "bold")[#institute] #h(0.5em) + #text(style: "italic")[— #cert, #year] + ] +}