Skip to content

Instantly share code, notes, and snippets.

@jklapacz
jklapacz / gist:d5ede190d32359f950b0d9ead45389fc
Created March 5, 2021 13:22 — forked from rmondello/gist:b933231b1fcc83a7db0b
Exporting (iCloud) Keychain and Safari credentials to a CSV file

Exporting (iCloud) Keychain and Safari credentials to a CSV file

After my dad died, I wanted to be able to have access any of his online accounts going forward. My dad was a Safari user and used iCloud Keychain to sync his credentials across his devices. I don’t want to have to keep an OS X user account around just to access his accounts, so I wanted to export his credentials to a portable file.

This is the process I used to create a CSV file of his credentials in the format “example.com,user,pass”. This portable format would be pretty easy to import into 1Password or Safari in the future.

The way I went about this isn’t great; it opens up more opportunities for apps to control one’s Mac through Accessibility APIs, it writes plaintext passwords to disk, and it could use some cleaning up. A better approach might leverage the security command line tool that ships with OS X. That said, I found this method to be a fun illustration of what’s possible us

Since macOS Catalina, the root drive is read-only. The solution is to create a separate APFS volume and a “synthetic” /nix directory which points to it:

# Check if /nix exists, if not:
echo 'nix' | sudo tee -a /etc/synthetic.conf
# this will create a "synthetic" empty directory /nix

# REBOOT so macOS sees the synthetic directory

# After rebooting, create an APFS volume for Nix
@jklapacz
jklapacz / nix-on-macos-catalina.md
Created January 29, 2021 19:50 — forked from chriselsner/nix-on-macos-catalina.md
Nix on macOS Catalina

Nix on macOS Catalina

I'm writing this gist for my own records but it might help someone else too.

Installing Nix

Support for Catalina has improved a lot since the update was first rolled out.

Note: See the NixOS manual for discussion of the --darwin-use-unencrypted-nix-store-volume option.

@jklapacz
jklapacz / machine.js
Last active May 14, 2020 12:39
Generated by XState Viz: https://xstate.js.org/viz
// Available variables:
// - Machine
// - interpret
// - assign
// - send
// - sendParent
// - spawn
// - raise
// - actions
// - XState (all XState exports)
@jklapacz
jklapacz / example_table.js
Created March 21, 2019 15:34
Table example
import React, { useEffect, useState } from 'react';
import { Button } from '@blueprintjs/core';
import { Cell, Column, Table } from '@blueprintjs/table';
import axios from 'axios';
const cellRenderer = (data: Driver[] | undefined) => (rowIndex: number) => {
if (data && rowIndex) {
console.log('hey', data, rowIndex, data[rowIndex]);
return <Cell>{data[rowIndex]}</Cell>;