213 lines
4.6 KiB
Nix
213 lines
4.6 KiB
Nix
|
{ config, pkgs, ... }:
|
||
|
with import <stockholm/lib>;
|
||
|
|
||
|
let
|
||
|
|
||
|
wizard = pkgs.writers.writeBash "wizard" ''
|
||
|
set -x
|
||
|
shopt -s extglob
|
||
|
|
||
|
echo -n '
|
||
|
welcome to the computer wizard
|
||
|
first we will check for internet connectivity
|
||
|
(press enter to continue)
|
||
|
'
|
||
|
read -n 1 -s
|
||
|
if ! ping -c1 lassul.us; then
|
||
|
echo 'no internet detectio, you will have to provide credentials'
|
||
|
read -n 1 -s
|
||
|
nmtui
|
||
|
fi
|
||
|
|
||
|
# ping -c1 lassuls.us || ${pkgs.writeDash "nm-dmenu" ''
|
||
|
# set -x
|
||
|
# export PATH=$PATH:${pkgs.dmenu}/bin:${pkgs.networkmanagerapplet}/bin
|
||
|
# exec ${pkgs.networkmanager_dmenu}/bin/networkmanager_dmenu "$@"
|
||
|
# ''}
|
||
|
|
||
|
mode=$(echo -n '
|
||
|
1. help of the wizard
|
||
|
2. let the wizard watch and help if needed
|
||
|
3. I will do it alone
|
||
|
' | ${pkgs.fzf}/bin/fzf --reverse)
|
||
|
case "$mode" in
|
||
|
1*)
|
||
|
echo 'mode_1' > /tmp/mode
|
||
|
systemctl start hidden-ssh-announce.service
|
||
|
tmux new -s help
|
||
|
;;
|
||
|
2*)
|
||
|
echo 'mode_2' > /tmp/mode
|
||
|
;;
|
||
|
3*)
|
||
|
echo 'mode_3' > /tmp/mode
|
||
|
;;
|
||
|
*)
|
||
|
echo 'no mode selected'
|
||
|
;;
|
||
|
esac
|
||
|
'';
|
||
|
|
||
|
in {
|
||
|
imports = [
|
||
|
<stockholm/krebs>
|
||
|
<stockholm/lass/3modules>
|
||
|
<stockholm/lass/2configs/vim.nix>
|
||
|
{
|
||
|
nixpkgs.config.packageOverrides = import <stockholm/lass/5pkgs> pkgs;
|
||
|
krebs.enable = true;
|
||
|
krebs.build.user = config.krebs.users.lass;
|
||
|
krebs.build.host = {};
|
||
|
}
|
||
|
# {
|
||
|
# systemd.services.wizard = {
|
||
|
# description = "Computer Wizard";
|
||
|
# wantedBy = [ "multi-user.target" ];
|
||
|
# serviceConfig = {
|
||
|
# ExecStart = pkgs.writers.writeDash "wizard" ''
|
||
|
# set -efu
|
||
|
# cat <<EOF
|
||
|
# welcome to the computer wizard
|
||
|
# you can choose between the following modes
|
||
|
# echo -n '1\n2\n3' | ${pkgs.fzf}/bin/fzf
|
||
|
# EOF
|
||
|
# '';
|
||
|
# StandardInput = "tty";
|
||
|
# StandardOutput = "tty";
|
||
|
# # TTYPath = "/dev/tty1";
|
||
|
# TTYPath = "/dev/ttyS0";
|
||
|
# TTYReset = true;
|
||
|
# TTYVTDisallocate = true;
|
||
|
# Restart = "always";
|
||
|
# };
|
||
|
# };
|
||
|
# }
|
||
|
];
|
||
|
|
||
|
networking.hostName = "wizard";
|
||
|
nixpkgs.config.allowUnfree = true;
|
||
|
|
||
|
users.extraUsers = {
|
||
|
root = {
|
||
|
openssh.authorizedKeys.keys = [
|
||
|
config.krebs.users.lass.pubkey
|
||
|
config.krebs.users.lass-mors.pubkey
|
||
|
];
|
||
|
};
|
||
|
};
|
||
|
|
||
|
environment.systemPackages = with pkgs; [
|
||
|
#stockholm
|
||
|
git
|
||
|
gnumake
|
||
|
jq
|
||
|
parallel
|
||
|
proot
|
||
|
populate
|
||
|
|
||
|
#style
|
||
|
most
|
||
|
rxvt_unicode.terminfo
|
||
|
|
||
|
#monitoring tools
|
||
|
htop
|
||
|
iotop
|
||
|
|
||
|
#network
|
||
|
iptables
|
||
|
iftop
|
||
|
|
||
|
#stuff for dl
|
||
|
aria2
|
||
|
|
||
|
#neat utils
|
||
|
dmenu
|
||
|
hashPassword
|
||
|
krebspaste
|
||
|
pciutils
|
||
|
pop
|
||
|
psmisc
|
||
|
q
|
||
|
rs
|
||
|
tmux
|
||
|
untilport
|
||
|
usbutils
|
||
|
|
||
|
#unpack stuff
|
||
|
p7zip
|
||
|
unzip
|
||
|
unrar
|
||
|
|
||
|
#data recovery
|
||
|
ddrescue
|
||
|
ntfs3g
|
||
|
dosfstools
|
||
|
];
|
||
|
|
||
|
environment.extraInit = ''
|
||
|
EDITOR=vim
|
||
|
'';
|
||
|
|
||
|
programs.bash = {
|
||
|
enableCompletion = true;
|
||
|
interactiveShellInit = ''
|
||
|
HISTCONTROL='erasedups:ignorespace'
|
||
|
HISTSIZE=65536
|
||
|
HISTFILESIZE=$HISTSIZE
|
||
|
|
||
|
shopt -s checkhash
|
||
|
shopt -s histappend histreedit histverify
|
||
|
shopt -s no_empty_cmd_completion
|
||
|
complete -d cd
|
||
|
'';
|
||
|
promptInit = ''
|
||
|
if test $UID = 0; then
|
||
|
PS1='\[\033[1;31m\]\w\[\033[0m\] '
|
||
|
PROMPT_COMMAND='echo -ne "\033]0;$$ $USER@$PWD\007"'
|
||
|
elif test $UID = 1337; then
|
||
|
PS1='\[\033[1;32m\]\w\[\033[0m\] '
|
||
|
PROMPT_COMMAND='echo -ne "\033]0;$$ $PWD\007"'
|
||
|
else
|
||
|
PS1='\[\033[1;33m\]\u@\w\[\033[0m\] '
|
||
|
PROMPT_COMMAND='echo -ne "\033]0;$$ $USER@$PWD\007"'
|
||
|
fi
|
||
|
if test -n "$SSH_CLIENT"; then
|
||
|
PS1='\[\033[35m\]\h'" $PS1"
|
||
|
PROMPT_COMMAND='echo -ne "\033]0;$$ $HOSTNAME $USER@$PWD\007"'
|
||
|
fi
|
||
|
if ! test -e /tmp/mode; then
|
||
|
${wizard}
|
||
|
fi
|
||
|
'';
|
||
|
};
|
||
|
|
||
|
services.openssh.enable = true;
|
||
|
systemd.services.sshd.wantedBy = mkForce [ "multi-user.target" ];
|
||
|
|
||
|
networking.firewall = {
|
||
|
enable = true;
|
||
|
allowedTCPPorts = [ 22 ];
|
||
|
};
|
||
|
networking.networkmanager.enable = true;
|
||
|
networking.wireless.enable = mkForce false;
|
||
|
|
||
|
krebs.hidden-ssh = {
|
||
|
enable = true;
|
||
|
channel = "##lassulus-wizard";
|
||
|
|
||
|
};
|
||
|
systemd.services.hidden-ssh-announce.wantedBy = mkForce [];
|
||
|
services.mingetty.autologinUser = "root";
|
||
|
|
||
|
nixpkgs.config.packageOverrides = super: {
|
||
|
dmenu = pkgs.writeDashBin "dmenu" ''
|
||
|
${pkgs.fzf}/bin/fzf \
|
||
|
--history=/dev/null \
|
||
|
--print-query \
|
||
|
--prompt=\"$PROMPT\"
|
||
|
'';
|
||
|
};
|
||
|
|
||
|
boot.tmpOnTmpfs = true;
|
||
|
}
|