l iso: rework for wizard magic
This commit is contained in:
parent
1a73dffbdd
commit
919b0ad48e
lass/1systems
|
@ -1,193 +0,0 @@
|
|||
{ config, pkgs, ... }:
|
||||
|
||||
with import <stockholm/lib>;
|
||||
{
|
||||
imports = [
|
||||
<nixpkgs/nixos/modules/installer/cd-dvd/installation-cd-minimal.nix>
|
||||
<stockholm/krebs>
|
||||
<stockholm/lass/3modules>
|
||||
<stockholm/lass/2configs/mc.nix>
|
||||
<stockholm/lass/2configs/vim.nix>
|
||||
{
|
||||
# /dev/stderr doesn't work. I don't know why
|
||||
# /proc/self doesn't seem to work correctly
|
||||
# /dev/pts is empty except for 1 file
|
||||
# my life sucks
|
||||
nixpkgs.config.packageOverrides = super: {
|
||||
irc-announce = super.callPackage <stockholm/krebs/5pkgs/simple/irc-announce> {
|
||||
pkgs = pkgs // {
|
||||
coreutils = pkgs.symlinkJoin {
|
||||
name = "coreutils-hack";
|
||||
paths = [
|
||||
(pkgs.writeDashBin "tee" ''
|
||||
if test "$1" = /dev/stderr; then
|
||||
while read -r line; do
|
||||
echo "$line"
|
||||
echo "$line" >&2
|
||||
done
|
||||
else
|
||||
${super.coreutils}/bin/tee "$@"
|
||||
fi
|
||||
'')
|
||||
pkgs.coreutils
|
||||
];
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
boot.kernelParams = [ "copytoram" ];
|
||||
networking.hostName = "lass-iso";
|
||||
}
|
||||
{
|
||||
nixpkgs.config.packageOverrides = import <stockholm/lass/5pkgs> pkgs;
|
||||
krebs.enable = true;
|
||||
krebs.build.user = config.krebs.users.lass;
|
||||
krebs.build.host = {};
|
||||
}
|
||||
{
|
||||
nixpkgs.config.allowUnfree = true;
|
||||
}
|
||||
{
|
||||
users.extraUsers = {
|
||||
root = {
|
||||
openssh.authorizedKeys.keys = [
|
||||
config.krebs.users.lass.pubkey
|
||||
];
|
||||
};
|
||||
};
|
||||
}
|
||||
{
|
||||
environment.extraInit = ''
|
||||
EDITOR=vim
|
||||
'';
|
||||
}
|
||||
{
|
||||
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
|
||||
hashPassword
|
||||
krebspaste
|
||||
pciutils
|
||||
pop
|
||||
psmisc
|
||||
q
|
||||
rs
|
||||
tmux
|
||||
untilport
|
||||
usbutils
|
||||
|
||||
#unpack stuff
|
||||
p7zip
|
||||
unzip
|
||||
unrar
|
||||
|
||||
#data recovery
|
||||
ddrescue
|
||||
ntfs3g
|
||||
dosfstools
|
||||
];
|
||||
}
|
||||
{
|
||||
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
|
||||
'';
|
||||
};
|
||||
}
|
||||
{
|
||||
services.openssh = {
|
||||
enable = true;
|
||||
hostKeys = [
|
||||
# XXX bits here make no science
|
||||
{ bits = 8192; type = "ed25519"; path = "/etc/ssh/ssh_host_ed25519_key"; }
|
||||
];
|
||||
};
|
||||
systemd.services.sshd.wantedBy = mkForce [ "multi-user.target" ];
|
||||
}
|
||||
{
|
||||
networking.firewall = {
|
||||
enable = true;
|
||||
allowedTCPPorts = [ 22 ];
|
||||
};
|
||||
}
|
||||
{
|
||||
krebs.hidden-ssh.enable = true;
|
||||
}
|
||||
{
|
||||
services.xserver = {
|
||||
enable = true;
|
||||
#videoDrivers = mkForce [ "ati_unfree" ];
|
||||
|
||||
desktopManager.xterm.enable = false;
|
||||
desktopManager.default = "none";
|
||||
displayManager.lightdm.enable = true;
|
||||
displayManager.lightdm.autoLogin = {
|
||||
enable = true;
|
||||
user = "lass";
|
||||
};
|
||||
windowManager.default = "xmonad";
|
||||
windowManager.session = let
|
||||
xmonad-lass = pkgs.callPackage <stockholm/lass/5pkgs/custom/xmonad-lass> { inherit config; };
|
||||
in [{
|
||||
name = "xmonad";
|
||||
start = ''
|
||||
${pkgs.xorg.xhost}/bin/xhost +LOCAL:
|
||||
${xmonad-lass}/bin/xmonad &
|
||||
waitPID=$!
|
||||
'';
|
||||
}];
|
||||
|
||||
layout = "us";
|
||||
xkbModel = "evdev";
|
||||
xkbVariant = "altgr-intl";
|
||||
xkbOptions = "caps:backspace";
|
||||
};
|
||||
}
|
||||
];
|
||||
}
|
212
lass/1systems/iso/default.nix
Normal file
212
lass/1systems/iso/default.nix
Normal file
|
@ -0,0 +1,212 @@
|
|||
{ 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;
|
||||
}
|
7
lass/1systems/iso/generate-iso.sh
Executable file
7
lass/1systems/iso/generate-iso.sh
Executable file
|
@ -0,0 +1,7 @@
|
|||
#!/usr/bin/env nix-shell
|
||||
#! nix-shell -i bash -p nixos-generators
|
||||
|
||||
set -xefu
|
||||
|
||||
WD=$(dirname "$0")
|
||||
nixos-generate -I stockholm="$WD"/../../.. -c "$WD"/default.nix -f install-iso
|
Loading…
Reference in a new issue