@@ -0,0 +1,10 @@
|
||||
root = true
|
||||
|
||||
[*]
|
||||
end_of_line = lf
|
||||
insert_final_newline = true
|
||||
charset = utf-8
|
||||
|
||||
[*.{js,ts,json,mts,css}]
|
||||
indent_style = space
|
||||
indent_size = 2
|
||||
@@ -1,7 +1,4 @@
|
||||
export DIRENV_WARN_TIMEOUT=20s
|
||||
|
||||
#!/usr/bin/env bash
|
||||
eval "$(devenv direnvrc)"
|
||||
|
||||
# The use_devenv function supports passing flags to the devenv command
|
||||
# For example: use devenv --impure --option services.postgres.enable:bool true
|
||||
dotenv
|
||||
use devenv
|
||||
|
||||
@@ -0,0 +1,26 @@
|
||||
name: deploy
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- main
|
||||
|
||||
jobs:
|
||||
deploy:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v7
|
||||
- uses: cachix/install-nix-action@v31
|
||||
with:
|
||||
nix_path: nixpkgs=channel:nixos-unstable
|
||||
- uses: cachix/cachix-action@v16
|
||||
with:
|
||||
name: phundrak
|
||||
authToken: ${{ secrets.CACHIX_AUTH_TOKEN }}
|
||||
extraPullNames: devenv
|
||||
- name: Install devenv
|
||||
run: nix profile add nixpkgs#devenv
|
||||
- name: Deploy to Cloudflare Pages
|
||||
env:
|
||||
CLOUDFLARE_API_TOKEN: ${{ secrets.CLOUDFLARE_API_TOKEN }}
|
||||
CLOUDFLARE_ACCOUNT_ID: ${{ secrets.CLOUDFLARE_ACCOUNT_ID }}
|
||||
run: devenv tasks run website:deploy
|
||||
@@ -1,40 +0,0 @@
|
||||
name: deploy
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- main
|
||||
|
||||
jobs:
|
||||
build:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
- uses: purcell/setup-emacs@master
|
||||
with:
|
||||
version: 29.1
|
||||
- name: "Export org to md"
|
||||
run: emacs -Q --script export.el
|
||||
- uses: actions/setup-node@v4
|
||||
with:
|
||||
node-version: 20.x
|
||||
- run: corepack enable
|
||||
- run: npm ci
|
||||
- run: npm run build
|
||||
- name: "Deploy to Cloudflare Pages"
|
||||
uses: cloudflare/pages-action@v1
|
||||
with:
|
||||
apiToken: ${{ secrets.CLOUDFLARE_API_TOKEN }}
|
||||
accountId: ${{ secrets.ACCOUNT_ID }}
|
||||
projectName: config-phundrak-com
|
||||
directory: docs/.vuepress/dist/
|
||||
githubToken: ${{ secrets.TOKEN }}
|
||||
# - name: "Deploy to remote server"
|
||||
# uses: appleboy/scp-action@v0.1.4
|
||||
# with:
|
||||
# host: ${{ secrets.HOST }}
|
||||
# username: ${{ secrets.USERNAME }}
|
||||
# key: ${{ secrets.KEY }}
|
||||
# port: ${{ secrets.PORT }}
|
||||
# source: docs/.vuepress/dist/*
|
||||
# target: ${{ secrets.DESTPATH }}
|
||||
# strip_components: 3
|
||||
@@ -1,13 +1,31 @@
|
||||
node_modules
|
||||
/docs/**/*.md
|
||||
|
||||
# Vitepress
|
||||
/.vitepress/cache/
|
||||
/.vitepress/dist/
|
||||
/docs/.vitepress/
|
||||
/docs/img
|
||||
/docs/eittlandic/img
|
||||
/docs/proto-nyqy/img
|
||||
.temp
|
||||
.cache
|
||||
/docs/**/*.md
|
||||
/docs/.vuepress/dist/
|
||||
/.yarn/
|
||||
|
||||
# Devenv
|
||||
.devenv*
|
||||
devenv.local.nix
|
||||
devenv.local.yaml
|
||||
|
||||
# direnv
|
||||
.direnv
|
||||
|
||||
# pre-commit
|
||||
.pre-commit-config.yaml
|
||||
|
||||
# Devenv
|
||||
.devenv*
|
||||
devenv.local.nix
|
||||
devenv.local.yaml
|
||||
|
||||
# direnv
|
||||
.direnv
|
||||
|
||||
@@ -1,9 +1,13 @@
|
||||
{
|
||||
"$schema": "https://json.schemastore.org/prettierrc",
|
||||
"semi": true,
|
||||
"tabWidth": 2,
|
||||
"useTabs": false,
|
||||
"semi": true,
|
||||
"singleQuote": true,
|
||||
"trailingComma": "all",
|
||||
"quoteProps": "as-needed",
|
||||
"printWidth": 100,
|
||||
"trailingComma": "es5",
|
||||
"bracketSpacing": true,
|
||||
"bracketSameLine": true,
|
||||
"arrowParens": "always"
|
||||
}
|
||||
|
||||
@@ -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>
|
||||
@@ -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: "P’undrak’s Dotfiles",
|
||||
cleanUrls: true,
|
||||
description: 'P’undrak’s 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]
|
||||
}
|
||||
},
|
||||
})
|
||||
@@ -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: 'P’undrak’s Dotfiles',
|
||||
},
|
||||
{
|
||||
property: 'og:description',
|
||||
content: 'P’undrak’s 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;
|
||||
@@ -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' },
|
||||
]
|
||||
@@ -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' },
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -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;
|
||||
@@ -3,11 +3,11 @@
|
||||
"devenv": {
|
||||
"locked": {
|
||||
"dir": "src/modules",
|
||||
"lastModified": 1777679510,
|
||||
"narHash": "sha256-uG8LPb1useAwa0cjO5sEkYhCSPjbWiCH3DyNxQLVSck=",
|
||||
"lastModified": 1783538213,
|
||||
"narHash": "sha256-jNjKlmrejUrBgVAeiavlMLlkmC7ZEv1D9nhfuwMW5Q8=",
|
||||
"owner": "cachix",
|
||||
"repo": "devenv",
|
||||
"rev": "bc8b21628907c726c74094cedc439c10a455cdb7",
|
||||
"rev": "d1fb321e73048d0e1e2b523580268ebb3df2ae90",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
@@ -22,11 +22,11 @@
|
||||
"nixpkgs-src": "nixpkgs-src"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1776852779,
|
||||
"narHash": "sha256-WwO/ITisCXwyiRgtktZgv3iGhAGO+IB5Av4kKCwezR0=",
|
||||
"lastModified": 1783345554,
|
||||
"narHash": "sha256-LZhOm4kqjHUnwP4CNHpaqqEVcumGNd1PvOEOad8LkS0=",
|
||||
"owner": "cachix",
|
||||
"repo": "devenv-nixpkgs",
|
||||
"rev": "ec3063523dcd911aeadb50faa589f237cdab5853",
|
||||
"rev": "6004ea8c229fe9d41b21c6f4c76bf6c2e10771dd",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
@@ -39,11 +39,11 @@
|
||||
"nixpkgs-src": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1776329215,
|
||||
"narHash": "sha256-a8BYi3mzoJ/AcJP8UldOx8emoPRLeWqALZWu4ZvjPXw=",
|
||||
"lastModified": 1783279667,
|
||||
"narHash": "sha256-/NAkDSsve+GNM0Bt6tleJdCGfsTlK89nPjkVOzZMo0s=",
|
||||
"owner": "NixOS",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "b86751bc4085f48661017fa226dee99fab6c651b",
|
||||
"rev": "f205b5574fd0cb7da5b702a2da51507b7f4fdd1b",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
|
||||
@@ -1,9 +1,40 @@
|
||||
{ pkgs, ... }:
|
||||
|
||||
{
|
||||
languages.typescript.enable = true;
|
||||
packages = [ pkgs.nodejs_20 ];
|
||||
scripts.export.exec = ''
|
||||
${pkgs.emacs}/bin/emacs -Q --script export.el
|
||||
{ pkgs, ... }: {
|
||||
languages.javascript = {
|
||||
enable = true;
|
||||
npm.enable = false;
|
||||
pnpm.enable = true;
|
||||
};
|
||||
dotenv.enable = true;
|
||||
processes.dev.exec = "pnpm dev";
|
||||
cachix = {
|
||||
push = "phundrak";
|
||||
pull = [
|
||||
"phundrak"
|
||||
"devenv"
|
||||
];
|
||||
};
|
||||
tasks = {
|
||||
"website:install-deps".exec = "pnpm ci";
|
||||
"website:export-md" = {
|
||||
exec = "${pkgs.emacs}/bin/emacs -Q --script export.el";
|
||||
execIfModified = [ "docs/**/*.org" ];
|
||||
};
|
||||
"website:build" = {
|
||||
exec = "pnpm build";
|
||||
after = [
|
||||
"website:export-md@succeeded"
|
||||
"website:install-deps@succeeded"
|
||||
];
|
||||
};
|
||||
"website:deploy" = {
|
||||
exec = ''
|
||||
if [[ -z "''${CLOUDFLARE_API_TOKEN:-}" ]]; then
|
||||
echo "Error: CLOUDFLARE_API_TOKEN is not set. Run this in CI only."
|
||||
exit 1
|
||||
fi
|
||||
${pkgs.wrangler}/bin/wrangler pages deploy
|
||||
'';
|
||||
after = [ "website:build@succeeded" ];
|
||||
};
|
||||
};
|
||||
}
|
||||
|
||||
@@ -3,11 +3,14 @@ inputs:
|
||||
nixpkgs:
|
||||
url: github:cachix/devenv-nixpkgs/rolling
|
||||
|
||||
# If you're using non-OSS software, you can set allowUnfree to true.
|
||||
# allowUnfree: true
|
||||
# If you're using non-OSS software, you can set allow_unfree to true.
|
||||
# allow_unfree: true
|
||||
|
||||
# If you're not willing to allow unsupported packages:
|
||||
# allow_unsupported_system: false
|
||||
|
||||
# If you're willing to use a package that's vulnerable
|
||||
# permittedInsecurePackages:
|
||||
# permitted_insecure_packages:
|
||||
# - "openssl-1.1.1w"
|
||||
|
||||
# If you have more than one devenv you can merge them
|
||||
|
||||
@@ -83,6 +83,7 @@ Undefining some stuff to make keybind prefixes work correctly.
|
||||
<<general-keybindings-gen(table=keybindings-refactor, prefix="r")>>
|
||||
<<general-keybindings-gen(table=keybindings-toggle, prefix="t ")>>
|
||||
<<general-keybindings-gen(table=keybindings-text, prefix="T")>>
|
||||
<<general-keybindings-gen(table=keybindings-vc, prefix="v")>>
|
||||
<<general-keybindings-gen(table=keybindings-windows, prefix="w")>>
|
||||
<<general-keybindings-gen(table=keybindings-quit, prefix="q")>>)
|
||||
#+end_src
|
||||
@@ -499,6 +500,26 @@ My toggle keybindings are prefixed by ~t~.
|
||||
| is | set-input-method | |
|
||||
|
||||
*** TODO Rewrite =my/modify-frame-alpha-background/body= :noexport:
|
||||
** VCS
|
||||
Magit is awesome, but I rarely use it nowadays in favour of [[https://jj-vcs.github.io/][Jujutsu]].
|
||||
And for that, I use =vc.el= in Emacs thanks to =vc-jj= (see [[file:./packages/applications.md#Jujutsu][my Jujutsu
|
||||
config for Emacs]]). But this is only half the story, let me now set my
|
||||
keybinds for =vc.el=. ethey are all prefixed by =v=.
|
||||
|
||||
#+name: keybindings-vc
|
||||
| Key | Function | Description | Package |
|
||||
|-----+-----------------------+-------------+---------|
|
||||
| a | vc-annotate | | vc |
|
||||
| r | vc-revset | | vc |
|
||||
| | | VCS | |
|
||||
| j | | jujutsu | |
|
||||
| ja | vc-jj-abandon-change | abandon | vc-jj |
|
||||
| jb | | bookmarks | |
|
||||
| jbd | vc-jj-bookmark-delete | delete | vc-jj |
|
||||
| jbr | vc-jj-bookmark-rename | rename | vc-jj |
|
||||
| jbs | vc-jj-bookmark-set | set | vc-jj |
|
||||
| je | vc-jj-edit-change | edit | vc-jj |
|
||||
| jn | vc-jj-new-change | new | vc-jj |
|
||||
|
||||
** Windows
|
||||
A couple of keybindings are hidden from which-key, otherwise there’s not
|
||||
|
||||
@@ -1530,9 +1530,10 @@ compatible with git repositories. In fact, I pretty much don’t use git
|
||||
anymore, jj (abbreviation of Jujutsu) has almost completely replaced
|
||||
git for me.
|
||||
|
||||
I like Magit’s interface, as you can see in my [[file:./applications.md#magit][Magit]] config.
|
||||
Therefore, let’s install =majjit=, my slow and scuffed attempt at
|
||||
bringing some Magit features to jujutsu.
|
||||
I like Magit’s interface, as you can see in my [[file:./applications.md#magit][Magit]] config. But
|
||||
reimplementing it entirely probably won’t happen on my end (lack of
|
||||
time, mainly), so I’ll leave that up to people more motivated than me.
|
||||
In the meantime, I can reimplement some of its API with =majjit=.
|
||||
#+begin_src emacs-lisp
|
||||
(use-package majjit
|
||||
:defer t
|
||||
@@ -1544,6 +1545,22 @@ bringing some Magit features to jujutsu.
|
||||
:custom ((majjit-default-directory "~/code/")))
|
||||
#+end_src
|
||||
|
||||
Speaking of other projects others did better, I use =vc-jj=, which
|
||||
brings basic jujutsu support to =project.el= and =vc.el=. And I’ll just
|
||||
add my grain of salt to force =project.el= to recognize jujutsu
|
||||
repositories as projects.
|
||||
#+begin_src emacs-lisp
|
||||
(use-package vc-jj
|
||||
:straight (:build t)
|
||||
:after '(project vc)
|
||||
:config
|
||||
(add-to-list 'project-vc-extra-root-markers ".jj")
|
||||
:init
|
||||
(require 'project)
|
||||
(require 'vc)
|
||||
(require 'vc-jj))
|
||||
#+end_src
|
||||
|
||||
Though, I’ll be honest, I generally prefer to use Jujutsu in the
|
||||
terminal, unlike git. Something I do use Emacs for, however, is
|
||||
writing my commit messages.
|
||||
@@ -1556,12 +1573,6 @@ writing my commit messages.
|
||||
:init (add-to-list 'auto-mode-alist '("\\.jjdescription\\'" . jjdescription-mode)))
|
||||
#+end_src
|
||||
|
||||
And I want Emacs to know that any directory which has a =.jj= repository
|
||||
is the root of a project.
|
||||
#+begin_src emacs-lisp
|
||||
;;(add-to-list 'project-vc-extra-root-markers ".jj")
|
||||
#+end_src
|
||||
|
||||
*** Forge
|
||||
Forge acts as an interface for GitHub, GitLab, and Bitbucket inside
|
||||
Magit. A lot of possibilities are present, you can read issues and
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
#+title: Emacs — Packages — EXWM (Deprecated)
|
||||
#+setupfile: ../../headers
|
||||
#+property: header-args:emacs-lisp :mkdirp yes :lexical t :exports code
|
||||
#+property: header-args:emacs-lisp+ :tangle ~/.config/emacs/lisp/exwm.el
|
||||
#+property: header-args:emacs-lisp+ :tangle no
|
||||
#+property: header-args:emacs-lisp+ :mkdirp yes :noweb no-export
|
||||
|
||||
* EXWM (Deprecated)
|
||||
@@ -47,7 +47,7 @@ easily.
|
||||
|
||||
In order to launch Emacs with EXWM with ~startx~, I need a ~xinit~ file.
|
||||
This one is exported to ~$HOME/.xinitrc.emacs~.
|
||||
#+begin_src sh :tangle ~/.xinitrc.emacs :shebang "#!/bin/sh"
|
||||
#+begin_src sh :tangle no :shebang "#!/bin/sh"
|
||||
xhost +SI:localuser:$USER
|
||||
|
||||
# Set fallback cursor
|
||||
|
||||
@@ -455,6 +455,10 @@ Yes, I love org-mode and I largely prefer to use it instead of
|
||||
Markdown due to its far superior power and abilities. But still,
|
||||
sometimes I need to use Markdown because not everyone uses org-mode,
|
||||
unfortunately.
|
||||
|
||||
I prefer to use =pandoc= to =markdown= as my =markdown-command=, as it
|
||||
better handles modern Markdown, including Github’s dialect, which
|
||||
=markdown= has troubles with.
|
||||
#+begin_src emacs-lisp
|
||||
(use-package markdown-mode
|
||||
:defer t
|
||||
@@ -465,6 +469,9 @@ unfortunately.
|
||||
("\\.mdx\\'" . markdown-mode))
|
||||
:hook (markdown-mode . orgtbl-mode)
|
||||
:hook (markdown-mode . visual-line-mode)
|
||||
:config
|
||||
(setq markdown-fontify-code-blocks-natively t
|
||||
markdown-command '("," "pandoc" "--from=markdown" "--to=html5"))
|
||||
:general
|
||||
(phundrak/evil
|
||||
:keymaps 'markdown-mode-map
|
||||
@@ -550,9 +557,7 @@ unfortunately.
|
||||
"xp" #'markdown-insert-pre
|
||||
"xP" #'markdown-pre-region
|
||||
"xs" #'markdown-insert-strike-through
|
||||
"xq" #'markdown-blockquote-region)
|
||||
:config
|
||||
(setq markdown-fontify-code-blocks-natively t))
|
||||
"xq" #'markdown-blockquote-region))
|
||||
#+end_src
|
||||
|
||||
Since most of my Markdown files are related to GitHub, I’d like to be
|
||||
@@ -704,6 +709,28 @@ When editing some scripts though, I need to use the built-in ~shell-mode~.
|
||||
:mode "/\\(Cargo.lock\\|\\.cargo/config\\)\\'")
|
||||
#+end_src
|
||||
|
||||
*** Typst
|
||||
[[https://typst.app/][Typst]] is an attempt at making a simpler LaTeX alternative with a quite
|
||||
simple language that still has some programming capabilities. In my
|
||||
case, I use [[https://codeberg.org/meow_king/typst-ts-mode/][typst-ts-mode]] to get a major mode for Typst, relying on
|
||||
[[https://github.com/uben0/tree-sitter-typst][uben0’s Typst treesitter module]].
|
||||
|
||||
#+begin_src emacs-lisp
|
||||
(use-package typst-ts-mode
|
||||
:defer t
|
||||
:straight (:build t))
|
||||
#+end_src
|
||||
|
||||
I also wrote a package that extends =lsp-mode= to support [[https://github.com/Myriad-Dreamin/tinymist][tinymist]] as an
|
||||
LSP server for Typst.
|
||||
#+begin_src emacs-lisp
|
||||
(use-package lsp-typst
|
||||
:after lsp-mode
|
||||
:mode "\\.typ\\'"
|
||||
:hook (typst-ts-mode . lsp-deferred)
|
||||
:straight (:build t :type git :repo "labs.phundrak.com/phundrak/lsp-typst"))
|
||||
#+end_src
|
||||
|
||||
*** Yaml
|
||||
#+begin_src emacs-lisp
|
||||
(use-package yaml-mode
|
||||
|
||||
@@ -6,6 +6,13 @@ Hi, I’m P’undrak (pronounced /PUN-drak/, or more exactly {{{phon(pʰynɖak̚
|
||||
also known as Lucien Cartier-Tilet. If you want to know more about me,
|
||||
you can head to my [[https://phundrak.com/en][main website]].
|
||||
|
||||
#+html: ::: warning
|
||||
This website is currently not maintained, aside from the Emacs part of
|
||||
it. If you want to see my current Linux configuration, head over to my
|
||||
[[https://labs.phundrak.com/phundrak/nix-config][NixOS configuration]]. This website will be, at some point, rewritten to
|
||||
reflect it.
|
||||
#+html: :::
|
||||
|
||||
This website is my collection of dotfiles for my daily GNU/Linux
|
||||
environment, tweaked to my liking. The sidebar will act as an index of
|
||||
the various tools I use and their configuration.
|
||||
|
Before Width: | Height: | Size: 323 KiB After Width: | Height: | Size: 323 KiB |
|
Before Width: | Height: | Size: 592 KiB After Width: | Height: | Size: 592 KiB |
|
Before Width: | Height: | Size: 4.3 MiB After Width: | Height: | Size: 4.3 MiB |
|
Before Width: | Height: | Size: 114 KiB After Width: | Height: | Size: 114 KiB |
|
Before Width: | Height: | Size: 415 KiB After Width: | Height: | Size: 415 KiB |
|
Before Width: | Height: | Size: 82 KiB After Width: | Height: | Size: 82 KiB |
|
Before Width: | Height: | Size: 32 KiB After Width: | Height: | Size: 32 KiB |
|
Before Width: | Height: | Size: 34 KiB After Width: | Height: | Size: 34 KiB |
|
Before Width: | Height: | Size: 34 KiB After Width: | Height: | Size: 34 KiB |
|
Before Width: | Height: | Size: 26 KiB After Width: | Height: | Size: 26 KiB |
|
Before Width: | Height: | Size: 30 KiB After Width: | Height: | Size: 30 KiB |
|
Before Width: | Height: | Size: 42 KiB After Width: | Height: | Size: 42 KiB |
|
Before Width: | Height: | Size: 6.3 KiB After Width: | Height: | Size: 6.3 KiB |
|
Before Width: | Height: | Size: 395 KiB After Width: | Height: | Size: 395 KiB |
@@ -1,30 +1,17 @@
|
||||
{
|
||||
"name": "config.phundrak.com",
|
||||
"version": "1.0.0",
|
||||
"version": "2.0.0",
|
||||
"description": "",
|
||||
"main": "index.js",
|
||||
"repository": {
|
||||
"type": "git",
|
||||
"url": "https://labs.phundrak.com/phundrak/conlang.phundrak.com"
|
||||
},
|
||||
"repository": "https://labs.phundrak.com/phundrak/config.phundrak.com",
|
||||
"author": "Lucien Cartier-Tilet <lucien@phundrak.com>",
|
||||
"license": "AGPL-3.0",
|
||||
"private": true,
|
||||
"devDependencies": {
|
||||
"@vuepress/bundler-vite": "2.0.0-rc.26",
|
||||
"@vuepress/plugin-slimsearch": "^2.0.0-rc.118",
|
||||
"@vuepress/plugin-umami-analytics": "2.0.0-rc.118",
|
||||
"@vuepress/theme-default": "2.0.0-rc.118",
|
||||
"baseline-browser-mapping": "^2.10.0",
|
||||
"sass-embedded": "^1.97.3",
|
||||
"vuepress": "2.0.0-rc.26"
|
||||
},
|
||||
"dependencies": {
|
||||
"less": "^4.4.2",
|
||||
"nord": "^0.2.1"
|
||||
"vitepress": "^2.0.0-alpha.18"
|
||||
},
|
||||
"scripts": {
|
||||
"dev": "vuepress dev docs",
|
||||
"build": "vuepress build docs"
|
||||
"dev": "vitepress dev",
|
||||
"build": "vitepress build"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,3 @@
|
||||
allowBuilds:
|
||||
'@parcel/watcher': true
|
||||
esbuild: true
|
||||
@@ -0,0 +1,7 @@
|
||||
// -*- mode: json-ts; -*-
|
||||
{
|
||||
"$schema": "node_modules/wrangler/config-schema.json",
|
||||
"name": "config-phundrak-com",
|
||||
"pages_build_output_dir": ".vitepress/dist/",
|
||||
"compatibility_date": "2026-07-11"
|
||||
}
|
||||