Serge Bazanski | 5ac5e4b | 2022-07-06 00:31:35 +0200 | [diff] [blame] | 1 | # TV next to acr1. Raspberry Pi 4 with PoE hat. |
| 2 | # |
| 3 | # This is an aarch64 machine. You'll probably have to use a remote builder to |
| 4 | # cross compile for it. See //ops/README.md for information about how to set |
| 5 | # that up. |
| 6 | |
| 7 | { config, pkgs, ... }: |
| 8 | |
| 9 | let |
| 10 | nixos-hardware = builtins.fetchGit { |
| 11 | url = "https://github.com/NixOS/nixos-hardware.git"; |
| 12 | rev = "3bf48d3587d3f34f745a19ebc968b002ef5b5c5a"; |
| 13 | }; |
| 14 | |
| 15 | in { |
| 16 | imports = |
| 17 | [ # Include the results of the hardware scan. |
| 18 | ./hardware-configuration.nix |
| 19 | "${nixos-hardware}/raspberry-pi/4" |
| 20 | ]; |
| 21 | |
| 22 | boot.loader.grub.enable = false; |
| 23 | boot.loader.generic-extlinux-compatible.enable = true; |
| 24 | |
| 25 | networking.hostName = "tv1"; |
| 26 | networking.domain = "waw.hackerspace.pl"; |
| 27 | time.timeZone = "Europe/Warsaw"; |
| 28 | |
| 29 | nixpkgs.overlays = [ |
| 30 | (self: super: { |
| 31 | signage = self.callPackage ./signage.nix {}; |
| 32 | }) |
| 33 | ]; |
| 34 | |
| 35 | # Enable sound. |
| 36 | sound.enable = true; |
| 37 | services.pipewire = { |
| 38 | enable = true; |
| 39 | alsa.enable = true; |
| 40 | pulse.enable = true; |
| 41 | }; |
| 42 | |
| 43 | services.dbus.enable = true; |
| 44 | |
| 45 | programs.sway = { |
| 46 | enable = true; |
| 47 | wrapperFeatures.gtk = true; |
| 48 | extraSessionCommands = '' |
| 49 | export WLR_LIBINPUT_NO_DEVICES=1 |
| 50 | export WLR_NO_HARDWARE_CURSORS=1 |
| 51 | ''; |
| 52 | }; |
| 53 | hardware.raspberry-pi."4".fkms-3d.enable = true; |
| 54 | hardware.raspberry-pi."4".poe-hat.enable = true; |
| 55 | |
| 56 | services.greetd = { |
| 57 | enable = true; |
| 58 | settings = rec { |
| 59 | initial_session = let |
| 60 | sway = builtins.elemAt config.services.xserver.displayManager.sessionPackages 0; |
| 61 | in { |
| 62 | command = "${sway}/bin/sway"; |
| 63 | user = "kiosk"; |
| 64 | }; |
| 65 | default_session = initial_session; |
| 66 | }; |
| 67 | }; |
| 68 | |
| 69 | |
| 70 | users.users.root = { |
| 71 | openssh.authorizedKeys.keys = [ |
| 72 | "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIG599UildOrAq+LIOQjKqtGMwjgjIxozI1jtQQRKHtCP q3k@mimeomia" |
| 73 | "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIFhaCaC/CVYv6hphqmEdKaPrIn+Q946+myvL9SSnzFZk vuko@eagle" |
| 74 | "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAICTR292kx/2CNuWYIsZ6gykQ036aBGrmheIuZa6S1D2x implr@thonk" |
| 75 | "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIGfIRe1nH6vwjQTjqHNnkKAdr1VYqGEeQnqInmf3A6UN ar@khas" |
| 76 | "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDQb3YQoiYFZLKwvHYKbu1bMqzNeDCAszQhAe1+QI5SLDOotclyY/vFmOReZOsmyMFl71G2d7d+FbYNusUnNNjTxRYQ021tVc+RkMdLJaORRURmQfEFEKbai6QSFTwErXzuoIzyEPK0lbsQuGgqT9WaVnRzHJ2Q/4+qQbxAS34PuR5NqEkmn4G6LMo3OyJ5mwPkCj9lsqz4BcxRaMWFO3mNcwGDfSW+sqgc3E8N6LKrTpZq3ke7xacpQmcG5DU9VO+2QVPdltl9jWbs3gXjmF92YRNOuKPVfAOZBBsp8JOznfx8s9wDgs7RwPmDpjIAJEyoABqW5hlXfqRbTnfnMvuR informatic@InformaticPC" |
| 77 | "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQDVQI/uYdp3km0NBSK7s80VAw7k6zH2Y5hYg1fkPfTjN7/hPCvyuIvSYYNdb6APWevUcw5+1Mpv0YMc+GOFCsJEXnSAcppNhZTPM6ic6HeaIHEC5QBv6qMWbCNLf5M9ZqYdBHEIeCYg0VGJMzgkSor7sk3gEwnKgCMaJ0Bmqv++qtBOLKhCgUn3KTORAn2BAtkXEe8ASfkdWWPMoq20eshsV26h4N4C2bvAgm7ucFtziOtp7TpGY5L8snv7twAeriMkifLbF7J3vy+l6qYBb990HkRadAHAYtt0viPEjTzkFlTubxMPqrmFh4xK8HdKawAw8KFy0SYBqQnKU9oiZ5biyLJvFzaLn+YJL4BcM3A8DRvdeaHiD4PnEJh8bWHCBER5hhGYcNZhA+qBxPYXFjYEiAfsXxD1AYNVep6lpnPtK0vvcPKSxr5eLBM8ZoSofKtA0Xa+7ySuAnzWSdy9EspLNzA8TSFUhQcsZmsUE1cPeLoS2+8I9QFDwQbyPAwWKpfCkLaWd1cK4J1KPn6XzH8iARifX4F/oAEzmfYz5yXrGJQV6HhNAntKXt8dsZhME3kYVgHB/8Ls8PRwAe/9N92JR+DjdDvGKLoPf3BqOq4fq6JcrUT6FPRtGCz0bl4Cgnsb+UY1d2Ue2I7Wcpuqgv5HLY0beTE6CSEfDNmPad/EPw== cz3" |
| 78 | ]; |
| 79 | }; |
| 80 | users.groups.kiosk = {}; |
| 81 | users.users.kiosk = { |
| 82 | isNormalUser = true; |
| 83 | group = "kiosk"; |
| 84 | extraGroups = [ "users" "lp" "dialout" "tty" ]; |
| 85 | }; |
| 86 | |
| 87 | environment.systemPackages = with pkgs; [ |
| 88 | (let |
| 89 | config = pkgs.writeText "config.lua" '' |
| 90 | return { |
| 91 | displayTime = 2, |
| 92 | transitionTime = 0.5, |
| 93 | showProgress = true, |
| 94 | nodes = { |
| 95 | {'nodes.weather', displayTime = 10}, |
| 96 | {'nodes.newdash', displayTime = 10}, |
| 97 | {'nodes.misery', displayTime = 10}, |
| 98 | }, |
| 99 | environment = os.getenv('ENV') or 'prod', |
| 100 | renderWidth = 1280, |
| 101 | renderHeight = 720, |
| 102 | } |
| 103 | ''; |
| 104 | in pkgs.writeScriptBin "signage-wrapped" '' |
| 105 | #!/usr/bin/env bash |
| 106 | SIGNAGE_CONFIG=${config} ${signage}/bin/signage |
| 107 | '') |
| 108 | firefox foot wayvnc |
| 109 | vim rxvt-unicode-unwrapped.terminfo |
| 110 | |
| 111 | alacritty |
| 112 | wayland glib dracula-theme gnome3.adwaita-icon-theme |
| 113 | swaylock swayidle grim slurp wl-clipboard bemenu mako |
| 114 | ]; |
| 115 | |
| 116 | services.openssh.enable = true; |
| 117 | |
| 118 | system.stateVersion = "22.05"; # Did you read the comment? |
| 119 | |
| 120 | } |
| 121 | |