summaryrefslogtreecommitdiffstats
path: root/tv/2configs
diff options
context:
space:
mode:
authorlassulus <lassulus@lassul.us>2020-10-18 19:25:11 +0200
committerlassulus <lassulus@lassul.us>2020-10-18 19:25:11 +0200
commit5b29d7a435092aafcea15f588effbb6f45a6a56e (patch)
tree07340bc138d7bdea55bbb33e50fc2fa1b5387a57 /tv/2configs
parent9626d3cda953929e903b5a06595e98972cb08ffc (diff)
parentb034f63f7a2e4361b32c33c0e1a980eecf1a5aa6 (diff)
Merge remote-tracking branch 'ni/master'
Diffstat (limited to 'tv/2configs')
-rw-r--r--tv/2configs/default.nix7
-rw-r--r--tv/2configs/ppp.nix78
-rw-r--r--tv/2configs/sshd.nix20
-rw-r--r--tv/2configs/xserver/default.nix15
4 files changed, 96 insertions, 24 deletions
diff --git a/tv/2configs/default.nix b/tv/2configs/default.nix
index 9db35184a..2d813fe32 100644
--- a/tv/2configs/default.nix
+++ b/tv/2configs/default.nix
@@ -1,7 +1,7 @@
with import <stockholm/lib>;
{ config, pkgs, ... }: {
- boot.kernelPackages = pkgs.linuxPackages_latest;
+ boot.kernelPackages = mkDefault pkgs.linuxPackages_latest;
boot.tmpOnTmpfs = true;
@@ -68,18 +68,13 @@ with import <stockholm/lib>;
];
environment.shellAliases = mkForce {
- # alias cal='cal -m3'
gp = "${pkgs.pari}/bin/gp -q";
df = "df -h";
du = "du -h";
- # alias grep='grep --color=auto'
# TODO alias cannot contain #\'
# "ps?" = "ps ax | head -n 1;ps ax | fgrep -v ' grep --color=auto ' | grep";
- # alias la='ls -lA'
- lAtr = "ls -lAtr";
- # alias ll='ls -l'
ls = "ls -h --color=auto --group-directories-first";
dmesg = "dmesg -L --reltime";
view = "vim -R";
diff --git a/tv/2configs/ppp.nix b/tv/2configs/ppp.nix
index 9cc7568a5..ff61f943f 100644
--- a/tv/2configs/ppp.nix
+++ b/tv/2configs/ppp.nix
@@ -1,9 +1,25 @@
-{ pkgs, ... }: {
-
- # usage: pppd call default
-
- environment.etc."ppp/peers/default".text = ''
- /dev/ttyACM2
+{ config, pkgs, ... }: let
+ lib = import <stockholm/lib>;
+ cfg = {
+ pin = "@${toString <secrets/o2.pin>}";
+ ttys.ppp = "/dev/ttyACM0";
+ ttys.com = "/dev/ttyACM1";
+ };
+in {
+ assertions = [
+ {
+ assertion = config.networking.resolvconf.enable;
+ message = "ppp configuration needs resolvconf";
+ }
+ ];
+ environment.etc."ppp/ip-up".source = pkgs.writeDash "ppp.ip-up" ''
+ ${pkgs.openresolv}/bin/resolvconf -a "$IFNAME" < /etc/ppp/resolv.conf
+ '';
+ environment.etc."ppp/ip-down".source = pkgs.writeDash "ppp.ip-down" ''
+ ${pkgs.openresolv}/bin/resolvconf -fd "$IFNAME"
+ '';
+ environment.etc."ppp/peers/o2".text = /* sh */ ''
+ ${cfg.ttys.ppp}
921600
crtscts
defaultroute
@@ -16,17 +32,53 @@
passive
persist
usepeerdns
- connect "${pkgs.ppp}/bin/chat -f ${pkgs.writeText "default.chat" ''
+ connect "${pkgs.ppp}/bin/chat ''${DEBUG+-v} -Ss -f ${pkgs.writeText "o2.chat" /* sh */ ''
ABORT "BUSY"
ABORT "NO CARRIER"
REPORT CONNECT
- "" "ATDT*99#"
- CONNECT
+ "*EMRDY: 1"
+ ATZ OK
+ AT+CFUN=1 OK
+ ${cfg.pin} TIMEOUT 2 ERROR-AT-OK
+ AT+CGDCONT=1,\042IP\042,\042internet\042 OK
+ ATDT*99***1# CONNECT
''}"
'';
-
- environment.systemPackages = [
- pkgs.ppp
+ users.users.root.packages = [
+ (pkgs.writeDashBin "connect" ''
+ # usage:
+ # connect wlan
+ # connect wwan [PEERNAME]
+ set -efu
+ rfkill_wlan=/sys/class/rfkill/rfkill2
+ rfkill_wwan=/sys/class/rfkill/rfkill1
+ case $1 in
+ wlan)
+ ${pkgs.procps}/bin/pkill pppd || :
+ echo 0 > "$rfkill_wwan"/state
+ echo 1 > "$rfkill_wlan"/state
+ ;;
+ wwan)
+ name=''${2-o2}
+ echo 0 > "$rfkill_wlan"/state
+ echo 1 > "$rfkill_wwan"/state
+ ${pkgs.ppp}/bin/pppd call "$name" updetach
+ ;;
+ *)
+ echo "$0: error: bad arguments: $*" >&2
+ exit 1
+ esac
+ '')
+ (pkgs.writeDashBin "modem-send" ''
+ # usage: modem-send ATCOMMAND
+ set -efu
+ tty=${lib.shell.escape cfg.ttys.com}
+ exec <"$tty"
+ printf '%s\r\n' "$1" >"$tty"
+ ${pkgs.gnused}/bin/sed -E '
+ /^OK\r?$/q
+ /^ERROR\r?$/q
+ '
+ '')
];
-
}
diff --git a/tv/2configs/sshd.nix b/tv/2configs/sshd.nix
index 25468f23e..79af5b01f 100644
--- a/tv/2configs/sshd.nix
+++ b/tv/2configs/sshd.nix
@@ -1,10 +1,22 @@
-{ config, lib, pkgs, ... }:
-
with import <stockholm/lib>;
-
-{
+{ config, ... }: let
+ cfg.host = config.krebs.build.host;
+in {
services.openssh = {
enable = true;
};
tv.iptables.input-internet-accept-tcp = singleton "ssh";
+ tv.iptables.extra.nat.OUTPUT = [
+ "-o lo -p tcp --dport 11423 -j REDIRECT --to-ports 22"
+ ];
+ tv.iptables.extra4.nat.PREROUTING = [
+ "-d ${cfg.host.nets.retiolum.ip4.addr} -p tcp --dport 22 -j ACCEPT"
+ ];
+ tv.iptables.extra6.nat.PREROUTING = [
+ "-d ${cfg.host.nets.retiolum.ip6.addr} -p tcp --dport 22 -j ACCEPT"
+ ];
+ tv.iptables.extra.nat.PREROUTING = [
+ "-p tcp --dport 22 -j REDIRECT --to-ports 0"
+ "-p tcp --dport 11423 -j REDIRECT --to-ports 22"
+ ];
}
diff --git a/tv/2configs/xserver/default.nix b/tv/2configs/xserver/default.nix
index 4e9e30741..032df5d90 100644
--- a/tv/2configs/xserver/default.nix
+++ b/tv/2configs/xserver/default.nix
@@ -6,6 +6,19 @@ let
configDir = "/var/empty";
dataDir = "/run/xdg/${cfg.user.name}/xmonad";
user = config.krebs.build.user;
+ xmonad.pkg = pkgs.haskellPackages.xmonad-tv.overrideAttrs (_: {
+ au = {
+ XMONAD_BUILD_SCREEN_WIDTH = 1920;
+ XMONAD_BUILD_TERM_FONT_WIDTH = 10;
+ XMONAD_BUILD_TERM_FONT = "xft:Input Mono:size=12:style=Regular";
+ XMONAD_BUILD_TERM_PADDING = 2;
+ };
+ }.${config.krebs.build.host.name} or {
+ XMONAD_BUILD_SCREEN_WIDTH = 1366;
+ XMONAD_BUILD_TERM_FONT_WIDTH = 6;
+ XMONAD_BUILD_TERM_FONT = "-*-clean-*-*-*-*-*-*-*-*-*-*-iso10646-1";
+ XMONAD_BUILD_TERM_PADDING = 2;
+ });
};
in {
@@ -51,7 +64,7 @@ in {
systemd.services.display-manager.enable = false;
systemd.services.xmonad = let
- xmonad = "${pkgs.haskellPackages.xmonad-tv}/bin/xmonad";
+ xmonad = "${cfg.xmonad.pkg}/bin/xmonad";
xmonad-start = pkgs.writeDash "xmonad-start" ''
${pkgs.coreutils}/bin/mkdir -p "$XMONAD_CACHE_DIR"
${pkgs.coreutils}/bin/mkdir -p "$XMONAD_CONFIG_DIR"