/* { outputs, flakeLib, vars, ... }: { imports = [ outputs.nixosModules.base outputs.nixosModules.home-manager ./hardware-configuration.nix ]; networking = { inherit (vars) hostName domain; }; home-manager.users = flakeLib.mkNixosHomeConfiguration {inherit vars;}; } */ { inputs , pkgs , outputs , vars , ... }: { imports = [ inputs.nixos-hardware.nixosModules.raspberry-pi-4 outputs.nixosModules.base outputs.nixosModules.home-manager outputs.nixosModules.mediacenter ]; networking = { inherit (vars) hostName domain; }; boot = { kernelPackages = pkgs.linuxPackages_rpi4; kernelParams = [ "snd_bcm2835.enable_headphones=1" "snd_bcm2835.enable_hdmi=1" ]; initrd.availableKernelModules = [ # Allows early (earlier) modesetting for the Raspberry Pi "vc4" "bcm2835_dma" "i2c_bcm2835" "xhci_pci" "usbhid" "usb_storage" ]; }; fileSystems = { "/" = { device = "/dev/disk/by-label/NIXOS_SD"; fsType = "ext4"; options = [ "noatime" ]; }; "/media/net/hel_Public" = { device = "hel.odie.home.arpa:/nfs/Public"; fsType = "nfs"; }; "/media/net/hel_USB" = { device = "hel.odie.home.arpa:/nfs/USB_Video"; fsType = "nfs"; }; "/media/net/svartalbenheim_Video" = { device = "svartalbenheim.odie.home.arpa:/volume1/media/Video"; fsType = "nfs"; }; }; swapDevices = [{ device = "/var/lib/swapfile"; size = 4 * 1024; }]; hardware = { raspberry-pi."4" = { apply-overlays-dtmerge.enable = true; fkms-3d.enable = true; }; enableRedistributableFirmware = true; }; home-manager = { extraSpecialArgs = { inherit inputs outputs; }; useGlobalPkgs = true; useUserPackages = true; users = { kodi = import ../../home-manager/kodi/pi0; odie = import ../../home-manager/odie/pi0; }; }; security.rtkit.enable = true; environment.systemPackages = with pkgs; [ libraspberrypi raspberrypi-eeprom libcec kitty nfs-utils ]; programs.zsh.enable = true; services.udev.extraRules = '' # allow access to raspi cec device for video group (and optionally register it as a systemd device, used below) KERNEL=="vchiq", GROUP="video", MODE="0660", TAG+="systemd", ENV{SYSTEMD_ALIAS}="/dev/vchiq" ''; system = { stateVersion = "23.05"; }; nixpkgs = { hostPlatform.system = "aarch64-linux"; # Fix missing modules # https://github.com/NixOS/nixpkgs/issues/154163 overlays = [ (final: prev: { makeModulesClosure = x: prev.makeModulesClosure (x // { allowMissing = true; }); libcec = prev.libcec.override { withLibraspberrypi = true; }; }) ]; }; }