Skip to content

Instantly share code, notes, and snippets.

View varqox's full-sized avatar

Krzysztof Małysa varqox

View GitHub Profile
@varqox
varqox / rust_async_callbacks_common_errors_pitfalls_solution.md
Last active October 1, 2024 11:56
Solution to Rust errors of kinds: "implementation of `Fn` is not general enough" (works with FnMut and FnOnce as well) or "lifetime may not live long enough"

Solution to Rust errors of kinds:

  • implementation of Fn is not general enough (works with FnMut and FnOnce as well)
  • lifetime may not live long enough
use std::future::Future;

trait Callback<Arg, Res> {
    type Output: Future<Output = Res>;
@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 / 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 / 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 [email protected]
  • 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 / 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 / recording_application_and_microphone.md
Last active August 16, 2024 15:09
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 / time_test.c
Last active April 27, 2019 10:52
Testy do trzeciego zadania zaliczeniowego z Systemów Operacyjnych
// Krzysztof Małysa
#include <assert.h>
#include <errno.h>
#include <math.h>
#include <signal.h>
#include <stdio.h>
#include <stdlib.h>
#include <sys/time.h>
#include <sys/types.h>
#include <sys/wait.h>
@varqox
varqox / wlan_auto_block.sh
Last active April 4, 2019 00:27
Network Manager enable wifi on ethernet (LAN) disconnect and disable it on ethernet (LAN) connect, works with openvpn (VPN) and disconnecting cable when laptop is suspended
#!/bin/sh
# Place in file: /etc/NetworkManager/dispatcher.d/pre-up.d/wlan_auto_block.sh
# Make the file safe for execution: sudo chmod 744 /etc/NetworkManager/dispatcher.d/pre-up.d/wlan_auto_block.sh
if [ "$1" = "enp3s0" ]; then
rfkill block wifi # rfkill is used for unblocking, so we have to use it for blocking
fi