Skip to content

Instantly share code, notes, and snippets.

View coderofsalvation's full-sized avatar

Coder of Salvation / Leon van Kammen coderofsalvation

View GitHub Profile
@coderofsalvation
coderofsalvation / load_remote_GLTF_extras_metadata.gd
Last active May 8, 2024 10:15
programmatically read extras / custom properties from remote GLTF in Godot 4 gdscript
# For more sophisticated use of loading remote GLTF (with extras) use the xrfragment.org spec & xrfragment.gd script
# XRFRAGMENT.ORG is a mini-spec which standardizes 3D metadata without fileformat or platform lock-in
#
# Usage:
#
# load("https://xrfragment.org/index.glb")
# var doc = GLTFDocument.new()
# var state = GLTFState.new()
# #state.set_handle_binary_image(GLTFState.HANDLE_BINARY_EMBED_AS_BASISU) # Fixed in new Godot version (4.3 as I see) https://github.com/godotengine/godot/blob/17e7f85c06366b427e5068c5b3e2940e27ff5f1d/scene/resources/portable_compressed_texture.cpp#L116
# var error = doc.append_from_buffer(body, "", state)
@coderofsalvation
coderofsalvation / README.md
Last active March 1, 2024 19:20
Open Cubic Player Nix-file attempt (newbie needs help, this nix-file is stuck on libancient)

Due to lack of nix-skills I gave up on compiling it via nix (and ideally submitting it upstream). For now, I'm just using the AWESOME ocp player via this ~/bin/ocp shellscript:

#!/bin/bash
nix_windows(){
  test -d ~/apps/ocp || {
    mkdir ~/apps/ocp
 cd ~/apps/ocp
@coderofsalvation
coderofsalvation / nix-create-a-package-cheatsheet-2024.md
Last active January 6, 2024 09:58
nix create/tweak a package cheatsheet

Update a sha256/Hash

$ nix store prefetch-file <url>                                                                                        

build a derivation

  1. get default.nix from nixpkgs master-repo
  2. run the command below
@coderofsalvation
coderofsalvation / workflow.sh
Created December 20, 2023 08:42
parallel workflow orchestration using wait-cmd in shellscript #bash #parallel #shellscript #speedupCI #windmill #airflow
#!/bin/bash
#
# Q: how can I track & run tasks in parallel (speed up CI pipeline e.g.)
# confidently without introducing platforms like Apache
# Airflow or Windmilll?
#
# A: the 'wait' command in shellscript
#
set -eE && trap "echo '❌ halting flow'" ERR
run(){ time "$@" 2>&1 | sed "s/^/[$1] /g" | tee .log; }
@coderofsalvation
coderofsalvation / shell.nix
Created December 15, 2023 10:22
chatgpt's take on using packages of different versions in nix.shell (which seems to be what niv+nix-flakes solve too)
{ pkgs ? import <nixpkgs> {} }:
pkgs.mkShell {
buildInputs = [
# Packages from the default nixpkgs channel
pkgs.python
pkgs.vim
# Packages from another channel
(import (builtins.fetchTarball {
<!DOCTYPE html>
<html lang="en">
<head>
<title></title>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<style type="text/css">
#videos{
display:grid-auto-columns;
grid-column-gap:5px;
@coderofsalvation
coderofsalvation / app.sh
Last active December 12, 2023 18:15
podman rootless forgejo actions setup
#!/bin/sh
# below is based on this forgejo actions admin guide: https://forgejo.codeberg.page/docs/v1.20/admin/actions/
PORT=8621
TOKEN=XXXXXXX_REPLACE_TOKEN_HERE_XXXXXXXX
URL=https://yourinstancehere.org
UID=`id -u`
docker=`which docker || which podman`
test -d data || mkdir data
@coderofsalvation
coderofsalvation / visual-meta.js
Created November 21, 2023 09:29
visual-meta / bibtex parser (incl. sections & multiplex/demultiplex of text/metadata)
var bibtex = {
decode: (str) => {
// bibtex: ↓@ ↓<tag|tag{phrase,|{ruler}> ↓property ↓end
let pat = [ /@/, /^\S+[,{}]/, /},/, /}/ ]
let tags = [], text='', i=0, prop=''
let lines = str.replace(/\r?\n/g,'\n').split(/\n/)
for( let i = 0; i < lines.length && !String(lines[i]).match( /^@/ ); i++ )
text += lines[i]+'\n'
str = lines.join('\n').substr( text.length )
@coderofsalvation
coderofsalvation / README.md
Last active December 19, 2023 08:17
NixOS Lenovo ideapad s540 nvidia GTX1650 powersave

Welcome ideapad s540 GTX1650 Nix-friends (good news ahead)

I've spend way too long to get the NVIDIA-driver to work, as well as taming the overheating problem which has haunted my ideapad forever. I hope this config can save somebody else lots of time (please comment!), as I experienced weird catch22 scenarios because of the dual-video driver.

note: if you laptop still overheats, lower the CPU_SCALING_MAX_FREQ variables.

You can now run apps on the NVIDIA GPU by creating this nvidia-run shellscript-wrapper:

@coderofsalvation
coderofsalvation / say.sh
Created June 2, 2023 07:31
simple portable text to speech using ffmpeg or ffplay
#!/bin/sh
# usage: say hello # plays audio (ffplay)
# OUTPUT=/tmp/hello.wav say hello # saves wav (ffmpeg)
dbus_session_file=~/.dbus/session-bus/$(cat /var/lib/dbus/machine-id)-0
if [ -e "$dbus_session_file" ]; then
. "$dbus_session_file"
export DBUS_SESSION_BUS_ADDRESS DBUS_SESSION_BUS_PID
fi