Skip to content

Instantly share code, notes, and snippets.

View ugovaretto's full-sized avatar

Ugo Varetto ugovaretto

View GitHub Profile
@ugovaretto
ugovaretto / hibernate.sh
Last active January 9, 2024 08:32
Setup eth card for wake on lan and hibernate
#!/usr/bin/env bash
#run with 'sudo ./hibernate.sh'
#argument is the name of the eth network adapter e.g. 'eno1'
ethtool -s $1 wol pumbg
systemctl hibernate
@ugovaretto
ugovaretto / atuin.fish
Created January 8, 2024 10:01
Atuin configuration file
#Atuin configuration for fish is broken as of 2024-1-8 (using $"(...)" instead of (...))
#Add source <this file> to $HOME/.config/fish/config.fish
set -gx ATUIN_SESSION (atuin uuid)
function _atuin_preexec --on-event fish_preexec
if not test -n "$fish_private_mode"
set -g ATUIN_HISTORY_ID (atuin history start -- "$argv[1]")
end
end
@ugovaretto
ugovaretto / multidispatch.py
Last active December 2, 2023 15:13
Minimal Python multidispatch framework
# Minimal Multidispatch example.
# Type safe: if types not included in overload set exception is raised
# Author: Ugo Varetto
# License SPDX: UPL-1.0 (Permissive license)
import sys
def __create_overload_table(obj):
if getattr(obj, '__overload_table', None):
@ugovaretto
ugovaretto / weztermdeps.sh
Created June 1, 2023 08:53
Wez term dependencies on Linux
sudo apt install libx11-xcb-dev libxcb-util libxcb-util-dev libxcb-image0-dev libxcb1-dev libxkbcommon-dev libxkbcommon-x11-dev
@ugovaretto
ugovaretto / config.kdl
Created May 28, 2023 12:25
zellij configuration
// If you'd like to override the default keybindings completely, be sure to change "keybinds" to "keybinds clear-defaults=true"
keybinds {
normal {
// uncomment this and adjust key if using copy_on_select=false
// bind "Alt c" { Copy; }
}
locked {
bind "Ctrl g" { SwitchToMode "Normal"; }
}
resize {
@ugovaretto
ugovaretto / config.toml
Last active May 28, 2023 13:34
helix configuration
theme = "tokyonight"
[editor]
line-number = "relative"
mouse = false
bufferline = "multiple"
rulers = [80]
[editor.statusline]
right = ["diagnostics", "selections", "position", "position-percentage", "file-encoding", "file-line-ending", "file-type"]
# Set prefix (Ctrl+a)
set-option -g prefix C-a
unbind-key C-a
bind-key C-a send-prefix
# Use Alt-arrow keys to switch panes (Alt+left/right/up/down)
bind -n M-Left select-pane -L
bind -n M-Right select-pane -R
bind -n M-Up select-pane -U
bind -n M-Down select-pane -D
@ugovaretto
ugovaretto / result-example.cpp
Last active May 8, 2023 03:28
Rust-style C++ Result implementation, supporting references
// Implementation of Result<Result,Error> type a la Rust.
// author: Ugo Varetto
// License: Zero-clause BSD
// SPDX identifier: 0BSD
#include "result.h"
//-----------------------------------------------------------------------------
Result<int, std::string> Foo(int i) {
if (i == 0) {
return Err(std::string("Error"));
} else {
@ugovaretto
ugovaretto / sha256.c
Last active April 26, 2023 13:56
SHA256 implementation
// sha256.c - SHA256 reference implementation
//
//-----------------------------------------------------------------------------
#include <assert.h>
#include <stdint.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
//-----------------------------------------------------------------------------
cabal-version: 3.4
-- The cabal-version field refers to the version of the .cabal specification,
-- and can be different from the cabal-install (the tool) version and the
-- Cabal (the library) version you are using. As such, the Cabal (the library)
-- version used must be equal or greater than the version stated in this field.
-- Starting from the specification version 2.2, the cabal-version field must be
-- the first thing in the cabal file.
-- Initial package description 'y' generated by
-- 'cabal init'. For further documentation, see: