Skip to content

Instantly share code, notes, and snippets.

View varqox's full-sized avatar

Krzysztof Małysa varqox

View GitHub Profile
@varqox
varqox / install_debian_with_debootstrap_howto.md
Last active April 14, 2024 21:18
Instructions how to install Debian using debootstrap
@varqox
varqox / sql.hh
Last active April 8, 2024 21:46
Constructing SQL queries in compile time
#pragma once
// #include <simlib/meta/concated_to_cstr.hh>
#include <array>
#include <cstddef>
#include <utility>
namespace meta {
template <char... chars>
@varqox
varqox / recording_application_and_microphone.md
Last active March 7, 2024 17:59
How to record multiple applications and microphone into one audio file on Linux using PulseAudio

How to record multiple applications and microphone into one audio file on Linux

Step 0. Terminology

Sinks are for output, sources are for input. To stream source to sink a loopback must be created. More shall you find there.

Step 1. Create output sink that will be recorded

Our output sink will be named recording.

pacmd load-module module-null-sink sink_name=recording sink_properties=device.description=recording
@varqox
varqox / create-combined-sink.sh
Created March 1, 2024 17:29
Select and create combined sink node with Pipewire and set it as default Pulseaudio sink (output)
#!/bin/bash
set -euo pipefail
list_sinks() {
pw-cli list-objects Node | grep -P '^\s+id |^\s+node\.name|^\s+media\.class = "Audio/Sink"' | grep 'media\.class' -B 2 --no-group-separator | paste -sd' \n' | sed 's/^\s*id [0-9]*, type .*node\.name = "\([^"]*\)".*/\1/' | (grep -vP "^($1)$" || true)
}
pactl unload-module module-combine-sink 2> /dev/null
selected_names_regex=''
@varqox
varqox / merge-sim-project.sh
Created February 25, 2024 16:04
Merge 3 git repositories into one having the same (empty) initial commit
#!/bin/bash
set -exuo pipefail
rm -rf sim-project
git init sim-project
cd sim-project
git commit -m 'Initial commit' --allow-empty
INITIAL_COMMIT=$(git rev-parse @)
@varqox
varqox / system-installation-guide.md
Last active August 30, 2023 11:42
Guide for what to do just after installing a bare Arch Linux to get *my* full-fledged XFCE desktop Arch Linux and some other random Linux stuff

Before rebooting after making fresh Arch installation

  • make sure to install grub using grub-install and configure it properly using grub-mkconfig -o /boot/grub/grub.cfg (for uefi it is not so easy), but before running grub-mkconfig install intel-ucode or amd-ucode
  • install networkmanager vim htop net-tools wireless_tools # net-tools for ifconfig, wireless_tools for iwconfig
  • remember to configure pacman mirrors properly see /etc/pacman.d/mirrorlist
  • reboot

On a fresh Arch installation

  • systemctl enable --now NetworkManager
  • use nmtui to connect to internet
  • install git man-pages procps-ng # procps-ng for pkill
@varqox
varqox / INSTALL.sh
Last active February 16, 2023 16:15 — forked from ephemient/⁄etc⁄pacman.d⁄hooks⁄linux-modules-post.hook
(Arch Linux) Keep current modules around during kernel upgrade ("30" is in the name to run before DMKS remove ("90" for install) when upgrading kernel)
#/bin/sh
# Run: curl 'https://gist.githubusercontent.com/varqox/a4e5abd490059844e0e521db531a9d8f/raw/e69686e6b63791ef82fc3e182689986ffe838a53/INSTALL.sh' | sudo sh
curl 'https://gist.githubusercontent.com/varqox/a4e5abd490059844e0e521db531a9d8f/raw/85e25433f2f67576ea82b38a7cd461d424376901/%25E2%2581%2584usr%25E2%2581%2584share%25E2%2581%2584libalpm%25E2%2581%2584hooks%25E2%2581%258430-linux-modules-pre.hook' | sudo tee /usr/share/libalpm/hooks/30-linux-modules-pre.hook
curl 'https://gist.githubusercontent.com/varqox/a4e5abd490059844e0e521db531a9d8f/raw/85e25433f2f67576ea82b38a7cd461d424376901/%25E2%2581%2584usr%25E2%2581%2584share%25E2%2581%2584libalpm%25E2%2581%2584hooks%25E2%2581%258490-linux-modules-post.hook' | sudo tee /usr/share/libalpm/hooks/90-linux-modules-post.hook
curl 'https://gist.githubusercontent.com/varqox/a4e5abd490059844e0e521db531a9d8f/raw/85e25433f2f67576ea82b38a7cd461d424376901/%25E2%2581%2584etc%25E2%2581%2584tmpfiles.d%25E2%2581%2584linux-modules-cleanup.conf' | sudo tee /etc/tmpfiles.d
@varqox
varqox / secure_eduroam.md
Created October 6, 2021 21:30
How to setup a *secure* eduroam connection for University of Warsaw students on Linux

Introduction

This tutorial covers using NetworkManager with either wpa_supplicant or IWD backend. If you did not heard of IWD, it is propbable your NetworkManager uses wpa_supplicant.

wpa_supplicant

  1. Edit connection and set:
  • Authentication to Protected EAP (PEAP)
  • Anonymous identity to anonymous@uw.edu.pl
  • Domain to eduroam.uw.edu.pl
  • CA certificate to file located at /etc/ssl/certs/Comodo_AAA_Services_root.pem
  • Uncheck No CA certifcate is required
@varqox
varqox / backup
Last active October 12, 2021 15:26
Backup script (copy it to root directory of your project and run it every time you want to make a backup)
#!/bin/sh
set -e
cd -P -- "$(dirname -- "$0")" # chdir to script directory
out_file="$HOME/backup/$(echo ${PWD#$HOME/} | sed 's@/@,@g').tar.zst"
((git ls-files -z --cached --recurse-submodules 2> /dev/null &&
git ls-files -z --others --exclude-standard &&
PROJECT_DIR=$PWD git submodule foreach --quiet 'git ls-files -z -o --exclude-standard | while read -d "" x; do echo -n "${PWD#$PROJECT_DIR/}/$x"; echo -ne "\0"; done' &&
@varqox
varqox / unlint.cc
Last active August 19, 2021 14:19
Unlimited int (unlint) - all in one
#include <cstring>
#include <stack>
#include <iostream>
#ifndef __UNLINT_H
#define __UNLINT_H
#include <bits/localefwd.h>
#include <string>
#include <vector>