!rMMJVYqfOEOLttKGza:nixos.org

NixOS Matrix Suggestions

421 Members
Actionable suggestions for the Matrix space. Please hold discussion in #matrix-discussion:nixos.org, then bring the suggestion and context here. | https://pad.lassul.us/Nix-Matrix-Suggestions#142 Servers

You have reached the beginning of time (for this room).


SenderMessageTime
2 Jan 2022
@grahamc:nixos.org@grahamc:nixos.org * it'd be great to have a script which extracts all of the rooms in a space, recursively through subspaces19:07:53
3 Jan 2022
@janne.hess:helsinki-systems.de@janne.hess:helsinki-systems.de
In reply to @grahamc:nixos.org
it'd be great to have a script which extracts all of the rooms in a space, recursively through subspaces
#!/usr/bin/env bash

set -euo pipefail

hs='https://helsinki-systems.de'
accessToken='' # must match the HS!

recurseSpace() {
	local mxid="${1}"
	local pathSoFar="${2:-}"
	# Get some basic info
	local roomName="$(curl -fsLH 'Accept: application/json' -H "Authorization: Bearer ${accessToken}" "${hs}/_matrix/client/r0/rooms/${mxid}/state/m.room.name" | jq -r .name || :)"
	[ -z "${roomName}" ] && return # wat
	local roomType="$(curl -fsLH 'Accept: application/json' -H "Authorization: Bearer ${accessToken}" "${hs}/_matrix/client/r0/rooms/${mxid}/state/m.room.create" | jq -r .type)"

	if [ "${roomType}" = m.space ]; then
		# It's a space - fetch children and recurse them
		for child in $(curl -fsLHH 'Accept: application/json' -H "Authorization: Bearer ${accessToken}" "${hs}/_matrix/client/r0/rooms/${mxid}/state" | jq -r '.[] | select(.type == "m.space.child") | .state_key'); do
			recurseSpace "${child}" "${pathSoFar}/${roomName}"
		done
	else
		# It's not a space - print it
		echo "${mxid} - ${pathSoFar}/${roomName}"
	fi
}

recurseSpace "!MKvhXlSTLGJUXpYuWF%3Anixos.org"
11:39:47
@janne.hess:helsinki-systems.de@janne.hess:helsinki-systems.de

this does however only work when you can see the room state and some rooms only show the state when you joined them which is why the list is incomplete for me:

!DBFhtjpqmJNENpLDOv:nixos.org - /NixOS/NixOS Systemd
!GsmxjHfeAYLsTEQmjS:nixos.org - /NixOS/Nix Matrix Discussion
!KEJUbONnoBpiYKGWEq:nixos.org - /NixOS/NixOS Gaming
!KqkRjyTEzAGRiZFBYT:nixos.org - /NixOS/Nix / NixOS
!RjBlCIbsLDzHBIzmaA:nixos.org - /NixOS/NixOS on ARM
!DBFhtjpqmJNENpLDOv:nixos.org - /NixOS/Teams/NixOS Systemd
!MthpOIxqJhTgrMNxDS:nixos.org - /NixOS/Teams/NixOS ACME / LetsEncrypt
!RROtHmAaQIkiJzJZZE:nixos.org - /NixOS/Teams/NixOS.org Infrastructure
!RjBlCIbsLDzHBIzmaA:nixos.org - /NixOS/Teams/NixOS on ARM
!UNVBThoJtlIiVwiDjU:nixos.org - /NixOS/Teams/Staging
!ZRgXNaHrdpGqwUnGnj:nixos.org - /NixOS/Teams/NixOS Security
!aGqRytqbCECitOFhbt:nixos.org - /NixOS/Teams/Release Management
!sBfrWMVsLoSyFTCkNv:nixos.org - /NixOS/Teams/OfBorg
!vxTmkuJzhGPsMdkAOc:transformierende-gesellschaft.org - /NixOS/Teams/NixOS Matrix Subsystem
!zghijEASpYQWYFzriI:nixos.org - /NixOS/Teams/Hydra
!VRULIdgoKmKPzJZzjj:nixos.org - /NixOS/Nix Hackers
!ZRgXNaHrdpGqwUnGnj:nixos.org - /NixOS/NixOS Security
!vxTmkuJzhGPsMdkAOc:transformierende-gesellschaft.org - /NixOS/Community/NixOS Matrix Subsystem
!kjdutkOsheZdjqYmqp:nixos.org - /NixOS/Nix / Nixpkgs / NixOS Dev
!rMMJVYqfOEOLttKGza:nixos.org - /NixOS/Nix Matrix Suggestions
!sgkZKRutwatDMkYBHU:nixos.org - /NixOS/Nix Offtopic
!tCyGickeVqkHsYjWnh:nixos.org - /NixOS/NixOS Networking
!tDnwWRNkmmYtMXfaZl:nixos.org - /NixOS/Nix Language
!MthpOIxqJhTgrMNxDS:nixos.org - /NixOS/Topics/NixOS ACME / LetsEncrypt
!UUYziobKGGxpovWyAN:nixos.org - /NixOS/Topics/Robotnix
!ayCRiZriCVtuCUpeLp:nixos.org - /NixOS/Topics/Nix Cross Compiling
!kyXJonZuBXCGzVwuSn:nixos.org - /NixOS/Topics/Systems Programming
!zghijEASpYQWYFzriI:nixos.org - /NixOS/Hydra
11:40:26
@janne.hess:helsinki-systems.de@janne.hess:helsinki-systems.de
In reply to @grahamc:nixos.org
it'd be great to have a script which extracts all of the rooms in a space, recursively through subspaces
*
#!/usr/bin/env bash

