From 4c18542409bc9e0e96cb253389a5737903137289 Mon Sep 17 00:00:00 2001 From: Ivan Malison Date: Sat, 10 Jul 2021 19:39:40 +0000 Subject: [PATCH] [NixOS] Add Raspberry Pi 4b Configuration --- nixos/machines/biskcomp.nix | 7 ++ nixos/raspberry-pi.nix | 126 ++++++++++++++++++++++++++++++++++++ 2 files changed, 133 insertions(+) create mode 100644 nixos/machines/biskcomp.nix create mode 100644 nixos/raspberry-pi.nix diff --git a/nixos/machines/biskcomp.nix b/nixos/machines/biskcomp.nix new file mode 100644 index 00000000..5489e5e5 --- /dev/null +++ b/nixos/machines/biskcomp.nix @@ -0,0 +1,7 @@ +{ + imports = [ + ../raspberry-pi.nix + ]; + + networking.hostName = "biskcomp"; +} diff --git a/nixos/raspberry-pi.nix b/nixos/raspberry-pi.nix new file mode 100644 index 00000000..a69271ce --- /dev/null +++ b/nixos/raspberry-pi.nix @@ -0,0 +1,126 @@ +{ config, pkgs, ... }: + +{ + imports = [ + + ]; + + nixpkgs.overlays = [ + (import ./overlays.nix) + ]; + + hardware.raspberry-pi."4".fkms-3d.enable = true; + + nixpkgs.config.allowUnfree = true; + nixpkgs.config.android_sdk.accept_license = true; + nixpkgs.config.permittedInsecurePackages = [ + "openssl-1.0.2u" + ]; + + boot = { + kernelPackages = pkgs.linuxPackages_rpi4; + tmpOnTmpfs = true; + loader = { + grub.enable = false; + generic-extlinux-compatible.enable = true; + raspberryPi = { + enable = true; + version = 4; + firmwareConfig = '' + dtparam=audio=on + hdmi_drive=2 + ''; + }; + }; + }; + + hardware.bluetooth.enable = true; + services.blueman.enable = true; + + hardware.enableRedistributableFirmware = true; + + networking = { + networkmanager.enable = true; + }; + + # networking.hostName = "nixos"; # Define your hostname. + + networking.useDHCP = false; + networking.interfaces.eth0.useDHCP = true; + networking.interfaces.wlan0.useDHCP = true; + + + # Enable the X11 windowing system. + services.xserver = { + exportConfiguration = true; + layout = "us"; + enable = true; + desktopManager = { + plasma5.enable = true; + }; + displayManager.lightdm.enable = true; + }; + + powerManagement.cpuFreqGovernor = "ondemand"; + + fileSystems."/" = { + device = "/dev/disk/by-label/NIXOS_SD"; + fsType = "ext4"; + options = [ "noatime" ]; + }; + + hardware.video.hidpi.enable = true; + + sound.enable = true; + hardware.pulseaudio.enable = true; + + # Define a user account. Don't forget to set a password with ‘passwd’. + users.users.imalison = { + isNormalUser = true; + extraGroups = [ "wheel" ]; # Enable ‘sudo’ for the user. + }; + + # List packages installed in system profile. To search, run: + # $ nix search wget + environment.systemPackages = with pkgs; [ + emacs + firefox + raspberrypi-eeprom + transmission-gtk + vlc + yubikey-manager + networkmanagerapplet + ncdu + jq + rcm + ic-keysmith + ]; + + services.openssh.enable = true; + + services.avahi = { + enable = true; + nssmdns = true; + publish = { + enable = true; + domain = true; + userServices = true; + }; + }; + + programs.gnupg.agent = { enable = true; enableSSHSupport = true; }; + services.pcscd.enable = true; + security.sudo.wheelNeedsPassword = false; + + nix = { + autoOptimiseStore = true; + gc = { + automatic = true; + dates = "weekly"; + options = "--delete-older-than 30d"; + }; + }; + + system.stateVersion = "21.05"; # Did you read the comment? + nix.trustedUsers = ["imalison" "kat"]; +}