modularizing kernel and loader settings

This commit is contained in:
cnst
2024-09-22 14:30:06 +02:00
parent 6f53da8393
commit 50d554b6f6
22 changed files with 294 additions and 84 deletions

View File

@@ -1,26 +1,36 @@
#!/usr/bin/env bash
# Define TERMINAL if not set
TERMINAL="${TERMINAL:-foot}"
# Path to the tuirun executable
TUIRUN_PATH="/etc/profiles/per-user/$USER/bin/tuirun"
LOGFILE="$HOME/tuirun_debug.log"
echo "Launching tuirun..." >>"$LOGFILE"
date >>"$LOGFILE"
# Use absolute paths for commands
PGREP="/run/current-system/sw/bin/pgrep"
PKILL="/run/current-system/sw/bin/pkill"
HYPRCTL="/etc/profiles/per-user/$USER/bin/hyprctl"
if pgrep -f "alacritty --title tuirun" >/dev/null; then
echo "Terminating existing tuirun process" >>"$LOGFILE"
pkill -f "alacritty --title tuirun"
# Determine OPTIONS based on TERMINAL
if [ "$TERMINAL" = "foot" ]; then
OPTIONS="--override=main.pad=0x0"
elif [ "$TERMINAL" = "alacritty" ]; then
OPTIONS="--option window.padding.x=0 --option window.padding.y=0"
else
echo "Starting new tuirun process" >>"$LOGFILE"
if ! hyprctl dispatch exec "alacritty --title tuirun -e sh -c '$TUIRUN_PATH'"; then
echo "Failed to launch tuirun in foot terminal" >>"$LOGFILE"
exit 1
fi
sleep 1 # Give it a second to start
echo "Checking if tuirun process is still running..." >>"$LOGFILE"
if pgrep -f "$TUIRUN_PATH" >/dev/null; then
echo "tuirun is running" >>"$LOGFILE"
else
echo "tuirun exited prematurely" >>"$LOGFILE"
fi
OPTIONS=""
fi
# Matching pattern for the process
MATCH_PATTERN="$TERMINAL --title tuirun"
if "$PGREP" -f "$MATCH_PATTERN" >/dev/null; then
"$PKILL" -f "$MATCH_PATTERN"
else
# Construct the command
CMD="$TERMINAL --title tuirun"
if [ -n "$OPTIONS" ]; then
CMD="$CMD $OPTIONS"
fi
CMD="$CMD -e $TUIRUN_PATH"
# Launch the terminal with OPTIONS
"$HYPRCTL" dispatch exec "$CMD"
fi

28
flake.lock generated
View File

