Serge Bazanski | dcdbd84 | 2022-07-07 02:30:09 +0200 | [diff] [blame] | 1 | # RPi4 as TV kiosk. |
Serge Bazanski | 5ac5e4b | 2022-07-06 00:31:35 +0200 | [diff] [blame] | 2 | |
Serge Bazanski | 18c1a26 | 2022-07-07 14:24:53 +0200 | [diff] [blame] | 3 | { config, pkgs, workspace, ... }: |
Serge Bazanski | 5ac5e4b | 2022-07-06 00:31:35 +0200 | [diff] [blame] | 4 | |
| 5 | let |
| 6 | nixos-hardware = builtins.fetchGit { |
| 7 | url = "https://github.com/NixOS/nixos-hardware.git"; |
| 8 | rev = "3bf48d3587d3f34f745a19ebc968b002ef5b5c5a"; |
| 9 | }; |
| 10 | |
| 11 | in { |
Serge Bazanski | dcdbd84 | 2022-07-07 02:30:09 +0200 | [diff] [blame] | 12 | imports = [ |
| 13 | "${nixos-hardware}/raspberry-pi/4" |
| 14 | ]; |
Serge Bazanski | 5ac5e4b | 2022-07-06 00:31:35 +0200 | [diff] [blame] | 15 | |
Serge Bazanski | dcdbd84 | 2022-07-07 02:30:09 +0200 | [diff] [blame] | 16 | boot.initrd.availableKernelModules = [ "xhci_pci" "usbhid" ]; |
| 17 | boot.initrd.kernelModules = [ ]; |
| 18 | boot.kernelModules = [ ]; |
| 19 | boot.extraModulePackages = [ ]; |
Serge Bazanski | 5ac5e4b | 2022-07-06 00:31:35 +0200 | [diff] [blame] | 20 | boot.loader.grub.enable = false; |
| 21 | boot.loader.generic-extlinux-compatible.enable = true; |
Serge Bazanski | dcdbd84 | 2022-07-07 02:30:09 +0200 | [diff] [blame] | 22 | powerManagement.cpuFreqGovernor = "ondemand"; |
Serge Bazanski | 5ac5e4b | 2022-07-06 00:31:35 +0200 | [diff] [blame] | 23 | |
Serge Bazanski | dcdbd84 | 2022-07-07 02:30:09 +0200 | [diff] [blame] | 24 | 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 Bazanski | 5ac5e4b | 2022-07-06 00:31:35 +0200 | [diff] [blame] | 32 | networking.domain = "waw.hackerspace.pl"; |
| 33 | time.timeZone = "Europe/Warsaw"; |
| 34 | |
Piotr Dobrowolski | aa67387 | 2022-07-11 10:34:30 +0200 | [diff] [blame] | 35 | services.avahi = { |
| 36 | enable = true; |
| 37 | nssmdns = true; |
| 38 | publish.addresses = true; |
| 39 | }; |
| 40 | |
Serge Bazanski | 5ac5e4b | 2022-07-06 00:31:35 +0200 | [diff] [blame] | 41 | 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 Bazanski | 5ac5e4b | 2022-07-06 00:31:35 +0200 | [diff] [blame] | 74 | 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 Bazanski | 18c1a26 | 2022-07-07 14:24:53 +0200 | [diff] [blame] | 110 | SIGNAGE_CONFIG=${config} ${workspace.hswaw.signage.prod}/bin/signage |
Serge Bazanski | 5ac5e4b | 2022-07-06 00:31:35 +0200 | [diff] [blame] | 111 | '') |
| 112 | firefox foot wayvnc |
| 113 | vim rxvt-unicode-unwrapped.terminfo |
| 114 | |
Serge Bazanski | dcdbd84 | 2022-07-07 02:30:09 +0200 | [diff] [blame] | 115 | alacritty foot |
Serge Bazanski | 5ac5e4b | 2022-07-06 00:31:35 +0200 | [diff] [blame] | 116 | 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 Bazanski | 5ac5e4b | 2022-07-06 00:31:35 +0200 | [diff] [blame] | 123 | } |