- Make sure you have a modern-ish version of Node.js installed.
- Type
npx https://gist.github.com/kfox/1280c2f0ee8324067dba15300e0f2fd3
- Connect to it from a client, e.g.
netcat
or similar:nc localhost 9000
{ config, pkgs, modulesPath, lib, system, ... }: | |
{ | |
imports = [ | |
(modulesPath + "/profiles/qemu-guest.nix") | |
]; | |
config = { | |
#Provide a default hostname | |
networking.hostName = lib.mkDefault "base"; |
0810 b' from ' | |
0678 b' ssh2' | |
00d8 b'%.48s:%.48s():%d (pid=%ld)\x00' | |
0708 b'%s' | |
0108 b'/usr/sbin/sshd\x00' | |
0870 b'Accepted password for ' | |
01a0 b'Accepted publickey for ' | |
0c40 b'BN_bin2bn\x00' | |
06d0 b'BN_bn2bin\x00' | |
0958 b'BN_dup\x00' |
;; How to translate LSP configuration examples into Eglot’s format: | |
;; | |
;; Usually LSP servers will say something like | |
;; | |
;; rust-analyzer.procMacro.attributes.enable (default: true) | |
;; | |
;; Translate that into a JSON LSP configuration, you get | |
;; | |
;; { | |
;; "rust-analyzer": { |
If your FIDO Key gots locked, because the fingerprint was not OK, then its quite easy to unlock the Yubikey FIDO BIO USB Key (if you know it!)
For me, only reset was possible over GUI with yubikey-manager, so the unlock requires shell command!
Install the yubikey-manager package:
Start by checking that there aren't any previous ssh keys inside the FIDO2 authenticator of your YubiKey. You can check if they exist by running the command below:
nix shell nixpkgs#yubikey-manager -c ykman fido credentials list
If the command above outputs a string mentioning "ssh" or "openssh", then you have already got a key generated and store on your YubiKey.
Before generating a new ssh key to store on your YubiKey you must consider which additional required authentication factors you want to use. Below you can see a table with the available factors and their corresponding command:
let candidates = """ACRID AIDER AIRED ARDRI AROID BIDER BIRDS BRAID BREID BRIDE CAIRD CARDI CIDER CRIED DAIRY DARIC DARIS DARZI DEAIR DERIG DIARY DICER DIKER DIMER DINAR DINER DIRAM DIRER DIRGE DIRKE DIRKS DIRLS DIRTS DIRTY DIVER DORIC DORIS DRAIL DRAIN DRIBS DRICE DRIED DRIER DRIES DRIFT DRILL DRILY DRINK DRIPS DRIPT DRIVE DROID DROIL DROIT DRUID DURZI EIDER FIORD FIRED FRIED GIRDS GRIDE GRIDS GRIND HIDER HIRED IDLER INDRI IRADE IRIDS IRKED IZARD JERID JIRDS LAIRD LIARD LIDAR LURID MARID MIRED MUDIR MURID NADIR NIDOR PADRI PARDI PRIDE PRIED RABID RADII RADIO RADIX RAIDS RAIRD RANID RAPID REBID REDIA REDID REDIP REIRD RESID RICED RIDER RIDES RIDGE RIDGY RIGID RILED RIMED RINDS RINDY RIPED RIVED RORID RUDIE SIDER SIRED THIRD THRID TIRED TRIAD TRIDE TRIED TRILD UNRID URSID VIRED VIRID WEIRD WIDER WIRED WRIED YAIRD YIRDS YRIVD""" | |
let wordList = candidates.Split(" ") |> List.ofArray | |
let fixedLetters = [(2, 'I')] |> Map.ofList | |
let excludedCharacters = "WE" | |
let includeLetters = [('R', [3]);('D',[4])] |> List.map |
My answer to: https://www.reddit.com/r/Clojure/comments/pcwypb/us_engineers_love_to_say_the_right_tool_for_the/ which asked to know when and at what is Clojure "the right tool for the job"?
My take is that in general, the right tool for the job actually doesn't matter that much when it comes to programming language.
There are only a few cases where the options of tools that can do a sufficiently good job at the task become limited.
That's why they are called: General-purpose programming languages, because they can be used generally for most use cases without issues.
Let's look at some of the dimensions that make a difference and what I think of Clojure for them:
#!/usr/bin/env -S deno run --allow-net --allow-read --allow-run | |
let tfVars: string; | |
try { | |
tfVars = Deno.readTextFileSync("./environments/STM.tfvars"); | |
} catch (error) { | |
console.error(error); | |
Deno.exit(1); | |
} |
Pick one of these approaches
Pick this approach if you want to show the status in the menu bar, like this https://share.getcloudapp.com/9Zu8Ok97
- Install https://github.com/tonsky/AnyBar
- Run it