dotnix @main -
refs -
log -
-
https://git.jolheiser.com/dotnix.git
Signature
-----BEGIN SSH SIGNATURE-----
U1NIU0lHAAAAAQAAADMAAAALc3NoLWVkMjU1MTkAAAAgBTEvCQk6VqUAdN2RuH6bj1dNkY
oOpbPWj+jw4ua1B1cAAAADZ2l0AAAAAAAAAAZzaGE1MTIAAABTAAAAC3NzaC1lZDI1NTE5
AAAAQNV2ypUr5cG6JgaqJZ2osbCm1X3au7UigEXUSnTbB2Yl0ZclczYlG5s4R0zcE++aIh
v3789bqjk6imVzo7mpmQY=
-----END SSH SIGNATURE-----
diff --git a/apps/nogui/nushell.nix b/apps/nogui/nushell.nix
index 1d919a7446bf9365f407f801a78e6a2c53ca7739..5bad86c83f5524478ce38092a0f4483f42999377 100644
--- a/apps/nogui/nushell.nix
+++ b/apps/nogui/nushell.nix
@@ -31,6 +31,8 @@ };
xdg.configFile = {
"nushell/jolheiser.nu".source = ./nushell/jolheiser.nu;
programs.nushell = {
+ enable = true;
+ programs.nushell = {
{
};
}
diff --git a/apps/nogui/nushell/jolheiser.nu b/apps/nogui/nushell/jolheiser.nu
index ad1666a080d1c138bf9f437318cff4427863f090..09b3de6dd43ddba3bd2dbff138ccb1651ad8639a 100644
--- a/apps/nogui/nushell/jolheiser.nu
+++ b/apps/nogui/nushell/jolheiser.nu
@@ -100,5 +100,7 @@
## Other ##
$env.EDITOR = hx
+## Aliases ##
+
-## Aliases ##
+alias cat = bat
diff --git a/apps/nogui/nushell/ssh.nu b/apps/nogui/nushell/ssh.nu
new file mode 100644
index 0000000000000000000000000000000000000000..2c02adb50079878495a244dec118bfcf1a4dc829
--- /dev/null
+++ b/apps/nogui/nushell/ssh.nu
@@ -0,0 +1,89 @@
+export extern "ssh" [
+ destination?: string@"nu-complete ssh-host"
+ -4 # Forces ssh to use IPv4 addresses only.
+ -6 # Forces ssh to use IPv6 addresses only.
+ -A # Enables forwarding of connections from an authentication agent such as ssh-agent(1).
+ -a # Disables forwarding of the authentication agent connection.
+ -B: string # bind_interface
+ -b: string # bind_address
+ -C # Requests compression of all data
+ -c: string # cipher_spec
+ -D # [bind_address:]port
+ -E: string # log_file
+ -e # escape_char
+ -F: string # configfile
+ -f # Requests ssh to go to background just before command execution.
+ -G # Causes ssh to print its configuration after evaluating Host and Match blocks and exit.
+ -g # Allows remote hosts to connect to local forwarded ports
+ -I: string # pkcs11
+ -i: string@"nu-complete ssh-identity" # identity_file
+ -J: string # destination
+ -K # Enables GSSAPI-based authentication and forwarding(delegation) of GSSAPI credentials to the server.
+ -k # Disables forwarding (delegation) of GSSAPI credentials to the server.
+ -L: string # [bind_address:]port:host:hostport / [bind_address:]port:remote_socket / local_socket:host:hostport / local_socket:remote_socket
+ -l: string # login_name
+ -M # Places the ssh client into “master” mode for connection sharing.
+ -m: string # mac_spec
+ -N # Do not execute a remote command.
+ -n # Redirects stdin from /dev/null (5) for details.
+ -O: string # ctl_cmd
+ -o: string # option
+]
+
+def parse-host [file: string] {
+ let lines = $file | open | lines | str trim
+
+ mut result = []
+ for $line in $lines {
+ let data = $line | parse --regex '^Include\s+(?<file>.+)'
+ if ($data | is-not-empty) {
+ let include = parse-host ($data.file | first)
+ $result = ($result | append $include)
+ continue
+ }
+ let data = $line | parse --regex '^Host\s+(?<host>.+)'
+ if ($data | is-not-empty) {
+ let host = $data.host | first
+ if ($host == '*') {
+ continue
+ }
+ $result = ($result | append { 'value': $host, 'description': "" })
+ continue;
+ }
+ let data = $line | parse --regex '^HostName\s+(?<hostname>.+)'
+ if ($data | is-not-empty) {
+ let last = $result | last | update 'description' ($data.hostname | first)
+ $result = ($result | drop | append $last)
+ }
+ }
+ $result
+}
+
+def "nu-complete ssh-host" [] {
+ mut files = [
+ '/etc/ssh/ssh_config',
+ '~/.ssh/config'
+ ] | filter { |file| $file | path exists }
+
+
+ $files | each { |file|
+ parse-host $file
+ } | flatten
+}
+
+def "nu-complete ssh-identity" [] {
+ ls ~/.ssh/
+ | where {|f|
+ ($f.name | path parse | get extension) == "pub"
+ }
+ | get name
+ | path parse
+ | each {|p| {'value': $'~/.ssh/($p.stem)', 'description': $p.stem} }
+}
+
+export def ssh-add-all [] {
+ nu-complete ssh-identity
+ | each {|s| print $s.value; ^ssh-add ($s.value | path expand); print '' }
+ null
+}
+