{ self, inputs, ... }: { flake.nixosModules.pi4-core = { config, pkgs, ... }: { imports = with self.nixosModules; [ inputs.home-manager.nixosModules.default self.nixosModules.default user-nathan avahi openssh ]; config = { boot = { loader = { grub.enable = false; generic-extlinux-compatible.enable = true; }; kernelParams = [ "snd_bcm2835.enable_hdmi=1" "snd_bcm2835.enable_headphones=1" ]; }; networking = { hostName = "pi4"; nameservers = [ "1.1.1.1" "1.0.0.1" ]; networkmanager.enable = true; }; hardware = { bluetooth.enable = true; }; programs.zsh.enable = true; environment.shells = with pkgs; [ zsh ]; environment.systemPackages = with pkgs; [ libraspberrypi raspberrypi-eeprom ]; users = { groups.gpio = {}; }; services = { udev.extraRules = '' SUBSYSTEM=="bcm2835-gpiomem", KERNEL=="gpiomem", GROUP="gpio",MODE="0660" SUBSYSTEM=="gpio", KERNEL=="gpiochip*", ACTION=="add", RUN+="${pkgs.bash}/bin/bash -c 'chown root:gpio /sys/class/gpio/export /sys/class/gpio/unexport ; chmod 220 /sys/class/gpio/export /sys/class/gpio/unexport'" SUBSYSTEM=="gpio", KERNEL=="gpio*", ACTION=="add",RUN+="${pkgs.bash}/bin/bash -c 'chown root:gpio /sys%p/active_low /sys%p/direction /sys%p/edge /sys%p/value ; chmod 660 /sys%p/active_low /sys%p/direction /sys%p/edge /sys%p/value'" ''; pulseaudio = { enable = true; extraConfig = '' load-module module-native-protocol-tcp auth-ip-acl=127.0.0.1 ''; }; }; fonts.packages = with pkgs; [ nerd-fonts.fira-code ]; security.rtkit.enable = true; system.stateVersion = "25.11"; }; }; }