diff --git a/flake.nix b/flake.nix index d219e42..ff46f93 100644 --- a/flake.nix +++ b/flake.nix @@ -60,6 +60,19 @@ ]; }; + nixosConfigurations.felix-rpi4 = nixpkgs.lib.nixosSystem { + system = "aarch64-linux"; + modules = [ + # nixpkgs.nixosModules.notDetected + (import "${nixpkgs}/nixos/modules/installer/cd-dvd/sd-image-raspberrypi4.nix") + (systemModule { + hostName = "felix-rpi4"; + hardwareConfig = ./hardware/rpi4.nix; + config = ./rpi4.nix; + }) + ]; + }; + homeManagerModules.git = import ./home/modules/git.nix; } // flake-utils.lib.eachDefaultSystem (system: diff --git a/hardware/rpi4.nix b/hardware/rpi4.nix new file mode 100644 index 0000000..1355b3f --- /dev/null +++ b/hardware/rpi4.nix @@ -0,0 +1,22 @@ +{ config, lib, pkgs, modulesPath, ... }: + +{ + boot.initrd.availableKernelModules = [ "usbhid" ]; + boot.initrd.kernelModules = [ ]; + boot.kernelModules = [ ]; + boot.extraModulePackages = [ ]; + + fileSystems."/boot" = + { device = "/dev/disk/by-label/NIXOS_BOOT"; + fsType = "vfat"; + }; + + fileSystems."/" = + { device = "/dev/disk/by-label/NIXOS_SD"; + fsType = "ext4"; + }; + + swapDevices = [ ]; + + powerManagement.cpuFreqGovernor = lib.mkDefault "ondemand"; +} diff --git a/home/felschr-rpi4.nix b/home/felschr-rpi4.nix new file mode 100644 index 0000000..bf73caa --- /dev/null +++ b/home/felschr-rpi4.nix @@ -0,0 +1,32 @@ +{ config, pkgs, ... }: + +{ + imports = [ + ./shell + # ./editors + ./git.nix + ]; + + home.packages = with pkgs; [ ncurses ]; + + services.gpg-agent = { + enable = true; + enableSshSupport = true; + sshKeys = [ "4AE1DDE05F4BB6C8E220501F1336A98E89836D90" ]; + defaultCacheTtl = 600; + defaultCacheTtlSsh = 600; + pinentryFlavor = "curses"; + }; + + programs.gpg.enable = true; + + programs.git.defaultProfile = "private"; + + xdg.configFile."nixpkgs/config.nix".text = '' + { + allowUnfree = true; + } + ''; + + home.stateVersion = "20.09"; +} diff --git a/rpi4.nix b/rpi4.nix new file mode 100644 index 0000000..a46effb --- /dev/null +++ b/rpi4.nix @@ -0,0 +1,45 @@ +{ config, pkgs, ... }: + +{ + imports = [ + # ./hardware/base.nix + # ./system + ./system/nix.nix + ./system/i18n.nix + ./services/jellyfin.nix + ]; + + nixpkgs.config.allowUnfree = true; + + # rpi4 base config + boot.loader.grub.enable = false; + boot.loader.raspberryPi.enable = true; + boot.loader.raspberryPi.version = 4; + boot.kernelPackages = pkgs.linuxPackages_rpi4; + boot.kernelParams = [ + "console=ttyAMA0,115200" + "console=tty1" + ]; + hardware.enableAllFirmware = true; + + programs.zsh.enable = true; + + services.openssh.enable = true; + + users.users.felschr = { + isNormalUser = true; + extraGroups = [ "wheel" "audio" "disk" ]; + shell = pkgs.zsh; + }; + + home-manager = { + useUserPackages = true; + useGlobalPkgs = true; + users.felschr = import ./home/felschr-rpi4.nix; + }; + + # only change this when specified in release notes + system.stateVersion = "20.09"; + + system.autoUpgrade.enable = true; +}