blob: fdabf4f89199acb2235ea4d8b9e49aa4dc314768 [file] [log] [blame]
Serge Bazanskidcdbd842022-07-07 02:30:09 +02001# RPi4 as TV kiosk.
Serge Bazanski5ac5e4b2022-07-06 00:31:35 +02002
Serge Bazanski18c1a262022-07-07 14:24:53 +02003{ config, pkgs, workspace, ... }:
Serge Bazanski5ac5e4b2022-07-06 00:31:35 +02004
5let
6 nixos-hardware = builtins.fetchGit {
7 url = "https://github.com/NixOS/nixos-hardware.git";
8 rev = "3bf48d3587d3f34f745a19ebc968b002ef5b5c5a";
9 };
10
11in {
Serge Bazanskidcdbd842022-07-07 02:30:09 +020012 imports = [
13 "${nixos-hardware}/raspberry-pi/4"
14 ];
Serge Bazanski5ac5e4b2022-07-06 00:31:35 +020015
Serge Bazanskidcdbd842022-07-07 02:30:09 +020016 boot.initrd.availableKernelModules = [ "xhci_pci" "usbhid" ];
17 boot.initrd.kernelModules = [ ];
18 boot.kernelModules = [ ];
19 boot.extraModulePackages = [ ];
Serge Bazanski5ac5e4b2022-07-06 00:31:35 +020020 boot.loader.grub.enable = false;
21 boot.loader.generic-extlinux-compatible.enable = true;
Serge Bazanskidcdbd842022-07-07 02:30:09 +020022 powerManagement.cpuFreqGovernor = "ondemand";
Serge Bazanski5ac5e4b2022-07-06 00:31:35 +020023
Serge Bazanskidcdbd842022-07-07 02:30:09 +020024 networking.useDHCP = true;
25
26 swapDevices = [ ];
27 fileSystems."/" =
28 { device = "/dev/disk/by-uuid/44444444-4444-4444-8888-888888888888";
29 fsType = "ext4";
30 };
31
Serge Bazanski5ac5e4b2022-07-06 00:31:35 +020032 networking.domain = "waw.hackerspace.pl";
33 time.timeZone = "Europe/Warsaw";
34
Piotr Dobrowolskiaa673872022-07-11 10:34:30 +020035 services.avahi = {
36 enable = true;
37 nssmdns = true;
38 publish.addresses = true;
39 };
40
Serge Bazanski5ac5e4b2022-07-06 00:31:35 +020041 sound.enable = true;
42 services.pipewire = {
43 enable = true;
44 alsa.enable = true;
45 pulse.enable = true;
46 };
47
48 services.dbus.enable = true;
49
50 programs.sway = {
51 enable = true;
52 wrapperFeatures.gtk = true;
53 extraSessionCommands = ''
54 export WLR_LIBINPUT_NO_DEVICES=1
55 export WLR_NO_HARDWARE_CURSORS=1
56 '';
57 };
58 hardware.raspberry-pi."4".fkms-3d.enable = true;
59 hardware.raspberry-pi."4".poe-hat.enable = true;
60
61 services.greetd = {
62 enable = true;
63 settings = rec {
64 initial_session = let
65 sway = builtins.elemAt config.services.xserver.displayManager.sessionPackages 0;
66 in {
67 command = "${sway}/bin/sway";
68 user = "kiosk";
69 };
70 default_session = initial_session;
71 };
72 };
73
Serge Bazanski5ac5e4b2022-07-06 00:31:35 +020074 users.users.root = {
75 openssh.authorizedKeys.keys = [
76 "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIG599UildOrAq+LIOQjKqtGMwjgjIxozI1jtQQRKHtCP q3k@mimeomia"
77 "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIFhaCaC/CVYv6hphqmEdKaPrIn+Q946+myvL9SSnzFZk vuko@eagle"
78 "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAICTR292kx/2CNuWYIsZ6gykQ036aBGrmheIuZa6S1D2x implr@thonk"
79 "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIGfIRe1nH6vwjQTjqHNnkKAdr1VYqGEeQnqInmf3A6UN ar@khas"
80 "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDQb3YQoiYFZLKwvHYKbu1bMqzNeDCAszQhAe1+QI5SLDOotclyY/vFmOReZOsmyMFl71G2d7d+FbYNusUnNNjTxRYQ021tVc+RkMdLJaORRURmQfEFEKbai6QSFTwErXzuoIzyEPK0lbsQuGgqT9WaVnRzHJ2Q/4+qQbxAS34PuR5NqEkmn4G6LMo3OyJ5mwPkCj9lsqz4BcxRaMWFO3mNcwGDfSW+sqgc3E8N6LKrTpZq3ke7xacpQmcG5DU9VO+2QVPdltl9jWbs3gXjmF92YRNOuKPVfAOZBBsp8JOznfx8s9wDgs7RwPmDpjIAJEyoABqW5hlXfqRbTnfnMvuR informatic@InformaticPC"
81 "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQDVQI/uYdp3km0NBSK7s80VAw7k6zH2Y5hYg1fkPfTjN7/hPCvyuIvSYYNdb6APWevUcw5+1Mpv0YMc+GOFCsJEXnSAcppNhZTPM6ic6HeaIHEC5QBv6qMWbCNLf5M9ZqYdBHEIeCYg0VGJMzgkSor7sk3gEwnKgCMaJ0Bmqv++qtBOLKhCgUn3KTORAn2BAtkXEe8ASfkdWWPMoq20eshsV26h4N4C2bvAgm7ucFtziOtp7TpGY5L8snv7twAeriMkifLbF7J3vy+l6qYBb990HkRadAHAYtt0viPEjTzkFlTubxMPqrmFh4xK8HdKawAw8KFy0SYBqQnKU9oiZ5biyLJvFzaLn+YJL4BcM3A8DRvdeaHiD4PnEJh8bWHCBER5hhGYcNZhA+qBxPYXFjYEiAfsXxD1AYNVep6lpnPtK0vvcPKSxr5eLBM8ZoSofKtA0Xa+7ySuAnzWSdy9EspLNzA8TSFUhQcsZmsUE1cPeLoS2+8I9QFDwQbyPAwWKpfCkLaWd1cK4J1KPn6XzH8iARifX4F/oAEzmfYz5yXrGJQV6HhNAntKXt8dsZhME3kYVgHB/8Ls8PRwAe/9N92JR+DjdDvGKLoPf3BqOq4fq6JcrUT6FPRtGCz0bl4Cgnsb+UY1d2Ue2I7Wcpuqgv5HLY0beTE6CSEfDNmPad/EPw== cz3"
82 ];
83 };
84 users.groups.kiosk = {};
85 users.users.kiosk = {
86 isNormalUser = true;
87 group = "kiosk";
88 extraGroups = [ "users" "lp" "dialout" "tty" ];
89 };
90
91 environment.systemPackages = with pkgs; [
92 (let
93 config = pkgs.writeText "config.lua" ''
94 return {
95 displayTime = 2,
96 transitionTime = 0.5,
97 showProgress = true,
98 nodes = {
99 {'nodes.weather', displayTime = 10},
100 {'nodes.newdash', displayTime = 10},
101 {'nodes.misery', displayTime = 10},
102 },
103 environment = os.getenv('ENV') or 'prod',
104 renderWidth = 1280,
105 renderHeight = 720,
106 }
107 '';
108 in pkgs.writeScriptBin "signage-wrapped" ''
109 #!/usr/bin/env bash
Serge Bazanski18c1a262022-07-07 14:24:53 +0200110 SIGNAGE_CONFIG=${config} ${workspace.hswaw.signage.prod}/bin/signage
Serge Bazanski5ac5e4b2022-07-06 00:31:35 +0200111 '')
112 firefox foot wayvnc
113 vim rxvt-unicode-unwrapped.terminfo
114
Serge Bazanskidcdbd842022-07-07 02:30:09 +0200115 alacritty foot
Serge Bazanski5ac5e4b2022-07-06 00:31:35 +0200116 wayland glib dracula-theme gnome3.adwaita-icon-theme
117 swaylock swayidle grim slurp wl-clipboard bemenu mako
118 ];
119
120 services.openssh.enable = true;
121
122 system.stateVersion = "22.05"; # Did you read the comment?
Serge Bazanski5ac5e4b2022-07-06 00:31:35 +0200123}