diff --git a/nixos/fuchsia/configuration.nix b/nixos/fuchsia/configuration.nix index 1ff9b8e..d0a50e9 100644 --- a/nixos/fuchsia/configuration.nix +++ b/nixos/fuchsia/configuration.nix @@ -1,52 +1,20 @@ -{pkgs, ...}: { +{...}: { imports = [ + # Global configuartion for all our systems ../common/global - + # Our user configuration and optional user units ../common/users/sajenim ../common/users/sajenim/samba ../common/users/sajenim/steam - + # Optional components ../common/optional/key.nix - + # Programs and services ./programs ./services + # Setup our hardware ./hardware-configuration.nix ]; - # Boot configuration - boot = { - kernelPackages = pkgs.linuxPackages_latest; - kernelParams = [ - # Enable amdgpu driver sysfs API that allows fine grain control of GPU - "amdgpu.ppfeaturemask=0xffffffff" - ]; - kernelModules = ["i2c-dev" "i2c-piix4"]; - initrd.kernelModules = ["amdgpu"]; - }; - - # Hardware configuration - hardware = { - bluetooth = { - enable = true; - powerOnBoot = true; - }; - pulseaudio = { - enable = true; - support32Bit = true; - extraConfig = "load-module module-native-protocol-tcp auth-ip-acl=127.0.0.1"; - }; - opengl = { - enable = true; - # Vulkan - driSupport = true; - driSupport32Bit = true; - # OpenCL - extraPackages = with pkgs; [ - rocmPackages.clr.icd - ]; - }; - }; - # Networking configuration networking = { hostName = "fuchsia"; diff --git a/nixos/fuchsia/hardware-configuration.nix b/nixos/fuchsia/hardware-configuration.nix index 6cb0aad..99dcb7a 100644 --- a/nixos/fuchsia/hardware-configuration.nix +++ b/nixos/fuchsia/hardware-configuration.nix @@ -1,26 +1,68 @@ { config, lib, + pkgs, ... }: { imports = [ + # Our ephemeral system. Wipe root on reboot. ../common/optional/ephemeral-btrfs.nix ]; + # Boot configuration boot = { + # Initial ramdisk initrd = { + # The modules listed here are available in the initrd, but are only loaded on demand. availableKernelModules = ["nvme" "xhci_pci" "ahci" "usb_storage" "usbhid" "sd_mod"]; - kernelModules = ["kvm-amd"]; + # List of modules that are always loaded by the initrd. + kernelModules = ["kvm-amd" "amdgpu"]; }; + + # Linux kernel used by NixOS. + kernelPackages = pkgs.linuxPackages_latest; + # Parameters added to the kernel command line. + kernelParams = [ + # Enable amdgpu driver sysfs API that allows fine grain control of GPU + "amdgpu.ppfeaturemask=0xffffffff" + ]; + # The set of kernel modules to be loaded in the second stage of the boot process. + kernelModules = ["i2c-dev" "i2c-piix4"]; + + # Our boot loader configuration loader = { - systemd-boot.enable = true; efi = { - canTouchEfiVariables = true; efiSysMountPoint = "/boot"; + canTouchEfiVariables = true; }; + systemd-boot.enable = true; }; }; + # Hardware configuration + hardware = { + bluetooth = { + enable = true; + powerOnBoot = true; + }; + pulseaudio = { + enable = true; + support32Bit = true; + extraConfig = "load-module module-native-protocol-tcp auth-ip-acl=127.0.0.1"; + }; + opengl = { + enable = true; + # Vulkan + driSupport = true; + driSupport32Bit = true; + # OpenCL + extraPackages = with pkgs; [ + rocmPackages.clr.icd + ]; + }; + }; + + # Setup our filesystems fileSystems."/boot" = { device = "/dev/disk/by-label/ESP"; fsType = "vfat"; diff --git a/nixos/viridian/configuration.nix b/nixos/viridian/configuration.nix index 05ce351..ecf2ffb 100644 --- a/nixos/viridian/configuration.nix +++ b/nixos/viridian/configuration.nix @@ -1,29 +1,19 @@ -{pkgs, ...}: { +{...}: { imports = [ + # Global configuration for all our systems ../common/global + # Our user configuration and optional user units ../common/users/sajenim ../common/users/spectre - + # Programs and services + ./programs ./services ./containers + # Setup our hardware ./hardware-configuration.nix ]; - boot.kernel.sysctl = { - "net.ipv4.ip_unprivileged_port_start" = 0; - }; - - hardware.opengl = { - enable = true; - extraPackages = with pkgs; [ - intel-media-driver - vaapiIntel - vaapiVdpau - libvdpau-va-gl - intel-compute-runtime - ]; - }; - + # Networking configuration networking = { hostName = "viridian"; networkmanager.enable = true; @@ -42,16 +32,12 @@ 80 # traefik (HTTP) 443 # traefik (HTTPS) 32372 # qbittorrent - 51820 # Wireguard 6600 # mpd ]; }; }; - programs = { - zsh.enable = true; - }; - + # Use docker instead of podman for our containers. virtualisation.docker = { enable = true; liveRestore = false; diff --git a/nixos/viridian/hardware-configuration.nix b/nixos/viridian/hardware-configuration.nix index 5a4ea4c..66875fb 100644 --- a/nixos/viridian/hardware-configuration.nix +++ b/nixos/viridian/hardware-configuration.nix @@ -1,28 +1,54 @@ { config, lib, + pkgs, ... }: let hostname = config.networking.hostName; in { imports = [ + # Our ephemeral system. Wipe root on reboot. ../common/optional/ephemeral-btrfs.nix ]; + # Boot configuration boot = { + # Initial ramdisk initrd = { + # The modules listed here are available in the initrd, but are only loaded on demand. availableKernelModules = ["xhci_pci" "ahci" "nvme" "usbhid" "usb_storage" "sd_mod"]; + # List of modules that are always loaded by the initrd. kernelModules = ["kvm-intel"]; }; + + # Runtime parameters of the Linux kernel + kernel.sysctl = { + "net.ipv4.ip_unprivileged_port_start" = 0; + }; + + # Our boot loader configuration loader = { - systemd-boot.enable = true; efi = { - canTouchEfiVariables = true; efiSysMountPoint = "/boot"; + canTouchEfiVariables = true; }; + systemd-boot.enable = true; }; }; + # Hardware configuration + hardware.opengl = { + enable = true; + extraPackages = with pkgs; [ + intel-media-driver + vaapiIntel + vaapiVdpau + libvdpau-va-gl + intel-compute-runtime + ]; + }; + + # Setup our filesystems fileSystems."/boot" = { device = "/dev/disk/by-label/ESP"; fsType = "vfat"; diff --git a/nixos/viridian/programs/default.nix b/nixos/viridian/programs/default.nix new file mode 100644 index 0000000..6521102 --- /dev/null +++ b/nixos/viridian/programs/default.nix @@ -0,0 +1,5 @@ +{...}: { + programs = { + zsh.enable = true; + }; +}