Merge branch 'system76-firmware-and-nixos' into master
This commit is contained in:
commit
dc6ff60cc6
56
nixos/modules/hardware/system-76.nix
Normal file
56
nixos/modules/hardware/system-76.nix
Normal file
@ -0,0 +1,56 @@
|
|||||||
|
{ config, lib, pkgs, ... }:
|
||||||
|
|
||||||
|
let
|
||||||
|
inherit (lib) mkOption mkEnableOption types mkIf mkMerge optional versionOlder;
|
||||||
|
cfg = config.hardware.system76;
|
||||||
|
|
||||||
|
kpkgs = config.boot.kernelPackages;
|
||||||
|
modules = [ "system76" "system76-io" ] ++ (optional (versionOlder kpkgs.kernel.version "5.5") "system76-acpi");
|
||||||
|
modulePackages = map (m: kpkgs.${m}) modules;
|
||||||
|
moduleConfig = mkIf cfg.kernel-modules.enable {
|
||||||
|
boot.extraModulePackages = modulePackages;
|
||||||
|
|
||||||
|
boot.kernelModules = modules;
|
||||||
|
|
||||||
|
services.udev.packages = modulePackages;
|
||||||
|
};
|
||||||
|
|
||||||
|
firmware-pkg = pkgs.system76-firmware;
|
||||||
|
firmwareConfig = mkIf cfg.firmware-daemon.enable {
|
||||||
|
services.dbus.packages = [ firmware-pkg ];
|
||||||
|
|
||||||
|
systemd.services.system76-firmware-daemon = {
|
||||||
|
description = "The System76 Firmware Daemon";
|
||||||
|
|
||||||
|
serviceConfig = {
|
||||||
|
ExecStart = "${firmware-pkg}/bin/system76-firmware-daemon";
|
||||||
|
|
||||||
|
Restart = "on-failure";
|
||||||
|
};
|
||||||
|
|
||||||
|
wantedBy = [ "multi-user.target" ];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
in {
|
||||||
|
options = {
|
||||||
|
hardware.system76 = {
|
||||||
|
enableAll = mkEnableOption "all recommended configuration for system76 systems";
|
||||||
|
|
||||||
|
firmware-daemon.enable = mkOption {
|
||||||
|
default = cfg.enableAll;
|
||||||
|
example = true;
|
||||||
|
description = "Whether to enable the system76 firmware daemon";
|
||||||
|
type = types.bool;
|
||||||
|
};
|
||||||
|
|
||||||
|
kernel-modules.enable = mkOption {
|
||||||
|
default = cfg.enableAll;
|
||||||
|
example = true;
|
||||||
|
description = "Whether to make the system76 out-of-tree kernel modules available";
|
||||||
|
type = types.bool;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
config = mkMerge [ moduleConfig firmwareConfig ];
|
||||||
|
}
|
@ -60,6 +60,7 @@
|
|||||||
./hardware/printers.nix
|
./hardware/printers.nix
|
||||||
./hardware/raid/hpsa.nix
|
./hardware/raid/hpsa.nix
|
||||||
./hardware/steam-hardware.nix
|
./hardware/steam-hardware.nix
|
||||||
|
./hardware/system-76.nix
|
||||||
./hardware/tuxedo-keyboard.nix
|
./hardware/tuxedo-keyboard.nix
|
||||||
./hardware/usb-wwan.nix
|
./hardware/usb-wwan.nix
|
||||||
./hardware/onlykey.nix
|
./hardware/onlykey.nix
|
||||||
|
@ -29,7 +29,7 @@
|
|||||||
, target ? null
|
, target ? null
|
||||||
, cargoVendorDir ? null
|
, cargoVendorDir ? null
|
||||||
, checkType ? buildType
|
, checkType ? buildType
|
||||||
|
, depsExtraArgs ? {}
|
||||||
# Needed to `pushd`/`popd` into a subdir of a tarball if this subdir
|
# Needed to `pushd`/`popd` into a subdir of a tarball if this subdir
|
||||||
# contains a Cargo.toml, but isn't part of a workspace (which is e.g. the
|
# contains a Cargo.toml, but isn't part of a workspace (which is e.g. the
|
||||||
# case for `rustfmt`/etc from the `rust-sources).
|
# case for `rustfmt`/etc from the `rust-sources).
|
||||||
@ -43,11 +43,11 @@ assert buildType == "release" || buildType == "debug";
|
|||||||
let
|
let
|
||||||
|
|
||||||
cargoDeps = if cargoVendorDir == null
|
cargoDeps = if cargoVendorDir == null
|
||||||
then fetchCargoTarball {
|
then fetchCargoTarball ({
|
||||||
inherit name src srcs sourceRoot unpackPhase cargoUpdateHook;
|
inherit name src srcs sourceRoot unpackPhase cargoUpdateHook;
|
||||||
patches = cargoPatches;
|
patches = cargoPatches;
|
||||||
sha256 = cargoSha256;
|
sha256 = cargoSha256;
|
||||||
}
|
} // depsExtraArgs)
|
||||||
else null;
|
else null;
|
||||||
|
|
||||||
# If we have a cargoSha256 fixed-output derivation, validate it at build time
|
# If we have a cargoSha256 fixed-output derivation, validate it at build time
|
||||||
@ -83,7 +83,7 @@ let
|
|||||||
|
|
||||||
in
|
in
|
||||||
|
|
||||||
stdenv.mkDerivation (args // {
|
stdenv.mkDerivation ((removeAttrs args ["depsExtraArgs"]) // {
|
||||||
inherit cargoDeps;
|
inherit cargoDeps;
|
||||||
|
|
||||||
patchRegistryDeps = ./patch-registry-deps;
|
patchRegistryDeps = ./patch-registry-deps;
|
||||||
|
38
pkgs/os-specific/linux/firmware/firmware-manager/default.nix
Normal file
38
pkgs/os-specific/linux/firmware/firmware-manager/default.nix
Normal file
@ -0,0 +1,38 @@
|
|||||||
|
{ rustPlatform, lib, fetchFromGitHub, lzma, pkgconfig, openssl, dbus, glib, udev, cairo, pango, atk, gdk-pixbuf, gtk3, wrapGAppsHook }:
|
||||||
|
rustPlatform.buildRustPackage rec {
|
||||||
|
pname = "firmware-manager";
|
||||||
|
version = "0.1.1";
|
||||||
|
|
||||||
|
src = fetchFromGitHub {
|
||||||
|
owner = "pop-os";
|
||||||
|
repo = pname;
|
||||||
|
rev = version;
|
||||||
|
sha256 = "0x9604jsflqxvbkfp139mzjicpyx8v21139jj8bp88c14ngvmdlw";
|
||||||
|
};
|
||||||
|
|
||||||
|
nativeBuildInputs = [ pkgconfig wrapGAppsHook ];
|
||||||
|
|
||||||
|
buildInputs = [ lzma openssl dbus glib udev cairo pango atk gdk-pixbuf gtk3 ];
|
||||||
|
|
||||||
|
depsExtraArgs.postPatch = "make prefix='$(out)' toml-gen";
|
||||||
|
|
||||||
|
postPatch = ''
|
||||||
|
sed -i 's|etc|$(prefix)/etc|' Makefile
|
||||||
|
'';
|
||||||
|
|
||||||
|
buildPhase = "make prefix='$(out)'";
|
||||||
|
|
||||||
|
installPhase = "make prefix='$(out)' install";
|
||||||
|
|
||||||
|
cargoSha256 = "0byc0pqa1w2qnfrx3psrzdq1c8qjslbmzxg872b9v6fr5d4c9cvg";
|
||||||
|
|
||||||
|
doCheck = false;
|
||||||
|
|
||||||
|
meta = {
|
||||||
|
description = "Graphical frontend for firmware management";
|
||||||
|
homepage = "https://github.com/pop-os/firmware-manager";
|
||||||
|
license = lib.licenses.gpl3;
|
||||||
|
maintainers = [ lib.maintainers.shlevy ];
|
||||||
|
platforms = lib.platforms.linux;
|
||||||
|
};
|
||||||
|
}
|
@ -0,0 +1,39 @@
|
|||||||
|
{ rustPlatform, lib, fetchFromGitHub, lzma, pkgconfig, openssl, dbus, efibootmgr, makeWrapper }:
|
||||||
|
rustPlatform.buildRustPackage rec {
|
||||||
|
pname = "system76-firmware";
|
||||||
|
# Check Makefile when updating, make sure postInstall matches make install
|
||||||
|
version = "1.0.17";
|
||||||
|
|
||||||
|
src = fetchFromGitHub {
|
||||||
|
owner = "pop-os";
|
||||||
|
repo = pname;
|
||||||
|
rev = version;
|
||||||
|
sha256 = "0cnrskfk3sam90lfpgsraqs4bx9yz8rxhwfs8rxdri04lakxgghg";
|
||||||
|
};
|
||||||
|
|
||||||
|
nativeBuildInputs = [ pkgconfig makeWrapper ];
|
||||||
|
|
||||||
|
buildInputs = [ lzma openssl dbus ];
|
||||||
|
|
||||||
|
cargoBuildFlags = [ "--workspace" ];
|
||||||
|
|
||||||
|
cargoSha256 = "06jrmxy68glcmbn9px29wc0s8pqdn26iy4jn3c246dapv1zvbb4s";
|
||||||
|
|
||||||
|
# Purposefully don't install systemd unit file, that's for NixOS
|
||||||
|
postInstall = ''
|
||||||
|
install -D -m -0644 data/system76-firmware-daemon.conf $out/etc/dbus-1/system.d/system76-firmware-daemon.conf
|
||||||
|
|
||||||
|
for bin in $out/bin/system76-firmware-*
|
||||||
|
do
|
||||||
|
wrapProgram $bin --prefix PATH : "${efibootmgr}/bin"
|
||||||
|
done
|
||||||
|
'';
|
||||||
|
|
||||||
|
meta = {
|
||||||
|
description = "Tools for managing firmware updates for system76 devices.";
|
||||||
|
homepage = "https://github.com/pop-os/system76-firmware";
|
||||||
|
license = lib.licenses.gpl3;
|
||||||
|
maintainers = [ lib.maintainers.shlevy ];
|
||||||
|
platforms = lib.platforms.linux;
|
||||||
|
};
|
||||||
|
}
|
@ -25,6 +25,8 @@ stdenv.mkDerivation {
|
|||||||
|
|
||||||
installPhase = ''
|
installPhase = ''
|
||||||
install -D system76_acpi.ko $out/lib/modules/${kernel.modDirVersion}/misc/system76_acpi.ko
|
install -D system76_acpi.ko $out/lib/modules/${kernel.modDirVersion}/misc/system76_acpi.ko
|
||||||
|
mkdir -p $out/lib/udev/hwdb.d
|
||||||
|
mv lib/udev/hwdb.d/* $out/lib/udev/hwdb.d
|
||||||
'';
|
'';
|
||||||
|
|
||||||
meta = with stdenv.lib; {
|
meta = with stdenv.lib; {
|
||||||
|
@ -25,6 +25,8 @@ stdenv.mkDerivation {
|
|||||||
|
|
||||||
installPhase = ''
|
installPhase = ''
|
||||||
install -D system76.ko $out/lib/modules/${kernel.modDirVersion}/misc/system76.ko
|
install -D system76.ko $out/lib/modules/${kernel.modDirVersion}/misc/system76.ko
|
||||||
|
mkdir -p $out/lib/udev/hwdb.d
|
||||||
|
mv lib/udev/hwdb.d/* $out/lib/udev/hwdb.d
|
||||||
'';
|
'';
|
||||||
|
|
||||||
meta = with stdenv.lib; {
|
meta = with stdenv.lib; {
|
||||||
|
@ -17474,6 +17474,8 @@ in
|
|||||||
|
|
||||||
fwupd = callPackage ../os-specific/linux/firmware/fwupd { };
|
fwupd = callPackage ../os-specific/linux/firmware/fwupd { };
|
||||||
|
|
||||||
|
firmware-manager = callPackage ../os-specific/linux/firmware/firmware-manager { };
|
||||||
|
|
||||||
fwts = callPackage ../os-specific/linux/fwts { };
|
fwts = callPackage ../os-specific/linux/fwts { };
|
||||||
|
|
||||||
gobi_loader = callPackage ../os-specific/linux/gobi_loader { };
|
gobi_loader = callPackage ../os-specific/linux/gobi_loader { };
|
||||||
@ -18282,6 +18284,8 @@ in
|
|||||||
|
|
||||||
nvme-cli = callPackage ../os-specific/linux/nvme-cli { };
|
nvme-cli = callPackage ../os-specific/linux/nvme-cli { };
|
||||||
|
|
||||||
|
system76-firmware = callPackage ../os-specific/linux/firmware/system76-firmware { };
|
||||||
|
|
||||||
open-vm-tools = callPackage ../applications/virtualization/open-vm-tools { };
|
open-vm-tools = callPackage ../applications/virtualization/open-vm-tools { };
|
||||||
open-vm-tools-headless = open-vm-tools.override { withX = false; };
|
open-vm-tools-headless = open-vm-tools.override { withX = false; };
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user