Add a machines directory to replace local.nix

+ detect if my device is a laptop
This commit is contained in:
Username404-59 2026-07-02 23:42:59 +02:00
parent eb797005f7
commit d832db0455
Signed by: Username404-59
GPG Key ID: F3A1878B14F5F0D7
8 changed files with 142 additions and 84 deletions

1
.gitignore vendored
View File

@ -1 +1,2 @@
/hardware-configuration.nix /hardware-configuration.nix
tamal/.silo

View File

@ -48,15 +48,21 @@ let
localPackagesOverlay localPackagesOverlay
]; ];
}; };
isLaptop =
let
powerSupplyDir = /sys/class/power_supply;
in
builtins.pathExists powerSupplyDir && lib.any (name: lib.hasPrefix "BAT" name) (builtins.attrNames (builtins.readDir powerSupplyDir));
in in
{ {
nixpkgs.pkgs = pkgs; # Uses the nixtamal nixpkgs nixpkgs.pkgs = pkgs; # Uses the nixtamal nixpkgs
_module.args.nixtamal = nixtamal; _module.args.nixtamal = nixtamal;
_module.args.isLaptop = isLaptop;
imports = imports =
[ [
./workarounds.nix ./workarounds.nix
./local.nix
./hardware-configuration.nix # Results of the hardware scan ("nixos-generate-config" command) ./hardware-configuration.nix # Results of the hardware scan ("nixos-generate-config" command)
./modules/filesystems.nix ./modules/filesystems.nix
"${nixtamal.home-manager}/nixos" "${nixtamal.home-manager}/nixos"
@ -75,6 +81,10 @@ in
./common/ollama-config.nix ./common/ollama-config.nix
./machines/${
if isLaptop then "laptop" else "desktop"
}/local.nix
# ISO installer building stuff: # ISO installer building stuff:
./ISO/iso.nix ./ISO/iso.nix
]; ];
@ -126,7 +136,7 @@ in
}; };
home-manager.extraSpecialArgs = { home-manager.extraSpecialArgs = {
inherit nixtamal localPackagesOverlay; inherit nixtamal localPackagesOverlay isLaptop;
}; };
home-manager.users.doggo = import ./home/doggo/doggo.nix; home-manager.users.doggo = import ./home/doggo/doggo.nix;

View File