@@ -773,11 +773,11 @@
"xdph": "xdph"
},
"locked": {
"lastModified": 1726918033,
"narHash": "sha256-I0U4OLssUlNd6/KXHwErmgmYZURTJYJNHbeoKaMH4iI=",
"lastModified": 1726995313,
"narHash": "sha256-HTbsXJDFugdQ794d1Bnh8eRSY7AlunIxd7jFW9kkKNM=",
"ref": "refs/heads/main",
"rev": "8579066c7a1ceb745499ea4e11d5d420b1387ec0",
"revCount": 5246,
"rev": "e5ff19ac0f2c8d53a0c847d06a17676e636d6447",
"revCount": 5247,
"submodules": true,
"type": "git",
"url": "https://github.com/hyprwm/Hyprland"
@@ -1401,11 +1401,11 @@
},
"nur": {
"locked": {
"lastModified": 1726990799,
"narHash": "sha256-UhRcg+b/WlTmxF0NuaHhcwRafsjgLvgQCLkAAAH7/oU=",
"lastModified": 1726995785,
"narHash": "sha256-qpY9TCjtyhAeHa64NCyo3SoaHslxrrxQiMOPPY5lXEM=",
"owner": "nix-community",
"repo": "NUR",
"rev": "ea5bcd8bbc996195b556e51e9be9cef204b85ce3",
"rev": "474ea929fade537a0ba4f1e5b73abc0d157a293f",
"type": "github"
},
"original": {
@@ -1740,11 +1740,11 @@
"systems": "systems_8"
},
"locked": {
"lastModified": 1726992296,
"narHash": "sha256-ra2guef5o6SytQdsWMfXZZgpk6tF2YObx8JnGP7TYXg=",
"lastModified": 1726998061,
"narHash": "sha256-VgTXpSQuHQkSLvx3/lR8spnZK/iNniVoR3dcsQbEyQo=",
"ref": "refs/heads/main",
"rev": "1888a9a17f253492d8db41720d481c2051987e0f",
"revCount": 22,
"rev": "05f2efc7135167613ef4b190efd7ba4e01c424d6",
"revCount": 24,
"type": "git",
"url": "https://git.sr.ht/~canasta/tuirun"
},
@@ -1832,11 +1832,11 @@
]
},
"locked": {
"lastModified": 1726851729,
"narHash": "sha256-1z0esr5lBeUMlrPZ9gZmqZT8oTQekxJi53HAW4cH0Ms=",
"lastModified": 1726933538,
"narHash": "sha256-xTqnMoJsEojuvqJLuM+U7EZ7q71efaj3pbvjutq4TXc=",
"owner": "hyprwm",
"repo": "xdg-desktop-portal-hyprland",
"rev": "73b8c4f1150040644cf678aa8bbf2cec48a433cf",
"rev": "4880c50146d0c2a3152d2b02f79253810c330c11",
"type": "github"
},
"original": {

View File

@@ -10,7 +10,6 @@ in {
modules.terminal.alacritty.enable = mkEnableOption "Enables firefox";
};
config = mkIf cfg.enable {
home.sessionVariables.TERMINAL = "alacritty";
programs.alacritty = {
enable = true;
settings = {

View File

@@ -11,7 +11,6 @@ in {
modules.terminal.foot.enable = mkEnableOption "Enables foot terminal";
};
config = mkIf cfg.enable {
home.sessionVariables.TERMINAL = "foot";
programs.foot = {
enable = true;
package = pkgs.foot;

View File

@@ -10,7 +10,6 @@ in {
modules.terminal.kitty.enable = mkEnableOption "Enables kitty terminal";
};
config = mkIf cfg.enable {
home.sessionVariables.TERMINAL = "kitty";
programs.kitty = {
enable = true;
settings = {

View File

@@ -15,7 +15,6 @@ in {
modules.terminal.wezterm.enable = mkEnableOption "Enables wezterm terminal";
};
config = mkIf cfg.enable {
home.sessionVariables.TERMINAL = "wezterm";
programs.wezterm = {
enable = true;
package = weztermPkg;

View File

@@ -52,7 +52,7 @@ in {
#bind = $mod, M, exec, hyprctl dispatch exit
#bind = $mod, E, exec, $fileManager
"$mod, E, exec, $fileManager"
"$mod, r, exec, $tuirun"
"$mod, R, exec, $tuirun"
"$mod SHIFT, E, exec, $yazi"
"$mod, F, fullscreen,"
"$mod SHIFT, F, togglefloating,"

View File

@@ -19,7 +19,7 @@ in {
"float,initialTitle:(tuirun)"
"size 600 300,initialTitle:(tuirun)"
"center,initialTitle:(tuirun)"
# "workspace special:tuirun,initialTitle:(tuirun)"
"workspace special:tuirun,initialTitle:(tuirun)"
"noborder,initialTitle:(tuirun)"
#windowrulev2 = move 1708 32,class:(floatcal)
"float,class:(org.keepassxc.KeePassXC)"

View File

@@ -36,15 +36,15 @@ in {
./modules.nix
];
boot = {
consoleLogLevel = 3;
kernelPackages = lib.mkForce pkgs.linuxPackages_latest;
kernelParams = [
"amd_pstate=active"
"quiet"
"splash"
];
};
# boot = {
# consoleLogLevel = 3;
# kernelPackages = lib.mkForce pkgs.linuxPackages_latest;
# kernelParams = [
# "amd_pstate=active"
# "quiet"
# "splash"
# ];
# };
# environment.variables.COPILOT_API_KEY = config.age.secrets.cnstcopilot.path;

View File

@@ -1,5 +1,17 @@
{
modules = {
boot = {
loader = {
default.enable = false;
lanzaboote.enable = true;
};
kernel = {
variant = "cachyos";
hardware = "amd";
extraKernelParams = [];
extraBlacklistedModules = [];
};
};
gaming = {
steam = {
enable = true;
@@ -154,6 +166,12 @@
anyrun = {
enable = true;
};
chaotic = {
enable = true;
amd = {
enable = true;
};
};
corectrl = {
enable = true;
};

View File

@@ -35,16 +35,6 @@ in {
./modules.nix
];
boot = {
consoleLogLevel = 3;
kernelPackages = lib.mkForce pkgs.linuxPackages_latest;
kernelParams = [
"amd_pstate=active"
"quiet"
"splash"
];
};
swapDevices = [
{
device = "/var/lib/swapfile";

View File

@@ -1,5 +1,17 @@
{
modules = {
boot = {
loader = {
default.enable = true;
lanzaboote.enable = false;
};
kernel = {
variant = "latest";
hardware = "amd";
extraKernelParams = [];
extraBlacklistedModules = [];
};
};
gaming = {
steam = {
enable = false;
@@ -149,6 +161,12 @@
brightnessctl = {
enable = true;
};
chaotic = {
enable = false;
amd = {
enable = false;
};
};
corectrl = {
enable = false;
};

View File

@@ -34,7 +34,6 @@
shared
++ [
./cnix
"${mod}/boot/lanzaboote"
"${mod}/nix/nh/cnst"
"${mod}/dev"
{
@@ -53,7 +52,6 @@
shared
++ [
./toothpc
"${mod}/boot/lanzaboote"
"${mod}/nix/nh/toothpick"
"${mod}/dev"
{
@@ -72,7 +70,6 @@
shared
++ [
./cnixpad
"${mod}/boot"
"${mod}/nix/nh/cnst"
"${mod}/dev"
{

View File

@@ -35,15 +35,6 @@ in {
./modules.nix
];
boot = {
blacklistedKernelModules = [
];
consoleLogLevel = 3;
kernelPackages = lib.mkForce pkgs.linuxPackages_latest;
kernelParams = [
];
};
# https://nixos.wiki/wiki/FAQ/When_do_I_update_stateVersion
system.stateVersion = lib.mkDefault "23.11";
}

View File

@@ -1,5 +1,17 @@
{
modules = {
boot = {
loader = {
default.enable = false;
lanzaboote.enable = true;
};
kernel = {
variant = "cachyos";
hardware = "nvidia";
extraKernelParams = [];
extraBlacklistedModules = [];
};
};
gaming = {
steam = {
enable = true;
@@ -38,7 +50,7 @@
};
nvidia = {
enable = true;
package = "beta"; # set to beta/stable/production depending on your needs
package = "latest"; # set to beta/latest/stable/production depending on your needs
};
};
network = {
@@ -150,6 +162,12 @@
corectrl = {
enable = false;
};
chaotic = {
enable = true;
amd = {
enable = false;
};
};
microfetch = {
enable = true;
};

View File

@@ -0,0 +1,72 @@
# kernel.nix
{
pkgs,
lib,
config,
...
}: let
inherit (lib) mkOption;
cfg = config.modules.boot.kernel;
in {
options = {
modules.boot.kernel = {
variant = mkOption {
type = lib.types.enum ["latest" "cachyos"];
default = "latest";
description = "Kernel variant to use.";
};
hardware = mkOption {
type = lib.types.enum ["amd" "nvidia"];
default = "amd";
description = "Hardware type (GPU) configuration.";
};
extraKernelParams = mkOption {
type = lib.types.listOf lib.types.str;
default = [];
description = "Additional kernel parameters.";
};
extraBlacklistedModules = mkOption {
type = lib.types.listOf lib.types.str;
default = [];
description = "Additional kernel modules to blacklist.";
};
};
};
config = {
boot = {
consoleLogLevel = 3;
kernelPackages = (
if cfg.variant == "latest"
then pkgs.linuxPackages_latest
else if cfg.variant == "cachyos"
then pkgs.linuxPackages_cachyos
else pkgs.linuxPackages
);
kernelParams =
[
"quiet"
"splash"
]
++ (
if cfg.hardware == "amd"
then ["amd_pstate=active"]
else []
)
++ cfg.extraKernelParams;
blacklistedKernelModules =
(
if cfg.hardware == "nvidia"
then ["nouveau"]
else []
)
++ cfg.extraBlacklistedModules;
};
};
}

View File

@@ -0,0 +1,60 @@
{
pkgs,
lib,
config,
inputs,
...
}: let
inherit (lib) mkIf mkEnableOption mkMerge mkForce;
cfg = config.modules.boot.loader;
in {
options = {
modules.boot.loader = {
default = {
enable = mkEnableOption "Enable default boot loader configuration.";
};
lanzaboote = {
enable = mkEnableOption "Enable Lanzaboote boot loader configuration.";
};
};
};
imports = [
inputs.lanzaboote.nixosModules.lanzaboote
];
config = mkMerge [
{
assertions = [
{
assertion = !(cfg.default.enable && cfg.lanzaboote.enable);
message = "Only one of modules.boot.loader.default.enable and modules.boot.loader.lanzaboote.enable can be set to true.";
}
];
}
(mkIf cfg.default.enable {
# Default boot loader configuration
boot.loader = {
systemd-boot.enable = true;
systemd-boot.graceful = true;
efi.canTouchEfiVariables = false;
};
})
(mkIf cfg.lanzaboote.enable {
# Lanzaboote boot loader configuration
boot = {
lanzaboote = {
enable = true;
pkiBundle = "/etc/secureboot";
};
# We let Lanzaboote install systemd-boot
loader.systemd-boot.enable = mkForce false;
};
environment.systemPackages = [pkgs.sbctl];
})
];
}

View File

@@ -1,5 +1,7 @@
{systemModules, ...}: {
imports = [
"${systemModules}/boot/loader"
"${systemModules}/boot/kernel"
"${systemModules}/gaming/gamemode"
"${systemModules}/gaming/gamescope"
"${systemModules}/gaming/lutris"
@@ -40,6 +42,7 @@
"${systemModules}/utils/android"
"${systemModules}/utils/anyrun"
"${systemModules}/utils/brightnessctl"
"${systemModules}/utils/chaotic"
"${systemModules}/utils/corectrl"
"${systemModules}/utils/microfetch"
"${systemModules}/utils/misc"

View File

@@ -20,15 +20,7 @@ in {
vaapiVdpau
libvdpau-va-gl
amdvlk
# mesa
mesa
# vulkan
vulkan-tools
# vulkan-loader
# vulkan-validation-layers
# vulkan-extension-layer
];
extraPackages32 = with pkgs.pkgsi686Linux; [
vaapiVdpau

View File

@@ -18,9 +18,9 @@ in {
modules.hardware.graphics.nvidia = {
enable = mkEnableOption "Enables NVidia graphics";
package = mkOption {
type = types.enum ["stable" "beta" "production"]; # Added "production" here
type = types.enum ["stable" "beta" "production" "latest"];
default = "stable";
description = "Choose between the stable, beta, or production NVidia driver package";
description = "Choose between the stable, beta, latest, or production NVidia driver package";
};
};
};
@@ -49,15 +49,17 @@ in {
package =
if cfg.package == "beta"
then config.boot.kernelPackages.nvidiaPackages.beta
else if cfg.package == "latest"
then config.boot.kernelPackages.nvidiaPackages.latest
else if cfg.package == "production"
then config.boot.kernelPackages.nvidiaPackages.production
then config.boot.kernelPackages.nvidiaPackages.prodution
else config.boot.kernelPackages.nvidiaPackages.stable;
modesetting.enable = true;
powerManagement = {
enable = false;
finegrained = false;
};
open = false;
open = true;
nvidiaSettings = true;
};
};

View File

@@ -0,0 +1,44 @@
{
pkgs,
config,
lib,
...
}: let
inherit (lib) mkIf mkEnableOption mkOption mkMerge;
cfg = config.modules.utils.chaotic;
in {
options = {
modules.utils.chaotic = {
enable = mkEnableOption "Enables Chaotic AUR packages";
amd.enable = mkOption {
type = lib.types.bool;
default = false;
description = "Whether to install AMD-specific settings.";
};
};
};
config = mkIf cfg.enable (mkMerge [
{
# Base configuration when Chaotic is enabled
chaotic.scx.enable = true;
}
(mkIf cfg.amd.enable {
# AMD-specific configuration
chaotic.mesa-git = {
enable = true;
extraPackages = with pkgs; [
mesa_git.opencl
intel-media-driver
intel-ocl
vaapiIntel
];
extraPackages32 = with pkgs; [
mesa32_git.opencl
intel-media-driver
vaapiIntel
];
};
})
]);
}

View File

@@ -14,7 +14,6 @@
environment = {
systemPackages = with pkgs; [
git
scx
stow
];
localBinInPath = true;