diff --git a/basics.sh b/basics.sh index 5d60c7f..0d17728 100755 --- a/basics.sh +++ b/basics.sh @@ -10,6 +10,7 @@ check_key_file() { while [ -z "$(cat $key_file | head -n1 | grep -- '-----BEGIN .* PRIVATE KEY-----')" ] do echo "$key_file does not look like a private key file, try again" + key_file="$(find /tilde/key | tail -n1)" bash done ssh_command="ssh -i $key_file $tilde_username@$tilde_name" @@ -25,21 +26,44 @@ connection_test() { done } + +configure_user_files() { + # TODO: refactor file creation to be script-independant + # user_homedir=$1 + # tilde_homedir=$2 + + user_homedir="/home/$tilde_username" + tilde_homedir="/tilde/$tilde_name/home/$tilde_username" + + sed "s|{{ TILDE_USERNAME }}|$tilde_username|g" "./dotprofile.template" > "$user_homedir/.profile" + sed -i "s|{{ TILDE_NAME }}|$tilde_name|g" "$user_homedir/.profile" + sed -i "s|{{ KEY_FILE }}|$key_file|g" "$user_homedir/.profile" + sed -i "s|{{ TILDE_HOMEDIR }}|$tilde_homedir|g" "$user_homedir/.profile" + sed -i "s|{{ USER_HOMEDIR }}|$user_homedir|g" "$user_homedir/.profile" + + sed "s|{{ TILDE_HOMEDIR }}|$tilde_homedir|g" "./user-dirs.dirs.template" > "$user_homedir/.config/user-dirs.dirs" + sed "s|{{ TILDE_HOMEDIR }}|$tilde_homedir|g" "./dotbashrc.template" > "$user_homedir/.bashrc" +} + configure_user() { - mkdir -p "/tmp/home/$tilde_username" - cp "/root/.gtkrc-2.0" "/tmp/home/$tilde_username" - cp -r "/root/.config" "/tmp/home/$tilde_username" - mkdir "/home/$tilde_username" - useradd "$tilde_username" -d "/tmp/home/$tilde_username" - chown "$tilde_username:$tilde_username" "/home/$tilde_username" - chown "$tilde_username:$tilde_username" "/tmp/home/$tilde_username" + user_homedir="/home/$tilde_username" + tilde_homedir="/tilde/$tilde_name/home/$tilde_username" + + mkdir -p "$tilde_homedir" + mkdir -p "$user_homedir" + + cp "/root/.gtkrc-2.0" "$user_homedir" + cp -r "/root/.config" "$user_homedir" + + configure_user_files + + useradd "$tilde_username" -d "$user_homedir" + chsh -s '/bin/bash' "$tilde_username" + chown -R "$tilde_username:$tilde_username" "$user_homedir" + chown -R "$tilde_username:$tilde_username" "$tilde_homedir" chown "$tilde_username:$tilde_username" "$key_file" - echo "echo Mounting sshfs filesystem..." > "/tmp/home/$tilde_username/.profile" - echo "sshfs $tilde_username@$tilde_name:/home/$tilde_username /home/$tilde_username -o ssh_command=\"ssh -i $key_file\"" >> "/tmp/home/$tilde_username/.profile" - echo "export HOME=/home/$tilde_username" >> "/tmp/home/$tilde_username/.profile" - echo "cd /home/$tilde_username" >> "/tmp/home/$tilde_username/.profile" - echo "HOME=/tmp/home/$tilde_username startx" >> "/tmp/home/$tilde_username/.profile" - echo "startlxqt" > "/tmp/home/$tilde_username/.xinitrc" + + echo "$startx_command" > "$user_homedir/.xinitrc" usermod -a -G sudo "$tilde_username" mkdir '/etc/systemd/system/getty@tty1.service.d' diff --git a/dotbashrc.template b/dotbashrc.template new file mode 100644 index 0000000..11af379 --- /dev/null +++ b/dotbashrc.template @@ -0,0 +1,2 @@ +#!/bin/bash +export HOME="{{ TILDE_HOMEDIR }}" diff --git a/dotprofile.template b/dotprofile.template new file mode 100644 index 0000000..283b1e6 --- /dev/null +++ b/dotprofile.template @@ -0,0 +1,20 @@ +echo Mounting sshfs filesystem... + +echo "Waiting for network... (^C to abort)" +while [ "$(nmcli networking connectivity)" != "full" ] +do + echo "." + sleep 1 +done +echo "Network found, mounting sshfs..." + +if ( sshfs {{ TILDE_USERNAME }}@{{ TILDE_NAME }}:/home/{{ TILDE_USERNAME }} {{ TILDE_HOMEDIR }} -o nonempty,allow_root,ssh_command="ssh -i {{ KEY_FILE }}" ) +then + export XDG_CONFIG_HOME="{{ USER_HOMEDIR }}/.config" + export XDG_DATA_HOME="{{ USER_HOMEDIR }}/.local/share" + xdg-user-dirs-update --force + cd {{ TILDE_HOMEDIR }} + startx +else + echo "Failed to mount, aborting..." +fi diff --git a/setup.sh b/setup.sh index cc4795a..4a63d62 100755 --- a/setup.sh +++ b/setup.sh @@ -1,12 +1,13 @@ #!/bin/sh -. ./util.sh -. ./basics.sh -. ./irc.sh - export tilde_name="" export tilde_username="" export key_file="" +export startx_command="startlxqt" + +. ./util.sh +. ./basics.sh +. ./irc.sh #configure_tilde #configure_irc diff --git a/user-dirs.dirs.template b/user-dirs.dirs.template new file mode 100644 index 0000000..e220d9b --- /dev/null +++ b/user-dirs.dirs.template @@ -0,0 +1,8 @@ +XDG_DESKTOP_DIR="{{ TILDE_HOMEDIR }}/Desktop" +XDG_DOCUMENTS_DIR="{{ TILDE_HOMEDIR }}/Documents" +XDG_DOWNLOAD_DIR="{{ TILDE_HOMEDIR }}/Downloads" +XDG_MUSIC_DIR="{{ TILDE_HOMEDIR }}/Music" +XDG_PICTURES_DIR="{{ TILDE_HOMEDIR }}/Pictures" +XDG_PUBLICSHARE_DIR="{{ TILDE_HOMEDIR }}/Public" +XDG_TEMPLATES_DIR="{{ TILDE_HOMEDIR }}/Templates" +XDG_VIDEOS_DIR="{{ TILDE_HOMEDIR }}/Videos"