Skip to content

Instantly share code, notes, and snippets.

View moqmar's full-sized avatar

Moritz Marquardt moqmar

View GitHub Profile
@moqmar
moqmar / build.sh
Last active October 2, 2019 18:08
Caddy build script
#!/bin/bash
#
# Build script for the Git version of https://caddyserver.com
#
# Requirements:
# - Go
# - jq (if using names instead of import paths for plugins)
# Usage:
# curl https://gist.githubusercontent.com/moqmar/ba77bd778e6ebc956eaa36388be3fcdd/raw | bash -s http.realip http.ipfilter http.cors http.expires http.ratelimit #[...]
@moqmar
moqmar / bootstrap.sh
Last active July 27, 2019 20:16
Set up a Debian/Ubuntu server with basic software and zsh.
#!/bin/bash
# bash -c ". <(curl -s https://gist.githubusercontent.com/moqmar/7b468d995619131e983d59bde253d9a0/raw)"
set -euo pipefail
IFS=$'\n\t'
shopt -s dotglob
auto=
if [ $# -gt 1 ]; then auto=$1; fi
<!doctype html>
<html>
<head>
<style>
* { box-sizing: border-box; }
body { margin: 0; padding: 0; display: flex; background: #2C2C39; min-height: 100vh; }
.input { width: 40%; padding: 25px; display: flex; flex-direction: column; }
textarea { flex-grow: 1; border: none; resize: none; margin-bottom: 25px; padding: 15px; background: rgba(255,255,255,0.1); color: #fff; }
textarea:last-child { margin-bottom: 0; }
.output { flex-grow: 1; padding: 25px 25px 25px 0; }
# Build the ubilinux kernel for the UP Boards. The script is built to be used with Docker.
# More information: https://wiki.up-community.org/Compile_ubilinux_kernel_from_source
# Usage: docker run -it --rm debian:9 sh -c 'wget ... && sh up-kernel-build.sh'
apt-get update
apt-get install -y git build-essential libncurses5-dev libssl-dev gcc g++ bc
git clone https://github.com/emutex/ubilinux-kernel.git -b upboard-4.9 linux-upboard
cd linux-upboard
make upboard_defconfig
@moqmar
moqmar / setup.sh
Last active February 5, 2019 20:46
#!/bin/sh
# Setup Packages
pacman -S yay
mkdir -p ~/.local/bin
wget https://gist.githubusercontent.com/moqmar/450ac6592028c742177bae71705e6e16/raw/autoyay -O ~/.local/bin/autoyay
chmod +x ~/.local/bin/autoyay
autoyay
# Setup Syncthing
@moqmar
moqmar / autoyay
Last active January 31, 2019 12:38
Bash script to apply a text file with a list of packages to add (package) and remove (!package) to an Arch-based system using yay. Written to keep two computers in sync, but can be used for a lot of purposes. The packages can be separated using spaces or newlines; line comments starting with # are supported, too.
#!/bin/sh
set -eu
IFS=$'\n\t'
# Bash script to apply a text file with a list of packages to add (package) and remove (!package) to an Arch-based
# system using yay. Written to keep two computers in sync, but can be used for a lot of purposes.
# The packages can be separated using spaces or newlines; line comments starting with # are supported, too.
# The packages file can be defined as a command line argument.
# Otherwise, it'll be taken from $XDG_PUBLICSHARE_DIR/packages.
// 1. Go to https://open.spotify.com/collection/tracks
// 2. Scroll to the very bottom so everything is loaded
// 3. Press F12 and paste the following code (obviously only if you understand what it does)
// 4. Press Ctrl+A and copy everything to a .csv file
document.documentElement.innerHTML = "<pre>Title\tArtist\tAlbum\n"
+ [...document.querySelectorAll(".tracklist .tracklist-row")]
.map(x => {
const e = x.querySelector(".TrackListRow__explicit-label");
if (e) e.parentElement.removeChild(e);
return x.querySelector(".tracklist-name").textContent + "\t" +
@moqmar
moqmar / rest-api.js
Last active June 24, 2018 15:22
fetch() wrapper for REST APIs
function RestApi(endpoint, options) {
this.endpoint = (endpoint || "/").replace(/\/$/, "");
this.options = options || {};
// Allow usage in queue, or in other places where the value of "this" is incorrect:
for (let method in ["GET", "POST", "PUT", "DELETE", "HEAD", "PATCH"].reduce((p,c)=>p[c]=1,{})) {
this[method] = RestApi.prototype[method].bind(this);
}
}
RestApi.fetchResponseHandler = function fetchResponseHandler(hardFail, res) {
return new Promise((resolve, reject) => {
@moqmar
moqmar / queue.js
Created June 14, 2018 08:10
Completely promise-based queue that works with functions returning promises and normal values.
// Completely promise-based queue that works with functions returning promises and normal values.
/*
function doSomething() {
return new Promise(y => setTimeout(() => y(), 3000));
}
// Using the singleton
for (let i = 0; i < 10; i++) Q(() => doSomething()).then(() => console.log(i));
@moqmar
moqmar / bridge.service
Last active May 28, 2018 17:18
Adding a network bridge with IP address under Linux
[Unit]
Description=Network Bridge
After=syslog.target network.target
[Service]
Type=onehot
ExecStart=/opt/bridge.sh
[Install]
WantedBy=multi-user.target