inital work on pi5
This commit is contained in:
parent
4a1f8fb337
commit
50b3388c18
|
@ -30,6 +30,8 @@ in {
|
|||
chaos.gaming
|
||||
])
|
||||
|
||||
./profiles/kodi.nix
|
||||
|
||||
./secrets.nix
|
||||
./hardware.nix
|
||||
]);
|
||||
|
|
84
hosts/lappy-t495/profiles/kodi.nix
Normal file
84
hosts/lappy-t495/profiles/kodi.nix
Normal file
|
@ -0,0 +1,84 @@
|
|||
{
|
||||
pkgs,
|
||||
tree,
|
||||
...
|
||||
}: let
|
||||
kodiPackage = pkgs.kodi-wayland.withPackages (kodiPkgs:
|
||||
with kodiPkgs; [
|
||||
keymap
|
||||
sendtokodi
|
||||
sponsorblock
|
||||
pvr-iptvsimple
|
||||
inputstreamhelper
|
||||
inputstream-adaptive
|
||||
inputstream-rtmp
|
||||
visualization-projectm
|
||||
visualization-waveform
|
||||
visualization-matrix
|
||||
visualization-starburst
|
||||
visualization-spectrum
|
||||
]);
|
||||
in {
|
||||
environment.systemPackages = [
|
||||
kodiPackage
|
||||
];
|
||||
|
||||
services.xserver = {
|
||||
enable = true;
|
||||
desktopManager.kodi = {
|
||||
enable = true;
|
||||
package = kodiPackage;
|
||||
};
|
||||
#autoLogin.enable = true;
|
||||
#autoLogin.user = "kodi";
|
||||
};
|
||||
|
||||
networking.firewall = {
|
||||
allowedTCPPorts = [8080];
|
||||
allowedUDPPorts = [8080];
|
||||
};
|
||||
|
||||
users.users.kodi = {
|
||||
uid = 1002;
|
||||
isNormalUser = true;
|
||||
extraGroups = [
|
||||
"video"
|
||||
"input"
|
||||
"uinput"
|
||||
"audio"
|
||||
"rtkit"
|
||||
];
|
||||
};
|
||||
|
||||
home-manager.users.kodi = {
|
||||
imports = with tree.profiles.home-manager; [
|
||||
base
|
||||
|
||||
gui.base
|
||||
gui.environments.gnome
|
||||
|
||||
apps.fileRoller
|
||||
apps.nautilus
|
||||
apps.pavucontrol
|
||||
apps.mpv
|
||||
|
||||
apps.firefox
|
||||
apps.telegram
|
||||
|
||||
apps.aria2
|
||||
apps.rclone
|
||||
];
|
||||
|
||||
# only for x86_64
|
||||
home.file.widevine-lib = {
|
||||
source = "${pkgs.widevine-cdm}/share/google/chrome/WidevineCdm/_platform_specific/linux_x64/libwidevinecdm.so";
|
||||
target = ".kodi/cdm/libwidevinecdm.so";
|
||||
};
|
||||
home.file.widevine-manifest = {
|
||||
source = "${pkgs.widevine-cdm}/share/google/chrome/WidevineCdm/manifest.json";
|
||||
target = ".kodi/cdm/manifest.json";
|
||||
};
|
||||
|
||||
home.stateVersion = "24.05";
|
||||
};
|
||||
}
|
|
@ -50,4 +50,11 @@ in rec {
|
|||
system = "aarch64-linux";
|
||||
modules = defaultModules ++ [./hetzner-arm/hetzner-arm.nix];
|
||||
};
|
||||
|
||||
raspberry = nixosUnstableSystem {
|
||||
specialArgs =
|
||||
defaultSpecialArgs;
|
||||
system = "aarch64-linux";
|
||||
modules = defaultModules ++ [./raspberry/raspberry.nix];
|
||||
};
|
||||
}
|
||||
|
|
111
hosts/raspberry/hardware.nix
Normal file
111
hosts/raspberry/hardware.nix
Normal file
|
@ -0,0 +1,111 @@
|
|||
{
|
||||
tree,
|
||||
pkgs,
|
||||
lib,
|
||||
...
|
||||
}: let
|
||||
inherit (lib.modules) mkForce;
|
||||
inherit (lib.lists) forEach foldl';
|
||||
inherit (lib.attrsets) recursiveUpdate mapAttrsToList;
|
||||
inherit (builtins) toFile concatStringsSep;
|
||||
|
||||
edk2 = pkgs.fetchzip {
|
||||
url = "https://github.com/worproject/rpi5-uefi/releases/download/v0.3/RPi5_UEFI_Release_v0.3.zip";
|
||||
hash = "sha256-bjEvq7KlEFANnFVL0LyexXEeoXj7rHGnwQpq09PhIb0=";
|
||||
stripRoot = false;
|
||||
};
|
||||
|
||||
fwFiles = let
|
||||
piBootFw = "${pkgs.raspberrypifw}/share/raspberrypi/boot";
|
||||
|
||||
piBootFwFiles = foldl' recursiveUpdate {} (forEach [
|
||||
"bootcode.bin"
|
||||
"start.elf"
|
||||
|
||||
"fixup_cd.dat"
|
||||
"fixup.dat"
|
||||
"fixup_db.dat"
|
||||
"fixup_x.dat"
|
||||
"fixup4cd.dat"
|
||||
"fixup4.dat"
|
||||
"fixup4db.dat"
|
||||
"fixup4x.dat"
|
||||
|
||||
"start_cd.elf"
|
||||
"start_db.elf"
|
||||
"start.elf"
|
||||
"start_x.elf"
|
||||
"start4cd.elf"
|
||||
"start4db.elf"
|
||||
"start4.elf"
|
||||
"start4x.elf"
|
||||
] (file: {
|
||||
"${file}" = "${piBootFw}/${file}";
|
||||
}));
|
||||
in
|
||||
{
|
||||
"config.txt" = toFile "config.txt" ''
|
||||
armstub=RPI_EFI.fd
|
||||
device_tree_address=0x1f0000
|
||||
device_tree_end=0x210000
|
||||
|
||||
# Makes GPU work?
|
||||
dtoverlay=vc4-kms-v3d-pi5
|
||||
|
||||
# Force 32 bpp framebuffer allocation.
|
||||
framebuffer_depth=32
|
||||
|
||||
# Disable compensation for displays with overscan.
|
||||
disable_overscan=1
|
||||
|
||||
# Force maximum USB power regardless of the power supply.
|
||||
usb_max_current_enable=1
|
||||
|
||||
# Force maximum CPU speed.
|
||||
force_turbo=1
|
||||
'';
|
||||
# UEFI Files
|
||||
"RPI_EFI.fd" = "${edk2}/RPI_EFI.fd";
|
||||
"bcm2712-rpi-5-b.dtb" = "${edk2}/bcm2712-rpi-5-b.dtb";
|
||||
}
|
||||
// piBootFwFiles;
|
||||
in {
|
||||
imports = with tree; [
|
||||
presets.nixos.encryptedDrive
|
||||
];
|
||||
|
||||
boot = {
|
||||
kernelPackages = pkgs.linuxPackages_rpi4;
|
||||
supportedFilesystems = mkForce ["vfat"];
|
||||
kernelParams = ["console=tty0"];
|
||||
loader = {
|
||||
systemd-boot = {
|
||||
enable = true;
|
||||
extraFiles = fwFiles;
|
||||
};
|
||||
efi.canTouchEfiVariables = false;
|
||||
|
||||
grub.enable = false;
|
||||
generic-extlinux-compatible.enable = false;
|
||||
};
|
||||
initrd.availableKernelModules = [
|
||||
"nvme"
|
||||
"ehci_pci"
|
||||
"xhci_pci"
|
||||
"usb_storage"
|
||||
"sd_mod"
|
||||
"sdhci_pci"
|
||||
];
|
||||
};
|
||||
|
||||
system.build.firmware = pkgs.runCommand "firmware" {} ''
|
||||
mkdir $out
|
||||
|
||||
${concatStringsSep "\n" (
|
||||
mapAttrsToList (filename: path: ''
|
||||
cp ${path} $out/${filename}
|
||||
'')
|
||||
fwFiles
|
||||
)}
|
||||
'';
|
||||
}
|
43
hosts/raspberry/raspberry.nix
Normal file
43
hosts/raspberry/raspberry.nix
Normal file
|
@ -0,0 +1,43 @@
|
|||
{
|
||||
lib,
|
||||
tree,
|
||||
...
|
||||
}: let
|
||||
inherit (lib.lists) flatten;
|
||||
in {
|
||||
nixpkgs.overlays = [
|
||||
(_final: super: {
|
||||
makeModulesClosure = x:
|
||||
super.makeModulesClosure (x // {allowMissing = true;});
|
||||
})
|
||||
];
|
||||
|
||||
imports = flatten (with tree; [
|
||||
users.root
|
||||
users.chaos
|
||||
|
||||
(with tree.presets.nixos; [
|
||||
#desktopGui
|
||||
])
|
||||
|
||||
(with presets.home-manager.by-user; [
|
||||
root.base
|
||||
chaos.base
|
||||
#chaos.guiDesktop
|
||||
])
|
||||
|
||||
./hardware.nix
|
||||
]);
|
||||
|
||||
networking.firewall = {
|
||||
enable = true;
|
||||
allowPing = true;
|
||||
};
|
||||
|
||||
networking.hostName = "raspberry";
|
||||
time.timeZone = "Europe/London";
|
||||
|
||||
system.stateVersion = "24.05";
|
||||
home-manager.users.root.home.stateVersion = "24.05";
|
||||
home-manager.users.chaos.home.stateVersion = "24.05";
|
||||
}
|
|
@ -10,7 +10,7 @@
|
|||
in {
|
||||
hardware = {
|
||||
enableAllFirmware = false; # we include a more minimal subset for base
|
||||
enableRedistributableFirmware = false;
|
||||
enableRedistributableFirmware = true;
|
||||
wirelessRegulatoryDatabase = true;
|
||||
|
||||
firmware = with pkgs; [
|
||||
|
|
|
@ -9,6 +9,7 @@ in {
|
|||
emulatedSystems = ["aarch64-linux"];
|
||||
registrations.aarch64-linux = {
|
||||
interpreter = mkForce "${pkgs.qemu}/bin/qemu-aarch64";
|
||||
fixBinary = true;
|
||||
};
|
||||
};
|
||||
nix.settings.extra-sandbox-paths = ["/run/binfmt" "${pkgs.qemu}"];
|
||||
|
|
15
profiles/nixos/cross/x86_64.nix
Normal file
15
profiles/nixos/cross/x86_64.nix
Normal file
|
@ -0,0 +1,15 @@
|
|||
{
|
||||
pkgs,
|
||||
lib,
|
||||
...
|
||||
}: let
|
||||
inherit (lib.modules) mkForce;
|
||||
in {
|
||||
boot.binfmt = {
|
||||
emulatedSystems = ["x86_64-linux"];
|
||||
registrations.x86_64-linux = {
|
||||
interpreter = mkForce "${pkgs.qemu}/bin/qemu-x86_64";
|
||||
};
|
||||
};
|
||||
nix.settings.extra-sandbox-paths = ["/run/binfmt" "${pkgs.qemu}"];
|
||||
}
|
Loading…
Reference in a new issue