init
This commit is contained in:
commit
9103bfa337
4 changed files with 329 additions and 0 deletions
36
base.nix
Normal file
36
base.nix
Normal file
|
@ -0,0 +1,36 @@
|
||||||
|
{ lib, ... }:
|
||||||
|
|
||||||
|
{
|
||||||
|
system.stateVersion = "24.11";
|
||||||
|
|
||||||
|
# No need to change users at runtime
|
||||||
|
users.mutableUsers = false;
|
||||||
|
|
||||||
|
# I DON'T WANT IT
|
||||||
|
# STOP TRYING TO GIVE IT TO ME
|
||||||
|
boot.supportedFilesystems.zfs = lib.mkForce false;
|
||||||
|
|
||||||
|
# Set root password to a secure password
|
||||||
|
users.users.root.password = "asecurepassword";
|
||||||
|
|
||||||
|
# Add wifi credentials
|
||||||
|
networking.wireless = {
|
||||||
|
enable = true;
|
||||||
|
networks."PAL3.0".auth = ''
|
||||||
|
eap=PEAP
|
||||||
|
key_mgmt=WPA-EAP
|
||||||
|
pairwise=CCMP
|
||||||
|
auth_alg=OPEN
|
||||||
|
proto=RSN
|
||||||
|
identity="USERNAME@purdue.edu"
|
||||||
|
password="PASSWORD"
|
||||||
|
phase1="peaplabel=0"
|
||||||
|
phase2="auth=MSCHAPV2"
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
|
networking.hostName = "kiosk";
|
||||||
|
time.timeZone = "America/New_York";
|
||||||
|
|
||||||
|
raspberry-pi-nix.board = "bcm2711";
|
||||||
|
}
|
220
flake.lock
Normal file
220
flake.lock
Normal file
|
@ -0,0 +1,220 @@
|
||||||
|
{
|
||||||
|
"nodes": {
|
||||||
|
"libcamera-src": {
|
||||||
|
"flake": false,
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1725630279,
|
||||||
|
"narHash": "sha256-KH30jmHfxXq4j2CL7kv18DYECJRp9ECuWNPnqPZajPA=",
|
||||||
|
"owner": "raspberrypi",
|
||||||
|
"repo": "libcamera",
|
||||||
|
"rev": "69a894c4adad524d3063dd027f5c4774485cf9db",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "raspberrypi",
|
||||||
|
"repo": "libcamera",
|
||||||
|
"rev": "69a894c4adad524d3063dd027f5c4774485cf9db",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"libpisp-src": {
|
||||||
|
"flake": false,
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1724944683,
|
||||||
|
"narHash": "sha256-Fo2UJmQHS855YSSKKmGrsQnJzXog1cdpkIOO72yYAM4=",
|
||||||
|
"owner": "raspberrypi",
|
||||||
|
"repo": "libpisp",
|
||||||
|
"rev": "28196ed6edcfeda88d23cc5f213d51aa6fa17bb3",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "raspberrypi",
|
||||||
|
"ref": "v1.0.7",
|
||||||
|
"repo": "libpisp",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"nixpkgs": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1731245184,
|
||||||
|
"narHash": "sha256-vmLS8+x+gHRv1yzj3n+GTAEObwmhxmkkukB2DwtJRdU=",
|
||||||
|
"owner": "NixOS",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"rev": "aebe249544837ce42588aa4b2e7972222ba12e8f",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "NixOS",
|
||||||
|
"ref": "nixpkgs-unstable",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"nixpkgs_2": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1728193676,
|
||||||
|
"narHash": "sha256-PbDWAIjKJdlVg+qQRhzdSor04bAPApDqIv2DofTyynk=",
|
||||||
|
"owner": "NixOS",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"rev": "ecbc1ca8ffd6aea8372ad16be9ebbb39889e55b6",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "NixOS",
|
||||||
|
"ref": "nixos-24.05",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"root": {
|
||||||
|
"inputs": {
|
||||||
|
"nixpkgs": "nixpkgs",
|
||||||
|
"rpi-nix": "rpi-nix"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"rpi-bluez-firmware-src": {
|
||||||
|
"flake": false,
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1708969706,
|
||||||
|
"narHash": "sha256-KakKnOBeWxh0exu44beZ7cbr5ni4RA9vkWYb9sGMb8Q=",
|
||||||
|
"owner": "RPi-Distro",
|
||||||
|
"repo": "bluez-firmware",
|
||||||
|
"rev": "78d6a07730e2d20c035899521ab67726dc028e1c",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "RPi-Distro",
|
||||||
|
"ref": "bookworm",
|
||||||
|
"repo": "bluez-firmware",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"rpi-firmware-nonfree-src": {
|
||||||
|
"flake": false,
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1723266537,
|
||||||
|
"narHash": "sha256-T7eTKXqY9cxEMdab8Snda4CEOrEihy5uOhA6Fy+Mhnw=",
|
||||||
|
"owner": "RPi-Distro",
|
||||||
|
"repo": "firmware-nonfree",
|
||||||
|
"rev": "4b356e134e8333d073bd3802d767a825adec3807",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "RPi-Distro",
|
||||||
|
"ref": "bookworm",
|
||||||
|
"repo": "firmware-nonfree",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"rpi-firmware-src": {
|
||||||
|
"flake": false,
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1727798811,
|
||||||
|
"narHash": "sha256-eavbshXGYmkYR33y9FLcQMJoAYdYTESVEy0g/RRXnb0=",
|
||||||
|
"owner": "raspberrypi",
|
||||||
|
"repo": "firmware",
|
||||||
|
"rev": "287e6a6c2d3b50eee3e2c5b2eacdd907e5cbe09a",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "raspberrypi",
|
||||||
|
"ref": "1.20241001",
|
||||||
|
"repo": "firmware",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"rpi-linux-6_10_12-src": {
|
||||||
|
"flake": false,
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1728305462,
|
||||||
|
"narHash": "sha256-LtvNmGD1D5YYv+C9xxxddAeHw69o3OX/H9M7F663L74=",
|
||||||
|
"owner": "raspberrypi",
|
||||||
|
"repo": "linux",
|
||||||
|
"rev": "26ee50d56618c2d98100b1bc672fd201aed4d00f",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "raspberrypi",
|
||||||
|
"ref": "rpi-6.10.y",
|
||||||
|
"repo": "linux",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"rpi-linux-6_6_54-src": {
|
||||||
|
"flake": false,
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1728155174,
|
||||||
|
"narHash": "sha256-/8RjW35XQMnshjAE4Ey8j3oWzE2GOntnBYY6PlvZGhs=",
|
||||||
|
"owner": "raspberrypi",
|
||||||
|
"repo": "linux",
|
||||||
|
"rev": "12f0f28db3afe451a81a34c5a444f6841c10067c",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "raspberrypi",
|
||||||
|
"ref": "rpi-6.6.y",
|
||||||
|
"repo": "linux",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"rpi-nix": {
|
||||||
|
"inputs": {
|
||||||
|
"libcamera-src": "libcamera-src",
|
||||||
|
"libpisp-src": "libpisp-src",
|
||||||
|
"nixpkgs": "nixpkgs_2",
|
||||||
|
"rpi-bluez-firmware-src": "rpi-bluez-firmware-src",
|
||||||
|
"rpi-firmware-nonfree-src": "rpi-firmware-nonfree-src",
|
||||||
|
"rpi-firmware-src": "rpi-firmware-src",
|
||||||
|
"rpi-linux-6_10_12-src": "rpi-linux-6_10_12-src",
|
||||||
|
"rpi-linux-6_6_54-src": "rpi-linux-6_6_54-src",
|
||||||
|
"rpicam-apps-src": "rpicam-apps-src",
|
||||||
|
"u-boot-src": "u-boot-src"
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1731453829,
|
||||||
|
"narHash": "sha256-GzdsZR30UPMsbNM1dBlOmeXzhxcPXq79RDl4qOILpmU=",
|
||||||
|
"owner": "nix-community",
|
||||||
|
"repo": "raspberry-pi-nix",
|
||||||
|
"rev": "3a016ff26c2ca6e0052f3f17c892bb7406eb0c84",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "nix-community",
|
||||||
|
"repo": "raspberry-pi-nix",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"rpicam-apps-src": {
|
||||||
|
"flake": false,
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1727515047,
|
||||||
|
"narHash": "sha256-qCYGrcibOeGztxf+sd44lD6VAOGoUNwRqZDdAmcTa/U=",
|
||||||
|
"owner": "raspberrypi",
|
||||||
|
"repo": "rpicam-apps",
|
||||||
|
"rev": "a8ccf9f3cd9df49875dfb834a2b490d41d226031",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "raspberrypi",
|
||||||
|
"ref": "v1.5.2",
|
||||||
|
"repo": "rpicam-apps",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"u-boot-src": {
|
||||||
|
"flake": false,
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1719857238,
|
||||||
|
"narHash": "sha256-mJ2TBy0Y5ZtcGFgtU5RKr0UDUp5FWzojbFb+o/ebRJU=",
|
||||||
|
"type": "tarball",
|
||||||
|
"url": "https://ftp.denx.de/pub/u-boot/u-boot-2024.07.tar.bz2"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"type": "tarball",
|
||||||
|
"url": "https://ftp.denx.de/pub/u-boot/u-boot-2024.07.tar.bz2"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"root": "root",
|
||||||
|
"version": 7
|
||||||
|
}
|
25
flake.nix
Normal file
25
flake.nix
Normal file
|
@ -0,0 +1,25 @@
|
||||||
|
{
|
||||||
|
description = "My standard flake-parts devshell template";
|
||||||
|
|
||||||
|
inputs = {
|
||||||
|
nixpkgs.url = "github:NixOS/nixpkgs/nixpkgs-unstable";
|
||||||
|
rpi-nix.url = "github:nix-community/raspberry-pi-nix";
|
||||||
|
};
|
||||||
|
|
||||||
|
outputs = { nixpkgs, rpi-nix, ... }: {
|
||||||
|
|
||||||
|
nixosConfigurations.kiosk = nixpkgs.lib.nixosSystem {
|
||||||
|
system = "aarch64-linux";
|
||||||
|
modules = [
|
||||||
|
./base.nix
|
||||||
|
./kiosk.nix
|
||||||
|
|
||||||
|
rpi-nix.nixosModules.raspberry-pi
|
||||||
|
rpi-nix.nixosModules.sd-image
|
||||||
|
{
|
||||||
|
sdImage.compressImage = false;
|
||||||
|
}
|
||||||
|
];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
48
kiosk.nix
Normal file
48
kiosk.nix
Normal file
|
@ -0,0 +1,48 @@
|
||||||
|
{ pkgs, lib, ... }:
|
||||||
|
let
|
||||||
|
dashboardUrl = "https://night.purduehackers.com";
|
||||||
|
in
|
||||||
|
{
|
||||||
|
# Create user to host kiosk
|
||||||
|
users.users.kiosk = {
|
||||||
|
isSystemUser = true;
|
||||||
|
group = "kiosk";
|
||||||
|
};
|
||||||
|
users.groups.kiosk = { };
|
||||||
|
|
||||||
|
# Setup caged kiosk, with kiosk firefox
|
||||||
|
# Use a temporary directory for the firefox profile
|
||||||
|
# This removes the need for a home directory at all
|
||||||
|
# Using a private window removes most effects of a profile anyways
|
||||||
|
services.cage = {
|
||||||
|
enable = true;
|
||||||
|
user = "kiosk";
|
||||||
|
program = ''
|
||||||
|
${lib.getExe pkgs.firefox} \
|
||||||
|
--profile /tmp/firefox-profile \
|
||||||
|
--kiosk \
|
||||||
|
--private-window "${dashboardUrl}"
|
||||||
|
'';
|
||||||
|
extraArguments = [ "-d" ];
|
||||||
|
};
|
||||||
|
|
||||||
|
# Create temporary directory for firefox profile
|
||||||
|
systemd.tmpfiles.settings."10-kiosk" = {
|
||||||
|
"/tmp/firefox-profile".d = {
|
||||||
|
user = "kiosk";
|
||||||
|
group = "kiosk";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
# Set firefox autoplay policy to always allow autoplay for dashboard
|
||||||
|
programs.firefox.policies = {
|
||||||
|
Permissions.Autoplay.Allow = [ dashboardUrl ];
|
||||||
|
};
|
||||||
|
|
||||||
|
# Enable pipewire/pipewire-pulse for audio
|
||||||
|
security.rtkit.enable = true;
|
||||||
|
services.pipewire = {
|
||||||
|
enable = true;
|
||||||
|
pulse.enable = true;
|
||||||
|
};
|
||||||
|
}
|
Loading…
Reference in a new issue