From 18f86c4316eb94fc19043c0e241fd2040428fbb7 Mon Sep 17 00:00:00 2001 From: kalipso Date: Wed, 8 Apr 2026 15:47:44 +0200 Subject: [PATCH] update --- flake.lock | 21 ++++--- flake.nix | 175 +++++++++++++++++++++++++++++++++++++++-------------- 2 files changed, 141 insertions(+), 55 deletions(-) diff --git a/flake.lock b/flake.lock index 907fd5b..a0b1bb5 100644 --- a/flake.lock +++ b/flake.lock @@ -37,15 +37,16 @@ "utils": "utils" }, "locked": { - "lastModified": 1764353068, - "narHash": "sha256-p8N90Wgb2CHjWyqoXQiwrBXPDzlPlklFy5u6/Pzzdm8=", + "lastModified": 1775070981, + "narHash": "sha256-UjDb+g38Wj9zCBZAojKQSpi9jPWZfQzcPIxNSq4f6XM=", "owner": "k4lipso", "repo": "gokill", - "rev": "5a2b3d9d7e56945a47907bb084e39a557102f829", + "rev": "cac9b566a5437ac13187aa964c1d880310f6b12d", "type": "github" }, "original": { "owner": "k4lipso", + "ref": "demo", "repo": "gokill", "type": "github" } @@ -134,16 +135,18 @@ }, "nixpkgs_2": { "locked": { - "lastModified": 1766025857, - "narHash": "sha256-Lav5jJazCW4mdg1iHcROpuXqmM94BWJvabLFWaJVJp0=", - "owner": "NixOS", + "lastModified": 1775036866, + "narHash": "sha256-ZojAnPuCdy657PbTq5V0Y+AHKhZAIwSIT2cb8UgAz/U=", + "owner": "nixos", "repo": "nixpkgs", - "rev": "def3da69945bbe338c373fddad5a1bb49cf199ce", + "rev": "6201e203d09599479a3b3450ed24fa81537ebc4e", "type": "github" }, "original": { - "id": "nixpkgs", - "type": "indirect" + "owner": "nixos", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" } }, "root": { diff --git a/flake.nix b/flake.nix index f61de31..cb80b2e 100644 --- a/flake.nix +++ b/flake.nix @@ -1,7 +1,8 @@ { inputs = { utils.url = "github:numtide/flake-utils"; - gokill.url = "github:k4lipso/gokill"; + nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable"; + gokill.url = "github:k4lipso/gokill/demo"; nixos-hardware = { url = "github:NixOS/nixos-hardware/master"; inputs.nixpkgs.follows = "nixpkgs"; @@ -26,7 +27,7 @@ packages.showGokillStatus = let watchGokillStatus = pkgs.writeShellScriptBin "watch-gokill-status" '' - ${pkgs.procps}/bin/watch -c -t "sudo ${gokillPackage}/bin/gokillctl --db=/etc/gokill status; # sudo ${gokillPackage}/bin/gokillctl --db=/etc/gokill remote status" + ${pkgs.procps}/bin/watch -c -t "ip -c -4 -br a | grep \"wlan\|enu\"; sudo ${gokillPackage}/bin/gokillctl --db=/etc/gokill status --stages; sudo ${gokillPackage}/bin/gokillctl --db=/etc/gokill remote status --peers" ''; in pkgs.writeShellScriptBin "show-gokill-status" '' @@ -35,7 +36,8 @@ TARGET_WORKSPACE="1" #env DISPLAY=:0 ${pkgs.sudo}/bin/sudo su -c "${pkgs.i3}/bin/i3-msg \"exec $TERMINAL -T 'Status' -e $APP_COMMAND;\"" rpi - ${pkgs.i3}/bin/i3-msg "exec $TERMINAL -T 'Status' -e $APP_COMMAND; layout tabbed" + ${pkgs.killall}/bin/killall .xterm-wrapped + ${pkgs.i3}/bin/i3-msg "exec $TERMINAL -T 'Status' -e $APP_COMMAND;" # layout tabbed ''; packages.alarmSound = pkgs.writeShellScriptBin "alarm-sound" '' @@ -63,23 +65,25 @@ exportPin "531" echo "Starting Alert sound!" - for i in {1..5}; do - echo "Alert Iteration $i of 5" + for i in {1..50}; do + echo "Alert Iteration $i of 50" setState "531" "1" - sleep 1 + sleep 0.2 setState "531" "0" - sleep 1 + sleep 0.2 done echo "Finished Alert sound!" ''; packages.showAlert = pkgs.writeShellScriptBin "show-alert" '' - echo "show alert" export DISPLAY=:0 echo "call xset" ${pkgs.xorg.xset}/bin/xset dpms force on - echo "call alert" - ${self.packages.${system}.alertTest}/bin/alert + echo "Starting SM" + ${pkgs.screen-message}/bin/sm -f black -b \#f30909 "$@" & + sleep 10 + echo "Killing SM" + kill $! #env DISPLAY=:0 sudo su -c "${pkgs.xorg.xset}/bin/xset dpms force on" rpi #env DISPLAY=:0 sudo su -c "${self.packages.${system}.alertTest}/bin/alert" rpi @@ -125,12 +129,8 @@ ]; }; - in - { - rpi = nixpkgs.lib.nixosSystem { - system = "aarch64-linux"; - specialArgs.inputs = inputs; - modules = [ + + defaultModules = [ "${nixpkgs}/nixos/modules/installer/sd-card/sd-image-aarch64.nix" inputs.nixos-hardware.nixosModules.raspberry-pi-3 inputs.gokill.nixosModules.gokill @@ -154,7 +154,13 @@ libraspberrypi raspberrypi-eeprom unclutter + inputs.gokill.packages.aarch64-linux.gokill self.packages.aarch64-linux.alertTest + htop + + # Camera + v4l-utils + libv4l ]; sdImage = pkgs.lib.mkForce { @@ -270,6 +276,22 @@ ]; }; + systemd.services.gokill-cleanup-socket = { + enable = true; + description = "remove gokill socket on boot if it exists"; + wantedBy = [ "gokill.service" ]; + unitConfig = { + ConditionPathExists = "/etc/gokill/gokill.socket"; + }; + + serviceConfig = { + ExecStart = "${(pkgs.writeShellScriptBin "rm-gokill-socket" '' + echo "removing gokill.socket" + rm /etc/gokill/gokill.socket + '')}/bin/rm-gokill-socket"; + }; + }; + systemd.services.gokill-status = { enable = true; description = "Open gokill status view at boot"; @@ -292,36 +314,6 @@ }; }; - services.gokill = - { - enable = true; - triggers = [ - { - type = "Timeout"; - name = "custom timeout"; - options = { - duration = 120; - }; - actions = [ - { - type = "ShellScript"; - options = { - path = "${inputs.self.packages.aarch64-linux.showAlert}/bin/show-alert"; - }; - stage = 1; - } - #{ - # type = "ShellScript"; - # options = { - # path = "${self.packages.aarch64-linux.alarmSound}/bin/alarm-sound"; - # }; - # stage = 1; - #} - ]; - } - ]; - }; - services.displayManager = { autoLogin.enable = true; autoLogin.user = "rpi"; @@ -362,6 +354,10 @@ boot.supportedFilesystems = pkgs.lib.mkForce [ "ext4" "vfat" ]; boot.kernelPackages = pkgs.linuxKernel.packages.linux_rpi3; + #RPI Camera Support + boot.kernelModules = [ + "bcm2835-v4l2" + ]; boot.tmp.cleanOnBoot = true; boot.tmp.useTmpfs = true; @@ -385,6 +381,19 @@ ]; }; }; + + networking.wireless = { + enable = true; + networks."ZW public".authProtocols = [ "NONE" ]; + networks."ZW public legacy".authProtocols = [ "NONE" ]; + networks."AtlantisPublic".pskRaw = "cc9f903ecfa70d67bc877bd7eb10c876973dcf5b31e3258029ece86eeca3aff5"; + extraConfig = "ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=wheel"; + }; + + swapDevices = [{ + device = "/var/lib/swapfile"; + size = 8*1024; # 8 GiB + }]; nixpkgs.hostPlatform = pkgs.lib.mkDefault "aarch64-linux"; networking.hostName = "rpi"; @@ -392,6 +401,80 @@ system.stateVersion = "25.11"; }) ]; + in + { + rpi = nixpkgs.lib.nixosSystem { + system = "aarch64-linux"; + specialArgs.inputs = inputs; + modules = defaultModules ++ [ + { + services.gokill = + { + enable = true; + remote.enable = true; + triggers = [ + { + type = "Remote"; + name = "remote"; + loop = true; + options = { + group = "39C3"; + secret = "39C3-Real"; + testSecret = "39C3-Test"; + }; + actions = [ + { + type = "ShellScript"; + options = { + path = "${inputs.self.packages.aarch64-linux.showAlert}/bin/show-alert"; + args = "ALERT"; + }; + stage = 1; + } + { + type = "ShellScript"; + options = { + path = "${self.packages.aarch64-linux.alarmSound}/bin/alarm-sound"; + }; + stage = 1; + } + ]; + } + #{ + # type = "Timeout"; + # name = "alert"; + # options = { + # duration = 60; + # }; + # actions = [ + # { + # type = "ShellScript"; + # options = { + # path = "${inputs.self.packages.aarch64-linux.showAlert}/bin/show-alert"; + # args = "ALERT"; + # }; + # stage = 1; + # } + # { + # type = "ShellScript"; + # options = { + # path = "${self.packages.aarch64-linux.alarmSound}/bin/alarm-sound"; + # }; + # stage = 1; + # } + # ]; + #} + ]; + }; + + } + ]; + }; + + rpi2 = nixpkgs.lib.nixosSystem { + system = "aarch64-linux"; + specialArgs.inputs = inputs; + modules = defaultModules; }; }; };