set -euo pipefail

hs='https://helsinki-systems.de'
accessToken='' # must match the HS!

recurseSpace() {
	local mxid="${1}"
	local pathSoFar="${2:-}"
	# Get some basic info
	local roomName="$(curl -fsLH 'Accept: application/json' -H "Authorization: Bearer ${accessToken}" "${hs}/_matrix/client/r0/rooms/${mxid}/state/m.room.name" | jq -r .name || :)"
	[ -z "${roomName}" ] && return # wat
	local roomType="$(curl -fsLH 'Accept: application/json' -H "Authorization: Bearer ${accessToken}" "${hs}/_matrix/client/r0/rooms/${mxid}/state/m.room.create" | jq -r .type)"

	if [ "${roomType}" = m.space ]; then
		# It's a space - fetch children and recurse them
		for child in $(curl -fsLH 'Accept: application/json' -H "Authorization: Bearer ${accessToken}" "${hs}/_matrix/client/r0/rooms/${mxid}/state" | jq -r '.[] | select(.type == "m.space.child") | .state_key'); do
			recurseSpace "${child}" "${pathSoFar}/${roomName}"
		done
	else
		# It's not a space - print it
		echo "${mxid} - ${pathSoFar}/${roomName}"
	fi
}

recurseSpace "!MKvhXlSTLGJUXpYuWF%3Anixos.org"
11:55:36
@grahamc:nixos.org@grahamc:nixos.orgWoohoo! Thank you!12:11:41
4 Jan 2022
@adis:blad.isadisbladis grahamc (he/him): Made you an admin on #poetry2nix:blad.is 07:02:29
@sandro:supersandro.deSandro
In reply to @janne.hess:helsinki-systems.de

this does however only work when you can see the room state and some rooms only show the state when you joined them which is why the list is incomplete for me:

!DBFhtjpqmJNENpLDOv:nixos.org - /NixOS/NixOS Systemd
!GsmxjHfeAYLsTEQmjS:nixos.org - /NixOS/Nix Matrix Discussion
!KEJUbONnoBpiYKGWEq:nixos.org - /NixOS/NixOS Gaming
!KqkRjyTEzAGRiZFBYT:nixos.org - /NixOS/Nix / NixOS
!RjBlCIbsLDzHBIzmaA:nixos.org - /NixOS/NixOS on ARM
!DBFhtjpqmJNENpLDOv:nixos.org - /NixOS/Teams/NixOS Systemd
!MthpOIxqJhTgrMNxDS:nixos.org - /NixOS/Teams/NixOS ACME / LetsEncrypt
!RROtHmAaQIkiJzJZZE:nixos.org - /NixOS/Teams/NixOS.org Infrastructure
!RjBlCIbsLDzHBIzmaA:nixos.org - /NixOS/Teams/NixOS on ARM
!UNVBThoJtlIiVwiDjU:nixos.org - /NixOS/Teams/Staging
!ZRgXNaHrdpGqwUnGnj:nixos.org - /NixOS/Teams/NixOS Security
!aGqRytqbCECitOFhbt:nixos.org - /NixOS/Teams/Release Management
!sBfrWMVsLoSyFTCkNv:nixos.org - /NixOS/Teams/OfBorg
!vxTmkuJzhGPsMdkAOc:transformierende-gesellschaft.org - /NixOS/Teams/NixOS Matrix Subsystem
!zghijEASpYQWYFzriI:nixos.org - /NixOS/Teams/Hydra
!VRULIdgoKmKPzJZzjj:nixos.org - /NixOS/Nix Hackers
!ZRgXNaHrdpGqwUnGnj:nixos.org - /NixOS/NixOS Security
!vxTmkuJzhGPsMdkAOc:transformierende-gesellschaft.org - /NixOS/Community/NixOS Matrix Subsystem
!kjdutkOsheZdjqYmqp:nixos.org - /NixOS/Nix / Nixpkgs / NixOS Dev
!rMMJVYqfOEOLttKGza:nixos.org - /NixOS/Nix Matrix Suggestions
!sgkZKRutwatDMkYBHU:nixos.org - /NixOS/Nix Offtopic
!tCyGickeVqkHsYjWnh:nixos.org - /NixOS/NixOS Networking
!tDnwWRNkmmYtMXfaZl:nixos.org - /NixOS/Nix Language
!MthpOIxqJhTgrMNxDS:nixos.org - /NixOS/Topics/NixOS ACME / LetsEncrypt
!UUYziobKGGxpovWyAN:nixos.org - /NixOS/Topics/Robotnix
!ayCRiZriCVtuCUpeLp:nixos.org - /NixOS/Topics/Nix Cross Compiling
!kyXJonZuBXCGzVwuSn:nixos.org - /NixOS/Topics/Systems Programming
!zghijEASpYQWYFzriI:nixos.org - /NixOS/Hydra
IIRC the room state can only be displayed if the home-server knows about it and that is the case when any user on the hs joined it.
19:36:56

Show newer messages


Back to Room ListRoom Version: 6