Reorganization

This commit is contained in:
Noah L. Schrick 2023-12-25 17:39:32 -06:00
parent e0cbec717a
commit 67e539d316
51 changed files with 647 additions and 175 deletions

View File

@ -1,7 +1,7 @@
# Articles
All files under the `/content/files` directory (and likewise, the corresponding and respective files in /_site) are licensed under
[CC BY-NC-SA 4.0](https://creativecommons.org/licenses/by-nc-sa/4.0/). The attribution requirement is appropriately met under the following conditions as specified by the license:
All files under the `/content` directory (and likewise, the corresponding and respective files in `/_site`) are licensed under
[CC BY-NC-SA 4.0](https://creativecommons.org/licenses/by-nc-sa/4.0/). The attribution requirement is appropriately satisfied under the following conditions as specified by the license:
1. Attribution — You must give appropriate credit, provide a link to the license, and indicate if changes were made . You may do so in any reasonable manner, but not in any way that suggests the licensor endorses you or your use.
Whereby the following terms shall mean:
@ -16,15 +16,15 @@ Whereby "technological measures" shall mean:
# Images
## Images
All files under the `/content/images/site/` directory (and likewise, the corresponding and respective files in /_site) are copyrighted to Noah L. Schrick. All rights reserved.
All files under the `/content/images/site/` directory (and likewise, the corresponding and respective files in `/_site`) are copyrighted to Noah L. Schrick. All rights reserved.
## Screenshots
No licensing is provided for any files under `/content/images/screenshots` (and likewise, the corresponding and respective files in /_site) due to potential conflicts with copyright claims with the publisher, developer, artist, or other in any relevant screenshot.
No licensing is provided for any files under `/content/images/screenshots` (and likewise, the corresponding and respective files in `/_site`) due to potential conflicts with copyright claims with the publisher, developer, artist, or other in any relevant screenshot.
## Logos
All files under the `/content/images/logos` directory (and likewise, the corresponding and respective files in /public) are copyrighted to their respective holders.
All files under the `/content/images/logos` directory (and likewise, the corresponding and respective files in `/_site`) are copyrighted to their respective holders.
# Other files

11
_data/metadata.js Normal file
View File

@ -0,0 +1,11 @@
module.exports = {
title: "TheSchricks Site",
url: "https://theschricks.com/",
language: "en",
description: "Misc content from theschricks.",
author: {
name: "Noah L. Schrick",
email: "noah@theschricks.com",
url: "https://theschricks.com/noah/about"
}
}

View File

@ -1,89 +1,61 @@
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>{{ renderData.title or title or metadata.title }}</title>
<meta name="Description" content="{{ renderData.description or description or metadata.description }}">
<link rel="stylesheet" href="https://www.w3schools.com/w3css/4/w3.css">
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Montserrat">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css">
<link rel="alternate" href="{{ metadata.feed.path | url }}" type="application/atom+xml" title="{{ metadata.title }}">
</head>
<style>
body, h1,h2,h3,h4,h5,h6 {font-family: "Montserrat", sans-serif}
.w3-row-padding img {margin-bottom: 12px}
/* Set the width of the sidebar to 120px */
.w3-sidebar {width: 120px;background: #222;}
/* Add a left margin to the "page content" that matches the width of the sidebar (120px) */
#main {margin-left: 120px}
/* Remove margins from "page content" on small screens TODO add back in*/
{% raw %}
<html lang="{{ metadata.language }}">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>{{ title or metadata.title }}</title>
<meta name="description" content="{{ description or metadata.description }}">
@media only screen and (max-width:600px) {#main { margin-left:0}}
{#- Atom and JSON feeds included by default #}
<link rel="alternate" href="/feed/feed.xml" type="application/atom+xml" title="{{ metadata.title }}">
<link rel="alternate" href="/feed/feed.json" type="application/json" title="{{ metadata.title }}">
{% endraw %}
{#- Uncomment this if youd like folks to know that you used Eleventy to build your site! #}
{#- <meta name="generator" content="{{ eleventy.generator }}"> #}
{#-
CSS bundles are provided via the `eleventy-plugin-bundle` plugin:
1. You can add to them using `{% css %}`
2. You can get from them using `{% getBundle "css" %}` or `{% getBundleFileUrl "css" %}`
3. You can do the same for JS: {% js %}{% endjs %} and <script>{% getBundle "js" %}</script>
4. Learn more: https://github.com/11ty/eleventy-plugin-bundle
#}
</style>
<body class="w3-black">
{#- Add an arbitrary string to the bundle #}
{%- css %}* { box-sizing: border-box; }{% endcss %}
{#- Add the contents of a file to the bundle #}
{%- css %}{% include "public/css/index.css" %}{% endcss %}
{#- Or add from node_modules #}
{# {%- css %}{% include "node_modules/prismjs/themes/prism-okaidia.css" %}{% endcss %} #}
{#- Render the CSS bundle using Inlined CSS (for the fastest site performance in production) #}
<style>{% getBundle "css" %}</style>
{#- Renders the CSS bundle using a separate file, if you can't set CSP directive style-src: 'unsafe-inline' #}
{#- <link rel="stylesheet" href="{% getBundleFileUrl "css" %}"> #}
</head>
<body>
<a href="#skip" class="visually-hidden">Skip to main content</a>
<header>
<a href="/" class="home-link">{{ metadata.title }}</a>
{#- Read more about `eleventy-navigation` at https://www.11ty.dev/docs/plugins/navigation/ #}
<nav>
<h2 class="visually-hidden">Top level navigation menu</h2>
<ul class="nav">
{%- for entry in collections.all | eleventyNavigation %}
<li class="nav-item"><a href="{{ entry.url }}"{% if entry.url == page.url %} aria-current="page"{% endif %}>{{ entry.title }}</a></li>
{%- endfor %}
</ul>
</nav>
</header>
<main id="skip">
{{ content | safe }}
</main>
<!-- Icon Bar (Sidebar - hidden on small screens) -->
<nav class="w3-sidebar w3-bar-block w3-small w3-hide-small w3-center">
<!-- Avatar image in top left corner -->
<img src="{{ '/img/w3images/avatar_smoke.jpg' | url }}" style="width:100%">
<footer></footer>
{#- Read more about `eleventy-navigation` at https://www.11ty.dev/docs/plugins/navigation/ #}
{%- for entry in collections.all | eleventyNavigation %}
<a href="{{ entry.url | url }}" class="w3-bar-item w3-button w3-padding-large {% if entry.url == page.url %} w3-black {% else %} w3-hover-black {% endif %}">
<i class="fa {{ navFA[entry.title]}} w3-xxlarge"></i>
<p>{{ entry.title }}</p>
</a>
{%- endfor %}
</nav>
<!-- Navbar on small screens (Hidden on medium and large screens) -->
<div class="w3-top w3-hide-large w3-hide-medium" id="myNavbar">
<div class="w3-bar w3-black w3-opacity w3-hover-opacity-off w3-center w3-small">
{%- for entry in collections.all | eleventyNavigation %}
<a href="{{ entry.url | url }}" class="w3-bar-item w3-button" style="width:20% !important">{{ entry.title}}</a>
{%- endfor %}
</div>
</div>
<div class="w3-padding-large" id="main">
<main {% if templateClass %} class="{{ templateClass }}"{% endif %}>
<div class="warning">
<ol>
<li>Edit the <code>_data/metadata.json</code> with your blogs information.</li>
<li>(Optional) Edit <code>.eleventy.js</code> with your <a href="https://www.11ty.dev/docs/config/">configuration preferences</a>.</li>
<li>Delete this message from <code>_includes/layouts/base.njk</code>.</li>
</ol>
<p><em>This is an <a href="https://www.11ty.io/">Eleventy project</a> created from the <a href="https://github.com/11ty/eleventy-base-blog"><code>eleventy-base-blog</code> repo</a>.</em></p>
</div>
{{ content | safe }}
</main>
<!-- Footer -->
<footer class="w3-content w3-padding-64 w3-text-grey w3-xlarge">
<i class="fa fa-facebook-official w3-hover-opacity"></i>
<i class="fa fa-instagram w3-hover-opacity"></i>
<i class="fa fa-snapchat w3-hover-opacity"></i>
<i class="fa fa-pinterest-p w3-hover-opacity"></i>
<i class="fa fa-twitter w3-hover-opacity"></i>
<i class="fa fa-linkedin w3-hover-opacity"></i>
<p class="w3-medium">Powered by <a href="https://www.w3schools.com/w3css/default.asp" target="_blank" class="w3-hover-text-green">w3.css</a></p>
<!-- End footer -->
</footer>
<!-- Current page: {{ page.url | url }} -->
</body>
<!-- Current page: {{ page.url | htmlBaseUrl }} -->
</body>
</html>

View File

@ -1,89 +0,0 @@
code[class*="language-"], pre[class*="language-"] {
font-size: 14px;
line-height: 1.375;
direction: ltr;
text-align: left;
white-space: pre;
word-spacing: normal;
word-break: normal;
-moz-tab-size: 2;
-o-tab-size: 2;
tab-size: 2;
-webkit-hyphens: none;
-moz-hyphens: none;
-ms-hyphens: none;
hyphens: none;
background: #272822;
color: #f8f8f2;
}
pre[class*="language-"] {
padding: 1.5em 0;
margin: .5em 0;
overflow: auto;
}
:not(pre) > code[class*="language-"] {
padding: .1em;
border-radius: .3em;
}
.token.comment, .token.prolog, .token.doctype, .token.cdata {
color: #75715e;
}
.token.punctuation {
color: #f8f8f2;
}
.token.namespace {
opacity: .7;
}
.token.operator, .token.boolean, .token.number {
color: #fd971f;
}
.token.property {
color: #f4bf75;
}
.token.tag {
color: #66d9ef;
}
.token.string {
color: #a1efe4;
}
.token.selector {
color: #ae81ff;
}
.token.attr-name {
color: #fd971f;
}
.token.entity, .token.url, .language-css .token.string, .style .token.string {
color: #a1efe4;
}
.token.attr-value, .token.keyword, .token.control, .token.directive, .token.unit {
color: #a6e22e;
}
.token.statement, .token.regex, .token.atrule {
color: #a1efe4;
}
.token.placeholder, .token.variable {
color: #66d9ef;
}
.token.deleted {
text-decoration: line-through;
}
.token.inserted {
border-bottom: 1px dotted #f9f8f5;
text-decoration: none;
}
.token.italic {
font-style: italic;
}
.token.important, .token.bold {
font-weight: bold;
}
.token.important {
color: #f92672;
}
.token.entity {
cursor: help;
}
pre > code.highlight {
outline: 0.4em solid #f92672;
outline-offset: .4em;
}

View File

@ -0,0 +1,3 @@
module.exports = {
eleventyExcludeFromCollections: true
}

View File

@ -0,0 +1,7 @@
---
title: Madison's Home Page
description: Overview
---
# {{ title }}
Madison's Page.

View File

@ -0,0 +1,7 @@
---
title: About Noah
description: About Noah
---
# {{ title }}
Noah's About.

View File

@ -0,0 +1,10 @@
---
title: Backups
description: Detailed information on the implemented backup solution.
tags:
- Backups
- Borg
---
# {{ title }}
Backups.

View File

@ -0,0 +1,10 @@
---
title: Homelab Home Page
description: Overview of TheSchricks' Home Page
tags:
- Self-hosting
- Homelabbing
---
# {{ title }}
Homelab.

View File

@ -0,0 +1,11 @@
---
title: Communications System
description: Overview of the server responsible for communication services.
tags:
- Communications
- Chat Platforms
- Matrix Protocol
---
# {{ title }}
Communications.

View File

@ -0,0 +1,10 @@
---
title: Front-End System
description: Overview of the public-facing server responsible for processing requests and distributing traffic to the appropriate servers.
tags:
- Public VLAN
- nginx
---
# {{ title }}
FEVM.

View File

@ -0,0 +1,9 @@
---
title: LAN Server
description: Overview of the server responsible for internal services.
tags:
- Omada
---
# {{ title }}
LanSrv.

View File

@ -0,0 +1,10 @@
---
title: Media Server
description: Overview of the media server responsible for handling media acquisition, organization, and streaming.
tags:
- Jellyfin
- Arr Stack
---
# {{ title }}
MediaSrv.

View File

@ -0,0 +1,12 @@
---
title: Monitoring Server
description: Overview of the monitoring server responsible for monitoring and logging all systems.
tags:
- Grafana
- Promtail
- Loki
- Prometheus
---
# {{ title }}
MonBox.

View File

@ -0,0 +1,11 @@
---
title: Program Development Server
description: Overview of the media server responsible for aiding and streamlining software development.
tags:
- Gitea
- VSCode
- RStudio
---
# {{ title }}
ProgDev.

View File

@ -0,0 +1,10 @@
---
title: Proxmox
description: Overview of the installed Proxmox system
tags:
- Proxmox
- Virtual Machines
---
# {{ title }}
Proxmox.

View File

@ -0,0 +1,10 @@
---
title: Storage Server
description: Overview of the storage server responsible for handling all file storage.
tags:
- ZFS
- NFS
---
# {{ title }}
StorageSrv.

View File

@ -0,0 +1,10 @@
---
title: Hosts
description: Top-level host overview for the hosts' installed on metal.
tags:
- Bare-metal
- OS
---
# {{ title }}
Hosts.

View File

@ -0,0 +1,12 @@
---
title: Logging
description: Overview of the logging process in the monitoring stack.
tags:
- Grafana
- Loki
- Promtail
- Prometheus
---
# {{ title }}
Logging.

View File

@ -0,0 +1,10 @@
---
title: Networking
description: Overview of the networking solution for the homelab.
tags:
- Brocade
- pfSense
---
# {{ title }}
Networking.

View File

@ -0,0 +1,9 @@
---
title: Interests
description: Overview of Noah's interests.
tags:
- Interests
---
# {{ title }}
Interests.

View File

@ -0,0 +1,11 @@
---
title: Personal Interests
description: Overview of Noah's personal interests.
tags:
- Homelabbing
- Board Games
- Ice Cream Making
---
# {{ title }}
Personal.

View File

@ -0,0 +1,11 @@
---
title: Professional Interests
description: Overview of Noah's professional interests.
tags:
- System Engineering
- Research Computing
- High-Performance Computing
---
# {{ title }}
Professional.

7
content/noah/noah.md Normal file
View File

@ -0,0 +1,7 @@
---
title: Noah's Home Page
description: Overview
---
# {{ title }}
Noah's Page

View File

@ -0,0 +1,14 @@
---
permalink: /sitemap.xml
eleventyExcludeFromCollections: true
---
<?xml version="1.0" encoding="utf-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" xmlns:xhtml="http://www.w3.org/1999/xhtml">
{%- for page in collections.all %}
{% set absoluteUrl %}{{ page.url | htmlBaseUrl(metadata.url) }}{% endset %}
<url>
<loc>{{ absoluteUrl }}</loc>
<lastmod>{{ page.date | htmlDateString }}</lastmod>
</url>
{%- endfor %}
</urlset>

12
content/tags-list.njk Normal file
View File

@ -0,0 +1,12 @@
---
permalink: /tags/
layout: layouts/home.njk
---
<h1>Tags</h1>
<ul>
{% for tag in collections.all | getAllTags | filterTagList %}
{% set tagUrl %}/tags/{{ tag | slugify }}/{% endset %}
<li><a href="{{ tagUrl }}" class="post-tag">{{ tag }}</a></li>
{% endfor %}
</ul>

22
content/tags.njk Normal file
View File

@ -0,0 +1,22 @@
---
pagination:
data: collections
size: 1
alias: tag
filter:
- all
- post
- posts
- tagList
addAllPagesToCollections: true
layout: layouts/home.njk
eleventyComputed:
title: Tagged “{{ tag }}”
permalink: /tags/{{ tag | slugify }}/
---
<h1>Tagged “{{ tag }}”</h1>
{% set postslist = collections[ tag ] %}
{% include "postslist.njk" %}
<p>See <a href="/tags/">all tags</a>.</p>

View File

@ -6,6 +6,8 @@ const pluginSyntaxHighlight = require("@11ty/eleventy-plugin-syntaxhighlight");
const pluginBundle = require("@11ty/eleventy-plugin-bundle");
const pluginNavigation = require("@11ty/eleventy-navigation");
const { EleventyHtmlBasePlugin } = require("@11ty/eleventy");
const directoryOutputPlugin = require("@11ty/eleventy-plugin-directory-output");
const pluginDrafts = require("./eleventy.config.drafts.js");
const pluginImages = require("./eleventy.config.images.js");
@ -90,6 +92,8 @@ module.exports = function(eleventyConfig) {
level: [1,2,3,4],
slugify: eleventyConfig.getFilter("slugify")
});
eleventyConfig.addPlugin(directoryOutputPlugin);
});
// Features to make your build faster (when you need them)

View File

@ -28,5 +28,8 @@
"@11ty/eleventy-plugin-syntaxhighlight": "^5.0.0",
"luxon": "^3.4.4",
"markdown-it-anchor": "^8.6.7"
},
"dependencies": {
"@11ty/eleventy-plugin-directory-output": "^1.0.1"
}
}

270
public/css/index.css Normal file
View File

@ -0,0 +1,270 @@
/* Defaults */
:root {
--font-family: -apple-system, system-ui, sans-serif;
--font-family-monospace: Consolas, Menlo, Monaco, Andale Mono WT, Andale Mono, Lucida Console, Lucida Sans Typewriter, DejaVu Sans Mono, Bitstream Vera Sans Mono, Liberation Mono, Nimbus Mono L, Courier New, Courier, monospace;
}
/* Theme colors */
:root {
--color-gray-20: #e0e0e0;
--color-gray-50: #C0C0C0;
--color-gray-90: #333;
--background-color: #fff;
--text-color: var(--color-gray-90);
--text-color-link: #082840;
--text-color-link-active: #5f2b48;
--text-color-link-visited: #17050F;
--syntax-tab-size: 2;
}
@media (prefers-color-scheme: dark) {
:root {
--color-gray-20: #e0e0e0;
--color-gray-50: #C0C0C0;
--color-gray-90: #dad8d8;
/* --text-color is assigned to --color-gray-_ above */
--text-color-link: #1493fb;
--text-color-link-active: #6969f7;
--text-color-link-visited: #a6a6f8;
--background-color: #15202b;
}
}
/* Global stylesheet */
* {
box-sizing: border-box;
}
html,
body {
padding: 0;
margin: 0 auto;
font-family: var(--font-family);
color: var(--text-color);
background-color: var(--background-color);
}
html {
overflow-y: scroll;
}
body {
max-width: 40em;
}
/* https://www.a11yproject.com/posts/how-to-hide-content/ */
.visually-hidden {
clip: rect(0 0 0 0);
clip-path: inset(50%);
height: 1px;
overflow: hidden;
position: absolute;
white-space: nowrap;
width: 1px;
}
p:last-child {
margin-bottom: 0;
}
p {
line-height: 1.5;
}
li {
line-height: 1.5;
}
a[href] {
color: var(--text-color-link);
}
a[href]:visited {
color: var(--text-color-link-visited);
}
a[href]:hover,
a[href]:active {
color: var(--text-color-link-active);
}
main {
padding: 1rem;
}
main :first-child {
margin-top: 0;
}
header {
border-bottom: 1px dashed var(--color-gray-20);
}
header:after {
content: "";
display: table;
clear: both;
}
.links-nextprev {
list-style: none;
border-top: 1px dashed var(--color-gray-20);
padding: 1em 0;
}
table {
margin: 1em 0;
}
table td,
table th {
padding-right: 1em;
}
pre,
code {
font-family: var(--font-family-monospace);
}
pre:not([class*="language-"]) {
margin: .5em 0;
line-height: 1.375; /* 22px /16 */
-moz-tab-size: var(--syntax-tab-size);
-o-tab-size: var(--syntax-tab-size);
tab-size: var(--syntax-tab-size);
-webkit-hyphens: none;
-ms-hyphens: none;
hyphens: none;
direction: ltr;
text-align: left;
white-space: pre;
word-spacing: normal;
word-break: normal;
}
code {
word-break: break-all;
}
/* Header */
header {
display: flex;
gap: 1em .5em;
flex-wrap: wrap;
align-items: center;
padding: 1em;
}
.home-link {
font-size: 1em; /* 16px /16 */
font-weight: 700;
margin-right: 2em;
}
.home-link:link:not(:hover) {
text-decoration: none;
}
/* Nav */
.nav {
display: flex;
padding: 0;
margin: 0;
list-style: none;
}
.nav-item {
display: inline-block;
margin-right: 1em;
}
.nav-item a[href]:not(:hover) {
text-decoration: none;
}
.nav a[href][aria-current="page"] {
text-decoration: underline;
}
/* Posts list */
.postlist {
list-style: none;
padding: 0;
padding-left: 1.5rem;
}
.postlist-item {
display: flex;
flex-wrap: wrap;
align-items: baseline;
counter-increment: start-from -1;
margin-bottom: 1em;
}
.postlist-item:before {
display: inline-block;
pointer-events: none;
content: "" counter(start-from, decimal-leading-zero) ". ";
line-height: 100%;
text-align: right;
margin-left: -1.5rem;
}
.postlist-date,
.postlist-item:before {
font-size: 0.8125em; /* 13px /16 */
color: var(--color-gray-90);
}
.postlist-date {
word-spacing: -0.5px;
}
.postlist-link {
font-size: 1.1875em; /* 19px /16 */
font-weight: 700;
flex-basis: calc(100% - 1.5rem);
padding-left: .25em;
padding-right: .5em;
text-underline-position: from-font;
text-underline-offset: 0;
text-decoration-thickness: 1px;
}
.postlist-item-active .postlist-link {
font-weight: bold;
}
/* Tags */
.post-tag {
display: inline-flex;
align-items: center;
justify-content: center;
text-transform: capitalize;
font-style: italic;
}
.postlist-item > .post-tag {
align-self: center;
}
/* Tags list */
.post-metadata {
display: inline-flex;
flex-wrap: wrap;
gap: .5em;
list-style: none;
padding: 0;
margin: 0;
}
.post-metadata time {
margin-right: 1em;
}
/* Direct Links / Markdown Headers */
.header-anchor {
text-decoration: none;
font-style: normal;
font-size: 1em;
margin-left: .1em;
}
a[href].header-anchor,
a[href].header-anchor:visited {
color: transparent;
}
a[href].header-anchor:focus,
a[href].header-anchor:hover {
text-decoration: underline;
}
a[href].header-anchor:focus,
:hover > a[href].header-anchor {
color: #aaa;
}
h2 + .header-anchor {
font-size: 1.5em;
}

View File

@ -0,0 +1,18 @@
/* Message Box */
.message-box {
--color-message-box: #ffc;
display: block;
background-color: var(--color-message-box);
color: var(--color-gray-90);
padding: 1em 0.625em; /* 16px 10px /16 */
}
.message-box ol {
margin-top: 0;
}
@media (prefers-color-scheme: dark) {
.message-box {
--color-message-box: #082840;
}
}

45
public/css/prism-diff.css Normal file
View File

@ -0,0 +1,45 @@
/*
* New diff- syntax
*/
pre[class*="language-diff-"] {
--eleventy-code-padding: 1.25em;
padding-left: var(--eleventy-code-padding);
padding-right: var(--eleventy-code-padding);
}
.token.deleted {
background-color: hsl(0, 51%, 37%);
color: inherit;
}
.token.inserted {
background-color: hsl(126, 31%, 39%);
color: inherit;
}
/* Make the + and - characters unselectable for copy/paste */
.token.prefix.unchanged,
.token.prefix.inserted,
.token.prefix.deleted {
-webkit-user-select: none;
user-select: none;
display: inline-flex;
align-items: center;
justify-content: center;
padding-top: 2px;
padding-bottom: 2px;
}
.token.prefix.inserted,
.token.prefix.deleted {
width: var(--eleventy-code-padding);
background-color: rgba(0,0,0,.2);
}
/* Optional: full-width background color */
.token.inserted:not(.prefix),
.token.deleted:not(.prefix) {
display: block;
margin-left: calc(-1 * var(--eleventy-code-padding));
margin-right: calc(-1 * var(--eleventy-code-padding));
text-decoration: none; /* override del, ins, mark defaults */
color: inherit; /* override del, ins, mark defaults */
}