{ config, pkgs, lib, ... }: { # NixOS wants to enable GRUB by default boot.loader.grub.enable = false; # Enables the generation of /boot/extlinux/extlinux.conf boot.loader.generic-extlinux-compatible.enable = true; # A bunch of boot parameters needed for optimal runtime on RPi 3B boot.kernelParams = [ "cma=32M" "zfs.zfs_arc_max=134217728" ]; boot.loader.raspberryPi = { enable = true; version = 3; uboot.enable = true; firmwareConfig = '' hdmi_force_hotplug=1 ''; }; environment.systemPackages = with pkgs; [ libraspberrypi htop vim ]; # !!! Adding a swap file is optional, but strongly recommended! swapDevices = [{ device = "/swapfile"; size = 1024; }]; # Configure basic SSH access services.openssh = { enable = true; permitRootLogin = "yes"; }; # Cleanup tmp on startup boot.cleanTmpDir = true; # Create coace user users.users.coace = { isNormalUser = true; extraGroups = [ "wheel" ]; openssh.authorizedKeys.keys = ['' ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAINNmNckWBxa2fQkUjWLHgQd32C272yB+f9kTcnooszd5 coolneng@panacea '']; shell = "${pkgs.fish}/bin/fish"; }; # Set vim as default editor programs.vim.defaultEditor = true; # Set timezone and synchronize NTP time.timeZone = "Europe/Brussels"; services.timesyncd.enable = true; # Enable ZFS support boot.supportedFilesystems = [ "zfs" ]; # Scrub zpool monthly services.zfs.autoScrub = { enable = true; interval = "monthly"; }; # Auto-upgrade the system and reboot if needed system.autoUpgrade = { enable = true; allowReboot = true; dates = "Sat *-*-* 04:40:00"; }; # Run Nix garbage collector, while avoiding recompilation nix = { autoOptimiseStore = true; gc = { automatic = true; options = "--delete-older-than 14d"; }; extraOptions = '' keep-outputs = true keep-derivations = true gc-keep-outputs = true ''; }; # Configure fish shell programs.fish.enable = true; users.users.root = { shell = "${pkgs.fish}/bin/fish"; openssh.authorizedKeys.keys = ['' ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAINNmNckWBxa2fQkUjWLHgQd32C272yB+f9kTcnooszd5 coolneng@panacea ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAICo/y05fFCh8VkDN40cgTR5ZqcbxWvzp0+OzaGIn6vEQ root@unit '']; }; # Rotate logs after 7 days services.journald.extraConfig = "SystemMaxFiles=7"; # Import other configuration modules imports = [ ./modules/hardware-configuration.nix ./modules/networking.nix ./modules/periodic.nix ]; }