diff --git a/kobol/helios4/default.nix b/kobol/helios4/default.nix index b40c683..532a757 100644 --- a/kobol/helios4/default.nix +++ b/kobol/helios4/default.nix @@ -1,17 +1,44 @@ { pkgs, ... }: - +let + linux_5_15_helios4 = pkgs.linux_5_15.override { + kernelPatches = [ + # A patch to get both PWM fans working + # the patch has been successfully applied to 5.15 and 5.19 + { + patch = pkgs.fetchpatch { + url = "https://raw.githubusercontent.com/armbian/build/bd3466eef2106ea13e85e821f5d852ff97465e6c/patch/kernel/archive/mvebu-5.15/92-mvebu-gpio-remove-hardcoded-timer-assignment.patch"; + sha256 = "sha256-eQqMp0+MZd30zkl8DE89oB7czvyqCkfwF2k0EZ69jr0="; + }; + } + # support for Wake-On-Lan + { + patch = pkgs.fetchpatch { + url = "https://raw.githubusercontent.com/armbian/build/bd3466eef2106ea13e85e821f5d852ff97465e6c/patch/kernel/archive/mvebu-5.15/92-mvebu-gpio-add_wake_on_gpio_support.patch"; + sha256 = "sha256-OrvnVCU55P0U78jdoxGRJvl29i+Rvq8AdEGSCCpxa2I="; + }; + } + { + patch = pkgs.fetchpatch { + url = "https://raw.githubusercontent.com/armbian/build/bd3466eef2106ea13e85e821f5d852ff97465e6c/patch/kernel/archive/mvebu-5.15/94-helios4-dts-add-wake-on-lan-support.patch"; + sha256 = "sha256-ai4161bTC22023eaVVWsvbk6fQKjkv0P4DQ4DA1Zgow="; + }; + } + ]; + defconfig = "mvebu_v7_defconfig"; + # Make the kernel build a bit faster by disabling GPU modules, which we don't need anyways + structuredExtraConfig = with pkgs.lib.kernel; { + DRM = no; + }; + }; +in { - imports = [ - ./modules/fancontrol.nix - ]; + imports = [ ./modules/fancontrol.nix ]; - nixpkgs.overlays = [ - (import ./overlay.nix) - ]; + nixpkgs.overlays = [ (import ./overlay.nix) ]; nixpkgs.hostPlatform = "armv7l-linux"; boot.initrd.availableKernelModules = [ "ahci_mvebu" ]; - boot.kernelPackages = pkgs.linuxPackagesFor pkgs.linux_5_15_helios4; + boot.kernelPackages = pkgs.linuxPackagesFor linux_5_15_helios4; } diff --git a/kobol/helios4/overlay.nix b/kobol/helios4/overlay.nix index 41aa9d9..32262c5 100644 --- a/kobol/helios4/overlay.nix +++ b/kobol/helios4/overlay.nix @@ -1,36 +1,4 @@ final: _prev: { - linux_5_15_helios4 = final.linux_5_15.override { - kernelPatches = [ - # A patch to get both PWM fans working - # the patch has been successfully applied to 5.15 and 5.19 - { - patch = final.fetchpatch { - url = "https://raw.githubusercontent.com/armbian/build/bd3466eef2106ea13e85e821f5d852ff97465e6c/patch/kernel/archive/mvebu-5.15/92-mvebu-gpio-remove-hardcoded-timer-assignment.patch"; - sha256 = "sha256-eQqMp0+MZd30zkl8DE89oB7czvyqCkfwF2k0EZ69jr0="; - }; - } - # support for Wake-On-Lan - { - patch = final.fetchpatch { - url = "https://raw.githubusercontent.com/armbian/build/bd3466eef2106ea13e85e821f5d852ff97465e6c/patch/kernel/archive/mvebu-5.15/92-mvebu-gpio-add_wake_on_gpio_support.patch"; - sha256 = "sha256-OrvnVCU55P0U78jdoxGRJvl29i+Rvq8AdEGSCCpxa2I="; - }; - } - { - patch = final.fetchpatch { - url = "https://raw.githubusercontent.com/armbian/build/bd3466eef2106ea13e85e821f5d852ff97465e6c/patch/kernel/archive/mvebu-5.15/94-helios4-dts-add-wake-on-lan-support.patch"; - sha256 = "sha256-ai4161bTC22023eaVVWsvbk6fQKjkv0P4DQ4DA1Zgow="; - }; - } - - ]; - defconfig = "mvebu_v7_defconfig"; - # Make the kernel build a bit faster by disabling GPU modules, which we don't need anyways - structuredExtraConfig = with final.lib.kernel; { - DRM = no; - }; - }; - ubootHelios4 = final.buildUBoot rec { defconfig = "helios4_defconfig"; filesToInstall = [ "u-boot-spl.kwb" ]; diff --git a/purism/librem/5r4/audio.nix b/purism/librem/5r4/audio.nix index e44e2f3..80c1c87 100644 --- a/purism/librem/5r4/audio.nix +++ b/purism/librem/5r4/audio.nix @@ -9,7 +9,7 @@ enable = true; # this is required to correctly configure the modem as PA source/sink extraConfig = '' - .include ${pkgs.librem5-base}/etc/pulse/librem5.pa + .include ${config.hardware.librem5.package}/etc/pulse/librem5.pa ''; }; diff --git a/purism/librem/5r4/default.nix b/purism/librem/5r4/default.nix index 83c7fb3..76854a6 100644 --- a/purism/librem/5r4/default.nix +++ b/purism/librem/5r4/default.nix @@ -1,8 +1,15 @@ { config, pkgs, lib, ... }: -let cfg = config.hardware.librem5; +let + cfg = config.hardware.librem5; + linuxPackages_librem5 = pkgs.linuxPackagesFor (pkgs.callPackage ./kernel.nix { }); + ubootLibrem5 = pkgs.callPackage ./u-boot { }; in { options = { hardware.librem5 = { + package = lib.mkOption { + type = lib.types.package; + default = pkgs.callPackage ./librem5-base { }; + }; wifiCard = lib.mkOption { type = lib.types.enum [ "redpine" "sparklan" "none" ]; description = lib.mdDoc '' @@ -42,15 +49,6 @@ in { lockdownFix = lib.mkDefault true; }; - nixpkgs.overlays = [ - (import ./kernel) - (final: prev: { - ubootLibrem5 = final.callPackage ./u-boot { }; - - librem5-base = final.callPackage ./librem5-base { }; - }) - ]; - boot = { kernelParams = [ "rootwait" ]; @@ -59,12 +57,11 @@ in { grub.enable = false; }; - kernelPackages = lib.mkDefault pkgs.linuxPackages_librem5; + kernelPackages = lib.mkDefault linuxPackages_librem5; }; - services.udev.packages = lib.mkIf cfg.installUdevPackages [ pkgs.librem5-base ]; - - environment.systemPackages = with pkgs; [ ubootLibrem5 ]; + services.udev.packages = lib.mkIf cfg.installUdevPackages [ config.hardware.librem5.package ]; + environment.systemPackages = [ ubootLibrem5 ]; }; } diff --git a/purism/librem/5r4/kernel/kernel.nix b/purism/librem/5r4/kernel.nix similarity index 100% rename from purism/librem/5r4/kernel/kernel.nix rename to purism/librem/5r4/kernel.nix diff --git a/purism/librem/5r4/kernel/default.nix b/purism/librem/5r4/kernel/default.nix deleted file mode 100644 index 7b1b085..0000000 --- a/purism/librem/5r4/kernel/default.nix +++ /dev/null @@ -1,3 +0,0 @@ -final: prev: { - linuxPackages_librem5 = final.linuxPackagesFor (final.callPackage ./kernel.nix { }); -} diff --git a/purism/librem/5r4/lockdown-fix.nix b/purism/librem/5r4/lockdown-fix.nix index 00e5041..121ded3 100644 --- a/purism/librem/5r4/lockdown-fix.nix +++ b/purism/librem/5r4/lockdown-fix.nix @@ -11,7 +11,7 @@ lib.mkIf config.hardware.librem5.lockdownFix { systemd.services.librem5-lockdown-support = { description = "Set up drivers for the orientation and proximity sensors on Librem 5"; serviceConfig.Type = "oneshot"; - serviceConfig.ExecStart = "${pkgs.librem5-base}/bin/lockdown-support.sh"; + serviceConfig.ExecStart = "${config.hardware.librem5.package}/bin/lockdown-support.sh"; wantedBy = [ "default.target" ]; path = [ pkgs.kmod ]; };