feat!: switch from Vuepress to Vitepress
deploy / deploy (push) Failing after 7m20s

This commit is contained in:
2026-06-24 10:57:57 +02:00
parent 9903f5bed5
commit 9f8932aae1
40 changed files with 1676 additions and 10217 deletions
+21
View File
@@ -0,0 +1,21 @@
<template>
<figure>
<img :alt="alt" :src="src" />
<figcaption><slot></slot></figcaption>
</figure>
</template>
<script setup lang="ts">
const props = defineProps<{
src: string;
alt?: string;
}>();
</script>
<style>
figcaption {
text-align: center;
margin-top: 1rem;
margin-bottom: 1rem;
}
</style>
+33
View File
@@ -0,0 +1,33 @@
// -*- mode: typescript; -*-
import { defineConfig, HeadConfig } from 'vitepress';
import appHead from './head';
import { sidebar } from './sidebar';
import { nav } from './nav';
export default defineConfig({
title: "Pundraks Dotfiles",
cleanUrls: true,
description: 'Pundraks Linux configuration',
head: appHead as HeadConfig[],
srcDir: './docs',
themeConfig: {
sidebar,
nav,
outline: {
level: 'deep'
},
search: {
provider: 'local'
},
},
markdown: {
image: {
lazyLoading: true
},
linkify: true,
typographer: true,
headers: {
level: [1, 2, 3, 4, 5]
}
},
})
+79
View File
@@ -0,0 +1,79 @@
interface Head {
type?: 'image/png';
async?: boolean,
src?: string,
'data-website-id'?: string
}
interface Favicon extends Head {
rel: 'apple-touch-icon' | 'icon' | 'manifest';
href: string;
sizes?: string;
}
interface Meta extends Head {
property?: string,
name?: string,
content: string
}
const favicons: Favicon[] = [
{ rel: 'apple-touch-icon', sizes: '57x57', href: '/img/meta/apple-icon-57x57.png' },
{ rel: 'apple-touch-icon', sizes: '60x60', href: '/img/meta/apple-icon-60x60.png' },
{ rel: 'apple-touch-icon', sizes: '72x72', href: '/img/meta/apple-icon-72x72.png' },
{ rel: 'apple-touch-icon', sizes: '76x76', href: '/img/meta/apple-icon-76x76.png' },
{ rel: 'apple-touch-icon', sizes: '114x114', href: '/img/meta/apple-icon-114x114.png' },
{ rel: 'apple-touch-icon', sizes: '120x120', href: '/img/meta/apple-icon-120x120.png' },
{ rel: 'apple-touch-icon', sizes: '144x144', href: '/img/meta/apple-icon-144x144.png' },
{ rel: 'apple-touch-icon', sizes: '152x152', href: '/img/meta/apple-icon-152x152.png' },
{ rel: 'apple-touch-icon', sizes: '180x180', href: '/img/meta/apple-icon-180x180.png' },
{ rel: 'icon', type: 'image/png', sizes: '192x192', href: '/img/meta/android-icon-192x192.png' },
{ rel: 'icon', type: 'image/png', sizes: '32x32', href: '/img/meta/favicon-32x32.png' },
{ rel: 'icon', type: 'image/png', sizes: '96x96', href: '/img/meta/favicon-96x96.png' },
{ rel: 'icon', type: 'image/png', sizes: '16x16', href: '/img/meta/favicon-16x16.png' },
{ rel: 'manifest', href: '/img/meta/manifest.json' },
];
const meta: Meta[] = [
{
name: 'author',
content: 'Lucien Cartier-Tilet',
},
{
property: 'og:image',
content: 'https://cdn.phundrak.com/img/rich_preview.png',
},
{
property: 'og:title',
content: 'Pundraks Dotfiles',
},
{
property: 'og:description',
content: 'Pundraks Linux configuration',
},
{
name: 'fediverse:creator',
content: '@phundrak@mastodon.phundrak.com',
},
{
name: 'twitter:card',
content: 'summary',
},
{
name: 'twitter:site',
content: '@phundrak',
},
{
name: 'twitter:creator',
content: '@phundrak',
},
{ name: 'msapplication-TileColor', content: '#3b4252' },
{ name: 'msapplication-TileImage', content: '/ms-icon-144x144.png' },
{ name: 'theme-color', content: '#3b4252' },
]
const appHead: (string | Head)[][] = favicons.map((head) => ['link', head])
meta.map((item) => appHead.push(['meta', item]))
export default appHead;
+8
View File
@@ -0,0 +1,8 @@
import { DefaultTheme } from "vitepress";
export const nav: DefaultTheme.NavItem[] = [
{ text: 'About', link: '/about' },
{ text: 'Configs', link: '/' },
{ text: 'Deprecated Configs', link: '/deprecated/', activeMatch: '/deprecated/*' },
{ text: 'Source', link: 'https://labs.phundrak.com/phundrak/config.phundrak.com' },
]
+59
View File
@@ -0,0 +1,59 @@
import { DefaultTheme } from "vitepress";
export const sidebar: DefaultTheme.Sidebar = {
'/': [
{ text: 'Index', link: '/' },
{ text: 'Custom Scripts', link: '/scripts' },
{ text: 'Desktop', link: '/desktop' },
{ text: 'General Shell Config', link: '/shell' },
{ text: 'Fish', link: '/fish' },
{ text: 'Git', link: '/git' },
{ text: 'Hyprland', link: '/hyprland' },
{ text: 'MPD', link: '/mpd' },
{ text: 'Tmux', link: '/tmux' },
{
text: 'Emacs',
items: [
{ text: 'Index', link: '/emacs/' },
{ text: 'Basic Config', link: '/emacs/basic-config' },
{ text: 'Custom Elisp', link: '/emacs/custom-elisp' },
{ text: 'Package Managers', link: '/emacs/package-manager' },
{ text: 'Keybind Managers', link: '/emacs/keybinding-managers' },
{ text: 'Autocompletion', link: '/emacs/packages/autocompletion' },
{ text: 'Applications', link: '/emacs/packages/applications' },
{ text: 'Editing', link: '/emacs/packages/editing' },
{ text: 'Built-in', link: '/emacs/packages/emacs-builtin' },
{ text: 'Making My Life Easier', link: '/emacs/packages/helpful' },
{ text: 'LaTeX', link: '/emacs/packages/latex' },
{ text: 'Org Mode', link: '/emacs/packages/org' },
{ text: 'Programming', link: '/emacs/packages/programming' },
{ text: 'Visual Config', link: '/emacs/packages/visual-config' },
{ text: 'Misc', link: '/emacs/packages/misc' },
{ text: 'Keybindings', link: '/emacs/keybindings' },
]
}
],
'/deprecated/': [
{ text: 'AwesomeWM', link: '/deprecated/awesome' },
{ text: 'Bootstrap Script', link: '/deprecated/bootstrap' },
{ text: 'EXWM', link: '/emacs/packages/exwm' },
{ text: 'i3', link: '/deprecated/i3' },
{ text: 'Nano', link: '/deprecated/nano' },
{ text: 'Neofetch', link: '/neofetch' },
{ text: 'Picom', link: '/picom' },
{ text: 'Polybar', link: '/deprecated/polybar' },
{
text: 'StumpWM', items: [
{ text: 'Index', link: '/stumpwm/' },
{ text: 'Basic Configuration', link: '/stumpwm/init' },
{ text: 'Colours', link: '/stumpwm/colours' },
{ text: 'Modeline', link: '/stumpwm/mode-line' },
{ text: 'Groups and Placement', link: '/stumpwm/groups' },
{ text: 'Theme', link: '/stumpwm/theme' },
{ text: 'Commands', link: '/stumpwm/commands' },
{ text: 'Keybinds', link: '/stumpwm/keybindings' },
{ text: 'Utilities', link: '/stumpwm/utilities' },
]
}
]
}
+10
View File
@@ -0,0 +1,10 @@
import { Theme } from "vitepress";
import DefaultTheme from "vitepress/theme";
import ImgFigure from "../components/ImgFigure.vue";
export default {
extends: DefaultTheme,
enhanceApp({ app }) {
app.component('ImgFigure', ImgFigure);
}
} satisfies Theme;