Skip to content

Instantly share code, notes, and snippets.

@Jip-Hop
Jip-Hop / README.md
Last active June 29, 2024 14:43
Simple comment preserving ConfigParser class to read/update/write INI files WITHOUT indented sections/keys/comments.

See the example usage inside configparser.py. Output when running the configparser.py file:

# Comments may appear before the first section

[Simple Values]
key = value
spaces in keys = allowed
spaces in values = allowed as well
spaces around the delimiter = obviously
@Jip-Hop
Jip-Hop / install_and_run.py
Created June 18, 2024 13:03
Python script which installs packages it requires with pip inside a venv that's created on the fly.
#!/usr/bin/env python3
import os
import sys
__requirements__ = {"docker==7.1.0"}
def _setup_env():
venv = os.path.join(os.path.dirname(__file__), ".venv")
@Jip-Hop
Jip-Hop / README.md
Last active April 9, 2024 07:20
Persistent Debian 'jail' on TrueNAS SCALE to install software (docker-compose, portainer, podman, etc.) with full access to all files via bind mounts. Without modifying the host OS at all thanks to systemd-nspawn!
@Jip-Hop
Jip-Hop / autorun.sh
Created February 28, 2021 17:01
Autorun Synology Hyper Backup and Integrity Check with Email Notifications
#!/bin/sh
# This script is to be used in combination with Synology Autorun:
# - https://github.com/reidemei/synology-autorun
# - https://github.com/Jip-Hop/synology-autorun
#
# You need to change the task_id to match your Hyper Backup task.
# Get it with command: more /usr/syno/etc/synobackup.conf
#
# I like to keep "Beep at start and end" disabled in Autorun, because I don't
@Jip-Hop
Jip-Hop / boot.sh
Last active June 21, 2023 17:38
Using Docker on TrueNAS SCALE (no Kubernetes)
#!/usr/bin/env bash
#
# Enable docker and docker-compose on TrueNAS SCALE (no Kubernetes)
#
# This script is a hack! Use it at your own risk!!
# Using this script to enable Docker is NOT SUPPORTED by ix-systems!
# You CANNOT use SCALE Apps while using this script!
#
# 1 Create a dedicated Docker zvol on one of your zpools: zfs create -V 100G data/_docker
@Jip-Hop
Jip-Hop / Dockerfile
Created March 26, 2023 07:15
Distroless alpine docker image: no shell, no package manager, no busybox. Only the specified packages + dependencies.
FROM alpine as bootstrap
# Optionally add e.g. coreutils (if you don't want to remove the shell)
ARG PACKAGES_TO_INSTALL="openjdk11-jre"
ARG REMOVE_SHELL=1
# Create rootfs folder and enable apk repo
RUN mkdir -p /rootfs/etc/apk && \
cp -a /etc/apk/repositories /rootfs/etc/apk/repositories && \
cp -a /etc/apk/keys /rootfs/etc/apk/keys
@Jip-Hop
Jip-Hop / pop-up-videos.js
Created October 3, 2021 10:18
Open all videos in a tab as pop-up windows. Basic (non-extension) version of https://github.com/Jip-Hop/pop-up-videos. To be copy-pasted in the browser console.
(function enable() {
var titleSuffixCounter = 0;
var popupWidth = 480;
var popupHeight = 270;
var xOffset = screen.availLeft,
yOffset = screen.availTop;
const data = {
windows: [],
@Jip-Hop
Jip-Hop / custom_tiny_core_read_only_notes.sh
Created April 25, 2021 18:09
Booting from Custom Tiny Core Linux for Read Only Filesystem (SED PBA) Notes
# references
# https://fabianstumpf.de/articles/tinycore_images.htm
# https://gist.github.com/dankrause/2a9ed5ed30fa7f9aaaa2
# https://github.com/Drive-Trust-Alliance/sedutil/wiki/Encrypting-your-drive
# follow these steps on Ubuntu
sudo su
qemu-img create core-image.img 120M -f raw
modprobe nbd max_part=8 && sleep 2 && qemu-nbd -c /dev/nbd0 core-image.img -f raw
@Jip-Hop
Jip-Hop / custom-tinycore.sh
Created April 25, 2021 18:07 — forked from dankrause/custom-tinycore.sh
Create a custom tinycore linux iso. Adjust the config at the beginning of the script, or supply a conf as the first arg. Requires xorriso.
#!/bin/bash
set -e
function cleanup() {
# clean up our temp folder
rm -rf "${TMPDIR}"
}
trap cleanup EXIT
@Jip-Hop
Jip-Hop / index.html
Created January 4, 2020 00:02
Native window open not transparent...
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Transparent!</title>
</head>
<body>
<h1>Transparent!</h1>
<!-- All of the Node.js APIs are available in this renderer process. -->
We are using Node.js <script>document.write(process.versions.node)</script>,