stockholm/lass/1systems/iso/default.nix

212 lines
4.6 KiB
Nix

{ config, pkgs, ... }:
with import <stockholm/lib>;
let
wizard = pkgs.writers.writeBash "wizard" ''
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;
}