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 / URI.gd
Last active May 17, 2024 08:02
URI.gd: a Godot URL Parser #gdscript #openweb #https (document.location js-like object for Godot)
# URI/URL parser
#
# author: Leon van Kammen (coderofsalvation)
# SPDX-License-Identifier: MIT
# date: 16-05-2024
# comments: https://gist.github.com/coderofsalvation/b2b111a2631fbdc8e76d6cab3bea8f17
#
# Participants of the Open Web think & communicate in URI's: now with Godot (>=4) too!
# This class will not win the beauty contest related to RFC 3986, but here goes:
#
@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: