with import {}; pkgs.writeShellScriptBin "nixos-edit" '' #!/bin/sh if [ "$1" = "help" ] || [ "$1" = "-h" ] || [ "$1" = "--help" ] ; then echo "nixos-edit by tudbut" echo echo "supports commands:" echo " - pull -- pulls the changes and switches to them" echo " - edit -- edits the OS, pushes it, and switches" echo " - test -- edits the OS and switches" echo " - push -- commits edits from test and pushes them" echo " - update -- update the system" echo " - clean -- does housekeeping" echo " - init -- initialize the system (only run once)" echo " - add -- installs a package" echo echo "edit is the default mode." exit 0 fi if [ "$1" = "init" ] ; then if [ "$(whoami)" = root ] ; then echo "re-executing as tudbut" echo -n "set password for tudbut? (Y/n) " read yn if [ "$yn" != "n" ] ; then passwd tudbut || exit 1 fi sleep 2 echo please make sure xorg is running echo -n enter when ready read exec sudo -iu tudbut nixos-edit init || exit 1 fi if [ "$DISPLAY" = "" ] ; then export DISPLAY=:0 fi sudo chown -R tudbut: /etc/nixos echo dir setup done echo "> setting up ssh" echo ssh setup if ! [ -e ~/.ssh/id_*.pub ] ; then ssh-keygen || exit fi echo ssh key created cat ~/.ssh/id_*.pub | xclip -selection clipboard echo "-> copied to clipboard for later" echo adding it to syncfs echo "-> you will need to input your password" ssh root@tudbut.de "ssh -p 23 localhost 'echo -e \"# $(cat /etc/hostname)\n$(cat ~/.ssh/id_*.pub)\n\" >> .ssh/authorized_keys'" || exit 1 echo "> ssh setup done" echo "> setting up git" git config --global user.name "TudbuT" git config --global user.email "forge-public@mail.tudbut.de" git config --global init.defaultBranch main git config --global push.default current echo configs set echo mounting syncfs mkdir ~/sync 2> /dev/null startsync > /dev/null 2>&1 & echo opening git key add page echo "-> close firefox when complete." firefox "https://git.tudbut.de/user/login?redirect_to=%2fuser%2fsettings%2fkeys" > /dev/null 2>&1 echo correcting remote cd /etc/nixos git remote set-url origin 'ssh://git@tudbut.de:222/TudbuT/nix-setup.git' echo done exit 0 fi if [ "$(whoami)" = root ] ; then echo "re-executing as tudbut" sleep 2 exec sudo -iu tudbut nixos-edit $1 || exit 1 fi if [ "$1" = "clean" ] ; then echo "> running gc" sudo nix-collect-garbage --delete-older-than 60d echo "> hard-linking" sudo nix-store --optimise echo "> all done" exit fi [ "$1" = "edit" ] || [ "$1" = "" ] || [ "$1" = "push" ] PUSH=$? cd /etc/nixos if [ "$1" = "pull" ] ; then git pull --rebase fi if [ "$1" = "edit" ] || [ "$1" = "" ] || [ "$1" = "test" ] ; then sudo hx . fi if [ "$1" = "add" ] ; then sed -i -E "s/#marker.pkgs.end#/$2\n #marker.pkgs.end#/" home.nix git diff home.nix sleep 0.5 git commit -m "pkgs.user: add $2" home.nix || exit 1 git push fi if [ $PUSH = 0 ] ; then git add . EDITOR=hx git commit -a || exit git push if [ "$1" = "push" ] ; then exit 0 fi fi if [ "$1" = "update" ] ; then sudo nixos-rebuild switch --upgrade else sudo nixos-rebuild switch fi ''