This commit is contained in:
2026-04-08 15:47:44 +02:00
parent 8e5e119233
commit 18f86c4316
2 changed files with 141 additions and 55 deletions
Generated
+12 -9
View File
@@ -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": {
+129 -46
View File
@@ -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;
};
};
};