Modularized boot process

This commit is contained in:
Jan Bulthuis 2024-07-18 23:56:00 +02:00
parent f40ae42933
commit d8cf72a4c3
8 changed files with 208 additions and 71 deletions

View File

@ -18,6 +18,7 @@
# Enabled modules # Enabled modules
modules = { modules = {
base.enable = true;
pipewire.enable = true; pipewire.enable = true;
wpa_supplicant.enable = true; wpa_supplicant.enable = true;
}; };

View File

@ -94,36 +94,36 @@ in {
# }; # };
# Use the systemd-boot EFI boot loader. # Use the systemd-boot EFI boot loader.
boot = { # boot = {
loader = { # loader = {
systemd-boot.enable = true; # systemd-boot.enable = true;
systemd-boot.editor = false; # systemd-boot.editor = false;
efi.canTouchEfiVariables = true; # efi.canTouchEfiVariables = true;
timeout = 0; # timeout = 0;
}; # };
tmp.cleanOnBoot = true; # tmp.cleanOnBoot = true;
consoleLogLevel = 0; # consoleLogLevel = 0;
initrd.verbose = false; # initrd.verbose = false;
initrd.checkJournalingFS = false; # initrd.checkJournalingFS = false;
plymouth = { # plymouth = {
enable = false; # enable = false;
theme = "text"; # theme = "text";
}; # };
kernelParams = [ # kernelParams = [
"quiet" # "quiet"
"boot.shell_on_fail" # "boot.shell_on_fail"
"loglevel=3" # "loglevel=3"
"rd.systemd.show_status=false" # "rd.systemd.show_status=false"
"rd.udev.log_level=3" # "rd.udev.log_level=3"
"udev.log_priority=3" # "udev.log_priority=3"
"video=efifb:nobgrt" # "video=efifb:nobgrt"
"bgrt_disable" # "bgrt_disable"
]; # ];
}; # };
# Set up console # Set up console
# console = { # console = {
@ -136,28 +136,28 @@ in {
# networking.wireless.enable = true; # Enables wireless support via wpa_supplicant. # networking.wireless.enable = true; # Enables wireless support via wpa_supplicant.
# networking.wireless.allowAuxiliaryImperativeNetworks = true; # networking.wireless.allowAuxiliaryImperativeNetworks = true;
nixpkgs.config.allowUnfree = true; # nixpkgs.config.allowUnfree = true;
# Set up graphics # Set up graphics
hardware.graphics.enable32Bit = true; # hardware.graphics.enable32Bit = true;
hardware.graphics.enable = true; # hardware.graphics.enable = true;
services.xserver.videoDrivers = ["nvidia"]; # services.xserver.videoDrivers = ["nvidia"];
hardware.nvidia = { # hardware.nvidia = {
modesetting.enable = true; # modesetting.enable = true;
powerManagement.enable = false; # powerManagement.enable = false;
powerManagement.finegrained = false; # powerManagement.finegrained = false;
open = false; # open = false;
nvidiaSettings = true; # nvidiaSettings = true;
package = config.boot.kernelPackages.nvidiaPackages.stable; # package = config.boot.kernelPackages.nvidiaPackages.stable;
prime = { # prime = {
intelBusId = "PCI:0:2:0"; # intelBusId = "PCI:0:2:0";
nvidiaBusId = "PCI:1:0:0"; # nvidiaBusId = "PCI:1:0:0";
offload = { # offload = {
enable = true; # enable = true;
enableOffloadCmd = true; # enableOffloadCmd = true;
}; # };
}; # };
}; # };
# Set up tailscale # Set up tailscale
# services.tailscale = { # services.tailscale = {
@ -182,7 +182,7 @@ in {
# }; # };
# Set up input # Set up input
services.libinput.enable = true; # services.libinput.enable = true;
# Display manager # Display manager
# services.greetd = { # services.greetd = {
@ -201,14 +201,14 @@ in {
# Enable programs # Enable programs
# programs.river.enable = true; # programs.river.enable = true;
xdg.portal = { # xdg.portal = {
enable = true; # enable = true;
extraPortals = [ # extraPortals = [
pkgs.xdg-desktop-portal-gtk # pkgs.xdg-desktop-portal-gtk
pkgs.xdg-desktop-portal-wlr # pkgs.xdg-desktop-portal-wlr
]; # ];
}; # };
# Gamer moment # Gamer moment
# programs.steam.enable = true; # programs.steam.enable = true;
@ -225,10 +225,10 @@ in {
# pr` # pr`
# dconf # dconf
programs.dconf.enable = true; # programs.dconf.enable = true;
# Fonts # Fonts
fonts.packages = with pkgs; [ # fonts.packages = with pkgs; [
# my-wqy-zenhei # my-wqy-zenhei
# my-wqy-microhei # my-wqy-microhei
# my-wqy-bitmapsong # my-wqy-bitmapsong
@ -239,7 +239,7 @@ in {
#unifont # Replace with Kissinger2 #unifont # Replace with Kissinger2
#unifont_upper # Replace with Kissinger 2 #unifont_upper # Replace with Kissinger 2
# (nerdfonts.override { fonts = ["NerdFontsSymbolsOnly"]; }) # (nerdfonts.override { fonts = ["NerdFontsSymbolsOnly"]; })
]; # ];
# fonts.fontconfig.defaultFonts = { # fonts.fontconfig.defaultFonts = {
# serif = [ # serif = [
# # "DejaVu Serif" # # "DejaVu Serif"
@ -272,12 +272,12 @@ in {
# List packages installed in system profile. To search, run: # List packages installed in system profile. To search, run:
# $ nix search wget # $ nix search wget
environment.systemPackages = with pkgs; [ # environment.systemPackages = with pkgs; [
git # git
vim # vim
wget # wget
curl # curl
]; # ];
# Some programs need SUID wrappers, can be configured further or are # Some programs need SUID wrappers, can be configured further or are
# started in user sessions. # started in user sessions.

View File

@ -0,0 +1,48 @@
{ lib, config, pkgs, ... }:
with lib;
let
cfg = config.modules.base;
in {
options.modules.base = {
enable = mkEnableOption "base";
};
config = mkIf cfg.enable {
environment.systemPackages = with pkgs; [
# Add base linux utilities
git
wget
curl
dig
nix-tree
];
modules = {
# Enable base modules
clean-tmp.enable = true;
fontconfig.enable = true;
neovim.enable = true;
systemd-boot.enable = true;
tuigreet.enable = true;
tailscale.enable = true;
};
# TODO: Remove everything below, it is here out of convenience and should be elsewhere
programs.dconf.enable = true;
xdg.portal = {
enable = true;
extraPortals = with pkgs; [
xdg-desktop-portal-gtk
xdg-desktop-portal-wlr
];
};
services.libinput.enable = true;
modules.unfree.enable = true;
modules.unfree.allowedPackages = [
"nvidia-x11"
"nvidia-settings"
];
};
}

View File

@ -0,0 +1,14 @@
{ lib, config, pkgs, ... }:
with lib;
let
cfg = config.modules.clean-tmp;
in {
options.modules.clean-tmp = {
enable = mkEnableOption "clean-tmp";
};
config = mkIf cfg.enable {
boot.tmp.cleanOnBoot = true;
};
}

View File

@ -0,0 +1,31 @@
{ lib, config, pkgs, ... }:
with lib;
let
cfg = config.modules.silent-boot;
in {
options.modules.silent-boot = {
enable = mkEnableOption "silent-boot";
};
config = mkIf cfg.enable {
boot = {
loader.timeout = 0;
};
consoleLogLevel = 0;
initrd.verbose = false;
initrd.checkJournalingFS = false;
kernelParams = [
"quiet"
"boot.shell_on_fail"
"loglevel=3"
"rd.systemd.show_status=false"
"rd.udev.log_level=3"
"udev.log_priority=3"
"video=efifb:nobgrt"
"bgrt_disable"
];
};
}

View File

@ -0,0 +1,18 @@
{ lib, config, pkgs, ... }:
with lib;
let
cfg = config.modules.systemd-boot;
in {
options.modules.systemd-boot = {
enable = mkEnableOption "systemd-boot";
};
config = mkIf cfg.enable {
boot.loader = {
systemd-boot.enable = true;
systemd-boot.editor = false;
efi.canTouchEfiVariables = true;
};
};
}

View File

@ -3,7 +3,13 @@
with lib; { with lib; {
imports = [ imports = [
# Import modules # Import modules
./base/default.nix
./boot/clean-tmp.nix
./boot/silent-boot.nix
./boot/systemd-boot.nix
./brightnessctl/default.nix
./fontconfig/default.nix ./fontconfig/default.nix
./graphics/default.nix
./greeter/greetd/default.nix ./greeter/greetd/default.nix
./greeter/greetd/tuigreet.nix ./greeter/greetd/tuigreet.nix
./locale/default.nix ./locale/default.nix
@ -14,12 +20,4 @@ with lib; {
./vpn/tailscale.nix ./vpn/tailscale.nix
./wifi/wpa_supplicant.nix ./wifi/wpa_supplicant.nix
]; ];
config.modules = {
# Enable default modules
fontconfig.enable = mkDefault true;
neovim.enable = mkDefault true;
tuigreet.enable = mkDefault true;
tailscale.enable = mkDefault true;
};
} }

View File

@ -0,0 +1,27 @@
{ lib, config, pkgs, ... }:
{
config = {
# TODO: Modularize further, especially modesetting should be its own module.
# Set up graphics
hardware.graphics.enable32Bit = true;
hardware.graphics.enable = true;
services.xserver.videoDrivers = ["nvidia"];
hardware.nvidia = {
modesetting.enable = true;
powerManagement.enable = false;
powerManagement.finegrained = false;
open = false;
nvidiaSettings = true;
package = config.boot.kernelPackages.nvidiaPackages.stable;
prime = {
intelBusId = "PCI:0:2:0";
nvidiaBusId = "PCI:1:0:0";
offload = {
enable = true;
enableOffloadCmd = true;
};
};
};
};
}