- Introduced a new module for a11ywatch with Podman support, creating a bridge network and defining backend and frontend containers. - Configured Nginx to serve the a11ywatch application with SSL and ACME support. - Added user and group configurations for a11ywatch. - Created a systemd service to ensure the Podman network exists on boot. Implement Firefox Container Controller extension and host - Added a module for the Firefox Container Controller extension, allowing installation via Nix. - Created a native messaging host for the extension to communicate with the container controller. - Included CLI helpers to enqueue commands for showing and hiding containers. Enable fingerprint authentication in PAM - Configured fingerprint authentication for login, sudo, and swaylock services. Setup Raspberry Pi OS image creation script - Developed a script to create a read-only Raspberry Pi OS Lite image with Snapcast client. - Included configuration for Wi-Fi, hostname, and Snapcast server. - Implemented user and group setup for Snapcast client and ensured necessary services are enabled. Document Raspberry Pi Zero W setup instructions - Added detailed instructions for configuring Raspberry Pi OS on Zero W, including disabling unused services and setting up Snapcast client. Create test configuration script for NixOS - Implemented a script to perform dry-builds for NixOS configurations, allowing for easy validation of host configurations.
60 lines
1.7 KiB
Nix
60 lines
1.7 KiB
Nix
{ pkgs, lib, ... }:
|
||
|
||
let
|
||
# 1) Native‐messaging host: reads and clears the queued JSON command
|
||
containerControllerHost = pkgs.writeScriptBin "firefox-containercontroller-host" ''
|
||
#!/usr/bin/env bash
|
||
CMD_FILE="$HOME/.cache/firefox-container-command.json"
|
||
if [ -f "$CMD_FILE" ]; then
|
||
cat "$CMD_FILE"
|
||
rm "$CMD_FILE"
|
||
else
|
||
echo '{}'
|
||
fi
|
||
'';
|
||
|
||
# 2) CLI helper to enqueue a “hide” command
|
||
hideContainer = pkgs.writeScriptBin "hide-container" ''
|
||
#!/usr/bin/env bash
|
||
if [ -z "$1" ]; then
|
||
echo "Usage: $0 <userContextId>" >&2
|
||
exit 1
|
||
fi
|
||
ID="$1"
|
||
mkdir -p "$HOME/.cache"
|
||
printf '{"userContextId": %s, "action": "hide"}' "$ID" \
|
||
> "$HOME/.cache/firefox-container-command.json"
|
||
'';
|
||
|
||
# 3) CLI helper to enqueue a “show” command
|
||
showContainer = pkgs.writeScriptBin "show-container" ''
|
||
#!/usr/bin/env bash
|
||
if [ -z "$1" ]; then
|
||
echo "Usage: $0 <userContextId>" >&2
|
||
exit 1
|
||
fi
|
||
ID="$1"
|
||
mkdir -p "$HOME/.cache"
|
||
printf '{"userContextId": %s, "action": "show"}' "$ID" \
|
||
> "$HOME/.cache/firefox-container-command.json"
|
||
'';
|
||
in
|
||
{
|
||
# Install host + helpers
|
||
environment.systemPackages = [
|
||
containerControllerHost
|
||
hideContainer
|
||
showContainer
|
||
];
|
||
|
||
# Register the native‐messaging host for our extension
|
||
environment.etc."mozilla/native-messaging-hosts/com.firefox.containercontroller.json".text =
|
||
builtins.toJSON {
|
||
name = "com.firefox.containercontroller";
|
||
description = "Native messaging host for Container Controller";
|
||
path = containerControllerHost;
|
||
type = "stdio";
|
||
allowed_extensions = [ "containercontroller@cloonar.com" ];
|
||
};
|
||
}
|