Skip to content

Instantly share code, notes, and snippets.

@naranyala
Created July 27, 2025 06:27
Show Gist options
  • Select an option

  • Save naranyala/9aaf3ef47d6c0e7dc707879c6df58534 to your computer and use it in GitHub Desktop.

Select an option

Save naranyala/9aaf3ef47d6c0e7dc707879c6df58534 to your computer and use it in GitHub Desktop.
log your system packages into txt files regularly
import os, strformat, times, strutils, osproc, tables
let logDir = getHomeDir() / "package-logs"
let timestamp = now().format("yyyyMMdd'_'HHmmss")
createDir(logDir)
proc logPackages(manager, cmd: string) =
let logFile = logDir / fmt"{manager}-{timestamp}.txt"
echo fmt"📦 Logging {manager} packages..."
let args = cmd.splitWhitespace
let executable = args[0]
if findExe(executable) != "":
let output = execProcess(executable, args = args[1..^1], options = {poUsePath, poStdErrToStdOut})
writeFile(logFile, output)
echo fmt"✅ Saved to {logFile}"
else:
echo fmt"⚠️ {manager} not found, skipping."
let pkgManagers = {
"apt": "apt list --installed",
"brew": "brew list --versions",
"snap": "snap list",
"flatpak": "flatpak list --app --columns=application,version",
"nix": "nix profile list",
"cargo": "cargo install --list"
}.toTable
for manager, cmd in pkgManagers.pairs:
logPackages(manager, cmd)
echo fmt"\n📁 All logs saved in: {logDir}"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment