Add minified kernel
This commit is contained in:
parent
99fbad4a83
commit
58efb77c91
4 changed files with 467 additions and 2 deletions
|
@ -25,6 +25,32 @@
|
||||||
./disks.nix
|
./disks.nix
|
||||||
];
|
];
|
||||||
|
|
||||||
|
####################
|
||||||
|
systemd.user = {
|
||||||
|
services.modprobed-db = {
|
||||||
|
description = "modprobed-db service to scan and store new kernel modules";
|
||||||
|
wants = [ "modprobed-db.timer" ];
|
||||||
|
wantedBy = [ "default.target" ];
|
||||||
|
serviceConfig = {
|
||||||
|
ExecStart = "${pkgs.modprobed-db}/bin/modprobed-db storesilent";
|
||||||
|
ExecStop = "${pkgs.modprobed-db}/bin/modprobed-db storesilent";
|
||||||
|
Type = "simple";
|
||||||
|
};
|
||||||
|
path = builtins.attrValues {
|
||||||
|
inherit (pkgs) gawk getent coreutils gnugrep gnused kmod;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
timers.modprobed-db = {
|
||||||
|
wantedBy = [ "timers.target" ];
|
||||||
|
partOf = [ "modprobed-db.service" ];
|
||||||
|
timerConfig = {
|
||||||
|
Persistent = true;
|
||||||
|
OnUnitActiveSec = "1h";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
################
|
||||||
|
|
||||||
security.sudo-rs.wheelNeedsPassword = lib.mkForce true; # unneded due to fp sensor
|
security.sudo-rs.wheelNeedsPassword = lib.mkForce true; # unneded due to fp sensor
|
||||||
|
|
||||||
# Power mgmt
|
# Power mgmt
|
||||||
|
@ -59,7 +85,9 @@
|
||||||
boot.kernelPackages = lib.mkForce pkgs.linuxPackages_latest;
|
boot.kernelPackages = lib.mkForce pkgs.linuxPackages_latest;
|
||||||
|
|
||||||
environment.etc."specialisation".text = "linux-latest";
|
environment.etc."specialisation".text = "linux-latest";
|
||||||
system.nixos.tags = [ "linux-latest" ];
|
system.nixos.tags = [
|
||||||
|
"linux-latest"
|
||||||
|
];
|
||||||
};
|
};
|
||||||
|
|
||||||
specialisation.linux-zen.configuration = {
|
specialisation.linux-zen.configuration = {
|
||||||
|
@ -78,9 +106,19 @@
|
||||||
system.nixos.tags = [ "linux-xanmod-latest" ];
|
system.nixos.tags = [ "linux-xanmod-latest" ];
|
||||||
};
|
};
|
||||||
|
|
||||||
|
specialisation.linux-cachy-mini.configuration = {
|
||||||
|
boot.kernelPackages = lib.mkForce (import ./mini_kernel.nix {
|
||||||
|
inherit inputs lib;
|
||||||
|
pkgs = pkgs.pkgsAMD64Microarchs.znver4;
|
||||||
|
});
|
||||||
|
|
||||||
|
environment.etc."specialisation".text = "linux-cachy-mini";
|
||||||
|
system.nixos.tags = [ "linux-cachy-mini" ];
|
||||||
|
};
|
||||||
|
|
||||||
boot = {
|
boot = {
|
||||||
# kernelPackages = pkgs.linuxPackages_cachyos; # bootstrap
|
# kernelPackages = pkgs.linuxPackages_cachyos; # bootstrap
|
||||||
kernelPackages = pkgs.pkgsAMD64Microarchs.znver4.linuxPackages_cachyos; # TODO see above, include into module
|
kernelPackages = pkgs.pkgsAMD64Microarchs.znver4.linuxPackages_cachyos;
|
||||||
kernelPatches = [ ];
|
kernelPatches = [ ];
|
||||||
kernelParams = [
|
kernelParams = [
|
||||||
# "systemd.unit=emergency.target"
|
# "systemd.unit=emergency.target"
|
||||||
|
@ -95,6 +133,8 @@
|
||||||
systemd-boot = {
|
systemd-boot = {
|
||||||
enable = false; # due to lanzaboote
|
enable = false; # due to lanzaboote
|
||||||
configurationLimit = 16;
|
configurationLimit = 16;
|
||||||
|
|
||||||
|
memtest86.enable = true;
|
||||||
};
|
};
|
||||||
efi.canTouchEfiVariables = true;
|
efi.canTouchEfiVariables = true;
|
||||||
};
|
};
|
||||||
|
|
47
systems/nixos-fw16/mini_kernel.nix
Normal file
47
systems/nixos-fw16/mini_kernel.nix
Normal file
|
@ -0,0 +1,47 @@
|
||||||
|
{ inputs
|
||||||
|
, lib
|
||||||
|
, pkgs
|
||||||
|
, ...
|
||||||
|
}:
|
||||||
|
let
|
||||||
|
mainVersions = lib.importJSON "${inputs.chaotic}/pkgs/linux-cachyos/versions.json";
|
||||||
|
mainConfig = import "${inputs.chaotic}/pkgs/linux-cachyos/config-nix/cachyos.x86_64-linux.nix";
|
||||||
|
usedModules = builtins.readFile ./modprobed.db;
|
||||||
|
toLowerParts = list: (lib.lists.unique
|
||||||
|
(lib.lists.flatten
|
||||||
|
(builtins.map
|
||||||
|
(elem: (lib.strings.splitString "_" (lib.strings.toLower elem)))
|
||||||
|
list)));
|
||||||
|
usedModuleNames = builtins.map (x: lib.strings.toLower x) (lib.strings.splitString "\n" usedModules);
|
||||||
|
usedModuleNameParts = toLowerParts usedModuleNames;
|
||||||
|
filterParts = [ "crypto" "intel" "hid" "drm" "x86" "64" "" ];
|
||||||
|
usedModuleNamePartsFiltered = (lib.lists.partition (elem: !(builtins.elem elem filterParts)) usedModuleNameParts).right;
|
||||||
|
usedModuleNamePartsTrace = builtins.trace usedModuleNameParts usedModuleNamePartsFiltered;
|
||||||
|
filteredConfig = builtins.listToAttrs (
|
||||||
|
builtins.map
|
||||||
|
(attr:
|
||||||
|
let
|
||||||
|
no_conf_key = builtins.replaceStrings [ "CONFIG_" ] [ "" ] attr.name;
|
||||||
|
in
|
||||||
|
{
|
||||||
|
name = attr.name;
|
||||||
|
value =
|
||||||
|
if
|
||||||
|
attr.value
|
||||||
|
== "m"
|
||||||
|
&& !(builtins.elem (lib.strings.toLower no_conf_key) usedModuleNames)
|
||||||
|
&& ((lib.lists.intersectLists (toLowerParts [ no_conf_key ]) usedModuleNamePartsFiltered) == [ ])
|
||||||
|
then "n"
|
||||||
|
else attr.value;
|
||||||
|
})
|
||||||
|
(builtins.attrValues (builtins.mapAttrs (name: value: { inherit name value; }) mainConfig))
|
||||||
|
);
|
||||||
|
mkCachyKernel = attrs: pkgs.callPackage ./pkgs-for.nix ({ versions = mainVersions; } // attrs);
|
||||||
|
mainKernel = mkCachyKernel {
|
||||||
|
inherit inputs;
|
||||||
|
taste = "linux-cachyos";
|
||||||
|
kConfig = filteredConfig;
|
||||||
|
withUpdateScript = "stable";
|
||||||
|
};
|
||||||
|
in
|
||||||
|
mainKernel
|
274
systems/nixos-fw16/modprobed.db
Normal file
274
systems/nixos-fw16/modprobed.db
Normal file
|
@ -0,0 +1,274 @@
|
||||||
|
ac97_bus
|
||||||
|
adiantum
|
||||||
|
aesni_intel
|
||||||
|
af_alg
|
||||||
|
algif_hash
|
||||||
|
algif_skcipher
|
||||||
|
amd_atl
|
||||||
|
amdgpu
|
||||||
|
amd_pmc
|
||||||
|
amd_pmf
|
||||||
|
amd_sfh
|
||||||
|
amdtee
|
||||||
|
amdxcp
|
||||||
|
asn1_encoder
|
||||||
|
atkbd
|
||||||
|
bcachefs
|
||||||
|
blowfish_common
|
||||||
|
blowfish_generic
|
||||||
|
blowfish_x86_64
|
||||||
|
bluetooth
|
||||||
|
bnep
|
||||||
|
bridge
|
||||||
|
br_netfilter
|
||||||
|
btbcm
|
||||||
|
btintel
|
||||||
|
btmtk
|
||||||
|
btrtl
|
||||||
|
btusb
|
||||||
|
camellia_aesni_avx2
|
||||||
|
camellia_aesni_avx_x86_64
|
||||||
|
camellia_generic
|
||||||
|
camellia_x86_64
|
||||||
|
cast5_avx_x86_64
|
||||||
|
cast5_generic
|
||||||
|
cast_common
|
||||||
|
cbc
|
||||||
|
ccp
|
||||||
|
cdc_acm
|
||||||
|
cdc_ether
|
||||||
|
cdc_mbim
|
||||||
|
cdc_ncm
|
||||||
|
cdc_wdm
|
||||||
|
cec
|
||||||
|
cfg80211
|
||||||
|
chacha_x86_64
|
||||||
|
cifs
|
||||||
|
cifs_arc4
|
||||||
|
cifs_md4
|
||||||
|
cmac
|
||||||
|
crc16
|
||||||
|
crc32c_generic
|
||||||
|
crc32c_intel
|
||||||
|
crc32_pclmul
|
||||||
|
crct10dif_pclmul
|
||||||
|
cros_ec
|
||||||
|
cros_ec_chardev
|
||||||
|
cros_ec_debugfs
|
||||||
|
cros_ec_dev
|
||||||
|
cros_ec_lpcs
|
||||||
|
cros_ec_sysfs
|
||||||
|
cros_usbpd_charger
|
||||||
|
cros_usbpd_logger
|
||||||
|
cros_usbpd_notify
|
||||||
|
cryptd
|
||||||
|
crypto_simd
|
||||||
|
curve25519_x86_64
|
||||||
|
des3_ede_x86_64
|
||||||
|
des_generic
|
||||||
|
dimlib
|
||||||
|
dm_crypt
|
||||||
|
dm_mod
|
||||||
|
dns_resolver
|
||||||
|
drm_buddy
|
||||||
|
drm_display_helper
|
||||||
|
drm_exec
|
||||||
|
drm_suballoc_helper
|
||||||
|
drm_ttm_helper
|
||||||
|
encrypted_keys
|
||||||
|
fat
|
||||||
|
framework_laptop
|
||||||
|
gf128mul
|
||||||
|
ghash_clmulni_intel
|
||||||
|
gpio_cros_ec
|
||||||
|
gpu_sched
|
||||||
|
hid_generic
|
||||||
|
hid_multitouch
|
||||||
|
hid_sensor_als
|
||||||
|
hid_sensor_hub
|
||||||
|
hid_sensor_iio_common
|
||||||
|
hid_sensor_trigger
|
||||||
|
i2c_algo_bit
|
||||||
|
i2c_dev
|
||||||
|
i2c_hid
|
||||||
|
i2c_hid_acpi
|
||||||
|
i2c_piix4
|
||||||
|
ib_cm
|
||||||
|
ib_core
|
||||||
|
industrialio
|
||||||
|
industrialio_triggered_buffer
|
||||||
|
inet_diag
|
||||||
|
intel_rapl_common
|
||||||
|
intel_rapl_msr
|
||||||
|
ip6t_rpfilter
|
||||||
|
ip6_udp_tunnel
|
||||||
|
ip_tables
|
||||||
|
ipt_REJECT
|
||||||
|
ipt_rpfilter
|
||||||
|
iw_cm
|
||||||
|
joydev
|
||||||
|
k10temp
|
||||||
|
kfifo_buf
|
||||||
|
kvm
|
||||||
|
kvm_amd
|
||||||
|
libarc4
|
||||||
|
libchacha
|
||||||
|
libchacha20poly1305
|
||||||
|
libcrc32c
|
||||||
|
libcurve25519_generic
|
||||||
|
libdes
|
||||||
|
libpoly1305
|
||||||
|
libps2
|
||||||
|
llc
|
||||||
|
loop
|
||||||
|
lrw
|
||||||
|
lz4_compress
|
||||||
|
lz4hc_compress
|
||||||
|
mac80211
|
||||||
|
mac_hid
|
||||||
|
macvlan
|
||||||
|
mii
|
||||||
|
mousedev
|
||||||
|
mt76
|
||||||
|
mt76_connac_lib
|
||||||
|
mt7921_common
|
||||||
|
mt7921e
|
||||||
|
mt792x_lib
|
||||||
|
netfs
|
||||||
|
nf_conntrack
|
||||||
|
nf_conntrack_broadcast
|
||||||
|
nf_conntrack_netbios_ns
|
||||||
|
nf_conntrack_netlink
|
||||||
|
nf_defrag_ipv4
|
||||||
|
nf_defrag_ipv6
|
||||||
|
nf_log_syslog
|
||||||
|
nf_nat
|
||||||
|
nfnetlink
|
||||||
|
nf_reject_ipv4
|
||||||
|
nf_tables
|
||||||
|
nft_chain_nat
|
||||||
|
nft_compat
|
||||||
|
nhpoly1305
|
||||||
|
nhpoly1305_avx2
|
||||||
|
nhpoly1305_sse2
|
||||||
|
nls_iso8859_1
|
||||||
|
nls_ucs2_utils
|
||||||
|
nls_utf8
|
||||||
|
nvme
|
||||||
|
nvme_auth
|
||||||
|
nvme_core
|
||||||
|
overlay
|
||||||
|
platform_profile
|
||||||
|
poly1305_x86_64
|
||||||
|
polyval_clmulni
|
||||||
|
polyval_generic
|
||||||
|
qrtr
|
||||||
|
raid6_pq
|
||||||
|
rapl
|
||||||
|
rdma_cm
|
||||||
|
rfcomm
|
||||||
|
rfkill
|
||||||
|
roles
|
||||||
|
ryzen_smu
|
||||||
|
sch_fq_codel
|
||||||
|
serio
|
||||||
|
serpent_avx2
|
||||||
|
serpent_avx_x86_64
|
||||||
|
serpent_generic
|
||||||
|
serpent_sse2_x86_64
|
||||||
|
sha1_ssse3
|
||||||
|
sha256_ssse3
|
||||||
|
sha512_ssse3
|
||||||
|
snd
|
||||||
|
snd_acp_config
|
||||||
|
snd_acp_legacy_common
|
||||||
|
snd_acp_pci
|
||||||
|
snd_amd_sdw_acpi
|
||||||
|
snd_compress
|
||||||
|
snd_hda_codec
|
||||||
|
snd_hda_codec_generic
|
||||||
|
snd_hda_codec_hdmi
|
||||||
|
snd_hda_codec_realtek
|
||||||
|
snd_hda_core
|
||||||
|
snd_hda_intel
|
||||||
|
snd_hda_scodec_component
|
||||||
|
snd_hrtimer
|
||||||
|
snd_hwdep
|
||||||
|
snd_intel_dspcfg
|
||||||
|
snd_intel_sdw_acpi
|
||||||
|
snd_pci_acp3x
|
||||||
|
snd_pci_acp5x
|
||||||
|
snd_pci_acp6x
|
||||||
|
snd_pci_ps
|
||||||
|
snd_pcm
|
||||||
|
snd_pcm_dmaengine
|
||||||
|
snd_rn_pci_acp3x
|
||||||
|
snd_rpl_pci_acp6x
|
||||||
|
snd_seq
|
||||||
|
snd_seq_device
|
||||||
|
snd_seq_dummy
|
||||||
|
snd_soc_acpi
|
||||||
|
snd_soc_core
|
||||||
|
snd_sof
|
||||||
|
snd_sof_amd_acp
|
||||||
|
snd_sof_amd_acp63
|
||||||
|
snd_sof_amd_rembrandt
|
||||||
|
snd_sof_amd_renoir
|
||||||
|
snd_sof_amd_vangogh
|
||||||
|
snd_sof_pci
|
||||||
|
snd_sof_utils
|
||||||
|
snd_sof_xtensa_dsp
|
||||||
|
snd_timer
|
||||||
|
soundcore
|
||||||
|
soundwire_amd
|
||||||
|
soundwire_bus
|
||||||
|
soundwire_generic_allocation
|
||||||
|
sp5100_tco
|
||||||
|
stp
|
||||||
|
tap
|
||||||
|
tcp_diag
|
||||||
|
tee
|
||||||
|
thunderbolt
|
||||||
|
trusted
|
||||||
|
ttm
|
||||||
|
tun
|
||||||
|
twofish_avx_x86_64
|
||||||
|
twofish_common
|
||||||
|
twofish_generic
|
||||||
|
twofish_x86_64
|
||||||
|
twofish_x86_64_3way
|
||||||
|
typec
|
||||||
|
typec_displayport
|
||||||
|
typec_ucsi
|
||||||
|
uas
|
||||||
|
ucsi_acpi
|
||||||
|
udp_tunnel
|
||||||
|
uinput
|
||||||
|
usbhid
|
||||||
|
usbnet
|
||||||
|
usb_storage
|
||||||
|
veth
|
||||||
|
vfat
|
||||||
|
video
|
||||||
|
vivaldi_fmap
|
||||||
|
wireguard
|
||||||
|
wmi
|
||||||
|
wmi_bmof
|
||||||
|
xfrm_algo
|
||||||
|
xfrm_user
|
||||||
|
xhci_pci
|
||||||
|
xhci_pci_renesas
|
||||||
|
xor
|
||||||
|
x_tables
|
||||||
|
xt_addrtype
|
||||||
|
xt_CHECKSUM
|
||||||
|
xt_conntrack
|
||||||
|
xt_CT
|
||||||
|
xt_LOG
|
||||||
|
xt_mark
|
||||||
|
xt_MASQUERADE
|
||||||
|
xt_nat
|
||||||
|
xt_pkttype
|
||||||
|
xts
|
||||||
|
xt_tcpudp
|
||||||
|
zram
|
104
systems/nixos-fw16/pkgs-for.nix
Normal file
104
systems/nixos-fw16/pkgs-for.nix
Normal file
|
@ -0,0 +1,104 @@
|
||||||
|
{ stdenv
|
||||||
|
, inputs
|
||||||
|
, taste
|
||||||
|
, kConfig
|
||||||
|
, versions
|
||||||
|
, callPackage
|
||||||
|
, linuxPackages
|
||||||
|
, linuxPackagesFor
|
||||||
|
, fetchFromGitHub
|
||||||
|
, nyxUtils
|
||||||
|
, lib
|
||||||
|
, ogKernelConfigfile ? linuxPackages.kernel.passthru.configfile
|
||||||
|
, # those are set in their PKGBUILDs
|
||||||
|
kernelPatches ? { }
|
||||||
|
, basicCachy ? true
|
||||||
|
, cpuSched ? "cachyos"
|
||||||
|
, useLTO ? "none"
|
||||||
|
, ticksHz ? 500
|
||||||
|
, tickRate ? "full"
|
||||||
|
, preempt ? "full"
|
||||||
|
, hugePages ? "always"
|
||||||
|
, withDAMON ? false
|
||||||
|
, withNTSync ? true
|
||||||
|
, withHDR ? true
|
||||||
|
, withoutDebug ? false
|
||||||
|
, description ? "Linux EEVDF-BORE scheduler Kernel by CachyOS with other patches and improvements"
|
||||||
|
, withUpdateScript ? null
|
||||||
|
, packagesExtend ? null
|
||||||
|
,
|
||||||
|
}:
|
||||||
|
let
|
||||||
|
cachyConfig = {
|
||||||
|
inherit
|
||||||
|
taste
|
||||||
|
versions
|
||||||
|
basicCachy
|
||||||
|
cpuSched
|
||||||
|
useLTO
|
||||||
|
ticksHz
|
||||||
|
tickRate
|
||||||
|
preempt
|
||||||
|
hugePages
|
||||||
|
withDAMON
|
||||||
|
withNTSync
|
||||||
|
withHDR
|
||||||
|
withoutDebug
|
||||||
|
description
|
||||||
|
withUpdateScript
|
||||||
|
;
|
||||||
|
};
|
||||||
|
|
||||||
|
# The three phases of the config
|
||||||
|
# - First we apply the changes fromt their PKGBUILD using kconfig;
|
||||||
|
# - Then we NIXify it (in the update-script);
|
||||||
|
# - Last state is importing the NIXified version for building.
|
||||||
|
preparedConfigfile = callPackage "${inputs.chaotic}/pkgs/linux-cachyos/prepare.nix" {
|
||||||
|
inherit cachyConfig stdenv kernel ogKernelConfigfile;
|
||||||
|
};
|
||||||
|
kconfigToNix = callPackage "${inputs.chaotic}/pkgs/linux-cachyos/lib/kconfig-to-nix.nix" {
|
||||||
|
configfile = preparedConfigfile;
|
||||||
|
};
|
||||||
|
linuxConfigTransfomed = kConfig;
|
||||||
|
|
||||||
|
kernel = callPackage "${inputs.chaotic}/pkgs/linux-cachyos/kernel.nix" {
|
||||||
|
inherit cachyConfig stdenv kconfigToNix;
|
||||||
|
kernelPatches = [ ];
|
||||||
|
configfile = preparedConfigfile;
|
||||||
|
config = linuxConfigTransfomed;
|
||||||
|
};
|
||||||
|
|
||||||
|
# CachyOS repeating stuff.
|
||||||
|
addZFS = _finalAttrs: prevAttrs: {
|
||||||
|
kernel_configfile = prevAttrs.kernel.configfile;
|
||||||
|
zfs_cachyos = prevAttrs.zfs_unstable.overrideAttrs (prevAttrs: {
|
||||||
|
src = fetchFromGitHub {
|
||||||
|
owner = "cachyos";
|
||||||
|
repo = "zfs";
|
||||||
|
inherit (versions.zfs) rev hash;
|
||||||
|
};
|
||||||
|
meta = prevAttrs.meta // { broken = false; };
|
||||||
|
patches = [ ];
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
basePackages = linuxPackagesFor kernel;
|
||||||
|
packagesWithZFS = basePackages.extend addZFS;
|
||||||
|
packagesWithExtend =
|
||||||
|
if packagesExtend == null
|
||||||
|
then packagesWithZFS
|
||||||
|
else packagesWithZFS.extend (packagesExtend kernel);
|
||||||
|
packagesWithoutZFS = removeAttrs packagesWithExtend [ "zfs" "zfs_2_1" "zfs_2_2" "zfs_unstable" ];
|
||||||
|
packagesWithoutUpdateScript = nyxUtils.dropAttrsUpdateScript packagesWithoutZFS;
|
||||||
|
packagesWithRightPlatforms = nyxUtils.setAttrsPlatforms supportedPlatforms packagesWithoutUpdateScript;
|
||||||
|
|
||||||
|
supportedPlatforms = [ (with lib.systems.inspect.patterns; isx86_64 // isLinux) "x86_64-linux" ];
|
||||||
|
|
||||||
|
versionSuffix = "+C${nyxUtils.shorter versions.config.rev}+P${nyxUtils.shorter versions.patches.rev}";
|
||||||
|
in
|
||||||
|
packagesWithRightPlatforms
|
||||||
|
// {
|
||||||
|
_description = "Kernel and modules for ${description}";
|
||||||
|
_version = "${versions.linux.version}${versionSuffix}";
|
||||||
|
inherit (basePackages) kernel; # This one still has the updateScript
|
||||||
|
}
|
Loading…
Add table
Reference in a new issue