Skip to content

Instantly share code, notes, and snippets.

@dzogrim
dzogrim / postinstall-mba.sh
Last active June 8, 2025 14:55
script post-install pour Xubuntu 24.04.2 LTS sur MacBook Air 11"
#!/usr/bin/env bash
# Post-install script for Xubuntu 24 on MBA
# (MacBook Air Intel Core 2 Duo)
#
# Ce script post-install pour Xubuntu 24.04.2 LTS optimise un vieux MacBook Air 11"
# (Intel Core 2 Duo) en :
#
# - supprimant les paquets inutiles,
# - installant les pilotes nécessaires (audio, trackpad, webcam…),
@dzogrim
dzogrim / after-builder.sh
Created June 6, 2025 11:14
Safely deploy latest nixos image to USB stick after build for hardware tests
#!/usr/bin/env bash
# SPDX-License-Identifier: MIT
# after-builder.sh — Safely deploy latest sebos image to USB stick after build for hardware tests
# Author: Sébastien L.
# Description:
# This script installs the latest sebos_*.raw image from ./result/full to a USB stick mounted under /run/media/<user>/DATA.
# It writes metadata, computes hash, verifies it, and cleanly ejects the device.
# Dry-run by default, requires "APPLY" to take action.
set -euo pipefail
@dzogrim
dzogrim / init.lua
Created May 27, 2025 12:16
Imiter le comportement Linux-like triple-clic pour copier + clic molette pour coller
----------------------------------------------------------------------
-- Script Lua pour Hammerspoon : triple-clic pour copier + clic molette pour coller
--
-- Idéal pour imiter le comportement Linux-like (sélection puis clic molette pour coller),
-- mais en s'adaptant à macOS et en utilisant le presse-papiers standard.
--
-- Fonctionnalités :
-- - Déclenche un ⌘C (copier) automatique lorsqu'un triple-clic gauche rapide est détecté
-- et ce uniquement dans une liste d'applications autorisées (ex : outils de dév.).
-- - Déclenche un ⌘V (coller) lorsqu'on clique sur le bouton du milieu (molette).
@dzogrim
dzogrim / backup_remote_rsync.sh
Last active May 17, 2025 16:04
Secure remote rsync backup script from a mounted volume with validation, timestamped logs
#!/usr/bin/env bash
# SPDX-License-Copyright: 2025 Sébastien L.
# SPDX-License-Identifier: MIT
#
# Secure remote rsync backup script from a mounted volume with validation, timestamped logs, and three modes: dryrun, drycheck, and apply.
# (!) Please make sure to configure a local PASSWORD_FILE with 0600 mode.
#
# This script requires a properly configured remote rsync module,
# with correct security settings already in place (e.g., password, access control).
@dzogrim
dzogrim / aliases-type.sh
Created May 9, 2025 16:52
Finds macOS Finder aliases in the current directory, resolves their targets using `resolve-alias`, and for valid folder targets offers to replace each alias with a Unix symlink
#!/usr/bin/env bash
# This script finds macOS Finder aliases in the current directory,
# resolves their targets using `resolve-alias`, and for valid folder targets,
# offers to replace each alias with a Unix symlink to the original folder.
# Ensure resolve-alias is available
if ! command -v resolve-alias &> /dev/null; then
echo "❌ Error: 'resolve-alias' is not in your PATH."
echo "Please visit https://github.com/mattieb/resolve-alias and compile it first."
@dzogrim
dzogrim / truncate_filenames.sh
Created May 9, 2025 15:43
Truncate overly long filenames (>140 characters) in a given directory to prevent issues on SMB shares. This addresses a specific problem where very long filenames cause repeated backup behavior in Syncovery 10.17.5 when using SMB.
#!/usr/bin/env bash
set -euo pipefail
# ──────────────────────────────────────────────────────────────────────────────
# But : Tronquer les noms de fichiers trop longs (>140 caractères) dans un
# répertoire donné pour éviter des 'problèmes' sur des partages SMB.
# Ceci règle un problème particulier sur des noms très longs et SMB
# via l'application de sauvegarde Syncovery 10.17.5.
# Mode : Dry-run par défaut. Utiliser --APPLY pour appliquer les renommages.
@dzogrim
dzogrim / remove-MAU2.sh
Created March 28, 2025 19:52
Suppression complète de Microsoft AutoUpdate (MAU) sur macOS
#!/usr/bin/env bash
#
# remove-MAU2.sh — Suppression complète de Microsoft AutoUpdate (MAU) sur macOS
#
# Ce script supprime MAU et ses composants associés, y compris les fichiers de préférences, caches,
# agents, daemons, et entrées dans les containers sandboxés des apps Microsoft Office.
#
# Auteur : Sébastien L.
# Licence : MIT
# Date : 2025-03-28
@dzogrim
dzogrim / gdrive_to_whaller.py
Created March 26, 2025 11:07
Transfert récursif de dossiers Google Drive vers Whaller (via API)
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
gdrive_to_whaller.py
Transfert récursif de dossiers Google Drive vers Whaller (via API)
- Recrée l'arborescence
- Gère les fichiers
- Supporte un mode dry-run
- Log JSON et vérification de l'existence des dossiers
@dzogrim
dzogrim / gitea-migr-issues.sh
Created March 21, 2025 13:36
This script exports all issues, milestones, labels, and comments from a Gitea repository, then re-imports them into another Gitea repository via the API, preserving essential metadata.
#!/usr/bin/env bash
set -euo pipefail
# Ce script exporte toutes les issues, milestones, labels et commentaires d’un dépôt Gitea,
# puis les réimporte dans un autre dépôt Gitea via l’API, en conservant les métadonnées essentielles.
#
# ⚠️ Ce script n’est pas idempotent : il n’écrase pas les données existantes
# mais crée de nouveaux objets (issues, milestones, labels, commentaires).
# 👉 Il est donc à utiliser *une seule* fois par cible, sous peine de doublonnage massif.
# Pour un re-run, supprimez le projet ou videz les entités concernées avant de relancer !
@dzogrim
dzogrim / gitea-migr.sh
Created March 20, 2025 17:24
This script migrates repositories from a source Gitea instance to another Gitea instance
#!/usr/bin/env bash
# This script migrates repositories from a source Gitea instance to another Gitea instance.
# It clones all personal repositories from the source using HTTPS and pushes them to the
# destination using SSH, with an option for a default dry-run mode.
#
# USAGE:
# ./gitea-migr.sh # Runs in dry-run mode (NO actual cloning or pushing)
# ./gitea-migr.sh --no-dry-run # Performs the actual migration (cloning and pushing)