modularizing kernel and loader settings
This commit is contained in:
@@ -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
28
flake.lock
generated
@@ -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": {
|
||||
|
||||
@@ -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 = {
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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 = {
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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,"
|
||||
|
||||
@@ -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)"
|
||||
|
||||
@@ -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;
|
||||
|
||||
|
||||
@@ -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;
|
||||
};
|
||||
|
||||
@@ -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";
|
||||
|
||||
@@ -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;
|
||||
};
|
||||
|
||||
@@ -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"
|
||||
{
|
||||
|
||||
@@ -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";
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
};
|
||||
|
||||
72
system/modules/boot/kernel/default.nix
Normal file
72
system/modules/boot/kernel/default.nix
Normal 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;
|
||||
};
|
||||
};
|
||||
}
|
||||
60
system/modules/boot/loader/default.nix
Normal file
60
system/modules/boot/loader/default.nix
Normal 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];
|
||||
})
|
||||
];
|
||||
}
|
||||
@@ -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"
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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;
|
||||
};
|
||||
};
|
||||
|
||||
44
system/modules/utils/chaotic/default.nix
Normal file
44
system/modules/utils/chaotic/default.nix
Normal 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
|
||||
];
|
||||
};
|
||||
})
|
||||
]);
|
||||
}
|
||||
@@ -14,7 +14,6 @@
|
||||
environment = {
|
||||
systemPackages = with pkgs; [
|
||||
git
|
||||
scx
|
||||
stow
|
||||
];
|
||||
localBinInPath = true;
|
||||
|
||||
Reference in New Issue
Block a user