{ config, pkgs, ... }: { # Boot loader. boot = { kernelPackages = pkgs.linuxKernel.packages.linux_rpi4; initrd.availableKernelModules = [ "xhci_pci" "usbhid" "usb_storage" ]; loader = { grub.enable = false; generic-extlinux-compatible.enable = true; }; }; # Root filesystem. fileSystems = { "/" = { device = "/dev/disk/by-label/NIXOS_SD"; fsType = "ext4"; options = ["noatime"]; }; }; # Printer Sharing. services.printing = { enable = true; drivers = [pkgs.cups-dymo]; # Dymo label printer. listenAddresses = ["*:631"]; allowFrom = ["all"]; browsing = true; defaultShared = true; openFirewall = true; }; # 3D Printing. users.users."3dprinting" = { isSystemUser = true; group = "3dprinting"; }; users.groups."3dprinting" = {}; services.mainsail = { enable = true; hostName = "weebill.local"; }; services.moonraker = { enable = true; user = "3dprinting"; group = "3dprinting"; settings.authorization.trusted_clients = ["127.0.0.0/8"]; }; services.klipper = rec { enable = true; user = "3dprinting"; group = "3dprinting"; configDir = "${config.services.moonraker.stateDir}/config"; configFile = "${configDir}/printer.cfg"; mutableConfig = true; }; # Enable WebOne HTTP proxy. services.webone.enable = true; # Enable Netatalk AFP fileserver. services.netatalk = { enable = true; settings = { Global = { "uam list" = "uams_guest.so"; }; iMac = { path = "/srv/iMac"; browsable = "yes"; "read-only" = "yes"; }; }; }; systemd.tmpfiles.settings = { "10-netatalk" = { "/srv/netatalk" = { d = { group = "users"; mode = "0755"; user = "fern"; }; }; }; }; # Open ports for services. networking.firewall = { allowedUDPPorts = [53 67]; # DHCP server. allowedTCPPorts = [8080 548 80]; # WebOne, Netatalk, nginx. }; }