Skip to content

Instantly share code, notes, and snippets.

🐧
🦀

Leandro Lisboa Penz lpenz

🐧
🦀
View GitHub Profile
@lpenz
lpenz / chroot-with-mounts
Created Jan 26, 2020
chroot script that mounts /dev, /proc, etc. in a private mount namespace
View chroot-with-mounts
#!/bin/bash
TARGET=${1-PWD}
shift
TMP=$(mktemp)
trap 'rm -f $TMP' EXIT
chmod u+x "$TMP"
set -e
@lpenz
lpenz / Vagrantfile-minikube
Created Mar 25, 2019
Vagrantfile that installs minkube in a VM and runs it there with vm-driver=none
View Vagrantfile-minikube
# -*- mode: ruby -*-
# vi: set ft=ruby :
# Vagrantfile API/syntax version. Don't touch unless you know what you're doing!
VAGRANTFILE_API_VERSION = "2"
Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
config.vm.box = "debian/stretch64"
# config.vm.box = "debian/buster64"
config.vm.provider "libvirt" do |v|
@lpenz
lpenz / steam-session.sh
Last active Jan 24, 2019
Start steam in a nested X server running icewm
View steam-session.sh
#!/bin/bash
set -e -x
DISPLAY_SESSION=:1
Xephyr "$DISPLAY_SESSION" -screen 1800x1000 &
PID_X=$!
trap 'kill "$PID_X"; wait "$PID_X"' EXIT
sleep 1
@lpenz
lpenz / SConstruct
Created Jan 20, 2019
SConstruct template with an action that renders jinja2 templates using data from an yaml file, while providing a markdown filter
View SConstruct
# SConstruct template with an action that renders jinja2 templates
# using data from an yaml file, while providing a markdown filter.
import yaml
import jinja2
import markdown
if False:
Environment = None
@lpenz
lpenz / Dockerfile
Created Oct 27, 2018
Dockerfile that creates a container that installs fluorite + electron locally
View Dockerfile
# You can use this Dockerfile to avoid having to install npm to
# get fluorine + electron installed locally.
# You still need node.js to run it, however.
# To use:
# docker build -t fluorine .
# docker run -it --rm -v $PWD:/home/user/work -e MY_UID=$UID fluorine
# The container will exit after fluorine + electron are set up; you can then
# remove the container with:
# docker rmi fluorine
# To run fluorine:
@lpenz
lpenz / minesweeper.hs
Created Nov 20, 2017
minesweeper kata in haskell, no output
View minesweeper.hs
import qualified Data.Map as Map
import Control.Monad
main :: IO ()
main = processOneField
processOneField :: IO ()
@lpenz
lpenz / nix-enter
Last active Mar 26, 2017
Enter a shell with ~/nix privately mounted in /nix, using mount namespaces. sudo required
View nix-enter
#!/bin/bash
set -e -x
TMP=$(mktemp)
trap 'rm -f $TMP' EXIT
chmod u+x "$TMP"
cat > "$TMP" <<END
sudo mkdir /nix
@lpenz
lpenz / pa-monofy-stereo
Last active Mar 26, 2017
Join audio sink channels into a single mono channel, for stereo audio files with sound in only a channel
View pa-monofy-stereo
#!/bin/bash
set -e -x
pacmd load-module module-remap-sink sink_name=mono master=$(pacmd list-sinks | grep -m 1 -oP 'name:\s<\K.*(?=>)') channels=2 channel_map=mono,mono
@lpenz
lpenz / ansible-apt-repos
Last active Jun 23, 2017
Install apt repositories with ansible
View ansible-apt-repos
#!/bin/bash
set -x -e -o pipefail
: for deb-multimedia keyring, browse http://www.deb-multimedia.org/pool/main/d/deb-multimedia-keyring/deb-multimedia-keyring
ansible -i localhost, -c local localhost -m apt_repository -a 'repo="deb http://www.deb-multimedia.org stable main non-free"'
ansible -i localhost, -c local localhost -m apt_repository -a 'repo="deb http://www.deb-multimedia.org testing main non-free"'
ansible -i localhost, -c local localhost -m apt_repository -a 'repo="deb http://www.deb-multimedia.org unstable main non-free"'
: for dropbox
@lpenz
lpenz / winclick
Created Nov 17, 2016
Click a window selected by name; uses xwininfo and xdotool
View winclick
#!/bin/bash
WINNAME="${1?usage: "$0" windowname}"
set -e
TMP=$(mktemp)
trap 'rm -f $TMP' EXIT
eval "$(xdotool getmouselocation --shell)"
You can’t perform that action at this time.