@ -12,8 +12,43 @@ let
mocha = { mocha = {
peach = "rgb(fab387)"; peach = "rgb(fab387)";
}; };
find_monitor = id: "$(hyprctl monitors -j | jq -r '.[] | select(.id==${builtins.toString id}) | .name')";
backgrounds_commands = [
"swaybg -i '${./backgrounds/ubuntu_budgie_wallpaper1.jpg}' -o ${find_monitor 0}"
"murale '/disk2/MemoryRebootHatsune&Shrek.avi' -o ${find_monitor 1} --mpv-options '${mpv_options}'" # TODO: Make nixtamal download it with yt-dlp
];
# Start(/stop) my backgrounds on (un)plug
watch-ac-plug = pkgs.writeShellApplication {
name = "watch-ac-plug";
runtimeInputs = [ pkgs.dbus pkgs.gawk ];
text = ''
dbus-monitor --system "type='signal',interface='org.freedesktop.DBus.Properties',path='/org/freedesktop/UPower'" |
while read -r line; do
if echo "$line" | grep -q "OnBattery"; then
read -r _ state
if echo "$state" | grep -q "true"; then
${builtins.concatStringsSep " && " (builtins.map (cmd: "pkill -f '.*${cmd}'") backgrounds_commands)}
else
${builtins.concatStringsSep " && " (builtins.map (cmd: "${uwsm} ${cmd}") backgrounds_commands)}
fi
fi
done
'';
};
in in
{ {
systemd.user.services.watch-ac-plug = lib.mkIf isLaptop {
Unit.Description = "Start/stop my backgrounds on AC plug/unplug";
Install.WantedBy = [ "graphical-session.target" ];
Service = {
ExecStart = "${watch-ac-plug}/bin/watch-ac-plug";
Restart = "always";
};
};
wayland.windowManager.hyprland = { wayland.windowManager.hyprland = {
enable = true; enable = true;
systemd = { systemd = {
@ -24,18 +59,23 @@ in
]; ];
settings = { settings = {
monitor = if !isLaptop then [ monitor = [
{ output = "DP-3"; mode = "2560x1440@144"; position = "0x0"; scale = 1; vrr = 2; } ({
{ output = "HDMI-A-4"; mode = "1920x1080@77"; position = "-1920x128"; scale = 1; } # Desktop settings
] else [ output = "DP-3";
{ mode = "highres@highrr";
output = "eDP-1"; mode = "2880x1800@120"; position = "0x0"; scale = 1.5; position = "0x0"; scale = 1; vrr = 2;
} // lib.optionalAttrs isLaptop {
# Laptop settings
output = "eDP-1";
scale = 1.5;
cm = "hdredid"; bitdepth = 10; cm = "hdredid"; bitdepth = 10;
min_luminance = 0.0; max_luminance = 2000; min_luminance = 0.0; max_luminance = 2000;
sdr_min_luminance = 0.005; sdr_max_luminance = 350; # 106? sdr_min_luminance = 0.005; sdr_max_luminance = 350; # 106?
sdrsaturation = 1.0; # 1.175? 0.975? sdrsaturation = 1.0; # 1.175? 0.975?
#sdrbrightness = 1.1; # 1.2625? 0.975? #sdrbrightness = 1.1; # 1.2625? 0.975?
} })
{ output = ""; mode = "highres@highrr"; position = if isLaptop then "auto-right" else "auto-left"; scale = 1; }
]; ];
# AUTOSTART # # AUTOSTART #
@ -44,10 +84,11 @@ in
"hyprland.start" "hyprland.start"
(lib.generators.mkLuaInline '' (lib.generators.mkLuaInline ''
function() function()
${if isLaptop then "-- " else ""}hl.exec_cmd("${uwsm} murale '/disk2/MemoryRebootHatsune&Shrek.avi' -o HDMI-A-4 --mpv-options '${mpv_options}'") hl.exec_cmd("${uwsm} swaybg -c 000000 -o '*'")
hl.exec_cmd("${uwsm} swaybg ${ ${builtins.concatStringsSep "\n " (builtins.map (cmd:
if isLaptop then "-c 000000 -o '*'" else "-i '${./backgrounds/ubuntu_budgie_wallpaper1.jpg}' -o DP-3" "hl.exec_cmd(\"${if isLaptop then "[ \"$(busctl get-property org.freedesktop.UPower /org/freedesktop/UPower org.freedesktop.UPower OnBattery | awk '{print $2}')\" = \"true\" ] && " else ""}"
}") + "${uwsm} ${cmd}\")") backgrounds_commands)
}
hl.exec_cmd("${uwsm} ironbar") hl.exec_cmd("${uwsm} ironbar")
hl.exec_cmd("${uwsm} wl-paste --type text --watch cliphist store") hl.exec_cmd("${uwsm} wl-paste --type text --watch cliphist store")
hl.exec_cmd("${uwsm} wl-paste --type image --watch cliphist store") hl.exec_cmd("${uwsm} wl-paste --type image --watch cliphist store")

View File

@ -1,67 +0,0 @@
{ config, lib, pkgs, functions, ...}:
let
isLaptop = false;
in
{
_module.args.isLaptop = isLaptop;
home-manager.extraSpecialArgs = { inherit isLaptop; };
boot.extraModulePackages = with config.boot.kernelPackages; [
# Common modules
] ++ (if !isLaptop then [
# Desktop modules
(functions.mkPatchedAuto nct6687d)
r8125
] else [
# Laptop modules
]);
boot.kernelModules = [
# Common modules
] ++ (if !isLaptop then [
# Desktop modules
"nct6687" # d disappears in actual module name
"r8125" # replaces r8169
] else [
# Laptop modules
]);
boot.blacklistedKernelModules = [] ++ (if !isLaptop then [
"r8169"
] else []);
# CRU screen overclocking
hardware.firmware = lib.mkIf (!isLaptop) [
(pkgs.runCommandLocal "PHL-edid-77hz" {} ''
mkdir -p $out/lib/firmware/edid
cp ${/disk2/Bunker/CRU/PHL_243V5_OC_77MHZ.bin} $out/lib/firmware/edid/PHL_243V5_OC_77MHZ.bin
'')
];
boot.kernelParams = lib.mkIf (!isLaptop) [
"drm.edid_firmware=HDMI-A-4:edid/PHL_243V5_OC_77MHZ.bin"
];
programs.coolercontrol.enable = !isLaptop;
boot.loader.limine.extraEntries = lib.mkIf (!isLaptop) ''
/Windows
protocol: efi
path: label(windows_efi):/EFI/Microsoft/Boot/bootmgfw.efi
'';
powerManagement.cpuFreqGovernor = if !isLaptop then "performance" else "schedutil";
services.auto-cpufreq = {
enable = isLaptop;
settings = {
charger.turbo = "auto";
battery.turbo = "never";
};
};
fileSystems."/".options = [ "noatime" ];
networking.hostName = if !isLaptop then "lizard" else "lizard-portable";
}

View File

@ -0,0 +1,42 @@
{ config, lib, pkgs, functions, ...}:
{
boot.extraModulePackages = with config.boot.kernelPackages; [
(functions.mkPatchedAuto nct6687d)
r8125
];
boot.kernelModules = [
"nct6687" # d disappears in actual module name
"r8125" # replaces r8169
];
boot.blacklistedKernelModules = [
"r8169"
];
# CRU screen overclocking
hardware.firmware = [
(pkgs.runCommandLocal "PHL-edid-77hz" {} ''
mkdir -p $out/lib/firmware/edid
cp ${/disk2/Bunker/CRU/PHL_243V5_OC_77MHZ.bin} $out/lib/firmware/edid/PHL_243V5_OC_77MHZ.bin
'')
];
boot.kernelParams = [
"drm.edid_firmware=HDMI-A-4:edid/PHL_243V5_OC_77MHZ.bin"
];
programs.coolercontrol.enable = true;
boot.loader.limine.extraEntries = ''
/Windows
protocol: efi
path: label(windows_efi):/EFI/Microsoft/Boot/bootmgfw.efi
'';
powerManagement.cpuFreqGovernor = "performance";
networking.hostName = "lizard";
}

23
machines/laptop/local.nix Normal file
View File

@ -0,0 +1,23 @@
{ config, ...}:
{
boot.extraModulePackages = with config.boot.kernelPackages; [];
boot.kernelModules = [];
boot.blacklistedKernelModules = [];
powerManagement.cpuFreqGovernor = "schedutil";
services.auto-cpufreq = {
enable = true;
settings = {
charger.turbo = "auto";
battery.turbo = "never";
};
};
services.upower.enable = true;
networking.hostName = "lizard-portable";
}

View File

@ -2,8 +2,9 @@
{ {
# Note: for f2fs, create it with "sudo mkfs.f2fs -l root -i -O extra_attr,flexible_inline_xattr,inode_checksum,sb_checksum,compression,lost_found /dev/sdxY" # Note: for f2fs, create it with "sudo mkfs.f2fs -l root -i -O extra_attr,flexible_inline_xattr,inode_checksum,sb_checksum,compression,lost_found /dev/sdxY"
fileSystems."/".options = lib.mkIf (config.fileSystems."/".fsType == "f2fs") fileSystems."/".options = lib.mkMerge [
(lib.mkAfter [ [ "noatime" ]
(lib.mkIf (config.fileSystems."/".fsType == "f2fs") (lib.mkAfter [
"discard" # Better (on f2fs) than fstrim "discard" # Better (on f2fs) than fstrim
"X-fstrim.notrim" # To avoid fstrim "X-fstrim.notrim" # To avoid fstrim
"compress_algorithm=lzo-rle" "compress_algorithm=lzo-rle"
@ -16,7 +17,8 @@
"checkpoint_merge" "checkpoint_merge"
"fsync_mode=posix" "fsync_mode=posix"
"nat_bits" "nat_bits"
]); ]))
];
services.fstrim.enable = true; services.fstrim.enable = true;

View File

@ -51,6 +51,12 @@
boot.kernelPatches = [ ]; boot.kernelPatches = [ ];
boot.extraModulePackages = [];
boot.kernelModules = [];
boot.blacklistedKernelModules = [];
services.scx = { # https://wiki.cachyos.org/configuration/sched-ext/#general-recommendations services.scx = { # https://wiki.cachyos.org/configuration/sched-ext/#general-recommendations
enable = true; enable = true;
scheduler = "scx_lavd"; scheduler = "scx_lavd";