From 03c41c55e98d135defe46f778ccf1e2c0b73d624 Mon Sep 17 00:00:00 2001 From: Trevor Vallender Date: Fri, 10 Mar 2023 08:22:59 +0000 Subject: [PATCH] Set up nice tmux pairing config - User foxsoft has SSH authorized keys - When foxsoft logs on, either attaches to running tmux session or quits --- flake.nix | 1 + system/configuration.nix | 38 ++++++++++++++++++++++++++--------- users/foxsoft/authorized_keys | 5 +++++ users/foxsoft/bash_profile | 10 +++++++++ users/foxsoft/bashrc | 4 ++++ users/foxsoft/home.nix | 14 +++++++++++++ users/tsv/bash_profile | 4 +--- users/tsv/bashrc | 3 +++ users/tsv/home.nix | 1 + 9 files changed, 68 insertions(+), 12 deletions(-) create mode 100644 users/foxsoft/authorized_keys create mode 100644 users/foxsoft/bash_profile create mode 100644 users/foxsoft/bashrc create mode 100644 users/foxsoft/home.nix create mode 100644 users/tsv/bashrc diff --git a/flake.nix b/flake.nix index 8acc6bf..2bed442 100644 --- a/flake.nix +++ b/flake.nix @@ -22,6 +22,7 @@ useGlobalPkgs = true; useUserPackages = true; users.tsv = import users/tsv/home.nix; + users.foxsoft = import users/foxsoft/home.nix; }; } ]; diff --git a/system/configuration.nix b/system/configuration.nix index 40a55ab..1f5d117 100644 --- a/system/configuration.nix +++ b/system/configuration.nix @@ -22,6 +22,7 @@ in networking.hostName = "ritchie"; networking.networkmanager.enable = true; + i18n.defaultLocale = "en_GB.UTF-8"; time.timeZone = "Europe/London"; # Enable sound. @@ -33,14 +34,30 @@ in pulse.enable = true; }; - users.users.tsv = { - isNormalUser = true; - extraGroups = [ - "wheel" - "docker" - ]; - initialPassword = "password"; - }; + users.groups.tmux.gid = 1000; # Used for tmux pairing + systemd.tmpfiles.rules = [ + "d /var/tmux_share 770 tsv tmux" + ]; + + users.users.tsv = { + isNormalUser = true; + extraGroups = [ + "wheel" + "docker" + "tmux" + ]; + initialPassword = "password"; + }; + + users.users.foxsoft = { + isNormalUser = true; + extraGroups = [ + "tmux" + ]; + openssh.authorizedKeys.keyFiles = [ + ../users/foxsoft/authorized_keys + ]; + }; nix.settings.trusted-users = [ "root" "tsv" ]; @@ -80,7 +97,10 @@ in virtualisation.docker.enable = true; - services.openssh.enable = true; + services.openssh = { + enable = true; + settings.PasswordAuthentication = false; + }; system.stateVersion = "22.11"; # Don't change this } diff --git a/users/foxsoft/authorized_keys b/users/foxsoft/authorized_keys new file mode 100644 index 0000000..e4ccdd4 --- /dev/null +++ b/users/foxsoft/authorized_keys @@ -0,0 +1,5 @@ +ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEA7Lsg564s9xAo+R3ompSmZCCvRDmfqRwH90xtj+4H3F72GSlcjqIWxZa3GtDinW3WAfjOZK99Ayxzyy3535Nkw5qubSt/vClWpwtZTMOnpShWWfA7QxeCl3BlpSY04aJZhoqQ7ehlTDcuFJZZqv8dbbr8kKeNSLje3lCDZCl1aYb+keiFS4pkWdYmtZ0mX7TYG6RiMZEPOYEdw1+hLKOvn4l2sPSN28ezru0LEo1K7p7+fn1Wlh+TqUOftIrHPmMr3F517X/hbUMVDkxkpNM2I/CvBZEx/mFNnCIkSmpX8iXVy7XnIwlhnE24WCExtvCkALytBK3W/FQUh9NaNuML9Q== andy@picasso.foxsoft.local +ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAxfVMoUS+1g91gdbmPlVkAQF3GPJuD6YilTvjI9i2XilpBRQ31u5JqboAPIlqo0+Or253WRUG3aoC2OS1HiVjffvSwbK3EZxDqH7TlWTkvRcVhMdEQA2thNsE207sY+t3PHu53ltjQeouk3LA87/BYVcHwbS0SGg13OZRbEUSeAznWj4NlBJkUhO47xybfLATWLNg2B0AKLUqcCsMWOlwR6E5snXEjPcnvrwPhHe5CljVW8NI79hw8xCDR4QoMFJGsnmBRftWQEGuUGOQYmpXET7chlhO0Rw97xHDyOnShMnkmz4RtpiCeiE7d6+HbUfQGoND77s3sjfYmLjywii8DQ== adre@Hart.local +ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQDQ56/ZOLhDERSF0q8XIRL5bLupnjbuU3er69uTG/MLKOCLdzRsaz1K8O4sFjTYxqwSvkpykNnv0hs8QeJgd/SmTkPKE19huFpmmXzE9nWgc4o4bQqXQyYawkIELou42VmXnVsrkIH5BdHAGKOeNOfTharD+c65k9N78DKWInVL/I25kslwoj0roEEmsyebN/HkUBD6YBUgguMBbLunnWvUr1A2+YnqVELzNIKTmo8KGQoGta8mC/w5UuzqTceqToZ+CAo9Vxer7XWMarKBata9GeTuUmuaM9D3j91yUT1XvC6OFetRDBLJ7wcoo5J5qrspG3CCUal+ZgvZA918SeV5TKBdGSL0rU7m13eZ6YdhOkOAQV6f+Ta9QSTohhYzWv4YGpMQO4mtbiUJLG0yir/Z2/EV1ijJUxnQVr//avW3dpNk8yCzEao9CjqyiUh1k4rrxQ/9seShw4OoNqtvs+nzABZ7qyUvrfGBwZ19VFpNLPNlq65k8P0RyHh1fG4S2iGlI4ksqgHd2GTUNqARggBveu4dIhiEVsWlmAv/2yEydWfFUNlLb/1MMjZe6cTzgbQ1BEKSI/vV8+o94dJ+09N9st4QEmsbnPlillYOD9iFbqR5lFDCU5Rq38RkZZB4Sp7Ch1yfNfAvbB354Jvto9pBLy5lRnaNdvgZPiVbvp3MiQ== daniel@limeblast.co.uk +ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC3SCbRzbJolhjy/TMFLMcDlzO+pFvPat/mZP/BosY3CozR2iGIeM3CmfNKB2gz3CFXjixZeLVG6ZdlfQsU/Z5/2z926N0ZK23pGQBpg78qWy7nglP8JItGwE+4K6Hw4v3qfAcOsBWAs7wGfzULOIUGcERn0s15fZ0uCpZMLU6fdSOdT9ghzAb27RKkunVNsUvXYWpMA+RIjLUC55bMYB5ntkfugeaZF8aMLkVF03tsZlRIHD5ZKnGF93zyzNSeQgovj8YnmmVg1FTC7ARV40sjH3Wjb7gs7G9x7KKh7HXJQ/5ymzNKGrmC/4NEp4Om+DdYwlXQEFhRWAnXVqxQxdnH andy@maximus +ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQCmWUGjQ6EMNP0sqwF0XTnL58I8dKqlPIMgpOeTFVCCW8+6A4XRuTlx0uVt96d49lwvEuSn5Mft7oMNEL0O+zFMYFru9s786Lpvd7iI7kwEIARgcHeVLifTbYd+N85G2ILKCsPHqcRJPmcbG2wASZOJEFn0Ngs5cf+/lXnISEyAHUmltVDM0V0Ne20oMcZcztaBzaASHcHGlJCGUQuScag0kPljKiWKbOVvA6hGVYwuhr/G+6vPTfml18p3KHsAIOLZaK7DsYwgHGPSu38YbHL60iz6iBn9GcEaUcWIgtqamSAfhq+cFPjzySCLmSa5rJ0Y2mNPk/YiZTSfQpIDpNAWKq+fmWg3zx/g28nN06HL9eHhTzG7VRW+CXaX67Xc6tg8I+kqF6722TEtFZ74wXBmMsn+JCn6CDtxSUtK1of8xTAO7Bl4Uq/hQ8KsdeO8J4XfRaFjiSLqiU+WcyibLkFDnW+g8sR0shOJi5Kl3ES3xgvdrxLcODKzDBHKm+jiIzVJICqPbXrzOtoXWd4xD79rGeYVrx72J8HiY6zokgUYpkVFgwzxe6OVRCQ0dfPsRtj/Mr2KAyDkRsdyeR5QhDDePoNBw5y3IbN/MB4lwOYO3mMqg589f4cUTxOQy+i7sRHVVdzdf22LdP0Kc/d9iH8lkpt7V7sn8Di3AZ/Y+NEBMw== trevor@foxsoft.co.uk diff --git a/users/foxsoft/bash_profile b/users/foxsoft/bash_profile new file mode 100644 index 0000000..7a9ab72 --- /dev/null +++ b/users/foxsoft/bash_profile @@ -0,0 +1,10 @@ +SOCKET_PATH="/var/tmux_share/shared" + +# Connect to tmux if a session exists +tmux -S $SOCKET_PATH attach -t shared + +# If a session didn't exist, delete the socket we created +[ $? -ne 0 ] && rm -f $SOCKET_PATH + +# Exit, either when exiting tmux or after failing to connect +exit diff --git a/users/foxsoft/bashrc b/users/foxsoft/bashrc new file mode 100644 index 0000000..de3527a --- /dev/null +++ b/users/foxsoft/bashrc @@ -0,0 +1,4 @@ + +if [ -f ~/.bash_profile ]; then + source ~/.bash_profile +fi diff --git a/users/foxsoft/home.nix b/users/foxsoft/home.nix new file mode 100644 index 0000000..3587f0a --- /dev/null +++ b/users/foxsoft/home.nix @@ -0,0 +1,14 @@ +{ config, pkgs, ... }: + +{ + home.username = "foxsoft"; + home.homeDirectory = "/home/foxsoft"; + + home.stateVersion = "22.11"; + + programs.home-manager.enable = true; + + home.file.".bash_profile".source = ./bash_profile; + home.file.".bashrc".source = ./bashrc; +} + diff --git a/users/tsv/bash_profile b/users/tsv/bash_profile index 2bb0f2c..ca9c1f0 100644 --- a/users/tsv/bash_profile +++ b/users/tsv/bash_profile @@ -1,5 +1,3 @@ -source ~/.nix-profile/etc/profile.d/hm-session-vars.sh - PAGER="less -r" EDITOR="nvim" VISUAL="nvim" @@ -25,6 +23,7 @@ alias checkport="sudo netstat -tnlp | grep" alias dockerpurge="docker system prune --all --force --volumes" alias dockerkill="docker stop `docker ps -a -q`" alias vi="nvim" +alias tp="$HOME/bin/tmux_pair.bash" # Prompt setup GIT_PS1_SHOWDIRTYSTATE=1 @@ -45,4 +44,3 @@ PS1+=' $(__git_ps1 [$YELLOW%s$CLEAR]) \n' PS1+="ॐ \[$BOLD\]" trap 'printf "\033[0m" >&2' DEBUG - diff --git a/users/tsv/bashrc b/users/tsv/bashrc new file mode 100644 index 0000000..a91cb03 --- /dev/null +++ b/users/tsv/bashrc @@ -0,0 +1,3 @@ +if [ -f ~/.bash_profile ]; then + source ~/.bash_profile +fi diff --git a/users/tsv/home.nix b/users/tsv/home.nix index 1fac1dc..2f3fac2 100644 --- a/users/tsv/home.nix +++ b/users/tsv/home.nix @@ -79,6 +79,7 @@ }; home.file.".bash_profile".source = ./bash_profile; + home.file.".bashrc".source = ./bashrc; home.file.".tmux.conf".source = ./tmux.conf; xdg.configFile."git/config".source = ./git/config; xdg.configFile."git/config_foxsoft".source = ./git/config_foxsoft;